1 00:00:00,000 --> 00:00:11,280 2 00:00:11,280 --> 00:00:13,650 >> SPEAKER 1:すべての権利。 3 00:00:13,650 --> 00:00:14,390 お帰りなさい。 4 00:00:14,390 --> 00:00:19,260 これはCS50の週二であり、我々は持っている これまでの機能を使っていますが、 5 00:00:19,260 --> 00:00:20,830 当然の大部分は、それらを撮影。 6 00:00:20,830 --> 00:00:23,430 我々は持っているprintfの使用してきました 印刷の副作用 7 00:00:23,430 --> 00:00:24,110 画面上のもの。 8 00:00:24,110 --> 00:00:25,790 我々は、Get-int型、float型を取得使用しました。 9 00:00:25,790 --> 00:00:29,230 >> しかし、あなたが実際に作成したい場合 の一部として独自の関数、 10 00:00:29,230 --> 00:00:31,740 すでに始めているかもしれません けれども、問題のセットOneのために行う 11 00:00:31,740 --> 00:00:33,140 必須ではありませんか? 12 00:00:33,140 --> 00:00:37,150 まあ、それの先に行くと再訪せ だけをユーザーに尋ねるの問題 13 00:00:37,150 --> 00:00:40,660 上に自分の名前と印刷は何か 画面が、いくつかを考慮しよう 14 00:00:40,660 --> 00:00:44,000 私たちがしたことを共通の これまで我々のコードで見られる。 15 00:00:44,000 --> 00:00:45,120 だからそのことで、私は次のことを意味します。 16 00:00:45,120 --> 00:00:47,315 >> 私が先に行くと、作成するつもりです 新しいプログラムでは、単に呼び出す 17 00:00:47,315 --> 00:00:49,320 それは、いつものようにhello.cを。 18 00:00:49,320 --> 00:00:53,730 私が先に行くと、自分自身を与えるつもりだ 上部に標準io.hのが含まれています。 19 00:00:53,730 --> 00:00:57,040 私はまた、自分自身を与えるつもりだ 先制CS50ライブラリよう 20 00:00:57,040 --> 00:00:59,080 私は、コンパイラによって怒鳴られません。 21 00:00:59,080 --> 00:01:02,400 そして今、私は先に行くつもりです とint、メイン、無効を宣言します。 22 00:01:02,400 --> 00:01:09,020 >> 私がしたい場所と、ここでは、これは に機能を委託する開始する 23 00:01:09,020 --> 00:01:12,090 私自身は思っているいくつかの他の機能 書こうが、それはしません 24 00:01:12,090 --> 00:01:13,820 現在存在している。 25 00:01:13,820 --> 00:01:19,210 例えば、私がしたいと仮定し 私がすることができます関数を書く 26 00:01:19,210 --> 00:01:23,830 こんにちは、カンマをプリントアウトし、 その後いくつかのユーザーの名前。 27 00:01:23,830 --> 00:01:29,010 printfの行う継続するのではなく こんにちは、%sは、それがあればいいことではないでしょう 28 00:01:29,010 --> 00:01:33,380 呼び出された関数は、ただそこにあった printf関数が、印刷名ではありません? 29 00:01:33,380 --> 00:01:36,600 >> だから、他の言葉で、私ができるようにしたい 少しを行うプログラムを書く 30 00:01:36,600 --> 00:01:37,710 このような何か。 31 00:01:37,710 --> 00:01:42,070 まず、私はあなたのprintfの言うつもり 名前は、それによって、ユーザを促す 32 00:01:42,070 --> 00:01:46,150 私はその後、私に彼または彼女の名前を与え、 に馴染みの文字列sを使用するつもり 33 00:01:46,150 --> 00:01:47,290 文字列を宣言します。 34 00:01:47,290 --> 00:01:50,420 私の文字列型の変数を与え、 それの呼び出し、その中に格納する 35 00:01:50,420 --> 00:01:52,120 文字列を取得する呼び出しの結果。 36 00:01:52,120 --> 00:01:56,060 しかし、今、過去数週間で、私が持っているでしょう ややうんざりするほど行わこんにちは、%S / N。 37 00:01:56,060 --> 00:01:58,630 38 00:01:58,630 --> 00:02:02,570 >> そして換言すれば、我々はこれを見てきた 例倍の束、そしてそれは 39 00:02:02,570 --> 00:02:05,280 ただ1があるので、例えば些細 コー​​ドの行それは本当にありませんので、 40 00:02:05,280 --> 00:02:06,860 再度入力して保つために大したこと。 41 00:02:06,860 --> 00:02:09,990 しかし、仮定そのコード行 実際に負担になっていた、と 42 00:02:09,990 --> 00:02:12,900 それは1行のコードではありませんが、それは10だ コー​​ドの行今から数週間、 43 00:02:12,900 --> 00:02:15,190 とするだけで疲れて取得している コピーと貼り付けまたは 44 00:02:15,190 --> 00:02:17,180 その同じコードを再入力。 45 00:02:17,180 --> 00:02:22,100 それは素晴らしいことではなく、やっていないでしょう printfのこんにちは、%sのなど、 46 00:02:22,100 --> 00:02:26,500 ちょうどそこにあった場合、それは素晴らしいことではないでしょう プリント名その呼び出される関数 47 00:02:26,500 --> 00:02:27,560 引数を取る - 48 00:02:27,560 --> 00:02:29,120 換言すれば、入力を受け取り - 49 00:02:29,120 --> 00:02:30,620 その後セミコロン。 50 00:02:30,620 --> 00:02:33,240 だから、その関数は、それではないでしょう それが存在していればいいだろ? 51 00:02:33,240 --> 00:02:36,690 それから私は心配する必要はないであろう printf関数とは何か、何の%sとのすべて 52 00:02:36,690 --> 00:02:39,400 これらの複雑さ すべてが面白くない。 53 00:02:39,400 --> 00:02:40,570 彼らは便利です。 54 00:02:40,570 --> 00:02:44,700 >> だからプリント名は、残念ながら、ありませんでした いくつかの40年以上前に発明した。 55 00:02:44,700 --> 00:02:45,980 誰もそれを書くために考えていません。 56 00:02:45,980 --> 00:02:48,300 しかし、それは持っていることの美しさだ だけのようなプログラミング言語、 57 00:02:48,300 --> 00:02:52,930 スクラッチあなたはそう、カスタムブロックを定義することができます Cとほとんどの任意の言語では、次のことができます 58 00:02:52,930 --> 00:02:57,260 することができ、独自の機能を定義する あなた独自の関数を定義します。 59 00:02:57,260 --> 00:03:01,710 我々は主によって得るだからにもかかわらず 自動的に自由のために、我々は宣言することができます 60 00:03:01,710 --> 00:03:02,730 当社独自の機能。 61 00:03:02,730 --> 00:03:05,670 >> だから私はここにいくつかの部屋を作るつもりです トップまで、私は私のを宣言するつもりだ 62 00:03:05,670 --> 00:03:08,210 見に行くの独自機能 少し最初は奇妙なしかし我々は来る 63 00:03:08,210 --> 00:03:09,400 バックこの前長いへ。 64 00:03:09,400 --> 00:03:12,310 私はそれによって、無効と言うつもりです この機能を示すことはありません 65 00:03:12,310 --> 00:03:16,040 何かが、副作用を有するが、それ で私に何かを返しません 66 00:03:16,040 --> 00:03:18,810 int型を取得したり、同じように 自体がない文字列を取得します。 67 00:03:18,810 --> 00:03:22,450 そして私は、この関数を与えるつもりだ プリント名の名前、私はするつもりです 68 00:03:22,450 --> 00:03:26,470 この男がかかるとしていることを指定 文字列、そして私はそれを呼び出すつもりだ 69 00:03:26,470 --> 00:03:27,600 文字列名。 70 00:03:27,600 --> 00:03:32,100 私はそれを私が欲しいものを呼び出しますが、私でした 私のコードは自己文書になりたい。 71 00:03:32,100 --> 00:03:34,770 言い換えれば、あなたの場合は、1にあった このファイルを開いて、それを読んで、あなたは可能性 72 00:03:34,770 --> 00:03:39,020 その名前から推測の一種 それは演奏することになってどのような役割を入力。 73 00:03:39,020 --> 00:03:42,270 >> そして今、その下に、私が開くつもりです 中括弧と閉じ中括弧、 74 00:03:42,270 --> 00:03:47,140 ので、私は同じに従っているに気づく 線として4〜7上のパターン 75 00:03:47,140 --> 00:03:51,622 私は良い週プラスについては、次のしてきた 今ライン9と、言う間に 76 00:03:51,622 --> 00:03:53,400 メイン作曲14。 77 00:03:53,400 --> 00:03:56,160 換言すれば、表示名 別の関数である。 78 00:03:56,160 --> 00:03:58,990 さて、コンパイラは知っているつもりはない 自動的にこの事をコールする 79 00:03:58,990 --> 00:04:02,670 私は文字通りそれを発明したので、 それはまだメイン呼び出すために知っているだろう 80 00:04:02,670 --> 00:04:08,710 自動的に、その後のコースの 13行目、私は自分自身の関数を呼び出しています。 81 00:04:08,710 --> 00:04:12,805 そして、私は、その関数を宣言してきたので、 、メインの前に4つのライン上にアップする 82 00:04:12,805 --> 00:04:16,579 これは、コンパイラを教えるために起こっている 何の引用、引用終わり、 "印刷名" 83 00:04:16,579 --> 00:04:18,140 を意味し、それは何をすべきか。 84 00:04:18,140 --> 00:04:22,700 だから私はそれを新しいカスタムを与える一種のだ スクラッチ、言う、のコンテキストでブロックします。 85 00:04:22,700 --> 00:04:27,240 >> だからここでは、私は非常に一般的に置くことができ 私はキープコードの繰り返しパターンや 86 00:04:27,240 --> 00:04:32,300 クラスで書き込み、printfの %sはこんにちは、%S / N "、 - 87 00:04:32,300 --> 00:04:36,720 88 00:04:36,720 --> 00:04:37,590 私はここに入れて何をしたいですか? 89 00:04:37,590 --> 00:04:39,200 S? 90 00:04:39,200 --> 00:04:41,420 だから私はこの文脈で名前を載せていきたいと思います。 91 00:04:41,420 --> 00:04:43,440 だからここに二分法のビットに気づく。 92 00:04:43,440 --> 00:04:47,680 私は自分自身の関数を宣言していますので、 と私は、やや恣意的と呼ばれています 93 00:04:47,680 --> 00:04:50,880 それは、名前を印刷し、私がきたので、 括弧内に指定され、この 94 00:04:50,880 --> 00:04:55,035 関数は、1つの引数の型を取る これは文字列です - ので、それは言葉だ 95 00:04:55,035 --> 00:05:00,010 またはフレーズか何かのような - と 私はそれを、その引数名を呼んでいる 96 00:05:00,010 --> 00:05:04,770 で唯一の変数を意味します スコープは、いわば、名前です。 97 00:05:04,770 --> 00:05:07,780 >> Sは何2の間に存在する 中括弧は、もちろん? 98 00:05:07,780 --> 00:05:12,990 本当にまあ、ただライン〜10のような 月曜日にこれだけのような14は、使用できません 99 00:05:12,990 --> 00:05:17,650 Sですが、何を私が行うことができますが合格されて プリント名にS。 100 00:05:17,650 --> 00:05:21,030 印刷名はちょうどので、それを与えるために起こる 別名、同義語、ニックネーム、 101 00:05:21,030 --> 00:05:24,400 今名前を呼び出し、 このラインで使用する。 102 00:05:24,400 --> 00:05:26,840 だから今はズームアウト、私はこれを保存することができます。 103 00:05:26,840 --> 00:05:31,250 >> 私が先に行くと挨拶してみましょう。 104 00:05:31,250 --> 00:05:32,400 よさそうだ。 105 00:05:32,400 --> 00:05:36,110 すべてのエラーを吐き出すしませんでした。 。/こんにちは入力してください。 106 00:05:36,110 --> 00:05:37,020 私の名前は何ですか? 107 00:05:37,020 --> 00:05:38,060 デビッド。 108 00:05:38,060 --> 00:05:39,270 とデビッドこんにちは。 109 00:05:39,270 --> 00:05:41,820 だから、すべてがエキサイティングではない、 しかし、ちょうど今だと思います。 110 00:05:41,820 --> 00:05:44,310 あなたは今、同じ成分を持っている 我々はにスクラッチで行ったように 111 00:05:44,310 --> 00:05:45,420 私たち自身の関数を作る。 112 00:05:45,420 --> 00:05:46,770 >> しかし、落とし穴のビットがあります。 113 00:05:46,770 --> 00:05:50,620 私は本当に考えていなかったと仮定する これを通じて、私実際になし 114 00:05:50,620 --> 00:05:54,250 本当にそれについて考えて書いている そのここでダウン機能。 115 00:05:54,250 --> 00:05:55,420 完全に合理的に感じている。 116 00:05:55,420 --> 00:05:58,440 スクラッチではないという概念はありません スクリプト内の場所の。 117 00:05:58,440 --> 00:06:00,670 は、1つは、ここで、ここで1つを出すことができ ここで1点、それが起動するかもしれません 118 00:06:00,670 --> 00:06:03,310 そうでない場合は少し厄介に見えるように それをきれいにレイアウトし、それはしません 119 00:06:03,310 --> 00:06:05,910 どこに物理的にスクリプトは関係 画面上にあった。 120 00:06:05,910 --> 00:06:09,660 残念ながらCで - これはとは違っている JavaやPythonのような言語 121 00:06:09,660 --> 00:06:13,600 あなたが精通しているかもしれないことを他人 残念ながらC言語では、順序がありません - と 122 00:06:13,600 --> 00:06:15,830 時計は何だから問題で 今起きよう。 123 00:06:15,830 --> 00:06:19,010 >> 起こっているデフォルトの関数 実行するためには、もちろん、主である。 124 00:06:19,010 --> 00:06:22,290 メインは上の印刷の名前を呼ぶために起こっている ライン8、残念ながら、 125 00:06:22,290 --> 00:06:26,660 コンパイラも、プリント名を知ることができません それは11行目に到達するまで、存在 126 00:06:26,660 --> 00:06:28,520 これは残念なことにある 手遅れになるだろう。 127 00:06:28,520 --> 00:06:30,660 だからこんにちは作って頂きます。 128 00:06:30,660 --> 00:06:32,950 そして今いまいましい、2つのエラーが生成された。 129 00:06:32,950 --> 00:06:36,050 だから今私は非常にまでスクロールさせて 最初に、我々は常に行うべきであるように、と 130 00:06:36,050 --> 00:06:39,560 それは私に叫んでいることがわかり、 関数の "暗黙の宣言 131 00:06:39,560 --> 00:06:40,540 名前を印刷します。 " 132 00:06:40,540 --> 00:06:43,860 >> だから我々は、このメッセージの前に見てきた、 関数の暗黙の宣言。 133 00:06:43,860 --> 00:06:48,080 ときに我々は、エラーのようなものを見たことがありますか? 134 00:06:48,080 --> 00:06:49,180 私はライブラリが含まれていなかったとき。 135 00:06:49,180 --> 00:06:53,470 私はcs50.h忘れて、私はなるだろう場合 文字列を取得したり、intの取得のために怒鳴ら。 136 00:06:53,470 --> 00:06:56,880 しかし、この場合には、この関数の印刷物 名前は右、ライブラリにありませんか? 137 00:06:56,880 --> 00:07:00,230 それはとても、このファイルに文字通りだ 実際には問題は何ですか? 138 00:07:00,230 --> 00:07:04,660 >> まあ残念ながらC言語では、それはあなたを取る 信じられないほど、文字通りその場合 139 00:07:04,660 --> 00:07:08,640 プリント名に呼び出される関数にしたい 存在し、次のいずれかを実装する必要が 140 00:07:08,640 --> 00:07:11,940 あなたの最上部にその関数 コー​​ドは、それが減少したことからアクセスだそう 141 00:07:11,940 --> 00:07:15,070 機能しますが、率直に言って、となります 非常に迅速にずさん。 142 00:07:15,070 --> 00:07:18,160 個人的に、私は最初にメイン置くようなもの なぜなら、それは非常に明確な何これ 143 00:07:18,160 --> 00:07:19,890 プログラムは、一見します。 144 00:07:19,890 --> 00:07:23,290 とプラス、あなたは奇妙なコーナーに入ることができる xが呼び出すしたい場合のケース 145 00:07:23,290 --> 00:07:27,530 Yが、yがただX、あなたを呼ぶかもしれない 物理的に、実際にものを置くことができない 146 00:07:27,530 --> 00:07:28,540 その他上記の。 147 00:07:28,540 --> 00:07:31,230 >> しかし、それは我々は、C言語ですることができます判明 非常に簡単にこの問題を解決。 148 00:07:31,230 --> 00:07:34,010 私は、スペースを少し置くつもりです ここまで、と私はちょうどに行くよ 149 00:07:34,010 --> 00:07:38,170 先制、多少とはいえ 重複し、教えるつもり 150 00:07:38,170 --> 00:07:42,320 関数が存在することをコンパイラ プリント名を呼ばれ、それは、文字列を取り 151 00:07:42,320 --> 00:07:46,330 と私は呼ぶつもりです それは、セミコロンを付けます。 152 00:07:46,330 --> 00:07:50,220 >> これはだから今ライン4で、その我々 前に見たことがない、宣言である 153 00:07:50,220 --> 00:07:53,940 ファンクションプリント名が、それだけだ この機能はことをお約束 154 00:07:53,940 --> 00:07:56,620 最終的には最終的に、定義される 実装される。 155 00:07:56,620 --> 00:08:00,180 これは、今私は一人で残すことができますので、 さて、これは、定義である 156 00:08:00,180 --> 00:08:04,090 ラストマイルの実装、ソート 本実施の 157 00:08:04,090 --> 00:08:05,130 特定の関数。 158 00:08:05,130 --> 00:08:08,450 だから率直に、それは愚かだ、それは迷惑なんだ これはCである方法であり、それはだ 159 00:08:08,450 --> 00:08:12,050 それは非常に文字通りあなたがかかるので そして、コンピュータは率直に必要として、 160 00:08:12,050 --> 00:08:16,020 唯一のあなたはそれをするために教えてくれないかを正確に 行う、などの順序が重要であること。 161 00:08:16,020 --> 00:08:18,940 >> だから、心にして、もう一度、に開始することを保つ パターンの再発に気づく。 162 00:08:18,940 --> 00:08:21,850 あなたが持っていなければオッズは、あなたが意志である 既に、メッセージに遭遇し始める 163 00:08:21,850 --> 00:08:24,700 このように一見思えること 完全に謎めいていますが、起動した場合 164 00:08:24,700 --> 00:08:29,000 のように、これらのキーワードを探すために の "暗黙の宣言"に言及 165 00:08:29,000 --> 00:08:32,380 この場合の機能 - と率直に言って、あなた 時には小さな緑を得る 166 00:08:32,380 --> 00:08:35,010 あなたに伝えニンジンシンボル 問題は、おそらくです - 167 00:08:35,010 --> 00:08:40,980 あなたはを通してあなたの方法を作業を開始することができます まだ目に見えないエラーメッセージ。 168 00:08:40,980 --> 00:08:45,860 書面上の任意のNHR このように独自の関数? 169 00:08:45,860 --> 00:08:47,540 >> の何かをしてみましょう もう少し説得力のある。 170 00:08:47,540 --> 00:08:51,760 持って何かをするだけではなく、 印刷の副作用、私は手放す 171 00:08:51,760 --> 00:08:55,340 先に、新しいファイルを保存し、我々はよ それはあっても、このpositive.cを呼び出す 172 00:08:55,340 --> 00:08:57,600 少し異なることになるだろう 前回対。 173 00:08:57,600 --> 00:09:01,910 そしてこの時間は、私が再実装したい 前回のpositive.C例えば、どの 174 00:09:01,910 --> 00:09:04,430 ユーザが提供することを強制される 私に正の整数。 175 00:09:04,430 --> 00:09:07,280 しかし、私はint型の最後の時間を取得し使用する必要がありました。 176 00:09:07,280 --> 00:09:10,780 があった場合、それはいいされなかったであろう この関数は、正の整数を得ると呼ばれる 177 00:09:10,780 --> 00:09:13,610 私はちょうどこれを外部委託すること への機能の一部? 178 00:09:13,610 --> 00:09:16,480 だからここでの違いは、我々はよです 正の整数を取得する実装が、違って 179 00:09:16,480 --> 00:09:20,330 副作用を持っていた名前を印刷すること - それを のように私に何かを返していませんでした 180 00:09:20,330 --> 00:09:21,710 数値または文字列 - 181 00:09:21,710 --> 00:09:25,510 正の整数は、もちろん、としている取得 、うまくいけば、正の整数を返します。 182 00:09:25,510 --> 00:09:26,170 >> だから、これを行うてみましょう。 183 00:09:26,170 --> 00:09:30,840 cs50.hを含め、標準io.h.を含め 184 00:09:30,840 --> 00:09:33,520 メイン、voidをintです。 185 00:09:33,520 --> 00:09:42,160 そして今ここで、私が先に行くつもりです とのがintとしましょう​​、それはnを、等しく呼び出し 186 00:09:42,160 --> 00:09:44,270 正の整数を取得します。 187 00:09:44,270 --> 00:09:49,080 そして、ちょうどのようなint型がすでに存在している取得 スタッフがそれを書いたので、私は行くよ 188 00:09:49,080 --> 00:09:53,950 得る瞬間を想定する 正のint型が存在し、今では私が行くよ 189 00:09:53,950 --> 00:09:57,730 先に行くと、printfを言うためには、 %I / N "、nのおかげ。 190 00:09:57,730 --> 00:10:02,940 191 00:10:02,940 --> 00:10:07,770 >> だから今、私はこのプログラムをコンパイルする場合、どのような 私の端末で起こるために起こっている 192 00:10:07,770 --> 00:10:09,075 画面下部のウィンドウ? 193 00:10:09,075 --> 00:10:11,580 194 00:10:11,580 --> 00:10:13,900 私はおそらくそれを取得するつもりだ 前と同じエラーが発生しました。 195 00:10:13,900 --> 00:10:14,570 それでは、これを試してみましょう。 196 00:10:14,570 --> 00:10:16,450 肯定的なことを確認します。 197 00:10:16,450 --> 00:10:19,900 そして再び、暗黙の宣言 機能の、正のint型を取得します。 198 00:10:19,900 --> 00:10:21,970 だから私たちは、これを解決することができます いくつかの方法。 199 00:10:21,970 --> 00:10:27,310 私はそれが簡単で維持するつもりだ ここに私の宣言を入れてもらう 200 00:10:27,310 --> 00:10:28,120 正の整数。 201 00:10:28,120 --> 00:10:29,720 私は、いわゆる署名を必要とする。 202 00:10:29,720 --> 00:10:32,410 署名だけで指し の美学へ 203 00:10:32,410 --> 00:10:34,090 プログラムの最初の行。 204 00:10:34,090 --> 00:10:37,420 だから何が正を取得する必要があります リターンint型? 205 00:10:37,420 --> 00:10:37,970 >> だからint型。 206 00:10:37,970 --> 00:10:41,540 私は理想的に意味、それが戻ってくる 正のint型ですが、そのような何か 207 00:10:41,540 --> 00:10:42,160 存在しません。 208 00:10:42,160 --> 00:10:45,280 私たちは、データ間のことを見ていませんでした タイプので、我々は対処しなければならない 209 00:10:45,280 --> 00:10:47,170 我々は非常にいくつか持っているという事実 データ型は、で動作するように。 210 00:10:47,170 --> 00:10:50,360 しかし、我々は単にint型とを返すことができます それが肯定されることを信頼しています。 211 00:10:50,360 --> 00:10:52,690 それは呼ばれるようになるだろう 正の整数を取得します。 212 00:10:52,690 --> 00:10:55,122 >> そして今、どのように、その引数はどうでしょうか? 213 00:10:55,122 --> 00:10:56,440 それは、任意の入力がかかりますか? 214 00:10:56,440 --> 00:10:58,280 それは、任意の入力を必要としていますか? 215 00:10:58,280 --> 00:11:00,900 だから、知っている必要はありません 事前に何でもした。 216 00:11:00,900 --> 00:11:03,220 文字列は、int型はしない取得していません入手してください。 217 00:11:03,220 --> 00:11:06,430 printfを行う - それはいくつかを持っている必要が 入力は、それに渡された - と印刷名 218 00:11:06,430 --> 00:11:09,020 いくつかの入力を必要としますが、取得 正のint型にはありません。 219 00:11:09,020 --> 00:11:11,530 だから私は、明示的に行くよ コンパイラはvoidを教えてください。 220 00:11:11,530 --> 00:11:13,470 ボイドが何かの欠如である。 221 00:11:13,470 --> 00:11:17,990 だからボイド意味は何も内部で起こっていません これらの括弧、セミコロン。 222 00:11:17,990 --> 00:11:20,840 >> そして今、私のファイルの下部にある - と 再び、私は肛門のちょうどというようなものだ 223 00:11:20,840 --> 00:11:23,640 ここで上部のメインを入れて、どの お勧めは、この方法であるためです。 224 00:11:23,640 --> 00:11:26,220 あなたや他の誰かでも あなたのファイルを開き、 225 00:11:26,220 --> 00:11:27,400 機能はすぐそこです。 226 00:11:27,400 --> 00:11:29,660 あなたは、振り出しからに潜ることができる。 227 00:11:29,660 --> 00:11:34,190 だから今、私は、これを複製するつもりです 正のint型はvoidを得るが、私はないんだけど 228 00:11:34,190 --> 00:11:35,430 今セミコロンを打つつもり。 229 00:11:35,430 --> 00:11:38,280 私は、中括弧を開くつもりです そして今私は借りる必要 230 00:11:38,280 --> 00:11:39,700 月曜日からいくつかのアイデア。 231 00:11:39,700 --> 00:11:44,450 >> ご存知のように、我々は何かをした 次のことをしながら行うように 232 00:11:44,450 --> 00:11:45,830 何かが本当だった。 233 00:11:45,830 --> 00:11:46,630 そして、私は何をしましたか? 234 00:11:46,630 --> 00:11:51,540 私が与えるようなものをやった 私を正の整数、 235 00:11:51,540 --> 00:11:52,430 プロンプトを少し。 236 00:11:52,430 --> 00:11:53,540 私が好きな言葉を使用することができます。 237 00:11:53,540 --> 00:11:54,960 そして私は何を使用? 238 00:11:54,960 --> 00:11:59,530 int型のnは、int型の取得に等しい それへの引数はない。 239 00:11:59,530 --> 00:12:00,550 >> と違いに気付く。 240 00:12:00,550 --> 00:12:04,680 あなたが使用するときには、関数を呼び出すときに この関数は、あなたが空間に入れていません。 241 00:12:04,680 --> 00:12:08,570 宣言するときは、そのを行う 機能、コンパイラを教えて何 242 00:12:08,570 --> 00:12:09,780 それは期待するべきである。 243 00:12:09,780 --> 00:12:11,650 だから、配置する必要はありません そこに自分自身を失う。 244 00:12:11,650 --> 00:12:12,940 >> そして今、私の条件何でしたか? 245 00:12:12,940 --> 00:12:19,670 さて、nは、正と等しくない それはただの擬似コードだ。 246 00:12:19,670 --> 00:12:22,530 だから私は、もっときれいに、これをどのように表現するのですか? 247 00:12:22,530 --> 00:12:24,090 そうゼロ以下。 248 00:12:24,090 --> 00:12:26,250 だから、もう一度、あなたが行うことができます気付く より小さいか等しい。 249 00:12:26,250 --> 00:12:28,100 それは独立した2のにもかかわらず シンボルは、あなたはそれを行うことができます 250 00:12:28,100 --> 00:12:29,350 など、あなたのキーボード。 251 00:12:29,350 --> 00:12:33,950 >> しかし、そのバグはまだあり 私も最後の時間を台無しに。 252 00:12:33,950 --> 00:12:36,950 私は宣言する必要があります - 253 00:12:36,950 --> 00:12:37,460 まさに。 254 00:12:37,460 --> 00:12:39,640 私は外で宣言する必要がn個 ループの。 255 00:12:39,640 --> 00:12:44,180 だから私はここにnを配置する必要がありますし、私はしないでください ここでそれを再宣言したい 256 00:12:44,180 --> 00:12:46,480 私は、新しい変数を取得しないように。 257 00:12:46,480 --> 00:12:48,860 私はちょうどここに値を割り当てる。 258 00:12:48,860 --> 00:12:54,320 >> そして今、私はかなりここで行っていないよ。 259 00:12:54,320 --> 00:12:57,290 私は先に自分の取得してみましょう と私は終わりだふり。 260 00:12:57,290 --> 00:13:01,220 肯定的なことを確認し、今 新しいエラーがあります。 261 00:13:01,220 --> 00:13:04,550 コントロールは、端部に達する void以外の機能。 262 00:13:04,550 --> 00:13:07,760 新しいエラーメッセージだから、しかし、もしあなたの種類 言葉のそれぞれを離れていじめる、それの 263 00:13:07,760 --> 00:13:09,620 おそらく間違っているかでヒント。 264 00:13:09,620 --> 00:13:11,240 >> コントロール。 265 00:13:11,240 --> 00:13:14,250 制御はちょうど順序に意味 プログラムでの操作の。 266 00:13:14,250 --> 00:13:16,510 コンピュータのコントロールでと 何かが間違っていた。 267 00:13:16,510 --> 00:13:18,510 だからの最後に達する void以外の機能。 268 00:13:18,510 --> 00:13:21,760 それは明らかに何関数です を参照する? 269 00:13:21,760 --> 00:13:24,790 void以外何関数です? 270 00:13:24,790 --> 00:13:27,400 だから正int型を取得し、少し そのウェル内に混乱、 271 00:13:27,400 --> 00:13:29,010 それは空間のようなものだ。 272 00:13:29,010 --> 00:13:33,070 それは、そのための空間の仕様を持っている 引数が、その出力がために起こっている 273 00:13:33,070 --> 00:13:34,540 タイプnのこと。 274 00:13:34,540 --> 00:13:37,260 だから左の言葉です いわゆる戻り値の型。 275 00:13:37,260 --> 00:13:40,320 ここで内部の言葉です ゼロ個以上の引数 276 00:13:40,320 --> 00:13:41,970 という関数がかかります。 277 00:13:41,970 --> 00:13:44,060 >> だから私は何をすべきかが必要なのでしょうか? 278 00:13:44,060 --> 00:13:47,650 私のコードでは、この点を、21行目で 今、私はある点滅プロンプト 279 00:13:47,650 --> 00:13:51,430 正のint型の内側を持っている Nと呼ばれる変数の。 280 00:13:51,430 --> 00:13:55,200 どのように私はメインに戻ってそれを与えるか? 281 00:13:55,200 --> 00:13:55,960 文字通り。 282 00:13:55,960 --> 00:13:59,320 n個のセミコロンを返します。 283 00:13:59,320 --> 00:14:04,090 >> だから同じようにコルトンの一部を返す ドロップして、私に答えた紙 284 00:14:04,090 --> 00:14:07,020 小さな黒いでその紙切れ でそれを行うためのテーブルの上の箱、 285 00:14:07,020 --> 00:14:10,100 コー​​ドには、文字通り戻り、書き込み nと、しかしコルトンあったように、それはだ 286 00:14:10,100 --> 00:14:12,140 私に何か物理的なバックを渡す。 287 00:14:12,140 --> 00:14:15,870 このケースでは、何が起こって取得することです 正の整数は、手の甲に起こっている 288 00:14:15,870 --> 00:14:19,220 おそらく正何 誰に整数? 289 00:14:19,220 --> 00:14:21,380 その値はどこに終わるのでしょうか? 290 00:14:21,380 --> 00:14:29,080 つまり、この変数にn個を終了し、 次に我々はライン9に進みます。 291 00:14:29,080 --> 00:14:31,920 >> だから、他の言葉で、の順に 操作は、このプログラムが開始 292 00:14:31,920 --> 00:14:34,430 、実行、コンパイラが実現 ああ、あなたはライブラリをしたいですか? 293 00:14:34,430 --> 00:14:36,310 私はその内部のどんなグラブを手放す。 294 00:14:36,310 --> 00:14:37,750 ああ、あなたは標準IO​​ライブラリをしたいですか? 295 00:14:37,750 --> 00:14:39,660 私はその内部のどんなグラブを手放す。 296 00:14:39,660 --> 00:14:44,510 コンパイラは、自分自身に何を言うん それはライン4に当たったとき? 297 00:14:44,510 --> 00:14:47,980 ああ、あなたは実装することを約束 この関数は、正の取得と呼ばれますが、 298 00:14:47,980 --> 00:14:50,820 我々は、後でそれに戻りましょう これらの線に沿って何か。 299 00:14:50,820 --> 00:14:53,450 >> int型メインボイドがちょうどここにあることを意味 私のプログラムの根性。 300 00:14:53,450 --> 00:14:54,990 ライン7は単なる中カッコです。 301 00:14:54,990 --> 00:14:59,540 ライン8は与える、左側に言っている 整数のための私の32ビットは、それはnを呼び出す。 302 00:14:59,540 --> 00:15:02,160 右側には、周辺 正の整数を得ると言う。 303 00:15:02,160 --> 00:15:07,120 今ので今休止その話てみましょう 私はカーソルを下に移動し保管しない。 304 00:15:07,120 --> 00:15:11,720 私のカーソルが今ここにダウンした理由 今正int型が実行得る。 305 00:15:11,720 --> 00:15:13,100 int型のnが宣言されています。 306 00:15:13,100 --> 00:15:14,040 次の手順を実行します。 307 00:15:14,040 --> 00:15:16,090 printfの私に正の整数を与えます。 308 00:15:16,090 --> 00:15:19,740 >> はnに格納し、ユーザからの整数を取得 と、おそらく何度も何度もこれを行う。 309 00:15:19,740 --> 00:15:23,010 このループは、このコードは可能性があることを意味 再びこのようなセットアップ実行し、ダウン 310 00:15:23,010 --> 00:15:25,810 そして再び、しかし時ようやくユーザー 協力して、私達に正を与える 311 00:15:25,810 --> 00:15:31,750 int型、私はその時点で、21行目にヒット 番号は返還し、どちらさ 312 00:15:31,750 --> 00:15:34,280 私は今、強調する必要がありますか? 313 00:15:34,280 --> 00:15:35,070 ナイン。 314 00:15:35,070 --> 00:15:39,010 制御、いわば、返品 行9へ。 315 00:15:39,010 --> 00:15:40,650 担当して今のラインがそれだ。 316 00:15:40,650 --> 00:15:43,250 >> だからすべてが起こってきているものだ ボンネットの下に、この時間が、 317 00:15:43,250 --> 00:15:46,480 私たちは、printfのような関数を使用してきましたとき あるいは他の誰か、その文字列を取得する 318 00:15:46,480 --> 00:15:50,600 制御が渡されていた、あなたのために書いた オフに他人のコード行 319 00:15:50,600 --> 00:15:51,290 行ずつで。 320 00:15:51,290 --> 00:15:53,770 それはちょうど我々はそれと我々を見ることができなかっただ 本当にこれでそれを描くことができなかった 321 00:15:53,770 --> 00:15:57,620 プログラムには、いくつかの他のだから ハードドライブ上のファイル 322 00:15:57,620 --> 00:16:00,000 私たちに知られていない。 323 00:16:00,000 --> 00:16:02,100 だから、実際にコンパイルしてみましょう そして今、これを実行してください。 324 00:16:02,100 --> 00:16:03,890 >> 肯定的なことを確認します。 325 00:16:03,890 --> 00:16:05,260 コンパイル、進歩だ。 326 00:16:05,260 --> 00:16:06,650 。/ポジティブ。 327 00:16:06,650 --> 00:16:08,020 私に正の整数を与える。 328 00:16:08,020 --> 00:16:08,800 難しいかもましょう。 329 00:16:08,800 --> 00:16:10,430 1負。 330 00:16:10,430 --> 00:16:11,360 ゼロ。 331 00:16:11,360 --> 00:16:13,370 それに50を与えてみましょう。 332 00:16:13,370 --> 00:16:18,100 50のおかげで、とに制御 今戻ってきた。 333 00:16:18,100 --> 00:16:21,750 どの質問でも、その後、その上に? 334 00:16:21,750 --> 00:16:23,180 うん? 335 00:16:23,180 --> 00:16:25,630 >> [聞こえない]。 336 00:16:25,630 --> 00:16:26,130 >> もう一度言う。 337 00:16:26,130 --> 00:16:27,860 ああ、良い質問。 338 00:16:27,860 --> 00:16:31,100 だから、ここで並列に気づくかもしれない 私は上の角を切断するようなものだ。 339 00:16:31,100 --> 00:16:35,420 12行目では、私が言っている、肯定的なint型を得る しかし、その同じことで、intを返します 340 00:16:35,420 --> 00:16:39,660 ロジックは、今という点で理にかなっている ライン6は、私が言っていることを主な戻り 341 00:16:39,660 --> 00:16:44,040 int型ですが、私たちは決して持っている 我々のプログラムのいずれかで持っていた? 342 00:16:44,040 --> 00:16:46,470 我々の言及があったことがない このキーワードリターン。 343 00:16:46,470 --> 00:16:49,970 >> だから、少なくとも、C言語でそれが判明 私たちが使用しているそれのバージョン 344 00:16:49,970 --> 00:16:55,750 、技術的には、1999年にこれがされて作られた 自動的に起こって。 345 00:16:55,750 --> 00:16:59,300 いつでもあなたは、プログラムを実装して、 、主と呼ばれる機能を実装 346 00:16:59,300 --> 00:17:04,230 その関数は、でゼロを返します あなたがそうでなければ言うことはありません場合は、デフォルト、 347 00:17:04,230 --> 00:17:05,849 そしてゼロはただの慣習です。 348 00:17:05,849 --> 00:17:09,430 世界はそれによって、ゼロを返します。 すべてが順調であることを示す、 349 00:17:09,430 --> 00:17:13,040 効果的に私たちを残して40億 行くことが可能なもの 350 00:17:13,040 --> 00:17:17,530 間違ったように、我々は1を返す場合、その このことを意味するコードを意味するかもしれない 351 00:17:17,530 --> 00:17:18,310 事は間違っていた。 352 00:17:18,310 --> 00:17:20,589 私たちはつまり、2を返すことができます この他の事は間違っていた。 353 00:17:20,589 --> 00:17:23,440 我々は、40億を返す可能性がある この他の事が間違っていたことを意味します。 354 00:17:23,440 --> 00:17:27,170 >> そして、あなたは今あなた自身の考えてみれば PCやMac、あなたは思い出すかもしれない 355 00:17:27,170 --> 00:17:29,610 ときには不可解なエラーメッセージを取得 あなたがしていることをソフトウェアからの 356 00:17:29,610 --> 00:17:32,650 使用していて、時にはそれが人間を持っている わかりやすい説明が、そこだ 357 00:17:32,650 --> 00:17:35,265 しばしばコードまたは番号 画面上に? 358 00:17:35,265 --> 00:17:37,800 これは心に来ていない場合は、 ちょうどそれのために目を光らせる。 359 00:17:37,800 --> 00:17:40,790 それは一般的に何これら コー​​ドを参照している。 360 00:17:40,790 --> 00:17:44,200 彼らは、Microsoft Wordに含まれていると 他のプログラムその場合は、ファイルという 361 00:17:44,200 --> 00:17:48,850 会社とのバグレポートには、次のことができます それらを教えて、ああ、私はエラー番号45を得た。 362 00:17:48,850 --> 00:17:51,750 会社に戻ってそして、いくつかのプログラマ 彼または彼女のことを調べることができます 363 00:17:51,750 --> 00:17:54,940 コー​​ドとああ、言う、私が作ったからだ このバグとだからこそユーザー 364 00:17:54,940 --> 00:17:56,240 このメッセージが表示されました。 365 00:17:56,240 --> 00:17:59,490 >> しかし、率直に言って、それはほんの少しだ 邪魔とは少し退屈 366 00:17:59,490 --> 00:18:02,130 少なくとも我々には、そのを締結 最初のいくつかのプログラムは、我々はしましたので、 367 00:18:02,130 --> 00:18:02,970 それを省いてき。 368 00:18:02,970 --> 00:18:07,450 しかし、このすべての時間あなたの一人一人 主が密かにこれを持っていた機能 369 00:18:07,450 --> 00:18:11,600 ラインは自動的にあなたのために追加された 単に慣例によりコンパイラに 370 00:18:11,600 --> 00:18:13,172 あなたにいくつかの時間を節約できます。 371 00:18:13,172 --> 00:18:14,620 >> [聞こえない]。 372 00:18:14,620 --> 00:18:16,250 >> あなたがメインでそれを含める必要はありません。 373 00:18:16,250 --> 00:18:16,700 それは大丈夫です。 374 00:18:16,700 --> 00:18:20,260 あなたがいた場合、それを含める必要がない このような機能を実現する。 375 00:18:20,260 --> 00:18:22,850 フラットさもなければ機能 うまくいかないであろう。 376 00:18:22,850 --> 00:18:24,480 しかし、主に、それは必要ありません。 377 00:18:24,480 --> 00:18:28,450 週または2つでは、取得を開始します その癖にかつて我々は開始したい 378 00:18:28,450 --> 00:18:29,690 エラーを意味する。 379 00:18:29,690 --> 00:18:32,550 質問本当に良い。 380 00:18:32,550 --> 00:18:36,880 >> のことを言及するので、迅速口頭ブレーク 今週の金曜日、私たちは昼食を持ってされることはありません 381 00:18:36,880 --> 00:18:39,980 と自体が、私たちは夕食を食べていることでしょう 学生やスタッフの一部。 382 00:18:39,980 --> 00:18:42,940 あなたは私たちに参加したい場合は、感じる cs50.net/rsvpに行く場合、無料です。 383 00:18:42,940 --> 00:18:45,030 今週の金曜日午後6時。 384 00:18:45,030 --> 00:18:47,990 スペースは、いつものように、限られているが、我々はよ 近くでこれらをやっていき 385 00:18:47,990 --> 00:18:51,420 スペースあれば毎週 今週なくなる。 386 00:18:51,420 --> 00:18:56,160 >> だから我々はオフに左という接戦 月曜日は、文字列が実際にすることができました 387 00:18:56,160 --> 00:19:00,520 ただあなたを意味する、にインデックスを作成する 、最初の文字を取得することができます 388 00:19:00,520 --> 00:19:03,770 二文字、三文字 など、あなたは可能性があるため 389 00:19:03,770 --> 00:19:07,860 効果のように、文字列を考える この場合は5にあるように、ハロー 390 00:19:07,860 --> 00:19:09,670 箱の内側に文字。 391 00:19:09,670 --> 00:19:13,370 そして、あなたはそれらのそれぞれで取得することができます 我々が何をしたかの構文を使用してボックス 392 00:19:13,370 --> 00:19:15,230 月曜日に紹介? 393 00:19:15,230 --> 00:19:16,760 それらの角括弧 キーボードの。 394 00:19:16,760 --> 00:19:18,980 それはちょうど場所ゼロに行く意味。 395 00:19:18,980 --> 00:19:22,840 >> 我々はゼロからカウントを開始しますので、ブラケット ゼロ時間、ブラケットいずれかを意味する 396 00:19:22,840 --> 00:19:25,170 など、電子を意味します。 397 00:19:25,170 --> 00:19:28,490 我々がしてきたので、すべての時間 "こんにちは"の文字列を使用して入力する 398 00:19:28,490 --> 00:19:31,250 と "世界"と他のものに 画面は、それが記憶されている 399 00:19:31,250 --> 00:19:32,820 このような箱である。 400 00:19:32,820 --> 00:19:33,370 と推測を取る。 401 00:19:33,370 --> 00:19:37,470 各ボックスには、物理​​的に何を表している お使いのコンピュータの内側? 402 00:19:37,470 --> 00:19:38,250 >> [聞こえない]。 403 00:19:38,250 --> 00:19:39,150 >> 申し訳ありませんが? 404 00:19:39,150 --> 00:19:39,580 >> 文字。 405 00:19:39,580 --> 00:19:44,760 >> 確かにケース内の文字は、そう 文字列の、文字だけである 406 00:19:44,760 --> 00:19:46,800 8ビットまたは1バイト。 407 00:19:46,800 --> 00:19:49,550 だから、あなたはおそらく、少なくとも漠然とです あなたのその事実を熟知 408 00:19:49,550 --> 00:19:50,500 コンピュータメモリを有する。 409 00:19:50,500 --> 00:19:52,110 それは2種類のメモリ少なくともを持っています。 410 00:19:52,110 --> 00:19:54,810 一つは、あなたが保存ハードディスクです 恒久的に詰め込むと、そのう 411 00:19:54,810 --> 00:19:57,400 あなたは映画を持つことができるので、一般的に大きな や音楽など。 412 00:19:57,400 --> 00:20:04,010 >> 次に、メモリの別のタイプを持ってい ランダムアクセス、R-A-M、RAMと呼ばれる 413 00:20:04,010 --> 00:20:07,510 メモリと、このメモリの一種である お使いのコンピュータがある場合に使用されている 414 00:20:07,510 --> 00:20:11,520 実行しますが、力を失うか、あなたの場合 バッテリーダイス、保存されている何 415 00:20:11,520 --> 00:20:15,300 電源を失った場合、RAMに消える そうではありませんので、完全に 416 00:20:15,300 --> 00:20:16,060 しつこい。 417 00:20:16,060 --> 00:20:19,120 通常は、これらの日、持っている それのギグ、多分それ以上の2ギグ、。 418 00:20:19,120 --> 00:20:23,490 RAMの利点は、それがはるか​​にあるということです ハードディスクよりもはるかに、はるかに高速 419 00:20:23,490 --> 00:20:27,390 あるいは固体状態は、これらの日のドライブ しかし、それは一般的に高価ですので、 420 00:20:27,390 --> 00:20:28,480 あなたはそれの少ないを持っている。 421 00:20:28,480 --> 00:20:32,400 >> だから、今日の会話は本当に指し RAM、メモリの種類と 422 00:20:32,400 --> 00:20:35,270 パワーがある間だけ存在します お使いのコンピュータに供給される。 423 00:20:35,270 --> 00:20:40,530 だから、H-E-L-L-Oを入力すると、上でEnter キーボード、Hは一つになるだろう 424 00:20:40,530 --> 00:20:44,550 RAMのバイトは、Eがで起こっている であるように、RAMの別のバイト、 425 00:20:44,550 --> 00:20:45,800 単語の残りの部分。 426 00:20:45,800 --> 00:20:49,010 だから我々ができました何思い出す 最後の時間を行うことは、このでした。 427 00:20:49,010 --> 00:20:53,940 私が先に行くと、ファイルを開くましょう 我々はstring.cと呼ばれ、思い出すこと 428 00:20:53,940 --> 00:20:56,860 それが少し見えた このような何か。 429 00:20:56,860 --> 00:20:59,860 私が実際にロールバックして変更しましょう それは、それはのように見えたかを正確に 430 00:20:59,860 --> 00:21:02,654 Sの文字列の長さ。 431 00:21:02,654 --> 00:21:04,560 >> だからここにプログラムを見てください。 432 00:21:04,560 --> 00:21:08,530 我々はそうCS50ライブラリを含める 私たちは、文字列を取得使用することができます。 433 00:21:08,530 --> 00:21:11,400 我々は標準io.hのを含める ので、printfを使用することができます。 434 00:21:11,400 --> 00:21:13,580 なぜ我々はstring.hでインクルードしましたか? 435 00:21:13,580 --> 00:21:16,980 これは月曜日に新しいものでした。 436 00:21:16,980 --> 00:21:18,230 だから我々は、文字列の長さを求めていました。 437 00:21:18,230 --> 00:21:19,090 strのレン。 438 00:21:19,090 --> 00:21:21,470 人々は、数年前に決定した ただ簡潔になるみましょう。 439 00:21:21,470 --> 00:21:24,290 その代わりに、 "文字列の長さ、"呼び出しの それは "STRレン"と呼ぶとさせてみましょう 440 00:21:24,290 --> 00:21:28,540 世界フィギュア出ている、などの 我々はstring.hでとへのアクセスを得るもの。 441 00:21:28,540 --> 00:21:29,390 >> これはよく知られている。 442 00:21:29,390 --> 00:21:30,320 これはよく知られている。 443 00:21:30,320 --> 00:21:31,450 これはよく知られている。 444 00:21:31,450 --> 00:21:32,370 これは少し新しいです。 445 00:21:32,370 --> 00:21:35,420 22行目で - 私たちは戻ってくる これまでが、今知っているために - 446 00:21:35,420 --> 00:21:37,880 とだけ持っていることから、これを知っているだろう ドキュメントを読む場合や、 447 00:21:37,880 --> 00:21:39,010 すでにCを知っていた - 448 00:21:39,010 --> 00:21:41,510 文字列は時々台無しにすることができ得る。 449 00:21:41,510 --> 00:21:45,130 ユーザーが本当に敵対である場合、または 非協力的な彼または彼女だけ 450 00:21:45,130 --> 00:21:49,450 キーボードで何も入力しない場合、または キーボードでそんなに種類その 451 00:21:49,450 --> 00:21:53,760 それは、コンピュータのメモリを圧倒 理論的には、文字列を返す可能性があり得る 452 00:21:53,760 --> 00:21:56,270 以外のもの 文字列。 453 00:21:56,270 --> 00:22:01,930 それはと呼ばれる特別な値を返すことができます すべて大文字、N-U-L-L、これはNULLである 454 00:22:01,930 --> 00:22:03,390 ただ、いわゆるセンチネル値。 455 00:22:03,390 --> 00:22:08,010 それは意味特殊な値です 何か悪いことは、このケースで起こった。 456 00:22:08,010 --> 00:22:10,520 それは文字列がないことである。 457 00:22:10,520 --> 00:22:16,190 >> だから、私は単純に、そのためにチェックしているヌル 長い話を短く、strのレンと 458 00:22:16,190 --> 00:22:20,230 Cに付属の他の機能であれば 彼らは文字列を期待していますが、それらを渡す 459 00:22:20,230 --> 00:22:23,630 渡す場合は、文字列が存在しない場合、 それらNULL、コンピュータまたはプログラム 460 00:22:23,630 --> 00:22:25,000 ただあからさまなクラッシュしてしまいます。 461 00:22:25,000 --> 00:22:25,610 これはハングします。 462 00:22:25,610 --> 00:22:27,250 これは、いくつかのエラーメッセージをスローします。 463 00:22:27,250 --> 00:22:28,690 悪いことが起こるでしょう。 464 00:22:28,690 --> 00:22:31,130 だから、これはまだであっても よく定義されていません - 465 00:22:31,130 --> 00:22:33,730 この一週間でより多くの意味をなさないでしょうか 二人は - 22行目では、これはただです 466 00:22:33,730 --> 00:22:38,790 自己防御的なエラーチェックの例 念のため1時間のうち 467 00:22:38,790 --> 00:22:42,040 百何かで、うまくいかない 少なくとも私のプログラムがクラッシュすることはありません。 468 00:22:42,040 --> 00:22:45,960 >> sが何か悪いことに等しいしないのであれば、 私はループで、このを持っており、これがあった 469 00:22:45,960 --> 00:22:47,710 我々は他のを持っていたところ 構文の新しい部分。 470 00:22:47,710 --> 00:22:51,580 私はから反復ループのために持っている ゼロsの長さまでに。 471 00:22:51,580 --> 00:22:56,140 そしてここで、私はSプリントアウトだった ブラケット私が、なぜ私はすべての%cを使用しました 472 00:22:56,140 --> 00:23:00,770 代わりに%sの突然のさえ sが文字列ですが? 473 00:23:00,770 --> 00:23:02,110 それは右、文字の? 474 00:23:02,110 --> 00:23:06,560 Sは、文字列ですが、Sブラケット何か iがゼロであるのブラケットI 475 00:23:06,560 --> 00:23:10,380 個々の1つまたは2つ 文字列内の文字などのために 476 00:23:10,380 --> 00:23:14,970 printfのことを知らされる必要があること、 それは確かに期待する文字です。 477 00:23:14,970 --> 00:23:18,096 >> そして、これをやった、思い出す プログラムは、実際に行う? 478 00:23:18,096 --> 00:23:19,848 >> 列でそれをプリントアウト。 479 00:23:19,848 --> 00:23:21,120 >> うん、まさに。 480 00:23:21,120 --> 00:23:24,990 それはちょうど私が入力した単語を印刷 列、1行に1つの文字。 481 00:23:24,990 --> 00:23:26,190 だから、もう一度これを見てみましょう。 482 00:23:26,190 --> 00:23:27,810 だから文字列を作る。 483 00:23:27,810 --> 00:23:30,200 [OK]をコンパイル。 。/文字列。 484 00:23:30,200 --> 00:23:35,560 私はH-E-L-L-Oを入力しましょう​​、と入力し、 確かに私は、1行に1つずつそれを得る。 485 00:23:35,560 --> 00:23:37,280 >> だから私はここに1の最適化を行うことができます。 486 00:23:37,280 --> 00:23:40,240 あなたは、特に場合は、考えてみれば あなたが前にプログラムしましたが、そこ 487 00:23:40,240 --> 00:23:43,340 24行目で間違いなく非効率。 488 00:23:43,340 --> 00:23:46,160 換言すれば、必ずしもではない 最高のデザイン。 489 00:23:46,160 --> 00:23:50,200 少なくともあなた一回、簡単な STRレンが何であるかを覚えて、それはだ 490 00:23:50,200 --> 00:23:52,640 潜在的にダムに何かをやって。 491 00:23:52,640 --> 00:23:54,863 それは何でしょうか? 492 00:23:54,863 --> 00:23:56,280 >> [聞こえない]。 493 00:23:56,280 --> 00:23:56,800 >> まさに。 494 00:23:56,800 --> 00:24:00,340 これは、sの長さをチェックしている 一つ一つの時間にもかかわらず、 495 00:24:00,340 --> 00:24:02,980 H-E-L-L-Oは常に起こっている 5文字であることが。 496 00:24:02,980 --> 00:24:05,490 このループを通過するたびに、 5は変化していません。 497 00:24:05,490 --> 00:24:08,750 私は、私をインクリメントするが、何かもしれません すべての上のsの長さである 498 00:24:08,750 --> 00:24:09,690 このループの繰り返し? 499 00:24:09,690 --> 00:24:15,810 それは5、それは、それは5だ、5だと まだ私はそれにもかかわらず、これをお願いしております 500 00:24:15,810 --> 00:24:18,320 何度も何度も何度も質問。 501 00:24:18,320 --> 00:24:20,750 今、率直に言って、コンピュータはそういまいましいです 速い、誰も気づかつもりないだ 502 00:24:20,750 --> 00:24:23,780 この場合の差が、これらの種類 貧弱な設計上の決定ができ​​ます 503 00:24:23,780 --> 00:24:28,330 コンパイラ自体があれば加算を開始 あなたのためにこれを修正しようとしない 504 00:24:28,330 --> 00:24:30,630 それは典型的には、ないでしょう アプライアンスには少なくとも。 505 00:24:30,630 --> 00:24:31,540 >> だから私はこれを行うつもりです。 506 00:24:31,540 --> 00:24:34,580 私の後にコンマを追加するつもりだ 私の最初の変数は、私。 507 00:24:34,580 --> 00:24:37,310 私は自分自身の別のものを与えるつもりだ だけで、それを呼び出して変数n、 508 00:24:37,310 --> 00:24:41,330 番号の規則、そして私は私 文字列の値をnに割り当てるつもり 509 00:24:41,330 --> 00:24:42,530 sの長さ。 510 00:24:42,530 --> 00:24:46,060 そして私は変更するつもりです 私の条件はどのようなことですか? 511 00:24:46,060 --> 00:24:51,960 私は自分の状態を変更するつもりです iがn未満であるときである。 512 00:24:51,960 --> 00:24:55,700 >> だから今、私は何回午前 sの長さをチェック? 513 00:24:55,700 --> 00:25:00,110 一度、それは私に対してチェックすることもOKです nは、何度も何度もそれらの今理由 514 00:25:00,110 --> 00:25:03,170 値は、実際には変更しない。 515 00:25:03,170 --> 00:25:06,020 さて、今のところ、ただ知っているあなたでも 関数を呼び出す、のビットがあり 516 00:25:06,020 --> 00:25:09,930 オーバーヘッドではなく、あなたを落胆するのに十分 本当に今までの関数を使用してからではなく、 517 00:25:09,930 --> 00:25:12,750 確かにコードの行があるとき そのような - とラインが得られます 518 00:25:12,750 --> 00:25:15,490 長い前にもっと面白い - どこ 私はあれば考える機会が、あり 519 00:25:15,490 --> 00:25:18,320 このコードを入力し、どのように多くの それは回を実行します? 520 00:25:18,320 --> 00:25:20,950 あなたが時間をかけて見ることから始めましょう あなたのプログラムのパフォーマンスができます 521 00:25:20,950 --> 00:25:21,660 確かに変更します。 522 00:25:21,660 --> 00:25:24,110 >> 実際には、問題の一つは、我々が設定した 過去伴う年間に行わ 523 00:25:24,110 --> 00:25:27,600 あなたから思い出す可能性があるので、実装 週ゼロ、スペルチェッカーが、 524 00:25:27,600 --> 00:25:31,380 サポートするように設計されてチェッカーを綴る 150,000辞書プラス 525 00:25:31,380 --> 00:25:32,860 我々は君たちを与えた言葉。 526 00:25:32,860 --> 00:25:37,100 あなたはその負荷のコードを記述しなければならないでしょう RAMにそれらの単語なので、中に 527 00:25:37,100 --> 00:25:40,700 我々のようなボックスが画面上に瞬間を見た あなたのように前にしてから、できるだけ速く 528 00:25:40,700 --> 00:25:43,740 ことができ、あなたは答えることができるようにする必要があります フォームの問題は、この言葉です 529 00:25:43,740 --> 00:25:44,280 スペルミス? 530 00:25:44,280 --> 00:25:45,420 この言葉は間違っている? 531 00:25:45,420 --> 00:25:46,770 この言葉は間違っている? 532 00:25:46,770 --> 00:25:49,525 >> そして、我々はしたのかそのような何かで 過去数年間に行われ、それがになっている 533 00:25:49,525 --> 00:25:53,500 オプトインオプションベースではあるが、 一種の競争、それによって 534 00:25:53,500 --> 00:25:59,470 少ないRAMとあまり使う学生 時間、より少ないCPUサイクルは、結局 535 00:25:59,470 --> 00:26:02,640 少しの頂上までバブリング リーダーボードや、我々は上に置くことをランキング 536 00:26:02,640 --> 00:26:04,770 私たちがしたように当然のホームページ 過去数年間に行わ。 537 00:26:04,770 --> 00:26:08,100 だから、再び、全く任意ですが、この 設計の機会に話す 538 00:26:08,100 --> 00:26:11,250 一度先に我々はスタートであること これらのいくつかの上に建物 539 00:26:11,250 --> 00:26:14,010 基本的なビルディング·ブロック。 540 00:26:14,010 --> 00:26:16,780 >> だから私は、この図に戻ってみましょう ほんの一瞬、少しを明らか 541 00:26:16,780 --> 00:26:17,610 もっと何か。 542 00:26:17,610 --> 00:26:21,400 これは確かに文字列であり、我々は、撮影した いくつかのライブラリの利点、 543 00:26:21,400 --> 00:26:25,150 持つ標準io.hの - 544 00:26:25,150 --> 00:26:26,110 >> printfの。 545 00:26:26,110 --> 00:26:27,860 >> printfは、他のものの間で。 546 00:26:27,860 --> 00:26:31,540 int型を取得し、文字列を取得しているcs50.h、 など、string.hで、どの 547 00:26:31,540 --> 00:26:32,570 strのレンを持っていた。 548 00:26:32,570 --> 00:26:34,800 さらに別のそこうちしかし、それは変わります。 549 00:26:34,800 --> 00:26:38,540 率直に言って、たくさんの、ヘッダがたくさんあり 関数を宣言するファイル 550 00:26:38,540 --> 00:26:43,320 ライブラリで、これctype.hです 実際に幾分になるだろう 551 00:26:43,320 --> 00:26:46,900 私は行くよので有利 先に行くと1を実装する 552 00:26:46,900 --> 00:26:48,120 ここに他のプログラム。 553 00:26:48,120 --> 00:26:52,420 >> 私が先に行くと何かを開いてみましょう 私はと呼ばれる、事前に書いた 554 00:26:52,420 --> 00:26:55,750 capitalize.c、とのは、みましょう どのようにこの作品を見て。 555 00:26:55,750 --> 00:27:00,340 私は、このバージョンでは、使用していることに注意してください それを、3おなじみのファイル。 556 00:27:00,340 --> 00:27:04,110 18行目では、私がいることに注意してください テキストの行を取得する。 557 00:27:04,110 --> 00:27:07,660 21行目に注意、私はそれを主張しています 次のコードは、に起こっている 558 00:27:07,660 --> 00:27:12,170 ユーザが入力したものは何でも、Sを大文字 で、どのように私はそれをやっている? 559 00:27:12,170 --> 00:27:13,300 まあ、私は取っている - 560 00:27:13,300 --> 00:27:14,750 前回から学んだ教訓 - 561 00:27:14,750 --> 00:27:18,370 私は私とnを宣言し、反復している 文字列内の文字の上に。 562 00:27:18,370 --> 00:27:22,720 その後のこのブロックは何ですか 〜27行24のコード 563 00:27:22,720 --> 00:27:24,550 普通の言葉で何を? 564 00:27:24,550 --> 00:27:27,766 565 00:27:27,766 --> 00:27:29,730 >> 背中の文字を小文字の。 566 00:27:29,730 --> 00:27:30,430 >> まさに。 567 00:27:30,430 --> 00:27:35,920 もしSブラケットI - もしそうであれば、i番目 固有であるSの文字、 568 00:27:35,920 --> 00:27:40,220 文字列のchar、より大きい または同等の小文字とする - 569 00:27:40,220 --> 00:27:42,670 その二重アンパサンドを思い出す 意味すると - 570 00:27:42,670 --> 00:27:46,810 と同じ文字、Sブラケットiが、ある より小さいか等しいzは小文字に、 571 00:27:46,810 --> 00:27:50,600 それはaまたはbまたはcまたはであることを意味している ドット、ドット、ドット、またはzの手段、 572 00:27:50,600 --> 00:27:51,340 それは小文字です。 573 00:27:51,340 --> 00:27:52,900 私は、そのような場合に何をすべきかをしたいですか? 574 00:27:52,900 --> 00:27:55,010 まあ、私は若干これを行うことができます ひそかが、 575 00:27:55,010 --> 00:27:56,160 別にこれをいじめるてみましょう。 576 00:27:56,160 --> 00:28:00,210 >> 私はprintfを呼ぶつもりです、%cが出力されます 私はこれを転載したいので 577 00:28:00,210 --> 00:28:01,580 画面上の文字。 578 00:28:01,580 --> 00:28:06,650 私はその後のブラケット私、取るつもり i番目はSの文字、そして、なぜ 579 00:28:06,650 --> 00:28:12,330 私はここでこの小さなトリックをやっている、 マイナス資本Aを小文字? 580 00:28:12,330 --> 00:28:16,352 どんなことが与えるために起こっている 私は、一般的に言えば? 581 00:28:16,352 --> 00:28:18,600 >> [聞こえない]。 582 00:28:18,600 --> 00:28:19,390 >> まさに。 583 00:28:19,390 --> 00:28:20,860 私は本当に覚えていない - 584 00:28:20,860 --> 00:28:24,390 それが資本Aの65だった私は本当にしないでください 、何の小文字であることを覚えて 585 00:28:24,390 --> 00:28:25,540 しかし、どんなに。 586 00:28:25,540 --> 00:28:26,580 コンピュータが知っている。 587 00:28:26,580 --> 00:28:30,380 だからと言って、マイナスを小文字 資本は、それがあることが奇妙なことだ 588 00:28:30,380 --> 00:28:33,530 から別のcharを引いたが、 ボンネットの下に文字は何ですか? 589 00:28:33,530 --> 00:28:34,520 彼らはただの数字だ。 590 00:28:34,520 --> 00:28:36,980 それらの番号はどんなので、 コンピュータはそれを覚えてみましょう 591 00:28:36,980 --> 00:28:38,240 むしろ私よりも人間。 592 00:28:38,240 --> 00:28:41,710 >> そうですマイナス資本を小文字 私に違いを与えるつもり。 593 00:28:41,710 --> 00:28:45,370 それは32であることを起こる、それはなり 小文字のbおよび資本Bの場合 594 00:28:45,370 --> 00:28:45,930 などが挙げられる。 595 00:28:45,930 --> 00:28:47,710 それはありがたいことに、一貫したままになります。 596 00:28:47,710 --> 00:28:51,930 だから私は基本的に取ること、言っている 小文字、というオフ減算 597 00:28:51,930 --> 00:28:55,340 標準差、およびその 効果的に変更のブラケットIから 598 00:28:55,340 --> 00:28:59,400 、もちろん、に大文字小文字の 私は本当に考えることなく 599 00:28:59,400 --> 00:29:03,040 約または覚えて、それらの何だった 8について私たちが話をした数字 600 00:29:03,040 --> 00:29:04,800 ボランティアがステージに上がってきた? 601 00:29:04,800 --> 00:29:08,800 さて一方、それ以外で、そうではありません場合、 決定として小文字 602 00:29:08,800 --> 00:29:10,400 24行目で、それをプリントアウト。 603 00:29:10,400 --> 00:29:12,590 私は触れたい あった文字 604 00:29:12,590 --> 00:29:14,410 実はもともと小文字。 605 00:29:14,410 --> 00:29:15,150 >> それでは、これを見てみましょう。 606 00:29:15,150 --> 00:29:17,400 活用してください。 607 00:29:17,400 --> 00:29:18,470 コンパイルされ、[OK]をクリックします。 608 00:29:18,470 --> 00:29:19,730 。/生かす。 609 00:29:19,730 --> 00:29:23,530 そして、私は、H-E-L-L-Oを入力してみましょう 小文字で入力します。 610 00:29:23,530 --> 00:29:26,370 そしてそれが変換されていることに気付く 大文字に変換します。 611 00:29:26,370 --> 00:29:27,940 私は、再びこれをやってみましょう 別の単語。 612 00:29:27,940 --> 00:29:32,720 どのように最初のDとD-A-V-I-Dについて 一般的な名前として資産? 613 00:29:32,720 --> 00:29:33,560 入力します。 614 00:29:33,560 --> 00:29:34,870 それはまだ正しいの通知。 615 00:29:34,870 --> 00:29:40,250 それはちょうど、最初のD変わらず出力 そのelse構文経由。 616 00:29:40,250 --> 00:29:42,170 >> だから、その後、心に留めておく ここで物事のカップル。 617 00:29:42,170 --> 00:29:45,060 あなたがこれまでに2をチェックしたい場合は、1つの、 一度の条件は、次のことができ、それら 618 00:29:45,060 --> 00:29:46,500 一緒に私たちが予測さ。 619 00:29:46,500 --> 00:29:49,900 あなたは、このように文字を比較することができます かつ効果的に文字として扱う 620 00:29:49,900 --> 00:29:53,050 数字が、率直に言って、これはそういまいましいです 不可解な私が覚えているだろうことはありませんよ 621 00:29:53,050 --> 00:29:56,510 スクラッチからこの思い付く方法 非常にためにそれを介して推論なし 622 00:29:56,510 --> 00:29:57,140 少しの時間。 623 00:29:57,140 --> 00:30:00,590 >> 誰かがあれば素敵な、それをされなかったであろう と呼ばれる機能をそこに書いて 624 00:30:00,590 --> 00:30:05,390 それが本当か私に答えることができる下げる falseの場合、この文字は小文字です? 625 00:30:05,390 --> 00:30:09,350 まあありがたいことに、誰でも書いた ctype.hは、まさにそれをやった。 626 00:30:09,350 --> 00:30:15,540 私はここに行くとC CTYPEを追加してみましょう タイプ、そして今私がここでダウンして手放すと 627 00:30:15,540 --> 00:30:18,820 この行は次のように書き換える。 628 00:30:18,820 --> 00:30:27,510 >> だから、それを呼び出している場合、私は主張する、S低い ブラケット私は、その後、私は削除するつもりです 629 00:30:27,510 --> 00:30:29,400 完全にこれらの二行。 630 00:30:29,400 --> 00:30:32,570 だから今は他の誰かが、私は願って、書いた 呼び出される関数は低く、それ 631 00:30:32,570 --> 00:30:36,250 彼らがしたし、彼らが宣言判明 それctype.hの内側。 632 00:30:36,250 --> 00:30:39,480 そして今、私は27行を残すつもりだ 一人で、私は31行を残すつもりだ 633 00:30:39,480 --> 00:30:41,890 一人で、私がしたいくら気付く 私のコードを締める。 634 00:30:41,890 --> 00:30:42,690 それは今クリーナーです。 635 00:30:42,690 --> 00:30:47,250 それは目を通すように小さいのは難しい 現在関数は、さらに、あるため 636 00:30:47,250 --> 00:30:50,080 とても素晴らしく、それだけという それは言うことありません。 637 00:30:50,080 --> 00:30:51,520 >> だから今私はこれを保存するつもりです。 638 00:30:51,520 --> 00:30:52,930 私はズームアウトするつもりです。 639 00:30:52,930 --> 00:30:56,650 そして、あなたが持っている可能性が単にスクラッチのように ブール値、ブール値trueまたは 640 00:30:56,650 --> 00:31:01,530 falseの場合、それは何ですかまさに 効果的に利益を下げます。 641 00:31:01,530 --> 00:31:02,960 私は再コンパイルしてみましょう。 642 00:31:02,960 --> 00:31:04,500 私を再実行してみましょう。 643 00:31:04,500 --> 00:31:07,350 そして今、のは再びそれを試してみましょう H-E-L-L-O、入力します。 644 00:31:07,350 --> 00:31:07,970 これはかなり良いことだ。 645 00:31:07,970 --> 00:31:10,150 そして再びそれを試して、私は確認してください 何かを台無しにしませんでした。 646 00:31:10,150 --> 00:31:11,670 これも同様に計上されています。 647 00:31:11,670 --> 00:31:14,190 >> しかし、これでは十分ではありませんので、 私はに行くことはないんだことを他の事 648 00:31:14,190 --> 00:31:19,090 私は本当にそれを介して動作しない限り覚えている 慎重に、と言う、紙です 649 00:31:19,090 --> 00:31:19,920 このいまいましいライン。 650 00:31:19,920 --> 00:31:23,450 があった場合、それは素晴らしいと思いません アッパーに呼び出される関数? 651 00:31:23,450 --> 00:31:26,930 まあそれはそこになります 同様ctype.hにある。 652 00:31:26,930 --> 00:31:30,150 私が先に行くと入力するつもりだ - 653 00:31:30,150 --> 00:31:31,340 私はそのラインを持ち帰ることができます。 654 00:31:31,340 --> 00:31:36,430 代わりに、このここから、私は先に行かせて と%Cの代わりに、言う 655 00:31:36,430 --> 00:31:42,110 この関数を呼び出した結果 複数のi番目の文字の上限。 656 00:31:42,110 --> 00:31:45,430 そして今、それはなってきているに気づく 少しバランス。 657 00:31:45,430 --> 00:31:48,870 私はどのように多くを追跡する必要があります 私は、開いたり閉じた括弧。 658 00:31:48,870 --> 00:31:50,050 >> だから今はそれもクリーナーです。 659 00:31:50,050 --> 00:31:53,460 今、このプログラムは、より良いとなっている それだから良い間違いなく設計 660 00:31:53,460 --> 00:31:56,450 はるかに、はるかに読みやすいけど それはのは、訂正させていないだ。 661 00:31:56,450 --> 00:31:57,600 活用してください。 662 00:31:57,600 --> 00:31:58,930 。/生かす。 663 00:31:58,930 --> 00:32:03,220 H-E-L-L-O。レッツは、再びそれを実行 D--V-I-D。 [OK]を、私たちは、まだだ 664 00:32:03,220 --> 00:32:04,250 形状はかなり良い。 665 00:32:04,250 --> 00:32:06,030 >> しかし、今はアッパーに。 666 00:32:06,030 --> 00:32:09,720 私は、もう一つがあることを提案 我々はそれは次のようになります作ることができる洗練された 667 00:32:09,720 --> 00:32:12,820 本当に素晴らしい、本当に締めでした このコードまで、本当に私たちの5つを与える 668 00:32:12,820 --> 00:32:15,150 例えば、設計のための5つの、外。 669 00:32:15,150 --> 00:32:16,510 を取り除くためにいいだろうか? 670 00:32:16,510 --> 00:32:20,770 さて、どのようにいまいましい長いこのブロックの見える コー​​ドは単純な何かを行うことです。 671 00:32:20,770 --> 00:32:23,850 >> さて余談ですが、あなたが持つかもしれないほど この過去のスーパーセクションで見られる 672 00:32:23,850 --> 00:32:27,570 週末には、厳密には必要ありません 中括弧あなただけのものを持っている 673 00:32:27,570 --> 00:32:32,180 我々が提案していてもコードの行、 それがはるか​​になるようにそれらを維持 674 00:32:32,180 --> 00:32:36,190 スクラッチのU字型のように、より明確に ブロック、支店の中何。 675 00:32:36,190 --> 00:32:40,170 アッパーにあれば、それは素晴らしいことではないでしょう その入力が与えられたときに、それになって 676 00:32:40,170 --> 00:32:44,730 そうでない場合、大文字、と何だろう 逆の場合には、素晴らしいことであれば 677 00:32:44,730 --> 00:32:47,210 すでに大文字の? 678 00:32:47,210 --> 00:32:49,620 ちょうどそれを通過 単独でそれを残す。 679 00:32:49,620 --> 00:32:50,660 >> だから多分それはそれを行います。 680 00:32:50,660 --> 00:32:52,990 私が試してみて、ただ望むことができる それが、私を聞かせていないこと 681 00:32:52,990 --> 00:32:54,450 もうひとつご紹介します。 682 00:32:54,450 --> 00:32:57,440 代わりに、このビルトイン端末を使用する ダウンここでウィンドウは、あることを思い出す 683 00:32:57,440 --> 00:33:01,130 この正方形の黒いアイコンがあなたに与える 私は完全なことができる大きなターミナルウィンドウ 684 00:33:01,130 --> 00:33:02,260 画面私はどうすればよいでしょうか。 685 00:33:02,260 --> 00:33:05,820 だから、彼らは一種の妙だ判明 名前が、呼ばれるこれらのものはあり 686 00:33:05,820 --> 00:33:10,970 manページ、マニュアルページ、短いのマニュアル、 と私は、これらのことによってアクセスすることができます 687 00:33:10,970 --> 00:33:14,515 タイピングの男 - 688 00:33:14,515 --> 00:33:15,570 私は何を入力したいのですか? 689 00:33:15,570 --> 00:33:17,830 アッパーに男。 690 00:33:17,830 --> 00:33:21,090 >> が存在する場合、今気付く におけるコンピュータの機能の中では、 691 00:33:21,090 --> 00:33:23,970 この場合だけであるアプライアンス、 オペレーティングシステムのLinux、それが起こっている 692 00:33:23,970 --> 00:33:27,920 私のやや不可解なセットを与えるために 出力されますが、時間をかけていることを見つけることができます 693 00:33:27,920 --> 00:33:31,720 それは、常にかなりのフォーマットされて 同じように、あなたはそれに慣れ始める。 694 00:33:31,720 --> 00:33:35,130 アッパーに上部に気付くと、 明らかに同じドキュメントがある 695 00:33:35,130 --> 00:33:35,680 下げるために。 696 00:33:35,680 --> 00:33:38,740 誰それはいくつかを切断しました書いた コー​​ナーとは、1ページにすべてを置く。 697 00:33:38,740 --> 00:33:40,720 これらのことは '目的で 人生は変換することです 698 00:33:40,720 --> 00:33:42,780 大文字または小文字への手紙。 699 00:33:42,780 --> 00:33:46,290 >> manページ、概要の下にそのことに注意してください 私が持っているどのファイルを私に教えている 700 00:33:46,290 --> 00:33:48,130 この事を使用することを含めることができます。 701 00:33:48,130 --> 00:33:51,320 それは私にこれらのための署名を与えている 関数、それらの両方であっても 702 00:33:51,320 --> 00:33:53,510 私たちは今でも唯一 1気に。 703 00:33:53,510 --> 00:33:54,730 今ここの説明である。 704 00:33:54,730 --> 00:33:58,800 アッパーに手紙を変換 可能であれば大文字にC。 705 00:33:58,800 --> 00:34:02,280 >> まだ有益ですが、私にさせないこと 今、戻り値の下にものを見て 706 00:34:02,280 --> 00:34:03,520 それは戻って手渡している。 707 00:34:03,520 --> 00:34:08,600 だから、返される値は、ということです 変換後の文字またはCの場合 708 00:34:08,600 --> 00:34:09,870 変換はできませんでした。 709 00:34:09,870 --> 00:34:11,202 Cとは何ですか? 710 00:34:11,202 --> 00:34:12,560 >> オリジナルキャラクター。 711 00:34:12,560 --> 00:34:15,370 >> オリジナルキャラクターと私たちは知っている で、再び、まで行くこと 712 00:34:15,370 --> 00:34:19,179 概要、そして誰でも、これを書いている 機能だけで決めた入力 713 00:34:19,179 --> 00:34:22,909 へのアッパーに、下にだけある 任意に、Cと呼ばれるようにしよう。 714 00:34:22,909 --> 00:34:24,909 彼らはそれがほとんど何も呼ばれたかもしれない 彼らはしたいが、彼らはそれを保っ 715 00:34:24,909 --> 00:34:26,270 Cのような単純な。 716 00:34:26,270 --> 00:34:27,880 だから私は、マニュアルページを相談してきました。 717 00:34:27,880 --> 00:34:31,870 この文は私を安心させる、もし それが小文字ではないですが、それは 718 00:34:31,870 --> 00:34:34,969 ただ戻ってCを、私を与えるつもり 私がを取り除くことができることを意味完璧、 719 00:34:34,969 --> 00:34:36,199 私のelse条件。 720 00:34:36,199 --> 00:34:39,679 >> だから私はgeditのに戻ってみましょう、と 今の私はただ、これを行うことができます。 721 00:34:39,679 --> 00:34:41,960 私はprintf文をコピーするつもりです。 722 00:34:41,960 --> 00:34:45,969 私は先に、右内側に行くつもりです その外にループ印刷用、およびget 723 00:34:45,969 --> 00:34:48,760 構築する場合は、ここで、この全体を取り除く。 724 00:34:48,760 --> 00:34:51,860 悪いアイデアではなかった、そしてそれは非常にあった ずっと正しいと一貫 725 00:34:51,860 --> 00:34:54,100 私たちが宣べ伝えてきたすべてのもの、 しかしちょうど必要ではない。 726 00:34:54,100 --> 00:34:57,070 とすぐにいくつかのライブラリを実現するように この関数は、他の誰かが存在 727 00:34:57,070 --> 00:35:01,340 書いている、または多分あなたは他の場所で書いた ファイルには、あなたは本当にそれを使用することができ 728 00:35:01,340 --> 00:35:02,690 コー​​ドを締め始める。 729 00:35:02,690 --> 00:35:06,080 >> そして、私は良いスタイルのようなものを言うとき、 この人が呼ばれているという事実 730 00:35:06,080 --> 00:35:11,490 アッパーに関数、または以前にある 下段は素晴らしく便利ですので、 731 00:35:11,490 --> 00:35:12,900 彼らは非常にわかりやすいです。 732 00:35:12,900 --> 00:35:16,120 あなたの関数を呼び出すのは嫌だ 有し、xおよびy及びz、 733 00:35:16,120 --> 00:35:19,620 はるかに、はるかに少ないという意味。 734 00:35:19,620 --> 00:35:25,160 そのシリーズの質問 改良の? 735 00:35:25,160 --> 00:35:28,010 >> だからのいずれかと言えば十分である 持ち帰りも、あなた自身の問題としてです 736 00:35:28,010 --> 00:35:30,960 セット - 多分問題セット1が、 確かにPはさえ2以降を設定 737 00:35:30,960 --> 00:35:34,380 彼らは必ずしも正しくありませんしているとき 彼らは完璧であるという意味 738 00:35:34,380 --> 00:35:36,155 まだか、特によく設計。 739 00:35:36,155 --> 00:35:38,420 それはへの他の軸だ について考え始める。 740 00:35:38,420 --> 00:35:41,730 だから、これはあなたの内側に文字列だった コンピュータのメモリが、あなたが持っている場合 741 00:35:41,730 --> 00:35:46,180 H-E-L-L-Oのような文字の全体の束 RAMの内側、と仮定 742 00:35:46,180 --> 00:35:51,330 あなたのプログラムの中で文字列を取得呼んでいる そのようなあなた、複数回 743 00:35:51,330 --> 00:35:54,200 あなたはその後、一度文字列を取得する呼び出し 再び文字列を取得する呼び出し。 744 00:35:54,200 --> 00:35:55,880 まあ、何になるだろう 時間をかけて起こる? 745 00:35:55,880 --> 00:35:59,170 >> 言い換えれば、あなたがラインを持っている場合 コンテキストの外とはいえコード、、のような 746 00:35:59,170 --> 00:36:02,120 文字列sを取得します - 747 00:36:02,120 --> 00:36:02,960 これを行うてみましょう。 748 00:36:02,960 --> 00:36:05,270 列名は、文字列を取得等しい。 749 00:36:05,270 --> 00:36:08,590 だから、コードの行を意味していると仮定 彼または彼女の名前をユーザーに依頼する。 750 00:36:08,590 --> 00:36:14,580 このコードの次の行が求めることを意図している 彼または彼女の学校のためのユーザ、および 751 00:36:14,580 --> 00:36:15,920 この次のラインなどが挙げられる。 752 00:36:15,920 --> 00:36:18,150 私たちが求め続けると仮定 別のユーザーと 753 00:36:18,150 --> 00:36:19,750 もう一つ、別の文字列。 754 00:36:19,750 --> 00:36:22,390 彼らは、メモリ内に滞在するつもりだ 同時に。 755 00:36:22,390 --> 00:36:24,280 一方が他方を壊しするつもりはない。 756 00:36:24,280 --> 00:36:26,420 学校は他に上書きされていません。 757 00:36:26,420 --> 00:36:28,520 しかし、彼らはすべてどこにやる メモリに終わる? 758 00:36:28,520 --> 00:36:32,030 >> さて、私たちは画面に描画するために開始した場合、 我々はこの事を使用できる 759 00:36:32,030 --> 00:36:35,800 ここで黒板のように、この黒い場合 矩形は、私のコンピュータのを表して 760 00:36:35,800 --> 00:36:39,800 メモリ、私は任意に開始するつもりだ 少し正方形にそれを分割、 761 00:36:39,800 --> 00:36:42,120 それぞれ表しているの メモリの1バイト。 762 00:36:42,120 --> 00:36:46,560 率直に言って、あなたは、RAMのギガバイトを持っている場合 これらの日、あなたは億バイトを持っている 763 00:36:46,560 --> 00:36:49,540 お使いのコンピュータのメモリなので、 これらの正方形の億円となりました。 764 00:36:49,540 --> 00:36:52,110 だから、これは、それを言えば十分 スケールには本当にありません。 765 00:36:52,110 --> 00:36:58,250 >> しかし、我々はこれらのすべてを描き続けることができ はっきり正方形、これを拡張しないように 766 00:36:58,250 --> 00:37:01,260 集合的に表し 私のコンピュータのメモリ。 767 00:37:01,260 --> 00:37:03,136 今、私たちは、ドット、ドット、ドットをやるだけでしょう。 768 00:37:03,136 --> 00:37:06,260 だから、他の言葉で、私は今求められたとき 文字列は私を与えるために取得を持つユーザ 769 00:37:06,260 --> 00:37:07,350 文字列、何が起こる? 770 00:37:07,350 --> 00:37:14,270 "こんにちは、"終了で、ユーザーがタイプした場合 アップでH-E-L-L-O。しかし、仮定 771 00:37:14,270 --> 00:37:15,720 のユーザーは、その後のタイプ - 772 00:37:15,720 --> 00:37:17,250 実際に、私が行っているべきではありません こんにちは私たちは求めているので、 773 00:37:17,250 --> 00:37:18,330 自分の名前のためにそれら。 774 00:37:18,330 --> 00:37:20,580 だから私はこれを行うことができればのに戻ってみましょう。 775 00:37:20,580 --> 00:37:26,130 >> 私は私の名前のためにD-A-V-I-Dで入力するのであれば、 しかし思い出してその二行目 776 00:37:26,130 --> 00:37:29,220 コー​​ドは、再び文字列を取得しました 自分の学校を取得します。 777 00:37:29,220 --> 00:37:32,090 その単語はどこです、そのユーザ 次行くの型? 778 00:37:32,090 --> 00:37:38,290 まあ、多分それは入るだろう H-A-R-V-A-R-D。私がしたそうにもかかわらず 779 00:37:38,290 --> 00:37:41,560 つの行としてそれを引か、これはただです あなたのバイトの全体の束 780 00:37:41,560 --> 00:37:42,710 コンピュータのRAM。 781 00:37:42,710 --> 00:37:46,560 今ので、私は場合は、問題が存在することになります この非常に合理的にRAMを使用して 782 00:37:46,560 --> 00:37:49,910 しかし、素朴な方法のようなもの、何かことができます 明らかに区別しませんか? 783 00:37:49,910 --> 00:37:52,640 784 00:37:52,640 --> 00:37:54,680 1が開始され、どこ 一端、右? 785 00:37:54,680 --> 00:37:55,860 彼らは一緒にぼかしのようなものです。 786 00:37:55,860 --> 00:37:57,920 >> だから、コンピュータが判明 これを行うことはありません。 787 00:37:57,920 --> 00:38:04,720 私は実際に時間に戻ってスクロールしてみましょう いくつかの文字、そしてその代わりにハーバード大学の 788 00:38:04,720 --> 00:38:09,570 ユーザーの名前の直後に起こって、 ユーザーが実際に後ろに取得します 789 00:38:09,570 --> 00:38:12,000 シーン、特殊文字 によって挿入 790 00:38:12,000 --> 00:38:13,885 彼または彼女のためのコンピュータ。 791 00:38:13,885 --> 00:38:19,470 / 0、そうでなければNUL文字として知られている N-U-Lと呼ばうるさくなく、 792 00:38:19,470 --> 00:38:22,190 N-U-L-Lが、あなたはそれ/ 0のように書いてください。 793 00:38:22,190 --> 00:38:27,130 これは、すべてのビットがゼロでマーカーであるだけだ 最初の単語の間に、そのユーザの 794 00:38:27,130 --> 00:38:28,290 入力された第二。 795 00:38:28,290 --> 00:38:33,020 >> ハーバード大学は、実際には今まで終わるよう この文字列として 796 00:38:33,020 --> 00:38:36,110 そしてもう一つの/ 0。 797 00:38:36,110 --> 00:38:41,690 そう換言すれば、これらを有することにより センチネル値、8連続したゼロ 798 00:38:41,690 --> 00:38:45,220 ビットは、あなたは今、区別するために始めることができます から別の文字。 799 00:38:45,220 --> 00:38:49,720 だから、 "こんにちは"でいたものすべてのこの時間 実際には "こんにちは" / 0とし、 800 00:38:49,720 --> 00:38:53,580 一方、そこに可能性のある非常によく かなり多くのRAMである 801 00:38:53,580 --> 00:38:56,400 コンピュータの内部。 802 00:38:56,400 --> 00:38:57,810 >> 私は今ではもう一つのことをやってみましょう。 803 00:38:57,810 --> 00:39:01,800 それは、これらの正方形のすべてのことが判明 我々は、彼らは、はい、描画されてきた 804 00:39:01,800 --> 00:39:06,140 より一般的には文字列が、 これらの事は配列です。 805 00:39:06,140 --> 00:39:10,590 アレイは、単にメモリの塊です 背中合わせに背中合わせにそれだ、 806 00:39:10,590 --> 00:39:15,130 そして、あなたは、通常の方法で配列を使用 この角括弧表記。 807 00:39:15,130 --> 00:39:18,210 だから私たちは、これらのかなりのビットを参照するつもりだ 時間をかけて、しかし、私が先に行くとう 808 00:39:18,210 --> 00:39:21,160 開く、のはそれ年齢と呼ぶことにしましょう​​。 809 00:39:21,160 --> 00:39:23,920 そして、我々が何ができるかに気づく これらの同じトリック、少し 810 00:39:23,920 --> 00:39:25,750 ここでもう少し構文。 811 00:39:25,750 --> 00:39:29,270 >> したがって、このプログラムの17行で - 実際に、私が最初にプログラムを実行してみましょう 812 00:39:29,270 --> 00:39:30,770 ので、このことが何を見ることができます。 813 00:39:30,770 --> 00:39:33,530 私に年齢を加えると呼ぶことにしましょう このプログラムをコンパイルします。 814 00:39:33,530 --> 00:39:34,950 。/年齢。 815 00:39:34,950 --> 00:39:36,480 部屋には何人います? 816 00:39:36,480 --> 00:39:38,020 それは3コール。 817 00:39:38,020 --> 00:39:39,575 最初の人の年齢? 818 00:39:39,575 --> 00:39:42,710 18,19、および20。 819 00:39:42,710 --> 00:39:46,770 そして今やや途方もなく、私はただ プログラムそれが年齢のものを作った 820 00:39:46,770 --> 00:39:47,740 三人。 821 00:39:47,740 --> 00:39:50,390 >> だから機会が明らかにあり ここでいくつかの楽しみのために算術。 822 00:39:50,390 --> 00:39:51,560 ありがたいことに、数学は正しいです。 823 00:39:51,560 --> 00:39:54,720 18は行って19、19に行ってきました 20等が挙げられる。 824 00:39:54,720 --> 00:39:58,510 しかし、何が本当にあることを意味している 実例ここでは保存している方法です 825 00:39:58,510 --> 00:40:00,190 これら3人の年齢。 826 00:40:00,190 --> 00:40:02,370 私が何時にズームしましょう ここで起こって。 827 00:40:02,370 --> 00:40:06,240 >> だから最初に、これらの最初の数行はすべき かなり慣れること。 828 00:40:06,240 --> 00:40:08,770 私はちょうどのためにユーザーにプロンプ​​トを表示しています 部屋の中で人々の数。 829 00:40:08,770 --> 00:40:11,490 にしながら、私はint型を取得し、実行し使用しています 何度も何度も何度もこれを行う。 830 00:40:11,490 --> 00:40:15,780 我々は前にそのパターンを見てきましたが、 27行目では、新しいと実際にはかなりある 831 00:40:15,780 --> 00:40:18,160 有用となるであろう ますます便利。 832 00:40:18,160 --> 00:40:21,620 何が27行目で違うことに注意してください 私は宣言されているように見えるということです 833 00:40:21,620 --> 00:40:23,960 int型は、年齢と呼ばれるが、待つ。 834 00:40:23,960 --> 00:40:27,140 それだけではi​​nt型の年齢ではありません。 835 00:40:27,140 --> 00:40:30,130 これらの角括弧は、あります 内はnです。 836 00:40:30,130 --> 00:40:35,150 >> この文脈でそうブラケットN、ではない しかし、ここでprintf文の内側 837 00:40:35,150 --> 00:40:44,370 この唯一の27行で、この行はです 私nは整数を与えると言って、それぞれの 838 00:40:44,370 --> 00:40:46,080 int型です。 839 00:40:46,080 --> 00:40:49,870 だから、これはの、いわば、バケツで、 この場合、3つの整数に戻る 840 00:40:49,870 --> 00:40:52,770 背中合わせになるように私は効果的に 3つの変数を持っている。 841 00:40:52,770 --> 00:40:54,890 代替案は、することが 明確な、これだろう。 842 00:40:54,890 --> 00:40:57,400 >> 私が欲しかった場合は、最初の生徒の 年齢は、私はこれを行うことがあります。 843 00:40:57,400 --> 00:40:59,520 私が欲しかった場合、2番目の生徒の 年齢は私はこれを行うことがあります。 844 00:40:59,520 --> 00:41:01,860 私が欲しかった場合は第三の生徒の 年齢は、私はこれを行うことがあります。 845 00:41:01,860 --> 00:41:04,320 と禁じる神たちは皆のを必要とする この部屋での年齢 - 846 00:41:04,320 --> 00:41:07,670 私は意味、これはコピーの多くの一体であり、 もう一度、もう一度、もう一度貼り付けます。 847 00:41:07,670 --> 00:41:10,870 そして、プラス、かつて私は、このプログラムをコンパイル 他の生徒が出てかけて歩く場合 848 00:41:10,870 --> 00:41:14,200 そのドアの、今では私の電話番号 変数が正しくありません。 849 00:41:14,200 --> 00:41:17,450 >> それでは配列のいいのはあるとして あなた自身を感じ始めるとすぐに 850 00:41:17,450 --> 00:41:20,190 コピーと貼り付け、オッズはだということです しない最良のアプローチ。 851 00:41:20,190 --> 00:41:22,240 配列は、潜在的に動的です。 852 00:41:22,240 --> 00:41:24,610 私は事前にどのように多くの人々には知らない 部屋にしようとしている、 853 00:41:24,610 --> 00:41:28,670 しかし、私はそれらのn個必要知って、私はよ 時が来れば、Nを把握。 854 00:41:28,670 --> 00:41:35,500 このコード行は、現在を意味、私に与える このようになり、メモリのチャンク 855 00:41:35,500 --> 00:41:40,380 どこで、画面上の箱の数 nの上に完全に依存していること 856 00:41:40,380 --> 00:41:42,010 ユーザーが入力したログイン 857 00:41:42,010 --> 00:41:44,850 >> だから今、このプログラムの残りの部分です 私たちに、実際にはかなり似て 858 00:41:44,850 --> 00:41:46,860 ただ文字でやった。 859 00:41:46,860 --> 00:41:49,970 私はループのために持って気付く 30行目から始まる。 860 00:41:49,970 --> 00:41:54,920 私は配列を取得するので、右の後、私 Yからの反復は、最大nまでにゼロに等しい。 861 00:41:54,920 --> 00:41:58,890 私はこの有益なのprintfを持って ちょうど私の年齢を与える、というメッセージ 862 00:41:58,890 --> 00:42:03,690 人の#%iのため、ナンバーワン、 ナンバー2、ナンバー3。 863 00:42:03,690 --> 00:42:04,730 そして、なぜ私はこれをやったの? 864 00:42:04,730 --> 00:42:08,870 率直に言って、人間は1からカウントすることを好む コンピュータ科学者に対し、最大で、 865 00:42:08,870 --> 00:42:09,620 までにゼロ。 866 00:42:09,620 --> 00:42:11,700 コンピュータ科学者は、するつもりはありません この種のプログラムを使用するため、我々はしている 867 00:42:11,700 --> 00:42:13,990 ただカウントを開始する予定 普通の人のようなもので。 868 00:42:13,990 --> 00:42:17,630 >> そして今、33行目では、わずかに気付く 構文の異なる作品。 869 00:42:17,630 --> 00:42:23,710 ジャンルその変数のi番目の年齢 配列のデータ型はintを取得する予定です。 870 00:42:23,710 --> 00:42:25,770 そして今、最後に、これはただです ここに算術ダウン。 871 00:42:25,770 --> 00:42:29,200 私が主張するために別のループで決めた いくつかの時間が経過し、今ではこの中 872 00:42:29,200 --> 00:42:31,400 独立したループは、これらの行が実行されます。 873 00:42:31,400 --> 00:42:35,810 >> 今から今年、私はなり人 歳が、これではありません気づく 874 00:42:35,810 --> 00:42:36,500 変数i。 875 00:42:36,500 --> 00:42:38,390 これが今ではint型のために%Iです。 876 00:42:38,390 --> 00:42:43,210 そして、私は、最初のプレースホルダとして気づく 私はプラス1でプラグインなので、我々は次のようにカウント 877 00:42:43,210 --> 00:42:44,250 普通の人。 878 00:42:44,250 --> 00:42:49,190 そして、自分の年齢の値を、用 歳の私、私は年齢のブラケットを取る 879 00:42:49,190 --> 00:42:52,980 I - と、なぜ私はここに1を加えているのですか? 880 00:42:52,980 --> 00:42:53,760 彼らはただ歳。 881 00:42:53,760 --> 00:42:55,030 それはプログラムの私の愚かな選択だ。 882 00:42:55,030 --> 00:42:56,810 彼らは、ちょうど1年歳。 883 00:42:56,810 --> 00:42:59,770 私は、任意の数の点で、入力することができ 私は実際にそこにしたい。 884 00:42:59,770 --> 00:43:02,430 >> それでは、実際には、すべてのです ここに関連性? 885 00:43:02,430 --> 00:43:07,610 まあ、私は実際に戻ってスクロールしてみましょう こっちと絵を描く 886 00:43:07,610 --> 00:43:10,830 待ち受けているのかの。 887 00:43:10,830 --> 00:43:15,720 我々は我々の次で何をやっているだろう 問題セット二人に手を染めている 888 00:43:15,720 --> 00:43:17,070 暗号の世界。 889 00:43:17,070 --> 00:43:22,500 だから、これは文字列ですので、 複数文字のシーケンス、そして何 890 00:43:22,500 --> 00:43:23,750 これは言っていますか? 891 00:43:23,750 --> 00:43:28,530 892 00:43:28,530 --> 00:43:30,600 これは、オンライン版ではありません スライドの。 893 00:43:30,600 --> 00:43:35,880 >> だから私は、これはこれと等しいことを主張する 長年から愚か広告 894 00:43:35,880 --> 00:43:39,950 前に実際に思い出すかもしれない その起源の一つ。 895 00:43:39,950 --> 00:43:42,740 だから、これは暗号化の例です。 または暗号。 896 00:43:42,740 --> 00:43:46,150 それはあなたがしたい場合ことが判明 実際に情報または共有を送る 897 00:43:46,150 --> 00:43:49,310 確実に誰か、との情報 このようなメッセージのように、次のことができます 898 00:43:49,310 --> 00:43:50,500 文字をスクランブル。 899 00:43:50,500 --> 00:43:53,170 しかし、一般的に、言葉はある ランダムにスクランブルされていない。 900 00:43:53,170 --> 00:43:56,365 彼らはいくつかの方法で入れ替えたり、変更している そのため、何らかの方法で - おっと。 901 00:43:56,365 --> 00:43:59,040 それは次回のための楽しいスポイラーです。 902 00:43:59,040 --> 00:44:04,390 >> だから、明らかに何かマッピングすることができます そのラインアップB. NoticeをO 903 00:44:04,390 --> 00:44:05,420 総額が賢明。 904 00:44:05,420 --> 00:44:07,960 どうやらRは、電子になる。 905 00:44:07,960 --> 00:44:14,000 どうやらF-H-E-Rは、S-U-R-Eになります。そう それは、マッピングがあると判明し、内 906 00:44:14,000 --> 00:44:18,720 この場合はかなり愚かなあり 誰もがそれを考え出した場合にマッピング? 907 00:44:18,720 --> 00:44:21,440 これはと呼ばれるものです。 腐れ13、回転13。 908 00:44:21,440 --> 00:44:24,760 それは暗号化の最も愚かである そのためのメカニズム文字通り 909 00:44:24,760 --> 00:44:29,160 、手紙のひとつひとつに13を加算し あなたならちょうどその意味で愚か 910 00:44:29,160 --> 00:44:31,890 あなたの手で自由な時間のビットを持って と鉛筆、またはあなたはそれだと思う 911 00:44:31,890 --> 00:44:35,260 あなたの頭の中を通って、あなたは試みることができる すべての可能な追加 - 一、二、 912 00:44:35,260 --> 00:44:38,470 3つのドット、ドット、ドット、ちょうど25 全体のアルファベットを回転させ、 913 00:44:38,470 --> 00:44:40,860 結局、あなたは見つけ出すよ このメッセージは何ですか。 914 00:44:40,860 --> 00:44:43,700 あなたは、このような何かをしたのであれば あなたへのメッセージを渡す小学校 915 00:44:43,700 --> 00:44:46,830 親友、あなたの小学校であれば 先生は単に通読 916 00:44:46,830 --> 00:44:50,320 メッセージとブルートは、ソリューションを強制 あなたが得ているかもしれません 917 00:44:50,320 --> 00:44:52,550 それによって答え。 918 00:44:52,550 --> 00:44:54,970 >> さてもちろん、現実の世界では、 暗号化は、より洗練されています。 919 00:44:54,970 --> 00:45:00,120 これはからのテキストの抜粋です ユーザ名とされているコンピュータシステム 920 00:45:00,120 --> 00:45:03,630 パスワードは、ほぼすべての私達のものはそうであるように、と これはどのようなパスワードがあるかもしれない 921 00:45:03,630 --> 00:45:07,260 ハードディスクに保存されている場合のように見える しかし、暗号化された形式で駆動します。 922 00:45:07,260 --> 00:45:11,050 これは、単に文字の回転ではない BとBがCこれですです 923 00:45:11,050 --> 00:45:15,620 はるかに洗練され、それが使用されます 一般的には秘密鍵として知られているもの 924 00:45:15,620 --> 00:45:16,690 暗号。 925 00:45:16,690 --> 00:45:20,210 この写真は、次のを伝え 少数のアイコンの話。 926 00:45:20,210 --> 00:45:22,250 >> 左では、我々は持っているもの 我々は、プレーンテキストと呼ぶことにします。 927 00:45:22,250 --> 00:45:25,420 暗号化、平野の世界では テキストは単に元のメッセージです 928 00:45:25,420 --> 00:45:29,050 英語やフランス語で書かれた またはいかなる言語。 929 00:45:29,050 --> 00:45:32,405 あなたはそれを暗号化したい場合、我々は合格でしょう それは絵で南京錠を通して、そう 930 00:45:32,405 --> 00:45:35,580 アルゴリズムのいくつかの種類、いくつかの機能 誰かが書いたか、プログラム 931 00:45:35,580 --> 00:45:39,880 そのスクランブルできれば手紙 もっと複雑にわずか13を追加するよりも 932 00:45:39,880 --> 00:45:40,980 それらの各々に関する。 933 00:45:40,980 --> 00:45:43,780 >> あなたは、で、そのプロセスから抜け出す何 真ん中そこは暗号文と呼ばれています。 934 00:45:43,780 --> 00:45:44,850 セクシーな単語のとても親切。 935 00:45:44,850 --> 00:45:47,630 それはちょうどそれが暗号化されたことを意味 プレーンテキストのバージョン。 936 00:45:47,630 --> 00:45:52,570 そして、あなたはその同じ秘密を持っている場合にのみ、 13またはマイナス13、あなたはすることができます 937 00:45:52,570 --> 00:45:54,970 解読するそのようなメッセージが表示されます。 938 00:45:54,970 --> 00:45:57,770 >> だから問題にとりわけ、二つを設定 あなたは、ハッカーであればやる 939 00:45:57,770 --> 00:46:01,860 Editionは、あなたがにコードを記述する必要があります 考え出す、これらのパスワードをクラック 940 00:46:01,860 --> 00:46:05,170 彼らは何だったとどのように彼らがいた 暗号化され、私達は少しを与える行うものの 941 00:46:05,170 --> 00:46:06,460 道に沿っての指導。 942 00:46:06,460 --> 00:46:09,320 スタンダード版では、ご紹介 暗号のカップルは、暗号化 943 00:46:09,320 --> 00:46:12,400 メカニズムは、シーザーと呼ばれる1つ、1 ヴィジュネルと呼ばれる、それはまだです 944 00:46:12,400 --> 00:46:16,100 なり回転暗号 何か、Bが何かになりますが、 945 00:46:16,100 --> 00:46:18,820 あなたは、プログラムでそれをしなければならない 確かに秘密があるだろうので、 946 00:46:18,820 --> 00:46:22,840 通常は数であるキー関与 またはキーワードだけ 947 00:46:22,840 --> 00:46:26,420 送信者と受信者これらの メッセージが理解しておく必要があります。 948 00:46:26,420 --> 00:46:28,660 >> さて、これは実際に化身を持っている 現実の世界である。 949 00:46:28,660 --> 00:46:32,910 これは、例えば、少しオーファンである アニーの秘密のデコーダリング、そしてあなた 950 00:46:32,910 --> 00:46:35,180 実際にこれらを実装することができます 回転暗号 - 951 00:46:35,180 --> 00:46:37,930 何となり、Bとなり 何か - 車輪のカップルと、 952 00:46:37,930 --> 00:46:40,840 外側に1つ、内側に1 その結果、あなたは、ホイールを回転させる場合、または 953 00:46:40,840 --> 00:46:44,170 リングは、あなたが実際に並べることができます 異なる文字で手紙、 954 00:46:44,170 --> 00:46:45,430 シークレットコードを取得。 955 00:46:45,430 --> 00:46:48,110 そして今日は接戦として、 私は私は何だろうと思っていたことのビットです 956 00:46:48,110 --> 00:46:52,170 あなたがテレビをオンにした場合という先祖返り 12月24日、あなたは見ることができます 957 00:46:52,170 --> 00:46:55,390 のムービー広告nauseum 連続で24時間。 958 00:46:55,390 --> 00:47:06,030 しかし、今日のために、私はここでそれを開くよ と私達にのわずか2分を与える 959 00:47:06,030 --> 00:47:13,493 教育学関連のクリスマス·ストーリー Ralphieの名前少し仲間と。 960 00:47:13,493 --> 00:47:14,400 >> [ビデオの再生] 961 00:47:14,400 --> 00:47:17,420 >> それをすべてに知られており、その雑貨-BE ラルフパーカーは、ここに任命される 962 00:47:17,420 --> 00:47:20,650 リトル孤児アニー秘密のメンバー サークルとは、すべての権利がある 963 00:47:20,650 --> 00:47:23,460 栄誉とメリット そこに発生する。 964 00:47:23,460 --> 00:47:25,990 >> 署名付き、リトル孤児アニー。 965 00:47:25,990 --> 00:47:30,100 インクで、ピエール·アンドレが副署。 966 00:47:30,100 --> 00:47:34,270 すでに番組とメリット 9歳の時。 967 00:47:34,270 --> 00:47:39,440 >> [ラジオで叫ぶ] 968 00:47:39,440 --> 00:47:40,770 >> さあ、それに乗ってみましょう。 969 00:47:40,770 --> 00:47:44,965 私は約すべてのそのジャズを必要としない 密輸や海賊。 970 00:47:44,965 --> 00:47:48,270 >> のため明日の夜 - 聞く 黒の締結冒険 971 00:47:48,270 --> 00:47:49,650 海賊船。 972 00:47:49,650 --> 00:47:53,320 さて、それはアニーの秘密の時間です あなたのメンバーへのメッセージ 973 00:47:53,320 --> 00:47:55,720 秘密サークル。 974 00:47:55,720 --> 00:47:56,580 、子供たちを覚えています。 975 00:47:56,580 --> 00:48:01,720 アニーの秘密のサークルのメンバーだけ アニーの秘密のメッセージをデコードすることができます。 976 00:48:01,720 --> 00:48:05,872 覚えておいて、アニーはあなたに依存している。 977 00:48:05,872 --> 00:48:08,670 B2にあなたのピンを設定します。 978 00:48:08,670 --> 00:48:11,000 ここにメッセージがある。 979 00:48:11,000 --> 00:48:12,335 12、11、2 - 980 00:48:12,335 --> 00:48:14,670 >> - 私は私の最初の秘密会議で午前。 981 00:48:14,670 --> 00:48:19,720 >> -25、14、11、18、16 - 982 00:48:19,720 --> 00:48:21,650 >> ピエールは素晴らしい声今夜だった。 983 00:48:21,650 --> 00:48:24,830 私は今夜​​のメッセージを伝えることができ 本当に重要だった。 984 00:48:24,830 --> 00:48:26,400 >> -3、25。 985 00:48:26,400 --> 00:48:28,540 それはアニー彼女自身からのメッセージです。 986 00:48:28,540 --> 00:48:30,086 誰にも教えていない、覚えておいてください。 987 00:48:30,086 --> 00:48:34,370 988 00:48:34,370 --> 00:48:38,710 >> -90秒後、私は部屋にいるよ 家の中でどこに9の少年 989 00:48:38,710 --> 00:48:42,668 プライバシーとデコードに座ることができます。 990 00:48:42,668 --> 00:48:47,628 なるほど、B.私は次に行きました。 991 00:48:47,628 --> 00:48:53,060 E.最初の言葉は "である"である。 S. それは今では簡単に来ていた。 992 00:48:53,060 --> 00:48:54,980 U. 25。 993 00:48:54,980 --> 00:48:55,940 それはのR. 994 00:48:55,940 --> 00:48:56,900 >> Ralphieの、オン来る。 995 00:48:56,900 --> 00:48:57,860 私は行かなきゃ。 996 00:48:57,860 --> 00:48:59,780 >> - 私は、右下の馬である。 997 00:48:59,780 --> 00:49:01,030 ジー達人。 998 00:49:01,030 --> 00:49:04,300 999 00:49:04,300 --> 00:49:08,220 >> -T。 Oをしてください。 1000 00:49:08,220 --> 00:49:09,500 何にしてください? 1001 00:49:09,500 --> 00:49:11,660 リトル孤児は何だった アニーは言おうとして? 1002 00:49:11,660 --> 00:49:12,844 何にしてください? 1003 00:49:12,844 --> 00:49:14,732 >> -Ralphieの、ランディが行くようになっています。 1004 00:49:14,732 --> 00:49:16,148 あなたが出て来てくださいますか? 1005 00:49:16,148 --> 00:49:17,092 >> - すべての権利、馬。 1006 00:49:17,092 --> 00:49:18,510 私は右の外になります。 1007 00:49:18,510 --> 00:49:20,270 >> -Iに近い今になっていた。 1008 00:49:20,270 --> 00:49:21,823 緊張がひどかった。 1009 00:49:21,823 --> 00:49:23,045 それは何でしたか? 1010 00:49:23,045 --> 00:49:26,510 惑星の運命月 バランスでハングアップ。 1011 00:49:26,510 --> 00:49:28,985 >> -Ralphieの、ランディのお奨めは行く。 1012 00:49:28,985 --> 00:49:32,680 >> - 私はのために右の外に 大声で泣いている。 1013 00:49:32,680 --> 00:49:33,956 >> - ほとんどそこ。 1014 00:49:33,956 --> 00:49:35,140 私の指が飛んだ。 1015 00:49:35,140 --> 00:49:36,880 私の心は鋼の罠だった。 1016 00:49:36,880 --> 00:49:38,010 すべての細孔は、振動。 1017 00:49:38,010 --> 00:49:39,878 それはほとんど明らかになった。 1018 00:49:39,878 --> 00:49:43,210 はい、はい、はい、はい、はい。 1019 00:49:43,210 --> 00:49:49,030 >> あなたのオヴァルを飲むようにしてください-BE。 1020 00:49:49,030 --> 00:49:50,280 オヴァル? 1021 00:49:50,280 --> 00:49:53,980 1022 00:49:53,980 --> 00:49:55,230 安っぽく商業? 1023 00:49:55,230 --> 00:49:58,572 1024 00:49:58,572 --> 00:50:00,694 雌犬の息子。 1025 00:50:00,694 --> 00:50:01,900 >> [ENDビデオ再生] 1026 00:50:01,900 --> 00:50:04,260 >> SPEAKER 1:これはCS50であり、その 問題のセット二つになります。 1027 00:50:04,260 --> 00:50:06,305 来週お会いしましょう​​。 1028 00:50:06,305 --> 00:50:08,800 >> SPEAKER 2:次の時 CS50は、これが起こる。 1029 00:50:08,800 --> 00:50:11,060 >> SPEAKER 1:我々はいないしたがって、1つのトピック これまでで見た 1030 00:50:11,060 --> 00:50:12,220 関数ポインタのこと。 1031 00:50:12,220 --> 00:50:14,540 さて、関数ポインタだけである 公共のアドレス 1032 00:50:14,540 --> 00:50:17,000 機能が、はるかのような - 1033 00:50:17,000 --> 00:50:18,250 の息子 - 1034 00:50:18,250 --> 00:50:19,670