1 00:00:00,000 --> 00:00:00,980 2 00:00:00,980 --> 00:00:04,410 >> [音楽再生] 3 00:00:04,410 --> 00:00:11,147 4 00:00:11,147 --> 00:00:12,230 DAVID J.マラン:すべての権利。 5 00:00:12,230 --> 00:00:16,440 これはCS50であり、この 2週目の終わりです。 6 00:00:16,440 --> 00:00:18,480 だから、今日、私たちはつもりだ 私たちの表情を継続する 7 00:00:18,480 --> 00:00:21,150 私たちは物事を表現する方法を見 遠ざかるhood--の下に 8 00:00:21,150 --> 00:00:23,520 整数のよう番号から 浮動小数点値 9 00:00:23,520 --> 00:00:26,810 と文字列に焦点を当て 最終的にはより興味深いプログラム。 10 00:00:26,810 --> 00:00:30,140 しかし、私たちにも見てみましょう ドメイン固有problems--のカップル 11 00:00:30,140 --> 00:00:33,620 その意志の最初の 暗号化を伴うことが、 12 00:00:33,620 --> 00:00:36,570 情報をスクランブルする技術、 これであなたはここに上記を参照 13 00:00:36,570 --> 00:00:41,480 ラジオ孤児アニーのの写真です 往年から秘密デコーダリング。 14 00:00:41,480 --> 00:00:46,490 >> これは実際には非常に原始的な形態であり、 cryptopgraphyのと子どもに優しい形 15 00:00:46,490 --> 00:00:50,590 このリングは、2つのdisks--を持つことにより、 1の内側と外側の1。 16 00:00:50,590 --> 00:00:54,740 およびそれらのいずれかを回転させることにより、次のことができ 基本的にAのような手紙をラインアップ 17 00:00:54,740 --> 00:00:59,520 他の文字とZまで つまり、Aを介してBのような、 18 00:00:59,520 --> 00:01:03,730 あなたは、文字通りアルファベットを回転させることができ、 それによってからのマッピングを考え出す 19 00:01:03,730 --> 00:01:07,820 手紙への手紙その、もしそうであれば、あなた 秘密のメッセージを送りたいと思った 20 00:01:07,820 --> 00:01:11,820 アニーのような誰かに、あなたが書くことができます あなたのメッセージダウンした後、回転させる 21 00:01:11,820 --> 00:01:15,370 あなたが意味する場合には、文字、それによって、 あなたが代わりに言って「A」を言って「B」を 22 00:01:15,370 --> 00:01:17,280 あなたが言うことを意味「B」を あなたの代わりに "C"を言う - 23 00:01:17,280 --> 00:01:20,240 か何かもう少し賢い that--より、その後、最終的には、 24 00:01:20,240 --> 00:01:24,630 限りアニーはこのデコーダを有するもの リングは、彼女はメッセージをデコードすることができます。 25 00:01:24,630 --> 00:01:28,540 さて、あなたはこのことを、実際には、思い出すこと 非常に有名な映画で使用されたもの 26 00:01:28,540 --> 00:01:31,140 中に広告nauseumを果たしている クリスマスシーズン。 27 00:01:31,140 --> 00:01:32,650 それでは、ここで見てみましょう。 28 00:01:32,650 --> 00:01:35,294 29 00:01:35,294 --> 00:01:37,210 RALPHIE PARKER:「それは必ず 要約すると、すべてに知られている 30 00:01:37,210 --> 00:01:41,000 ラルフ·パーカーは、ここに任命されていること リトル孤児アニーシークレットのメンバー 31 00:01:41,000 --> 00:01:44,860 サークルとは、すべてを受ける権利がある 名誉と利益をそこに発生する。 " 32 00:01:44,860 --> 00:01:47,410 >> RALPHIE PARKER(ナレーション): リトル孤児アニーを締結しました。 33 00:01:47,410 --> 00:01:50,070 副署、ピエール·アンドレ! 34 00:01:50,070 --> 00:01:51,490 インクにおいて。 35 00:01:51,490 --> 00:01:55,494 栄誉と利益、 すでに9歳で。 36 00:01:55,494 --> 00:01:57,402 >> [音楽再生] 37 00:01:57,402 --> 00:02:00,470 >> [RADIOのおしゃべり] 38 00:02:00,470 --> 00:02:01,470 RALPHIE PARKER:さあ。 39 00:02:01,470 --> 00:02:02,344 のはそれを上に取得してみましょう。 40 00:02:02,344 --> 00:02:06,029 私はすべてのことジャズを必要としない 密輸業者や海賊に関する。 41 00:02:06,029 --> 00:02:08,820 ラジオアナウンサー:明日聞く 結びの冒険のための夜 42 00:02:08,820 --> 00:02:11,060 黒海賊船の。 43 00:02:11,060 --> 00:02:14,740 今では、アニーのための時間です あなたのメンバーのための秘密のメッセージ 44 00:02:14,740 --> 00:02:17,110 秘密のサークルの。 45 00:02:17,110 --> 00:02:20,700 子供を覚えておいて、メンバーのみ アニーの秘密サークルの 46 00:02:20,700 --> 00:02:23,270 アニーさんの秘密のメッセージをデコードすることができます。 47 00:02:23,270 --> 00:02:27,270 >> アニーはあなたに依存していることを覚えておいてください。 48 00:02:27,270 --> 00:02:30,060 B-2にあなたのピンを設定してください。 49 00:02:30,060 --> 00:02:34,004 ここでmessage-- 12、11、2 - 50 00:02:34,004 --> 00:02:36,503 RALPHIE PARKER(ナレーション):私 私の最初の秘密の会合にいます。 51 00:02:36,503 --> 00:02:40,041 ラジオアナウンサー:--25、14、11、18、16-- 52 00:02:40,041 --> 00:02:42,790 RALPHIE PARKER(ナレーション):ああ、 ピエールは素晴らしい声で今夜だった。 53 00:02:42,790 --> 00:02:46,110 私は今夜​​のことを言うことができる メッセージが本当に重要だった。 54 00:02:46,110 --> 00:02:47,930 >> ラジオアナウンサー:--3、25。 55 00:02:47,930 --> 00:02:49,940 つまり、アニー自身からのメッセージです。 56 00:02:49,940 --> 00:02:52,182 覚えておいて、誰にも言わないでください。 57 00:02:52,182 --> 00:02:55,077 >> [喘ぐ] 58 00:02:55,077 --> 00:02:57,285 RALPHIE PARKER(ナレーション): 九十秒後、私は今 59 00:02:57,285 --> 00:03:00,090 で唯一の部屋で 家どこ9の少年 60 00:03:00,090 --> 00:03:04,380 プライバシーとデコードに座ることができます。 61 00:03:04,380 --> 00:03:04,990 ああ。 62 00:03:04,990 --> 00:03:05,680 「B」 63 00:03:05,680 --> 00:03:06,524 >> [笑う] 64 00:03:06,524 --> 00:03:08,684 >> RALPHIE PARKER(ナレーション): 私は次に行ってきました。 65 00:03:08,684 --> 00:03:09,610 "E." 66 00:03:09,610 --> 00:03:11,641 最初の単語は ""である。 67 00:03:11,641 --> 00:03:12,140 うん! 68 00:03:12,140 --> 00:03:14,293 今では簡単に来ていた。 69 00:03:14,293 --> 00:03:15,259 「U」 70 00:03:15,259 --> 00:03:16,225 >> [笑う] 71 00:03:16,225 --> 00:03:18,157 >> RANDY PARKER:おやおや、是非、Ralphie。 72 00:03:18,157 --> 00:03:19,606 私は行くことを得た! 73 00:03:19,606 --> 00:03:21,538 >> RALPHIE PARKER:私は、右下の馬になるでしょう。 74 00:03:21,538 --> 00:03:22,504 ジーの達人。 75 00:03:22,504 --> 00:03:25,402 76 00:03:25,402 --> 00:03:31,220 「T」 "O." "必ず に。「何を」に必ず「? 77 00:03:31,220 --> 00:03:33,981 リトル孤児アニーは何だった 言いたい?何を」に必ず「? 78 00:03:33,981 --> 00:03:35,522 母:Ralphie、ランディが行くようになっています。 79 00:03:35,522 --> 00:03:36,735 あなたが出てくるしてくださいだろうか? 80 00:03:36,735 --> 00:03:38,190 >> RALPHIE PARKER:すべての権利、ママ! 81 00:03:38,190 --> 00:03:39,787 私は右のアウトになるでしょう! 82 00:03:39,787 --> 00:03:41,995 RALPHIE PARKER(ナレーション): 私は今、近づいた。 83 00:03:41,995 --> 00:03:43,370 テンションがひどかった。 84 00:03:43,370 --> 00:03:44,794 それは何でしたか? 85 00:03:44,794 --> 00:03:47,656 地球の運命 バランスハングすることがあります。 86 00:03:47,656 --> 00:03:50,518 >> 母:Ralphie、ランディのが行くようになった! 87 00:03:50,518 --> 00:03:53,635 >> RALPHIE PARKER:私は右のようになります アウト、大声で泣くのために! 88 00:03:53,635 --> 00:03:55,343 RALPHIEパーカー (ナレーション):ほとんどそこに! 89 00:03:55,343 --> 00:03:56,520 私の指が飛んだ! 90 00:03:56,520 --> 00:03:58,500 私の心は鋼トラップだった。 91 00:03:58,500 --> 00:03:59,850 すべての細孔が振動。 92 00:03:59,850 --> 00:04:01,806 それはほとんど明らかであった! 93 00:04:01,806 --> 00:04:02,773 うん! 94 00:04:02,773 --> 00:04:03,273 うん! 95 00:04:03,273 --> 00:04:03,773 うん! 96 00:04:03,773 --> 00:04:04,740 うん! 97 00:04:04,740 --> 00:04:10,250 >> RALPHIE PARKER: "必ず あなたのオヴァルを飲む。 " 98 00:04:10,250 --> 00:04:10,750 オヴァル? 99 00:04:10,750 --> 00:04:14,864 100 00:04:14,864 --> 00:04:17,539 安っぽく商業? 101 00:04:17,539 --> 00:04:19,439 >> [音楽再生] 102 00:04:19,439 --> 00:04:21,724 >> RALPHIE PARKER:雌犬の息子。 103 00:04:21,724 --> 00:04:23,460 >> [笑い] 104 00:04:23,460 --> 00:04:27,070 >> DAVID J.マラン:その後になるように どの暗号を垣間見る 105 00:04:27,070 --> 00:04:29,880 this-- Aであることができる 往年から飲む。 106 00:04:29,880 --> 00:04:30,900 だから、迅速な発表。 107 00:04:30,900 --> 00:04:33,410 あなたはこの自由である場合 13:15金曜日となります 108 00:04:33,410 --> 00:04:36,610 CS50のための私達に参加したい ランチ、ここにこのURLへのヘッド。 109 00:04:36,610 --> 00:04:38,080 まず最初にいつものように機能し、来る。 110 00:04:38,080 --> 00:04:41,840 しかし、時間をかけて、私たちはそのことを確認します 参加したいのですが、ほとんど誰も 111 00:04:41,840 --> 00:04:43,640 スケジュール設定単位があります。 112 00:04:43,640 --> 00:04:45,170 >> だから文字列。 113 00:04:45,170 --> 00:04:47,940 私たちは誰Zamyla--を持っている あなたは今、おそらく出会った 114 00:04:47,940 --> 00:04:50,750 問題セット1--その中で 名前は、このように綴られている。 115 00:04:50,750 --> 00:04:53,570 そして、あなたは彼女の名前を入力したとします のコンピュータプログラムに 116 00:04:53,570 --> 00:04:55,710 のgetStringのようなものを使用して。 117 00:04:55,710 --> 00:04:57,890 取得するためには、 どのようにそれらのキーストローク、 118 00:04:57,890 --> 00:05:01,620 私たちは表現する行くのですか 文字列、単語、段落、 119 00:05:01,620 --> 00:05:03,960 あるいは、ここでこのような複数の文字? 120 00:05:03,960 --> 00:05:06,790 >> 私たちは、約最後の時間を話し 整数および問題点 121 00:05:06,790 --> 00:05:09,960 それは、整数オーバーフローを発生する 浮動小数点値 122 00:05:09,960 --> 00:05:12,190 問題その 精度内に生じる。 123 00:05:12,190 --> 00:05:16,080 文字列では、私たちは、少なくとも もう少し柔軟性を持っている 124 00:05:16,080 --> 00:05:17,970 strings--という理由だけで 本当world--中 125 00:05:17,970 --> 00:05:19,790 かなり任意の長さであることができる。 126 00:05:19,790 --> 00:05:21,055 かなり長い間、かなり短い。 127 00:05:21,055 --> 00:05:23,680 しかし、それでも、私たちはするつもりだ コンピュータがときどきできることを見つける 128 00:05:23,680 --> 00:05:27,200 でも、メモリが不足していない 十分に大きい文字列を格納します。 129 00:05:27,200 --> 00:05:30,840 >> しかし、今のところ、のは視覚化することから始めましょう これらのボックスの中で何かとして文字列 130 00:05:30,840 --> 00:05:31,340 ここに。 131 00:05:31,340 --> 00:05:36,410 そう6、箱、そのそれぞれ 文字または表す「チャー」 132 00:05:36,410 --> 00:05:40,646 C-H--r--のです - だから、「charが "ことを思い出して C.の組み込みデータ型のいずれか 133 00:05:40,646 --> 00:05:43,520 そして、何すてきなのはあなたが使用できるということです その種の構成単位として、 134 00:05:43,520 --> 00:05:47,880 形成するために、パズルピース、可能ならば、 私たちは続けます、データの大きなタイプ 135 00:05:47,880 --> 00:05:49,410 "文字列"をコールする 136 00:05:49,410 --> 00:05:53,650 >> さて、思考に関する有用なものだ このように、文字列のようなものでしょうか? 137 00:05:53,650 --> 00:05:57,720 まあ、それは私たちができることが判明 実際にこの構造を活用 138 00:05:57,720 --> 00:06:01,420 実際に個別の文字にアクセスする 非常に簡単な方法で。 139 00:06:01,420 --> 00:06:04,099 私が先に行くと、作成するつもりです というファイル「stringzero.c、 " 140 00:06:04,099 --> 00:06:05,765 しかし、あなたはあなたが好きな何でも呼び出すことができます。 141 00:06:05,765 --> 00:06:08,500 そしてもちろんのウェブサイトにある すでに事前にこの例で、 142 00:06:08,500 --> 00:06:10,430 そうあなたがする必要はありません すべてを入力します。 143 00:06:10,430 --> 00:06:13,820 >> そして、私は先に行くつもりです 最初のint型のメイン空洞を行います。 144 00:06:13,820 --> 00:06:15,980 そして、数日以内に、 私たちは離れていじめるから始めましょう 145 00:06:15,980 --> 00:06:19,070 それが理由です、ここではどのような無効である メインの隣に、などint型。 146 00:06:19,070 --> 00:06:21,180 しかし、今のところ、のは続けましょう コピーすることを貼り付けます。 147 00:06:21,180 --> 00:06:23,455 >> 私は、sと呼ばれる文字列を宣言するつもりです。 148 00:06:23,455 --> 00:06:26,920 そして、私はから復帰するつもりです にどのようなユーザータイプをのgetString。 149 00:06:26,920 --> 00:06:29,170 これは単純になるだろう プログラム、ない命令、 150 00:06:29,170 --> 00:06:31,336 私は盲目的に行くよ ユーザが知っていることを期待する 151 00:06:31,336 --> 00:06:32,600 何それをシンプルに保つために行う。 152 00:06:32,600 --> 00:06:34,220 >> そして今、私は、ループのために持っているつもりです。 153 00:06:34,220 --> 00:06:37,450 そして、私のforループの内側に私は今 私はゼロを取得するintを持っているつもり。 154 00:06:37,450 --> 00:06:40,660 そして私は、再び、ただの慣習です、 カウント用インデックス変数、 155 00:06:40,660 --> 00:06:42,350 私は私が好きな、これを呼び出すことができます。 156 00:06:42,350 --> 00:06:46,275 私は私がよくthan--小さいするつもりです Zamylaの名前は6文字の長さである。 157 00:06:46,275 --> 00:06:48,150 だから私はハードに行くよ 今のところそこにコード。 158 00:06:48,150 --> 00:06:49,730 >> そして私は+ +。 159 00:06:49,730 --> 00:06:53,190 そして今、これらの巻き毛の内側 私はprintfのをするつもりブレース、 160 00:06:53,190 --> 00:06:55,460 と私は1つを印刷したい 当時の文字。 161 00:06:55,460 --> 00:06:58,227 だから私はのために%cを使用するつもりだ おそらく初めて。 162 00:06:58,227 --> 00:07:00,560 そして私は、それぞれを印刷したい 独自の行上の文字。 163 00:07:00,560 --> 00:07:02,550 だから私は置くつもりです そこに少しバックスラッシュのn。 164 00:07:02,550 --> 00:07:03,640 閉じる引用。 165 00:07:03,640 --> 00:07:06,250 >> そして今、私はここで何かをしたい。 166 00:07:06,250 --> 00:07:10,610 私はプリントアウトしたい 文字列内の特定の文字、 167 00:07:10,610 --> 00:07:13,670 秒、私は繰り返し処理だとして ゼロから最大6台の上。 168 00:07:13,670 --> 00:07:17,150 言い換えれば、私はしたい sのi番目の文字を印刷します。 169 00:07:17,150 --> 00:07:18,420 今、どのように私はこれを行うことができますか? 170 00:07:18,420 --> 00:07:21,550 >> まあずっと箱のよう ここではこの表現、 171 00:07:21,550 --> 00:07:25,560 種類の、ボクシング​​の概念を想起させる あなたは、同様にそれを行うことができ、中の手紙 172 00:07:25,560 --> 00:07:32,630 構文的に単純に指定することで、C言語で、 私は、文字i番目の年代をプリントアウトしたいと思います。 173 00:07:32,630 --> 00:07:35,640 角括弧を使用した コンピュータのキーボードで 174 00:07:35,640 --> 00:07:38,910 USキーボード上にあることを 一般的に、あなたのリターンキーの上。 175 00:07:38,910 --> 00:07:42,630 >> だから、これは非常に適切ではありません まだ、あなたは気づいている可能性がある。 176 00:07:42,630 --> 00:07:44,780 しかし、私はの種類に行くよ やみくもにここに押し進める。 177 00:07:44,780 --> 00:07:47,020 そして、私は、文字列0を作るするつもりです。 178 00:07:47,020 --> 00:07:50,860 私はこれを行う前に、しかし、私たちどうかを見てみましょう いくつかの一般的な間違いを予想することはできません。 179 00:07:50,860 --> 00:07:52,844 これは、コンパイルしようとしていますか? 180 00:07:52,844 --> 00:07:54,510 いいえ、私は物事の全体の束が欠けている。 181 00:07:54,510 --> 00:07:55,280 私が聞いたライブラリ。 182 00:07:55,280 --> 00:07:58,480 >> だから、ヘッダファイル 私はここに追加したいのでしょうか? 183 00:07:58,480 --> 00:07:59,205 うん。 184 00:07:59,205 --> 00:08:01,580 >> 聴衆:あなたが必要とする 標準I / O [聞き取れない] 185 00:08:01,580 --> 00:08:02,663 >> DAVID J.マラン:優秀。 186 00:08:02,663 --> 00:08:06,060 だから私は、標準的なI / Oを必要としています。何のために 目的は、私は、標準的なI / Oをしたいですか? 187 00:08:06,060 --> 00:08:06,670 printfのために。 188 00:08:06,670 --> 00:08:09,220 だから、stdio.hのが含まれています。 189 00:08:09,220 --> 00:08:13,490 そして、あなたはまた私が含まれていることを提案する どのような理由のためCS50ライブラリ? 190 00:08:13,490 --> 00:08:14,650 文字列が指定されています。 191 00:08:14,650 --> 00:08:17,780 だから私たちは何が表示されます CS50のライブラリがやっている 192 00:08:17,780 --> 00:08:19,260 文字列のこの概念を作成します。 193 00:08:19,260 --> 00:08:21,930 しかし、今のところ、あなただけ考えることができます それの実際のデータ型として。 194 00:08:21,930 --> 00:08:23,596 >> だから、少しクリーンアップしているようだ。 195 00:08:23,596 --> 00:08:27,060 そして今、私が先に行くつもりです 実際の文字列は0を作るのですか。 196 00:08:27,060 --> 00:08:27,700 コンパイルされた。 197 00:08:27,700 --> 00:08:28,370 だから、良いことだ。 198 00:08:28,370 --> 00:08:32,799 だから私は、私たちができるズームましょう./string0 より密接に何が起こっているかを参照してください。 199 00:08:32,799 --> 00:08:33,850 入力してください。 200 00:08:33,850 --> 00:08:37,789 Z-A-M-Y-L-Aを入力します。 201 00:08:37,789 --> 00:08:39,440 そして、私たちはZamyla名にプリントアウトしました。 202 00:08:39,440 --> 00:08:40,409 >> だから、かなり良いです。 203 00:08:40,409 --> 00:08:43,220 だから今のは先に行くとしましょう 今後、このプログラムを実行し、 204 00:08:43,220 --> 00:08:45,659 と祈るのフルネームを入力します。 205 00:08:45,659 --> 00:08:46,450 サプライズ、驚き。 206 00:08:46,450 --> 00:08:48,021 入力してください。 207 00:08:48,021 --> 00:08:48,520 うーん。 208 00:08:48,520 --> 00:08:51,750 私たちは祈るの印刷されていません 正しく完全なファーストネーム。 209 00:08:51,750 --> 00:08:54,250 さて、これは中に明らかにする必要があります なぜなら何の追想、 210 00:08:54,250 --> 00:08:57,010 愚かな設計上の決定、のようなもの? 211 00:08:57,010 --> 00:08:59,590 >> ええ、私は、ハードコーディングされた 私のforループの内側に6。 212 00:08:59,590 --> 00:09:01,610 今、私はやったことだけのため 私はZamylaの名前を知っていた 213 00:09:01,610 --> 00:09:02,776 6文字になる予定だった。 214 00:09:02,776 --> 00:09:04,720 しかし、確かにこれはありません 一般的な解決策。 215 00:09:04,720 --> 00:09:07,720 だから、私たちがダイナミックにすることができますが判明 文字列の長さを把握 216 00:09:07,720 --> 00:09:10,440 strlen関数と呼ばれる関数を呼び出すことによって。 217 00:09:10,440 --> 00:09:12,840 >> 繰り返しますが、意図的に 簡潔にちょうど命名 218 00:09:12,840 --> 00:09:14,450 型にそれをより便利にします。 219 00:09:14,450 --> 00:09:17,170 しかし、それはと同義だ 文字列の長さを取得。 220 00:09:17,170 --> 00:09:23,190 私は自分の端末に戻って行くつもりです ウィンドウと、コンパイラを再実行してください。 221 00:09:23,190 --> 00:09:24,170 しかし、それは私に叫んでいます。 222 00:09:24,170 --> 00:09:29,130 暗黙的にライブラリ関数を宣言 unsigned int型const--ではstrlen 223 00:09:29,130 --> 00:09:29,780 私は迷ってしまいました。 224 00:09:29,780 --> 00:09:30,590 完全に。 225 00:09:30,590 --> 00:09:32,940 >> だから、特にあなたのように 目はオーバー釉を開始 226 00:09:32,940 --> 00:09:36,000 このようなエラーメッセージが、中心とした 正直最初のいくつかの単語について。 227 00:09:36,000 --> 00:09:38,590 私たちは、問題がであ​​る知っている 8行目、ここに示されているように。 228 00:09:38,590 --> 00:09:40,500 そして、それは文字列0.cにあります。 229 00:09:40,500 --> 00:09:43,580 暗黙的に宣言 ライブラリ関数strlen関数。 230 00:09:43,580 --> 00:09:47,000 だから一般的に起こっている エラーメッセージのパターンであっても。 231 00:09:47,000 --> 00:09:49,190 暗黙的に何かを宣言。 232 00:09:49,190 --> 00:09:53,250 >> だから要するに、私が見えたものを持っている ここでは、ライン8に対して行っている。 233 00:09:53,250 --> 00:09:56,880 かもしれないどのような解決策が偶数になるようにして あなた自身はstrlen使ったことがない場合はどうなりますか? 234 00:09:56,880 --> 00:09:58,907 >> 聴衆:異なるライブラリの一部? 235 00:09:58,907 --> 00:10:00,740 DAVID J.マラン:パート 別のライブラリの。 236 00:10:00,740 --> 00:10:02,400 だから、それはいわば、宣言されています。 237 00:10:02,400 --> 00:10:07,510 これは、いくつかのファイルに記載されている stdio.hのとCS50.h.以外の 238 00:10:07,510 --> 00:10:09,179 今では、どこで定義されている? 239 00:10:09,179 --> 00:10:12,220 正直に言うと、あなただけす​​る必要がどちらか あなたの頭の上からこれを知って、 240 00:10:12,220 --> 00:10:13,640 またはあなたはこれをGoogleと見つける。 241 00:10:13,640 --> 00:10:18,150 または私はCS50で開かれましたが、これを知っている ターミナルプログラムを、アプライアンス、どの 242 00:10:18,150 --> 00:10:22,200 ちょうど大、フルスクリーンバージョンです geditののウィンドウの下部には何だ。 243 00:10:22,200 --> 00:10:24,970 >> そして、それはそこだと判明 と呼ばれる同様に簡潔なコマンド、 244 00:10:24,970 --> 00:10:29,280 あなたが入力した場合、マニュアルは、man 関数の名前と入力してEnterキーを押し、 245 00:10:29,280 --> 00:10:32,240 あなたはかなり戻って取得します 難解なドキュメント。 246 00:10:32,240 --> 00:10:35,299 それは、その一般的にテキストのみだ このような小さなものになります。 247 00:10:35,299 --> 00:10:37,090 それは少し圧倒だ 一見。 248 00:10:37,090 --> 00:10:39,048 しかし、率直に言って、私はするつもりだ 私の目はオーバー釉ましょう 249 00:10:39,048 --> 00:10:41,930 部分のみに焦点を当てる 私はちょっと気に。 250 00:10:41,930 --> 00:10:42,780 >> どのこれです。 251 00:10:42,780 --> 00:10:45,470 どの構造的のように見える 何か私が精通してんだ。 252 00:10:45,470 --> 00:10:48,080 実際、manページなので、 話すこと、を教えてくれます 253 00:10:48,080 --> 00:10:51,590 どのようにヘッダは、関数ファイル strlenのように定義されています。 254 00:10:51,590 --> 00:10:54,170 だから私はgeditのにすぐに戻って行くつもりです。 255 00:10:54,170 --> 00:10:59,070 そして、私は先に行くつもりだと ここに追加します。#include 256 00:10:59,070 --> 00:11:00,480 ファイルを保存します。 257 00:11:00,480 --> 00:11:04,300 >> 私は画面をクリアするつもりだ あなたが思ってきた場合は、Lを制御します。 258 00:11:04,300 --> 00:11:08,210 そして、私はメイクを再実行するつもりです string.0、今回コンパイルします。 259 00:11:08,210 --> 00:11:11,790 ./string.0 Zamyla。 260 00:11:11,790 --> 00:11:15,020 それは私が行こう動作するように見えた 先とダベンポートでそれを再実行してください。 261 00:11:15,020 --> 00:11:15,860 入力してください。 262 00:11:15,860 --> 00:11:17,730 そして、それは、あまりにも、動作するように見えた。 263 00:11:17,730 --> 00:11:21,220 >> だから私たちは、これよりも少し良く行うことができます しかし、私たちはきちんと物事を開始することができます 264 00:11:21,220 --> 00:11:23,257 少しだけアップする。 265 00:11:23,257 --> 00:11:25,590 そして、私は実際にに行くよ 今もうひとつを紹介します。 266 00:11:25,590 --> 00:11:28,930 私が先に行くつもりだと 別のファイルでこれを保存します。 267 00:11:28,930 --> 00:11:31,770 そして、私はコールするつもりだ このファイルstring1.cちょうど 268 00:11:31,770 --> 00:11:34,620 コー​​ドと一致しているように あなたがオンラインで見つけることができるでしょう。 269 00:11:34,620 --> 00:11:37,050 >> そして、それでは中に集中しましょう 全く同じコード。 270 00:11:37,050 --> 00:11:39,000 それは私がしたことが判明 撮影の一種であっ 271 00:11:39,000 --> 00:11:42,600 私のラップトップその事実を付与されたため、 ひいては、CS50アプライアンス 272 00:11:42,600 --> 00:11:47,450 多くのメモリ、たくさん持っている RAM、領域のバイトがたくさん 273 00:11:47,450 --> 00:11:48,920 その中で私は、文字列を格納することができます。 274 00:11:48,920 --> 00:11:53,560 >> しかし、現実には、私は長いと入力した場合 十分に、かつ十分なキーストローク、 275 00:11:53,560 --> 00:11:56,170 私は、理論タイプでし もっと文字数 276 00:11:56,170 --> 00:11:58,830 私のコンピュータより 物理的にメモリを持っています。 277 00:11:58,830 --> 00:11:59,830 そして、これは問題である。 278 00:11:59,830 --> 00:12:03,050 多くのintができる唯一の​​ような 理論的には、非常に高いカウント、 279 00:12:03,050 --> 00:12:06,600 あなただけの非常に多くの文字を詰め込むことができる コンピュータのRAMまたはランダムに 280 00:12:06,600 --> 00:12:07,920 アクセスメモリ。 281 00:12:07,920 --> 00:12:11,140 >> だから私はより良い予想していた この問題も、 282 00:12:11,140 --> 00:12:13,660 それは珍しいかもしれませんが コー​​ナーケース、いわば。 283 00:12:13,660 --> 00:12:15,670 発生する可能性が、多くの場合、それを発生しません。 284 00:12:15,670 --> 00:12:18,815 それが起こるとした場合、私はしないでください 予想し、それのためのプログラム、 285 00:12:18,815 --> 00:12:20,300 私のプログラムは何を知っている行うことができます。 286 00:12:20,300 --> 00:12:22,220 フリーズ、ハングアップ、再起動、何でも。 287 00:12:22,220 --> 00:12:24,490 何か起こるかもしれないと予想。 288 00:12:24,490 --> 00:12:27,120 >> だから、私はするつもりです 今、今後は本当に、 289 00:12:27,120 --> 00:12:31,630 今まで盲目的に私の前にある sのような変数を使用すること 290 00:12:31,630 --> 00:12:36,790 の戻り値が割り当てられている のgetStringのようないくつかの他の機能、 291 00:12:36,790 --> 00:12:40,200 私は確認するつもりだ その値が有効である。 292 00:12:40,200 --> 00:12:44,280 だから私は読んだから知っている のgetString用CS50のマニュアル、 293 00:12:44,280 --> 00:12:49,020 最終的に私たちがあなたを指します、 それのgetStringは、特別なシンボルを返す 294 00:12:49,020 --> 00:12:53,610 全部でNULL、N-U-L-Lと呼ばれる 何かがうまくいかない場合には、キャップ。 295 00:12:53,610 --> 00:12:55,650 >> だから通常は、それは文字列を返します。 296 00:12:55,650 --> 00:12:59,700 しかし、それは、N-U-L-L--を返すそうでない場合は、 私たちは最終的には実際にどのようなものが表示されます 297 00:12:59,700 --> 00:13:01,790 means--ちょうど手段 何かが悪い起こった。 298 00:13:01,790 --> 00:13:05,560 さて、これは、非常にスクラッチのように、意味 私はここにC言語での状態を確認することができ、 299 00:13:05,560 --> 00:13:08,830 sが等しくないNULLがない場合。 300 00:13:08,830 --> 00:13:11,930 あなたは前にこれを見ていませんでしたのであれば、 これは単なる等しくないことを意味します。 301 00:13:11,930 --> 00:13:15,290 >> だから、の反対だ 、リコール等しいイコール、、 302 00:13:15,290 --> 00:13:18,940 シングルとは異なります 代入である、等しい。 303 00:13:18,940 --> 00:13:23,030 だから、sが等しくない場合 NULL、だけにしてください 304 00:13:23,030 --> 00:13:25,980 私は、これらのコード行を実行したい。 305 00:13:25,980 --> 00:13:28,080 そのように、換言すれば、 私は盲目的でのダイビングの前に 306 00:13:28,080 --> 00:13:30,919 と繰り返しを開始し s以上、及びそれを治療する 307 00:13:30,919 --> 00:13:33,710 それは、一連のであるかのように 文字は、私が最初にチェックするつもりだ 308 00:13:33,710 --> 00:13:37,900 ちょっと待っ、絶対にないよさ この特別な値に等しく、NULL? 309 00:13:37,900 --> 00:13:40,030 >> そうであれば、悪いことが起こる可能性があるため。 310 00:13:40,030 --> 00:13:43,080 そして今のところ、その悪いことを前提とし 起こっては、プログラムがクラッシュしたことを意味する、 311 00:13:43,080 --> 00:13:45,070 あなたが必ずしも回復することはできません。 312 00:13:45,070 --> 00:13:46,800 だから率直に言って、それは醜い見える。 313 00:13:46,800 --> 00:13:48,660 それは一目さてちょっと紛らわしいです。 314 00:13:48,660 --> 00:13:50,780 しかし、これはより多くなります やがてお馴染み。 315 00:13:50,780 --> 00:13:52,920 >> しかし、私は提案するつもりです 今つの他の改善。 316 00:13:52,920 --> 00:13:54,660 つまり、正確さの向上です。 317 00:13:54,660 --> 00:13:58,800 私のプログラムはあるため、今より正確である メモリ足りないまれなケースでの 318 00:13:58,800 --> 00:14:01,180 存在し、私はそれを処理します、 と私は何もしないでしょう。 319 00:14:01,180 --> 00:14:02,680 私は、少なくともクラッシュすることはありません。 320 00:14:02,680 --> 00:14:05,000 >> しかし、それでは、ここで最終版をやらせる。 321 00:14:05,000 --> 00:14:07,690 そして、ファイルはstring2.cと呼ばれる。 322 00:14:07,690 --> 00:14:10,190 私はそれを貼り付けるつもりだ ちょっとで同じコード、 323 00:14:10,190 --> 00:14:14,210 そして私はこれを強調するつもりです ちょっとはこちらのライン、11、、​​。 324 00:14:14,210 --> 00:14:18,179 今、現実には、そのスマートなコンパイラである クラングのように私たちのためにこの問題を解決できた 325 00:14:18,179 --> 00:14:19,970 舞台裏で 私たちが今まで知らずに。 326 00:14:19,970 --> 00:14:24,670 しかし、ここでこのことについて考えてみましょう 根本的に問題のある設計など。 327 00:14:24,670 --> 00:14:29,010 >> このコード行は、もちろん、あり と言って、いくつかの変数iが0に初期化してください。 328 00:14:29,010 --> 00:14:30,260 これはかなり簡単です。 329 00:14:30,260 --> 00:14:34,691 そして再びこれは何ですか ステートメントは、ここでは、私はやって、+ +? 330 00:14:34,691 --> 00:14:37,066 私たちは前にそれを見たが、私たちました 実際にそれについて話しませんでした。 331 00:14:37,066 --> 00:14:37,900 >> 聴衆は、iをインクリメントする。 332 00:14:37,900 --> 00:14:39,191 >> DAVID J.マラン:インクリメント私。 333 00:14:39,191 --> 00:14:41,890 したがって、すべての繰り返しでスルー このループは、サイクル毎に、 334 00:14:41,890 --> 00:14:43,570 あなたは1 iをインクリメントしている。 335 00:14:43,570 --> 00:14:45,740 だから、大きく、そして大きくなって、 ループが終了するまで、大きく。 336 00:14:45,740 --> 00:14:46,810 それはどのように終了するのですか? 337 00:14:46,810 --> 00:14:49,430 さて、この真ん中があります 私たちは以前に使用した状態。 338 00:14:49,430 --> 00:14:52,500 あなたには見てきた Pセット内のウォークスルー。 339 00:14:52,500 --> 00:14:53,880 >> しかし、この言葉は何ですか? 340 00:14:53,880 --> 00:14:58,352 ので、次のループを実行し 長い私は何よりも小さいなどの? 341 00:14:58,352 --> 00:14:59,810 聴衆:文字列の長さ。 342 00:14:59,810 --> 00:15:01,518 DAVID J.マラン: 文字列の長さ。 343 00:15:01,518 --> 00:15:04,300 だから、それはかなりきれいに変換します その意味で英語に。 344 00:15:04,300 --> 00:15:08,810 さて問題は、私はあることを毎回ある 理論的にはこのループを反復、 345 00:15:08,810 --> 00:15:10,000 私はこの質問をしています。 346 00:15:10,000 --> 00:15:12,250 私は、sの文字列の長さよりも小さいですか? 347 00:15:12,250 --> 00:15:14,500 私は、sの文字列の長さよりも小さいですか? 348 00:15:14,500 --> 00:15:18,380 >> 今私は、各繰り返しで変化している? 349 00:15:18,380 --> 00:15:18,880 それがある。 350 00:15:18,880 --> 00:15:19,629 + +のため。 351 00:15:19,629 --> 00:15:21,700 したがって、すべての反復iが大きくなっている。 352 00:15:21,700 --> 00:15:25,411 しかし、あるsは大きくなったり、 小さい、またはまったく変更する? 353 00:15:25,411 --> 00:15:25,910 いいえ 354 00:15:25,910 --> 00:15:30,240 軸の一つは、設計上そのように それに沿って私たちはコードを評価しよう 355 00:15:30,240 --> 00:15:32,610 クラスでは、これは一種の愚かな感じ。 356 00:15:32,610 --> 00:15:34,690 >> あなたは、文字通りあるように、 すべての繰り返しで 357 00:15:34,690 --> 00:15:37,110 このループの求めて 再び同じいまいましい質問、 358 00:15:37,110 --> 00:15:40,770 そして再び、そして再び、文字通り それは変更するつもりはありません。 359 00:15:40,770 --> 00:15:44,220 私は、sに触れていないよ、少なくとも場合 sの内容を変更しようとしている。 360 00:15:44,220 --> 00:15:46,610 だから私は、これよりも少し良く行うことができます。 361 00:15:46,610 --> 00:15:49,530 >> そして、私がやろうとしてたんだけどありません 私はちょうど1変数を宣言し、 362 00:15:49,530 --> 00:15:53,330 2番目の変数は私は、任意によ しかし従来は、nはそれを呼び出す。 363 00:15:53,330 --> 00:15:55,940 割り当てnに等しい sの文字列の長さ。 364 00:15:55,940 --> 00:15:59,090 そしてこっちは、私はするつもりだ そう、賢い少し最適化を行います 365 00:15:59,090 --> 00:16:03,460 一日の終わりには、次のことを話す 正しい劣ら正しいこれ以上ありませんか 366 00:16:03,460 --> 00:16:04,260 以前より。 367 00:16:04,260 --> 00:16:05,500 しかし、それはより良いデザインです。 368 00:16:05,500 --> 00:16:09,480 私が使用しているという事実 少ない時間、より少ないCPUサイクルなので、 369 00:16:09,480 --> 00:16:14,040 同じことを答えるために、いわば 質問が、一度だけ。 370 00:16:14,040 --> 00:16:17,870 >> その一般的な上の任意の質問 改善の原理は、 371 00:16:17,870 --> 00:16:21,294 、プログラムの効率を言う? 372 00:16:21,294 --> 00:16:21,991 うん? 373 00:16:21,991 --> 00:16:23,699 聴衆:なぜあなたは [聞き取れない]を使用するのか? 374 00:16:23,699 --> 00:16:25,760 375 00:16:25,760 --> 00:16:27,010 DAVID J.マラン:良い質問。 376 00:16:27,010 --> 00:16:30,690 では、なぜ私たちはの終わりに+ +を置けばいい 私の代わりに私の始まり? 377 00:16:30,690 --> 00:16:33,070 この場合には、有している 機能的な影響はありません。 378 00:16:33,070 --> 00:16:36,670 そして一般的には、私がする傾向がある 後置演算子を使用する 379 00:16:36,670 --> 00:16:41,750 それはもう少し明確ようだように、 動作が起こっているときに。 380 00:16:41,750 --> 00:16:46,670 >> なじみのない人のために、もう一つがあります 文により、あなたは+ +私を行うことができます。 381 00:16:46,670 --> 00:16:48,747 これらは、機能的である この場合の等価 382 00:16:48,747 --> 00:16:51,080 他には何もありませんので、 その増分の周り。 383 00:16:51,080 --> 00:16:54,435 しかし、あなたが思い付くことができます ケースやコードの行 384 00:16:54,435 --> 00:16:55,810 その中でそれが違いになります。 385 00:16:55,810 --> 00:16:57,810 だから一般的に、私たちにはありません でも、これについて話しています。 386 00:16:57,810 --> 00:17:00,690 率直に言って、それはあなたになりますので コー​​ドセクシー、ソートのスリッカー、 387 00:17:00,690 --> 00:17:01,776 と少ない文字。 388 00:17:01,776 --> 00:17:04,859 しかし、現実には、それは多くの困難だし、 私は私が私の心をラップすることさえのために、と思う 389 00:17:04,859 --> 00:17:07,319 時にはその周りに、 操作の順序。 390 00:17:07,319 --> 00:17:09,750 余談として、もしそうであれば、あなた 本当にこれが好きではない、 391 00:17:09,750 --> 00:17:14,650 これはちょっとセクシーであっても、 見て、あなたはまた、I + = 1行うことができます 392 00:17:14,650 --> 00:17:18,880 そのうちの醜いバージョンです 後置インクリメントのために同じアイデア。 393 00:17:18,880 --> 00:17:22,250 >> 私はこれ、あなたを言う それをからかうべきであり、 394 00:17:22,250 --> 00:17:25,140 しかし、あなたのように、コードを見に来る やがて美しいもの。 395 00:17:25,140 --> 00:17:27,160 >> [笑い] 396 00:17:27,160 --> 00:17:28,410 >> DAVID J.マラン:右ですか? 397 00:17:28,410 --> 00:17:29,360 うん。 398 00:17:29,360 --> 00:17:30,480 途中で質問。 399 00:17:30,480 --> 00:17:32,146 >> 聴衆:あなたはint型nを言う必要がありますか? 400 00:17:32,146 --> 00:17:34,020 DAVID J.マラン:あなたが行う int型nを言う必要はない。 401 00:17:34,020 --> 00:17:37,670 だから私たちはintは既に述べているので、 あなたは再びそれを言う必要はありません。 402 00:17:37,670 --> 00:17:41,820 漁獲量は、nはならないことである 私と同じデータ型である。 403 00:17:41,820 --> 00:17:43,310 だから、ここでは単に利便性です。 404 00:17:43,310 --> 00:17:44,058 うん。 405 00:17:44,058 --> 00:17:47,806 >> 聴衆:あなたが上に行くことはできます 印刷文字のブラケット再びどこ? 406 00:17:47,806 --> 00:17:48,930 DAVID J.マラン:もちろんです。 407 00:17:48,930 --> 00:17:52,110 だから、%cは、最後からリコール 時間は、ちょうどプレースホルダです。 408 00:17:52,110 --> 00:17:53,930 ここはchar型を置くことを意味します。 409 00:17:53,930 --> 00:17:56,780 バックスラッシュnは、もちろん、ただ 手段は、ここに改行を入れて。 410 00:17:56,780 --> 00:17:59,540 ちょうど今、残されるように、 新しい構文のこの作品。 411 00:17:59,540 --> 00:18:03,730 そして、これは文字通りグラブ、と言っている 文字列は、sと呼ばれ、その取りに行く 412 00:18:03,730 --> 00:18:06,050 i番目の文字、いわば。 413 00:18:06,050 --> 00:18:10,590 >> そして私はi番目の文字を言い続ける このループの各繰り返しであるため 414 00:18:10,590 --> 00:18:14,540 私たちが印刷しているかのように、それはだ 、初のブラケット0、アウト 415 00:18:14,540 --> 00:18:15,780 プログラマとして言うかもしれない。 416 00:18:15,780 --> 00:18:18,680 その後のその後、ブラケット1よ ブラケット2、次いで3、4。 417 00:18:18,680 --> 00:18:21,610 しかし、もちろん、それは可変ですが、 私はちょうど私でそれを表現しています。 418 00:18:21,610 --> 00:18:23,900 >> キー、しかし、実現することで、 あなたがいませんでした場合は特に 419 00:18:23,900 --> 00:18:26,358 この世界に順応して プログラミング、私たちはすべての 420 00:18:26,358 --> 00:18:28,950 ゼロからカウントするようで、お奨め 今、ゼロからカウントを開始。 421 00:18:28,950 --> 00:18:35,130 そのため、文字列、最初の文字、 Zamylaにおけるzがために良くも悪くもある 422 00:18:35,130 --> 00:18:40,490 位置番号をゼロに生きて行く。 423 00:18:40,490 --> 00:18:48,210 >> すべての権利なので、私が持ってみましょう ここに戻ってZamylaへ問い合わせ 424 00:18:48,210 --> 00:18:50,746 本当に何が起こっているかを参照してください。 ボンネットの下に上。 425 00:18:50,746 --> 00:18:52,370 だから、型キャストのこの概念があります。 426 00:18:52,370 --> 00:18:53,800 あなたが実際に持っているかもしれません すでにこのと共演、 427 00:18:53,800 --> 00:18:55,970 多分ハッカーのための Pのエディションは1に設定してください。 428 00:18:55,970 --> 00:19:00,320 しかし、型キャストだけを指し、 Cおよび他のいくつかの言語での能力 429 00:19:00,320 --> 00:19:03,170 別のデータ型に変換する。 430 00:19:03,170 --> 00:19:05,450 >> 今、私たちはこれをどのように表示される場合があります かなり素直に? 431 00:19:05,450 --> 00:19:08,530 したがって、このリコールは、始まりです 英語のアルファベットの。 432 00:19:08,530 --> 00:19:11,265 そして、文脈、リコールから のような一週間前にASCIIです。 433 00:19:11,265 --> 00:19:13,790 米国標準コード 情報交換用。 434 00:19:13,790 --> 00:19:17,080 本当に長い道のりどれ 文字のマッピングをというのが 435 00:19:17,080 --> 00:19:19,370 数字であり、数字から文字へ。 436 00:19:19,370 --> 00:19:22,940 >> だからここに、M、ドットドットを通して ドット、ラインとアップ、リコール、 437 00:19:22,940 --> 00:19:25,582 アップ時に65進数。 438 00:19:25,582 --> 00:19:27,290 そして、私たちは話をしなかった 明示的にこのことについて、 439 00:19:27,290 --> 00:19:29,850 しかし確実に似てあります 小文字用数字。 440 00:19:29,850 --> 00:19:30,820 そして実際、あります。 441 00:19:30,820 --> 00:19:33,730 世界は何年かを決め 前その小さな、小文字、 442 00:19:33,730 --> 00:19:35,020 97になるだろう。 443 00:19:35,020 --> 00:19:38,010 そして少しbが起こっている など98であること、そしてする。 444 00:19:38,010 --> 00:19:40,200 >> そしてほかのキーにするため あなたのキーボードが、あります 445 00:19:40,200 --> 00:19:42,190 ビットの同様のパターンになるだろう。 446 00:19:42,190 --> 00:19:44,540 または同等に、小数。 447 00:19:44,540 --> 00:19:47,110 手元そこで問題、 その後、私たちはどのようにできている 448 00:19:47,110 --> 00:19:49,400 実際にフードの下にこれを参照してください? 449 00:19:49,400 --> 00:19:51,539 だから私は再びgeditの所へ行くつもりです。 450 00:19:51,539 --> 00:19:53,330 むしろ型より 最初からこの1、 451 00:19:53,330 --> 00:19:55,330 私が先に行くつもりだと ちょうど何かを開く 452 00:19:55,330 --> 00:19:58,350 今日のコードからASCIIのゼロと呼ばれる。 453 00:19:58,350 --> 00:20:01,210 >> とASCIIのゼロは次のようになります。 454 00:20:01,210 --> 00:20:02,710 それでは、この問題を回避私たちの心をラップしましょう​​。 455 00:20:02,710 --> 00:20:04,969 したがって、最初に、私はコメントしました いいですコード、。 456 00:20:04,969 --> 00:20:07,010 それは文字通りだから 何を期待するように私に言って、 457 00:20:07,010 --> 00:20:08,950 大文字のマッピングを表示します。 458 00:20:08,950 --> 00:20:13,690 今、私は非常に私は何かわからない そのことによって意味、それでは推測しましょう​​。 459 00:20:13,690 --> 00:20:16,870 >> 英語では、多分 やや専門的な英語、 460 00:20:16,870 --> 00:20:20,660 ライン18は何を表示されません 私たちのためにやっているのですか? 461 00:20:20,660 --> 00:20:21,500 わずか18行目。 462 00:20:21,500 --> 00:20:22,430 それは何を誘導するのか? 463 00:20:22,430 --> 00:20:25,192 何がここにキックオフになるだろう? 464 00:20:25,192 --> 00:20:26,100 >> 聴衆:ループ。 465 00:20:26,100 --> 00:20:26,630 >> DAVID J.マラン:ループ。 466 00:20:26,630 --> 00:20:28,463 そして、どのように何回ある 反復するために行くのか? 467 00:20:28,463 --> 00:20:31,562 468 00:20:31,562 --> 00:20:33,270 聴衆:[介在VOICES] 6回。 469 00:20:33,270 --> 00:20:34,830 DAVID J.マラン:ない6回。 470 00:20:34,830 --> 00:20:35,840 聴衆:26回。 471 00:20:35,840 --> 00:20:36,560 DAVID J.マラン:26回。 472 00:20:36,560 --> 00:20:37,060 ええ、申し訳ありません。 473 00:20:37,060 --> 00:20:37,960 26回。 474 00:20:37,960 --> 00:20:38,460 なぜ? 475 00:20:38,460 --> 00:20:41,590 まあ、それは少し奇妙だが、 私は65からカウントを開始しました。 476 00:20:41,590 --> 00:20:43,300 どちらが奇妙な、しかし間違っていない。 477 00:20:43,300 --> 00:20:44,610 それは言うあたり悪くない。 478 00:20:44,610 --> 00:20:46,980 そして、私はそれだけをやっている なぜなら、この例の場合、 479 00:20:46,980 --> 00:20:50,455 私は、ちょっと期待しています その資本Aは65だった。 480 00:20:50,455 --> 00:20:53,330 さて、これは最もエレガントではありません ハードコードの種類にこれを行う方法、 481 00:20:53,330 --> 00:20:56,130 難解な値は誰 今までに覚えておくことが期待されている。 482 00:20:56,130 --> 00:21:00,155 >> しかし、今のところ、私はあることに気付く 65プラス26を介してこれを行う。 483 00:21:00,155 --> 00:21:03,030 どうやら私もしたくないので、 私の頭の中で計算を行うには。 484 00:21:03,030 --> 00:21:04,440 だから私は、コンパイラがそれをやらせるよ。 485 00:21:04,440 --> 00:21:08,600 しかし、その後、各ループ上の、各反復 ループ、私は私をインクリメントよ。 486 00:21:08,600 --> 00:21:10,196 >> だから今、これは少し不可解に見える。 487 00:21:10,196 --> 00:21:13,320 しかし、私たちは基本的な構成を持っている必要があります これを理解するとブロックされます。 488 00:21:13,320 --> 00:21:15,510 %cはchar型のためだけのプレースホルダです。 489 00:21:15,510 --> 00:21:19,010 %iはint型のプレースホルダです。 490 00:21:19,010 --> 00:21:23,310 そして、これを使用してその判明 新しい構文、この括弧付きなので、 491 00:21:23,310 --> 00:21:26,100 話すので、データ型に 括弧の中の、 492 00:21:26,100 --> 00:21:32,270 私が扱うようにコンパイラに強制することができます 私は整数ですが、charとしてではない。 493 00:21:32,270 --> 00:21:35,520 >> これにより私に文字を示す その数に相当する。 494 00:21:35,520 --> 00:21:37,986 さてここでダウン、このコード ほとんど同じです。 495 00:21:37,986 --> 00:21:39,860 私はちょうど作りたかった スーパー明白な事実 496 00:21:39,860 --> 00:21:42,095 私は97で始めていることを、 これを小文字されています。 497 00:21:42,095 --> 00:21:44,080 最大26文字以上を経てオン。 498 00:21:44,080 --> 00:21:46,970 そして、私は、再びdoing--よ 私をキャスティング、いわば。 499 00:21:46,970 --> 00:21:49,160 または型キャストiの、いわば。 500 00:21:49,160 --> 00:21:51,420 >> int型からchar型へ。 501 00:21:51,420 --> 00:21:55,760 だから、最終的な結果があることを行っている、 率直に言って、情報は私たちがすでに知っている。 502 00:21:55,760 --> 00:21:59,411 私はするつもりだ アスキー-0は、cに点在していないdot--。 503 00:21:59,411 --> 00:22:02,160 通知は、おそらくと判断 私は誤って行ったように間違い。 504 00:22:02,160 --> 00:22:03,820 アスキー-0にしてください。 505 00:22:03,820 --> 00:22:06,090 今私は./ascii-0をするつもりです。 506 00:22:06,090 --> 00:22:09,050 私はズームイン、残念ながらよ それは画面がスクロールになるだろう。 507 00:22:09,050 --> 00:22:15,060 しかし、私たちはどこにチャート全体を参照してください 97のマップ、98 Bのマップ、 508 00:22:15,060 --> 00:22:18,931 私たちは、さらに上にスクロールした場合 もちろん、65にマッピングされます。 509 00:22:18,931 --> 00:22:21,180 だから、これはと言うことだけです。 私たちは何を説教してきた、 510 00:22:21,180 --> 00:22:25,310 この等価性は、そこにある 現実には実際にはケース。 511 00:22:25,310 --> 00:22:28,000 だから、これを迅速に修正。 512 00:22:28,000 --> 00:22:31,220 私はアスキー1.Cを開いてみましょう。 513 00:22:31,220 --> 00:22:38,070 そして、並べ替え、この巧妙に気付く の、このの明確化。 514 00:22:38,070 --> 00:22:41,770 これは、ASCII-1.Cで、 このクレイジーな事に気づく。 515 00:22:41,770 --> 00:22:45,120 >> そして、これは本当に心に届く コンピュータがやっているの。 516 00:22:45,120 --> 00:22:48,150 でも、私たち人間はあろうけれども letters--の面ではカウントされませ 517 00:22:48,150 --> 00:22:50,380 私は考え始めていない、 大丈夫、次にB、 518 00:22:50,380 --> 00:22:52,590 と物理オブジェクトをカウントするものを使用しています。 519 00:22:52,590 --> 00:22:58,680 あなたは確かに私がしたいと言うことができます と呼ばれるいくつかの変数を初期化C-- 520 00:22:58,680 --> 00:23:03,220 私はこのanything--呼ばれるかもしれない そうcが資本Aに初期化される 521 00:23:03,220 --> 00:23:07,560 >> 一日の終わりに、コンピュータなぜなら あなたが保存しているかを気にしない、 522 00:23:07,560 --> 00:23:10,170 それだけであなたが望むどのように気遣う その情報を提示する。 523 00:23:10,170 --> 00:23:13,560 どのようにコンピュータがします​​か ビットのパターンを解釈? 524 00:23:13,560 --> 00:23:16,320 だから、これは何か私ではありません 一般的にやってお勧めします。 525 00:23:16,320 --> 00:23:19,500 それは本当に例でしかありません あなたは絶対にできていることを伝える 526 00:23:19,500 --> 00:23:22,049 char型に整数を初期化します。 527 00:23:22,049 --> 00:23:24,090 下にあるため チャーのフードはもちろん、 528 00:23:24,090 --> 00:23:26,170 0から255までわずか数です。 529 00:23:26,170 --> 00:23:28,540 >> だから、確かにすることができます int型の中に置く。 530 00:23:28,540 --> 00:23:30,890 そして、何もこの 実証する私たちです 531 00:23:30,890 --> 00:23:34,040 1から変換することができます ここでは、別のタイプ、 532 00:23:34,040 --> 00:23:36,780 最終的には同じことを印刷する。 533 00:23:36,780 --> 00:23:44,760 そして、実際には、これは私が解決しますonline-- ここで、もう一度、これを言うためのものだった。 534 00:23:44,760 --> 00:23:48,610 私はオンラインでのクリーンアップしましょう​​、と私たちはよ 必要に応じてオンラインウォークスルーで見、 535 00:23:48,610 --> 00:23:50,280 何があっ意図していた。 536 00:23:50,280 --> 00:23:50,960 >> [OK]をクリックします。 537 00:23:50,960 --> 00:23:53,892 だから、最後の例は、今が関与 Aのaとb年代と、私たちはよ 538 00:23:53,892 --> 00:23:54,850 ワンランク上のものを取る。 539 00:23:54,850 --> 00:23:58,330 のaとb年代とSoと 時価総額のCさん 540 00:23:58,330 --> 00:24:01,560 と等価的には、してみましょう ここでは、この例を見てみましょう。 541 00:24:01,560 --> 00:24:02,752 もう一つのコード例。 542 00:24:02,752 --> 00:24:04,460 私たちは、のいずれかを開きます すでに行われ、私たちはそのように 543 00:24:04,460 --> 00:24:06,440 それを入力する必要はありません 最初からすべてのアウト。 544 00:24:06,440 --> 00:24:09,420 >> 予告見越して 私たちは、複数のヘッダーを使用している 545 00:24:09,420 --> 00:24:13,240 ある間でファイル、 私たちの新しい友人、string.hの。 546 00:24:13,240 --> 00:24:15,597 さて、これは最初に、見える 一見、少し不可解。 547 00:24:15,597 --> 00:24:18,180 しかし、私たちが理由ではないことができるかどうか見てみましょう ここで何が起こっているのかを介して。 548 00:24:18,180 --> 00:24:21,150 まず私は、ユーザーから文字列を取得し、 と私は、変数にその文字列を入れて 549 00:24:21,150 --> 00:24:22,286 いわゆるS。 550 00:24:22,286 --> 00:24:24,090 以前からペーストをコピーします。 551 00:24:24,090 --> 00:24:27,250 22行目では、私は明らかによ 正確に何をしている 552 00:24:27,250 --> 00:24:30,760 私は、一瞬前と私は繰り返し処理してい s内の文字を超える。 553 00:24:30,760 --> 00:24:34,780 >> そして、ここで新しいトリックを使用している 文字列の長さ、マイナーな最適化 554 00:24:34,780 --> 00:24:37,930 n個の文字列の長さを格納する、 むしろもう一度はstrlen呼び出すよりも、 555 00:24:37,930 --> 00:24:38,850 そして再び、そして再び。 556 00:24:38,850 --> 00:24:41,120 そして、ちょうどiがn未満であることを確認する。 557 00:24:41,120 --> 00:24:43,330 今ここに、物事を取得 ちょっと面白い。 558 00:24:43,330 --> 00:24:45,980 しかし、それは単にアプリケーションだ この同じ新発想の。 559 00:24:45,980 --> 00:24:48,470 英語が何にどのような 私が表現するのブラケット? 560 00:24:48,470 --> 00:24:51,772 561 00:24:51,772 --> 00:24:54,260 >> 聴衆:それぞれを数える 文字[聞き取れない]。 562 00:24:54,260 --> 00:24:55,926 >> DAVID J.マラン:各文字を数える。 563 00:24:55,926 --> 00:24:58,680 とにもより簡潔に、 sのブラケット私は何を表している? 564 00:24:58,680 --> 00:25:00,950 あなたは言うでしょう。 565 00:25:00,950 --> 00:25:04,084 ここにその場であなたを置くまでもありません。 566 00:25:04,084 --> 00:25:06,375 >> 聴衆:Well-- 567 00:25:06,375 --> 00:25:09,500 DAVID J.マラン:単語の場合is--もしそうであれば 文字列はstarts-- Zamyla、ある 568 00:25:09,500 --> 00:25:12,380 聴衆:--youに対処 文字separately-- 569 00:25:12,380 --> 00:25:13,690 DAVID J.マラン:良い。 570 00:25:13,690 --> 00:25:14,190 その通り。 571 00:25:14,190 --> 00:25:17,940 角括弧表記法を使用することができます 個別に各文字にアクセスするには、 572 00:25:17,940 --> 00:25:21,120 そうsのブラケット0になるだろう 文字列の最初の文字。 573 00:25:21,120 --> 00:25:24,110 Sブラケット1があることを行っている 第二、など。 574 00:25:24,110 --> 00:25:28,050 そこで質問私が求めている、 ここでは、この状態で何ですか? 575 00:25:28,050 --> 00:25:33,984 のS以上のi番目の文字です 以上を小文字に等しい? 576 00:25:33,984 --> 00:25:36,400 そして、これは、ここでは、何を意味するの 二重アンパサンドしますか? 577 00:25:36,400 --> 00:25:36,800 AUDIENCE(TOGETHER):そして。 578 00:25:36,800 --> 00:25:37,210 DAVID J.マラン:そして。 579 00:25:37,210 --> 00:25:38,418 これはちょうど同等です。 580 00:25:38,418 --> 00:25:42,310 そして、あなたがする必要が、Cではキーワードではありません 、うるさく、アンパサンドアンパサンドを使用します。 581 00:25:42,310 --> 00:25:47,520 そして、これは、逆に、求めているのです。 以下の文字i番目の年代 582 00:25:47,520 --> 00:25:49,030 小文字のaからz? 583 00:25:49,030 --> 00:25:52,440 そして再び、ここどこだ 基本となるの理解 584 00:25:52,440 --> 00:25:54,550 の実装 コンピュータは、理にかなっている。 585 00:25:54,550 --> 00:25:57,330 私が持っているにもかかわらず、それに注意してください あそこドットドットドット、 586 00:25:57,330 --> 00:26:04,410 小文字でaからzまでのようなものに見える アップ時に97からのすべての連続した​​値がアップする。 587 00:26:04,410 --> 00:26:07,820 >> 大文字で同じ65から始まる。 588 00:26:07,820 --> 00:26:10,410 だから持ち帰り、その後、 それが英語であり、 589 00:26:10,410 --> 00:26:12,760 あなたはどのように説明しますか 何行24しているのですか? 590 00:26:12,760 --> 00:26:15,736 591 00:26:15,736 --> 00:26:16,728 うん? 592 00:26:16,728 --> 00:26:21,575 >> 聴衆:24日にそれはどうかをチェックするだ 各文字が小文字であるかどうか。 593 00:26:21,575 --> 00:26:24,700 DAVID J.マラン:それはどうかをチェックするだ 各文字は小文字です。 594 00:26:24,700 --> 00:26:28,590 だから、より簡潔に、ある sの小文字のi番目の文字? 595 00:26:28,590 --> 00:26:30,690 つまり、私たちがしているすべてです 論理的に、ここで表現する、 596 00:26:30,690 --> 00:26:33,750 少しひそかに、しかし 最終的にはかなり素直。 597 00:26:33,750 --> 00:26:36,480 文字小文字のi番目のSのですか? 598 00:26:36,480 --> 00:26:40,130 >> もしそうであれば、ここでどこの事だ 少し心曲げを取得 599 00:26:40,130 --> 00:26:44,760 ちょっと、そうであれば、行く 先に文字をプリントアウト。 600 00:26:44,760 --> 00:26:47,360 だから、これは単なるプレースホルダで、 しかしどの文字? 601 00:26:47,360 --> 00:26:53,710 なぜ私はsのブラケット私をしています マイナスここにこの表現? 602 00:26:53,710 --> 00:26:55,110 >> さてここで、パターンに気づく。 603 00:26:55,110 --> 00:26:57,380 実際の数字はそれほど重要ではありません。 604 00:26:57,380 --> 00:27:02,700 しかし、97であることに気付く どれだけ離れて65から? 605 00:27:02,700 --> 00:27:03,560 >> 聴衆:32。 606 00:27:03,560 --> 00:27:04,480 >> DAVID J.マラン:32。 607 00:27:04,480 --> 00:27:06,890 どのように遠く離れた66〜98である? 608 00:27:06,890 --> 00:27:07,740 >> 聴衆:32。 609 00:27:07,740 --> 00:27:09,890 >> DAVID J.マラン:ビッグCからのリトルC? 610 00:27:09,890 --> 00:27:10,420 32。 611 00:27:10,420 --> 00:27:14,550 だからから32のホップがあります 別の手紙。 612 00:27:14,550 --> 00:27:17,790 だから率直に言って私は、可能性が それにこれを簡素化します。 613 00:27:17,790 --> 00:27:20,400 しかし、私は一種のハードコーディングしてい この低レベルで理解 614 00:27:20,400 --> 00:27:21,740 全く読者は今までないことを 理解しようとして。 615 00:27:21,740 --> 00:27:25,080 だから私は、私は、としてそれを一般化するつもりだ 小文字が大きいですね。 616 00:27:25,080 --> 00:27:28,400 私は大文字が知っている 皮肉にも小さな値、。 617 00:27:28,400 --> 00:27:33,216 >> しかし、これは実効的に等価である sのブラケットi番目から32を引くと言う。 618 00:27:33,216 --> 00:27:35,430 これらの文脈でそう 手紙、手紙の場合 619 00:27:35,430 --> 00:27:38,950 小文字であることを起こる 、と私は、32を引き 620 00:27:38,950 --> 00:27:43,442 それがどのような影響があるのか​​、 数学的に、小文字のaの上に? 621 00:27:43,442 --> 00:27:44,400 聴衆:Capitalizes-- 622 00:27:44,400 --> 00:27:45,691 DAVID J.マラン:それを大文字にします 623 00:27:45,691 --> 00:27:48,440 なぜ私たちの実際、これは プログラムは、ゼロを大文字に呼ばれています。 624 00:27:48,440 --> 00:27:51,590 このプログラムはどちらか 文字を大文字に、 625 00:27:51,590 --> 00:27:54,580 それがある場合にチェックした後、 確かに小文字。 626 00:27:54,580 --> 00:27:59,810 それ以外の場合は、ライン30で、私は、次の場合に何をすればよい それは私がいることを小文字ではありません 627 00:27:59,810 --> 00:28:02,852 特定の時に見て ループの繰り返し。 628 00:28:02,852 --> 00:28:03,890 ちょうどそれをプリントアウト。 629 00:28:03,890 --> 00:28:07,010 >> だから、何かを変更しないでください それがあっても、小文字ではありません。 630 00:28:07,010 --> 00:28:10,790 に自分自身を制限 少しzまで少しA。 631 00:28:10,790 --> 00:28:12,730 さて、これはかなり難解です。 632 00:28:12,730 --> 00:28:15,230 しかし、一日の終わりに、この どのように私たちは、昔々、ある 633 00:28:15,230 --> 00:28:16,460 物事を実装する必要がありました。 634 00:28:16,460 --> 00:28:19,780 私の代わりに大文字に開く場合 1は、ああ、神様に感謝します。 635 00:28:19,780 --> 00:28:22,320 機能があります アッパーに呼ばれることができます 636 00:28:22,320 --> 00:28:25,410 私たちはただやっ全力を尽くす かなり低いレベルで。 637 00:28:25,410 --> 00:28:28,752 >> 今アッパーに興味深いです それがファイルで宣言されているので、 638 00:28:28,752 --> 00:28:31,210 あなたがこれだけを知っているだろう ドキュメントをチェックすることにより、 639 00:28:31,210 --> 00:28:35,730 またはクラスで、言う、言われる それはctype.h内というファイルに、存在しています。 640 00:28:35,730 --> 00:28:37,630 だから、これは私たちの別の新しい友達です。 641 00:28:37,630 --> 00:28:40,750 と上を正確に行うために 何その名前が示唆している。 642 00:28:40,750 --> 00:28:44,860 >> あなたが間に、引数として、渡すことができます これらの括弧、いくつかの文字。 643 00:28:44,860 --> 00:28:48,390 私は、i番目の文字を渡すつもりだ 私達の空想の新しい表記法を使用して、sの 644 00:28:48,390 --> 00:28:49,870 角括弧を含む。 645 00:28:49,870 --> 00:28:53,391 そしてリターンは何か、推測を取る 上限の値は、明らかに行く 646 00:28:53,391 --> 00:28:53,890 なるには? 647 00:28:53,890 --> 00:28:56,460 648 00:28:56,460 --> 00:28:57,770 大文字。 649 00:28:57,770 --> 00:28:58,620 大文字。 650 00:28:58,620 --> 00:29:02,330 >> だから私は、小文字のaに渡すと、 うまくいけば、上の定義により、 651 00:29:02,330 --> 00:29:05,600 それは返すために起こっている 大文字のAでそれ以外の場合は、 652 00:29:05,600 --> 00:29:08,590 それは中の小文字でなければ、 最初の場所は、私はちょうどそれをプリントアウト。 653 00:29:08,590 --> 00:29:10,800 そして実際、気付く ここで第二の友人。 654 00:29:10,800 --> 00:29:13,840 だけでなく、上部が存在する、 しかし、低くなっている 655 00:29:13,840 --> 00:29:16,200 実際に私のためにその質問に答えます。 656 00:29:16,200 --> 00:29:19,730 >> 今、誰がこれらのことを書きました、 年の10秒前に、あなたは何を知っていますか? 657 00:29:19,730 --> 00:29:23,840 アッパーに実装してある このようなコードを使用して下げる。 658 00:29:23,840 --> 00:29:27,270 としかし、再び、一貫性のある 抽象化のこの考え、 659 00:29:27,270 --> 00:29:29,190 低いレベル、のようなもの 実装の詳細。 660 00:29:29,190 --> 00:29:32,600 そして、人の肩の上に立って 誰関数を使用して、私たちの前に来た 661 00:29:32,600 --> 00:29:36,300 アッパーに様と、低くなっている 素晴らしく十分にきれいである 662 00:29:36,300 --> 00:29:40,190 、彼らが何を言うことであるという 採用する素晴らしいパラダイム。 663 00:29:40,190 --> 00:29:44,040 >> さて、それは私が読んでいる場合ことが判明 アッパーに、たとえば、マニュアルページ、 664 00:29:44,040 --> 00:29:45,010 私は他の何かを学ぶ。 665 00:29:45,010 --> 00:29:46,890 だから男TOUPPER。 666 00:29:46,890 --> 00:29:48,050 それは少し圧倒です。 667 00:29:48,050 --> 00:29:51,110 しかし、通知は、ここでの言及だ 私が使うべきヘッダファイル。 668 00:29:51,110 --> 00:29:54,460 余談ですが、このためにとして、 誤解を招く恐れがあり、機能 669 00:29:54,460 --> 00:29:59,070 int型の代わりに文字を使用しています エラーチェックの理由のため。 670 00:29:59,070 --> 00:30:01,260 しかし、私たちは、おそらく来る バック·トゥ·ザ·フューチャーのものと。 671 00:30:01,260 --> 00:30:05,910 >> しかし、上側の変換に、ここでは、注意してください 可能であれば大文字に文字c。 672 00:30:05,910 --> 00:30:07,674 だから、非常に簡単です。 673 00:30:07,674 --> 00:30:09,340 そして今のは、もう少し具体的にしましょう​​。 674 00:30:09,340 --> 00:30:12,750 それではの一部を見てみましょう 戻り値の下のマニュアルページを参照してください。 675 00:30:12,750 --> 00:30:15,420 返される値は、ということです 変換された手紙の。 676 00:30:15,420 --> 00:30:18,690 またはC、もし変換 不可能であった、 677 00:30:18,690 --> 00:30:20,250 ここで、cは、元の入力である。 678 00:30:20,250 --> 00:30:24,140 どの私はここから知っているから、 アッパーに引数。 679 00:30:24,140 --> 00:30:25,780 >> だから、これはお持ち帰りは何ですか? 680 00:30:25,780 --> 00:30:28,060 返される値は、ということです 変換された手紙の、 681 00:30:28,060 --> 00:30:32,110 またはc、オリジナルの手紙、もし 変換が不可能であった。 682 00:30:32,110 --> 00:30:36,460 どのような改善そのためにすることができます 私のコードのデザインに作る? 683 00:30:36,460 --> 00:30:37,146 うん? 684 00:30:37,146 --> 00:30:38,810 >> 聴衆:あなたは、他を削除することができます。 685 00:30:38,810 --> 00:30:40,810 DAVID J.マラン:私ができる else文を削除し、 686 00:30:40,810 --> 00:30:42,510 だけではなく、else文。 687 00:30:42,510 --> 00:30:44,150 >> 聴衆:あなたは[聞こえない]を削除することができます。 688 00:30:44,150 --> 00:30:46,310 >> DAVID J.マラン:私ができる 全体のフォークを削除 689 00:30:46,310 --> 00:30:48,209 完全に道路の、他の場合。 690 00:30:48,209 --> 00:30:50,250 だから確かに、私は開いてみましょう これの最終版、 691 00:30:50,250 --> 00:30:55,540 -2を大文字にして、どれだけ注意してください、もし あなたは、セクシー、コードは今なってますが、 692 00:30:55,540 --> 00:31:00,040 その中で、私はいくつかから減少しました わずか4への7行程度、 693 00:31:00,040 --> 00:31:03,850 私が意図した機能 単純に、上部に呼び出すことによって、 694 00:31:03,850 --> 00:31:09,410 私は、sブラケットを渡し、および印刷 アウトプレースホルダ%のCと、 695 00:31:09,410 --> 00:31:11,090 その特定の文字。 696 00:31:11,090 --> 00:31:14,560 >> 今間違いなく、バグがありますが、 バグのまたは少なくともリスク、 697 00:31:14,560 --> 00:31:15,350 このプログラムに。 698 00:31:15,350 --> 00:31:18,200 だから戻って来て 以前のお持ち帰りに、 699 00:31:18,200 --> 00:31:21,820 私はおそらくも何をする中で行う必要があります このプログラムは、それをより堅牢にするために、 700 00:31:21,820 --> 00:31:24,974 それができる方法はありませんように でも、まれにクラッシュする? 701 00:31:24,974 --> 00:31:26,390 聴衆:それがNULLではないことを確認してください。 702 00:31:26,390 --> 00:31:28,056 DAVID J.マラン:それがNULLではないことを確認してください。 703 00:31:28,056 --> 00:31:31,030 だから本当に、このスーパーを作るために 適切な、私のようなものを行う必要があり、 704 00:31:31,030 --> 00:31:35,300 sがNULLでない場合は、 先に行くと、実行 705 00:31:35,300 --> 00:31:38,470 これらのコード行、どの 私はでき、そのようなインデント、 706 00:31:38,470 --> 00:31:39,870 そして、私の近くにブレースを入れ。 707 00:31:39,870 --> 00:31:41,550 2つのアイデアの結束それで良い。 708 00:31:41,550 --> 00:31:42,429 うん? 709 00:31:42,429 --> 00:31:44,470 聴衆:あなたが使用することができます 代わりに、whileループか? 710 00:31:44,470 --> 00:31:47,270 DAVID J.マラン:でした 私がdo whileループを実行します? 711 00:31:47,270 --> 00:31:50,020 聴衆:--youを確認するには あなたが実際に[聞こえない]という。 712 00:31:50,020 --> 00:31:51,728 DAVID J.マラン:でした あなたがしDOを使うのか? 713 00:31:51,728 --> 00:31:52,450 短い答え、ない。 714 00:31:52,450 --> 00:31:54,700 あなたがしようとしているため、 別のコーナーケースをご紹介します。 715 00:31:54,700 --> 00:31:56,660 文字列は、長さがゼロである場合。 716 00:31:56,660 --> 00:31:59,600 例えば、私はちょうどヒットした場合 今までZamylaを入力せずに、入力します。 717 00:31:59,600 --> 00:32:02,490 私は戻って、実際にあなたを手にするつもりです 文字列、私たちは最終的に表示されますように、 718 00:32:02,490 --> 00:32:03,780 それは文字も入っていない。 719 00:32:03,780 --> 00:32:05,630 それはまだ文字列ですが、 それだけで、超短いです。 720 00:32:05,630 --> 00:32:07,960 しかし、あなたがしDOを使用する場合は、 あなたは盲目的になるだろう 721 00:32:07,960 --> 00:32:10,050 で何かをしよう その文字列については、 722 00:32:10,050 --> 00:32:12,537 そして何もになるだろうんだ。 723 00:32:12,537 --> 00:32:18,607 >> 聴衆:まあ、あなたがした場合は、 S - ながら聞き取れない]を行う 724 00:32:18,607 --> 00:32:21,190 DAVID J.マラン:ああ、私は参照してください。続ける ユーザーから文字列を取得する。 725 00:32:21,190 --> 00:32:23,525 だから、短い答えは、あなた 、そして嫌がらせ保つことができる 726 00:32:23,525 --> 00:32:26,150 彼らはあなたにだ文字列を与えるために メモリに収まるほど短い。 727 00:32:26,150 --> 00:32:26,700 もちろんです。 728 00:32:26,700 --> 00:32:27,630 私はだけではないことを選んだ。 729 00:32:27,630 --> 00:32:30,505 彼らは私に、文字列、私を与えていない場合は 欲しい、私はやめるんだけど、私はあきらめています。 730 00:32:30,505 --> 00:32:33,260 しかし、絶対的に、その目的のために、 あなたは絶対にそれを行うことができます。 731 00:32:33,260 --> 00:32:37,500 >> だから、ライブラリのヘッダファイル、その 私たちは今、これらはここでは、あるに精通している。 732 00:32:37,500 --> 00:32:41,550 標準I / O、CS50.h、string.hの、 ctype.h内では、と、確かに、他のものがある。 733 00:32:41,550 --> 00:32:44,460 皆さんの中に発見した はmath.hでの数学ライブラリ 734 00:32:44,460 --> 00:32:48,200 それだけに、今、私はあなたを紹介しましょう このリソースCS50スタッフ、デーヴィン、 735 00:32:48,200 --> 00:32:50,630 とロブとゲイブ特定 一緒に入れている。 736 00:32:50,630 --> 00:32:52,630 それはすぐに上にリンクします もちろんのウェブサイト。 737 00:32:52,630 --> 00:32:54,870 それはCS50参照と呼ばれています。 738 00:32:54,870 --> 00:32:58,230 >> ちょうどあなたに素早くを与えるためにどの それの味、次のように動作します。 739 00:32:58,230 --> 00:33:00,740 私はreference.cs50.netに行きましょう。 740 00:33:00,740 --> 00:33:02,990 あなたは左手に表示されます 圧倒的なリスト側 741 00:33:02,990 --> 00:33:04,595 Cに付属して機能するの。 742 00:33:04,595 --> 00:33:07,790 しかし、私はしばらくの間、心配している場合、 strlenのようなものについての、 743 00:33:07,790 --> 00:33:08,746 私はそこにそれを入力することができます。 744 00:33:08,746 --> 00:33:10,870 これは、リストを下にフィルター 私は気にだけで何に。 745 00:33:10,870 --> 00:33:11,940 私はそれをクリックするつもりです。 746 00:33:11,940 --> 00:33:14,740 そして今、左側に、 あなたは私たちが望んでいることがわかります 747 00:33:14,740 --> 00:33:18,290 より直接的、ヒトである どのように友好的な説明 748 00:33:18,290 --> 00:33:19,170 この関数は動作します。 749 00:33:19,170 --> 00:33:20,600 >> 文字列の長さを返します。 750 00:33:20,600 --> 00:33:24,060 ここでは、ここでどのように概要だだ ヘッダファイルの点でそれを使用、 751 00:33:24,060 --> 00:33:27,430 何機能的に その引数の面で似ています。 752 00:33:27,430 --> 00:33:30,250 そしてここに、返品 文字列の長さ。 753 00:33:30,250 --> 00:33:34,280 しかし、あなたのそれらのためのより快適で、 実際には、より快適なクリックすることができます 754 00:33:34,280 --> 00:33:37,070 この内容 ページ、今、変化します 755 00:33:37,070 --> 00:33:41,660 何のデフォルト値であると あなたはmanページを使用して取得します。 756 00:33:41,660 --> 00:33:44,100 >> 言い換えれば、CS50 参照は単純化で 757 00:33:44,100 --> 00:33:46,220 スタッフによるmanページの、学生のための。 758 00:33:46,220 --> 00:33:49,320 特に、これらの少ない快適な との間での、あなたがそのよう 759 00:33:49,320 --> 00:33:51,660 ラップしようとする必要はありません あなたの心の周りに、率直に言って、 760 00:33:51,660 --> 00:33:55,030 いくつかのかなり不可解な構文 いつかとドキュメント。 761 00:33:55,030 --> 00:33:57,650 >> だから覚えておく 日で来ています。 762 00:33:57,650 --> 00:33:59,560 だからここに、再び、Zamylaです。 763 00:33:59,560 --> 00:34:03,255 それではだ質問をしましょう もう少し人間にアクセス可能。 764 00:34:03,255 --> 00:34:05,380 されていますチャンのおかげで、 より多くの象を印刷 765 00:34:05,380 --> 00:34:07,090 過去数日間ノンストップ。 766 00:34:07,090 --> 00:34:09,730 私たちは、する機会を持っている 離れてこれらのうちの少なくとも1。 767 00:34:09,730 --> 00:34:13,239 私達はちょうど1ボランティアを得ることができれば 画面に描画するために、最大点灯します。 768 00:34:13,239 --> 00:34:14,530 どのようにここにはどうですか? 769 00:34:14,530 --> 00:34:15,340 >> アップさあ。 770 00:34:15,340 --> 00:34:16,720 お名前は? 771 00:34:16,720 --> 00:34:17,219 ALEX:アレックス。 772 00:34:17,219 --> 00:34:17,760 DAVID J.マラン:アレックス。 773 00:34:17,760 --> 00:34:18,259 かしこまりました。 774 00:34:18,259 --> 00:34:19,388 アレックスは、アップ時に来る。 775 00:34:19,388 --> 00:34:21,679 私たちはあなたを見しようとしている ここで画面上に手書き。 776 00:34:21,679 --> 00:34:24,325 777 00:34:24,325 --> 00:34:25,570 すべての権利、はじめまして。 778 00:34:25,570 --> 00:34:26,429 >> ALEX:ニース、あなたを満たしています。 779 00:34:26,429 --> 00:34:27,512 >> DAVID J.マラン:すべての権利。 780 00:34:27,512 --> 00:34:28,969 だから、超簡単な運動。 781 00:34:28,969 --> 00:34:31,440 バーがに高くない 今日象を得る。 782 00:34:31,440 --> 00:34:33,439 あなたはにgetStringの役割を果たしている。 783 00:34:33,439 --> 00:34:35,980 そして私はちょうどあなたを伝えるつもりだ あなたが得ている文字列。 784 00:34:35,980 --> 00:34:38,080 そして、あなたと仮定し、 getStringで、呼び出された。 785 00:34:38,080 --> 00:34:42,480 そして、私のような人間は、、あります Zamyla、Z-A-M-Y-L-Aに入力しました。 786 00:34:42,480 --> 00:34:45,650 ただ先に行くと上Zamylaを書く 画面あなたはそれを得ているかのように 787 00:34:45,650 --> 00:34:47,250 そしてどこかにメモリ内に格納されている。 788 00:34:47,250 --> 00:34:52,370 789 00:34:52,370 --> 00:34:55,570 >> いくつかがどうなるかの余地を残して 大丈夫他words--は、続ける。 790 00:34:55,570 --> 00:34:59,620 >> [笑い] 791 00:34:59,620 --> 00:35:00,800 >> だからZamyla、優れています。 792 00:35:00,800 --> 00:35:04,880 だから今、そのあなたとします getStringで、再び呼び出されます。 793 00:35:04,880 --> 00:35:09,350 そのため、私はでご提供 キーボード、別の名前、ベリンダと。 794 00:35:09,350 --> 00:35:17,560 795 00:35:17,560 --> 00:35:18,060 かしこまりました。 796 00:35:18,060 --> 00:35:22,380 そして今、次回のgetStringです と呼ばれる、私は、ゲイブのようなものを入力する 797 00:35:22,380 --> 00:35:27,560 G-A-B-E。あなたは本当に取っている 心臓ランダムアクセスメモリに関する。 798 00:35:27,560 --> 00:35:29,631 すべてを描画している 完全にランダムに。 799 00:35:29,631 --> 00:35:30,130 [OK]をクリックします。 800 00:35:30,130 --> 00:35:31,104 >> [笑い] 801 00:35:31,104 --> 00:35:32,520 ALEX:申し訳ありませんが、私の手書きは悪いです。 802 00:35:32,520 --> 00:35:33,770 DAVID J.マラン:いいえ、それはOKです。 803 00:35:33,770 --> 00:35:40,480 そして、どのようにロブは、R-O-Bに関する。 [OK]をクリックします。 804 00:35:40,480 --> 00:35:41,020 グッド。 805 00:35:41,020 --> 00:35:43,853 だから私はあなたをだろう予想していなかった ちょっとこの方法で物事をレイアウト。 806 00:35:43,853 --> 00:35:45,020 しかし、私たちは、この作業を行うことができます。 807 00:35:45,020 --> 00:35:48,810 それでは、どのようにレイアウトするについて行くんでした メモリ内のこれらの文字アウト? 808 00:35:48,810 --> 00:35:51,310 言い換えれば、私たちが考える場合には この長方形の黒い画面 809 00:35:51,310 --> 00:35:53,550 代表として コンピュータのRAM、またはメモリ。 810 00:35:53,550 --> 00:35:55,850 >> ラムがちょうどであることを思い出す バイトの全体の束、 811 00:35:55,850 --> 00:35:57,480 バイトは、ビットの全体の束である。 812 00:35:57,480 --> 00:35:59,350 そして、ビットは何とかです 一般に、実装 813 00:35:59,350 --> 00:36:01,119 いくつかのフォームで ハードウェアの電力。 814 00:36:01,119 --> 00:36:03,160 だから、のようなものだ 私たちが話をした階層化 815 00:36:03,160 --> 00:36:04,510 そして今当たり前のことができます。 816 00:36:04,510 --> 00:36:07,020 どのようにして約行きました ここで記述する方法を決める 817 00:36:07,020 --> 00:36:11,634 ロブ対ゲイブ対 Zamyla対ベリンダ? 818 00:36:11,634 --> 00:36:14,020 >> ALEX:私はちょうどそれをやった あなたが私に言ったようにするため。 819 00:36:14,020 --> 00:36:15,650 >> DAVID J.マラン:そして、それは本当です。 820 00:36:15,650 --> 00:36:20,100 しかし、何があな​​たがどこに置く支配 ベリンダの名前とゲイブの名前は? 821 00:36:20,100 --> 00:36:20,764 >> ALEX:何? 822 00:36:20,764 --> 00:36:22,930 DAVID J.マラン:[笑] だから、働く、それは大丈夫です。 823 00:36:22,930 --> 00:36:25,290 だから、コンピュータが少しある それよりもより秩序。 824 00:36:25,290 --> 00:36:29,000 そして、私たちはそこに滞在implement--とき 時実際に、私たちだけのためのmoment-- 825 00:36:29,000 --> 00:36:31,470 のようなものを実装する コンピュータ内のgetString、 826 00:36:31,470 --> 00:36:34,480 Zamylaはかなりレイアウトされるかもしれない あなたのようにそこに、画面上でした。 827 00:36:34,480 --> 00:36:36,660 >> そして、通知への鍵は何ですか ここで、アレックスが何をしたか、 828 00:36:36,660 --> 00:36:40,260 ある境界のようなものがあります これらの単語のそれぞれの中で、右か? 829 00:36:40,260 --> 00:36:46,580 あなたが書いていない Z-A-M-Y-L-A-B-E-L-I-N-D-A-G-A--B- 830 00:36:46,580 --> 00:36:49,740 換言すれば、いくつかの種類があります と思われる境界の、 831 00:36:49,740 --> 00:36:52,370 ランダム間隔、のようなもの これらのさまざまな単語の間。 832 00:36:52,370 --> 00:36:54,120 ので、しかし、それは、良いことだ 私たち人間は、できるようになりました 833 00:36:54,120 --> 00:36:56,470 これらであることを視覚化する 4の異なる文字列。 834 00:36:56,470 --> 00:36:59,540 それだけで一つの配列ではありません 文字の多くの。 835 00:36:59,540 --> 00:37:04,190 だから、コンピュータ、そして、一方、 Zamylaのような文字列がかかる場合があります、 836 00:37:04,190 --> 00:37:07,220 これらの各文字を入れる メモリのバイトの内部。 837 00:37:07,220 --> 00:37:10,400 しかし、その数ははるかに大きい、 もちろん、6文字以上。 838 00:37:10,400 --> 00:37:11,690 >> RAMの全体の束があります。 839 00:37:11,690 --> 00:37:15,330 だから今後、この 箱のグリッドが起こっている 840 00:37:15,330 --> 00:37:17,560 まさにアレックスを表現する 画面上でここにしました。 841 00:37:17,560 --> 00:37:20,937 そして今、アレックス、私たちはあなたを提供することができます 青やチャンからオレンジ色の象。 842 00:37:20,937 --> 00:37:22,270 ALEX:私は青い象を取るよ。 843 00:37:22,270 --> 00:37:23,120 DAVID J.マラン:青ゾウ。 844 00:37:23,120 --> 00:37:25,580 だから、大きな拍手、 ここでアレックスのために、私たちができれば。 845 00:37:25,580 --> 00:37:26,100 >> [拍手] 846 00:37:26,100 --> 00:37:26,766 >> ALEX:ありがとうございます。 847 00:37:26,766 --> 00:37:28,820 DAVID J.マラン:ありがとうございます。 848 00:37:28,820 --> 00:37:36,230 だから、お持ち帰りにもかかわらず、ということです パターンはちょっとここでは、時間の経過とともに変化し 849 00:37:36,230 --> 00:37:40,430 基板上に、これがあった さまざまな列のうちの境界 850 00:37:40,430 --> 00:37:42,610 アレックスは私たちのためになったこと。 851 00:37:42,610 --> 00:37:45,230 さて、コンピュータ、率直に言って、 同じことを行うことができます。 852 00:37:45,230 --> 00:37:48,210 彼らは一種のウンチでした どこでも、RAM内の文字列。 853 00:37:48,210 --> 00:37:50,710 ここまで、こっちに、 ここでは、ここでダウンダウン。 854 00:37:50,710 --> 00:37:52,020 >> 彼らは、まさにそれを行うことができます。 855 00:37:52,020 --> 00:37:54,280 しかし、もちろん、それがだ おそらくない最高の計画。 856 00:37:54,280 --> 00:37:54,780 右? 857 00:37:54,780 --> 00:37:57,340 私はアレックスにを問い続けた場合 名前を取得、おそらく彼がしたい 858 00:37:57,340 --> 00:38:01,370 多分アップ、ここでいくつかのより多くの下に置く ここでは、最終的には、こっち、こっち 859 00:38:01,370 --> 00:38:02,211 こっち。 860 00:38:02,211 --> 00:38:05,460 しかし、もう少し計画と、確かに、 私たちはもっときれいなものをレイアウト可能性があります。 861 00:38:05,460 --> 00:38:07,350 そして実際、それはコンピュータが何をするかだ。 862 00:38:07,350 --> 00:38:10,720 >> しかし、漁獲量はである もし私が手に次の文字列 863 00:38:10,720 --> 00:38:14,050 Zamylaが何かした後 ベリンダのような、 864 00:38:14,050 --> 00:38:17,929 私たちが書く可能性がある場合を提案 このグリッドに関して、文字b? 865 00:38:17,929 --> 00:38:18,720 どこに行くか? 866 00:38:18,720 --> 00:38:21,480 Aの右側には、 zは、以下の、A以下の? 867 00:38:21,480 --> 00:38:23,204 あなたの最初の本能は何でしょうか? 868 00:38:23,204 --> 00:38:24,120 聴衆:zの下に。 869 00:38:24,120 --> 00:38:25,100 DAVID J.マラン:だからzは下記。 870 00:38:25,100 --> 00:38:26,530 そして、それはきれいだ 簡単な、右か? 871 00:38:26,530 --> 00:38:29,321 それは、きちんとしたのようなものだ、それは私たちが何をすべきか 私たちはEnterキーを押したときに、キーボードの、 872 00:38:29,321 --> 00:38:31,770 または電子メールで行う場合 物事の箇条書き。 873 00:38:31,770 --> 00:38:34,310 しかし、現実には、そのコンピュータで より効率的にしようとすると、 874 00:38:34,310 --> 00:38:37,170 と同じくらい確かに詰め込む できるだけRAMにデータを、 875 00:38:37,170 --> 00:38:38,890 ように、すべてのバイトを無駄にしないでください。 876 00:38:38,890 --> 00:38:41,545 あなたが無駄にしないようにするには 任意の画面の不動産。 877 00:38:41,545 --> 00:38:44,170 そして問題は、しかし、ということです 私たちは文字通り手紙を置く場合 878 00:38:44,170 --> 00:38:49,940 bの後、どのようにしようとしている Zamylaの名前が終了する場所を知っている 879 00:38:49,940 --> 00:38:51,840 とベリンダの名前が始まる? 880 00:38:51,840 --> 00:38:55,270 だから、あなただけの、よく、提案された人間が 基本的に、Enterキーを押します。 881 00:38:55,270 --> 00:38:56,410 以下にそれを置く。 882 00:38:56,410 --> 00:38:59,750 またはアレックスがしたとしてもとして、ちょうど書き始める 前の1つ下の名前、 883 00:38:59,750 --> 00:39:01,583 その1未満、 その1以下に。 884 00:39:01,583 --> 00:39:02,510 これは視覚的な手がかりだ。 885 00:39:02,510 --> 00:39:05,960 >> コンピュータが別の視覚的な手がかりを持っている、 それは、もう少し簡潔だ。 886 00:39:05,960 --> 00:39:07,840 それは、このファンキーな文字です。 887 00:39:07,840 --> 00:39:11,890 多分あるバックスラッシュ0、 バックスラッシュnを彷彿とさせる、 888 00:39:11,890 --> 00:39:12,640 など、今。 889 00:39:12,640 --> 00:39:14,120 特別なエスケープシーケンス。 890 00:39:14,120 --> 00:39:19,120 バックスラッシュ0の方法です 行内の8ゼロ·ビットを表す。 891 00:39:19,120 --> 00:39:22,000 0000 0000。 892 00:39:22,000 --> 00:39:26,130 >> あなたはそれを表現する方法がないことです キーボードの数字のゼロをヒット、 893 00:39:26,130 --> 00:39:28,140 アスキーchar型であるため、実際には。 894 00:39:28,140 --> 00:39:30,990 これは、数のように見えるが、 実際に進数です 895 00:39:30,990 --> 00:39:35,910 それは、円形を表し グリフ、円形の書体。 896 00:39:35,910 --> 00:39:38,410 一方、バックスラッシュ 文字通りゼロ手段、 897 00:39:38,410 --> 00:39:40,700 私のためにここに8ゼロバイトを置く。 898 00:39:40,700 --> 00:39:42,136 >> だから、これはある程度任意である。 899 00:39:42,136 --> 00:39:44,260 私たちは、任意のパターンを使用していたかもしれない ビットが、世界の 900 00:39:44,260 --> 00:39:46,610 何年か決定 前、それが表現する 901 00:39:46,610 --> 00:39:49,710 メモリ内の文字列の末尾、 ちょうどゼロの全体の束を置く。 902 00:39:49,710 --> 00:39:51,000 私たちはそれを検出することができますので。 903 00:39:51,000 --> 00:39:54,790 今では意味のない文字ん アルファベットはゼロで表すことができる。 904 00:39:54,790 --> 00:39:58,480 >> しかし、それは、私たちはすでに見てきたOKです 私たちは、最大で最大97に65を使用していること。 905 00:39:58,480 --> 00:40:00,290 私たちは、どこにも取得していない すべてゼロに近い。 906 00:40:00,290 --> 00:40:03,040 907 00:40:03,040 --> 00:40:06,540 コンピュータのメモリ内のベリンダだから 実際にここに行くとしている。 908 00:40:06,540 --> 00:40:09,764 私はちょうど黄色で、それを描いた それに注意を描画します。 909 00:40:09,764 --> 00:40:11,680 そして、あまりにも、このに気付く 完全に任意である。 910 00:40:11,680 --> 00:40:12,680 私は、グリッドとしてそれを描いた。 911 00:40:12,680 --> 00:40:14,460 同様に、RAMは単にいくつかの物理的なオブジェクトである。 912 00:40:14,460 --> 00:40:17,300 それは必ずしもありません 行と列は、それ自体。 913 00:40:17,300 --> 00:40:20,490 それはちょうどバイトの全体の束を持っている 何とかハードウェアで実装。 914 00:40:20,490 --> 00:40:22,817 しかし、ベリンダ私の後であれば ゲイブの名前で入力し、 915 00:40:22,817 --> 00:40:25,650 彼は、メモリ内に、ここで終わるだろう と私は祈る者名に入力した場合には、 916 00:40:25,650 --> 00:40:27,316 例えば、彼はここで終わるだろう。 917 00:40:27,316 --> 00:40:29,310 そして、私は続けることができ でも、複数の名前を書きます。 918 00:40:29,310 --> 00:40:32,100 >> 残念ながら、私はしようとした場合 スーパーロングの名前を書いて、 919 00:40:32,100 --> 00:40:33,730 私は最終的にはメモリが不足する可能性があります。 920 00:40:33,730 --> 00:40:37,810 その場合、のgetStringは、 私達が言ったように、NULLを返しに行く。 921 00:40:37,810 --> 00:40:41,720 しかし、ありがたいことに、少なくともこのビジュアル中 ここで、私たちはそれほど遠く取得できませんでした。 922 00:40:41,720 --> 00:40:45,860 >> 今何素敵なのはこのことです 物事を治療する一般的なアイデア 923 00:40:45,860 --> 00:40:49,720 ボックスにされているものとして Cの特徴の代表 924 00:40:49,720 --> 00:40:52,690 や言語の多くは、 配列として知られている。 925 00:40:52,690 --> 00:40:55,490 アレイは、データの別のタイプである。 926 00:40:55,490 --> 00:40:57,380 もし可能ならば、それは、データ構造だ。 927 00:40:57,380 --> 00:41:01,160 本当にそれの意味での構造、 種類の、少なくとも、箱のように見える 928 00:41:01,160 --> 00:41:02,320 あなたの心の目の中。 929 00:41:02,320 --> 00:41:09,680 配列は連続している 同一のデータ型の配列、 930 00:41:09,680 --> 00:41:11,330 背中合わせにバックアップするバックアップします。 931 00:41:11,330 --> 00:41:14,720 >> 他の中で、文字列、 言葉は、文字の配列です。 932 00:41:14,720 --> 00:41:16,120 文字の配列。 933 00:41:16,120 --> 00:41:19,070 しかし、それはあなたが持つことができるが判明 物事の束の配列。 934 00:41:19,070 --> 00:41:21,870 実際に、私たちも置くことができます 配列内の数字。 935 00:41:21,870 --> 00:41:23,920 だから形で 私たちは開始するつもりだ 936 00:41:23,920 --> 00:41:26,590 このデータを宣言 配列として知られている構造 937 00:41:26,590 --> 00:41:28,250 また、角括弧を使用する予定です。 938 00:41:28,250 --> 00:41:31,500 しかし、これらの角括弧をしようとしている この文脈において異なる意味を持つ。 939 00:41:31,500 --> 00:41:33,450 >> そして、次のようにのはそれを見てみましょう。 940 00:41:33,450 --> 00:41:36,780 私は開いているとし ここに新しいファイルをバックアップします。 941 00:41:36,780 --> 00:41:38,535 そして、私はages.c.としてこれを保存 942 00:41:38,535 --> 00:41:41,280 943 00:41:41,280 --> 00:41:43,470 そして、私はここで私のフォルダでこれを節約できます。 944 00:41:43,470 --> 00:41:46,130 そして今、私が先に行くつもりです 何かの入力を開始 945 00:41:46,130 --> 00:41:53,940 のような、CS50.hが含ま含める stdio.hの、int型の主空洞。 946 00:41:53,940 --> 00:41:57,370 そして、ここでの内側に、私が欲しい 最初の時代と呼ばれるint型を持っている。 947 00:41:57,370 --> 00:42:01,371 >> そして、私は取得するためにそれを使用するつもりだ 彼または彼女の年齢のためのユーザからint型。 948 00:42:01,371 --> 00:42:04,620 しかし、このプログラムによって使用されるように意図されている どのような状況のために複数の人、。 949 00:42:04,620 --> 00:42:05,490 私は人々のラインを持っている。 950 00:42:05,490 --> 00:42:08,281 それらのすべては、それらを入力する必要があります おそらくいくつか、私は知らないために、年齢、 951 00:42:08,281 --> 00:42:10,530 競争、またはイベント 彼らが到着したこと。 952 00:42:10,530 --> 00:42:13,030 だから次の人は、私 別の変数を必要としています。 953 00:42:13,030 --> 00:42:15,790 >> 私はちょうど行う場合ので、 年齢がgetIntはを取得、それはだ 954 00:42:15,790 --> 00:42:18,500 壊したり、上書きしようとして 前の人の年齢。 955 00:42:18,500 --> 00:42:19,760 だから、良いです。 956 00:42:19,760 --> 00:42:21,790 だから私の最初の本能 、ああ、大丈夫かもしれないが、 957 00:42:21,790 --> 00:42:26,260 私は複数の人年代を取得したい場合 ages--、のはこのAGE1を呼び出してみましょう 958 00:42:26,260 --> 00:42:31,280 int型のage2はint型、int型age3なくGetIntを取得します取得します。 959 00:42:31,280 --> 00:42:35,340 そして今、私が使用するつもりだ ここにいくつかの擬似コードコード。 960 00:42:35,340 --> 00:42:37,679 >> これらの数字で何かの操作を行います。 961 00:42:37,679 --> 00:42:40,470 私たちは、どのような別の日のために残しておきます 私たちは、そこにやっている私たちのためだけ 962 00:42:40,470 --> 00:42:44,200 一瞬の世話 AGE1、age2、age3約。 963 00:42:44,200 --> 00:42:46,450 残念ながら、私に一度 このプログラムをコンパイルする 964 00:42:46,450 --> 00:42:51,140 そして、実際のユーザーの前にそれを置く 基本的に貧しいデザインは何 965 00:42:51,140 --> 00:42:53,890 決定は私が作ったように見える? 966 00:42:53,890 --> 00:42:54,624 うん? 967 00:42:54,624 --> 00:42:55,499 聴衆:[聞き取れない] 968 00:42:55,499 --> 00:42:58,071 969 00:42:58,071 --> 00:42:59,820 DAVID J.マラン:ええ、 私も試していない 970 00:42:59,820 --> 00:43:02,028 どのように多くの年齢層を把握する 私は実際に気にしますか? 971 00:43:02,028 --> 00:43:05,380 私はここで三人よりも少ないがある場合は、 したがって、より少ない3歳、 972 00:43:05,380 --> 00:43:07,260 私はまだ盲目的3を期​​待しています。 973 00:43:07,260 --> 00:43:08,720 神は四人が現れる禁じる。 974 00:43:08,720 --> 00:43:10,990 私のプログラムはたださえ、それらをサポートしません。 975 00:43:10,990 --> 00:43:13,280 >> だからこの、長い話 短い、良い習慣ではありません。 976 00:43:13,280 --> 00:43:13,780 右? 977 00:43:13,780 --> 00:43:16,530 私は基本的にコピーした コー​​ドを貼り、ちょうど微調整 978 00:43:16,530 --> 00:43:17,430 変数名。 979 00:43:17,430 --> 00:43:22,410 そして、私の神、あなたが持っていた場合、しない3 年齢が、10、または100、あるいは6,500 980 00:43:22,410 --> 00:43:23,820 学部生、例えば。 981 00:43:23,820 --> 00:43:26,950 これは、特にあることを行っていません エレガントなコード、または持続。 982 00:43:26,950 --> 00:43:29,200 あなたがする必要があるとしている プログラムを毎回書き換える 983 00:43:29,200 --> 00:43:30,760 人変更のあなたの番号。 984 00:43:30,760 --> 00:43:35,090 >> だからありがたい、当社の実際の内 今日のages.cファイル、 985 00:43:35,090 --> 00:43:36,970 私たちは、より巧妙な解決策を持っている。 986 00:43:36,970 --> 00:43:39,800 まず、私が借りするつもりです 、私たちは何度か使用した構築 987 00:43:39,800 --> 00:43:43,744 whileループこれを取得するために、行う 部屋の人数。 988 00:43:43,744 --> 00:43:46,910 私は再び、ユーザーを困らするつもりです そして再び、彼または彼女は私を与えるまで、 989 00:43:46,910 --> 00:43:49,260 正の整数のnの値。 990 00:43:49,260 --> 00:43:51,590 >> 私が使用している可能性があり、最後の 時間のは、正の整数を取得します。 991 00:43:51,590 --> 00:43:53,720 しかし、私たちはそれを持っていない 実質のためなので、私は先に行きました 992 00:43:53,720 --> 00:43:55,660 再は、このアイデアを実装しました。 993 00:43:55,660 --> 00:43:58,410 さてここでダウン、これは新しいトリックです。 994 00:43:58,410 --> 00:44:02,260 27行目では、コメントなど ライン26において、示唆している 995 00:44:02,260 --> 00:44:05,180 で配列を宣言する 皆の年齢を格納する。 996 00:44:05,180 --> 00:44:09,320 >> だから、取得したい場合、しない1 int型ではなく、 2つのintがintの全体の束。 997 00:44:09,320 --> 00:44:13,800 具体的にnは整数であったがnのかもしれない 100である可能性があり、3であること、千かもしれません。 998 00:44:13,800 --> 00:44:17,570 構文は、非常に単純にある たとえば、あなたがどの​​ようなデータタイプをしたいですか? 999 00:44:17,570 --> 00:44:19,620 あなたが呼び出すために何をしたいですか メモリのチャンク? 1000 00:44:19,620 --> 00:44:23,530 あなたは、グリッドを呼び出すために何をしたいですか それが絵画的に次のようになります? 1001 00:44:23,530 --> 00:44:27,700 >> そして、ここでは括弧内に、あなたが言う どのように大きなあなたは配列になりたい。 1002 00:44:27,700 --> 00:44:30,450 それで以前、私が言ったとき 構文は、ここで少し異なっている 1003 00:44:30,450 --> 00:44:33,614 私たちはまだ、角括弧を使用している、 私は配列を宣言していたときに、 1004 00:44:33,614 --> 00:44:35,530 内部の数 角括弧手段 1005 00:44:35,530 --> 00:44:37,610 どのように大きなあなたは配列になりたいん。 1006 00:44:37,610 --> 00:44:42,490 >> これとは対照的に、とき、私たちは、sを使用していた ブラケット先ほどI、S、文字列、 1007 00:44:42,490 --> 00:44:46,820 確かに文字の配列であるが、 あなたは変数を宣言していないとき、 1008 00:44:46,820 --> 00:44:49,760 ここでは、このキーワードと同様に、 あなたは、単に取得している 1009 00:44:49,760 --> 00:44:54,280 特定のインデックス、特定の その配列から要素。 1010 00:44:54,280 --> 00:44:57,090 私たちはそれを知っているならば、残り のこれは簡単です。 1011 00:44:57,090 --> 00:45:00,765 新しい場合は私が最初にプリントアウトするつもりです 個人番号iの年齢は何ですか。 1012 00:45:00,765 --> 00:45:03,890 私はちょうど人のナンバーワンと言う場合には、 人数2、人数3。 1013 00:45:03,890 --> 00:45:06,306 >> そして私はちょうど算術をやって、 その結果、普通の人のように、 1014 00:45:06,306 --> 00:45:09,030 私たちはこのために1から数える プログラムではなく、ゼロから。 1015 00:45:09,030 --> 00:45:13,620 それから私は、GetIntでを呼ぶが、私は保存する 年齢の答えは私を囲む。 1016 00:45:13,620 --> 00:45:16,610 どの配列内のi番目の時代です。 1017 00:45:16,610 --> 00:45:21,640 前回のに対し、私たちが治療したので、 Zamylaの名前の文字としてこれらのボックス、 1018 00:45:21,640 --> 00:45:22,490 などがあります。 1019 00:45:22,490 --> 00:45:26,530 さて、これらのボックスが表す 32ビット、または4バイト 1020 00:45:26,530 --> 00:45:29,510 その中で私たちは保存することができます int型、int型、int型。 1021 00:45:29,510 --> 00:45:31,890 それらのすべては、再度、 同じデータ型である。 1022 00:45:31,890 --> 00:45:33,890 >> 今、私は愚かな何かを、 時間が経過するように、単に 1023 00:45:33,890 --> 00:45:35,510 このプログラムを書いて正当化する。 1024 00:45:35,510 --> 00:45:40,050 そして、ここまで、私は再び反復処理 今から今年言ったアレイ全体、 1025 00:45:40,050 --> 00:45:43,090 人ナンバーワンの意志 何か歳である。 1026 00:45:43,090 --> 00:45:45,010 その把握する math--私が意味する、この 1027 00:45:45,010 --> 00:45:49,260 非常に複雑arithmetic--はありません 私はちょうど自分の年齢に1を追加します。 1028 00:45:49,260 --> 00:45:51,240 ただ、もう一度、これを実証する。 1029 00:45:51,240 --> 00:45:57,910 >> ちょうど私は、文字列、複数のインデックス、できる限り だからインデックスは、年齢層の配列にすることができ、 1030 00:45:57,910 --> 00:45:59,950 そこにそのような。 1031 00:45:59,950 --> 00:46:03,340 だからここで、これは私たちを取ることになるだろう? 1032 00:46:03,340 --> 00:46:07,070 だから私たちが見る、最終的には、 来る日でいくつかのこと。 1033 00:46:07,070 --> 00:46:09,510 一、すべてのこの時間、時 独自のプログラムを書いて、 1034 00:46:09,510 --> 00:46:11,239 マリオ、貪欲、信用等を挙げることができる。 1035 00:46:11,239 --> 00:46:13,780 あなたは、の名前を入力してきた プログラムと打撃を入力してください。 1036 00:46:13,780 --> 00:46:15,610 そして、ユーザーの入力を取得する。 1037 00:46:15,610 --> 00:46:18,137 >> のgetString、getIntはで、 getLongLong等が挙げられる。 1038 00:46:18,137 --> 00:46:20,720 しかし、それはCがサポートしていることが判明 何かと呼ばれるコマンドライン 1039 00:46:20,720 --> 00:46:25,740 私たちにできるように起こっているの引数、 実際に入力した言葉に取得し、 1040 00:46:25,740 --> 00:46:28,570 点滅プロンプトで、 あなたのプログラムの名前の後に。 1041 00:46:28,570 --> 00:46:31,430 >> あなたは、今後日中のSO シーザーのようなもののように入力します、 1042 00:46:31,430 --> 00:46:34,950 または./caesar番号13、その後。 1043 00:46:34,950 --> 00:46:36,070 私たちは、それがどのように機能するかがわかります。 1044 00:46:36,070 --> 00:46:37,550 確かに、中にあるため 問題は、私たちがしている、2セット 1045 00:46:37,550 --> 00:46:39,383 をご紹介しよう 少し何かへ 1046 00:46:39,383 --> 00:46:42,360 Ralphieのを連想させる 地図作成の初期の挑戦。 1047 00:46:42,360 --> 00:46:43,970 情報をスクランブルする技術。 1048 00:46:43,970 --> 00:46:46,660 これは、実際には、非常にある Ralphieがやったことを思わせる​​。 1049 00:46:46,660 --> 00:46:51,380 >> これは、暗号の一例です ROT13は、R-O-T 13と呼ばれるアルゴリズム。 1050 00:46:51,380 --> 00:46:54,910 どの単に回転させることを意味 アルファベット13桁の文字。 1051 00:46:54,910 --> 00:46:58,309 あなたはそれを行うなら、あなたは今表示されます おなじみのフレーズは、おそらく、何か。 1052 00:46:58,309 --> 00:47:01,100 しかし、方法は、私たちが使用するつもりだ これは、最終的に、より一般的である。 1053 00:47:01,100 --> 00:47:04,390 >> Pは、標準版では、2セット あなたは、暗号のカップルを実装します 1054 00:47:04,390 --> 00:47:06,720 シーザーと呼ばれるもの、Vigenereと呼ばれるもの。 1055 00:47:06,720 --> 00:47:10,090 どちらも回転です その何とかあなたの中に暗号、 1056 00:47:10,090 --> 00:47:11,826 別の手紙に一文字を回す。 1057 00:47:11,826 --> 00:47:12,950 そして、シーザーは超簡単です。 1058 00:47:12,950 --> 00:47:16,220 あなたは、あなたが13を追加し、1を追加 または26までのいくつかの数。 1059 00:47:16,220 --> 00:47:19,570 Vigenereはそれを上にし 手紙ごと。 1060 00:47:19,570 --> 00:47:22,140 Vigenereだから、あなたが表示されますように 仕様で、より安全です。 1061 00:47:22,140 --> 00:47:24,973 >> しかし一日の終わりに あなたが実装されます、Pは2セット、 1062 00:47:24,973 --> 00:47:29,050 あなたは両方を使用することが鍵である 暗号化と復号化のために。 1063 00:47:29,050 --> 00:47:32,160 回転のプロセスを参照する プレーンテキスト、いくつかのオリジナルのメッセージ、 1064 00:47:32,160 --> 00:47:34,490 サイファーテキスト、中にいる 何かが暗号化されています。 1065 00:47:34,490 --> 00:47:36,220 そして、再びそれを復号化する。 1066 00:47:36,220 --> 00:47:38,119 >> ハッカーの版で、 その間、あなたはなるだろう 1067 00:47:38,119 --> 00:47:40,660 似たようなことを任務と 精神で、どこで私たちはあなたを与えるだろう 1068 00:47:40,660 --> 00:47:44,610 典型的なLinux、またはからファイル、 マック、またはUnixコンピュータと呼ばEtsyの 1069 00:47:44,610 --> 00:47:47,800 全体が含まれているパスワード、 ユーザ名とパスワードの束。 1070 00:47:47,800 --> 00:47:50,932 そして、それらのパスワードはすべて持っている 暗号化された、またはハッシュされて、 1071 00:47:50,932 --> 00:47:53,140 これより適切に、話す あなたが仕様で表示されますように。 1072 00:47:53,140 --> 00:47:57,090 >> ハッカー版は挑戦する このような入力を取ると、あなた、 1073 00:47:57,090 --> 00:47:58,800 とパスワードをクラッキング。 1074 00:47:58,800 --> 00:48:02,590 つまり、考え出す、何であるか 人間のパスワードが実際にあった。 1075 00:48:02,590 --> 00:48:05,570 そのため、実際には、パスワードがある 一般的に明確に格納されていない、 1076 00:48:05,570 --> 00:48:08,260 一般的なパスワード 推測するのは難しいはずです。 1077 00:48:08,260 --> 00:48:09,610 それはよくあることではありません。 1078 00:48:09,610 --> 00:48:12,110 >> そして、私は私たちがしようと思いましたことはある 数分でまとめ 1079 00:48:12,110 --> 00:48:15,160 特に一目 パスワードのお粗末な選択 1080 00:48:15,160 --> 00:48:17,260 フィルムからあなたが愛情を込めて思い出すことがあります。 1081 00:48:17,260 --> 00:48:18,915 されていない場合、あなたは借りる必要があります。 1082 00:48:18,915 --> 00:48:20,070 >> [ビデオ再生] 1083 00:48:20,070 --> 00:48:22,320 >> -Helmet、あなたは悪魔、何が起こっているの? 1084 00:48:22,320 --> 00:48:24,240 あなたが私の娘に何をしているのか? 1085 00:48:24,240 --> 00:48:28,010 >> 紹介してくれ-Permit 華麗な若い形成外科医、 1086 00:48:28,010 --> 00:48:30,010 ドクターフィリップSchlotkin。 1087 00:48:30,010 --> 00:48:35,020 における最大の鼻のジョブの男 全宇宙とビバリーヒルズ。 1088 00:48:35,020 --> 00:48:36,140 >> - あなたの殿下。 1089 00:48:36,140 --> 00:48:36,820 >> -Nose仕事? 1090 00:48:36,820 --> 00:48:37,700 私は理解していない。 1091 00:48:37,700 --> 00:48:39,070 彼女はすでに鼻のジョブを持ったという。 1092 00:48:39,070 --> 00:48:40,800 それは彼女の甘い16存在していた。 1093 00:48:40,800 --> 00:48:42,590 >> - いいえ、それはあなたが何を考えてではありません。 1094 00:48:42,590 --> 00:48:44,490 それは、はるかに悪いです。 1095 00:48:44,490 --> 00:48:48,160 あなたは私に与えていない場合は エアシールドに組み合わせ、 1096 00:48:48,160 --> 00:48:52,748 医師Schlotkinはあなたを与えるだろう 娘は彼女の古い鼻をバックアップする。 1097 00:48:52,748 --> 00:48:53,748 - [あえぎ] Nooooooooooooo。 1098 00:48:53,748 --> 00:48:57,684 1099 00:48:57,684 --> 00:48:59,652 あなたはそれをどこで手に入れたの? 1100 00:48:59,652 --> 00:49:00,640 >> - すべての権利。 1101 00:49:00,640 --> 00:49:02,506 私が教えてあげましょう、教えてあげましょう。 1102 00:49:02,506 --> 00:49:03,498 >> - いいえ、パパ、ない。 1103 00:49:03,498 --> 00:49:04,490 あなたはいけません。 1104 00:49:04,490 --> 00:49:06,090 >> 私の愛する右-You're。 1105 00:49:06,090 --> 00:49:07,390 私はあなたの新しい鼻を逃してしまう。 1106 00:49:07,390 --> 00:49:10,990 しかし、私は彼ら教えてくれません 何で組み合わせ。 1107 00:49:10,990 --> 00:49:12,450 >> - 非常によく。 1108 00:49:12,450 --> 00:49:14,830 ドクターSchlotkinは、あなたの最悪を行う。 1109 00:49:14,830 --> 00:49:15,744 >> - 私の喜び。 1110 00:49:15,744 --> 00:49:19,860 1111 00:49:19,860 --> 00:49:20,800 >> - いいえ! 1112 00:49:20,800 --> 00:49:22,780 待って、待ってください。 1113 00:49:22,780 --> 00:49:24,000 私が教えてあげましょう。 1114 00:49:24,000 --> 00:49:25,830 私が教えてあげましょう。 1115 00:49:25,830 --> 00:49:28,270 >> -Iはそれを動作を知っていた。 1116 00:49:28,270 --> 00:49:31,390 すべての権利、私にそれを与える。 1117 00:49:31,390 --> 00:49:36,220 >> -The組み合わせは1つです。 1118 00:49:36,220 --> 00:49:36,740 >> エーワン。 1119 00:49:36,740 --> 00:49:37,473 >> エーワン。 1120 00:49:37,473 --> 00:49:37,972 - 二。 1121 00:49:37,972 --> 00:49:38,471 - 二。 1122 00:49:38,471 --> 00:49:39,800 - 二。 1123 00:49:39,800 --> 00:49:40,300 -Three。 1124 00:49:40,300 --> 00:49:40,800 -Three。 1125 00:49:40,800 --> 00:49:41,800 -Three。 1126 00:49:41,800 --> 00:49:42,300 - 四。 1127 00:49:42,300 --> 00:49:42,800 - 四。 1128 00:49:42,800 --> 00:49:44,707 - 四。 1129 00:49:44,707 --> 00:49:45,521 -Five。 1130 00:49:45,521 --> 00:49:46,430 -Five。 1131 00:49:46,430 --> 00:49:47,930 -Five。 1132 00:49:47,930 --> 00:49:53,480 組み合わせが1つである - SO、 二つ、三つ、四つ、五つ。 1133 00:49:53,480 --> 00:49:56,140 それは愚かな組み合わせだ 私が今まで私の人生の中で聞いています。 1134 00:49:56,140 --> 00:49:58,640 つまり、もののANのようなものだ 馬鹿は彼の荷物にならない。 1135 00:49:58,640 --> 00:50:00,000 >> あなた、あなたの殿下を-Thank。 1136 00:50:00,000 --> 00:50:01,340 >> [REMOTE CLICKS] 1137 00:50:01,340 --> 00:50:02,450 >> あなたは - 何をしましたか? 1138 00:50:02,450 --> 00:50:03,800 >> -Iは、壁をオフになっています。 1139 00:50:03,800 --> 00:50:05,010 >> - いいえ、あなたはあなたがしませんでした 映画全体をオフになっています。 1140 00:50:05,010 --> 00:50:06,220 >> -Iすまんすまん、間違ったボタンを押した。 1141 00:50:06,220 --> 00:50:07,064 >> 型ウェル、背中にそれを置く! 1142 00:50:07,064 --> 00:50:07,910 背面に映画を入れて! 1143 00:50:07,910 --> 00:50:08,300 >> - はい、サー! 1144 00:50:08,300 --> 00:50:08,799 はい、先生。 1145 00:50:08,799 --> 00:50:09,660 それでは、アーノルドに行く-LEt。 1146 00:50:09,660 --> 00:50:10,450 、グレッチェン是非。 1147 00:50:10,450 --> 00:50:12,533 もちろん、あなたが、私が知っているよ このためにあなたを請求する必要があります。 1148 00:50:12,533 --> 00:50:16,720 1149 00:50:16,720 --> 00:50:17,220 型ウェル? 1150 00:50:17,220 --> 00:50:17,802 それは動作しましたか? 1151 00:50:17,802 --> 00:50:18,510 王はどこにありますか? 1152 00:50:18,510 --> 00:50:20,218 >> - それは、私たちの先生を働いた 組み合わせを持っている。 1153 00:50:20,218 --> 00:50:20,740 - グレート。 1154 00:50:20,740 --> 00:50:24,810 今、私たちはすべての最後の息を取ることができます 惑星Druidiaから新鮮な空気を。 1155 00:50:24,810 --> 00:50:25,890 組み合わせは何ですか? 1156 00:50:25,890 --> 00:50:28,155 >> - オン、二つ、三つ、四つ、五つ。 1157 00:50:28,155 --> 00:50:29,890 >> - オン、二つ、三つ、四つ、五つ? 1158 00:50:29,890 --> 00:50:30,390 - はい。 1159 00:50:30,390 --> 00:50:31,110 - すなわちは驚くべ​​きことだ。 1160 00:50:31,110 --> 00:50:34,550 私は同じを持っている 荷物上の組み合わせ。 1161 00:50:34,550 --> 00:50:37,160 のためのスペースボール1を準備する 即時出発。 1162 00:50:37,160 --> 00:50:38,160 >> - はい、先生。 1163 00:50:38,160 --> 00:50:40,745 >> 変更-and 荷物上の組み合わせ。 1164 00:50:40,745 --> 00:50:41,578 [閉扉SOUND] 1165 00:50:41,578 --> 00:50:42,064 [ヘルメットに当たっドアCLINK] 1166 00:50:42,064 --> 00:50:42,550 -Ahh。 1167 00:50:42,550 --> 00:50:43,383 [END VIDEO再生] 1168 00:50:43,383 --> 00:50:46,700 DAVID J.マラン:それはのためにそれだ CS50は、来週お会いしましょう​​。 1169 00:50:46,700 --> 00:50:49,883 ナレーター:そして今、ディープ 祈るファーナムによる思考、。 1170 00:50:49,883 --> 00:50:53,160 1171 00:50:53,160 --> 00:50:55,860 >> 祈るファーナム:C言語でコーディングされる スクラッチよりもそんなに悪い。 1172 00:50:55,860 --> 00:50:57,320 printfの、スクラッチは嘘だった。 1173 00:50:57,320 --> 00:50:59,930 1174 00:50:59,930 --> 00:51:01,430 >> [笑いサウンドバイト] 1175 00:51:01,430 --> 00:51:02,486