1 00:00:00,000 --> 00:00:03,944 >> [音楽再生] 2 00:00:03,944 --> 00:00:10,732 3 00:00:10,732 --> 00:00:11,690 DAVIDマラン:すべての権利。 4 00:00:11,690 --> 00:00:14,674 これはCS50であり、そしてこの 週2の終わりです。 5 00:00:14,674 --> 00:00:16,840 私は私がすることができませんでしたごめんなさい そこにすべての今日はあなたと、 6 00:00:16,840 --> 00:00:18,300 しかし、あなたは非常に良い手にしています。 7 00:00:18,300 --> 00:00:21,710 私が紹介させて CS50自身のロブ・ボーデン。 8 00:00:21,710 --> 00:00:29,106 9 00:00:29,106 --> 00:00:31,730 ROB BOWDEN:そしてもちろん、その後、 我々は、事実の楽しさを確認する必要があり 10 00:00:31,730 --> 00:00:36,820 彼は私たちに垂直に送信したこと ビデオとは、このことを示しています。 11 00:00:36,820 --> 00:00:38,320 >> [ビデオ再生] 12 00:00:38,320 --> 00:00:39,820 >> [音楽再生] 13 00:00:39,820 --> 00:00:42,350 >> [足跡] 14 00:00:42,350 --> 00:00:44,730 >> - このビデオはしませんでした このように見ています。 15 00:00:44,730 --> 00:00:46,570 これを防止されている可能性があります。 16 00:00:46,570 --> 00:00:49,070 縦動画にノーと言います。 17 00:00:49,070 --> 00:00:53,310 >> とき-vertical動画が起こります お使いのカメラ間違った方法を保持します。 18 00:00:53,310 --> 00:00:55,880 あなたのビデオが終了します がらくたのように見えるまで。 19 00:00:55,880 --> 00:00:57,650 >> - [イサキ] 20 00:00:57,650 --> 00:01:02,240 >> はまってより多くの人々が-Thereです 毎日垂直ビデオを作るに。 21 00:01:02,240 --> 00:01:06,240 それは割れないか、または何もないです、 それはまだ本当に悪いです。 22 00:01:06,240 --> 00:01:10,410 2つの異なる種類があります。 VVSに罹患している人々。 23 00:01:10,410 --> 00:01:14,160 最初のグループは扱い 彼らは写真のように撮影する動画。 24 00:01:14,160 --> 00:01:15,850 彼らは、任意の害を意味するものではありません。 25 00:01:15,850 --> 00:01:19,180 彼らはちょうどそれを理解していません あなたが絵を回すことができる一方で、 26 00:01:19,180 --> 00:01:20,880 あなたは本当にビデオをオンにすることはできません。 27 00:01:20,880 --> 00:01:21,880 >> [クラッシュ] 28 00:01:21,880 --> 00:01:23,460 >> - [モンキーSOUNDS] 29 00:01:23,460 --> 00:01:27,540 >> -The他のグループは、人々です 誰が[ピー]を与えることはありません。 30 00:01:27,540 --> 00:01:31,090 >> -verticalビデオ症候群は危険です。 31 00:01:31,090 --> 00:01:34,120 モーション画像は持っています 常に水平方向となって。 32 00:01:34,120 --> 00:01:35,990 テレビでは、水平です。 33 00:01:35,990 --> 00:01:38,380 コンピュータの画面は水平です。 34 00:01:38,380 --> 00:01:41,580 人々の目は水平です。 35 00:01:41,580 --> 00:01:45,170 我々はに内蔵されていません 垂直ビデオを見ます。 36 00:01:45,170 --> 00:01:47,600 >> -Iは、縦動画が大好きです。 37 00:01:47,600 --> 00:01:50,410 >> -Nobodyはあなたを気に。 38 00:01:50,410 --> 00:01:53,340 >> この問題の-if あなたも、放置 39 00:01:53,340 --> 00:01:57,650 4ビデオを示すが開始されます 一度だけの帯域幅を保存します。 40 00:01:57,650 --> 00:02:02,400 >> -Letterboxed縦動画だろう 切手の大きさです。 41 00:02:02,400 --> 00:02:04,920 >> - そしてそれはどこにでも広がっていきます。 42 00:02:04,920 --> 00:02:07,670 ムービー画面が持っています 常に水平方向となって。 43 00:02:07,670 --> 00:02:11,200 縦動画になっている場合 受け入れ、映画館 44 00:02:11,200 --> 00:02:13,930 背が高く、痩せなければならないだろう。 45 00:02:13,930 --> 00:02:17,710 >> - そして映画館のすべてが希望 解体と再構築を取得する必要があります。 46 00:02:17,710 --> 00:02:22,090 そして時間によって、彼らは再構築されました、 ミラクニスは、古いものと醜いだろう。 47 00:02:22,090 --> 00:02:24,342 >> -Birdsはそれらにクラッシュして死んでしまいます。 48 00:02:24,342 --> 00:02:26,530 >> -We'llすべてが堅い取得します 見上げから首。 49 00:02:26,530 --> 00:02:29,800 >> - そして誰もで座っていないだろう 二度と前列。 50 00:02:29,800 --> 00:02:37,170 >> -Georgeルーカスが再リリースされますスター 戦争はスキニー版をagain--。 51 00:02:37,170 --> 00:02:41,860 >> -Iは本当に言うことができませんでした 私が伝えたかった物語。 52 00:02:41,860 --> 00:02:46,030 これは私のために絶好のチャンスでした 新しい技術を試します。 53 00:02:46,030 --> 00:02:48,150 >> ジャークを-You're。 54 00:02:48,150 --> 00:02:54,430 >> モバイルデバイスがために使用され-every時間 記録映像は、誘惑があります。 55 00:02:54,430 --> 00:02:56,370 ただノーと言います。 56 00:02:56,370 --> 00:03:00,116 ジョージ・ルーカスにノーと言います。 57 00:03:00,116 --> 00:03:04,062 古いミラクニスにノーと言います。 58 00:03:04,062 --> 00:03:06,600 縦動画にノーと言います。 59 00:03:06,600 --> 00:03:12,511 >> 誰かがそれをやって見れば - と、言って、 「あなたはその権利ダミーを撮影していません!」 60 00:03:12,511 --> 00:03:15,433 >> [音楽再生] 61 00:03:15,433 --> 00:03:18,842 62 00:03:18,842 --> 00:03:19,830 >> [END再生] 63 00:03:19,830 --> 00:03:23,702 >> [拍手] 64 00:03:23,702 --> 00:03:27,598 >> [AUDIO OUT] 65 00:03:27,598 --> 00:03:44,041 66 00:03:44,041 --> 00:03:45,790 ROB BOWDEN:--simple 暗号化の形態、 67 00:03:45,790 --> 00:03:49,500 基本的に暗号化され そして、秘密のメッセージの復号化。 68 00:03:49,500 --> 00:03:52,590 そこでここでは、非常にシンプルなおもちゃを持っています。 69 00:03:52,590 --> 00:03:56,900 そして、アイデアは外輪です 内輪の周りを回転します。 70 00:03:56,900 --> 00:04:01,610 そして、あなたは私がズーム多分あれば、見ることができます で、それは見ることが難しいですthat--。 71 00:04:01,610 --> 00:04:05,090 しかし、のような、数 1--よく、それは移動しました。 72 00:04:05,090 --> 00:04:09,120 >> 番号1は、文字にマップ 文字にX、数2のマップ 73 00:04:09,120 --> 00:04:11,630 J.信じられないほど難しいです 前方にスキップしないように。 74 00:04:11,630 --> 00:04:16,100 手紙2は、Jにマップ 数3はDにマッピングします 75 00:04:16,100 --> 00:04:20,140 このリングをあなたが与えることができます 誰か、メッセージ1、2、3。 76 00:04:20,140 --> 00:04:22,624 何らかの理由であなたのために 彼らにXJDをお伝えしたいと思います。 77 00:04:22,624 --> 00:04:24,540 しかし、あなたがそれらを与えることができます 数字のいくつかのメッセージ、 78 00:04:24,540 --> 00:04:28,460 彼らはこの指輪を持っている限り、彼ら あなたが言おうとしているものを復号化することができます。 79 00:04:28,460 --> 00:04:32,510 >> だから、これを見たかもしれません 暗号化の具体例 80 00:04:32,510 --> 00:04:36,640 クリスマスシーズンの周りの場合は前 あなたはクリスマスの物語を見てきました。 81 00:04:36,640 --> 00:04:38,520 あなたは見たことがない場合 その前に、そしてちょうど 82 00:04:38,520 --> 00:04:41,060 文字通りでTBSをオン クリスマスイブに、いつでも、 83 00:04:41,060 --> 00:04:44,510 彼らはただ背中合わせにしますので 全体日背中合わせにするために戻っています。 84 00:04:44,510 --> 00:04:46,744 そして、関連するビデオはこれです。 85 00:04:46,744 --> 00:04:47,410 [ビデオ再生] 86 00:04:47,410 --> 00:04:50,020 それがすべてと雑貨に知られて-be ラルフパーカーはここであること 87 00:04:50,020 --> 00:04:52,850 リトルのメンバーを任命 孤児アニーの秘密サークル 88 00:04:52,850 --> 00:04:56,490 そして、すべての栄誉を受ける権利があります 利点は、そこに発生します。 89 00:04:56,490 --> 00:04:59,010 台所戦争アニーに署名しました。 90 00:04:59,010 --> 00:05:03,120 インク中のピエール・アンドレを副署! 91 00:05:03,120 --> 00:05:07,460 栄誉とメリット すでに9歳で! 92 00:05:07,460 --> 00:05:12,530 >> 【ラジオから叫ん] 93 00:05:12,530 --> 00:05:13,030 -いい加減にして。 94 00:05:13,030 --> 00:05:14,000 のは、それを上に取得してみましょう。 95 00:05:14,000 --> 00:05:18,274 私はすべてのことジャズを必要としません 密輸業者や海賊について。 96 00:05:18,274 --> 00:05:20,440 と-listen明日の夜 結びの冒険 97 00:05:20,440 --> 00:05:22,540 黒海賊船の。 98 00:05:22,540 --> 00:05:25,460 さて、それはのための時間です アニーの秘密のメッセージ 99 00:05:25,460 --> 00:05:28,620 秘密サークルのあなたのメンバーのため。 100 00:05:28,620 --> 00:05:32,370 子供たちを忘れないでください、唯一のメンバー アニーの秘密サークルの 101 00:05:32,370 --> 00:05:34,880 アニーの秘密のメッセージをデコードすることができます。 102 00:05:34,880 --> 00:05:39,100 アニーはあなたに依存していることに注意してください。 103 00:05:39,100 --> 00:05:41,660 B2にあなたのピンを設定します。 104 00:05:41,660 --> 00:05:43,960 ここにメッセージです。 105 00:05:43,960 --> 00:05:44,680 12。 106 00:05:44,680 --> 00:05:45,180 11。 107 00:05:45,180 --> 00:05:45,679 2。 108 00:05:45,679 --> 00:05:48,110 -Iは私の最初の秘密会議で午前。 109 00:05:48,110 --> 00:05:49,030 >> -25。 110 00:05:49,030 --> 00:05:49,834 14。 111 00:05:49,834 --> 00:05:51,040 11。 112 00:05:51,040 --> 00:05:51,854 18。 113 00:05:51,854 --> 00:05:52,670 16。 114 00:05:52,670 --> 00:05:54,570 >> -OH、ピエールは素晴らしい声で今夜です。 115 00:05:54,570 --> 00:05:57,490 私は今夜​​のことを言うことができます メッセージが本当に重要でした。 116 00:05:57,490 --> 00:05:57,990 -3。 117 00:05:57,990 --> 00:06:00,080 25。 118 00:06:00,080 --> 00:06:01,580 それはアニー自身からのメッセージです。 119 00:06:01,580 --> 00:06:02,880 誰にも言わないでください、覚えておいてください。 120 00:06:02,880 --> 00:06:07,840 121 00:06:07,840 --> 00:06:11,130 >> -Five秒後、私だけでよ 9の少年の家の部屋 122 00:06:11,130 --> 00:06:15,830 プライバシーとデコードに座ることができます。 123 00:06:15,830 --> 00:06:16,620 なるほど! 124 00:06:16,620 --> 00:06:17,340 B! 125 00:06:17,340 --> 00:06:20,210 私は、次のに行ってきました。 126 00:06:20,210 --> 00:06:23,300 E.は、最初の単語は ""です。 127 00:06:23,300 --> 00:06:25,880 S.今では簡単に来ていました。 128 00:06:25,880 --> 00:06:28,400 U. 25。 129 00:06:28,400 --> 00:06:30,528 それはR.です 130 00:06:30,528 --> 00:06:31,278 -Comeに、Ralphie! 131 00:06:31,278 --> 00:06:31,861 私は行く奨めてきました! 132 00:06:31,861 --> 00:06:33,182 右ダウンして-I'll、馬! 133 00:06:33,182 --> 00:06:36,038 ジー達人。 134 00:06:36,038 --> 00:06:42,840 T. O.」は、必ず " - 何を確認してください? 135 00:06:42,840 --> 00:06:44,770 台所戦争は何でした アニー言いたいですか? 136 00:06:44,770 --> 00:06:46,381 何を確認してください? 137 00:06:46,381 --> 00:06:47,825 >> -Randyが行くようになっています! 138 00:06:47,825 --> 00:06:48,866 あなたが出て来てくださいますか? 139 00:06:48,866 --> 00:06:49,783 >> -All右、ママ! 140 00:06:49,783 --> 00:06:51,786 私は右のアウトになるだろう! 141 00:06:51,786 --> 00:06:53,606 私は今、近づいてきました。 142 00:06:53,606 --> 00:06:55,550 緊張はひどいものでした。 143 00:06:55,550 --> 00:06:57,050 それは何でしたか? 144 00:06:57,050 --> 00:06:59,905 惑星の運命 バランスでハングすることがあります! 145 00:06:59,905 --> 00:07:01,736 >> -Ralphie、ランディのが行くようになりました! 146 00:07:01,736 --> 00:07:05,680 >> 大声で泣くのため、右アウトすること-I'll! 147 00:07:05,680 --> 00:07:07,170 ほとんどそこに! 148 00:07:07,170 --> 00:07:08,150 私の指が飛びました。 149 00:07:08,150 --> 00:07:09,980 私の心は鋼トラップでした。 150 00:07:09,980 --> 00:07:11,496 すべての細孔が振動します。 151 00:07:11,496 --> 00:07:13,268 それはほとんど明らかになりました! 152 00:07:13,268 --> 00:07:13,767 はい。 153 00:07:13,767 --> 00:07:14,609 はい。 154 00:07:14,609 --> 00:07:15,108 はい。 155 00:07:15,108 --> 00:07:16,449 はい。 156 00:07:16,449 --> 00:07:20,240 あなたのオヴァルティンを飲むようにしてください。 157 00:07:20,240 --> 00:07:20,740 オヴァルティン? 158 00:07:20,740 --> 00:07:26,687 159 00:07:26,687 --> 00:07:27,520 安っぽい商業? 160 00:07:27,520 --> 00:07:32,040 161 00:07:32,040 --> 00:07:34,920 クソ野郎。 162 00:07:34,920 --> 00:07:35,890 >> [END再生] 163 00:07:35,890 --> 00:07:39,650 >> ROB BOWDEN:だから、どのようです オヴァルティンは、暗号化に関するものです。 164 00:07:39,650 --> 00:07:42,290 基本的にCS50はちょうどアドバタイズ オヴァルティン、私たちは可能性があり 165 00:07:42,290 --> 00:07:44,400 オヴァルティンのために安っぽい商業なります。 166 00:07:44,400 --> 00:07:44,900 大丈夫。 167 00:07:44,900 --> 00:07:47,120 だから今、実際のコンピュータサイエンス。 168 00:07:47,120 --> 00:07:50,670 月曜日に覚えておいてください、私たちはオフに左 文字列への深いダイビング。 169 00:07:50,670 --> 00:07:52,820 だから我々は扱いました 文字列 "Zamyla。」 170 00:07:52,820 --> 00:07:55,130 そして、我々は認識しました。 我々が扱うことができるという事実 171 00:07:55,130 --> 00:07:57,510 文字のシーケンスとして「Zamyla」。 172 00:07:57,510 --> 00:07:59,740 そして、私たちが学んだことを覚えておいてください ブラケット表記。 173 00:07:59,740 --> 00:08:01,995 だから、これを保存した場合 その後、文字列内の「S」 174 00:08:01,995 --> 00:08:05,860 我々が言った場合のブラケット0、それは希望 手紙資本Zを示します 175 00:08:05,860 --> 00:08:09,790 そして、我々はSブラケット1、と言った場合 最初の小文字のaを示すことになります、 176 00:08:09,790 --> 00:08:14,220 などのブラケット5まで、 これは最後のAを示すことになります。 177 00:08:14,220 --> 00:08:17,090 >> 今すぐことを覚えておいてください この文字列の長さが6です、 178 00:08:17,090 --> 00:08:23,220 しかし、文字列にインデックスがあります 0〜5、それを介してZが続きます。 179 00:08:23,220 --> 00:08:28,650 だから、これは今、大きな画像に収まります コンピュータのメモリの、あなたのRAM。 180 00:08:28,650 --> 00:08:32,020 だから、どこかプログラムがその お使いのコンピュータを実行しています 181 00:08:32,020 --> 00:08:34,780 Zamylaを覚えておく必要があります メモリ内のどこか。 182 00:08:34,780 --> 00:08:36,029 だから私はボランティアを持つことができますか? 183 00:08:36,029 --> 00:08:38,840 184 00:08:38,840 --> 00:08:40,181 はい、お願いします。 185 00:08:40,181 --> 00:08:50,120 186 00:08:50,120 --> 00:08:51,500 そして、あなたの名前は何ですか? 187 00:08:51,500 --> 00:08:52,410 >> DEAN:ディーン。 188 00:08:52,410 --> 00:08:53,550 >> ROB BOWDEN:ディーン? 189 00:08:53,550 --> 00:08:54,910 、ディーンはじめまして。 190 00:08:54,910 --> 00:08:58,240 だからここに来て、 我々はあなたが描く必要があるとしています 191 00:08:58,240 --> 00:09:00,740 メモリの私たちの素敵な粋なレイアウトに。 192 00:09:00,740 --> 00:09:05,950 今、私はメモリと考えたいです バイトの1つの長いストリップとして、 193 00:09:05,950 --> 00:09:11,090 ちょうど表示の目的のために我々はよ ちょうど、上から下へ、左へん。 194 00:09:11,090 --> 00:09:11,590 OK? 195 00:09:11,590 --> 00:09:22,030 >> だから私は、表示するつもりです Getstrings.cをprogram--。 196 00:09:22,030 --> 00:09:25,760 だからこのすべてのプログラムです やって4つの文字列を要求しています 197 00:09:25,760 --> 00:09:28,830 を持つユーザーからの GetString、次に印刷 198 00:09:28,830 --> 00:09:30,950 何でも、最初の文字列が入力されました。 199 00:09:30,950 --> 00:09:32,840 我々は4を介して2つを無視しています。 200 00:09:32,840 --> 00:09:33,610 OK。 201 00:09:33,610 --> 00:09:38,210 だからこっちnow--時 私の最初の要求のS1。 202 00:09:38,210 --> 00:09:39,740 だから、コンピュータです。 203 00:09:39,740 --> 00:09:41,680 そして、あなたはのGetStringを実施しています。 204 00:09:41,680 --> 00:09:46,710 ですから、文字列からの要求します 私、私は、[OK]を、ディーンを言います。 205 00:09:46,710 --> 00:09:47,900 「ディーンを。 "という文字列を与えます 206 00:09:47,900 --> 00:09:50,300 >> だから、どこかのメモリでは、 覚えておく必要があり、「ディーン」を 207 00:09:50,300 --> 00:09:52,160 だから、どこかのメモリに書き込みます。 208 00:09:52,160 --> 00:09:58,270 209 00:09:58,270 --> 00:09:59,210 パーフェクト。 210 00:09:59,210 --> 00:09:59,880 OK。 211 00:09:59,880 --> 00:10:01,740 だから今、私たちはとs2います。 212 00:10:01,740 --> 00:10:03,869 S2があることを行っています GetStringに要求。 213 00:10:03,869 --> 00:10:05,160 だから私は、文字列を入力するつもりです。 214 00:10:05,160 --> 00:10:08,720 私は入るつもりだ」ハンナを。」 215 00:10:08,720 --> 00:10:10,586 だから、どこかでメモリに「ハンナ」と入力します。 216 00:10:10,586 --> 00:10:18,860 217 00:10:18,860 --> 00:10:19,360 うん。 218 00:10:19,360 --> 00:10:23,000 -H。 219 00:10:23,000 --> 00:10:25,550 >> [OK]を、今S3。 220 00:10:25,550 --> 00:10:28,380 そして、それは別のことになるだろう GetStringに要求。 221 00:10:28,380 --> 00:10:37,020 そして今、「マリア」と入力します。 222 00:10:37,020 --> 00:10:37,520 大丈夫。 223 00:10:37,520 --> 00:10:40,980 そして最後があります GetString、S4に要求。 224 00:10:40,980 --> 00:10:42,580 だから、私は知りません。 225 00:10:42,580 --> 00:10:45,640 どのように私たちは一緒に行くについて 国教廃止条例反対論。 226 00:10:45,640 --> 00:10:49,460 だから、メモリにそれを入力してください。 227 00:10:49,460 --> 00:10:50,400 うん。 228 00:10:50,400 --> 00:10:53,970 だから「ロブ」を行います 229 00:10:53,970 --> 00:10:54,560 >> OK。 230 00:10:54,560 --> 00:10:58,410 やった、なぜだから今explain-- あなたはこれらのスペースを残して? 231 00:10:58,410 --> 00:11:01,340 あなたはこの空白を持っていないのはなぜ ここ、ここ、とここまでのスペース? 232 00:11:01,340 --> 00:11:05,170 233 00:11:05,170 --> 00:11:05,670 はい。 234 00:11:05,670 --> 00:11:09,450 私が行くときに気付きます もしそうであればs1--印刷する私たち 235 00:11:09,450 --> 00:11:11,890 「ハンナ」の実行を持っていました 右に横に「ディーン」 236 00:11:11,890 --> 00:11:14,360 私たちはときに知っていますか 文字列「ディーン」が終了? 237 00:11:14,360 --> 00:11:19,470 だから、文字列s1が持っているかもしれ印刷 ちょうど印刷された「DeanHannahMariaRob」 238 00:11:19,470 --> 00:11:22,720 それは任意の手掛かりを持っていない場合 「ディーン」が実際に終了したときの。 239 00:11:22,720 --> 00:11:23,240 >> 大丈夫。 240 00:11:23,240 --> 00:11:27,650 だから我々は、実際にメモリ内の方法 文字列のこの端を表します 241 00:11:27,650 --> 00:11:29,940 バックスラッシュゼロです。 242 00:11:29,940 --> 00:11:32,620 したがって、この空間は、私たちが望んでいたまさにです。 243 00:11:32,620 --> 00:11:34,040 これは、バックスラッシュゼロにする必要があります。 244 00:11:34,040 --> 00:11:37,690 これは、バックスラッシュゼロになります これはバックスラッシュゼロになります。 245 00:11:37,690 --> 00:11:41,585 そして、あなたは素晴らしい賞を持つことができます 完璧なボランティアであることのため。 246 00:11:41,585 --> 00:11:44,910 247 00:11:44,910 --> 00:11:45,860 ストレスボールを持っていこう! 248 00:11:45,860 --> 00:11:49,040 249 00:11:49,040 --> 00:11:49,700 >> OK。 250 00:11:49,700 --> 00:11:54,420 したがって、この文字のバックスラッシュゼロです どのように我々は、文字列の終わりを示します。 251 00:11:54,420 --> 00:11:57,120 それはどのようにするとき、任意のプログラムです 文字列を印刷したいです、 252 00:11:57,120 --> 00:11:59,760 それはhow--我々が学んだ覚えています STRLEN機能先週? 253 00:11:59,760 --> 00:12:00,940 文字列の長さは? 254 00:12:00,940 --> 00:12:03,770 これは、文字列の長さが可能である方法です 文字列がどのくらいかを決定。 255 00:12:03,770 --> 00:12:05,810 それはちょうど反復し続けます 文字を超えます 256 00:12:05,810 --> 00:12:08,217 それが見つかるまで ゼロの文字をバックスラッシュ。 257 00:12:08,217 --> 00:12:11,050 だから、重要なことは実現します バックスラッシュゼロの文字について 258 00:12:11,050 --> 00:12:14,950 それが表現されています ビットがすべてゼロによります。 259 00:12:14,950 --> 00:12:18,980 だから、これは別個のものであることがわかり ゼロの文字から。 260 00:12:18,980 --> 00:12:23,010 あなたは覚えているのであれば、ゼロ文字、 彼は最後に与えた例では、 261 00:12:23,010 --> 00:12:27,360 講義のどこに文字マップ 65大文字のAマップのようto--。 262 00:12:27,360 --> 00:12:29,130 97にマップを小文字。 263 00:12:29,130 --> 00:12:30,890 小文字のbが98になります。 264 00:12:30,890 --> 00:12:35,220 だから数0マップは私にはありませんto-- 私の頭の上をオフに知っています。 265 00:12:35,220 --> 00:12:36,400 44または45。 266 00:12:36,400 --> 00:12:37,890 その領域内のどこか。 267 00:12:37,890 --> 00:12:40,850 >> だから、文字0は実際の数です。 268 00:12:40,850 --> 00:12:44,350 しかし、バックスラッシュゼロ すべてのゼロ・ビットにマップされます。 269 00:12:44,350 --> 00:12:46,380 それで区別があります バックスラッシュゼロの間、 270 00:12:46,380 --> 00:12:48,450 これは私たちがヌルターミネータを呼ぶことにします。 271 00:12:48,450 --> 00:12:53,210 区別があります バックスラッシュゼロと文字はゼロ。 272 00:12:53,210 --> 00:12:54,350 >> 大丈夫。 273 00:12:54,350 --> 00:12:57,520 だから、文字列の詳細少し話。 274 00:12:57,520 --> 00:13:01,470 それでは、私たちはここを参照してください、これはどのようにあります それはメモリに配置されます。 275 00:13:01,470 --> 00:13:07,940 配列のような文字列のため、このアイデア characters--の公式コンピュータがそう 276 00:13:07,940 --> 00:13:10,750 シーケンスのsciency用語は、配列です。 277 00:13:10,750 --> 00:13:13,790 だから我々は文字列を呼び出します 文字の配列。 278 00:13:13,790 --> 00:13:17,770 その他のデータは、実際に存在します 私たちは外の配列を作ることができるタイプ。 279 00:13:17,770 --> 00:13:19,975 >> だからこれをやる気にさせる、例を見て。 280 00:13:19,975 --> 00:13:22,810 281 00:13:22,810 --> 00:13:29,812 私たちは、私はよages0.cそれを呼ぶことにします 私たちのテンプレートをコピーして貼り付けます。 282 00:13:29,812 --> 00:13:32,470 283 00:13:32,470 --> 00:13:33,410 OK。 284 00:13:33,410 --> 00:13:39,378 そのため、このプログラムで私たち やってみたい時代をつかむです 285 00:13:39,378 --> 00:13:45,160 コー​​スで3人の学生の。 286 00:13:45,160 --> 00:13:49,240 だから、私たちが知っているint型age-- そして今私は0を言うつもりです。 287 00:13:49,240 --> 00:13:53,140 だから、AGE1を言いたいかもしれないが、 目的のために我々は非常にすぐに表示されます、 288 00:13:53,140 --> 00:13:57,187 私はint型のage0がGetIntでに等しいと言うでしょう。 289 00:13:57,187 --> 00:13:59,270 GetIntでの同じ呼び出しそう 私たちは、私を使用してきたこと 290 00:13:59,270 --> 00:14:01,561 プロンプトすることが起こるはありません 「私の年齢を与える。」と言っ 291 00:14:01,561 --> 00:14:03,120 しかし、単にそれを要求します。 292 00:14:03,120 --> 00:14:06,510 >> そしてAGE1はGetIntでに等しいです。 293 00:14:06,510 --> 00:14:09,600 INT age2はGetIntでに等しいです。 294 00:14:09,600 --> 00:14:14,070 だから、再び、3人の学生が、 最終的には変数のインデックス 295 00:14:14,070 --> 00:14:16,890 age2を通じてage0です。 296 00:14:16,890 --> 00:14:17,550 OK。 297 00:14:17,550 --> 00:14:23,960 したがって、このプログラムは何でもします 我々はage0、AGE1、およびage2にしたいです、 298 00:14:23,960 --> 00:14:27,670 しかし、このプログラムは、最終的に 3人の学生のために働きます。 299 00:14:27,670 --> 00:14:28,380 >> OK。 300 00:14:28,380 --> 00:14:32,110 だから今私は4人をしたい場合は? 301 00:14:32,110 --> 00:14:36,000 まあ、私は戻ってする必要がありますするつもりです 私のコードにコメントを変更し、 302 00:14:36,000 --> 00:14:39,840 そして今、我々はint型を持っています age3はGetIntでに等しいです。 303 00:14:39,840 --> 00:14:40,610 OK。 304 00:14:40,610 --> 00:14:43,660 だから、誰がここでの問題を見ていますか? 305 00:14:43,660 --> 00:14:47,310 何が問題ですか セットアップのこの種で? 306 00:14:47,310 --> 00:14:47,810 うん。 307 00:14:47,810 --> 00:14:53,110 308 00:14:53,110 --> 00:14:53,610 うん。 309 00:14:53,610 --> 00:14:56,360 だから我々は作成しています 各学生のための変数です。 310 00:14:56,360 --> 00:15:00,140 今では動作しますが、 最終的にどのような今私の場合 311 00:15:00,140 --> 00:15:06,500 私は歳をつかむしたい」と言います 8学生や16学生 312 00:15:06,500 --> 00:15:11,340 またはしかし多くの学生の CS50の学生数百人 313 00:15:11,340 --> 00:15:16,750 またはキャンパスで何千人もの生徒 または世界の人々の十億? 314 00:15:16,750 --> 00:15:19,130 だから、最終的にこれは、持続可能ではありません。 315 00:15:19,130 --> 00:15:21,990 あなた自身がコピーを参照してくださいいつでも このようにして貼り付けコード、 316 00:15:21,990 --> 00:15:25,050 あなたは、一般的に感じるはず よりよい方法があること。 317 00:15:25,050 --> 00:15:31,290 >> 私たちが紹介するところこれがあります 配列宣言。 318 00:15:31,290 --> 00:15:34,564 ですから、配列を宣言するとき、 これは何を一般的なフォーマットであります 319 00:15:34,564 --> 00:15:35,480 見えるように起こっています。 320 00:15:35,480 --> 00:15:36,664 私たちは、タイプを​​言おうとしています。 321 00:15:36,664 --> 00:15:38,830 し、我々はするつもりです その配列の名前を付け、 322 00:15:38,830 --> 00:15:41,150 我々は、任意の変数を定義すると同じように。 323 00:15:41,150 --> 00:15:43,980 そして、最終的に我々が使用しています このブラケット表記再び 324 00:15:43,980 --> 00:15:47,480 しかし、異なるコンテキストで どのように我々は、以前のそれを使用していました。 325 00:15:47,480 --> 00:15:51,860 >> そこでここでは、これは通常のようになります 私たちが見てきた変数宣言。 326 00:15:51,860 --> 00:15:54,890 だから我々は前にint型のxセミコロンを見てきました。 327 00:15:54,890 --> 00:16:00,020 さて、私たちは何かを見るかもしれません int型のxブラケット5のように。 328 00:16:00,020 --> 00:16:04,020 そして、にこのアイデアを置きます 我々はhave-- GetIntでプログラム 329 00:16:04,020 --> 00:16:08,850 私たちは実装することができます 同じように、この。 330 00:16:08,850 --> 00:16:13,630 >> のがCSで言ってみましょう、我々が使用する傾向があります 何かの数であるn。 331 00:16:13,630 --> 00:16:16,150 そこでここでは、するつもりです 4学生を格納します。 332 00:16:16,150 --> 00:16:25,960 そして今、我々はint型の年齢を言うことができます ブラケットはかなりそれを取得しませんN-- yet-- 333 00:16:25,960 --> 00:16:32,210 4人の配列を宣言します。 334 00:16:32,210 --> 00:16:38,050 だから、これはどのように見えますか メモリはこのようになります。 335 00:16:38,050 --> 00:16:39,570 これをクリアします。 336 00:16:39,570 --> 00:16:46,606 そして、私たちはどこかに必要があるとしています memory--に私はこれをあげますよ。 337 00:16:46,606 --> 00:16:52,690 338 00:16:52,690 --> 00:16:53,808 >> だから、どこかのメモリインチ 339 00:16:53,808 --> 00:16:58,760 340 00:16:58,760 --> 00:16:59,727 1 2 3 4。 341 00:16:59,727 --> 00:17:03,383 342 00:17:03,383 --> 00:17:09,849 我々は、行の4つの整数を持っています 4つの整数のこの配列のために。 343 00:17:09,849 --> 00:17:13,820 そこで、現在、何です これらのボックスのいずれかのサイズは? 344 00:17:13,820 --> 00:17:17,190 345 00:17:17,190 --> 00:17:17,690 うん。 346 00:17:17,690 --> 00:17:18,390 これは、4バイトです。 347 00:17:18,390 --> 00:17:19,690 これは32ビットです。 348 00:17:19,690 --> 00:17:22,310 だから今、これは異なっています 我々配列から 349 00:17:22,310 --> 00:17:24,020 、以前の文字の配列を見ました。 350 00:17:24,020 --> 00:17:28,540 文字列の各ボックスは、1バイトのみでした 文字は1バイトだけだからです。 351 00:17:28,540 --> 00:17:32,170 しかし、整数の配列で、それぞれ ボックスには、順番に4バイトである必要があります 352 00:17:32,170 --> 00:17:34,060 全体の整数を合わせて。 353 00:17:34,060 --> 00:17:37,197 だから、これは何であるかの配列 4 int型は次のようになります。 354 00:17:37,197 --> 00:17:40,510 355 00:17:40,510 --> 00:17:43,870 >> そして戻ってコードに。 356 00:17:43,870 --> 00:17:47,460 今、私たちは実際に格納したいです その配列に整数。 357 00:17:47,460 --> 00:17:53,470 だから今、これは非常に、非常に、非常にあります いくつかの点であろう一般的なパターン 358 00:17:53,470 --> 00:17:54,680 筋肉の記憶になります。 359 00:17:54,680 --> 00:17:56,710 だから私は0に等しいint型。 360 00:17:56,710 --> 00:17:57,940 I N未満。 361 00:17:57,940 --> 00:18:01,850 私プラスプラス。 362 00:18:01,850 --> 00:18:05,790 年齢層は、私がGetIntでに等しいです。 363 00:18:05,790 --> 00:18:15,100 >> したがって、このループのため、この形式は、 あなたは非常に慣れる必要があります。 364 00:18:15,100 --> 00:18:20,010 だから、これは、一般的に、どのようになります ほぼすべての配列を反復処理。 365 00:18:20,010 --> 00:18:23,690 今、この種のに気付きます なぜ最初から説明します 366 00:18:23,690 --> 00:18:29,870 我々は、ループがintのために行くために持っていませんでした 私は10以下、1に等しいです。 367 00:18:29,870 --> 00:18:34,200 から始まることである理由 ゼロは、配列でも、この作業を行います。 368 00:18:34,200 --> 00:18:36,270 だから、配列はゼロが索引付けされます。 369 00:18:36,270 --> 00:18:40,360 この配列の長さが4である場合、 インデックスは0〜3です。 370 00:18:40,360 --> 00:18:42,880 >> したがって、最初を通して このforループの反復 371 00:18:42,880 --> 00:18:49,930 私たちは年齢を設定することになるだろう GetIntでの呼び出しに等しいブラケット0。 372 00:18:49,930 --> 00:18:52,440 だから私は起こったものは何でも キーボードで入力します。 373 00:18:52,440 --> 00:18:56,970 2回目のパスでは、我々はしています GetIntでのAGE1等しく設定します。 374 00:18:56,970 --> 00:18:58,230 第3のパス、age2。 375 00:18:58,230 --> 00:18:59,880 最終パスのage3。 376 00:18:59,880 --> 00:19:05,750 だから、ループの最初のパスであれば 私は、キーボードで数字の4を入力してください 377 00:19:05,750 --> 00:19:07,740 その後、我々はここで4を挿入します。 378 00:19:07,740 --> 00:19:11,470 私が入力した2回目のパスであれば 50、我々はここで50を出してあげます。 379 00:19:11,470 --> 00:19:15,180 第3のパス上の私はかもしれません 、負の1を入力し、負の1 380 00:19:15,180 --> 00:19:21,810 そして最後に、私は0--を入力した場合 今、これはインデックス3であったことを覚えています。 381 00:19:21,810 --> 00:19:25,350 >> 我々ループバックした後、私はあります 4にインクリメントされる予定。 382 00:19:25,350 --> 00:19:27,770 私はもはや4はn未満ではありません。 383 00:19:27,770 --> 00:19:29,840 そして、我々はループから抜け出します。 384 00:19:29,840 --> 00:19:32,578 だから、これの何が問題でしょうか? 385 00:19:32,578 --> 00:19:38,140 386 00:19:38,140 --> 00:19:38,729 [聞こえませんか]? 387 00:19:38,729 --> 00:19:39,604 聴衆:[聞こえません] 388 00:19:39,604 --> 00:19:45,880 389 00:19:45,880 --> 00:19:46,400 >> はい。 390 00:19:46,400 --> 00:19:51,550 だから、配列には4つだけの場所を持っています、 これは指数0〜3のようにことを意味します。 391 00:19:51,550 --> 00:19:55,630 これが事実であれば、私はそうだろう いくつかの点で値4をとります。 392 00:19:55,630 --> 00:20:00,910 年齢層4が設定されます こっちであることを起こるものは何でも 393 00:20:00,910 --> 00:20:02,920 私が言っているものに、6を入力してください。 394 00:20:02,920 --> 00:20:05,010 それが6にこれを設定することがあります。 395 00:20:05,010 --> 00:20:06,560 >> しかし、我々はここで終わったのか分かりません。 396 00:20:06,560 --> 00:20:08,836 これは、メモリではありません 私たちはへのアクセスを持っていました。 397 00:20:08,836 --> 00:20:10,710 だから、から覚えていれば 前回の講義、 398 00:20:10,710 --> 00:20:14,350 彼はZamylaの値をプリントアウトして、 ある時点で、彼はこの分割を打ちます 399 00:20:14,350 --> 00:20:17,990 障害が発生しました。だから、おそらく見れます あなたのような多くのセグメンテーションフォルト 400 00:20:17,990 --> 00:20:20,530 問題セットの一部を実装しています。 401 00:20:20,530 --> 00:20:24,950 しかし、これは方法の1つです あなたは、セグメンテーションに出会うことができます 402 00:20:24,950 --> 00:20:28,540 あなたがアクセスして起動すると、故障 あなたがすべきではない方法でメモリ。 403 00:20:28,540 --> 00:20:34,117 だから我々は、へのアクセス権を持っていませんでした この場所は、これはバグです。 404 00:20:34,117 --> 00:20:37,760 405 00:20:37,760 --> 00:20:40,190 >> だから、これは良いです。 406 00:20:40,190 --> 00:20:45,820 今まだ小さいがあります このコードの問題を修正しました。 407 00:20:45,820 --> 00:20:50,720 そして、それは私たちがしていることを、基本的です まだ4人で立ち往生。 408 00:20:50,720 --> 00:20:52,940 今、私は8学生を使用したい場合は、[OK]をクリックします。 409 00:20:52,940 --> 00:20:54,350 それは、その大したことではないのです。 410 00:20:54,350 --> 00:20:58,120 私は、中に入っ変更することができます コメント、およびnに変更します。 411 00:20:58,120 --> 00:20:59,760 さて、これは8の学生で動作します。 412 00:20:59,760 --> 00:21:02,190 私はこれをコンパイルして実行した場合 これは、それが表示されme-- 413 00:21:02,190 --> 00:21:07,870 それは8のための整数を要求します 学生とそれだけで動作します。 414 00:21:07,870 --> 00:21:11,850 しかし、それはする必要があるため、理想的な未満です プログラムごとに単一の時間を再コンパイル 415 00:21:11,850 --> 00:21:15,960 私は、学生の数を変更したいです 私はのために年齢を入力すること。 416 00:21:15,960 --> 00:21:22,990 >> だから、最終的な改善に 我々はhere--参照してくださいよ、この、我々はしています 417 00:21:22,990 --> 00:21:26,177 人々の数を要求するだろう。 418 00:21:26,177 --> 00:21:28,010 ここでは、番号を持っています 部屋の人々の 419 00:21:28,010 --> 00:21:29,880 または部屋の人々のいずれかの年齢層。 420 00:21:29,880 --> 00:21:33,300 しかし、私たちは番号を要求するつもりです ユーザーから部屋の人々の。 421 00:21:33,300 --> 00:21:36,171 だから、これはまったく同じDO-ながらです 我々の前に見てきたループ。 422 00:21:36,171 --> 00:21:37,920 それはまったく同じです 行う-whil​​eループいるあなた 423 00:21:37,920 --> 00:21:40,050 問題セットに実装されてもよいです。 424 00:21:40,050 --> 00:21:43,102 だから限り、彼らがしているよう Nを1未満に入ります、 425 00:21:43,102 --> 00:21:45,310 そうであることをそこに持っています 客室内に少なくとも一人。 426 00:21:45,310 --> 00:21:47,407 限り、彼らはしているよう Nを1未満に入ります、 427 00:21:47,407 --> 00:21:48,990 その後、我々は再び尋ねておくつもりです。 428 00:21:48,990 --> 00:21:50,906 番号を入力してください 部屋の人々の。 429 00:21:50,906 --> 00:21:53,550 さて、かつて私たちは番号を持っています room--の人々の 430 00:21:53,550 --> 00:21:58,020 私はそこにそれを入力します この部屋には200人です。 431 00:21:58,020 --> 00:22:05,480 そして、ここに至るまで、私たちは来るつもりです 大きさ200の配列を宣言します。 432 00:22:05,480 --> 00:22:10,220 我々はだ配列を宣言しています 200年齢を保持するのに十分な大きさ。 433 00:22:10,220 --> 00:22:15,370 ダウン来て、それはループのためです あなたは非常に慣れるということ。 434 00:22:15,370 --> 00:22:19,490 したがって、この配列の繰り返し処理、 それぞれの場所への割り当て 435 00:22:19,490 --> 00:22:23,020 その配列内の整数であり、 その後、最終的にはここではしています 436 00:22:23,020 --> 00:22:28,340 ただ繰り返し処理の例を取得 そのアレイの上、値を代入するのではなく、 437 00:22:28,340 --> 00:22:30,150 しかし、値にアクセスします。 438 00:22:30,150 --> 00:22:33,810 >> だからここの上に我々は、我々を参照してください 今から一年、言っています、 439 00:22:33,810 --> 00:22:40,470 人の%iは、私歳%になります 最初の%iはプラス1です。 440 00:22:40,470 --> 00:22:43,010 だから私は、このインデックス変数です。 441 00:22:43,010 --> 00:22:49,420 2番目の%iがあることを行っています 年齢配列プラス1に格納された値。 442 00:22:49,420 --> 00:22:54,217 したがって、このプラス1は、私たちがしているという理由だけで このプラス1をsaying--、年齢私プラス1。 443 00:22:54,217 --> 00:22:57,050 このプラス1は、私たちがしているという理由だけで 今の人から今年、言っ 444 00:22:57,050 --> 00:22:58,280 この古いとなります。 445 00:22:58,280 --> 00:23:01,080 >> では、なぜこの私プラス1はありますか? 446 00:23:01,080 --> 00:23:04,064 我々はそこにプラス1を持っているのはなぜ? 447 00:23:04,064 --> 00:23:04,564 うん。 448 00:23:04,564 --> 00:23:07,410 449 00:23:07,410 --> 00:23:07,930 はい。 450 00:23:07,930 --> 00:23:10,510 だから、配列はゼロにインデックス化され覚えています。 451 00:23:10,510 --> 00:23:14,840 だから、我々はこれを印刷する場合 ただ出力を読むために誰か、 452 00:23:14,840 --> 00:23:19,380 その後、おそらく彼らは何かを見たいです 人1、人の数1のように、 453 00:23:19,380 --> 00:23:21,160 20歳になります。 454 00:23:21,160 --> 00:23:23,570 人の数2は15歳になります。 455 00:23:23,570 --> 00:23:27,420 彼らはむしろ人を見ていないだろう 数字のゼロは15歳です。 456 00:23:27,420 --> 00:23:36,460 >> だから、これをコンパイルしてだけで何を見て それはいくつかのスペースを作成しますlike--見えます。 457 00:23:36,460 --> 00:23:43,560 年齢のコンパイルを行います。 458 00:23:43,560 --> 00:23:45,080 年齢を実行します。 459 00:23:45,080 --> 00:23:46,580 私たちは部屋にいる人の数を参照してください。 460 00:23:46,580 --> 00:23:48,850 だから私はそこにあると言うだろう 部屋に3人。 461 00:23:48,850 --> 00:23:54,000 人のナンバーワンの時代、 それでは、15、20、25を言ってみましょう。 462 00:23:54,000 --> 00:23:59,680 そして今、私は今年から言いますよ 今、彼らは16、21、26となります。 463 00:23:59,680 --> 00:24:02,900 それでは、これはで動作することを見てみましょう 3に等しくないN。 464 00:24:02,900 --> 00:24:07,940 私が言うのであれば、人々の数は、5、1です 2個、3個、2個、一今から年 465 00:24:07,940 --> 00:24:11,170 彼らは、2、3になるでしょう 二歳4個、3、。 466 00:24:11,170 --> 00:24:16,500 だから私は、同じようにできました 簡単にn個万もしています。 467 00:24:16,500 --> 00:24:21,270 今、私はかなりのためにここに座っされます しばらく年代に入るが、これは動作します。 468 00:24:21,270 --> 00:24:26,000 >> だから今、メモリ内のどこかに、私たち サイズ万の配列を持っています、 469 00:24:26,000 --> 00:24:28,830 そう最終的には40,000 バイト、そこにされているので、 470 00:24:28,830 --> 00:24:31,222 これらの整数のそれぞれについて、4バイト。 471 00:24:31,222 --> 00:24:33,180 だからの配列があります サイズ万どこ我々はできます 472 00:24:33,180 --> 00:24:36,201 それらの1万人の年齢を格納します。 473 00:24:36,201 --> 00:24:36,700 大丈夫。 474 00:24:36,700 --> 00:24:40,070 このいずれかのについての質問? 475 00:24:40,070 --> 00:24:41,892 うん。 476 00:24:41,892 --> 00:24:43,350 あなたが負の数を与えた場合はどうなりますか? 477 00:24:43,350 --> 00:24:44,870 それでは、何が起こるか見てみましょう。 478 00:24:44,870 --> 00:24:49,320 この特定のcase--番号でそう 部屋、負の1の人々の。 479 00:24:49,320 --> 00:24:52,580 それはそれを拒否し、 ここに私達は起こるので、 480 00:24:52,580 --> 00:24:57,180 もしnがあるという事実を処理します 我々は再び尋ねるつもりだ未満。 481 00:24:57,180 --> 00:25:01,780 あなたが宣言しようとした場合 負のサイズの配列、 482 00:25:01,780 --> 00:25:03,950 それは一般的に動作しません。 483 00:25:03,950 --> 00:25:05,570 >> それでは、試してみましょう。 484 00:25:05,570 --> 00:25:08,000 それでは、どのような無視しましょう nの値は、それらの入力 485 00:25:08,000 --> 00:25:10,571 ちょうどint型年齢マイナスのものを言います。 486 00:25:10,571 --> 00:25:12,410 それもコンパイルする場合を見てみましょう。 487 00:25:12,410 --> 00:25:14,100 私はわかりません。 488 00:25:14,100 --> 00:25:14,920 いいえ。 489 00:25:14,920 --> 00:25:18,280 だから年齢はとして宣言されています 負のサイズを持った配列。 490 00:25:18,280 --> 00:25:22,540 だから、前払いでは、アレイはできません認識します 負のサイズであり、それを拒否します。 491 00:25:22,540 --> 00:25:26,840 今、我々は処理しませんでした場合 このDO-whil​​eループが正しく、 492 00:25:26,840 --> 00:25:28,810 我々はチェックしていなかった場合 N未満である場合1-- 493 00:25:28,810 --> 00:25:32,690 ちょうど私達を言わせて で、このすべてを持っていませんでした 494 00:25:32,690 --> 00:25:35,940 その代わりに私達はちょうど整数をつかみます。 495 00:25:35,940 --> 00:25:40,710 その整数が何であるかに関係なく、 私たちは、そのサイズの配列を宣言します。 496 00:25:40,710 --> 00:25:44,250 >> だから、コンパイラができません おそらく今文句を言います。 497 00:25:44,250 --> 00:25:48,780 私はthis--コンパイルする場合 ので、文句を言うことはできません、 498 00:25:48,780 --> 00:25:51,480 それは私がいることを知ることができないので、 負の数を入力して行きます、 499 00:25:51,480 --> 00:25:52,550 これは無効である可能性があります。 500 00:25:52,550 --> 00:25:54,633 すべてのためにそれは私がかもしれないが、知っています 正の数を入力し、 501 00:25:54,633 --> 00:25:56,000 これは完全に有効です。 502 00:25:56,000 --> 00:26:01,090 私は負の1を入力すると、だから私は想像します 部屋の中の人、セグメンテーションフォールト。 503 00:26:01,090 --> 00:26:06,040 >> じゃあ良いよ。 504 00:26:06,040 --> 00:26:13,160 それでは、ちょうどこのバックを追加してみましょう それはもともと何だったか、それを維持します。 505 00:26:13,160 --> 00:26:15,640 だから年齢を作ります。 506 00:26:15,640 --> 00:26:18,120 今、私は試してみたい場合 負のようにしてみましょうage-- 507 00:26:18,120 --> 00:26:19,710 部屋に5人がいると言います。 508 00:26:19,710 --> 00:26:23,180 人のナンバーワンの時代 負の4人である3 509 00:26:23,180 --> 00:26:26,500 OK three--人は、ゼロです。 510 00:26:26,500 --> 00:26:29,850 そこでここでは、年今から、人の数 一つは負の3歳になります。 511 00:26:29,850 --> 00:26:32,830 だから、おそらく意味がありません。 512 00:26:32,830 --> 00:26:37,220 しかし、それは見てという理由だけです 私たちがやっているコードをすべて 513 00:26:37,220 --> 00:26:40,260 GetIntでを要求しています。 514 00:26:40,260 --> 00:26:44,110 >> 今、私たちが持っていた場合 GetPositiveInt機能 515 00:26:44,110 --> 00:26:49,690 または私達はただ単にこれを行っていました そこに同じwhileループの並べ替え、 516 00:26:49,690 --> 00:26:52,340 これは完全に正常に動作します。 517 00:26:52,340 --> 00:26:54,200 しかし、この特定で 場合、私たちはしません 518 00:26:54,200 --> 00:26:57,772 負の値を扱うことが起こります。 519 00:26:57,772 --> 00:26:59,147 アレイに関する他の質問? 520 00:26:59,147 --> 00:27:02,290 521 00:27:02,290 --> 00:27:03,250 OK。 522 00:27:03,250 --> 00:27:09,380 >> だから我々は今の配列を見てきました。 523 00:27:09,380 --> 00:27:12,500 そして、我々は使用する必要があるとしています コマンドライン引数については、この。 524 00:27:12,500 --> 00:27:14,680 そこで問題にtwo--設定 私はあなたの多くを知っています 525 00:27:14,680 --> 00:27:18,040 それでも問題セットで作業する可能性があります 1が、問題は、2つの来ている設定しました。 526 00:27:18,040 --> 00:27:22,260 問題は、2つを設定するには、しようとしています 文字列、配列を扱うする必要があり、 527 00:27:22,260 --> 00:27:23,950 そして、コマンドライン引数。 528 00:27:23,950 --> 00:27:26,270 >> だから、コマンドライン引数は何ですか? 529 00:27:26,270 --> 00:27:29,570 さて、あなたはここでダウンして見ることができます 正確に何のために少しお誘い 530 00:27:29,570 --> 00:27:30,950 開催される予定。 531 00:27:30,950 --> 00:27:32,950 我々は、int型メイン、INC ARGCを参照してください 文字列ARGVブラケット。 532 00:27:32,950 --> 00:27:34,560 533 00:27:34,560 --> 00:27:38,130 したがって、最初のが解釈してみましょう 何それが言うことをしようとしています。 534 00:27:38,130 --> 00:27:40,800 [OK]を、今。 535 00:27:40,800 --> 00:27:44,637 >> だから、コマンドラインであなたがすべきです これらのコマンドのいくつかに慣れます 536 00:27:44,637 --> 00:27:48,580 今、あなたはおそらく実行しました 前の端末でCD。 537 00:27:48,580 --> 00:27:52,100 だから我々は、CD PSET1を言うならば、 あなたはそれがすべきことを知っています 538 00:27:52,100 --> 00:27:55,050 PSET1ディレクトリに変更します。 539 00:27:55,050 --> 00:27:59,120 >> 今、あなたは決してないことがわかりました 前に、このようなプログラムを書いて。 540 00:27:59,120 --> 00:28:03,120 あなたが書いた各プログラム、 あなたは、マリオをスラッシュドット、たとえば、実行します 541 00:28:03,120 --> 00:28:06,779 ドットは貪欲スラッシュし、それを 入力を求めるプロンプトを表示することがあります。 542 00:28:06,779 --> 00:28:08,570 さて、それは何ではありません ディレクトリ変更はありません。 543 00:28:08,570 --> 00:28:12,770 CDを実行すると、それはその後、言っていません あなたは、CDにどのディレクトリをにしたいですか? 544 00:28:12,770 --> 00:28:17,200 代わりに、あなただけの、CDのPSET1を言うと、 それだけでPSET1ディレクトリに入ります。 545 00:28:17,200 --> 00:28:20,430 >> だから同じように、私たちは他の例を持っています。 546 00:28:20,430 --> 00:28:21,540 こんにちは作ります。 547 00:28:21,540 --> 00:28:25,760 あなたが作る実行すると、それはその後、言っていません どのプログラムあなたがしたいと思いますか? 548 00:28:25,760 --> 00:28:29,620 あなただけでは、と言います コマンドラインは、ハローを作ります。 549 00:28:29,620 --> 00:28:31,060 >> 移動は別の例です。 550 00:28:31,060 --> 00:28:34,840 私たちが移動している。この1 1つ上のディレクトリにファイルmario.c。 551 00:28:34,840 --> 00:28:38,060 だから今、私たちはこの例を知っています 私たちは実際には2つの引数を渡しています。 552 00:28:38,060 --> 00:28:42,090 最初の引数としてmario.cがあります、 ドットドットは二番目の引数です。 553 00:28:42,090 --> 00:28:46,140 そして、あなたが作る実行したとき、あなたは 本当に長いコマンドを参照してくださいline-- 554 00:28:46,140 --> 00:28:50,580 本当に長いコマンド コマンドラインで印刷。 555 00:28:50,580 --> 00:28:53,590 だから、長いこれをcommand-- それだけの短い部分です、 556 00:28:53,590 --> 00:28:56,090 しかし今、私た​​ちは3を持っています コマンドライン引数。 557 00:28:56,090 --> 00:28:59,750 ドットダッシュゼロ、こんにちは、とのhello.c。 558 00:28:59,750 --> 00:29:03,497 >> したがって、これらは、コマンドラインです 引数、引数 559 00:29:03,497 --> 00:29:05,580 あなたがで渡していること それようにコマンドライン 560 00:29:05,580 --> 00:29:08,680 プロンプトが表示されている必要はありません あなたがプログラムを実行すると。 561 00:29:08,680 --> 00:29:13,090 それはイライラするだろうというときであれば あなたは、OK」、それは言っ打ち鳴らすを実行しました 562 00:29:13,090 --> 00:29:15,630 これprogram--します ファイルがコンパイルされていますか? 563 00:29:15,630 --> 00:29:17,010 hello.c。 564 00:29:17,010 --> 00:29:19,440 どのようなフラグはあなたでしょう 入力しますか?ダッシュO。 565 00:29:19,440 --> 00:29:21,190 あなたは何をしたい 呼び出されるファイル? 566 00:29:21,190 --> 00:29:21,690 こんにちは。 567 00:29:21,690 --> 00:29:25,290 いいえ、あなただけの打ち鳴らすを実行します こんにちはOのhello.cをダッシュ​​。 568 00:29:25,290 --> 00:29:28,820 >> だから、戻ってこれで探して。 569 00:29:28,820 --> 00:29:32,920 今argc-- argcが引数の数です。 570 00:29:32,920 --> 00:29:36,620 これは、コマンドラインの数です 引数は、コマンドラインで入力。 571 00:29:36,620 --> 00:29:39,720 まあ、技術的にargv-- vが、ベクトルを表します 572 00:29:39,720 --> 00:29:41,460 基本的に配列を意味します。 573 00:29:41,460 --> 00:29:42,680 しかし、あなたはそれを無視することができます。 574 00:29:42,680 --> 00:29:47,540 Argv--我々は、文字列ARGVを持っています そう、文字列ARGVブラケット。 575 00:29:47,540 --> 00:29:50,150 だから、これは別の形で あなたが前に見ていないブラケット。 576 00:29:50,150 --> 00:29:52,300 だから我々が見てきたブラケット 我々が言った表記法、 577 00:29:52,300 --> 00:29:53,970 以下のように、文字列sはZamylaに等しいです。 578 00:29:53,970 --> 00:29:56,910 Sブラケット0は、文字にアクセスするZ. 579 00:29:56,910 --> 00:30:00,720 >> また、ときに括弧を見てきました 我々は、int型の年齢ブラケット5と述べました。 580 00:30:00,720 --> 00:30:03,160 それはサイズ5の配列を宣言しました。 581 00:30:03,160 --> 00:30:06,280 だからここのバージョンです ブラケットは、我々は前に見たことがありません。 582 00:30:06,280 --> 00:30:09,630 文字列のargvだから、この種のこと 完全に精通しているであろう 583 00:30:09,630 --> 00:30:12,050 それは単なる文字列であることを。 584 00:30:12,050 --> 00:30:14,520 今ブラケットが示します これは配列です。 585 00:30:14,520 --> 00:30:19,920 だから、文字列ARGVブラケット手段 そのargvが文字列の配列です。 586 00:30:19,920 --> 00:30:22,540 今技術的に文字列 文字の配列です。 587 00:30:22,540 --> 00:30:26,400 だから、これは今配列です 文字の配列の。 588 00:30:26,400 --> 00:30:31,490 しかし、それは考えることをはるかに簡単です この文字列の配列だけのよう。 589 00:30:31,490 --> 00:30:34,900 >> なぜブラケットを空にすることでしょうか? 590 00:30:34,900 --> 00:30:38,170 同様に、なぜ我々は言うことができません、 ブラケット5、ブラケットのn? 591 00:30:38,170 --> 00:30:40,700 592 00:30:40,700 --> 00:30:41,200 うん。 593 00:30:41,200 --> 00:30:43,731 594 00:30:43,731 --> 00:30:44,230 うん。 595 00:30:44,230 --> 00:30:46,396 私たちはどのように多くの知りません 入力があるがあることを行っています。 596 00:30:46,396 --> 00:30:53,560 だから私たちは打ち鳴らす例を見れば、 我々はhello.cのハローO打ち鳴らすダッシュを言います。 597 00:30:53,560 --> 00:30:56,710 この特定のケースでは、そこに発生します 3つのコマンドライン引数であることを。 598 00:30:56,710 --> 00:31:00,522 だからbrackets--は、我々が表示されます 第二に、それは3ではないでしょう。 599 00:31:00,522 --> 00:31:01,730 それは技術的には4になります。 600 00:31:01,730 --> 00:31:04,030 しかし、大かっこ、私たちは希望 3がある、と言います。 601 00:31:04,030 --> 00:31:08,220 しかし、今、私たちは動きを見ている場合 mario.cドットドット、括弧 602 00:31:08,220 --> 00:31:09,760 我々は彼らに2を入れたいと思います。 603 00:31:09,760 --> 00:31:12,884 >> そして、そのコマンドがたくさんあり​​ます コマンドラインの可変数を持っています 604 00:31:12,884 --> 00:31:13,620 引数を指定します。 605 00:31:13,620 --> 00:31:17,430 それでは、このバージョンの ブラケット表記法を示し 606 00:31:17,430 --> 00:31:20,820 ARGVは、文字列の配列であるということです。 607 00:31:20,820 --> 00:31:24,360 しかし、我々はどのように多くを知りません 文字列は、その配列です。 608 00:31:24,360 --> 00:31:27,090 そして、どのように我々は、その後どのように知っています 多くの文字列が配列されていますか? 609 00:31:27,090 --> 00:31:28,870 それが全体のポイントのARGCです。 610 00:31:28,870 --> 00:31:32,300 argcがargvのはどのくらいを教えてくれる。 611 00:31:32,300 --> 00:31:36,500 >> だから、最後は中保つために 心は技術的に、ということです、 612 00:31:36,500 --> 00:31:40,820 コマンド自体は1としてカウント コマンドライン引数の。 613 00:31:40,820 --> 00:31:45,330 だからCDのPSET1、2があります コマンドライン引数。 614 00:31:45,330 --> 00:31:50,260 自身でプログラム、CD、その後、 それの実引数の一部、PSET1。 615 00:31:50,260 --> 00:31:54,490 あなたがこれまで書いてきた任意のプログラム ドットargument-- 1コマンドラインを持っていました 616 00:31:54,490 --> 00:31:55,320 マリオを大幅に削減。 617 00:31:55,320 --> 00:31:57,350 それが唯一のコマンドライン引数です。 618 00:31:57,350 --> 00:32:00,900 >> だから今打ち鳴らすを見て こんにちはOのhello.cをダッシュ​​。 619 00:32:00,900 --> 00:32:01,905 だから、argcが何ですか? 620 00:32:01,905 --> 00:32:05,260 621 00:32:05,260 --> 00:32:06,080 4。 622 00:32:06,080 --> 00:32:08,140 だから、argcが4です。 623 00:32:08,140 --> 00:32:12,140 クランので、ARGVブラケット0が打ち鳴らすです。 624 00:32:12,140 --> 00:32:15,630 ARGVブラケット1は、ダッシュ0です。 625 00:32:15,630 --> 00:32:21,870 ARGVブラケット2はハローであり、 ARGVブラケット3はhello.cのです。 626 00:32:21,870 --> 00:32:26,813 [OK]を、ので、この上の質問、その後、我々はよ いくつかのプログラムの例を見てみましょう。 627 00:32:26,813 --> 00:32:29,460 628 00:32:29,460 --> 00:32:30,480 >> OK。 629 00:32:30,480 --> 00:32:36,260 だから我々はhello3.cを見てみましょう。 630 00:32:36,260 --> 00:32:41,890 だから、これはから理解しておく必要があり 最初のCの例のいずれか 631 00:32:41,890 --> 00:32:45,800 我々はこんにちは、私たちは言うだろうどこに持っていました 世界が、今、これは、より一般的です。 632 00:32:45,800 --> 00:32:52,300 そこでここでは、挨拶されています %sのバックスラッシュn個のARGVブラケット1。 633 00:32:52,300 --> 00:32:57,440 Notice--ので、この時点までまで、これは どのような私のテンプレートファイルは次のように見てきました。 634 00:32:57,440 --> 00:33:01,800 私はint型メイン(ボイド)を有し、その後、私は希望 主な機能に何かをします。 635 00:33:01,800 --> 00:33:05,100 今の代わりに、一度私たちは扱っ開始します コマンドライン引数を指定して、 636 00:33:05,100 --> 00:33:07,890 我々は、状態する必要があります メインの異なる形。 637 00:33:07,890 --> 00:33:11,930 >> だからhello3を見て 再び、主が起こっています 638 00:33:11,930 --> 00:33:15,990 int型のargc now--二つの引数を取るために、 コマンドライン引数の数、 639 00:33:15,990 --> 00:33:20,970 文字列ARGVブラケット、実際の 文字列は、コマンドラインで入力。 640 00:33:20,970 --> 00:33:26,560 だから私はそれを変更するつもりです その事実を反映するためのテンプレート。 641 00:33:26,560 --> 00:33:29,060 今、あなたが書く時はいつでも プログラム、あなたがいない場合 642 00:33:29,060 --> 00:33:33,720 すべてのコマンドラインを取る必要があります 引数は、そしてちょうどint型メイン(ボイド)を使用します。 643 00:33:33,720 --> 00:33:37,070 しかし、今あなたが書いているとき コマンドライン引数のプログラム、これ 644 00:33:37,070 --> 00:33:40,350 あなたは問題のためにやっているつもりです 今あなたが実行していることをtwo--設定 645 00:33:40,350 --> 00:33:42,630 取る必要があるプログラム コマンドライン引数、 646 00:33:42,630 --> 00:33:45,250 あなたは、このフォームのメイン持っている必要があります。 647 00:33:45,250 --> 00:33:51,290 >> だからhere--これは大きな使い方です コマンドライン引数の。 648 00:33:51,290 --> 00:33:54,100 だからARGV 1を印刷します。 649 00:33:54,100 --> 00:33:59,180 [OK]それでは、コンパイルしましょう このプログラムを実行します。 650 00:33:59,180 --> 00:34:02,440 hello3を行います。 651 00:34:02,440 --> 00:34:03,570 コンパイルします。 652 00:34:03,570 --> 00:34:06,870 ドットはhello3スラッシュ。 653 00:34:06,870 --> 00:34:08,920 そしてのは、言わせて "ロブを。」 654 00:34:08,920 --> 00:34:10,760 ロブこんにちは。 655 00:34:10,760 --> 00:34:14,940 私が言う場合は、「ハローマリア、「ハローマリア。 656 00:34:14,940 --> 00:34:15,719 マリアこんにちは。 657 00:34:15,719 --> 00:34:18,639 ハンナはまだこんにちは "と言います マリア、「私はしませんので、 658 00:34:18,639 --> 00:34:21,340 私たちのargv 2を使って何をしています。 659 00:34:21,340 --> 00:34:22,590 ARGV 2は現在、「ハンナ。 "となります 660 00:34:22,590 --> 00:34:25,030 argcが3になります。 661 00:34:25,030 --> 00:34:27,735 私はこれをしなかった場合はどうなりますか? 662 00:34:27,735 --> 00:34:31,980 663 00:34:31,980 --> 00:34:34,679 だからヌルこんにちは。 664 00:34:34,679 --> 00:34:38,760 >> 彼は簡単に事実に触れ その、技術的には、のGetString 665 00:34:38,760 --> 00:34:42,429 nullを返すことがありますが、私たちは得るでしょう より多くのものをヌルへの多くは実際にあります。 666 00:34:42,429 --> 00:34:47,449 しかし、の問題としてそれを取ります いいえは、一般的に不良であるという事実。 667 00:34:47,449 --> 00:34:50,179 私たちは、もし何か間違ったことをしました それは「こんにちはヌル」を印刷しています 668 00:34:50,179 --> 00:34:52,179 そして、その理由は、我々がやりました is--よく間違って何か、 669 00:34:52,179 --> 00:34:56,179 私はドットスラッシュhello3を実行したとき、argcが1でした。 670 00:34:56,179 --> 00:34:59,680 だから、ARGVの長さは1であったことを意味します。 671 00:34:59,680 --> 00:35:05,110 配列の長さが1である場合、 唯一の有効なインデックスはゼロです。 672 00:35:05,110 --> 00:35:08,550 ので、ここでargvの1が外にあります この配列の範囲。 673 00:35:08,550 --> 00:35:13,410 それは私がしようとしたときに前と同様でした 配列の最後の外に6を格納します。 674 00:35:13,410 --> 00:35:18,100 だから私は、何かにアクセスしようとしています ARGVカウントの外側に、 675 00:35:18,100 --> 00:35:21,340 我々はヌル取得しています。 676 00:35:21,340 --> 00:35:24,360 >> のだから、より良いバージョン この、改善、 677 00:35:24,360 --> 00:35:27,010 明示的ARGCをチェックしています。 678 00:35:27,010 --> 00:35:33,580 ARGCが2に等しいのであれば、それは我々が実行されたことを意味します ドットスラッシュhello3ロブのようなもの。 679 00:35:33,580 --> 00:35:36,840 そして、それは「こんにちはロブ」を印刷します 680 00:35:36,840 --> 00:35:39,850 argcが等しくない場合 2、それはちょうど起こっています 681 00:35:39,850 --> 00:35:42,560 あなたが入れたものは何でも無視します コマンドライン引数で 682 00:35:42,560 --> 00:35:43,960 コマンドライン引数として。 683 00:35:43,960 --> 00:35:47,168 あなたはまったくを入れていない場合、または、それはです ちょうどそれを無視して、言うつもり、 684 00:35:47,168 --> 00:35:47,960 "こんにちは。" 685 00:35:47,960 --> 00:35:51,490 >> だから、これをコンパイルします。 686 00:35:51,490 --> 00:35:54,500 hello4を行います。 687 00:35:54,500 --> 00:35:56,790 そしてhello4を実行しています。 688 00:35:56,790 --> 00:36:00,010 それをこのように実行すると、 何を印刷すべきか? 689 00:36:00,010 --> 00:36:01,330 "こんにちは。" 690 00:36:01,330 --> 00:36:02,810 こんにちは。 691 00:36:02,810 --> 00:36:05,870 何hello4ロブは? 692 00:36:05,870 --> 00:36:06,950 「こんにちはロブ。」 693 00:36:06,950 --> 00:36:10,580 そして最後に、こんにちはロブマリア 「あなたhello "をもう一度だけです 694 00:36:10,580 --> 00:36:13,677 あなたが本当に入力されていませんので、 それが期待何か。 695 00:36:13,677 --> 00:36:15,510 あなたはより多くの名前を入力し それは扱うことができるよりも、 696 00:36:15,510 --> 00:36:19,500 それだけにデフォルト設定 こんにちはあなたの行動。 697 00:36:19,500 --> 00:36:23,040 これに関する質問は、だから? 698 00:36:23,040 --> 00:36:26,290 または、コマンドライン引数? 699 00:36:26,290 --> 00:36:28,690 >> [OK]を、そうで見てみます 使用してのカップルより多くの例 700 00:36:28,690 --> 00:36:34,230 コマンドラインは、最初のarguments-- 我々はダッシュ1ドットcをargvをしています。 701 00:36:34,230 --> 00:36:38,510 だからコメントは何を与えます このプログラムは、やるべきこと。 702 00:36:38,510 --> 00:36:42,460 しかし、ループのためにこのnow--気付きます これは、正確なパターンに一致 703 00:36:42,460 --> 00:36:43,390 私は前に言っていました。 704 00:36:43,390 --> 00:36:46,240 私達はちょうどことが起こります ARGCを使用しての代わりに、N。 705 00:36:46,240 --> 00:36:48,880 今argcが本当にnです。 706 00:36:48,880 --> 00:36:51,260 これは、argv配列の長さです。 707 00:36:51,260 --> 00:36:59,600 だから、ARGVを反復処理されています 配列のprintf-る各ARGV値を。 708 00:36:59,600 --> 00:37:04,730 >> 私はこれを行うのであれば。 709 00:37:04,730 --> 00:37:08,232 ARGV 1を加えます。 710 00:37:08,232 --> 00:37:09,940 これは、コンパイルされます。 711 00:37:09,940 --> 00:37:11,620 ドットはARGV 1を大幅に削減します。 712 00:37:11,620 --> 00:37:15,530 ただ、この、それを実行しています プリントはスラッシュARGV 1ドット 713 00:37:15,530 --> 00:37:18,500 それは、コマンドラインのみだったので、 プログラム名をargument--。 714 00:37:18,500 --> 00:37:22,080 常にleast--であるでしょう argcが、1より小さくすることはできません 715 00:37:22,080 --> 00:37:25,910 少なくとも常に存在するので、 実行するためのプログラム名です。 716 00:37:25,910 --> 00:37:32,040 だから、ARGV 1ロブは1 ARGV印刷されます して、新しい行に「ロブ。」 717 00:37:32,040 --> 00:37:36,350 >> 最初の反復でそう このループの、iが0です。 718 00:37:36,350 --> 00:37:39,090 ARGV 0は、プログラム名です。 719 00:37:39,090 --> 00:37:40,010 ドットはARGV 1を大幅に削減します。 720 00:37:40,010 --> 00:37:43,770 そしてARGV 1は私の最初のものです ロブでコマンドライン引数、。 721 00:37:43,770 --> 00:37:45,920 この時点で、我々はARGCに等しいです。 722 00:37:45,920 --> 00:37:48,210 我々は、ループから抜け出すと私たちは完了です。 723 00:37:48,210 --> 00:37:53,940 だから、これは任意のために動作します コマンドライン引数の数。 724 00:37:53,940 --> 00:37:58,550 それはARGV 0を出力します注意してください、ARGV 1、ARGV 2、ARGV 3、ARGV 4。 725 00:37:58,550 --> 00:38:00,150 そして何ARGV 5はありません。 726 00:38:00,150 --> 00:38:01,460 argcが5に等しいです。 727 00:38:01,460 --> 00:38:06,960 だから私は5に等しいでargc--で、 我々は、ループから抜け出します。 728 00:38:06,960 --> 00:38:07,950 OK。 729 00:38:07,950 --> 00:38:11,315 我々の前にその上の質問そう より複雑な例を見て? 730 00:38:11,315 --> 00:38:14,190 731 00:38:14,190 --> 00:38:16,860 >> だから2はargvを。 732 00:38:16,860 --> 00:38:17,830 大丈夫。 733 00:38:17,830 --> 00:38:20,610 だから我々はまだ印刷しています コマンドライン引数。 734 00:38:20,610 --> 00:38:23,170 しかし、今私たちが持っているに気づきます forループをネストされました。 735 00:38:23,170 --> 00:38:24,670 これは何をしているのですか? 736 00:38:24,670 --> 00:38:28,430 だから、最初のループしています まさにそれは前にしました。 737 00:38:28,430 --> 00:38:30,950 我々はまだ以上のループ処理しています 各コマンドライン引数、 738 00:38:30,950 --> 00:38:34,260 しかし、今この第二loop--我々はしました また、前にこのような何かを見たこと。 739 00:38:34,260 --> 00:38:38,600 彼は繰り返し処理されたとき Zamylaは、Z-A-M-Y-L-Aをプリントアウトします。 740 00:38:38,600 --> 00:38:44,816 だからint型jのこの第二のループに等しいです 0は、n個のargvブラケット私のstrlen関数に等しいです。 741 00:38:44,816 --> 00:38:49,170 >> それでは、最初のために考えてみましょう the--のは、見てみましょう。 742 00:38:49,170 --> 00:38:53,560 それでは、どのようなコンピュータがだと思うしてみましょう 私は点としてこのプログラムを実行した場合の対処 743 00:38:53,560 --> 00:38:56,030 ARGVダッシュ2を大幅に削減。 744 00:38:56,030 --> 00:39:03,590 だから私は、その後、このコードを実行した場合 argcが1に等しいことになるだろう。 745 00:39:03,590 --> 00:39:07,050 そして、文字列のみがありますargv-- ARGVに一つの指標になるだろう、 746 00:39:07,050 --> 00:39:12,370 それはドットに等しいことになるだろう 2--プログラム名をARGVを大幅に削減します。 747 00:39:12,370 --> 00:39:19,170 >> [OK]を、今私は、私未満、0に等しいです 1、私プラスプラスのint jが0に等しいため、 748 00:39:19,170 --> 00:39:23,880 Nでので、ARGVブラケット0のstrlen関数に等しいです このループの最初の繰り返し。 ARGV 749 00:39:23,880 --> 00:39:27,250 ブラケット0は、ドットスラッシュARGV 2です。 750 00:39:27,250 --> 00:39:29,320 だから、その文字列の長さは何ですか? 751 00:39:29,320 --> 00:39:32,480 まあ、-R-G-Vダッシュ2スラッシュドット。 752 00:39:32,480 --> 00:39:35,020 だからのはstrlenは8になります。 753 00:39:35,020 --> 00:39:37,500 だから、jは0に等しく、nは8に等しいです。 754 00:39:37,500 --> 00:39:39,530 限りjが8未満、Jの++であるとして。 755 00:39:39,530 --> 00:39:44,080 ことで、私たちはすることになるだろう 単一の文字を印刷します 756 00:39:44,080 --> 00:39:47,350 私はJを一括ARGVブラケットです。 757 00:39:47,350 --> 00:39:49,826 >> だから、私だけはゼロです。 758 00:39:49,826 --> 00:39:51,700 我々はまだ1つしかありません コマンドライン引数。 759 00:39:51,700 --> 00:39:53,890 その最初の反復で ループのための、私たちはしています 760 00:39:53,890 --> 00:39:56,950 印刷になるだろう ARGVブラケット0ブラケット0。 761 00:39:56,950 --> 00:39:58,325 そして、jがインクリメントしようとしています。 762 00:39:58,325 --> 00:40:01,650 そして、我々は、印刷しようとしています ARGVブラケット0ブラケット1。 763 00:40:01,650 --> 00:40:04,150 そして、ブラケット0ブラケット2 ARGV。 764 00:40:04,150 --> 00:40:09,030 >> だから、これは私たちの最初の出会いです 多次元配列の。 765 00:40:09,030 --> 00:40:12,770 私が言ったことを覚えておいてください以前 そのARGVは技術的です 766 00:40:12,770 --> 00:40:15,950 文字の配列の配列。 767 00:40:15,950 --> 00:40:24,360 だからここに私は何かのように言っている場合 文字列sは、ARGVブラケット私に等しいです 768 00:40:24,360 --> 00:40:29,590 そして私は、S、と述べブラケットJ、この 同じことを達成することになります。 769 00:40:29,590 --> 00:40:31,960 さて、あなたは前のブラケットJを見てきました。 770 00:40:31,960 --> 00:40:36,680 それはちょうど、j番​​目のアクセスです この文字列の文字。 771 00:40:36,680 --> 00:40:48,010 だからこれで、我々が得ています i番目のargvのj番目の文字。 772 00:40:48,010 --> 00:40:51,450 >> それでは、この最終的に出力をすべきか? 773 00:40:51,450 --> 00:40:53,210 ARGV 2を行います。 774 00:40:53,210 --> 00:40:54,730 これは、コンパイルされます。 775 00:40:54,730 --> 00:40:56,340 ドットは、argvの2を大幅に削減します。 776 00:40:56,340 --> 00:41:03,790 「ロブ・マリア・ハンナ、 " そして、私たちにいくつかの余地を与えます。 777 00:41:03,790 --> 00:41:07,050 だから我々は、これが出力されていることがわかり 独自の行とスラッシュにドット 778 00:41:07,050 --> 00:41:08,920 独自の行に独自の行とに。 779 00:41:08,920 --> 00:41:11,260 これは、各プリントアウトです 個々の文字 780 00:41:11,260 --> 00:41:12,950 各コマンドライン引数の。 781 00:41:12,950 --> 00:41:15,960 そして、それらの間で、 このため、新しい行の 782 00:41:15,960 --> 00:41:19,380 我々は、ここでダウンして印刷しています それらの間には、新しい行を印刷します。 783 00:41:19,380 --> 00:41:24,540 >> だから、これは次のようになり 前のargvダッシュ1、 784 00:41:24,540 --> 00:41:26,459 それぞれを印刷します コマンドライン引数、 785 00:41:26,459 --> 00:41:28,500 しかし今、私た​​ちは、印刷しています コマンドライン引数 786 00:41:28,500 --> 00:41:31,950 し、各繰り返し処理 各コマンドライン引数の文字 787 00:41:31,950 --> 00:41:35,400 この出力を取得します。 788 00:41:35,400 --> 00:41:36,870 OK? 789 00:41:36,870 --> 00:41:40,570 これに関する質問は、だから? 790 00:41:40,570 --> 00:41:45,130 >> もう一つ注意すべきは、ということです コマンドラインarguments-- 791 00:41:45,130 --> 00:41:49,990 ので、彼らは、スペースで区切られています あなたは自然にそれらがあることを期待します。 792 00:41:49,990 --> 00:41:53,050 だから、文字列はスペースを含めることができます。 793 00:41:53,050 --> 00:41:57,380 それは超重要ではありませんが、私の場合 3番目のコマンドライン引数を望んでいました 794 00:41:57,380 --> 00:42:01,226 私は、その後、その中にスペースを持っています このような何かを言うことができます。 795 00:42:01,226 --> 00:42:04,470 796 00:42:04,470 --> 00:42:05,550 OK? 797 00:42:05,550 --> 00:42:12,190 だから、これは今も3つだけを持っています コマンドラインarguments--ウェル4。 798 00:42:12,190 --> 00:42:17,620 ドットがARGVダッシュ2スラッシュ、ロブ、 マリア、そしてハンナブルームバーグ。 799 00:42:17,620 --> 00:42:18,320 OK。 800 00:42:18,320 --> 00:42:19,310 このに関する質問? 801 00:42:19,310 --> 00:42:22,700 802 00:42:22,700 --> 00:42:24,894 >> 特別なことは何もありません スペース文字程度。 803 00:42:24,894 --> 00:42:27,810 それはちょうどことであることを起こります コマンドラインは、空白文字を扱います 804 00:42:27,810 --> 00:42:29,226 あなたはそれぞれの引数を区切る方法について説明します。 805 00:42:29,226 --> 00:42:32,048 806 00:42:32,048 --> 00:42:33,000 大丈夫。 807 00:42:33,000 --> 00:42:39,950 それでは、問題のセット あなたがするつもりtwo-- 808 00:42:39,950 --> 00:42:43,240 秘密鍵暗号方式を見て。 809 00:42:43,240 --> 00:42:47,700 だから、その例と同様に 私たちは、クリスマスの物語から見ました 810 00:42:47,700 --> 00:42:52,840 あなたには、いくつかの実装することになるだろう メッセージを所定のアルゴリズム 811 00:42:52,840 --> 00:42:55,560 あなたができるようにするつもりです そのメッセージを暗号化します 812 00:42:55,560 --> 00:42:58,730 その秘密とその唯一の誰か キー、そのデコーダリングと、 813 00:42:58,730 --> 00:43:01,090 復号化することができるはずです。 814 00:43:01,090 --> 00:43:04,839 >> だから、標準版です。 815 00:43:04,839 --> 00:43:07,130 あなたが実装することになるだろう 2つの異なるバージョン。 816 00:43:07,130 --> 00:43:09,620 あなたが見てみてしまった場合 ハッカーで、今Edition--の 817 00:43:09,620 --> 00:43:12,600 我々が提供するつもりです あなたのこのような文字列、 818 00:43:12,600 --> 00:43:15,240 これは暗号化されたパスワードを表します。 819 00:43:15,240 --> 00:43:19,990 だからあなたの目標は、把握することです 復号化されたパスワードは何ですか。 820 00:43:19,990 --> 00:43:26,950 さて、これは実際にどのようなパスワードです コンピュータの多くに格納され、 821 00:43:26,950 --> 00:43:31,290 そして、それはちょうど、これを保存します 文字のランダムな文字列。 822 00:43:31,290 --> 00:43:34,440 あなたが取得する方法を把握する必要があり 文字のこのランダムな文字列から 823 00:43:34,440 --> 00:43:36,140 元のパスワードが何であったかを。 824 00:43:36,140 --> 00:43:39,060 825 00:43:39,060 --> 00:43:43,290 >> そして最後に、この後の 問題あなたは、必要があります設定 826 00:43:43,290 --> 00:43:46,100 これが何を意味するか理解することができます。 827 00:43:46,100 --> 00:43:51,650 だから、復号化する方法を学習します ランダムな文字列のこの種。 828 00:43:51,650 --> 00:43:56,390 同様に、あなたは週から覚えていれば 0は、次のURLを見ている可能性があります。 829 00:43:56,390 --> 00:44:00,210 そして、あなたのことができるようになり これは最終的に復号化します。 830 00:44:00,210 --> 00:44:04,810 あなた幸せではないかもしれません それを解読して、リンクをクリックしてください。 831 00:44:04,810 --> 00:44:05,700 大丈夫。 832 00:44:05,700 --> 00:44:06,591 それは今日のためにそれです。 833 00:44:06,591 --> 00:44:12,095 だから、来週お会いしましょう​​! 834 00:44:12,095 --> 00:44:18,315 >> [電子音楽の演奏] 835 00:44:18,315 --> 00:47:15,619