Tip:
Highlight text to annotate it
X
>> SPEAKER 1:すべての権利。
お帰りなさい。
これはCS50の週二であり、我々は持っている これまでの機能を使っていますが、
当然の大部分は、それらを撮影。
我々は持っているprintfの使用してきました 印刷の副作用
画面上のもの。
我々は、Get-int型、float型を取得使用しました。
>> しかし、あなたが実際に作成したい場合 の一部として独自の関数、
すでに始めているかもしれません けれども、問題のセットOneのために行う
必須ではありませんか?
まあ、それの先に行くと再訪せ だけをユーザーに尋ねるの問題
上に自分の名前と印刷は何か 画面が、いくつかを考慮しよう
私たちがしたことを共通の これまで我々のコードで見られる。
だからそのことで、私は次のことを意味します。
>> 私が先に行くと、作成するつもりです 新しいプログラムでは、単に呼び出す
それは、いつものようにhello.cを。
私が先に行くと、自分自身を与えるつもりだ 上部に標準io.hのが含まれています。
私はまた、自分自身を与えるつもりだ 先制CS50ライブラリよう
私は、コンパイラによって怒鳴られません。
そして今、私は先に行くつもりです とint、メイン、無効を宣言します。
>> 私がしたい場所と、ここでは、これは に機能を委託する開始する
私自身は思っているいくつかの他の機能 書こうが、それはしません
現在存在している。
例えば、私がしたいと仮定し 私がすることができます関数を書く
こんにちは、カンマをプリントアウトし、 その後いくつかのユーザーの名前。
printfの行う継続するのではなく こんにちは、%sは、それがあればいいことではないでしょう
呼び出された関数は、ただそこにあった printf関数が、印刷名ではありません?
>> だから、他の言葉で、私ができるようにしたい 少しを行うプログラムを書く
このような何か。
まず、私はあなたのprintfの言うつもり 名前は、それによって、ユーザを促す
私はその後、私に彼または彼女の名前を与え、 に馴染みの文字列sを使用するつもり
文字列を宣言します。
私の文字列型の変数を与え、 それの呼び出し、その中に格納する
文字列を取得する呼び出しの結果。
しかし、今、過去数週間で、私が持っているでしょう ややうんざりするほど行わこんにちは、%S / N。
>> そして換言すれば、我々はこれを見てきた 例倍の束、そしてそれは
ただ1があるので、例えば些細 コードの行それは本当にありませんので、
再度入力して保つために大したこと。
しかし、仮定そのコード行 実際に負担になっていた、と
それは1行のコードではありませんが、それは10だ コードの行今から数週間、
とするだけで疲れて取得している コピーと貼り付けまたは
その同じコードを再入力。
それは素晴らしいことではなく、やっていないでしょう printfのこんにちは、%sのなど、
ちょうどそこにあった場合、それは素晴らしいことではないでしょう プリント名その呼び出される関数
引数を取る -
換言すれば、入力を受け取り -
その後セミコロン。
だから、その関数は、それではないでしょう それが存在していればいいだろ?
それから私は心配する必要はないであろう printf関数とは何か、何の%sとのすべて
これらの複雑さ すべてが面白くない。
彼らは便利です。
>> だからプリント名は、残念ながら、ありませんでした いくつかの40年以上前に発明した。
誰もそれを書くために考えていません。
しかし、それは持っていることの美しさだ だけのようなプログラミング言語、
スクラッチあなたはそう、カスタムブロックを定義することができます Cとほとんどの任意の言語では、次のことができます
することができ、独自の機能を定義する あなた独自の関数を定義します。
我々は主によって得るだからにもかかわらず 自動的に自由のために、我々は宣言することができます
当社独自の機能。
>> だから私はここにいくつかの部屋を作るつもりです トップまで、私は私のを宣言するつもりだ
見に行くの独自機能 少し最初は奇妙なしかし我々は来る
バックこの前長いへ。
私はそれによって、無効と言うつもりです この機能を示すことはありません
何かが、副作用を有するが、それ で私に何かを返しません
int型を取得したり、同じように 自体がない文字列を取得します。
そして私は、この関数を与えるつもりだ プリント名の名前、私はするつもりです
この男がかかるとしていることを指定 文字列、そして私はそれを呼び出すつもりだ
文字列名。
私はそれを私が欲しいものを呼び出しますが、私でした 私のコードは自己文書になりたい。
言い換えれば、あなたの場合は、1にあった このファイルを開いて、それを読んで、あなたは可能性
その名前から推測の一種 それは演奏することになってどのような役割を入力。
>> そして今、その下に、私が開くつもりです 中括弧と閉じ中括弧、
ので、私は同じに従っているに気づく 線として4〜7上のパターン
私は良い週プラスについては、次のしてきた 今ライン9と、言う間に
メイン作曲14。
換言すれば、表示名 別の関数である。
さて、コンパイラは知っているつもりはない 自動的にこの事をコールする
私は文字通りそれを発明したので、 それはまだメイン呼び出すために知っているだろう
自動的に、その後のコースの 13行目、私は自分自身の関数を呼び出しています。
そして、私は、その関数を宣言してきたので、 、メインの前に4つのライン上にアップする
これは、コンパイラを教えるために起こっている 何の引用、引用終わり、 "印刷名"
を意味し、それは何をすべきか。
だから私はそれを新しいカスタムを与える一種のだ スクラッチ、言う、のコンテキストでブロックします。
>> だからここでは、私は非常に一般的に置くことができ 私はキープコードの繰り返しパターンや
クラスで書き込み、printfの %sはこんにちは、%S / N "、 -
私はここに入れて何をしたいですか?
S?
だから私はこの文脈で名前を載せていきたいと思います。
だからここに二分法のビットに気づく。
私は自分自身の関数を宣言していますので、 と私は、やや恣意的と呼ばれています
それは、名前を印刷し、私がきたので、 括弧内に指定され、この
関数は、1つの引数の型を取る これは文字列です - ので、それは言葉だ
またはフレーズか何かのような - と 私はそれを、その引数名を呼んでいる
で唯一の変数を意味します スコープは、いわば、名前です。
>> Sは何2の間に存在する 中括弧は、もちろん?
本当にまあ、ただライン〜10のような 月曜日にこれだけのような14は、使用できません
Sですが、何を私が行うことができますが合格されて プリント名にS。
印刷名はちょうどので、それを与えるために起こる 別名、同義語、ニックネーム、
今名前を呼び出し、 このラインで使用する。
だから今はズームアウト、私はこれを保存することができます。
>> 私が先に行くと挨拶してみましょう。
よさそうだ。
すべてのエラーを吐き出すしませんでした。 。/こんにちは入力してください。
私の名前は何ですか?
デビッド。
とデビッドこんにちは。
だから、すべてがエキサイティングではない、 しかし、ちょうど今だと思います。
あなたは今、同じ成分を持っている 我々はにスクラッチで行ったように
私たち自身の関数を作る。
>> しかし、落とし穴のビットがあります。
私は本当に考えていなかったと仮定する これを通じて、私実際になし
本当にそれについて考えて書いている そのここでダウン機能。
完全に合理的に感じている。
スクラッチではないという概念はありません スクリプト内の場所の。
は、1つは、ここで、ここで1つを出すことができ ここで1点、それが起動するかもしれません
そうでない場合は少し厄介に見えるように それをきれいにレイアウトし、それはしません
どこに物理的にスクリプトは関係 画面上にあった。
残念ながらCで - これはとは違っている JavaやPythonのような言語
あなたが精通しているかもしれないことを他人 残念ながらC言語では、順序がありません - と
時計は何だから問題で 今起きよう。
>> 起こっているデフォルトの関数 実行するためには、もちろん、主である。
メインは上の印刷の名前を呼ぶために起こっている ライン8、残念ながら、
コンパイラも、プリント名を知ることができません それは11行目に到達するまで、存在
これは残念なことにある 手遅れになるだろう。
だからこんにちは作って頂きます。
そして今いまいましい、2つのエラーが生成された。
だから今私は非常にまでスクロールさせて 最初に、我々は常に行うべきであるように、と
それは私に叫んでいることがわかり、 関数の "暗黙の宣言
名前を印刷します。 "
>> だから我々は、このメッセージの前に見てきた、 関数の暗黙の宣言。
ときに我々は、エラーのようなものを見たことがありますか?
私はライブラリが含まれていなかったとき。
私はcs50.h忘れて、私はなるだろう場合 文字列を取得したり、intの取得のために怒鳴ら。
しかし、この場合には、この関数の印刷物 名前は右、ライブラリにありませんか?
それはとても、このファイルに文字通りだ 実際には問題は何ですか?
>> まあ残念ながらC言語では、それはあなたを取る 信じられないほど、文字通りその場合
プリント名に呼び出される関数にしたい 存在し、次のいずれかを実装する必要が
あなたの最上部にその関数 コードは、それが減少したことからアクセスだそう
機能しますが、率直に言って、となります 非常に迅速にずさん。
個人的に、私は最初にメイン置くようなもの なぜなら、それは非常に明確な何これ
プログラムは、一見します。
とプラス、あなたは奇妙なコーナーに入ることができる xが呼び出すしたい場合のケース
Yが、yがただX、あなたを呼ぶかもしれない 物理的に、実際にものを置くことができない
その他上記の。
>> しかし、それは我々は、C言語ですることができます判明 非常に簡単にこの問題を解決。
私は、スペースを少し置くつもりです ここまで、と私はちょうどに行くよ
先制、多少とはいえ 重複し、教えるつもり
関数が存在することをコンパイラ プリント名を呼ばれ、それは、文字列を取り
と私は呼ぶつもりです それは、セミコロンを付けます。
>> これはだから今ライン4で、その我々 前に見たことがない、宣言である
ファンクションプリント名が、それだけだ この機能はことをお約束
最終的には最終的に、定義される 実装される。
これは、今私は一人で残すことができますので、 さて、これは、定義である
ラストマイルの実装、ソート 本実施の
特定の関数。
だから率直に、それは愚かだ、それは迷惑なんだ これはCである方法であり、それはだ
それは非常に文字通りあなたがかかるので そして、コンピュータは率直に必要として、
唯一のあなたはそれをするために教えてくれないかを正確に 行う、などの順序が重要であること。
>> だから、心にして、もう一度、に開始することを保つ パターンの再発に気づく。
あなたが持っていなければオッズは、あなたが意志である 既に、メッセージに遭遇し始める
このように一見思えること 完全に謎めいていますが、起動した場合
のように、これらのキーワードを探すために の "暗黙の宣言"に言及
この場合の機能 - と率直に言って、あなた 時には小さな緑を得る
あなたに伝えニンジンシンボル 問題は、おそらくです -
あなたはを通してあなたの方法を作業を開始することができます まだ目に見えないエラーメッセージ。
書面上の任意のNHR このように独自の関数?
>> の何かをしてみましょう もう少し説得力のある。
持って何かをするだけではなく、 印刷の副作用、私は手放す
先に、新しいファイルを保存し、我々はよ それはあっても、このpositive.cを呼び出す
少し異なることになるだろう 前回対。
そしてこの時間は、私が再実装したい 前回のpositive.C例えば、どの
ユーザが提供することを強制される 私に正の整数。
しかし、私はint型の最後の時間を取得し使用する必要がありました。
があった場合、それはいいされなかったであろう この関数は、正の整数を得ると呼ばれる
私はちょうどこれを外部委託すること への機能の一部?
だからここでの違いは、我々はよです 正の整数を取得する実装が、違って
副作用を持っていた名前を印刷すること - それを のように私に何かを返していませんでした
数値または文字列 -
正の整数は、もちろん、としている取得 、うまくいけば、正の整数を返します。
>> だから、これを行うてみましょう。
cs50.hを含め、標準io.h.を含め
メイン、voidをintです。
そして今ここで、私が先に行くつもりです とのがintとしましょう、それはnを、等しく呼び出し
正の整数を取得します。
そして、ちょうどのようなint型がすでに存在している取得 スタッフがそれを書いたので、私は行くよ
得る瞬間を想定する 正のint型が存在し、今では私が行くよ
先に行くと、printfを言うためには、 %I / N "、nのおかげ。
>> だから今、私はこのプログラムをコンパイルする場合、どのような 私の端末で起こるために起こっている
画面下部のウィンドウ?
私はおそらくそれを取得するつもりだ 前と同じエラーが発生しました。
それでは、これを試してみましょう。
肯定的なことを確認します。
そして再び、暗黙の宣言 機能の、正のint型を取得します。
だから私たちは、これを解決することができます いくつかの方法。
私はそれが簡単で維持するつもりだ ここに私の宣言を入れてもらう
正の整数。
私は、いわゆる署名を必要とする。
署名だけで指し の美学へ
プログラムの最初の行。
だから何が正を取得する必要があります リターンint型?
>> だからint型。
私は理想的に意味、それが戻ってくる 正のint型ですが、そのような何か
存在しません。
私たちは、データ間のことを見ていませんでした タイプので、我々は対処しなければならない
我々は非常にいくつか持っているという事実 データ型は、で動作するように。
しかし、我々は単にint型とを返すことができます それが肯定されることを信頼しています。
それは呼ばれるようになるだろう 正の整数を取得します。
>> そして今、どのように、その引数はどうでしょうか?
それは、任意の入力がかかりますか?
それは、任意の入力を必要としていますか?
だから、知っている必要はありません 事前に何でもした。
文字列は、int型はしない取得していません入手してください。
printfを行う - それはいくつかを持っている必要が 入力は、それに渡された - と印刷名
いくつかの入力を必要としますが、取得 正のint型にはありません。
だから私は、明示的に行くよ コンパイラはvoidを教えてください。
ボイドが何かの欠如である。
だからボイド意味は何も内部で起こっていません これらの括弧、セミコロン。
>> そして今、私のファイルの下部にある - と 再び、私は肛門のちょうどというようなものだ
ここで上部のメインを入れて、どの お勧めは、この方法であるためです。
あなたや他の誰かでも あなたのファイルを開き、
機能はすぐそこです。
あなたは、振り出しからに潜ることができる。
だから今、私は、これを複製するつもりです 正のint型はvoidを得るが、私はないんだけど
今セミコロンを打つつもり。
私は、中括弧を開くつもりです そして今私は借りる必要
月曜日からいくつかのアイデア。
>> ご存知のように、我々は何かをした 次のことをしながら行うように
何かが本当だった。
そして、私は何をしましたか?
私が与えるようなものをやった 私を正の整数、
プロンプトを少し。
私が好きな言葉を使用することができます。
そして私は何を使用?
int型のnは、int型の取得に等しい それへの引数はない。
>> と違いに気付く。
あなたが使用するときには、関数を呼び出すときに この関数は、あなたが空間に入れていません。
宣言するときは、そのを行う 機能、コンパイラを教えて何
それは期待するべきである。
だから、配置する必要はありません そこに自分自身を失う。
>> そして今、私の条件何でしたか?
さて、nは、正と等しくない それはただの擬似コードだ。
だから私は、もっときれいに、これをどのように表現するのですか?
そうゼロ以下。
だから、もう一度、あなたが行うことができます気付く より小さいか等しい。
それは独立した2のにもかかわらず シンボルは、あなたはそれを行うことができます
など、あなたのキーボード。
>> しかし、そのバグはまだあり 私も最後の時間を台無しに。
私は宣言する必要があります -
まさに。
私は外で宣言する必要がn個 ループの。
だから私はここにnを配置する必要がありますし、私はしないでください ここでそれを再宣言したい
私は、新しい変数を取得しないように。
私はちょうどここに値を割り当てる。
>> そして今、私はかなりここで行っていないよ。
私は先に自分の取得してみましょう と私は終わりだふり。
肯定的なことを確認し、今 新しいエラーがあります。
コントロールは、端部に達する void以外の機能。
新しいエラーメッセージだから、しかし、もしあなたの種類 言葉のそれぞれを離れていじめる、それの
おそらく間違っているかでヒント。
>> コントロール。
制御はちょうど順序に意味 プログラムでの操作の。
コンピュータのコントロールでと 何かが間違っていた。
だからの最後に達する void以外の機能。
それは明らかに何関数です を参照する?
void以外何関数です?
だから正int型を取得し、少し そのウェル内に混乱、
それは空間のようなものだ。
それは、そのための空間の仕様を持っている 引数が、その出力がために起こっている
タイプnのこと。
だから左の言葉です いわゆる戻り値の型。
ここで内部の言葉です ゼロ個以上の引数
という関数がかかります。
>> だから私は何をすべきかが必要なのでしょうか?
私のコードでは、この点を、21行目で 今、私はある点滅プロンプト
正のint型の内側を持っている Nと呼ばれる変数の。
どのように私はメインに戻ってそれを与えるか?
文字通り。
n個のセミコロンを返します。
>> だから同じようにコルトンの一部を返す ドロップして、私に答えた紙
小さな黒いでその紙切れ でそれを行うためのテーブルの上の箱、
コードには、文字通り戻り、書き込み nと、しかしコルトンあったように、それはだ
私に何か物理的なバックを渡す。
このケースでは、何が起こって取得することです 正の整数は、手の甲に起こっている
おそらく正何 誰に整数?
その値はどこに終わるのでしょうか?
つまり、この変数にn個を終了し、 次に我々はライン9に進みます。
>> だから、他の言葉で、の順に 操作は、このプログラムが開始
、実行、コンパイラが実現 ああ、あなたはライブラリをしたいですか?
私はその内部のどんなグラブを手放す。
ああ、あなたは標準IOライブラリをしたいですか?
私はその内部のどんなグラブを手放す。
コンパイラは、自分自身に何を言うん それはライン4に当たったとき?
ああ、あなたは実装することを約束 この関数は、正の取得と呼ばれますが、
我々は、後でそれに戻りましょう これらの線に沿って何か。
>> int型メインボイドがちょうどここにあることを意味 私のプログラムの根性。
ライン7は単なる中カッコです。
ライン8は与える、左側に言っている 整数のための私の32ビットは、それはnを呼び出す。
右側には、周辺 正の整数を得ると言う。
今ので今休止その話てみましょう 私はカーソルを下に移動し保管しない。
私のカーソルが今ここにダウンした理由 今正int型が実行得る。
int型のnが宣言されています。
次の手順を実行します。
printfの私に正の整数を与えます。
>> はnに格納し、ユーザからの整数を取得 と、おそらく何度も何度もこれを行う。
このループは、このコードは可能性があることを意味 再びこのようなセットアップ実行し、ダウン
そして再び、しかし時ようやくユーザー 協力して、私達に正を与える
int型、私はその時点で、21行目にヒット 番号は返還し、どちらさ
私は今、強調する必要がありますか?
ナイン。
制御、いわば、返品 行9へ。
担当して今のラインがそれだ。
>> だからすべてが起こってきているものだ ボンネットの下に、この時間が、
私たちは、printfのような関数を使用してきましたとき あるいは他の誰か、その文字列を取得する
制御が渡されていた、あなたのために書いた オフに他人のコード行
行ずつで。
それはちょうど我々はそれと我々を見ることができなかっただ 本当にこれでそれを描くことができなかった
プログラムには、いくつかの他のだから ハードドライブ上のファイル
私たちに知られていない。
だから、実際にコンパイルしてみましょう そして今、これを実行してください。
>> 肯定的なことを確認します。
コンパイル、進歩だ。
。/ポジティブ。
私に正の整数を与える。
難しいかもましょう。
1負。
ゼロ。
それに50を与えてみましょう。
50のおかげで、とに制御 今戻ってきた。
どの質問でも、その後、その上に?
うん?
>> [聞こえない]。
>> もう一度言う。
ああ、良い質問。
だから、ここで並列に気づくかもしれない 私は上の角を切断するようなものだ。
12行目では、私が言っている、肯定的なint型を得る しかし、その同じことで、intを返します
ロジックは、今という点で理にかなっている ライン6は、私が言っていることを主な戻り
int型ですが、私たちは決して持っている 我々のプログラムのいずれかで持っていた?
我々の言及があったことがない このキーワードリターン。
>> だから、少なくとも、C言語でそれが判明 私たちが使用しているそれのバージョン
、技術的には、1999年にこれがされて作られた 自動的に起こって。
いつでもあなたは、プログラムを実装して、 、主と呼ばれる機能を実装
その関数は、でゼロを返します あなたがそうでなければ言うことはありません場合は、デフォルト、
そしてゼロはただの慣習です。
世界はそれによって、ゼロを返します。 すべてが順調であることを示す、
効果的に私たちを残して40億 行くことが可能なもの
間違ったように、我々は1を返す場合、その このことを意味するコードを意味するかもしれない
事は間違っていた。
私たちはつまり、2を返すことができます この他の事は間違っていた。
我々は、40億を返す可能性がある この他の事が間違っていたことを意味します。
>> そして、あなたは今あなた自身の考えてみれば PCやMac、あなたは思い出すかもしれない
ときには不可解なエラーメッセージを取得 あなたがしていることをソフトウェアからの
使用していて、時にはそれが人間を持っている わかりやすい説明が、そこだ
しばしばコードまたは番号 画面上に?
これは心に来ていない場合は、 ちょうどそれのために目を光らせる。
それは一般的に何これら コードを参照している。
彼らは、Microsoft Wordに含まれていると 他のプログラムその場合は、ファイルという
会社とのバグレポートには、次のことができます それらを教えて、ああ、私はエラー番号45を得た。
会社に戻ってそして、いくつかのプログラマ 彼または彼女のことを調べることができます
コードとああ、言う、私が作ったからだ このバグとだからこそユーザー
このメッセージが表示されました。
>> しかし、率直に言って、それはほんの少しだ 邪魔とは少し退屈
少なくとも我々には、そのを締結 最初のいくつかのプログラムは、我々はしましたので、
それを省いてき。
しかし、このすべての時間あなたの一人一人 主が密かにこれを持っていた機能
ラインは自動的にあなたのために追加された 単に慣例によりコンパイラに
あなたにいくつかの時間を節約できます。
>> [聞こえない]。
>> あなたがメインでそれを含める必要はありません。
それは大丈夫です。
あなたがいた場合、それを含める必要がない このような機能を実現する。
フラットさもなければ機能 うまくいかないであろう。
しかし、主に、それは必要ありません。
週または2つでは、取得を開始します その癖にかつて我々は開始したい
エラーを意味する。
質問本当に良い。
>> のことを言及するので、迅速口頭ブレーク 今週の金曜日、私たちは昼食を持ってされることはありません
と自体が、私たちは夕食を食べていることでしょう 学生やスタッフの一部。
あなたは私たちに参加したい場合は、感じる cs50.net/rsvpに行く場合、無料です。
今週の金曜日午後6時。
スペースは、いつものように、限られているが、我々はよ 近くでこれらをやっていき
スペースあれば毎週 今週なくなる。
>> だから我々はオフに左という接戦 月曜日は、文字列が実際にすることができました
ただあなたを意味する、にインデックスを作成する 、最初の文字を取得することができます
二文字、三文字 など、あなたは可能性があるため
効果のように、文字列を考える この場合は5にあるように、ハロー
箱の内側に文字。
そして、あなたはそれらのそれぞれで取得することができます 我々が何をしたかの構文を使用してボックス
月曜日に紹介?
それらの角括弧 キーボードの。
それはちょうど場所ゼロに行く意味。
>> 我々はゼロからカウントを開始しますので、ブラケット ゼロ時間、ブラケットいずれかを意味する
など、電子を意味します。
我々がしてきたので、すべての時間 "こんにちは"の文字列を使用して入力する
と "世界"と他のものに 画面は、それが記憶されている
このような箱である。
と推測を取る。
各ボックスには、物理的に何を表している お使いのコンピュータの内側?
>> [聞こえない]。
>> 申し訳ありませんが?
>> 文字。
>> 確かにケース内の文字は、そう 文字列の、文字だけである
8ビットまたは1バイト。
だから、あなたはおそらく、少なくとも漠然とです あなたのその事実を熟知
コンピュータメモリを有する。
それは2種類のメモリ少なくともを持っています。
一つは、あなたが保存ハードディスクです 恒久的に詰め込むと、そのう
あなたは映画を持つことができるので、一般的に大きな や音楽など。
>> 次に、メモリの別のタイプを持ってい ランダムアクセス、R-A-M、RAMと呼ばれる
メモリと、このメモリの一種である お使いのコンピュータがある場合に使用されている
実行しますが、力を失うか、あなたの場合 バッテリーダイス、保存されている何
電源を失った場合、RAMに消える そうではありませんので、完全に
しつこい。
通常は、これらの日、持っている それのギグ、多分それ以上の2ギグ、。
RAMの利点は、それがはるかにあるということです ハードディスクよりもはるかに、はるかに高速
あるいは固体状態は、これらの日のドライブ しかし、それは一般的に高価ですので、
あなたはそれの少ないを持っている。
>> だから、今日の会話は本当に指し RAM、メモリの種類と
パワーがある間だけ存在します お使いのコンピュータに供給される。
だから、H-E-L-L-Oを入力すると、上でEnter キーボード、Hは一つになるだろう
RAMのバイトは、Eがで起こっている であるように、RAMの別のバイト、
単語の残りの部分。
だから我々ができました何思い出す 最後の時間を行うことは、このでした。
私が先に行くと、ファイルを開くましょう 我々はstring.cと呼ばれ、思い出すこと
それが少し見えた このような何か。
私が実際にロールバックして変更しましょう それは、それはのように見えたかを正確に
Sの文字列の長さ。
>> だからここにプログラムを見てください。
我々はそうCS50ライブラリを含める 私たちは、文字列を取得使用することができます。
我々は標準io.hのを含める ので、printfを使用することができます。
なぜ我々はstring.hでインクルードしましたか?
これは月曜日に新しいものでした。
だから我々は、文字列の長さを求めていました。
strのレン。
人々は、数年前に決定した ただ簡潔になるみましょう。
その代わりに、 "文字列の長さ、"呼び出しの それは "STRレン"と呼ぶとさせてみましょう
世界フィギュア出ている、などの 我々はstring.hでとへのアクセスを得るもの。
>> これはよく知られている。
これはよく知られている。
これはよく知られている。
これは少し新しいです。
22行目で - 私たちは戻ってくる これまでが、今知っているために -
とだけ持っていることから、これを知っているだろう ドキュメントを読む場合や、
すでにCを知っていた -
文字列は時々台無しにすることができ得る。
ユーザーが本当に敵対である場合、または 非協力的な彼または彼女だけ
キーボードで何も入力しない場合、または キーボードでそんなに種類その
それは、コンピュータのメモリを圧倒 理論的には、文字列を返す可能性があり得る
以外のもの 文字列。
それはと呼ばれる特別な値を返すことができます すべて大文字、N-U-L-L、これはNULLである
ただ、いわゆるセンチネル値。
それは意味特殊な値です 何か悪いことは、このケースで起こった。
それは文字列がないことである。
>> だから、私は単純に、そのためにチェックしているヌル 長い話を短く、strのレンと
Cに付属の他の機能であれば 彼らは文字列を期待していますが、それらを渡す
渡す場合は、文字列が存在しない場合、 それらNULL、コンピュータまたはプログラム
ただあからさまなクラッシュしてしまいます。
これはハングします。
これは、いくつかのエラーメッセージをスローします。
悪いことが起こるでしょう。
だから、これはまだであっても よく定義されていません -
この一週間でより多くの意味をなさないでしょうか 二人は - 22行目では、これはただです
自己防御的なエラーチェックの例 念のため1時間のうち
百何かで、うまくいかない 少なくとも私のプログラムがクラッシュすることはありません。
>> sが何か悪いことに等しいしないのであれば、 私はループで、このを持っており、これがあった
我々は他のを持っていたところ 構文の新しい部分。
私はから反復ループのために持っている ゼロsの長さまでに。
そしてここで、私はSプリントアウトだった ブラケット私が、なぜ私はすべての%cを使用しました
代わりに%sの突然のさえ sが文字列ですが?
それは右、文字の?
Sは、文字列ですが、Sブラケット何か iがゼロであるのブラケットI
個々の1つまたは2つ 文字列内の文字などのために
printfのことを知らされる必要があること、 それは確かに期待する文字です。
>> そして、これをやった、思い出す プログラムは、実際に行う?
>> 列でそれをプリントアウト。
>> うん、まさに。
それはちょうど私が入力した単語を印刷 列、1行に1つの文字。
だから、もう一度これを見てみましょう。
だから文字列を作る。
[OK]をコンパイル。 。/文字列。
私はH-E-L-L-Oを入力しましょう、と入力し、 確かに私は、1行に1つずつそれを得る。
>> だから私はここに1の最適化を行うことができます。
あなたは、特に場合は、考えてみれば あなたが前にプログラムしましたが、そこ
24行目で間違いなく非効率。
換言すれば、必ずしもではない 最高のデザイン。
少なくともあなた一回、簡単な STRレンが何であるかを覚えて、それはだ
潜在的にダムに何かをやって。
それは何でしょうか?
>> [聞こえない]。
>> まさに。
これは、sの長さをチェックしている 一つ一つの時間にもかかわらず、
H-E-L-L-Oは常に起こっている 5文字であることが。
このループを通過するたびに、 5は変化していません。
私は、私をインクリメントするが、何かもしれません すべての上のsの長さである
このループの繰り返し?
それは5、それは、それは5だ、5だと まだ私はそれにもかかわらず、これをお願いしております
何度も何度も何度も質問。
今、率直に言って、コンピュータはそういまいましいです 速い、誰も気づかつもりないだ
この場合の差が、これらの種類 貧弱な設計上の決定ができます
コンパイラ自体があれば加算を開始 あなたのためにこれを修正しようとしない
それは典型的には、ないでしょう アプライアンスには少なくとも。
>> だから私はこれを行うつもりです。
私の後にコンマを追加するつもりだ 私の最初の変数は、私。
私は自分自身の別のものを与えるつもりだ だけで、それを呼び出して変数n、
番号の規則、そして私は私 文字列の値をnに割り当てるつもり
sの長さ。
そして私は変更するつもりです 私の条件はどのようなことですか?
私は自分の状態を変更するつもりです iがn未満であるときである。
>> だから今、私は何回午前 sの長さをチェック?
一度、それは私に対してチェックすることもOKです nは、何度も何度もそれらの今理由
値は、実際には変更しない。
さて、今のところ、ただ知っているあなたでも 関数を呼び出す、のビットがあり
オーバーヘッドではなく、あなたを落胆するのに十分 本当に今までの関数を使用してからではなく、
確かにコードの行があるとき そのような - とラインが得られます
長い前にもっと面白い - どこ 私はあれば考える機会が、あり
このコードを入力し、どのように多くの それは回を実行します?
あなたが時間をかけて見ることから始めましょう あなたのプログラムのパフォーマンスができます
確かに変更します。
>> 実際には、問題の一つは、我々が設定した 過去伴う年間に行わ
あなたから思い出す可能性があるので、実装 週ゼロ、スペルチェッカーが、
サポートするように設計されてチェッカーを綴る 150,000辞書プラス
我々は君たちを与えた言葉。
あなたはその負荷のコードを記述しなければならないでしょう RAMにそれらの単語なので、中に
我々のようなボックスが画面上に瞬間を見た あなたのように前にしてから、できるだけ速く
ことができ、あなたは答えることができるようにする必要があります フォームの問題は、この言葉です
スペルミス?
この言葉は間違っている?
この言葉は間違っている?
>> そして、我々はしたのかそのような何かで 過去数年間に行われ、それがになっている
オプトインオプションベースではあるが、 一種の競争、それによって
少ないRAMとあまり使う学生 時間、より少ないCPUサイクルは、結局
少しの頂上までバブリング リーダーボードや、我々は上に置くことをランキング
私たちがしたように当然のホームページ 過去数年間に行わ。
だから、再び、全く任意ですが、この 設計の機会に話す
一度先に我々はスタートであること これらのいくつかの上に建物
基本的なビルディング·ブロック。
>> だから私は、この図に戻ってみましょう ほんの一瞬、少しを明らか
もっと何か。
これは確かに文字列であり、我々は、撮影した いくつかのライブラリの利点、
持つ標準io.hの -
>> printfの。
>> printfは、他のものの間で。
int型を取得し、文字列を取得しているcs50.h、 など、string.hで、どの
strのレンを持っていた。
さらに別のそこうちしかし、それは変わります。
率直に言って、たくさんの、ヘッダがたくさんあり 関数を宣言するファイル
ライブラリで、これctype.hです 実際に幾分になるだろう
私は行くよので有利 先に行くと1を実装する
ここに他のプログラム。
>> 私が先に行くと何かを開いてみましょう 私はと呼ばれる、事前に書いた
capitalize.c、とのは、みましょう どのようにこの作品を見て。
私は、このバージョンでは、使用していることに注意してください それを、3おなじみのファイル。
18行目では、私がいることに注意してください テキストの行を取得する。
21行目に注意、私はそれを主張しています 次のコードは、に起こっている
ユーザが入力したものは何でも、Sを大文字 で、どのように私はそれをやっている?
まあ、私は取っている -
前回から学んだ教訓 -
私は私とnを宣言し、反復している 文字列内の文字の上に。
その後のこのブロックは何ですか 〜27行24のコード
普通の言葉で何を?
>> 背中の文字を小文字の。
>> まさに。
もしSブラケットI - もしそうであれば、i番目 固有であるSの文字、
文字列のchar、より大きい または同等の小文字とする -
その二重アンパサンドを思い出す 意味すると -
と同じ文字、Sブラケットiが、ある より小さいか等しいzは小文字に、
それはaまたはbまたはcまたはであることを意味している ドット、ドット、ドット、またはzの手段、
それは小文字です。
私は、そのような場合に何をすべきかをしたいですか?
まあ、私は若干これを行うことができます ひそかが、
別にこれをいじめるてみましょう。
>> 私はprintfを呼ぶつもりです、%cが出力されます 私はこれを転載したいので
画面上の文字。
私はその後のブラケット私、取るつもり i番目はSの文字、そして、なぜ
私はここでこの小さなトリックをやっている、 マイナス資本Aを小文字?
どんなことが与えるために起こっている 私は、一般的に言えば?
>> [聞こえない]。
>> まさに。
私は本当に覚えていない -
それが資本Aの65だった私は本当にしないでください 、何の小文字であることを覚えて
しかし、どんなに。
コンピュータが知っている。
だからと言って、マイナスを小文字 資本は、それがあることが奇妙なことだ
から別のcharを引いたが、 ボンネットの下に文字は何ですか?
彼らはただの数字だ。
それらの番号はどんなので、 コンピュータはそれを覚えてみましょう
むしろ私よりも人間。
>> そうですマイナス資本を小文字 私に違いを与えるつもり。
それは32であることを起こる、それはなり 小文字のbおよび資本Bの場合
などが挙げられる。
それはありがたいことに、一貫したままになります。
だから私は基本的に取ること、言っている 小文字、というオフ減算
標準差、およびその 効果的に変更のブラケットIから
、もちろん、に大文字小文字の 私は本当に考えることなく
約または覚えて、それらの何だった 8について私たちが話をした数字
ボランティアがステージに上がってきた?
さて一方、それ以外で、そうではありません場合、 決定として小文字
24行目で、それをプリントアウト。
私は触れたい あった文字
実はもともと小文字。
>> それでは、これを見てみましょう。
活用してください。
コンパイルされ、[OK]をクリックします。
。/生かす。
そして、私は、H-E-L-L-Oを入力してみましょう 小文字で入力します。
そしてそれが変換されていることに気付く 大文字に変換します。
私は、再びこれをやってみましょう 別の単語。
どのように最初のDとD-A-V-I-Dについて 一般的な名前として資産?
入力します。
それはまだ正しいの通知。
それはちょうど、最初のD変わらず出力 そのelse構文経由。
>> だから、その後、心に留めておく ここで物事のカップル。
あなたがこれまでに2をチェックしたい場合は、1つの、 一度の条件は、次のことができ、それら
一緒に私たちが予測さ。
あなたは、このように文字を比較することができます かつ効果的に文字として扱う
数字が、率直に言って、これはそういまいましいです 不可解な私が覚えているだろうことはありませんよ
スクラッチからこの思い付く方法 非常にためにそれを介して推論なし
少しの時間。
>> 誰かがあれば素敵な、それをされなかったであろう と呼ばれる機能をそこに書いて
それが本当か私に答えることができる下げる falseの場合、この文字は小文字です?
まあありがたいことに、誰でも書いた ctype.hは、まさにそれをやった。
私はここに行くとC CTYPEを追加してみましょう タイプ、そして今私がここでダウンして手放すと
この行は次のように書き換える。
>> だから、それを呼び出している場合、私は主張する、S低い ブラケット私は、その後、私は削除するつもりです
完全にこれらの二行。
だから今は他の誰かが、私は願って、書いた 呼び出される関数は低く、それ
彼らがしたし、彼らが宣言判明 それctype.hの内側。
そして今、私は27行を残すつもりだ 一人で、私は31行を残すつもりだ
一人で、私がしたいくら気付く 私のコードを締める。
それは今クリーナーです。
それは目を通すように小さいのは難しい 現在関数は、さらに、あるため
とても素晴らしく、それだけという それは言うことありません。
>> だから今私はこれを保存するつもりです。
私はズームアウトするつもりです。
そして、あなたが持っている可能性が単にスクラッチのように ブール値、ブール値trueまたは
falseの場合、それは何ですかまさに 効果的に利益を下げます。
私は再コンパイルしてみましょう。
私を再実行してみましょう。
そして今、のは再びそれを試してみましょう H-E-L-L-O、入力します。
これはかなり良いことだ。
そして再びそれを試して、私は確認してください 何かを台無しにしませんでした。
これも同様に計上されています。
>> しかし、これでは十分ではありませんので、 私はに行くことはないんだことを他の事
私は本当にそれを介して動作しない限り覚えている 慎重に、と言う、紙です
このいまいましいライン。
があった場合、それは素晴らしいと思いません アッパーに呼び出される関数?
まあそれはそこになります 同様ctype.hにある。
私が先に行くと入力するつもりだ -
私はそのラインを持ち帰ることができます。
代わりに、このここから、私は先に行かせて と%Cの代わりに、言う
この関数を呼び出した結果 複数のi番目の文字の上限。
そして今、それはなってきているに気づく 少しバランス。
私はどのように多くを追跡する必要があります 私は、開いたり閉じた括弧。
>> だから今はそれもクリーナーです。
今、このプログラムは、より良いとなっている それだから良い間違いなく設計
はるかに、はるかに読みやすいけど それはのは、訂正させていないだ。
活用してください。
。/生かす。
H-E-L-L-O。レッツは、再びそれを実行 D--V-I-D。 [OK]を、私たちは、まだだ
形状はかなり良い。
>> しかし、今はアッパーに。
私は、もう一つがあることを提案 我々はそれは次のようになります作ることができる洗練された
本当に素晴らしい、本当に締めでした このコードまで、本当に私たちの5つを与える
例えば、設計のための5つの、外。
を取り除くためにいいだろうか?
さて、どのようにいまいましい長いこのブロックの見える コードは単純な何かを行うことです。
>> さて余談ですが、あなたが持つかもしれないほど この過去のスーパーセクションで見られる
週末には、厳密には必要ありません 中括弧あなただけのものを持っている
我々が提案していてもコードの行、 それがはるかになるようにそれらを維持
スクラッチのU字型のように、より明確に ブロック、支店の中何。
アッパーにあれば、それは素晴らしいことではないでしょう その入力が与えられたときに、それになって
そうでない場合、大文字、と何だろう 逆の場合には、素晴らしいことであれば
すでに大文字の?
ちょうどそれを通過 単独でそれを残す。
>> だから多分それはそれを行います。
私が試してみて、ただ望むことができる それが、私を聞かせていないこと
もうひとつご紹介します。
代わりに、このビルトイン端末を使用する ダウンここでウィンドウは、あることを思い出す
この正方形の黒いアイコンがあなたに与える 私は完全なことができる大きなターミナルウィンドウ
画面私はどうすればよいでしょうか。
だから、彼らは一種の妙だ判明 名前が、呼ばれるこれらのものはあり
manページ、マニュアルページ、短いのマニュアル、 と私は、これらのことによってアクセスすることができます
タイピングの男 -
私は何を入力したいのですか?
アッパーに男。
>> が存在する場合、今気付く におけるコンピュータの機能の中では、
この場合だけであるアプライアンス、 オペレーティングシステムのLinux、それが起こっている
私のやや不可解なセットを与えるために 出力されますが、時間をかけていることを見つけることができます
それは、常にかなりのフォーマットされて 同じように、あなたはそれに慣れ始める。
アッパーに上部に気付くと、 明らかに同じドキュメントがある
下げるために。
誰それはいくつかを切断しました書いた コーナーとは、1ページにすべてを置く。
これらのことは '目的で 人生は変換することです
大文字または小文字への手紙。
>> manページ、概要の下にそのことに注意してください 私が持っているどのファイルを私に教えている
この事を使用することを含めることができます。
それは私にこれらのための署名を与えている 関数、それらの両方であっても
私たちは今でも唯一 1気に。
今ここの説明である。
アッパーに手紙を変換 可能であれば大文字にC。
>> まだ有益ですが、私にさせないこと 今、戻り値の下にものを見て
それは戻って手渡している。
だから、返される値は、ということです 変換後の文字またはCの場合
変換はできませんでした。
Cとは何ですか?
>> オリジナルキャラクター。
>> オリジナルキャラクターと私たちは知っている で、再び、まで行くこと
概要、そして誰でも、これを書いている 機能だけで決めた入力
へのアッパーに、下にだけある 任意に、Cと呼ばれるようにしよう。
彼らはそれがほとんど何も呼ばれたかもしれない 彼らはしたいが、彼らはそれを保っ
Cのような単純な。
だから私は、マニュアルページを相談してきました。
この文は私を安心させる、もし それが小文字ではないですが、それは
ただ戻ってCを、私を与えるつもり 私がを取り除くことができることを意味完璧、
私のelse条件。
>> だから私はgeditのに戻ってみましょう、と 今の私はただ、これを行うことができます。
私はprintf文をコピーするつもりです。
私は先に、右内側に行くつもりです その外にループ印刷用、およびget
構築する場合は、ここで、この全体を取り除く。
悪いアイデアではなかった、そしてそれは非常にあった ずっと正しいと一貫
私たちが宣べ伝えてきたすべてのもの、 しかしちょうど必要ではない。
とすぐにいくつかのライブラリを実現するように この関数は、他の誰かが存在
書いている、または多分あなたは他の場所で書いた ファイルには、あなたは本当にそれを使用することができ
コードを締め始める。
>> そして、私は良いスタイルのようなものを言うとき、 この人が呼ばれているという事実
アッパーに関数、または以前にある 下段は素晴らしく便利ですので、
彼らは非常にわかりやすいです。
あなたの関数を呼び出すのは嫌だ 有し、xおよびy及びz、
はるかに、はるかに少ないという意味。
そのシリーズの質問 改良の?
>> だからのいずれかと言えば十分である 持ち帰りも、あなた自身の問題としてです
セット - 多分問題セット1が、 確かにPはさえ2以降を設定
彼らは必ずしも正しくありませんしているとき 彼らは完璧であるという意味
まだか、特によく設計。
それはへの他の軸だ について考え始める。
だから、これはあなたの内側に文字列だった コンピュータのメモリが、あなたが持っている場合
H-E-L-L-Oのような文字の全体の束 RAMの内側、と仮定
あなたのプログラムの中で文字列を取得呼んでいる そのようなあなた、複数回
あなたはその後、一度文字列を取得する呼び出し 再び文字列を取得する呼び出し。
まあ、何になるだろう 時間をかけて起こる?
>> 言い換えれば、あなたがラインを持っている場合 コンテキストの外とはいえコード、、のような
文字列sを取得します -
これを行うてみましょう。
列名は、文字列を取得等しい。
だから、コードの行を意味していると仮定 彼または彼女の名前をユーザーに依頼する。
このコードの次の行が求めることを意図している 彼または彼女の学校のためのユーザ、および
この次のラインなどが挙げられる。
私たちが求め続けると仮定 別のユーザーと
もう一つ、別の文字列。
彼らは、メモリ内に滞在するつもりだ 同時に。
一方が他方を壊しするつもりはない。
学校は他に上書きされていません。
しかし、彼らはすべてどこにやる メモリに終わる?
>> さて、私たちは画面に描画するために開始した場合、 我々はこの事を使用できる
ここで黒板のように、この黒い場合 矩形は、私のコンピュータのを表して
メモリ、私は任意に開始するつもりだ 少し正方形にそれを分割、
それぞれ表しているの メモリの1バイト。
率直に言って、あなたは、RAMのギガバイトを持っている場合 これらの日、あなたは億バイトを持っている
お使いのコンピュータのメモリなので、 これらの正方形の億円となりました。
だから、これは、それを言えば十分 スケールには本当にありません。
>> しかし、我々はこれらのすべてを描き続けることができ はっきり正方形、これを拡張しないように
集合的に表し 私のコンピュータのメモリ。
今、私たちは、ドット、ドット、ドットをやるだけでしょう。
だから、他の言葉で、私は今求められたとき 文字列は私を与えるために取得を持つユーザ
文字列、何が起こる?
"こんにちは、"終了で、ユーザーがタイプした場合 アップでH-E-L-L-O。しかし、仮定
のユーザーは、その後のタイプ -
実際に、私が行っているべきではありません こんにちは私たちは求めているので、
自分の名前のためにそれら。
だから私はこれを行うことができればのに戻ってみましょう。
>> 私は私の名前のためにD-A-V-I-Dで入力するのであれば、 しかし思い出してその二行目
コードは、再び文字列を取得しました 自分の学校を取得します。
その単語はどこです、そのユーザ 次行くの型?
まあ、多分それは入るだろう H-A-R-V-A-R-D。私がしたそうにもかかわらず
つの行としてそれを引か、これはただです あなたのバイトの全体の束
コンピュータのRAM。
今ので、私は場合は、問題が存在することになります この非常に合理的にRAMを使用して
しかし、素朴な方法のようなもの、何かことができます 明らかに区別しませんか?
1が開始され、どこ 一端、右?
彼らは一緒にぼかしのようなものです。
>> だから、コンピュータが判明 これを行うことはありません。
私は実際に時間に戻ってスクロールしてみましょう いくつかの文字、そしてその代わりにハーバード大学の
ユーザーの名前の直後に起こって、 ユーザーが実際に後ろに取得します
シーン、特殊文字 によって挿入
彼または彼女のためのコンピュータ。
/ 0、そうでなければNUL文字として知られている N-U-Lと呼ばうるさくなく、
N-U-L-Lが、あなたはそれ/ 0のように書いてください。
これは、すべてのビットがゼロでマーカーであるだけだ 最初の単語の間に、そのユーザの
入力された第二。
>> ハーバード大学は、実際には今まで終わるよう この文字列として
そしてもう一つの/ 0。
そう換言すれば、これらを有することにより センチネル値、8連続したゼロ
ビットは、あなたは今、区別するために始めることができます から別の文字。
だから、 "こんにちは"でいたものすべてのこの時間 実際には "こんにちは" / 0とし、
一方、そこに可能性のある非常によく かなり多くのRAMである
コンピュータの内部。
>> 私は今ではもう一つのことをやってみましょう。
それは、これらの正方形のすべてのことが判明 我々は、彼らは、はい、描画されてきた
より一般的には文字列が、 これらの事は配列です。
アレイは、単にメモリの塊です 背中合わせに背中合わせにそれだ、
そして、あなたは、通常の方法で配列を使用 この角括弧表記。
だから私たちは、これらのかなりのビットを参照するつもりだ 時間をかけて、しかし、私が先に行くとう
開く、のはそれ年齢と呼ぶことにしましょう。
そして、我々が何ができるかに気づく これらの同じトリック、少し
ここでもう少し構文。
>> したがって、このプログラムの17行で - 実際に、私が最初にプログラムを実行してみましょう
ので、このことが何を見ることができます。
私に年齢を加えると呼ぶことにしましょう このプログラムをコンパイルします。
。/年齢。
部屋には何人います?
それは3コール。
最初の人の年齢?
18,19、および20。
そして今やや途方もなく、私はただ プログラムそれが年齢のものを作った
三人。
>> だから機会が明らかにあり ここでいくつかの楽しみのために算術。
ありがたいことに、数学は正しいです。
18は行って19、19に行ってきました 20等が挙げられる。
しかし、何が本当にあることを意味している 実例ここでは保存している方法です
これら3人の年齢。
私が何時にズームしましょう ここで起こって。
>> だから最初に、これらの最初の数行はすべき かなり慣れること。
私はちょうどのためにユーザーにプロンプトを表示しています 部屋の中で人々の数。
にしながら、私はint型を取得し、実行し使用しています 何度も何度も何度もこれを行う。
我々は前にそのパターンを見てきましたが、 27行目では、新しいと実際にはかなりある
有用となるであろう ますます便利。
何が27行目で違うことに注意してください 私は宣言されているように見えるということです
int型は、年齢と呼ばれるが、待つ。
それだけではint型の年齢ではありません。
これらの角括弧は、あります 内はnです。
>> この文脈でそうブラケットN、ではない しかし、ここでprintf文の内側
この唯一の27行で、この行はです 私nは整数を与えると言って、それぞれの
int型です。
だから、これはの、いわば、バケツで、 この場合、3つの整数に戻る
背中合わせになるように私は効果的に 3つの変数を持っている。
代替案は、することが 明確な、これだろう。
>> 私が欲しかった場合は、最初の生徒の 年齢は、私はこれを行うことがあります。
私が欲しかった場合、2番目の生徒の 年齢は私はこれを行うことがあります。
私が欲しかった場合は第三の生徒の 年齢は、私はこれを行うことがあります。
と禁じる神たちは皆のを必要とする この部屋での年齢 -
私は意味、これはコピーの多くの一体であり、 もう一度、もう一度、もう一度貼り付けます。
そして、プラス、かつて私は、このプログラムをコンパイル 他の生徒が出てかけて歩く場合
そのドアの、今では私の電話番号 変数が正しくありません。
>> それでは配列のいいのはあるとして あなた自身を感じ始めるとすぐに
コピーと貼り付け、オッズはだということです しない最良のアプローチ。
配列は、潜在的に動的です。
私は事前にどのように多くの人々には知らない 部屋にしようとしている、
しかし、私はそれらのn個必要知って、私はよ 時が来れば、Nを把握。
このコード行は、現在を意味、私に与える このようになり、メモリのチャンク
どこで、画面上の箱の数 nの上に完全に依存していること
ユーザーが入力したログイン
>> だから今、このプログラムの残りの部分です 私たちに、実際にはかなり似て
ただ文字でやった。
私はループのために持って気付く 30行目から始まる。
私は配列を取得するので、右の後、私 Yからの反復は、最大nまでにゼロに等しい。
私はこの有益なのprintfを持って ちょうど私の年齢を与える、というメッセージ
人の#%iのため、ナンバーワン、 ナンバー2、ナンバー3。
そして、なぜ私はこれをやったの?
率直に言って、人間は1からカウントすることを好む コンピュータ科学者に対し、最大で、
までにゼロ。
コンピュータ科学者は、するつもりはありません この種のプログラムを使用するため、我々はしている
ただカウントを開始する予定 普通の人のようなもので。
>> そして今、33行目では、わずかに気付く 構文の異なる作品。
ジャンルその変数のi番目の年齢 配列のデータ型はintを取得する予定です。
そして今、最後に、これはただです ここに算術ダウン。
私が主張するために別のループで決めた いくつかの時間が経過し、今ではこの中
独立したループは、これらの行が実行されます。
>> 今から今年、私はなり人 歳が、これではありません気づく
変数i。
これが今ではint型のために%Iです。
そして、私は、最初のプレースホルダとして気づく 私はプラス1でプラグインなので、我々は次のようにカウント
普通の人。
そして、自分の年齢の値を、用 歳の私、私は年齢のブラケットを取る
I - と、なぜ私はここに1を加えているのですか?
彼らはただ歳。
それはプログラムの私の愚かな選択だ。
彼らは、ちょうど1年歳。
私は、任意の数の点で、入力することができ 私は実際にそこにしたい。
>> それでは、実際には、すべてのです ここに関連性?
まあ、私は実際に戻ってスクロールしてみましょう こっちと絵を描く
待ち受けているのかの。
我々は我々の次で何をやっているだろう 問題セット二人に手を染めている
暗号の世界。
だから、これは文字列ですので、 複数文字のシーケンス、そして何
これは言っていますか?
これは、オンライン版ではありません スライドの。
>> だから私は、これはこれと等しいことを主張する 長年から愚か広告
前に実際に思い出すかもしれない その起源の一つ。
だから、これは暗号化の例です。 または暗号。
それはあなたがしたい場合ことが判明 実際に情報または共有を送る
確実に誰か、との情報 このようなメッセージのように、次のことができます
文字をスクランブル。
しかし、一般的に、言葉はある ランダムにスクランブルされていない。
彼らはいくつかの方法で入れ替えたり、変更している そのため、何らかの方法で - おっと。
それは次回のための楽しいスポイラーです。
>> だから、明らかに何かマッピングすることができます そのラインアップB. NoticeをO
総額が賢明。
どうやらRは、電子になる。
どうやらF-H-E-Rは、S-U-R-Eになります。そう それは、マッピングがあると判明し、内
この場合はかなり愚かなあり 誰もがそれを考え出した場合にマッピング?
これはと呼ばれるものです。 腐れ13、回転13。
それは暗号化の最も愚かである そのためのメカニズム文字通り
、手紙のひとつひとつに13を加算し あなたならちょうどその意味で愚か
あなたの手で自由な時間のビットを持って と鉛筆、またはあなたはそれだと思う
あなたの頭の中を通って、あなたは試みることができる すべての可能な追加 - 一、二、
3つのドット、ドット、ドット、ちょうど25 全体のアルファベットを回転させ、
結局、あなたは見つけ出すよ このメッセージは何ですか。
あなたは、このような何かをしたのであれば あなたへのメッセージを渡す小学校
親友、あなたの小学校であれば 先生は単に通読
メッセージとブルートは、ソリューションを強制 あなたが得ているかもしれません
それによって答え。
>> さてもちろん、現実の世界では、 暗号化は、より洗練されています。
これはからのテキストの抜粋です ユーザ名とされているコンピュータシステム
パスワードは、ほぼすべての私達のものはそうであるように、と これはどのようなパスワードがあるかもしれない
ハードディスクに保存されている場合のように見える しかし、暗号化された形式で駆動します。
これは、単に文字の回転ではない BとBがCこれですです
はるかに洗練され、それが使用されます 一般的には秘密鍵として知られているもの
暗号。
この写真は、次のを伝え 少数のアイコンの話。
>> 左では、我々は持っているもの 我々は、プレーンテキストと呼ぶことにします。
暗号化、平野の世界では テキストは単に元のメッセージです
英語やフランス語で書かれた またはいかなる言語。
あなたはそれを暗号化したい場合、我々は合格でしょう それは絵で南京錠を通して、そう
アルゴリズムのいくつかの種類、いくつかの機能 誰かが書いたか、プログラム
そのスクランブルできれば手紙 もっと複雑にわずか13を追加するよりも
それらの各々に関する。
>> あなたは、で、そのプロセスから抜け出す何 真ん中そこは暗号文と呼ばれています。
セクシーな単語のとても親切。
それはちょうどそれが暗号化されたことを意味 プレーンテキストのバージョン。
そして、あなたはその同じ秘密を持っている場合にのみ、 13またはマイナス13、あなたはすることができます
解読するそのようなメッセージが表示されます。
>> だから問題にとりわけ、二つを設定 あなたは、ハッカーであればやる
Editionは、あなたがにコードを記述する必要があります 考え出す、これらのパスワードをクラック
彼らは何だったとどのように彼らがいた 暗号化され、私達は少しを与える行うものの
道に沿っての指導。
スタンダード版では、ご紹介 暗号のカップルは、暗号化
メカニズムは、シーザーと呼ばれる1つ、1 ヴィジュネルと呼ばれる、それはまだです
なり回転暗号 何か、Bが何かになりますが、
あなたは、プログラムでそれをしなければならない 確かに秘密があるだろうので、
通常は数であるキー関与 またはキーワードだけ
送信者と受信者これらの メッセージが理解しておく必要があります。
>> さて、これは実際に化身を持っている 現実の世界である。
これは、例えば、少しオーファンである アニーの秘密のデコーダリング、そしてあなた
実際にこれらを実装することができます 回転暗号 -
何となり、Bとなり 何か - 車輪のカップルと、
外側に1つ、内側に1 その結果、あなたは、ホイールを回転させる場合、または
リングは、あなたが実際に並べることができます 異なる文字で手紙、
シークレットコードを取得。
そして今日は接戦として、 私は私は何だろうと思っていたことのビットです
あなたがテレビをオンにした場合という先祖返り 12月24日、あなたは見ることができます
のムービー広告nauseum 連続で24時間。
しかし、今日のために、私はここでそれを開くよ と私達にのわずか2分を与える
教育学関連のクリスマス·ストーリー Ralphieの名前少し仲間と。
>> [ビデオの再生]
>> それをすべてに知られており、その雑貨-BE ラルフパーカーは、ここに任命される
リトル孤児アニー秘密のメンバー サークルとは、すべての権利がある
栄誉とメリット そこに発生する。
>> 署名付き、リトル孤児アニー。
インクで、ピエール·アンドレが副署。
すでに番組とメリット 9歳の時。
>> [ラジオで叫ぶ]
>> さあ、それに乗ってみましょう。
私は約すべてのそのジャズを必要としない 密輸や海賊。
>> のため明日の夜 - 聞く 黒の締結冒険
海賊船。
さて、それはアニーの秘密の時間です あなたのメンバーへのメッセージ
秘密サークル。
、子供たちを覚えています。
アニーの秘密のサークルのメンバーだけ アニーの秘密のメッセージをデコードすることができます。
覚えておいて、アニーはあなたに依存している。
B2にあなたのピンを設定します。
ここにメッセージがある。
12、11、2 -
>> - 私は私の最初の秘密会議で午前。
>> -25、14、11、18、16 -
>> ピエールは素晴らしい声今夜だった。
私は今夜のメッセージを伝えることができ 本当に重要だった。
>> -3、25。
それはアニー彼女自身からのメッセージです。
誰にも教えていない、覚えておいてください。
>> -90秒後、私は部屋にいるよ 家の中でどこに9の少年
プライバシーとデコードに座ることができます。
なるほど、B.私は次に行きました。
E.最初の言葉は "である"である。 S. それは今では簡単に来ていた。
U. 25。
それはのR.
>> Ralphieの、オン来る。
私は行かなきゃ。
>> - 私は、右下の馬である。
ジー達人。
>> -T。 Oをしてください。
何にしてください?
リトル孤児は何だった アニーは言おうとして?
何にしてください?
>> -Ralphieの、ランディが行くようになっています。
あなたが出て来てくださいますか?
>> - すべての権利、馬。
私は右の外になります。
>> -Iに近い今になっていた。
緊張がひどかった。
それは何でしたか?
惑星の運命月 バランスでハングアップ。
>> -Ralphieの、ランディのお奨めは行く。
>> - 私はのために右の外に 大声で泣いている。
>> - ほとんどそこ。
私の指が飛んだ。
私の心は鋼の罠だった。
すべての細孔は、振動。
それはほとんど明らかになった。
はい、はい、はい、はい、はい。
>> あなたのオヴァルを飲むようにしてください-BE。
オヴァル?
安っぽく商業?
雌犬の息子。
>> [ENDビデオ再生]
>> SPEAKER 1:これはCS50であり、その 問題のセット二つになります。
来週お会いしましょう。
>> SPEAKER 2:次の時 CS50は、これが起こる。
>> SPEAKER 1:我々はいないしたがって、1つのトピック これまでで見た
関数ポインタのこと。
さて、関数ポインタだけである 公共のアドレス
機能が、はるかのような -
の息子 -