1 00:00:00,000 --> 00:00:03,944 >> [Predvaja glasba] 2 00:00:03,944 --> 00:00:10,732 3 00:00:10,732 --> 00:00:11,690 DAVID Malan: V redu. 4 00:00:11,690 --> 00:00:14,674 To je CS50, in to je konec 2 tedna. 5 00:00:14,674 --> 00:00:16,840 Žal mi je, da ne bi moglo biti tam z vami danes, 6 00:00:16,840 --> 00:00:18,300 ampak ti si v zelo dobrih rokah. 7 00:00:18,300 --> 00:00:21,710 Dovolite mi, da predstavim CS50 lastno Rob Bowden. 8 00:00:21,710 --> 00:00:29,106 9 00:00:29,106 --> 00:00:31,730 ROB Bowden: In seveda, potem moramo, da bi se norčevali iz dejstva, 10 00:00:31,730 --> 00:00:36,820 da nam je poslal navpično video in pokazati to. 11 00:00:36,820 --> 00:00:38,320 >> [VIDEO PREDVAJANJE] 12 00:00:38,320 --> 00:00:39,820 >> [Predvaja glasba] 13 00:00:39,820 --> 00:00:42,350 >> [Stopinje] 14 00:00:42,350 --> 00:00:44,730 >> -Ta Video ni morali gledati na ta način. 15 00:00:44,730 --> 00:00:46,570 To bi bilo mogoče preprečiti. 16 00:00:46,570 --> 00:00:49,070 Recite ne za vertikalne videoposnetkov. 17 00:00:49,070 --> 00:00:53,310 >> -Vertical Videi se zgodi, ko vas držite fotoaparat v napačno smer. 18 00:00:53,310 --> 00:00:55,880 Video posnetek se bo končala videti kot dreka. 19 00:00:55,880 --> 00:00:57,650 >> - [Grunt] 20 00:00:57,650 --> 00:01:02,240 >> -Ni Več in več ljudi zasvojeni za izdelavo vertikalne video posnetke vsak dan. 21 00:01:02,240 --> 00:01:06,240 To ni tresk ali nič, vendar je še vedno zelo slabo. 22 00:01:06,240 --> 00:01:10,410 Obstajata dve različni vrsti ljudje, ki so žrtve z VVS. 23 00:01:10,410 --> 00:01:14,160 Prva skupina obravnava videi so ustrelili kot slike. 24 00:01:14,160 --> 00:01:15,850 Oni ne pomeni nobene škode. 25 00:01:15,850 --> 00:01:19,180 Oni pač ne razumejo, da medtem ko lahko vključite sliko, 26 00:01:19,180 --> 00:01:20,880 vam ne morem obrniti video. 27 00:01:20,880 --> 00:01:21,880 >> [CRASH] 28 00:01:21,880 --> 00:01:23,460 >> - [OPICA SOUNDS] 29 00:01:23,460 --> 00:01:27,540 >> -V Druga skupina so ljudje ki ne dajejo [Škripati]. 30 00:01:27,540 --> 00:01:31,090 >> -Vertical Video sindrom je nevaren. 31 00:01:31,090 --> 00:01:34,120 Filmi imajo je bila vedno v vodoravnem položaju. 32 00:01:34,120 --> 00:01:35,990 Televizorji so vodoravno. 33 00:01:35,990 --> 00:01:38,380 Računalniški zasloni so vodoravno. 34 00:01:38,380 --> 00:01:41,580 Ljudska oči so vodoravno. 35 00:01:41,580 --> 00:01:45,170 Mi niso zgrajene za gledam vertikalne videoposnetkov. 36 00:01:45,170 --> 00:01:47,600 >> -I Ljubezen vertikalne videoposnetkov. 37 00:01:47,600 --> 00:01:50,410 >> -Nobody Briga zate. 38 00:01:50,410 --> 00:01:53,340 >> -če Ta problem je ostalo nenadzorovano, tudi vi 39 00:01:53,340 --> 00:01:57,650 se bo začel prikazovati štiri videe naenkrat samo, da shranite pasovno širino. 40 00:01:57,650 --> 00:02:02,400 >> -Letterboxed Vertikalne videos bi biti velikost poštne znamke. 41 00:02:02,400 --> 00:02:04,920 >> In se bo razširila povsod. 42 00:02:04,920 --> 00:02:07,670 Zasloni Movie imajo je bila vedno v vodoravnem položaju. 43 00:02:07,670 --> 00:02:11,200 Če vertikalni videi postanejo sprejeta, kinodvorane 44 00:02:11,200 --> 00:02:13,930 bo moral biti visok in suh. 45 00:02:13,930 --> 00:02:17,710 >> In vse kinodvorane bi morali priti podrli in obnovili. 46 00:02:17,710 --> 00:02:22,090 In do takrat, ko so jih obnovili, Mila Kunis bo stara in grda. 47 00:02:22,090 --> 00:02:24,342 >> -Birds Bo crash v njih in umre. 48 00:02:24,342 --> 00:02:26,530 >> -We'll Vsi dobili trd vratovi iz looking up. 49 00:02:26,530 --> 00:02:29,800 >> In nihče ne bo sedel v prvi vrsti še kdaj. 50 00:02:29,800 --> 00:02:37,170 >> -George Lucas bo ponovno sprostitev Star Vojne again-- Skinny izdaja. 51 00:02:37,170 --> 00:02:41,860 >> -I Ni bil nikoli zares lahko povem zgodba, ki sem želel povedati. 52 00:02:41,860 --> 00:02:46,030 To je bila odlična priložnost za mene, da poskus z novo tehnologijo. 53 00:02:46,030 --> 00:02:48,150 >> -You're Kreten. 54 00:02:48,150 --> 00:02:54,430 >> -Vsak Čas mobilna naprava se uporablja za snemanje video, skušnjava je tam. 55 00:02:54,430 --> 00:02:56,370 Samo reči ne. 56 00:02:56,370 --> 00:03:00,116 Reči ne George Lucas. 57 00:03:00,116 --> 00:03:04,062 Recite ne za starega Mila Kunis. 58 00:03:04,062 --> 00:03:06,600 Recite ne za vertikalne videoposnetkov. 59 00:03:06,600 --> 00:03:12,511 >> In če vidiš kdo to počne, pravijo, "nisi streljanje ta pravica lutke!" 60 00:03:12,511 --> 00:03:15,433 >> [Predvaja glasba] 61 00:03:15,433 --> 00:03:18,842 62 00:03:18,842 --> 00:03:19,830 >> [END PREDVAJANJE] 63 00:03:19,830 --> 00:03:23,702 >> [Aplavz] 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 oblika kriptografiji 67 00:03:45,790 --> 00:03:49,500 ki je v bistvu šifriranje in dešifriranje skrivnih sporočil. 68 00:03:49,500 --> 00:03:52,590 Torej, tukaj imamo zelo preprosto igračo. 69 00:03:52,590 --> 00:03:56,900 In ideja je zunanji obroč vrti okoli notranjega obroča. 70 00:03:56,900 --> 00:04:01,610 In lahko vidite, morda, če sem povečavo v, that-- je težko videti. 71 00:04:01,610 --> 00:04:05,090 Vendar, kot je število 1-- dobro, da se preselili. 72 00:04:05,090 --> 00:04:09,120 >> Številka 1 preslika na pismo X, številka 2 Karte za pisma 73 00:04:09,120 --> 00:04:11,630 J. Izjemno težko Ne preskočite naprej. 74 00:04:11,630 --> 00:04:16,100 Pismo 2 preslika v J. Številka 3 preslika do D. Torej 75 00:04:16,100 --> 00:04:20,140 s tem prstanom lahko daš nekdo sporočilo 1, 2, 3. 76 00:04:20,140 --> 00:04:22,624 Iz neznanega razloga vas želijo, da jim povem XJD. 77 00:04:22,624 --> 00:04:24,540 Lahko pa jih dajo nekatere sporočilo številk, 78 00:04:24,540 --> 00:04:28,460 in dokler imajo ta obroč pa mogoče dešifrirati, kaj si hotel povedati. 79 00:04:28,460 --> 00:04:32,510 >> Torej, ste morda videli to Poseben primer kriptografijo 80 00:04:32,510 --> 00:04:36,640 prej, če okoli božiča ki ste jih gledal A Christmas Story. 81 00:04:36,640 --> 00:04:38,520 Če še nikoli niste videli je prej, potem samo 82 00:04:38,520 --> 00:04:41,060 Vklop TBS na dobesedno kadarkoli na božični večer, 83 00:04:41,060 --> 00:04:44,510 ker so samo kažejo na hrbtni strani nazaj nazaj nazaj ves dan. 84 00:04:44,510 --> 00:04:46,744 In ustrezni video je to. 85 00:04:46,744 --> 00:04:47,410 [VIDEO PREDVAJANJE] 86 00:04:47,410 --> 00:04:50,020 -Bodite Je znano vsem in razni da Ralph Parker je s tem 87 00:04:50,020 --> 00:04:52,850 imenovan za člana Mali Orphan Annie Secret Krog 88 00:04:52,850 --> 00:04:56,490 in je upravičen do uživanja vseh časti in koristi z njimi pojavljajo. 89 00:04:56,490 --> 00:04:59,010 Podpisano Mali Orphan Annie. 90 00:04:59,010 --> 00:05:03,120 Sopodpiše Pierre Andre s črnilom! 91 00:05:03,120 --> 00:05:07,460 Priznanja in ugodnosti že pri devetih letih! 92 00:05:07,460 --> 00:05:12,530 >> [Kričati od radia] 93 00:05:12,530 --> 00:05:13,030 -Daj no. 94 00:05:13,030 --> 00:05:14,000 Pojdimo naprej z njim. 95 00:05:14,000 --> 00:05:18,274 Jaz ne potrebujem vse, da jazz o tihotapcih in pirati. 96 00:05:18,274 --> 00:05:20,440 -Poslušaj Jutri zvečer z zaključni pustolovščina 97 00:05:20,440 --> 00:05:22,540 Črnega piratske ladje. 98 00:05:22,540 --> 00:05:25,460 Zdaj je čas za Annie skrivnost sporočilo 99 00:05:25,460 --> 00:05:28,620 za vas člani Secret kroga. 100 00:05:28,620 --> 00:05:32,370 Ne pozabite, otroci, samo člani Annie Secret Circle, 101 00:05:32,370 --> 00:05:34,880 mogoče dekodirati Annie je skrivno sporočilo. 102 00:05:34,880 --> 00:05:39,100 Ne pozabite, Annie je odvisno od vas. 103 00:05:39,100 --> 00:05:41,660 Nastavite zatiči za B2. 104 00:05:41,660 --> 00:05:43,960 Tu je sporočilo. 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 -Jaz Sem v mojem prvem tajnem sestanku. 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 v veliki glasovno nocoj. 115 00:05:54,570 --> 00:05:57,490 Jaz lahko povem, da nocojšnji Sporočilo je bilo res pomembno. 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 sporočilo od Annie sama. 119 00:06:01,580 --> 00:06:02,880 Ne pozabite, ne povej nikomur. 120 00:06:02,880 --> 00:06:07,840 121 00:06:07,840 --> 00:06:11,130 >> Pet- sekund kasneje, sem v edini soba v hiši, kjer je fant devet 122 00:06:11,130 --> 00:06:15,830 lahko sedeli v zasebnost in dekodiranje. 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 Šla sem na naslednjo. 126 00:06:20,210 --> 00:06:23,300 E. Prva beseda je "biti." 127 00:06:23,300 --> 00:06:25,880 S. je bil prihod zdaj lažje. 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 Pridi na, Ralphie! 131 00:06:31,278 --> 00:06:31,861 Sem moram iti! 132 00:06:31,861 --> 00:06:33,182 -I'll Biti desno navzdol, Ma! 133 00:06:33,182 --> 00:06:36,038 Gee čarovnik. 134 00:06:36,038 --> 00:06:42,840 T. O. "Bodite prepričani, da" - se prepričajte, da česa? 135 00:06:42,840 --> 00:06:44,770 Kaj je bilo malo Orphan Annie poskuša povedati? 136 00:06:44,770 --> 00:06:46,381 Bodite prepričani, da kaj? 137 00:06:46,381 --> 00:06:47,825 >> -Randy Mora iti! 138 00:06:47,825 --> 00:06:48,866 Bi, prosim, pridi ven? 139 00:06:48,866 --> 00:06:49,783 >> -Vse V redu, mama! 140 00:06:49,783 --> 00:06:51,786 Takoj bom ven! 141 00:06:51,786 --> 00:06:53,606 Bil sem vse bližje zdaj. 142 00:06:53,606 --> 00:06:55,550 Napetost je bilo grozno. 143 00:06:55,550 --> 00:06:57,050 Kaj je bilo to? 144 00:06:57,050 --> 00:06:59,905 Usoda planeta lahko visi na nitki! 145 00:06:59,905 --> 00:07:01,736 >> -Ralphie, Randy je dobil, da gredo! 146 00:07:01,736 --> 00:07:05,680 >> -I'll Takoj ven, za zjokat! 147 00:07:05,680 --> 00:07:07,170 Skoraj tam! 148 00:07:07,170 --> 00:07:08,150 Moji prsti letel. 149 00:07:08,150 --> 00:07:09,980 Moj um je jeklena past. 150 00:07:09,980 --> 00:07:11,496 Vsak por vibrira. 151 00:07:11,496 --> 00:07:13,268 Bilo je skoraj 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 Bodite prepričani, da popij 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 Crummy komercialna? 160 00:07:27,520 --> 00:07:32,040 161 00:07:32,040 --> 00:07:34,920 Kurbin sin. 162 00:07:34,920 --> 00:07:35,890 >> [END PREDVAJANJE] 163 00:07:35,890 --> 00:07:39,650 >> ROB Bowden: Torej, to je, kako Ovaltine nanaša na kriptografijo. 164 00:07:39,650 --> 00:07:42,290 V bistvu CS50 pravkar objavljeno Ovaltine, tako da smo lahko 165 00:07:42,290 --> 00:07:44,400 biti crummy reklama za Ovaltine. 166 00:07:44,400 --> 00:07:44,900 V redu. 167 00:07:44,900 --> 00:07:47,120 Torej, zdaj dejansko računalništvo. 168 00:07:47,120 --> 00:07:50,670 Ne pozabite, v ponedeljek smo končali potapljanje globlje v nizih. 169 00:07:50,670 --> 00:07:52,820 Tako smo se ukvarjajo z niz "Zamyla." 170 00:07:52,820 --> 00:07:55,130 In smo priznavanju dejstvo, da smo se lahko zdravi 171 00:07:55,130 --> 00:07:57,510 "Zamyla" kot zaporedje znakov. 172 00:07:57,510 --> 00:07:59,740 In ne pozabite, da smo se naučili nosilec zapis. 173 00:07:59,740 --> 00:08:01,995 Torej, če bi bila ta shranjena v nizu "i", nato 174 00:08:01,995 --> 00:08:05,860 Če smo rekli, je nosilec 0, bi, da kažejo kapitalsko Z. črko 175 00:08:05,860 --> 00:08:09,790 In če smo rekli, je nosilec 1, ki bi pomenilo prvi male a, 176 00:08:09,790 --> 00:08:14,220 in tako naprej do ih nosilec 5, ki bi lahko navedli trajala. 177 00:08:14,220 --> 00:08:17,090 >> Zdaj pa ne pozabite, da Dolžina tega niza je 6, 178 00:08:17,090 --> 00:08:23,220 vendar so indeksi v nizu so 0 do 5, Z pomočjo, ki trajajo a. 179 00:08:23,220 --> 00:08:28,650 Torej, zdaj to paše v večjo sliko vašega računalnika pomnilnika, vaš RAM. 180 00:08:28,650 --> 00:08:32,020 Torej nekje program, ki tečete računalnik 181 00:08:32,020 --> 00:08:34,780 potrebuje, da se spomnimo Zamyla nekje v pomnilniku. 182 00:08:34,780 --> 00:08:36,029 Torej imam lahko prostovoljec? 183 00:08:36,029 --> 00:08:38,840 184 00:08:38,840 --> 00:08:40,181 Da, prosim. 185 00:08:40,181 --> 00:08:50,120 186 00:08:50,120 --> 00:08:51,500 In kako ti je 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 Me veseli, Dean. 190 00:08:54,910 --> 00:08:58,240 Torej, pridi sem, in bomo morali narisati 191 00:08:58,240 --> 00:09:00,740 na naši lepi Izvanredan postavitve pomnilnika. 192 00:09:00,740 --> 00:09:05,950 Zdaj pa mi je všeč, da razmišljajo o pomnilniku kot en dolg trak bajtov, 193 00:09:05,950 --> 00:09:11,090 ampak samo za namene prikaza bomo pač od leve proti desni, zgoraj navzdol. 194 00:09:11,090 --> 00:09:11,590 V REDU? 195 00:09:11,590 --> 00:09:22,030 >> Torej bom pokazati program-- Getstrings.c. 196 00:09:22,030 --> 00:09:25,760 In tako vse je ta program početje je zahtevala štiri strune 197 00:09:25,760 --> 00:09:28,830 od uporabnika s GetString in nato tiskanje 198 00:09:28,830 --> 00:09:30,950 karkoli, ki je prvi niz je vpisano. 199 00:09:30,950 --> 00:09:32,840 Mi smo ignoriranje dva skozi štiri. 200 00:09:32,840 --> 00:09:33,610 V REDU. 201 00:09:33,610 --> 00:09:38,210 Torej, tukaj now-- ko Jaz prva zahteva s1. 202 00:09:38,210 --> 00:09:39,740 Torej ste računalnik. 203 00:09:39,740 --> 00:09:41,680 In ste izvedbenih GetString. 204 00:09:41,680 --> 00:09:46,710 Torej zahtevate niz od me, in jaz rečem, OK, Dean. 205 00:09:46,710 --> 00:09:47,900 Daj niz "Dean." 206 00:09:47,900 --> 00:09:50,300 >> Torej nekje v spominu vas morate zapomniti, "Dean." 207 00:09:50,300 --> 00:09:52,160 Torej, jo napišite v spomin nekje. 208 00:09:52,160 --> 00:09:58,270 209 00:09:58,270 --> 00:09:59,210 Popolna. 210 00:09:59,210 --> 00:09:59,880 V REDU. 211 00:09:59,880 --> 00:10:01,740 Torej, zdaj smo S2. 212 00:10:01,740 --> 00:10:03,869 In s2 se bo zahteva, da GetString. 213 00:10:03,869 --> 00:10:05,160 Torej bom vnesti niz. 214 00:10:05,160 --> 00:10:08,720 Jaz grem za vstop "Hannah". 215 00:10:08,720 --> 00:10:10,586 Torej, vpišite "Hannah" nekje v spominu. 216 00:10:10,586 --> 00:10:18,860 217 00:10:18,860 --> 00:10:19,360 Ja. 218 00:10:19,360 --> 00:10:23,000 A-H. 219 00:10:23,000 --> 00:10:25,550 >> OK, tako da zdaj s3. 220 00:10:25,550 --> 00:10:28,380 In to se dogaja, da je ena zahteva, da GetString. 221 00:10:28,380 --> 00:10:37,020 In tako zdaj enter "Maria". 222 00:10:37,020 --> 00:10:37,520 V redu. 223 00:10:37,520 --> 00:10:40,980 In potem je tu še en zadnji Zahteva za GetString, s4. 224 00:10:40,980 --> 00:10:42,580 Torej, ne vem. 225 00:10:42,580 --> 00:10:45,640 Kako pa gremo z antidisestablishmentarianism. 226 00:10:45,640 --> 00:10:49,460 Tako začne, da v spomin. 227 00:10:49,460 --> 00:10:50,400 Ja. 228 00:10:50,400 --> 00:10:53,970 Tako pač "Rob". 229 00:10:53,970 --> 00:10:54,560 >> V REDU. 230 00:10:54,560 --> 00:10:58,410 Torej, zdaj explain-- zakaj storil pustite te prostore? 231 00:10:58,410 --> 00:11:01,340 Zakaj ste to prazno prostor tukaj, tukaj in tukaj? 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 Torej opazili, ko sem šel natisniti s1-- tako da, če bomo 235 00:11:09,450 --> 00:11:11,890 je "Hannah" tek Pravica do zraven "Dean" 236 00:11:11,890 --> 00:11:14,360 Kako vemo, kdaj niz "Dean" konča? 237 00:11:14,360 --> 00:11:19,470 Torej tiskanje niza s1 ima lahko Pravkar natisnjeno "DeanHannahMariaRob" 238 00:11:19,470 --> 00:11:22,720 če nima pojma kdaj "Dean" dejansko konča. 239 00:11:22,720 --> 00:11:23,240 >> V redu. 240 00:11:23,240 --> 00:11:27,650 Torej, v spominu način smo dejansko predstavljajo ta konec niza 241 00:11:27,650 --> 00:11:29,940 je s poševnico nični. 242 00:11:29,940 --> 00:11:32,620 Torej, ta prostor je točno tisto, kar smo želeli. 243 00:11:32,620 --> 00:11:34,040 To bi moralo biti poševnica nazaj nič. 244 00:11:34,040 --> 00:11:37,690 To bo poševnica nič, in to bo poševnica nazaj nič. 245 00:11:37,690 --> 00:11:41,585 In lahko imate čudovito nagrado za to, da popolna prostovoljec. 246 00:11:41,585 --> 00:11:44,910 247 00:11:44,910 --> 00:11:45,860 Bodite stres žogo! 248 00:11:45,860 --> 00:11:49,040 249 00:11:49,040 --> 00:11:49,700 >> V REDU. 250 00:11:49,700 --> 00:11:54,420 Torej je to znak leva poševnica nič, je kako označuje konec niza. 251 00:11:54,420 --> 00:11:57,120 To je, kako, če posamezni program, želi natisniti niz, 252 00:11:57,120 --> 00:11:59,760 je how-- Spomnim se, da smo se naučili funkcija strlen prejšnji teden? 253 00:11:59,760 --> 00:12:00,940 Dolžina niza? 254 00:12:00,940 --> 00:12:03,770 To je, kako je dolžina niza sposoben določiti, kako dolgo niz. 255 00:12:03,770 --> 00:12:05,810 To samo ohranja ponavljanjem preko znake 256 00:12:05,810 --> 00:12:08,217 dokler se ne ugotovi, da je poševnica nazaj nič značaj. 257 00:12:08,217 --> 00:12:11,050 Zato je pomembna stvar za uresničitev o poševnica nazaj ničelno značaja 258 00:12:11,050 --> 00:12:14,950 se je zastopana vse ničle v bitih. 259 00:12:14,950 --> 00:12:18,980 Tako opazili, da je ta razlikuje od ničelne značaja. 260 00:12:18,980 --> 00:12:23,010 Torej nič značaj, če se spomnite v primeru, da je dal konec 261 00:12:23,010 --> 00:12:27,360 predavanja, kjer karto znaki to-- kot zemljevidi kapital od A do 65 let. 262 00:12:27,360 --> 00:12:29,130 Male črke na zemljevide do 97. 263 00:12:29,130 --> 00:12:30,890 Male črke b bi bilo 98. 264 00:12:30,890 --> 00:12:35,220 Torej število 0 zemljevidi to-- jaz ne vedeti, off vrhu moje glave. 265 00:12:35,220 --> 00:12:36,400 44 ali 45. 266 00:12:36,400 --> 00:12:37,890 Nekje v tej regiji. 267 00:12:37,890 --> 00:12:40,850 >> Torej znak 0, je dejansko število. 268 00:12:40,850 --> 00:12:44,350 Ampak poševnica nazaj nič Karte za vse nič bitov. 269 00:12:44,350 --> 00:12:46,380 Torej je treba razlikovati med poševnico ničlo, 270 00:12:46,380 --> 00:12:48,450 ki smo ga pokličem ničelno terminator. 271 00:12:48,450 --> 00:12:53,210 Tam je razlika med poševnica nazaj nič in znak nič. 272 00:12:53,210 --> 00:12:54,350 >> V redu. 273 00:12:54,350 --> 00:12:57,520 Torej govorimo malo več o strune. 274 00:12:57,520 --> 00:13:01,470 Torej vidimo tukaj, to je, kako to bi bilo določeno v pomnilniku. 275 00:13:01,470 --> 00:13:07,940 Tako da je ta ideja strune kot zaporedje od characters-- tako uradni računalnik 276 00:13:07,940 --> 00:13:10,750 sciency izraz za zaporedje je matrika. 277 00:13:10,750 --> 00:13:13,790 Torej bi pravimo niz niz znakov. 278 00:13:13,790 --> 00:13:17,770 In tam so dejansko drugi podatki vrste, ki jih lahko naredite nize iz. 279 00:13:17,770 --> 00:13:19,975 >> Torej, da motivira to, poglej primer. 280 00:13:19,975 --> 00:13:22,810 281 00:13:22,810 --> 00:13:29,812 Imenovali jo bomo ages0.c bom kopiraj in prilepi našo predlogo. 282 00:13:29,812 --> 00:13:32,470 283 00:13:32,470 --> 00:13:33,410 V REDU. 284 00:13:33,410 --> 00:13:39,378 Torej, v tem programu, kar smo želite storiti, je zagrabiti starost 285 00:13:39,378 --> 00:13:45,160 treh študentov v teku. 286 00:13:45,160 --> 00:13:49,240 Torej vemo, int age-- in zdaj bom rekel, 0. 287 00:13:49,240 --> 00:13:53,140 Tako boste morda želeli povedati age1, vendar za namene, bomo videli zelo kmalu, 288 00:13:53,140 --> 00:13:57,187 Jaz bom rekel int age0 enaka GetInt. 289 00:13:57,187 --> 00:13:59,270 Torej isti poziv k GetInt da smo bili z uporabo I 290 00:13:59,270 --> 00:14:01,561 ne zgodi, da se spodbudi rekoč: "Daj mi starost." 291 00:14:01,561 --> 00:14:03,120 Ampak samo zahteva. 292 00:14:03,120 --> 00:14:06,510 >> In age1 enaka GetInt. 293 00:14:06,510 --> 00:14:09,600 In int age2 enaka GetInt. 294 00:14:09,600 --> 00:14:14,070 Torej, še enkrat, trije študenti, vendar končno se variabilni indeksi 295 00:14:14,070 --> 00:14:16,890 so age0 skozi age2. 296 00:14:16,890 --> 00:14:17,550 V REDU. 297 00:14:17,550 --> 00:14:23,960 Tako da bo ta program naredil karkoli želimo z age0, age1 in age2, 298 00:14:23,960 --> 00:14:27,670 vendar je ta program na koncu dela za tri študente. 299 00:14:27,670 --> 00:14:28,380 >> V REDU. 300 00:14:28,380 --> 00:14:32,110 Torej, kaj zdaj, če želim štirje študenti? 301 00:14:32,110 --> 00:14:36,000 No, bom moral iti nazaj v mojo kodo, spremenite komentar, 302 00:14:36,000 --> 00:14:39,840 in zdaj imamo int age3 enaka GetInt. 303 00:14:39,840 --> 00:14:40,610 V REDU. 304 00:14:40,610 --> 00:14:43,660 Torej, kdo vidi problem tukaj? 305 00:14:43,660 --> 00:14:47,310 V čem je problem s to vrsto nastavitev? 306 00:14:47,310 --> 00:14:47,810 Ja. 307 00:14:47,810 --> 00:14:53,110 308 00:14:53,110 --> 00:14:53,610 Ja. 309 00:14:53,610 --> 00:14:56,360 Tako da smo ustvarjanje spremenljivka za vsakega študenta. 310 00:14:56,360 --> 00:15:00,140 Zdaj pa, da deluje, vendar navsezadnje, kaj, če sem zdaj 311 00:15:00,140 --> 00:15:06,500 rekel: "Hočem, da zgrabite starost osem študentov ali 16 študentov 312 00:15:06,500 --> 00:15:11,340 ali pa mnogi študentje na stotine študentov v CS50 313 00:15:11,340 --> 00:15:16,750 ali tisoče študentov na kampusu ali milijarde ljudi na svetu? 314 00:15:16,750 --> 00:15:19,130 Torej v končni fazi to ni trajnostno. 315 00:15:19,130 --> 00:15:21,990 Vsak čas boste videli sami kopiranje in lepljenje kodo, kot je ta, 316 00:15:21,990 --> 00:15:25,050 bi morali na splošno čutijo da obstaja boljši način. 317 00:15:25,050 --> 00:15:31,290 >> Torej, to je, če uvajamo izjava matrika. 318 00:15:31,290 --> 00:15:34,564 Torej, ko se razglasi matriko, To je tisto, kar splošna oblika 319 00:15:34,564 --> 00:15:35,480 se bo izgledal. 320 00:15:35,480 --> 00:15:36,664 Bomo rekli vrsto. 321 00:15:36,664 --> 00:15:38,830 in potem bomo navedite ime te matrike, 322 00:15:38,830 --> 00:15:41,150 tako kot smo opredeliti dane spremenljivke. 323 00:15:41,150 --> 00:15:43,980 In potem na koncu smo z spet ta nosilec zapis 324 00:15:43,980 --> 00:15:47,480 ampak v drugačnem kontekstu od kako smo ga uporabljali že prej. 325 00:15:47,480 --> 00:15:51,860 >> Torej, tukaj to izgleda kot normalna spremenljivka izjavo, da smo videli. 326 00:15:51,860 --> 00:15:54,890 Tako smo videli int x podpičjem prej. 327 00:15:54,890 --> 00:16:00,020 No, zdaj smo lahko videli nekaj kot int x oklepajih 5. 328 00:16:00,020 --> 00:16:04,020 In dajanje te ideje tudi v novo Program GetInt da smo have-- 329 00:16:04,020 --> 00:16:08,850 tako da bomo lahko izvajajo to na enak način. 330 00:16:08,850 --> 00:16:13,630 >> Recimo v CS smo nagnjeni k uporabi n kot število nečesa. 331 00:16:13,630 --> 00:16:16,150 Torej, tukaj bomo shranjevanje štiri študente. 332 00:16:16,150 --> 00:16:25,960 In zdaj lahko rečemo, int starost Konzola ni čisto N- priti yet-- 333 00:16:25,960 --> 00:16:32,210 da razglasi niz štirih študentov. 334 00:16:32,210 --> 00:16:38,050 Torej, kako bo to videti v Pomnilnik bo podoben temu. 335 00:16:38,050 --> 00:16:39,570 Počistite to. 336 00:16:39,570 --> 00:16:46,606 In bomo imeli nekje v memory-- bom dal to gor. 337 00:16:46,606 --> 00:16:52,690 338 00:16:52,690 --> 00:16:53,808 >> Torej nekje v pomnilniku. 339 00:16:53,808 --> 00:16:58,760 340 00:16:58,760 --> 00:16:59,727 Ena dva tri štiri. 341 00:16:59,727 --> 00:17:03,383 342 00:17:03,383 --> 00:17:09,849 Imamo štiri cela števila v vrsti za ta niz štirih števil. 343 00:17:09,849 --> 00:17:13,820 Torej, zdaj, kaj je velikost enega od teh poljih? 344 00:17:13,820 --> 00:17:17,190 345 00:17:17,190 --> 00:17:17,690 Ja. 346 00:17:17,690 --> 00:17:18,390 To je štiri bajte. 347 00:17:18,390 --> 00:17:19,690 To je 32 bitov. 348 00:17:19,690 --> 00:17:22,310 Torej, zdaj je to drugačna iz matrike, da smo 349 00:17:22,310 --> 00:17:24,020 videl prej, nabor znakov. 350 00:17:24,020 --> 00:17:28,540 V nizu je vsak okvir le en bajt, ker znak je samo en bajt. 351 00:17:28,540 --> 00:17:32,170 Toda s paleto celih vsaka polje mora biti štiri bajtov naročilo 352 00:17:32,170 --> 00:17:34,060 da se prilega celotno celo število. 353 00:17:34,060 --> 00:17:37,197 Torej, to je tisto, kar niz Štiri Ints bi izgledal. 354 00:17:37,197 --> 00:17:40,510 355 00:17:40,510 --> 00:17:43,870 >> In potem nazaj na kodo. 356 00:17:43,870 --> 00:17:47,460 Sedaj želimo dejansko trgovina cela števila v tej matriki. 357 00:17:47,460 --> 00:17:53,470 Torej, zdaj je to zelo, zelo, zelo pogost vzorec, da bo na neki točki 358 00:17:53,470 --> 00:17:54,680 postala spomin mišic. 359 00:17:54,680 --> 00:17:56,710 Torej int i enak 0. 360 00:17:56,710 --> 00:17:57,940 i manj kot n. 361 00:17:57,940 --> 00:18:01,850 i plus plus. 362 00:18:01,850 --> 00:18:05,790 Starostno obdobje i enaka GetInt. 363 00:18:05,790 --> 00:18:15,100 >> Torej, to zanko, ta format, Moral bi dobiti zelo navajeni. 364 00:18:15,100 --> 00:18:20,010 Torej, to je, na splošno, kako bomo Ponovil čez skoraj vsako vrsto. 365 00:18:20,010 --> 00:18:23,690 Zdaj opazite te vrste pojasnjuje, zakaj od začetka 366 00:18:23,690 --> 00:18:29,870 nismo imeli za zanke gre za int i je enak 1, I manjše ali enako 10. 367 00:18:29,870 --> 00:18:34,200 Razlog je, da izhajajoč iz nič naredi to delo tudi z nizi. 368 00:18:34,200 --> 00:18:36,270 Torej, nizi so nič indeksirajo. 369 00:18:36,270 --> 00:18:40,360 Če je ta array je dolžine 4, indeksi so 0 do 3. 370 00:18:40,360 --> 00:18:42,880 >> Tako skozi prvi ponovitev tega za zanke 371 00:18:42,880 --> 00:18:49,930 bomo za določanje starosti Nosilec 0 enak poziv k GetInt. 372 00:18:49,930 --> 00:18:52,440 Torej, kar se mi je zgodilo vstopiti na tipkovnici. 373 00:18:52,440 --> 00:18:56,970 V drugem priložnost, da smo nastavitev age1 enaka GetInt. 374 00:18:56,970 --> 00:18:58,230 Tretjič napadalca, age2. 375 00:18:58,230 --> 00:18:59,880 Končna podaja age3. 376 00:18:59,880 --> 00:19:05,750 Torej, če je v prvem glavo zanke Vnesem številko 4 na tipkovnici, 377 00:19:05,750 --> 00:19:07,740 potem bomo vstavite 4 tukaj. 378 00:19:07,740 --> 00:19:11,470 Če se na drugem prehodu vnesem 50, bomo dal 50 tukaj. 379 00:19:11,470 --> 00:19:15,180 Na tretjem priložnost bom morda vnesti negativen 1, negativna 1, 380 00:19:15,180 --> 00:19:21,810 in potem, končno, če vnesem 0-- in zdaj spomnim, da je ta indeks tri. 381 00:19:21,810 --> 00:19:25,350 >> Ko smo zanke zadaj, i dogaja se poveča do 4. 382 00:19:25,350 --> 00:19:27,770 i ni več manj kot N, ki je 4. 383 00:19:27,770 --> 00:19:29,840 In smo iztrgajo iz zanke. 384 00:19:29,840 --> 00:19:32,578 Torej, kaj bi bilo narobe s tem? 385 00:19:32,578 --> 00:19:38,140 386 00:19:38,140 --> 00:19:38,729 [Neslišno]? 387 00:19:38,729 --> 00:19:39,604 OBČINSTVO: [neslišno] 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 Torej matrika ima samo štiri mesta, kar pomeni, kot indekse 0 do 3. 391 00:19:51,550 --> 00:19:55,630 Torej, če bi bilo to res, bi jaz da na vrednost 4 na neki točki. 392 00:19:55,630 --> 00:20:00,910 starostno obdobje 4 bodo določanja karkoli se zgodi, da je tukaj 393 00:20:00,910 --> 00:20:02,920 s tem, kar imam za povedati, vnesite 6. 394 00:20:02,920 --> 00:20:05,010 Da bomo to nastavitev do 6. 395 00:20:05,010 --> 00:20:06,560 >> Vendar ne vemo, kaj je tukaj. 396 00:20:06,560 --> 00:20:08,836 To ni pomnilnik da smo imeli dostop do. 397 00:20:08,836 --> 00:20:10,710 Torej, če se spomnite iz prejšnja predavanje, 398 00:20:10,710 --> 00:20:14,350 je bil tiskanje vrednote Zamyla in na neki točki je zadel ta segmentacije 399 00:20:14,350 --> 00:20:17,990 kriv. Torej, boste verjetno videli številni segmentacija napak, kot si 400 00:20:17,990 --> 00:20:20,530 izvajanje nekaterih problemskih sklopov. 401 00:20:20,530 --> 00:20:24,950 Ampak to je eden od načinov, na katerega lahko naletite na segmentacijo 402 00:20:24,950 --> 00:20:28,540 napaka, ko začnete dostopu spomin na načine, ki jih ne bi smelo biti. 403 00:20:28,540 --> 00:20:34,117 Tako nismo imeli dostopa do to mesto in to je napaka. 404 00:20:34,117 --> 00:20:37,760 405 00:20:37,760 --> 00:20:40,190 >> Torej, to je bolje. 406 00:20:40,190 --> 00:20:45,820 Zdaj je še vedno majhna vprašanje s to kodo. 407 00:20:45,820 --> 00:20:50,720 In to je v bistvu, da smo še vedno zaljubljen v štirih študentov. 408 00:20:50,720 --> 00:20:52,940 Zdaj, če hočem uporabiti osem študentov, OK. 409 00:20:52,940 --> 00:20:54,350 Saj ne, da je velik posel. 410 00:20:54,350 --> 00:20:58,120 Lahko grem v, spremenite pripombe in spremenite n. 411 00:20:58,120 --> 00:20:59,760 Zdaj bo to delo z osmimi študenti. 412 00:20:59,760 --> 00:21:02,190 Če prevedem to in vodijo To bo pokazal me-- 413 00:21:02,190 --> 00:21:07,870 da bo zahteva cela za osem študenti in da bo samo delo. 414 00:21:07,870 --> 00:21:11,850 Ampak to je manj kot idealno, da je treba prevedem je program vsak čas 415 00:21:11,850 --> 00:21:15,960 Želim spremeniti število študentov da želim vstopiti starost, za. 416 00:21:15,960 --> 00:21:22,990 >> Torej končno izboljšanje na tem, kot bomo videli here-- smo 417 00:21:22,990 --> 00:21:26,177 dogaja, da zahtevajo število ljudi. 418 00:21:26,177 --> 00:21:28,010 Tu imamo številne ljudi v sobah 419 00:21:28,010 --> 00:21:29,880 ali kateri koli starosti ljudi v sobi. 420 00:21:29,880 --> 00:21:33,300 Ampak gremo zahtevati številko oseb v prostoru, ki ga je uporabnik. 421 00:21:33,300 --> 00:21:36,171 Torej, to je točno isto naredi, medtem ko zanke, ki smo jih videli prej. 422 00:21:36,171 --> 00:21:37,920 To je popolnoma enaka do-while zanko, ki jo 423 00:21:37,920 --> 00:21:40,050 se lahko za izvajanje na problem nizu. 424 00:21:40,050 --> 00:21:43,102 Torej, dokler se to ne bo vstopajo n manj kot 1, 425 00:21:43,102 --> 00:21:45,310 tako da je tam moraš biti ob vsaj ena oseba v sobi. 426 00:21:45,310 --> 00:21:47,407 Dokler oni vstopajo n manj kot 1, 427 00:21:47,407 --> 00:21:48,990 potem bomo obdržati spet vprašal. 428 00:21:48,990 --> 00:21:50,906 Prosimo vpišite številko ljudi v sobi. 429 00:21:50,906 --> 00:21:53,550 Sedaj, ko imamo številko ljudi v room-- 430 00:21:53,550 --> 00:21:58,020 tako da sem lahko tam začne, da 200 ljudi v tej sobi. 431 00:21:58,020 --> 00:22:05,480 Potem sem dol bomo prišli in razglasi paleto velikosti 200. 432 00:22:05,480 --> 00:22:10,220 Mi smo razglasitvi paleto, ki je dovolj velika, da imajo 200 starosti. 433 00:22:10,220 --> 00:22:15,370 Spušča, to je za zanko da vas bodo zelo navajeni. 434 00:22:15,370 --> 00:22:19,490 Torej ponavljanjem v tem polju, dodeljevanje vsako lokacijo 435 00:22:19,490 --> 00:22:23,020 s tem, da zaporedje celo število, in potem končno tu smo 436 00:22:23,020 --> 00:22:28,340 ravno zgled ponavljanjem nad to paleto, ne da pripis vrednosti, 437 00:22:28,340 --> 00:22:30,150 vendar za dostop do vrednosti. 438 00:22:30,150 --> 00:22:33,810 >> Torej, tukaj vidimo, da smo pravijo, eno leto od sedaj, 439 00:22:33,810 --> 00:22:40,470 Oseba% i se bo% starih i let, kjer je i i + 1 prvega%. 440 00:22:40,470 --> 00:22:43,010 Torej i ta indeks spremenljiva. 441 00:22:43,010 --> 00:22:49,420 In drugi% i se dogaja, da je vrednost shranjena v starosti paleto plus 1. 442 00:22:49,420 --> 00:22:54,217 Torej, to plus 1 je samo zato, ker smo saying-- to plus 1, starosti i plus 1. 443 00:22:54,217 --> 00:22:57,050 Ta plus 1 je samo zato, ker smo rekoč čez eno leto osebe 444 00:22:57,050 --> 00:22:58,280 bo ta stara. 445 00:22:58,280 --> 00:23:01,080 >> Torej, zakaj je to i plus 1? 446 00:23:01,080 --> 00:23:04,064 Zakaj imamo plus 1 tam? 447 00:23:04,064 --> 00:23:04,564 Ja. 448 00:23:04,564 --> 00:23:07,410 449 00:23:07,410 --> 00:23:07,930 Da. 450 00:23:07,930 --> 00:23:10,510 Torej, ne pozabite nizi se nič indeksirajo. 451 00:23:10,510 --> 00:23:14,840 Torej, če smo to tiskanje za nekdo pravkar prebral izhod, 452 00:23:14,840 --> 00:23:19,380 potem verjetno želijo videti nekaj kot osebo, eno, človek številka ena, 453 00:23:19,380 --> 00:23:21,160 bo star 20 let. 454 00:23:21,160 --> 00:23:23,570 Oseba številka dve bo star 15 let. 455 00:23:23,570 --> 00:23:27,420 Oni raje ne bi videli osebo število nič, je star 15 let. 456 00:23:27,420 --> 00:23:36,460 >> Torej sestavljanje to in šele videli, kaj izgleda like-- ustvariti nekaj prostora. 457 00:23:36,460 --> 00:23:43,560 Naredite AGES pripravlja. 458 00:23:43,560 --> 00:23:45,080 Tek starosti. 459 00:23:45,080 --> 00:23:46,580 Vidimo število ljudi v prostoru. 460 00:23:46,580 --> 00:23:48,850 Tako bom rekel, da so v sobi trije ljudje. 461 00:23:48,850 --> 00:23:54,000 Age of oseba številka ena, recimo, 15, 20, 25. 462 00:23:54,000 --> 00:23:59,680 In zdaj bom rekel čez eno leto Sedaj bodo 16, 21, 26. 463 00:23:59,680 --> 00:24:02,900 Poglejmo, da ta deluje z n, ki ni enak 3. 464 00:24:02,900 --> 00:24:07,940 Torej, če rečem, število ljudi, ki je 5, ena, dva, tri, dva, ena, letno odslej 465 00:24:07,940 --> 00:24:11,170 oni bodo dva, tri, star štiri, tri, dve leti. 466 00:24:11,170 --> 00:24:16,500 Tako sem lahko prav tako zlahka n bilo 10.000. 467 00:24:16,500 --> 00:24:21,270 Zdaj bom sedel tukaj precej nekaj časa vstopa starosti, ampak to deluje. 468 00:24:21,270 --> 00:24:26,000 >> Torej, zdaj v spominu nekje smo imajo paleto velikosti 10.000, 469 00:24:26,000 --> 00:24:28,830 tako da na koncu 40.000 bajte, ker obstajajo 470 00:24:28,830 --> 00:24:31,222 štiri bajte za vsakega od teh števil. 471 00:24:31,222 --> 00:24:33,180 Torej obstaja niz velikost 10,000 kjer smo lahko 472 00:24:33,180 --> 00:24:36,201 shranite v starosti od teh 10.000 ljudi. 473 00:24:36,201 --> 00:24:36,700 V redu. 474 00:24:36,700 --> 00:24:40,070 Vprašanja o vsem tem? 475 00:24:40,070 --> 00:24:41,892 Ja. 476 00:24:41,892 --> 00:24:43,350 Kaj pa, če si dal negativno število? 477 00:24:43,350 --> 00:24:44,870 Poglejmo, kaj se zgodi. 478 00:24:44,870 --> 00:24:49,320 Torej, v tem konkretnem številu case-- ljudi v sobi, negativnega. 479 00:24:49,320 --> 00:24:52,580 Je zavrnil, da ker tu se zgodi 480 00:24:52,580 --> 00:24:57,180 za ravnanje dejstvo, da je n če manj kot eno bomo še enkrat vprašal. 481 00:24:57,180 --> 00:25:01,780 Če boste poskušali razglasiti array negativne velikosti, 482 00:25:01,780 --> 00:25:03,950 na splošno ne deluje. 483 00:25:03,950 --> 00:25:05,570 >> Torej poskusimo. 484 00:25:05,570 --> 00:25:08,000 Oglejmo prezreti karkoli vrednost so vhod za n 485 00:25:08,000 --> 00:25:10,571 in samo reči INT starosti rib negativnem. 486 00:25:10,571 --> 00:25:12,410 Poglejmo, če je še pripravlja. 487 00:25:12,410 --> 00:25:14,100 Nisem prepričan. 488 00:25:14,100 --> 00:25:14,920 No. 489 00:25:14,920 --> 00:25:18,280 Torej je starost razglašena kot matrika z negativnim velikosti. 490 00:25:18,280 --> 00:25:22,540 Torej vnaprej priznava matrika ne more biti negativni velikosti in ga zavrne. 491 00:25:22,540 --> 00:25:26,840 Zdaj pa, če nismo ročaj Ta do-while zanko pravilno, 492 00:25:26,840 --> 00:25:28,810 če nismo bili preverjanje če je n manj kot 1-- 493 00:25:28,810 --> 00:25:32,690 Recimo, da samo ni bilo to sploh 494 00:25:32,690 --> 00:25:35,940 in namesto tega smo samo zagrabiti celo število. 495 00:25:35,940 --> 00:25:40,710 Ni važno, kaj to celo je, izjavljamo paleto te velikosti. 496 00:25:40,710 --> 00:25:44,250 >> Tako da prevajalnik ne more morda se pritožujejo sedaj. 497 00:25:44,250 --> 00:25:48,780 Če prevedem this-- tako da se ne more pritoževati, 498 00:25:48,780 --> 00:25:51,480 saj ne morejo vedeti, da sem dogaja, da vnesete negativno število, 499 00:25:51,480 --> 00:25:52,550 ki bi lahko neveljavna. 500 00:25:52,550 --> 00:25:54,633 Za vse to ve, jaz morda vnesite pozitivno število, 501 00:25:54,633 --> 00:25:56,000 ki je popolnoma veljaven. 502 00:25:56,000 --> 00:26:01,090 Torej, jaz si predstavljam, če vnesem negativno 1 ljudi v sobi, segmentacije napako. 503 00:26:01,090 --> 00:26:06,040 >> Torej, v redu. 504 00:26:06,040 --> 00:26:13,160 Torej, kaj je dodati to spet samo obdržati tisto, kar je prvotno bil. 505 00:26:13,160 --> 00:26:15,640 Zato poskrbite starosti. 506 00:26:15,640 --> 00:26:18,120 Zdaj pa, če želim poskusiti negativna age-- tako da je 507 00:26:18,120 --> 00:26:19,710 pravijo, da je pet ljudi v sobi. 508 00:26:19,710 --> 00:26:23,180 Age of oseba številka ena negativna 4, oseba tri 509 00:26:23,180 --> 00:26:26,500 je nič, človek three-- redu. 510 00:26:26,500 --> 00:26:29,850 Torej, tukaj, na leto od sedaj, človek številka bo ena negativna 3 let. 511 00:26:29,850 --> 00:26:32,830 Torej, verjetno nima smisla. 512 00:26:32,830 --> 00:26:37,220 Ampak to je samo zato, ker je videti na kodo vsi delamo 513 00:26:37,220 --> 00:26:40,260 prosi GetInt. 514 00:26:40,260 --> 00:26:44,110 >> Zdaj pa, če sva imela Funkcija GetPositiveInt 515 00:26:44,110 --> 00:26:49,690 ali pa smo preprosto samo to storili nekako isti while tam dol, 516 00:26:49,690 --> 00:26:52,340 potem bi to delovalo popolnoma v redu. 517 00:26:52,340 --> 00:26:54,200 Toda v to posebno primer, samo ne 518 00:26:54,200 --> 00:26:57,772 zgodi, da bo ravnanje negativne vrednosti. 519 00:26:57,772 --> 00:26:59,147 Vsa druga vprašanja o nizi? 520 00:26:59,147 --> 00:27:02,290 521 00:27:02,290 --> 00:27:03,250 V REDU. 522 00:27:03,250 --> 00:27:09,380 >> Tako smo zdaj videli nize. 523 00:27:09,380 --> 00:27:12,500 In bomo morali uporabiti to za argumente v ukazni vrstici. 524 00:27:12,500 --> 00:27:14,680 Torej, problem je določeno dvo Vem, da mnogi od vas 525 00:27:14,680 --> 00:27:18,040 Morda še vedno delajo na problem niz ena, ampak problem nastaviti dva prihaja. 526 00:27:18,040 --> 00:27:22,260 Na problem določiti dva, boste treba se ukvarjajo s strune, nizi, 527 00:27:22,260 --> 00:27:23,950 in argumente ukazne vrstice. 528 00:27:23,950 --> 00:27:26,270 >> Torej, kaj so argumenti ukazne vrstice? 529 00:27:26,270 --> 00:27:29,570 Sedaj lahko vidite dol tu malo teaser za točno to, kar je 530 00:27:29,570 --> 00:27:30,950 dogaja se dogaja. 531 00:27:30,950 --> 00:27:32,950 Vidimo int glavno, INC argc, niz argv oklepajih. 532 00:27:32,950 --> 00:27:34,560 533 00:27:34,560 --> 00:27:38,130 Tako da najprej poskusimo razložiti tisto, kar je hotel povedati. 534 00:27:38,130 --> 00:27:40,800 Sedaj, v redu. 535 00:27:40,800 --> 00:27:44,637 >> Torej, v ukazni vrstici morate biti privajanje na nekatere od teh ukazov 536 00:27:44,637 --> 00:27:48,580 sedaj, in ste verjetno vodijo cd v terminalu poprej. 537 00:27:48,580 --> 00:27:52,100 Torej, če rečemo cd pset1, veste, da naj 538 00:27:52,100 --> 00:27:55,050 se spreminja v imenik pset1. 539 00:27:55,050 --> 00:27:59,120 >> Zdaj opazili, da ste nikoli napisal program, kot je to prej. 540 00:27:59,120 --> 00:28:03,120 Vsak program, ki ste napisali, bi teči, recimo, dot poševnica Mario, 541 00:28:03,120 --> 00:28:06,779 dot poševnica pohlepni, nato pa ga vas lahko pozove za vnos. 542 00:28:06,779 --> 00:28:08,570 Zdaj, to ni tisto, sprememba imenika počne. 543 00:28:08,570 --> 00:28:12,770 Ko zaženete cd, ne pa reči, kateri imenik hočeš, da cd v? 544 00:28:12,770 --> 00:28:17,200 Namesto tega si pravkar rekel, cd pset1, in da gre samo v imenik pset1. 545 00:28:17,200 --> 00:28:20,430 >> Torej podobno imamo druge primere. 546 00:28:20,430 --> 00:28:21,540 da zdravo. 547 00:28:21,540 --> 00:28:25,760 Ko zaženete narediti, ne pa reči, kateri program bi radi, da bi? 548 00:28:25,760 --> 00:28:29,620 Pravkar ste rekli, v spodnjem ukazni vrstici, da zdravo. 549 00:28:29,620 --> 00:28:31,060 >> Poteza je še en primer. 550 00:28:31,060 --> 00:28:34,840 Tole smo se gibljejo mario.c vložiti en imenik navzgor. 551 00:28:34,840 --> 00:28:38,060 Zdaj vemo, s tem primer smo res mimo dva argumenta. 552 00:28:38,060 --> 00:28:42,090 Tam je mario.c kot prvi argument, in dot dot je drugi argument. 553 00:28:42,090 --> 00:28:46,140 In potem, ko poganjam naredite, vas glej, da res dolgo ukaz line-- 554 00:28:46,140 --> 00:28:50,580 da res dolgo ukaz natisnjena v ukazni vrstici. 555 00:28:50,580 --> 00:28:53,590 Tako, da dokler command-- to je le kratek del, 556 00:28:53,590 --> 00:28:56,090 ampak zdaj imamo tri argumenti ukazne vrstice. 557 00:28:56,090 --> 00:28:59,750 Dot dash nič, zdravo in hello.c. 558 00:28:59,750 --> 00:29:03,497 >> Torej, to so v ukazni vrstici Argumenti, argumenti 559 00:29:03,497 --> 00:29:05,580 da ste poteka prek ukazni vrstici, tako da je 560 00:29:05,580 --> 00:29:08,680 Ni nujno, da se pozove Ko zaženete program. 561 00:29:08,680 --> 00:29:13,090 To bi bilo nerodno, če, če si tekel Jek je rekel, "OK, 562 00:29:13,090 --> 00:29:15,630 ki program-- ki Datoteka ste zbiranje? 563 00:29:15,630 --> 00:29:17,010 Hello.c. 564 00:29:17,010 --> 00:29:19,440 Kaj bi vi zastavice želeli vstopiti? dash o. 565 00:29:19,440 --> 00:29:21,190 Kaj želite datoteka se imenuje? 566 00:29:21,190 --> 00:29:21,690 zdravo. 567 00:29:21,690 --> 00:29:25,290 Ne, samo teči Jek dash o Hello hello.c. 568 00:29:25,290 --> 00:29:28,820 >> Torej, če se ozremo na to. 569 00:29:28,820 --> 00:29:32,920 Zdaj argc-- argc je grofje argument. 570 00:29:32,920 --> 00:29:36,620 To število ukazno vrstico argumenti vpisana v ukazni vrstici. 571 00:29:36,620 --> 00:29:39,720 No, argv-- tehnično klinasti stojala za vektor, 572 00:29:39,720 --> 00:29:41,460 kar v bistvu pomeni matriko. 573 00:29:41,460 --> 00:29:42,680 Lahko pa prezreti, da je. 574 00:29:42,680 --> 00:29:47,540 Argv-- imamo niz argv, tako niz argv oklepajih. 575 00:29:47,540 --> 00:29:50,150 Torej, to je še ena oblika V oklepajih še niste videli prej. 576 00:29:50,150 --> 00:29:52,300 Tako smo videli bracket Zapis, ko sva rekla, 577 00:29:52,300 --> 00:29:53,970 podobno, niz je enaka Zamyla. 578 00:29:53,970 --> 00:29:56,910 s oklepaj 0 dostopi do Z. znakov 579 00:29:56,910 --> 00:30:00,720 >> Videli smo tudi oklepaju, ko smo rekli, int starost oklepati 5. 580 00:30:00,720 --> 00:30:03,160 To je izjavil paleto velikosti 5. 581 00:30:03,160 --> 00:30:06,280 Torej, tukaj je različica oklepaja še nismo videli. 582 00:30:06,280 --> 00:30:09,630 Tako da je ta vrsta niza argv da bi bila popolnoma seznanjeni 583 00:30:09,630 --> 00:30:12,050 da bi se le da gre za niz. 584 00:30:12,050 --> 00:30:14,520 Zdaj oklepaji kažejo da gre za niz. 585 00:30:14,520 --> 00:30:19,920 Torej niz argv konzole sredstva da argv je niz nizov. 586 00:30:19,920 --> 00:30:22,540 Zdaj tehnično niz je niz znakov. 587 00:30:22,540 --> 00:30:26,400 Torej, to je zdaj matrika od paleto likov. 588 00:30:26,400 --> 00:30:31,490 Ampak to je veliko lažje razmišljati o da je to le niz nizov. 589 00:30:31,490 --> 00:30:34,900 >> Torej, zakaj bi se nosilci prazna? 590 00:30:34,900 --> 00:30:38,170 Like, zakaj ne moremo reči, Nosilec 5, nosilec n? 591 00:30:38,170 --> 00:30:40,700 592 00:30:40,700 --> 00:30:41,200 Ja. 593 00:30:41,200 --> 00:30:43,731 594 00:30:43,731 --> 00:30:44,230 Ja. 595 00:30:44,230 --> 00:30:46,396 Ne vemo, koliko vhodi tam se bodo. 596 00:30:46,396 --> 00:30:53,560 Torej, če pogledamo na Jek primer, smo rekli Jek pomišljaj o hello hello.c. 597 00:30:53,560 --> 00:30:56,710 V tem konkretnem primeru se zgodi biti trije argumenti ukazne vrstice. 598 00:30:56,710 --> 00:31:00,522 In tako brackets-- bomo videli v drugo ne bi bilo tri. 599 00:31:00,522 --> 00:31:01,730 To bi tehnično bilo štiri. 600 00:31:01,730 --> 00:31:04,030 Toda nosilci, bi mi recimo, obstajajo tri. 601 00:31:04,030 --> 00:31:08,220 Ampak zdaj, če bomo pogledal na poti mario.c dot dot, oklepaji 602 00:31:08,220 --> 00:31:09,760 mi bi želeli postaviti dva v njih. 603 00:31:09,760 --> 00:31:12,884 >> In obstaja veliko ukazov, ki imajo spremenljivo število ukazni vrstici 604 00:31:12,884 --> 00:31:13,620 argumenti. 605 00:31:13,620 --> 00:31:17,430 Torej, kaj je ta različica Nosilec zapis kaže, 606 00:31:17,430 --> 00:31:20,820 je, da je argv niz nizov. 607 00:31:20,820 --> 00:31:24,360 Vendar ne vemo, koliko strune so v tem polju. 608 00:31:24,360 --> 00:31:27,090 In kako bomo potem vedeli, kako veliko strune, so v matriki? 609 00:31:27,090 --> 00:31:28,870 To je bistvo argc. 610 00:31:28,870 --> 00:31:32,300 argc nam pove, kako dolgo argv je. 611 00:31:32,300 --> 00:31:36,500 >> Torej je zadnja stvar, ki vodijo v Um je, da tehnično, 612 00:31:36,500 --> 00:31:40,820 ukaz sam šteje za eno argumenti v ukazni vrstici. 613 00:31:40,820 --> 00:31:45,330 Torej cd pset1, obstajata dve argumenti ukazne vrstice. 614 00:31:45,330 --> 00:31:50,260 Program sam po sebi, cd, nato pa dejanski argument del, pset1. 615 00:31:50,260 --> 00:31:54,490 Vsak program, ki ste jih doslej napisal je imela en ukazni vrstici argument-- dot 616 00:31:54,490 --> 00:31:55,320 poševnica Mario. 617 00:31:55,320 --> 00:31:57,350 To je edini argument v ukazni vrstici. 618 00:31:57,350 --> 00:32:00,900 >> Torej, zdaj je videti na Jek dash o Hello hello.c. 619 00:32:00,900 --> 00:32:01,905 Torej, kaj 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 Torej argc je 4. 623 00:32:08,140 --> 00:32:12,140 Jek, tako argv nosilec 0 je Jek. 624 00:32:12,140 --> 00:32:15,630 argv nosilec 1 je dash 0. 625 00:32:15,630 --> 00:32:21,870 argv nosilec 2 je zdravo, in argv nosilec 3 je hello.c. 626 00:32:21,870 --> 00:32:26,813 OK, tako da vprašanja o tem, in potem bomo poglej nekaterih programskih primerov. 627 00:32:26,813 --> 00:32:29,460 628 00:32:29,460 --> 00:32:30,480 >> V REDU. 629 00:32:30,480 --> 00:32:36,260 Torej bomo si oglejte na hello3.c. 630 00:32:36,260 --> 00:32:41,890 Zato bi to moralo biti seznanjeni z eden od prvih primerov c 631 00:32:41,890 --> 00:32:45,800 smo imeli, če bi mi samo reči, zdravo svet, zdaj pa je to bolj splošno. 632 00:32:45,800 --> 00:32:52,300 Torej, tukaj smo pozdravljanja % s poševnica nazaj n argv nosilec 1. 633 00:32:52,300 --> 00:32:57,440 Notice-- tako Do te točke, to je kaj je moj template datoteka izgledala. 634 00:32:57,440 --> 00:33:01,800 Imel sem int main (praznino), in potem bi jaz storiti nekaj v glavno funkcijo. 635 00:33:01,800 --> 00:33:05,100 Sedaj namesto, ko smo začeli obravnavo z argumenti ukazne vrstice, 636 00:33:05,100 --> 00:33:07,890 moramo navesti drugačna oblika glavni. 637 00:33:07,890 --> 00:33:11,930 >> Torej gledaš hello3 Ponovno, glavni bo 638 00:33:11,930 --> 00:33:15,990 da sprejme dva argumenta now-- int argc, število argumentov ukazne vrstice, 639 00:33:15,990 --> 00:33:20,970 in niz argv oklepaju, dejanska Strune vpisana v ukazni vrstici. 640 00:33:20,970 --> 00:33:26,560 Tako da bom to spremeniti Predloga, da odraža to dejstvo. 641 00:33:26,560 --> 00:33:29,060 Zdaj, ko ste napisali program, če ne 642 00:33:29,060 --> 00:33:33,720 morali sprejeti kakršno koli ukazni vrstici argumenti, potem samo uporabiti int main (praznino). 643 00:33:33,720 --> 00:33:37,070 Toda zdaj, ko pišete Programi argument ukazne vrstice, ki 644 00:33:37,070 --> 00:33:40,350 boš, da se delaš za problem nastavite dvo zdaj, da ste tekmovanje v teku 645 00:33:40,350 --> 00:33:42,630 programi, ki jih je potrebno sprejeti argumenti v ukazni vrstici 646 00:33:42,630 --> 00:33:45,250 morate imeti glavno tega obrazca. 647 00:33:45,250 --> 00:33:51,290 >> Torej here-- je to velika poraba argument v ukazni vrstici. 648 00:33:51,290 --> 00:33:54,100 Torej tiskanje argv 1. 649 00:33:54,100 --> 00:33:59,180 OK, tako da je sestavljanje in zaženete ta program. 650 00:33:59,180 --> 00:34:02,440 Naredite hello3. 651 00:34:02,440 --> 00:34:03,570 Pripravlja. 652 00:34:03,570 --> 00:34:06,870 Dot poševnica hello3. 653 00:34:06,870 --> 00:34:08,920 In recimo, "Rob". 654 00:34:08,920 --> 00:34:10,760 Pozdravljeni Rob. 655 00:34:10,760 --> 00:34:14,940 Če rečem, "Hello Maria," Zdravo Marijo. 656 00:34:14,940 --> 00:34:15,719 Pozdravljeni Maria. 657 00:34:15,719 --> 00:34:18,639 Hannah še vedno pravi, "zdravo Maria ", ker nisem 658 00:34:18,639 --> 00:34:21,340 delaš karkoli z našo argv 2. 659 00:34:21,340 --> 00:34:22,590 Argv 2 bi zdaj "Hannah". 660 00:34:22,590 --> 00:34:25,030 Argc bi bilo 3. 661 00:34:25,030 --> 00:34:27,735 Kaj pa, če sem to storil? 662 00:34:27,735 --> 00:34:31,980 663 00:34:31,980 --> 00:34:34,679 Torej zdravo null. 664 00:34:34,679 --> 00:34:38,760 >> On je na kratko dotaknil dejstva da, tehnično, GetString 665 00:34:38,760 --> 00:34:42,429 lahko vrne null, vendar bomo dobili veliko več, v kakšnem null dejansko je. 666 00:34:42,429 --> 00:34:47,449 Ampak ga vzemite kot zadevo Dejstvo, da ni splošno slab. 667 00:34:47,449 --> 00:34:50,179 Smo naredili kaj narobe, če to je tiskanje "zdravo null." 668 00:34:50,179 --> 00:34:52,179 In razlog, da smo storili nekaj narobe is-- dobro, 669 00:34:52,179 --> 00:34:56,179 ko sem tekel dot slash hello3 je argc 1. 670 00:34:56,179 --> 00:34:59,680 Torej to pomeni, da je dolžina argv bilo 1. 671 00:34:59,680 --> 00:35:05,110 Če niz je dolžine 1, edini veljavni indeks je nič. 672 00:35:05,110 --> 00:35:08,550 In zato je tu argv 1 je izven obseg te matrike. 673 00:35:08,550 --> 00:35:13,410 Bilo je podobno kot prej, ko sem se potrudil Shranjevanje 6 zunaj koncu polja. 674 00:35:13,410 --> 00:35:18,100 Zato sem poskušal dostopati do nekaj izven grofov ARGV, 675 00:35:18,100 --> 00:35:21,340 in smo dobili null. 676 00:35:21,340 --> 00:35:24,360 >> Torej boljša različica to izboljšanje, 677 00:35:24,360 --> 00:35:27,010 Izrecno je preverjanje argc. 678 00:35:27,010 --> 00:35:33,580 Torej, če argc enaka 2, kar pomeni, da smo naleteli nekaj podobnega dot poševnica hello3 Robu. 679 00:35:33,580 --> 00:35:36,840 In bo to print "Pozdravljeni Rob." 680 00:35:36,840 --> 00:35:39,850 Če argc ni enako 2, potem je le, da bo 681 00:35:39,850 --> 00:35:42,560 ignorirati, kar si dal na argument v ukazni vrstici 682 00:35:42,560 --> 00:35:43,960 kot argumenti ukazne vrstice. 683 00:35:43,960 --> 00:35:47,168 Ali pa, če ni dal sploh, je le, da bo prezreti, da je in samo reči, 684 00:35:47,168 --> 00:35:47,960 "zdravo vas." 685 00:35:47,960 --> 00:35:51,490 >> Torej sestavljanje to. 686 00:35:51,490 --> 00:35:54,500 Naredite hello4. 687 00:35:54,500 --> 00:35:56,790 In teče hello4. 688 00:35:56,790 --> 00:36:00,010 Je na ta način teče, kaj je treba natisniti? 689 00:36:00,010 --> 00:36:01,330 "Hello vas." 690 00:36:01,330 --> 00:36:02,810 Pozdravljeni ste. 691 00:36:02,810 --> 00:36:05,870 Kaj pa hello4 Rob? 692 00:36:05,870 --> 00:36:06,950 "Hello Rob." 693 00:36:06,950 --> 00:36:10,580 In končno, zdravo Rob Maria je samo "zdravo You" še enkrat, 694 00:36:10,580 --> 00:36:13,677 ker si je res ne vnesete nekaj, kar je bilo pričakovano. 695 00:36:13,677 --> 00:36:15,510 Vnesli ste več imen kot je zmogel, 696 00:36:15,510 --> 00:36:19,500 tako da je samo v neplačilu na Hello ste vedenje. 697 00:36:19,500 --> 00:36:23,040 Torej vprašanja v to? 698 00:36:23,040 --> 00:36:26,290 Ali argumenti ukazne vrstice? 699 00:36:26,290 --> 00:36:28,690 >> OK, tako da pri tem si na nekaj več primerov uporabe 700 00:36:28,690 --> 00:36:34,230 ukazni vrstici arguments-- najprej smo argv dash 1 pika c. 701 00:36:34,230 --> 00:36:38,510 Tako komentarji podarite kaj Ta program je treba narediti. 702 00:36:38,510 --> 00:36:42,460 Ampak obvestilo now-- to za zanke, To se ujema z natančno vzorec 703 00:36:42,460 --> 00:36:43,390 Sem rekel prej. 704 00:36:43,390 --> 00:36:46,240 Pravkar smo se zgodi, da se Namesto z uporabo argc n. 705 00:36:46,240 --> 00:36:48,880 Zdaj argc je res n. 706 00:36:48,880 --> 00:36:51,260 To je dolžina argv array. 707 00:36:51,260 --> 00:36:59,600 Torej so ponavljanjem preko argv Niz printf-ing vsak argv vrednost. 708 00:36:59,600 --> 00:37:04,730 >> Torej, če naredim to. 709 00:37:04,730 --> 00:37:08,232 Naredite argv 1. 710 00:37:08,232 --> 00:37:09,940 To pripravlja. 711 00:37:09,940 --> 00:37:11,620 Dot poševnica argv 1. 712 00:37:11,620 --> 00:37:15,530 Samo vožnjo to, da odtisi dot slash argv 1 713 00:37:15,530 --> 00:37:18,500 saj to je bil edini v ukazni vrstici argument-- ime programa. 714 00:37:18,500 --> 00:37:22,080 Vedno bo na least-- argc ne more biti manjši od ena, 715 00:37:22,080 --> 00:37:25,910 saj še vedno najmanj je ime programa za zagon. 716 00:37:25,910 --> 00:37:32,040 Torej argv 1 Rob bo natisnila argv 1 in nato na novi liniji "Rob". 717 00:37:32,040 --> 00:37:36,350 >> Torej, v prvi iteraciji te zanke, i je 0. 718 00:37:36,350 --> 00:37:39,090 Argv 0 je ime programa. 719 00:37:39,090 --> 00:37:40,010 Dot poševnica argv 1. 720 00:37:40,010 --> 00:37:43,770 In potem argv 1 je moja prva argument v ukazni vrstici, ki je Rob. 721 00:37:43,770 --> 00:37:45,920 Na tej točki smo enak argc. 722 00:37:45,920 --> 00:37:48,210 Mi odmor iz zanke in smo končali. 723 00:37:48,210 --> 00:37:53,940 Torej bo to delo za poljubna število argumentov ukazne vrstice. 724 00:37:53,940 --> 00:37:58,550 Opazite, da natisne argv 0, argv 1, argv 2, argv 3, argv 4. 725 00:37:58,550 --> 00:38:00,150 In ni argv 5. 726 00:38:00,150 --> 00:38:01,460 argc enak 5. 727 00:38:01,460 --> 00:38:06,960 Torej na argc-- na i je enak 5, prekinemo iz zanke. 728 00:38:06,960 --> 00:38:07,950 V REDU. 729 00:38:07,950 --> 00:38:11,315 Torej vprašanja, da preden smo poglej bolj kompleksno primer? 730 00:38:11,315 --> 00:38:14,190 731 00:38:14,190 --> 00:38:16,860 >> Torej argv 2. 732 00:38:16,860 --> 00:38:17,830 V redu. 733 00:38:17,830 --> 00:38:20,610 Torej smo še vedno tiskanje argumente ukazne vrstice. 734 00:38:20,610 --> 00:38:23,170 Ampak zdaj opazili, imamo ugnezdene zanke for. 735 00:38:23,170 --> 00:38:24,670 Torej, kaj se to počne? 736 00:38:24,670 --> 00:38:28,430 Torej prva zanka počne točno to, kar je prej. 737 00:38:28,430 --> 00:38:30,950 Še vedno looping več vsak argument v ukazni vrstici, 738 00:38:30,950 --> 00:38:34,260 zdaj pa ta drugi loop-- smo jih tudi videl kaj takega. 739 00:38:34,260 --> 00:38:38,600 Ko je bil ponavljanjem več Zamyla tiskanje Z-A-m-Y-L-A. 740 00:38:38,600 --> 00:38:44,816 Torej, ta druga zanka za int j enaka 0, n enak strlen argv konzole i. 741 00:38:44,816 --> 00:38:49,170 >> Torej, kaj je najprej misliti the-- Oglejmo si. 742 00:38:49,170 --> 00:38:53,560 Pomislimo, kaj bi računalnik storiti, če sem tekel ta program kot samo dot 743 00:38:53,560 --> 00:38:56,030 poševnica argv pomišljaj 2. 744 00:38:56,030 --> 00:39:03,590 Torej, če sem tekel to kodo, nato pa argc se bo enaka 1. 745 00:39:03,590 --> 00:39:07,050 In godalni argv-- obstaja samo bo eden indeks v argv, 746 00:39:07,050 --> 00:39:12,370 in da se dogaja, da je enak dot poševnica argv 2-- ime programa. 747 00:39:12,370 --> 00:39:19,170 >> OK, tako da zdaj jaz enaka 0, i manj kot 1, i plus plus za int j enak 0, 748 00:39:19,170 --> 00:39:23,880 n enak strlen argv razredu 0, tako da v Prva ponovitev te zanke. argv 749 00:39:23,880 --> 00:39:27,250 Konzola 0 je pika poševnica argv 2. 750 00:39:27,250 --> 00:39:29,320 Torej, kaj je dolžina tega niza? 751 00:39:29,320 --> 00:39:32,480 No, dot poševnica A-R-gramsko V pomišljaj 2. 752 00:39:32,480 --> 00:39:35,020 Torej strlen tega bo 8. 753 00:39:35,020 --> 00:39:37,500 Torej j enak 0, je n enak 8. 754 00:39:37,500 --> 00:39:39,530 Dokler jje manj kot 8, j ++. 755 00:39:39,530 --> 00:39:44,080 In s tem se bomo, da bo tiskanje enoten značaj, ki 756 00:39:44,080 --> 00:39:47,350 je argv nosilec i oklepati j. 757 00:39:47,350 --> 00:39:49,826 >> Tako da je edina i je nič. 758 00:39:49,826 --> 00:39:51,700 Še vedno imamo samo eno argument v ukazni vrstici. 759 00:39:51,700 --> 00:39:53,890 V tej prvi ponovitvi od zanke, smo 760 00:39:53,890 --> 00:39:56,950 bo tisk argv nosilec 0 oklepaj 0. 761 00:39:56,950 --> 00:39:58,325 In potem j se bo prirastek. 762 00:39:58,325 --> 00:40:01,650 In bomo tiskanje argv nosilec 0 nosilec 1. 763 00:40:01,650 --> 00:40:04,150 In potem argv oklepaj 0 nosilec 2. 764 00:40:04,150 --> 00:40:09,030 >> Torej je to naša prva srečanje multi-dimenzionalni nizi. 765 00:40:09,030 --> 00:40:12,770 Ne pozabite, prej, da sem rekel: da argv je tehnično 766 00:40:12,770 --> 00:40:15,950 array nizi znakov. 767 00:40:15,950 --> 00:40:24,360 Torej, tukaj, če sem rekel nekaj podobnega Niz je enaka argv nosilec i, 768 00:40:24,360 --> 00:40:29,590 in potem sem rekel, je držalo j, to bi bilo dokončanje isto stvar. 769 00:40:29,590 --> 00:40:31,960 Zdaj, ko ste videli s pred konzolo j. 770 00:40:31,960 --> 00:40:36,680 To je samo dostop do J-th značaj tega niza. 771 00:40:36,680 --> 00:40:48,010 Torej s tem, smo dobili j-ti značaj argv i-. 772 00:40:48,010 --> 00:40:51,450 >> Torej, kaj naj bi to na koncu izhod? 773 00:40:51,450 --> 00:40:53,210 Naredite argv 2. 774 00:40:53,210 --> 00:40:54,730 To pripravlja. 775 00:40:54,730 --> 00:40:56,340 Dot poševnica argv 2. 776 00:40:56,340 --> 00:41:03,790 "Rob Maria Hannah," in nam daje nekaj prostora. 777 00:41:03,790 --> 00:41:07,050 Tako vidimo, da je ta oddaja pika na svojo lastno linijo in poševnica 778 00:41:07,050 --> 00:41:08,920 na svojo lastno linijo in na svojo lastno linijo. 779 00:41:08,920 --> 00:41:11,260 To je tiskanje vsakega individualne narave 780 00:41:11,260 --> 00:41:12,950 vsakega argumenta ukazne vrstice. 781 00:41:12,950 --> 00:41:15,960 In potem med njimi, zaradi te nove linije 782 00:41:15,960 --> 00:41:19,380 smo tiskanje tukaj, v med njimi bo to natisne novo vrstico. 783 00:41:19,380 --> 00:41:24,540 >> Torej je to podobno predhodno argv dash 1, 784 00:41:24,540 --> 00:41:26,459 ki je natisnjena vsak argument v ukazni vrstici, 785 00:41:26,459 --> 00:41:28,500 zdaj pa smo tiskanje argumente ukazne vrstice 786 00:41:28,500 --> 00:41:31,950 in nato ponavljanjem skozi vsako značaj vsakega argumenta ukazne vrstice 787 00:41:31,950 --> 00:41:35,400 da bi dobili ta rezultat. 788 00:41:35,400 --> 00:41:36,870 V REDU? 789 00:41:36,870 --> 00:41:40,570 Torej vprašanja v to? 790 00:41:40,570 --> 00:41:45,130 >> Ena stvar je tudi omeniti, da je ukazni vrstici arguments-- 791 00:41:45,130 --> 00:41:49,990 tako da so ločeni s presledki kot ti bi seveda pričakovali, da jih bo. 792 00:41:49,990 --> 00:41:53,050 Torej niz ima lahko prostore v njej. 793 00:41:53,050 --> 00:41:57,380 To ni super pomembna, vendar, če sem Želeli tretjega argumenta ukazne vrstice 794 00:41:57,380 --> 00:42:01,226 da ima prostor v njej, potem Lahko bi rekli kaj takega. 795 00:42:01,226 --> 00:42:04,470 796 00:42:04,470 --> 00:42:05,550 V REDU? 797 00:42:05,550 --> 00:42:12,190 Tako da je ta zdaj ima še vedno le tri ukazni vrstici arguments-- dobro 4. 798 00:42:12,190 --> 00:42:17,620 Dot poševnica argv dash 2, Rob, Maria in Hannah Bloomberg. 799 00:42:17,620 --> 00:42:18,320 V REDU. 800 00:42:18,320 --> 00:42:19,310 Vprašanja o tem? 801 00:42:19,310 --> 00:42:22,700 802 00:42:22,700 --> 00:42:24,894 >> Nič posebnega o presledek. 803 00:42:24,894 --> 00:42:27,810 To se zgodi le, da se da ukazni vrstici obravnava presledek 804 00:42:27,810 --> 00:42:29,226 kako vi ločite vsak argument. 805 00:42:29,226 --> 00:42:32,048 806 00:42:32,048 --> 00:42:33,000 V redu. 807 00:42:33,000 --> 00:42:39,950 Torej Problem set dvo boš biti 808 00:42:39,950 --> 00:42:43,240 gledaš secret-kriptografiji. 809 00:42:43,240 --> 00:42:47,700 Tako, podobno kot v tem primeru smo videli od A Christmas Story, 810 00:42:47,700 --> 00:42:52,840 boš za izvajanje nekaterih algoritmi, da je dobila sporočilo, 811 00:42:52,840 --> 00:42:55,560 boste mogli šifrirati to sporočilo 812 00:42:55,560 --> 00:42:58,730 da je samo nekdo s to skrivnost Ključ, s tem dekoder obroču 813 00:42:58,730 --> 00:43:01,090 mora biti sposoben dešifrirati. 814 00:43:01,090 --> 00:43:04,839 >> Tako, da je standard izdaja. 815 00:43:04,839 --> 00:43:07,130 Boš izvedbeni dveh različicah. 816 00:43:07,130 --> 00:43:09,620 Če se zgodi, da se zazremo na heker različica sedaj, 817 00:43:09,620 --> 00:43:12,600 bova dala ste niz, kot je ta, 818 00:43:12,600 --> 00:43:15,240 ki predstavlja šifrirano geslo. 819 00:43:15,240 --> 00:43:19,990 Torej je vaš cilj je, da ugotovimo, kaj dešifrirano geslo. 820 00:43:19,990 --> 00:43:26,950 Zdaj je to pravzaprav kako gesla so shranjeni v veliko računalnikov, 821 00:43:26,950 --> 00:43:31,290 in to samo shrani ta naključni niz znakov. 822 00:43:31,290 --> 00:43:34,440 Moraš, da ugotovimo, kako priti od tega naključnega niz znakov 823 00:43:34,440 --> 00:43:36,140 s tem, kar je bilo prvotno geslo. 824 00:43:36,140 --> 00:43:39,060 825 00:43:39,060 --> 00:43:43,290 >> In končno, po tem problem set, morate 826 00:43:43,290 --> 00:43:46,100 biti sposoben razumeti, kaj to pomeni. 827 00:43:46,100 --> 00:43:51,650 Tako se boste naučili, kako dešifrirati to nekako naključno niza. 828 00:43:51,650 --> 00:43:56,390 Podobno je, če se spomnite iz tedna 0, ste morda videli ta URL. 829 00:43:56,390 --> 00:44:00,210 In bi morali imeti možnost, da dešifrirati to sčasoma. 830 00:44:00,210 --> 00:44:04,810 Morda ne bo vesel, ko vas dešifriranje in kliknite na povezavo. 831 00:44:04,810 --> 00:44:05,700 V redu. 832 00:44:05,700 --> 00:44:06,591 To je to za danes. 833 00:44:06,591 --> 00:44:12,095 Torej, se vidimo naslednji teden! 834 00:44:12,095 --> 00:44:18,315 >> [ELECTRONIC MUSIC IGRANJE] 835 00:44:18,315 --> 00:47:15,619