1 00:00:00,000 --> 00:00:03,944 >> [REPRODUCCIÓ DE MÚSICA] 2 00:00:03,944 --> 00:00:10,732 3 00:00:10,732 --> 00:00:11,690 DAVID Malan: D'acord. 4 00:00:11,690 --> 00:00:14,674 Això és CS50, i això és el cap de setmana 2. 5 00:00:14,674 --> 00:00:16,840 Ho sento molt que no podia ser allà amb tots vostès avui, 6 00:00:16,840 --> 00:00:18,300 però vostè està en molt bones mans. 7 00:00:18,300 --> 00:00:21,710 Permeteu-me presentar- Pròpia Bowden Rob CS50. 8 00:00:21,710 --> 00:00:29,106 9 00:00:29,106 --> 00:00:31,730 ROB BOWDEN: I, per descomptat, a continuació, hem de burlar-se del fet 10 00:00:31,730 --> 00:00:36,820 que ell ens va enviar vertical vídeo i mostrar això. 11 00:00:36,820 --> 00:00:38,320 >> [REPRODUCCIÓ DE VÍDEO] 12 00:00:38,320 --> 00:00:39,820 >> [REPRODUCCIÓ DE MÚSICA] 13 00:00:39,820 --> 00:00:42,350 >> [PASSOS] 14 00:00:42,350 --> 00:00:44,730 >> -Aquest Vídeo no va fer cal mirar d'aquesta manera. 15 00:00:44,730 --> 00:00:46,570 Podria haver-se evitat. 16 00:00:46,570 --> 00:00:49,070 Digui no als vídeos verticals. 17 00:00:49,070 --> 00:00:53,310 >> Vídeos -vertical succeeixen quan sostenir la càmera pel camí equivocat. 18 00:00:53,310 --> 00:00:55,880 El vídeo acaba assemblant-se a una merda. 19 00:00:55,880 --> 00:00:57,650 >> - [RONC] 20 00:00:57,650 --> 00:01:02,240 >> -Hi Ha Més i més persones addictes per fer vídeos verticals cada dia. 21 00:01:02,240 --> 00:01:06,240 No és el crac o res, però tot i així és molt dolent. 22 00:01:06,240 --> 00:01:10,410 Hi ha dos tipus diferents de persones que pateixen de VVS. 23 00:01:10,410 --> 00:01:14,160 El primer grup tracta la vídeos disparen com imatges. 24 00:01:14,160 --> 00:01:15,850 Ells no signifiquen cap mal. 25 00:01:15,850 --> 00:01:19,180 Ells simplement no entenen que mentre que vostè pot donar volta a una imatge, 26 00:01:19,180 --> 00:01:20,880 realment no es pot convertir un vídeo. 27 00:01:20,880 --> 00:01:21,880 >> [CRASH] 28 00:01:21,880 --> 00:01:23,460 >> - [MONO SOUNDS] 29 00:01:23,460 --> 00:01:27,540 >> -El Un altre grup és la gent que no donen una [SENYAL]. 30 00:01:27,540 --> 00:01:31,090 >> Síndrome de vídeo -vertical és perillós. 31 00:01:31,090 --> 00:01:34,120 Les imatges en moviment tenen sempre ha estat horitzontal. 32 00:01:34,120 --> 00:01:35,990 Les televisions són horitzontals. 33 00:01:35,990 --> 00:01:38,380 Les pantalles d'ordinador són horitzontals. 34 00:01:38,380 --> 00:01:41,580 Ulls de la gent són horitzontals. 35 00:01:41,580 --> 00:01:45,170 No estem fets per veure vídeos verticals. 36 00:01:45,170 --> 00:01:47,600 >> -Em Encanta vídeos verticals. 37 00:01:47,600 --> 00:01:50,410 >> -Ningú Es preocupa per tu. 38 00:01:50,410 --> 00:01:53,340 >> -Si D'aquest problema no es controla, vostè també 39 00:01:53,340 --> 00:01:57,650 començarà mostrant quatre vídeos alhora només per estalviar ample de banda. 40 00:01:57,650 --> 00:02:02,400 >> Vídeos verticals -Letterboxed faria ser de la mida d'un segell de correus. 41 00:02:02,400 --> 00:02:04,920 >> -I S'estendrà per tot arreu. 42 00:02:04,920 --> 00:02:07,670 Pantalles de cinema tenen sempre ha estat horitzontal. 43 00:02:07,670 --> 00:02:11,200 Si vídeos verticals esdevenen , Cinemes acceptades 44 00:02:11,200 --> 00:02:13,930 haurà de ser alt i flac. 45 00:02:13,930 --> 00:02:17,710 >> -I Tots els cinemes faria ha d'aconseguir demolit i reconstruït. 46 00:02:17,710 --> 00:02:22,090 I en el moment en què van ser reconstruïts, Mila Kunis seria vella i lletja. 47 00:02:22,090 --> 00:02:24,342 >> -aus S'estavellarà contra ells i morir. 48 00:02:24,342 --> 00:02:26,530 >> Ll del `tot s'endureixen colls d'mirant cap amunt. 49 00:02:26,530 --> 00:02:29,800 >> -I Ningú va a seure a la primera fila mai més. 50 00:02:29,800 --> 00:02:37,170 >> -George Lucas tornarà a l'alliberament de l'estrella Guerres nou-- l'edició flac. 51 00:02:37,170 --> 00:02:41,860 >> -Jo Mai va ser realment capaç de dir la història que volia explicar. 52 00:02:41,860 --> 00:02:46,030 Aquesta va ser una gran oportunitat per a mi experimentar amb una nova tecnologia. 53 00:02:46,030 --> 00:02:48,150 >> -Ets Un idiota. 54 00:02:48,150 --> 00:02:54,430 >> -Cada Vegada que un dispositiu mòbil s'utilitza per gravació de vídeo, la temptació hi és. 55 00:02:54,430 --> 00:02:56,370 Només dir que no. 56 00:02:56,370 --> 00:03:00,116 Digues no a George Lucas. 57 00:03:00,116 --> 00:03:04,062 Digues no a la vella Mila Kunis. 58 00:03:04,062 --> 00:03:06,600 Digui no als vídeos verticals. 59 00:03:06,600 --> 00:03:12,511 >> -I Si veus algú fent, diguem-ne, "no s'està disparant aquesta fictícia dret!" 60 00:03:12,511 --> 00:03:15,433 >> [REPRODUCCIÓ DE MÚSICA] 61 00:03:15,433 --> 00:03:18,842 62 00:03:18,842 --> 00:03:19,830 >> [FI DE REPRODUCCIÓ] 63 00:03:19,830 --> 00:03:23,702 >> [Aplaudiments] 64 00:03:23,702 --> 00:03:27,598 >> [AUDIO] 65 00:03:27,598 --> 00:03:44,041 66 00:03:44,041 --> 00:03:45,790 ROB BOWDEN: --simple forma de criptografia, 67 00:03:45,790 --> 00:03:49,500 que és bàsicament el xifrat i desxifrat de missatges secrets. 68 00:03:49,500 --> 00:03:52,590 Així que aquí tenim una molt simple joguina. 69 00:03:52,590 --> 00:03:56,900 I la idea és l'anell exterior gira al voltant de l'anell interior. 70 00:03:56,900 --> 00:04:01,610 I es pot veure, potser si el zoom en, que-- és difícil de veure. 71 00:04:01,610 --> 00:04:05,090 Però, igual que, el nombre 1-- així, que es movia. 72 00:04:05,090 --> 00:04:09,120 >> El número 1 s'assigna a la lletra X, número 2 mapes a la carta 73 00:04:09,120 --> 00:04:11,630 J. increïblement difícil no saltar cap endavant. 74 00:04:11,630 --> 00:04:16,100 Carta 2 s'assigna a J. Número 3 s'assigna a D. Per tant 75 00:04:16,100 --> 00:04:20,140 amb aquest anell es pot donar algú un missatge d'1, 2, 3. 76 00:04:20,140 --> 00:04:22,624 Per alguna raó vostè vull dir-los XJD. 77 00:04:22,624 --> 00:04:24,540 Però vostè pot donar-los algun missatge de nombres, 78 00:04:24,540 --> 00:04:28,460 i sempre que que tenen aquest anell, que pot desxifrar el que estàs tractant de dir. 79 00:04:28,460 --> 00:04:32,510 >> Així que vostè pot haver vist aquest exemple particular de la criptografia 80 00:04:32,510 --> 00:04:36,640 abans si la volta de la temporada de Nadal has vist una història de Nadal. 81 00:04:36,640 --> 00:04:38,520 Si mai has vist abans, a continuació, només 82 00:04:38,520 --> 00:04:41,060 encengui TBS a, literalment, qualsevol moment el dia de Nadal, 83 00:04:41,060 --> 00:04:44,510 perquè simplement ho mostren esquena amb esquena amb esquena amb esquena amb esquena tot el dia. 84 00:04:44,510 --> 00:04:46,744 I el vídeo rellevant és la següent. 85 00:04:46,744 --> 00:04:47,410 [REPRODUCCIÓ DE VÍDEO] 86 00:04:47,410 --> 00:04:50,020 -sigui Coneix a tothom que Ralph Parker és present 87 00:04:50,020 --> 00:04:52,850 nomenat membre de la Petita Orphan Annie cercle secret 88 00:04:52,850 --> 00:04:56,490 i té dret a tots els honors i els beneficis que ocorren al mateix. 89 00:04:56,490 --> 00:04:59,010 Signat petita òrfena Annie. 90 00:04:59,010 --> 00:05:03,120 Ratificat Pierre Andre en tinta! 91 00:05:03,120 --> 00:05:07,460 Honors i beneficis Ja a l'edat de nou! 92 00:05:07,460 --> 00:05:12,530 >> [CRIDA DE RÀDIO] 93 00:05:12,530 --> 00:05:13,030 -Vine. 94 00:05:13,030 --> 00:05:14,000 Seguirem endavant amb ella. 95 00:05:14,000 --> 00:05:18,274 No necessito tot aquest jazz sobre contrabandistes i pirates. 96 00:05:18,274 --> 00:05:20,440 -Escolta Demà a la nit amb l'aventura de conclusió 97 00:05:20,440 --> 00:05:22,540 del Negre del vaixell pirata. 98 00:05:22,540 --> 00:05:25,460 Ara, és el moment per Missatge secret d'Annie 99 00:05:25,460 --> 00:05:28,620 per a vostès membres del Cercle Secret. 100 00:05:28,620 --> 00:05:32,370 Recordeu que els nens, els únics membres d'Annie cercle secret 101 00:05:32,370 --> 00:05:34,880 pot descodificar missatge secret d'Annie. 102 00:05:34,880 --> 00:05:39,100 Recordeu, Annie depèn de tu. 103 00:05:39,100 --> 00:05:41,660 Definiu les seves passadors a B2. 104 00:05:41,660 --> 00:05:43,960 Aquí està el missatge. 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 -Estic En la meva primera reunió secreta. 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 està en gran nit de veu. 115 00:05:54,570 --> 00:05:57,490 Em vaig adonar que aquesta nit missatge era realment important. 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 Aquest és un missatge d'Annie si mateixa. 119 00:06:01,580 --> 00:06:02,880 Recordeu, no l'hi diguis a ningú. 120 00:06:02,880 --> 00:06:07,840 121 00:06:07,840 --> 00:06:11,130 >> -Cinc Segons més tard, estic en l'únic habitació de la casa on un nen de nou anys 122 00:06:11,130 --> 00:06:15,830 podia seure a la intimitat i la descodificació. 123 00:06:15,830 --> 00:06:16,620 Vés per on! 124 00:06:16,620 --> 00:06:17,340 B! 125 00:06:17,340 --> 00:06:20,210 Vaig anar a la següent. 126 00:06:20,210 --> 00:06:23,300 E. La primera paraula és "ser". 127 00:06:23,300 --> 00:06:25,880 S. Venia més fàcil ara. 128 00:06:25,880 --> 00:06:28,400 U. 25. 129 00:06:28,400 --> 00:06:30,528 Això és R. 130 00:06:30,528 --> 00:06:31,278 -Anem, Ralphie! 131 00:06:31,278 --> 00:06:31,861 He d'anar! 132 00:06:31,861 --> 00:06:33,182 -Vaig A estar ben baix, Ma! 133 00:06:33,182 --> 00:06:36,038 Whiz Gee. 134 00:06:36,038 --> 00:06:42,840 T. O. "Assegureu-vos de" - assegureu-vos que? 135 00:06:42,840 --> 00:06:44,770 Quina va ser la huerfanita Annie tractant de dir? 136 00:06:44,770 --> 00:06:46,381 Assegureu-vos que? 137 00:06:46,381 --> 00:06:47,825 >> -Randy Ha d'anar! 138 00:06:47,825 --> 00:06:48,866 Si us plau, sortir? 139 00:06:48,866 --> 00:06:49,783 >> Dret -Tots, mama! 140 00:06:49,783 --> 00:06:51,786 Estaré fos cert! 141 00:06:51,786 --> 00:06:53,606 Jo estava més a prop ara. 142 00:06:53,606 --> 00:06:55,550 La tensió era terrible. 143 00:06:55,550 --> 00:06:57,050 Què va ser? 144 00:06:57,050 --> 00:06:59,905 El destí del planeta pot penjar d'un fil! 145 00:06:59,905 --> 00:07:01,736 >> -Ralphie, Randy ha d'anar! 146 00:07:01,736 --> 00:07:05,680 >> -Vaig A estar ben a terme, per l'amor de Déu! 147 00:07:05,680 --> 00:07:07,170 Casi allà! 148 00:07:07,170 --> 00:07:08,150 Els meus dits volaven. 149 00:07:08,150 --> 00:07:09,980 La meva ment era un parany d'acer. 150 00:07:09,980 --> 00:07:11,496 Cada porus vibrar. 151 00:07:11,496 --> 00:07:13,268 Era gairebé clar! 152 00:07:13,268 --> 00:07:13,767 Sí. 153 00:07:13,767 --> 00:07:14,609 Sí. 154 00:07:14,609 --> 00:07:15,108 Sí. 155 00:07:15,108 --> 00:07:16,449 Sí. 156 00:07:16,449 --> 00:07:20,240 Assegureu-vos de beure la seva 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 Un comercial de mala mort? 160 00:07:27,520 --> 00:07:32,040 161 00:07:32,040 --> 00:07:34,920 Fill de puta. 162 00:07:34,920 --> 00:07:35,890 >> [FI DE REPRODUCCIÓ] 163 00:07:35,890 --> 00:07:39,650 >> ROB BOWDEN: Així que és com Ovaltine refereix a la criptografia. 164 00:07:39,650 --> 00:07:42,290 Bàsicament CS50 simplement anuncien Ovaltine, pel que vam poder 165 00:07:42,290 --> 00:07:44,400 ser un comercial de mala mort per Ovaltine. 166 00:07:44,400 --> 00:07:44,900 Tot bé. 167 00:07:44,900 --> 00:07:47,120 Així que ara la ciència actual equip. 168 00:07:47,120 --> 00:07:50,670 Recordeu que dilluns el deixem busseig profund en cordes. 169 00:07:50,670 --> 00:07:52,820 Així que estàvem tractant amb la cadena "Zamyla." 170 00:07:52,820 --> 00:07:55,130 I estàvem reconeixent el fet que podem tractar 171 00:07:55,130 --> 00:07:57,510 "Zamyla" com una seqüència de caràcters. 172 00:07:57,510 --> 00:07:59,740 I recordem que hem après la notació suport. 173 00:07:59,740 --> 00:08:01,995 Així que si això es van emmagatzemar en una cadena "s", després 174 00:08:01,995 --> 00:08:05,860 si diguéssim s suport de 0, que ho faria indicar la Z. lletra majúscula 175 00:08:05,860 --> 00:08:09,790 I si diguéssim s suport 1, que indicaria la primera minúscula, 176 00:08:09,790 --> 00:08:14,220 i així successivament fins s brida 5, el que indicaria l'última a. 177 00:08:14,220 --> 00:08:17,090 >> Ara recordeu que el longitud d'aquesta cadena és 6, 178 00:08:17,090 --> 00:08:23,220 però els índexs en la cadena són 0 a 5, Z a través d'aquest durar. 179 00:08:23,220 --> 00:08:28,650 Així que això ara s'inscriu en un panorama més ampli de la memòria del seu ordinador, la seva memòria RAM. 180 00:08:28,650 --> 00:08:32,020 Per tant el programa que alguna part vostè està funcionant el seu ordinador 181 00:08:32,020 --> 00:08:34,780 cal recordar Zamyla en algun lloc de la memòria. 182 00:08:34,780 --> 00:08:36,029 Així que puc tenir un voluntari? 183 00:08:36,029 --> 00:08:38,840 184 00:08:38,840 --> 00:08:40,181 Si, siusplau. 185 00:08:40,181 --> 00:08:50,120 186 00:08:50,120 --> 00:08:51,500 ¿I quin és el seu nom? 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 Encantat de conèixer-te, Dean. 190 00:08:54,910 --> 00:08:58,240 Així que veuen aquí, i anem a haver de dibuixar 191 00:08:58,240 --> 00:09:00,740 en el nostre bonic disseny enginyós de la memòria. 192 00:09:00,740 --> 00:09:05,950 Ara m'agrada pensar en la memòria com una tira llarga de bytes, 193 00:09:05,950 --> 00:09:11,090 però només amb fins d'exhibició anem simplement d'esquerra a dreta, de dalt a baix. 194 00:09:11,090 --> 00:09:11,590 D'ACORD? 195 00:09:11,590 --> 00:09:22,030 >> Així que vaig a mostrar una program-- Getstrings.c. 196 00:09:22,030 --> 00:09:25,760 I pel que tot aquest programa és fent és demanar quatre cordes 197 00:09:25,760 --> 00:09:28,830 per part de l'usuari amb GetString d'impressió i després 198 00:09:28,830 --> 00:09:30,950 el que primer va entrar en cadena era. 199 00:09:30,950 --> 00:09:32,840 Estem fent cas omís del dos al quatre. 200 00:09:32,840 --> 00:09:33,610 D'ACORD. 201 00:09:33,610 --> 00:09:38,210 Així que aquí ara-- quan Jo primer s1 petició. 202 00:09:38,210 --> 00:09:39,740 Així que vostè és l'ordinador. 203 00:09:39,740 --> 00:09:41,680 I va a implementar GetString. 204 00:09:41,680 --> 00:09:46,710 Així que vostè sol · licita una cadena de mi, i jo dic, està bé, Dean. 205 00:09:46,710 --> 00:09:47,900 Donar la cadena "Dean". 206 00:09:47,900 --> 00:09:50,300 >> Així en algun lloc de memòria que recordar "Dean". 207 00:09:50,300 --> 00:09:52,160 Així que escriure en la memòria algun lloc. 208 00:09:52,160 --> 00:09:58,270 209 00:09:58,270 --> 00:09:59,210 Perfecte. 210 00:09:59,210 --> 00:09:59,880 D'ACORD. 211 00:09:59,880 --> 00:10:01,740 Així que ara que hem S2. 212 00:10:01,740 --> 00:10:03,869 I s2 serà una petició a GetString. 213 00:10:03,869 --> 00:10:05,160 Així que vaig a entrar en una cadena. 214 00:10:05,160 --> 00:10:08,720 Vaig a entrar a "Hannah". 215 00:10:08,720 --> 00:10:10,586 Així, entre "Hannah" en algun lloc a la memòria. 216 00:10:10,586 --> 00:10:18,860 217 00:10:18,860 --> 00:10:19,360 Sí. 218 00:10:19,360 --> 00:10:23,000 A-H. 219 00:10:23,000 --> 00:10:25,550 >> OK, així que ara s3. 220 00:10:25,550 --> 00:10:28,380 I serà un altre sol·licitar a GetString. 221 00:10:28,380 --> 00:10:37,020 I el que ara escriviu "Maria". 222 00:10:37,020 --> 00:10:37,520 Tot bé. 223 00:10:37,520 --> 00:10:40,980 I després hi ha una última sol·licitud a GetString, s4. 224 00:10:40,980 --> 00:10:42,580 Així que, jo no ho sé. 225 00:10:42,580 --> 00:10:45,640 Què tal anem amb antidisestablishmentarianism. 226 00:10:45,640 --> 00:10:49,460 Així que entrar en aquesta en la memòria. 227 00:10:49,460 --> 00:10:50,400 Sí. 228 00:10:50,400 --> 00:10:53,970 Així que fer "Rob". 229 00:10:53,970 --> 00:10:54,560 >> D'ACORD. 230 00:10:54,560 --> 00:10:58,410 Així que ara explain-- per què deixa aquests espais? 231 00:10:58,410 --> 00:11:01,340 Per què té això en blanc espai aquí, aquí, i aquí dalt? 232 00:11:01,340 --> 00:11:05,170 233 00:11:05,170 --> 00:11:05,670 Sí. 234 00:11:05,670 --> 00:11:09,450 Així notar quan vaig imprimir s1-- així que si ens 235 00:11:09,450 --> 00:11:11,890 tenia en marxa "Hannah" just al costat de "Dean" 236 00:11:11,890 --> 00:11:14,360 Com sabem quan la cadena "Dean" acaba? 237 00:11:14,360 --> 00:11:19,470 Així que la impressió de la cadena s1 pot tenir acaba d'imprimir "DeanHannahMariaRob" 238 00:11:19,470 --> 00:11:22,720 si no té cap pista quan "Dean" en realitat acaba. 239 00:11:22,720 --> 00:11:23,240 >> Tot bé. 240 00:11:23,240 --> 00:11:27,650 Així que en la memòria la forma en què realment representar aquest final d'una cadena 241 00:11:27,650 --> 00:11:29,940 és amb barra invertida zero. 242 00:11:29,940 --> 00:11:32,620 Així que aquest espai és exactament el que volíem. 243 00:11:32,620 --> 00:11:34,040 Ha de ser una barra invertida zero. 244 00:11:34,040 --> 00:11:37,690 Aquesta serà una barra invertida zero, i això serà una barra invertida zero. 245 00:11:37,690 --> 00:11:41,585 I vostè pot tenir un fabulós premi per ser un voluntari perfecte. 246 00:11:41,585 --> 00:11:44,910 247 00:11:44,910 --> 00:11:45,860 Prengui una bola de la tensió! 248 00:11:45,860 --> 00:11:49,040 249 00:11:49,040 --> 00:11:49,700 >> D'ACORD. 250 00:11:49,700 --> 00:11:54,420 Així que aquesta barra invertida caràcter zero és com indicar el final d'una cadena. 251 00:11:54,420 --> 00:11:57,120 És la forma en què un programa determinat vol imprimir una cadena, 252 00:11:57,120 --> 00:11:59,760 és com-- recordem que vam aprendre la funció strlen la setmana passada? 253 00:11:59,760 --> 00:12:00,940 Longitud de la cadena? 254 00:12:00,940 --> 00:12:03,770 És la forma de longitud de la cadena és capaç de determinar quant de temps una cadena és. 255 00:12:03,770 --> 00:12:05,810 Simplement segueix iterant sobre els caràcters 256 00:12:05,810 --> 00:12:08,217 fins que troba el barra invertida caràcter zero. 257 00:12:08,217 --> 00:12:11,050 Així que l'important adonar- sobre el caràcter de barra invertida zero 258 00:12:11,050 --> 00:12:14,950 S'està representat per tots els zeros en els bits. 259 00:12:14,950 --> 00:12:18,980 Així adonar que això és diferent del caràcter zero. 260 00:12:18,980 --> 00:12:23,010 Així que el caràcter zero, si vostè recorda en l'exemple que ha donat al final 261 00:12:23,010 --> 00:12:27,360 de la conferència on els personatges mapa A-- com mapes Capital a 65. 262 00:12:27,360 --> 00:12:29,130 Minúscula mapes a 97. 263 00:12:29,130 --> 00:12:30,890 B minúscula seria 98. 264 00:12:30,890 --> 00:12:35,220 Així que el nombre 0 mapes A-- no ho faig saber de la part superior del meu cap. 265 00:12:35,220 --> 00:12:36,400 44 o 45. 266 00:12:36,400 --> 00:12:37,890 En algun lloc en aquesta regió. 267 00:12:37,890 --> 00:12:40,850 >> Així que el caràcter 0 és un nombre real. 268 00:12:40,850 --> 00:12:44,350 Però zero barra invertida mapes a tots els bits zero. 269 00:12:44,350 --> 00:12:46,380 Així que hi ha una distinció entre barra invertida zero, 270 00:12:46,380 --> 00:12:48,450 que anomenarem el terminador nul. 271 00:12:48,450 --> 00:12:53,210 Hi ha una distinció entre barra invertida zero i el caràcter zero. 272 00:12:53,210 --> 00:12:54,350 >> Tot bé. 273 00:12:54,350 --> 00:12:57,520 Així que parlar una mica més sobre les cordes. 274 00:12:57,520 --> 00:13:01,470 Així que veiem aquí és així com seria distribuïda en la memòria. 275 00:13:01,470 --> 00:13:07,940 Així que aquesta idea de cadenes com una seqüència de characters-- pel que l'equip oficial 276 00:13:07,940 --> 00:13:10,750 sciency termini per a la seqüència és una matriu. 277 00:13:10,750 --> 00:13:13,790 Així que podríem anomenar una cadena una sèrie de caràcters. 278 00:13:13,790 --> 00:13:17,770 I en realitat hi ha altres dades tipus que podem fer arranjaments de. 279 00:13:17,770 --> 00:13:19,975 >> Així que per motivar això, mira un exemple. 280 00:13:19,975 --> 00:13:22,810 281 00:13:22,810 --> 00:13:29,812 L'anomenarem ages0.c vaig copiar i enganxar la nostra plantilla. 282 00:13:29,812 --> 00:13:32,470 283 00:13:32,470 --> 00:13:33,410 D'ACORD. 284 00:13:33,410 --> 00:13:39,378 Així que en aquest programa el que voler fer és agafar l'edat 285 00:13:39,378 --> 00:13:45,160 de tres estudiants en el curs. 286 00:13:45,160 --> 00:13:49,240 Així sabem que el int age-- i ara vaig a dir 0. 287 00:13:49,240 --> 00:13:53,140 Així que és possible que vulgueu dir edad1, però a efectes que veurem en breu, 288 00:13:53,140 --> 00:13:57,187 Vaig a dir int age0 equival getInt. 289 00:13:57,187 --> 00:13:59,270 Així que la mateixa crida a getInt que hem estat utilitzant jo 290 00:13:59,270 --> 00:14:01,561 no passar a ser incitant dient: "dóna'm l'edat." 291 00:14:01,561 --> 00:14:03,120 Però just sol·liciti. 292 00:14:03,120 --> 00:14:06,510 >> I edad1 equival getInt. 293 00:14:06,510 --> 00:14:09,600 I int edat2 equival getInt. 294 00:14:09,600 --> 00:14:14,070 Així que, de nou, tres estudiants, però en última instància, els índexs variables 295 00:14:14,070 --> 00:14:16,890 són age0 través edat2. 296 00:14:16,890 --> 00:14:17,550 D'ACORD. 297 00:14:17,550 --> 00:14:23,960 Així que aquest programa va a fer el que sigui que volem amb age0, edad1 i edat2, 298 00:14:23,960 --> 00:14:27,670 però aquest programa en última instància funciona per tres estudiants. 299 00:14:27,670 --> 00:14:28,380 >> D'ACORD. 300 00:14:28,380 --> 00:14:32,110 Així que ara el que si vull quatre estudiants? 301 00:14:32,110 --> 00:14:36,000 Bé, vaig a haver de tornar en el meu codi, canviar el comentari, 302 00:14:36,000 --> 00:14:39,840 i ara tenim un int edad3 equival getInt. 303 00:14:39,840 --> 00:14:40,610 D'ACORD. 304 00:14:40,610 --> 00:14:43,660 Així que veu el problema aquí? 305 00:14:43,660 --> 00:14:47,310 Quin és el problema amb aquest tipus de configuració? 306 00:14:47,310 --> 00:14:47,810 Sí. 307 00:14:47,810 --> 00:14:53,110 308 00:14:53,110 --> 00:14:53,610 Sí. 309 00:14:53,610 --> 00:14:56,360 Així que estem creant un variable per a cada estudiant. 310 00:14:56,360 --> 00:15:00,140 Ara que funciona, però en última instància, què passa si ara 311 00:15:00,140 --> 00:15:06,500 dic: "Vull prendre l'edat de vuit estudiants o 16 estudiants 312 00:15:06,500 --> 00:15:11,340 o els però molts estudiants de els centenars d'estudiants en CS50 313 00:15:11,340 --> 00:15:16,750 o els milers d'estudiants al campus o els milers de milions de persones al món? 314 00:15:16,750 --> 00:15:19,130 Així que en última instància, això no és sostenible. 315 00:15:19,130 --> 00:15:21,990 Cada vegada que es veu a si mateix copiant i enganxar el codi d'aquest tipus, 316 00:15:21,990 --> 00:15:25,050 en general, ha de sentir que hi ha una millor manera. 317 00:15:25,050 --> 00:15:31,290 >> Així que aquí és on introduïm una declaració de matriu. 318 00:15:31,290 --> 00:15:34,564 Així que quan es declara una matriu, això és el que el format general 319 00:15:34,564 --> 00:15:35,480 va ser similar. 320 00:15:35,480 --> 00:15:36,664 Anem a dir que el tipus. 321 00:15:36,664 --> 00:15:38,830 i després anem a donar el nom d'aquesta matriu, 322 00:15:38,830 --> 00:15:41,150 tal com el definim cap variable donada. 323 00:15:41,150 --> 00:15:43,980 I, finalment, estem utilitzant aquesta notació suport de nou 324 00:15:43,980 --> 00:15:47,480 però en un context diferent de com estàvem usant abans. 325 00:15:47,480 --> 00:15:51,860 >> Així que aquí això sembla normal declaració de variables que hem vist. 326 00:15:51,860 --> 00:15:54,890 Així que hem vist int x punt i coma abans. 327 00:15:54,890 --> 00:16:00,020 Bé, ara podríem veure alguna cosa com int x suports maig. 328 00:16:00,020 --> 00:16:04,020 I posar aquesta idea en la Programa getInt que tener-- 329 00:16:04,020 --> 00:16:08,850 pel que podem posar en pràctica això de la mateixa manera. 330 00:16:08,850 --> 00:16:13,630 >> Diguem que en CS tendim a utilitzar n com el nombre d'alguna cosa. 331 00:16:13,630 --> 00:16:16,150 Així que aquí anem a emmagatzemar quatre estudiants. 332 00:16:16,150 --> 00:16:25,960 I ara podem dir int edat suport no N- prou aconseguir-yet-- 333 00:16:25,960 --> 00:16:32,210 per declarar una matriu de quatre estudiants. 334 00:16:32,210 --> 00:16:38,050 Llavors, com això es veurà en memòria serà similar a aquest. 335 00:16:38,050 --> 00:16:39,570 Desactiveu aquesta. 336 00:16:39,570 --> 00:16:46,606 I tindrem un lloc en memory-- posaré aquesta allà dalt. 337 00:16:46,606 --> 00:16:52,690 338 00:16:52,690 --> 00:16:53,808 >> Així en algun lloc de la memòria. 339 00:16:53,808 --> 00:16:58,760 340 00:16:58,760 --> 00:16:59,727 Un dos tres quatre. 341 00:16:59,727 --> 00:17:03,383 342 00:17:03,383 --> 00:17:09,849 Tenim quatre sencers en una fila per a aquesta sèrie de quatre nombres enters. 343 00:17:09,849 --> 00:17:13,820 Així, en l'actualitat, quin és la mida d'una d'aquestes caixes? 344 00:17:13,820 --> 00:17:17,190 345 00:17:17,190 --> 00:17:17,690 Sí. 346 00:17:17,690 --> 00:17:18,390 És quatre bytes. 347 00:17:18,390 --> 00:17:19,690 És de 32 bits. 348 00:17:19,690 --> 00:17:22,310 Així que ara això és diferent de la matriu que ens 349 00:17:22,310 --> 00:17:24,020 va veure anteriorment, el conjunt de caràcters. 350 00:17:24,020 --> 00:17:28,540 En una cadena de cada caixa va ser només un byte, perquè un personatge és només un byte. 351 00:17:28,540 --> 00:17:32,170 Però amb una matriu d'enters, cadascun caixa ha de ser 4 bytes en ordre 352 00:17:32,170 --> 00:17:34,060 per adaptar-se a tot un número sencer. 353 00:17:34,060 --> 00:17:37,197 Així que això és el que una sèrie de quatre sencers es veuria així. 354 00:17:37,197 --> 00:17:40,510 355 00:17:40,510 --> 00:17:43,870 >> I després de tornada a codi. 356 00:17:43,870 --> 00:17:47,460 Ara volem realment botiga sencers en aquesta matriu. 357 00:17:47,460 --> 00:17:53,470 Així que ara aquest és un molt, molt, molt patró comú que en algun punt 358 00:17:53,470 --> 00:17:54,680 convertit en la memòria muscular. 359 00:17:54,680 --> 00:17:56,710 Així int i és igual a 0. 360 00:17:56,710 --> 00:17:57,940 i menor que n. 361 00:17:57,940 --> 00:18:01,850 i plus plus. 362 00:18:01,850 --> 00:18:05,790 Grup d'edat i és igual getInt. 363 00:18:05,790 --> 00:18:15,100 >> Així que aquest bucle, aquest format, vostè ha d'aconseguir molt acostumat. 364 00:18:15,100 --> 00:18:20,010 Així que això és en general la forma en què ho farem iterar sobre gairebé qualsevol matriu. 365 00:18:20,010 --> 00:18:23,690 Ara noti aquest tipus de explica per què des del principi 366 00:18:23,690 --> 00:18:29,870 que no teníem per als bucles d'anar per int i és igual a 1, i de menys de o igual a 10. 367 00:18:29,870 --> 00:18:34,200 La raó és que a partir de zero fa que aquest treball bé amb matrius. 368 00:18:34,200 --> 00:18:36,270 Així que les matrius són zero indexats. 369 00:18:36,270 --> 00:18:40,360 Si aquesta matriu és de longitud 4, els índexs són del 0 al 3. 370 00:18:40,360 --> 00:18:42,880 >> Així que a través de la primera iteració d'aquest bucle for 371 00:18:42,880 --> 00:18:49,930 establirem l'edat Suport 0 igual a una crida a getInt. 372 00:18:49,930 --> 00:18:52,440 Així que el que em va passar per entrar en el teclat. 373 00:18:52,440 --> 00:18:56,970 En el segon pas, estem l'establiment de edad1 igual a getInt. 374 00:18:56,970 --> 00:18:58,230 Tercer pas, edat2. 375 00:18:58,230 --> 00:18:59,880 Edad3 passi final. 376 00:18:59,880 --> 00:19:05,750 Així que si a la primera passada del bucle Entro al número 4 en el teclat, 377 00:19:05,750 --> 00:19:07,740 llavors anem a inserir un 4 aquí. 378 00:19:07,740 --> 00:19:11,470 Si en la segona passada entro 50, posarem un 50 aquí. 379 00:19:11,470 --> 00:19:15,180 En el tercer pas que podria entrar en negatiu 1, 1 negatiu, 380 00:19:15,180 --> 00:19:21,810 i, finalment, si entro 0-- i Ara recordeu que això era Índex 03:00. 381 00:19:21,810 --> 00:19:25,350 >> Després de bucle, i és serà incrementat a 4. 382 00:19:25,350 --> 00:19:27,770 i ja no és menor que n, que és 4. 383 00:19:27,770 --> 00:19:29,840 I partim fora del circuit. 384 00:19:29,840 --> 00:19:32,578 Llavors, què hauria de dolent això? 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 AUDIÈNCIA: [inaudible] 388 00:19:39,604 --> 00:19:45,880 389 00:19:45,880 --> 00:19:46,400 >> Sí. 390 00:19:46,400 --> 00:19:51,550 Així que l'array només té quatre llocs, el que significa que els índexs de 0 a 3. 391 00:19:51,550 --> 00:19:55,630 Així que si aquest fos el cas, ho faria prendre el valor 4 en algun moment. 392 00:19:55,630 --> 00:20:00,910 grup d'edat 4 serà la creació qualsevol cosa que estigui per aquí 393 00:20:00,910 --> 00:20:02,920 el que he de dir, introdueixi 6. 394 00:20:02,920 --> 00:20:05,010 Això va a configurar aquesta a 6. 395 00:20:05,010 --> 00:20:06,560 >> Però no sabem el que hi ha per aquí. 396 00:20:06,560 --> 00:20:08,836 Això no és memòria que teníem accés. 397 00:20:08,836 --> 00:20:10,710 Així que si vostè recorda de la conferència anterior, 398 00:20:10,710 --> 00:20:14,350 que estava imprimint valors de Zamyla i en algun moment ell va colpejar aquesta segmentació 399 00:20:14,350 --> 00:20:17,990 criticar. Així que probablement va a veure molts errors de segmentació com vostè 400 00:20:17,990 --> 00:20:20,530 posar en pràctica alguns dels conjunts de problemes. 401 00:20:20,530 --> 00:20:24,950 Però aquesta és una de les formes en què vostè pot trobar una segmentació 402 00:20:24,950 --> 00:20:28,540 culpa, quan s'inicia l'accés la memòria de manera que no ha de ser. 403 00:20:28,540 --> 00:20:34,117 Així que no tenim accés a aquest lloc i això és un error. 404 00:20:34,117 --> 00:20:37,760 405 00:20:37,760 --> 00:20:40,190 >> Així que això és millor. 406 00:20:40,190 --> 00:20:45,820 Ara hi ha encara una petita problema amb aquest codi. 407 00:20:45,820 --> 00:20:50,720 I això és bàsicament que som segueix estancat en quatre estudiants. 408 00:20:50,720 --> 00:20:52,940 Ara bé, si vull fer servir vuit estudiants, OK. 409 00:20:52,940 --> 00:20:54,350 No és gran cosa. 410 00:20:54,350 --> 00:20:58,120 Puc entrar, canviar la comentar i canviar n. 411 00:20:58,120 --> 00:20:59,760 Ara això funcionarà amb vuit estudiants. 412 00:20:59,760 --> 00:21:02,190 Si Va compilar això i córrer això, es mostrarà mi-- 413 00:21:02,190 --> 00:21:07,870 sol·licitarà sencers per a vuit estudiants i s'acaba de treballar. 414 00:21:07,870 --> 00:21:11,850 Però és menys que ideal a necessitar recompilar el programa cada vegada 415 00:21:11,850 --> 00:21:15,960 Vull canviar el nombre d'estudiants que vull entrar en les edats per. 416 00:21:15,960 --> 00:21:22,990 >> Així la millora final sobre això, com veurem aquí-- estem 417 00:21:22,990 --> 00:21:26,177 va a sol·licitar el nombre de persones. 418 00:21:26,177 --> 00:21:28,010 Aquí tenim un nombre de les persones a les habitacions 419 00:21:28,010 --> 00:21:29,880 o qualsevol edats de les persones a l'habitació. 420 00:21:29,880 --> 00:21:33,300 Però anem a sol·licitar el nombre de persones a la sala per part de l'usuari. 421 00:21:33,300 --> 00:21:36,171 Així que aquest és exactament el mateix do-while bucle que hem vist abans. 422 00:21:36,171 --> 00:21:37,920 És exactament el mateix do-while que 423 00:21:37,920 --> 00:21:40,050 es pot implementar en el set problema. 424 00:21:40,050 --> 00:21:43,102 Així que, mentre que són entrar en un n menys d'1, 425 00:21:43,102 --> 00:21:45,310 per la qual cosa no ha d'estar en almenys una persona a l'habitació. 426 00:21:45,310 --> 00:21:47,407 Com sempre que siguin entrar en un n menys d'1, 427 00:21:47,407 --> 00:21:48,990 llavors seguirem fent de nou. 428 00:21:48,990 --> 00:21:50,906 Si us plau, introduïu el número de persones a l'habitació. 429 00:21:50,906 --> 00:21:53,550 Ara, una vegada que tinguem el nombre de persones al habitació-- 430 00:21:53,550 --> 00:21:58,020 pel que podria entrar en que hi ha 200 persones en aquesta sala. 431 00:21:58,020 --> 00:22:05,480 Llavors aquí anem a venir i declarar una matriu de mida 200. 432 00:22:05,480 --> 00:22:10,220 Estem declarant matriu que és prou gran com per contenir 200 edats. 433 00:22:10,220 --> 00:22:15,370 En baixar, és el bucle for que vostè aconseguirà molt acostumat. 434 00:22:15,370 --> 00:22:19,490 Així iterar sobre aquesta matriu, assignant a cada ubicació 435 00:22:19,490 --> 00:22:23,020 en aquesta matriu un enter, i a continuació, en última instància, aquí estem 436 00:22:23,020 --> 00:22:28,340 només aconseguir un exemple de la iteració sobre aquesta matriu, no per assignar valors, 437 00:22:28,340 --> 00:22:30,150 però per accedir valors. 438 00:22:30,150 --> 00:22:33,810 >> Així que aquí veiem que estan dient, d'un any a partir d'ara, 439 00:22:33,810 --> 00:22:40,470 física% i estarà% i anys d'edat, on el primer% i és i + 1. 440 00:22:40,470 --> 00:22:43,010 Així que i és la variable d'índex. 441 00:22:43,010 --> 00:22:49,420 I la segona% i serà el valor emmagatzemat en la matriu edats més 1. 442 00:22:49,420 --> 00:22:54,217 Així que aquesta més 1 és només perquè som dient-- aquesta més 1, i mai 1 edats. 443 00:22:54,217 --> 00:22:57,050 Aquest plus 1 és només perquè som dient: un any a partir d'ara la persona 444 00:22:57,050 --> 00:22:58,280 serà aquest vell. 445 00:22:58,280 --> 00:23:01,080 >> Llavors per què és això que mai 1? 446 00:23:01,080 --> 00:23:04,064 Per què tenim un plus 1 allà? 447 00:23:04,064 --> 00:23:04,564 Sí. 448 00:23:04,564 --> 00:23:07,410 449 00:23:07,410 --> 00:23:07,930 Sí. 450 00:23:07,930 --> 00:23:10,510 Així que recordi matrius són zero indexats. 451 00:23:10,510 --> 00:23:14,840 Així que si estem imprimint això per algú que acaba de llegir la sortida, 452 00:23:14,840 --> 00:23:19,380 llavors probablement volen veure alguna cosa com a persona un, persona número u, 453 00:23:19,380 --> 00:23:21,160 serà de 20 anys d'edat. 454 00:23:21,160 --> 00:23:23,570 Persona número dos serà de 15 anys d'edat. 455 00:23:23,570 --> 00:23:27,420 Ells preferirien no veure persona número zero és de 15 anys d'edat. 456 00:23:27,420 --> 00:23:36,460 >> Així que la compilació d'això i només veure el que sembla com-- Crear un espai. 457 00:23:36,460 --> 00:23:43,560 Fer edats compilacions. 458 00:23:43,560 --> 00:23:45,080 Execució de les edats. 459 00:23:45,080 --> 00:23:46,580 Veiem nombre de persones a l'habitació. 460 00:23:46,580 --> 00:23:48,850 Així que vaig a dir que hi ha tres persones a l'habitació. 461 00:23:48,850 --> 00:23:54,000 Edat de la persona número u, diguem 15, 20, 25. 462 00:23:54,000 --> 00:23:59,680 I ara vaig a dir aquí a un any ara van a ser 16, 21, 26. 463 00:23:59,680 --> 00:24:02,900 Anem a veure que això funciona amb 1 n que no és igual a 3. 464 00:24:02,900 --> 00:24:07,940 Així que si dic nombre de persones és 5, un, dos, tres, dos, un, dins d'un any 465 00:24:07,940 --> 00:24:11,170 van a ser dos, tres, quatre, tres, dos anys d'edat. 466 00:24:11,170 --> 00:24:16,500 Així que vaig poder igual fàcilment n han de ser 10.000. 467 00:24:16,500 --> 00:24:21,270 Ara vaig a estar assegut aquí durant bastant un temps d'entrar a les edats, però això funciona. 468 00:24:21,270 --> 00:24:26,000 >> Així que ara a la memòria algun lloc ens tenir una matriu de mida 10000, 469 00:24:26,000 --> 00:24:28,830 així que en última instància 40000 bytes, perquè hi ha 470 00:24:28,830 --> 00:24:31,222 4 bytes per a cada un d'aquests nombres enters. 471 00:24:31,222 --> 00:24:33,180 Així que hi ha una gran varietat de mida de 10.000 en el que puguem 472 00:24:33,180 --> 00:24:36,201 emmagatzemar les edats d'aquestes 10.000 persones. 473 00:24:36,201 --> 00:24:36,700 Tot bé. 474 00:24:36,700 --> 00:24:40,070 Preguntes sobre res d'això? 475 00:24:40,070 --> 00:24:41,892 Sí. 476 00:24:41,892 --> 00:24:43,350 Què passa si vostè li va donar un nombre negatiu? 477 00:24:43,350 --> 00:24:44,870 Anem a veure què passa. 478 00:24:44,870 --> 00:24:49,320 Així que en aquest número especial cas-- de persones a l'habitació, un de negatiu. 479 00:24:49,320 --> 00:24:52,580 Va rebutjar que, perquè fins aquí ens ha tocat 480 00:24:52,580 --> 00:24:57,180 estar manejant el fet que si n és menys de la que anem a tornar a preguntar. 481 00:24:57,180 --> 00:25:01,780 Si voleu declarar una matriu de mida negatiu, 482 00:25:01,780 --> 00:25:03,950 en general no funciona. 483 00:25:03,950 --> 00:25:05,570 >> Així que anem a tractar. 484 00:25:05,570 --> 00:25:08,000 Anem a ignorar el que sigui valor que l'entrada per n 485 00:25:08,000 --> 00:25:10,571 i dir les edats int negatiu. 486 00:25:10,571 --> 00:25:12,410 Anem a veure si és que compila. 487 00:25:12,410 --> 00:25:14,100 No estic segur. 488 00:25:14,100 --> 00:25:14,920 No. 489 00:25:14,920 --> 00:25:18,280 Així les edats es declara com un matriu amb una mida negatiu. 490 00:25:18,280 --> 00:25:22,540 Així avançat que reconeix un conjunt no pot ser de mida negatiu i el rebutja. 491 00:25:22,540 --> 00:25:26,840 Ara, si no fem servir aquest bucle do-while correctament, 492 00:25:26,840 --> 00:25:28,810 si no marxàvem si n és menor que 1-- 493 00:25:28,810 --> 00:25:32,690 diguem que simplement no tenia en absolut 494 00:25:32,690 --> 00:25:35,940 i en el seu lloc ens agafem un enter. 495 00:25:35,940 --> 00:25:40,710 No importa el que sencer és, declarem un arranjament d'aquesta mida. 496 00:25:40,710 --> 00:25:44,250 >> Així que el compilador no pot possiblement queixar ara. 497 00:25:44,250 --> 00:25:48,780 Si compilar esto-- per la qual cosa no es pot queixar, 498 00:25:48,780 --> 00:25:51,480 perquè no pot saber que sóc va introduir un nombre negatiu, 499 00:25:51,480 --> 00:25:52,550 que podria ser vàlid. 500 00:25:52,550 --> 00:25:54,633 Per tot el que sap, jo podria introdueixi un nombre positiu, 501 00:25:54,633 --> 00:25:56,000 que és perfectament vàlid. 502 00:25:56,000 --> 00:26:01,090 Així que m'imagino que si entro negatiu 1 persones a la sala, la segmentació de culpa. 503 00:26:01,090 --> 00:26:06,040 >> Tan bé. 504 00:26:06,040 --> 00:26:13,160 Així que anem a afegir aquesta enrere just mantenir el que era originalment. 505 00:26:13,160 --> 00:26:15,640 Així que les edats. 506 00:26:15,640 --> 00:26:18,120 Ara si vull provar un negatiu age-- així que anem a 507 00:26:18,120 --> 00:26:19,710 diuen que hi ha cinc persones a l'habitació. 508 00:26:19,710 --> 00:26:23,180 Edat de la persona número u és negatiu 4, persona de tres 509 00:26:23,180 --> 00:26:26,500 és zero, persona tres-- acord. 510 00:26:26,500 --> 00:26:29,850 Així que aquí, a partir d'ara, el nombre de persones a l'any un serà negatiu 3 anys d'edat. 511 00:26:29,850 --> 00:26:32,830 Així que probablement no té sentit. 512 00:26:32,830 --> 00:26:37,220 Però això és només perquè mirant en el codi de tot el que estem fent 513 00:26:37,220 --> 00:26:40,260 està sol·licitant getInt. 514 00:26:40,260 --> 00:26:44,110 >> Ara, si haguéssim tingut la Funció GetPositiveInt 515 00:26:44,110 --> 00:26:49,690 o que havíem simplement fet això tipus de mateix bucle mentre allà baix, 516 00:26:49,690 --> 00:26:52,340 llavors això funcionaria perfectament bé. 517 00:26:52,340 --> 00:26:54,200 Però en aquest particular, cas, nosaltres no fem 518 00:26:54,200 --> 00:26:57,772 passar a ser la gestió de valors negatius. 519 00:26:57,772 --> 00:26:59,147 Alguna altra pregunta sobre matrius? 520 00:26:59,147 --> 00:27:02,290 521 00:27:02,290 --> 00:27:03,250 D'ACORD. 522 00:27:03,250 --> 00:27:09,380 >> Així que ara hem vist matrius. 523 00:27:09,380 --> 00:27:12,500 I anem a haver d'utilitzar això per als arguments de línia de comandes. 524 00:27:12,500 --> 00:27:14,680 Així que en conjunt de problemes dos-- Sé que molts de vostès 525 00:27:14,680 --> 00:27:18,040 encara podria estar treballant en el set problema un, sinó de problemes de dues està pujant. 526 00:27:18,040 --> 00:27:22,260 En el problema va fixar dos, vas a hauran de tractar amb cadenes, matrius, 527 00:27:22,260 --> 00:27:23,950 i els arguments de línia de comandes. 528 00:27:23,950 --> 00:27:26,270 >> Quins són els arguments de línia de comandes? 529 00:27:26,270 --> 00:27:29,570 Ara, es pot veure aquí baix un petit teaser de exactament el que és 530 00:27:29,570 --> 00:27:30,950 va a estar passant. 531 00:27:30,950 --> 00:27:32,950 Veiem int main, argc inc, suports argv cadena. 532 00:27:32,950 --> 00:27:34,560 533 00:27:34,560 --> 00:27:38,130 Així que primer anem a tractar d'interpretar el que està tractant de dir. 534 00:27:38,130 --> 00:27:40,800 Ara, a D'acord. 535 00:27:40,800 --> 00:27:44,637 >> Així que en la línia de comandes ha d'estar acostumar-se a alguns d'aquests comandaments 536 00:27:44,637 --> 00:27:48,580 ara, i el que has d'executar cd al terminal abans. 537 00:27:48,580 --> 00:27:52,100 Així que si diem pset1 cd, vostè sap que això ha de 538 00:27:52,100 --> 00:27:55,050 estar canviant en el directori pset1. 539 00:27:55,050 --> 00:27:59,120 >> Ara nota que mai has escrit un programa com això abans. 540 00:27:59,120 --> 00:28:03,120 Cada programa que vostè ha escrit, ha d'executar, per exemple, el DOT retallar Mario, 541 00:28:03,120 --> 00:28:06,779 punt slash cobdiciós, i després vostè podria demanarà entrada. 542 00:28:06,779 --> 00:28:08,570 Ara, això no és el que canvi de directori fa. 543 00:28:08,570 --> 00:28:12,770 Quan s'executa cd, no després dir, quin directori vols cd a? 544 00:28:12,770 --> 00:28:17,200 En el seu lloc, vostè acaba de dir, pset1 cd, i simplement entra al directori pset1. 545 00:28:17,200 --> 00:28:20,430 >> Així que de manera similar tenim altres exemples. 546 00:28:20,430 --> 00:28:21,540 fer hola. 547 00:28:21,540 --> 00:28:25,760 Quan s'executa fer, no després dir, quin programa t'agradaria fer? 548 00:28:25,760 --> 00:28:29,620 Vostè acaba de dir, en el línia d'ordres fan hola. 549 00:28:29,620 --> 00:28:31,060 >> Move és un altre exemple. 550 00:28:31,060 --> 00:28:34,840 Aquest ens estem movent la mario.c presentar fins a un directori. 551 00:28:34,840 --> 00:28:38,060 Així que ara sabem amb aquest exemple realment estem passant dos arguments. 552 00:28:38,060 --> 00:28:42,090 Hi ha mario.c com a primer argument, i punt punt és el segon argument. 553 00:28:42,090 --> 00:28:46,140 I després quan s'executa fa, vostè veure que realment llarg comando line-- 554 00:28:46,140 --> 00:28:50,580 que realment llarg d'ordres imprès a la línia d'ordres. 555 00:28:50,580 --> 00:28:53,590 Així que molt command-- aquest és només una petita part de la mateixa, 556 00:28:53,590 --> 00:28:56,090 però ara tenim tres arguments de la línia d'ordres. 557 00:28:56,090 --> 00:28:59,750 Dot guió zero, hola, i hello.c. 558 00:28:59,750 --> 00:29:03,497 >> Així que aquests són de línia d'ordres Les discussions, arguments 559 00:29:03,497 --> 00:29:05,580 que està passant en el línia d'ordres perquè 560 00:29:05,580 --> 00:29:08,680 no ha de ser impulsat quan s'executa el programa. 561 00:29:08,680 --> 00:29:13,090 Seria frustrant si quan Va executar so metàl·lic que va dir: "Està bé, 562 00:29:13,090 --> 00:29:15,630 que program-- que arxiu estàs compilant? 563 00:29:15,630 --> 00:29:17,010 Hello.c. 564 00:29:17,010 --> 00:29:19,440 El banderes oi agradaria entrar? o guió. 565 00:29:19,440 --> 00:29:21,190 Què t'agradaria l'arxiu que es diu? 566 00:29:21,190 --> 00:29:21,690 hola. 567 00:29:21,690 --> 00:29:25,290 No, només executa Clang dash o hola hello.c. 568 00:29:25,290 --> 00:29:28,820 >> Així que mirant cap enrere en això. 569 00:29:28,820 --> 00:29:32,920 Ara argc argc-- és el recompte d'arguments. 570 00:29:32,920 --> 00:29:36,620 És el número de la línia d'ordres arguments introduïts en la línia d'ordres. 571 00:29:36,620 --> 00:29:39,720 Bé, tècnicament argv-- la v significa vector, 572 00:29:39,720 --> 00:29:41,460 que bàsicament significa matriu. 573 00:29:41,460 --> 00:29:42,680 Però es pot ignorar això. 574 00:29:42,680 --> 00:29:47,540 Argv-- tenim argv corda, així suports argv cadena. 575 00:29:47,540 --> 00:29:50,150 Així que aquesta és una altra forma de claudàtors que ho has vist abans. 576 00:29:50,150 --> 00:29:52,300 Suport de manera que hem vist notació quan hem dit, 577 00:29:52,300 --> 00:29:53,970 com, cadena s és igual Zamyla. 578 00:29:53,970 --> 00:29:56,910 s 0 suport accedeix a la Z. caràcter 579 00:29:56,910 --> 00:30:00,720 >> També hem vist claudàtors quan vam dir int edats acorchetan maig. 580 00:30:00,720 --> 00:30:03,160 Això va declarar una matriu de mida 5. 581 00:30:03,160 --> 00:30:06,280 Així que aquí és una versió de la suports que no han vist abans. 582 00:30:06,280 --> 00:30:09,630 Així que aquest tipus de argv cadena que seria completament familiaritzat 583 00:30:09,630 --> 00:30:12,050 que no seria més que una cadena. 584 00:30:12,050 --> 00:30:14,520 Ara els parèntesis indiquen que es tracta d'una matriu. 585 00:30:14,520 --> 00:30:19,920 Així suports argv cadena de mitjans que argv és una matriu de cadenes. 586 00:30:19,920 --> 00:30:22,540 Ara tècnicament una cadena és una sèrie de caràcters. 587 00:30:22,540 --> 00:30:26,400 Així que això és ara una matriu d'un conjunt de caràcters. 588 00:30:26,400 --> 00:30:31,490 Però és molt més fàcil que pensar això com una matriu de cadenes. 589 00:30:31,490 --> 00:30:34,900 >> Llavors per què podrien els suports estar buit? 590 00:30:34,900 --> 00:30:38,170 Igual que, per què no podem dir, suport de 5, suport n? 591 00:30:38,170 --> 00:30:40,700 592 00:30:40,700 --> 00:30:41,200 Sí. 593 00:30:41,200 --> 00:30:43,731 594 00:30:43,731 --> 00:30:44,230 Sí. 595 00:30:44,230 --> 00:30:46,396 No sabem quants entrades allà seran. 596 00:30:46,396 --> 00:30:53,560 Així que si ens fixem en l'exemple so metàl·lic, diem Clang tauler o hola hello.c. 597 00:30:53,560 --> 00:30:56,710 En aquest cas particular, no succeeixi haver tres arguments de la línia d'ordres. 598 00:30:56,710 --> 00:31:00,522 I així el brackets-- ja veurem en un segon no seria 03:00. 599 00:31:00,522 --> 00:31:01,730 Tècnicament seria 04:00. 600 00:31:01,730 --> 00:31:04,030 Però els suports, ho faríem per exemple, hi ha tres. 601 00:31:04,030 --> 00:31:08,220 Però ara, si ens fixem en moviment mario.c punt punt, els suports 602 00:31:08,220 --> 00:31:09,760 ens agradaria posar dos en ells. 603 00:31:09,760 --> 00:31:12,884 >> I hi ha un munt d'ordres que tenir un nombre variable de línia d'ordres 604 00:31:12,884 --> 00:31:13,620 arguments. 605 00:31:13,620 --> 00:31:17,430 Així que el que aquesta versió de la notació de claudàtors indica 606 00:31:17,430 --> 00:31:20,820 és que argv és una matriu de cadenes. 607 00:31:20,820 --> 00:31:24,360 Però no sabem quants cordes estan en aquesta matriu. 608 00:31:24,360 --> 00:31:27,090 I com llavors sabem com moltes cadenes estan en la matriu? 609 00:31:27,090 --> 00:31:28,870 Aquest és tot el argc punt. 610 00:31:28,870 --> 00:31:32,300 argc ens diu quant temps argv és. 611 00:31:32,300 --> 00:31:36,500 >> Així que l'última cosa a tenir en compte és que, tècnicament, 612 00:31:36,500 --> 00:31:40,820 la comanda en si compte com una dels arguments de la línia d'ordres. 613 00:31:40,820 --> 00:31:45,330 Així pset1 cd, hi ha dos arguments de la línia d'ordres. 614 00:31:45,330 --> 00:31:50,260 El programa en si mateix, cd, i després la part argument real de la mateixa, pset1. 615 00:31:50,260 --> 00:31:54,490 Qualsevol programa que vostè ha escrit fins al moment ha tingut punts d'una línia d'ordres argument-- 616 00:31:54,490 --> 00:31:55,320 slash Mario. 617 00:31:55,320 --> 00:31:57,350 Aquest és l'únic argument de línia d'ordres. 618 00:31:57,350 --> 00:32:00,900 >> Així que ara mirant Clang dash o hola hello.c. 619 00:32:00,900 --> 00:32:01,905 Llavors, què és 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 Així argc es 4. 623 00:32:08,140 --> 00:32:12,140 Clang, suport de manera argv 0 és so metàl·lic. 624 00:32:12,140 --> 00:32:15,630 argv suport 1 es ruixada 0. 625 00:32:15,630 --> 00:32:21,870 argv suport 2 és hola i argv suport 3 és hello.c. 626 00:32:21,870 --> 00:32:26,813 Ok, així que les preguntes sobre aquest tema, i després anem a mirar alguns exemples programàtics. 627 00:32:26,813 --> 00:32:29,460 628 00:32:29,460 --> 00:32:30,480 >> D'ACORD. 629 00:32:30,480 --> 00:32:36,260 Així que anem a fer una ullada a hello3.c. 630 00:32:36,260 --> 00:32:41,890 Així que això ha de ser familiar de un dels primers exemples c 631 00:32:41,890 --> 00:32:45,800 teníem on ens acaba de dir hola món, però ara això és més general. 632 00:32:45,800 --> 00:32:52,300 Així que aquí estem dient hola % S barra invertida n argv suport gener. 633 00:32:52,300 --> 00:32:57,440 Notice-- tan amunt fins a aquest punt, és a dir el que el meu fitxer de plantilla ha semblat. 634 00:32:57,440 --> 00:33:01,800 Vaig tenir int main (void), i després ho faria fer alguna cosa a la funció principal. 635 00:33:01,800 --> 00:33:05,100 Ara en canvi, un cop que vam començar a tractar amb arguments de línia de comandes, 636 00:33:05,100 --> 00:33:07,890 hem de declarar 01:00 diferent forma de principal. 637 00:33:07,890 --> 00:33:11,930 >> Així que mirant hello3 de nou, la principal va 638 00:33:11,930 --> 00:33:15,990 prendre dos arguments ara-- int argc, el nombre d'arguments de línia de comandes, 639 00:33:15,990 --> 00:33:20,970 i la cadena argv parèntesi, el real cordes van entrar a la línia d'ordres. 640 00:33:20,970 --> 00:33:26,560 Així que vaig a canviar això plantilla per a reflectir aquest fet. 641 00:33:26,560 --> 00:33:29,060 Ara cada vegada que escrius un programa, si no ho fa 642 00:33:29,060 --> 00:33:33,720 han de realitzar cap de línia d'ordres arguments, a continuació, només ha d'utilitzar int main (void). 643 00:33:33,720 --> 00:33:37,070 Però ara, quan vostè està escrivint programes d'arguments de línia de comandes, que 644 00:33:37,070 --> 00:33:40,350 vostè va a estar fent per al problema establir dos-- així que ara que vostè està funcionant 645 00:33:40,350 --> 00:33:42,630 programes que necessiten per prendre arguments de la línia d'ordres, 646 00:33:42,630 --> 00:33:45,250 cal tenir principal d'aquest formulari. 647 00:33:45,250 --> 00:33:51,290 >> Així aquí-- aquest és el gran ús l'argument de línia d'ordres. 648 00:33:51,290 --> 00:33:54,100 Així impressió argv 1. 649 00:33:54,100 --> 00:33:59,180 Acceptar així que anem a compilar i executar aquest programa. 650 00:33:59,180 --> 00:34:02,440 Fer hello3. 651 00:34:02,440 --> 00:34:03,570 Compila. 652 00:34:03,570 --> 00:34:06,870 Dot slash hello3. 653 00:34:06,870 --> 00:34:08,920 I diguem, "Rob". 654 00:34:08,920 --> 00:34:10,760 Hola Rob. 655 00:34:10,760 --> 00:34:14,940 Si dic: "Hola Maria," hola Maria. 656 00:34:14,940 --> 00:34:15,719 Hola Maria. 657 00:34:15,719 --> 00:34:18,639 Hannah encara diu, "hola Maria, "perquè no sóc 658 00:34:18,639 --> 00:34:21,340 fer alguna cosa amb la nostra argv 2. 659 00:34:21,340 --> 00:34:22,590 Argv 2 ara seria "Hannah". 660 00:34:22,590 --> 00:34:25,030 Argc seria març. 661 00:34:25,030 --> 00:34:27,735 ¿I si ho vaig fer? 662 00:34:27,735 --> 00:34:31,980 663 00:34:31,980 --> 00:34:34,679 Així hola nul. 664 00:34:34,679 --> 00:34:38,760 >> Li va tocar breument en el fet que, tècnicament, GetString 665 00:34:38,760 --> 00:34:42,429 podria tornar null, però anem a obtenir una molt més en el nul en realitat és. 666 00:34:42,429 --> 00:34:47,449 Però prendre-ho com una qüestió de fet que no és en general dolent. 667 00:34:47,449 --> 00:34:50,179 Vam fer alguna cosa malament si s'imprimeix "hola nul." 668 00:34:50,179 --> 00:34:52,179 I la raó per la qual ho va fer alguna cosa malament és-- així, 669 00:34:52,179 --> 00:34:56,179 quan em vaig trobar hello3 slash dot, argc era 1. 670 00:34:56,179 --> 00:34:59,680 Així que això significa que la longitud d'argv era 1. 671 00:34:59,680 --> 00:35:05,110 Si una matriu és de longitud 1, l'únic índex vàlid és zero. 672 00:35:05,110 --> 00:35:08,550 I aquí argv 1 està fora el rang d'aquesta matriu. 673 00:35:08,550 --> 00:35:13,410 Era similar a l'anterior, quan vaig tractar per emmagatzemar 6 fora de la final de la matriu. 674 00:35:13,410 --> 00:35:18,100 Així que estic intentant accedir a alguna cosa fora dels comtes argv, 675 00:35:18,100 --> 00:35:21,340 i estem rebent nul. 676 00:35:21,340 --> 00:35:24,360 >> Així que una millor versió de això, una millora, 677 00:35:24,360 --> 00:35:27,010 està comprovant explícitament argc. 678 00:35:27,010 --> 00:35:33,580 Així que si argc és igual a 2, el que vol dir que ens trobem una mena hello3 slash dot Rob. 679 00:35:33,580 --> 00:35:36,840 I va imprimir "hola Rob." 680 00:35:36,840 --> 00:35:39,850 Si argc no és igual a 2, llavors només va 681 00:35:39,850 --> 00:35:42,560 fer cas omís del que poses en l'argument de línia d'ordres 682 00:35:42,560 --> 00:35:43,960 com a arguments de línia de comandes. 683 00:35:43,960 --> 00:35:47,168 O si vostè no va posar cap en absolut, és només va a ignorar això i dir, 684 00:35:47,168 --> 00:35:47,960 "hola tu." 685 00:35:47,960 --> 00:35:51,490 >> Així que l'elaboració d'aquest. 686 00:35:51,490 --> 00:35:54,500 Fer hello4. 687 00:35:54,500 --> 00:35:56,790 I corrent hello4. 688 00:35:56,790 --> 00:36:00,010 Execució d'aquesta manera, el que ha de ser imprès? 689 00:36:00,010 --> 00:36:01,330 "Hola vostè." 690 00:36:01,330 --> 00:36:02,810 Hola vostè. 691 00:36:02,810 --> 00:36:05,870 Què passa amb hello4 Rob? 692 00:36:05,870 --> 00:36:06,950 "Hola Rob." 693 00:36:06,950 --> 00:36:10,580 I, finalment, hola Rob Maria és simplement "hola You" de nou, 694 00:36:10,580 --> 00:36:13,677 perquè no realment entrar cosa que esperava. 695 00:36:13,677 --> 00:36:15,510 Ha introduït més noms del que podia manejar, 696 00:36:15,510 --> 00:36:19,500 de manera que només per defecte en el hola que el comportament. 697 00:36:19,500 --> 00:36:23,040 Així que les preguntes sobre això? 698 00:36:23,040 --> 00:36:26,290 O arguments de línia de comandaments? 699 00:36:26,290 --> 00:36:28,690 >> OK, així que fer una ullada a un parell més exemples de l'ús de 700 00:36:28,690 --> 00:36:34,230 de línia d'ordres arguments-- primer hem argv tauler 1 punt c. 701 00:36:34,230 --> 00:36:38,510 Així que els comentaris regalen el aquest programa hauria d'estar fent. 702 00:36:38,510 --> 00:36:42,460 Però noti ara-- aquest bucle for, Això coincideix amb el patró exacte 703 00:36:42,460 --> 00:36:43,390 Deia abans. 704 00:36:43,390 --> 00:36:46,240 Ens toca estar utilitzant argc en lloc de n. 705 00:36:46,240 --> 00:36:48,880 Ara argc és realment el núm. 706 00:36:48,880 --> 00:36:51,260 És la longitud de la matriu argv. 707 00:36:51,260 --> 00:36:59,600 Així es iterar sobre el argv array printf-ing cada valor argv. 708 00:36:59,600 --> 00:37:04,730 >> Així que si faig això. 709 00:37:04,730 --> 00:37:08,232 Fer argv 1. 710 00:37:08,232 --> 00:37:09,940 Compila. 711 00:37:09,940 --> 00:37:11,620 Dot slash argv 1. 712 00:37:11,620 --> 00:37:15,530 Només córrer això, impressions del punt de barra argv 1 713 00:37:15,530 --> 00:37:18,500 ja que era l'única línia d'ordres argument-- el nom del programa. 714 00:37:18,500 --> 00:37:22,080 Sempre hi haurà almenys: argc no pot ser menor que un, 715 00:37:22,080 --> 00:37:25,910 ja que no sempre ho farà, almenys, ser el nom del programa a executar. 716 00:37:25,910 --> 00:37:32,040 Així argv 1 Rob imprimirà argv 1 i després en la nova línia "Rob". 717 00:37:32,040 --> 00:37:36,350 >> Així que en la primera iteració d'aquest bucle, i és 0. 718 00:37:36,350 --> 00:37:39,090 Argv 0 és el nom del programa. 719 00:37:39,090 --> 00:37:40,010 Dot slash argv 1. 720 00:37:40,010 --> 00:37:43,770 I després argv 1 és la meva primera argument de línia de comandament, que és Rob. 721 00:37:43,770 --> 00:37:45,920 En aquest punt, estem igual a argc. 722 00:37:45,920 --> 00:37:48,210 Trenquem fora del circuit i hem acabat. 723 00:37:48,210 --> 00:37:53,940 Així que això funcionarà per a una arbitrària nombre d'arguments de la línia d'ordres. 724 00:37:53,940 --> 00:37:58,550 Noti que imprimeix argv 0, argv 1, 2 argv, argv 3, 4 argv. 725 00:37:58,550 --> 00:38:00,150 I no hi ha argv maig. 726 00:38:00,150 --> 00:38:01,460 argc és igual a 5. 727 00:38:01,460 --> 00:38:06,960 Així que en argc-- i és igual a 5, trenquem fora del circuit. 728 00:38:06,960 --> 00:38:07,950 D'ACORD. 729 00:38:07,950 --> 00:38:11,315 Així preguntes sobre que abans mirar un exemple més complex? 730 00:38:11,315 --> 00:38:14,190 731 00:38:14,190 --> 00:38:16,860 >> Així argv 2. 732 00:38:16,860 --> 00:38:17,830 Tot bé. 733 00:38:17,830 --> 00:38:20,610 Així que encara estem imprimint els arguments de la línia d'ordres. 734 00:38:20,610 --> 00:38:23,170 Però ara adonar que tenim 1 niat de bucle. 735 00:38:23,170 --> 00:38:24,670 Llavors, què està fent això? 736 00:38:24,670 --> 00:38:28,430 Així que el primer bucle està fent exactament el que ho feia abans. 737 00:38:28,430 --> 00:38:30,950 Encara estem looping més cada argument de línia d'ordres, 738 00:38:30,950 --> 00:38:34,260 però ara aquesta segona loop-- que hem També vist alguna cosa com això abans. 739 00:38:34,260 --> 00:38:38,600 Quan va ser iterar sobre Zamyla imprimir Z-A-H-I-L-A. 740 00:38:38,600 --> 00:38:44,816 Així que aquest segon bucle per int j és igual 0, n és igual a strlen del suport argv i. 741 00:38:44,816 --> 00:38:49,170 >> Així que anem a pensar per primera ell-- anem a caminar a través. 742 00:38:49,170 --> 00:38:53,560 Anem a pensar en el que l'equip faria fer si em vaig trobar amb aquest programa tan sols dot 743 00:38:53,560 --> 00:38:56,030 slash argv guió 2. 744 00:38:56,030 --> 00:39:03,590 Així que si em vaig trobar amb aquest codi, a continuació, argc serà igual a 1. 745 00:39:03,590 --> 00:39:07,050 I la cadena argv-- només hi ha serà un índex en argv, 746 00:39:07,050 --> 00:39:12,370 i que va a ser igual a dot slash argv 2-- el nom del programa. 747 00:39:12,370 --> 00:39:19,170 >> OK, així que ara i és igual a 0, i menys de 1, i plus plus per int j és igual a 0, 748 00:39:19,170 --> 00:39:23,880 n és igual a strlen de argv suport 0, de manera que en la primera iteració d'aquest bucle. argv 749 00:39:23,880 --> 00:39:27,250 Suport 0 és slash dot argv 2. 750 00:39:27,250 --> 00:39:29,320 Llavors, quin és la longitud d'aquesta cadena? 751 00:39:29,320 --> 00:39:32,480 Bé, dot retallar A-R-G-V guió 2. 752 00:39:32,480 --> 00:39:35,020 Així strlen que serà de 8. 753 00:39:35,020 --> 00:39:37,500 Així que j és igual a 0, n és igual a 8. 754 00:39:37,500 --> 00:39:39,530 Mentre j és menor que 8, j ++. 755 00:39:39,530 --> 00:39:44,080 I amb això ens estarem la impressió d'un sol caràcter, el qual 756 00:39:44,080 --> 00:39:47,350 és argv suport i suport de j. 757 00:39:47,350 --> 00:39:49,826 >> Així que l'única i és zero. 758 00:39:49,826 --> 00:39:51,700 Encara només tenim una argument de línia d'ordres. 759 00:39:51,700 --> 00:39:53,890 En aquest primera iteració del bucle for, estem 760 00:39:53,890 --> 00:39:56,950 serà la impressió argv suport 0 0 abraçadora. 761 00:39:56,950 --> 00:39:58,325 I llavors j es va a incrementar. 762 00:39:58,325 --> 00:40:01,650 I anem a la impressió argv suport 0 suport gener. 763 00:40:01,650 --> 00:40:04,150 I després argv suport 0 suport febrer. 764 00:40:04,150 --> 00:40:09,030 >> Així que aquest és el nostre primer encontre de matrius multidimensionals. 765 00:40:09,030 --> 00:40:12,770 Recorda abans que et vaig dir argv que és tècnicament 766 00:40:12,770 --> 00:40:15,950 una matriu de matrius de caràcters. 767 00:40:15,950 --> 00:40:24,360 Així que aquí si em va dir alguna cosa així com cadena s és igual a suport argv i, 768 00:40:24,360 --> 00:40:29,590 i llavors em vaig dir: s suport de j, això seria el compliment de la mateixa cosa. 769 00:40:29,590 --> 00:40:31,960 Ara, vostè ha vist s suport de j abans. 770 00:40:31,960 --> 00:40:36,680 Això és només accedir a la j-th caràcter d'aquesta cadena. 771 00:40:36,680 --> 00:40:48,010 Així que amb això, estem rebent la caràcter j-èsim del argv-i. 772 00:40:48,010 --> 00:40:51,450 >> Llavors, què es deu aquesta última instància de sortida? 773 00:40:51,450 --> 00:40:53,210 Fer argv 2. 774 00:40:53,210 --> 00:40:54,730 Compila. 775 00:40:54,730 --> 00:40:56,340 Dot slash argv 2. 776 00:40:56,340 --> 00:41:03,790 "Rob Maria Hannah" i donar-nos una mica d'espai. 777 00:41:03,790 --> 00:41:07,050 Així que veiem que aquesta és la sortida punt en la seva pròpia línia i barra 778 00:41:07,050 --> 00:41:08,920 en la seva pròpia línia i en la seva pròpia línia. 779 00:41:08,920 --> 00:41:11,260 Està imprimint cada caràcter individual 780 00:41:11,260 --> 00:41:12,950 de cada argument de línia d'ordres. 781 00:41:12,950 --> 00:41:15,960 I a continuació, entre ells, a causa d'aquesta nova línia 782 00:41:15,960 --> 00:41:19,380 estem imprimint aquí baix, en entre ells que va imprimir una nova línia. 783 00:41:19,380 --> 00:41:24,540 >> Així que això és similar a el tauler argv prèvia 1, 784 00:41:24,540 --> 00:41:26,459 que cada impresa argument de línia d'ordres, 785 00:41:26,459 --> 00:41:28,500 però ara estem imprimint els arguments de la línia d'ordres 786 00:41:28,500 --> 00:41:31,950 i després a través de cada iteració caràcter de cada argument de línia d'ordres 787 00:41:31,950 --> 00:41:35,400 per obtenir aquest resultat. 788 00:41:35,400 --> 00:41:36,870 D'ACORD? 789 00:41:36,870 --> 00:41:40,570 Així que les preguntes sobre això? 790 00:41:40,570 --> 00:41:45,130 >> Una cosa a destacar és que arguments-- de línia d'ordres 791 00:41:45,130 --> 00:41:49,990 pel que estan separades per espais com que, naturalment, esperar que siguin. 792 00:41:49,990 --> 00:41:53,050 Així que una cadena pot tenir espais en el mateix. 793 00:41:53,050 --> 00:41:57,380 No és súper important, però si volia que el tercer argument de línia d'ordres 794 00:41:57,380 --> 00:42:01,226 Per tenir un espai en ell, llavors jo podria dir alguna cosa com això. 795 00:42:01,226 --> 00:42:04,470 796 00:42:04,470 --> 00:42:05,550 D'ACORD? 797 00:42:05,550 --> 00:42:12,190 Així que aquesta ara sent només té tres de línia d'ordres, així arguments-- 4. 798 00:42:12,190 --> 00:42:17,620 Dot slash argv tauler 2, Rob, Maria, i Hannah Bloomberg. 799 00:42:17,620 --> 00:42:18,320 D'ACORD. 800 00:42:18,320 --> 00:42:19,310 Preguntes sobre això? 801 00:42:19,310 --> 00:42:22,700 802 00:42:22,700 --> 00:42:24,894 >> No hi ha res especial sobre el caràcter d'espai. 803 00:42:24,894 --> 00:42:27,810 És només passa a ser que el de línia d'ordres tracta el caràcter d'espai 804 00:42:27,810 --> 00:42:29,226 com la forma de separar cada argument. 805 00:42:29,226 --> 00:42:32,048 806 00:42:32,048 --> 00:42:33,000 Tot bé. 807 00:42:33,000 --> 00:42:39,950 Llavors conjunt de problemes dos-- que seràs 808 00:42:39,950 --> 00:42:43,240 mirant a la criptografia de clau secreta. 809 00:42:43,240 --> 00:42:47,700 Per tant, similar a l'exemple vam veure de A Christmas Story, 810 00:42:47,700 --> 00:42:52,840 vostè va a ser l'aplicació d'algunes algoritmes que, donat un missatge, 811 00:42:52,840 --> 00:42:55,560 podràs per xifrar el missatge 812 00:42:55,560 --> 00:42:58,730 que només algú amb aquest secret clau, amb aquest anell descodificador, 813 00:42:58,730 --> 00:43:01,090 ha de ser capaç de desxifrar. 814 00:43:01,090 --> 00:43:04,839 >> Així que aquesta és l'edició estàndard. 815 00:43:04,839 --> 00:43:07,130 Seràs la implementació dues versions diferents. 816 00:43:07,130 --> 00:43:09,620 Si li passa a fer una ullada de manera que el hacker edition-- ara, 817 00:43:09,620 --> 00:43:12,600 donarem que una cadena com aquesta, 818 00:43:12,600 --> 00:43:15,240 el que representa una contrasenya xifrada. 819 00:43:15,240 --> 00:43:19,990 Així que el seu objectiu és esbrinar el que la contrasenya és desxifrada. 820 00:43:19,990 --> 00:43:26,950 Ara bé, això és en realitat com contrasenyes s'emmagatzemen en una gran quantitat d'ordinadors, 821 00:43:26,950 --> 00:43:31,290 i que només s'emmagatzema aquest cadena aleatòria de caràcters. 822 00:43:31,290 --> 00:43:34,440 Has de trobar la manera d'arribar d'aquesta cadena aleatòria de caràcters 823 00:43:34,440 --> 00:43:36,140 al que era la contrasenya. 824 00:43:36,140 --> 00:43:39,060 825 00:43:39,060 --> 00:43:43,290 >> I, finalment, després d'això conjunt de problemes, vostè ha de 826 00:43:43,290 --> 00:43:46,100 ser capaç d'entendre el que això significa. 827 00:43:46,100 --> 00:43:51,650 Així que vostè aprendrà a desxifrar aquest tipus de cadena aleatòria. 828 00:43:51,650 --> 00:43:56,390 De la mateixa manera, si vostè recorda de setmana 0, que podria haver vist aquest URL. 829 00:43:56,390 --> 00:44:00,210 I vostè hauria de ser capaç de desxifrar això eventualment. 830 00:44:00,210 --> 00:44:04,810 Pot ser que no siguis feliç quan vostè desxifrar i feu clic a l'enllaç. 831 00:44:04,810 --> 00:44:05,700 Tot bé. 832 00:44:05,700 --> 00:44:06,591 Això és tot per avui. 833 00:44:06,591 --> 00:44:12,095 Així que ens veiem la setmana que! 834 00:44:12,095 --> 00:44:18,315 >> [REPRODUCCIÓ DE MÚSICA ELECTRÒNICA] 835 00:44:18,315 --> 00:47:15,619