1 00:00:00,000 --> 00:00:03,944 >> [MUZIKO Ludante] 2 00:00:03,944 --> 00:00:10,732 3 00:00:10,732 --> 00:00:11,690 DAVID Malan: Bone. 4 00:00:11,690 --> 00:00:14,674 Jen CS50, kaj ĉi tiu estas la fino de semajno 2. 5 00:00:14,674 --> 00:00:16,840 Mi tiom bedaŭras ke mi ne povis esti tie kun vi ĉiuj hodiaŭ, 6 00:00:16,840 --> 00:00:18,300 sed vi estas en tre bonaj manoj. 7 00:00:18,300 --> 00:00:21,710 Permesu ke mi konigu CS50 propra Rob Bowden. 8 00:00:21,710 --> 00:00:29,106 9 00:00:29,106 --> 00:00:31,730 ROB Bowden: Kaj kompreneble, tiam ni devas moki la fakto 10 00:00:31,730 --> 00:00:36,820 ke li sendis al ni vertikala video kaj pruvas. 11 00:00:36,820 --> 00:00:38,320 >> [VIDEO reprodukto] 12 00:00:38,320 --> 00:00:39,820 >> [MUZIKO Ludante] 13 00:00:39,820 --> 00:00:42,350 >> [Footsteps] 14 00:00:42,350 --> 00:00:44,730 >> -Ĉi Video ne devas aspekti ĉi tiel. 15 00:00:44,730 --> 00:00:46,570 Ĝi povus esti malhelpita. 16 00:00:46,570 --> 00:00:49,070 Say no to vertikala filmetoj. 17 00:00:49,070 --> 00:00:53,310 >> -pokemon Videos okazi kiam vin tenu vian ĉambron misfunkcias. 18 00:00:53,310 --> 00:00:55,880 Via video finos aspektas kiel rubo. 19 00:00:55,880 --> 00:00:57,650 >> - [Grunt] 20 00:00:57,650 --> 00:01:02,240 >> -There Estas pli kaj pli da homoj addicted al farante vertikalaj filmetoj ĉiutage. 21 00:01:02,240 --> 00:01:06,240 Tio ne fendi aŭ nenio, sed ĝi estas ankoraŭ vere malbona. 22 00:01:06,240 --> 00:01:10,410 Ekzistas du malsamaj specoj de homoj kiuj ploras kun VVS. 23 00:01:10,410 --> 00:01:14,160 La unua grupo traktas la videos ili pafas kiel pentraĵoj. 24 00:01:14,160 --> 00:01:15,850 Ili ne signifas ion malbonan. 25 00:01:15,850 --> 00:01:19,180 Ili simple ne komprenas, ke dum vi povas turni bildon, 26 00:01:19,180 --> 00:01:20,880 vi ne povas vere turni video. 27 00:01:20,880 --> 00:01:21,880 >> [Crash] 28 00:01:21,880 --> 00:01:23,460 >> - [SIMIO SOUNDS] 29 00:01:23,460 --> 00:01:27,540 >> -La Alia grupo estas homoj Kiu ne donas [Bleep]. 30 00:01:27,540 --> 00:01:31,090 >> -pokemon Video Sindromo estas danĝera. 31 00:01:31,090 --> 00:01:34,120 Filmoj havas ĉiam estis horizontalaj. 32 00:01:34,120 --> 00:01:35,990 Televidoj estas horizontalaj. 33 00:01:35,990 --> 00:01:38,380 Komputilaj ekranoj estas horizontalaj. 34 00:01:38,380 --> 00:01:41,580 Popola okuloj estas horizontala. 35 00:01:41,580 --> 00:01:45,170 Ni ne konstruis por spekti vertikala filmetoj. 36 00:01:45,170 --> 00:01:47,600 >> -I Amas vertikala filmetoj. 37 00:01:47,600 --> 00:01:50,410 >> -Nobody Zorgas pri vi. 38 00:01:50,410 --> 00:01:53,340 >> -Se Tiu problemo estas lasis malŝaltita, vi tro 39 00:01:53,340 --> 00:01:57,650 komencos montri kvar vídeos samtempe simple savi bandwidth. 40 00:01:57,650 --> 00:02:02,400 >> -Letterboxed Vertikala videos volus esti la grandeco de poŝtmarko. 41 00:02:02,400 --> 00:02:04,920 >> -Kaj Ĝi disvastiĝos ĉie. 42 00:02:04,920 --> 00:02:07,670 Filmo ekranoj havas ĉiam estis horizontalaj. 43 00:02:07,670 --> 00:02:11,200 Se vertikala videos fariĝi akceptita, kinoj 44 00:02:11,200 --> 00:02:13,930 devos esti alta kaj magra. 45 00:02:13,930 --> 00:02:17,710 >> -Kaj Ĉiuj kinoj volus devi akiri ŝirita malsupren kaj rekonstruita. 46 00:02:17,710 --> 00:02:22,090 Kaj kiam ili estis rekonstruitaj, Mila Kunis estus malnova kaj malbela. 47 00:02:22,090 --> 00:02:24,342 >> -Birds Kraŝos en ilin kaj mortu. 48 00:02:24,342 --> 00:02:26,530 >> -We'll Ĉiuj atingi rigida koloj de suprenrigardinte. 49 00:02:26,530 --> 00:02:29,800 >> -Kaj Neniu sidos en la frontvico iam denove. 50 00:02:29,800 --> 00:02:37,170 >> -George Lucas estos re-ĵeto Stelo Militoj again-- la magra eldono. 51 00:02:37,170 --> 00:02:41,860 >> -I Neniam vere povis diri la rakonto, kiun mi volis rakonti. 52 00:02:41,860 --> 00:02:46,030 Tio estis granda ŝanco por mi eksperimenti kun nova teknologio. 53 00:02:46,030 --> 00:02:48,150 >> -You're Eksalton. 54 00:02:48,150 --> 00:02:54,430 >> -Every Tempo movkomputilo kutimas rekordo video, la tento estas tie. 55 00:02:54,430 --> 00:02:56,370 Nur diri ne. 56 00:02:56,370 --> 00:03:00,116 Say no to George Lucas. 57 00:03:00,116 --> 00:03:04,062 Diri ne al malnova Mila Kunis. 58 00:03:04,062 --> 00:03:06,600 Say no to vertikala filmetoj. 59 00:03:06,600 --> 00:03:12,511 >> -Kaj Se vi vidas iun fari ĝin, diru, "vi ne pafi ke rajto maniquí!" 60 00:03:12,511 --> 00:03:15,433 >> [MUZIKO Ludante] 61 00:03:15,433 --> 00:03:18,842 62 00:03:18,842 --> 00:03:19,830 >> [FINO reprodukto] 63 00:03:19,830 --> 00:03:23,702 >> [Aplaŭdo] 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 formo de ĉifriko, 67 00:03:45,790 --> 00:03:49,500 kiu estas esence la ĉifrado kaj malĉifro de sekretaj mesaĝoj. 68 00:03:49,500 --> 00:03:52,590 Do jen ni havas tre simplan ludilon. 69 00:03:52,590 --> 00:03:56,900 Kaj la ideo estas la ekstera ringo rotacias ĉirkaŭ la interna ringo. 70 00:03:56,900 --> 00:04:01,610 Kaj vi povas vidi, eble se mi zomi en, that-- estas malfacile vidi. 71 00:04:01,610 --> 00:04:05,090 Sed, kiel, la nombro 1-- bone, kiu movigxas. 72 00:04:05,090 --> 00:04:09,120 >> La nombro 1 mapas al la letero X, numero 2 mapoj al la letero 73 00:04:09,120 --> 00:04:11,630 J. Nekredeble malfacila Ne salti antaŭen. 74 00:04:11,630 --> 00:04:16,100 Letero 2 mapas al J. Numero 3 mapoj al D. Do 75 00:04:16,100 --> 00:04:20,140 kun tiu ĉi ringo vi povas doni ulu mesaĝon 1, 2, 3. 76 00:04:20,140 --> 00:04:22,624 Ial vi volas rakonti ilin XJD. 77 00:04:22,624 --> 00:04:24,540 Sed vi povas doni al ili iuj mesaĝo de nombroj, 78 00:04:24,540 --> 00:04:28,460 kaj tiel longe, kiel ili havas tiun ringon, ili povas malĉifri kion vi provas diri. 79 00:04:28,460 --> 00:04:32,510 >> Do eble vi vidis tiun aparta ekzemplo de ĉifriko 80 00:04:32,510 --> 00:04:36,640 antaŭ se ĉirkaŭ la sezono navideña vi jam spektis A Christmas Story. 81 00:04:36,640 --> 00:04:38,520 Se vi neniam vidis ĝi antaŭe, tiam nur 82 00:04:38,520 --> 00:04:41,060 ŝalti TBS ĉe laŭvorte ajna tempo sur Nochebuena, 83 00:04:41,060 --> 00:04:44,510 ĉar ili simple montri ĝin reen malantaŭeniri al malantaŭo al malantaŭo al malantaŭo la tutan tagon. 84 00:04:44,510 --> 00:04:46,744 Kaj la koncernajn video estas ĉi. 85 00:04:46,744 --> 00:04:47,410 [VIDEO reprodukto] 86 00:04:47,410 --> 00:04:50,020 -Be Sciate al propraj kaj strangaj ke Ralph Parker estas maniere 87 00:04:50,020 --> 00:04:52,850 enoficigita membro de la Malgranda Orfino Annie Sekreta Rondo 88 00:04:52,850 --> 00:04:56,490 kaj povas postuli ĉiuj honoroj kaj profitoj okazanta tio. 89 00:04:56,490 --> 00:04:59,010 Subskribita Little Orphan Annie. 90 00:04:59,010 --> 00:05:03,120 Legalizita Pierre Andre inke! 91 00:05:03,120 --> 00:05:07,460 Honoroj kaj profitojn Jam en la aĝo de naŭ! 92 00:05:07,460 --> 00:05:12,530 >> [Kriante FROM RADIO] 93 00:05:12,530 --> 00:05:13,030 -Come Plu. 94 00:05:13,030 --> 00:05:14,000 Ni daŭrigu ĝin. 95 00:05:14,000 --> 00:05:18,274 Mi ne bezonas ĉion, kion ĵazo pri kontrabandistoj kaj piratoj. 96 00:05:18,274 --> 00:05:20,440 -Listen Morgaŭ nokto kun la konkluda aventuro 97 00:05:20,440 --> 00:05:22,540 de la Nigra Pirato Ŝipo. 98 00:05:22,540 --> 00:05:25,460 Nun, estas tempo por Annie la sekreta mesaĝo 99 00:05:25,460 --> 00:05:28,620 por vi membroj de la Sekreta Rondo. 100 00:05:28,620 --> 00:05:32,370 Memoru infanoj, nur membroj de Annie Sekreta Rondo 101 00:05:32,370 --> 00:05:34,880 povas malkodi Annie la sekreta mesaĝo. 102 00:05:34,880 --> 00:05:39,100 Memoru, Annie estas dependanta sur vi. 103 00:05:39,100 --> 00:05:41,660 Ŝanĝu vian pingloj al B2. 104 00:05:41,660 --> 00:05:43,960 Jen la mesaĝo. 105 00:05:43,960 --> 00:05:44,680 12. 106 00:05:44,680 --> 00:05:45,180 11. 107 00:05:45,180 --> 00:05:45,679 2. 108 00:05:45,679 --> 00:05:48,110 -I Estas en mia unua sekreta kunveno. 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 >> -Ho, Pierre estas en granda bruo hodiaŭ nokte. 115 00:05:54,570 --> 00:05:57,490 Mi povus diri ke tiu nokto la mesaĝo estis vere grava. 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 Tio estas mesaĝo de Annie sin. 119 00:06:01,580 --> 00:06:02,880 Memoru, ne diru al iu ajn. 120 00:06:02,880 --> 00:06:07,840 121 00:06:07,840 --> 00:06:11,130 >> -Five Sekundoj poste, mi estas en la sola ĉambro en la domo kie knabo de naŭ 122 00:06:11,130 --> 00:06:15,830 povis sidi en privatecon kaj malkodi. 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 Mi iris al la sekva. 126 00:06:20,210 --> 00:06:23,300 E. La unua vorto estas "esti." 127 00:06:23,300 --> 00:06:25,880 S. Ĝi venis pli facile nun. 128 00:06:25,880 --> 00:06:28,400 U. 25. 129 00:06:28,400 --> 00:06:30,528 Tio R. 130 00:06:30,528 --> 00:06:31,278 -Come Sur, Ralphie! 131 00:06:31,278 --> 00:06:31,861 Mi gotta go! 132 00:06:31,861 --> 00:06:33,182 -I'll Pravus malsupren, Ma! 133 00:06:33,182 --> 00:06:36,038 Gee Whiz. 134 00:06:36,038 --> 00:06:42,840 T. O. "Nepre" - nepre kio? 135 00:06:42,840 --> 00:06:44,770 Kio estis Little Orphan Annie provas diri? 136 00:06:44,770 --> 00:06:46,381 Nepre kio? 137 00:06:46,381 --> 00:06:47,825 >> -Randy Has got iri! 138 00:06:47,825 --> 00:06:48,866 Bonvolu eliros? 139 00:06:48,866 --> 00:06:49,783 >> -All Pravas, panjo! 140 00:06:49,783 --> 00:06:51,786 Mi tuj ekstere! 141 00:06:51,786 --> 00:06:53,606 Mi proksimiĝas nun. 142 00:06:53,606 --> 00:06:55,550 La streĉiĝo estis terura. 143 00:06:55,550 --> 00:06:57,050 Kio estis tio? 144 00:06:57,050 --> 00:06:59,905 La sorto de la planedo povas pendi en la ekvilibro! 145 00:06:59,905 --> 00:07:01,736 >> -Ralphie, Randy devas iri! 146 00:07:01,736 --> 00:07:05,680 >> -I'll Pravus eksteren, por laŭte ploris! 147 00:07:05,680 --> 00:07:07,170 Preskaŭ tie! 148 00:07:07,170 --> 00:07:08,150 Miaj fingroj flugis. 149 00:07:08,150 --> 00:07:09,980 Mia menso estis ŝtalo kaptilo. 150 00:07:09,980 --> 00:07:11,496 Ĉiu poro vibris. 151 00:07:11,496 --> 00:07:13,268 Estis preskaŭ klara! 152 00:07:13,268 --> 00:07:13,767 Jes. 153 00:07:13,767 --> 00:07:14,609 Jes. 154 00:07:14,609 --> 00:07:15,108 Jes. 155 00:07:15,108 --> 00:07:16,449 Jes. 156 00:07:16,449 --> 00:07:20,240 Nepre trinku vian 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 A malbona morto komerca? 160 00:07:27,520 --> 00:07:32,040 161 00:07:32,040 --> 00:07:34,920 Filo de ĉiesulino. 162 00:07:34,920 --> 00:07:35,890 >> [FINO reprodukto] 163 00:07:35,890 --> 00:07:39,650 >> ROB Bowden: Do jen kiel Ovaltine rilatas al ĉifriko. 164 00:07:39,650 --> 00:07:42,290 Esence CS50 ĵus anoncita Ovaltine, tiel ni povis 165 00:07:42,290 --> 00:07:44,400 esti malbona morto komerca por Ovaltine. 166 00:07:44,400 --> 00:07:44,900 Bone. 167 00:07:44,900 --> 00:07:47,120 Do nun fakta komputiko. 168 00:07:47,120 --> 00:07:50,670 Memoru lunde ni cxesis plonĝado profunden en kordoj. 169 00:07:50,670 --> 00:07:52,820 Do temas pri la ĉeno "Zamyla." 170 00:07:52,820 --> 00:07:55,130 Kaj ni estis rekonanta la fakto ke ni povas trakti 171 00:07:55,130 --> 00:07:57,510 "Zamyla" kiel sekvenco de karakteroj. 172 00:07:57,510 --> 00:07:59,740 Kaj memoru ke ni lernis la krampo skribmaniero. 173 00:07:59,740 --> 00:08:01,995 Do se tio estis stokitaj en cxeno "s", tiam 174 00:08:01,995 --> 00:08:05,860 se ni diris s krampo 0, kiu volus indiki la letero ĉefurbo Z. 175 00:08:05,860 --> 00:08:09,790 Kaj se ni diris s krampo 1, ke indikus la unua minuskla a, 176 00:08:09,790 --> 00:08:14,220 kaj tiel plu supren al s krampo 5, kiu indikus la lasta a. 177 00:08:14,220 --> 00:08:17,090 >> Nun memoru ke la longo de tiu linio estas 6, 178 00:08:17,090 --> 00:08:23,220 sed la indeksoj en la kordo estas 0 tra 5, Z tra tiu daŭri. 179 00:08:23,220 --> 00:08:28,650 Do tiu nun konvenas en pli grandan bildon de via komputilo memoro, via memoro RAM. 180 00:08:28,650 --> 00:08:32,020 Do ie la programo kiu vi uzas vian komputilon 181 00:08:32,020 --> 00:08:34,780 bezonas memori Zamyla ie en memoro. 182 00:08:34,780 --> 00:08:36,029 Do mi povas havi volontulo? 183 00:08:36,029 --> 00:08:38,840 184 00:08:38,840 --> 00:08:40,181 Jes Bonvolu. 185 00:08:40,181 --> 00:08:50,120 186 00:08:50,120 --> 00:08:51,500 Kaj kio estas via nomo? 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 Agrable renkonti vin, Dean. 190 00:08:54,910 --> 00:08:58,240 Do venu ĉi tien, kaj ni havos vin tiros 191 00:08:58,240 --> 00:09:00,740 sur nia bela nifty aranĝo de memoro. 192 00:09:00,740 --> 00:09:05,950 Nun mi ŝatas pensi de memoro kiel longa strio de bajtoj, 193 00:09:05,950 --> 00:09:11,090 sed nur por montri celoj ni simple maldekstre dekstren, pinton al fundo. 194 00:09:11,090 --> 00:09:11,590 BONE? 195 00:09:11,590 --> 00:09:22,030 >> Do mi tuj montros program-- Getstrings.c. 196 00:09:22,030 --> 00:09:25,760 Kaj tial ĉiuj ĉi programo estas faras estas peti kvar kordoj 197 00:09:25,760 --> 00:09:28,830 de la uzanto kun GetString kaj tiam printado 198 00:09:28,830 --> 00:09:30,950 kio ajn tiu unua signoĉeno tajpis. 199 00:09:30,950 --> 00:09:32,840 Ni ignorante du tra kvar. 200 00:09:32,840 --> 00:09:33,610 BONE. 201 00:09:33,610 --> 00:09:38,210 Do tien now-- kiam Mi unue peto s1. 202 00:09:38,210 --> 00:09:39,740 Do vi estas la komputilo. 203 00:09:39,740 --> 00:09:41,680 Kaj vi estas implementando GetString. 204 00:09:41,680 --> 00:09:46,710 Do vi peti kordo de mi, kaj mi diras, OK, Dean. 205 00:09:46,710 --> 00:09:47,900 Donu la kordo "Dean". 206 00:09:47,900 --> 00:09:50,300 >> Do ie en memoro vi bezonas memori "Dean". 207 00:09:50,300 --> 00:09:52,160 Do skribu ĝin en memoro ie. 208 00:09:52,160 --> 00:09:58,270 209 00:09:58,270 --> 00:09:59,210 Perfekta. 210 00:09:59,210 --> 00:09:59,880 BONE. 211 00:09:59,880 --> 00:10:01,740 Do nun ni S2. 212 00:10:01,740 --> 00:10:03,869 Kaj s2 tuj estos peton al GetString. 213 00:10:03,869 --> 00:10:05,160 Do mi tuj eniri ĉenon. 214 00:10:05,160 --> 00:10:08,720 Mi tuj eniri "Hannah." 215 00:10:08,720 --> 00:10:10,586 Do eniri "Hannah" ie en memoro. 216 00:10:10,586 --> 00:10:18,860 217 00:10:18,860 --> 00:10:19,360 Yeah. 218 00:10:19,360 --> 00:10:23,000 A-H. 219 00:10:23,000 --> 00:10:25,550 >> Bone, do nun s3. 220 00:10:25,550 --> 00:10:28,380 Kaj ĝi estas iranta esti alia peti al GetString. 221 00:10:28,380 --> 00:10:37,020 Kaj tial nun eniri "Maria." 222 00:10:37,020 --> 00:10:37,520 Bone. 223 00:10:37,520 --> 00:10:40,980 Kaj tiam tie estas unu lasta peto al GetString, S4. 224 00:10:40,980 --> 00:10:42,580 Do, mi ne scias. 225 00:10:42,580 --> 00:10:45,640 Kion pri ni akompanos antidisestablishmentarianism. 226 00:10:45,640 --> 00:10:49,460 Do eniru ke en memoro. 227 00:10:49,460 --> 00:10:50,400 Yeah. 228 00:10:50,400 --> 00:10:53,970 Do simple fari "Rob". 229 00:10:53,970 --> 00:10:54,560 >> BONE. 230 00:10:54,560 --> 00:10:58,410 Do nun explain-- kial vi lasas tiujn spacoj? 231 00:10:58,410 --> 00:11:01,340 Kial vi devas tion malplena spaco tie, tie kaj tie? 232 00:11:01,340 --> 00:11:05,170 233 00:11:05,170 --> 00:11:05,670 Jes. 234 00:11:05,670 --> 00:11:09,450 Do rimarki kiam mi iras presi s1-- do se ni 235 00:11:09,450 --> 00:11:11,890 havis "Hannah" kurado suprenvenu apud "Dean" 236 00:11:11,890 --> 00:11:14,360 kiel ni scias kiam la ĉeno "Dekano" finas? 237 00:11:14,360 --> 00:11:19,470 Do presi la kordo s1 povas havi nur presita "DeanHannahMariaRob" 238 00:11:19,470 --> 00:11:22,720 se ĝi ne havas neniun indikon de kiam "Dekano" efektive finiĝas. 239 00:11:22,720 --> 00:11:23,240 >> Bone. 240 00:11:23,240 --> 00:11:27,650 Do en memoro la maniero ni efektive reprezenti tiun finon de ŝnuro 241 00:11:27,650 --> 00:11:29,940 estas kun backslash nula. 242 00:11:29,940 --> 00:11:32,620 Do tiu spaco estas ĝuste kio ni deziris. 243 00:11:32,620 --> 00:11:34,040 Ĝi devus esti backslash nula. 244 00:11:34,040 --> 00:11:37,690 Tio estos backslash nulo, kaj tio estos backslash nula. 245 00:11:37,690 --> 00:11:41,585 Kaj vi povas havi fabela premion por esti perfekta volontulo. 246 00:11:41,585 --> 00:11:44,910 247 00:11:44,910 --> 00:11:45,860 Prenu streso pilko! 248 00:11:45,860 --> 00:11:49,040 249 00:11:49,040 --> 00:11:49,700 >> BONE. 250 00:11:49,700 --> 00:11:54,420 Do tiu karaktero backslash nulo estas kiel ni indikas la finon de ŝnuro. 251 00:11:54,420 --> 00:11:57,120 Estas kiel kiam iu antaŭfiksita programo volas presi ĉenon, 252 00:11:57,120 --> 00:11:59,760 ĝi estas how-- memoras ni lernis la strlen funkcio lasta semajno? 253 00:11:59,760 --> 00:12:00,940 Kordo longo? 254 00:12:00,940 --> 00:12:03,770 Ĝi estas kiel kordo longo povas determini kiel longe kordo estas. 255 00:12:03,770 --> 00:12:05,810 Ĝi nur tenas ripetanta super la karakteroj 256 00:12:05,810 --> 00:12:08,217 ĝis ĝi trovas la backslash nula karaktero. 257 00:12:08,217 --> 00:12:11,050 Do la grava afero realigi pri la backslash nula karaktero 258 00:12:11,050 --> 00:12:14,950 estas ĝi estas reprezentitaj de ĉiuj nuloj en bitoj. 259 00:12:14,950 --> 00:12:18,980 Do rimarki ke tiu estas klara el la nula karaktero. 260 00:12:18,980 --> 00:12:23,010 Do la nula karaktero, se vi memoras en la ekzemplo kiun li donis ĉe la fino 261 00:12:23,010 --> 00:12:27,360 de prelego kie karakteroj mapi to-- kiel ĉefurbo A mapoj al 65. 262 00:12:27,360 --> 00:12:29,130 Minuskla a mapoj al 97. 263 00:12:29,130 --> 00:12:30,890 Minuskla b estus 98. 264 00:12:30,890 --> 00:12:35,220 Do la nombro 0 mapoj to-- mi ne scii de la supro de mia kapo. 265 00:12:35,220 --> 00:12:36,400 44 aŭ 45. 266 00:12:36,400 --> 00:12:37,890 Ie en tiu regiono. 267 00:12:37,890 --> 00:12:40,850 >> Do la karaktero 0 estas reala nombro. 268 00:12:40,850 --> 00:12:44,350 Sed backslash nulo mapoj por ĉiu nulo bitoj. 269 00:12:44,350 --> 00:12:46,380 Do ekzistas distingo inter backslash nulo, 270 00:12:46,380 --> 00:12:48,450 kiun ni nomas la nula Terminator. 271 00:12:48,450 --> 00:12:53,210 Ekzistas distingo inter backslash nula kaj la karaktero nulo. 272 00:12:53,210 --> 00:12:54,350 >> Bone. 273 00:12:54,350 --> 00:12:57,520 Do parolante iom pli pri kordoj. 274 00:12:57,520 --> 00:13:01,470 Tial ni vidas tie ĉi estas kiom estus aranĝita en memoro. 275 00:13:01,470 --> 00:13:07,940 Do tiu ideo de kordoj kiel sekvenco de characters-- tiel la oficiala komputilo 276 00:13:07,940 --> 00:13:10,750 sciency termino por vico estas tabelo. 277 00:13:10,750 --> 00:13:13,790 Do nomus kordo tabelo de signoj. 278 00:13:13,790 --> 00:13:17,770 Kaj estas efektive aliaj datumoj tipoj kiujn ni povas fari tabeloj el. 279 00:13:17,770 --> 00:13:19,975 >> Do motivi ĉi, rigardu ekzemplon. 280 00:13:19,975 --> 00:13:22,810 281 00:13:22,810 --> 00:13:29,812 Ni nomas ĝin ages0.c Mi timige kopiu kaj gluu nian ŝablonon. 282 00:13:29,812 --> 00:13:32,470 283 00:13:32,470 --> 00:13:33,410 BONE. 284 00:13:33,410 --> 00:13:39,378 Do en tiu programo, kion ni volas fari estas kapti la aĝo 285 00:13:39,378 --> 00:13:45,160 de tri studentoj en la kurso. 286 00:13:45,160 --> 00:13:49,240 Do ni scias la int age-- kaj nun mi estas iranta diri 0. 287 00:13:49,240 --> 00:13:53,140 Do eble vi volas diri age1, sed por celoj ni vidos tre baldaux, 288 00:13:53,140 --> 00:13:57,187 Mi diros int age0 egalas GetInt. 289 00:13:57,187 --> 00:13:59,270 Do la sama alvoko al GetInt ke ni uzis mi 290 00:13:59,270 --> 00:14:01,561 ne okazas esti instigante dirante, "donu al mi la aĝo." 291 00:14:01,561 --> 00:14:03,120 Sed ĝuste petas. 292 00:14:03,120 --> 00:14:06,510 >> Kaj age1 egalas GetInt. 293 00:14:06,510 --> 00:14:09,600 Kaj int age2 egalas GetInt. 294 00:14:09,600 --> 00:14:14,070 Do, denove, tri studentoj, sed finfine la variablo indeksoj 295 00:14:14,070 --> 00:14:16,890 estas age0 tra age2. 296 00:14:16,890 --> 00:14:17,550 BONE. 297 00:14:17,550 --> 00:14:23,960 Do tiu programo faros ĉion, kion ni volas kun age0, age1 kaj age2, 298 00:14:23,960 --> 00:14:27,670 sed tiu programo finfine funkcias por tri studentoj. 299 00:14:27,670 --> 00:14:28,380 >> BONE. 300 00:14:28,380 --> 00:14:32,110 Do nun kio se mi volas kvar studentoj? 301 00:14:32,110 --> 00:14:36,000 Nu, mi tuj devos iri reen en mia kodo, ŝanĝi la komenton, 302 00:14:36,000 --> 00:14:39,840 kaj nun ni havas int age3 egalas GetInt. 303 00:14:39,840 --> 00:14:40,610 BONE. 304 00:14:40,610 --> 00:14:43,660 Do kiu vidas la problemon ĉi tie? 305 00:14:43,660 --> 00:14:47,310 Kio estas la problemo kun ĉi tia aranĝo? 306 00:14:47,310 --> 00:14:47,810 Yeah. 307 00:14:47,810 --> 00:14:53,110 308 00:14:53,110 --> 00:14:53,610 Yeah. 309 00:14:53,610 --> 00:14:56,360 Do ni kreante variablo por ĉiu studento. 310 00:14:56,360 --> 00:15:00,140 Nun kiu funkcias, sed finfine kion se mi nun 311 00:15:00,140 --> 00:15:06,500 diri, "Mi volas ekpreni la aĝo de ok studentoj aŭ 16 studentoj 312 00:15:06,500 --> 00:15:11,340 aŭ la tamen multaj studentoj de la centoj da studentoj en CS50 313 00:15:11,340 --> 00:15:16,750 aŭ la miloj da studentoj sur kampuso aŭ la miliardoj da homoj en la mondo? 314 00:15:16,750 --> 00:15:19,130 Do finfine tio ne daŭrigebla. 315 00:15:19,130 --> 00:15:21,990 Ajna tempo vi vidas mem kopiado kaj glui kodon tiel, 316 00:15:21,990 --> 00:15:25,050 vi devus ĝenerale sentas ke estas bona maniero. 317 00:15:25,050 --> 00:15:31,290 >> Do tiu estas kie ni enkonduki tabelo deklaro. 318 00:15:31,290 --> 00:15:34,564 Do kiam vi deklari tabelo, jen kion la ĝenerala formato 319 00:15:34,564 --> 00:15:35,480 tuj aspekti. 320 00:15:35,480 --> 00:15:36,664 Ni tuj diru la tipo. 321 00:15:36,664 --> 00:15:38,830 kaj tiam ni tuj donas la nomon de tiu tabelo, 322 00:15:38,830 --> 00:15:41,150 kiel ni difini iu antaŭfiksita variablo. 323 00:15:41,150 --> 00:15:43,980 Kaj tiam fine ni uzas ĉi krampo skribmaniero denove 324 00:15:43,980 --> 00:15:47,480 sed en malsama kunteksto de kiel ni uzis ĝin pli frue. 325 00:15:47,480 --> 00:15:51,860 >> Do jen tio aspektas kiel normala ŝanĝiĝema deklaro ke ni vidis. 326 00:15:51,860 --> 00:15:54,890 Do ni vidis int x duon-dupunkto antaŭe. 327 00:15:54,890 --> 00:16:00,020 Nu nun ni povu vidi ion kiel int x krampoj 5. 328 00:16:00,020 --> 00:16:04,020 Kaj metante tiun ideon en la GetInt programo ke ni have-- 329 00:16:04,020 --> 00:16:08,850 tial ni povas apliki tiu en la sama maniero. 330 00:16:08,850 --> 00:16:13,630 >> Diru en CS Ni emas uzi n kiel la nombro de io. 331 00:16:13,630 --> 00:16:16,150 Do jen ni tuj stoki kvar studentoj. 332 00:16:16,150 --> 00:16:25,960 Kaj nun ni povas diri int aĝo krampo n-- ne sufiĉe akiri ĝin yet-- 333 00:16:25,960 --> 00:16:32,210 deklari tabelo de kvar studentoj. 334 00:16:32,210 --> 00:16:38,050 Do kiel tio aspektos en memoro estos simila al tiu. 335 00:16:38,050 --> 00:16:39,570 Malbari ĉi. 336 00:16:39,570 --> 00:16:46,606 Kaj ni tuj devas ie en memory-- mi metos ĉi tie supre. 337 00:16:46,606 --> 00:16:52,690 338 00:16:52,690 --> 00:16:53,808 >> Do ie en memoro. 339 00:16:53,808 --> 00:16:58,760 340 00:16:58,760 --> 00:16:59,727 Unu, du, tri, kvar. 341 00:16:59,727 --> 00:17:03,383 342 00:17:03,383 --> 00:17:09,849 Ni havas kvar entjeroj en vico por tiu tabelo de kvar entjeroj. 343 00:17:09,849 --> 00:17:13,820 Do, nune, kio estas la grandeco de unu el ĉi tiuj skatoloj? 344 00:17:13,820 --> 00:17:17,190 345 00:17:17,190 --> 00:17:17,690 Yeah. 346 00:17:17,690 --> 00:17:18,390 Estas kvar bajtoj. 347 00:17:18,390 --> 00:17:19,690 Ĝi estas 32 bitoj. 348 00:17:19,690 --> 00:17:22,310 Do nun tiu estas malsama el la tabelo, ke ni 349 00:17:22,310 --> 00:17:24,020 vidis antaŭe, la tabelo de signoj. 350 00:17:24,020 --> 00:17:28,540 En cxeno ĉiu skatolo estis nur unu bajto, ĉar karaktero estas nur unu bitoko. 351 00:17:28,540 --> 00:17:32,170 Sed kun tabelo de entjeroj, ĉiu skatolo devas esti kvar bitokoj por 352 00:17:32,170 --> 00:17:34,060 konveni tutan entjero. 353 00:17:34,060 --> 00:17:37,197 Do ĉi tiu estas kion tabelo de kvar ints aspektus. 354 00:17:37,197 --> 00:17:40,510 355 00:17:40,510 --> 00:17:43,870 >> Kaj poste hejmen al la kodo. 356 00:17:43,870 --> 00:17:47,460 Nun ni volas reale vendejo entjeroj en tiun tabelo. 357 00:17:47,460 --> 00:17:53,470 Do nun tiu lando estas tre, tre, tre komuna padrono ke volo ĉe iu punkto 358 00:17:53,470 --> 00:17:54,680 fariĝi muskolo memoro. 359 00:17:54,680 --> 00:17:56,710 Do int i egalas 0. 360 00:17:56,710 --> 00:17:57,940 i malpli ol n. 361 00:17:57,940 --> 00:18:01,850 i plus alpago. 362 00:18:01,850 --> 00:18:05,790 Aĝo krampo i egalas GetInt. 363 00:18:05,790 --> 00:18:15,100 >> Do tiu por buklo, tiu formato, Vi devus akiri tre uzita. 364 00:18:15,100 --> 00:18:20,010 Do tiu estas ĝenerale kiel ni persisti super preskaŭ ajna tabelo. 365 00:18:20,010 --> 00:18:23,690 Nun rimarki tian klarigas kial de la komenco 366 00:18:23,690 --> 00:18:29,870 ni ne havas por bukloj iranta por int i egalas 1, i malpli ol aŭ egala al 10. 367 00:18:29,870 --> 00:18:34,200 La kialo estanta ke ekde nulo faras ĉi laboro bone kun tabeloj. 368 00:18:34,200 --> 00:18:36,270 Do tabeloj estas nulo indeksita. 369 00:18:36,270 --> 00:18:40,360 Se tiu tabelo estas de longo 4, la indeksoj estas 0 tra 3. 370 00:18:40,360 --> 00:18:42,880 >> Do tra la unua ripeto de tiu por buklo 371 00:18:42,880 --> 00:18:49,930 ni tuj estos opcio aĝo krampo 0 egala al alvoko por GetInt. 372 00:18:49,930 --> 00:18:52,440 Do kion mi okazis eniri ĉe la klavaro. 373 00:18:52,440 --> 00:18:56,970 En la dua paŝo, ni estas fiksanta age1 egalas GetInt. 374 00:18:56,970 --> 00:18:58,230 Tria enirpermesilo, age2. 375 00:18:58,230 --> 00:18:59,880 Fino preterpasigos age3. 376 00:18:59,880 --> 00:19:05,750 Do se en la unua enirpermesilo de la buklo Mi eniras en la numero 4 ĉe la klavaro, 377 00:19:05,750 --> 00:19:07,740 poste ni enmeti 4 tie. 378 00:19:07,740 --> 00:19:11,470 Se sur la dua pasas mi eniras 50, ni metos 50 tie. 379 00:19:11,470 --> 00:19:15,180 La trian enirpermesilon, mi eble povus eniri negativa 1, negativa 1, 380 00:19:15,180 --> 00:19:21,810 kaj tiam fine kiam mi eniras 0-- kaj nun memoras ke tio indekso tri. 381 00:19:21,810 --> 00:19:25,350 >> Post ni buklo reen, i estas tuj estos incremented al 4. 382 00:19:25,350 --> 00:19:27,770 Mi ne plu estas malpli ol n, kiu estas 4. 383 00:19:27,770 --> 00:19:29,840 Kaj ni rompi la buklo. 384 00:19:29,840 --> 00:19:32,578 Do kio estus erara kun tio? 385 00:19:32,578 --> 00:19:38,140 386 00:19:38,140 --> 00:19:38,729 [Inaudible]? 387 00:19:38,729 --> 00:19:39,604 Spektantaro: [inaudible] 388 00:19:39,604 --> 00:19:45,880 389 00:19:45,880 --> 00:19:46,400 >> Jes. 390 00:19:46,400 --> 00:19:51,550 Do la tabelo nur havas kvar lokojn, kio signifas kiel indicoj 0 tra 3. 391 00:19:51,550 --> 00:19:55,630 Do se tio estis la kazo, mi farus alpreni la valoron 4 ĉe iu punkto. 392 00:19:55,630 --> 00:20:00,910 aĝo krampo 4 estos opcio ajn hazarde estas super tie 393 00:20:00,910 --> 00:20:02,920 al kion mi devas diri, eniri 6. 394 00:20:02,920 --> 00:20:05,010 Ke estos opcio tiu al 6. 395 00:20:05,010 --> 00:20:06,560 >> Sed ni ne scias kio estas super tie. 396 00:20:06,560 --> 00:20:08,836 Tio ne memoro ke ni havis aliron al. 397 00:20:08,836 --> 00:20:10,710 Do se vi memoras de la antaŭa prelego, 398 00:20:10,710 --> 00:20:14,350 li presi el valoroj de Zamyla kaj iam li trafis ĉi segmentación 399 00:20:14,350 --> 00:20:17,990 kulpo. Do vi probable vidos multaj segmentación misfarojn kiel vi 400 00:20:17,990 --> 00:20:20,530 implementar iuj de la problemo aroj. 401 00:20:20,530 --> 00:20:24,950 Sed tio estas unu el la manieroj en kiuj vi povas renkonti segmentación 402 00:20:24,950 --> 00:20:28,540 kulpo, kiam vi komencas aliranta memoro en manieroj kiuj vi ne devus esti. 403 00:20:28,540 --> 00:20:34,117 Do ni ne havas aliron al tiun lokon kaj tio estas cimo. 404 00:20:34,117 --> 00:20:37,760 405 00:20:37,760 --> 00:20:40,190 >> Do tio estas bona. 406 00:20:40,190 --> 00:20:45,820 Nun estas ankoraŭ malgranda temo kun tiu kodo. 407 00:20:45,820 --> 00:20:50,720 Kaj tio estas esence ke ni estas ankoraŭ senmoviĝita ĉe kvar studentoj. 408 00:20:50,720 --> 00:20:52,940 Sed se mi volas uzi ok studentoj, OK. 409 00:20:52,940 --> 00:20:54,350 Ĝi ne estas ke granda interkonsento. 410 00:20:54,350 --> 00:20:58,120 Mi povas eniri, ŝanĝi la komenti kaj sxangxu n. 411 00:20:58,120 --> 00:20:59,760 Nun tio funkcios kun ok studentoj. 412 00:20:59,760 --> 00:21:02,190 Se mi kompilos ĉi kaj kuri tiu, ĝi montros kunulinon 413 00:21:02,190 --> 00:21:07,870 ĝi petos entjeroj por ok studentoj kaj ĝi nur funkcius. 414 00:21:07,870 --> 00:21:11,850 Sed estas malpli ol ideala bezoni rekompili la programon ĉiu ununura tempo 415 00:21:11,850 --> 00:21:15,960 Mi volas ŝanĝi la nombro de studentoj ke mi volas eniri la aĝoj por. 416 00:21:15,960 --> 00:21:22,990 >> Do la fina plibonigo sur tiu, kiel ni vidos here-- ni estas 417 00:21:22,990 --> 00:21:26,177 tuj petos la nombro de homoj. 418 00:21:26,177 --> 00:21:28,010 Ĉi tie ni havas nombro de homoj en la ĉambroj 419 00:21:28,010 --> 00:21:29,880 aŭ ajna aĝoj de homoj en la ĉambro. 420 00:21:29,880 --> 00:21:33,300 Sed ni tuj peti la nombro de personoj en la ĉambro de la uzanto. 421 00:21:33,300 --> 00:21:36,171 Do tiu estas la ĝusta sama do-dum buklo kiun ni vidis antaŭe. 422 00:21:36,171 --> 00:21:37,920 Estas la ĝusta sama do-dum buklo ke vi 423 00:21:37,920 --> 00:21:40,050 povas esti implementando en la problemo aro. 424 00:21:40,050 --> 00:21:43,102 Do tiel longe kiel ili estas eniri n malpli ol 1, 425 00:21:43,102 --> 00:21:45,310 do tie estas alvenis al esti al Almenaŭ unu persono en la ĉambro. 426 00:21:45,310 --> 00:21:47,407 Tiel longe kiel ili estas eniri n malpli ol 1, 427 00:21:47,407 --> 00:21:48,990 tiam ni tuj teni demandanta denove. 428 00:21:48,990 --> 00:21:50,906 Bonvolu tajpi la numeron de homoj en la ĉambro. 429 00:21:50,906 --> 00:21:53,550 Nun, iam ni havos la nombron de personoj en la room-- 430 00:21:53,550 --> 00:21:58,020 do mi povus eniri ke Estas 200 personoj en ĉi tiu ĉambro. 431 00:21:58,020 --> 00:22:05,480 Tiam malsupren tie ni tuj venu kaj deklari tabelo de grandeco 200. 432 00:22:05,480 --> 00:22:10,220 Ni deklarante tabelo tio sufiĉe granda por teni 200 aĝoj. 433 00:22:10,220 --> 00:22:15,370 Malsuprenirantan, ĝi estas la por buklo ke vi estos get tre uzita. 434 00:22:15,370 --> 00:22:19,490 Do ripetanta super ĉi tabelo, asignanta al ĉiu loko 435 00:22:19,490 --> 00:22:23,020 en tiu tabelo entjero, kaj tiam finfine tie ni estas 436 00:22:23,020 --> 00:22:28,340 nur nun ekzemplon de ripetanta super tiu tabelo, ne atribui valorojn, 437 00:22:28,340 --> 00:22:30,150 sed aliri valoroj. 438 00:22:30,150 --> 00:22:33,810 >> Do ĉi tie ni vidas ke ni diradas, unu jaro, 439 00:22:33,810 --> 00:22:40,470 persono% i estos% i jaroj, kie la unua% i estas i plus 1. 440 00:22:40,470 --> 00:22:43,010 Do mi estas ĉi indekso variablo. 441 00:22:43,010 --> 00:22:49,420 Kaj la duan% i tuj estos la valoro stokita en la aĝoj tabelo plus 1. 442 00:22:49,420 --> 00:22:54,217 Do ĉi plus 1 estas nur ĉar ni estas saying-- ĉi plus 1, aĝoj i plus 1. 443 00:22:54,217 --> 00:22:57,050 Ĉi plus 1 estas nur ĉar ni estas dirante unu jaro la persono 444 00:22:57,050 --> 00:22:58,280 Estos ĉi malnova. 445 00:22:58,280 --> 00:23:01,080 >> Do kial estas tiu i plus 1? 446 00:23:01,080 --> 00:23:04,064 Kial ni havas plus 1 tie? 447 00:23:04,064 --> 00:23:04,564 Yeah. 448 00:23:04,564 --> 00:23:07,410 449 00:23:07,410 --> 00:23:07,930 Jes. 450 00:23:07,930 --> 00:23:10,510 Do memoru arrays estas nulo indeksita. 451 00:23:10,510 --> 00:23:14,840 Do se ni presi ĉi ekstere por iu ĵus legis la eligo, 452 00:23:14,840 --> 00:23:19,380 tiam probable volas vidi ion kiel persono unu, persono numero unu, 453 00:23:19,380 --> 00:23:21,160 estos 20 jara. 454 00:23:21,160 --> 00:23:23,570 Persono numero du estos 15 jaraĝa. 455 00:23:23,570 --> 00:23:27,420 Ili preferas ne vidi persono nombro nulo estas 15 jarojn aĝa. 456 00:23:27,420 --> 00:23:36,460 >> Do kompilanta ĉi kaj nur vidante kion ĝi aspektas like-- Krei iun spacon. 457 00:23:36,460 --> 00:23:43,560 Faru aĝoj kompilas. 458 00:23:43,560 --> 00:23:45,080 Running aĝoj. 459 00:23:45,080 --> 00:23:46,580 Ni vidas nombro de homoj en la ĉambro. 460 00:23:46,580 --> 00:23:48,850 Do mi diras ke estas tri personoj en la salono. 461 00:23:48,850 --> 00:23:54,000 Aĝo de persono numero unu, diru 15, 20, 25. 462 00:23:54,000 --> 00:23:59,680 Kaj nun mi diru unu jaro nun ili estos 16, 21, 26. 463 00:23:59,680 --> 00:24:02,900 Vidu ke tiu funkcias kun n kiu ne egalas al 3. 464 00:24:02,900 --> 00:24:07,940 Do se mi diras kelkaj personoj estas 5, oni, du, tri, du, unu, unu jaro 465 00:24:07,940 --> 00:24:11,170 ili estos du, tri, kvar, tri, du jarojn aĝa. 466 00:24:11,170 --> 00:24:16,500 Do mi povis nur kiel facile n esti 10,000. 467 00:24:16,500 --> 00:24:21,270 Nun mi sidas ĉi tie dum sufiĉe tempeto enirante aĝoj, sed tio funkcias. 468 00:24:21,270 --> 00:24:26,000 >> Do nun memore ie ni havas tabelo de grandeco 10.000, 469 00:24:26,000 --> 00:24:28,830 do finfine 40,000 bajtoj, ĉar estas 470 00:24:28,830 --> 00:24:31,222 kvar bitokoj por ĉiu el tiuj entjeroj. 471 00:24:31,222 --> 00:24:33,180 Do tie estas tabelo de grandeco 10.000 kie ni povas 472 00:24:33,180 --> 00:24:36,201 stoki la aĝoj de tiuj 10.000 personoj. 473 00:24:36,201 --> 00:24:36,700 Bone. 474 00:24:36,700 --> 00:24:40,070 Demandoj pri ajna el tio? 475 00:24:40,070 --> 00:24:41,892 Yeah. 476 00:24:41,892 --> 00:24:43,350 Kio se vi donis negativan nombron? 477 00:24:43,350 --> 00:24:44,870 Ni vidu kio okazas. 478 00:24:44,870 --> 00:24:49,320 Do en ĉi tiu aparta case-- nombro de homoj en la ĉambro, negativa. 479 00:24:49,320 --> 00:24:52,580 Malakceptis tion, ĉar tien ni hazarde 480 00:24:52,580 --> 00:24:57,180 esti pritraktanta la fakton ke se n estas malpli ol unu ni tuj demandos denove. 481 00:24:57,180 --> 00:25:01,780 Se vi provas deklari tabelo de negativa grandeco, 482 00:25:01,780 --> 00:25:03,950 ĝi ĝenerale ne funkcias. 483 00:25:03,950 --> 00:25:05,570 >> Do ni provu. 484 00:25:05,570 --> 00:25:08,000 Ni ignoru ajn valoron ili enigo por n 485 00:25:08,000 --> 00:25:10,571 kaj simple diru int aĝoj negativa. 486 00:25:10,571 --> 00:25:12,410 Ni vidu se ĝi eĉ kompilas. 487 00:25:12,410 --> 00:25:14,100 Mi ne certas. 488 00:25:14,100 --> 00:25:14,920 No. 489 00:25:14,920 --> 00:25:18,280 Do aĝoj estas deklarita kiel tabelo kun negativa grandeco. 490 00:25:18,280 --> 00:25:22,540 Do upfront rekonas tabelo ne povas esti de negativa grandeco kaj malakceptas ĝin. 491 00:25:22,540 --> 00:25:26,840 Nun, se ni ne pritraktis ĉi do-dum buklo ĝuste, 492 00:25:26,840 --> 00:25:28,810 se ni ne estis kontrolanta se n estas malpli ol 1-- 493 00:25:28,810 --> 00:25:32,690 diru ni ĵus ne havas tiun tute 494 00:25:32,690 --> 00:25:35,940 kaj anstataŭe ni nur kaptu entjero. 495 00:25:35,940 --> 00:25:40,710 Neniu gravi kion tiu entjero estas, ni deklaras tabelo de tiu grandeco. 496 00:25:40,710 --> 00:25:44,250 >> Do la tradukilo ne povas eble plendos nun. 497 00:25:44,250 --> 00:25:48,780 Se mi kompilos this-- do ĝi ne povas plendi, 498 00:25:48,780 --> 00:25:51,480 ĉar ĝi ne povas scii ke mi estas tuj eniros negativa nombro, 499 00:25:51,480 --> 00:25:52,550 kiu povus esti nevalidaj. 500 00:25:52,550 --> 00:25:54,633 Por ĉiuj ĝi scias, mi povus eniri pozitivan numeron, 501 00:25:54,633 --> 00:25:56,000 kiu estas perfekte valida. 502 00:25:56,000 --> 00:26:01,090 Do mi imagu se mi eniras negativa 1 homoj en la ĉambro, segmentación kulpo. 503 00:26:01,090 --> 00:26:06,040 >> Do, okej. 504 00:26:06,040 --> 00:26:13,160 Do ni aldonas ĉi reen ĵus teni ĝin kio ĝi origine estis. 505 00:26:13,160 --> 00:26:15,640 Do fari aĝoj. 506 00:26:15,640 --> 00:26:18,120 Sed se mi volas provi negativa age-- do ni 507 00:26:18,120 --> 00:26:19,710 diri estas kvin homoj en la ĉambro. 508 00:26:19,710 --> 00:26:23,180 Aĝo de persono numero unu estas negativa 4, persono tri 509 00:26:23,180 --> 00:26:26,500 estas nulo, persono three-- OK. 510 00:26:26,500 --> 00:26:29,850 Do jen, unu jaro, persono nombro unu estos negativa 3 jaroj. 511 00:26:29,850 --> 00:26:32,830 Do probable ne havas sencon. 512 00:26:32,830 --> 00:26:37,220 Sed tio estas nur ĉar rigardanta ĉe la kodon ĉiuj ni faras 513 00:26:37,220 --> 00:26:40,260 petas GetInt. 514 00:26:40,260 --> 00:26:44,110 >> Nun, se ni havis la GetPositiveInt funkcio 515 00:26:44,110 --> 00:26:49,690 aŭ ni ĵus simple faris tion ia sama dum buklo tie, 516 00:26:49,690 --> 00:26:52,340 tiam tiu laborus perfekte bone. 517 00:26:52,340 --> 00:26:54,200 Sed en tiu aparta kazo, ni nur ne 518 00:26:54,200 --> 00:26:57,772 hazarde estas manipuli negativaj valoroj. 519 00:26:57,772 --> 00:26:59,147 Aliajn demandojn pri tabeloj? 520 00:26:59,147 --> 00:27:02,290 521 00:27:02,290 --> 00:27:03,250 BONE. 522 00:27:03,250 --> 00:27:09,380 >> Do ni nun vidis tabeloj. 523 00:27:09,380 --> 00:27:12,500 Kaj ni tuj bezonas uzi ĉi por komand-linio argumentoj. 524 00:27:12,500 --> 00:27:14,680 Do en problemo aro two-- Mi scias multaj de vi 525 00:27:14,680 --> 00:27:18,040 povus ankoraŭ esti laborante en problemo aro unu, sed problemo starigis du estas venanta supre. 526 00:27:18,040 --> 00:27:22,260 En problemo aro du, vi tuj bezonas esti kontraktanta kun kordoj, tabeloj, 527 00:27:22,260 --> 00:27:23,950 kaj komand-linio argumentoj. 528 00:27:23,950 --> 00:27:26,270 >> Do kio estas komandlinio argumentoj? 529 00:27:26,270 --> 00:27:29,570 Nun, vi povas vidi malsupren tie iom teaser por precize kio estas 530 00:27:29,570 --> 00:27:30,950 tuj okazos. 531 00:27:30,950 --> 00:27:32,950 Ni vidas int main, inc argc, string argv krampoj. 532 00:27:32,950 --> 00:27:34,560 533 00:27:34,560 --> 00:27:38,130 Do unue ni provu interpreti kion tio provas diri. 534 00:27:38,130 --> 00:27:40,800 Nun, OK. 535 00:27:40,800 --> 00:27:44,637 >> Do ĉe la komandlinio vi devus esti alkutimiĝi al iuj de ĉi tiuj komandoj 536 00:27:44,637 --> 00:27:48,580 nun, kaj vi probable kuras kd en la terminalo antaŭ. 537 00:27:48,580 --> 00:27:52,100 Do se ni diras kd pset1, vi scias, ke tiu devus 538 00:27:52,100 --> 00:27:55,050 esti ŝanĝanta en la pset1 dosierujo. 539 00:27:55,050 --> 00:27:59,120 >> Nun rimarkas ke vi neniam skribita programon tiel antaŭe. 540 00:27:59,120 --> 00:28:03,120 Ĉiu programo kiun vi skribis, vi kurus, diri, dot oblikvo Mario, 541 00:28:03,120 --> 00:28:06,779 dot oblikvo avida, kaj tiam povus suflori vin por enigo. 542 00:28:06,779 --> 00:28:08,570 Nun, tio ne estas kion ŝanĝo dosierujo faras. 543 00:28:08,570 --> 00:28:12,770 Kiam vi kuri KD, ĝi ne diras tiam, kiun dosierujon vi volas kd en? 544 00:28:12,770 --> 00:28:17,200 Anstataŭe, vi nur diru, cd pset1, kaj ĝi nur iras en la pset1 dosierujo. 545 00:28:17,200 --> 00:28:20,430 >> Do simile ni havas aliajn ekzemplojn. 546 00:28:20,430 --> 00:28:21,540 fari saluton. 547 00:28:21,540 --> 00:28:25,760 Kiam vi kuri fari, ĝi ne diras tiam, kion programo vi ŝatus fari? 548 00:28:25,760 --> 00:28:29,620 Vi nur diru, je la komandlinio fari saluton. 549 00:28:29,620 --> 00:28:31,060 >> Move estas alia ekzemplo. 550 00:28:31,060 --> 00:28:34,840 Ĉi tiu kiun ni movas la mario.c dosieron supren unu dosierujo. 551 00:28:34,840 --> 00:28:38,060 Do nun ni scias kun ĉi ekzemplo ni vere pasanta du argumentojn. 552 00:28:38,060 --> 00:28:42,090 Ekzistas mario.c kiel la unua argumento, kaj dot dot estas la dua argumento. 553 00:28:42,090 --> 00:28:46,140 Kaj poste, kiam vi kuris fari, vi vidi ke vere longa komando line-- 554 00:28:46,140 --> 00:28:50,580 ke vere longa komando presita ĉe la komandlinio. 555 00:28:50,580 --> 00:28:53,590 Por ke longe command-- ĉi estas malmulta parto de ĝi, 556 00:28:53,590 --> 00:28:56,090 sed nun ni havas tri komand-linio argumentoj. 557 00:28:56,090 --> 00:28:59,750 Dot Dash nulo, saluton, kaj hello.c. 558 00:28:59,750 --> 00:29:03,497 >> Do tiuj estas komandlinion argumentoj, argumentoj 559 00:29:03,497 --> 00:29:05,580 ke vi preterpasis en la komandlinio por ke ĝi 560 00:29:05,580 --> 00:29:08,680 Ne devas esti invitata kiam vi kuras la programon. 561 00:29:08,680 --> 00:29:13,090 Estus frustrante se kiam vi kuris tin i diris, "OK, 562 00:29:13,090 --> 00:29:15,630 kiu program-- kiu dosieron vi kompili? 563 00:29:15,630 --> 00:29:17,010 Hello.c. 564 00:29:17,010 --> 00:29:19,440 Kio flagoj farus vin deziras eniri? haltostreko o. 565 00:29:19,440 --> 00:29:21,190 Kion vi volas la dosieron por nomi? 566 00:29:21,190 --> 00:29:21,690 saluton. 567 00:29:21,690 --> 00:29:25,290 Ne, vi nur kuri Clang interfrapigos o saluton hello.c. 568 00:29:25,290 --> 00:29:28,820 >> Do rigardante malantaŭen en ĉi tio. 569 00:29:28,820 --> 00:29:32,920 Nun argc-- argc estas la argumento grafoj. 570 00:29:32,920 --> 00:29:36,620 Ĝi estas la nombro de komandlinion argumentoj eniris ĉe la komandlinio. 571 00:29:36,620 --> 00:29:39,720 Nu, argv-- teknike la v staras por vektoro, 572 00:29:39,720 --> 00:29:41,460 kiu esence signifas tabelo. 573 00:29:41,460 --> 00:29:42,680 Sed vi povas ignori tion. 574 00:29:42,680 --> 00:29:47,540 Argv-- ni havas ĉenon argv, tiel kordoj argv krampoj. 575 00:29:47,540 --> 00:29:50,150 Do ĉi tio estas alia formo de krampoj vi ne vidis antaŭe. 576 00:29:50,150 --> 00:29:52,300 Do ni vidis krampo notacio kiam ni diris, 577 00:29:52,300 --> 00:29:53,970 kiel, kordoj s egalas Zamyla. 578 00:29:53,970 --> 00:29:56,910 s krampo 0 aliroj la karaktero Z. 579 00:29:56,910 --> 00:30:00,720 >> Ni ankaŭ vidis krampoj kiam Ni diris int aĝoj heligas 5. 580 00:30:00,720 --> 00:30:03,160 Kiu deklaris tabelo de amplekso 5. 581 00:30:03,160 --> 00:30:06,280 Do tie estas versio de la krampoj ni ne vidis antaŭe. 582 00:30:06,280 --> 00:30:09,630 Do tiu speco de ŝnuro argv ke estus tute familiara 583 00:30:09,630 --> 00:30:12,050 ke nur estus ŝnuro. 584 00:30:12,050 --> 00:30:14,520 Nun la krampoj indiki ke tiu estas tabelo. 585 00:30:14,520 --> 00:30:19,920 Do string argv krampoj rimedoj ke argv estas tabelo de kordoj. 586 00:30:19,920 --> 00:30:22,540 Nun teknike kordo estas tabelo de signoj. 587 00:30:22,540 --> 00:30:26,400 Do tiu estas nun tabelo de tabelo de signoj. 588 00:30:26,400 --> 00:30:31,490 Sed estas multe pli facile pensi tion kiel nur tabelo de kordoj. 589 00:30:31,490 --> 00:30:34,900 >> Do kial povus la krampoj estu malplena? 590 00:30:34,900 --> 00:30:38,170 Kiel, kial ni ne povas diri, krampo 5, krampo n? 591 00:30:38,170 --> 00:30:40,700 592 00:30:40,700 --> 00:30:41,200 Yeah. 593 00:30:41,200 --> 00:30:43,731 594 00:30:43,731 --> 00:30:44,230 Yeah. 595 00:30:44,230 --> 00:30:46,396 Ni ne scias kiom da enigoj estas iranta esti. 596 00:30:46,396 --> 00:30:53,560 Do se ni rigardas la tin ekzemple, ni diru tin haltostreko o saluton hello.c. 597 00:30:53,560 --> 00:30:56,710 En ĉi tiu aparta kazo, okazi esti tri komandlinion argumentoj. 598 00:30:56,710 --> 00:31:00,522 Kaj tial la brackets-- vidos en dua ne estus tri. 599 00:31:00,522 --> 00:31:01,730 Ĝi teknike estus kvar. 600 00:31:01,730 --> 00:31:04,030 Sed la krampoj, ni farus diru, estas tri. 601 00:31:04,030 --> 00:31:08,220 Sed nun se ni rigardis movado mario.c dot dot, la krampoj 602 00:31:08,220 --> 00:31:09,760 ni volus meti du en ili. 603 00:31:09,760 --> 00:31:12,884 >> Kaj ekzistas multe da ordonoj kiuj havas ŝanĝiĝeman numeron de komandlinio 604 00:31:12,884 --> 00:31:13,620 argumentoj. 605 00:31:13,620 --> 00:31:17,430 Do kio estas tiu versio de la krampo notacio indikas 606 00:31:17,430 --> 00:31:20,820 estas ke argv estas tabelo de kordoj. 607 00:31:20,820 --> 00:31:24,360 Sed ni ne scias kiom da kordoj estas en tiu tabelo. 608 00:31:24,360 --> 00:31:27,090 Kiel do ni tiam sciis kiel multaj kordoj estas en la tabelo? 609 00:31:27,090 --> 00:31:28,870 Jen la tuta punkto argc. 610 00:31:28,870 --> 00:31:32,300 argc diras ni kiom longe argv estas. 611 00:31:32,300 --> 00:31:36,500 >> Do la lasta afero teni en menso estas ke, teknike, 612 00:31:36,500 --> 00:31:40,820 la komando mem rakontas kiel unu de la komand-linio argumentoj. 613 00:31:40,820 --> 00:31:45,330 Do cd pset1, estas du komand-linio argumentoj. 614 00:31:45,330 --> 00:31:50,260 La programo en si mem, KD, kaj tiam la fakta argumento parton, pset1. 615 00:31:50,260 --> 00:31:54,490 Ajna programo kiu vi skribis tiel multe havis unu komandlinion argument-- skalara 616 00:31:54,490 --> 00:31:55,320 oblikvo Mario. 617 00:31:55,320 --> 00:31:57,350 Tio estas la sola komandlinion argumento. 618 00:31:57,350 --> 00:32:00,900 >> Do nun rigardas tin interfrapigos o saluton hello.c. 619 00:32:00,900 --> 00:32:01,905 Do kio estas 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 Do argc estas 4. 623 00:32:08,140 --> 00:32:12,140 Clang, tiel argv krampo 0 estas tin. 624 00:32:12,140 --> 00:32:15,630 argv krampo 1 estas haltostreko 0. 625 00:32:15,630 --> 00:32:21,870 argv krampo 2 estas saluton, kaj argv krampo 3 estas hello.c. 626 00:32:21,870 --> 00:32:26,813 OK, Do demandoj sur tio, kaj poste ni rigardu kelkajn programita ekzemploj. 627 00:32:26,813 --> 00:32:29,460 628 00:32:29,460 --> 00:32:30,480 >> BONE. 629 00:32:30,480 --> 00:32:36,260 Do ni rigardu hello3.c. 630 00:32:36,260 --> 00:32:41,890 Do tiu devus esti konata de unu el la unuaj c ekzemploj 631 00:32:41,890 --> 00:32:45,800 ni havis, kie ni volus nur diri, saluton mondo, sed nun tio estas pli ĝenerala. 632 00:32:45,800 --> 00:32:52,300 Do jen ni diras saluton % s backslash n argv krampo 1. 633 00:32:52,300 --> 00:32:57,440 Notice-- tiel gxis tiu punkto, tiu estas kion mia ŝablono dosiero aspektis. 634 00:32:57,440 --> 00:33:01,800 Mi havis int main (void), kaj poste mi volus fari ion en la ĉefa funkcio. 635 00:33:01,800 --> 00:33:05,100 Nun anstataŭe, iam ni komencu kontraktanta kun komand-linio argumentoj, 636 00:33:05,100 --> 00:33:07,890 ni devas deklari malsama formo de ĉefa. 637 00:33:07,890 --> 00:33:11,930 >> Do rigardante hello3 denove, la ĉefa tuj 638 00:33:11,930 --> 00:33:15,990 preni du argumentojn now-- int argc, la nombro de komandlinion argumentoj, 639 00:33:15,990 --> 00:33:20,970 kaj ŝnuro argv krampoj, la fakta kordoj eniris ĉe la komandlinio. 640 00:33:20,970 --> 00:33:26,560 Do mi tuj ŝanĝi tion ŝablono por reflekti tiun fakton. 641 00:33:26,560 --> 00:33:29,060 Nun kiam vi skribas programo, se vi ne faras 642 00:33:29,060 --> 00:33:33,720 bezonas preni ajnan komand-linio argumentoj, tiam simple uzi int main (void). 643 00:33:33,720 --> 00:33:37,070 Sed nun kiam vi skribas komandlinion argumento programoj, kiujn 644 00:33:37,070 --> 00:33:40,350 vi tuj faros por problemo fiksita two-- tiel nun ke vi uzas 645 00:33:40,350 --> 00:33:42,630 programoj kiuj bezonas preni komand-linio argumentoj, 646 00:33:42,630 --> 00:33:45,250 vi bezonas havi ĉefa de ĉi tiu formo. 647 00:33:45,250 --> 00:33:51,290 >> Do here-- tiu estas la granda uzado de la komandlinion argumento. 648 00:33:51,290 --> 00:33:54,100 Do presi argv 1. 649 00:33:54,100 --> 00:33:59,180 OK tiel ni kompilos kaj kuri ĉi programo. 650 00:33:59,180 --> 00:34:02,440 Faru hello3. 651 00:34:02,440 --> 00:34:03,570 Kompilas. 652 00:34:03,570 --> 00:34:06,870 Dot oblikvo hello3. 653 00:34:06,870 --> 00:34:08,920 Kaj ni diru, "Rob". 654 00:34:08,920 --> 00:34:10,760 Saluton Rob. 655 00:34:10,760 --> 00:34:14,940 Se mi diras: "Saluton Maria," Saluton Maria. 656 00:34:14,940 --> 00:34:15,719 Saluton Maria. 657 00:34:15,719 --> 00:34:18,639 Hannah ankoraŭ diras, "saluton Maria, "ĉar mi ne 658 00:34:18,639 --> 00:34:21,340 faranta ion kun niaj argv 2. 659 00:34:21,340 --> 00:34:22,590 Argv 2 nun estus "Hannah." 660 00:34:22,590 --> 00:34:25,030 Argc estus 3. 661 00:34:25,030 --> 00:34:27,735 Kio se mi faris ĉi tion? 662 00:34:27,735 --> 00:34:31,980 663 00:34:31,980 --> 00:34:34,679 Do saluton nula. 664 00:34:34,679 --> 00:34:38,760 >> Li nelonge tuŝis sur la fakto ke, teknike, GetString 665 00:34:38,760 --> 00:34:42,429 iri returne nula, sed ni ricevos multe pli en kion nula reale estas. 666 00:34:42,429 --> 00:34:47,449 Sed prenu gxin kiel demando pri fakto ke ne estas ĝenerale malbona. 667 00:34:47,449 --> 00:34:50,179 Ni faris ion malĝustan se ĝi estas presi "saluton nula." 668 00:34:50,179 --> 00:34:52,179 Kaj la kialo ni faris io malĝusta is-- bone, 669 00:34:52,179 --> 00:34:56,179 kiam mi kuris dot oblikvo hello3, argc estis 1. 670 00:34:56,179 --> 00:34:59,680 Do tio signifas la longo de argv estis 1. 671 00:34:59,680 --> 00:35:05,110 Se tabelo estas de longo 1, la sola valida indico estas nul. 672 00:35:05,110 --> 00:35:08,550 Kaj do jen argv 1 estas ekster la teritorio de tiu tabelo. 673 00:35:08,550 --> 00:35:13,410 Ĝi estis simila al antaŭ kiam mi provis stoki 6 ekster la fino de la tabelo. 674 00:35:13,410 --> 00:35:18,100 Do mi provas aliri ion eksteren de la argv grafoj, 675 00:35:18,100 --> 00:35:21,340 kaj ni estas duumaj nula. 676 00:35:21,340 --> 00:35:24,360 >> Do pli bona versio de tiu, plibonigo, 677 00:35:24,360 --> 00:35:27,010 eksplicite kontrolanta argc. 678 00:35:27,010 --> 00:35:33,580 Do se argc egalas 2, tio signifas ke ni kuris io kiel dot oblikvo hello3 Rob. 679 00:35:33,580 --> 00:35:36,840 Kaj ĝi presos "saluton Rob." 680 00:35:36,840 --> 00:35:39,850 Se argc ne egala 2, tiam ĝi estas ĝuste tuj 681 00:35:39,850 --> 00:35:42,560 ignori kion vi metas ĉe la komandlinion argumento 682 00:35:42,560 --> 00:35:43,960 kiel komando-linia argumentoj. 683 00:35:43,960 --> 00:35:47,168 Aŭ se vi ne metis neniun entute, ĝi estas simple tuj ignori ke kaj nur diru, 684 00:35:47,168 --> 00:35:47,960 "saluton al vi." 685 00:35:47,960 --> 00:35:51,490 >> Do kompili ĉi. 686 00:35:51,490 --> 00:35:54,500 Faru hello4. 687 00:35:54,500 --> 00:35:56,790 Kaj kurinte hello4. 688 00:35:56,790 --> 00:36:00,010 Running ĝin tiamaniere, kio devus esti presita? 689 00:36:00,010 --> 00:36:01,330 "Saluton al vi." 690 00:36:01,330 --> 00:36:02,810 Saluton vi. 691 00:36:02,810 --> 00:36:05,870 Kio pri hello4 Rob? 692 00:36:05,870 --> 00:36:06,950 "Saluton Rob." 693 00:36:06,950 --> 00:36:10,580 Kaj fine, saluton Rob Maria estas simple "saluton Vi" denove, 694 00:36:10,580 --> 00:36:13,677 ĉar vi ne eniras reale iu kiu ŝin atendis. 695 00:36:13,677 --> 00:36:15,510 Vi eniris pli nomoj ol ĝi povis manipuli, 696 00:36:15,510 --> 00:36:19,500 do ĝi ĵus defaulted al la saluton vi konduto. 697 00:36:19,500 --> 00:36:23,040 Do demandoj sur tio? 698 00:36:23,040 --> 00:36:26,290 Aŭ komandlinion argumentoj? 699 00:36:26,290 --> 00:36:28,690 >> Bone, do prenante rigardu Paro pli ekzemploj de uzado 700 00:36:28,690 --> 00:36:34,230 komandlinion arguments-- unua ni argv haltostreko 1 punkto c. 701 00:36:34,230 --> 00:36:38,510 Do la komentoj donaci kion tiu programo devus esti faranta. 702 00:36:38,510 --> 00:36:42,460 Sed rimarki now-- ĉi por ciklo, ĉi egalas la ĝusta skemo 703 00:36:42,460 --> 00:36:43,390 Mi estis diranta antaŭ. 704 00:36:43,390 --> 00:36:46,240 Ni nur hazarde estas uzante argc anstataŭ n. 705 00:36:46,240 --> 00:36:48,880 Nun argc estas vere la n. 706 00:36:48,880 --> 00:36:51,260 Ĝi estas la longo de la argv tabelo. 707 00:36:51,260 --> 00:36:59,600 Do estas ripetanta super la argv tabelo printf-ing ĉiu argv valoro. 708 00:36:59,600 --> 00:37:04,730 >> Do se mi faras tiun. 709 00:37:04,730 --> 00:37:08,232 Faru argv 1. 710 00:37:08,232 --> 00:37:09,940 Ĝi kompilas. 711 00:37:09,940 --> 00:37:11,620 Dot oblikvo argv 1. 712 00:37:11,620 --> 00:37:15,530 Nur kurante tio, presaĵoj dot oblikvo argv 1 713 00:37:15,530 --> 00:37:18,500 ĉar tio estis la sola komandlinion argument-- la programo nomo. 714 00:37:18,500 --> 00:37:22,080 Ĉiam estos ĉe least-- argc ne povas esti malpli ol unu, 715 00:37:22,080 --> 00:37:25,910 Ĉar ne ĉiam almenaŭ esti la programo nomo kuri. 716 00:37:25,910 --> 00:37:32,040 Do argv 1 Rob presos argv 1 kaj poste sur la nova linio "Rob". 717 00:37:32,040 --> 00:37:36,350 >> Do en la unua ripeto de tiu buklo, mi estas 0. 718 00:37:36,350 --> 00:37:39,090 Argv 0 estas la programo nomo. 719 00:37:39,090 --> 00:37:40,010 Dot oblikvo argv 1. 720 00:37:40,010 --> 00:37:43,770 Kaj tiam argv 1 estas mia unua komandlinion argumento, kiu estas Rob. 721 00:37:43,770 --> 00:37:45,920 Je tiu punkto, ni estas egalaj al argc. 722 00:37:45,920 --> 00:37:48,210 Ni rompi la buklo kaj ni faris. 723 00:37:48,210 --> 00:37:53,940 Do tio funkcios por ajna numeron de komand-linio argumentoj. 724 00:37:53,940 --> 00:37:58,550 Rimarku presas argv 0, argv 1, argv 2, argv 3, argv 4. 725 00:37:58,550 --> 00:38:00,150 Kaj ne ekzistas argv 5. 726 00:38:00,150 --> 00:38:01,460 argc estas egala al 5. 727 00:38:01,460 --> 00:38:06,960 Do ĉe argc-- ĉe i egalas 5, ni rompi la buklo. 728 00:38:06,960 --> 00:38:07,950 BONE. 729 00:38:07,950 --> 00:38:11,315 Do demandoj sur kiuj antaŭe ni rigardi pli kompleksa ekzemplo? 730 00:38:11,315 --> 00:38:14,190 731 00:38:14,190 --> 00:38:16,860 >> Do argv 2. 732 00:38:16,860 --> 00:38:17,830 Bone. 733 00:38:17,830 --> 00:38:20,610 Do ni ankoraŭ presado la komand-linio argumentoj. 734 00:38:20,610 --> 00:38:23,170 Sed nun rimarki ni havas a nestitaj por buklo. 735 00:38:23,170 --> 00:38:24,670 Do kio estas tiu faras? 736 00:38:24,670 --> 00:38:28,430 Do la unua buklo estas faranta ĝuste kio faris antaŭe. 737 00:38:28,430 --> 00:38:30,950 Ni ankoraŭ looping super ĉiu komandlinion argumenton, 738 00:38:30,950 --> 00:38:34,260 sed nun tiu dua loop-- ni havas ankaŭ vidis io kiel ĉi antaŭe. 739 00:38:34,260 --> 00:38:38,600 Kiam li estis ripetanta super Zamyla presi el Z-Al-M-Y-L-A. 740 00:38:38,600 --> 00:38:44,816 Do tiu dua ciklo por int j egalas 0, n egalas strlen de argv krampo i. 741 00:38:44,816 --> 00:38:49,170 >> Do ni unue pensi pri the-- ni trairu. 742 00:38:49,170 --> 00:38:53,560 Ni pensu kio la komputilo do se mi kuris tiu programo kiel ĵus dot 743 00:38:53,560 --> 00:38:56,030 oblikvo argv haltostreko 2. 744 00:38:56,030 --> 00:39:03,590 Do se mi kuris ĉi kodon, tiam argc tuj esti egala al 1. 745 00:39:03,590 --> 00:39:07,050 Kaj ŝnuro argv-- ekzistas nur tuj estos unu indekso en argv, 746 00:39:07,050 --> 00:39:12,370 kaj ke tuj esti egala al dot oblikvo argv 2-- la programo nomo. 747 00:39:12,370 --> 00:39:19,170 >> Bone, do nun mi egalas 0, i malpli ol 1, i plus alpago por int j egalas 0, 748 00:39:19,170 --> 00:39:23,880 n egalas strlen de argv krampo 0, tiel en la unua ripeto de ĉi buklo. argv 749 00:39:23,880 --> 00:39:27,250 krampo 0 estas dot oblikvo argv 2. 750 00:39:27,250 --> 00:39:29,320 Do kio estas la longo de tiu ĉeno? 751 00:39:29,320 --> 00:39:32,480 Nu, dot oblikvo A-R-G-V haltostreko 2. 752 00:39:32,480 --> 00:39:35,020 Do strlen de kiu estos 8. 753 00:39:35,020 --> 00:39:37,500 Do j egalas 0, n egalas 8. 754 00:39:37,500 --> 00:39:39,530 Tiel longe kiel j estas malpli ol 8, j ++. 755 00:39:39,530 --> 00:39:44,080 Kaj kun tio ni tuj esti presi ununuran karakteron, kiun 756 00:39:44,080 --> 00:39:47,350 estas argv krampo i heligas j. 757 00:39:47,350 --> 00:39:49,826 >> Do la sola i estas nulo. 758 00:39:49,826 --> 00:39:51,700 Ni ankoraŭ nur havas unu komandlinion argumento. 759 00:39:51,700 --> 00:39:53,890 En tiu unua ripeto de la por buklo, ni estas 760 00:39:53,890 --> 00:39:56,950 tuj estos printado argv krampo 0 krampo 0. 761 00:39:56,950 --> 00:39:58,325 Kaj tiam j estas tuj pliigo. 762 00:39:58,325 --> 00:40:01,650 Kaj ni tuj impreso argv krampo 0 krampo 1. 763 00:40:01,650 --> 00:40:04,150 Kaj tiam argv krampo 0 krampo 2. 764 00:40:04,150 --> 00:40:09,030 >> Do tiu estas nia unua renkonto de mult-dimensia tabeloj. 765 00:40:09,030 --> 00:40:12,770 Memoru frue ke mi diris ke argv estas teknike 766 00:40:12,770 --> 00:40:15,950 tabelo de tabeloj de signoj. 767 00:40:15,950 --> 00:40:24,360 Do jen, se mi diris ion kiel string s egalas argv krampo i, 768 00:40:24,360 --> 00:40:29,590 kaj tiam mi diris, s krampo j, tiu estus farante la saman aĵon. 769 00:40:29,590 --> 00:40:31,960 Nun, vi vidis s krampo j antaŭe. 770 00:40:31,960 --> 00:40:36,680 Tio simple aliri la j-a karaktero de tiu ĉeno. 771 00:40:36,680 --> 00:40:48,010 Do kun tio, ni estas akirantaj la j-a karaktero de la ia argv. 772 00:40:48,010 --> 00:40:51,450 >> Do kion devas ĉi tiu finfine eligo? 773 00:40:51,450 --> 00:40:53,210 Faru argv 2. 774 00:40:53,210 --> 00:40:54,730 Ĝi kompilas. 775 00:40:54,730 --> 00:40:56,340 Dot oblikvo argv 2. 776 00:40:56,340 --> 00:41:03,790 "Rabi Maria Hannah" kaj donu iu ĉambro. 777 00:41:03,790 --> 00:41:07,050 Do ni vidas ke ĉi tiu estas elirigi punkton sur ĝia propra linio kaj oblikvo 778 00:41:07,050 --> 00:41:08,920 sur ĝia propra linio kaj sur ĝia propra linio. 779 00:41:08,920 --> 00:41:11,260 Ĝi estas presi el ĉiu individua karaktero 780 00:41:11,260 --> 00:41:12,950 de ĉiu komandlinion argumento. 781 00:41:12,950 --> 00:41:15,960 Kaj tiam intere ilin, pro tiu nova linio 782 00:41:15,960 --> 00:41:19,380 ni videbligi ĉi tie, en inter ili ĝi devos presi novan linion. 783 00:41:19,380 --> 00:41:24,540 >> Do tio estas simila al la antaŭan argv haltostreko 1, 784 00:41:24,540 --> 00:41:26,459 kiu presas ĉiun komandlinion argumenton, 785 00:41:26,459 --> 00:41:28,500 sed nun ni videbligi la komand-linio argumentoj 786 00:41:28,500 --> 00:41:31,950 kaj tiam ripetanta tra ĉiu karaktero de ĉiu komandlinion argumento 787 00:41:31,950 --> 00:41:35,400 akiri tiun eligon. 788 00:41:35,400 --> 00:41:36,870 BONE? 789 00:41:36,870 --> 00:41:40,570 Do demandoj sur tio? 790 00:41:40,570 --> 00:41:45,130 >> Unu afero noti estas ke komandlinion arguments-- 791 00:41:45,130 --> 00:41:49,990 do ili estas apartigitaj per spacoj kiel Vi nature atendas ilin esti. 792 00:41:49,990 --> 00:41:53,050 Do kordo povas havi spacoj en ĝi. 793 00:41:53,050 --> 00:41:57,380 Ĝi ne estas super grava, sed se mi volis la tria komandlinion argumento 794 00:41:57,380 --> 00:42:01,226 havi spacon en gxi, tiam mi povus diri ion kiel tion. 795 00:42:01,226 --> 00:42:04,470 796 00:42:04,470 --> 00:42:05,550 BONE? 797 00:42:05,550 --> 00:42:12,190 Do tiu nun ankoraŭ nur havas tri komandlinion arguments-- bone 4. 798 00:42:12,190 --> 00:42:17,620 Dot oblikvo argv haltostreko 2, Rob, Maria, kaj Hannah Bloomberg. 799 00:42:17,620 --> 00:42:18,320 BONE. 800 00:42:18,320 --> 00:42:19,310 Demandoj sur tio? 801 00:42:19,310 --> 00:42:22,700 802 00:42:22,700 --> 00:42:24,894 >> Nenio speciala pri la spaceto. 803 00:42:24,894 --> 00:42:27,810 Ĝi nur hazarde estas, ke la komandlinion traktas la spaceto 804 00:42:27,810 --> 00:42:29,226 kiel kiel vi apartigi ĉiu argumento. 805 00:42:29,226 --> 00:42:32,048 806 00:42:32,048 --> 00:42:33,000 Bone. 807 00:42:33,000 --> 00:42:39,950 Tial Problemo aro two-- vi tuj estos 808 00:42:39,950 --> 00:42:43,240 rigardante sekretaj-ŝlosila ĉifriko. 809 00:42:43,240 --> 00:42:47,700 Do, simila al tiu ekzemplo ni vidis de A Christmas Story, 810 00:42:47,700 --> 00:42:52,840 vi tuj estos implementando iuj algoritmoj kiuj, donitaj mesaĝon, 811 00:42:52,840 --> 00:42:55,560 vi tuj povos ĉifri tiun mesaĝon 812 00:42:55,560 --> 00:42:58,730 ke nur iu kun tiu sekreta klavon, kun tiu decodificador ringo, 813 00:42:58,730 --> 00:43:01,090 devus povi malĉifri. 814 00:43:01,090 --> 00:43:04,839 >> Do kiu estas la norma eldono. 815 00:43:04,839 --> 00:43:07,130 Vi tuj estos implementando du malsamaj versioj. 816 00:43:07,130 --> 00:43:09,620 Se vi hazarde rigardu ĉe la hacker edition-- nun, 817 00:43:09,620 --> 00:43:12,600 ni tuj donu vi ĉenon kiel tiu, 818 00:43:12,600 --> 00:43:15,240 kiu reprezentas ĉifrita pasvorto. 819 00:43:15,240 --> 00:43:19,990 Do via celo estas elkompreni kion la deĉifrita pasvorto estas. 820 00:43:19,990 --> 00:43:26,950 Nun tiu estas vere kiel pasvortoj estas stokitaj en multaj komputiloj, 821 00:43:26,950 --> 00:43:31,290 kaj ĝi nur stokas tiun hazarda linio de signoj. 822 00:43:31,290 --> 00:43:34,440 Vi devas eltrovi kiel akiri de tiu hazarda ŝnuro de karakteroj 823 00:43:34,440 --> 00:43:36,140 al kio la originala pasvorton iris. 824 00:43:36,140 --> 00:43:39,060 825 00:43:39,060 --> 00:43:43,290 >> Kaj fine, post tiu problemo aro, vi devus 826 00:43:43,290 --> 00:43:46,100 povi kompreni kion tio signifas. 827 00:43:46,100 --> 00:43:51,650 Do vi lernos kiel malĉifri ĉi tia hazarda kordoj. 828 00:43:51,650 --> 00:43:56,390 Simile, se vi memoras de semajno 0, vi eble vidis ĉi tiu URL. 829 00:43:56,390 --> 00:44:00,210 Kaj vi devus povi malĉifri tiun eventuale. 830 00:44:00,210 --> 00:44:04,810 Vi ne povus esti feliĉa kiam vi malĉifri ĝin kaj klaku sur la ligilo. 831 00:44:04,810 --> 00:44:05,700 Bone. 832 00:44:05,700 --> 00:44:06,591 Estas tio hodiaŭ. 833 00:44:06,591 --> 00:44:12,095 Do revido venontsemajne! 834 00:44:12,095 --> 00:44:18,315 >> [ELECTRONIC MUSIC Ludante] 835 00:44:18,315 --> 00:47:15,619