1 00:00:00,000 --> 00:00:03,944 >> [Prehrávanie hudby] 2 00:00:03,944 --> 00:00:10,732 3 00:00:10,732 --> 00:00:11,690 DAVID Malan: Dobre. 4 00:00:11,690 --> 00:00:14,674 To je CS50, a to je koniec týždňa 2. 5 00:00:14,674 --> 00:00:16,840 Je mi to tak ľúto, že som nemohol byť tam s vami všetko dnes, 6 00:00:16,840 --> 00:00:18,300 ale vy ste vo veľmi dobrých rukách. 7 00:00:18,300 --> 00:00:21,710 Dovoľte mi predstaviť 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 samozrejme, potom musíme robiť si žarty z faktu 10 00:00:31,730 --> 00:00:36,820 že nám poslal vertikálne video a ukázať to. 11 00:00:36,820 --> 00:00:38,320 >> [Videoprehrávanie] 12 00:00:38,320 --> 00:00:39,820 >> [Prehrávanie hudby] 13 00:00:39,820 --> 00:00:42,350 >> [Stopách] 14 00:00:42,350 --> 00:00:44,730 >> -Tento Video nie sa pozerať takto. 15 00:00:44,730 --> 00:00:46,570 To by bolo možné predísť. 16 00:00:46,570 --> 00:00:49,070 Povedz nie na vertikálne videá. 17 00:00:49,070 --> 00:00:53,310 >> -Vertikální Videá stane, keď vás držať váš fotoaparát na zlú cestu. 18 00:00:53,310 --> 00:00:55,880 Vaše video skončí vyzerať ako hovno. 19 00:00:55,880 --> 00:00:57,650 >> - [GRUNT] 20 00:00:57,650 --> 00:01:02,240 >> -Existuje Viac a viac ľudia závislí k tomu, že zvislé videá každý deň. 21 00:01:02,240 --> 00:01:06,240 Nie je to bezva, alebo nič, ale je to stále naozaj zlé. 22 00:01:06,240 --> 00:01:10,410 Existujú dva rôzne druhy ľudia, ktorí sú postihnutí VVS. 23 00:01:10,410 --> 00:01:14,160 Prvá skupina lieči Videa sa strieľať ako obrazy. 24 00:01:14,160 --> 00:01:15,850 Oni neznamenajú žiadnu škodu. 25 00:01:15,850 --> 00:01:19,180 Oni jednoducho nechápu, že zatiaľ čo vy môžete otočiť obrázok, 26 00:01:19,180 --> 00:01:20,880 môžete naozaj otočiť 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 Iná skupina sú ľudia, ktorí nedávajú [pípnutie]. 30 00:01:27,540 --> 00:01:31,090 >> -Vertikální Video syndróm je nebezpečné. 31 00:01:31,090 --> 00:01:34,120 Filmy majú vždy vo vodorovnej polohe. 32 00:01:34,120 --> 00:01:35,990 Televízory sú vo vodorovnej polohe. 33 00:01:35,990 --> 00:01:38,380 Počítačové obrazovky sú vo vodorovnej polohe. 34 00:01:38,380 --> 00:01:41,580 Ľudské oči sú vo vodorovnej polohe. 35 00:01:41,580 --> 00:01:45,170 Nie sme postavená tak, aby sledovať vertikálne videá. 36 00:01:45,170 --> 00:01:47,600 >> -I Láska vertikálne videa. 37 00:01:47,600 --> 00:01:50,410 >> -Nobody Sa stará o vás. 38 00:01:50,410 --> 00:01:53,340 >> -Ak Tento problém je neriešenie, aj vy 39 00:01:53,340 --> 00:01:57,650 sa začne ukazovať štyri videá zrazu len preto, aby uložiť šírku pásma. 40 00:01:57,650 --> 00:02:02,400 >> -Letterboxed Vertikálne videá by byť veľkosť poštovej známky. 41 00:02:02,400 --> 00:02:04,920 >> -A To bude šíriť všade. 42 00:02:04,920 --> 00:02:07,670 Filmové obrazovky majú vždy vo vodorovnej polohe. 43 00:02:07,670 --> 00:02:11,200 Ak vertikálna videá stanú prijatá, kiná 44 00:02:11,200 --> 00:02:13,930 budú musieť byť vysoký a chudý. 45 00:02:13,930 --> 00:02:17,710 >> -A Všetky kín by musieť dostať zbúraný a prestavaný. 46 00:02:17,710 --> 00:02:22,090 A v čase, keď boli prestavané, Mila Kunis by bola stará a škaredá. 47 00:02:22,090 --> 00:02:24,342 >> -Birds Sa zrúti do nich a zomrieť. 48 00:02:24,342 --> 00:02:26,530 >> -We'll Všetci si tuhý krky od vzhliadol. 49 00:02:26,530 --> 00:02:29,800 >> -A Nikto sedieť v predné rade niekedy znova. 50 00:02:29,800 --> 00:02:37,170 >> -George Lucas bude re-release hviezda Wars again-- chudý vydanie. 51 00:02:37,170 --> 00:02:41,860 >> -Bol Som nikdy schopný povedať príbeh, ktorý som chcel povedať. 52 00:02:41,860 --> 00:02:46,030 To bol veľký šancu pre mňa experimentovať s novou technológiou. 53 00:02:46,030 --> 00:02:48,150 >> -Si Trhnúť. 54 00:02:48,150 --> 00:02:54,430 >> -Every Time mobilné zariadenia sa používa na nahrávať video, pokušenie je tam. 55 00:02:54,430 --> 00:02:56,370 Stačí povedať nie. 56 00:02:56,370 --> 00:03:00,116 Povedz nie na George Lucasa. 57 00:03:00,116 --> 00:03:04,062 Povedz nie na staré Mila Kunis. 58 00:03:04,062 --> 00:03:06,600 Povedz nie na vertikálne videá. 59 00:03:06,600 --> 00:03:12,511 >> -A Keď vidíte to niekto robí, povedzme, "nie ste natáčanie tú správnu figuríny!" 60 00:03:12,511 --> 00:03:15,433 >> [Prehrávanie hudby] 61 00:03:15,433 --> 00:03:18,842 62 00:03:18,842 --> 00:03:19,830 >> [END Prehrávanie] 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 kryptografia, 67 00:03:45,790 --> 00:03:49,500 ktorý je v podstate šifrovanie a dešifrovanie tajných správ. 68 00:03:49,500 --> 00:03:52,590 Takže tu máme veľmi jednoduchú hračku. 69 00:03:52,590 --> 00:03:56,900 A táto myšlienka je vonkajší krúžok sa otáča okolo vnútorného krúžku. 70 00:03:56,900 --> 00:04:01,610 A môžete vidieť, možno keby som zoom in, that-- je ťažké vidieť. 71 00:04:01,610 --> 00:04:05,090 Avšak, rovnako ako počet 1-- dobre, že sa sťahoval. 72 00:04:05,090 --> 00:04:09,120 >> Číslo 1 mapuje na list X, číslo 2 mapy do písmena 73 00:04:09,120 --> 00:04:11,630 J. veľmi zložité nie pre preskok vpred. 74 00:04:11,630 --> 00:04:16,100 List 2 mapuje J. Číslo 3 mapuje D. So 75 00:04:16,100 --> 00:04:20,140 s týmto krúžkom môžete dať niekto správu 1, 2, 3. 76 00:04:20,140 --> 00:04:22,624 Z nejakého dôvodu chcem im povedať XJD. 77 00:04:22,624 --> 00:04:24,540 Ale môžete dať niektoré správy z čísel, 78 00:04:24,540 --> 00:04:28,460 a tak dlho, ako majú tento krúžok sa môže dešifrovať, čo sa snažíte povedať. 79 00:04:28,460 --> 00:04:32,510 >> Takže ste mohli vidieť to Konkrétnym príkladom kryptografie 80 00:04:32,510 --> 00:04:36,640 Než-li okolo Vianoc ste sledovali Vianočný príbeh. 81 00:04:36,640 --> 00:04:38,520 Ak ste nikdy nevideli to skôr, potom len 82 00:04:38,520 --> 00:04:41,060 zapnúť TBS na doslovne kedykoľvek na Štedrý deň, 83 00:04:41,060 --> 00:04:44,510 pretože oni len ukázať ho chrbtom k sebe sa chrbtom k sebe k sebe celý deň. 84 00:04:44,510 --> 00:04:46,744 A príslušná video je to. 85 00:04:46,744 --> 00:04:47,410 [Videoprehrávanie] 86 00:04:47,410 --> 00:04:50,020 -BE Je známe, že všetky a rôzne že Ralph Parker je týmto 87 00:04:50,020 --> 00:04:52,850 menovaný za člena Little Orphan Annie Secret Circle 88 00:04:52,850 --> 00:04:56,490 a má právo na všetky vyznamenania a výhody dochádza k nemu. 89 00:04:56,490 --> 00:04:59,010 Podpísané Malý sirota Annie. 90 00:04:59,010 --> 00:05:03,120 Spolupodpísaný Pierre André atramentom! 91 00:05:03,120 --> 00:05:07,460 Vyznamenaní a výhody Už vo veku deviatich! 92 00:05:07,460 --> 00:05:12,530 >> [Kričí od rádia] 93 00:05:12,530 --> 00:05:13,030 -No ták. 94 00:05:13,030 --> 00:05:14,000 Poďme sa do toho. 95 00:05:14,000 --> 00:05:18,274 Nepotrebujem všetok ten jazz o pašerákov a pirátov. 96 00:05:18,274 --> 00:05:20,440 Počúvaj zajtra večer s záverečná dobrodružstvo 97 00:05:20,440 --> 00:05:22,540 Čierne pirátskej lodi. 98 00:05:22,540 --> 00:05:25,460 Teraz je čas na Annie tajnú správu 99 00:05:25,460 --> 00:05:28,620 pre Vás členovia Tajomstvo kruhu. 100 00:05:28,620 --> 00:05:32,370 Pamätajte si, deti len členovia Annie Secret Circle 101 00:05:32,370 --> 00:05:34,880 vie dekódovať Annie tajnú správu. 102 00:05:34,880 --> 00:05:39,100 Pamätajte 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 Tu je sprá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 Som vo svojom prvom tajnej schôdzke. 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 vo veľkom hlasové večer. 115 00:05:54,570 --> 00:05:57,490 Mohol by som povedať, že dnes večer sa Správa bola naozaj 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 správa od Annie sama. 119 00:06:01,580 --> 00:06:02,880 Pamätajte si, že nikomu to nehovorte. 120 00:06:02,880 --> 00:06:07,840 121 00:06:07,840 --> 00:06:11,130 >> -Five Sekúnd neskôr, ja som v jediný miestnosť v dome, kde chlapec deviatich 122 00:06:11,130 --> 00:06:15,830 mohli sedieť v súkromí a dekódovať. 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 Išiel som na ďalšie. 126 00:06:20,210 --> 00:06:23,300 E. Prvé slovo je "byť." 127 00:06:23,300 --> 00:06:25,880 S. Prichádzalo to teraz ľahšie. 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 ísť! 132 00:06:31,861 --> 00:06:33,182 -Budem Hneď dole, Ma! 133 00:06:33,182 --> 00:06:36,038 Gee svišťanie. 134 00:06:36,038 --> 00:06:42,840 T. O. "Uistite sa, že" - uistite sa, že to, čo? 135 00:06:42,840 --> 00:06:44,770 Čo bolo Malý sirota Annie snaží povedať? 136 00:06:44,770 --> 00:06:46,381 Uistite sa, k čomu? 137 00:06:46,381 --> 00:06:47,825 >> -Randy Má ísť! 138 00:06:47,825 --> 00:06:48,866 By ste prosím vyjsť? 139 00:06:48,866 --> 00:06:49,783 >> -Dobre, Mami! 140 00:06:49,783 --> 00:06:51,786 Hneď som vonku! 141 00:06:51,786 --> 00:06:53,606 Bol som stále bližšie. 142 00:06:53,606 --> 00:06:55,550 Napätie bolo hrozné. 143 00:06:55,550 --> 00:06:57,050 Čo to bolo? 144 00:06:57,050 --> 00:06:59,905 Osud planéty môže visieť na vlásku! 145 00:06:59,905 --> 00:07:01,736 >> -Ralphie, Randy musím ísť! 146 00:07:01,736 --> 00:07:05,680 >> -Budem Mať pravdu von, preboha! 147 00:07:05,680 --> 00:07:07,170 Skoro tam! 148 00:07:07,170 --> 00:07:08,150 Prsty letel. 149 00:07:08,150 --> 00:07:09,980 Moja myseľ bola oceľová pasca. 150 00:07:09,980 --> 00:07:11,496 Každý pórov vibroval. 151 00:07:11,496 --> 00:07:13,268 Bolo skoro jasno! 152 00:07:13,268 --> 00:07:13,767 Áno. 153 00:07:13,767 --> 00:07:14,609 Áno. 154 00:07:14,609 --> 00:07:15,108 Áno. 155 00:07:15,108 --> 00:07:16,449 Áno. 156 00:07:16,449 --> 00:07:20,240 Uistite sa, že piť 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 hajzel. 162 00:07:34,920 --> 00:07:35,890 >> [END Prehrávanie] 163 00:07:35,890 --> 00:07:39,650 >> ROB BOWDEN: Tak to je, ako Ovaltine sa vzťahuje na kryptografiu. 164 00:07:39,650 --> 00:07:42,290 V podstate CS50 len inzeroval Ovaltine, takže sme mohli 165 00:07:42,290 --> 00:07:44,400 Mizerná byť reklama pre Ovaltine. 166 00:07:44,400 --> 00:07:44,900 Dobre. 167 00:07:44,900 --> 00:07:47,120 Takže teraz skutočná počítačová veda. 168 00:07:47,120 --> 00:07:50,670 Pamätajte si, v pondelok sme prestali potápanie hlbšie do reťazcov. 169 00:07:50,670 --> 00:07:52,820 Takže sme sa zaoberali reťazec "Zamyla." 170 00:07:52,820 --> 00:07:55,130 A my sme sa rozpoznávať skutočnosť, že môžeme liečiť 171 00:07:55,130 --> 00:07:57,510 "Zamyla" ako rad znakov. 172 00:07:57,510 --> 00:07:59,740 A pamätajte, že sme sa dozvedeli, držiak notácie. 173 00:07:59,740 --> 00:08:01,995 Takže ak to boli uložené v reťazci "s", potom 174 00:08:01,995 --> 00:08:05,860 ak by sme povedali s konzola 0, by to uveďte list kapitálu Z. 175 00:08:05,860 --> 00:08:09,790 A ak by sme povedali s držiak 1, že naznačujú prvé malými písmenami A, 176 00:08:09,790 --> 00:08:14,220 a tak ďalej až do s držiakom 5, čo by naznačovalo LAST. 177 00:08:14,220 --> 00:08:17,090 >> Teraz si uvedomiť, že Dĺžka tohto reťazca je 6, 178 00:08:17,090 --> 00:08:23,220 ale indexy do reťazca sú 0 až 5, Z cez to trvať. 179 00:08:23,220 --> 00:08:28,650 Tak to teraz zmestí do väčší obrázok pamäti počítača, pamäte RAM. 180 00:08:28,650 --> 00:08:32,020 Takže niekde program, ktorý vediete svoj počítač 181 00:08:32,020 --> 00:08:34,780 je potrebné mať na pamäti, Zamyla niekde v pamäti. 182 00:08:34,780 --> 00:08:36,029 Takže môžem mať dobrovoľníka? 183 00:08:36,029 --> 00:08:38,840 184 00:08:38,840 --> 00:08:40,181 Áno, prosím. 185 00:08:40,181 --> 00:08:50,120 186 00:08:50,120 --> 00:08:51,500 A aké je vaše meno? 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 Teší ma, Deane. 190 00:08:54,910 --> 00:08:58,240 Tak poď sem, a budeme musieť kreslenie 191 00:08:58,240 --> 00:09:00,740 na našom peknom šikovný usporiadanie pamäte. 192 00:09:00,740 --> 00:09:05,950 Teraz by som si myslel, pamäte ako jeden dlhý pruh bajtov, 193 00:09:05,950 --> 00:09:11,090 ale len na účely zobrazenie my budeme Len si zľava doprava, zhora nadol. 194 00:09:11,090 --> 00:09:11,590 OK? 195 00:09:11,590 --> 00:09:22,030 >> Takže som sa ukázať program-- Getstrings.c. 196 00:09:22,030 --> 00:09:25,760 A tak všetko je tento program robí požaduje štyri reťazce 197 00:09:25,760 --> 00:09:28,830 od užívateľa s GetString a potom tlač 198 00:09:28,830 --> 00:09:30,950 čo to ako prvý reťazec vstúpil bol. 199 00:09:30,950 --> 00:09:32,840 Sme ignorovať dva cez štyri. 200 00:09:32,840 --> 00:09:33,610 OK. 201 00:09:33,610 --> 00:09:38,210 Tak tu, keď now-- Aj prvá žiadosť S1. 202 00:09:38,210 --> 00:09:39,740 Tak vy ste počítač. 203 00:09:39,740 --> 00:09:41,680 A ste sa vykonáva getString. 204 00:09:41,680 --> 00:09:46,710 Takže budete požadovať reťazec z ma, a ja hovorím, v poriadku, Deane. 205 00:09:46,710 --> 00:09:47,900 Dajte reťazec "Dean." 206 00:09:47,900 --> 00:09:50,300 >> Takže niekde v pamäti budete mať na pamäti, "Dean." 207 00:09:50,300 --> 00:09:52,160 Tak napíšte ho do pamäte niekam. 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 OK. 211 00:09:59,880 --> 00:10:01,740 Takže teraz sme sa S2. 212 00:10:01,740 --> 00:10:03,869 A s2 bude žiadosť o getString. 213 00:10:03,869 --> 00:10:05,160 Takže budem zadať reťazec. 214 00:10:05,160 --> 00:10:08,720 Chystám sa vstúpiť do "Hannah." 215 00:10:08,720 --> 00:10:10,586 Tak zadajte "Hannah" niekam do pamäte. 216 00:10:10,586 --> 00:10:18,860 217 00:10:18,860 --> 00:10:19,360 Jo. 218 00:10:19,360 --> 00:10:23,000 A-H. 219 00:10:23,000 --> 00:10:25,550 >> OK, tak teraz s3. 220 00:10:25,550 --> 00:10:28,380 A to bude ďalší požiadať getString. 221 00:10:28,380 --> 00:10:37,020 A tak teraz zadať "Máriu." 222 00:10:37,020 --> 00:10:37,520 Dobre. 223 00:10:37,520 --> 00:10:40,980 A potom je tu ešte jedna posledná Žiadosť o getString, S4. 224 00:10:40,980 --> 00:10:42,580 Takže, ja neviem. 225 00:10:42,580 --> 00:10:45,640 Čo tak ideme s antidisestablishmentarianism. 226 00:10:45,640 --> 00:10:49,460 Vstúpte preto, že do pamäte. 227 00:10:49,460 --> 00:10:50,400 Jo. 228 00:10:50,400 --> 00:10:53,970 Takže proste "Rob." 229 00:10:53,970 --> 00:10:54,560 >> OK. 230 00:10:54,560 --> 00:10:58,410 Takže teraz explain-- prečo necháte tieto priestory? 231 00:10:58,410 --> 00:11:01,340 Prečo máte toto prázdne priestor tu, tu a tu? 232 00:11:01,340 --> 00:11:05,170 233 00:11:05,170 --> 00:11:05,670 Áno. 234 00:11:05,670 --> 00:11:09,450 Takže si všimnúť, keď idem tlačiť s1-- takže ak 235 00:11:09,450 --> 00:11:11,890 Mal beh "Hannah" hneď sa vedľa "Dean" 236 00:11:11,890 --> 00:11:14,360 ako vieme, kedy reťazec "dekan" končí? 237 00:11:14,360 --> 00:11:19,470 Takže tlač reťazec s1, môže mať Len tlačený "DeanHannahMariaRob" 238 00:11:19,470 --> 00:11:22,720 ak to nemá žiadne poňatie kedy "Dean" skutočne končí. 239 00:11:22,720 --> 00:11:23,240 >> Dobre. 240 00:11:23,240 --> 00:11:27,650 Takže v pamäti tak, ako sme vlastne predstavujú Tento koniec reťazca 241 00:11:27,650 --> 00:11:29,940 je s spätné lomítko nula. 242 00:11:29,940 --> 00:11:32,620 Takže tento priestor je presne to, čo sme chceli. 243 00:11:32,620 --> 00:11:34,040 To by malo byť spätné lomítko nula. 244 00:11:34,040 --> 00:11:37,690 To bude spätné lomítko nula, a to bude spätné lomítko nula. 245 00:11:37,690 --> 00:11:41,585 A môžete mať vynikajúcu cenu za to, že perfektné dobrovoľník. 246 00:11:41,585 --> 00:11:44,910 247 00:11:44,910 --> 00:11:45,860 Potom sa stres loptičku! 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 Takže tento znak spätné lomítko nula Ako sme sa označujú koniec reťazca. 251 00:11:54,420 --> 00:11:57,120 Je to, ako pri akomkoľvek programe chce vytlačiť reťazec, 252 00:11:57,120 --> 00:11:59,760 Pamätám si, že je to how-- sme sa dozvedeli, Funkcia strlen minulý týždeň? 253 00:11:59,760 --> 00:12:00,940 Dĺžka reťazca? 254 00:12:00,940 --> 00:12:03,770 Je to, ako dĺžka reťazca je schopné určiť, ako dlho je reťazec. 255 00:12:03,770 --> 00:12:05,810 Je to jednoducho stále iterácie cez znaky 256 00:12:05,810 --> 00:12:08,217 až sa nájde spätné lomítka nulovú charakter. 257 00:12:08,217 --> 00:12:11,050 Takže dôležité si uvedomiť o spätné lomítko znak nula 258 00:12:11,050 --> 00:12:14,950 Je to zastúpená všetkých núl v bitoch. 259 00:12:14,950 --> 00:12:18,980 Tak si všimnúť, že toto je odlišná od nulového charakteru. 260 00:12:18,980 --> 00:12:23,010 Takže znak nula, ak si spomeniete V príklade, ktorý dal na konci 261 00:12:23,010 --> 00:12:27,360 prednášky, kde na mape charaktery to-- ako sú mapy kapitálu do 65 rokov. 262 00:12:27,360 --> 00:12:29,130 Malé písmená a mapy 97. 263 00:12:29,130 --> 00:12:30,890 Malé písmená b by bola 98. 264 00:12:30,890 --> 00:12:35,220 Takže číslo 0 mapy to-- vôbec sa mi nepáči poznať z vrcholu mojej hlavy. 265 00:12:35,220 --> 00:12:36,400 44 alebo 45. 266 00:12:36,400 --> 00:12:37,890 Niekde v tomto regióne. 267 00:12:37,890 --> 00:12:40,850 >> Takže znak 0 je skutočný počet. 268 00:12:40,850 --> 00:12:44,350 Ale spätné lomítko nula mapy do všetkých nulových bitov. 269 00:12:44,350 --> 00:12:46,380 Takže tam je rozdiel medzi spätné lomítko nula, 270 00:12:46,380 --> 00:12:48,450 ktorý zavoláme null zakončenie. 271 00:12:48,450 --> 00:12:53,210 Tam je rozdiel medzi spätné lomítko nula a znak nula. 272 00:12:53,210 --> 00:12:54,350 >> Dobre. 273 00:12:54,350 --> 00:12:57,520 Tak hovorí o niečo viac o reťazcoch. 274 00:12:57,520 --> 00:13:01,470 Takže vidíme, tu je to, ako to by byť uložené v pamäti. 275 00:13:01,470 --> 00:13:07,940 Takže táto myšlienka reťazcov ako sekvencie z characters-- takže oficiálnej počítač 276 00:13:07,940 --> 00:13:10,750 Science termín pre postupnosť je pole. 277 00:13:10,750 --> 00:13:13,790 Takže by sme nazvali reťazec rad znakov. 278 00:13:13,790 --> 00:13:17,770 A tam sú vlastne ďalšie dáta typy, ktoré môžeme robiť poľa von. 279 00:13:17,770 --> 00:13:19,975 >> Takže motivovať to, pozrite sa na príklad. 280 00:13:19,975 --> 00:13:22,810 281 00:13:22,810 --> 00:13:29,812 Budeme hovoriť ages0.c budem skopírujte a vložte naše šablóny. 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 Takže v tomto programe to, čo sme chcete urobiť, je chytiť veku 285 00:13:39,378 --> 00:13:45,160 zo v priebehu troch študentov. 286 00:13:45,160 --> 00:13:49,240 Takže vieme, že int age-- a teraz som chcel povedať 0. 287 00:13:49,240 --> 00:13:53,140 Takže budete chcieť povedať age1, ale na účely uvidíme veľmi skoro, 288 00:13:53,140 --> 00:13:57,187 Poviem int age0 rovná GetInt. 289 00:13:57,187 --> 00:13:59,270 Takže rovnaké volanie GetInt že sme boli pomocou I 290 00:13:59,270 --> 00:14:01,561 nestane sa dotazovanie hovoriť, "daj mi vek." 291 00:14:01,561 --> 00:14:03,120 Ale len o to požiada. 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äť traja študenti, ale nakoniec variabilný indexy 295 00:14:14,070 --> 00:14:16,890 sú age0 cez age2. 296 00:14:16,890 --> 00:14:17,550 OK. 297 00:14:17,550 --> 00:14:23,960 Takže tento program bude robiť, čo chceme s age0, age1 a age2, 298 00:14:23,960 --> 00:14:27,670 ale tento program nakoniec pracuje pre tri študentov. 299 00:14:27,670 --> 00:14:28,380 >> OK. 300 00:14:28,380 --> 00:14:32,110 Takže čo teraz, keď chcem štyria študenti? 301 00:14:32,110 --> 00:14:36,000 No, budem musieť ísť späť do môjho kódu, zmeňte komentár, 302 00:14:36,000 --> 00:14:39,840 a teraz máme int age3 rovná GetInt. 303 00:14:39,840 --> 00:14:40,610 OK. 304 00:14:40,610 --> 00:14:43,660 Takže, kto vidí tu problém? 305 00:14:43,660 --> 00:14:47,310 Aký je problém s týmto druhom nastavenia? 306 00:14:47,310 --> 00:14:47,810 Jo. 307 00:14:47,810 --> 00:14:53,110 308 00:14:53,110 --> 00:14:53,610 Jo. 309 00:14:53,610 --> 00:14:56,360 Takže sme vytvárate premenná pre každého študenta. 310 00:14:56,360 --> 00:15:00,140 Teraz, že funguje, ale nakoniec čo keby som teraz 311 00:15:00,140 --> 00:15:06,500 hovoriť, "ja chcem chytiť veku osem študenti alebo 16 študentov 312 00:15:06,500 --> 00:15:11,340 alebo sa však mnoho študentov stovky študentov v CS50 313 00:15:11,340 --> 00:15:16,750 alebo tisíce študentov na akademickej pôde alebo miliardy ľudí na svete? 314 00:15:16,750 --> 00:15:19,130 Takže nakoniec to nie je udržateľný. 315 00:15:19,130 --> 00:15:21,990 Kedykoľvek vidíte sami kopírovanie a vkladanie kódu takto, 316 00:15:21,990 --> 00:15:25,050 mali by ste cítiť celkovo že existuje lepší spôsob. 317 00:15:25,050 --> 00:15:31,290 >> Takže toto je miesto, kde sme zaviedli deklarácia poľa. 318 00:15:31,290 --> 00:15:34,564 Takže keď deklarujete poľa, To je to, čo všeobecný formát 319 00:15:34,564 --> 00:15:35,480 bude vyzerať. 320 00:15:35,480 --> 00:15:36,664 Chystáme sa povedať typu. 321 00:15:36,664 --> 00:15:38,830 a potom budeme uveďte meno tejto rady, 322 00:15:38,830 --> 00:15:41,150 rovnako ako my definovať ľubovoľné danej premennej. 323 00:15:41,150 --> 00:15:43,980 A potom konečne sme pomocou opäť držiak zápis 324 00:15:43,980 --> 00:15:47,480 ale v inom kontexte z ako sme používali skôr. 325 00:15:47,480 --> 00:15:51,860 >> Tak tu to vyzerá ako normálny deklarácie premenných, ktoré sme videli. 326 00:15:51,860 --> 00:15:54,890 Takže sme nevideli int x bodkočiarku. 327 00:15:54,890 --> 00:16:00,020 No teraz by sme mohli niečo vidieť ako int x zátvorkách 5. 328 00:16:00,020 --> 00:16:04,020 A túto myšlienku uvedenie do GetInt program, ktorý sme have-- 329 00:16:04,020 --> 00:16:08,850 takže môžeme realizovať to rovnakým spôsobom. 330 00:16:08,850 --> 00:16:13,630 >> Povedzme, že v CS máme tendenciu používať n ako počet niečo. 331 00:16:13,630 --> 00:16:16,150 Tak tu budeme uložiť štyri študentov. 332 00:16:16,150 --> 00:16:25,960 A teraz môžeme povedať, int vek držiak n- nie tak celkom si to yet-- 333 00:16:25,960 --> 00:16:32,210 deklarovať rad štyroch študentov. 334 00:16:32,210 --> 00:16:38,050 Tak, ako to bude vyzerať v Pamäť bude podobná tejto. 335 00:16:38,050 --> 00:16:39,570 Zrušte to. 336 00:16:39,570 --> 00:16:46,606 A budeme musieť niekam 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 niekde v pamäti. 339 00:16:53,808 --> 00:16:58,760 340 00:16:58,760 --> 00:16:59,727 Jeden, dva, tri, štyri. 341 00:16:59,727 --> 00:17:03,383 342 00:17:03,383 --> 00:17:09,849 Máme štyri celé čísla v rade pre toto pole štyroch celých čísel. 343 00:17:09,849 --> 00:17:13,820 Takže, v súčasnej dobe, čo je veľkosť jedného z týchto polí? 344 00:17:13,820 --> 00:17:17,190 345 00:17:17,190 --> 00:17:17,690 Jo. 346 00:17:17,690 --> 00:17:18,390 To je štyri bajty. 347 00:17:18,390 --> 00:17:19,690 Je to 32 bitov. 348 00:17:19,690 --> 00:17:22,310 Takže teraz toto je niečo iné z poľa, ktoré sme 349 00:17:22,310 --> 00:17:24,020 videli skôr, pole znakov. 350 00:17:24,020 --> 00:17:28,540 V reťazci každý box bol iba jeden bajt, preto, že znak je iba jeden bajt. 351 00:17:28,540 --> 00:17:32,170 Ale s pole celých čísel, z ktorých každý box musí byť štyri byty za účelom 352 00:17:32,170 --> 00:17:34,060 aby sa zmestili celé číslo. 353 00:17:34,060 --> 00:17:37,197 Takže toto je to, čo rad Štyri ints bude vyzerať. 354 00:17:37,197 --> 00:17:40,510 355 00:17:40,510 --> 00:17:43,870 >> A potom späť do kódu. 356 00:17:43,870 --> 00:17:47,460 Teraz chceme skutočne obchod celé čísla do tohto poľa. 357 00:17:47,460 --> 00:17:53,470 Takže teraz je to veľmi, veľmi, veľmi spoločný vzor, ​​ktorý bude v určitom okamihu 358 00:17:53,470 --> 00:17:54,680 stať sa 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 aj menšie než n. 361 00:17:57,940 --> 00:18:01,850 i a a. 362 00:18:01,850 --> 00:18:05,790 Vekovej kategórii i rovná GetInt. 363 00:18:05,790 --> 00:18:15,100 >> Takže to pre sláčiky, tento formát, mali by ste si veľmi zvyknutí. 364 00:18:15,100 --> 00:18:20,010 Tak to je všeobecne, ako budeme iteráciu cez takmer všetky polia. 365 00:18:20,010 --> 00:18:23,690 Teraz si všimnúť tento druh vysvetľuje, prečo od začiatku 366 00:18:23,690 --> 00:18:29,870 sme nemali pre slučky ísť na int i sa rovná 1, aj menšie než alebo rovný 10. 367 00:18:29,870 --> 00:18:34,200 Dôvodom je, že sa vychádza z nula robí túto prácu dobre s poľami. 368 00:18:34,200 --> 00:18:36,270 Takže polia sú nulové indexované. 369 00:18:36,270 --> 00:18:40,360 Ak je táto pole je s dĺžkou 4, indexy sú 0 až 3. 370 00:18:40,360 --> 00:18:42,880 >> Takže cez prvé iterácie tohto cyklu for 371 00:18:42,880 --> 00:18:49,930 budeme sa nastavenie vek držiak 0 rovná volanie GetInt. 372 00:18:49,930 --> 00:18:52,440 Tak čo som sa stalo pre vstup na klávesnici. 373 00:18:52,440 --> 00:18:56,970 V druhom priechodu, my sme nastavenie age1 rovná GetInt. 374 00:18:56,970 --> 00:18:58,230 Po tretie priechod, age2. 375 00:18:58,230 --> 00:18:59,880 Finálna prihrávka age3. 376 00:18:59,880 --> 00:19:05,750 Takže ak sa v prvom prechode slučky Aj zadajte číslo 4 na klávesnici, 377 00:19:05,750 --> 00:19:07,740 potom budeme vložte 4 tu. 378 00:19:07,740 --> 00:19:11,470 Ak sa na druhom prechode I vstúpi 50, budeme dať 50 sem. 379 00:19:11,470 --> 00:19:15,180 Na treťom priechodu by som mohol zadajte negatívny 1 negatívny 1, 380 00:19:15,180 --> 00:19:21,810 a nakoniec, keď som sa vstúpiť 0-- a Teraz si uvedomiť, že to bol index tri. 381 00:19:21,810 --> 00:19:25,350 >> Potom, čo sme slučky chrbát, aj je bude zvýšený na 4. 382 00:19:25,350 --> 00:19:27,770 i už nie je menšia ako n, čo je 4. 383 00:19:27,770 --> 00:19:29,840 A my sme sa vymanili zo slučky. 384 00:19:29,840 --> 00:19:32,578 Takže čo by bolo zlé? 385 00:19:32,578 --> 00:19:38,140 386 00:19:38,140 --> 00:19:38,729 [Nepočuteľných]? 387 00:19:38,729 --> 00:19:39,604 Divákov: [Nepočuteľné] 388 00:19:39,604 --> 00:19:45,880 389 00:19:45,880 --> 00:19:46,400 >> Áno. 390 00:19:46,400 --> 00:19:51,550 Takže pole má iba štyri miesta, čo znamená, že ako indexy 0 až 3. 391 00:19:51,550 --> 00:19:55,630 Takže ak to tak bolo, tak by som vziať na hodnote 4 v určitom okamihu. 392 00:19:55,630 --> 00:20:00,910 veková skupina 4 bude nastavenie nech sa stane čokoľvek, aby sem 393 00:20:00,910 --> 00:20:02,920 na to, čo musím povedať, zadajte 6. 394 00:20:02,920 --> 00:20:05,010 To bude možné toto nastavenie zmeniť na 6. 395 00:20:05,010 --> 00:20:06,560 >> Ale my nevieme, čo je to tu. 396 00:20:06,560 --> 00:20:08,836 To nie je pamäť že sme mali prístup k. 397 00:20:08,836 --> 00:20:10,710 Takže ak si pamätáte z predchádzajúca prednáška, 398 00:20:10,710 --> 00:20:14,350 bol vytlačiť hodnoty Zamyla a v určitom okamihu narazil túto segmentáciu 399 00:20:14,350 --> 00:20:17,990 porucha. Takže budete pravdepodobne vidieť Mnoho segmentácia chyby, ako si 400 00:20:17,990 --> 00:20:20,530 implementovať niektoré z problémových sád. 401 00:20:20,530 --> 00:20:24,950 Ale to je jeden zo spôsobov, ktorými môžete stretnúť s segmentácie 402 00:20:24,950 --> 00:20:28,540 chyba, keď začnete prístupu pamäť spôsobom, ktorý by ste nemali byť. 403 00:20:28,540 --> 00:20:34,117 Takže sme nemali prístup k toto umiestnenie, 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šie. 406 00:20:40,190 --> 00:20:45,820 Teraz tam je ešte malý Problém s týmto kódom. 407 00:20:45,820 --> 00:20:50,720 A to je v podstate, že sme zamrzla na štyri študentov. 408 00:20:50,720 --> 00:20:52,940 Teraz, keď chcem použiť osem študentov, OK. 409 00:20:52,940 --> 00:20:54,350 Nie je to tak veľký obchod. 410 00:20:54,350 --> 00:20:58,120 Môžem ísť dovnútra, zmeňte komentovať, a zmeňte n. 411 00:20:58,120 --> 00:20:59,760 Teraz to bude fungovať s ôsmimi študentmi. 412 00:20:59,760 --> 00:21:02,190 Ak by som to kompilácie a spustiť to, bude to show me-- 413 00:21:02,190 --> 00:21:07,870 to bude požadovať celé čísla pre osem študenti a to bude jednoducho fungovať. 414 00:21:07,870 --> 00:21:11,850 Ale je to menej ako ideálne musieť překompilovat programu, zakaždým 415 00:21:11,850 --> 00:21:15,960 Chcem zmeniť počet študentov že chcem vstúpiť veky pre. 416 00:21:15,960 --> 00:21:22,990 >> Takže konečný zlepšenie na to, ako uvidíme here-- sme 417 00:21:22,990 --> 00:21:26,177 chystá požiadať o počte ľudí. 418 00:21:26,177 --> 00:21:28,010 Tu máme rad ľudí v izbách 419 00:21:28,010 --> 00:21:29,880 alebo akékoľvek vekové kategórie ľudí v miestnosti. 420 00:21:29,880 --> 00:21:33,300 Ale budeme požadovať číslo ľudí v miestnosti od užívateľa. 421 00:21:33,300 --> 00:21:36,171 Tak to je presne rovnaký do-while slučky, že sme nevideli. 422 00:21:36,171 --> 00:21:37,920 Je to ten istý do-while, ktorý ste 423 00:21:37,920 --> 00:21:40,050 môže byť vykonávanie na problém sade. 424 00:21:40,050 --> 00:21:43,102 Tak dlho, ako sú Zadanie n menšie ako 1, 425 00:21:43,102 --> 00:21:45,310 takže to musí byť na Najmenej jedna osoba v miestnosti. 426 00:21:45,310 --> 00:21:47,407 Tak dlho, ako sú Zadanie n menšie ako 1, 427 00:21:47,407 --> 00:21:48,990 potom budeme mať znova pýtať. 428 00:21:48,990 --> 00:21:50,906 Prosím, zadajte číslo ľudí v miestnosti. 429 00:21:50,906 --> 00:21:53,550 Teraz, akonáhle budeme mať číslo ľudí v room-- 430 00:21:53,550 --> 00:21:58,020 takže som mohol dostať, že existuje sú 200 ľudí v tejto miestnosti. 431 00:21:58,020 --> 00:22:05,480 Potom tu budeme prísť a deklarovať poľa veľkosti 200. 432 00:22:05,480 --> 00:22:10,220 Sme deklarovanie pole, ktoré je dosť veľká držať 200 vekové kategórie. 433 00:22:10,220 --> 00:22:15,370 Coming dole, je to pre sláčiky že sa dostanete veľmi zvyknutí. 434 00:22:15,370 --> 00:22:19,490 Takže iterácie nad týmto poľom, priradenie ku každému umiestnenie 435 00:22:19,490 --> 00:22:23,020 sa tým, že pole celé číslo, a potom nakoniec tu sme 436 00:22:23,020 --> 00:22:28,340 len na to príklad iterácie počas tohto poľa, nie priradiť hodnoty, 437 00:22:28,340 --> 00:22:30,150 ale aby prístup k hodnotám. 438 00:22:30,150 --> 00:22:33,810 >> Takže tu vidíme, že hovoria, o rok neskôr, 439 00:22:33,810 --> 00:22:40,470 osoba% budem% i rokov, kde i je aj plus 1 prvej%. 440 00:22:40,470 --> 00:22:43,010 Tak som sa na tento index variabilný. 441 00:22:43,010 --> 00:22:49,420 A druhá% i bude, že je hodnota uložená v vekov poli plus 1. 442 00:22:49,420 --> 00:22:54,217 Tak toto plus 1 je len preto, že sme saying-- tento plus 1, veku Aj s 1. 443 00:22:54,217 --> 00:22:57,050 Toto plus 1 je len preto, že sme povediac: Oddnes 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 prečo je to aj plus 1? 446 00:23:01,080 --> 00:23:04,064 Prečo máme plus 1 tam? 447 00:23:04,064 --> 00:23:04,564 Jo. 448 00:23:04,564 --> 00:23:07,410 449 00:23:07,410 --> 00:23:07,930 Áno. 450 00:23:07,930 --> 00:23:10,510 Takže pamätajte polia sú indexované nula. 451 00:23:10,510 --> 00:23:14,840 Takže ak budeme tlače toto von pre niekto len čítať výstup, 452 00:23:14,840 --> 00:23:19,380 potom zrejme chcú vidieť niečo ako je človek jeden, osoba číslo jedna, 453 00:23:19,380 --> 00:23:21,160 bude 20 rokov. 454 00:23:21,160 --> 00:23:23,570 Osoba číslo dva bude 15 rokov. 455 00:23:23,570 --> 00:23:27,420 Radšej nie vidieť osobu číslo nula je 15 rokov. 456 00:23:27,420 --> 00:23:36,460 >> Takže kompilácie toto a vidí to, čo práve to vyzerá jako-- vytvoriť nejaký priestor. 457 00:23:36,460 --> 00:23:43,560 Vykonajte veku od kompiluje. 458 00:23:43,560 --> 00:23:45,080 Beh vekové kategórie. 459 00:23:45,080 --> 00:23:46,580 Vidíme, počet ľudí v miestnosti. 460 00:23:46,580 --> 00:23:48,850 Tak som si povedal, že sú traja ľudia v miestnosti. 461 00:23:48,850 --> 00:23:54,000 Age of osoba číslo jedna, povedzme, 15, 20, 25. 462 00:23:54,000 --> 00:23:59,680 A teraz budem hovoriť za rok od Teraz budú 16, 21, 26. 463 00:23:59,680 --> 00:24:02,900 Pozrime sa, že to funguje s n, ktorý nie je rovné 3. 464 00:24:02,900 --> 00:24:07,940 Takže keď poviem, že počet ľudí, ktorí ich 5, jedným, dva, tri, dva, jedna, o rok neskôr 465 00:24:07,940 --> 00:24:11,170 oni budú dve, tri, štyri, tri, dva rokov. 466 00:24:11,170 --> 00:24:16,500 Takže som mohol, rovnako ako ľahko n byť 10,000. 467 00:24:16,500 --> 00:24:21,270 Teraz budem sedieť tu celkom chvíľu vstupu do staroby, ale to funguje. 468 00:24:21,270 --> 00:24:26,000 >> Takže teraz sme niekde v pamäti majú celý rad veľkosti 10,000, 469 00:24:26,000 --> 00:24:28,830 tak nakoniec 40.000 bajtov, pretože tam sú 470 00:24:28,830 --> 00:24:31,222 štyri byty pre každú z týchto celých čísel. 471 00:24:31,222 --> 00:24:33,180 Takže je tu rad veľkosť 10,000 kde môžeme 472 00:24:33,180 --> 00:24:36,201 uložiť vek tých 10.000 ľudí. 473 00:24:36,201 --> 00:24:36,700 Dobre. 474 00:24:36,700 --> 00:24:40,070 Otázky týkajúce sa niečo z toho? 475 00:24:40,070 --> 00:24:41,892 Jo. 476 00:24:41,892 --> 00:24:43,350 Čo keď ste dal záporné číslo? 477 00:24:43,350 --> 00:24:44,870 Pozrime sa, čo sa stane. 478 00:24:44,870 --> 00:24:49,320 Takže v tomto konkrétnom číslom case-- ľudí v miestnosti, negatívneho. 479 00:24:49,320 --> 00:24:52,580 Odmietol, že, pretože tu žijeme 480 00:24:52,580 --> 00:24:57,180 k manipulácii s tým, že ak n je menšie ako jedna, že budeme znova pýtať. 481 00:24:57,180 --> 00:25:01,780 Ak sa pokúsite vyhlásiť poľa negatívne veľkosti, 482 00:25:01,780 --> 00:25:03,950 to všeobecne nefunguje. 483 00:25:03,950 --> 00:25:05,570 >> Takže poďme skúsiť. 484 00:25:05,570 --> 00:25:08,000 Poďme ignorovať hocičo hodnota sa vstup pre n 485 00:25:08,000 --> 00:25:10,571 a len povedať, int veku od negatívnej jeden. 486 00:25:10,571 --> 00:25:12,410 Uvidíme, či to vôbec zostavuje. 487 00:25:12,410 --> 00:25:14,100 Nie som si istý. 488 00:25:14,100 --> 00:25:14,920 Nie. 489 00:25:14,920 --> 00:25:18,280 Takže veku je deklarovaný ako pole s negatívnym veľkosti. 490 00:25:18,280 --> 00:25:22,540 Takže vopred uznáva poľa nemôže mať negatívny veľkosti a odmieta ju. 491 00:25:22,540 --> 00:25:26,840 Teraz, keď sme nemali zachádzať Tento Do-while správne, 492 00:25:26,840 --> 00:25:28,810 ak sme neboli kontrolu ak n je menšie ako 1-- 493 00:25:28,810 --> 00:25:32,690 Povedzme, že práve ani to mať vôbec 494 00:25:32,690 --> 00:25:35,940 a namiesto toho sme sa len chytiť celé číslo. 495 00:25:35,940 --> 00:25:40,710 Bez ohľadu na to, čo to je celé číslo, prehlasujeme pole tejto veľkosti. 496 00:25:40,710 --> 00:25:44,250 >> Takže kompilátor nemôže možno teraz sťažujú. 497 00:25:44,250 --> 00:25:48,780 Ak by som zostaviť tohle-- takže nemôže sťažovať, 498 00:25:48,780 --> 00:25:51,480 pretože to nemôže vedieť, že som chystá vstúpiť záporné číslo, 499 00:25:51,480 --> 00:25:52,550 ktoré by mohli byť neplatné. 500 00:25:52,550 --> 00:25:54,633 Pre všetkých to vie, možno zadajte kladné číslo, 501 00:25:54,633 --> 00:25:56,000 čo je úplne v poriadku. 502 00:25:56,000 --> 00:26:01,090 Tak som si predstaviť, keď som zadať záporné 1 ľudia v miestnosti, segmentácia chybu. 503 00:26:01,090 --> 00:26:06,040 >> Tak ok. 504 00:26:06,040 --> 00:26:13,160 Takže poďme sa pridať tento späť len aby to, čo to pôvodne bolo. 505 00:26:13,160 --> 00:26:15,640 Tak, aby vekové kategórie. 506 00:26:15,640 --> 00:26:18,120 A teraz, keď chcem skúsiť Negatívny age-- Takže poďme 507 00:26:18,120 --> 00:26:19,710 hovoria, že päť ľudí v miestnosti. 508 00:26:19,710 --> 00:26:23,180 Age of osoba číslo jedna je negatívny 4, človek troch 509 00:26:23,180 --> 00:26:26,500 je nula, človek three-- OK. 510 00:26:26,500 --> 00:26:29,850 Takže tu, o rok neskôr, osoba číslo z nich bude negatívne, 3 rokov. 511 00:26:29,850 --> 00:26:32,830 Takže asi nemá zmysel. 512 00:26:32,830 --> 00:26:37,220 Ale to je len preto, že hľadáte na kód všetko robíme 513 00:26:37,220 --> 00:26:40,260 žiada GetInt. 514 00:26:40,260 --> 00:26:44,110 >> Teraz, keď sme sa mal Funkcie GetPositiveInt 515 00:26:44,110 --> 00:26:49,690 alebo sme proste len urobil druh rovnakého cyklu while tam dole, 516 00:26:49,690 --> 00:26:52,340 potom by to fungovať úplne v poriadku. 517 00:26:52,340 --> 00:26:54,200 Ale v tomto konkrétnom prípad, my jednoducho nemajú 518 00:26:54,200 --> 00:26:57,772 stalo, že sa manipulácia záporné hodnoty. 519 00:26:57,772 --> 00:26:59,147 Akékoľvek ďalšie otázky týkajúce sa polí? 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 >> Takže sme teraz videli polia. 523 00:27:09,380 --> 00:27:12,500 A budeme musieť použiť to pre argumenty príkazového riadku. 524 00:27:12,500 --> 00:27:14,680 Takže problém nastaviť two-- Viem, že mnohí z vás 525 00:27:14,680 --> 00:27:18,040 by mohlo byť stále pracuje na probléme set človek, ale problém nastaviť dve sa blíži. 526 00:27:18,040 --> 00:27:22,260 V problém nastaviť dve, budete je potrebné zaoberať s reťazcami, poľami, 527 00:27:22,260 --> 00:27:23,950 a argumenty príkazového riadku. 528 00:27:23,950 --> 00:27:26,270 >> Takže aké sú argumenty príkazového riadku? 529 00:27:26,270 --> 00:27:29,570 Teraz môžete vidieť tu dole malý teaser presne to, čo je 530 00:27:29,570 --> 00:27:30,950 bude deje. 531 00:27:30,950 --> 00:27:32,950 Vidíme int main, INC argc, string argv zátvorkách. 532 00:27:32,950 --> 00:27:34,560 533 00:27:34,560 --> 00:27:38,130 Takže najprv poďme sa snaží interpretovať čo to sa snaží povedať. 534 00:27:38,130 --> 00:27:40,800 A teraz, OK. 535 00:27:40,800 --> 00:27:44,637 >> Takže na príkazovom riadku, mali by ste byť zvyknúť si na niektoré z týchto príkazov 536 00:27:44,637 --> 00:27:48,580 teraz, a pravdepodobne ste spustenie CD v termináli pred. 537 00:27:48,580 --> 00:27:52,100 Takže keď povieme cd pset1, viete, že by 538 00:27:52,100 --> 00:27:55,050 sa mení do adresára pset1. 539 00:27:55,050 --> 00:27:59,120 >> Teraz si všimnite, že ste nikdy napísal program, ako je tento predtým. 540 00:27:59,120 --> 00:28:03,120 Každý program, ktorý ste napísali, by ste spustiť, povedzme, bodka lomítko Mario, 541 00:28:03,120 --> 00:28:06,779 dot lomítko chamtivý, a potom ju Možno výzvu pre vstup. 542 00:28:06,779 --> 00:28:08,570 No, to nie je to, čo Zmeňte adresár robí. 543 00:28:08,570 --> 00:28:12,770 Pri spustení cd, nie je potom hovorí, ktoré adresáre chcete cd do? 544 00:28:12,770 --> 00:28:17,200 Namiesto toho, stačí povedať, cd pset1, a to len ide do adresára pset1. 545 00:28:17,200 --> 00:28:20,430 >> Takže podobne máme ďalšie príklady. 546 00:28:20,430 --> 00:28:21,540 aby ahoj. 547 00:28:21,540 --> 00:28:25,760 Pri spustení vykonať, nie je potom hovorí, program, ktorý by ste chceli robiť? 548 00:28:25,760 --> 00:28:29,620 Stačí povedať, u príkazový riadok, aby ahoj. 549 00:28:29,620 --> 00:28:31,060 >> Move je ďalším príkladom. 550 00:28:31,060 --> 00:28:34,840 Ten sme sa pohybom mario.c súboru o jednu úroveň. 551 00:28:34,840 --> 00:28:38,060 Takže teraz vieme, že s týmto príkladom Sme naozaj okolo dva argumenty. 552 00:28:38,060 --> 00:28:42,090 Tam je mario.c ako prvý argument, a dot dot je druhý argument. 553 00:28:42,090 --> 00:28:46,140 A potom, keď spustiť, aby vás, vidieť, že naozaj dlhú príkaz line-- 554 00:28:46,140 --> 00:28:50,580 že naozaj dlho povel tlačený na príkazovom riadku. 555 00:28:50,580 --> 00:28:53,590 Tak dlho command-- tento je len kúsok časť, 556 00:28:53,590 --> 00:28:56,090 ale teraz máme tri argumenty príkazového riadku. 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 sú príkazového riadku argumenty, argumenty 559 00:29:03,497 --> 00:29:05,580 že ste okolo u príkazového riadku, takže to 560 00:29:05,580 --> 00:29:08,680 nemusí byť výzva pri spustení programu. 561 00:29:08,680 --> 00:29:13,090 Bolo by to frustrujúce, keď pri ste spustili zvoniť to povedal: "OK, 562 00:29:13,090 --> 00:29:15,630 ktorý program-- ktorý Súbor ste kompiláciu? 563 00:29:15,630 --> 00:29:17,010 Hello.c. 564 00:29:17,010 --> 00:29:19,440 Čo by ste vlajky chceli vstúpiť? pomlčka o. 565 00:29:19,440 --> 00:29:21,190 Čo by si rád súbor byť nazývaný? 566 00:29:21,190 --> 00:29:21,690 ahoj. 567 00:29:21,690 --> 00:29:25,290 Nie, stačí spustiť rinčanie pomlčka o ahoj hello.c. 568 00:29:25,290 --> 00:29:28,820 >> Takže sa obzrel na to. 569 00:29:28,820 --> 00:29:32,920 Teraz argc-- argc je argument počíta. 570 00:29:32,920 --> 00:29:36,620 Je to počet príkazového riadku Argumenty vstúpil na príkazovom riadku. 571 00:29:36,620 --> 00:29:39,720 No, technicky argv-- tlačidlá v znamená vektor, 572 00:29:39,720 --> 00:29:41,460 čo v podstate znamená, že pole. 573 00:29:41,460 --> 00:29:42,680 Ale môžete ignorovať. 574 00:29:42,680 --> 00:29:47,540 Argv-- máme reťazec argv, takže reťazec argv zátvorkách. 575 00:29:47,540 --> 00:29:50,150 Takže to je ďalšia forma brackets ste ešte nevideli. 576 00:29:50,150 --> 00:29:52,300 Takže sme videli držiak notácie, keď sme povedali, 577 00:29:52,300 --> 00:29:53,970 ako, string s rovná Zamyla. 578 00:29:53,970 --> 00:29:56,910 s konzola 0 pristupuje znak Z. 579 00:29:56,910 --> 00:30:00,720 >> Tiež sme videli, keď držiaky sme si povedali, int veku bracketing 5. 580 00:30:00,720 --> 00:30:03,160 Ten deklaroval poľa veľkosti 5. 581 00:30:03,160 --> 00:30:06,280 Takže tu je verzia z konzoly sme ešte nevideli. 582 00:30:06,280 --> 00:30:09,630 Takže tento druh reťazca argv, ktorý by bolo úplne oboznámení 583 00:30:09,630 --> 00:30:12,050 že by to jednoducho byť reťazec. 584 00:30:12,050 --> 00:30:14,520 Teraz zátvorkách že sa jedná o pole. 585 00:30:14,520 --> 00:30:19,920 Takže string argv držiaky prostriedky že argv je pole reťazcov. 586 00:30:19,920 --> 00:30:22,540 Teraz technicky reťazec je pole znakov. 587 00:30:22,540 --> 00:30:26,400 Takže toto je teraz pole z poľa znakov. 588 00:30:26,400 --> 00:30:31,490 Ale je to oveľa jednoduchšie premýšľať o tom, to len ako pole reťazcov. 589 00:30:31,490 --> 00:30:34,900 >> Tak prečo by mohlo byť prázdne zátvorky? 590 00:30:34,900 --> 00:30:38,170 Rovnako ako, prečo nemôžeme povedať, držiak 5, držiak n? 591 00:30:38,170 --> 00:30:40,700 592 00:30:40,700 --> 00:30:41,200 Jo. 593 00:30:41,200 --> 00:30:43,731 594 00:30:43,731 --> 00:30:44,230 Jo. 595 00:30:44,230 --> 00:30:46,396 Nevieme, koľko vstupy tam sú bude. 596 00:30:46,396 --> 00:30:53,560 Takže ak sa pozrieme na zvonenie príklad, hovoríme zvoniť pomlčku o ahoj hello.c. 597 00:30:53,560 --> 00:30:56,710 V tomto konkrétnom prípade, že sa stalo byť tri argumenty príkazového riadku. 598 00:30:56,710 --> 00:31:00,522 A tak brackets-- uvidíme v druhej nebolo by to tri. 599 00:31:00,522 --> 00:31:01,730 Technicky by to štyri. 600 00:31:01,730 --> 00:31:04,030 Ale konzoly, že by sme povedzme, sú tri. 601 00:31:04,030 --> 00:31:08,220 Ale teraz, keď sme sa pozreli na cestách mario.c dot dot, zátvorky 602 00:31:08,220 --> 00:31:09,760 by sme chceli dať dva v nich. 603 00:31:09,760 --> 00:31:12,884 >> A existuje veľa príkazov, ktoré majú rôzny počet príkazového riadku 604 00:31:12,884 --> 00:31:13,620 argumenty. 605 00:31:13,620 --> 00:31:17,430 Takže to, čo táto verzia držiak notácie označuje 606 00:31:17,430 --> 00:31:20,820 je to, že argv je pole reťazcov. 607 00:31:20,820 --> 00:31:24,360 Ale my nevieme, koľko reťazce sú v tomto poli. 608 00:31:24,360 --> 00:31:27,090 A ako potom viete, ako mnoho reťazcov sú v poli? 609 00:31:27,090 --> 00:31:28,870 To je celý zmysel argc. 610 00:31:28,870 --> 00:31:32,300 argc nám hovorí, ako dlho argv je. 611 00:31:32,300 --> 00:31:36,500 >> Takže posledná vec, ktorú by ste mali mať na myseľ je to, technicky, 612 00:31:36,500 --> 00:31:40,820 príkaz sám sa počíta ako jeden o argumenty príkazového riadka. 613 00:31:40,820 --> 00:31:45,330 Takže cd pset1, sú tam dva argumenty príkazového riadku. 614 00:31:45,330 --> 00:31:50,260 Program sám o sebe, CD, a potom skutočný argument, časť, pset1. 615 00:31:50,260 --> 00:31:54,490 Akýkoľvek program, ktorý ste napísali tak ďaleko bolo jednou z príkazového riadku argument-- bodku 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 príkazového riadka. 618 00:31:57,350 --> 00:32:00,900 >> Takže teraz pozrieme na zazvonením pomlčka o ahoj hello.c. 619 00:32:00,900 --> 00:32:01,905 Takže to, čo 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žiak 0 rinčanie. 624 00:32:12,140 --> 00:32:15,630 argv držiak 1 je pomlčka 0. 625 00:32:15,630 --> 00:32:21,870 argv držiak 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úce sa to, a potom sa pozrite sa na niektoré programové príklady. 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 Takže sa budeme sa pozrieť na hello3.c. 630 00:32:36,260 --> 00:32:41,890 Tak to by malo byť známy z jeden z prvých príkladov c 631 00:32:41,890 --> 00:32:45,800 sme mali kde by sme len povedať, ahoj svet, ale teraz je to všeobecnejší. 632 00:32:45,800 --> 00:32:52,300 Tak tu hovoríme ahoj % S spätné lomítko n argv držiak 1. 633 00:32:52,300 --> 00:32:57,440 Notice-- tak až do tohto bodu, to je aký súbor má šablóna vyzerá. 634 00:32:57,440 --> 00:33:01,800 Mal som int main (void), a potom by som niečo v hlavnej funkcie. 635 00:33:01,800 --> 00:33:05,100 Teraz miesto, hneď začneme zaoberať s argumentmi príkazového riadku, 636 00:33:05,100 --> 00:33:07,890 musíme štátu A rôzna forma main. 637 00:33:07,890 --> 00:33:11,930 >> Takže pri pohľade na hello3 Opäť platí, že hlavné deje 638 00:33:11,930 --> 00:33:15,990 aby sa dva argumenty now-- int argc, počet argumenty príkazového riadku, 639 00:33:15,990 --> 00:33:20,970 a string argv zátvorke, skutočná reťazca zadaný na príkazovom riadku. 640 00:33:20,970 --> 00:33:26,560 Takže som to nezmení šablóna, aby odrážal túto skutočnosť. 641 00:33:26,560 --> 00:33:29,060 Teraz, kedykoľvek budete písať programu, ak nemáte 642 00:33:29,060 --> 00:33:33,720 treba žiadneho osobitného príkazového riadku argumenty, potom stačí použiť int main (void). 643 00:33:33,720 --> 00:33:37,070 Ale teraz, keď píšete Argument programy príkazového riadka, ktoré 644 00:33:37,070 --> 00:33:40,350 budete robiť o probléme nastaviť two-- takže teraz, že ste beží 645 00:33:40,350 --> 00:33:42,630 programy, ktoré potrebujú, aby sa argumenty príkazového riadku, 646 00:33:42,630 --> 00:33:45,250 musíte mať hlavný tohto formulára. 647 00:33:45,250 --> 00:33:51,290 >> Takže here-- to je veľká použitie o argument príkazového riadku. 648 00:33:51,290 --> 00:33:54,100 Takže tlače argv 1. 649 00:33:54,100 --> 00:33:59,180 OK, takže poďme kompilovať a spustiť tento program. 650 00:33:59,180 --> 00:34:02,440 Urobiť hello3. 651 00:34:02,440 --> 00:34:03,570 Zostavuje. 652 00:34:03,570 --> 00:34:06,870 Dot lomítko hello3. 653 00:34:06,870 --> 00:34:08,920 A povedzme, "Rob." 654 00:34:08,920 --> 00:34:10,760 Dobrý deň, Rob. 655 00:34:10,760 --> 00:34:14,940 Keď poviem, "ahoj Mária:" Ahoj Maria. 656 00:34:14,940 --> 00:34:15,719 Dobrý deň, Maria. 657 00:34:15,719 --> 00:34:18,639 Hannah stále hovorí, "ahoj Maria, "pretože ja nie som 658 00:34:18,639 --> 00:34:21,340 robiť niečo s naším argv 2. 659 00:34:21,340 --> 00:34:22,590 Argv 2 teraz bude "Hannah." 660 00:34:22,590 --> 00:34:25,030 Argc by byť 3. 661 00:34:25,030 --> 00:34:27,735 Čo keď som to urobil? 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čne dotkol na skutočnosti, že technicky, GetString 665 00:34:38,760 --> 00:34:42,429 môže vrátiť null, ale budeme dostať oveľa viac do toho, čo null v skutočnosti je. 666 00:34:42,429 --> 00:34:47,449 Ale vezmite si ju ako vec Skutočnosť, že nie je všeobecne zlá. 667 00:34:47,449 --> 00:34:50,179 Urobili sme niečo zlé, ak je to tlač "ahoj null." 668 00:34:50,179 --> 00:34:52,179 A dôvod, prečo sme to urobili niečo zle je-- dobre, 669 00:34:52,179 --> 00:34:56,179 keď som bežal dot lomka hello3, argc bol 1. 670 00:34:56,179 --> 00:34:59,680 Tak, že znamená, že dĺžka argv bola 1. 671 00:34:59,680 --> 00:35:05,110 Ak je pole je o dĺžke 1, jedinou platnou index je nulová. 672 00:35:05,110 --> 00:35:08,550 A tak tu argv 1 je vonku rozsah tohto poľa. 673 00:35:08,550 --> 00:35:13,410 Bolo to podobné ako predtým, keď som sa snažil pre uloženie 6 mimo konca poľa. 674 00:35:13,410 --> 00:35:18,100 Takže sa snažím pristupovať niečo mimo argv počíta, 675 00:35:18,100 --> 00:35:21,340 a my sme stále null. 676 00:35:21,340 --> 00:35:24,360 >> Takže lepšia verzia to, zlepšenie, 677 00:35:24,360 --> 00:35:27,010 je výslovne kontrola argc. 678 00:35:27,010 --> 00:35:33,580 Takže ak argc rovná 2, to znamená, že sme bežali niečo ako bodka lomítko hello3 Rob. 679 00:35:33,580 --> 00:35:36,840 A to bude tlačiť "ahoj Rob." 680 00:35:36,840 --> 00:35:39,850 Ak argc nerovná 2, potom je to len bude 681 00:35:39,850 --> 00:35:42,560 ignorovať, čo ste dal Na argument príkazového riadku 682 00:35:42,560 --> 00:35:43,960 ako argumenty príkazového riadku. 683 00:35:43,960 --> 00:35:47,168 Alebo ak ste si ho nedali vôbec žiadne, je to len tak ignorovať to a len povedať, 684 00:35:47,168 --> 00:35:47,960 "Ahoj." 685 00:35:47,960 --> 00:35:51,490 >> Takže zostavovanie toto. 686 00:35:51,490 --> 00:35:54,500 Urobiť hello4. 687 00:35:54,500 --> 00:35:56,790 A beh hello4. 688 00:35:56,790 --> 00:36:00,010 Running to takto, čo by malo byť vytlačené? 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 Čo hello4 Rob? 692 00:36:05,870 --> 00:36:06,950 "Dobrý deň, Rob." 693 00:36:06,950 --> 00:36:10,580 A konečne, ahoj Rob Maria je len "ahoj Ty" znovu, 694 00:36:10,580 --> 00:36:13,677 preto, že ste sa naozaj vstúpiť niečo, čo sa očakáva. 695 00:36:13,677 --> 00:36:15,510 Zadali ste viac mien , Než to mohol zvládnuť, 696 00:36:15,510 --> 00:36:19,500 tak to proste prevezme ahoj ste správanie. 697 00:36:19,500 --> 00:36:23,040 Takže otázky o toto? 698 00:36:23,040 --> 00:36:26,290 Alebo argumenty príkazového riadku? 699 00:36:26,290 --> 00:36:28,690 >> OK, takže pri pohľade na pár ďalších príkladov použitia 700 00:36:28,690 --> 00:36:34,230 príkazového riadku arguments-- najprv sme argv pomlčka 1 bod c. 701 00:36:34,230 --> 00:36:38,510 Takže komentáre dať preč, čo tento program by mal robiť. 702 00:36:38,510 --> 00:36:42,460 Nevšimnúť now-- to pre sláčiky, to presne zodpovedá vzoru 703 00:36:42,460 --> 00:36:43,390 Som hovoril predtým. 704 00:36:43,390 --> 00:36:46,240 Práve sme sa stalo, že sa za použitia argc miesto n. 705 00:36:46,240 --> 00:36:48,880 Teraz argc je naozaj n. 706 00:36:48,880 --> 00:36:51,260 Je to dĺžka argv pole. 707 00:36:51,260 --> 00:36:59,600 Takže sú iterácie cez argv array printf-ing každú argv hodnotu. 708 00:36:59,600 --> 00:37:04,730 >> Takže keď som sa, aby to. 709 00:37:04,730 --> 00:37:08,232 Vykonajte 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áve beží to, ho postery dot lomítko argv 1 713 00:37:15,530 --> 00:37:18,500 pretože to bol jediný príkazového riadku argument-- názov programu. 714 00:37:18,500 --> 00:37:22,080 Tam bude vždy na least-- argc nesmie byť menší ako jedna, 715 00:37:22,080 --> 00:37:25,910 pretože tam bude vždy aspoň je názov programu spustiť. 716 00:37:25,910 --> 00:37:32,040 Takže argv 1 Rob bude tlačiť argv 1 a potom sa na novom riadku "Rob." 717 00:37:32,040 --> 00:37:36,350 >> Takže v prvom iteráciu tejto slučky, i je 0. 718 00:37:36,350 --> 00:37:39,090 Argv 0 je názov 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 potom argv 1 je môj prvý argument príkazového riadku, ktorý je Rob. 721 00:37:43,770 --> 00:37:45,920 V tomto bode, sme sa rovnajú argc. 722 00:37:45,920 --> 00:37:48,210 Lámeme zo slučky a budeme hotoví. 723 00:37:48,210 --> 00:37:53,940 Takže to bude fungovať pre ľubovoľný Počet argumenty príkazového riadku. 724 00:37:53,940 --> 00:37:58,550 Všimnite si, že vytlačí argv 0, argv 1, argv 2, argv 3, argv 4. 725 00:37:58,550 --> 00:38:00,150 A nie je argv 5. 726 00:38:00,150 --> 00:38:01,460 argc je rovné 5 ,. 727 00:38:01,460 --> 00:38:06,960 Takže na argc-- na i rovná 5, lámeme zo slučky. 728 00:38:06,960 --> 00:38:07,950 OK. 729 00:38:07,950 --> 00:38:11,315 Takže otázky, týkajúce že predtým, než sme pozrite sa na viac komplexné prí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 Dobre. 733 00:38:17,830 --> 00:38:20,610 Takže sme stále tlač príkazového riadku argumenty. 734 00:38:20,610 --> 00:38:23,170 Ale teraz musíme všimnúť vnorené pre slučku. 735 00:38:23,170 --> 00:38:24,670 Takže to, čo sa to robí? 736 00:38:24,670 --> 00:38:28,430 Takže prvý slučka robí presne to, čo robil predtým. 737 00:38:28,430 --> 00:38:30,950 Sme stále viac ako cyklovanie každý argument príkazového riadku, 738 00:38:30,950 --> 00:38:34,260 ale teraz tento druhý loop-- máme Tiež videl niečo také predtým. 739 00:38:34,260 --> 00:38:38,600 Keď bol iterácie nad Zamyla vytlačiť Z-A-M-Y-L-A. 740 00:38:38,600 --> 00:38:44,816 Takže to druhá slučka pre int j rovná 0, n sa rovná strlen z argv držiaka i. 741 00:38:44,816 --> 00:38:49,170 >> Takže poďme sa najprv, že pre the-- poďme prejsť. 742 00:38:49,170 --> 00:38:53,560 Poďme si, že to, čo by počítač robiť, keď som bežal tento program ako práve dot 743 00:38:53,560 --> 00:38:56,030 lomka argv pomlčka 2. 744 00:38:56,030 --> 00:39:03,590 Takže keď som bežal tento kód, a potom argc bude rovný 1. 745 00:39:03,590 --> 00:39:07,050 A string argv-- existuje iba bude jedným index v argv, 746 00:39:07,050 --> 00:39:12,370 a že to bude rovnať dot lomítko argv 2-- názov programu. 747 00:39:12,370 --> 00:39:19,170 >> OK, tak teraz som sa rovná 0, aj menej ako 1, i a plus pre int j = 0, 748 00:39:19,170 --> 00:39:23,880 n sa rovná strlen z argv držiaka 0, tak v Prvá iterácia tejto slučky. argv 749 00:39:23,880 --> 00:39:27,250 Držiak 0 bodka lomka argv 2. 750 00:39:27,250 --> 00:39:29,320 Takže to, čo je dĺžka tohto reťazca? 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 sa rovná 8. 754 00:39:37,500 --> 00:39:39,530 Tak dlho, ako j je menší ako 8, j ++. 755 00:39:39,530 --> 00:39:44,080 A s tým budeme mať tlač jeden znak, ktorý 756 00:39:44,080 --> 00:39:47,350 je argv držiak aj 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 len mať jeden argument príkazového riadka. 759 00:39:51,700 --> 00:39:53,890 V tejto prvej iterácii z cyklu for, my sme 760 00:39:53,890 --> 00:39:56,950 Bude tlač argv držiak 0 držiak 0. 761 00:39:56,950 --> 00:39:58,325 A potom j sa chystá zvýšiť. 762 00:39:58,325 --> 00:40:01,650 A ideme do tlače argv držiak 0 držiak 1. 763 00:40:01,650 --> 00:40:04,150 A potom argv držiak 0 držiak 2. 764 00:40:04,150 --> 00:40:09,030 >> Tak toto je naša prvá stretnutie multi-rozmerné pole. 765 00:40:09,030 --> 00:40:12,770 Pamätajte si, že som povedal predtým, že argv je technicky 766 00:40:12,770 --> 00:40:15,950 rad pole znakov. 767 00:40:15,950 --> 00:40:24,360 Tak tu, keď som povedal niečo ako string s rovná argv držiak i, 768 00:40:24,360 --> 00:40:29,590 a potom som povedal, s držiak j, to by bolo dosiahnutie to isté. 769 00:40:29,590 --> 00:40:31,960 Teraz, keď ste videl s držiak j. 770 00:40:31,960 --> 00:40:36,680 To je len prístup k j-teho charakter tohto reťazca. 771 00:40:36,680 --> 00:40:48,010 Takže s tým, sme sa dostať to j-tý charakter i-teho argv. 772 00:40:48,010 --> 00:40:51,450 >> Takže to, čo by mal tento nakoniec výstup? 773 00:40:51,450 --> 00:40:53,210 Urobte 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 daj nám nejaký priestor. 777 00:41:03,790 --> 00:41:07,050 Takže vidíme, že je to výstupu bodka na samostatnom riadku a lomka 778 00:41:07,050 --> 00:41:08,920 na vlastné čiarou a na vlastnom riadku. 779 00:41:08,920 --> 00:41:11,260 Je vytlačenie každý individuálny charakter 780 00:41:11,260 --> 00:41:12,950 každý argument príkazového riadka. 781 00:41:12,950 --> 00:41:15,960 A potom sa medzi nimi, vďaka tejto novej linky 782 00:41:15,960 --> 00:41:19,380 sme tlač tu dole, v medzi nimi to bude tlačiť nový riadok. 783 00:41:19,380 --> 00:41:24,540 >> Takže je to podobné predchádzajúca argv pomlčka 1, 784 00:41:24,540 --> 00:41:26,459 ktorý tlačený každý argument príkazového riadku, 785 00:41:26,459 --> 00:41:28,500 ale teraz sme tlač príkazového riadku argumenty 786 00:41:28,500 --> 00:41:31,950 a potom iteráciu každý charakter každého argument príkazového riadku 787 00:41:31,950 --> 00:41:35,400 aby si tento výstup. 788 00:41:35,400 --> 00:41:36,870 OK? 789 00:41:36,870 --> 00:41:40,570 Takže otázky o toto? 790 00:41:40,570 --> 00:41:45,130 >> Jedna vec k poznámke je, že príkazového riadku arguments-- 791 00:41:45,130 --> 00:41:49,990 tak oni sú oddelené medzerami, ako Vás by prirodzene očakávať, že budú. 792 00:41:49,990 --> 00:41:53,050 Takže reťazec môže mať medzery v ňom. 793 00:41:53,050 --> 00:41:57,380 Nie je to výborný dôležité, ale ak ja Chcel tretí argument príkazového riadku 794 00:41:57,380 --> 00:42:01,226 mať miesto v ňom, potom som Dalo by sa povedať niečo také. 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 Tak to teraz ešte má len tri príkazového riadku arguments-- dobre 4. 798 00:42:12,190 --> 00:42:17,620 Dot lomka argv pomlčka 2, Rob, Maria, a Hannah Bloomberg. 799 00:42:17,620 --> 00:42:18,320 OK. 800 00:42:18,320 --> 00:42:19,310 Otázky na to? 801 00:42:19,310 --> 00:42:22,700 802 00:42:22,700 --> 00:42:24,894 >> Na tom nie je nič zvláštne o kozmickom charakteru. 803 00:42:24,894 --> 00:42:27,810 Proste sa to stane, že je, že príkazového riadku zaobchádza znak medzery 804 00:42:27,810 --> 00:42:29,226 ako ste oddeliť jednotlivé argument. 805 00:42:29,226 --> 00:42:32,048 806 00:42:32,048 --> 00:42:33,000 Dobre. 807 00:42:33,000 --> 00:42:39,950 Takže Problém set two-- budete mať 808 00:42:39,950 --> 00:42:43,240 pri pohľade na tajomstvo-kľúč kryptografie. 809 00:42:43,240 --> 00:42:47,700 Tak, podobne ako v tomto príklade sme videli od A Christmas Story, 810 00:42:47,700 --> 00:42:52,840 budete sa vykonávajú niektoré algoritmy, že vzhľadom správu, 811 00:42:52,840 --> 00:42:55,560 budete mať možnosť zašifrovať tú správu 812 00:42:55,560 --> 00:42:58,730 že len niekto s týmto tajomstvom kľúč, s tým dekodéra krúžkom, 813 00:42:58,730 --> 00:43:01,090 by mal byť schopný dešifrovať. 814 00:43:01,090 --> 00:43:04,839 >> Takže to je štandardné vydanie. 815 00:43:04,839 --> 00:43:07,130 Budeš sa vykonávacie dve rôzne verzie. 816 00:43:07,130 --> 00:43:09,620 Ak ste náhodou sa pozrieť u hacker Edition teraz, 817 00:43:09,620 --> 00:43:12,600 ideme dať Ste reťazec takto, 818 00:43:12,600 --> 00:43:15,240 čo predstavuje šifrované heslo. 819 00:43:15,240 --> 00:43:19,990 Takže vaším cieľom je zistiť, čo je dešifrovať heslo. 820 00:43:19,990 --> 00:43:26,950 Teraz je to vlastne Ako hesla sú uložené v mnohých počítačov, 821 00:43:26,950 --> 00:43:31,290 a to len ukladá toto náhodný reťazec znakov. 822 00:43:31,290 --> 00:43:34,440 Musíte prísť na to, ako sa dostať z tejto náhodné reťazec znakov 823 00:43:34,440 --> 00:43:36,140 s tým, čo bolo pôvodné heslo. 824 00:43:36,140 --> 00:43:39,060 825 00:43:39,060 --> 00:43:43,290 >> A nakoniec, po tomto Problém set, mali by ste 826 00:43:43,290 --> 00:43:46,100 byť schopný pochopiť, čo to znamená. 827 00:43:46,100 --> 00:43:51,650 Tak sa dozviete, ako dešifrovať tento druh náhodný reťazec. 828 00:43:51,650 --> 00:43:56,390 Rovnako tak, ak si pamätáte z týždňa 0, možno ste videli túto adresu URL. 829 00:43:56,390 --> 00:44:00,210 A vy by ste mali byť schopní dešifrovať to nakoniec. 830 00:44:00,210 --> 00:44:04,810 Tie nemusia byť šťastný, keď vás dešifrovať ju a kliknite na odkaz. 831 00:44:04,810 --> 00:44:05,700 Dobre. 832 00:44:05,700 --> 00:44:06,591 To je pre dnešok všetko. 833 00:44:06,591 --> 00:44:12,095 Tak vidíte budúci týždeň! 834 00:44:12,095 --> 00:44:18,315 >> [ELECTRONIC prehrávanie hudby] 835 00:44:18,315 --> 00:47:15,619