1 00:00:00,000 --> 00:00:03,944 >> [Přehrávání hudby] 2 00:00:03,944 --> 00:00:10,732 3 00:00:10,732 --> 00:00:11,690 DAVID Malan: Dobře. 4 00:00:11,690 --> 00:00:14,674 To je CS50, a to je konec týdne 2. 5 00:00:14,674 --> 00:00:16,840 Je mi to tak líto, že jsem nemohl být tam s vámi všechno dnes, 6 00:00:16,840 --> 00:00:18,300 ale vy jste ve velmi dobrých rukou. 7 00:00:18,300 --> 00:00:21,710 Dovolte mi představit CS50 vlastní Rob Bowden. 8 00:00:21,710 --> 00:00:29,106 9 00:00:29,106 --> 00:00:31,730 ROB BOWDEN: A samozřejmě, pak musíme dělat si legraci z faktu 10 00:00:31,730 --> 00:00:36,820 že nám poslal vertikální video a ukázat to. 11 00:00:36,820 --> 00:00:38,320 >> [VIDEOPŘEHRÁVÁNÍ] 12 00:00:38,320 --> 00:00:39,820 >> [Přehrávání hudby] 13 00:00:39,820 --> 00:00:42,350 >> [Stopách] 14 00:00:42,350 --> 00:00:44,730 >> -Tento Video ne se dívat takhle. 15 00:00:44,730 --> 00:00:46,570 To by bylo možné předejít. 16 00:00:46,570 --> 00:00:49,070 Řekni ne na vertikální videa. 17 00:00:49,070 --> 00:00:53,310 >> -Vertikální Videa stane, když vás držet váš fotoaparát na špatnou cestu. 18 00:00:53,310 --> 00:00:55,880 Vaše video skončí vypadat jako hovno. 19 00:00:55,880 --> 00:00:57,650 >> - [GRUNT] 20 00:00:57,650 --> 00:01:02,240 >> -Existuje Více a více lidé závislí k tomu, že svislé videa každý den. 21 00:01:02,240 --> 00:01:06,240 Není to bezva, nebo nic, ale je to stále opravdu špatné. 22 00:01:06,240 --> 00:01:10,410 Existují dva různé druhy lidé, kteří jsou postiženi VVS. 23 00:01:10,410 --> 00:01:14,160 První skupina léčí Videa se střílet jako obrazy. 24 00:01:14,160 --> 00:01:15,850 Oni neznamenají žádnou škodu. 25 00:01:15,850 --> 00:01:19,180 Oni prostě nechápou, že zatímco vy můžete otočit obrázek, 26 00:01:19,180 --> 00:01:20,880 můžete opravdu otočit 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 >> -The Jiná skupina jsou lidé, kteří nedávají [pípnutí]. 30 00:01:27,540 --> 00:01:31,090 >> -Vertikální Video syndrom je nebezpečné. 31 00:01:31,090 --> 00:01:34,120 Filmy mají vždy ve vodorovné poloze. 32 00:01:34,120 --> 00:01:35,990 Na pokojích je televize jsou ve vodorovné poloze. 33 00:01:35,990 --> 00:01:38,380 Počítačové obrazovky jsou ve vodorovné poloze. 34 00:01:38,380 --> 00:01:41,580 Lidské oči jsou ve vodorovné poloze. 35 00:01:41,580 --> 00:01:45,170 Nejsme postavena tak, aby sledovat vertikální videa. 36 00:01:45,170 --> 00:01:47,600 >> -I Láska vertikální videa. 37 00:01:47,600 --> 00:01:50,410 >> -Nobody Se stará o vás. 38 00:01:50,410 --> 00:01:53,340 >> -Pokud Tento problém je neřešení, i vy 39 00:01:53,340 --> 00:01:57,650 se začne ukazovat čtyři videa najednou jen proto, aby uložit šířku pásma. 40 00:01:57,650 --> 00:02:02,400 >> -Letterboxed Vertikální videa by být velikost poštovní známky. 41 00:02:02,400 --> 00:02:04,920 >> -A To bude šířit všude. 42 00:02:04,920 --> 00:02:07,670 Filmové obrazovky mají vždy ve vodorovné poloze. 43 00:02:07,670 --> 00:02:11,200 Pokud vertikální videa stanou přijata, kina 44 00:02:11,200 --> 00:02:13,930 budou muset být vysoký a hubený. 45 00:02:13,930 --> 00:02:17,710 >> -A Všechny kin by muset dostat zbořen a přestavěn. 46 00:02:17,710 --> 00:02:22,090 A v době, kdy byly přestavěny, Mila Kunis by byla stará a ošklivá. 47 00:02:22,090 --> 00:02:24,342 >> -Birds Se zhroutí do nich a zemřít. 48 00:02:24,342 --> 00:02:26,530 >> -We'll Všichni si tuhý krky od vzhlédl. 49 00:02:26,530 --> 00:02:29,800 >> -A Nikdo sedět v přední řadě někdy znovu. 50 00:02:29,800 --> 00:02:37,170 >> -George Lucas bude re-release hvězda Wars again-- hubený vydání. 51 00:02:37,170 --> 00:02:41,860 >> -Byl Jsem nikdy schopen říct příběh, který jsem chtěl říct. 52 00:02:41,860 --> 00:02:46,030 To byl velký šanci pro mě experimentovat s novou technologií. 53 00:02:46,030 --> 00:02:48,150 >> -Jsi Trhnout. 54 00:02:48,150 --> 00:02:54,430 >> -Every Time mobilní zařízení se používá k nahrávat video, pokušení je tam. 55 00:02:54,430 --> 00:02:56,370 Stačí říct ne. 56 00:02:56,370 --> 00:03:00,116 Řekni ne na George Lucase. 57 00:03:00,116 --> 00:03:04,062 Řekni ne na staré Mila Kunis. 58 00:03:04,062 --> 00:03:06,600 Řekni ne na vertikální videa. 59 00:03:06,600 --> 00:03:12,511 >> -A Když vidíte to někdo dělá, řekněme, "nejste natáčení tu správnou figuríny!" 60 00:03:12,511 --> 00:03:15,433 >> [Přehrávání hudby] 61 00:03:15,433 --> 00:03:18,842 62 00:03:18,842 --> 00:03:19,830 >> [END Přehrávání] 63 00:03:19,830 --> 00:03:23,702 >> [APPLAUSE] 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 Forma kryptografie, 67 00:03:45,790 --> 00:03:49,500 který je v podstatě šifrování a dešifrování tajných zpráv. 68 00:03:49,500 --> 00:03:52,590 Takže tady máme velmi jednoduchou hračku. 69 00:03:52,590 --> 00:03:56,900 A tato myšlenka je vnější kroužek se otáčí kolem vnitřního kroužku. 70 00:03:56,900 --> 00:04:01,610 A můžete vidět, možná kdybych zoom in, that-- je těžké vidět. 71 00:04:01,610 --> 00:04:05,090 Avšak, stejně jako počet 1-- dobře, že se stěhoval. 72 00:04:05,090 --> 00:04:09,120 >> Číslo 1 mapuje na dopis X, číslo 2 mapy do písmene 73 00:04:09,120 --> 00:04:11,630 J. velmi složité ne pro přeskok vpřed. 74 00:04:11,630 --> 00:04:16,100 Dopis 2 mapuje J. Číslo 3 mapuje D. So 75 00:04:16,100 --> 00:04:20,140 s tímto kroužkem můžete dát někdo zprávu 1, 2, 3. 76 00:04:20,140 --> 00:04:22,624 Z nějakého důvodu chci jim říct XJD. 77 00:04:22,624 --> 00:04:24,540 Ale můžete dát některé zprávy z čísel, 78 00:04:24,540 --> 00:04:28,460 a tak dlouho, jak mají tento kroužek, se může dešifrovat, co se snažíte říct. 79 00:04:28,460 --> 00:04:32,510 >> Takže jste mohli vidět to Konkrétním příkladem kryptografie 80 00:04:32,510 --> 00:04:36,640 Než-li kolem Vánoc jste sledovali Vánoční příběh. 81 00:04:36,640 --> 00:04:38,520 Pokud jste nikdy neviděli to dříve, pak jen 82 00:04:38,520 --> 00:04:41,060 zapnout TBS na doslovně kdykoli na Štědrý den, 83 00:04:41,060 --> 00:04:44,510 protože oni jen ukázat ho zády k sobě se zády k sobě k sobě celý den. 84 00:04:44,510 --> 00:04:46,744 A příslušná video je to. 85 00:04:46,744 --> 00:04:47,410 [VIDEOPŘEHRÁVÁNÍ] 86 00:04:47,410 --> 00:04:50,020 -BE Je známo, že všechny a různé že Ralph Parker je tímto 87 00:04:50,020 --> 00:04:52,850 jmenován členem Little Orphan Annie Secret Circle 88 00:04:52,850 --> 00:04:56,490 a má právo na všechny vyznamenání a výhody dochází k němu. 89 00:04:56,490 --> 00:04:59,010 Podepsáno Malý sirotek Annie. 90 00:04:59,010 --> 00:05:03,120 Spolupodepsán Pierre André inkoustem! 91 00:05:03,120 --> 00:05:07,460 Vyznamenání a výhody Již ve věku devíti! 92 00:05:07,460 --> 00:05:12,530 >> [Křičí od rádia] 93 00:05:12,530 --> 00:05:13,030 -No tak. 94 00:05:13,030 --> 00:05:14,000 Pojďme se do toho. 95 00:05:14,000 --> 00:05:18,274 Nepotřebuji všechen ten jazz o pašeráků a pirátů. 96 00:05:18,274 --> 00:05:20,440 Poslouchej zítra večer s závěrečná dobrodružství 97 00:05:20,440 --> 00:05:22,540 Černé pirátské lodi. 98 00:05:22,540 --> 00:05:25,460 Teď je čas na Annie tajnou zprávu 99 00:05:25,460 --> 00:05:28,620 pro Vás členové Tajemství kruhu. 100 00:05:28,620 --> 00:05:32,370 Pamatujte si, děti pouze členové Annie Secret Circle 101 00:05:32,370 --> 00:05:34,880 umí dekódovat Annie tajnou zprávu. 102 00:05:34,880 --> 00:05:39,100 Pamatujte si, že Annie závisí na vás. 103 00:05:39,100 --> 00:05:41,660 Nastavte si kolíky do B2. 104 00:05:41,660 --> 00:05:43,960 Zde je zpráva. 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 Jsem ve svém prvním tajné schůzce. 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, Pierre je ve velkém hlasové večer. 115 00:05:54,570 --> 00:05:57,490 Mohl bych říct, že dnes večer se Zpráva byla opravdu důležité. 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 To je zpráva od Annie sama. 119 00:06:01,580 --> 00:06:02,880 Pamatujte si, že nikomu to neříkejte. 120 00:06:02,880 --> 00:06:07,840 121 00:06:07,840 --> 00:06:11,130 >> -Five Sekund později, já jsem v jediný místnost v domě, kde chlapec devíti 122 00:06:11,130 --> 00:06:15,830 mohli sedět v soukromí a dekódovat. 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 Šel jsem na další. 126 00:06:20,210 --> 00:06:23,300 E. První slovo je "být." 127 00:06:23,300 --> 00:06:25,880 S. Přicházelo to nyní snazší. 128 00:06:25,880 --> 00:06:28,400 U. 25. 129 00:06:28,400 --> 00:06:30,528 To je R. 130 00:06:30,528 --> 00:06:31,278 No tak, Ralphie! 131 00:06:31,278 --> 00:06:31,861 Musím jít! 132 00:06:31,861 --> 00:06:33,182 -Budu Hned dolů, Ma! 133 00:06:33,182 --> 00:06:36,038 Gee svist. 134 00:06:36,038 --> 00:06:42,840 T. O. "Ujistěte se, že" - ujistěte se, že to, co? 135 00:06:42,840 --> 00:06:44,770 Co bylo Malý sirotek Annie snaží říct? 136 00:06:44,770 --> 00:06:46,381 Ujistěte se, k čemu? 137 00:06:46,381 --> 00:06:47,825 >> -Randy Má jít! 138 00:06:47,825 --> 00:06:48,866 Byste prosím vyjít? 139 00:06:48,866 --> 00:06:49,783 >> -Dobře, Mami! 140 00:06:49,783 --> 00:06:51,786 Hned jsem venku! 141 00:06:51,786 --> 00:06:53,606 Byl jsem stále blíž. 142 00:06:53,606 --> 00:06:55,550 Napětí bylo hrozné. 143 00:06:55,550 --> 00:06:57,050 Co to bylo? 144 00:06:57,050 --> 00:06:59,905 Osud planety může viset na vlásku! 145 00:06:59,905 --> 00:07:01,736 >> -Ralphie, Randy musím jít! 146 00:07:01,736 --> 00:07:05,680 >> -Budu Mít pravdu ven, proboha! 147 00:07:05,680 --> 00:07:07,170 Skoro tam! 148 00:07:07,170 --> 00:07:08,150 Prsty letěl. 149 00:07:08,150 --> 00:07:09,980 Moje mysl byla ocelová past. 150 00:07:09,980 --> 00:07:11,496 Každý pórů vibroval. 151 00:07:11,496 --> 00:07:13,268 Bylo skoro jasno! 152 00:07:13,268 --> 00:07:13,767 Ano. 153 00:07:13,767 --> 00:07:14,609 Ano. 154 00:07:14,609 --> 00:07:15,108 Ano. 155 00:07:15,108 --> 00:07:16,449 Ano. 156 00:07:16,449 --> 00:07:20,240 Ujistěte se, že pít Ovaltine. 157 00:07:20,240 --> 00:07:20,740 Ovaltine? 158 00:07:20,740 --> 00:07:26,687 159 00:07:26,687 --> 00:07:27,520 Mizerná reklama? 160 00:07:27,520 --> 00:07:32,040 161 00:07:32,040 --> 00:07:34,920 Ten hajzl. 162 00:07:34,920 --> 00:07:35,890 >> [END Přehrávání] 163 00:07:35,890 --> 00:07:39,650 >> ROB BOWDEN: Tak to je, jak Ovaltine se vztahuje na kryptografii. 164 00:07:39,650 --> 00:07:42,290 V podstatě CS50 jen inzeroval Ovaltine, takže jsme mohli 165 00:07:42,290 --> 00:07:44,400 Mizerná být reklama pro Ovaltine. 166 00:07:44,400 --> 00:07:44,900 Dobře. 167 00:07:44,900 --> 00:07:47,120 Takže teď skutečná počítačová věda. 168 00:07:47,120 --> 00:07:50,670 Pamatujte si, v pondělí jsme přestali potápění hlouběji do řetězců. 169 00:07:50,670 --> 00:07:52,820 Takže jsme se zabývali řetězec "Zamyla." 170 00:07:52,820 --> 00:07:55,130 A my jsme se rozpoznávat skutečnost, že můžeme léčit 171 00:07:55,130 --> 00:07:57,510 "Zamyla" jako řada znaků. 172 00:07:57,510 --> 00:07:59,740 A pamatujte, že jsme se dozvěděli, držák notace. 173 00:07:59,740 --> 00:08:01,995 Takže pokud to byly uloženy v řetězci "s", pak 174 00:08:01,995 --> 00:08:05,860 pokud bychom řekli s konzola 0, by to uveďte dopis kapitálu Z. 175 00:08:05,860 --> 00:08:09,790 A pokud bychom řekli s držák 1, že naznačují první malými písmeny A, 176 00:08:09,790 --> 00:08:14,220 a tak dále až do s držákem 5, což by naznačovalo LAST. 177 00:08:14,220 --> 00:08:17,090 >> Nyní si uvědomit, že Délka tohoto řetězce je 6, 178 00:08:17,090 --> 00:08:23,220 ale indexy do řetězce jsou 0 až 5, Z přes to trvat. 179 00:08:23,220 --> 00:08:28,650 Tak to teď vejde do větší obrázek paměti počítače, paměti RAM. 180 00:08:28,650 --> 00:08:32,020 Takže někde program, který vedete svůj počítač 181 00:08:32,020 --> 00:08:34,780 je třeba mít na paměti, Zamyla někde v paměti. 182 00:08:34,780 --> 00:08:36,029 Takže můžu mít dobrovolníka? 183 00:08:36,029 --> 00:08:38,840 184 00:08:38,840 --> 00:08:40,181 Ano prosím. 185 00:08:40,181 --> 00:08:50,120 186 00:08:50,120 --> 00:08:51,500 A jak se jmenuješ? 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 Těší mě, Deane. 190 00:08:54,910 --> 00:08:58,240 Tak pojď sem, a budeme muset kreslení 191 00:08:58,240 --> 00:09:00,740 na našem pěkném šikovný uspořádání paměti. 192 00:09:00,740 --> 00:09:05,950 Teď bych si myslel, paměti jako jeden dlouhý pruh bajtů, 193 00:09:05,950 --> 00:09:11,090 ale jen pro účely zobrazení my budeme Jen si zleva doprava, shora dolů. 194 00:09:11,090 --> 00:09:11,590 DOBŘE? 195 00:09:11,590 --> 00:09:22,030 >> Takže jsem se ukázat program-- Getstrings.c. 196 00:09:22,030 --> 00:09:25,760 A tak všechno je tento program dělá požaduje čtyři řetězce 197 00:09:25,760 --> 00:09:28,830 od uživatele s GetString a pak tisk 198 00:09:28,830 --> 00:09:30,950 co to jako první řetězec vstoupil byl. 199 00:09:30,950 --> 00:09:32,840 Jsme ignorovat dva přes čtyři. 200 00:09:32,840 --> 00:09:33,610 DOBŘE. 201 00:09:33,610 --> 00:09:38,210 Tak tady, když now-- I první žádost S1. 202 00:09:38,210 --> 00:09:39,740 Tak vy jste počítač. 203 00:09:39,740 --> 00:09:41,680 A jste se provádí getString. 204 00:09:41,680 --> 00:09:46,710 Takže budete požadovat řetězec z mě, a já říkám, v pořádku, Deane. 205 00:09:46,710 --> 00:09:47,900 Dejte řetězec "Dean." 206 00:09:47,900 --> 00:09:50,300 >> Takže někde v paměti budete mít na paměti, "Dean." 207 00:09:50,300 --> 00:09:52,160 Tak napište ho do paměti někam. 208 00:09:52,160 --> 00:09:58,270 209 00:09:58,270 --> 00:09:59,210 Perfektní. 210 00:09:59,210 --> 00:09:59,880 DOBŘE. 211 00:09:59,880 --> 00:10:01,740 Takže teď jsme se S2. 212 00:10:01,740 --> 00:10:03,869 A s2 bude žádost o getString. 213 00:10:03,869 --> 00:10:05,160 Takže budu zadat řetězec. 214 00:10:05,160 --> 00:10:08,720 Chystám se vstoupit do "Hannah." 215 00:10:08,720 --> 00:10:10,586 Tak zadejte "Hannah" někam do paměti. 216 00:10:10,586 --> 00:10:18,860 217 00:10:18,860 --> 00:10:19,360 To jo. 218 00:10:19,360 --> 00:10:23,000 A-H. 219 00:10:23,000 --> 00:10:25,550 >> OK, tak teď s3. 220 00:10:25,550 --> 00:10:28,380 A to bude další požádat getString. 221 00:10:28,380 --> 00:10:37,020 A tak nyní zadat "Marii." 222 00:10:37,020 --> 00:10:37,520 Dobře. 223 00:10:37,520 --> 00:10:40,980 A pak je tu ještě jedna poslední Žádost o getString, S4. 224 00:10:40,980 --> 00:10:42,580 Takže, já nevím. 225 00:10:42,580 --> 00:10:45,640 Co takhle jdeme s antidisestablishmentarianism. 226 00:10:45,640 --> 00:10:49,460 Vstupte proto, že do paměti. 227 00:10:49,460 --> 00:10:50,400 To jo. 228 00:10:50,400 --> 00:10:53,970 Takže prostě "Rob." 229 00:10:53,970 --> 00:10:54,560 >> DOBŘE. 230 00:10:54,560 --> 00:10:58,410 Takže teď explain-- proč necháte tyto prostory? 231 00:10:58,410 --> 00:11:01,340 Proč máte toto prázdné prostor tady, tady a tady? 232 00:11:01,340 --> 00:11:05,170 233 00:11:05,170 --> 00:11:05,670 Ano. 234 00:11:05,670 --> 00:11:09,450 Takže si všimnout, když jdu tisknout s1-- takže pokud 235 00:11:09,450 --> 00:11:11,890 Měl běh "Hannah" hned se vedle "Dean" 236 00:11:11,890 --> 00:11:14,360 jak víme, kdy řetězec "děkan" končí? 237 00:11:14,360 --> 00:11:19,470 Takže tisk řetězec s1, může mít Jen tištěný "DeanHannahMariaRob" 238 00:11:19,470 --> 00:11:22,720 pokud to nemá žádné ponětí kdy "Dean" skutečně končí. 239 00:11:22,720 --> 00:11:23,240 >> Dobře. 240 00:11:23,240 --> 00:11:27,650 Takže v paměti tak, jak jsme vlastně představují Tento konec řetězce 241 00:11:27,650 --> 00:11:29,940 je s zpětné lomítko nula. 242 00:11:29,940 --> 00:11:32,620 Takže tento prostor je přesně to, co jsme chtěli. 243 00:11:32,620 --> 00:11:34,040 To by mělo být zpětné lomítko nula. 244 00:11:34,040 --> 00:11:37,690 To bude zpětné lomítko nula, a to bude zpětné lomítko nula. 245 00:11:37,690 --> 00:11:41,585 A můžete mít vynikající cenu za to, že perfektní dobrovolník. 246 00:11:41,585 --> 00:11:44,910 247 00:11:44,910 --> 00:11:45,860 Pak se stres míček! 248 00:11:45,860 --> 00:11:49,040 249 00:11:49,040 --> 00:11:49,700 >> DOBŘE. 250 00:11:49,700 --> 00:11:54,420 Takže tento znak zpětné lomítko nula Jak jsme se označují konec řetězce. 251 00:11:54,420 --> 00:11:57,120 Je to, jak při jakémkoli programu chce vytisknout řetězec, 252 00:11:57,120 --> 00:11:59,760 Pamatuji si, že je to how-- jsme se dozvěděli, Funkce strlen minulý týden? 253 00:11:59,760 --> 00:12:00,940 Délka řetězce? 254 00:12:00,940 --> 00:12:03,770 Je to, jak délka řetězce je schopno určit, jak dlouho je řetězec. 255 00:12:03,770 --> 00:12:05,810 Je to prostě pořád iterace přes znaky 256 00:12:05,810 --> 00:12:08,217 až se najde zpětná lomítka nulovou charakter. 257 00:12:08,217 --> 00:12:11,050 Takže důležité si uvědomit o zpětné lomítko znak nula 258 00:12:11,050 --> 00:12:14,950 Je to zastoupena všech nul v bitech. 259 00:12:14,950 --> 00:12:18,980 Tak si všimnout, že toto je odlišná od nulového charakteru. 260 00:12:18,980 --> 00:12:23,010 Takže znak nula, pokud si vzpomenete V příkladu, který dal na konci 261 00:12:23,010 --> 00:12:27,360 přednášky, kde na mapě charaktery to-- jako jsou mapy kapitálu do 65 let. 262 00:12:27,360 --> 00:12:29,130 Malá písmena a mapy 97. 263 00:12:29,130 --> 00:12:30,890 Malá písmena b by byla 98. 264 00:12:30,890 --> 00:12:35,220 Takže číslo 0 mapy to-- vůbec se mi nelíbí znát z vrcholu mé hlavy. 265 00:12:35,220 --> 00:12:36,400 44 nebo 45. 266 00:12:36,400 --> 00:12:37,890 Někde v tomto regionu. 267 00:12:37,890 --> 00:12:40,850 >> Takže znak 0 je skutečný počet. 268 00:12:40,850 --> 00:12:44,350 Ale zpětné lomítko nula mapy do všech nulových bitů. 269 00:12:44,350 --> 00:12:46,380 Takže tam je rozdíl mezi zpětné lomítko nula, 270 00:12:46,380 --> 00:12:48,450 který zavoláme null zakončení. 271 00:12:48,450 --> 00:12:53,210 Tam je rozdíl mezi zpětné lomítko nula a znak nula. 272 00:12:53,210 --> 00:12:54,350 >> Dobře. 273 00:12:54,350 --> 00:12:57,520 Tak mluví o něco více o řetězcích. 274 00:12:57,520 --> 00:13:01,470 Takže vidíme, zde je to, jak to by být uloženy v paměti. 275 00:13:01,470 --> 00:13:07,940 Takže tato myšlenka řetězců jako sekvence z characters-- takže oficiální počítač 276 00:13:07,940 --> 00:13:10,750 sciency termín pro posloupnost je pole. 277 00:13:10,750 --> 00:13:13,790 Takže bychom nazvali řetězec řada znaků. 278 00:13:13,790 --> 00:13:17,770 A tam jsou vlastně další data typy, které můžeme dělat pole ven. 279 00:13:17,770 --> 00:13:19,975 >> Takže motivovat to, podívejte se na příklad. 280 00:13:19,975 --> 00:13:22,810 281 00:13:22,810 --> 00:13:29,812 Budeme říkat ages0.c budu zkopírujte a vložte naše šablony. 282 00:13:29,812 --> 00:13:32,470 283 00:13:32,470 --> 00:13:33,410 DOBŘE. 284 00:13:33,410 --> 00:13:39,378 Takže v tomto programu to, co jsme chcete udělat, je chytit věku 285 00:13:39,378 --> 00:13:45,160 ze v průběhu tří studentů. 286 00:13:45,160 --> 00:13:49,240 Takže víme, že int age-- a teď jsem chtěl říct 0. 287 00:13:49,240 --> 00:13:53,140 Takže budete chtít říct age1, ale pro účely uvidíme velmi brzy, 288 00:13:53,140 --> 00:13:57,187 Řeknu int age0 rovná GetInt. 289 00:13:57,187 --> 00:13:59,270 Takže stejné volání GetInt že jsme byli pomocí I 290 00:13:59,270 --> 00:14:01,561 nestane se dotazování říkat, "dej mi věk." 291 00:14:01,561 --> 00:14:03,120 Ale jen o to požádá. 292 00:14:03,120 --> 00:14:06,510 >> A age1 rovná GetInt. 293 00:14:06,510 --> 00:14:09,600 A int age2 rovná GetInt. 294 00:14:09,600 --> 00:14:14,070 Takže, opět tři studenti, ale nakonec variabilní indexy 295 00:14:14,070 --> 00:14:16,890 jsou age0 přes age2. 296 00:14:16,890 --> 00:14:17,550 DOBŘE. 297 00:14:17,550 --> 00:14:23,960 Takže tento program bude dělat, co chceme s age0, age1 a age2, 298 00:14:23,960 --> 00:14:27,670 ale tento program nakonec pracuje pro tři studenty. 299 00:14:27,670 --> 00:14:28,380 >> DOBŘE. 300 00:14:28,380 --> 00:14:32,110 Takže co teď, když chci čtyři studenti? 301 00:14:32,110 --> 00:14:36,000 No, budu muset jít zpátky do mého kódu, změňte komentář, 302 00:14:36,000 --> 00:14:39,840 a teď máme int age3 rovná GetInt. 303 00:14:39,840 --> 00:14:40,610 DOBŘE. 304 00:14:40,610 --> 00:14:43,660 Takže, kdo vidí tu problém? 305 00:14:43,660 --> 00:14:47,310 Co je za problém s tímto druhem nastavení? 306 00:14:47,310 --> 00:14:47,810 To jo. 307 00:14:47,810 --> 00:14:53,110 308 00:14:53,110 --> 00:14:53,610 To jo. 309 00:14:53,610 --> 00:14:56,360 Takže jsme vytváříte proměnná pro každého studenta. 310 00:14:56,360 --> 00:15:00,140 Nyní, že funguje, ale nakonec co kdybych teď 311 00:15:00,140 --> 00:15:06,500 říkat, "já chci chytit věku osm studenti nebo 16 studentů 312 00:15:06,500 --> 00:15:11,340 nebo se nicméně mnoho studentů stovky studentů v CS50 313 00:15:11,340 --> 00:15:16,750 nebo tisíce studentů na akademické půdě nebo miliardy lidí na světě? 314 00:15:16,750 --> 00:15:19,130 Takže nakonec to není udržitelný. 315 00:15:19,130 --> 00:15:21,990 Kdykoli vidíte sami kopírování a vkládání kódu takhle, 316 00:15:21,990 --> 00:15:25,050 měli byste cítit celkově že existuje lepší způsob. 317 00:15:25,050 --> 00:15:31,290 >> Takže tohle je místo, kde jsme zavedli deklarace pole. 318 00:15:31,290 --> 00:15:34,564 Takže když deklarujete pole, To je to, co obecný formát 319 00:15:34,564 --> 00:15:35,480 bude vypadat. 320 00:15:35,480 --> 00:15:36,664 Chystáme se říct typu. 321 00:15:36,664 --> 00:15:38,830 a pak budeme uveďte jméno této řady, 322 00:15:38,830 --> 00:15:41,150 stejně jako my definovat libovolné dané proměnné. 323 00:15:41,150 --> 00:15:43,980 A pak konečně jsme pomocí opět držák zápis 324 00:15:43,980 --> 00:15:47,480 ale v jiném kontextu z jak jsme používali dřív. 325 00:15:47,480 --> 00:15:51,860 >> Tak tady to vypadá jako normální deklarace proměnných, které jsme viděli. 326 00:15:51,860 --> 00:15:54,890 Takže jsme neviděli int x středník. 327 00:15:54,890 --> 00:16:00,020 No teď bychom mohli něco vidět jako int x závorkách 5. 328 00:16:00,020 --> 00:16:04,020 A tuto myšlenku uvedení do GetInt program, který jsme have-- 329 00:16:04,020 --> 00:16:08,850 takže můžeme realizovat to stejným způsobem. 330 00:16:08,850 --> 00:16:13,630 >> Řekněme, že v CS máme tendenci používat n jako počet něco. 331 00:16:13,630 --> 00:16:16,150 Tak tady budeme uložit čtyři studenty. 332 00:16:16,150 --> 00:16:25,960 A nyní můžeme říci, int věk držák n- ne tak docela si to yet-- 333 00:16:25,960 --> 00:16:32,210 deklarovat řadu čtyř studentů. 334 00:16:32,210 --> 00:16:38,050 Tak, jak to bude vypadat v Paměť bude podobná této. 335 00:16:38,050 --> 00:16:39,570 Zrušte to. 336 00:16:39,570 --> 00:16:46,606 A budeme muset někam v memory-- Dám to tam. 337 00:16:46,606 --> 00:16:52,690 338 00:16:52,690 --> 00:16:53,808 >> Takže někde v paměti. 339 00:16:53,808 --> 00:16:58,760 340 00:16:58,760 --> 00:16:59,727 Jedna dva tři čtyři. 341 00:16:59,727 --> 00:17:03,383 342 00:17:03,383 --> 00:17:09,849 Máme čtyři celá čísla v řadě pro toto pole čtyř celých čísel. 343 00:17:09,849 --> 00:17:13,820 Takže, v současné době, co je velikost jednoho z těchto polí? 344 00:17:13,820 --> 00:17:17,190 345 00:17:17,190 --> 00:17:17,690 To jo. 346 00:17:17,690 --> 00:17:18,390 To je čtyři bajty. 347 00:17:18,390 --> 00:17:19,690 Je to 32 bitů. 348 00:17:19,690 --> 00:17:22,310 Takže teď tohle je něco jiného z pole, které jsme 349 00:17:22,310 --> 00:17:24,020 viděli dříve, pole znaků. 350 00:17:24,020 --> 00:17:28,540 V řetězci každý box byl pouze jeden byte, proto, že znak je pouze jeden byte. 351 00:17:28,540 --> 00:17:32,170 Ale s pole celých čísel, z nichž každý box musí být čtyři byty za účelem 352 00:17:32,170 --> 00:17:34,060 aby se vešly celé číslo. 353 00:17:34,060 --> 00:17:37,197 Takže tohle je to, co řada Čtyři ints bude vypadat. 354 00:17:37,197 --> 00:17:40,510 355 00:17:40,510 --> 00:17:43,870 >> A pak zpátky do kódu. 356 00:17:43,870 --> 00:17:47,460 Teď chceme skutečně obchod celá čísla do tohoto pole. 357 00:17:47,460 --> 00:17:53,470 Takže teď je to velmi, velmi, velmi společný vzor, ​​který bude v určitém okamžiku 358 00:17:53,470 --> 00:17:54,680 stát se svalová paměť. 359 00:17:54,680 --> 00:17:56,710 Takže int i = 0. 360 00:17:56,710 --> 00:17:57,940 i menší než n. 361 00:17:57,940 --> 00:18:01,850 i a a. 362 00:18:01,850 --> 00:18:05,790 Věkové skupiny i rovná GetInt. 363 00:18:05,790 --> 00:18:15,100 >> Takže to pro smyčce, tento formát, měli byste si velmi zvyklí. 364 00:18:15,100 --> 00:18:20,010 Tak to je obecně, jak budeme iteraci přes téměř všechny pole. 365 00:18:20,010 --> 00:18:23,690 Nyní si všimnout tento druh vysvětluje, proč od začátku 366 00:18:23,690 --> 00:18:29,870 jsme neměli pro smyčky jít na int i se rovná 1, i menší než nebo roven 10. 367 00:18:29,870 --> 00:18:34,200 Důvodem je, že se vychází z nula dělá tuto práci dobře s poli. 368 00:18:34,200 --> 00:18:36,270 Takže pole jsou nulové indexovány. 369 00:18:36,270 --> 00:18:40,360 Je-li tato pole je o délce 4, indexy jsou 0 až 3. 370 00:18:40,360 --> 00:18:42,880 >> Takže přes první iterace tohoto cyklu for 371 00:18:42,880 --> 00:18:49,930 budeme se nastavení věk držák 0 rovná volání GetInt. 372 00:18:49,930 --> 00:18:52,440 Tak co jsem se stalo pro vstup na klávesnici. 373 00:18:52,440 --> 00:18:56,970 Ve druhém průchodu, my jsme nastavení age1 rovná GetInt. 374 00:18:56,970 --> 00:18:58,230 Za třetí průchod, age2. 375 00:18:58,230 --> 00:18:59,880 Finální přihrávka age3. 376 00:18:59,880 --> 00:19:05,750 Takže pokud se v prvním průchodu smyčky I zadejte číslo 4 na klávesnici, 377 00:19:05,750 --> 00:19:07,740 pak budeme vložte 4 zde. 378 00:19:07,740 --> 00:19:11,470 Pokud se na druhém průchodu I vstoupí 50, budeme dát 50 sem. 379 00:19:11,470 --> 00:19:15,180 Na třetím průchodu bych mohl zadejte negativní 1 negativní 1, 380 00:19:15,180 --> 00:19:21,810 a nakonec, když jsem se vstoupit 0-- a Nyní si uvědomit, že to byl index tři. 381 00:19:21,810 --> 00:19:25,350 >> Poté, co jsme smyčky záda, i je bude zvýšen na 4. 382 00:19:25,350 --> 00:19:27,770 i již není menší než n, což je 4. 383 00:19:27,770 --> 00:19:29,840 A my jsme se vymanily ze smyčky. 384 00:19:29,840 --> 00:19:32,578 Takže co by bylo špatného? 385 00:19:32,578 --> 00:19:38,140 386 00:19:38,140 --> 00:19:38,729 [Neslyšitelných]? 387 00:19:38,729 --> 00:19:39,604 Diváků: [Neslyšitelné] 388 00:19:39,604 --> 00:19:45,880 389 00:19:45,880 --> 00:19:46,400 >> Ano. 390 00:19:46,400 --> 00:19:51,550 Takže pole má pouze čtyři místa, což znamená, že jako indexy 0 až 3. 391 00:19:51,550 --> 00:19:55,630 Takže pokud tomu tak bylo, tak bych vzít na hodnotě 4 v určitém okamžiku. 392 00:19:55,630 --> 00:20:00,910 věková skupina 4 bude nastavení ať se stane cokoli, aby sem 393 00:20:00,910 --> 00:20:02,920 na to, co musím říct, zadejte 6. 394 00:20:02,920 --> 00:20:05,010 To bude možné toto nastavení změnit na 6. 395 00:20:05,010 --> 00:20:06,560 >> Ale my nevíme, co je to tady. 396 00:20:06,560 --> 00:20:08,836 To není paměť že jsme měli přístup k. 397 00:20:08,836 --> 00:20:10,710 Takže pokud si pamatujete z předchozí přednáška, 398 00:20:10,710 --> 00:20:14,350 byl vytisknout hodnoty Zamyla a v určitém okamžiku narazil tuto segmentaci 399 00:20:14,350 --> 00:20:17,990 porucha. Takže budete pravděpodobně vidět Mnoho segmentace chyby, jak si 400 00:20:17,990 --> 00:20:20,530 implementovat některé z problémových sad. 401 00:20:20,530 --> 00:20:24,950 Ale to je jeden ze způsobů, kterými můžete setkat s segmentace 402 00:20:24,950 --> 00:20:28,540 chyba, když začnete přístupu paměť způsobem, který byste neměli být. 403 00:20:28,540 --> 00:20:34,117 Takže jsme neměli přístup k toto umístění, a to je chyba. 404 00:20:34,117 --> 00:20:37,760 405 00:20:37,760 --> 00:20:40,190 >> Tak to je lepší. 406 00:20:40,190 --> 00:20:45,820 Teď tam je ještě malý Problém s tímto kódem. 407 00:20:45,820 --> 00:20:50,720 A to je v podstatě, že jsme zamrzla na čtyři studenty. 408 00:20:50,720 --> 00:20:52,940 Teď, když chci použít osm studentů, OK. 409 00:20:52,940 --> 00:20:54,350 Není to tak velký obchod. 410 00:20:54,350 --> 00:20:58,120 Můžu jít dovnitř, změňte komentovat, a změňte n. 411 00:20:58,120 --> 00:20:59,760 Teď to bude fungovat s osmi studenty. 412 00:20:59,760 --> 00:21:02,190 Pokud bych to kompilace a spustit to, bude to show me-- 413 00:21:02,190 --> 00:21:07,870 to bude požadovat celá čísla pro osm studenti a to bude prostě fungovat. 414 00:21:07,870 --> 00:21:11,850 Ale je to méně než ideální muset překompilovat programu, pokaždé 415 00:21:11,850 --> 00:21:15,960 Chci změnit počet studentů že chci vstoupit věky pro. 416 00:21:15,960 --> 00:21:22,990 >> Takže konečný zlepšení na to, jak uvidíme here-- jsme 417 00:21:22,990 --> 00:21:26,177 chystá požádat o počtu lidí. 418 00:21:26,177 --> 00:21:28,010 Tady máme řadu lidí v pokojích 419 00:21:28,010 --> 00:21:29,880 nebo jakékoliv věkové kategorie lidí v místnosti. 420 00:21:29,880 --> 00:21:33,300 Ale budeme požadovat číslo lidí v místnosti od uživatele. 421 00:21:33,300 --> 00:21:36,171 Tak to je přesně stejný do-while smyčky, že jsme neviděli. 422 00:21:36,171 --> 00:21:37,920 Je to ten samý do-while, který jste 423 00:21:37,920 --> 00:21:40,050 může být provádění na problém sadě. 424 00:21:40,050 --> 00:21:43,102 Tak dlouho, jak jsou Zadání n menší než 1, 425 00:21:43,102 --> 00:21:45,310 takže to musí být na Nejméně jedna osoba v místnosti. 426 00:21:45,310 --> 00:21:47,407 Tak dlouho, jak jsou Zadání n menší než 1, 427 00:21:47,407 --> 00:21:48,990 pak budeme mít znovu ptát. 428 00:21:48,990 --> 00:21:50,906 Prosím, zadejte číslo lidí v místnosti. 429 00:21:50,906 --> 00:21:53,550 Nyní, jakmile budeme mít číslo lidí v room-- 430 00:21:53,550 --> 00:21:58,020 takže jsem mohl dostat, že existuje jsou 200 lidí v této místnosti. 431 00:21:58,020 --> 00:22:05,480 Pak tady budeme přijít a deklarovat pole o velikosti 200. 432 00:22:05,480 --> 00:22:10,220 Jsme deklarování pole, které je dost velká držet 200 věkové kategorie. 433 00:22:10,220 --> 00:22:15,370 Coming dolů, je to pro smyčce že se dostanete velmi zvyklí. 434 00:22:15,370 --> 00:22:19,490 Takže iterace nad tímto polem, přiřazení ke každému umístění 435 00:22:19,490 --> 00:22:23,020 se tím, že pole celé číslo, a pak nakonec tady jsme 436 00:22:23,020 --> 00:22:28,340 jen na to příklad iterace během tohoto pole, ne přiřadit hodnoty, 437 00:22:28,340 --> 00:22:30,150 ale aby přístup k hodnotám. 438 00:22:30,150 --> 00:22:33,810 >> Takže tady vidíme, že říkají, o rok později, 439 00:22:33,810 --> 00:22:40,470 osoba% budu% i let, kde i je i plus 1 první%. 440 00:22:40,470 --> 00:22:43,010 Tak jsem je tento index variabilní. 441 00:22:43,010 --> 00:22:49,420 A druhá% i bude, že je hodnota uložená v věků poli plus 1. 442 00:22:49,420 --> 00:22:54,217 Tak tohle plus 1 je jen proto, že jsme saying-- tento plus 1, věku I s 1. 443 00:22:54,217 --> 00:22:57,050 Toto plus 1 je jen proto, že jsme řka: Ode dneška za rok na osobu 444 00:22:57,050 --> 00:22:58,280 bude tento starý. 445 00:22:58,280 --> 00:23:01,080 >> Tak proč je to i plus 1? 446 00:23:01,080 --> 00:23:04,064 Proč máme plus 1 tam? 447 00:23:04,064 --> 00:23:04,564 To jo. 448 00:23:04,564 --> 00:23:07,410 449 00:23:07,410 --> 00:23:07,930 Ano. 450 00:23:07,930 --> 00:23:10,510 Takže pamatujte pole jsou indexovány nula. 451 00:23:10,510 --> 00:23:14,840 Takže pokud budeme tisku toto ven pro někdo jen číst výstup, 452 00:23:14,840 --> 00:23:19,380 pak nejspíš chtějí vidět něco jako je člověk jeden, osoba číslo jedna, 453 00:23:19,380 --> 00:23:21,160 bude 20 let. 454 00:23:21,160 --> 00:23:23,570 Osoba číslo dvě bude 15 let. 455 00:23:23,570 --> 00:23:27,420 Raději ne vidět osobu číslo nula je 15 let. 456 00:23:27,420 --> 00:23:36,460 >> Takže kompilace toto a vidí to, co právě to vypadá jako-- vytvořit nějaký prostor. 457 00:23:36,460 --> 00:23:43,560 Proveďte věku od kompiluje. 458 00:23:43,560 --> 00:23:45,080 Běh věkové kategorie. 459 00:23:45,080 --> 00:23:46,580 Vidíme, počet lidí v místnosti. 460 00:23:46,580 --> 00:23:48,850 Tak jsem si řekl, že jsou tři lidé v místnosti. 461 00:23:48,850 --> 00:23:54,000 Age of osoba číslo jedna, řekněme, 15, 20, 25. 462 00:23:54,000 --> 00:23:59,680 A teď budu říkat za rok od Nyní budou 16, 21, 26. 463 00:23:59,680 --> 00:24:02,900 Podívejme se, že to funguje s n, který není rovno 3. 464 00:24:02,900 --> 00:24:07,940 Takže když řeknu, že počet lidí, kteří je 5, jedním, dva, tři, dva, jedna, o rok později 465 00:24:07,940 --> 00:24:11,170 oni budou dvě, tři, čtyři, tři, dva let. 466 00:24:11,170 --> 00:24:16,500 Takže jsem mohl, stejně jako snadno n být 10,000. 467 00:24:16,500 --> 00:24:21,270 Teď budu sedět tady docela chvíli vstupu do stáří, ale to funguje. 468 00:24:21,270 --> 00:24:26,000 >> Takže teď jsme někde v paměti mají celou řadu velikosti 10,000, 469 00:24:26,000 --> 00:24:28,830 tak nakonec 40.000 bajtů, protože tam jsou 470 00:24:28,830 --> 00:24:31,222 čtyři byty pro každou z těchto celých čísel. 471 00:24:31,222 --> 00:24:33,180 Takže je tu řada velikost 10,000 kde můžeme 472 00:24:33,180 --> 00:24:36,201 uložit věk těch 10.000 lidí. 473 00:24:36,201 --> 00:24:36,700 Dobře. 474 00:24:36,700 --> 00:24:40,070 Otázky týkající se něco z toho? 475 00:24:40,070 --> 00:24:41,892 To jo. 476 00:24:41,892 --> 00:24:43,350 Co když jste dal záporné číslo? 477 00:24:43,350 --> 00:24:44,870 Podívejme se, co se stane. 478 00:24:44,870 --> 00:24:49,320 Takže v tomto konkrétním číslem case-- lidí v místnosti, negativního. 479 00:24:49,320 --> 00:24:52,580 Odmítl, že, protože tady žijeme 480 00:24:52,580 --> 00:24:57,180 k manipulaci s tím, že pokud n je menší než jedna, že budeme znovu ptát. 481 00:24:57,180 --> 00:25:01,780 Pokusíte-li se vyhlásit pole negativní velikosti, 482 00:25:01,780 --> 00:25:03,950 to obecně nefunguje. 483 00:25:03,950 --> 00:25:05,570 >> Takže pojďme zkusit. 484 00:25:05,570 --> 00:25:08,000 Pojďme ignorovat cokoli hodnota se vstup pro n 485 00:25:08,000 --> 00:25:10,571 a jen říct, int věku od negativní jeden. 486 00:25:10,571 --> 00:25:12,410 Uvidíme, jestli to vůbec sestavuje. 487 00:25:12,410 --> 00:25:14,100 Nejsem si jistý. 488 00:25:14,100 --> 00:25:14,920 Ne. 489 00:25:14,920 --> 00:25:18,280 Takže věku je deklarován jako pole s negativním velikosti. 490 00:25:18,280 --> 00:25:22,540 Takže předem uznává pole nemůže mít negativní velikosti a odmítá ji. 491 00:25:22,540 --> 00:25:26,840 Teď, když jsme neměli zacházet Tento Do-while správně, 492 00:25:26,840 --> 00:25:28,810 pokud jsme nebyli kontrolu pokud n je menší než 1-- 493 00:25:28,810 --> 00:25:32,690 Řekněme, že právě ani to mít vůbec 494 00:25:32,690 --> 00:25:35,940 a místo toho jsme se jen chytit celé číslo. 495 00:25:35,940 --> 00:25:40,710 Bez ohledu na to, co to je celé číslo, prohlašujeme pole této velikosti. 496 00:25:40,710 --> 00:25:44,250 >> Takže kompilátor nemůže možná teď stěžují. 497 00:25:44,250 --> 00:25:48,780 Pokud bych sestavit tohle-- takže nemůže stěžovat, 498 00:25:48,780 --> 00:25:51,480 protože to nemůže vědět, že jsem chystá vstoupit záporné číslo, 499 00:25:51,480 --> 00:25:52,550 které by mohly být neplatné. 500 00:25:52,550 --> 00:25:54,633 Pro všechny to ví, možná zadejte kladné číslo, 501 00:25:54,633 --> 00:25:56,000 což je naprosto v pořádku. 502 00:25:56,000 --> 00:26:01,090 Tak jsem si představit, když jsem zadat záporné 1 lidé v místnosti, segmentace chybu. 503 00:26:01,090 --> 00:26:06,040 >> Tak dobře. 504 00:26:06,040 --> 00:26:13,160 Takže pojďme se přidat tento zpět jen aby to, co to původně bylo. 505 00:26:13,160 --> 00:26:15,640 Tak, aby věkové kategorie. 506 00:26:15,640 --> 00:26:18,120 A teď, když chci zkusit Negativní age-- Takže pojďme 507 00:26:18,120 --> 00:26:19,710 říkají, že pět lidí v místnosti. 508 00:26:19,710 --> 00:26:23,180 Age of osoba číslo jedna je negativní 4, člověk tří 509 00:26:23,180 --> 00:26:26,500 je nula, člověk three-- OK. 510 00:26:26,500 --> 00:26:29,850 Takže tady, o rok později, osoba číslo z nich bude negativní, 3 let. 511 00:26:29,850 --> 00:26:32,830 Takže asi nemá smysl. 512 00:26:32,830 --> 00:26:37,220 Ale to je jen proto, že hledáte na kód všechno děláme 513 00:26:37,220 --> 00:26:40,260 žádá GetInt. 514 00:26:40,260 --> 00:26:44,110 >> Teď, když jsme se měl Funkce GetPositiveInt 515 00:26:44,110 --> 00:26:49,690 nebo jsme prostě jen udělal druh stejného cyklu while tam dole, 516 00:26:49,690 --> 00:26:52,340 pak by to fungovat naprosto v pořádku. 517 00:26:52,340 --> 00:26:54,200 Ale v tomto konkrétním případ, my prostě nemají 518 00:26:54,200 --> 00:26:57,772 stalo, že se manipulace záporné hodnoty. 519 00:26:57,772 --> 00:26:59,147 Jakékoliv další otázky týkající se polí? 520 00:26:59,147 --> 00:27:02,290 521 00:27:02,290 --> 00:27:03,250 DOBŘE. 522 00:27:03,250 --> 00:27:09,380 >> Takže jsme teď viděli pole. 523 00:27:09,380 --> 00:27:12,500 A budeme muset použít to pro argumenty příkazového řádku. 524 00:27:12,500 --> 00:27:14,680 Takže problém nastavit two-- Vím, že mnozí z vás 525 00:27:14,680 --> 00:27:18,040 by mohlo být stále pracuje na problému set člověk, ale problém nastavit dvě se blíží. 526 00:27:18,040 --> 00:27:22,260 V problém nastavit dvě, budete je třeba zabývat s řetězci, poli, 527 00:27:22,260 --> 00:27:23,950 a argumenty příkazového řádku. 528 00:27:23,950 --> 00:27:26,270 >> Takže jaké jsou argumenty příkazového řádku? 529 00:27:26,270 --> 00:27:29,570 Nyní můžete vidět tady dole malý teaser přesně to, co je 530 00:27:29,570 --> 00:27:30,950 bude děje. 531 00:27:30,950 --> 00:27:32,950 Vidíme int main, INC argc, string argv závorkách. 532 00:27:32,950 --> 00:27:34,560 533 00:27:34,560 --> 00:27:38,130 Takže nejprve pojďme se snaží interpretovat co to se snaží říct. 534 00:27:38,130 --> 00:27:40,800 A teď, OK. 535 00:27:40,800 --> 00:27:44,637 >> Takže na příkazovém řádku, měli byste být zvyknout si na některé z těchto příkazů 536 00:27:44,637 --> 00:27:48,580 teď, a pravděpodobně jste spuštění CD v terminálu před. 537 00:27:48,580 --> 00:27:52,100 Takže když řekneme cd pset1, víte, že by 538 00:27:52,100 --> 00:27:55,050 se mění do adresáře pset1. 539 00:27:55,050 --> 00:27:59,120 >> Nyní si všimněte, že jste nikdy napsal program, jako je tento předtím. 540 00:27:59,120 --> 00:28:03,120 Každý program, který jste napsali, byste spustit, řekněme, tečka lomítko Mario, 541 00:28:03,120 --> 00:28:06,779 dot lomítko chamtivý, a pak ji Možná výzvu pro vstup. 542 00:28:06,779 --> 00:28:08,570 No, to není to, co Změňte adresář dělá. 543 00:28:08,570 --> 00:28:12,770 Při spuštění cd, není pak říká, které adresáře chcete cd do? 544 00:28:12,770 --> 00:28:17,200 Místo toho, stačí říct, cd pset1, a to jen jde do adresáře pset1. 545 00:28:17,200 --> 00:28:20,430 >> Takže podobně máme další příklady. 546 00:28:20,430 --> 00:28:21,540 aby ahoj. 547 00:28:21,540 --> 00:28:25,760 Při spuštění provést, není pak říká, program, který byste chtěli dělat? 548 00:28:25,760 --> 00:28:29,620 Stačí říct, u příkazový řádek, aby ahoj. 549 00:28:29,620 --> 00:28:31,060 >> Move je dalším příkladem. 550 00:28:31,060 --> 00:28:34,840 Ten jsme se pohybem mario.c souboru o jednu úroveň. 551 00:28:34,840 --> 00:28:38,060 Takže teď víme, že s tímto příkladem Jsme opravdu kolem dva argumenty. 552 00:28:38,060 --> 00:28:42,090 Tam je mario.c jako první argument, a dot dot je druhý argument. 553 00:28:42,090 --> 00:28:46,140 A pak, když spustit, aby vás, vidět, že opravdu dlouhou příkaz line-- 554 00:28:46,140 --> 00:28:50,580 že opravdu dlouho povel tištěný na příkazovém řádku. 555 00:28:50,580 --> 00:28:53,590 Tak dlouho command-- tento je jen kousek část, 556 00:28:53,590 --> 00:28:56,090 ale teď máme tři argumenty příkazového řádku. 557 00:28:56,090 --> 00:28:59,750 Dot pomlčka nula, ahoj, a hello.c. 558 00:28:59,750 --> 00:29:03,497 >> Tak to jsou příkazového řádku argumenty, argumenty 559 00:29:03,497 --> 00:29:05,580 že jste kolem u příkazového řádku, takže to 560 00:29:05,580 --> 00:29:08,680 nemusí být výzva při spuštění programu. 561 00:29:08,680 --> 00:29:13,090 Bylo by to frustrující, když při jste spustili zvonit to řekl: "OK, 562 00:29:13,090 --> 00:29:15,630 který program-- který Soubor jste kompilaci? 563 00:29:15,630 --> 00:29:17,010 Hello.c. 564 00:29:17,010 --> 00:29:19,440 Co byste vlajky chtěli vstoupit? pomlčka o. 565 00:29:19,440 --> 00:29:21,190 Co byste rád soubor být nazýván? 566 00:29:21,190 --> 00:29:21,690 Ahoj. 567 00:29:21,690 --> 00:29:25,290 Ne, stačí spustit řinčení pomlčka o ahoj hello.c. 568 00:29:25,290 --> 00:29:28,820 >> Takže se ohlédl na to. 569 00:29:28,820 --> 00:29:32,920 Nyní argc-- argc je argument počítá. 570 00:29:32,920 --> 00:29:36,620 Je to počet příkazového řádku Argumenty vstoupil na příkazovém řádku. 571 00:29:36,620 --> 00:29:39,720 No, technicky argv-- tlačítka v znamená vektor, 572 00:29:39,720 --> 00:29:41,460 což v podstatě znamená, že pole. 573 00:29:41,460 --> 00:29:42,680 Ale můžete ignorovat. 574 00:29:42,680 --> 00:29:47,540 Argv-- máme řetězec argv, takže řetězec argv závorkách. 575 00:29:47,540 --> 00:29:50,150 Takže to je další forma brackets jste ještě neviděli. 576 00:29:50,150 --> 00:29:52,300 Takže jsme viděli držák notace, když jsme řekli, 577 00:29:52,300 --> 00:29:53,970 jako, string s rovná Zamyla. 578 00:29:53,970 --> 00:29:56,910 s konzola 0 přistupuje znak Z. 579 00:29:56,910 --> 00:30:00,720 >> Také jsme viděli, když držáky jsme si řekli, int věku bracketing 5. 580 00:30:00,720 --> 00:30:03,160 Ten deklaroval pole o velikosti 5. 581 00:30:03,160 --> 00:30:06,280 Takže tady je verze z konzoly jsme ještě neviděli. 582 00:30:06,280 --> 00:30:09,630 Takže tento druh řetězce argv, který by bylo zcela obeznámeni 583 00:30:09,630 --> 00:30:12,050 že by to prostě být řetězec. 584 00:30:12,050 --> 00:30:14,520 Nyní závorkách že se jedná o pole. 585 00:30:14,520 --> 00:30:19,920 Takže string argv držáky prostředky že argv je pole řetězců. 586 00:30:19,920 --> 00:30:22,540 Teď technicky řetězec je pole znaků. 587 00:30:22,540 --> 00:30:26,400 Takže toto je nyní pole z pole znaků. 588 00:30:26,400 --> 00:30:31,490 Ale je to mnohem snazší přemýšlet o tom, to jen jako pole řetězců. 589 00:30:31,490 --> 00:30:34,900 >> Tak proč by mohlo být prázdné závorky? 590 00:30:34,900 --> 00:30:38,170 Stejně jako, proč nemůžeme říci, držák 5, držák n? 591 00:30:38,170 --> 00:30:40,700 592 00:30:40,700 --> 00:30:41,200 To jo. 593 00:30:41,200 --> 00:30:43,731 594 00:30:43,731 --> 00:30:44,230 To jo. 595 00:30:44,230 --> 00:30:46,396 Nevíme, kolik vstupy tam jsou bude. 596 00:30:46,396 --> 00:30:53,560 Takže pokud se podíváme na zvonění příklad, říkáme zvonit pomlčku o ahoj hello.c. 597 00:30:53,560 --> 00:30:56,710 V tomto konkrétním případě, že se stalo být tři argumenty příkazového řádku. 598 00:30:56,710 --> 00:31:00,522 A tak brackets-- uvidíme ve druhé nebylo by to tři. 599 00:31:00,522 --> 00:31:01,730 Technicky by to čtyři. 600 00:31:01,730 --> 00:31:04,030 Ale konzoly, že bychom řekněme, jsou tři. 601 00:31:04,030 --> 00:31:08,220 Ale teď, když jsme se podívali na cestách mario.c dot dot, závorky 602 00:31:08,220 --> 00:31:09,760 bychom chtěli dát dva v nich. 603 00:31:09,760 --> 00:31:12,884 >> A existuje mnoho příkazů, které mají různý počet příkazové řádky 604 00:31:12,884 --> 00:31:13,620 argumenty. 605 00:31:13,620 --> 00:31:17,430 Takže to, co tato verze držák notace označuje 606 00:31:17,430 --> 00:31:20,820 je to, že argv je pole řetězců. 607 00:31:20,820 --> 00:31:24,360 Ale my nevíme, kolik řetězce jsou v tomto poli. 608 00:31:24,360 --> 00:31:27,090 A jak pak víte, jak mnoho řetězců jsou v poli? 609 00:31:27,090 --> 00:31:28,870 To je celý smysl argc. 610 00:31:28,870 --> 00:31:32,300 argc nám říká, jak dlouho argv je. 611 00:31:32,300 --> 00:31:36,500 >> Takže poslední věc, kterou byste měli mít na mysl je to, technicky, 612 00:31:36,500 --> 00:31:40,820 příkaz sám se počítá jako jeden o argumenty příkazového řádku. 613 00:31:40,820 --> 00:31:45,330 Takže cd pset1, jsou tam dva argumenty příkazového řádku. 614 00:31:45,330 --> 00:31:50,260 Program sám o sobě, CD, a poté skutečný argument, část, pset1. 615 00:31:50,260 --> 00:31:54,490 Jakýkoliv program, který jste napsali tak daleko bylo jednou z příkazového řádku argument-- tečku 616 00:31:54,490 --> 00:31:55,320 lomítko Mario. 617 00:31:55,320 --> 00:31:57,350 To je jediný argument příkazového řádku. 618 00:31:57,350 --> 00:32:00,900 >> Takže nyní podíváme na zazvoněním pomlčka o ahoj hello.c. 619 00:32:00,900 --> 00:32:01,905 Takže to, co je 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 Takže argc je 4. 623 00:32:08,140 --> 00:32:12,140 Clang, takže argv držák 0 řinčení. 624 00:32:12,140 --> 00:32:15,630 argv držák 1 je pomlčka 0. 625 00:32:15,630 --> 00:32:21,870 argv držák 2 je ahoj, a argv konzola 3 je hello.c. 626 00:32:21,870 --> 00:32:26,813 Ok, tak otázky týkající se to, a pak se podívejte se na některé programové příklady. 627 00:32:26,813 --> 00:32:29,460 628 00:32:29,460 --> 00:32:30,480 >> DOBŘE. 629 00:32:30,480 --> 00:32:36,260 Takže se budeme se podívat na hello3.c. 630 00:32:36,260 --> 00:32:41,890 Tak to by mělo být známý z jeden z prvních příkladů c 631 00:32:41,890 --> 00:32:45,800 jsme měli kde bychom jen říct, ahoj svět, ale teď je to obecnější. 632 00:32:45,800 --> 00:32:52,300 Tak tady říkáme ahoj % s zpětné lomítko n argv držák 1. 633 00:32:52,300 --> 00:32:57,440 Notice-- tak až do tohoto bodu, to je jaký soubor má šablona vypadá. 634 00:32:57,440 --> 00:33:01,800 Měl jsem int main (void), a pak bych něco v hlavní funkce. 635 00:33:01,800 --> 00:33:05,100 Nyní místo, jakmile začneme zabývat s argumenty příkazového řádku, 636 00:33:05,100 --> 00:33:07,890 musíme státu A různá forma main. 637 00:33:07,890 --> 00:33:11,930 >> Takže při pohledu na hello3 Opět platí, že hlavní děje 638 00:33:11,930 --> 00:33:15,990 aby se dva argumenty now-- int argc, počet argumenty příkazového řádku, 639 00:33:15,990 --> 00:33:20,970 a string argv závorce, skutečná řetězce zadán na příkazovém řádku. 640 00:33:20,970 --> 00:33:26,560 Takže jsem to nezmění šablona, ​​aby odrážel tuto skutečnost. 641 00:33:26,560 --> 00:33:29,060 Nyní, kdykoli budete psát programu, pokud nemáte 642 00:33:29,060 --> 00:33:33,720 třeba žádného zvláštního příkazového řádku argumenty, pak stačí použít int main (void). 643 00:33:33,720 --> 00:33:37,070 Ale teď, když píšete Argument programy příkazového řádku, které 644 00:33:37,070 --> 00:33:40,350 budete dělat o problému nastavit two-- takže teď, že jste běží 645 00:33:40,350 --> 00:33:42,630 programy, které potřebují, aby se argumenty příkazového řádku, 646 00:33:42,630 --> 00:33:45,250 musíte mít hlavní tohoto formuláře. 647 00:33:45,250 --> 00:33:51,290 >> Takže here-- to je velká použití o argument příkazového řádku. 648 00:33:51,290 --> 00:33:54,100 Takže tisku argv 1. 649 00:33:54,100 --> 00:33:59,180 OK, takže pojďme kompilovat a spustit tento program. 650 00:33:59,180 --> 00:34:02,440 Udělat hello3. 651 00:34:02,440 --> 00:34:03,570 Sestavuje. 652 00:34:03,570 --> 00:34:06,870 Dot lomítko hello3. 653 00:34:06,870 --> 00:34:08,920 A řekněme, "Rob." 654 00:34:08,920 --> 00:34:10,760 Dobrý den, Rob. 655 00:34:10,760 --> 00:34:14,940 Když řeknu, "ahoj Maria:" Ahoj Maria. 656 00:34:14,940 --> 00:34:15,719 Dobrý den, Maria. 657 00:34:15,719 --> 00:34:18,639 Hannah stále říká, "ahoj Maria, "protože já nejsem 658 00:34:18,639 --> 00:34:21,340 dělat něco s naším argv 2. 659 00:34:21,340 --> 00:34:22,590 Argv 2 nyní bude "Hannah." 660 00:34:22,590 --> 00:34:25,030 Argc by být 3. 661 00:34:25,030 --> 00:34:27,735 Co když jsem to udělal? 662 00:34:27,735 --> 00:34:31,980 663 00:34:31,980 --> 00:34:34,679 Tak ahoj null. 664 00:34:34,679 --> 00:34:38,760 >> On stručně dotkl na skutečnosti, že technicky, GetString 665 00:34:38,760 --> 00:34:42,429 může vrátit null, ale budeme dostat mnohem víc do toho, co null ve skutečnosti je. 666 00:34:42,429 --> 00:34:47,449 Ale vezměte si ji jako věc Skutečnost, že ne je obecně špatná. 667 00:34:47,449 --> 00:34:50,179 Udělali jsme něco špatného, ​​pokud je to tisk "ahoj null." 668 00:34:50,179 --> 00:34:52,179 A důvod, proč jsme to udělali něco špatně je-- dobře, 669 00:34:52,179 --> 00:34:56,179 když jsem běžel dot lomítko hello3, argc byl 1. 670 00:34:56,179 --> 00:34:59,680 Tak, že znamená, že délka argv byla 1. 671 00:34:59,680 --> 00:35:05,110 Pokud je pole je o délce 1, jedinou platnou index je nulová. 672 00:35:05,110 --> 00:35:08,550 A tak tady argv 1 je venku rozsah tohoto pole. 673 00:35:08,550 --> 00:35:13,410 Bylo to podobné jako předtím, když jsem se snažil pro uložení 6 mimo konce pole. 674 00:35:13,410 --> 00:35:18,100 Takže se snažím přistupovat něco mimo argv počítá, 675 00:35:18,100 --> 00:35:21,340 a my jsme stále null. 676 00:35:21,340 --> 00:35:24,360 >> Takže lepší verze to, zlepšení, 677 00:35:24,360 --> 00:35:27,010 je výslovně kontrola argc. 678 00:35:27,010 --> 00:35:33,580 Takže pokud argc rovná 2, to znamená, že jsme běželi něco jako tečka lomítko hello3 Rob. 679 00:35:33,580 --> 00:35:36,840 A to bude tisknout "ahoj Rob." 680 00:35:36,840 --> 00:35:39,850 Pokud argc není rovno 2, pak je to jen bude 681 00:35:39,850 --> 00:35:42,560 ignorovat, co jste dal Na argument příkazového řádku 682 00:35:42,560 --> 00:35:43,960 jako argumenty příkazového řádku. 683 00:35:43,960 --> 00:35:47,168 Nebo pokud jste si ho nedali vůbec žádné, je to jen tak ignorovat to a jen říct, 684 00:35:47,168 --> 00:35:47,960 "Ahoj." 685 00:35:47,960 --> 00:35:51,490 >> Takže sestavování tohle. 686 00:35:51,490 --> 00:35:54,500 Udělat hello4. 687 00:35:54,500 --> 00:35:56,790 A běh hello4. 688 00:35:56,790 --> 00:36:00,010 Running to takhle, co by mělo být vytištěny? 689 00:36:00,010 --> 00:36:01,330 "Ahoj." 690 00:36:01,330 --> 00:36:02,810 Ahoj. 691 00:36:02,810 --> 00:36:05,870 Co hello4 Rob? 692 00:36:05,870 --> 00:36:06,950 "Dobrý den, Rob." 693 00:36:06,950 --> 00:36:10,580 A konečně, ahoj Rob Maria je jen "ahoj Ty" znovu, 694 00:36:10,580 --> 00:36:13,677 proto, že jste se opravdu vstoupit něco, co se očekává. 695 00:36:13,677 --> 00:36:15,510 Zadali jste více jmen , než to mohl zvládnout, 696 00:36:15,510 --> 00:36:19,500 tak to prostě převezme ahoj jste chování. 697 00:36:19,500 --> 00:36:23,040 Takže otázky, týkající tohle? 698 00:36:23,040 --> 00:36:26,290 Nebo argumenty příkazového řádku? 699 00:36:26,290 --> 00:36:28,690 >> OK, takže při pohledu na pár dalších příkladů použití 700 00:36:28,690 --> 00:36:34,230 příkazového řádku arguments-- nejprve jsme argv pomlčka 1 bod c. 701 00:36:34,230 --> 00:36:38,510 Takže komentáře dát pryč, co tento program by měl dělat. 702 00:36:38,510 --> 00:36:42,460 Nevšimnout now-- to pro smyčce, to přesně odpovídá vzoru 703 00:36:42,460 --> 00:36:43,390 Jsem říkal předtím. 704 00:36:43,390 --> 00:36:46,240 Právě jsme se stalo, že se za použití argc místo n. 705 00:36:46,240 --> 00:36:48,880 Nyní argc je opravdu n. 706 00:36:48,880 --> 00:36:51,260 Je to délka argv pole. 707 00:36:51,260 --> 00:36:59,600 Takže jsou iterace přes argv array printf-ing každou argv hodnotu. 708 00:36:59,600 --> 00:37:04,730 >> Takže když jsem se, aby to. 709 00:37:04,730 --> 00:37:08,232 Proveďte argv 1. 710 00:37:08,232 --> 00:37:09,940 To kompiluje. 711 00:37:09,940 --> 00:37:11,620 Dot lomítko argv 1. 712 00:37:11,620 --> 00:37:15,530 Právě běží to, ho postery dot lomítko argv 1 713 00:37:15,530 --> 00:37:18,500 protože to byl jediný příkazového řádku argument-- název programu. 714 00:37:18,500 --> 00:37:22,080 Tam bude vždy na least-- argc nesmí být menší než jedna, 715 00:37:22,080 --> 00:37:25,910 protože tam bude vždy alespoň je název programu spustit. 716 00:37:25,910 --> 00:37:32,040 Takže argv 1 Rob bude tisknout argv 1 a pak se na novém řádku "Rob." 717 00:37:32,040 --> 00:37:36,350 >> Takže v první iteraci této smyčky, i je 0. 718 00:37:36,350 --> 00:37:39,090 Argv 0 je název programu. 719 00:37:39,090 --> 00:37:40,010 Dot lomítko argv 1. 720 00:37:40,010 --> 00:37:43,770 A pak argv 1 je můj první argument příkazového řádku, který je Rob. 721 00:37:43,770 --> 00:37:45,920 V tomto bodě, jsme se rovnají argc. 722 00:37:45,920 --> 00:37:48,210 Lámeme ze smyčky a budeme hotovi. 723 00:37:48,210 --> 00:37:53,940 Takže to bude fungovat pro libovolný Počet argumenty příkazového řádku. 724 00:37:53,940 --> 00:37:58,550 Všimněte si, že vytiskne argv 0, argv 1, argv 2, argv 3, argv 4. 725 00:37:58,550 --> 00:38:00,150 A není argv 5. 726 00:38:00,150 --> 00:38:01,460 argc je rovno 5,. 727 00:38:01,460 --> 00:38:06,960 Takže na argc-- na i rovná 5, lámeme ze smyčky. 728 00:38:06,960 --> 00:38:07,950 DOBŘE. 729 00:38:07,950 --> 00:38:11,315 Takže otázky, týkající že předtím, než jsme podívejte se na více komplexní příklad? 730 00:38:11,315 --> 00:38:14,190 731 00:38:14,190 --> 00:38:16,860 >> Takže argv 2. 732 00:38:16,860 --> 00:38:17,830 Dobře. 733 00:38:17,830 --> 00:38:20,610 Takže jsme pořád tisk příkazového řádku argumenty. 734 00:38:20,610 --> 00:38:23,170 Ale teď musíme všimnout vnořené pro smyčku. 735 00:38:23,170 --> 00:38:24,670 Takže to, co se to dělá? 736 00:38:24,670 --> 00:38:28,430 Takže první smyčka dělá přesně to, co dělal předtím. 737 00:38:28,430 --> 00:38:30,950 Jsme stále více než cyklování každý argument příkazového řádku, 738 00:38:30,950 --> 00:38:34,260 ale nyní tento druhý loop-- máme Také viděl něco takového předtím. 739 00:38:34,260 --> 00:38:38,600 Když byl iterace nad Zamyla vytisknout Z-A-M-Y-L-A. 740 00:38:38,600 --> 00:38:44,816 Takže to druhá smyčka pro int j rovná 0, n se rovná strlen z argv držáku i. 741 00:38:44,816 --> 00:38:49,170 >> Takže pojďme se nejprve, že pro the-- pojďme projít. 742 00:38:49,170 --> 00:38:53,560 Pojďme si, že to, co by počítač dělat, když jsem běžel tento program jako právě dot 743 00:38:53,560 --> 00:38:56,030 lomítko argv pomlčka 2. 744 00:38:56,030 --> 00:39:03,590 Takže když jsem běžel tento kód, a pak argc bude roven 1. 745 00:39:03,590 --> 00:39:07,050 A string argv-- existuje pouze bude jedním index v argv, 746 00:39:07,050 --> 00:39:12,370 a že to bude rovnat dot lomítko argv 2-- název programu. 747 00:39:12,370 --> 00:39:19,170 >> OK, tak teď jsem se rovná 0, i méně než 1, i a plus pro int j = 0, 748 00:39:19,170 --> 00:39:23,880 n se rovná strlen z argv držáku 0, tak v První iterace této smyčky. argv 749 00:39:23,880 --> 00:39:27,250 Držák 0 tečka lomítko argv 2. 750 00:39:27,250 --> 00:39:29,320 Takže to, co je délka tohoto řetězce? 751 00:39:29,320 --> 00:39:32,480 No, dot lomítko a-R-G-V pomlčka 2. 752 00:39:32,480 --> 00:39:35,020 Tak strlen toho bude 8. 753 00:39:35,020 --> 00:39:37,500 Tak j rovná 0, n se rovná 8. 754 00:39:37,500 --> 00:39:39,530 Tak dlouho, jak j je menší než 8, j ++. 755 00:39:39,530 --> 00:39:44,080 A s tím budeme mít tisk jeden znak, který 756 00:39:44,080 --> 00:39:47,350 je argv držák i bracketing j. 757 00:39:47,350 --> 00:39:49,826 >> Takže jediný i je nula. 758 00:39:49,826 --> 00:39:51,700 Stále jen mít jeden argument příkazového řádku. 759 00:39:51,700 --> 00:39:53,890 V této první iteraci z cyklu for, my jsme 760 00:39:53,890 --> 00:39:56,950 Bude tisk argv držák 0 držák 0. 761 00:39:56,950 --> 00:39:58,325 A pak j se chystá zvýšit. 762 00:39:58,325 --> 00:40:01,650 A jdeme do tisku argv držák 0 držák 1. 763 00:40:01,650 --> 00:40:04,150 A pak argv držák 0 držák 2. 764 00:40:04,150 --> 00:40:09,030 >> Tak toto je naše první setkání multi-rozměrné pole. 765 00:40:09,030 --> 00:40:12,770 Pamatujte si, že jsem řekl dříve, že argv je technicky 766 00:40:12,770 --> 00:40:15,950 řada pole znaků. 767 00:40:15,950 --> 00:40:24,360 Tak tady, když jsem řekl něco jako string s rovná argv držák i, 768 00:40:24,360 --> 00:40:29,590 a pak jsem řekl, s držák j, to by bylo dosažení totéž. 769 00:40:29,590 --> 00:40:31,960 Nyní, když jste viděl s držák j. 770 00:40:31,960 --> 00:40:36,680 To je jen přístup k j-tého charakter tohoto řetězce. 771 00:40:36,680 --> 00:40:48,010 Takže s tím, jsme se dostat to j-tý charakter i-tého argv. 772 00:40:48,010 --> 00:40:51,450 >> Takže to, co by měl tento nakonec výstup? 773 00:40:51,450 --> 00:40:53,210 Proveďte argv 2. 774 00:40:53,210 --> 00:40:54,730 To kompiluje. 775 00:40:54,730 --> 00:40:56,340 Dot lomítko argv 2. 776 00:40:56,340 --> 00:41:03,790 "Rob Maria Hannah," a dej nám nějaký prostor. 777 00:41:03,790 --> 00:41:07,050 Takže vidíme, že je to výstupu tečka na samostatném řádku a lomítko 778 00:41:07,050 --> 00:41:08,920 na vlastní čarou a na vlastním řádku. 779 00:41:08,920 --> 00:41:11,260 Je vytištění každý individuální charakter 780 00:41:11,260 --> 00:41:12,950 každý argument příkazového řádku. 781 00:41:12,950 --> 00:41:15,960 A pak se mezi nimi, díky této nové linky 782 00:41:15,960 --> 00:41:19,380 jsme tisk tady dole, v mezi nimi to bude tisknout nový řádek. 783 00:41:19,380 --> 00:41:24,540 >> Takže je to podobné předchozí argv pomlčka 1, 784 00:41:24,540 --> 00:41:26,459 který tištěný každý argument příkazového řádku, 785 00:41:26,459 --> 00:41:28,500 ale teď jsme tisk příkazového řádku argumenty 786 00:41:28,500 --> 00:41:31,950 a pak iteraci každý charakter každého argument příkazového řádku 787 00:41:31,950 --> 00:41:35,400 aby si tento výstup. 788 00:41:35,400 --> 00:41:36,870 DOBŘE? 789 00:41:36,870 --> 00:41:40,570 Takže otázky, týkající tohle? 790 00:41:40,570 --> 00:41:45,130 >> Jedna věc k poznámce je, že příkazového řádku arguments-- 791 00:41:45,130 --> 00:41:49,990 tak oni jsou odděleny mezerami, jako Vás by přirozeně očekávat, že budou. 792 00:41:49,990 --> 00:41:53,050 Takže řetězec může mít mezery v něm. 793 00:41:53,050 --> 00:41:57,380 Není to výborný důležité, ale pokud já Chtěl třetí argument příkazového řádku 794 00:41:57,380 --> 00:42:01,226 mít místo v něm, pak jsem Dalo by se říci něco takového. 795 00:42:01,226 --> 00:42:04,470 796 00:42:04,470 --> 00:42:05,550 DOBŘE? 797 00:42:05,550 --> 00:42:12,190 Tak to teď ještě má jen tři příkazového řádku arguments-- dobře 4. 798 00:42:12,190 --> 00:42:17,620 Dot lomítko argv pomlčka 2, Rob, Maria, a Hannah Bloomberg. 799 00:42:17,620 --> 00:42:18,320 DOBŘE. 800 00:42:18,320 --> 00:42:19,310 Dotazy na to? 801 00:42:19,310 --> 00:42:22,700 802 00:42:22,700 --> 00:42:24,894 >> Na tom není nic zvláštního o kosmickém charakteru. 803 00:42:24,894 --> 00:42:27,810 Prostě se to stane, že je, že příkazového řádku zachází znak mezery 804 00:42:27,810 --> 00:42:29,226 jak jste oddělit jednotlivé argument. 805 00:42:29,226 --> 00:42:32,048 806 00:42:32,048 --> 00:42:33,000 Dobře. 807 00:42:33,000 --> 00:42:39,950 Takže Problém set two-- budete mít 808 00:42:39,950 --> 00:42:43,240 při pohledu na tajemství-klíč kryptografie. 809 00:42:43,240 --> 00:42:47,700 Tak, podobně jako v tomto příkladu jsme viděli od A Christmas Story, 810 00:42:47,700 --> 00:42:52,840 budete se provádějí některá algoritmy, že vzhledem zprávu, 811 00:42:52,840 --> 00:42:55,560 budete mít možnost zašifrovat tu zprávu 812 00:42:55,560 --> 00:42:58,730 že jen někdo s tímto tajemstvím klíč, s tím dekodéru kroužkem, 813 00:42:58,730 --> 00:43:01,090 by měl být schopen dešifrovat. 814 00:43:01,090 --> 00:43:04,839 >> Takže to je standardní vydání. 815 00:43:04,839 --> 00:43:07,130 Budeš se prováděcí dvě různé verze. 816 00:43:07,130 --> 00:43:09,620 Pokud jste náhodou se podívat u hacker Edition nyní, 817 00:43:09,620 --> 00:43:12,600 jdeme dát Jste řetězec takhle, 818 00:43:12,600 --> 00:43:15,240 což představuje šifrované heslo. 819 00:43:15,240 --> 00:43:19,990 Takže vaším cílem je zjistit, co je dešifrovat heslo. 820 00:43:19,990 --> 00:43:26,950 Nyní je to vlastně Jak hesla jsou uloženy v mnoha počítačů, 821 00:43:26,950 --> 00:43:31,290 a to jen ukládá toto náhodný řetězec znaků. 822 00:43:31,290 --> 00:43:34,440 Musíte přijít na to, jak se dostat z této náhodné řetězec znaků 823 00:43:34,440 --> 00:43:36,140 s tím, co bylo původní heslo. 824 00:43:36,140 --> 00:43:39,060 825 00:43:39,060 --> 00:43:43,290 >> A nakonec, po tomto Problém set, měli byste 826 00:43:43,290 --> 00:43:46,100 být schopen pochopit, co to znamená. 827 00:43:46,100 --> 00:43:51,650 Tak se dozvíte, jak dešifrovat tento druh náhodný řetězec. 828 00:43:51,650 --> 00:43:56,390 Stejně tak, pokud si pamatujete z týdne 0, možná jste viděli tuto adresu URL. 829 00:43:56,390 --> 00:44:00,210 A vy byste měli být schopni dešifrovat to nakonec. 830 00:44:00,210 --> 00:44:04,810 Ty nemusí být šťastný, když vás dešifrovat ji a klikněte na odkaz. 831 00:44:04,810 --> 00:44:05,700 Dobře. 832 00:44:05,700 --> 00:44:06,591 To je pro dnešek vše. 833 00:44:06,591 --> 00:44:12,095 Tak vidíte příští týden! 834 00:44:12,095 --> 00:44:18,315 >> [ELECTRONIC přehrávání hudby] 835 00:44:18,315 --> 00:47:15,619