1 00:00:00,000 --> 00:00:03,944 >> [MUSIC JOC] 2 00:00:03,944 --> 00:00:10,732 3 00:00:10,732 --> 00:00:11,690 DAVID MALAN: Bine. 4 00:00:11,690 --> 00:00:14,674 Aceasta este CS50, iar acest lucru este sfârșitul săptămânii 2. 5 00:00:14,674 --> 00:00:16,840 Îmi pare rău, nu am putut fi acolo cu voi toți astăzi, 6 00:00:16,840 --> 00:00:18,300 dar ești pe mâini foarte bune. 7 00:00:18,300 --> 00:00:21,710 Permiteți-mi să introducă CS50 propriu Rob Bowden. 8 00:00:21,710 --> 00:00:29,106 9 00:00:29,106 --> 00:00:31,730 ROB BOWDEN: Și, desigur, atunci avem de a face haz de faptul 10 00:00:31,730 --> 00:00:36,820 că el ne-a trimis o verticală video și arată acest lucru. 11 00:00:36,820 --> 00:00:38,320 >> [VIDEO PLAYBACK] 12 00:00:38,320 --> 00:00:39,820 >> [MUSIC JOC] 13 00:00:39,820 --> 00:00:42,350 >> [PASII] 14 00:00:42,350 --> 00:00:44,730 >> Videoclip -Asta nu a trebuie să te uiți în acest fel. 15 00:00:44,730 --> 00:00:46,570 Acesta ar fi putut fi prevenite. 16 00:00:46,570 --> 00:00:49,070 Spune nu la video verticale. 17 00:00:49,070 --> 00:00:53,310 >> Videoclipuri pe linie verticală întâmpla atunci când țineți camera foto în mod greșit. 18 00:00:53,310 --> 00:00:55,880 Videoclipul dvs. va încheia să arate ca un rahat. 19 00:00:55,880 --> 00:00:57,650 >> - [GRUNT] 20 00:00:57,650 --> 00:01:02,240 >> -Nu Sunt mai mulți oameni dependenti pentru a face videoclipuri verticale în fiecare zi. 21 00:01:02,240 --> 00:01:06,240 Nu este fisura sau nimic, dar este încă foarte rău. 22 00:01:06,240 --> 00:01:10,410 Există două tipuri diferite de oameni care sunt afectate cu VVS. 23 00:01:10,410 --> 00:01:14,160 Primul grup tratează videoclipuri ei trage cum ar fi imagini. 24 00:01:14,160 --> 00:01:15,850 Ei nu înseamnă nici un rău. 25 00:01:15,850 --> 00:01:19,180 Ei pur și simplu nu înțeleg că în timp ce se poate transforma o imagine, 26 00:01:19,180 --> 00:01:20,880 nu se poate transforma într-adevăr un film. 27 00:01:20,880 --> 00:01:21,880 >> [CRASH] 28 00:01:21,880 --> 00:01:23,460 >> - [MONKEY SUNETE] 29 00:01:23,460 --> 00:01:27,540 >> -cele Alt grup de oameni este care nu dau un [BLEEP]. 30 00:01:27,540 --> 00:01:31,090 >> Sindromul Video pe linie verticală este periculos. 31 00:01:31,090 --> 00:01:34,120 Imagini în mișcare au fost întotdeauna orizontală. 32 00:01:34,120 --> 00:01:35,990 Televizoare sunt orizontale. 33 00:01:35,990 --> 00:01:38,380 Ecranele computerelor sunt orizontale. 34 00:01:38,380 --> 00:01:41,580 Ochii oamenilor sunt orizontale. 35 00:01:41,580 --> 00:01:45,170 Noi nu sunt construite pentru a viziona clipuri video verticale. 36 00:01:45,170 --> 00:01:47,600 >> -Am Dragoste video verticale. 37 00:01:47,600 --> 00:01:50,410 >> -Nimeni Nu îi pasă de tine. 38 00:01:50,410 --> 00:01:53,340 >> -Dacă Această problemă a nu sunt controlate, și tu 39 00:01:53,340 --> 00:01:57,650 va începe să arate patru videoclipuri la o dată doar pentru a salva de lățime de bandă. 40 00:01:57,650 --> 00:02:02,400 >> Videoclipuri verticale -Letterboxed ar fie de mărimea unui timbru poștal. 41 00:02:02,400 --> 00:02:04,920 >> -Și Se va răspândi peste tot. 42 00:02:04,920 --> 00:02:07,670 Ecrane au fost întotdeauna orizontală. 43 00:02:07,670 --> 00:02:11,200 Dacă videoclipuri verticale deveni acceptate, cinematografe 44 00:02:11,200 --> 00:02:13,930 va trebui să fie înalt și slab. 45 00:02:13,930 --> 00:02:17,710 >> -Și Toate cinematografele ar Trebuie să te rupt în jos și reconstruit. 46 00:02:17,710 --> 00:02:22,090 Și de momentul în care au fost reconstruite, Mila Kunis ar fi vechi și urât. 47 00:02:22,090 --> 00:02:24,342 >> -Birds Va prăbuși în ele și să moară. 48 00:02:24,342 --> 00:02:26,530 >> -We'll Toate primi rigid gât de la uita în sus. 49 00:02:26,530 --> 00:02:29,800 >> -Si Nimeni nu va sta în rândul din față vreodată. 50 00:02:29,800 --> 00:02:37,170 >> -George Lucas va re-eliberare de stele Războaie again-- ediția slab. 51 00:02:37,170 --> 00:02:41,860 >> -Nu Nu a fost niciodată cu adevărat în măsură să spun povestea pe care am vrut să-i spun. 52 00:02:41,860 --> 00:02:46,030 Acest lucru a fost o mare șansă pentru mine să experimenteze cu o noua tehnologie. 53 00:02:46,030 --> 00:02:48,150 >> -Esti un nesimtit. 54 00:02:48,150 --> 00:02:54,430 >> -În Fiecare dată când un dispozitiv mobil este utilizat pentru a înregistrare video, tentația este acolo. 55 00:02:54,430 --> 00:02:56,370 Doar spune nu. 56 00:02:56,370 --> 00:03:00,116 Spune nu la George Lucas. 57 00:03:00,116 --> 00:03:04,062 Spune nu la vechiul Mila Kunis. 58 00:03:04,062 --> 00:03:06,600 Spune nu la video verticale. 59 00:03:06,600 --> 00:03:12,511 >> -Si Daca vezi pe cineva o faci, spune, "Nu fotografiați că dummy drept!" 60 00:03:12,511 --> 00:03:15,433 >> [MUSIC JOC] 61 00:03:15,433 --> 00:03:18,842 62 00:03:18,842 --> 00:03:19,830 >> [END PLAYBACK] 63 00:03:19,830 --> 00:03:23,702 >> [Aplauze] 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 formă de criptografie, 67 00:03:45,790 --> 00:03:49,500 care este, în principiu criptarea și decriptarea mesajelor secrete. 68 00:03:49,500 --> 00:03:52,590 Deci, aici avem o jucărie foarte simplu. 69 00:03:52,590 --> 00:03:56,900 Iar ideea este inelul exterior se rotește în jurul inelului interior. 70 00:03:56,900 --> 00:04:01,610 Și puteți vedea, poate dacă am mări în, that-- este greu pentru a vedea. 71 00:04:01,610 --> 00:04:05,090 Dar, cum ar fi, numărul 1-- bine, care sa mutat. 72 00:04:05,090 --> 00:04:09,120 >> Numărul 1 hărți la scrisoarea X, numărul 2 harti la scrisoarea 73 00:04:09,120 --> 00:04:11,630 J. incredibil de dificil nu pentru a sări înainte. 74 00:04:11,630 --> 00:04:16,100 Scrisoare 2 hărți pentru J. Numărul 3 hărți la D. Deci 75 00:04:16,100 --> 00:04:20,140 cu acest inel poate da cineva un mesaj 1, 2, 3. 76 00:04:20,140 --> 00:04:22,624 Pentru unii motiv voi doresc să le spun XJD. 77 00:04:22,624 --> 00:04:24,540 Dar le poate da unele mesaje de numere, 78 00:04:24,540 --> 00:04:28,460 și atâta timp cât acestea au acest inel, ele poate decripta ce încerc să spun. 79 00:04:28,460 --> 00:04:32,510 >> Deci este posibil să fi văzut acest exemplu special de criptografie 80 00:04:32,510 --> 00:04:36,640 înainte dacă în jurul valorii de sezonul de Craciun ai uitat O poveste de Crăciun. 81 00:04:36,640 --> 00:04:38,520 Dacă nu ați mai văzut o înainte, apoi doar 82 00:04:38,520 --> 00:04:41,060 activa TBS la literalmente în orice moment în Ajunul Crăciunului, 83 00:04:41,060 --> 00:04:44,510 pentru că ei doar arata spate în spate pentru a reveni la spate în spate toată ziua. 84 00:04:44,510 --> 00:04:46,744 Și video relevant este acest lucru. 85 00:04:46,744 --> 00:04:47,410 [VIDEO PLAYBACK] 86 00:04:47,410 --> 00:04:50,020 -Fi Cunoscut la toate și diverse că Ralph Parker este prezenta 87 00:04:50,020 --> 00:04:52,850 numit membru a Micii Orfane Annie Secret Circle 88 00:04:52,850 --> 00:04:56,490 și are dreptul la toate onorurile și beneficiile care apar la aceasta. 89 00:04:56,490 --> 00:04:59,010 Semnat Micul orfane Annie. 90 00:04:59,010 --> 00:05:03,120 Contrasemnat Pierre Andre cerneală! 91 00:05:03,120 --> 00:05:07,460 Onoruri și beneficii deja la vârsta de nouă! 92 00:05:07,460 --> 00:05:12,530 >> [Strigând la Radio] 93 00:05:12,530 --> 00:05:13,030 -Haide. 94 00:05:13,030 --> 00:05:14,000 Să mergem mai departe cu ea. 95 00:05:14,000 --> 00:05:18,274 Nu am nevoie de tot ceea ce jazz despre contrabandiști și pirați. 96 00:05:18,274 --> 00:05:20,440 Mâine seară Ascultă cu aventura de încheiere 97 00:05:20,440 --> 00:05:22,540 a Pirate Ship Negre. 98 00:05:22,540 --> 00:05:25,460 Acum, este timpul pentru Mesaj secret lui Annie 99 00:05:25,460 --> 00:05:28,620 pentru tine membrii Cercului Secret. 100 00:05:28,620 --> 00:05:32,370 Amintiți-vă copii, numai membrii Secret Circle lui Annie 101 00:05:32,370 --> 00:05:34,880 poate decoda mesaj secret lui Annie. 102 00:05:34,880 --> 00:05:39,100 Amintiți-vă, Annie este în funcție de tine. 103 00:05:39,100 --> 00:05:41,660 Setați ace pentru a B2. 104 00:05:41,660 --> 00:05:43,960 Aici este mesajul. 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 -Sunt În prima ședință secretă. 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 este în mare în seara asta voce. 115 00:05:54,570 --> 00:05:57,490 Aș putea spune că această seară Mesajul a fost foarte 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 Asta e un mesaj de la Annie ea. 119 00:06:01,580 --> 00:06:02,880 Amintiți-vă, nu spune nimănui. 120 00:06:02,880 --> 00:06:07,840 121 00:06:07,840 --> 00:06:11,130 >> Secunde -Cinci mai târziu, eu sunt singurul în cameră în casa în care un băiat de nouă 122 00:06:11,130 --> 00:06:15,830 ar putea sta în intimitate și decoda. 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 M-am dus la alta. 126 00:06:20,210 --> 00:06:23,300 E. Primul cuvânt este "să fie." 127 00:06:23,300 --> 00:06:25,880 S. venea ușor acum. 128 00:06:25,880 --> 00:06:28,400 U. 25. 129 00:06:28,400 --> 00:06:30,528 Asta e R. 130 00:06:30,528 --> 00:06:31,278 Haide, Ralphie! 131 00:06:31,278 --> 00:06:31,861 Am merg Trebuie! 132 00:06:31,861 --> 00:06:33,182 -Voi Fi dreapta jos, Ma! 133 00:06:33,182 --> 00:06:36,038 Mai sa fie. 134 00:06:36,038 --> 00:06:42,840 T. O. "Asigurați-vă că" - asigurați-vă că ceea ce? 135 00:06:42,840 --> 00:06:44,770 Care a fost Micul orfane Annie vrea să spună? 136 00:06:44,770 --> 00:06:46,381 Asigurați-vă că ceea ce? 137 00:06:46,381 --> 00:06:47,825 >> -Randy Trebuie să plece! 138 00:06:47,825 --> 00:06:48,866 Vrei să ieși? 139 00:06:48,866 --> 00:06:49,783 >> Drept -Toate, mama! 140 00:06:49,783 --> 00:06:51,786 Voi fi în dreapta! 141 00:06:51,786 --> 00:06:53,606 Am fost apropie acum. 142 00:06:53,606 --> 00:06:55,550 Tensiunea a fost groaznic. 143 00:06:55,550 --> 00:06:57,050 Ce-a fost asta? 144 00:06:57,050 --> 00:06:59,905 Soarta planetei poate atarna in balanta! 145 00:06:59,905 --> 00:07:01,736 >> -Ralphie, Randy trebuie să plece! 146 00:07:01,736 --> 00:07:05,680 >> -Voi Fi chiar afară, pentru numele lui Dumnezeu! 147 00:07:05,680 --> 00:07:07,170 Aproape acolo! 148 00:07:07,170 --> 00:07:08,150 Degetele mele a zburat. 149 00:07:08,150 --> 00:07:09,980 Mintea mea a fost o capcană de oțel. 150 00:07:09,980 --> 00:07:11,496 Fiecare por vibrat. 151 00:07:11,496 --> 00:07:13,268 Era aproape clar! 152 00:07:13,268 --> 00:07:13,767 Da. 153 00:07:13,767 --> 00:07:14,609 Da. 154 00:07:14,609 --> 00:07:15,108 Da. 155 00:07:15,108 --> 00:07:16,449 Da. 156 00:07:16,449 --> 00:07:20,240 Asigurați-vă că pentru a bea Ovaltine dumneavoastră. 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 comerciale crummy? 160 00:07:27,520 --> 00:07:32,040 161 00:07:32,040 --> 00:07:34,920 Fecior de curva. 162 00:07:34,920 --> 00:07:35,890 >> [END PLAYBACK] 163 00:07:35,890 --> 00:07:39,650 >> ROB BOWDEN: Deci așa Ovaltine se referă la criptografie. 164 00:07:39,650 --> 00:07:42,290 Practic CS50 doar publicitate Ovaltine, asa ca am putea 165 00:07:42,290 --> 00:07:44,400 fie o reclama crummy pentru Ovaltine. 166 00:07:44,400 --> 00:07:44,900 In regula. 167 00:07:44,900 --> 00:07:47,120 Deci, acum stiinta real calculator. 168 00:07:47,120 --> 00:07:50,670 Amintiți-vă, luni, am rămas scufundări mai adânc în șiruri. 169 00:07:50,670 --> 00:07:52,820 Deci, am fost de-a face cu șirul "Zamyla." 170 00:07:52,820 --> 00:07:55,130 Și am fost recunoașterea faptul că putem trata 171 00:07:55,130 --> 00:07:57,510 "Zamyla" ca o secvență de caractere. 172 00:07:57,510 --> 00:07:59,740 Și amintiți-vă că am învățat notația suport. 173 00:07:59,740 --> 00:08:01,995 Deci, în cazul în care acest lucru au fost depozitate într-un șir de "S," apoi 174 00:08:01,995 --> 00:08:05,860 dacă am spus s suport 0, care ar indică Z. majusculă 175 00:08:05,860 --> 00:08:09,790 Si daca am spus s suport 1, care ar indica prima litere mici A, 176 00:08:09,790 --> 00:08:14,220 și așa mai departe până la s suport 5, ceea ce ar indica trecut o. 177 00:08:14,220 --> 00:08:17,090 >> Acum amintiți-vă că lungime de acest șir este de 6, 178 00:08:17,090 --> 00:08:23,220 dar indicii în șir sunt 0 prin 5, Z prin care dura. 179 00:08:23,220 --> 00:08:28,650 Deci, acest lucru se potrivește acum într-o imagine mai mare de memoria computerului, RAM-ul. 180 00:08:28,650 --> 00:08:32,020 Deci undeva programul care rulați computer 181 00:08:32,020 --> 00:08:34,780 trebuie să-și amintească Zamyla undeva în memorie. 182 00:08:34,780 --> 00:08:36,029 Deci, pot avea un voluntar? 183 00:08:36,029 --> 00:08:38,840 184 00:08:38,840 --> 00:08:40,181 Da te rog. 185 00:08:40,181 --> 00:08:50,120 186 00:08:50,120 --> 00:08:51,500 Și ceea ce este numele tau? 187 00:08:51,500 --> 00:08:52,410 >> Decan: Dean. 188 00:08:52,410 --> 00:08:53,550 >> ROB BOWDEN: Dean? 189 00:08:53,550 --> 00:08:54,910 Mă bucur să te cunosc, Dean. 190 00:08:54,910 --> 00:08:58,240 Deci, vino aici, și vom avea te trage 191 00:08:58,240 --> 00:09:00,740 pe aspectul nostru frumos puturos de memorie. 192 00:09:00,740 --> 00:09:05,950 Acum îmi place să mă gândesc la memorie ca o bandă lungă de bytes, 193 00:09:05,950 --> 00:09:11,090 dar doar pentru scopuri de afișare ne vom pur și simplu la stânga la dreapta, de sus în jos. 194 00:09:11,090 --> 00:09:11,590 OK? 195 00:09:11,590 --> 00:09:22,030 >> Deci, am de gând să arate o program-- Getstrings.c. 196 00:09:22,030 --> 00:09:25,760 Și atunci tot acest program este face solicită patru siruri de caractere 197 00:09:25,760 --> 00:09:28,830 de la utilizator cu GetString și apoi de imprimare 198 00:09:28,830 --> 00:09:30,950 indiferent de faptul că primul șir intrat a fost. 199 00:09:30,950 --> 00:09:32,840 Suntem ignorând doi prin intermediul a patru. 200 00:09:32,840 --> 00:09:33,610 BINE. 201 00:09:33,610 --> 00:09:38,210 Deci, aici now-- când Am prima s1 cerere. 202 00:09:38,210 --> 00:09:39,740 Deci ești computerul. 203 00:09:39,740 --> 00:09:41,680 Și vă sunt de punere în aplicare getString. 204 00:09:41,680 --> 00:09:46,710 Astfel încât să solicitați un șir de mine și spun, OK, Dean. 205 00:09:46,710 --> 00:09:47,900 Da sirul "Dean". 206 00:09:47,900 --> 00:09:50,300 >> Deci, undeva în memorie pe Trebuie să ne amintim "Dean". 207 00:09:50,300 --> 00:09:52,160 Deci, scrie în memorie undeva. 208 00:09:52,160 --> 00:09:58,270 209 00:09:58,270 --> 00:09:59,210 Perfect. 210 00:09:59,210 --> 00:09:59,880 BINE. 211 00:09:59,880 --> 00:10:01,740 Deci, acum ne-am s2. 212 00:10:01,740 --> 00:10:03,869 Și S2 va fi o cerere de getString. 213 00:10:03,869 --> 00:10:05,160 Deci, am de gând să introduceți un șir. 214 00:10:05,160 --> 00:10:08,720 Am de gând să intre "Hannah." 215 00:10:08,720 --> 00:10:10,586 Deci intra "Hannah" undeva în memorie. 216 00:10:10,586 --> 00:10:18,860 217 00:10:18,860 --> 00:10:19,360 Da. 218 00:10:19,360 --> 00:10:23,000 A-H. 219 00:10:23,000 --> 00:10:25,550 >> OK, asa ca acum s3. 220 00:10:25,550 --> 00:10:28,380 Și că va fi un alt solicita getString. 221 00:10:28,380 --> 00:10:37,020 Și așa că acum intră "Maria". 222 00:10:37,020 --> 00:10:37,520 In regula. 223 00:10:37,520 --> 00:10:40,980 Și apoi există o ultimă cerere getString, s4. 224 00:10:40,980 --> 00:10:42,580 Deci, eu nu știu. 225 00:10:42,580 --> 00:10:45,640 Ce zici să mergem cu antidisestablishmentarianism. 226 00:10:45,640 --> 00:10:49,460 Deci intra că în memorie. 227 00:10:49,460 --> 00:10:50,400 Da. 228 00:10:50,400 --> 00:10:53,970 Deci, nu doar "Rob." 229 00:10:53,970 --> 00:10:54,560 >> BINE. 230 00:10:54,560 --> 00:10:58,410 Deci, acum, de ce a facut explic lăsați aceste spații? 231 00:10:58,410 --> 00:11:01,340 De ce ai acest gol spațiu aici, aici, și aici? 232 00:11:01,340 --> 00:11:05,170 233 00:11:05,170 --> 00:11:05,670 Da. 234 00:11:05,670 --> 00:11:09,450 Deci observați când mă duc pentru a imprima s1-- deci, dacă am 235 00:11:09,450 --> 00:11:11,890 a avut "Hannah" de funcționare până lângă "Dean", 236 00:11:11,890 --> 00:11:14,360 cum știm, atunci când șirul "decanul" se termină? 237 00:11:14,360 --> 00:11:19,470 Deci imprimarea s1 șir poate avea doar tipărite "DeanHannahMariaRob" 238 00:11:19,470 --> 00:11:22,720 în cazul în care nu are nici un indiciu de când "Dean" de fapt se termină. 239 00:11:22,720 --> 00:11:23,240 >> In regula. 240 00:11:23,240 --> 00:11:27,650 Deci, în memorie modul în care de fapt reprezintă în acest scop de un șir 241 00:11:27,650 --> 00:11:29,940 este cu backslash zero. 242 00:11:29,940 --> 00:11:32,620 Deci acest spațiu este exact ceea ce ne-am dorit. 243 00:11:32,620 --> 00:11:34,040 Ar trebui să fie un backslash zero. 244 00:11:34,040 --> 00:11:37,690 Acest lucru va fi un backslash la zero, și acest lucru va fi un backslash zero. 245 00:11:37,690 --> 00:11:41,585 Și puteți avea un premiu fabulos pentru a fi un voluntar perfecta. 246 00:11:41,585 --> 00:11:44,910 247 00:11:44,910 --> 00:11:45,860 Ia o minge de stres! 248 00:11:45,860 --> 00:11:49,040 249 00:11:49,040 --> 00:11:49,700 >> BINE. 250 00:11:49,700 --> 00:11:54,420 Deci, acest personaj backslash zero cum indică sfârșitul unui șir. 251 00:11:54,420 --> 00:11:57,120 E cum, atunci când orice program dat vrea să imprime un șir de caractere, 252 00:11:57,120 --> 00:11:59,760 e how-- amintesc am învățat funcția strlen săptămâna trecută? 253 00:11:59,760 --> 00:12:00,940 Lungimea șir? 254 00:12:00,940 --> 00:12:03,770 Este modul în lungime string este în măsură să a determina cât timp un șir este. 255 00:12:03,770 --> 00:12:05,810 Doar ține iterarea peste caracterele 256 00:12:05,810 --> 00:12:08,217 până când se găsește backslash caracter zero. 257 00:12:08,217 --> 00:12:11,050 Deci cel mai important lucru pentru a realiza despre caracterul backslash la zero 258 00:12:11,050 --> 00:12:14,950 este este reprezentat de toate zerouri în biți. 259 00:12:14,950 --> 00:12:18,980 Deci observați că acest lucru este distinct din caracterul zero. 260 00:12:18,980 --> 00:12:23,010 Deci caracterul zero dacă vă aduceți aminte în exemplul că a dat la sfârșitul 261 00:12:23,010 --> 00:12:27,360 de curs în cazul în care harta de caractere sa-- ca hărți de capital la A la 65 de ani. 262 00:12:27,360 --> 00:12:29,130 Minuscule un hărți pentru 97. 263 00:12:29,130 --> 00:12:30,890 Litere mici b ar fi 98. 264 00:12:30,890 --> 00:12:35,220 Astfel încât numărul 0 hărțile sa-- Eu nu fac cunosc pe partea de sus a capului meu. 265 00:12:35,220 --> 00:12:36,400 44 sau 45. 266 00:12:36,400 --> 00:12:37,890 Undeva în această regiune. 267 00:12:37,890 --> 00:12:40,850 >> Deci caracterul 0 este un număr real. 268 00:12:40,850 --> 00:12:44,350 Dar la zero backslash hărți la toate la zero biți. 269 00:12:44,350 --> 00:12:46,380 Deci, există o distincție între backslash la zero, 270 00:12:46,380 --> 00:12:48,450 care vom suna terminatorul nul. 271 00:12:48,450 --> 00:12:53,210 Există o distincție între backslash zero și caracterul zero. 272 00:12:53,210 --> 00:12:54,350 >> In regula. 273 00:12:54,350 --> 00:12:57,520 Deci, vorbim un pic mai mult despre siruri de caractere. 274 00:12:57,520 --> 00:13:01,470 Deci, apoi vom vedea aici este modul în care ar fi prevăzute în memorie. 275 00:13:01,470 --> 00:13:07,940 Deci, această idee de siruri de caractere ca o secvență de characters-- astfel încât computerul oficial 276 00:13:07,940 --> 00:13:10,750 termen sciency pentru secvență este o matrice. 277 00:13:10,750 --> 00:13:13,790 Deci am numi un șir o serie de caractere. 278 00:13:13,790 --> 00:13:17,770 Și acolo sunt de fapt alte date tipuri care putem face tablouri din. 279 00:13:17,770 --> 00:13:19,975 >> Deci, pentru a motiva acest lucru, uita-te la un exemplu. 280 00:13:19,975 --> 00:13:22,810 281 00:13:22,810 --> 00:13:29,812 Vom numi ages0.c Voi copiați și inserați șablonul nostru. 282 00:13:29,812 --> 00:13:32,470 283 00:13:32,470 --> 00:13:33,410 BINE. 284 00:13:33,410 --> 00:13:39,378 Deci, în acest program ceea ce vrei sa faci este apuca vârsta 285 00:13:39,378 --> 00:13:45,160 de trei studenți în curs. 286 00:13:45,160 --> 00:13:49,240 Deci, știm Int age-- și acum am de gând să spun 0. 287 00:13:49,240 --> 00:13:53,140 Deci, ați putea dori să spună age1, dar în scopuri vom vedea în foarte scurt timp, 288 00:13:53,140 --> 00:13:57,187 Voi spune int age0 egal getint. 289 00:13:57,187 --> 00:13:59,270 Deci același apel la getint pe care le-am folosit eu 290 00:13:59,270 --> 00:14:01,561 Nu se întâmplă să fie determinat spunând, "Dă-mi vârsta." 291 00:14:01,561 --> 00:14:03,120 Ci doar le-a solicitat. 292 00:14:03,120 --> 00:14:06,510 >> Și age1 egal getint. 293 00:14:06,510 --> 00:14:09,600 Și int age2 egal getint. 294 00:14:09,600 --> 00:14:14,070 Deci, din nou, trei elevi, dar în cele din urmă indicii variabile 295 00:14:14,070 --> 00:14:16,890 sunt age0 prin age2. 296 00:14:16,890 --> 00:14:17,550 BINE. 297 00:14:17,550 --> 00:14:23,960 Deci, acest program va face tot ce vrem cu age0, age1, și age2, 298 00:14:23,960 --> 00:14:27,670 dar în cele din urmă acest program lucrează pentru trei elevi. 299 00:14:27,670 --> 00:14:28,380 >> BINE. 300 00:14:28,380 --> 00:14:32,110 Deci, acum ce dacă vreau patru elevi? 301 00:14:32,110 --> 00:14:36,000 Ei bine, am de gând să trebuie să se întoarcă în codul meu, schimba comentariul, 302 00:14:36,000 --> 00:14:39,840 iar acum avem un int age3 egal getint. 303 00:14:39,840 --> 00:14:40,610 BINE. 304 00:14:40,610 --> 00:14:43,660 Deci care vede problema aici? 305 00:14:43,660 --> 00:14:47,310 Care e problema cu acest tip de instalare? 306 00:14:47,310 --> 00:14:47,810 Da. 307 00:14:47,810 --> 00:14:53,110 308 00:14:53,110 --> 00:14:53,610 Da. 309 00:14:53,610 --> 00:14:56,360 Deci ne crea o variabilă pentru fiecare elev. 310 00:14:56,360 --> 00:15:00,140 Acum, că funcționează, dar în cele din urmă ceea ce am acum dacă 311 00:15:00,140 --> 00:15:06,500 spune, "Vreau să apuca vârsta de opt elevi sau 16 elevi 312 00:15:06,500 --> 00:15:11,340 sau cu toate acestea multe studenții sute de studenți din CS50 313 00:15:11,340 --> 00:15:16,750 sau mii de studenți în campus sau miliarde de oameni din lume? 314 00:15:16,750 --> 00:15:19,130 Deci în cele din urmă acest lucru nu este durabilă. 315 00:15:19,130 --> 00:15:21,990 De fiecare dată când te vezi copierea și codul lipire ca aceasta, 316 00:15:21,990 --> 00:15:25,050 te, în general, ar trebui să se simtă că există o cale mai bună. 317 00:15:25,050 --> 00:15:31,290 >> Deci, aceasta este în cazul în care vom introduce o declarație matrice. 318 00:15:31,290 --> 00:15:34,564 Deci, atunci când declară un tablou, aceasta este ceea ce formatul general 319 00:15:34,564 --> 00:15:35,480 se va arata. 320 00:15:35,480 --> 00:15:36,664 Vom spune tipul. 321 00:15:36,664 --> 00:15:38,830 și apoi vom da numele pe care matrice, 322 00:15:38,830 --> 00:15:41,150 la fel cum am defini orice variabilă dată. 323 00:15:41,150 --> 00:15:43,980 Și apoi în cele din urmă pe care o folosim această notație suport din nou 324 00:15:43,980 --> 00:15:47,480 dar într-un context diferit de cum am fost folosind-o mai devreme. 325 00:15:47,480 --> 00:15:51,860 >> Deci, aici acest lucru arata ca un obișnuit declarație variabilă care le-am văzut. 326 00:15:51,860 --> 00:15:54,890 Deci am văzut int x și virgulă înainte. 327 00:15:54,890 --> 00:16:00,020 Ei bine, acum am putea vedea ceva ca int x paranteze 5. 328 00:16:00,020 --> 00:16:04,020 Și pune această idee în Programul getint că have-- 329 00:16:04,020 --> 00:16:08,850 astfel încât să putem pune în aplicare acest în același mod. 330 00:16:08,850 --> 00:16:13,630 >> Să spunem în CS avem tendința de a folosi n reprezintă numărul de ceva. 331 00:16:13,630 --> 00:16:16,150 Deci, aici vom stoca patru studenți. 332 00:16:16,150 --> 00:16:25,960 Și acum putem spune varsta int suport nu N- destul l yet-- 333 00:16:25,960 --> 00:16:32,210 să declare o serie de patru elevi. 334 00:16:32,210 --> 00:16:38,050 Deci, cum va arata in Memoria va fi similar cu acest lucru. 335 00:16:38,050 --> 00:16:39,570 Ștergeți acest. 336 00:16:39,570 --> 00:16:46,606 Și vom avea undeva în memory-- Voi pune acest acolo. 337 00:16:46,606 --> 00:16:52,690 338 00:16:52,690 --> 00:16:53,808 >> Deci, undeva în memorie. 339 00:16:53,808 --> 00:16:58,760 340 00:16:58,760 --> 00:16:59,727 Unu doi trei patru. 341 00:16:59,727 --> 00:17:03,383 342 00:17:03,383 --> 00:17:09,849 Avem patru numere întregi într-un rând pentru această serie de patru numere întregi. 343 00:17:09,849 --> 00:17:13,820 Deci, în prezent, ceea ce este Dimensiunea de unul dintre aceste cutii? 344 00:17:13,820 --> 00:17:17,190 345 00:17:17,190 --> 00:17:17,690 Da. 346 00:17:17,690 --> 00:17:18,390 E patru octeți. 347 00:17:18,390 --> 00:17:19,690 E 32 de biți. 348 00:17:19,690 --> 00:17:22,310 Deci, acum acest lucru este diferit din matrice pe care le 349 00:17:22,310 --> 00:17:24,020 văzut mai devreme, matricea de caractere. 350 00:17:24,020 --> 00:17:28,540 Într-un șir de fiecare cutie a fost doar un octet, pentru că un caracter este doar un octet. 351 00:17:28,540 --> 00:17:32,170 Dar cu o serie de numere întregi, fiecare caseta trebuie să fie patru octeți în ordine 352 00:17:32,170 --> 00:17:34,060 pentru a se potrivi un întreg număr întreg. 353 00:17:34,060 --> 00:17:37,197 Deci, asta este ceea ce o serie de patru int ar arăta. 354 00:17:37,197 --> 00:17:40,510 355 00:17:40,510 --> 00:17:43,870 >> Și apoi înapoi la codul. 356 00:17:43,870 --> 00:17:47,460 Acum vrem să efectiv magazin întregi în care matrice. 357 00:17:47,460 --> 00:17:53,470 Deci, acum aceasta este o foarte, foarte, foarte model comun, care va la un moment dat 358 00:17:53,470 --> 00:17:54,680 devin memorie musculară. 359 00:17:54,680 --> 00:17:56,710 Deci, int i este egal cu 0. 360 00:17:56,710 --> 00:17:57,940 i mai puțin n. 361 00:17:57,940 --> 00:18:01,850 Am plus plus. 362 00:18:01,850 --> 00:18:05,790 Categorie de vârstă i este egal cu getint. 363 00:18:05,790 --> 00:18:15,100 >> Deci, acest lucru pentru bucla, acest format, tu ar trebui sa foarte folosit pentru a. 364 00:18:15,100 --> 00:18:20,010 Deci, aceasta este, în general, modul în care vom itera peste aproape orice matrice. 365 00:18:20,010 --> 00:18:23,690 Acum observați acest tip de explică de ce de la început 366 00:18:23,690 --> 00:18:29,870 nu am avut pentru bucle merge pentru Int i este egal cu 1, i mai mică sau egală cu 10. 367 00:18:29,870 --> 00:18:34,200 Motivul fiind că, începând de la zero, face ca acest lucru bine cu tablouri. 368 00:18:34,200 --> 00:18:36,270 Deci, matrice sunt zero indexate. 369 00:18:36,270 --> 00:18:40,360 Dacă această matrice este de lungime 4, indicii sunt de la 0 la 3. 370 00:18:40,360 --> 00:18:42,880 >> Deci prin primul repetare a acestei pentru bucla 371 00:18:42,880 --> 00:18:49,930 vom fi stabilirea vârstei suport 0 egal cu un apel la getint. 372 00:18:49,930 --> 00:18:52,440 Deci, tot ce sa întâmplat pentru a intra la tastatura. 373 00:18:52,440 --> 00:18:56,970 În a doua trecere, suntem setarea age1 egal cu getint. 374 00:18:56,970 --> 00:18:58,230 Pass al treilea rând, age2. 375 00:18:58,230 --> 00:18:59,880 Age3 treci finală. 376 00:18:59,880 --> 00:19:05,750 Deci, dacă în prima trecere a buclei Am introduceți numărul 4 de la tastatura, 377 00:19:05,750 --> 00:19:07,740 atunci vom introduce o 4 aici. 378 00:19:07,740 --> 00:19:11,470 În cazul în care a doua trecere am intra 50, vom pune un 50 aici. 379 00:19:11,470 --> 00:19:15,180 La a treia trecere am putea introduceți negativ 1, 1 negativ, 380 00:19:15,180 --> 00:19:21,810 și în final, dacă am intra 0-- și acum amintiți-vă că acest lucru a fost indice trei. 381 00:19:21,810 --> 00:19:25,350 >> După ce am buclă înapoi, i este va fi incrementat la 4. 382 00:19:25,350 --> 00:19:27,770 i nu mai este mai mică n, care este 4. 383 00:19:27,770 --> 00:19:29,840 Și am iesi din bucla. 384 00:19:29,840 --> 00:19:32,578 Deci, ceea ce ar fi în neregulă cu asta? 385 00:19:32,578 --> 00:19:38,140 386 00:19:38,140 --> 00:19:38,729 [Inaudibil]? 387 00:19:38,729 --> 00:19:39,604 Audiența: [inaudibil] 388 00:19:39,604 --> 00:19:45,880 389 00:19:45,880 --> 00:19:46,400 >> Da. 390 00:19:46,400 --> 00:19:51,550 Deci matrice are doar patru locuri, ceea ce înseamnă ca indici 0 prin 3. 391 00:19:51,550 --> 00:19:55,630 Deci, dacă acesta ar fi cazul, aș ia pe valoarea 4 la un moment dat. 392 00:19:55,630 --> 00:20:00,910 categorie de vârstă 4 va fi stabilirea orice se întâmplă să fie aici 393 00:20:00,910 --> 00:20:02,920 la ceea ce am de spus, intre 6. 394 00:20:02,920 --> 00:20:05,010 Care va fi setarea asta 6. 395 00:20:05,010 --> 00:20:06,560 >> Dar noi nu știm ce e aici. 396 00:20:06,560 --> 00:20:08,836 Acest lucru nu este de memorie care am avut acces. 397 00:20:08,836 --> 00:20:10,710 Deci, dacă vă aduceți aminte de prelegerea anterioară, 398 00:20:10,710 --> 00:20:14,350 el a fost imprimarea valori de Zamyla și la un moment dat el a lovit acest segmentare 399 00:20:14,350 --> 00:20:17,990 vina. Deci, va fi, probabil, văzând multe greșeli de segmentare ca tine 400 00:20:17,990 --> 00:20:20,530 punerea în aplicare a unora dintre seturi problemă. 401 00:20:20,530 --> 00:20:24,950 Dar aceasta este una dintre modalitățile în care puteți întâlni o segmentare 402 00:20:24,950 --> 00:20:28,540 vina, atunci când veți începe accesarea de memorie în moduri pe care nu ar trebui să fie. 403 00:20:28,540 --> 00:20:34,117 Deci nu am avut acces la această locație și acest lucru este un bug. 404 00:20:34,117 --> 00:20:37,760 405 00:20:37,760 --> 00:20:40,190 >> Deci acest lucru este mai bine. 406 00:20:40,190 --> 00:20:45,820 Acum există încă o mică problema cu acest cod. 407 00:20:45,820 --> 00:20:50,720 Și asta e de fapt ca suntem inca blocati la patru studenți. 408 00:20:50,720 --> 00:20:52,940 Acum, dacă vreau să folosesc opt elevi, OK. 409 00:20:52,940 --> 00:20:54,350 Nu e mare lucru. 410 00:20:54,350 --> 00:20:58,120 Eu pot merge în, schimba comenteze, și de a schimba n. 411 00:20:58,120 --> 00:20:59,760 Acum, acest lucru va lucra cu opt elevi. 412 00:20:59,760 --> 00:21:02,190 Dacă am compila și rula acest acest lucru, va arăta mine-- 413 00:21:02,190 --> 00:21:07,870 se va solicita întregi pentru opt studenți și va funcționa doar. 414 00:21:07,870 --> 00:21:11,850 Dar e mai puțin de ideal pentru a trebui să recompilați programul de fiecare dată 415 00:21:11,850 --> 00:21:15,960 Vreau pentru a modifica numărul de studenți pe care vreau să intre vârstele de. 416 00:21:15,960 --> 00:21:22,990 >> Deci îmbunătățirea finală pe acest lucru, deoarece vom vedea here-- suntem 417 00:21:22,990 --> 00:21:26,177 O să solicite numărul de persoane. 418 00:21:26,177 --> 00:21:28,010 Aici avem un număr de persoane în camere 419 00:21:28,010 --> 00:21:29,880 sau orice varsta de persoane în cameră. 420 00:21:29,880 --> 00:21:33,300 Dar am de gând să solicite numărul de persoane în cameră din partea utilizatorului. 421 00:21:33,300 --> 00:21:36,171 Deci, acesta este exact același do-timp bucla pe care le-am văzut înainte. 422 00:21:36,171 --> 00:21:37,920 Este exact același do-timp bucla pe care le 423 00:21:37,920 --> 00:21:40,050 pot fi de punere în aplicare pe platourile de filmare problema. 424 00:21:40,050 --> 00:21:43,102 Deci, atâta timp cât acestea sunt Introducerea unei n mai puțin de 1, 425 00:21:43,102 --> 00:21:45,310 deci nu trebuie să existe la puțin o persoană în cameră. 426 00:21:45,310 --> 00:21:47,407 Atâta timp cât acestea sunt Introducerea unei n mai puțin de 1, 427 00:21:47,407 --> 00:21:48,990 apoi vom păstra cere din nou. 428 00:21:48,990 --> 00:21:50,906 Vă rugăm să introduceți numărul de oameni în cameră. 429 00:21:50,906 --> 00:21:53,550 Acum, odată ce avem numărul de oameni în room-- 430 00:21:53,550 --> 00:21:58,020 așa că am putea intra că există sunt 200 de persoane în această cameră. 431 00:21:58,020 --> 00:22:05,480 Atunci aici vom veni și să declare o serie de dimensiuni 200. 432 00:22:05,480 --> 00:22:10,220 Suntem declarând matrice care este suficient de mare pentru a ține 200 de varsta. 433 00:22:10,220 --> 00:22:15,370 Venind în jos, e pentru bucla ca vei primi foarte folosit pentru a. 434 00:22:15,370 --> 00:22:19,490 Deci, iterarea peste această matrice, atribuirea fiecare locație 435 00:22:19,490 --> 00:22:23,020 în matrice un număr întreg, și apoi în cele din urmă aici suntem 436 00:22:23,020 --> 00:22:28,340 doar obtinerea un exemplu de itera peste care matrice, pentru a nu atribui valori, 437 00:22:28,340 --> 00:22:30,150 dar pentru a avea acces valori. 438 00:22:30,150 --> 00:22:33,810 >> Deci, aici vom vedea că noi spun, un an de acum, 439 00:22:33,810 --> 00:22:40,470 persoana% i se va fi% i ani, în cazul în care prima% i este i plus 1. 440 00:22:40,470 --> 00:22:43,010 Deci i este această variabilă index. 441 00:22:43,010 --> 00:22:49,420 Iar cea de a doua% I este mergi la a fi valoare stocată în matrice varsta plus 1. 442 00:22:49,420 --> 00:22:54,217 Deci, acest plus 1 este doar pentru că suntem saying-- acest plus 1, vârstele i plus 1. 443 00:22:54,217 --> 00:22:57,050 Acest plus 1 este doar pentru că suntem spune, la un an de acum persoana 444 00:22:57,050 --> 00:22:58,280 va fi acest vechi. 445 00:22:58,280 --> 00:23:01,080 >> Deci, de ce este acest eu plus 1? 446 00:23:01,080 --> 00:23:04,064 De ce avem un plus 1 acolo? 447 00:23:04,064 --> 00:23:04,564 Da. 448 00:23:04,564 --> 00:23:07,410 449 00:23:07,410 --> 00:23:07,930 Da. 450 00:23:07,930 --> 00:23:10,510 Deci, amintiți-vă matrice sunt zero indexate. 451 00:23:10,510 --> 00:23:14,840 Deci, dacă ne-am tipăriți asta pentru cineva să citească doar de ieșire, 452 00:23:14,840 --> 00:23:19,380 apoi, probabil, ei vor să vadă ceva ca persoană o, persoană numărul unu, 453 00:23:19,380 --> 00:23:21,160 va fi de 20 de ani. 454 00:23:21,160 --> 00:23:23,570 Persoana numărul doi va fi de 15 de ani. 455 00:23:23,570 --> 00:23:27,420 Mai degrabă că nu voi vedea persoana Numărul zero, este de 15 de ani. 456 00:23:27,420 --> 00:23:36,460 >> Deci, compilarea acest lucru și doar a vedea ce se pare like-- Creați spațiu. 457 00:23:36,460 --> 00:23:43,560 Face vârstele Întocmește. 458 00:23:43,560 --> 00:23:45,080 Rularea vârstele. 459 00:23:45,080 --> 00:23:46,580 Vedem Numărul de persoane în cameră. 460 00:23:46,580 --> 00:23:48,850 Așa că voi spune că există trei persoane în cameră. 461 00:23:48,850 --> 00:23:54,000 Vârsta persoanei numărul unu, să zicem 15, 20, 25. 462 00:23:54,000 --> 00:23:59,680 Și acum voi spune de un an de la acum vor fi de 16, 21, 26. 463 00:23:59,680 --> 00:24:02,900 Să vedem care aceasta funcționează cu o n care nu este egal cu 3. 464 00:24:02,900 --> 00:24:07,940 Deci, dacă spun număr de persoane este de 5, o, doi, trei, doi, unu, un an de acum 465 00:24:07,940 --> 00:24:11,170 vor fi două, trei, patru, trei, doi ani. 466 00:24:11,170 --> 00:24:16,500 Așa că am putut la fel de ușor n-au să fie de 10.000. 467 00:24:16,500 --> 00:24:21,270 Acum voi sta aici pentru destul de o vreme a intra vârstele, dar aceasta functioneaza. 468 00:24:21,270 --> 00:24:26,000 >> Deci, acum în memorie undeva am au o serie de dimensiuni 10.000, 469 00:24:26,000 --> 00:24:28,830 astfel în cele din urmă 40.000 bytes, pentru că există 470 00:24:28,830 --> 00:24:31,222 patru octeți pentru fiecare dintre aceste numere întregi. 471 00:24:31,222 --> 00:24:33,180 Deci, există o serie de Dimensiunea 10.000 unde putem 472 00:24:33,180 --> 00:24:36,201 stoca cu varste cuprinse intre acei 10.000 de oameni. 473 00:24:36,201 --> 00:24:36,700 In regula. 474 00:24:36,700 --> 00:24:40,070 Întrebări despre toate astea? 475 00:24:40,070 --> 00:24:41,892 Da. 476 00:24:41,892 --> 00:24:43,350 Ce se întâmplă dacă ți-a dat un număr negativ? 477 00:24:43,350 --> 00:24:44,870 Să vedem ce se întâmplă. 478 00:24:44,870 --> 00:24:49,320 Deci, în acest număr special case-- de oameni in camera, cel negativ. 479 00:24:49,320 --> 00:24:52,580 A respins ca, pentru că aici am întâmpla 480 00:24:52,580 --> 00:24:57,180 să gestioneze faptul că dacă n este mai putin de un vom cere din nou. 481 00:24:57,180 --> 00:25:01,780 Dacă încercați să declare un matrice de dimensiune negativ, 482 00:25:01,780 --> 00:25:03,950 în general, nu funcționează. 483 00:25:03,950 --> 00:25:05,570 >> Deci, hai să încercăm. 484 00:25:05,570 --> 00:25:08,000 Să ignorăm orice Valoarea ei de intrare pentru n 485 00:25:08,000 --> 00:25:10,571 și spune doar varste int negativ. 486 00:25:10,571 --> 00:25:12,410 Să vedem dacă se compilează chiar. 487 00:25:12,410 --> 00:25:14,100 Nu sunt sigur. 488 00:25:14,100 --> 00:25:14,920 Nu. 489 00:25:14,920 --> 00:25:18,280 Deci, varsta este declarat ca un matrice cu o dimensiune negativă. 490 00:25:18,280 --> 00:25:22,540 Deci avans recunoaște o serie nu poate fie de dimensiuni negativ și respinge. 491 00:25:22,540 --> 00:25:26,840 Acum, dacă nu ne-am descurca această buclă în timp ce do-corect, 492 00:25:26,840 --> 00:25:28,810 dacă nu am fost de verificare dacă n este mai mic de 1-- 493 00:25:28,810 --> 00:25:32,690 să spunem ne-am nu au avut acest lucru la toate 494 00:25:32,690 --> 00:25:35,940 și în loc am apuca doar un număr întreg. 495 00:25:35,940 --> 00:25:40,710 Indiferent de ceea ce că întreg este, declaram o serie de această mărime. 496 00:25:40,710 --> 00:25:44,250 >> Deci compilatorul nu poate eventual se plâng acum. 497 00:25:44,250 --> 00:25:48,780 Dacă am compila astea-- astfel că nu se poate plânge, 498 00:25:48,780 --> 00:25:51,480 deoarece nu se poate ști că eu sunt merge pentru a introduce un număr negativ, 499 00:25:51,480 --> 00:25:52,550 care ar putea fi invalid. 500 00:25:52,550 --> 00:25:54,633 Pentru tot ce știe, aș putea introduceți un număr pozitiv, 501 00:25:54,633 --> 00:25:56,000 care este perfect valabil. 502 00:25:56,000 --> 00:26:01,090 Așa că am imagina, dacă am intra negativ 1 persoane în cameră, segmentarea vina. 503 00:26:01,090 --> 00:26:06,040 >> Deci bine. 504 00:26:06,040 --> 00:26:13,160 Așa că haideți să adaugi acest înapoi doar păstrați-l ceea ce a fost inițial. 505 00:26:13,160 --> 00:26:15,640 Deci, asigurați-vârstele. 506 00:26:15,640 --> 00:26:18,120 Acum, dacă vreau să încerc o negativ age-- Să 507 00:26:18,120 --> 00:26:19,710 spune că există cinci persoane în cameră. 508 00:26:19,710 --> 00:26:23,180 Vârsta persoanei numărul unu este negativ 4, persoana trei 509 00:26:23,180 --> 00:26:26,500 este zero, persoană three-- OK. 510 00:26:26,500 --> 00:26:29,850 Deci, aici, un an de acum, numărul persoană unul va fi negativ de 3 ani. 511 00:26:29,850 --> 00:26:32,830 Deci, probabil, nu are sens. 512 00:26:32,830 --> 00:26:37,220 Dar asta e doar pentru că în căutarea la codul Tot ce facem 513 00:26:37,220 --> 00:26:40,260 solicită getint. 514 00:26:40,260 --> 00:26:44,110 >> Acum, dacă am fi avut Funcția GetPositiveInt 515 00:26:44,110 --> 00:26:49,690 sau am făcut pur și simplu acest un fel de buclă în timp ce același acolo, 516 00:26:49,690 --> 00:26:52,340 atunci acest lucru ar funcționa foarte bine. 517 00:26:52,340 --> 00:26:54,200 Dar, în acest special caz, pur și simplu nu 518 00:26:54,200 --> 00:26:57,772 se întâmplă să fie de manipulare valori negative. 519 00:26:57,772 --> 00:26:59,147 Orice alte întrebări cu privire la matrice? 520 00:26:59,147 --> 00:27:02,290 521 00:27:02,290 --> 00:27:03,250 BINE. 522 00:27:03,250 --> 00:27:09,380 >> Deci am văzut acum tablouri. 523 00:27:09,380 --> 00:27:12,500 Și vom necesitatea de a utiliza acest lucru pentru argumente în linia de comandă. 524 00:27:12,500 --> 00:27:14,680 Deci, în problema set two-- Știu că mulți dintre voi 525 00:27:14,680 --> 00:27:18,040 ar putea fi încă lucrează la set problemă o, dar problema a seta două se apropie. 526 00:27:18,040 --> 00:27:22,260 În problema set de două, ai de gând să trebuie să se ocupe cu siruri de caractere, tablouri, 527 00:27:22,260 --> 00:27:23,950 și argumente în linia de comandă. 528 00:27:23,950 --> 00:27:26,270 >> Deci, ce sunt argumente în linia de comandă? 529 00:27:26,270 --> 00:27:29,570 Acum, puteți vedea aici o puțin teaser pentru exact ceea ce este 530 00:27:29,570 --> 00:27:30,950 O să se întâmple. 531 00:27:30,950 --> 00:27:32,950 Vedem Int argc principal, Inc, paranteze string argv. 532 00:27:32,950 --> 00:27:34,560 533 00:27:34,560 --> 00:27:38,130 Deci, în primul rând să încercăm să interpreteze ce care încearcă să spună. 534 00:27:38,130 --> 00:27:40,800 Acum bine. 535 00:27:40,800 --> 00:27:44,637 >> Deci, la linia de comandă ar trebui să fie obtinerea folosit la unele dintre aceste comenzi 536 00:27:44,637 --> 00:27:48,580 acum, și v-ați rula probabil, cd în terminalul înainte. 537 00:27:48,580 --> 00:27:52,100 Deci, dacă spunem cd pset1, Știi că ar trebui 538 00:27:52,100 --> 00:27:55,050 fie schimbarea în directorul pset1. 539 00:27:55,050 --> 00:27:59,120 >> Acum observați că nu ați scris un program ca acest lucru înainte. 540 00:27:59,120 --> 00:28:03,120 Fiecare program pe care le-ați scris, v-ar alerga, să zicem, dot slash Mario, 541 00:28:03,120 --> 00:28:06,779 dot slash lacomi, și apoi ar putea să vă solicite pentru intrare. 542 00:28:06,779 --> 00:28:08,570 Acum, asta e ceea ce nu director schimbare face. 543 00:28:08,570 --> 00:28:12,770 Când rulați CD, nu atunci spune, care directorul vrei să CD în? 544 00:28:12,770 --> 00:28:17,200 În schimb, ai spus, cd pset1, și doar merge în directorul pset1. 545 00:28:17,200 --> 00:28:20,430 >> Deci, în mod similar, avem alte exemple. 546 00:28:20,430 --> 00:28:21,540 face salut. 547 00:28:21,540 --> 00:28:25,760 Când executați face, nu atunci spune, ce program doriți să? 548 00:28:25,760 --> 00:28:29,620 Trebuie doar spun, la linie de comandă face salut. 549 00:28:29,620 --> 00:28:31,060 >> Move este un alt exemplu. 550 00:28:31,060 --> 00:28:34,840 Acesta ne mutați mario.c fișier up un director. 551 00:28:34,840 --> 00:28:38,060 Deci, acum stim cu acest exemplu suntem într-adevăr trece două argumente. 552 00:28:38,060 --> 00:28:42,090 Există mario.c ca primul argument, și punct punct este al doilea argument. 553 00:28:42,090 --> 00:28:46,140 Și când tu a alerga face, te vezi comanda foarte lung line-- 554 00:28:46,140 --> 00:28:50,580 comanda foarte lung tipărită la linia de comandă. 555 00:28:50,580 --> 00:28:53,590 Astfel încât timp command-- acest este doar o scurtă parte din ea, 556 00:28:53,590 --> 00:28:56,090 dar acum avem trei argumente în linia de comandă. 557 00:28:56,090 --> 00:28:59,750 Punct bord la zero, salut, și hello.c. 558 00:28:59,750 --> 00:29:03,497 >> Deci, acestea sunt de linie de comandă argumente, argumente 559 00:29:03,497 --> 00:29:05,580 că sunteți trece la linie de comandă, astfel încât să 560 00:29:05,580 --> 00:29:08,680 nu trebuie să vi se solicite atunci când executați programul. 561 00:29:08,680 --> 00:29:13,090 Ar fi frustrant dacă atunci când Ai fugit clang spus, "OK, 562 00:29:13,090 --> 00:29:15,630 care program-- care fișier te compilarea? 563 00:29:15,630 --> 00:29:17,010 Hello.c. 564 00:29:17,010 --> 00:29:19,440 Ce steaguri ar tine dori să intre? bord o. 565 00:29:19,440 --> 00:29:21,190 Ce ai dori fișierul să fie numit? 566 00:29:21,190 --> 00:29:21,690 Alo. 567 00:29:21,690 --> 00:29:25,290 Nu, tu a alerga doar zăngănit lovești o salut hello.c. 568 00:29:25,290 --> 00:29:28,820 >> Deci, privind înapoi la asta. 569 00:29:28,820 --> 00:29:32,920 Acum argc argc-- este conteaza argument. 570 00:29:32,920 --> 00:29:36,620 Este numărul de linie de comandă argumente intrat în linia de comandă. 571 00:29:36,620 --> 00:29:39,720 Ei bine, argv-- tehnic v vine de vector, 572 00:29:39,720 --> 00:29:41,460 ceea ce înseamnă în esență matrice. 573 00:29:41,460 --> 00:29:42,680 Dar puteți ignora asta. 574 00:29:42,680 --> 00:29:47,540 Argv-- avem șir argv, astfel încât între paranteze string argv. 575 00:29:47,540 --> 00:29:50,150 Deci aceasta este o altă formă de paranteze nu ați mai văzut înainte. 576 00:29:50,150 --> 00:29:52,300 Suport așa că am văzut notație atunci când ne-am spus, 577 00:29:52,300 --> 00:29:53,970 cum ar fi, string s egal Zamyla. 578 00:29:53,970 --> 00:29:56,910 s suport 0 accesează Z. caracter 579 00:29:56,910 --> 00:30:00,720 >> Am văzut, de asemenea, atunci când paranteze am spus vârstele int bracketing 5. 580 00:30:00,720 --> 00:30:03,160 Care a declarat o serie de dimensiuni 5. 581 00:30:03,160 --> 00:30:06,280 Deci, aici este o versiune a paranteze nu am mai văzut până acum. 582 00:30:06,280 --> 00:30:09,630 Deci, acest tip de șir argv care ar fi complet familiar 583 00:30:09,630 --> 00:30:12,050 că ar fi doar un șir. 584 00:30:12,050 --> 00:30:14,520 Acum paranteze indică că aceasta este o matrice. 585 00:30:14,520 --> 00:30:19,920 Deci suporturi string argv mijloace că argv este un tablou de siruri de caractere. 586 00:30:19,920 --> 00:30:22,540 Acum punct de vedere tehnic un șir este o serie de caractere. 587 00:30:22,540 --> 00:30:26,400 Deci, aceasta este acum o matrice de o serie de caractere. 588 00:30:26,400 --> 00:30:31,490 Dar este mult mai ușor să se gândească la acest lucru ca doar o serie de siruri de caractere. 589 00:30:31,490 --> 00:30:34,900 >> Deci, de ce s-ar putea paranteze fie gol? 590 00:30:34,900 --> 00:30:38,170 Cum ar fi, de ce nu putem spune, suport 5, suport n? 591 00:30:38,170 --> 00:30:40,700 592 00:30:40,700 --> 00:30:41,200 Da. 593 00:30:41,200 --> 00:30:43,731 594 00:30:43,731 --> 00:30:44,230 Da. 595 00:30:44,230 --> 00:30:46,396 Nu știm cât de multe intrări de acolo vor fi. 596 00:30:46,396 --> 00:30:53,560 Deci, dacă ne uităm la exemplul zăngănit, spunem clang bord o salut hello.c. 597 00:30:53,560 --> 00:30:56,710 În acest caz particular, nu se întâmplă să fie de trei argumente în linia de comandă. 598 00:30:56,710 --> 00:31:00,522 Și astfel brackets-- vom vedea într-un al doilea nu ar fi trei. 599 00:31:00,522 --> 00:31:01,730 Este punct de vedere tehnic ar fi patru. 600 00:31:01,730 --> 00:31:04,030 Dar paranteze, ne-ar să zicem, există trei. 601 00:31:04,030 --> 00:31:08,220 Dar acum, dacă ne-am uitat la mișcare mario.c dot dot, suporturile 602 00:31:08,220 --> 00:31:09,760 ne-ar dori să pună două în ele. 603 00:31:09,760 --> 00:31:12,884 >> Și există o mulțime de comenzi care au un număr variabil de linie de comandă 604 00:31:12,884 --> 00:31:13,620 argumente. 605 00:31:13,620 --> 00:31:17,430 Deci, ce această versiune a notație suport indică 606 00:31:17,430 --> 00:31:20,820 este că argv este un tablou de siruri de caractere. 607 00:31:20,820 --> 00:31:24,360 Dar nu știm cât de multe siruri de caractere sunt în matrice. 608 00:31:24,360 --> 00:31:27,090 Și cum putem să știți cum mai multe siruri de caractere sunt în matrice? 609 00:31:27,090 --> 00:31:28,870 Asta e ideea argc. 610 00:31:28,870 --> 00:31:32,300 argc ne spune cât timp argv este. 611 00:31:32,300 --> 00:31:36,500 >> Deci, ultimul lucru de a păstra în minte este că, punct de vedere tehnic, 612 00:31:36,500 --> 00:31:40,820 comanda se numără printre din argumentele de linie de comandă. 613 00:31:40,820 --> 00:31:45,330 Deci cd pset1, există două argumente în linia de comandă. 614 00:31:45,330 --> 00:31:50,260 Programul în sine, CD, apoi partea argument real de ea, pset1. 615 00:31:50,260 --> 00:31:54,490 Orice program care le-ați scris până acum a avut o linie de comandă argument-- dot 616 00:31:54,490 --> 00:31:55,320 slash Mario. 617 00:31:55,320 --> 00:31:57,350 Că este singurul argument linie de comandă. 618 00:31:57,350 --> 00:32:00,900 >> Deci, acum se uită la zăngănit lovești o salut hello.c. 619 00:32:00,900 --> 00:32:01,905 Deci, ce este 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 Deci argc este de 4. 623 00:32:08,140 --> 00:32:12,140 Zăngăni, suport așa argv 0 este zăngănit. 624 00:32:12,140 --> 00:32:15,630 argv suport 1 este liniuță 0. 625 00:32:15,630 --> 00:32:21,870 argv suport 2 este Bună ziua, și argv suport 3 este hello.c. 626 00:32:21,870 --> 00:32:26,813 Ok, deci întrebări cu privire la acest, iar apoi vom uita-te la câteva exemple programatice. 627 00:32:26,813 --> 00:32:29,460 628 00:32:29,460 --> 00:32:30,480 >> BINE. 629 00:32:30,480 --> 00:32:36,260 Deci, vom arunca o privire la hello3.c. 630 00:32:36,260 --> 00:32:41,890 Deci, acest lucru ar trebui să fie familiar de la unul dintre primele exemple c 631 00:32:41,890 --> 00:32:45,800 am avut unde ne-ar spune doar, salut lume, dar acum acest lucru este mai generală. 632 00:32:45,800 --> 00:32:52,300 Deci, aici suntem spune salut % s backslash n suport argv 1. 633 00:32:52,300 --> 00:32:57,440 Notice-- așa până acest moment, aceasta este ceea ce dosarul meu șablon a semăna. 634 00:32:57,440 --> 00:33:01,800 Am avut int main (void), iar apoi aș face ceva în funcția principală. 635 00:33:01,800 --> 00:33:05,100 Acum, în loc, odată ce începe a face cu argumente în linia de comandă, 636 00:33:05,100 --> 00:33:07,890 avem nevoie pentru a afirma o diferite forme de principal. 637 00:33:07,890 --> 00:33:11,930 >> Deci, se uită la hello3 din nou, principalele merge 638 00:33:11,930 --> 00:33:15,990 să ia două argumente now-- Int argc, numărul de argumente în linia de comandă, 639 00:33:15,990 --> 00:33:20,970 și șir argv paranteze, real siruri de caractere a intrat în linia de comandă. 640 00:33:20,970 --> 00:33:26,560 Deci, am de gând să schimb asta șablon pentru a reflecta acest fapt. 641 00:33:26,560 --> 00:33:29,060 Acum ori de câte ori scrie un program, dacă nu 642 00:33:29,060 --> 00:33:33,720 trebuie să ia orice linie de comandă argumente, apoi utilizați doar int main (void). 643 00:33:33,720 --> 00:33:37,070 Dar acum, când scrii programe de argument de linie de comandă, care 644 00:33:37,070 --> 00:33:40,350 ai de gând să faci pentru problema set two-- Deci, acum că rulați 645 00:33:40,350 --> 00:33:42,630 programe care au nevoie pentru a lua argumente în linia de comandă, 646 00:33:42,630 --> 00:33:45,250 aveți nevoie de principal al acestui formular. 647 00:33:45,250 --> 00:33:51,290 >> Deci here-- acest lucru este utilizarea de mare de argumentul de linie de comandă. 648 00:33:51,290 --> 00:33:54,100 Deci, imprimarea argv 1. 649 00:33:54,100 --> 00:33:59,180 OK Să compila și a alerga acest program. 650 00:33:59,180 --> 00:34:02,440 Face hello3. 651 00:34:02,440 --> 00:34:03,570 Compilează. 652 00:34:03,570 --> 00:34:06,870 Dot slash hello3. 653 00:34:06,870 --> 00:34:08,920 Și să spunem, "Rob." 654 00:34:08,920 --> 00:34:10,760 Buna ziua Rob. 655 00:34:10,760 --> 00:34:14,940 Dacă spun, "Bună ziua Maria," salut Maria. 656 00:34:14,940 --> 00:34:15,719 Buna ziua Maria. 657 00:34:15,719 --> 00:34:18,639 Hannah încă spune: "Hello Maria ", pentru că eu nu sunt 658 00:34:18,639 --> 00:34:21,340 a face ceva cu argv nostru 2. 659 00:34:21,340 --> 00:34:22,590 Argv 2 acum ar fi "Hannah." 660 00:34:22,590 --> 00:34:25,030 Argc ar fi 3. 661 00:34:25,030 --> 00:34:27,735 Ce se întâmplă dacă am făcut acest lucru? 662 00:34:27,735 --> 00:34:31,980 663 00:34:31,980 --> 00:34:34,679 Deci, salut null. 664 00:34:34,679 --> 00:34:38,760 >> El a atins pentru scurt timp cu privire la faptul că, tehnic, getString 665 00:34:38,760 --> 00:34:42,429 s-ar putea întoarce null, dar vom avea o mult mai mult în ceea ce este de fapt nul. 666 00:34:42,429 --> 00:34:47,449 Dar ia ca o chestiune de fapt ce nu este, în general rău. 667 00:34:47,449 --> 00:34:50,179 Am făcut ceva greșit, dacă se imprimă "hello null." 668 00:34:50,179 --> 00:34:52,179 Și motivul pentru care am făcut ceva în neregulă este-- bine, 669 00:34:52,179 --> 00:34:56,179 când am fugit punct hello3 slash, argc a fost 1. 670 00:34:56,179 --> 00:34:59,680 Asta înseamnă că lungimea argv a fost 1. 671 00:34:59,680 --> 00:35:05,110 În cazul în care o serie este de lungime 1, singurul indice valid este zero. 672 00:35:05,110 --> 00:35:08,550 Și astfel aici argv 1 este în afara gama de această matrice. 673 00:35:08,550 --> 00:35:13,410 Acesta a fost similar cu înainte, când am încercat pentru a stoca 6 afara sfârșitul șirului. 674 00:35:13,410 --> 00:35:18,100 Așa că încerc să acceseze ceva în afara contează argv, 675 00:35:18,100 --> 00:35:21,340 si primim null. 676 00:35:21,340 --> 00:35:24,360 >> Deci, o versiune mai bună a acest, o îmbunătățire, 677 00:35:24,360 --> 00:35:27,010 verifică în mod explicit argc. 678 00:35:27,010 --> 00:35:33,580 Deci, dacă argc este egal cu 2, înseamnă că am fugit ceva de genul dot slash hello3 Rob. 679 00:35:33,580 --> 00:35:36,840 Și se va imprima "salut Rob." 680 00:35:36,840 --> 00:35:39,850 Dacă nu este egal cu argc 2, atunci este doar de gând 681 00:35:39,850 --> 00:35:42,560 pentru a ignora orice ai pune la argumentul de linie de comandă 682 00:35:42,560 --> 00:35:43,960 ca argumente în linia de comandă. 683 00:35:43,960 --> 00:35:47,168 Sau dacă nu ați pus nici la toate, e doar de gând să ignore faptul că și spun doar, 684 00:35:47,168 --> 00:35:47,960 "Salut tu." 685 00:35:47,960 --> 00:35:51,490 >> Deci, compilarea asta. 686 00:35:51,490 --> 00:35:54,500 Face hello4. 687 00:35:54,500 --> 00:35:56,790 Și să fie difuzate hello4. 688 00:35:56,790 --> 00:36:00,010 Rularea în felul acesta, ceea ce ar trebui să fie tipărite? 689 00:36:00,010 --> 00:36:01,330 "Salut tu." 690 00:36:01,330 --> 00:36:02,810 Salut tu. 691 00:36:02,810 --> 00:36:05,870 Ce zici de hello4 Rob? 692 00:36:05,870 --> 00:36:06,950 "Bună ziua Rob." 693 00:36:06,950 --> 00:36:10,580 Și, în sfârșit, salut Rob Maria este doar "salut You", din nou, 694 00:36:10,580 --> 00:36:13,677 pentru că nu a intrat într-adevăr ceva care se aștepta. 695 00:36:13,677 --> 00:36:15,510 Ați introdus mai multe nume decât s-ar putea descurca, 696 00:36:15,510 --> 00:36:19,500 așa că doar implicit la Hello te comportamentul. 697 00:36:19,500 --> 00:36:23,040 Deci, întrebări cu privire la această? 698 00:36:23,040 --> 00:36:26,290 Sau argumente în linia de comandă? 699 00:36:26,290 --> 00:36:28,690 >> OK, deci a lua o privire la o cuplu mai multe exemple de utilizare 700 00:36:28,690 --> 00:36:34,230 linie de comandă arguments-- primul am argv bord 1 punct c. 701 00:36:34,230 --> 00:36:38,510 Deci, comentariile da ceea ce acest program ar trebui să facă. 702 00:36:38,510 --> 00:36:42,460 Dar observați now-- acest lucru pentru bucla, acest potrivește modelul exact 703 00:36:42,460 --> 00:36:43,390 Spuneam mai înainte. 704 00:36:43,390 --> 00:36:46,240 Doar se întâmplă să fie folosind argc loc de n. 705 00:36:46,240 --> 00:36:48,880 Acum argc este într-adevăr n. 706 00:36:48,880 --> 00:36:51,260 Este lungimea matrice argv. 707 00:36:51,260 --> 00:36:59,600 Deci, sunt iterarea peste argv matrice printf-ing fiecare valoare argv. 708 00:36:59,600 --> 00:37:04,730 >> Deci, dacă am face acest lucru. 709 00:37:04,730 --> 00:37:08,232 Face argv 1. 710 00:37:08,232 --> 00:37:09,940 Ea compilează. 711 00:37:09,940 --> 00:37:11,620 Dot slash argv 1. 712 00:37:11,620 --> 00:37:15,530 Doar rulează acest lucru, printuri dot slash argv 1 713 00:37:15,530 --> 00:37:18,500 din moment ce a fost singura linie de comandă argument-- numele programului. 714 00:37:18,500 --> 00:37:22,080 Nu va fi întotdeauna la least-- argc nu poate fi mai mic de unu, 715 00:37:22,080 --> 00:37:25,910 deoarece nu va fi întotdeauna cel puțin fie numele programului pentru a rula. 716 00:37:25,910 --> 00:37:32,040 Deci, argv 1 Rob va imprima argv 1 și apoi pe noua linie "Rob." 717 00:37:32,040 --> 00:37:36,350 >> Deci, în prima iterație de această buclă, i este 0. 718 00:37:36,350 --> 00:37:39,090 Argv 0 este numele programului. 719 00:37:39,090 --> 00:37:40,010 Dot slash argv 1. 720 00:37:40,010 --> 00:37:43,770 Și apoi argv 1 este primul meu argument de linie de comandă, care este Rob. 721 00:37:43,770 --> 00:37:45,920 În acest moment, suntem egale cu argc. 722 00:37:45,920 --> 00:37:48,210 Am iesi din bucla si am terminat. 723 00:37:48,210 --> 00:37:53,940 Deci, acest lucru va lucra pentru o arbitrare Numărul de argumente în linia de comandă. 724 00:37:53,940 --> 00:37:58,550 Observați se imprimă argv 0, argv 1, argv 2, argv 3, 4 argv. 725 00:37:58,550 --> 00:38:00,150 Și nu există nici argv 5. 726 00:38:00,150 --> 00:38:01,460 argc este egal cu 5. 727 00:38:01,460 --> 00:38:06,960 Deci, la argc-- la i este egal cu 5, am iesi din bucla. 728 00:38:06,960 --> 00:38:07,950 BINE. 729 00:38:07,950 --> 00:38:11,315 Deci întrebări pe care, înainte de uita-te la un exemplu mai complex? 730 00:38:11,315 --> 00:38:14,190 731 00:38:14,190 --> 00:38:16,860 >> Deci, argv 2. 732 00:38:16,860 --> 00:38:17,830 In regula. 733 00:38:17,830 --> 00:38:20,610 Așa că încă de imprimare argumentele de linie de comandă. 734 00:38:20,610 --> 00:38:23,170 Dar acum avem observa un imbricate pentru buclă. 735 00:38:23,170 --> 00:38:24,670 Deci, ce este acest faci? 736 00:38:24,670 --> 00:38:28,430 Deci prima bucla este de a face exact ceea ce a făcut înainte. 737 00:38:28,430 --> 00:38:30,950 Suntem încă looping peste fiecare argument în linia de comandă, 738 00:38:30,950 --> 00:38:34,260 dar acum acest al doilea loop-- ne-am de asemenea, văzut așa ceva înainte. 739 00:38:34,260 --> 00:38:38,600 Când a fost iterarea peste Zamyla imprimarea Z-A-M-Y-L-A. 740 00:38:38,600 --> 00:38:44,816 Deci, acest al doilea buclă pentru Int J este egal 0, n este egal cu strlen de suport argv i. 741 00:38:44,816 --> 00:38:49,170 >> Așa că haideți să ne gândim în primul rând pentru the-- să se plimbe prin. 742 00:38:49,170 --> 00:38:53,560 Să ne gândim ce ar fi computerul fac dacă am fugit acest program doar ca dot 743 00:38:53,560 --> 00:38:56,030 slash argv bord 2. 744 00:38:56,030 --> 00:39:03,590 Deci, dacă am fugit acest cod, atunci argc va fi egal cu 1. 745 00:39:03,590 --> 00:39:07,050 Și șir argv-- există doar O să fie un index în argv, 746 00:39:07,050 --> 00:39:12,370 și care va fi egal cu dot slash argv 2-- numele programului. 747 00:39:12,370 --> 00:39:19,170 >> OK, asa ca acum am este egal cu 0, i mai puțin de 1, am plus plus pentru int j este egal cu 0, 748 00:39:19,170 --> 00:39:23,880 n este egal cu strlen de suport argv 0, astfel încât în prima iterație a acestui buclă. argv 749 00:39:23,880 --> 00:39:27,250 suport 0 este slash punct argv 2. 750 00:39:27,250 --> 00:39:29,320 Deci, ce este lungimea care șir? 751 00:39:29,320 --> 00:39:32,480 Ei bine, dot slash A-R-G-V bord 2. 752 00:39:32,480 --> 00:39:35,020 Deci, strlen de care va fi de 8. 753 00:39:35,020 --> 00:39:37,500 Deci j este egal cu 0, n = 8. 754 00:39:37,500 --> 00:39:39,530 Atâta timp cât j este mai mică de 8, j ++. 755 00:39:39,530 --> 00:39:44,080 Și cu asta am de gând să fie imprimarea un singur caracter, care 756 00:39:44,080 --> 00:39:47,350 este argv suport i bracketing J. 757 00:39:47,350 --> 00:39:49,826 >> Deci, numai eu este zero. 758 00:39:49,826 --> 00:39:51,700 Mai avem încă doar un singur argument de linie de comandă. 759 00:39:51,700 --> 00:39:53,890 În această prima iterație a pentru bucla, suntem 760 00:39:53,890 --> 00:39:56,950 O să fie de imprimare argv suport 0 0 suport. 761 00:39:56,950 --> 00:39:58,325 Și apoi J va incrementa. 762 00:39:58,325 --> 00:40:01,650 Și am de gând să imprimarea argv suport 0 suport 1. 763 00:40:01,650 --> 00:40:04,150 Și apoi argv suport 0 suport 2. 764 00:40:04,150 --> 00:40:09,030 >> Deci, aceasta este prima noastră întâlnire de matrice multi-dimensionale. 765 00:40:09,030 --> 00:40:12,770 Amintiți-vă mai devreme că am spus că argv este punct de vedere tehnic 766 00:40:12,770 --> 00:40:15,950 o serie de tablouri de caractere. 767 00:40:15,950 --> 00:40:24,360 Deci, aici, dacă i-am spus ceva de genul string s egal suport argv I, 768 00:40:24,360 --> 00:40:29,590 și apoi i-am spus, s suport J, acest ar fi realizarea același lucru. 769 00:40:29,590 --> 00:40:31,960 Acum, ați văzut s suport J înainte. 770 00:40:31,960 --> 00:40:36,680 Asta e doar a accesa J-lea Caracterul de acest șir. 771 00:40:36,680 --> 00:40:48,010 Deci, cu acest lucru, ne sunt obtinerea de caracter-J-lea a argv i-lea. 772 00:40:48,010 --> 00:40:51,450 >> Deci, ceea ce ar trebui în cele din urmă acest ieșire? 773 00:40:51,450 --> 00:40:53,210 Face argv 2. 774 00:40:53,210 --> 00:40:54,730 Ea compilează. 775 00:40:54,730 --> 00:40:56,340 Dot slash argv 2. 776 00:40:56,340 --> 00:41:03,790 "Rob Maria Ana," și să ne dea unele cameră. 777 00:41:03,790 --> 00:41:07,050 Deci, vedem că acest lucru este scoate punct pe o linie proprie și slash 778 00:41:07,050 --> 00:41:08,920 pe o linie proprie și o pe o linie proprie. 779 00:41:08,920 --> 00:41:11,260 Este imprimarea fiecare caracter individual 780 00:41:11,260 --> 00:41:12,950 de fiecare argument în linia de comandă. 781 00:41:12,950 --> 00:41:15,960 Și apoi între ele, din cauza acestei noi linii 782 00:41:15,960 --> 00:41:19,380 suntem de imprimare aici, în între ele se va imprima o nouă linie. 783 00:41:19,380 --> 00:41:24,540 >> Deci acest lucru este similar cu bord argv înainte 1, 784 00:41:24,540 --> 00:41:26,459 care imprimă fiecare argument de linie de comandă, 785 00:41:26,459 --> 00:41:28,500 dar acum suntem de imprimare argumentele de linie de comandă 786 00:41:28,500 --> 00:41:31,950 și apoi iterarea prin fiecare Caracterul de fiecare argument în linia de comandă 787 00:41:31,950 --> 00:41:35,400 pentru a obține această ieșire. 788 00:41:35,400 --> 00:41:36,870 OK? 789 00:41:36,870 --> 00:41:40,570 Deci, întrebări cu privire la această? 790 00:41:40,570 --> 00:41:45,130 >> Un lucru de remarcat este faptul că linie de comandă arguments-- 791 00:41:45,130 --> 00:41:49,990 astfel încât acestea sunt separate de spații ca v-ați aștepta în mod natural să fie. 792 00:41:49,990 --> 00:41:53,050 Deci, un șir poate avea spații în ea. 793 00:41:53,050 --> 00:41:57,380 Nu e foarte important, dar dacă am dorit al treilea argument de linie de comandă 794 00:41:57,380 --> 00:42:01,226 pentru a avea un spațiu în ea, apoi m-am ar putea spune ceva de genul asta. 795 00:42:01,226 --> 00:42:04,470 796 00:42:04,470 --> 00:42:05,550 OK? 797 00:42:05,550 --> 00:42:12,190 Deci, asta acum mai are doar trei linie de comandă-bine arguments-- 4. 798 00:42:12,190 --> 00:42:17,620 Dot slash argv bord 2, Rob, Maria, și Hannah Bloomberg. 799 00:42:17,620 --> 00:42:18,320 BINE. 800 00:42:18,320 --> 00:42:19,310 Întrebări cu privire la aceasta? 801 00:42:19,310 --> 00:42:22,700 802 00:42:22,700 --> 00:42:24,894 >> Nu e nimic special despre caracterul spațiu. 803 00:42:24,894 --> 00:42:27,810 Se întâmplă să fie că de linie de comandă tratează caracterul spațiu 804 00:42:27,810 --> 00:42:29,226 și modul în care separa fiecare argument. 805 00:42:29,226 --> 00:42:32,048 806 00:42:32,048 --> 00:42:33,000 In regula. 807 00:42:33,000 --> 00:42:39,950 Deci, atunci set Problemă two-- ai de gând să fie 808 00:42:39,950 --> 00:42:43,240 uita la criptografia secrete-cheie. 809 00:42:43,240 --> 00:42:47,700 Deci, similară celei exemplu am văzut dintr-o poveste de Crăciun, 810 00:42:47,700 --> 00:42:52,840 ai de gând să fie punerea în aplicare a unora algoritmi care, dat un mesaj, 811 00:42:52,840 --> 00:42:55,560 ai de gând să fie în măsură pentru a cripta acest mesaj 812 00:42:55,560 --> 00:42:58,730 că numai cineva cu care secretă cheie, cu inelul decodor, 813 00:42:58,730 --> 00:43:01,090 ar trebui să poată decripta. 814 00:43:01,090 --> 00:43:04,839 >> Astfel încât este Standard Edition. 815 00:43:04,839 --> 00:43:07,130 Ai de gând să fie punerea în aplicare a două versiuni diferite. 816 00:43:07,130 --> 00:43:09,620 Dacă se întâmplă să aruncăm o privire la hacker Edition acum, 817 00:43:09,620 --> 00:43:12,600 vom da te un șir de genul asta, 818 00:43:12,600 --> 00:43:15,240 ceea ce reprezintă o parolă criptată. 819 00:43:15,240 --> 00:43:19,990 Deci, obiectivul tău este să dau seama ce parola decriptat este. 820 00:43:19,990 --> 00:43:26,950 Acum, acest lucru este de fapt modul în care parole sunt stocate într-o mulțime de computere, 821 00:43:26,950 --> 00:43:31,290 și doar stochează această șir de caractere aleatoare. 822 00:43:31,290 --> 00:43:34,440 Trebuie să dau seama cum să obțineți din acest șir de caractere aleatoare 823 00:43:34,440 --> 00:43:36,140 a ceea ce a fost parola originală. 824 00:43:36,140 --> 00:43:39,060 825 00:43:39,060 --> 00:43:43,290 >> Și, în sfârșit, după această set problemă, ar trebui să 826 00:43:43,290 --> 00:43:46,100 fi capabil să înțeleagă ce înseamnă acest lucru. 827 00:43:46,100 --> 00:43:51,650 Deci, va învăța cum să decripta acest tip de șir aleator. 828 00:43:51,650 --> 00:43:56,390 În mod similar, dacă vă aduceți aminte de săptămână 0, s-ar putea fi văzut această adresă URL. 829 00:43:56,390 --> 00:44:00,210 Și ar trebui să fie în măsură să decripta acest în cele din urmă. 830 00:44:00,210 --> 00:44:04,810 Tu nu ar putea fi fericit atunci când decripta o și faceți clic pe link-ul. 831 00:44:04,810 --> 00:44:05,700 In regula. 832 00:44:05,700 --> 00:44:06,591 Asta e pentru ziua de azi. 833 00:44:06,591 --> 00:44:12,095 Astfel încât să vedem săptămâna viitoare! 834 00:44:12,095 --> 00:44:18,315 >> [Electronic Music JOC] 835 00:44:18,315 --> 00:47:15,619