1 00:00:00,000 --> 00:00:03,944 >> [Muziek] 2 00:00:03,944 --> 00:00:10,732 3 00:00:10,732 --> 00:00:11,690 DAVID MALAN: Oké. 4 00:00:11,690 --> 00:00:14,674 Dit is CS50, en dit het einde van week 2. 5 00:00:14,674 --> 00:00:16,840 Het spijt me dat ik niet kon worden daar met u allen vandaag, 6 00:00:16,840 --> 00:00:18,300 maar je bent in goede handen. 7 00:00:18,300 --> 00:00:21,710 Sta mij toe om te introduceren CS50 eigen Rob Bowden. 8 00:00:21,710 --> 00:00:29,106 9 00:00:29,106 --> 00:00:31,730 ROB BOWDEN: En natuurlijk, dan we plezier maken van het feit 10 00:00:31,730 --> 00:00:36,820 dat hij stuurde ons een verticale video en het tonen. 11 00:00:36,820 --> 00:00:38,320 >> [VIDEO AFSPELEN] 12 00:00:38,320 --> 00:00:39,820 >> [Muziek] 13 00:00:39,820 --> 00:00:42,350 >> [VOETSPOREN] 14 00:00:42,350 --> 00:00:44,730 >> -Deze Video niet moeten deze kant op te kijken. 15 00:00:44,730 --> 00:00:46,570 Het zou kunnen worden voorkomen. 16 00:00:46,570 --> 00:00:49,070 Zeg nee tegen verticale video's. 17 00:00:49,070 --> 00:00:53,310 >> Verticaal video gebeuren wanneer u Houd uw camera op de verkeerde manier. 18 00:00:53,310 --> 00:00:55,880 Uw video zal eindigen op zoek als onzin. 19 00:00:55,880 --> 00:00:57,650 >> - [GRUNT] 20 00:00:57,650 --> 00:01:02,240 >> -Er Zijn meer en meer mensen verslaafd het maken van verticale dagelijks video's. 21 00:01:02,240 --> 00:01:06,240 Het is niet te kraken of niets, maar het is nog steeds erg slecht. 22 00:01:06,240 --> 00:01:10,410 Er zijn twee verschillende soorten mensen die zijn getroffen met VVS. 23 00:01:10,410 --> 00:01:14,160 De eerste groep behandelt de video's schieten ze als foto's. 24 00:01:14,160 --> 00:01:15,850 Ze doen geen kwaad. 25 00:01:15,850 --> 00:01:19,180 Ze begrijpen niet dat terwijl u een foto kan draaien, 26 00:01:19,180 --> 00:01:20,880 je kunt niet echt weer een video. 27 00:01:20,880 --> 00:01:21,880 >> [CRASH] 28 00:01:21,880 --> 00:01:23,460 >> - [MONKEY SOUNDS] 29 00:01:23,460 --> 00:01:27,540 >> -De Andere groep mensen die niet geven een [BLEEP]. 30 00:01:27,540 --> 00:01:31,090 >> Verticaal Video Syndroom is gevaarlijk. 31 00:01:31,090 --> 00:01:34,120 Bewegende beelden hebben steeds horizontaal zijn. 32 00:01:34,120 --> 00:01:35,990 Televisies zijn horizontaal. 33 00:01:35,990 --> 00:01:38,380 Computerschermen zijn horizontaal. 34 00:01:38,380 --> 00:01:41,580 People's ogen zijn horizontaal. 35 00:01:41,580 --> 00:01:45,170 We zijn niet gebouwd om kijken verticaal video's. 36 00:01:45,170 --> 00:01:47,600 >> -Ik Hou verticale video's. 37 00:01:47,600 --> 00:01:50,410 >> -Nobody Om je geeft. 38 00:01:50,410 --> 00:01:53,340 >> -Als Dit probleem er niets aan, je te 39 00:01:53,340 --> 00:01:57,650 zal beginnen met vier video's in een keer gewoon om bandbreedte te besparen. 40 00:01:57,650 --> 00:02:02,400 >> -Letterboxed Verticale video's zou zijn de grootte van een postzegel. 41 00:02:02,400 --> 00:02:04,920 >> -En Het zal overal verspreid. 42 00:02:04,920 --> 00:02:07,670 Movie schermen hebben steeds horizontaal zijn. 43 00:02:07,670 --> 00:02:11,200 Als verticale video geworden geaccepteerde, bioscopen 44 00:02:11,200 --> 00:02:13,930 zal lang en mager te zijn. 45 00:02:13,930 --> 00:02:17,710 >> -En Alle bioscopen zou moeten krijgen afgebroken en herbouwd. 46 00:02:17,710 --> 00:02:22,090 En tegen de tijd dat ze werden herbouwd, Mila Kunis zou oud en lelijk zijn. 47 00:02:22,090 --> 00:02:24,342 >> -Birds Zal crashen in hen en sterven. 48 00:02:24,342 --> 00:02:26,530 >> -We Krijgen allemaal stijf nekken uit te kijken. 49 00:02:26,530 --> 00:02:29,800 >> -En Niemand zal zitten in de voorste rij nooit meer. 50 00:02:29,800 --> 00:02:37,170 >> -George Lucas zal opnieuw vrijkomen Star Oorlogen again-- de magere editie. 51 00:02:37,170 --> 00:02:41,860 >> -Ik Was nooit echt in staat om te vertellen het verhaal dat ik wilde vertellen. 52 00:02:41,860 --> 00:02:46,030 Dit was een grote kans voor mij om experimenteren met een nieuwe technologie. 53 00:02:46,030 --> 00:02:48,150 >> -Je bent een eikel. 54 00:02:48,150 --> 00:02:54,430 >> -elke Keer dat een mobiel apparaat wordt gebruikt video opnemen, de verleiding is er. 55 00:02:54,430 --> 00:02:56,370 Zeg gewoon neen. 56 00:02:56,370 --> 00:03:00,116 Zeg nee tegen George Lucas. 57 00:03:00,116 --> 00:03:04,062 Zeg nee tegen oude Mila Kunis. 58 00:03:04,062 --> 00:03:06,600 Zeg nee tegen verticale video's. 59 00:03:06,600 --> 00:03:12,511 >> -En Als je ziet dat iemand het doet, zeg, "Je bent niet schieten dat recht dummy!" 60 00:03:12,511 --> 00:03:15,433 >> [Muziek] 61 00:03:15,433 --> 00:03:18,842 62 00:03:18,842 --> 00:03:19,830 >> [END AFSPELEN] 63 00:03:19,830 --> 00:03:23,702 >> [Applaus] 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 vorm van cryptografie, 67 00:03:45,790 --> 00:03:49,500 die in feite de encryptie en decryptie van geheime boodschappen. 68 00:03:49,500 --> 00:03:52,590 Dus hier hebben we een zeer eenvoudige speelgoed. 69 00:03:52,590 --> 00:03:56,900 Het idee is de buitenring roteert rond de binnenring. 70 00:03:56,900 --> 00:04:01,610 En je kunt zien, misschien als ik te zoomen in, dat-- het is moeilijk te zien. 71 00:04:01,610 --> 00:04:05,090 Maar, net als het aantal 1-- goed, dat verplaatst. 72 00:04:05,090 --> 00:04:09,120 >> De nummer 1 toegewezen aan de letter X, nummer 2 kaarten naar de letter 73 00:04:09,120 --> 00:04:11,630 J. ongelooflijk moeilijk niet vooruit te springen. 74 00:04:11,630 --> 00:04:16,100 Brief 2 kaarten voor J. Nummer 3 kaarten naar D. So 75 00:04:16,100 --> 00:04:20,140 met deze ring kan geven iemand een bericht 1, 2, 3. 76 00:04:20,140 --> 00:04:22,624 Om een ​​of andere reden ze wilt vertellen XJD. 77 00:04:22,624 --> 00:04:24,540 Maar je kunt ze geven enkele boodschap van nummers, 78 00:04:24,540 --> 00:04:28,460 en zolang zij deze ring, zij kan decoderen wat je probeert te zeggen. 79 00:04:28,460 --> 00:04:32,510 >> Dus je kan hebben gezien dit bijzonder voorbeeld van cryptografie 80 00:04:32,510 --> 00:04:36,640 voor als rond de kerstdagen je hebt A Christmas Story bekeken. 81 00:04:36,640 --> 00:04:38,520 Als je nog nooit hebt gezien het al eerder, dan gewoon 82 00:04:38,520 --> 00:04:41,060 Schakel TBS bij letterlijk elk gewenst moment op kerstavond, 83 00:04:41,060 --> 00:04:44,510 omdat ze laten zien dat het gewoon rijtjes om een ​​back to back om de hele dag terug. 84 00:04:44,510 --> 00:04:46,744 En de relevante video is dit. 85 00:04:46,744 --> 00:04:47,410 [VIDEO AFSPELEN] 86 00:04:47,410 --> 00:04:50,020 -zij Het bekend om alles en iedereen dat Ralph Parker is hierbij 87 00:04:50,020 --> 00:04:52,850 benoemd tot lid van de Kleine Orphan Annie Secret Circle 88 00:04:52,850 --> 00:04:56,490 en heeft recht op alle eer en voordelen welke ontstaan. 89 00:04:56,490 --> 00:04:59,010 Ondertekend Little Orphan Annie. 90 00:04:59,010 --> 00:05:03,120 Medeondertekend Pierre Andre in inkt! 91 00:05:03,120 --> 00:05:07,460 Eer en voordelen al op de leeftijd van negen! 92 00:05:07,460 --> 00:05:12,530 >> [SCHREEUWT VAN RADIO] 93 00:05:12,530 --> 00:05:13,030 -Kom op. 94 00:05:13,030 --> 00:05:14,000 Laten we aan de slag gaan. 95 00:05:14,000 --> 00:05:18,274 Ik geloof niet alles wat jazz nodig over smokkelaars en piraten. 96 00:05:18,274 --> 00:05:20,440 -listen Morgenavond met de afsluitende avontuur 97 00:05:20,440 --> 00:05:22,540 van de Zwarte piratenschip. 98 00:05:22,540 --> 00:05:25,460 Nu is het tijd voor Geheime boodschap Annie's 99 00:05:25,460 --> 00:05:28,620 voor u de leden van de Secret Circle. 100 00:05:28,620 --> 00:05:32,370 Vergeet niet de kinderen, alleen voor leden van Annie's Secret Circle 101 00:05:32,370 --> 00:05:34,880 kan geheime boodschap Annie's te decoderen. 102 00:05:34,880 --> 00:05:39,100 Vergeet niet, Annie is afhankelijk van je. 103 00:05:39,100 --> 00:05:41,660 Stel uw pinnen B2. 104 00:05:41,660 --> 00:05:43,960 Hier is de boodschap. 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 -Ik Ben in mijn eerste geheime vergadering. 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 is in grote stem vanavond. 115 00:05:54,570 --> 00:05:57,490 Ik kon vertellen dat vanavond boodschap was heel belangrijk. 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 Dat is een boodschap van Annie zichzelf. 119 00:06:01,580 --> 00:06:02,880 Vergeet niet, niet iedereen vertellen. 120 00:06:02,880 --> 00:06:07,840 121 00:06:07,840 --> 00:06:11,130 >> -vijf Seconden later, ben ik in het enige kamer in het huis, waar een jongen van negen 122 00:06:11,130 --> 00:06:15,830 privacy en decoderen kon zitten. 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 Ik ging naar de volgende. 126 00:06:20,210 --> 00:06:23,300 E. Het eerste woord is "te zijn." 127 00:06:23,300 --> 00:06:25,880 S. Het kwam nu gemakkelijker. 128 00:06:25,880 --> 00:06:28,400 U. 25. 129 00:06:28,400 --> 00:06:30,528 Dat is R. 130 00:06:30,528 --> 00:06:31,278 -Kom Op, Ralphie! 131 00:06:31,278 --> 00:06:31,861 Ik moet gaan! 132 00:06:31,861 --> 00:06:33,182 -Ik Recht naar beneden zijn, Ma! 133 00:06:33,182 --> 00:06:36,038 Gee whiz. 134 00:06:36,038 --> 00:06:42,840 T. O. "Zorg ervoor dat u" - zorg ervoor dat wat? 135 00:06:42,840 --> 00:06:44,770 Wat was Little Orphan Annie probeert te zeggen? 136 00:06:44,770 --> 00:06:46,381 Zorg ervoor dat u wat? 137 00:06:46,381 --> 00:06:47,825 >> -Randy Heeft om te gaan! 138 00:06:47,825 --> 00:06:48,866 Wil je alsjeblieft naar buiten komen? 139 00:06:48,866 --> 00:06:49,783 >> -Alle Rechts, mam! 140 00:06:49,783 --> 00:06:51,786 Ik kom uit zijn! 141 00:06:51,786 --> 00:06:53,606 Ik was dichterbij nu krijgt. 142 00:06:53,606 --> 00:06:55,550 De spanning was verschrikkelijk. 143 00:06:55,550 --> 00:06:57,050 Wat was het? 144 00:06:57,050 --> 00:06:59,905 Het lot van de planeet kan hangen in de balans! 145 00:06:59,905 --> 00:07:01,736 >> -Ralphie, Randy's moet gaan! 146 00:07:01,736 --> 00:07:05,680 >> -Ik Rechts uit, voor schreeuwt luid! 147 00:07:05,680 --> 00:07:07,170 Er bijna! 148 00:07:07,170 --> 00:07:08,150 Mijn vingers vlogen. 149 00:07:08,150 --> 00:07:09,980 Mijn geest was een stalen trap. 150 00:07:09,980 --> 00:07:11,496 Elke porie getrild. 151 00:07:11,496 --> 00:07:13,268 Het was bijna duidelijk! 152 00:07:13,268 --> 00:07:13,767 Ja. 153 00:07:13,767 --> 00:07:14,609 Ja. 154 00:07:14,609 --> 00:07:15,108 Ja. 155 00:07:15,108 --> 00:07:16,449 Ja. 156 00:07:16,449 --> 00:07:20,240 Zorg ervoor dat drink je 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 Een mollig commerciële? 160 00:07:27,520 --> 00:07:32,040 161 00:07:32,040 --> 00:07:34,920 Klootzak. 162 00:07:34,920 --> 00:07:35,890 >> [END AFSPELEN] 163 00:07:35,890 --> 00:07:39,650 >> ROB BOWDEN: Dus dat is hoe Ovaltine betrekking op cryptografie. 164 00:07:39,650 --> 00:07:42,290 Eigenlijk CS50 gewoon geadverteerd Ovaltine, dus we konden 165 00:07:42,290 --> 00:07:44,400 zijn een crummy commercial voor Ovaltine. 166 00:07:44,400 --> 00:07:44,900 Prima. 167 00:07:44,900 --> 00:07:47,120 Dus nu werkelijke informatica. 168 00:07:47,120 --> 00:07:50,670 Vergeet niet op maandag we gebleven duiken dieper in strings. 169 00:07:50,670 --> 00:07:52,820 Dus waren we te maken met de string "Zamyla." 170 00:07:52,820 --> 00:07:55,130 En we waren te herkennen het feit dat we kunnen behandelen 171 00:07:55,130 --> 00:07:57,510 "Zamyla" als een reeks tekens. 172 00:07:57,510 --> 00:07:59,740 En vergeet niet dat we geleerd de beugel notatie. 173 00:07:59,740 --> 00:08:01,995 Dus als dit waren opgeslagen in een string "s", dan 174 00:08:01,995 --> 00:08:05,860 Als wij zeiden s beugel 0, dat zou geven de letter hoofdletter Z. 175 00:08:05,860 --> 00:08:09,790 En als we zeiden s beugel 1, dat zou een eerste kleine geven, 176 00:08:09,790 --> 00:08:14,220 en zo verder tot en beugel 5, hetgeen de laatste een duiden. 177 00:08:14,220 --> 00:08:17,090 >> Nu niet vergeten dat de lengte van deze string 6, 178 00:08:17,090 --> 00:08:23,220 maar de indices in de string zijn 0 tot en met 5, Z door dat laatste een. 179 00:08:23,220 --> 00:08:28,650 Dus dit past nu in een groter geheel van het geheugen van uw computer, uw RAM-geheugen. 180 00:08:28,650 --> 00:08:32,020 Dus ergens het programma dat je draait je computer 181 00:08:32,020 --> 00:08:34,780 moet onthouden Zamyla ergens in het geheugen. 182 00:08:34,780 --> 00:08:36,029 Dus ik heb een vrijwilliger? 183 00:08:36,029 --> 00:08:38,840 184 00:08:38,840 --> 00:08:40,181 Ja graag. 185 00:08:40,181 --> 00:08:50,120 186 00:08:50,120 --> 00:08:51,500 En hoe heet jij? 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 Leuk je te ontmoeten, Dean. 190 00:08:54,910 --> 00:08:58,240 Dus kom hier, en we gaan heb je trekken 191 00:08:58,240 --> 00:09:00,740 op onze mooie handige indeling van het geheugen. 192 00:09:00,740 --> 00:09:05,950 Nu ik denk graag van het geheugen als een lange strook van de bytes, 193 00:09:05,950 --> 00:09:11,090 maar alleen voor weergave doeleinden we zullen gewoon van links naar rechts, van boven naar beneden. 194 00:09:11,090 --> 00:09:11,590 OK? 195 00:09:11,590 --> 00:09:22,030 >> Dus ik ga naar een show program-- Getstrings.c. 196 00:09:22,030 --> 00:09:25,760 En zo al dit programma is doet vraagt ​​vier snaren 197 00:09:25,760 --> 00:09:28,830 van de gebruiker GetString en vervolgens afdrukken 198 00:09:28,830 --> 00:09:30,950 wat dat eerste snaar ingevoerd was. 199 00:09:30,950 --> 00:09:32,840 We negeren van twee tot en met vier. 200 00:09:32,840 --> 00:09:33,610 OK. 201 00:09:33,610 --> 00:09:38,210 Dus hier now-- wanneer Ik eerste verzoek s1. 202 00:09:38,210 --> 00:09:39,740 Dus jij bent de computer. 203 00:09:39,740 --> 00:09:41,680 En u bent uitvoering GetString. 204 00:09:41,680 --> 00:09:46,710 Dus je moet een reeks van vragen mij, en ik zeg, OK, Dean. 205 00:09:46,710 --> 00:09:47,900 Geven de string "Dean." 206 00:09:47,900 --> 00:09:50,300 >> Dus ergens in geheugen moeten onthouden "Dean." 207 00:09:50,300 --> 00:09:52,160 Dus schrijf het in het geheugen ergens. 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 OK. 211 00:09:59,880 --> 00:10:01,740 Dus nu hebben we S2. 212 00:10:01,740 --> 00:10:03,869 En s2 gaat worden een verzoek GetString. 213 00:10:03,869 --> 00:10:05,160 Dus ik ga naar een string in te voeren. 214 00:10:05,160 --> 00:10:08,720 Ik ga enter "Hannah." 215 00:10:08,720 --> 00:10:10,586 Dus voer "Hannah" ergens in het geheugen. 216 00:10:10,586 --> 00:10:18,860 217 00:10:18,860 --> 00:10:19,360 Ja. 218 00:10:19,360 --> 00:10:23,000 A-H. 219 00:10:23,000 --> 00:10:25,550 >> OK, dus nu s3. 220 00:10:25,550 --> 00:10:28,380 En het gaat naar de andere verzoeken GetString. 221 00:10:28,380 --> 00:10:37,020 En nu voeren "Maria." 222 00:10:37,020 --> 00:10:37,520 Prima. 223 00:10:37,520 --> 00:10:40,980 En dan is er nog een laatste verzoek GetString, s4. 224 00:10:40,980 --> 00:10:42,580 Dus, ik weet het niet. 225 00:10:42,580 --> 00:10:45,640 Zullen we gaan met antidisestablishmentarianism. 226 00:10:45,640 --> 00:10:49,460 Voeren zodat in het geheugen. 227 00:10:49,460 --> 00:10:50,400 Ja. 228 00:10:50,400 --> 00:10:53,970 Dus gewoon doen "Rob." 229 00:10:53,970 --> 00:10:54,560 >> OK. 230 00:10:54,560 --> 00:10:58,410 Dus nu explain-- waarom deed u deze ruimtes te verlaten? 231 00:10:58,410 --> 00:11:01,340 Waarom heb je dit leeg ruimte hier, hier en hier? 232 00:11:01,340 --> 00:11:05,170 233 00:11:05,170 --> 00:11:05,670 Ja. 234 00:11:05,670 --> 00:11:09,450 Dus merken wanneer ik ga afdrukken s1-- dus als we 235 00:11:09,450 --> 00:11:11,890 had "Hannah" running recht naast "Dean," 236 00:11:11,890 --> 00:11:14,360 hoe weten we wanneer de string "Dean" eindigt? 237 00:11:14,360 --> 00:11:19,470 Zo drukken de string s1 kan hebben gewoon gedrukt "DeanHannahMariaRob" 238 00:11:19,470 --> 00:11:22,720 indien geen aanwijzing heeft wanneer "Dean" daadwerkelijk eindigt. 239 00:11:22,720 --> 00:11:23,240 >> Prima. 240 00:11:23,240 --> 00:11:27,650 Dus in het geheugen van de manier waarop we eigenlijk Daarom vertegenwoordigen van een string 241 00:11:27,650 --> 00:11:29,940 is met backslash nul. 242 00:11:29,940 --> 00:11:32,620 Zodat deze ruimte is precies wat we wilden. 243 00:11:32,620 --> 00:11:34,040 Het moet een backslash nul. 244 00:11:34,040 --> 00:11:37,690 Dit zal een backslash nul, en dit zal een backslash nul. 245 00:11:37,690 --> 00:11:41,585 En u kunt een fantastische prijs hebben voor een perfecte vrijwilliger. 246 00:11:41,585 --> 00:11:44,910 247 00:11:44,910 --> 00:11:45,860 Neem een ​​stress-bal! 248 00:11:45,860 --> 00:11:49,040 249 00:11:49,040 --> 00:11:49,700 >> OK. 250 00:11:49,700 --> 00:11:54,420 Dus dit karakter backslash nul hoe wij geven het einde van een koord. 251 00:11:54,420 --> 00:11:57,120 Het is hoe bij een bepaald programma wil een string te drukken, 252 00:11:57,120 --> 00:11:59,760 het is how-- herinner we geleerd de strlen functie van vorige week? 253 00:11:59,760 --> 00:12:00,940 Tekenreekslengte? 254 00:12:00,940 --> 00:12:03,770 Het is hoe touw lengte is in staat om bepalen hoe lang een string is. 255 00:12:03,770 --> 00:12:05,810 Het houdt gewoon itereren over de personages 256 00:12:05,810 --> 00:12:08,217 tot hij de Backslash nul karakter. 257 00:12:08,217 --> 00:12:11,050 Dus het belangrijkste om te beseffen over het backslash nulteken 258 00:12:11,050 --> 00:12:14,950 is het is vertegenwoordigd alle nullen in bits. 259 00:12:14,950 --> 00:12:18,980 Zo merken dat dit is duidelijk van de nul karakter. 260 00:12:18,980 --> 00:12:23,010 Dus de nul karakter, als je nog in het voorbeeld dat Hij eind 261 00:12:23,010 --> 00:12:27,360 van de lezing waarin de personages in kaart to-- als hoofdletter A kaarten tot 65. 262 00:12:27,360 --> 00:12:29,130 Kleine letters a kaarten tot 97. 263 00:12:29,130 --> 00:12:30,890 Kleine letter b zou zijn 98. 264 00:12:30,890 --> 00:12:35,220 Zodat het aantal 0 kaarten to-- ik niet weet uit de top van mijn hoofd. 265 00:12:35,220 --> 00:12:36,400 44 of 45. 266 00:12:36,400 --> 00:12:37,890 Ergens in die regio. 267 00:12:37,890 --> 00:12:40,850 >> Zo het teken 0 is een feitelijke aantal. 268 00:12:40,850 --> 00:12:44,350 Maar backslash nul kaarten voor alle nul bits. 269 00:12:44,350 --> 00:12:46,380 Dus er is een onderscheid tussen backslash nul, 270 00:12:46,380 --> 00:12:48,450 waarvan we de nul terminator noemen. 271 00:12:48,450 --> 00:12:53,210 Er is een onderscheid tussen backslash nul en het karakter nul. 272 00:12:53,210 --> 00:12:54,350 >> Prima. 273 00:12:54,350 --> 00:12:57,520 Dus praten een beetje meer over snaren. 274 00:12:57,520 --> 00:13:01,470 Dus dan zien we hier dit is hoe het zou in het geheugen worden vastgelegd. 275 00:13:01,470 --> 00:13:07,940 Dus dit idee van snaren als een opeenvolging van characters-- zodat de officiële computer 276 00:13:07,940 --> 00:13:10,750 sciency term voor volgorde is een array. 277 00:13:10,750 --> 00:13:13,790 Dus zouden we een string noemen een array van karakters. 278 00:13:13,790 --> 00:13:17,770 Er zijn eigenlijk andere data types die we arrays kunnen maken uit. 279 00:13:17,770 --> 00:13:19,975 >> Dus om dit te motiveren, kijken naar een voorbeeld. 280 00:13:19,975 --> 00:13:22,810 281 00:13:22,810 --> 00:13:29,812 We zullen het ages0.c noem ik zal Kopieer en plak onze template. 282 00:13:29,812 --> 00:13:32,470 283 00:13:32,470 --> 00:13:33,410 OK. 284 00:13:33,410 --> 00:13:39,378 Dus in dit programma wat we willen doen is pak je de leeftijd 285 00:13:39,378 --> 00:13:45,160 van drie studenten in de cursus. 286 00:13:45,160 --> 00:13:49,240 Dus we weten het int age-- en nu ga ik zeggen 0. 287 00:13:49,240 --> 00:13:53,140 Dus wilt u misschien age1 zeggen, maar voor doeleinden die we zullen zeer binnenkort te zien, 288 00:13:53,140 --> 00:13:57,187 Ik zeg int age0 gelijk getint. 289 00:13:57,187 --> 00:13:59,270 Zodat dezelfde oproep om getInt dat we al met I 290 00:13:59,270 --> 00:14:01,561 niet toevallig worden gevraagd zeggende: "geef mij de leeftijd." 291 00:14:01,561 --> 00:14:03,120 Maar net daarom vraagt. 292 00:14:03,120 --> 00:14:06,510 >> En age1 gelijk getint. 293 00:14:06,510 --> 00:14:09,600 En int ouderdom2 gelijk getint. 294 00:14:09,600 --> 00:14:14,070 Dus nogmaals, drie studenten, maar uiteindelijk de variabele indices 295 00:14:14,070 --> 00:14:16,890 zijn age0 door middel ouderdom2. 296 00:14:16,890 --> 00:14:17,550 OK. 297 00:14:17,550 --> 00:14:23,960 Dus dit programma zal doen wat we willen met age0, age1 en ouderdom2, 298 00:14:23,960 --> 00:14:27,670 maar dit programma uiteindelijk werkt voor drie studenten. 299 00:14:27,670 --> 00:14:28,380 >> OK. 300 00:14:28,380 --> 00:14:32,110 Dus wat nu als ik wil vier studenten? 301 00:14:32,110 --> 00:14:36,000 Nou, ik ga te hebben om terug te gaan in mijn code, verander de commentaar, 302 00:14:36,000 --> 00:14:39,840 en nu hebben we een int leeftijd 3 gelijk getint. 303 00:14:39,840 --> 00:14:40,610 OK. 304 00:14:40,610 --> 00:14:43,660 Dus wie het probleem ziet hier? 305 00:14:43,660 --> 00:14:47,310 Wat is het probleem met dit soort setup? 306 00:14:47,310 --> 00:14:47,810 Ja. 307 00:14:47,810 --> 00:14:53,110 308 00:14:53,110 --> 00:14:53,610 Ja. 309 00:14:53,610 --> 00:14:56,360 Dus we zijn het creëren van een variabele voor elke student. 310 00:14:56,360 --> 00:15:00,140 Nu dat werkt, maar uiteindelijk wat als ik nu 311 00:15:00,140 --> 00:15:06,500 zeggen: "Ik wil de leeftijd van pakken acht studenten of 16 studenten 312 00:15:06,500 --> 00:15:11,340 of echter veel studenten van de honderden studenten in CS50 313 00:15:11,340 --> 00:15:16,750 of de duizenden studenten op de campus of de miljarden mensen in de wereld? 314 00:15:16,750 --> 00:15:19,130 Dus uiteindelijk is dit niet duurzaam. 315 00:15:19,130 --> 00:15:21,990 Elke keer zie je jezelf kopiëren en plakken van de code als dit, 316 00:15:21,990 --> 00:15:25,050 moet je over het algemeen het gevoel dat er een betere manier. 317 00:15:25,050 --> 00:15:31,290 >> Dus dit is waar we introduceren een array verklaring. 318 00:15:31,290 --> 00:15:34,564 Dus als je een array te verklaren, dit is wat de algemene formaat 319 00:15:34,564 --> 00:15:35,480 gaat uitzien. 320 00:15:35,480 --> 00:15:36,664 We gaan het type zeggen. 321 00:15:36,664 --> 00:15:38,830 en dan gaan we Geef de naam van de array, 322 00:15:38,830 --> 00:15:41,150 net zoals we elk variabele definiëren. 323 00:15:41,150 --> 00:15:43,980 En dan tot slot maken we gebruik deze beugel notatie weer 324 00:15:43,980 --> 00:15:47,480 maar in een andere context hoe we het gebruiken waren eerder. 325 00:15:47,480 --> 00:15:51,860 >> Dus hier dit ziet eruit als een normale variabele verklaring dat we hebben gezien. 326 00:15:51,860 --> 00:15:54,890 Dus we hebben int x puntkomma eerder gezien. 327 00:15:54,890 --> 00:16:00,020 Nou nu kunnen we iets zien zoals int x beugels 5. 328 00:16:00,020 --> 00:16:04,020 En het zetten van dit idee in de Getint programma dat we have-- 329 00:16:04,020 --> 00:16:08,850 dus we kunnen implementeren deze op dezelfde wijze. 330 00:16:08,850 --> 00:16:13,630 >> Laten we zeggen dat in CS hebben we de neiging om te gebruiken n het aantal iets. 331 00:16:13,630 --> 00:16:16,150 Dus hier gaan we slaan vier studenten. 332 00:16:16,150 --> 00:16:25,960 En nu kunnen we int leeftijd zeggen beugel N-- niet helemaal krijgen yet-- 333 00:16:25,960 --> 00:16:32,210 om een ​​reeks van vier studenten verklaren. 334 00:16:32,210 --> 00:16:38,050 Dus hoe dit eruit zal zien in geheugen ongeveer zo uitzien. 335 00:16:38,050 --> 00:16:39,570 Wis dit. 336 00:16:39,570 --> 00:16:46,606 En we gaan ergens in memory-- Ik zal dit er zetten. 337 00:16:46,606 --> 00:16:52,690 338 00:16:52,690 --> 00:16:53,808 >> Dus ergens in het geheugen. 339 00:16:53,808 --> 00:16:58,760 340 00:16:58,760 --> 00:16:59,727 Een twee drie vier. 341 00:16:59,727 --> 00:17:03,383 342 00:17:03,383 --> 00:17:09,849 We hebben vier integers in een rij voor deze serie van vier integers. 343 00:17:09,849 --> 00:17:13,820 Dus, momenteel, wat de grootte van één van deze dozen? 344 00:17:13,820 --> 00:17:17,190 345 00:17:17,190 --> 00:17:17,690 Ja. 346 00:17:17,690 --> 00:17:18,390 Het is vier bytes. 347 00:17:18,390 --> 00:17:19,690 Het is 32 bits. 348 00:17:19,690 --> 00:17:22,310 Dus nu is dat anders van de array die we 349 00:17:22,310 --> 00:17:24,020 zag eerder, de reeks van tekens. 350 00:17:24,020 --> 00:17:28,540 In een reeks werd elk vak slechts één byte, omdat een teken slechts één byte. 351 00:17:28,540 --> 00:17:32,170 Maar met een array van integers, elk box moet vier bytes teneinde 352 00:17:32,170 --> 00:17:34,060 om een ​​heel integer passen. 353 00:17:34,060 --> 00:17:37,197 Dus dit is wat een array van vier ints eruit zou zien. 354 00:17:37,197 --> 00:17:40,510 355 00:17:40,510 --> 00:17:43,870 >> En dan terug naar code. 356 00:17:43,870 --> 00:17:47,460 Nu willen we eigenlijk winkel getallen in die matrix. 357 00:17:47,460 --> 00:17:53,470 Dus nu is dit een zeer, zeer, zeer gemeenschappelijk patroon dat zal op een bepaald punt 358 00:17:53,470 --> 00:17:54,680 geworden spiergeheugen. 359 00:17:54,680 --> 00:17:56,710 Zo int i gelijk is aan 0. 360 00:17:56,710 --> 00:17:57,940 i minder dan n. 361 00:17:57,940 --> 00:18:01,850 i plus plus. 362 00:18:01,850 --> 00:18:05,790 Leeftijdsgroep i gelijk getint. 363 00:18:05,790 --> 00:18:15,100 >> Dus deze lus, dit formaat, je moet erg wennen aan. 364 00:18:15,100 --> 00:18:20,010 Dus dit is over het algemeen hoe we zullen itereren over bijna elke array. 365 00:18:20,010 --> 00:18:23,690 Let nu op dit soort verklaart waarom vanaf het begin 366 00:18:23,690 --> 00:18:29,870 We hoefden er niet voor lussen gaan voor int i is gelijk aan 1, i kleiner dan of gelijk aan 10. 367 00:18:29,870 --> 00:18:34,200 De reden is dat uitgaande van nul maakt dit werk goed met arrays. 368 00:18:34,200 --> 00:18:36,270 Dus arrays nul geïndexeerd. 369 00:18:36,270 --> 00:18:40,360 Indien deze array is lengte 4, de indices zijn 0 tot en met 3. 370 00:18:40,360 --> 00:18:42,880 >> Dus door de eerste iteratie van deze lus 371 00:18:42,880 --> 00:18:49,930 We gaan worden het instellen van de leeftijd beugel 0 gelijk aan een oproep tot getint. 372 00:18:49,930 --> 00:18:52,440 Dus wat ik toevallig het toetsenbord voor invoer. 373 00:18:52,440 --> 00:18:56,970 In de tweede pas, we zijn instelling age1 gelijk aan getint. 374 00:18:56,970 --> 00:18:58,230 Derde pas, ouderdom2. 375 00:18:58,230 --> 00:18:59,880 Eindpass leeftijd 3. 376 00:18:59,880 --> 00:19:05,750 Als in de eerste doorgang van de lus Ik voer het nummer 4 op het toetsenbord, 377 00:19:05,750 --> 00:19:07,740 dan zullen we een 4 hier invoegen. 378 00:19:07,740 --> 00:19:11,470 Indien op de tweede pas ik binnenkom 50, zullen we een 50 hier gezet. 379 00:19:11,470 --> 00:19:15,180 Op de derde pas zou ik voeren negatieve 1, negatieve 1, 380 00:19:15,180 --> 00:19:21,810 en dan uiteindelijk als ik binnenkom 0-- en Nu herinner me dat dit index drie. 381 00:19:21,810 --> 00:19:25,350 >> Nadat we lus terug, i zal worden verhoogd tot 4. 382 00:19:25,350 --> 00:19:27,770 i niet meer dan n, wat 4. 383 00:19:27,770 --> 00:19:29,840 En breken we uit de lus. 384 00:19:29,840 --> 00:19:32,578 Dus wat zou er mis met deze zijn? 385 00:19:32,578 --> 00:19:38,140 386 00:19:38,140 --> 00:19:38,729 [Onverstaanbaar]? 387 00:19:38,729 --> 00:19:39,604 PUBLIEK: [onverstaanbaar] 388 00:19:39,604 --> 00:19:45,880 389 00:19:45,880 --> 00:19:46,400 >> Ja. 390 00:19:46,400 --> 00:19:51,550 Dus de array slechts vier plaatsen, Dit betekent als indices 0 tot 3. 391 00:19:51,550 --> 00:19:55,630 Dus als dit het geval was, zou ik te nemen over de waarde 4 op een bepaald punt. 392 00:19:55,630 --> 00:20:00,910 leeftijdsgroep 4 zal instellen wat er ook gebeurt om hier te zijn 393 00:20:00,910 --> 00:20:02,920 naar wat ik te zeggen heb, voer 6. 394 00:20:02,920 --> 00:20:05,010 Dat zal deze instelling op 6. 395 00:20:05,010 --> 00:20:06,560 >> Maar we weten niet wat hier. 396 00:20:06,560 --> 00:20:08,836 Dit is niet het geheugen dat we hadden toegang tot. 397 00:20:08,836 --> 00:20:10,710 Dus als je nog uit de vorige college, 398 00:20:10,710 --> 00:20:14,350 Hij werd het afdrukken van de waarden van Zamyla en op een gegeven moment dat hij deze segmentatie hit 399 00:20:14,350 --> 00:20:17,990 fout. Dus u zult waarschijnlijk zien veel segmentatie fouten zoals u 400 00:20:17,990 --> 00:20:20,530 het uitvoeren van sommige van de problemen sets. 401 00:20:20,530 --> 00:20:24,950 Maar dit is een van de manieren waarop kunt u een segmentatie tegenkomen 402 00:20:24,950 --> 00:20:28,540 fout, wanneer je begint met de toegang geheugen op een manier die je niet zou moeten zijn. 403 00:20:28,540 --> 00:20:34,117 Dus hebben we geen toegang hebben tot deze locatie en dit is een fout. 404 00:20:34,117 --> 00:20:37,760 405 00:20:37,760 --> 00:20:40,190 >> Dus dit is beter. 406 00:20:40,190 --> 00:20:45,820 Nu is er nog een kleine probleem met deze code. 407 00:20:45,820 --> 00:20:50,720 En dat is eigenlijk dat we nog steeds vast op vier studenten. 408 00:20:50,720 --> 00:20:52,940 Nu als ik wil acht studenten te gebruiken, op OK. 409 00:20:52,940 --> 00:20:54,350 Het is niet zo'n groot probleem. 410 00:20:54,350 --> 00:20:58,120 Ik kan gaan in, verander de commentaar, en verander n. 411 00:20:58,120 --> 00:20:59,760 Nu zal dit samen met acht studenten. 412 00:20:59,760 --> 00:21:02,190 Als ik dit te compileren en uit te voeren Dit zal het mij-- tonen 413 00:21:02,190 --> 00:21:07,870 zal vragen integers acht studenten en het zal gewoon werken. 414 00:21:07,870 --> 00:21:11,850 Maar het is minder dan ideaal nodig hebben om recompile het programma elke keer 415 00:21:11,850 --> 00:21:15,960 Ik wil het aantal studenten veranderen dat ik wil de eeuwen heen te voeren. 416 00:21:15,960 --> 00:21:22,990 >> Zodat de uiteindelijke verbetering dit, zoals we zullen zien hier-- we 417 00:21:22,990 --> 00:21:26,177 naar het aantal personen te vragen. 418 00:21:26,177 --> 00:21:28,010 Hier hebben we een aantal van de mensen in de kamers 419 00:21:28,010 --> 00:21:29,880 of een leeftijd van mensen in de kamer. 420 00:21:29,880 --> 00:21:33,300 Maar we gaan het aantal aanvragen van de mensen in de kamer van de gebruiker. 421 00:21:33,300 --> 00:21:36,171 Dus dit is exact dezelfde do-while lus die we eerder hebben gezien. 422 00:21:36,171 --> 00:21:37,920 Het is precies hetzelfde do-while lus dat u 423 00:21:37,920 --> 00:21:40,050 kunnen de aan het probleem set. 424 00:21:40,050 --> 00:21:43,102 Zolang ze invoeren van een n kleiner is dan 1, 425 00:21:43,102 --> 00:21:45,310 dus er moet worden op minstens één persoon in de kamer. 426 00:21:45,310 --> 00:21:47,407 Zolang ze invoeren van een n kleiner is dan 1, 427 00:21:47,407 --> 00:21:48,990 dan gaan we weer blijven vragen. 428 00:21:48,990 --> 00:21:50,906 Vul het aantal van de mensen in de kamer. 429 00:21:50,906 --> 00:21:53,550 Nu, als we eenmaal het aantal van de mensen in de kamer-- 430 00:21:53,550 --> 00:21:58,020 dus ik zou daar in te voeren dat zijn 200 mensen in deze kamer. 431 00:21:58,020 --> 00:22:05,480 Dan hier beneden gaan we komen en verklaren een array van grootte van 200. 432 00:22:05,480 --> 00:22:10,220 We verklaren array die is groot genoeg om 200 leeftijden te houden. 433 00:22:10,220 --> 00:22:15,370 Naar beneden, het is de lus dat krijg je gewend aan. 434 00:22:15,370 --> 00:22:19,490 Dus itereren dan deze array, waarbij aan iedere locatie 435 00:22:19,490 --> 00:22:23,020 in de matrix een integer, en dan uiteindelijk hier zijn we 436 00:22:23,020 --> 00:22:28,340 net een voorbeeld van iteratie over die reeks, niet om waarden toe te wijzen, 437 00:22:28,340 --> 00:22:30,150 maar om waarden. 438 00:22:30,150 --> 00:22:33,810 >> Dus hier zien we dat we zeggen, een jaar vanaf nu, 439 00:22:33,810 --> 00:22:40,470 persoon% i zal zijn% i jaar oud, waar de eerste% i i plus 1. 440 00:22:40,470 --> 00:22:43,010 Dus ik is deze index variabele. 441 00:22:43,010 --> 00:22:49,420 En de tweede% i gaat het worden waarde in de leeftijd matrix plus 1. 442 00:22:49,420 --> 00:22:54,217 Dus dit plus 1 is gewoon omdat we saying-- dit plus 1, leeftijden i plus 1. 443 00:22:54,217 --> 00:22:57,050 Dit plus 1 is gewoon omdat we zeggen, een jaar vanaf nu de persoon 444 00:22:57,050 --> 00:22:58,280 zal deze oude zijn. 445 00:22:58,280 --> 00:23:01,080 >> Dus waarom is deze i plus 1? 446 00:23:01,080 --> 00:23:04,064 Daarom hebben we een plus 1 is er? 447 00:23:04,064 --> 00:23:04,564 Ja. 448 00:23:04,564 --> 00:23:07,410 449 00:23:07,410 --> 00:23:07,930 Ja. 450 00:23:07,930 --> 00:23:10,510 Dus onthoud arrays worden nul geïndexeerd. 451 00:23:10,510 --> 00:23:14,840 Dus als we het afdrukken van dit uit voor iemand om alleen de output lezen, 452 00:23:14,840 --> 00:23:19,380 dan waarschijnlijk willen ze iets zien als persoon een, persoon nummer één, 453 00:23:19,380 --> 00:23:21,160 zal 20 jaar oud. 454 00:23:21,160 --> 00:23:23,570 Persoon nummer twee zal zijn 15 jaar oud. 455 00:23:23,570 --> 00:23:27,420 Ze liever niet zien persoon getal nul is 15 jaar oud. 456 00:23:27,420 --> 00:23:36,460 >> Dus dit compileren en gewoon zien wat het ziet er like-- wat ruimte maken. 457 00:23:36,460 --> 00:23:43,560 Maak leeftijden compileert. 458 00:23:43,560 --> 00:23:45,080 Running leeftijden. 459 00:23:45,080 --> 00:23:46,580 We zien het aantal mensen in de kamer. 460 00:23:46,580 --> 00:23:48,850 Dus ik zal zeggen dat er drie mensen in de kamer. 461 00:23:48,850 --> 00:23:54,000 Leeftijd van persoon nummer één, laten we zeggen 15, 20, 25. 462 00:23:54,000 --> 00:23:59,680 En nu zal ik zeggen over een jaar Nu zullen ze 16, 21, 26. 463 00:23:59,680 --> 00:24:02,900 Laten we zien dat dit werkt met een n die niet gelijk is aan 3. 464 00:24:02,900 --> 00:24:07,940 Dus als ik zeg dat aantal mensen is 5, een, twee, drie, twee, over een jaar 465 00:24:07,940 --> 00:24:11,170 zullen ze twee, drie, vier, drie, twee jaar oud. 466 00:24:11,170 --> 00:24:16,500 Dus ik kon net zo gemakkelijk kunnen n 10.000. 467 00:24:16,500 --> 00:24:21,270 Nu zal ik hier zitten voor een heel een tijdens het invoeren van leeftijden, maar dit werkt. 468 00:24:21,270 --> 00:24:26,000 >> Dus nu in het geheugen ergens wij een matrix van grootte 10000, 469 00:24:26,000 --> 00:24:28,830 dus uiteindelijk 40.000 bytes, omdat er 470 00:24:28,830 --> 00:24:31,222 vier bytes voor elk van de gehele getallen. 471 00:24:31,222 --> 00:24:33,180 Dus er is een scala aan size 10.000 waar we kunnen 472 00:24:33,180 --> 00:24:36,201 opslaan van de leeftijden van die 10.000 mensen. 473 00:24:36,201 --> 00:24:36,700 Prima. 474 00:24:36,700 --> 00:24:40,070 Vragen over een van deze? 475 00:24:40,070 --> 00:24:41,892 Ja. 476 00:24:41,892 --> 00:24:43,350 Wat als u een negatief getal gaf? 477 00:24:43,350 --> 00:24:44,870 Laten we afwachten wat er gebeurt. 478 00:24:44,870 --> 00:24:49,320 Dus in dit specifieke case-- nummer van de mensen in de kamer, negatieve. 479 00:24:49,320 --> 00:24:52,580 Het verwierp dat, omdat hier we toevallig 480 00:24:52,580 --> 00:24:57,180 te hanteren dat als n minder dan één gaan we opnieuw te vragen. 481 00:24:57,180 --> 00:25:01,780 Als u probeert een te verklaren reeks van negatieve grootte, 482 00:25:01,780 --> 00:25:03,950 Het over het algemeen niet. 483 00:25:03,950 --> 00:25:05,570 >> Dus laten we proberen. 484 00:25:05,570 --> 00:25:08,000 Laten we negeren wat waarde die zij input voor n 485 00:25:08,000 --> 00:25:10,571 en gewoon zeggen int leeftijden negatieve. 486 00:25:10,571 --> 00:25:12,410 Laten we eens zien of het compileert zelfs. 487 00:25:12,410 --> 00:25:14,100 Ik ben niet zeker. 488 00:25:14,100 --> 00:25:14,920 Nee. 489 00:25:14,920 --> 00:25:18,280 Dus leeftijden wordt verklaard als een array met een negatieve grootte. 490 00:25:18,280 --> 00:25:22,540 Dus vooraf erkent een array kan niet zijn van negatieve grootte en verwerpt. 491 00:25:22,540 --> 00:25:26,840 Nu, als we niet behandelen Dit doe-while lus correct 492 00:25:26,840 --> 00:25:28,810 als we niet controleren Als n kleiner is dan 1-- 493 00:25:28,810 --> 00:25:32,690 laten we zeggen dat we net had dit niet helemaal 494 00:25:32,690 --> 00:25:35,940 en in plaats daarvan hebben we net pak een integer. 495 00:25:35,940 --> 00:25:40,710 Ongeacht wat die integer is, we verklaren een array van die grootte. 496 00:25:40,710 --> 00:25:44,250 >> Zodat de compiler niet kan eventueel klagen nu. 497 00:25:44,250 --> 00:25:48,780 Als ik compileren dit-- dus het kan niet klagen, 498 00:25:48,780 --> 00:25:51,480 want het kan niet dat ik ben zal een negatief getal in te voeren, 499 00:25:51,480 --> 00:25:52,550 die ongeldig zou kunnen zijn. 500 00:25:52,550 --> 00:25:54,633 Voor al het weet, zou ik voer een positief getal, 501 00:25:54,633 --> 00:25:56,000 die volkomen geldig. 502 00:25:56,000 --> 00:26:01,090 Dus ik neem aan dat als ik binnenkom negatieve 1 mensen in de kamer, segmentation fault. 503 00:26:01,090 --> 00:26:06,040 >> Dus ok. 504 00:26:06,040 --> 00:26:13,160 Dus laten we voegen deze net terug houd het wat het oorspronkelijk was. 505 00:26:13,160 --> 00:26:15,640 Dus zorg leeftijden. 506 00:26:15,640 --> 00:26:18,120 Nu als ik wil proberen negatieve age-- dus laten 507 00:26:18,120 --> 00:26:19,710 zeggen dat er vijf mensen in de kamer. 508 00:26:19,710 --> 00:26:23,180 Leeftijd van persoon nummer één negatief 4, persoon drie 509 00:26:23,180 --> 00:26:26,500 nul is, persoon three-- OK. 510 00:26:26,500 --> 00:26:29,850 Dus hier, een jaar vanaf nu, persoon nummer Niemand zal negatief 3 jaar oud zijn. 511 00:26:29,850 --> 00:26:32,830 Dus waarschijnlijk niet zinvol. 512 00:26:32,830 --> 00:26:37,220 Maar dat is alleen maar omdat op zoek naar de code alles wat we doen 513 00:26:37,220 --> 00:26:40,260 vraagt ​​getint. 514 00:26:40,260 --> 00:26:44,110 >> Nu, als we hadden de GetPositiveInt functie 515 00:26:44,110 --> 00:26:49,690 of we hadden gewoon gedaan soort van dezelfde while loop daar beneden, 516 00:26:49,690 --> 00:26:52,340 dan zou dit werkt prima. 517 00:26:52,340 --> 00:26:54,200 Maar in dit geval is, doen we het gewoon niet 518 00:26:54,200 --> 00:26:57,772 toevallig hanteren negatieve waarden. 519 00:26:57,772 --> 00:26:59,147 Andere vragen over arrays? 520 00:26:59,147 --> 00:27:02,290 521 00:27:02,290 --> 00:27:03,250 OK. 522 00:27:03,250 --> 00:27:09,380 >> Dus we hebben nu gezien arrays. 523 00:27:09,380 --> 00:27:12,500 En we gaan moet gebruiken Dit voor command-line argumenten. 524 00:27:12,500 --> 00:27:14,680 Dus probleem ingesteld two-- Ik weet dat velen van jullie 525 00:27:14,680 --> 00:27:18,040 misschien nog werken aan probleem set één, maar probleem set twee komt eraan. 526 00:27:18,040 --> 00:27:22,260 In set twee probleem, je gaat moeten omgaan met strings, arrays, 527 00:27:22,260 --> 00:27:23,950 en command-line argumenten. 528 00:27:23,950 --> 00:27:26,270 >> Dus wat zijn command line argumenten? 529 00:27:26,270 --> 00:27:29,570 Nu kunt u hier beneden een zien kleine teaser voor precies wat 530 00:27:29,570 --> 00:27:30,950 gaat gebeuren. 531 00:27:30,950 --> 00:27:32,950 We zien int main, inc argc, touwtje argv haakjes. 532 00:27:32,950 --> 00:27:34,560 533 00:27:34,560 --> 00:27:38,130 Dus laten we eerst proberen te interpreteren wat dat probeert te zeggen. 534 00:27:38,130 --> 00:27:40,800 Nu goed. 535 00:27:40,800 --> 00:27:44,637 >> Dus op de opdrachtregel moet je wennen aan een aantal van deze opdrachten 536 00:27:44,637 --> 00:27:48,580 nu, en je hebt waarschijnlijk lopen cd in de terminal voor. 537 00:27:48,580 --> 00:27:52,100 Dus als we zeggen cd pset1, weet je dat dat zou moeten 538 00:27:52,100 --> 00:27:55,050 te veranderen in de pset1 directory. 539 00:27:55,050 --> 00:27:59,120 >> Nu merken dat je nog nooit hebt schriftelijk een programma als dit eerder. 540 00:27:59,120 --> 00:28:03,120 Elk programma dat je hebt geschreven, je zou lopen, laten we zeggen, dot slash Mario, 541 00:28:03,120 --> 00:28:06,779 dot slash hebzuchtig, en dan is het zou u vragen om input. 542 00:28:06,779 --> 00:28:08,570 Nu, dat is niet wat change directory doet. 543 00:28:08,570 --> 00:28:12,770 Als je cd draaien, is het niet dan zeggen, welke map wil je cd in? 544 00:28:12,770 --> 00:28:17,200 In plaats daarvan, je gewoon zeggen, cd pset1 en het gaat gewoon naar de pset1 directory. 545 00:28:17,200 --> 00:28:20,430 >> Dus op dezelfde wijze hebben we andere voorbeelden. 546 00:28:20,430 --> 00:28:21,540 maken hallo. 547 00:28:21,540 --> 00:28:25,760 Wanneer je loopt te maken, is het niet dan zeggen, welk programma wilt u maken? 548 00:28:25,760 --> 00:28:29,620 Je zegt gewoon, bij de command line maken hallo. 549 00:28:29,620 --> 00:28:31,060 >> Move is een ander voorbeeld. 550 00:28:31,060 --> 00:28:34,840 Deze ene we het verplaatsen van de mario.c bestand up één directory. 551 00:28:34,840 --> 00:28:38,060 Dus nu weten we met dit voorbeeld We zijn echt voorbij twee argumenten. 552 00:28:38,060 --> 00:28:42,090 Er is mario.c als het eerste argument, en dot dot is het tweede argument. 553 00:28:42,090 --> 00:28:46,140 En dan wanneer je run te maken, u zie dat echt lang commando line-- 554 00:28:46,140 --> 00:28:50,580 dat echt lang commando gedrukt op de opdrachtregel. 555 00:28:50,580 --> 00:28:53,590 Zodat deze lange command-- is slechts een korte deel van het, 556 00:28:53,590 --> 00:28:56,090 maar nu hebben we drie command-line argumenten. 557 00:28:56,090 --> 00:28:59,750 Dot dash nul, hallo, en hello.c. 558 00:28:59,750 --> 00:29:03,497 >> Dus dit zijn command-line argumenten, argumenten 559 00:29:03,497 --> 00:29:05,580 dat je bij het passeren van de command line zodat het 560 00:29:05,580 --> 00:29:08,680 moet niet worden gevraagd wanneer u het programma uitvoert. 561 00:29:08,680 --> 00:29:13,090 Het zou frustrerend zijn als bij je liep kletteren het zei, "OK, 562 00:29:13,090 --> 00:29:15,630 die program-- die bestand bent u samenstellen? 563 00:29:15,630 --> 00:29:17,010 Hello.c. 564 00:29:17,010 --> 00:29:19,440 Wat vlaggen zou je willen gaan? dash o. 565 00:29:19,440 --> 00:29:21,190 Wat wil je hebben het bestand te worden genoemd? 566 00:29:21,190 --> 00:29:21,690 Hallo. 567 00:29:21,690 --> 00:29:25,290 Nee, je moet gewoon lopen clang dash o hallo hello.c. 568 00:29:25,290 --> 00:29:28,820 >> Dus kijken terug op deze. 569 00:29:28,820 --> 00:29:32,920 Nu argc-- argc is het argument telt. 570 00:29:32,920 --> 00:29:36,620 Het is het aantal command-line argumenten ingevoerd op de opdrachtregel. 571 00:29:36,620 --> 00:29:39,720 Nou, argv-- technisch de v staat voor vector, 572 00:29:39,720 --> 00:29:41,460 die in feite betekent array. 573 00:29:41,460 --> 00:29:42,680 Maar je kunt negeren. 574 00:29:42,680 --> 00:29:47,540 Argv-- we touwtje argv, dus touwtje argv haakjes. 575 00:29:47,540 --> 00:29:50,150 Dit is dus een vorm van beugels je nog niet eerder gezien. 576 00:29:50,150 --> 00:29:52,300 Dus we hebben gezien beugel notatie toen we hebben gezegd, 577 00:29:52,300 --> 00:29:53,970 zoals, touw s gelijk Zamyla. 578 00:29:53,970 --> 00:29:56,910 s beugel 0 toegang tot het teken Z. 579 00:29:56,910 --> 00:30:00,720 >> We hebben ook gezien haken bij we zeiden int leeftijden beugel 5. 580 00:30:00,720 --> 00:30:03,160 Dat verklaarde een array van grootte 5. 581 00:30:03,160 --> 00:30:06,280 Dus hier is een versie van de haken we nog niet eerder gezien. 582 00:30:06,280 --> 00:30:09,630 Dus dit soort string argv dat zou volledig op de hoogte zijn 583 00:30:09,630 --> 00:30:12,050 dat het enkel een tekenreeks zijn. 584 00:30:12,050 --> 00:30:14,520 Nu de haakjes geven dat dit een matrix. 585 00:30:14,520 --> 00:30:19,920 Dus touwtje argv beugels middelen dat argv is een array van strings. 586 00:30:19,920 --> 00:30:22,540 Nu technisch gezien een string een reeks karakters. 587 00:30:22,540 --> 00:30:26,400 Dus dit is nu een matrix van een reeks karakters. 588 00:30:26,400 --> 00:30:31,490 Maar het is veel makkelijker om na te denken over dit gewoon als een array van strings. 589 00:30:31,490 --> 00:30:34,900 >> Dus waarom zou de beugels leeg? 590 00:30:34,900 --> 00:30:38,170 Zoals, waarom kunnen we niet zeggen, beugel 5, beugel n? 591 00:30:38,170 --> 00:30:40,700 592 00:30:40,700 --> 00:30:41,200 Ja. 593 00:30:41,200 --> 00:30:43,731 594 00:30:43,731 --> 00:30:44,230 Ja. 595 00:30:44,230 --> 00:30:46,396 We weten niet hoeveel ingangen er zullen zijn. 596 00:30:46,396 --> 00:30:53,560 Dus als we kijken naar de clang voorbeeld we zeggen kletteren dashboard o hallo hello.c. 597 00:30:53,560 --> 00:30:56,710 In dit geval, er gebeurt zijn drie command-line argumenten. 598 00:30:56,710 --> 00:31:00,522 En zo de brackets-- we zullen zien in een tweede het zou niet drie. 599 00:31:00,522 --> 00:31:01,730 Het technisch zou vier. 600 00:31:01,730 --> 00:31:04,030 Maar de beugels, zouden we zeggen, er drie. 601 00:31:04,030 --> 00:31:08,220 Maar nu als we keken naar move mario.c dot dot, de beugels 602 00:31:08,220 --> 00:31:09,760 we zouden willen twee op hen. 603 00:31:09,760 --> 00:31:12,884 >> En er zijn een heleboel opdrachten die hebben een variabel aantal command line 604 00:31:12,884 --> 00:31:13,620 argumenten. 605 00:31:13,620 --> 00:31:17,430 Dus wat deze versie van de haakjesnotering geeft 606 00:31:17,430 --> 00:31:20,820 is dat argv is een array van strings. 607 00:31:20,820 --> 00:31:24,360 Maar we weten niet hoeveel strings in die array. 608 00:31:24,360 --> 00:31:27,090 En hoe weten we dan hoe veel strings zijn in de array? 609 00:31:27,090 --> 00:31:28,870 Dat is het hele punt argc. 610 00:31:28,870 --> 00:31:32,300 argc vertelt ons hoe lang argv is. 611 00:31:32,300 --> 00:31:36,500 >> Dus het laatste wat in te houden geest is dat, technisch gezien, 612 00:31:36,500 --> 00:31:40,820 de opdracht zelf geldt als een van de command-line argumenten. 613 00:31:40,820 --> 00:31:45,330 Dus cd pset1 er twee command-line argumenten. 614 00:31:45,330 --> 00:31:50,260 Het programma op zich, cd, en vervolgens de werkelijke argument deel van het, pset1. 615 00:31:50,260 --> 00:31:54,490 Elk programma dat je tot nu toe hebt geschreven is een command-line argument-- dot had 616 00:31:54,490 --> 00:31:55,320 slash Mario. 617 00:31:55,320 --> 00:31:57,350 Dat is de enige command-line argument. 618 00:31:57,350 --> 00:32:00,900 >> Dus nu kijken naar Clang dash o hallo hello.c. 619 00:32:00,900 --> 00:32:01,905 Dus wat is 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 Dus argc is 4. 623 00:32:08,140 --> 00:32:12,140 Clang, dus argv beugel 0 is Clang. 624 00:32:12,140 --> 00:32:15,630 argv beugel 1 is 0 dash. 625 00:32:15,630 --> 00:32:21,870 argv beugel 2 is hallo, en argv beugel 3 is hello.c. 626 00:32:21,870 --> 00:32:26,813 OK, dus vragen over dit, en dan zullen we kijken naar een aantal programmatische voorbeelden. 627 00:32:26,813 --> 00:32:29,460 628 00:32:29,460 --> 00:32:30,480 >> OK. 629 00:32:30,480 --> 00:32:36,260 Dus we kijken naar hello3.c nemen. 630 00:32:36,260 --> 00:32:41,890 Dus dit bekend uit zou moeten zijn een van de eerste c voorbeelden 631 00:32:41,890 --> 00:32:45,800 we hadden waar we alleen maar zouden zeggen: hallo wereld, maar nu is dit meer algemeen. 632 00:32:45,800 --> 00:32:52,300 We zijn dus even hallo zeggen % s backslash n argv beugel 1. 633 00:32:52,300 --> 00:32:57,440 Notice-- dus tot op dit punt, dit is wat mijn template bestand leek. 634 00:32:57,440 --> 00:33:01,800 Ik had int main (void), en dan zou ik iets in de belangrijkste functie te doen. 635 00:33:01,800 --> 00:33:05,100 Nu in plaats, een keer beginnen we te maken met command-line argumenten, 636 00:33:05,100 --> 00:33:07,890 moeten we een staat andere vorm van de belangrijkste. 637 00:33:07,890 --> 00:33:11,930 >> Dus kijken naar hello3 opnieuw, de belangrijkste gaat 638 00:33:11,930 --> 00:33:15,990 twee argumenten nemen now-- int argc, het aantal command-line argumenten, 639 00:33:15,990 --> 00:33:20,970 en strijkorkest argv beugels, de eigenlijke snaren ingevoerd op de opdrachtregel. 640 00:33:20,970 --> 00:33:26,560 Dus ik ga dat veranderen template dat feit weerspiegelen. 641 00:33:26,560 --> 00:33:29,060 Nu wanneer u schrijft een programma, als je niet 642 00:33:29,060 --> 00:33:33,720 behoefte aan een command-line te nemen argumenten, dan gewoon gebruik int main (void). 643 00:33:33,720 --> 00:33:37,070 Maar nu wanneer je schrijft opdrachtregelargument programma's, die 644 00:33:37,070 --> 00:33:40,350 je gaat doen voor het probleem set two-- dus nu dat je draait 645 00:33:40,350 --> 00:33:42,630 programma's moet nemen command-line argumenten, 646 00:33:42,630 --> 00:33:45,250 je nodig hebt belangrijkste van dit formulier te hebben. 647 00:33:45,250 --> 00:33:51,290 >> Dus hier-- dit is het grote gebruik van de command-line argument. 648 00:33:51,290 --> 00:33:54,100 Dus afdrukken argv 1. 649 00:33:54,100 --> 00:33:59,180 OK dus laten we compileren en start dit programma. 650 00:33:59,180 --> 00:34:02,440 Maak hello3. 651 00:34:02,440 --> 00:34:03,570 Compileert. 652 00:34:03,570 --> 00:34:06,870 Dot slash hello3. 653 00:34:06,870 --> 00:34:08,920 En laten we zeggen, "Rob." 654 00:34:08,920 --> 00:34:10,760 Hallo Rob. 655 00:34:10,760 --> 00:34:14,940 Als ik zeg, "hallo Maria," hallo Maria. 656 00:34:14,940 --> 00:34:15,719 Hallo Maria. 657 00:34:15,719 --> 00:34:18,639 Hannah nog steeds zegt: "hello Maria, "want ik ben niet 658 00:34:18,639 --> 00:34:21,340 iets met onze argv 2 doen. 659 00:34:21,340 --> 00:34:22,590 Argv 2 nu zou zijn "Hannah." 660 00:34:22,590 --> 00:34:25,030 Argc zou 3. 661 00:34:25,030 --> 00:34:27,735 Wat als ik dit deed? 662 00:34:27,735 --> 00:34:31,980 663 00:34:31,980 --> 00:34:34,679 Dus hallo null. 664 00:34:34,679 --> 00:34:38,760 >> Hij raakte kort op het feit dat, technisch gezien, GetString 665 00:34:38,760 --> 00:34:42,429 null zou terugkeren, maar we zullen een krijgen veel meer in wat null eigenlijk is. 666 00:34:42,429 --> 00:34:47,449 Maar neem het als een kwestie van dat er geen algemeen slecht. 667 00:34:47,449 --> 00:34:50,179 Wij deden iets mis als het is afgedrukt "hallo null." 668 00:34:50,179 --> 00:34:52,179 En de reden dat we deden iets mis is-- goed, 669 00:34:52,179 --> 00:34:56,179 toen ik liep dot slash hello3, argc was 1. 670 00:34:56,179 --> 00:34:59,680 Dus dat betekent de lengte van argv was 1. 671 00:34:59,680 --> 00:35:05,110 Indien een array van lengte 1, de enige geldige index nul. 672 00:35:05,110 --> 00:35:08,550 En dus even argv 1 is buiten het bereik van deze array. 673 00:35:08,550 --> 00:35:13,410 Het was vergelijkbaar met vroeger toen ik probeerde opslaan 6 buiten het einde van de array. 674 00:35:13,410 --> 00:35:18,100 Dus ik ben op zoek naar iets te openen buiten de argv telt, 675 00:35:18,100 --> 00:35:21,340 en we krijgen nul. 676 00:35:21,340 --> 00:35:24,360 >> Dus een betere versie van deze verbetering, 677 00:35:24,360 --> 00:35:27,010 expliciet controleren argc. 678 00:35:27,010 --> 00:35:33,580 Dus als argc gelijk aan 2, dat betekent dat we liepen zoiets dot slash hello3 Rob. 679 00:35:33,580 --> 00:35:36,840 En het zal drukken "hallo Rob." 680 00:35:36,840 --> 00:35:39,850 Als argc niet gelijk 2, dan is het gewoon 681 00:35:39,850 --> 00:35:42,560 te negeren wat je bij de command-line argument 682 00:35:42,560 --> 00:35:43,960 als command-line argumenten. 683 00:35:43,960 --> 00:35:47,168 Of als u geen heeft gezet op alle, het is gewoon te negeren dat en gewoon zeggen, 684 00:35:47,168 --> 00:35:47,960 "Hallo Jij." 685 00:35:47,960 --> 00:35:51,490 >> Dus de samenstelling van dit. 686 00:35:51,490 --> 00:35:54,500 Maak hello4. 687 00:35:54,500 --> 00:35:56,790 And running hello4. 688 00:35:56,790 --> 00:36:00,010 Loopt het op deze manier, wat moet worden afgedrukt? 689 00:36:00,010 --> 00:36:01,330 "Hallo Jij." 690 00:36:01,330 --> 00:36:02,810 Hallo Jij. 691 00:36:02,810 --> 00:36:05,870 Hoe zit het met hello4 Rob? 692 00:36:05,870 --> 00:36:06,950 "Hallo Rob." 693 00:36:06,950 --> 00:36:10,580 En tot slot, hello Rob Maria is gewoon "hallo You" opnieuw, 694 00:36:10,580 --> 00:36:13,677 omdat je niet echt in te voeren iets wat verwacht. 695 00:36:13,677 --> 00:36:15,510 U hebt ingevoerd meer namen dan het zou kunnen verwerken, 696 00:36:15,510 --> 00:36:19,500 dus het is alleen standaard op de hallo je gedrag. 697 00:36:19,500 --> 00:36:23,040 Dus vragen over dit? 698 00:36:23,040 --> 00:36:26,290 Of command-line argumenten? 699 00:36:26,290 --> 00:36:28,690 >> OK, dus het nemen van een blik op een paar voorbeelden van het gebruik 700 00:36:28,690 --> 00:36:34,230 command-line arguments-- eerst we hebben argv dash 1 punt c. 701 00:36:34,230 --> 00:36:38,510 Dus de reacties weggeven wat dit programma zou moeten doen. 702 00:36:38,510 --> 00:36:42,460 Maar let now-- deze lus, Dit komt overeen met de exacte patroon 703 00:36:42,460 --> 00:36:43,390 Ik was eerder zei. 704 00:36:43,390 --> 00:36:46,240 We toevallig te zijn gebruik argc plaats van n. 705 00:36:46,240 --> 00:36:48,880 Nu argc is echt de n. 706 00:36:48,880 --> 00:36:51,260 Het is de lengte van de argv array. 707 00:36:51,260 --> 00:36:59,600 Dus worden itereren over de argv matrix-printf ing elk argv waarde. 708 00:36:59,600 --> 00:37:04,730 >> Dus als ik dit. 709 00:37:04,730 --> 00:37:08,232 Maak argv 1. 710 00:37:08,232 --> 00:37:09,940 Het compileert. 711 00:37:09,940 --> 00:37:11,620 Dot slash argv 1. 712 00:37:11,620 --> 00:37:15,530 Alleen deze loopt, prints dot slash argv 1 713 00:37:15,530 --> 00:37:18,500 want dat was de enige command-line argument-- de naam van het programma. 714 00:37:18,500 --> 00:37:22,080 Er zullen altijd op least-- argc kan niet minder dan één zijn, 715 00:37:22,080 --> 00:37:25,910 want er zal altijd ten minste zijn de naam van het programma uit te voeren. 716 00:37:25,910 --> 00:37:32,040 Dus argv 1 Rob zal argv afdrukken 1 en dan op de nieuwe lijn "Rob." 717 00:37:32,040 --> 00:37:36,350 >> Dus in de eerste iteratie van deze lus, i 0. 718 00:37:36,350 --> 00:37:39,090 Argv 0 is de naam van het programma. 719 00:37:39,090 --> 00:37:40,010 Dot slash argv 1. 720 00:37:40,010 --> 00:37:43,770 En dan argv 1 is mijn eerste command-line argument, dat is Rob. 721 00:37:43,770 --> 00:37:45,920 Op dit moment zijn we gelijk argc. 722 00:37:45,920 --> 00:37:48,210 We breken van de lus en we zijn klaar. 723 00:37:48,210 --> 00:37:53,940 Dus dit werkt voor een willekeurige aantal command-line argumenten. 724 00:37:53,940 --> 00:37:58,550 Let drukt argv 0, argv 1, argv 2, argv 3, argv 4. 725 00:37:58,550 --> 00:38:00,150 En er is geen argv 5. 726 00:38:00,150 --> 00:38:01,460 argc gelijk aan 5. 727 00:38:01,460 --> 00:38:06,960 Dus op argc-- bij i gelijk is aan 5, breken we uit de lus. 728 00:38:06,960 --> 00:38:07,950 OK. 729 00:38:07,950 --> 00:38:11,315 Dus vragen over dat voordat we kijken naar een meer complex voorbeeld? 730 00:38:11,315 --> 00:38:14,190 731 00:38:14,190 --> 00:38:16,860 >> Dus argv 2. 732 00:38:16,860 --> 00:38:17,830 Prima. 733 00:38:17,830 --> 00:38:20,610 Dus we zijn nog steeds afdrukken de command-line argumenten. 734 00:38:20,610 --> 00:38:23,170 Maar nu merken we hebben een geneste lus. 735 00:38:23,170 --> 00:38:24,670 Dus wat is dit? 736 00:38:24,670 --> 00:38:28,430 Dus de eerste lus doet precies wat het voorheen deed. 737 00:38:28,430 --> 00:38:30,950 We zijn nog steeds een lus boven elke command-line argument, 738 00:38:30,950 --> 00:38:34,260 maar nu deze tweede loop-- we hebben Ook zoiets gezien. 739 00:38:34,260 --> 00:38:38,600 Toen hij werd dan itereren Zamyla drukken Z-A-M-Y-L-A. 740 00:38:38,600 --> 00:38:44,816 Dus dit tweede lus voor int j gelijk 0, n gelijk strlen van argv beugel i. 741 00:38:44,816 --> 00:38:49,170 >> Dus laten we eerst nadenken the-- laten we lopen door. 742 00:38:49,170 --> 00:38:53,560 Laten we bedenken wat de computer zou doen als ik liep dit programma alleen dot 743 00:38:53,560 --> 00:38:56,030 slash argv dash 2. 744 00:38:56,030 --> 00:39:03,590 Dus als ik liep deze code, dan argc gaat gelijk aan 1 zijn. 745 00:39:03,590 --> 00:39:07,050 En strijkorkest argv-- er is slechts gaat naar een index in argv, 746 00:39:07,050 --> 00:39:12,370 en dat gaat gelijk dot te zijn slash argv 2-- de naam van het programma. 747 00:39:12,370 --> 00:39:19,170 >> OK, dus nu heb ik gelijk is aan 0, i minder dan 1, i plus plus voor int j gelijk is aan 0, 748 00:39:19,170 --> 00:39:23,880 n gelijk strlen van argv beugel 0, dus in de eerste iteratie van deze lus. argv 749 00:39:23,880 --> 00:39:27,250 beugel 0 is dot slash argv 2. 750 00:39:27,250 --> 00:39:29,320 Dus wat is de lengte van die string? 751 00:39:29,320 --> 00:39:32,480 Nou, dot slash A-R-G-V dash 2. 752 00:39:32,480 --> 00:39:35,020 Dus strlen van die zullen worden 8. 753 00:39:35,020 --> 00:39:37,500 Dus j gelijk is aan 0, n gelijk is aan 8. 754 00:39:37,500 --> 00:39:39,530 Zolang j kleiner dan 8, j ++. 755 00:39:39,530 --> 00:39:44,080 En met dat we gaan worden printen van een enkele karakter, dat 756 00:39:44,080 --> 00:39:47,350 is argv beugel beugel i j. 757 00:39:47,350 --> 00:39:49,826 >> Dus de enige i nul. 758 00:39:49,826 --> 00:39:51,700 We hebben nog maar één command-line argument. 759 00:39:51,700 --> 00:39:53,890 In dat eerste iteratie van de lus, we zijn 760 00:39:53,890 --> 00:39:56,950 gaat om het afdrukken zijn argv beugel beugel 0 0. 761 00:39:56,950 --> 00:39:58,325 En dan j gaat verhogen. 762 00:39:58,325 --> 00:40:01,650 En we gaan printen argv beugel 0 beugel 1. 763 00:40:01,650 --> 00:40:04,150 En dan argv beugel 0 beugel 2. 764 00:40:04,150 --> 00:40:09,030 >> Dus dit is onze eerste ontmoeting multi-dimensionale arrays. 765 00:40:09,030 --> 00:40:12,770 Eerder herinner me dat ik zei dat argv technisch 766 00:40:12,770 --> 00:40:15,950 een array van reeksen karakters. 767 00:40:15,950 --> 00:40:24,360 Dus hier als ik zei iets als touwtje s gelijk argv beugel i, 768 00:40:24,360 --> 00:40:29,590 en toen zei ik, s beugel j, dit zou volbrengen hetzelfde. 769 00:40:29,590 --> 00:40:31,960 Nu, je hebt beugel j eerder gezien s. 770 00:40:31,960 --> 00:40:36,680 Dat is gewoon toegang tot de j- karakter van deze string. 771 00:40:36,680 --> 00:40:48,010 Dus met dit, krijgen we de j-de aard van de i-de argv. 772 00:40:48,010 --> 00:40:51,450 >> Dus wat moet dit uiteindelijk output? 773 00:40:51,450 --> 00:40:53,210 Maak argv 2. 774 00:40:53,210 --> 00:40:54,730 Het compileert. 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," en geef ons wat ruimte. 777 00:41:03,790 --> 00:41:07,050 Zo zien we dat dit uitvoeren punt op zijn eigen lijn en slash 778 00:41:07,050 --> 00:41:08,920 op zijn eigen lijn en een op zijn eigen lijn. 779 00:41:08,920 --> 00:41:11,260 Het afdrukken van elk eigenheid 780 00:41:11,260 --> 00:41:12,950 van elke command-line argument. 781 00:41:12,950 --> 00:41:15,960 Dan daartussen als gevolg van deze nieuwe lijn 782 00:41:15,960 --> 00:41:19,380 We zijn hier beneden te drukken, in tussen hen is een nieuwe lijn zal worden afgedrukt. 783 00:41:19,380 --> 00:41:24,540 >> Dus dit is vergelijkbaar voorafgaande argv dash 1, 784 00:41:24,540 --> 00:41:26,459 waarbij elke afgedrukte command-line argument, 785 00:41:26,459 --> 00:41:28,500 maar nu zijn we printen de command-line argumenten 786 00:41:28,500 --> 00:41:31,950 en dan itereren door elke karakter van elk opdrachtregelargument 787 00:41:31,950 --> 00:41:35,400 om deze uitgang te krijgen. 788 00:41:35,400 --> 00:41:36,870 OK? 789 00:41:36,870 --> 00:41:40,570 Dus vragen over dit? 790 00:41:40,570 --> 00:41:45,130 >> Een ding om op te merken is dat command-line arguments-- 791 00:41:45,130 --> 00:41:49,990 zodat ze worden gescheiden door spaties als zou je natuurlijk verwachten dat ze zijn. 792 00:41:49,990 --> 00:41:53,050 Dus een string kan ruimtes in het hebben. 793 00:41:53,050 --> 00:41:57,380 Het is niet super belangrijk, maar als ik wilde de derde opdrachtregelargument 794 00:41:57,380 --> 00:42:01,226 om een ​​ruimte in hebben, dan ben ik zou zoiets zeggen. 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 Dus dit nu nog slechts drie command-line arguments-- goed 4. 798 00:42:12,190 --> 00:42:17,620 Dot slash argv dash 2, Rob, Maria en Hannah Bloomberg. 799 00:42:17,620 --> 00:42:18,320 OK. 800 00:42:18,320 --> 00:42:19,310 Vragen over dit? 801 00:42:19,310 --> 00:42:22,700 802 00:42:22,700 --> 00:42:24,894 >> Er is niets bijzonders over de spatie. 803 00:42:24,894 --> 00:42:27,810 Het gebeurt gewoon te zijn dat de command-line behandelt de spatie 804 00:42:27,810 --> 00:42:29,226 hoe je scheiden elk argument. 805 00:42:29,226 --> 00:42:32,048 806 00:42:32,048 --> 00:42:33,000 Prima. 807 00:42:33,000 --> 00:42:39,950 Dus dan Probleem set two-- je gaat worden 808 00:42:39,950 --> 00:42:43,240 op zoek naar geheime sleutel cryptografie. 809 00:42:43,240 --> 00:42:47,700 Dus, vergelijkbaar met voorbeeld we zagen van A Christmas Story, 810 00:42:47,700 --> 00:42:52,840 je gaat implementeren sommige algoritmen die, gegeven een bericht, 811 00:42:52,840 --> 00:42:55,560 je gaat om te kunnen deze boodschap versleutelen 812 00:42:55,560 --> 00:42:58,730 dat alleen iemand met dat geheim key, met die decoder ring, 813 00:42:58,730 --> 00:43:01,090 zou kunnen ontsleutelen. 814 00:43:01,090 --> 00:43:04,839 >> Dus dat is de standaard editie. 815 00:43:04,839 --> 00:43:07,130 Je gaat implementeren twee verschillende uitvoeringen. 816 00:43:07,130 --> 00:43:09,620 Als je toevallig een kijkje te nemen bij de hacker edition-- nu, 817 00:43:09,620 --> 00:43:12,600 we gaan geven je een string als dit, 818 00:43:12,600 --> 00:43:15,240 wat neerkomt op een versleuteld wachtwoord. 819 00:43:15,240 --> 00:43:19,990 Dus je doel is om erachter te komen Wat de gedecodeerde wachtwoord. 820 00:43:19,990 --> 00:43:26,950 Nu is dit eigenlijk hoe wachtwoorden worden in veel computers, 821 00:43:26,950 --> 00:43:31,290 en het slaat alleen deze willekeurige tekenreeks. 822 00:43:31,290 --> 00:43:34,440 Je moet uitzoeken hoe je uit deze willekeurige tekenreeks 823 00:43:34,440 --> 00:43:36,140 wat de oorspronkelijke wachtwoord was. 824 00:43:36,140 --> 00:43:39,060 825 00:43:39,060 --> 00:43:43,290 >> Tenslotte, daarna probleem set, moet u 826 00:43:43,290 --> 00:43:46,100 in staat zijn om te begrijpen wat dit betekent. 827 00:43:46,100 --> 00:43:51,650 Zo leert u hoe te ontcijferen dit soort willekeurige tekenreeks. 828 00:43:51,650 --> 00:43:56,390 Ook als je nog van week 0, zou u deze URL hebt gezien. 829 00:43:56,390 --> 00:44:00,210 En je moet in staat zijn om decoderen dit uiteindelijk. 830 00:44:00,210 --> 00:44:04,810 Je zou niet blij zijn als u decoderen en klik op de link. 831 00:44:04,810 --> 00:44:05,700 Prima. 832 00:44:05,700 --> 00:44:06,591 Dat is het voor vandaag. 833 00:44:06,591 --> 00:44:12,095 Zo zie je volgende week! 834 00:44:12,095 --> 00:44:18,315 >> [Elektronische muziek] 835 00:44:18,315 --> 00:47:15,619