1 00:00:00,000 --> 00:00:03,944 >> [Musikwiedergabe] 2 00:00:03,944 --> 00:00:10,732 3 00:00:10,732 --> 00:00:11,690 DAVID MALAN: Alles klar. 4 00:00:11,690 --> 00:00:14,674 Dies CS50 und dies ist das Ende der Woche 2. 5 00:00:14,674 --> 00:00:16,840 Es tut mir so leid, dass ich nicht sein konnte dort mit Ihnen allen heute 6 00:00:16,840 --> 00:00:18,300 aber Sie sind in sehr guten Händen. 7 00:00:18,300 --> 00:00:21,710 Erlauben Sie mir, einzuführen CS50 eigenen Rob Bowden. 8 00:00:21,710 --> 00:00:29,106 9 00:00:29,106 --> 00:00:31,730 ROB BOWDEN: Und natürlich, dann Wir haben, um Spaß zu der Tatsache zu machen 10 00:00:31,730 --> 00:00:36,820 dass er schickte uns eine vertikale Video- und zeigen dies. 11 00:00:36,820 --> 00:00:38,320 >> [VIDEO PLAYBACK] 12 00:00:38,320 --> 00:00:39,820 >> [Musikwiedergabe] 13 00:00:39,820 --> 00:00:42,350 >> [SPUREN] 14 00:00:42,350 --> 00:00:44,730 >> -Dieses Video nicht haben auf diese Weise zu betrachten. 15 00:00:44,730 --> 00:00:46,570 Es hätte verhindert werden können. 16 00:00:46,570 --> 00:00:49,070 Sagen Sie Nein zu vertikalen Videos. 17 00:00:49,070 --> 00:00:53,310 >> -Vertikale Videos passieren, wenn Sie Halten Sie Ihre Kamera in die falsche Richtung. 18 00:00:53,310 --> 00:00:55,880 Ihr Video wird am Ende aussehen wie Mist. 19 00:00:55,880 --> 00:00:57,650 >> - [GRUNT] 20 00:00:57,650 --> 00:01:02,240 >> -Es Gibt immer mehr Menschen süchtig zur Herstellung von vertikalen Videos jeden Tag. 21 00:01:02,240 --> 00:01:06,240 Es ist nicht zu knacken oder nichts, aber es ist noch wirklich schlecht. 22 00:01:06,240 --> 00:01:10,410 Es gibt zwei verschiedene Arten von Menschen, die mit VVS behaftet sind. 23 00:01:10,410 --> 00:01:14,160 Die erste Gruppe behandelt das Videos schießen sie wie Bilder. 24 00:01:14,160 --> 00:01:15,850 Sie bedeuten nicht schaden. 25 00:01:15,850 --> 00:01:19,180 Sie einfach nicht verstehen, dass während Sie können ein Bild drehen, 26 00:01:19,180 --> 00:01:20,880 Sie nicht wirklich drehen können ein Video. 27 00:01:20,880 --> 00:01:21,880 >> [CRASH] 28 00:01:21,880 --> 00:01:23,460 >> - [MONKEY SOUNDS] 29 00:01:23,460 --> 00:01:27,540 >> -Die Andere Gruppe Menschen die geben nicht a [PIEPTON]. 30 00:01:27,540 --> 00:01:31,090 >> -Vertikale Video-Syndrom ist gefährlich. 31 00:01:31,090 --> 00:01:34,120 Bewegte Bilder haben immer horizontal. 32 00:01:34,120 --> 00:01:35,990 Neben Fernsehern sind horizontal. 33 00:01:35,990 --> 00:01:38,380 Computerbildschirme sind horizontal. 34 00:01:38,380 --> 00:01:41,580 Menschen Augen horizontal sind. 35 00:01:41,580 --> 00:01:45,170 Wir nicht gebaut beobachten vertikalen Videos. 36 00:01:45,170 --> 00:01:47,600 >> -Ich Liebe vertikalen Videos. 37 00:01:47,600 --> 00:01:50,410 >> -Nobody Kümmert sich um Sie. 38 00:01:50,410 --> 00:01:53,340 >> -Wenn Die dieses Problem nicht gegengesteuert wird, können auch 39 00:01:53,340 --> 00:01:57,650 beginnt mit vier Videos auf einmal nur um Bandbreite zu sparen. 40 00:01:57,650 --> 00:02:02,400 >> -Letterboxed Vertikalen Videos würden werden die Größe einer Briefmarke. 41 00:02:02,400 --> 00:02:04,920 >> -Und Es wird überall verbreitet. 42 00:02:04,920 --> 00:02:07,670 Movie-Bildschirme immer horizontal. 43 00:02:07,670 --> 00:02:11,200 Wenn vertikale Videos werden akzeptierten, Kinos 44 00:02:11,200 --> 00:02:13,930 müssen groß und dünn sein. 45 00:02:13,930 --> 00:02:17,710 >> -Und Alle Kinos würde müssen wieder aufgebaut zu werden. 46 00:02:17,710 --> 00:02:22,090 Und als sie wieder aufgebaut wurden, Mila Kunis wäre alt und hässlich. 47 00:02:22,090 --> 00:02:24,342 >> -Birds Wird in sie abstürzen und sterben. 48 00:02:24,342 --> 00:02:26,530 >> Wir `ll alle steif Hals aus nach oben. 49 00:02:26,530 --> 00:02:29,800 >> -Und Niemand sitzen der ersten Reihe immer wieder. 50 00:02:29,800 --> 00:02:37,170 >> -George Lucas wird Re-Release-Sterne- Kriege again-- die dünne Auflage. 51 00:02:37,170 --> 00:02:41,860 >> -Ich War nie wirklich in der Lage, zu sagen die Geschichte, die ich erzählen wollte. 52 00:02:41,860 --> 00:02:46,030 Das war eine große Chance für mich, experimentieren mit einer neuen Technologie. 53 00:02:46,030 --> 00:02:48,150 >> -Du bist ein Trottel. 54 00:02:48,150 --> 00:02:54,430 >> -jeder Wenn ein Mobilgerät zu verwende Video aufnehmen, ist die Versuchung da. 55 00:02:54,430 --> 00:02:56,370 Sag einfach nein. 56 00:02:56,370 --> 00:03:00,116 Sagen Sie Nein zu George Lucas. 57 00:03:00,116 --> 00:03:04,062 Sagen Sie Nein zu alt Mila Kunis. 58 00:03:04,062 --> 00:03:06,600 Sagen Sie Nein zu vertikalen Videos. 59 00:03:06,600 --> 00:03:12,511 >> -Und Wenn Sie jemanden sehen, es zu tun, zu sagen, "Du bist nicht der Aufnahme dieses Recht Dummy!" 60 00:03:12,511 --> 00:03:15,433 >> [Musikwiedergabe] 61 00:03:15,433 --> 00:03:18,842 62 00:03:18,842 --> 00:03:19,830 >> [END PLAYBACK] 63 00:03:19,830 --> 00:03:23,702 >> [Applaus] 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: --Einfach Form der Kryptographie, 67 00:03:45,790 --> 00:03:49,500 Das ist im Grunde die Verschlüsselungs und Entschlüsselung von geheimen Botschaften. 68 00:03:49,500 --> 00:03:52,590 Hier haben wir also ein sehr einfaches Spielzeug. 69 00:03:52,590 --> 00:03:56,900 Und die Idee ist der Außenring dreht sich um den inneren Ring. 70 00:03:56,900 --> 00:04:01,610 Und Sie können sehen, vielleicht, wenn ich heran in, dass-- es ist schwer zu sehen. 71 00:04:01,610 --> 00:04:05,090 Aber, wie sich die Zahl 1-- gut, bewegt, dass. 72 00:04:05,090 --> 00:04:09,120 >> Die Zahl 1 ordnet den Brief X, Nummer 2 Karten auf das Schreiben 73 00:04:09,120 --> 00:04:11,630 J. unglaublich schwierig nicht nach vorne zu springen. 74 00:04:11,630 --> 00:04:16,100 Schreiben 2 Karten zu J. Number 3 zuordnet D. So 75 00:04:16,100 --> 00:04:20,140 mit diesem Ring kann Ihnen jemand eine Nachricht 1, 2, 3. 76 00:04:20,140 --> 00:04:22,624 Sie aus irgendeinem Grund wollen sie XJD erzählen. 77 00:04:22,624 --> 00:04:24,540 Aber man kann ihnen geben einige Nachricht von Zahlen, 78 00:04:24,540 --> 00:04:28,460 und, solange sie diesen Ring haben, können sie entschlüsseln kann, was Sie sagen wollen. 79 00:04:28,460 --> 00:04:32,510 >> So können Sie gesehen haben, dies besonderes Beispiel Kryptographie 80 00:04:32,510 --> 00:04:36,640 vor, wenn rund um die Weihnachtszeit Sie A Christmas Story gesehen haben. 81 00:04:36,640 --> 00:04:38,520 Wenn Sie noch nie gesehen es vor, dann nur 82 00:04:38,520 --> 00:04:41,060 schalten Sie TBS bei buchstäblich jedes Mal, am Weihnachtsabend, 83 00:04:41,060 --> 00:04:44,510 weil sie zeigen, es ist nur Rücken an Rücken Rücken an Rücken, um den ganzen Tag zu unterstützen. 84 00:04:44,510 --> 00:04:46,744 Und die relevante Video ist diese. 85 00:04:46,744 --> 00:04:47,410 [VIDEO PLAYBACK] 86 00:04:47,410 --> 00:04:50,020 -Stellen Sie es allen und jedem bekannt dass Ralph Parker ist hiermit, 87 00:04:50,020 --> 00:04:52,850 zum Mitglied des Kleinen Orphan Annie Secret Circle 88 00:04:52,850 --> 00:04:56,490 und ist mit allen Ehren mit dem Titel und Nutzen auftretenden daran. 89 00:04:56,490 --> 00:04:59,010 Signiert Little Orphan Annie. 90 00:04:59,010 --> 00:05:03,120 Gegengezeichnet Pierre Andre in der Tinte! 91 00:05:03,120 --> 00:05:07,460 Ehrungen und Vorteile bereits im Alter von neun! 92 00:05:07,460 --> 00:05:12,530 >> [KREISCHT VON RADIO] 93 00:05:12,530 --> 00:05:13,030 -Komm schon. 94 00:05:13,030 --> 00:05:14,000 Lassen Sie uns weitermachen. 95 00:05:14,000 --> 00:05:18,274 Ich glaube nicht, All That Jazz brauchen über Schmuggler und Piraten. 96 00:05:18,274 --> 00:05:20,440 -listen Morgen Abend mit die abschließende Abenteuer 97 00:05:20,440 --> 00:05:22,540 des Schwarzen Piratenschiff. 98 00:05:22,540 --> 00:05:25,460 Jetzt ist es Zeit für Geheime Botschaft Annies 99 00:05:25,460 --> 00:05:28,620 für Sie Mitglieder des Secret Circle. 100 00:05:28,620 --> 00:05:32,370 Denken Sie daran, Kinder, nur für Mitglieder von Annies Secret Circle 101 00:05:32,370 --> 00:05:34,880 kann geheime Botschaft Annies dekodieren. 102 00:05:34,880 --> 00:05:39,100 Denken Sie daran, ist Annie auf dich. 103 00:05:39,100 --> 00:05:41,660 Stellen Sie Ihre Stifte bis B2. 104 00:05:41,660 --> 00:05:43,960 Hier ist die Botschaft. 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 -Ich Bin in meinem ersten geheimen Treffen. 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, ist Pierre in große Stimme heute abend. 115 00:05:54,570 --> 00:05:57,490 Ich könnte sagen, dass heute Abend Botschaft war wirklich wichtig. 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 Das ist eine Botschaft von Annie sich. 119 00:06:01,580 --> 00:06:02,880 Denken Sie daran, nicht weitersagen. 120 00:06:02,880 --> 00:06:07,840 121 00:06:07,840 --> 00:06:11,130 >> -Five Sekunden später, ich bin in der nur Raum im Haus, wo ein Junge von neun 122 00:06:11,130 --> 00:06:15,830 konnte in der Privatsphäre und decodieren zu sitzen. 123 00:06:15,830 --> 00:06:16,620 Aha! 124 00:06:16,620 --> 00:06:17,340 B! 125 00:06:17,340 --> 00:06:20,210 Ich ging auf die nächste. 126 00:06:20,210 --> 00:06:23,300 E. Das erste Wort ist "sein." 127 00:06:23,300 --> 00:06:25,880 S. Es kam jetzt einfacher. 128 00:06:25,880 --> 00:06:28,400 U. 25. 129 00:06:28,400 --> 00:06:30,528 Das ist R. 130 00:06:30,528 --> 00:06:31,278 -Komm, Ralphie! 131 00:06:31,278 --> 00:06:31,861 Ich muss gehen! 132 00:06:31,861 --> 00:06:33,182 -Ich Gleich unten, Ma! 133 00:06:33,182 --> 00:06:36,038 Gee Whiz. 134 00:06:36,038 --> 00:06:42,840 T. O. "Achten Sie darauf," - sicher sein, was? 135 00:06:42,840 --> 00:06:44,770 Was war Little Orphan Annie versucht zu sagen? 136 00:06:44,770 --> 00:06:46,381 Achten Sie darauf, was? 137 00:06:46,381 --> 00:06:47,825 >> -Randy Muss gehen! 138 00:06:47,825 --> 00:06:48,866 Würden Sie bitte herauskommen? 139 00:06:48,866 --> 00:06:49,783 >> -Alle Recht, Mama! 140 00:06:49,783 --> 00:06:51,786 Ich komme bald aus sein! 141 00:06:51,786 --> 00:06:53,606 Ich war jetzt näher bekommen. 142 00:06:53,606 --> 00:06:55,550 Die Spannung war schrecklich. 143 00:06:55,550 --> 00:06:57,050 Was war es? 144 00:06:57,050 --> 00:06:59,905 Das Schicksal des Planeten kann in der Schwebe zu hängen! 145 00:06:59,905 --> 00:07:01,736 >> -Ralphie, Randy erhielt zu gehen! 146 00:07:01,736 --> 00:07:05,680 >> -Ich Direkt aus sein, verdammt noch mal! 147 00:07:05,680 --> 00:07:07,170 Fast da! 148 00:07:07,170 --> 00:07:08,150 Meine Finger flogen. 149 00:07:08,150 --> 00:07:09,980 Mein Verstand war eine Stahlfalle. 150 00:07:09,980 --> 00:07:11,496 Jede Pore in Schwingung versetzt. 151 00:07:11,496 --> 00:07:13,268 Es war fast klar! 152 00:07:13,268 --> 00:07:13,767 Ja. 153 00:07:13,767 --> 00:07:14,609 Ja. 154 00:07:14,609 --> 00:07:15,108 Ja. 155 00:07:15,108 --> 00:07:16,449 Ja. 156 00:07:16,449 --> 00:07:20,240 Achten Sie darauf, Ihren Ovomaltine trinken. 157 00:07:20,240 --> 00:07:20,740 Ovomaltine? 158 00:07:20,740 --> 00:07:26,687 159 00:07:26,687 --> 00:07:27,520 Eine miese Handels? 160 00:07:27,520 --> 00:07:32,040 161 00:07:32,040 --> 00:07:34,920 Hurensohn. 162 00:07:34,920 --> 00:07:35,890 >> [END PLAYBACK] 163 00:07:35,890 --> 00:07:39,650 >> ROB BOWDEN: Also das ist, wie Ovomaltine betrifft Kryptographie. 164 00:07:39,650 --> 00:07:42,290 Grundsätzlich CS50 nur beworben Ovomaltine, so konnten wir 165 00:07:42,290 --> 00:07:44,400 ist ein mieses Werbespot für Ovomaltine. 166 00:07:44,400 --> 00:07:44,900 Gut. 167 00:07:44,900 --> 00:07:47,120 So, jetzt tatsächlichen Informatik. 168 00:07:47,120 --> 00:07:50,670 Denken Sie daran, am Montag wir aufgehört haben tauchen tiefer in die Saiten. 169 00:07:50,670 --> 00:07:52,820 So waren wir zu tun haben die Zeichenfolge "Zamyla." 170 00:07:52,820 --> 00:07:55,130 Und wir erkennen, die Tatsache, dass wir behandeln können 171 00:07:55,130 --> 00:07:57,510 "Zamyla" als eine Folge von Zeichen. 172 00:07:57,510 --> 00:07:59,740 Und denken Sie daran, dass wir gelernt, die Klammer-Notation. 173 00:07:59,740 --> 00:08:01,995 Also, wenn diese gespeichert wurden in einer Zeichenfolge "s", dann 174 00:08:01,995 --> 00:08:05,860 wenn wir die s Halterung 0, würde das zeigen die Buchstaben Kapital Z. 175 00:08:05,860 --> 00:08:09,790 Und wenn wir die s Halterung 1, dass würde bedeuten, die erste Kleinbuchstaben a, 176 00:08:09,790 --> 00:08:14,220 und so weiter bis zur n Halterung 5, das wäre das letzte a anzugeben. 177 00:08:14,220 --> 00:08:17,090 >> Jetzt erinnern, dass die Länge dieser Zeichenfolge ist 6, 178 00:08:17,090 --> 00:08:23,220 aber die Indizes in den String sind 0 bis 5, Z durch, die zuletzt ein. 179 00:08:23,220 --> 00:08:28,650 Also das passt nun in ein größeres Bild der Arbeitsspeicher Ihres Computers, Ihre RAM. 180 00:08:28,650 --> 00:08:32,020 Also irgendwo das Programm, das Sie mit Ihrem Computer sind 181 00:08:32,020 --> 00:08:34,780 muss Zamyla erinnern irgendwo im Speicher. 182 00:08:34,780 --> 00:08:36,029 So kann ich einen Freiwilligen haben? 183 00:08:36,029 --> 00:08:38,840 184 00:08:38,840 --> 00:08:40,181 Ja bitte. 185 00:08:40,181 --> 00:08:50,120 186 00:08:50,120 --> 00:08:51,500 Und wie ist dein Name? 187 00:08:51,500 --> 00:08:52,410 >> Dean: Dean. 188 00:08:52,410 --> 00:08:53,550 >> ROB BOWDEN: Dean? 189 00:08:53,550 --> 00:08:54,910 Freut mich, Dean. 190 00:08:54,910 --> 00:08:58,240 Also komm her, und wir gehen zu müssen, die Sie zeichnen 191 00:08:58,240 --> 00:09:00,740 auf unserer schönen geschicktes Layout Speicher. 192 00:09:00,740 --> 00:09:05,950 Nun Ich mag an Speicher denken, als ein langer Streifen von Bytes, 193 00:09:05,950 --> 00:09:11,090 sondern nur zu Anzeigezwecken wir werden einfach nach rechts, oben nach links unten. 194 00:09:11,090 --> 00:09:11,590 OK? 195 00:09:11,590 --> 00:09:22,030 >> Also werde ich zu einer Show program-- Getstrings.c. 196 00:09:22,030 --> 00:09:25,760 Und so alle dieses Programm Dabei fordert vier Saiten 197 00:09:25,760 --> 00:09:28,830 vom Anwender mit GetString und dann Druck 198 00:09:28,830 --> 00:09:30,950 was auch immer das erste Zeichenfolge eingegeben wurde. 199 00:09:30,950 --> 00:09:32,840 Wir ignorieren zwei bis vier. 200 00:09:32,840 --> 00:09:33,610 OK. 201 00:09:33,610 --> 00:09:38,210 Also hier now-- wenn Ich erstes Anfordern s1. 202 00:09:38,210 --> 00:09:39,740 So sind Sie den Computer neu. 203 00:09:39,740 --> 00:09:41,680 Und Sie implementieren GetString. 204 00:09:41,680 --> 00:09:46,710 So können Sie einen String aus anfordern mich, und ich sagen, OK, Dean. 205 00:09:46,710 --> 00:09:47,900 Geben Sie die Zeichenfolge "Dean." 206 00:09:47,900 --> 00:09:50,300 >> Also irgendwo im Speicher, den Sie müssen daran denken, "Dean." 207 00:09:50,300 --> 00:09:52,160 So schreiben Sie es in den Speicher irgendwo. 208 00:09:52,160 --> 00:09:58,270 209 00:09:58,270 --> 00:09:59,210 Perfect. 210 00:09:59,210 --> 00:09:59,880 OK. 211 00:09:59,880 --> 00:10:01,740 So, jetzt haben wir s2. 212 00:10:01,740 --> 00:10:03,869 Und s2 sein wird eine Anforderung, GetString. 213 00:10:03,869 --> 00:10:05,160 Also werde ich, um eine Zeichenfolge eingeben. 214 00:10:05,160 --> 00:10:08,720 Ich werde geben "Hannah." 215 00:10:08,720 --> 00:10:10,586 So geben Sie "Hannah" irgendwo in den Speicher. 216 00:10:10,586 --> 00:10:18,860 217 00:10:18,860 --> 00:10:19,360 Ja. 218 00:10:19,360 --> 00:10:23,000 A-H. 219 00:10:23,000 --> 00:10:25,550 >> OK, so jetzt s3. 220 00:10:25,550 --> 00:10:28,380 Und es wird zu einem anderen ersuchen, GetString. 221 00:10:28,380 --> 00:10:37,020 Und jetzt geben Sie "Maria". 222 00:10:37,020 --> 00:10:37,520 Gut. 223 00:10:37,520 --> 00:10:40,980 Und dann gibt es noch eine letzte Anfrage an GetString, S4. 224 00:10:40,980 --> 00:10:42,580 Also, ich weiß es nicht. 225 00:10:42,580 --> 00:10:45,640 Wie wäre es mit uns zu gehen antidisestablishmentarianism. 226 00:10:45,640 --> 00:10:49,460 So geben Sie, dass in den Speicher. 227 00:10:49,460 --> 00:10:50,400 Ja. 228 00:10:50,400 --> 00:10:53,970 So einfach tun "Rob." 229 00:10:53,970 --> 00:10:54,560 >> OK. 230 00:10:54,560 --> 00:10:58,410 So, jetzt explain-- warum hat Du diese Räume verlassen? 231 00:10:58,410 --> 00:11:01,340 Warum haben Sie dieses Feld leer haben Raum hier, hier und hier oben? 232 00:11:01,340 --> 00:11:05,170 233 00:11:05,170 --> 00:11:05,670 Ja. 234 00:11:05,670 --> 00:11:09,450 So bemerken, wenn ich gehe um s1-- so dass, wenn wir drucken 235 00:11:09,450 --> 00:11:11,890 hatten "Hannah" Lauf bis neben "Dean" 236 00:11:11,890 --> 00:11:14,360 Wie können wir wissen, wann die Zeichenfolge "Dean" endet? 237 00:11:14,360 --> 00:11:19,470 So drucken Sie die Zeichenfolge s1 kann nur gedruckt "DeanHannahMariaRob" 238 00:11:19,470 --> 00:11:22,720 wenn sie keine Ahnung haben wann "Dean" tatsächlich endet. 239 00:11:22,720 --> 00:11:23,240 >> Gut. 240 00:11:23,240 --> 00:11:27,650 So in Erinnerung, wie wir tatsächlich Betreiber dieses Ende eines Strings 241 00:11:27,650 --> 00:11:29,940 ist mit umgekehrten Schrägstrich Null. 242 00:11:29,940 --> 00:11:32,620 Also dieser Raum ist genau das, was wir wollten. 243 00:11:32,620 --> 00:11:34,040 Es sollte ein Backslash Null sein. 244 00:11:34,040 --> 00:11:37,690 Dies wird ein Backslash Null sein, und dies wird ein Backslash Null sein. 245 00:11:37,690 --> 00:11:41,585 Und Sie können eine fabelhafte Preis haben für ein perfektes Freiwilligen. 246 00:11:41,585 --> 00:11:44,910 247 00:11:44,910 --> 00:11:45,860 Werfen Sie einen Stress-Ball! 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 Also dieses Zeichen Backslash Null wie wir zeigen, das Ende einer Zeichenfolge. 251 00:11:54,420 --> 00:11:57,120 Es ist, wie wenn ein bestimmtes Programm will, um eine Zeichenfolge zu drucken, 252 00:11:57,120 --> 00:11:59,760 es ist how-- erinnern wir gelernt, die strlen-Funktion der letzten Woche? 253 00:11:59,760 --> 00:12:00,940 String-Länge? 254 00:12:00,940 --> 00:12:03,770 Es ist, wie String-Länge ist in der Lage bestimmen, wie lange ein String ist. 255 00:12:03,770 --> 00:12:05,810 Es hält nur Iteration in den Zeichen 256 00:12:05,810 --> 00:12:08,217 , bis er feststellt, die Backslash Null Charakter. 257 00:12:08,217 --> 00:12:11,050 So ist die wichtigste Sache zu erkennen, über den umgekehrten Schrägstrich Nullzeichen 258 00:12:11,050 --> 00:12:14,950 wird es vertreten alle Nullen in Bits. 259 00:12:14,950 --> 00:12:18,980 So bemerken, dass dies deutliche von der Null-Zeichen. 260 00:12:18,980 --> 00:12:23,010 So ist die Nullzeichen, wenn Sie sich erinnern in dem Beispiel, dass er am Ende ergab 261 00:12:23,010 --> 00:12:27,360 Vorlesung, wo die Zeichen map zu-- wie Kapital A-Karten bis 65. 262 00:12:27,360 --> 00:12:29,130 Kleinbuchstaben ein Karten bis 97. 263 00:12:29,130 --> 00:12:30,890 Klein b würde 98 sein. 264 00:12:30,890 --> 00:12:35,220 So dass die Zahl 0 Karten zu-- ich nicht weiß, aus der Spitze von meinem Kopf. 265 00:12:35,220 --> 00:12:36,400 44 oder 45. 266 00:12:36,400 --> 00:12:37,890 Irgendwo in dieser Region. 267 00:12:37,890 --> 00:12:40,850 >> Also das Zeichen 0 ist eine tatsächliche Zahl. 268 00:12:40,850 --> 00:12:44,350 Aber umgekehrten Schrägstrich Null Karten für alle Null-Bits. 269 00:12:44,350 --> 00:12:46,380 Es gibt also eine Unterscheidung Backslash zwischen Null 270 00:12:46,380 --> 00:12:48,450 was wir das Nullabschluss nennen. 271 00:12:48,450 --> 00:12:53,210 Es gibt einen Unterschied zwischen Backslash Null und das Zeichen Null. 272 00:12:53,210 --> 00:12:54,350 >> Gut. 273 00:12:54,350 --> 00:12:57,520 So spricht ein bisschen mehr über Zeichenfolgen. 274 00:12:57,520 --> 00:13:01,470 Also sehen wir hier, das ist, wie es wäre in Speicher verlegt werden. 275 00:13:01,470 --> 00:13:07,940 Also diese Idee von Strings als eine Folge von characters-- so das offizielle Computer 276 00:13:07,940 --> 00:13:10,750 sciency Begriff für Sequenz ein Array ist. 277 00:13:10,750 --> 00:13:13,790 So würden wir einen String aufrufen ein Array von Zeichen. 278 00:13:13,790 --> 00:13:17,770 Und es gibt tatsächlich andere Daten Typen, die wir Arrays aus zu machen. 279 00:13:17,770 --> 00:13:19,975 >> Also, diese zu motivieren, uns ein Beispiel. 280 00:13:19,975 --> 00:13:22,810 281 00:13:22,810 --> 00:13:29,812 Wir nennen ages0.c Ich werde Kopieren Sie unsere Vorlage. 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 Also in diesem Programm, was wir tun möchte, ist greifen die Alters 285 00:13:39,378 --> 00:13:45,160 von drei Studenten in den Kurs. 286 00:13:45,160 --> 00:13:49,240 So wissen wir, das int age-- und jetzt werde ich sagen: 0. 287 00:13:49,240 --> 00:13:53,140 So möchten Sie vielleicht age1 sagen, aber zum Zwecke werden wir in Kürze sehen, 288 00:13:53,140 --> 00:13:57,187 Ich werde sagen, int age0 gleich getint. 289 00:13:57,187 --> 00:13:59,270 So selben Aufruf getint dass wir habe mit I 290 00:13:59,270 --> 00:14:01,561 nicht geschehen, werden aufgefordert und sagte: "Gib mir das Alter." 291 00:14:01,561 --> 00:14:03,120 Aber gerade anfordert. 292 00:14:03,120 --> 00:14:06,510 >> Und age1 gleich getint. 293 00:14:06,510 --> 00:14:09,600 Und int age2 gleich getint. 294 00:14:09,600 --> 00:14:14,070 Also, noch einmal, drei Studenten, aber letztlich die Variablenindizes 295 00:14:14,070 --> 00:14:16,890 sind age0 durch age2. 296 00:14:16,890 --> 00:14:17,550 OK. 297 00:14:17,550 --> 00:14:23,960 So wird dieses Programm tun, was wir wollen mit age0, age1 und age2, 298 00:14:23,960 --> 00:14:27,670 aber dieses Programm letztlich arbeitet für drei Studenten. 299 00:14:27,670 --> 00:14:28,380 >> OK. 300 00:14:28,380 --> 00:14:32,110 So, jetzt was, wenn ich vier Studenten? 301 00:14:32,110 --> 00:14:36,000 Nun, ich bin zu haben, um zurück zu gehen in meinen Code, ändern Sie den Kommentar, 302 00:14:36,000 --> 00:14:39,840 und jetzt haben wir einen int Age3 gleich getint. 303 00:14:39,840 --> 00:14:40,610 OK. 304 00:14:40,610 --> 00:14:43,660 Also, wer das Problem sieht hier? 305 00:14:43,660 --> 00:14:47,310 Was ist das Problem mit dieser Art von Setup? 306 00:14:47,310 --> 00:14:47,810 Ja. 307 00:14:47,810 --> 00:14:53,110 308 00:14:53,110 --> 00:14:53,610 Ja. 309 00:14:53,610 --> 00:14:56,360 So schaffen wir gerade ein Variable für jeden Schüler. 310 00:14:56,360 --> 00:15:00,140 Nun, da funktioniert, aber letztlich, was, wenn ich jetzt 311 00:15:00,140 --> 00:15:06,500 sagen: "Ich möchte, um das Alter zu packen acht Studenten oder 16 Schüler 312 00:15:06,500 --> 00:15:11,340 oder die aber viele Studenten die Hunderte von Studenten in CS50 313 00:15:11,340 --> 00:15:16,750 oder die Tausende von Studenten auf dem Campus oder die Milliarden von Menschen auf der Welt? 314 00:15:16,750 --> 00:15:19,130 Also letztendlich das ist nicht nachhaltig. 315 00:15:19,130 --> 00:15:21,990 Jedes Mal, wenn Sie sich das Kopieren zu sehen und Einfügen von Code wie folgt, 316 00:15:21,990 --> 00:15:25,050 Sie sollten in der Regel das Gefühl, , dass es einen besseren Weg. 317 00:15:25,050 --> 00:15:31,290 >> Also das ist, wo wir einführen ein Array-Deklaration. 318 00:15:31,290 --> 00:15:34,564 Also, wenn Sie ein Array deklarieren, das ist, was das allgemeine Format 319 00:15:34,564 --> 00:15:35,480 wird aussehen würde. 320 00:15:35,480 --> 00:15:36,664 Wir werden die Art sagen. 321 00:15:36,664 --> 00:15:38,830 und dann werden wir zu gehen geben Sie den Namen des Arrays, 322 00:15:38,830 --> 00:15:41,150 so wie wir jede gegebene Variable zu definieren. 323 00:15:41,150 --> 00:15:43,980 Und schließlich sind wir mit Diese Halterung Notation wieder 324 00:15:43,980 --> 00:15:47,480 sondern in einem anderen Kontext als wie wir früher verwenden. 325 00:15:47,480 --> 00:15:51,860 >> So, hier das sieht aus wie ein normaler Variablendeklaration, die wir gesehen haben. 326 00:15:51,860 --> 00:15:54,890 Also haben wir int x Semikolon gesehen. 327 00:15:54,890 --> 00:16:00,020 Nun könnten wir etwas sehen wie int x 5 Klammern. 328 00:16:00,020 --> 00:16:04,020 Und setzen diese Idee in die Getint Programm, das wir have-- 329 00:16:04,020 --> 00:16:08,850 so dass wir umsetzen können dies in der gleichen Weise. 330 00:16:08,850 --> 00:16:13,630 >> Nehmen wir an, in CS neigen wir dazu, zu verwenden n, wenn die Anzahl von etwas. 331 00:16:13,630 --> 00:16:16,150 So, hier sind wir zu gehen speichern vier Studenten. 332 00:16:16,150 --> 00:16:25,960 Und jetzt können wir sagen, int Alter Halterung N- nicht ganz bekommen yet-- 333 00:16:25,960 --> 00:16:32,210 um eine Anordnung von vier Studenten zu erklären. 334 00:16:32,210 --> 00:16:38,050 So, wie diese aussehen wird, in Speicher wird ähnlich der folgenden sein. 335 00:16:38,050 --> 00:16:39,570 Deaktivieren Sie diese. 336 00:16:39,570 --> 00:16:46,606 Und wir werden irgendwo in memory-- Ich werde dies dort oben gesetzt. 337 00:16:46,606 --> 00:16:52,690 338 00:16:52,690 --> 00:16:53,808 >> Also irgendwo im Speicher. 339 00:16:53,808 --> 00:16:58,760 340 00:16:58,760 --> 00:16:59,727 Eins zwei drei vier. 341 00:16:59,727 --> 00:17:03,383 342 00:17:03,383 --> 00:17:09,849 Wir haben vier ganzen Zahlen in einer Reihe für diese Anordnung von vier Ganzzahlen. 343 00:17:09,849 --> 00:17:13,820 Also gerade, was ist der Größe eines dieser Felder? 344 00:17:13,820 --> 00:17:17,190 345 00:17:17,190 --> 00:17:17,690 Ja. 346 00:17:17,690 --> 00:17:18,390 Es ist vier Bytes. 347 00:17:18,390 --> 00:17:19,690 Es ist 32 Bit. 348 00:17:19,690 --> 00:17:22,310 So, jetzt ist das anders aus dem Array, dass wir 349 00:17:22,310 --> 00:17:24,020 früher sahen, das Array von Zeichen. 350 00:17:24,020 --> 00:17:28,540 In einer Schnur war jede Box nur ein Byte, da ein Zeichen ist nur ein Byte. 351 00:17:28,540 --> 00:17:32,170 Aber mit einer Reihe von ganzen Zahlen, die jeweils Box verfügt über vier Bytes in Ordnung sein 352 00:17:32,170 --> 00:17:34,060 um eine ganze Integer passen. 353 00:17:34,060 --> 00:17:37,197 Also das ist, was eine Reihe von vier ints aussehen würde. 354 00:17:37,197 --> 00:17:40,510 355 00:17:40,510 --> 00:17:43,870 >> Und dann wieder auf Code. 356 00:17:43,870 --> 00:17:47,460 Jetzt wollen wir eigentlich Shop Zahlen in diesem Array. 357 00:17:47,460 --> 00:17:53,470 So, jetzt ist dies ein sehr, sehr, sehr gemeinsames Muster, das wird irgendwann 358 00:17:53,470 --> 00:17:54,680 geworden Muskelgedächtnis. 359 00:17:54,680 --> 00:17:56,710 So int i gleich 0 ist. 360 00:17:56,710 --> 00:17:57,940 i kleiner als n ist. 361 00:17:57,940 --> 00:18:01,850 i plus plus. 362 00:18:01,850 --> 00:18:05,790 Altersklasse i gleich getint. 363 00:18:05,790 --> 00:18:15,100 >> Also dieser for-Schleife, dieses Format, Sie sollten sehr gewöhnungsbedürftig. 364 00:18:15,100 --> 00:18:20,010 So ist dies in der Regel, wie wir laufen fast jedem Array. 365 00:18:20,010 --> 00:18:23,690 Nun beachtet diese Art von erklärt, warum von Anfang an 366 00:18:23,690 --> 00:18:29,870 wir nicht für Loops gehen für int haben i gleich 1 ist, i kleiner oder gleich 10. 367 00:18:29,870 --> 00:18:34,200 Der Grund dafür ist, dass ausgehend von Null macht diese Arbeit auch mit Arrays. 368 00:18:34,200 --> 00:18:36,270 So Arrays null indexiert. 369 00:18:36,270 --> 00:18:40,360 Wenn diese Anordnung eine Länge von 4, die Indizes 0 bis 3. 370 00:18:40,360 --> 00:18:42,880 >> So durch die erste Iteration dieser for-Schleife 371 00:18:42,880 --> 00:18:49,930 wir werden werden die Festlegung von Alters Halterung 0 gleich einem Aufruf getint. 372 00:18:49,930 --> 00:18:52,440 Also, was ich geschehen an der Tastatur eingeben. 373 00:18:52,440 --> 00:18:56,970 Im zweiten Durchgang sind wir Setzen age1 gleich getint. 374 00:18:56,970 --> 00:18:58,230 Dritten Durchgang, age2. 375 00:18:58,230 --> 00:18:59,880 Letzten Durchgang Age3. 376 00:18:59,880 --> 00:19:05,750 So dass, wenn in dem ersten Durchlauf der Schleife Ich geben Sie die Nummer 4 auf der Tastatur, 377 00:19:05,750 --> 00:19:07,740 dann werden wir eine 4 übertragen Sie hier. 378 00:19:07,740 --> 00:19:11,470 Wenn auf dem zweiten Durchlauf I geben 50 werden wir eine 50 ablegen. 379 00:19:11,470 --> 00:19:15,180 Am dritten Pass, ich könnte Geben negativen 1, negativ 1, 380 00:19:15,180 --> 00:19:21,810 und schließlich, ob ich geben 0-- und Jetzt denken Sie daran, dass dies Index drei. 381 00:19:21,810 --> 00:19:25,350 >> Nachdem wir Schleife zurück, i gehen, um 4 erhöht. 382 00:19:25,350 --> 00:19:27,770 i nicht mehr kleiner als n ist, die 4 ist. 383 00:19:27,770 --> 00:19:29,840 Und wir brechen aus der Schleife. 384 00:19:29,840 --> 00:19:32,578 So würde, was mit das sein? 385 00:19:32,578 --> 00:19:38,140 386 00:19:38,140 --> 00:19:38,729 [Unverständlich]? 387 00:19:38,729 --> 00:19:39,604 ZIELGRUPPE: [unverständlich] 388 00:19:39,604 --> 00:19:45,880 389 00:19:45,880 --> 00:19:46,400 >> Ja. 390 00:19:46,400 --> 00:19:51,550 Also das Array nur vier Plätze, die als Indizes 0 bis 3 bedeutet. 391 00:19:51,550 --> 00:19:55,630 Also, wenn dies der Fall wäre, würde ich nehmen Sie auf den Wert 4 an einem gewissen Punkt. 392 00:19:55,630 --> 00:20:00,910 Altersstufe 4 wird die Einstellung Was auch immer geschieht, um hier zu sein 393 00:20:00,910 --> 00:20:02,920 zu dem, was ich zu sagen habe, geben Sie 6. 394 00:20:02,920 --> 00:20:05,010 Das wird diese Einstellung werden bis 6. 395 00:20:05,010 --> 00:20:06,560 >> Aber wir wissen nicht, was ist hier. 396 00:20:06,560 --> 00:20:08,836 Dies ist keine Speicher dass wir den Zugang zu. 397 00:20:08,836 --> 00:20:10,710 Also, wenn Sie daran denken, aus vorigen Vortrag, 398 00:20:10,710 --> 00:20:14,350 er war Ausdruck von Werten und Zamyla irgendwann schlug er diese Segmentierung 399 00:20:14,350 --> 00:20:17,990 Fehler. So dass Sie wahrscheinlich sehen werden viele Segmentierungsfehler, wie Sie 400 00:20:17,990 --> 00:20:20,530 implementieren einige der Problemstellungen. 401 00:20:20,530 --> 00:20:24,950 Aber dies ist einer der Wege, auf denen können Sie eine Segmentierung begegnen 402 00:20:24,950 --> 00:20:28,540 Fehler, wenn Sie den Zugriff auf starten Speicher in einer Weise, dass Sie sollte nicht sein. 403 00:20:28,540 --> 00:20:34,117 So dass wir nicht haben Zugang zu dieser Ort und das ist ein Fehler. 404 00:20:34,117 --> 00:20:37,760 405 00:20:37,760 --> 00:20:40,190 >> Also das ist besser. 406 00:20:40,190 --> 00:20:45,820 Nun gibt es noch eine kleine Problem mit diesem Code. 407 00:20:45,820 --> 00:20:50,720 Und das ist im Grunde, dass wir noch in vier Studenten fest. 408 00:20:50,720 --> 00:20:52,940 Nun, wenn ich acht Studenten verwenden, OK. 409 00:20:52,940 --> 00:20:54,350 Es ist nicht so große Sache. 410 00:20:54,350 --> 00:20:58,120 Ich kann gehen, ändern Sie die Stellung zu nehmen, und ändern Sie n. 411 00:20:58,120 --> 00:20:59,760 Nun wird mit acht Studenten zu arbeiten. 412 00:20:59,760 --> 00:21:02,190 Wenn ich diese kompilieren und ausführen Dazu wird es zeigen mich- 413 00:21:02,190 --> 00:21:07,870 es ganze Zahlen für acht anfordern Studenten und es wird nur funktionieren. 414 00:21:07,870 --> 00:21:11,850 Aber es ist alles andere als ideal, um zu müssen, Kompilieren Sie das Programm jedes Mal 415 00:21:11,850 --> 00:21:15,960 I, um die Zahl der Studierenden zu ändern dass ich das Alter eingeben. 416 00:21:15,960 --> 00:21:22,990 >> So dass die endgültige Verbesserung Diese, wie wir hier-- sehen wir 417 00:21:22,990 --> 00:21:26,177 gehen, um die Anzahl der Personen anfordern. 418 00:21:26,177 --> 00:21:28,010 Hier haben wir eine Reihe der Menschen in den Zimmern 419 00:21:28,010 --> 00:21:29,880 oder jegliche Altersgruppen von Menschen in den Raum. 420 00:21:29,880 --> 00:21:33,300 Aber wir werden, um die Anzahl zu beantragen von Menschen in dem Raum von dem Benutzer. 421 00:21:33,300 --> 00:21:36,171 Also das ist genau das gleiche do-while- Schleife, die wir zuvor gesehen haben. 422 00:21:36,171 --> 00:21:37,920 Es ist genau das gleiche do-while-Schleife, die Sie 423 00:21:37,920 --> 00:21:40,050 kann auf das Problem Set Umsetzung werden. 424 00:21:40,050 --> 00:21:43,102 So lange, wie sie sind Eingabe eine n kleiner als 1, 425 00:21:43,102 --> 00:21:45,310 so es muss doch zumin sein mindestens eine Person im Raum. 426 00:21:45,310 --> 00:21:47,407 Solange sie Eingabe eine n kleiner als 1, 427 00:21:47,407 --> 00:21:48,990 dann werden wir halten wieder zu fragen. 428 00:21:48,990 --> 00:21:50,906 Bitte geben Sie die Anzahl von Menschen in dem Raum. 429 00:21:50,906 --> 00:21:53,550 Nun, wenn wir die Anzahl Leute in der room-- 430 00:21:53,550 --> 00:21:58,020 so könnte ich es geben, dass sind 200 Personen in diesem Raum. 431 00:21:58,020 --> 00:22:05,480 Dann hier unten werden wir kommen und erklären, eine Reihe von Größe 200. 432 00:22:05,480 --> 00:22:10,220 Wir deklarieren Array, das ist groß genug, um 200 Altersstufen zu halten. 433 00:22:10,220 --> 00:22:15,370 Herab, es ist die for-Schleife dass Sie sehr gewöhnungsbedürftig. 434 00:22:15,370 --> 00:22:19,490 So Iteration über dieses Array, Zuweisung an jedem Standort 435 00:22:19,490 --> 00:22:23,020 in diesem Array eine ganze Zahl und dann letztendlich hier sind wir 436 00:22:23,020 --> 00:22:28,340 gerade erst ein Beispiel Iteration über dieses Array, nicht auf Werte zuweisen, 437 00:22:28,340 --> 00:22:30,150 aber auf Werte zugreifen. 438 00:22:30,150 --> 00:22:33,810 >> Also hier sehen wir, dass wir sagen, ein Jahr ab jetzt, 439 00:22:33,810 --> 00:22:40,470 Person% i% i wird Jahre alt sein, wo das erste% i i plus 1. 440 00:22:40,470 --> 00:22:43,010 Also ist i der Index-Variable. 441 00:22:43,010 --> 00:22:49,420 Und das zweite% i wird den sein Wert in der Alters Array plus 1 gespeichert. 442 00:22:49,420 --> 00:22:54,217 Also das plus 1 ist, nur weil wir sind saying-- dieses plus 1, im Alter von i + 1. 443 00:22:54,217 --> 00:22:57,050 Dies plus 1 ist, nur weil wir sind sagen, ein Jahr ab jetzt der Person 444 00:22:57,050 --> 00:22:58,280 wird diese alt sein. 445 00:22:58,280 --> 00:23:01,080 >> Warum ist dies i plus 1? 446 00:23:01,080 --> 00:23:04,064 Deshalb haben wir ein Plus 1 gibt es? 447 00:23:04,064 --> 00:23:04,564 Ja. 448 00:23:04,564 --> 00:23:07,410 449 00:23:07,410 --> 00:23:07,930 Ja. 450 00:23:07,930 --> 00:23:10,510 Also denken Sie daran Arrays null indexiert. 451 00:23:10,510 --> 00:23:14,840 Also, wenn wir dies für den Druck jemanden, der gerade gelesen, die Ausgabe, 452 00:23:14,840 --> 00:23:19,380 dann wohl sie etwas sehen wollen wie Person ein, person Nummer eins, 453 00:23:19,380 --> 00:23:21,160 wird 20 Jahre alt sein. 454 00:23:21,160 --> 00:23:23,570 Person Nummer zwei wird die 15 Jahre alt sein. 455 00:23:23,570 --> 00:23:27,420 Sie würden lieber nicht sehen, Person Zahl Null ist 15 Jahre alt. 456 00:23:27,420 --> 00:23:36,460 >> So kompilieren und diese nur zu sehen, was es sieht like-- etwas Raum erstellen. 457 00:23:36,460 --> 00:23:43,560 Machen Alter kompiliert. 458 00:23:43,560 --> 00:23:45,080 Laufende Altersgruppen. 459 00:23:45,080 --> 00:23:46,580 Wir sehen, Zahl der Menschen in den Raum. 460 00:23:46,580 --> 00:23:48,850 Also werde ich sagen, es gibt drei Menschen in den Raum. 461 00:23:48,850 --> 00:23:54,000 Alter der Person, die Nummer eins, sagen wir, 15, 20, 25. 462 00:23:54,000 --> 00:23:59,680 Und jetzt werde ich in einem Jahr sagen jetzt werden sie 16, 21, 26 zu sein. 463 00:23:59,680 --> 00:24:02,900 Lassen Sie uns sehen, dass dies funktioniert mit eine n nicht gleich 3 ist. 464 00:24:02,900 --> 00:24:07,940 Also, wenn ich sage, Personenanzahl 5, ein, zwei, drei, zwei, eins, ein Jahr ab jetzt 465 00:24:07,940 --> 00:24:11,170 sie werden zwei, drei, vier, drei, zwei Jahre alt. 466 00:24:11,170 --> 00:24:16,500 Also ich könnte genauso leicht haben n 10.000 sein. 467 00:24:16,500 --> 00:24:21,270 Jetzt werde ich hier sitzen schon ein während der Eingabe von Alter, aber das funktioniert. 468 00:24:21,270 --> 00:24:26,000 >> So, jetzt im Speicher irgendwo wir haben eine Reihe von Größen 10000, 469 00:24:26,000 --> 00:24:28,830 so letztendlich 40.000 Bytes, weil es 470 00:24:28,830 --> 00:24:31,222 vier Bytes für jede dieser Zahlen. 471 00:24:31,222 --> 00:24:33,180 So gibt es eine Reihe von Größe 10.000, wo wir können 472 00:24:33,180 --> 00:24:36,201 speichern Sie das Alter dieser 10.000 Menschen. 473 00:24:36,201 --> 00:24:36,700 Gut. 474 00:24:36,700 --> 00:24:40,070 Fragen über irgendwelche von diesem? 475 00:24:40,070 --> 00:24:41,892 Ja. 476 00:24:41,892 --> 00:24:43,350 Was, wenn Sie eine negative Zahl gab? 477 00:24:43,350 --> 00:24:44,870 Schauen wir mal was passiert. 478 00:24:44,870 --> 00:24:49,320 Also in diesem besonderen Fall-- Nummer von Menschen in dem Raum, negativ. 479 00:24:49,320 --> 00:24:52,580 Es zurückgewiesen, dass, weil sich hier ein, wir passieren 480 00:24:52,580 --> 00:24:57,180 sein Umgang mit der Tatsache, dass, wenn n weniger als ein, wir werden wieder an. 481 00:24:57,180 --> 00:25:01,780 Wenn Sie versuchen, ein zu erklären Reihe von negativen Größe, 482 00:25:01,780 --> 00:25:03,950 es im allgemeinen nicht funktioniert. 483 00:25:03,950 --> 00:25:05,570 >> Also lassen Sie uns versuchen. 484 00:25:05,570 --> 00:25:08,000 Lassen Sie uns zu ignorieren was auch immer Wert, den sie Input für n 485 00:25:08,000 --> 00:25:10,571 und einfach sagen, int Alter negativ. 486 00:25:10,571 --> 00:25:12,410 Mal sehen, ob es noch kompiliert. 487 00:25:12,410 --> 00:25:14,100 Ich bin mir nicht sicher. 488 00:25:14,100 --> 00:25:14,920 Nein. 489 00:25:14,920 --> 00:25:18,280 Also Alter wird als ein deklariert Array mit einer negativen Größe. 490 00:25:18,280 --> 00:25:22,540 So upfront es ein Array erkennt, kann nicht sein von negativen Größe und lehnt sie ab. 491 00:25:22,540 --> 00:25:26,840 Nun, wenn wir nicht umgehen Dieses do-while-Schleife richtig, 492 00:25:26,840 --> 00:25:28,810 wenn wir nicht die Überprüfung wenn n kleiner als 1-- 493 00:25:28,810 --> 00:25:32,690 lassen Sie uns sagen wir einfach hatte nicht das überhaupt 494 00:25:32,690 --> 00:25:35,940 und statt uns einfach an eine ganze Zahl. 495 00:25:35,940 --> 00:25:40,710 Egal, was die ganze Zahl ist, erklären wir, eine Reihe von dieser Größe. 496 00:25:40,710 --> 00:25:44,250 >> So kann der Compiler nicht evtl. beschweren jetzt. 497 00:25:44,250 --> 00:25:48,780 Wenn ich kompilieren this-- so kann es nicht zu beklagen, 498 00:25:48,780 --> 00:25:51,480 weil sie nicht wissen, dass ich gehen, um eine negative Zahl eingeben, 499 00:25:51,480 --> 00:25:52,550 die ungültig sein könnte. 500 00:25:52,550 --> 00:25:54,633 Für alle, sie weiß, ich könnte geben Sie eine positive Zahl ist, 501 00:25:54,633 --> 00:25:56,000 Das ist völlig in Ordnung. 502 00:25:56,000 --> 00:26:01,090 So stelle ich mir, wenn ich geben Sie negatives 1 Leute im Raum, Segmentation Fault. 503 00:26:01,090 --> 00:26:06,040 >> So, OK. 504 00:26:06,040 --> 00:26:13,160 So fügen wir dies wieder nur halten Sie es, was es ursprünglich war. 505 00:26:13,160 --> 00:26:15,640 So stellen Alters. 506 00:26:15,640 --> 00:26:18,120 Nun, wenn ich etwas ausprobieren negativen age-- also lassen Sie uns 507 00:26:18,120 --> 00:26:19,710 sagen, es gibt fünf Menschen in den Raum. 508 00:26:19,710 --> 00:26:23,180 Alter der Person Nummer eins negativ 4, Person drei 509 00:26:23,180 --> 00:26:26,500 Null ist, three-- Person OK. 510 00:26:26,500 --> 00:26:29,850 Also hier, ein Jahr ab jetzt, Personennummer man wird minus 3 Jahre alt sein. 511 00:26:29,850 --> 00:26:32,830 Also wahrscheinlich nicht sinnvoll. 512 00:26:32,830 --> 00:26:37,220 Aber das ist nur, weil der Suche auf den Code alles, was wir tun 513 00:26:37,220 --> 00:26:40,260 fordert getint. 514 00:26:40,260 --> 00:26:44,110 >> Nun, wenn wir hatten, war der GetPositiveInt Funktion 515 00:26:44,110 --> 00:26:49,690 oder wir hatten einfach nur das getan Art gleichen while-Schleife dort unten, 516 00:26:49,690 --> 00:26:52,340 dann wäre dies völlig in Ordnung arbeiten. 517 00:26:52,340 --> 00:26:54,200 Aber in diesem speziellen Fall haben wir einfach nicht 518 00:26:54,200 --> 00:26:57,772 geschehen zu sein Umgang mit negativen Werten. 519 00:26:57,772 --> 00:26:59,147 Alle anderen Fragen über Arrays? 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 >> Also haben wir jetzt Arrays gesehen. 523 00:27:09,380 --> 00:27:12,500 Und wir gehen zu müssen, zu verwenden das für Befehlszeilenargumente. 524 00:27:12,500 --> 00:27:14,680 So bei der Problem gesetzt two-- Ich weiß, viele von Ihnen 525 00:27:14,680 --> 00:27:18,040 vielleicht noch auf Problem-Set arbeiten eine, sondern zwei Probleme setzen steht vor der Tür. 526 00:27:18,040 --> 00:27:22,260 In Problem stellte zwei, du bist zu gehen müssen Sie mit Strings, Arrays zu tun haben, 527 00:27:22,260 --> 00:27:23,950 und Befehlszeilenargumente. 528 00:27:23,950 --> 00:27:26,270 >> Also, was sind Kommandozeilenargumente? 529 00:27:26,270 --> 00:27:29,570 Jetzt können Sie sich hier einen zu sehen kleiner Teaser für genau das, was ist 530 00:27:29,570 --> 00:27:30,950 gehen zu geschehen. 531 00:27:30,950 --> 00:27:32,950 Wir sehen int main, inc argc, String argv Klammern. 532 00:27:32,950 --> 00:27:34,560 533 00:27:34,560 --> 00:27:38,130 Also lassen Sie uns zuerst versuchen, zu interpretieren was das ist versucht zu sagen. 534 00:27:38,130 --> 00:27:40,800 Jetzt ok. 535 00:27:40,800 --> 00:27:44,637 >> So in der Befehlszeile Sie sein sollte am Anfang, einige dieser Befehle 536 00:27:44,637 --> 00:27:48,580 jetzt, und Sie wahrscheinlich ausgeführt haben cd im Terminal vor. 537 00:27:48,580 --> 00:27:52,100 Also, wenn wir sagen, cd pset1, Sie wissen, dass das sollte 538 00:27:52,100 --> 00:27:55,050 sein Wechsel in den pset1 Verzeichnis. 539 00:27:55,050 --> 00:27:59,120 >> Jetzt bemerken, dass Sie nie haben ein Programm geschrieben, wie dies vor. 540 00:27:59,120 --> 00:28:03,120 Jedes Programm, das Sie geschrieben haben, Sie laufen, sagen wir, dot Slash Mario, 541 00:28:03,120 --> 00:28:06,779 dot Slash gierig, und dann ist es könnten Sie zu einer Eingabe auffordern. 542 00:28:06,779 --> 00:28:08,570 Nun, das ist nicht das, was Verzeichnis wechseln tut. 543 00:28:08,570 --> 00:28:12,770 Wenn Sie cd laufen, ist es nicht so sagen, welchem ​​Verzeichnis Sie wollen, CD in? 544 00:28:12,770 --> 00:28:17,200 Stattdessen können Sie einfach sagen, cd pset1 und es geht einfach in die pset1 Verzeichnis. 545 00:28:17,200 --> 00:28:20,430 >> So ähnlich haben wir andere Beispiele. 546 00:28:20,430 --> 00:28:21,540 machen hallo. 547 00:28:21,540 --> 00:28:25,760 Wenn Sie machen laufen, ist es nicht so sagen, welches Programm möchten Sie machen? 548 00:28:25,760 --> 00:28:29,620 Du gerade gesagt, bei der Befehlszeile machen hallo. 549 00:28:29,620 --> 00:28:31,060 >> Bewegung ist ein weiteres Beispiel. 550 00:28:31,060 --> 00:28:34,840 Dieses wir bewegen die mario.c Datei ein Verzeichnis nach oben. 551 00:28:34,840 --> 00:28:38,060 Jetzt wissen wir also mit diesem Beispiel wir wirklich vorbei zwei Argumente. 552 00:28:38,060 --> 00:28:42,090 Es gibt mario.c als erstes Argument, und Punkt Punkt ist das zweite Argument. 553 00:28:42,090 --> 00:28:46,140 Und dann, wenn Sie zum Laufen zu bringen, die Sie sehen, dass wirklich lange Befehls line-- 554 00:28:46,140 --> 00:28:50,580 dass wirklich lange Befehls in der Befehlszeile gedruckt. 555 00:28:50,580 --> 00:28:53,590 So dass lange command-- diese ist nur einen kurzen Teil davon, 556 00:28:53,590 --> 00:28:56,090 aber jetzt müssen wir drei Befehlszeilenargumente. 557 00:28:56,090 --> 00:28:59,750 Dot Dash Null, hallo, und hello.c. 558 00:28:59,750 --> 00:29:03,497 >> Das sind also Befehlszeilen Argumente, Argumente 559 00:29:03,497 --> 00:29:05,580 dass Sie auf die vorbeifahr sind Kommandozeile, so dass sie 560 00:29:05,580 --> 00:29:08,680 muss nicht aufgefordert, Wenn Sie das Programm ausführen. 561 00:29:08,680 --> 00:29:13,090 Es wäre frustrierend, wenn bei Sie clang lief es sagte: "OK, 562 00:29:13,090 --> 00:29:15,630 die program-- die Datei werden Sie der Zusammenstellung? 563 00:29:15,630 --> 00:29:17,010 Hello.c. 564 00:29:17,010 --> 00:29:19,440 Was würden Sie flags gerne geben? dash o. 565 00:29:19,440 --> 00:29:21,190 Was hättest du gerne die Datei aufgerufen werden? 566 00:29:21,190 --> 00:29:21,690 Hallo. 567 00:29:21,690 --> 00:29:25,290 Nein, Sie führen Sie einfach clang dash o hallo hello.c. 568 00:29:25,290 --> 00:29:28,820 >> So im Rückblick auf diese. 569 00:29:28,820 --> 00:29:32,920 Jetzt argc-- argc ist das Argument zählt. 570 00:29:32,920 --> 00:29:36,620 Es ist die Anzahl der Befehlszeilen Argumente in der Befehlszeile eingegeben. 571 00:29:36,620 --> 00:29:39,720 Nun, technisch argv-- die v steht für Vektor, 572 00:29:39,720 --> 00:29:41,460 was im Grunde bedeutet Array. 573 00:29:41,460 --> 00:29:42,680 Sie können jedoch ignorieren. 574 00:29:42,680 --> 00:29:47,540 Argv-- wir String argv, so String argv Klammern. 575 00:29:47,540 --> 00:29:50,150 Also das ist eine andere Form der Klammern Sie noch nie gesehen haben. 576 00:29:50,150 --> 00:29:52,300 So haben wir gesehen, Halterung Notation, als wir gesagt haben, 577 00:29:52,300 --> 00:29:53,970 wie, string s gleich Zamyla. 578 00:29:53,970 --> 00:29:56,910 s Halterung 0 greift den Charakter Z. 579 00:29:56,910 --> 00:30:00,720 >> Wir haben auch gesehen, Klammern, wenn wir gesagt int Alter Konsole 5. 580 00:30:00,720 --> 00:30:03,160 Das erklärte ein Array der Größe 5. 581 00:30:03,160 --> 00:30:06,280 So, hier ist eine Version von der Klammern wir noch nie gesehen haben. 582 00:30:06,280 --> 00:30:09,630 Also diese Art von String argv, dass wäre völlig vertraut sein 583 00:30:09,630 --> 00:30:12,050 dass es nur ein String sein. 584 00:30:12,050 --> 00:30:14,520 Nun werden die Klammern dass dieses ein Array ist. 585 00:30:14,520 --> 00:30:19,920 So String argv Klammern Mittel dass argv ist ein Array von Zeichenfolgen. 586 00:30:19,920 --> 00:30:22,540 Nun technisch ein String ein Array von Zeichen. 587 00:30:22,540 --> 00:30:26,400 Also das ist jetzt ein Array einer Anordnung von Zeichen. 588 00:30:26,400 --> 00:30:31,490 Aber es ist viel einfacher zu denken dies als nur ein Array von Strings. 589 00:30:31,490 --> 00:30:34,900 >> Warum also könnten die Klammern leer sein? 590 00:30:34,900 --> 00:30:38,170 Wie, warum können wir nicht sagen, Halterung 5, Bügel n? 591 00:30:38,170 --> 00:30:40,700 592 00:30:40,700 --> 00:30:41,200 Ja. 593 00:30:41,200 --> 00:30:43,731 594 00:30:43,731 --> 00:30:44,230 Ja. 595 00:30:44,230 --> 00:30:46,396 Wir wissen nicht, wie viele Eingänge gibt sein werden. 596 00:30:46,396 --> 00:30:53,560 Also, wenn wir uns den Klang Beispiel Wir sagen clang dash o hallo hello.c. 597 00:30:53,560 --> 00:30:56,710 In diesem besonderen Fall gibt es passieren zu drei Befehlszeilenargumente sein. 598 00:30:56,710 --> 00:31:00,522 Und so ist die brackets-- wir werden sehen, in einem zweiten wäre es nicht drei sein. 599 00:31:00,522 --> 00:31:01,730 Es wäre technisch vier sein. 600 00:31:01,730 --> 00:31:04,030 Aber die Klammern, würden wir beispielsweise sind es drei. 601 00:31:04,030 --> 00:31:08,220 Aber jetzt, wenn wir sah unterwegs mario.c dot dot, die Klammern 602 00:31:08,220 --> 00:31:09,760 wir wollen zwei in sie setzen. 603 00:31:09,760 --> 00:31:12,884 >> Und es gibt eine Menge von Befehlen, eine variable Anzahl von Befehlszeilen 604 00:31:12,884 --> 00:31:13,620 Argumente. 605 00:31:13,620 --> 00:31:17,430 Also, was diese Version des Klammer-Notation zeigt 606 00:31:17,430 --> 00:31:20,820 ist, dass argv ist ein Array von Zeichenfolgen. 607 00:31:20,820 --> 00:31:24,360 Aber wir wissen nicht, wie viele Saiten sind in diesem Array. 608 00:31:24,360 --> 00:31:27,090 Und woher wissen wir dann, wie viele Strings im Array? 609 00:31:27,090 --> 00:31:28,870 Das ist der springende Punkt argc. 610 00:31:28,870 --> 00:31:32,300 argc sagt uns, wie lange argv ist. 611 00:31:32,300 --> 00:31:36,500 >> Also das letzte, was in zu halten Geist ist, dass, technisch gesehen, 612 00:31:36,500 --> 00:31:40,820 der Befehl selbst zählt der Befehlszeilenargumente. 613 00:31:40,820 --> 00:31:45,330 So cd pset1 gibt es zwei Befehlszeilenargumente. 614 00:31:45,330 --> 00:31:50,260 Das Programm an sich, cd, und dann das eigentliche Argument, ein Teil davon, pset1. 615 00:31:50,260 --> 00:31:54,490 Jedes Programm, das Sie bisher geschrieben haben, hat eine Befehlszeilen argument-- dot hatten 616 00:31:54,490 --> 00:31:55,320 Slash Mario. 617 00:31:55,320 --> 00:31:57,350 Das ist der einzige Befehlszeilenargument. 618 00:31:57,350 --> 00:32:00,900 >> So, jetzt betrachten clang dash o hallo hello.c. 619 00:32:00,900 --> 00:32:01,905 Also, was ist 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 So argc ist 4. 623 00:32:08,140 --> 00:32:12,140 Clang, so argv Halterung 0 ist Klang. 624 00:32:12,140 --> 00:32:15,630 argv Halterung 1 ist strich 0. 625 00:32:15,630 --> 00:32:21,870 argv Halterung 2 hallo, und argv Halterung 3 hello.c. 626 00:32:21,870 --> 00:32:26,813 OK, so dass Fragen über das, und dann werden wir Blick auf einige programmatische Beispiele. 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 Also werden wir einen Blick auf hello3.c zu nehmen. 630 00:32:36,260 --> 00:32:41,890 So sollte diese vom vertraut sein eine der ersten c Beispiele 631 00:32:41,890 --> 00:32:45,800 wir hatten, wo wir nur sagen würde, hallo Welt, aber das ist jetzt allgemeiner. 632 00:32:45,800 --> 00:32:52,300 Hier sind wir also sagen hallo % s Backslash n argv Halterung 1. 633 00:32:52,300 --> 00:32:57,440 Notice-- so bis zu diesem Punkt, das ist was meine Vorlagendatei hat ausgesehen. 634 00:32:57,440 --> 00:33:01,800 Ich hatte int main (void), und dann würde ich tun Sie etwas in der Hauptfunktion. 635 00:33:01,800 --> 00:33:05,100 Jetzt statt, sobald wir anfangen zu tun mit Befehlszeilenargumente, 636 00:33:05,100 --> 00:33:07,890 wir brauchen, um einen Zustand andere Form der Haupt. 637 00:33:07,890 --> 00:33:11,930 >> So suchen Sie in hello3 wieder, der Haupt wird 638 00:33:11,930 --> 00:33:15,990 um zwei Argumente now-- int argc zu nehmen, die Anzahl der Kommandozeilenargumente, 639 00:33:15,990 --> 00:33:20,970 und String argv Klammern, die tatsächliche Zeichenfolgen in der Befehlszeile eingegeben. 640 00:33:20,970 --> 00:33:26,560 Also werde ich das ändern Vorlage, um diese Tatsache zu reflektieren. 641 00:33:26,560 --> 00:33:29,060 Nun, wenn Sie schreiben, ein Programm, wenn Sie nicht tun 642 00:33:29,060 --> 00:33:33,720 müssen keine Befehlszeilen nehmen Argumente, dann benutzen Sie einfach int main (void). 643 00:33:33,720 --> 00:33:37,070 Aber jetzt, wenn du schreibst Befehlszeilenargument Programme, die 644 00:33:37,070 --> 00:33:40,350 Sie gehen zu tun, für die Problem gesetzt two-- so jetzt, dass Sie laufen 645 00:33:40,350 --> 00:33:42,630 Programme, die zu übernehmen müssen Befehlszeilenargumente, 646 00:33:42,630 --> 00:33:45,250 Sie benötigen Haupt dieser Form zu haben. 647 00:33:45,250 --> 00:33:51,290 >> So hier-- das ist die große Nutzung der Befehlszeilenargument. 648 00:33:51,290 --> 00:33:54,100 So Druck argv 1. 649 00:33:54,100 --> 00:33:59,180 OK also lassen Sie kompilieren und führen Sie dieses Programm. 650 00:33:59,180 --> 00:34:02,440 Machen hello3. 651 00:34:02,440 --> 00:34:03,570 Kompiliert. 652 00:34:03,570 --> 00:34:06,870 Dot Slash hello3. 653 00:34:06,870 --> 00:34:08,920 Und lassen Sie uns sagen: "Rob." 654 00:34:08,920 --> 00:34:10,760 Hallo Rob. 655 00:34:10,760 --> 00:34:14,940 Wenn ich sage: "Hallo Maria," Hallo Maria. 656 00:34:14,940 --> 00:34:15,719 Hallo Maria. 657 00:34:15,719 --> 00:34:18,639 Hannah immer noch sagt: "Hallo Maria, "weil ich nicht 658 00:34:18,639 --> 00:34:21,340 nichts mit unseren argv 2 tut. 659 00:34:21,340 --> 00:34:22,590 Argv 2 wäre jetzt "Hannah." 660 00:34:22,590 --> 00:34:25,030 Argc würde 3 sein. 661 00:34:25,030 --> 00:34:27,735 Was passiert, wenn ich das tat? 662 00:34:27,735 --> 00:34:31,980 663 00:34:31,980 --> 00:34:34,679 So hallo null. 664 00:34:34,679 --> 00:34:38,760 >> Er berührte kurz auf die Tatsache, dass, technisch gesehen, GetString 665 00:34:38,760 --> 00:34:42,429 könnte null zurück, aber wir werden eine zu bekommen viel mehr in das, was null tatsächlich ist. 666 00:34:42,429 --> 00:34:47,449 Aber nehmen Sie es als eine Angelegenheit von Tatsache, dass keine in der Regel schlecht. 667 00:34:47,449 --> 00:34:50,179 Wir haben etwas falsch gemacht, wenn es Druck "Hallo null." 668 00:34:50,179 --> 00:34:52,179 Und der Grund, wir haben etwas falsch ist-- auch, 669 00:34:52,179 --> 00:34:56,179 wenn ich lief dot Strich hello3, argc war 1. 670 00:34:56,179 --> 00:34:59,680 Das heißt also, die Länge des argv war 1. 671 00:34:59,680 --> 00:35:05,110 Wenn ein Array der Länge 1, das einzig gültige Index ist Null. 672 00:35:05,110 --> 00:35:08,550 Und hier argv 1 außerhalb der Bereich dieser Array. 673 00:35:08,550 --> 00:35:13,410 Es war ähnlich wie zuvor, als ich versuchte, außerhalb des Endes der Anordnung zu speichern. 6 674 00:35:13,410 --> 00:35:18,100 So versuche ich, etwas zugreifen außerhalb der argv zählt, 675 00:35:18,100 --> 00:35:21,340 und wir bekommen null. 676 00:35:21,340 --> 00:35:24,360 >> So eine bessere Version Dies ist eine Verbesserung, 677 00:35:24,360 --> 00:35:27,010 ausdrücklich die Überprüfung argc. 678 00:35:27,010 --> 00:35:33,580 Also, wenn argc gleich 2 ist, bedeutet, dass wir liefen so etwas wie dot Strich hello3 Rob. 679 00:35:33,580 --> 00:35:36,840 Und es wird print "Hallo Rob." 680 00:35:36,840 --> 00:35:39,850 Wenn argc nicht gleich 2 ist, dann ist es nur geht 681 00:35:39,850 --> 00:35:42,560 zu ignorieren, was Sie setzen an der Befehlszeilenargument 682 00:35:42,560 --> 00:35:43,960 als Befehlszeilenargumente. 683 00:35:43,960 --> 00:35:47,168 Oder wenn Sie nicht setzen überhaupt, ist es gerade dabei, das zu ignorieren und einfach nur sagen: 684 00:35:47,168 --> 00:35:47,960 "hallo Sie." 685 00:35:47,960 --> 00:35:51,490 >> So kompilieren dies. 686 00:35:51,490 --> 00:35:54,500 Machen hello4. 687 00:35:54,500 --> 00:35:56,790 Laufen hello4. 688 00:35:56,790 --> 00:36:00,010 Läuft es auf diese Weise, Was soll gedruckt werden? 689 00:36:00,010 --> 00:36:01,330 "Hallo Sie." 690 00:36:01,330 --> 00:36:02,810 Hallo Sie. 691 00:36:02,810 --> 00:36:05,870 Was ist hello4 Rob? 692 00:36:05,870 --> 00:36:06,950 "Hallo Rob." 693 00:36:06,950 --> 00:36:10,580 Und schließlich, Hallo Rob Maria nur "Hallo Du" wieder, 694 00:36:10,580 --> 00:36:13,677 weil Sie nicht wirklich geben etwas, das sie erwartet. 695 00:36:13,677 --> 00:36:15,510 Sie eingegeben mehr Namen , als er verarbeiten konnte, 696 00:36:15,510 --> 00:36:19,500 so dass es nur zu Verzug Die Hallo Ihr Verhalten. 697 00:36:19,500 --> 00:36:23,040 Also Fragen dazu? 698 00:36:23,040 --> 00:36:26,290 Oder Kommandozeilenargumente? 699 00:36:26,290 --> 00:36:28,690 >> OK, so dass sich ein Blick auf ein paar weitere Beispiele für die Verwendung 700 00:36:28,690 --> 00:36:34,230 Befehlszeilen arguments-- zuerst wir dash 1 Punkt c argv. 701 00:36:34,230 --> 00:36:38,510 So werden die Kommentare zu verschenken, was dieses Programm tun sollte. 702 00:36:38,510 --> 00:36:42,460 Aber beachten now-- diese for-Schleife, dies das genaue Muster übereinstimmt 703 00:36:42,460 --> 00:36:43,390 Ich war, bevor er sagte. 704 00:36:43,390 --> 00:36:46,240 Wir haben einfach geschehen zu sein Verwendung Argc statt n. 705 00:36:46,240 --> 00:36:48,880 Jetzt argc ist wirklich der n. 706 00:36:48,880 --> 00:36:51,260 Es ist die Länge des argv Array. 707 00:36:51,260 --> 00:36:59,600 So werden über die argv Iteration Array printf-ing einander argv Wert. 708 00:36:59,600 --> 00:37:04,730 >> Also, wenn ich diese. 709 00:37:04,730 --> 00:37:08,232 Machen argv 1. 710 00:37:08,232 --> 00:37:09,940 Es kompiliert. 711 00:37:09,940 --> 00:37:11,620 Dot Slash argv 1. 712 00:37:11,620 --> 00:37:15,530 Gerade läuft das, es Drucke dot Strich argv 1 713 00:37:15,530 --> 00:37:18,500 denn das war der einzige Befehlszeile- argument-- den Programmnamen. 714 00:37:18,500 --> 00:37:22,080 Es wird immer mindestens zu sein Argc kann nicht kleiner als eins ist, 715 00:37:22,080 --> 00:37:25,910 denn es wird immer mindestens ist der Name des Programms zu laufen. 716 00:37:25,910 --> 00:37:32,040 So argv 1 Rob wird argv 1 drucken und dann auf der neuen Linie "Rob." 717 00:37:32,040 --> 00:37:36,350 >> So in der ersten Iteration dieser Schleife ist i 0. 718 00:37:36,350 --> 00:37:39,090 Argv 0 ist der Programmname. 719 00:37:39,090 --> 00:37:40,010 Dot Slash argv 1. 720 00:37:40,010 --> 00:37:43,770 Und dann argv 1 ist mein erster Befehlszeilenargument, das Rob ist. 721 00:37:43,770 --> 00:37:45,920 An diesem Punkt sind wir gleich argc. 722 00:37:45,920 --> 00:37:48,210 Wir brechen aus der Schleife und wir sind fertig. 723 00:37:48,210 --> 00:37:53,940 So wird dies für eine beliebige arbeiten Anzahl der Befehlszeilenargumente. 724 00:37:53,940 --> 00:37:58,550 Beachten Sie, er druckt argv 0, argv 1, argv 2, argv 3, argv 4. 725 00:37:58,550 --> 00:38:00,150 Und es gibt keine argv 5. 726 00:38:00,150 --> 00:38:01,460 argc gleich 5 ist. 727 00:38:01,460 --> 00:38:06,960 So zumin argc-- bei i gleich 5, wir brechen aus der Schleife. 728 00:38:06,960 --> 00:38:07,950 OK. 729 00:38:07,950 --> 00:38:11,315 Also Fragen, bevor wir Blick auf ein komplexeres Beispiel? 730 00:38:11,315 --> 00:38:14,190 731 00:38:14,190 --> 00:38:16,860 >> So argv 2. 732 00:38:16,860 --> 00:38:17,830 Gut. 733 00:38:17,830 --> 00:38:20,610 Also wir sind immer noch das Drucken die Befehlszeilenargumente. 734 00:38:20,610 --> 00:38:23,170 Aber jetzt müssen wir feststellen, for-Schleife eine verschachtelt. 735 00:38:23,170 --> 00:38:24,670 Was also ist das denn? 736 00:38:24,670 --> 00:38:28,430 So die erste Schleife tut genau das, was zuvor. 737 00:38:28,430 --> 00:38:30,950 Wir sind immer noch mehr als Looping Jede Befehlszeilenargument, 738 00:38:30,950 --> 00:38:34,260 aber jetzt diese zweite loop-- wir haben bevor auch so etwas wie dieses gesehen. 739 00:38:34,260 --> 00:38:38,600 Als er über die Iteration Zamyla Ausdruck Z-A-M-Y-L-A. 740 00:38:38,600 --> 00:38:44,816 Also das zweite Schleife für int j gleich 0, n gleich strlen von argv Halterung i. 741 00:38:44,816 --> 00:38:49,170 >> Also lassen Sie uns zuerst für die denken, the-- wir durch zu gehen. 742 00:38:49,170 --> 00:38:53,560 Lassen Sie uns denken, was würde der Computer tun, wenn ich lief dieses Programm als nur dot 743 00:38:53,560 --> 00:38:56,030 Slash argv Strich 2. 744 00:38:56,030 --> 00:39:03,590 Also, wenn ich lief diesen Code, dann Argc wird gleich 1 sein. 745 00:39:03,590 --> 00:39:07,050 Und Streich argv-- gibt es nur gehen, um einen Index in argv sein, 746 00:39:07,050 --> 00:39:12,370 und das wird gleich zu Punkt zu sein Slash argv 2-- den Programmnamen. 747 00:39:12,370 --> 00:39:19,170 >> OK, so jetzt habe ich gleich 0, i weniger als 1, i plus plus für int j gleich 0 ist, 748 00:39:19,170 --> 00:39:23,880 n gleich strlen von argv Halterung 0, so dass in die erste Iteration dieser Schleife. argv 749 00:39:23,880 --> 00:39:27,250 Halterung 0 dot Strich argv 2. 750 00:39:27,250 --> 00:39:29,320 Also, was ist die Länge dieser Zeichenfolge? 751 00:39:29,320 --> 00:39:32,480 Nun, dot Slash A-R-G-V Strich 2. 752 00:39:32,480 --> 00:39:35,020 So strlen davon wird 8 sein. 753 00:39:35,020 --> 00:39:37,500 So j gleich 0 ist, n gleich 8. 754 00:39:37,500 --> 00:39:39,530 Solange j kleiner als 8 ist, j ++ ist. 755 00:39:39,530 --> 00:39:44,080 Und damit werden wir sein, Drucken eines einzelnen Zeichens, das 756 00:39:44,080 --> 00:39:47,350 ist argv Halterung i Halter j. 757 00:39:47,350 --> 00:39:49,826 >> So ist die einzige i gleich Null ist. 758 00:39:49,826 --> 00:39:51,700 Wir haben immer noch nur einen Befehlszeilenargument. 759 00:39:51,700 --> 00:39:53,890 In dieser ersten Iteration der for-Schleife, wir sind 760 00:39:53,890 --> 00:39:56,950 gehen, um Druck sein argv Halterung 0 Halterung 0. 761 00:39:56,950 --> 00:39:58,325 Und dann j wird sich erhöhen. 762 00:39:58,325 --> 00:40:01,650 Und wir sind, um den Druck gehen argv Halterung 0 Halterung 1. 763 00:40:01,650 --> 00:40:04,150 Und dann argv Halterung 0 Halterung 2. 764 00:40:04,150 --> 00:40:09,030 >> Das ist also unsere erste Begegnung von mehrdimensionalen Arrays. 765 00:40:09,030 --> 00:40:12,770 Früheren Bedenken Sie, dass ich sagte, dass argv ist technisch 766 00:40:12,770 --> 00:40:15,950 ein Array von Arrays von Zeichen. 767 00:40:15,950 --> 00:40:24,360 Also hier, wenn ich sagte so etwas wie string s gleich argv Halterung i, 768 00:40:24,360 --> 00:40:29,590 und dann sagte ich, s Halterung j, diese wäre erreichen die gleiche Sache. 769 00:40:29,590 --> 00:40:31,960 Jetzt können Sie Halterung j zuvor gesehen haben s. 770 00:40:31,960 --> 00:40:36,680 Dass der Zugang nur die j-te Charakter dieser Zeichenfolge. 771 00:40:36,680 --> 00:40:48,010 Also mit diesem, bekommen wir die j-ten Zeichen des i-ten argv. 772 00:40:48,010 --> 00:40:51,450 >> Also, was soll dies letztlich ausgegeben? 773 00:40:51,450 --> 00:40:53,210 Machen argv 2. 774 00:40:53,210 --> 00:40:54,730 Es kompiliert. 775 00:40:54,730 --> 00:40:56,340 Dot Slash argv 2. 776 00:40:56,340 --> 00:41:03,790 "Rob Maria Hannah" und geben Sie uns einen gewissen Spielraum. 777 00:41:03,790 --> 00:41:07,050 Wir sehen also, dass es sich um die Ausgabe dot in einer eigenen Zeile und Schrägstrich 778 00:41:07,050 --> 00:41:08,920 in einer eigenen Zeile und in einer eigenen Zeile. 779 00:41:08,920 --> 00:41:11,260 Es ist Ausdruck von jedem individuellen Charakter 780 00:41:11,260 --> 00:41:12,950 jedes Befehlszeilenargument. 781 00:41:12,950 --> 00:41:15,960 Und dann zwischen ihnen, weil dieser neuen Linie 782 00:41:15,960 --> 00:41:19,380 wir Druck hier unten, in zwischen ihnen, es wird eine neue Zeile zu drucken. 783 00:41:19,380 --> 00:41:24,540 >> So ist dies ähnlich Der Stand der argv dash 1, 784 00:41:24,540 --> 00:41:26,459 die jeweils gedruckt Befehlszeilenargument, 785 00:41:26,459 --> 00:41:28,500 aber jetzt sind wir Druck die Befehlszeilenargumente 786 00:41:28,500 --> 00:41:31,950 und dann durch jede Iteration Charakter der einzelnen Befehlszeilenargument 787 00:41:31,950 --> 00:41:35,400 um diese Ausgabe zu erhalten. 788 00:41:35,400 --> 00:41:36,870 OK? 789 00:41:36,870 --> 00:41:40,570 Also Fragen dazu? 790 00:41:40,570 --> 00:41:45,130 >> Eine Sache zu beachten ist, dass Befehlszeilen arguments-- 791 00:41:45,130 --> 00:41:49,990 so sind sie durch Leerzeichen getrennt, wie Sie würden natürlich erwarten, dass sie zu sein. 792 00:41:49,990 --> 00:41:53,050 So ein String kann Räume in ihm haben. 793 00:41:53,050 --> 00:41:57,380 Es ist nicht super wichtig, aber wenn ich wollte die dritte Befehlszeilenargument 794 00:41:57,380 --> 00:42:01,226 um einen Raum in mir haben, dann könnte so etwas wie das sagen. 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 Also das hat jetzt nur noch drei Befehlszeilen arguments-- gut 4. 798 00:42:12,190 --> 00:42:17,620 Dot Slash argv Strich 2, Rob, Maria, und Hannah Bloomberg. 799 00:42:17,620 --> 00:42:18,320 OK. 800 00:42:18,320 --> 00:42:19,310 Fragen zu diesem Thema? 801 00:42:19,310 --> 00:42:22,700 802 00:42:22,700 --> 00:42:24,894 >> Es gibt nichts besonderes über das Leerzeichen. 803 00:42:24,894 --> 00:42:27,810 Es passiert einfach zu sein, dass die Befehlszeilen behandelt das Leerzeichen 804 00:42:27,810 --> 00:42:29,226 so wie Sie trennen jedes Argument. 805 00:42:29,226 --> 00:42:32,048 806 00:42:32,048 --> 00:42:33,000 Gut. 807 00:42:33,000 --> 00:42:39,950 Also Problem Set two-- wirst du sein wirst 808 00:42:39,950 --> 00:42:43,240 Blick auf geheimen Schlüsseln. 809 00:42:43,240 --> 00:42:47,700 So ähnlich dem Beispiel wir sahen, von A Christmas Story, 810 00:42:47,700 --> 00:42:52,840 Sie gehen zu implementieren einige Algorithmen, die, da eine Nachricht, 811 00:42:52,840 --> 00:42:55,560 Sie in der Lage sein wirst um diese Nachricht zu verschlüsseln 812 00:42:55,560 --> 00:42:58,730 dass nur jemand mit diesem Geheimnis Schlüssel, mit dem Decoder-Ring, 813 00:42:58,730 --> 00:43:01,090 sollten in der Lage zu entschlüsseln. 814 00:43:01,090 --> 00:43:04,839 >> Das ist also die Standardausgabe. 815 00:43:04,839 --> 00:43:07,130 Du wirst zu implementieren zwei verschiedenen Versionen. 816 00:43:07,130 --> 00:43:09,620 Wenn Sie geschehen, einen Blick zu nehmen bei der Hacker edition-- jetzt, 817 00:43:09,620 --> 00:43:12,600 wir gehen zu geben, Sie eine Zeichenfolge wie diese, 818 00:43:12,600 --> 00:43:15,240 was einem verschlüsselten Passwort. 819 00:43:15,240 --> 00:43:19,990 Also Ihr Ziel ist es, herauszufinden, was das entschlüsselte Passwort ist. 820 00:43:19,990 --> 00:43:26,950 Nun ist dies tatsächlich, wie Passwörter werden in einer Menge von Computern gespeichert sind, 821 00:43:26,950 --> 00:43:31,290 und es ist nur speichert diese zufällige Zeichenfolge. 822 00:43:31,290 --> 00:43:34,440 Sie haben, um herauszufinden, wie man aus dieser zufälligen Zeichenkette 823 00:43:34,440 --> 00:43:36,140 zu dem, was das Original-Passwort war. 824 00:43:36,140 --> 00:43:39,060 825 00:43:39,060 --> 00:43:43,290 >> Und schließlich, nach dieser Problem einrichten, sollten Sie 826 00:43:43,290 --> 00:43:46,100 in der Lage sein zu verstehen, was das bedeutet. 827 00:43:46,100 --> 00:43:51,650 So erfahren Sie, wie zu entschlüsseln diese Art der zufällige Zeichenfolge. 828 00:43:51,650 --> 00:43:56,390 Und falls Sie sich erinnern, von Woche 0, könnten Sie diese URL gesehen haben. 829 00:43:56,390 --> 00:44:00,210 Und Sie sollten in der Lage zu sein, entschlüsseln diese schließlich. 830 00:44:00,210 --> 00:44:04,810 Sie werden vielleicht nicht glücklich sein, wenn Sie entschlüsseln Sie es und klicken Sie auf den Link. 831 00:44:04,810 --> 00:44:05,700 Gut. 832 00:44:05,700 --> 00:44:06,591 Das war es für heute. 833 00:44:06,591 --> 00:44:12,095 Sie sehen also nächste Woche! 834 00:44:12,095 --> 00:44:18,315 >> [Elektronische Musik zu spielen] 835 00:44:18,315 --> 00:47:15,619