1 00:00:00,000 --> 00:00:03,944 >> [Glazbom] 2 00:00:03,944 --> 00:00:10,732 3 00:00:10,732 --> 00:00:11,690 DAVID Malan: U redu. 4 00:00:11,690 --> 00:00:14,674 Ovo je CS50, i to je kraj tjedna 2. 5 00:00:14,674 --> 00:00:16,840 Žao mi je nisam mogao biti tamo sa svima vama danas, 6 00:00:16,840 --> 00:00:18,300 ali ti si u vrlo dobrim rukama. 7 00:00:18,300 --> 00:00:21,710 Dopustite da se predstavimo CS50 vlastiti Rob Bowden. 8 00:00:21,710 --> 00:00:29,106 9 00:00:29,106 --> 00:00:31,730 ROB Bowden: I naravno, onda moramo ismijavati činjenice 10 00:00:31,730 --> 00:00:36,820 da nam je poslao vertikalni video i pokazati. 11 00:00:36,820 --> 00:00:38,320 >> [VIDEO PLAYBACK] 12 00:00:38,320 --> 00:00:39,820 >> [Glazbom] 13 00:00:39,820 --> 00:00:42,350 >> [Stopama] 14 00:00:42,350 --> 00:00:44,730 >> -Ova Videozapis nije morate gledati na taj način. 15 00:00:44,730 --> 00:00:46,570 To bi moglo biti spriječeno. 16 00:00:46,570 --> 00:00:49,070 Recite ne vertikalnim videa. 17 00:00:49,070 --> 00:00:53,310 >> -okomita Video dogoditi kada držite fotoaparat na krivi način. 18 00:00:53,310 --> 00:00:55,880 Vaš video će završiti se gleda kao govno. 19 00:00:55,880 --> 00:00:57,650 >> - [Grunt] 20 00:00:57,650 --> 00:01:02,240 >> -Postoji Više i više ljudi ovisnici za izradu vertikalnih videa svaki dan. 21 00:01:02,240 --> 00:01:06,240 Nije ispucati ili ništa, ali to je još uvijek jako loše. 22 00:01:06,240 --> 00:01:10,410 Postoje dvije različite vrste ljudi koji su potlačeni s VVS. 23 00:01:10,410 --> 00:01:14,160 Prva skupina tretira video pucaju poput slike. 24 00:01:14,160 --> 00:01:15,850 Oni ne znači nikakvu štetu. 25 00:01:15,850 --> 00:01:19,180 Oni jednostavno ne razumiju da a možete pretvoriti sliku, 26 00:01:19,180 --> 00:01:20,880 ti stvarno ne mogu pretvoriti video. 27 00:01:20,880 --> 00:01:21,880 >> [CRASH] 28 00:01:21,880 --> 00:01:23,460 >> - [MONKEY ZVUKOVI] 29 00:01:23,460 --> 00:01:27,540 >> -drugi Grupa ljudi koji ne daju [bleep]. 30 00:01:27,540 --> 00:01:31,090 >> -okomita Video sindrom je opasno. 31 00:01:31,090 --> 00:01:34,120 Videozapisi se Uvijek je horizontalna. 32 00:01:34,120 --> 00:01:35,990 Televizori su horizontalna. 33 00:01:35,990 --> 00:01:38,380 Računalo ekrani su horizontalna. 34 00:01:38,380 --> 00:01:41,580 Ljudi su oči horizontalna. 35 00:01:41,580 --> 00:01:45,170 Mi se ne grade na gledati vertikalne videa. 36 00:01:45,170 --> 00:01:47,600 >> -Ja Volim vertikalne videa. 37 00:01:47,600 --> 00:01:50,410 >> -Nobody Brine o vama. 38 00:01:50,410 --> 00:01:53,340 >> -Ako Taj problem je označenim lijevo, vi 39 00:01:53,340 --> 00:01:57,650 će se početi prikazivati ​​četiri videa odjednom jednostavno za spremanje bandwith. 40 00:01:57,650 --> 00:02:02,400 >> -Letterboxed Vertikalne video bi biti veličine poštanske marke. 41 00:02:02,400 --> 00:02:04,920 >> -I To će se širiti posvuda. 42 00:02:04,920 --> 00:02:07,670 Film zasloni imaju Uvijek je horizontalna. 43 00:02:07,670 --> 00:02:11,200 Ako vertikalni videa postala prihvaćeni, kina 44 00:02:11,200 --> 00:02:13,930 će biti visok i mršav. 45 00:02:13,930 --> 00:02:17,710 >> -I Sve kinima bi moraju se srušena i obnovljena. 46 00:02:17,710 --> 00:02:22,090 I u vrijeme kada su obnovljena, Mila Kunis će biti stara i ružna. 47 00:02:22,090 --> 00:02:24,342 >> -Birds Će pad u njih i umrijeti. 48 00:02:24,342 --> 00:02:26,530 >> -We'll Svi dobili ukočeni vratovi iz gleda gore. 49 00:02:26,530 --> 00:02:29,800 >> -I Nitko neće sjediti u prednji red ikada opet. 50 00:02:29,800 --> 00:02:37,170 >> -George Lucas će ponovno puštanje Star Ratovi again-- Mršavi izdanje. 51 00:02:37,170 --> 00:02:41,860 >> -Ja Nikada nije stvarno moći reći priča da sam htjela reći. 52 00:02:41,860 --> 00:02:46,030 Ovo je velika prilika za mene eksperimentirati s novim tehnologijama. 53 00:02:46,030 --> 00:02:48,150 >> -You're Trzati. 54 00:02:48,150 --> 00:02:54,430 >> Približno svakih Vrijeme mobilni uređaj koristi za Snimanje videa, napast postoji. 55 00:02:54,430 --> 00:02:56,370 Samo reći ne. 56 00:02:56,370 --> 00:03:00,116 Recite ne Georgea Lucasa. 57 00:03:00,116 --> 00:03:04,062 Recite ne stare Mila Kunis. 58 00:03:04,062 --> 00:03:06,600 Recite ne vertikalnim videa. 59 00:03:06,600 --> 00:03:12,511 >> -I Ako vidite da netko to radi, recimo, "ne snimate to pravo lutke!" 60 00:03:12,511 --> 00:03:15,433 >> [Glazbom] 61 00:03:15,433 --> 00:03:18,842 62 00:03:18,842 --> 00:03:19,830 >> [END PLAYBACK] 63 00:03:19,830 --> 00:03:23,702 >> [PLJESAK] 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 oblik kriptografije, 67 00:03:45,790 --> 00:03:49,500 koja je u osnovi za šifriranje i dešifriranje tajnih poruka. 68 00:03:49,500 --> 00:03:52,590 Dakle, ovdje imamo vrlo jednostavnu igračku. 69 00:03:52,590 --> 00:03:56,900 A ideja je vanjski prsten rotira oko unutarnjeg prstena. 70 00:03:56,900 --> 00:04:01,610 A možete vidjeti, možda ako mi uvećanje u, that-- teško je vidjeti. 71 00:04:01,610 --> 00:04:05,090 No, kao što je broj 1-- dobro, da se preselio. 72 00:04:05,090 --> 00:04:09,120 >> Broj 1 preslikava na pismo X, broj 2 karte za pisma 73 00:04:09,120 --> 00:04:11,630 J. nevjerojatno teško Ne preskočiti naprijed. 74 00:04:11,630 --> 00:04:16,100 Pismo 2 karte za J. Broj 3 karte za D. Dakle, 75 00:04:16,100 --> 00:04:20,140 s ovim prstenom možete dati netko poruka 1, 2, 3. 76 00:04:20,140 --> 00:04:22,624 Iz nekog razloga vas želim im reći XJD. 77 00:04:22,624 --> 00:04:24,540 Ali možete ih dati neke poruke brojeva, 78 00:04:24,540 --> 00:04:28,460 i tako dugo dok su ove prsten, oni može dešifrirati što pokušavaš reći. 79 00:04:28,460 --> 00:04:32,510 >> Dakle, možda ste vidjeli Konkretan primjer kriptografije 80 00:04:32,510 --> 00:04:36,640 prije ako oko Božića ste gledali Božićna priča. 81 00:04:36,640 --> 00:04:38,520 Ako ste nikada nije vidio što prije, onda samo 82 00:04:38,520 --> 00:04:41,060 uključivanje TBS na doslovno bilo koje vrijeme na Badnjak, 83 00:04:41,060 --> 00:04:44,510 jer su upravo to pokazati natrag na leđa natrag na leđa na leđa cijeli dan. 84 00:04:44,510 --> 00:04:46,744 A relevantne video je to. 85 00:04:46,744 --> 00:04:47,410 [VIDEO PLAYBACK] 86 00:04:47,410 --> 00:04:50,020 -Be Je poznato da sve i raznovrstan da Ralph Parker je ovime 87 00:04:50,020 --> 00:04:52,850 imenovan za člana Little Siroče Annie Tajna krug 88 00:04:52,850 --> 00:04:56,490 i ima pravo na sve počasti i koristi se javljaju na njega. 89 00:04:56,490 --> 00:04:59,010 Potpisan Little Orphan Annie. 90 00:04:59,010 --> 00:05:03,120 Supotpisali Pierre Andre tintom! 91 00:05:03,120 --> 00:05:07,460 Priznanja i prednosti Već u dobi od devet! 92 00:05:07,460 --> 00:05:12,530 >> [Deranja Radio] 93 00:05:12,530 --> 00:05:13,030 -Ajde. 94 00:05:13,030 --> 00:05:14,000 Idemo se s njim. 95 00:05:14,000 --> 00:05:18,274 Ne treba sve da je jazz o krijumčara i pirata. 96 00:05:18,274 --> 00:05:20,440 -Listen Sutra navečer s završna avantura 97 00:05:20,440 --> 00:05:22,540 Crne gusarski brod. 98 00:05:22,540 --> 00:05:25,460 Sada je vrijeme za Annie tajna poruka 99 00:05:25,460 --> 00:05:28,620 za vas članovi Secret Circle. 100 00:05:28,620 --> 00:05:32,370 Sjeti se djeca, samo članovi Annie Tajna krug 101 00:05:32,370 --> 00:05:34,880 može dekodirati Annie je tajnu poruku. 102 00:05:34,880 --> 00:05:39,100 Zapamtite, Annie je ovisno o vama. 103 00:05:39,100 --> 00:05:41,660 Postavite svoje igle B2. 104 00:05:41,660 --> 00:05:43,960 Ovo je poruka. 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 -Ja Sam u mom prvom tajnom sastanku. 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 u velikoj glasovnom večeras. 115 00:05:54,570 --> 00:05:57,490 Mogao bih reći da je večeras Poruka je stvarno važno. 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 poruka od Annie sama. 119 00:06:01,580 --> 00:06:02,880 Zapamtite, nemojte nikome reći. 120 00:06:02,880 --> 00:06:07,840 121 00:06:07,840 --> 00:06:11,130 >> -Pet Sekundi kasnije, ja sam u samo prostorija u kući u kojoj dječak od devet 122 00:06:11,130 --> 00:06:15,830 mogao sjediti u privatnost i dekodiranje. 123 00:06:15,830 --> 00:06:16,620 Ej, 124 00:06:16,620 --> 00:06:17,340 B! 125 00:06:17,340 --> 00:06:20,210 Otišao sam do sljedećeg. 126 00:06:20,210 --> 00:06:23,300 E. Prva riječ je "biti". 127 00:06:23,300 --> 00:06:25,880 S. Dolazilo je lakše sada. 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 -COMe Na, Ralphie! 131 00:06:31,278 --> 00:06:31,861 Moram ići! 132 00:06:31,861 --> 00:06:33,182 -I'll Biti dolje, mama! 133 00:06:33,182 --> 00:06:36,038 Gee fijuk. 134 00:06:36,038 --> 00:06:42,840 T. O. "Svakako" - svakako što? 135 00:06:42,840 --> 00:06:44,770 Što je Little Orphan Annie pokušava reći? 136 00:06:44,770 --> 00:06:46,381 Svakako što? 137 00:06:46,381 --> 00:06:47,825 >> -Randy Je dobio to ići! 138 00:06:47,825 --> 00:06:48,866 Hoćete li, molim vas izaći? 139 00:06:48,866 --> 00:06:49,783 >> -Sve U redu, mama! 140 00:06:49,783 --> 00:06:51,786 Bit ću van! 141 00:06:51,786 --> 00:06:53,606 Bio sam sve bliže sada. 142 00:06:53,606 --> 00:06:55,550 Napetost je grozno. 143 00:06:55,550 --> 00:06:57,050 Što je to bilo? 144 00:06:57,050 --> 00:06:59,905 Sudbina planeta može objesiti u ravnoteži! 145 00:06:59,905 --> 00:07:01,736 >> -Ralphie, Randy je dobio to ići! 146 00:07:01,736 --> 00:07:05,680 >> -I'll Se pravo iz, zaboga! 147 00:07:05,680 --> 00:07:07,170 Skoro tamo! 148 00:07:07,170 --> 00:07:08,150 Moji prsti letjeli. 149 00:07:08,150 --> 00:07:09,980 Moj um je bio čelični zamka. 150 00:07:09,980 --> 00:07:11,496 Svaka pora vibrirao. 151 00:07:11,496 --> 00:07:13,268 Bilo je gotovo jasno! 152 00:07:13,268 --> 00:07:13,767 Da. 153 00:07:13,767 --> 00:07:14,609 Da. 154 00:07:14,609 --> 00:07:15,108 Da. 155 00:07:15,108 --> 00:07:16,449 Da. 156 00:07:16,449 --> 00:07:20,240 Budite sigurni da pijete vašu 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 Bijedan komercijalna? 160 00:07:27,520 --> 00:07:32,040 161 00:07:32,040 --> 00:07:34,920 Kurvin sin. 162 00:07:34,920 --> 00:07:35,890 >> [END PLAYBACK] 163 00:07:35,890 --> 00:07:39,650 >> ROB Bowden: Pa to je kako Ovaltine odnosi kriptografije. 164 00:07:39,650 --> 00:07:42,290 Uglavnom CS50 samo reklamiraju Ovaltine, tako da smo mogli 165 00:07:42,290 --> 00:07:44,400 biti bijedan reklama za Ovaltine. 166 00:07:44,400 --> 00:07:44,900 U redu. 167 00:07:44,900 --> 00:07:47,120 Tako sada stvarna informatika. 168 00:07:47,120 --> 00:07:50,670 Sjetite se u ponedjeljak smo stali ronjenje dublje u žice. 169 00:07:50,670 --> 00:07:52,820 Tako smo se bave string "Zamyla." 170 00:07:52,820 --> 00:07:55,130 A mi se prepoznaju činjenica da možemo liječiti 171 00:07:55,130 --> 00:07:57,510 "Zamyla" kao niz znakova. 172 00:07:57,510 --> 00:07:59,740 I zapamtite da smo naučili zapis nosač. 173 00:07:59,740 --> 00:08:01,995 Dakle, ako je to bili pohranjeni u nizu "s", a zatim 174 00:08:01,995 --> 00:08:05,860 ako mi je rekao je nosač 0, da bi ukazuju na slovo kapitala Z. 175 00:08:05,860 --> 00:08:09,790 A ako mi je rekao je nosač 1, koji će ukazati prvu malim slovom A, 176 00:08:09,790 --> 00:08:14,220 i tako dalje do e držač 5, što bi naznačiti trajati. 177 00:08:14,220 --> 00:08:17,090 >> Sada se sjetiti da je Duljina niza je 6, 178 00:08:17,090 --> 00:08:23,220 ali indeksi u nizu su 0 do 5, Z kroz to trajati. 179 00:08:23,220 --> 00:08:28,650 Dakle, to je sada uklapa u veću sliku memorije računala, RAM. 180 00:08:28,650 --> 00:08:32,020 Dakle, negdje program koji radite računala 181 00:08:32,020 --> 00:08:34,780 treba zapamtiti Zamyla negdje u memoriji. 182 00:08:34,780 --> 00:08:36,029 Dakle, ja mogu imati volonter? 183 00:08:36,029 --> 00:08:38,840 184 00:08:38,840 --> 00:08:40,181 Da, molim. 185 00:08:40,181 --> 00:08:50,120 186 00:08:50,120 --> 00:08:51,500 I što je vaše ime? 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 Drago mi je, Dean. 190 00:08:54,910 --> 00:08:58,240 Stoga dođite ovamo, i ćemo imati crtate 191 00:08:58,240 --> 00:09:00,740 na našem lijepom divan izgled memorije. 192 00:09:00,740 --> 00:09:05,950 Sada Volim misliti memorije kao jedan dugi trake bajtova, 193 00:09:05,950 --> 00:09:11,090 ali samo za prikaz svrhe mi ćemo Samo nemojte lijeva na desno, odozgo prema dolje. 194 00:09:11,090 --> 00:09:11,590 U REDU? 195 00:09:11,590 --> 00:09:22,030 >> Tako ću pokazati program-- Getstrings.c. 196 00:09:22,030 --> 00:09:25,760 I tako je ovaj program radi se traži četiri žice 197 00:09:25,760 --> 00:09:28,830 od korisnika s GetString a zatim tisak 198 00:09:28,830 --> 00:09:30,950 što god da se prvi niz ušao je. 199 00:09:30,950 --> 00:09:32,840 Mi smo ignoriranje dva kroz četiri. 200 00:09:32,840 --> 00:09:33,610 U REDU. 201 00:09:33,610 --> 00:09:38,210 Dakle ovdje now-- kada Prvi put sam zahtjev s1. 202 00:09:38,210 --> 00:09:39,740 Tako da su računalo. 203 00:09:39,740 --> 00:09:41,680 I ti si provedbi GetString. 204 00:09:41,680 --> 00:09:46,710 Znači li zatražiti niz od mene, a ja kažem, u redu, Dean. 205 00:09:46,710 --> 00:09:47,900 Dajte string "Dean". 206 00:09:47,900 --> 00:09:50,300 >> Dakle, negdje u memoriji koju trebate zapamtiti "Deana." 207 00:09:50,300 --> 00:09:52,160 Tako ga pisati u memoriju negdje. 208 00:09:52,160 --> 00:09:58,270 209 00:09:58,270 --> 00:09:59,210 Savršeno. 210 00:09:59,210 --> 00:09:59,880 U REDU. 211 00:09:59,880 --> 00:10:01,740 Dakle, sada smo S2. 212 00:10:01,740 --> 00:10:03,869 I S2 će biti zahtjev za GetString. 213 00:10:03,869 --> 00:10:05,160 Tako ću ući u niz. 214 00:10:05,160 --> 00:10:08,720 Idem ući "Hannah." 215 00:10:08,720 --> 00:10:10,586 Dakle, upišite "Hannah" negdje u memoriju. 216 00:10:10,586 --> 00:10:18,860 217 00:10:18,860 --> 00:10:19,360 Da. 218 00:10:19,360 --> 00:10:23,000 A-H. 219 00:10:23,000 --> 00:10:25,550 >> U redu, tako da sada s3. 220 00:10:25,550 --> 00:10:28,380 A to će biti drugi zatražiti da GetString. 221 00:10:28,380 --> 00:10:37,020 I tako sada ući "Maria". 222 00:10:37,020 --> 00:10:37,520 U redu. 223 00:10:37,520 --> 00:10:40,980 A tu je i posljednji Zahtjev za GetString, S4. 224 00:10:40,980 --> 00:10:42,580 Dakle, ja ne znam. 225 00:10:42,580 --> 00:10:45,640 Kako bi bilo da ide s antidisestablishmentarianism. 226 00:10:45,640 --> 00:10:49,460 Dakle, unesite je u memoriju. 227 00:10:49,460 --> 00:10:50,400 Da. 228 00:10:50,400 --> 00:10:53,970 Dakle, samo to "Rob". 229 00:10:53,970 --> 00:10:54,560 >> U REDU. 230 00:10:54,560 --> 00:10:58,410 Tako sada explain-- zašto je odeš ove prostore? 231 00:10:58,410 --> 00:11:01,340 Zašto ste to prazno Prostor ovdje, ovdje i ovdje? 232 00:11:01,340 --> 00:11:05,170 233 00:11:05,170 --> 00:11:05,670 Da. 234 00:11:05,670 --> 00:11:09,450 Dakle, primijetite kad idem ispisati s1-- pa ako mi 235 00:11:09,450 --> 00:11:11,890 je "Hannah" uhodavanja pa sve do "Dean" 236 00:11:11,890 --> 00:11:14,360 kako ćemo znati kada string "Dean" završava? 237 00:11:14,360 --> 00:11:19,470 Tako ispis string S1 može imati Samo tiskana "DeanHannahMariaRob" 238 00:11:19,470 --> 00:11:22,720 ako nema pojma kada "Dean" zapravo završava. 239 00:11:22,720 --> 00:11:23,240 >> U redu. 240 00:11:23,240 --> 00:11:27,650 Tako je u sjećanju način mi zapravo predstavlja ovaj kraj nizu 241 00:11:27,650 --> 00:11:29,940 je s obrnute kose crte nula. 242 00:11:29,940 --> 00:11:32,620 Dakle, ovaj prostor je upravo ono što smo htjeli. 243 00:11:32,620 --> 00:11:34,040 To bi trebao biti backslash nula. 244 00:11:34,040 --> 00:11:37,690 To će biti backslash nula, i to će biti backslash nula. 245 00:11:37,690 --> 00:11:41,585 A možete imati nevjerojatan nagradu za što savršen volonter. 246 00:11:41,585 --> 00:11:44,910 247 00:11:44,910 --> 00:11:45,860 Uzmi stres loptu! 248 00:11:45,860 --> 00:11:49,040 249 00:11:49,040 --> 00:11:49,700 >> U REDU. 250 00:11:49,700 --> 00:11:54,420 Dakle, ovaj lik backslash nula kako ćemo označiti kraj niza. 251 00:11:54,420 --> 00:11:57,120 To je kako, kada je bilo dano programa želi ispisati niz, 252 00:11:57,120 --> 00:11:59,760 to je how-- Sjećam smo naučili funkcija strlen prošli tjedan? 253 00:11:59,760 --> 00:12:00,940 Duljina Gudački? 254 00:12:00,940 --> 00:12:03,770 To je kako je duljina niza je u stanju odrediti koliko dugo niz je. 255 00:12:03,770 --> 00:12:05,810 To samo čuva iterating više likova 256 00:12:05,810 --> 00:12:08,217 dok se ne pronađe kose crtice nula karakter. 257 00:12:08,217 --> 00:12:11,050 Dakle, važno je shvatiti o backslash nula karaktera 258 00:12:11,050 --> 00:12:14,950 je to je zastupljena svi nula u bitovima. 259 00:12:14,950 --> 00:12:18,980 Dakle, primijetite da je to različita od nula karaktera. 260 00:12:18,980 --> 00:12:23,010 Tako je nula lik, ako se sjećate u primjeru koji je dao na kraju 261 00:12:23,010 --> 00:12:27,360 predavanja u kojima likovi map to-- kao glavni A karata do 65. 262 00:12:27,360 --> 00:12:29,130 Mala je karte do 97. 263 00:12:29,130 --> 00:12:30,890 Mala b će biti 98. 264 00:12:30,890 --> 00:12:35,220 Tako se broj 0 karata to-- ja ne znam off vrhu moje glave. 265 00:12:35,220 --> 00:12:36,400 44 ili 45. 266 00:12:36,400 --> 00:12:37,890 Negdje u toj regiji. 267 00:12:37,890 --> 00:12:40,850 >> Tako je lik 0 je stvarni broj. 268 00:12:40,850 --> 00:12:44,350 Ali backslash nula Karte za sve nula bitova. 269 00:12:44,350 --> 00:12:46,380 Dakle, postoji razlika između obrnute kose crte nula, 270 00:12:46,380 --> 00:12:48,450 koje ćemo nazvati null terminator. 271 00:12:48,450 --> 00:12:53,210 Postoji razlika između backslash nula i znak nula. 272 00:12:53,210 --> 00:12:54,350 >> U redu. 273 00:12:54,350 --> 00:12:57,520 Tako govori malo više o žice. 274 00:12:57,520 --> 00:13:01,470 Pa onda vidimo ovdje je to kako to bi se postaviti u memoriji. 275 00:13:01,470 --> 00:13:07,940 Dakle, ova ideja žice kao slijed od characters-- tako službeno računalo 276 00:13:07,940 --> 00:13:10,750 sciency pojam za slijed je niz. 277 00:13:10,750 --> 00:13:13,790 Tako bismo nazvati niz niz znakova. 278 00:13:13,790 --> 00:13:17,770 A tu su zapravo ostali podaci vrste koje možemo napraviti polja iz. 279 00:13:17,770 --> 00:13:19,975 >> Dakle motivirati to, pogledajte primjer. 280 00:13:19,975 --> 00:13:22,810 281 00:13:22,810 --> 00:13:29,812 Mi ćemo ga nazvati ages0.c ću kopirajte i zalijepite naš predložak. 282 00:13:29,812 --> 00:13:32,470 283 00:13:32,470 --> 00:13:33,410 U REDU. 284 00:13:33,410 --> 00:13:39,378 Tako je u tom programu što smo želite učiniti je zgrabite dobi 285 00:13:39,378 --> 00:13:45,160 tri učenika u tijeku. 286 00:13:45,160 --> 00:13:49,240 Tako znamo int age-- a sada ću reći 0. 287 00:13:49,240 --> 00:13:53,140 Tako možda želite reći age1, ali za potrebe vidjet ćemo vrlo brzo, 288 00:13:53,140 --> 00:13:57,187 Reći ću int age0 jednak GetInt. 289 00:13:57,187 --> 00:13:59,270 Tako isto poziva GetInt koje smo koristili I 290 00:13:59,270 --> 00:14:01,561 nemojte se dogoditi da se navelo govoreći: "Daj mi dob." 291 00:14:01,561 --> 00:14:03,120 Ali samo ga zatraži. 292 00:14:03,120 --> 00:14:06,510 >> I age1 jednak GetInt. 293 00:14:06,510 --> 00:14:09,600 I int života2 jednak GetInt. 294 00:14:09,600 --> 00:14:14,070 Dakle, opet, tri učenika, ali konačnici varijabilni indeksi 295 00:14:14,070 --> 00:14:16,890 su age0 kroz života2. 296 00:14:16,890 --> 00:14:17,550 U REDU. 297 00:14:17,550 --> 00:14:23,960 Dakle, ovaj program će učiniti sve što želimo s age0, age1 i života2, 298 00:14:23,960 --> 00:14:27,670 ali ovaj program u konačnici radi za tri studenta. 299 00:14:27,670 --> 00:14:28,380 >> U REDU. 300 00:14:28,380 --> 00:14:32,110 I što sad ako želim četiri učenika? 301 00:14:32,110 --> 00:14:36,000 Pa, ja ću se vratiti u mom kodu, mijenjati komentar, 302 00:14:36,000 --> 00:14:39,840 a sada imamo int age3 jednak GetInt. 303 00:14:39,840 --> 00:14:40,610 U REDU. 304 00:14:40,610 --> 00:14:43,660 Pa tko vidi problem ovdje? 305 00:14:43,660 --> 00:14:47,310 U čemu je problem s ovom vrstom postava? 306 00:14:47,310 --> 00:14:47,810 Da. 307 00:14:47,810 --> 00:14:53,110 308 00:14:53,110 --> 00:14:53,610 Da. 309 00:14:53,610 --> 00:14:56,360 Tako smo stvaranje varijabla za svakog studenta. 310 00:14:56,360 --> 00:15:00,140 Sada se to radi, ali u konačnici, što ako ja sada 311 00:15:00,140 --> 00:15:06,500 kažu, "Želim da zgrabite dob Osam studenti ili 16 učenika 312 00:15:06,500 --> 00:15:11,340 ili su ipak mnogi studenti stotine učenika u CS50 313 00:15:11,340 --> 00:15:16,750 ili tisuće studenata na kampusu ili milijarde ljudi u svijetu? 314 00:15:16,750 --> 00:15:19,130 Dakle, u konačnici to nije održivo. 315 00:15:19,130 --> 00:15:21,990 Svaki put kada vidite sebe kopiranje i lijepljenje kod ovako, 316 00:15:21,990 --> 00:15:25,050 obično ćete se osjećati da postoji bolji način. 317 00:15:25,050 --> 00:15:31,290 >> Dakle, ovo je mjesto gdje ćemo predstaviti niz izjava. 318 00:15:31,290 --> 00:15:34,564 Dakle, kada proglasiti niz, to je ono što je opći oblik 319 00:15:34,564 --> 00:15:35,480 će izgledati. 320 00:15:35,480 --> 00:15:36,664 Ćemo reći tip. 321 00:15:36,664 --> 00:15:38,830 a onda ćemo daju ime tog polja, 322 00:15:38,830 --> 00:15:41,150 baš kao što smo definirali bilo dano varijablu. 323 00:15:41,150 --> 00:15:43,980 A onda na kraju smo pomoću opet ovaj nosač zapis 324 00:15:43,980 --> 00:15:47,480 ali u drugom kontekstu od kako su ga pomoću ranije. 325 00:15:47,480 --> 00:15:51,860 >> Dakle, ovdje to izgleda kao normalna varijabla izjava da smo vidjeli. 326 00:15:51,860 --> 00:15:54,890 Tako smo vidjeli int x-zarez prije. 327 00:15:54,890 --> 00:16:00,020 Pa sad možemo vidjeti nešto kao int x tipkovnici 5. 328 00:16:00,020 --> 00:16:04,020 I stavljajući ovu ideju u GetInt program koji smo have-- 329 00:16:04,020 --> 00:16:08,850 tako da možemo provesti to na isti način. 330 00:16:08,850 --> 00:16:13,630 >> Recimo u CS smo skloni koristiti nje kao broj nečega. 331 00:16:13,630 --> 00:16:16,150 Dakle, ovdje ćemo pohraniti četiri studenta. 332 00:16:16,150 --> 00:16:25,960 I sada možemo reći int dob Nosač ne n- sasvim dobiti yet-- 333 00:16:25,960 --> 00:16:32,210 izjaviti niz od četiri učenika. 334 00:16:32,210 --> 00:16:38,050 Pa kako će to izgledati u memorija će biti sličan ovome. 335 00:16:38,050 --> 00:16:39,570 Vedro ovo. 336 00:16:39,570 --> 00:16:46,606 I mi ćemo imati negdje u memory-- ću staviti ovaj gore. 337 00:16:46,606 --> 00:16:52,690 338 00:16:52,690 --> 00:16:53,808 >> Dakle, negdje u memoriji. 339 00:16:53,808 --> 00:16:58,760 340 00:16:58,760 --> 00:16:59,727 Jedan dva tri četiri. 341 00:16:59,727 --> 00:17:03,383 342 00:17:03,383 --> 00:17:09,849 Imamo četiri prirodna broja u nizu za ovaj niz od četiri brojeva. 343 00:17:09,849 --> 00:17:13,820 Dakle, trenutno, što je Veličina jedne od ovih kutija? 344 00:17:13,820 --> 00:17:17,190 345 00:17:17,190 --> 00:17:17,690 Da. 346 00:17:17,690 --> 00:17:18,390 To je četiri bajta. 347 00:17:18,390 --> 00:17:19,690 To je 32 bita. 348 00:17:19,690 --> 00:17:22,310 Dakle, sada je to drugačije iz niza koje smo 349 00:17:22,310 --> 00:17:24,020 vidio ranije, niz znakova. 350 00:17:24,020 --> 00:17:28,540 U nizu svaka kutija je samo jedan bajt, jer lik je samo jedan bajt. 351 00:17:28,540 --> 00:17:32,170 No, s nizom brojeva, svaki kutija mora biti četiri bajta kako 352 00:17:32,170 --> 00:17:34,060 da stane cijeli cijeli broj. 353 00:17:34,060 --> 00:17:37,197 Dakle, to je ono što niz Četiri Ints će izgledati. 354 00:17:37,197 --> 00:17:40,510 355 00:17:40,510 --> 00:17:43,870 >> A onda natrag u kodu. 356 00:17:43,870 --> 00:17:47,460 Sada želimo zapravo dućan cijeli brojevi u tom nizu. 357 00:17:47,460 --> 00:17:53,470 Dakle, sada je to vrlo, vrlo, vrlo čest uzorak koji će u nekom trenutku 358 00:17:53,470 --> 00:17:54,680 postati mišića memorije. 359 00:17:54,680 --> 00:17:56,710 Dakle int i jednak 0. 360 00:17:56,710 --> 00:17:57,940 ja manje od n. 361 00:17:57,940 --> 00:18:01,850 ja plus plus. 362 00:18:01,850 --> 00:18:05,790 Nosač doba i jednaka GetInt. 363 00:18:05,790 --> 00:18:15,100 >> Dakle, ovo za petlju, ovaj format, trebali dobiti vrlo nekad. 364 00:18:15,100 --> 00:18:20,010 Dakle, ovo je općenito kako ćemo ponoviti tijekom gotovo bilo niz. 365 00:18:20,010 --> 00:18:23,690 Sada primijetite ovu vrstu objašnjava zašto je od početka 366 00:18:23,690 --> 00:18:29,870 nismo imali za petlje ide za int je jednako 1, i manji od ili jednak 10. 367 00:18:29,870 --> 00:18:34,200 Razlog je da počevši od nula čini ovo djelo dobro s polja. 368 00:18:34,200 --> 00:18:36,270 Dakle polja su nula indeksiraju. 369 00:18:36,270 --> 00:18:40,360 Ako je ovo polje je duljine 4, indeksi su 0 do 3. 370 00:18:40,360 --> 00:18:42,880 >> Dakle, kroz prva iteracija to za petlje 371 00:18:42,880 --> 00:18:49,930 ćemo biti postavljanje dobi Nosač 0 jednak poziv na GetInt. 372 00:18:49,930 --> 00:18:52,440 Dakle, ono što mi se dogodilo ući na tipkovnici. 373 00:18:52,440 --> 00:18:56,970 U drugom prolazu, mi smo postavljanje age1 jednak GetInt. 374 00:18:56,970 --> 00:18:58,230 Treći prolaz, života2. 375 00:18:58,230 --> 00:18:59,880 Završni prolaz age3. 376 00:18:59,880 --> 00:19:05,750 Dakle, ako se u prvom prolazu petlje Ja unesite broj 4 na tipkovnici, 377 00:19:05,750 --> 00:19:07,740 onda ćemo umetnuti 4 ovdje. 378 00:19:07,740 --> 00:19:11,470 Ako se na drugom prolazu sam ući 50, mi ćemo staviti 50 ovdje. 379 00:19:11,470 --> 00:19:15,180 Na trećem prolazu sam možda unesite negativna 1, negativna 1, 380 00:19:15,180 --> 00:19:21,810 a onda na kraju, ako sam ući 0-- i Sada se sjetiti da je to indeks tri. 381 00:19:21,810 --> 00:19:25,350 >> Nakon što smo petlje leđa, i je će se povećati na 4. 382 00:19:25,350 --> 00:19:27,770 i više ne manje od N, koji je 4. 383 00:19:27,770 --> 00:19:29,840 I lomimo iz petlje. 384 00:19:29,840 --> 00:19:32,578 Dakle, što bi bilo u redu s ovim? 385 00:19:32,578 --> 00:19:38,140 386 00:19:38,140 --> 00:19:38,729 [Nečujan]? 387 00:19:38,729 --> 00:19:39,604 PUBLIKA: [nečujan] 388 00:19:39,604 --> 00:19:45,880 389 00:19:45,880 --> 00:19:46,400 >> Da. 390 00:19:46,400 --> 00:19:51,550 Tako je niz ima samo četiri mjesta, što znači kako je indeksi 0 do 3. 391 00:19:51,550 --> 00:19:55,630 Dakle, ako je to slučaj, ja bih se na vrijednosti 4 u nekom trenutku. 392 00:19:55,630 --> 00:20:00,910 dobnoj skupini 4 će biti postavljanje sve što se događa da se ovdje 393 00:20:00,910 --> 00:20:02,920 na ono što moram reći, unesite 6. 394 00:20:02,920 --> 00:20:05,010 To će se postaviti na 6. 395 00:20:05,010 --> 00:20:06,560 >> Ali ne znamo što je ovdje. 396 00:20:06,560 --> 00:20:08,836 Ovo nije memorije da smo imali pristup. 397 00:20:08,836 --> 00:20:10,710 Dakle, ako se sjećate iz prethodni predavanje, 398 00:20:10,710 --> 00:20:14,350 On je ispis vrijednosti Zamyla i u nekom trenutku udario ovo segmentaciju 399 00:20:14,350 --> 00:20:17,990 kvara. Dakle, vjerojatno će vam biti kad mnogi segmentacije greške što vama 400 00:20:17,990 --> 00:20:20,530 provesti neke od problema setovima. 401 00:20:20,530 --> 00:20:24,950 No, to je jedan od načina na koji možete naići na segmentaciju 402 00:20:24,950 --> 00:20:28,540 kvara, kada počnete pristupa memorije na način koji ne bi trebali biti. 403 00:20:28,540 --> 00:20:34,117 Dakle, nismo imali pristup to mjesto i to je bug. 404 00:20:34,117 --> 00:20:37,760 405 00:20:37,760 --> 00:20:40,190 >> Dakle, to je bolje. 406 00:20:40,190 --> 00:20:45,820 Sada još uvijek postoji mala problem s ovim kodom. 407 00:20:45,820 --> 00:20:50,720 I to je zapravo da smo još uvijek zaglavi na četiri učenika. 408 00:20:50,720 --> 00:20:52,940 Sada, ako želim koristiti osam studenata, u redu. 409 00:20:52,940 --> 00:20:54,350 To nije velika stvar. 410 00:20:54,350 --> 00:20:58,120 Ja mogu ići u, promijenite komentirati, i promijeniti n. 411 00:20:58,120 --> 00:20:59,760 Sada će to raditi s osam studenata. 412 00:20:59,760 --> 00:21:02,190 Ako sam sastaviti ovaj i trčanje to, to će pokazati me-- 413 00:21:02,190 --> 00:21:07,870 to će zahtijevati integers za osam studenti i to će raditi samo. 414 00:21:07,870 --> 00:21:11,850 No, to je manje nego idealno da je potrebno rekompilirati programa svaki put 415 00:21:11,850 --> 00:21:15,960 Želim promijeniti broj studenata da želim ući u dobi za. 416 00:21:15,960 --> 00:21:22,990 >> Dakle, konačna poboljšanje u odnosu na to, kao što ćemo vidjeti here-- smo 417 00:21:22,990 --> 00:21:26,177 će zatražiti broj ljudi. 418 00:21:26,177 --> 00:21:28,010 Ovdje imamo broj ljudi u sobama 419 00:21:28,010 --> 00:21:29,880 ili bilo dob ljudi u sobi. 420 00:21:29,880 --> 00:21:33,300 Ali ćemo zatražiti broj ljudi u sobi od korisnika. 421 00:21:33,300 --> 00:21:36,171 Dakle, to je isti učiniti-a petlje da smo vidjeli prije. 422 00:21:36,171 --> 00:21:37,920 To je isti do-while petlja da 423 00:21:37,920 --> 00:21:40,050 možda implementira na problem seta. 424 00:21:40,050 --> 00:21:43,102 Dakle, dokle god oni ulaska n manji od 1, 425 00:21:43,102 --> 00:21:45,310 pa mora biti na Najmanje jedna osoba u sobi. 426 00:21:45,310 --> 00:21:47,407 Dokle god oni ulaska n manji od 1, 427 00:21:47,407 --> 00:21:48,990 onda ćemo zadržati opet pita. 428 00:21:48,990 --> 00:21:50,906 Unesite broj ljudi u sobi. 429 00:21:50,906 --> 00:21:53,550 Sada, kada imamo broj ljudi u room-- 430 00:21:53,550 --> 00:21:58,020 tako da sam mogao ući da 200 ljudi u ovoj sobi. 431 00:21:58,020 --> 00:22:05,480 Onda ovdje idemo doći i proglasiti niz veličine 200. 432 00:22:05,480 --> 00:22:10,220 Mi izjavljujući niz koji je dovoljno velik da držite 200 dobi. 433 00:22:10,220 --> 00:22:15,370 Silazi, to je za petlju da ćete dobiti vrlo nekad. 434 00:22:15,370 --> 00:22:19,490 Dakle iterating preko ovog niza, dodjeljivanje svakom mjestu 435 00:22:19,490 --> 00:22:23,020 u tom nizu cijeli broj, i onda u konačnici ovdje smo 436 00:22:23,020 --> 00:22:28,340 samo dobivanje primjer iterating tijekom tog polja, ne dodijeliti vrijednosti, 437 00:22:28,340 --> 00:22:30,150 ali pristupiti vrijednosti. 438 00:22:30,150 --> 00:22:33,810 >> Dakle ovdje vidimo da smo kažu, za godinu dana, 439 00:22:33,810 --> 00:22:40,470 Osoba% ja ću biti% I godina, gdje je prvi i% je i plus 1. 440 00:22:40,470 --> 00:22:43,010 Dakle, ja se ovaj indeks promjenjiva. 441 00:22:43,010 --> 00:22:49,420 I drugi% i ide se vrijednost pohranjena u dobi polje plus 1. 442 00:22:49,420 --> 00:22:54,217 Dakle, ovo je samo plus 1 jer smo saying-- ovaj plus 1, dobi I plus 1. 443 00:22:54,217 --> 00:22:57,050 To plus 1 je samo zato što smo govoreći, za godinu dana osoba 444 00:22:57,050 --> 00:22:58,280 će ovaj stari. 445 00:22:58,280 --> 00:23:01,080 >> Pa zašto je to i plus 1? 446 00:23:01,080 --> 00:23:04,064 Zašto imamo plus 1 tamo? 447 00:23:04,064 --> 00:23:04,564 Da. 448 00:23:04,564 --> 00:23:07,410 449 00:23:07,410 --> 00:23:07,930 Da. 450 00:23:07,930 --> 00:23:10,510 Dakle, ne zaboravite polja su nula indeksiraju. 451 00:23:10,510 --> 00:23:14,840 Dakle, ako smo ispisujete ovo za netko samo za čitanje izlaz, 452 00:23:14,840 --> 00:23:19,380 onda vjerojatno žele vidjeti nešto kao osoba jedna, osoba broj jedan, 453 00:23:19,380 --> 00:23:21,160 će biti 20 godina. 454 00:23:21,160 --> 00:23:23,570 Osoba broj dva će biti 15 godina. 455 00:23:23,570 --> 00:23:27,420 Oni radije ne vidim osobu broj nula je 15 godina starosti. 456 00:23:27,420 --> 00:23:36,460 >> Dakle sastavljanju to i samo vidjeti što izgleda volimo-članovima Napravite neki prostor. 457 00:23:36,460 --> 00:23:43,560 Provjerite u dobi sastavlja. 458 00:23:43,560 --> 00:23:45,080 Trčanje dobi. 459 00:23:45,080 --> 00:23:46,580 Vidimo broj ljudi u prostoriji. 460 00:23:46,580 --> 00:23:48,850 Dakle, ja ću reći da su tri osobe u sobi. 461 00:23:48,850 --> 00:23:54,000 Dob osoba broj jedan, recimo 15, 20, 25. 462 00:23:54,000 --> 00:23:59,680 A sada ću reći za godinu dana Sada će biti 16, 21, 26. 463 00:23:59,680 --> 00:24:02,900 Pogledajmo kako to radi s n da nije jednak 3. 464 00:24:02,900 --> 00:24:07,940 Dakle, ako ja kažem broj ljudi je 5, jedan, dva, tri, dva, jedan, za godinu dana 465 00:24:07,940 --> 00:24:11,170 oni će biti dva, tri, četiri, tri, dvije godine. 466 00:24:11,170 --> 00:24:16,500 Tako sam mogao jednako jednostavno n su se 10.000. 467 00:24:16,500 --> 00:24:21,270 Sada ću sjediti ovdje sasvim neko vrijeme ulaska dobi, ali to radi. 468 00:24:21,270 --> 00:24:26,000 >> Tako sada u memoriji negdje smo imaju niz veličine 10.000, 469 00:24:26,000 --> 00:24:28,830 pa u konačnici 40.000 bajtova, jer postoji 470 00:24:28,830 --> 00:24:31,222 četiri bajta za svaku od tih brojeva. 471 00:24:31,222 --> 00:24:33,180 Dakle, postoji niz Veličina 10,000 gdje možemo 472 00:24:33,180 --> 00:24:36,201 pohraniti starost tih 10.000 ljudi. 473 00:24:36,201 --> 00:24:36,700 U redu. 474 00:24:36,700 --> 00:24:40,070 Pitanja o bilo ovo? 475 00:24:40,070 --> 00:24:41,892 Da. 476 00:24:41,892 --> 00:24:43,350 Što ako je dao negativan broj? 477 00:24:43,350 --> 00:24:44,870 Idemo vidjeti što se događa. 478 00:24:44,870 --> 00:24:49,320 Dakle, u ovom konkretnom case-- broja ljudi u sobi, negativnom. 479 00:24:49,320 --> 00:24:52,580 To je odbacio da je, jer ovdje mi se dogoditi 480 00:24:52,580 --> 00:24:57,180 da se rukovanje činjenicu da, ako je n manje od jednog ćemo ponovno pitati. 481 00:24:57,180 --> 00:25:01,780 Ako pokušate proglasiti niz negativnih veličine, 482 00:25:01,780 --> 00:25:03,950 općenito ne radi. 483 00:25:03,950 --> 00:25:05,570 >> Dakle, pokušajmo. 484 00:25:05,570 --> 00:25:08,000 Idemo ignorirati ono Vrijednost im ulaz za n 485 00:25:08,000 --> 00:25:10,571 i samo reći Int dobi negativan. 486 00:25:10,571 --> 00:25:12,410 Idemo vidjeti ako to čak i sastavlja. 487 00:25:12,410 --> 00:25:14,100 Nisam siguran. 488 00:25:14,100 --> 00:25:14,920 Ne. 489 00:25:14,920 --> 00:25:18,280 Dakle, u dobi je proglašen kao Niz s negativnim veličine. 490 00:25:18,280 --> 00:25:22,540 Dakle, unaprijed se prepoznaje niz ne može biti negativna veličina i odbacuje. 491 00:25:22,540 --> 00:25:26,840 Sada, ako mi ne obrađuju to učiniti-while petlja ispravno, 492 00:25:26,840 --> 00:25:28,810 ako mi ne provjere ako je n manji od 1-- 493 00:25:28,810 --> 00:25:32,690 neka mi reći upravo nisu imali to uopće 494 00:25:32,690 --> 00:25:35,940 i umjesto da samo zgrabite cijeli broj. 495 00:25:35,940 --> 00:25:40,710 Bez obzira što je broj je, izjavljujemo niz te veličine. 496 00:25:40,710 --> 00:25:44,250 >> Dakle, prevodilac ne može možda žaliti sada. 497 00:25:44,250 --> 00:25:48,780 Ako sam sastaviti this-- tako da se ne može žaliti, 498 00:25:48,780 --> 00:25:51,480 jer se ne može znati da sam će ući negativan broj, 499 00:25:51,480 --> 00:25:52,550 što bi moglo biti nevažeći. 500 00:25:52,550 --> 00:25:54,633 Za sve što zna, mogao bih unesite pozitivan broj, 501 00:25:54,633 --> 00:25:56,000 što je sasvim valjan. 502 00:25:56,000 --> 00:26:01,090 Tako sam zamisliti da sam ući negativna 1 ljudi u sobi, segmentacija grešku. 503 00:26:01,090 --> 00:26:06,040 >> Pa ok. 504 00:26:06,040 --> 00:26:13,160 Tako ćemo dodati ovo natrag samo držati ga što je izvorno bio. 505 00:26:13,160 --> 00:26:15,640 Tako bi dobi. 506 00:26:15,640 --> 00:26:18,120 Sad ako želim probati negativni age-- Tako ćemo 507 00:26:18,120 --> 00:26:19,710 kažu da je pet ljudi u sobi. 508 00:26:19,710 --> 00:26:23,180 Dob osobe broj jedan negativan 4, osoba tri 509 00:26:23,180 --> 00:26:26,500 nula, osoba three-- OK. 510 00:26:26,500 --> 00:26:29,850 Pa evo, za godinu dana, broj osoba jedan će biti negativan 3 godine. 511 00:26:29,850 --> 00:26:32,830 Dakle, vjerojatno nema smisla. 512 00:26:32,830 --> 00:26:37,220 Ali to je samo zato što izgleda u kodu sve što radite 513 00:26:37,220 --> 00:26:40,260 traži GetInt. 514 00:26:40,260 --> 00:26:44,110 >> Sada, ako smo imali GetPositiveInt funkcija 515 00:26:44,110 --> 00:26:49,690 ili mi je jednostavno učinio vrsta istog while petlji tamo dolje, 516 00:26:49,690 --> 00:26:52,340 onda će to raditi savršeno u redu. 517 00:26:52,340 --> 00:26:54,200 No, u ovaj slučaj, mi jednostavno ne 518 00:26:54,200 --> 00:26:57,772 dogoditi da se rukovanje negativne vrijednosti. 519 00:26:57,772 --> 00:26:59,147 Ima li još pitanja o nizovima? 520 00:26:59,147 --> 00:27:02,290 521 00:27:02,290 --> 00:27:03,250 U REDU. 522 00:27:03,250 --> 00:27:09,380 >> Dakle, sada smo vidjeli polja. 523 00:27:09,380 --> 00:27:12,500 A mi ćemo se morati koristiti ovo naredbenog retka argumente. 524 00:27:12,500 --> 00:27:14,680 Tako je u problemu postaviti two-- Znam da mnogi od vas 525 00:27:14,680 --> 00:27:18,040 Možda još uvijek se radi na problemu setu jedan, ali je problem postaviti dva dolazi. 526 00:27:18,040 --> 00:27:22,260 U problema postaviti dva, ti si idući u treba bave strings, polja, 527 00:27:22,260 --> 00:27:23,950 i naredbenog retka argumente. 528 00:27:23,950 --> 00:27:26,270 >> Pa što su argumente naredbenog retka? 529 00:27:26,270 --> 00:27:29,570 Sada, možete vidjeti ovdje dolje Malo teaser za ono što je 530 00:27:29,570 --> 00:27:30,950 će se događati. 531 00:27:30,950 --> 00:27:32,950 Vidimo int glavni, INC argc, niz argv zagrade. 532 00:27:32,950 --> 00:27:34,560 533 00:27:34,560 --> 00:27:38,130 Dakle, prvo ćemo pokušati tumačiti što to pokušava reći. 534 00:27:38,130 --> 00:27:40,800 Sada, u redu. 535 00:27:40,800 --> 00:27:44,637 >> Dakle, u naredbeni redak treba biti navikavanje na neke od tih naredbi 536 00:27:44,637 --> 00:27:48,580 sada, a vjerojatno ste pokrenuti cd u terminalu prije. 537 00:27:48,580 --> 00:27:52,100 Dakle, ako kažemo cd pset1, znate da je to trebalo 538 00:27:52,100 --> 00:27:55,050 se mijenja u pset1 imenik. 539 00:27:55,050 --> 00:27:59,120 >> Sada primijetite da ste nikada pisani program kao što je ovaj prije. 540 00:27:59,120 --> 00:28:03,120 Svaki program koji ste napisali, ti bi pokrenuti, recimo, dot slash Mario, 541 00:28:03,120 --> 00:28:06,779 dot slash pohlepni, a zatim ga Možda vas pitati za unos. 542 00:28:06,779 --> 00:28:08,570 Sada, to nije ono što Promjena katalog radi. 543 00:28:08,570 --> 00:28:12,770 Kada pokrenete cd, ne tada reći, što imenik želiš cd u? 544 00:28:12,770 --> 00:28:17,200 Umjesto toga, ti samo reći, cd pset1 i to samo ide u pset1 imenik. 545 00:28:17,200 --> 00:28:20,430 >> Slično imamo i druge primjere. 546 00:28:20,430 --> 00:28:21,540 bi zdravo. 547 00:28:21,540 --> 00:28:25,760 Kada pokrenete napraviti, ne tada reći, koji program želite učiniti? 548 00:28:25,760 --> 00:28:29,620 Vi samo reći, u naredbenog retka bi pozdrav. 549 00:28:29,620 --> 00:28:31,060 >> Potez je još jedan primjer. 550 00:28:31,060 --> 00:28:34,840 Ovaj mi se pomicanjem mario.c podnijeti jednu imenik. 551 00:28:34,840 --> 00:28:38,060 Dakle, sada znamo s ovom primjeru smo stvarno prolaze dva argumenta. 552 00:28:38,060 --> 00:28:42,090 Postoji mario.c kao prvi argument, i točka točka je drugi argument. 553 00:28:42,090 --> 00:28:46,140 I onda kada pokrenete napraviti, te vidjeti da je stvarno dugo naredbu line-- 554 00:28:46,140 --> 00:28:50,580 da stvarno dugo naredbe tiskana u naredbenom retku. 555 00:28:50,580 --> 00:28:53,590 Tako da dugo command-- ova je samo kratki dio njega, 556 00:28:53,590 --> 00:28:56,090 ali sada imamo tri naredbenog retka argumente. 557 00:28:56,090 --> 00:28:59,750 Dot crtica nula, zdravo i hello.c. 558 00:28:59,750 --> 00:29:03,497 >> Dakle, to su naredbenog retka argumente, argumenti 559 00:29:03,497 --> 00:29:05,580 da ste prolazu Na naredbenog retka, tako da je 560 00:29:05,580 --> 00:29:08,680 ne mora se tražiti kada pokrenete program. 561 00:29:08,680 --> 00:29:13,090 Bilo bi frustrirajuće ako pri ste ran zveket je rekao: "U redu, 562 00:29:13,090 --> 00:29:15,630 koji program-- koji Datoteka ste sastavljanju? 563 00:29:15,630 --> 00:29:17,010 Hello.c. 564 00:29:17,010 --> 00:29:19,440 Što bi ti zastave željeli ući? crtica o. 565 00:29:19,440 --> 00:29:21,190 Što biste željeli datoteka se zove? 566 00:29:21,190 --> 00:29:21,690 bok. 567 00:29:21,690 --> 00:29:25,290 Ne, samo pokrenuti zveket crtica o Hello hello.c. 568 00:29:25,290 --> 00:29:28,820 >> Dakle, gledajući unatrag na to. 569 00:29:28,820 --> 00:29:32,920 Sada argc-- argc je argument broji. 570 00:29:32,920 --> 00:29:36,620 To je broj naredbenog retka Argumenti ušao u naredbenom retku. 571 00:29:36,620 --> 00:29:39,720 Pa, argv-- tehnički v zalaže za vektora, 572 00:29:39,720 --> 00:29:41,460 koji u osnovi znači niz. 573 00:29:41,460 --> 00:29:42,680 Ali možete ignorirati. 574 00:29:42,680 --> 00:29:47,540 Argv-- imamo niz argv, tako niz argv zagrade. 575 00:29:47,540 --> 00:29:50,150 Dakle, ovo je još jedan oblik zagrađuje niste vidjeli. 576 00:29:50,150 --> 00:29:52,300 Dakle, vidjeli smo nosač zapis kad smo je rekao, 577 00:29:52,300 --> 00:29:53,970 kao, niz je jednako Zamyla. 578 00:29:53,970 --> 00:29:56,910 a nosač 0 pristupa znakova Z. 579 00:29:56,910 --> 00:30:00,720 >> Također smo vidjeli nosače kada smo rekli int dobi omeđi 5. 580 00:30:00,720 --> 00:30:03,160 To je izjavio niz veličine 5. 581 00:30:03,160 --> 00:30:06,280 Dakle, ovdje je verzija nosači nismo vidjeli. 582 00:30:06,280 --> 00:30:09,630 Dakle, ova vrsta string koji argv će biti potpuno upoznati 583 00:30:09,630 --> 00:30:12,050 da bi samo biti niz. 584 00:30:12,050 --> 00:30:14,520 Sada zagrade ukazuju da je to niz. 585 00:30:14,520 --> 00:30:19,920 Tako niz argv zagrade sredstva da argv je niz žice. 586 00:30:19,920 --> 00:30:22,540 Sada tehnički niz je niz znakova. 587 00:30:22,540 --> 00:30:26,400 Dakle, to je sada niz od niza znakova. 588 00:30:26,400 --> 00:30:31,490 No, to je mnogo lakše misliti o to što je samo niz žice. 589 00:30:31,490 --> 00:30:34,900 >> Pa zašto bi moglo zagrade biti prazan? 590 00:30:34,900 --> 00:30:38,170 Kao, zašto ne možemo reći, Nosač 5, nosač nje? 591 00:30:38,170 --> 00:30:40,700 592 00:30:40,700 --> 00:30:41,200 Da. 593 00:30:41,200 --> 00:30:43,731 594 00:30:43,731 --> 00:30:44,230 Da. 595 00:30:44,230 --> 00:30:46,396 Ne znamo koliko je Ulazi li će biti. 596 00:30:46,396 --> 00:30:53,560 Dakle, ako gledamo zveket primjer, možemo reći zveket crtica o zdravo hello.c. 597 00:30:53,560 --> 00:30:56,710 U ovom konkretnom slučaju, postoji dogoditi biti tri naredbenog retka argumente. 598 00:30:56,710 --> 00:31:00,522 I tako brackets-- ćemo vidjeti u drugi to ne bi bilo tri. 599 00:31:00,522 --> 00:31:01,730 To je tehnički bi bilo četiri. 600 00:31:01,730 --> 00:31:04,030 No, nosači, mi bi recimo, postoje tri. 601 00:31:04,030 --> 00:31:08,220 Ali sada, ako smo gledali na potez mario.c dot dot, zagrade 602 00:31:08,220 --> 00:31:09,760 mi bi htjeli staviti dva u njima. 603 00:31:09,760 --> 00:31:12,884 >> I postoji mnogo naredbi koje imate varijablu broj komandne linije 604 00:31:12,884 --> 00:31:13,620 argumenti. 605 00:31:13,620 --> 00:31:17,430 Pa što je to verzija Nosač zapis ukazuje 606 00:31:17,430 --> 00:31:20,820 da argv je niz žice. 607 00:31:20,820 --> 00:31:24,360 No, ne znamo koliko je žice su u tom nizu. 608 00:31:24,360 --> 00:31:27,090 A kako ćemo onda znati koliko mnogi nizovi su u nizu? 609 00:31:27,090 --> 00:31:28,870 To je cijela točka argc. 610 00:31:28,870 --> 00:31:32,300 argc nam govori koliko je argv. 611 00:31:32,300 --> 00:31:36,500 >> Dakle, posljednja stvar koju treba imati na um je da je, tehnički, 612 00:31:36,500 --> 00:31:40,820 sama naredba broji kao jedan naredbenog retka argumente u. 613 00:31:40,820 --> 00:31:45,330 Dakle cd pset1, postoje dva naredbenog retka argumente. 614 00:31:45,330 --> 00:31:50,260 Program u sebi, CD, a zatim stvarni argument dio toga, pset1. 615 00:31:50,260 --> 00:31:54,490 Svaki program koji ste do sada napisao je imao jednog naredbenog retka argument-- točku 616 00:31:54,490 --> 00:31:55,320 slash Mario. 617 00:31:55,320 --> 00:31:57,350 To je jedini argument naredbenog retka. 618 00:31:57,350 --> 00:32:00,900 >> Tako sada gleda na zveket crtica o Hello hello.c. 619 00:32:00,900 --> 00:32:01,905 Dakle, ono što 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 Dakle argc je 4. 623 00:32:08,140 --> 00:32:12,140 Jeka, pa argv nosač 0 je zveket. 624 00:32:12,140 --> 00:32:15,630 argv nosač 1 je crtica 0. 625 00:32:15,630 --> 00:32:21,870 argv nosač 2 je zdravo, a argv nosač 3 hello.c. 626 00:32:21,870 --> 00:32:26,813 OK, pitanja o tome, a onda ćemo pogledajte neke programske primjera. 627 00:32:26,813 --> 00:32:29,460 628 00:32:29,460 --> 00:32:30,480 >> U REDU. 629 00:32:30,480 --> 00:32:36,260 Tako ćemo pogledati hello3.c. 630 00:32:36,260 --> 00:32:41,890 Dakle, to bi trebao biti upoznat s jedan od prvih primjera c 631 00:32:41,890 --> 00:32:45,800 imali smo gdje bismo samo reći, pozdravi svijet, ali sada je to više uopće. 632 00:32:45,800 --> 00:32:52,300 Dakle, ovdje govorimo pozdravi % s backslash nje argv nosač 1. 633 00:32:52,300 --> 00:32:57,440 Notice-- pa sve do sada, to je ono što je moj datoteka predloška je izgledalo. 634 00:32:57,440 --> 00:33:01,800 Imao sam int glavni (prazninu), a onda bih učiniti nešto u glavnoj funkciji. 635 00:33:01,800 --> 00:33:05,100 Sada, umjesto, nakon što smo započeli bave s naredbenog retka argumente, 636 00:33:05,100 --> 00:33:07,890 moramo navesti različiti oblik glavna. 637 00:33:07,890 --> 00:33:11,930 >> Tako gledajući hello3 opet, glavna ide 638 00:33:11,930 --> 00:33:15,990 uzeti dva argumenta now-- int argc, broj naredbenog retka argumente, 639 00:33:15,990 --> 00:33:20,970 i niz argv zagrada, stvarni žice ušao u naredbenom retku. 640 00:33:20,970 --> 00:33:26,560 Tako ću to promijeniti Predložak odražavaju tu činjenicu. 641 00:33:26,560 --> 00:33:29,060 Sada kada pišu program, ako ne 642 00:33:29,060 --> 00:33:33,720 trebaju poduzeti sve naredbenog retka argumenti, onda samo koristiti int glavni (prazninu). 643 00:33:33,720 --> 00:33:37,070 Ali sada, kada pišete argument programa naredbenog retka, što 644 00:33:37,070 --> 00:33:40,350 ti si idući u biti događaj za problema postavljen two-- tako da sada radite 645 00:33:40,350 --> 00:33:42,630 Programi koji trebaju poduzeti naredbenog retka argumente, 646 00:33:42,630 --> 00:33:45,250 morate imati Glavna ovog obrasca. 647 00:33:45,250 --> 00:33:51,290 >> Dakle here-- ovo je velika potrošnja iz naredbenog retka argumente. 648 00:33:51,290 --> 00:33:54,100 Tako ispis argv 1. 649 00:33:54,100 --> 00:33:59,180 U redu, tako ćemo sastaviti i pokrenite ovaj program. 650 00:33:59,180 --> 00:34:02,440 Napravite hello3. 651 00:34:02,440 --> 00:34:03,570 Izrađuje. 652 00:34:03,570 --> 00:34:06,870 Dot slash hello3. 653 00:34:06,870 --> 00:34:08,920 I recimo, "Rob". 654 00:34:08,920 --> 00:34:10,760 Pozdrav Rob. 655 00:34:10,760 --> 00:34:14,940 Ako kažem "Zdravo Marija" Zdravo Marija. 656 00:34:14,940 --> 00:34:15,719 Pozdrav Maria. 657 00:34:15,719 --> 00:34:18,639 Hannah dalje kaže: "Pozdrav Maria ", jer nisam 658 00:34:18,639 --> 00:34:21,340 radi ništa s našim argv 2. 659 00:34:21,340 --> 00:34:22,590 Argv 2 sada će biti "Hannah." 660 00:34:22,590 --> 00:34:25,030 Argc bi 3. 661 00:34:25,030 --> 00:34:27,735 Što ako sam to učinio? 662 00:34:27,735 --> 00:34:31,980 663 00:34:31,980 --> 00:34:34,679 Tako Pozdrav null. 664 00:34:34,679 --> 00:34:38,760 >> Kratko se osvrnuo i na činjenicu da, tehnički, GetString 665 00:34:38,760 --> 00:34:42,429 može vratiti null, ali ćemo dobiti puno više u tome što null zapravo jest. 666 00:34:42,429 --> 00:34:47,449 Ali uzmi ga kao stvar Činjenica da ne općenito loše. 667 00:34:47,449 --> 00:34:50,179 Napravili smo nešto krivo, ako to je ispis "Hello null." 668 00:34:50,179 --> 00:34:52,179 A razlog zbog kojeg smo učinili Nešto nije u redu is-- dobro, 669 00:34:52,179 --> 00:34:56,179 kad sam trčao dot kose crte hello3, argc je 1. 670 00:34:56,179 --> 00:34:59,680 To znači da je duljina argv je 1. 671 00:34:59,680 --> 00:35:05,110 Ako niz je duljine 1, jedina valjana indeks je nula. 672 00:35:05,110 --> 00:35:08,550 I tako ovdje argv 1 je izvan Raspon tog polja. 673 00:35:08,550 --> 00:35:13,410 To je slično kao prije, kada sam pokušao pohraniti 6 izvan kraja niza. 674 00:35:13,410 --> 00:35:18,100 Dakle, pokušavam pristupiti nešto izvan argv točaka, 675 00:35:18,100 --> 00:35:21,340 a mi smo dobivanje null. 676 00:35:21,340 --> 00:35:24,360 >> Dakle bolji verzija ovo poboljšanje, 677 00:35:24,360 --> 00:35:27,010 izričito provjeru argc. 678 00:35:27,010 --> 00:35:33,580 Dakle, ako argc jednaka 2, to znači da smo trčali nešto poput točkica Slash hello3 Rob. 679 00:35:33,580 --> 00:35:36,840 I to će se ispisati "Hello Rob." 680 00:35:36,840 --> 00:35:39,850 Ako argc nije jednak 2, onda samo prolazi 681 00:35:39,850 --> 00:35:42,560 ignorirati ono što ste stavili na naredbenog retka argumente 682 00:35:42,560 --> 00:35:43,960 kao naredbenog retka argumente. 683 00:35:43,960 --> 00:35:47,168 Ili, ako niste stavili bilo na sve, to je Samo će zanemariti da je i samo reći: 684 00:35:47,168 --> 00:35:47,960 "Pozdrav ti." 685 00:35:47,960 --> 00:35:51,490 >> Dakle sastavljanju ovo. 686 00:35:51,490 --> 00:35:54,500 Napravite hello4. 687 00:35:54,500 --> 00:35:56,790 I trčanje hello4. 688 00:35:56,790 --> 00:36:00,010 To ovako radi, što bi se ispisati? 689 00:36:00,010 --> 00:36:01,330 "Halo vas." 690 00:36:01,330 --> 00:36:02,810 Pozdrav ti. 691 00:36:02,810 --> 00:36:05,870 Što je hello4 Rob? 692 00:36:05,870 --> 00:36:06,950 "Halo Rob." 693 00:36:06,950 --> 00:36:10,580 I na kraju, pozdravi Rob Maria je samo "Hello si" opet, 694 00:36:10,580 --> 00:36:13,677 zato što stvarno ne ulaze nešto što se očekuje. 695 00:36:13,677 --> 00:36:15,510 Unijeli ste više imena nego što je mogao podnijeti, 696 00:36:15,510 --> 00:36:19,500 tako da jednostavno ne drži se Hello li ponašanje. 697 00:36:19,500 --> 00:36:23,040 Dakle, pitanja o tome? 698 00:36:23,040 --> 00:36:26,290 Ili naredbenog retka argumente? 699 00:36:26,290 --> 00:36:28,690 >> U redu, tako da uzimanje pogledati na par više primjera korištenja 700 00:36:28,690 --> 00:36:34,230 naredbenog retka arguments-- prvi smo argv crtica 1 točka c. 701 00:36:34,230 --> 00:36:38,510 Tako komentari dati ono Ovaj program bi trebao biti događaj. 702 00:36:38,510 --> 00:36:42,460 Ali primijetite now-- ovo za petlje, to odgovara točan uzorak 703 00:36:42,460 --> 00:36:43,390 Bio sam rekao prije. 704 00:36:43,390 --> 00:36:46,240 Mi samo se dogoditi da se koristeći argc umjesto n. 705 00:36:46,240 --> 00:36:48,880 Sada argc stvarno n. 706 00:36:48,880 --> 00:36:51,260 To je duljina argv polja. 707 00:36:51,260 --> 00:36:59,600 Tako su iterating preko argv Niz printf-ing svaku argv vrijednost. 708 00:36:59,600 --> 00:37:04,730 >> Dakle, ako sam napraviti ovaj. 709 00:37:04,730 --> 00:37:08,232 Napravite argv 1. 710 00:37:08,232 --> 00:37:09,940 Ona sastavlja. 711 00:37:09,940 --> 00:37:11,620 Dot slash argv 1. 712 00:37:11,620 --> 00:37:15,530 Samo trčanje ovo, to ispisuje dot kose crte argv 1 713 00:37:15,530 --> 00:37:18,500 budući da je bila jedina naredbenog retka argument-- naziv programa. 714 00:37:18,500 --> 00:37:22,080 Tu će uvijek biti na least-- argc ne može biti manji od jedan, 715 00:37:22,080 --> 00:37:25,910 jer će uvijek barem biti naziv programa za pokretanje. 716 00:37:25,910 --> 00:37:32,040 Dakle argv 1 Rob će ispisati argv 1 a potom na novoj liniji "Rob". 717 00:37:32,040 --> 00:37:36,350 >> Tako je u prvoj iteraciji ove petlje, ja je 0. 718 00:37:36,350 --> 00:37:39,090 Argv 0 je naziv programa. 719 00:37:39,090 --> 00:37:40,010 Dot slash argv 1. 720 00:37:40,010 --> 00:37:43,770 A onda argv 1 je moj prvi naredbenog retka argument, što je Rob. 721 00:37:43,770 --> 00:37:45,920 U ovom trenutku, mi smo jednaki argc. 722 00:37:45,920 --> 00:37:48,210 Lomimo iz petlje i gotovi smo. 723 00:37:48,210 --> 00:37:53,940 Dakle, to će raditi za proizvoljna Broj naredbenog retka argumente. 724 00:37:53,940 --> 00:37:58,550 Obavijest ispisuje argv 0, argv 1, 2 argv, argv 3, 4 argv. 725 00:37:58,550 --> 00:38:00,150 I nema argv 5. 726 00:38:00,150 --> 00:38:01,460 argc jednaka 5. 727 00:38:01,460 --> 00:38:06,960 Tako je na argc-- na sam jednak 5, lomimo iz petlje. 728 00:38:06,960 --> 00:38:07,950 U REDU. 729 00:38:07,950 --> 00:38:11,315 Dakle, pitanja o da, prije nego što pogledajte složeniji primjer? 730 00:38:11,315 --> 00:38:14,190 731 00:38:14,190 --> 00:38:16,860 >> Tako argv 2. 732 00:38:16,860 --> 00:38:17,830 U redu. 733 00:38:17,830 --> 00:38:20,610 Dakle, mi smo još uvijek ispis argumenti naredbenog retka. 734 00:38:20,610 --> 00:38:23,170 Ali sada primijetiti imamo ugniježđenu za petlju. 735 00:38:23,170 --> 00:38:24,670 Pa što se to radi? 736 00:38:24,670 --> 00:38:28,430 Dakle, prva petlja radi točno što je to učinio prije. 737 00:38:28,430 --> 00:38:30,950 Još uvijek petlje iznad svaka naredba-crta argument, 738 00:38:30,950 --> 00:38:34,260 ali sada ovaj drugi loop-- imamo Također vidjeli nešto ovako prije. 739 00:38:34,260 --> 00:38:38,600 Kad je iterating više Zamyla ispis Z-A-M-il-L-a. 740 00:38:38,600 --> 00:38:44,816 Dakle, ovaj drugi petlje za int j jednak 0, n = strlen od argv nosača i. 741 00:38:44,816 --> 00:38:49,170 >> Tako ćemo najprije misliti the-- idemo prošetati. 742 00:38:49,170 --> 00:38:53,560 Razmislimo što računalo će učiniti ako sam trčao ovaj program samo kao točka 743 00:38:53,560 --> 00:38:56,030 slash argv crtica 2. 744 00:38:56,030 --> 00:39:03,590 Dakle, ako sam trčao ovaj kod, zatim argc će biti jednak 1. 745 00:39:03,590 --> 00:39:07,050 I niz argv-- postoji samo će biti jedan indeks u argv, 746 00:39:07,050 --> 00:39:12,370 i da će biti jednaka do točke slash argv 2-- naziv programa. 747 00:39:12,370 --> 00:39:19,170 >> U redu, tako da sada ja jednak 0, ja manje od 1, i plus plus za int j = 0, 748 00:39:19,170 --> 00:39:23,880 n = strlen od argv nosača 0, pa je u prva iteracija ovog petlje. argv 749 00:39:23,880 --> 00:39:27,250 Nosač 0 je točka slash argv 2. 750 00:39:27,250 --> 00:39:29,320 Dakle, što je duljina tog niza? 751 00:39:29,320 --> 00:39:32,480 Pa, dot slash A-R-G-V crtica 2. 752 00:39:32,480 --> 00:39:35,020 Dakle strlen to će biti 8. 753 00:39:35,020 --> 00:39:37,500 Tako j = 0, n = 8. 754 00:39:37,500 --> 00:39:39,530 Tako dugo dok je manji od j, 8 j ++. 755 00:39:39,530 --> 00:39:44,080 A uz to ćemo biti ispis jedan lik koji 756 00:39:44,080 --> 00:39:47,350 je argv nosač ja omeđi j. 757 00:39:47,350 --> 00:39:49,826 >> Dakle, samo sam je nula. 758 00:39:49,826 --> 00:39:51,700 Još samo jedan naredbenog retka argument. 759 00:39:51,700 --> 00:39:53,890 U toj prvoj iteraciji od za petlju, mi smo 760 00:39:53,890 --> 00:39:56,950 će biti tisak argv nosač 0 nosač 0. 761 00:39:56,950 --> 00:39:58,325 A onda j će povećavati. 762 00:39:58,325 --> 00:40:01,650 I idemo ispis argv nosač 0 nosač 1. 763 00:40:01,650 --> 00:40:04,150 A onda argv nosač 0 zagrada 2. 764 00:40:04,150 --> 00:40:09,030 >> Dakle, ovo je naš prvi susret multi-dimenzionalnih polja. 765 00:40:09,030 --> 00:40:12,770 Zapamtite ranije da sam rekao da argv je tehnički 766 00:40:12,770 --> 00:40:15,950 niz nizova znakova. 767 00:40:15,950 --> 00:40:24,360 Dakle ovdje ako sam rekao nešto poput Niz je jednak argv nosač ja, 768 00:40:24,360 --> 00:40:29,590 a onda sam rekao, a nosač j, to bi postigli istu stvar. 769 00:40:29,590 --> 00:40:31,960 Sada ste vidjeli s nosača j prije. 770 00:40:31,960 --> 00:40:36,680 To je samo pristupiti th karakter tog niza. 771 00:40:36,680 --> 00:40:48,010 Tako je s ovim, mi smo uzimajući j-ti karakter i-argv. 772 00:40:48,010 --> 00:40:51,450 >> Pa što bi trebao to u konačnici izlaz? 773 00:40:51,450 --> 00:40:53,210 Napravite argv 2. 774 00:40:53,210 --> 00:40:54,730 Ona sastavlja. 775 00:40:54,730 --> 00:40:56,340 Dot slash argv 2. 776 00:40:56,340 --> 00:41:03,790 "Rob Maria Ana" i daj nam malo mjesta. 777 00:41:03,790 --> 00:41:07,050 Dakle, vidimo da je ovo izlaza točka na vlastitoj liniji i slash 778 00:41:07,050 --> 00:41:08,920 na vlastitu liniju i na vlastitu liniju. 779 00:41:08,920 --> 00:41:11,260 To je svaki ispis individualni karakter 780 00:41:11,260 --> 00:41:12,950 svakog naredbenog retka argumente. 781 00:41:12,950 --> 00:41:15,960 A onda između njih, zbog ove nove linije 782 00:41:15,960 --> 00:41:19,380 mi smo tiskanje ovdje, u između njih to će ispisati novu liniju. 783 00:41:19,380 --> 00:41:24,540 >> Dakle, to je slično prethodna argv crtica 1, 784 00:41:24,540 --> 00:41:26,459 koji ispisuju svaki naredbenog retka argument, 785 00:41:26,459 --> 00:41:28,500 ali sada smo ispis naredbenog retka argumenti 786 00:41:28,500 --> 00:41:31,950 a zatim iterating kroz svaki karakter svakog naredbenog retka argumente 787 00:41:31,950 --> 00:41:35,400 da se ovaj izlaz. 788 00:41:35,400 --> 00:41:36,870 U REDU? 789 00:41:36,870 --> 00:41:40,570 Dakle, pitanja o tome? 790 00:41:40,570 --> 00:41:45,130 >> Jedna stvar na umu je da naredbenog retka arguments-- 791 00:41:45,130 --> 00:41:49,990 tako da su odvojene prostore kao što bi, naravno, očekivati ​​da će biti. 792 00:41:49,990 --> 00:41:53,050 Dakle niz može imati mjesta u njoj. 793 00:41:53,050 --> 00:41:57,380 To nije super važno, ali ako sam Želio treći naredbenog retka argumente 794 00:41:57,380 --> 00:42:01,226 imati mjesta u njoj, onda sam Moglo bi se reći nešto poput ovoga. 795 00:42:01,226 --> 00:42:04,470 796 00:42:04,470 --> 00:42:05,550 U REDU? 797 00:42:05,550 --> 00:42:12,190 Dakle, to je sada još uvijek ima samo tri naredbenog retka arguments-- i 4. 798 00:42:12,190 --> 00:42:17,620 Dot slash argv crtica 2, Rob, Marija i Ana Bloomberg. 799 00:42:17,620 --> 00:42:18,320 U REDU. 800 00:42:18,320 --> 00:42:19,310 Pitanja o ovome? 801 00:42:19,310 --> 00:42:22,700 802 00:42:22,700 --> 00:42:24,894 >> Nema ništa posebno o razmakom. 803 00:42:24,894 --> 00:42:27,810 To se događa samo biti da je naredbenog retka tretira prostor karakter 804 00:42:27,810 --> 00:42:29,226 i kako ste odvojili argument. 805 00:42:29,226 --> 00:42:32,048 806 00:42:32,048 --> 00:42:33,000 U redu. 807 00:42:33,000 --> 00:42:39,950 Pa onda Problem skup two-- da ćeš biti 808 00:42:39,950 --> 00:42:43,240 gledajući tajnog ključa kriptografije. 809 00:42:43,240 --> 00:42:47,700 Dakle, u tom primjeru slično što smo vidjeli od A Christmas Story, 810 00:42:47,700 --> 00:42:52,840 ti si idući u biti provedbi neke algoritmi koji, s obzirom na poruku, 811 00:42:52,840 --> 00:42:55,560 ti si idući u biti u mogućnosti šifrirati tu poruku 812 00:42:55,560 --> 00:42:58,730 da je samo netko s tom tajnom ključ, s tim dekoder prstenom, 813 00:42:58,730 --> 00:43:01,090 trebao moći dešifrirati. 814 00:43:01,090 --> 00:43:04,839 >> Tako da je standardni izdanje. 815 00:43:04,839 --> 00:43:07,130 Ti si idući u biti provedbi dvije različite verzije. 816 00:43:07,130 --> 00:43:09,620 Ako vam se dogoditi da se pogled na haker izdanje sada 817 00:43:09,620 --> 00:43:12,600 ćemo dati ti niz ovako, 818 00:43:12,600 --> 00:43:15,240 što predstavlja šifriranu lozinku. 819 00:43:15,240 --> 00:43:19,990 Dakle, vaš cilj je shvatiti što raskrivanje lozinka je. 820 00:43:19,990 --> 00:43:26,950 Sada je to zapravo kako lozinke spremaju se u puno računala, 821 00:43:26,950 --> 00:43:31,290 i to samo sprema ovo slučajni niz znakova. 822 00:43:31,290 --> 00:43:34,440 Morate shvatiti kako doći ovog slučajnim niz znakova 823 00:43:34,440 --> 00:43:36,140 na ono što je izvorni lozinka. 824 00:43:36,140 --> 00:43:39,060 825 00:43:39,060 --> 00:43:43,290 >> I konačno, nakon toga Problem set, trebali 826 00:43:43,290 --> 00:43:46,100 biti u stanju razumjeti što to znači. 827 00:43:46,100 --> 00:43:51,650 Tako ćete naučiti kako dešifrirati ova vrsta slučajnih niz. 828 00:43:51,650 --> 00:43:56,390 Isto tako, ako se sjećate iz tjedna 0, možda ste vidjeli ovaj URL. 829 00:43:56,390 --> 00:44:00,210 A ti bi trebao biti u mogućnosti dešifriranje to s vremenom. 830 00:44:00,210 --> 00:44:04,810 Možda nećete biti sretni kad vas dešifrirati ga i kliknite na poveznicu. 831 00:44:04,810 --> 00:44:05,700 U redu. 832 00:44:05,700 --> 00:44:06,591 To je to za danas. 833 00:44:06,591 --> 00:44:12,095 Dakle, vidimo se sljedeći tjedan! 834 00:44:12,095 --> 00:44:18,315 >> [ELECTRONIC glazbom] 835 00:44:18,315 --> 00:47:15,619