1 00:00:00,000 --> 00:00:03,944 >> [Speel van musiek] 2 00:00:03,944 --> 00:00:10,732 3 00:00:10,732 --> 00:00:11,690 David Malan: Alle reg. 4 00:00:11,690 --> 00:00:14,674 Dit is CS50, en dit is die einde van die week 2. 5 00:00:14,674 --> 00:00:16,840 Ek is so jammer ek kon nie wees daar met julle almal vandag 6 00:00:16,840 --> 00:00:18,300 maar jy is in 'n baie goeie hande. 7 00:00:18,300 --> 00:00:21,710 Laat my toe om te voer CS50 se eie Rob Bowden. 8 00:00:21,710 --> 00:00:29,106 9 00:00:29,106 --> 00:00:31,730 ROB BOWDEN: En natuurlik, dan ons het pret maak van die feit 10 00:00:31,730 --> 00:00:36,820 dat hy gestuur vir ons 'n vertikale video en dit wys. 11 00:00:36,820 --> 00:00:38,320 >> [Video speel] 12 00:00:38,320 --> 00:00:39,820 >> [Speel van musiek] 13 00:00:39,820 --> 00:00:42,350 >> [VOETSPOREN] 14 00:00:42,350 --> 00:00:44,730 >> -Dit Video het nie het om op hierdie manier te kyk. 15 00:00:44,730 --> 00:00:46,570 Dit voorkom kon gewees het. 16 00:00:46,570 --> 00:00:49,070 Sê nee vir vertikale videos. 17 00:00:49,070 --> 00:00:53,310 >> -Vertical Videos gebeur wanneer jy hou jou kamera op die verkeerde manier. 18 00:00:53,310 --> 00:00:55,880 Jou video sal eindig up lyk soos kak. 19 00:00:55,880 --> 00:00:57,650 >> - [Grunt] 20 00:00:57,650 --> 00:01:02,240 >> -Daar Is meer en meer mense verslaaf tot die maak van vertikale video's elke dag. 21 00:01:02,240 --> 00:01:06,240 Dit is nie kraak of niks nie, maar dit is nog steeds baie sleg. 22 00:01:06,240 --> 00:01:10,410 Daar is twee verskillende soorte mense wat ly aan VVS. 23 00:01:10,410 --> 00:01:14,160 Die eerste groep behandel die videos hulle skiet soos foto's. 24 00:01:14,160 --> 00:01:15,850 Hulle bedoel nie enige skade. 25 00:01:15,850 --> 00:01:19,180 Hulle verstaan ​​net nie wat terwyl jy 'n foto kan draai, 26 00:01:19,180 --> 00:01:20,880 jy kan nie regtig draai 'n video. 27 00:01:20,880 --> 00:01:21,880 >> [CRASH] 28 00:01:21,880 --> 00:01:23,460 >> - [Aap SOUNDS] 29 00:01:23,460 --> 00:01:27,540 >> -Die Ander groep mense wat nie 'n [oproep]. 30 00:01:27,540 --> 00:01:31,090 >> -Vertical Video Sindroom is gevaarlik. 31 00:01:31,090 --> 00:01:34,120 Rolprente het altyd horisontaal is. 32 00:01:34,120 --> 00:01:35,990 Televisies is horisontaal. 33 00:01:35,990 --> 00:01:38,380 Rekenaar skerms is horisontaal. 34 00:01:38,380 --> 00:01:41,580 Mense se oë is horisontaal. 35 00:01:41,580 --> 00:01:45,170 Ons is nie gebou om kyk vertikale videos. 36 00:01:45,170 --> 00:01:47,600 >> -Ek Is lief vir vertikale videos. 37 00:01:47,600 --> 00:01:50,410 >> -Nobody Sorg vir julle. 38 00:01:50,410 --> 00:01:53,340 >> -As Se probleem links ongemerk, jy ook 39 00:01:53,340 --> 00:01:57,650 sal begin toon vier videos gelyktydig net bandwydte te bespaar. 40 00:01:57,650 --> 00:02:02,400 >> -Letterboxed Vertikale videos sou wees van die grootte van 'n posseël. 41 00:02:02,400 --> 00:02:04,920 >> -En Dit sal oral versprei. 42 00:02:04,920 --> 00:02:07,670 Film skerms het altyd horisontaal is. 43 00:02:07,670 --> 00:02:11,200 As vertikale videos geword aanvaarde, teaters 44 00:02:11,200 --> 00:02:13,930 sal lank en maer te wees. 45 00:02:13,930 --> 00:02:17,710 >> -en Al die teaters sou het om ontslae afgebreek en herbou. 46 00:02:17,710 --> 00:02:22,090 En teen die tyd dat hulle herbou, Mila Kunis sou oud en lelik. 47 00:02:22,090 --> 00:02:24,342 >> -Birds Sal crash in hulle en sterf. 48 00:02:24,342 --> 00:02:26,530 >> -We'll Al kry stywe nekke van kyk. 49 00:02:26,530 --> 00:02:29,800 >> -en Niemand sal sit in die voorry ooit weer. 50 00:02:29,800 --> 00:02:37,170 >> -George Lucas sal weer release Star Oorloë again-- die skinny uitgawe. 51 00:02:37,170 --> 00:02:41,860 >> -Ek Was nooit regtig in staat om te vertel die storie wat ek wou sê. 52 00:02:41,860 --> 00:02:46,030 Dit was 'n groot kans vir my om eksperimenteer met 'n nuwe tegnologie. 53 00:02:46,030 --> 00:02:48,150 >> -You're 'N ruk. 54 00:02:48,150 --> 00:02:54,430 >> -Every Tyd 'n mobiele toestel gebruik word om rekord video, die versoeking is daar. 55 00:02:54,430 --> 00:02:56,370 Net nee sê. 56 00:02:56,370 --> 00:03:00,116 Sê nee vir George Lucas. 57 00:03:00,116 --> 00:03:04,062 Sê nee vir ou Mila Kunis. 58 00:03:04,062 --> 00:03:06,600 Sê nee vir vertikale videos. 59 00:03:06,600 --> 00:03:12,511 >> -en As jy sien iemand doen dit, sê, "jy nie skiet dit reg dummy!" 60 00:03:12,511 --> 00:03:15,433 >> [Speel van musiek] 61 00:03:15,433 --> 00:03:18,842 62 00:03:18,842 --> 00:03:19,830 >> [Einde afspeel] 63 00:03:19,830 --> 00:03:23,702 >> [Applous] 64 00:03:23,702 --> 00:03:27,598 >> [Klank uit] 65 00:03:27,598 --> 00:03:44,041 66 00:03:44,041 --> 00:03:45,790 ROB BOWDEN: --simple vorm van kriptografie, 67 00:03:45,790 --> 00:03:49,500 wat is basies die enkripsie en dekripsie van geheime boodskappe. 68 00:03:49,500 --> 00:03:52,590 So hier het ons 'n baie eenvoudige speelding. 69 00:03:52,590 --> 00:03:56,900 En die idee is die buitenste ring draai om die binneste ring. 70 00:03:56,900 --> 00:04:01,610 En jy kan sien, miskien as ek zoom in, that-- dit is moeilik om te sien. 71 00:04:01,610 --> 00:04:05,090 Maar, soos die aantal 1-- goed, wat beweeg. 72 00:04:05,090 --> 00:04:09,120 >> Die nommer 1 kaarte tot op die letter X, die aantal 2 kaarte op die brief 73 00:04:09,120 --> 00:04:11,630 J. ongelooflik moeilik nie om vorentoe te slaan. 74 00:04:11,630 --> 00:04:16,100 Brief 2 kaarte om J. Nommer 3 kaarte om D. So 75 00:04:16,100 --> 00:04:20,140 met hierdie ring wat jy kan gee iemand 'n boodskap 1, 2, 3. 76 00:04:20,140 --> 00:04:22,624 Vir een of ander rede wat jy wil hulle vertel XJD. 77 00:04:22,624 --> 00:04:24,540 Maar jy kan gee hulle sommige boodskap van getalle, 78 00:04:24,540 --> 00:04:28,460 en so lank as wat hulle het hierdie ring, hulle kan dekripteer wat jy probeer om te sê. 79 00:04:28,460 --> 00:04:32,510 >> So jy al gesien het hierdie spesifieke voorbeeld van kriptografie 80 00:04:32,510 --> 00:04:36,640 voor as om die Kersseisoen jy het 'n Kersfees Story gekyk. 81 00:04:36,640 --> 00:04:38,520 As jy nog nooit gesien het voor, dan net 82 00:04:38,520 --> 00:04:41,060 draai op TBS op letterlik enige tyd op Oukersaand, 83 00:04:41,060 --> 00:04:44,510 omdat hulle toon dit net terug om terug om terug te back om die hele dag terug. 84 00:04:44,510 --> 00:04:46,744 En die betrokke video is dit. 85 00:04:46,744 --> 00:04:47,410 [Video speel] 86 00:04:47,410 --> 00:04:50,020 -Wees Dit aan almal bekend en diverse dat Ralph Parker is hiermee 87 00:04:50,020 --> 00:04:52,850 aangestel om 'n lid van die Klein Orphan Annie Secret Circle 88 00:04:52,850 --> 00:04:56,490 en is geregtig op al die honneurs en voordele daaraan voorkom. 89 00:04:56,490 --> 00:04:59,010 Onderteken Little Orphan Annie. 90 00:04:59,010 --> 00:05:03,120 Onderteken Pierre André in ink! 91 00:05:03,120 --> 00:05:07,460 Honneurs en voordele reeds op die ouderdom van nege! 92 00:05:07,460 --> 00:05:12,530 >> [Skree van Radio] 93 00:05:12,530 --> 00:05:13,030 -Come Op. 94 00:05:13,030 --> 00:05:14,000 Kom ons kry op met dit. 95 00:05:14,000 --> 00:05:18,274 Ek het nie alles wat jazz nodig oor smokkelaars en seerowers. 96 00:05:18,274 --> 00:05:20,440 -Listen Môreaand met die sluiting avontuur 97 00:05:20,440 --> 00:05:22,540 van die Swart Pirate Ship. 98 00:05:22,540 --> 00:05:25,460 Nou, is dit tyd vir Geheime boodskap Annie se 99 00:05:25,460 --> 00:05:28,620 vir jou lede van die Secret Circle. 100 00:05:28,620 --> 00:05:32,370 Onthou kinders, slegs lede Annie's Secret Circle 101 00:05:32,370 --> 00:05:34,880 kan geheime boodskap Annie se ontsyfer. 102 00:05:34,880 --> 00:05:39,100 Onthou, Annie is, afhangende van jou. 103 00:05:39,100 --> 00:05:41,660 Stel jou penne B2. 104 00:05:41,660 --> 00:05:43,960 Hier is die boodskap. 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 -Ek Is in my 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 groot stem vanaand. 115 00:05:54,570 --> 00:05:57,490 Ek kon vertel dat vanaand se boodskap was werklik belangrik. 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 Dit is 'n boodskap van Annie haarself. 119 00:06:01,580 --> 00:06:02,880 Onthou, moenie vir iemand te vertel. 120 00:06:02,880 --> 00:06:07,840 121 00:06:07,840 --> 00:06:11,130 >> -Five Sekondes later, is ek in die enigste kamer in die huis waar 'n seun van nege 122 00:06:11,130 --> 00:06:15,830 in privaatheid en dekodeer kan sit. 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 Ek het na die volgende. 126 00:06:20,210 --> 00:06:23,300 E. Die eerste woord is "wees." 127 00:06:23,300 --> 00:06:25,880 S. Dit kom nou makliker. 128 00:06:25,880 --> 00:06:28,400 U. 25. 129 00:06:28,400 --> 00:06:30,528 Dit is R. 130 00:06:30,528 --> 00:06:31,278 -Come Op, Ralphie! 131 00:06:31,278 --> 00:06:31,861 Ek het moet gaan! 132 00:06:31,861 --> 00:06:33,182 -I'll Regs af wees, Ma! 133 00:06:33,182 --> 00:06:36,038 Gee gefluit. 134 00:06:36,038 --> 00:06:42,840 T. O. "Maak seker dat jy" - seker wees om wat? 135 00:06:42,840 --> 00:06:44,770 Wat was Little Orphan Annie probeer sê? 136 00:06:44,770 --> 00:06:46,381 Maak seker dat jy wat? 137 00:06:46,381 --> 00:06:47,825 >> -Randy Het om te gaan! 138 00:06:47,825 --> 00:06:48,866 Sal jy asseblief kom? 139 00:06:48,866 --> 00:06:49,783 >> -Alle Reg ma! 140 00:06:49,783 --> 00:06:51,786 Ek sal reg uit te wees! 141 00:06:51,786 --> 00:06:53,606 Ek is nou nader om te kry. 142 00:06:53,606 --> 00:06:55,550 Die spanning was verskriklik. 143 00:06:55,550 --> 00:06:57,050 Wat was dit? 144 00:06:57,050 --> 00:06:59,905 Die lot van die planeet kan hang in die balans! 145 00:06:59,905 --> 00:07:01,736 >> -Ralphie, Randy se het om te gaan! 146 00:07:01,736 --> 00:07:05,680 >> -I'll Reg uit wees, vir huil hardop! 147 00:07:05,680 --> 00:07:07,170 Amper daar! 148 00:07:07,170 --> 00:07:08,150 My vingers gevlieg. 149 00:07:08,150 --> 00:07:09,980 My gedagte was 'n staal trap. 150 00:07:09,980 --> 00:07:11,496 Elke porie vibreer. 151 00:07:11,496 --> 00:07:13,268 Dit was amper duidelik! 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 Maak seker om te drink jou Ovaltine. 157 00:07:20,240 --> 00:07:20,740 Ovaltine? 158 00:07:20,740 --> 00:07:26,687 159 00:07:26,687 --> 00:07:27,520 A mollig kommersiële? 160 00:07:27,520 --> 00:07:32,040 161 00:07:32,040 --> 00:07:34,920 Seun van 'n teef. 162 00:07:34,920 --> 00:07:35,890 >> [Einde afspeel] 163 00:07:35,890 --> 00:07:39,650 >> ROB BOWDEN: So dit is hoe Ovaltine betrekking kriptografie. 164 00:07:39,650 --> 00:07:42,290 Basies CS50 net geadverteer Ovaltine, so ons kon 165 00:07:42,290 --> 00:07:44,400 'n morsige kommersiële vir Ovaltine. 166 00:07:44,400 --> 00:07:44,900 Alles reg. 167 00:07:44,900 --> 00:07:47,120 So nou werklike rekenaarwetenskap. 168 00:07:47,120 --> 00:07:50,670 Onthou op Maandag ons opgehou het duik dieper in stringe. 169 00:07:50,670 --> 00:07:52,820 So is ons te make met die string "Zamyla." 170 00:07:52,820 --> 00:07:55,130 En ons was die erkenning die feit dat ons kan hanteer 171 00:07:55,130 --> 00:07:57,510 "Zamyla" as 'n reeks van die karakters. 172 00:07:57,510 --> 00:07:59,740 En onthou dat ons geleer die hakienotasie. 173 00:07:59,740 --> 00:08:01,995 So as dit is gestoor in 'n string "s," dan 174 00:08:01,995 --> 00:08:05,860 As ons sê s bracket 0, wat sou Dui die letter Z. kapitaal 175 00:08:05,860 --> 00:08:09,790 En as ons sê s bracket 1, wat sou die eerste klein a dui, 176 00:08:09,790 --> 00:08:14,220 en so aan tot s bracket 5, wat sou die laaste 'n aan te dui. 177 00:08:14,220 --> 00:08:17,090 >> Nou onthou dat die lengte van die string is 6, 178 00:08:17,090 --> 00:08:23,220 maar die indekse in die string is 0 tot 5, Z deur daardie laaste 'n. 179 00:08:23,220 --> 00:08:28,650 So dit pas nou in 'n groter prentjie van jou rekenaar se geheue, jou geheue. 180 00:08:28,650 --> 00:08:32,020 So iewers die program wat jy loop jou rekenaar 181 00:08:32,020 --> 00:08:34,780 moet onthou Zamyla iewers in die geheue. 182 00:08:34,780 --> 00:08:36,029 So kan ek 'n vrywilliger? 183 00:08:36,029 --> 00:08:38,840 184 00:08:38,840 --> 00:08:40,181 Ja asseblief. 185 00:08:40,181 --> 00:08:50,120 186 00:08:50,120 --> 00:08:51,500 En wat is jou naam? 187 00:08:51,500 --> 00:08:52,410 >> DEKAAN: Dean. 188 00:08:52,410 --> 00:08:53,550 >> ROB BOWDEN: Dean? 189 00:08:53,550 --> 00:08:54,910 Nice om jou te ontmoet, Dean. 190 00:08:54,910 --> 00:08:58,240 So kom hier, en ons gaan hê jy teken 191 00:08:58,240 --> 00:09:00,740 op ons mooi nifty uitleg van die geheue. 192 00:09:00,740 --> 00:09:05,950 Nou ek dink geheue as een lang strook grepe, 193 00:09:05,950 --> 00:09:11,090 maar net vir die vertoning doeleindes ons sal net links na regs, bo na onder. 194 00:09:11,090 --> 00:09:11,590 OK? 195 00:09:11,590 --> 00:09:22,030 >> So ek gaan 'n show program-- Getstrings.c. 196 00:09:22,030 --> 00:09:25,760 En so sal die hele hierdie program is doen, is versoek om vier snare 197 00:09:25,760 --> 00:09:28,830 van die gebruiker met GetString en dan druk 198 00:09:28,830 --> 00:09:30,950 wat dit ook al eerste string aangegaan was. 199 00:09:30,950 --> 00:09:32,840 Ons ignoreer twee deur vier. 200 00:09:32,840 --> 00:09:33,610 OK. 201 00:09:33,610 --> 00:09:38,210 So hier now-- wanneer Ek eerste versoek s1. 202 00:09:38,210 --> 00:09:39,740 So jy is die rekenaar. 203 00:09:39,740 --> 00:09:41,680 En jy is die implementering van GetString. 204 00:09:41,680 --> 00:09:46,710 Sodat jy 'n string van versoek my, en ek sê, OK, Dean. 205 00:09:46,710 --> 00:09:47,900 Gee die string "Dean." 206 00:09:47,900 --> 00:09:50,300 >> So iewers in die geheue jy moet onthou "Dean." 207 00:09:50,300 --> 00:09:52,160 So skryf dit in die geheue iewers. 208 00:09:52,160 --> 00:09:58,270 209 00:09:58,270 --> 00:09:59,210 Volmaak. 210 00:09:59,210 --> 00:09:59,880 OK. 211 00:09:59,880 --> 00:10:01,740 So nou het ons S2. 212 00:10:01,740 --> 00:10:03,869 En S2 gaan wees 'n versoek aan GetString. 213 00:10:03,869 --> 00:10:05,160 So ek gaan 'n string te betree. 214 00:10:05,160 --> 00:10:08,720 Ek gaan om te betree "Hannah." 215 00:10:08,720 --> 00:10:10,586 So betree "Hannah" iewers in die geheue. 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, so nou s3. 220 00:10:25,550 --> 00:10:28,380 En dit gaan om 'n ander te wees versoek om GetString. 221 00:10:28,380 --> 00:10:37,020 En so nou betree "Maria". 222 00:10:37,020 --> 00:10:37,520 Alles reg. 223 00:10:37,520 --> 00:10:40,980 En dan is daar 'n laaste versoek aan GetString, S4. 224 00:10:40,980 --> 00:10:42,580 So, ek weet nie. 225 00:10:42,580 --> 00:10:45,640 Hoe gaan ons saam met antidisestablishmentarianism. 226 00:10:45,640 --> 00:10:49,460 Betree sodat in die geheue. 227 00:10:49,460 --> 00:10:50,400 Ja. 228 00:10:50,400 --> 00:10:53,970 Dus net te doen "Rob." 229 00:10:53,970 --> 00:10:54,560 >> OK. 230 00:10:54,560 --> 00:10:58,410 So nou explain-- hoekom het jy hierdie ruimtes te verlaat? 231 00:10:58,410 --> 00:11:01,340 Hoekom het jy hierdie 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 So sien wanneer ek gaan druk s1-- so as ons 235 00:11:09,450 --> 00:11:11,890 het "Hannah" Running reg langs "Dean," 236 00:11:11,890 --> 00:11:14,360 hoe weet ons wanneer die string "Dean" eindig? 237 00:11:14,360 --> 00:11:19,470 So die druk van die string s1 mag hê net gedruk "DeanHannahMariaRob" 238 00:11:19,470 --> 00:11:22,720 As dit nie 'n clue het nie wanneer "Dean" eintlik eindig. 239 00:11:22,720 --> 00:11:23,240 >> Alles reg. 240 00:11:23,240 --> 00:11:27,650 So in die geheue van die manier waarop ons eintlik verteenwoordig hierdie einde van 'n string 241 00:11:27,650 --> 00:11:29,940 is met backslash nul. 242 00:11:29,940 --> 00:11:32,620 So hierdie ruimte is presies wat ons wou hê. 243 00:11:32,620 --> 00:11:34,040 Dit moet 'n backslash nul. 244 00:11:34,040 --> 00:11:37,690 Dit sal 'n backslash nul, en dit sal 'n backslash nul. 245 00:11:37,690 --> 00:11:41,585 En jy kan 'n fantastiese prys het vir die feit dat 'n perfekte vrywilliger. 246 00:11:41,585 --> 00:11:44,910 247 00:11:44,910 --> 00:11:45,860 Neem 'n stress ball! 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 So hierdie karakter backslash nul is hoe ons dui die einde van 'n string. 251 00:11:54,420 --> 00:11:57,120 Dit is hoe 'n gegewe program toe wil 'n string te druk, 252 00:11:57,120 --> 00:11:59,760 dit is how-- onthou ons geleer die StrLen funksie verlede week? 253 00:11:59,760 --> 00:12:00,940 String lengte? 254 00:12:00,940 --> 00:12:03,770 Dit is hoe string lengte is in staat om bepaal hoe lank 'n string is. 255 00:12:03,770 --> 00:12:05,810 Dit hou net iterating oor die karakters 256 00:12:05,810 --> 00:12:08,217 totdat dit bevind dat die agteroorskuinsstreep nul karakter. 257 00:12:08,217 --> 00:12:11,050 So is die belangrikste ding om te besef oor die agteroorskuinsstreep nul karakter 258 00:12:11,050 --> 00:12:14,950 is dit verteenwoordig deur alle nulle in stukkies. 259 00:12:14,950 --> 00:12:18,980 So sien dat dit is duidelike uit die nul karakter. 260 00:12:18,980 --> 00:12:23,010 So het die nul karakter, as jy onthou in die voorbeeld wat hy aan die einde 261 00:12:23,010 --> 00:12:27,360 van lesing waar karakters die kaart aan- soos kapitaal A kaarte tot 65. 262 00:12:27,360 --> 00:12:29,130 Kleinletter a kaarte tot 97. 263 00:12:29,130 --> 00:12:30,890 Kleinletters b sou wees 98. 264 00:12:30,890 --> 00:12:35,220 So het die getal 0 kaarte aan- ek doen nie weet die bokant van my kop. 265 00:12:35,220 --> 00:12:36,400 44 of 45. 266 00:12:36,400 --> 00:12:37,890 Iewers in die streek. 267 00:12:37,890 --> 00:12:40,850 >> So die karakter 0 is 'n werklike nommer. 268 00:12:40,850 --> 00:12:44,350 Maar backslash nul kaarte vir alle zero stukkies. 269 00:12:44,350 --> 00:12:46,380 So is daar 'n onderskeid tussen backslash nul, 270 00:12:46,380 --> 00:12:48,450 wat ons sal die nul terminator noem. 271 00:12:48,450 --> 00:12:53,210 Daar is 'n onderskeid tussen backslash nul en die karakter nul. 272 00:12:53,210 --> 00:12:54,350 >> Alles reg. 273 00:12:54,350 --> 00:12:57,520 So praat 'n bietjie meer oor snare. 274 00:12:57,520 --> 00:13:01,470 So dan sien ons hier dit is hoe dit sou in die geheue gelê. 275 00:13:01,470 --> 00:13:07,940 So hierdie idee van snare as 'n reeks van characters-- so die amptelike rekenaar 276 00:13:07,940 --> 00:13:10,750 sciency term vir ry is 'n skikking. 277 00:13:10,750 --> 00:13:13,790 So sal ons 'n string noem 'n verskeidenheid van die karakters. 278 00:13:13,790 --> 00:13:17,770 En daar is eintlik ander data tipes wat ons skikkings kan maak uit. 279 00:13:17,770 --> 00:13:19,975 >> So om hierdie motiveer, kyk na 'n voorbeeld. 280 00:13:19,975 --> 00:13:22,810 281 00:13:22,810 --> 00:13:29,812 Ons sal dit ages0.c noem ek sal kopieer en plak ons ​​sjabloon. 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 So in hierdie program wat ons wil doen, is die ouderdom gryp 285 00:13:39,378 --> 00:13:45,160 drie studente in die kursus. 286 00:13:45,160 --> 00:13:49,240 So ons weet die int age-- en nou is ek gaan om te sê 0. 287 00:13:49,240 --> 00:13:53,140 So wil jy dalk age1 sê nie, maar vir doeleindes sal ons baie gou te sien, 288 00:13:53,140 --> 00:13:57,187 Ek sal sê int age0 gelyk GetInt. 289 00:13:57,187 --> 00:13:59,270 So dieselfde oproep tot GetInt dat ons het al met behulp ek 290 00:13:59,270 --> 00:14:01,561 gebeur nie word waarna gesê: "Gee my die ouderdom." 291 00:14:01,561 --> 00:14:03,120 Maar net dit versoek. 292 00:14:03,120 --> 00:14:06,510 >> En age1 gelyk GetInt. 293 00:14:06,510 --> 00:14:09,600 En int age2 gelyk GetInt. 294 00:14:09,600 --> 00:14:14,070 So, weer, drie studente nie, maar uiteindelik die veranderlike indekse 295 00:14:14,070 --> 00:14:16,890 is age0 deur age2. 296 00:14:16,890 --> 00:14:17,550 OK. 297 00:14:17,550 --> 00:14:23,960 So hierdie program sal alles doen wat ons wil met age0, age1 en age2, 298 00:14:23,960 --> 00:14:27,670 maar hierdie program uiteindelik werk vir drie studente. 299 00:14:27,670 --> 00:14:28,380 >> OK. 300 00:14:28,380 --> 00:14:32,110 So nou wat as ek wil vier studente? 301 00:14:32,110 --> 00:14:36,000 Wel, ek gaan hê om terug te gaan in my kode, verander die kommentaar, 302 00:14:36,000 --> 00:14:39,840 en nou het ons 'n int age3 gelyk GetInt. 303 00:14:39,840 --> 00:14:40,610 OK. 304 00:14:40,610 --> 00:14:43,660 So wat die probleem sien hier? 305 00:14:43,660 --> 00:14:47,310 Wat is die probleem met hierdie soort van die opstel van? 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 So ons skep van 'n veranderlike vir elke student. 310 00:14:56,360 --> 00:15:00,140 Nou wat werk nie, maar uiteindelik wat, as Ek nou 311 00:15:00,140 --> 00:15:06,500 sê, "Ek wil die ouderdom van gryp agt studente of 16 studente 312 00:15:06,500 --> 00:15:11,340 of die egter baie studente van die honderde studente in CS50 313 00:15:11,340 --> 00:15:16,750 of die duisende studente op die kampus of die biljoene mense in die wêreld? 314 00:15:16,750 --> 00:15:19,130 So uiteindelik is dit nie volhoubaar nie. 315 00:15:19,130 --> 00:15:21,990 Enige tyd wat jy sien jouself kopiëring en plak kode soos hierdie, 316 00:15:21,990 --> 00:15:25,050 moet jy die algemeen voel dat daar 'n beter manier. 317 00:15:25,050 --> 00:15:31,290 >> So dit is waar ons stel 'n verskeidenheid verklaring. 318 00:15:31,290 --> 00:15:34,564 So wanneer jy 'n verskeidenheid te verklaar, dit is wat die algemene formaat 319 00:15:34,564 --> 00:15:35,480 gaan lyk. 320 00:15:35,480 --> 00:15:36,664 Ons gaan die tipe sê. 321 00:15:36,664 --> 00:15:38,830 en dan gaan ons gee die naam van die skikking, 322 00:15:38,830 --> 00:15:41,150 net soos ons enige gegewe veranderlike te definieer. 323 00:15:41,150 --> 00:15:43,980 En dan uiteindelik ons ​​gebruik hierdie hakienotasie weer 324 00:15:43,980 --> 00:15:47,480 maar in 'n ander konteks van hoe ons dit gebruik vroeër. 325 00:15:47,480 --> 00:15:51,860 >> So hier lyk soos 'n normale veranderlike verklaring dat ons gesien het. 326 00:15:51,860 --> 00:15:54,890 Dus het ons int x semi-kolon gesien nie. 327 00:15:54,890 --> 00:16:00,020 Wel nou is ons dalk iets sien soos int x hakies 5. 328 00:16:00,020 --> 00:16:04,020 En om hierdie idee in die GetInt program wat ons have-- 329 00:16:04,020 --> 00:16:08,850 sodat ons kan implementeer dit in die dieselfde manier. 330 00:16:08,850 --> 00:16:13,630 >> Kom ons sê in CS ons geneig is om te gebruik N die aantal iets. 331 00:16:13,630 --> 00:16:16,150 So hier gaan ons stoor vier studente. 332 00:16:16,150 --> 00:16:25,960 En nou kan ons int ouderdom sê bracket n-- nie heeltemal kry dit yet-- 333 00:16:25,960 --> 00:16:32,210 om 'n verskeidenheid van vier studente te verklaar. 334 00:16:32,210 --> 00:16:38,050 So hoe dit sal lyk in geheue sal soortgelyk aan hierdie wees. 335 00:16:38,050 --> 00:16:39,570 Duidelik dat dit. 336 00:16:39,570 --> 00:16:46,606 En ons gaan iewers in memory-- Ek sal hierdie is daar sit. 337 00:16:46,606 --> 00:16:52,690 338 00:16:52,690 --> 00:16:53,808 >> So iewers in die geheue. 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 Ons het vier heelgetalle in 'n ry vir hierdie verskeidenheid van vier heelgetalle. 343 00:17:09,849 --> 00:17:13,820 So, op die oomblik, wat is die grootte van een van hierdie bokse? 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 Dit is vier grepe. 347 00:17:18,390 --> 00:17:19,690 Dit is 32 stukkies. 348 00:17:19,690 --> 00:17:22,310 So nou is dit anders van die skikking dat ons 349 00:17:22,310 --> 00:17:24,020 gesien vroeër, die verskeidenheid van karakters. 350 00:17:24,020 --> 00:17:28,540 In 'n string was elke boks net een byte, omdat 'n karakter is net een byte. 351 00:17:28,540 --> 00:17:32,170 Maar met 'n verskeidenheid van heelgetalle, elk boks het om vier grepe in orde 352 00:17:32,170 --> 00:17:34,060 om 'n hele heelgetal te pas. 353 00:17:34,060 --> 00:17:37,197 So dit is wat 'n verskeidenheid van vier SY sou lyk. 354 00:17:37,197 --> 00:17:40,510 355 00:17:40,510 --> 00:17:43,870 >> En dan weer terug na die kode. 356 00:17:43,870 --> 00:17:47,460 Nou wil ons eintlik winkel heelgetalle in daardie skikking. 357 00:17:47,460 --> 00:17:53,470 So nou is dit 'n baie, baie, baie algemene patroon wat sal op 'n sekere punt 358 00:17:53,470 --> 00:17:54,680 geword spier-geheue. 359 00:17:54,680 --> 00:17:56,710 So int i gelyk 0. 360 00:17:56,710 --> 00:17:57,940 i minder as n. 361 00:17:57,940 --> 00:18:01,850 i plus plus. 362 00:18:01,850 --> 00:18:05,790 Ouderdom bracket i gelyk GetInt. 363 00:18:05,790 --> 00:18:15,100 >> So dit vir lus, hierdie formaat, moet jy baie gewoond te raak. 364 00:18:15,100 --> 00:18:20,010 So, dit is oor die algemeen hoe ons Itereer oor byna enige skikking. 365 00:18:20,010 --> 00:18:23,690 Nou sien hierdie soort van verduidelik waarom van die begin af 366 00:18:23,690 --> 00:18:29,870 ons het nie vir loops gaan vir int i gelyk 1, i minder as of gelyk aan 10. 367 00:18:29,870 --> 00:18:34,200 Die rede hiervoor is dat vanaf zero maak hierdie werk goed met skikkings. 368 00:18:34,200 --> 00:18:36,270 So skikkings is nul geïndekseer. 369 00:18:36,270 --> 00:18:40,360 As dit skikking is lengte 4, die indekse is 0 tot 3. 370 00:18:40,360 --> 00:18:42,880 >> So deur die eerste iterasie van hierdie lus 371 00:18:42,880 --> 00:18:49,930 ons gaan instelling ouderdom bracket 0 gelyk is aan 'n oproep om GetInt. 372 00:18:49,930 --> 00:18:52,440 So wat ek gebeur op die klawerbord te gaan. 373 00:18:52,440 --> 00:18:56,970 In die tweede slaag, is ons opstel age1 gelyk aan GetInt. 374 00:18:56,970 --> 00:18:58,230 Derde slaag, age2. 375 00:18:58,230 --> 00:18:59,880 Finale slaagsyfers age3. 376 00:18:59,880 --> 00:19:05,750 So as in die eerste pass van die lus Ek gee die nommer 4 op die sleutelbord, 377 00:19:05,750 --> 00:19:07,740 dan sal ons 'n 4 hier plaas. 378 00:19:07,740 --> 00:19:11,470 As daar op die tweede slaag ek in 50, sal ons 'n 50 hier te plaas. 379 00:19:11,470 --> 00:19:15,180 Op die derde pass ek dalk Tik negatiewe 1, negatiewe 1, 380 00:19:15,180 --> 00:19:21,810 en dan uiteindelik as ek kom 0-- en nou onthou dat dit was indeks drie. 381 00:19:21,810 --> 00:19:25,350 >> Nadat ons lus terug, i is gaan word geïnkrementeer tot 4. 382 00:19:25,350 --> 00:19:27,770 i is nie meer minder as N, wat is 4. 383 00:19:27,770 --> 00:19:29,840 En ons breek uit van die lus. 384 00:19:29,840 --> 00:19:32,578 So, wat sou verkeerd met dit? 385 00:19:32,578 --> 00:19:38,140 386 00:19:38,140 --> 00:19:38,729 [Onhoorbaar]? 387 00:19:38,729 --> 00:19:39,604 GEHOOR: [onhoorbaar] 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 So die skikking het net vier plekke, wat beteken as indekse 0 tot 3. 391 00:19:51,550 --> 00:19:55,630 So as dit die geval was, sou ek neem op die waarde 4 op 'n sekere punt. 392 00:19:55,630 --> 00:20:00,910 ouderdom bracket 4 sal instelling Wat ook al gebeur om hier te wees 393 00:20:00,910 --> 00:20:02,920 na wat ek te sê het, betree 6. 394 00:20:02,920 --> 00:20:05,010 Dit sal die opstel van hierdie tot 6. 395 00:20:05,010 --> 00:20:06,560 >> Maar ons weet nie wat is hier. 396 00:20:06,560 --> 00:20:08,836 Dit is nie die geheue wat ons gehad het toegang tot. 397 00:20:08,836 --> 00:20:10,710 So as jy onthou van die vorige lesing, 398 00:20:10,710 --> 00:20:14,350 hy druk van waardes van Zamyla en op 'n sekere punt wat hy hierdie segmentering getref 399 00:20:14,350 --> 00:20:17,990 fout. So jy sal waarskynlik sien baie segmentering foute as wat jy 400 00:20:17,990 --> 00:20:20,530 implementeer sommige van die probleem stelle. 401 00:20:20,530 --> 00:20:24,950 Maar dit is een van die maniere waarop jy kan 'n segmentering teëkom 402 00:20:24,950 --> 00:20:28,540 fout, wanneer jy begin om toegang tot geheue op maniere wat jy nie moet wees nie. 403 00:20:28,540 --> 00:20:34,117 So het ons nie toegang tot hierdie plek, en dit is 'n fout. 404 00:20:34,117 --> 00:20:37,760 405 00:20:37,760 --> 00:20:40,190 >> So dit is beter. 406 00:20:40,190 --> 00:20:45,820 Nou is daar nog 'n klein probleem met hierdie kode. 407 00:20:45,820 --> 00:20:50,720 En dit is basies dat ons nog steeds vas op vier studente. 408 00:20:50,720 --> 00:20:52,940 Nou as ek wil agt studente gebruik, OK. 409 00:20:52,940 --> 00:20:54,350 Dit is nie dat 'n groot deal. 410 00:20:54,350 --> 00:20:58,120 Ek kan gaan in, verander die kommentaar te lewer, en verander n. 411 00:20:58,120 --> 00:20:59,760 Nou sal hierdie werk met agt studente. 412 00:20:59,760 --> 00:21:02,190 As ek dit op te stel en uit te voer , sal dit wys me-- 413 00:21:02,190 --> 00:21:07,870 dit sal versoek heelgetalle vir agt studente en dit sal net werk. 414 00:21:07,870 --> 00:21:11,850 Maar dit is nie die ideaal nodig om heropstel die program elke keer 415 00:21:11,850 --> 00:21:15,960 Ek wil die aantal studente verander dat ek wil hê dat die ouderdomme vir voer. 416 00:21:15,960 --> 00:21:22,990 >> So die finale verbetering op dit, soos ons sal sien here-- ons 417 00:21:22,990 --> 00:21:26,177 gaan na die aantal mense te vra. 418 00:21:26,177 --> 00:21:28,010 Hier het ons 'n aantal van die mense in die kamers 419 00:21:28,010 --> 00:21:29,880 of enige ouderdomme van mense in die kamer. 420 00:21:29,880 --> 00:21:33,300 Maar ons gaan na die nommer versoek van die mense in die kamer van die gebruiker. 421 00:21:33,300 --> 00:21:36,171 So, dit is presies dieselfde do-while lus dat ons voorheen gesien het. 422 00:21:36,171 --> 00:21:37,920 Dit is presies dieselfde do-while lus dat jy 423 00:21:37,920 --> 00:21:40,050 kan die implementering van die probleem stel. 424 00:21:40,050 --> 00:21:43,102 So lank as wat hulle is betree 'n N minder as 1, 425 00:21:43,102 --> 00:21:45,310 so daar het by minste een persoon in die kamer. 426 00:21:45,310 --> 00:21:47,407 So lank as wat hulle is betree 'n N minder as 1, 427 00:21:47,407 --> 00:21:48,990 dan gaan ons hou weer vra. 428 00:21:48,990 --> 00:21:50,906 Tik die aantal van die mense in die kamer. 429 00:21:50,906 --> 00:21:53,550 Nou, as ons die aantal van die mense in die room-- 430 00:21:53,550 --> 00:21:58,020 sodat ek daar ingaan wat is 200 mense in hierdie kamer. 431 00:21:58,020 --> 00:22:05,480 Dan hier gaan ons kom en verklaar 'n verskeidenheid van grootte 200. 432 00:22:05,480 --> 00:22:10,220 Ons verklaar verskeidenheid wat groot genoeg om 200 ouderdomme te hou. 433 00:22:10,220 --> 00:22:15,370 Afkom, is dit die lus vir dat jy sal baie gewoond is. 434 00:22:15,370 --> 00:22:19,490 So iterating oor hierdie skikking, toeken aan elke plek 435 00:22:19,490 --> 00:22:23,020 in daardie reeks 'n heelgetal, en dan uiteindelik hier is ons 436 00:22:23,020 --> 00:22:28,340 net om 'n voorbeeld van iterating oor daardie skikking, nie waardes toewys, 437 00:22:28,340 --> 00:22:30,150 maar om toegang waardes. 438 00:22:30,150 --> 00:22:33,810 >> So hier sien ons dat ons sê, 'n jaar van nou af, 439 00:22:33,810 --> 00:22:40,470 persoon% i sal% i jaar oud, waar die eerste% i is i plus 1. 440 00:22:40,470 --> 00:22:43,010 So ek is hierdie indeks veranderlike. 441 00:22:43,010 --> 00:22:49,420 En die tweede% i gaan die wees waarde gestoor in die eeue verskeidenheid plus 1. 442 00:22:49,420 --> 00:22:54,217 So hierdie plus 1 is net omdat ons sê om hierdie plus 1, ouderdomme i plus 1. 443 00:22:54,217 --> 00:22:57,050 Dit plus 1 is net omdat ons sê, 'n jaar van nou af die persoon 444 00:22:57,050 --> 00:22:58,280 sal hierdie ou te wees. 445 00:22:58,280 --> 00:23:01,080 >> So hoekom is dit i plus 1? 446 00:23:01,080 --> 00:23:04,064 Hoekom het ons 'n plus 1 is daar? 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 So onthou skikkings is nul geïndekseer. 451 00:23:10,510 --> 00:23:14,840 So as ons druk dit uit vir iemand om net die uitset te lees, 452 00:23:14,840 --> 00:23:19,380 dan waarskynlik hulle iets wil sien soos iemand een persoon nommer een, 453 00:23:19,380 --> 00:23:21,160 sal wees 20 jaar oud. 454 00:23:21,160 --> 00:23:23,570 Persoon nommer twee sal wees 15 jaar oud. 455 00:23:23,570 --> 00:23:27,420 Hulle wil eerder nie sien persoon getal nul is 15 jaar oud. 456 00:23:27,420 --> 00:23:36,460 >> So dit die samestelling en net om te sien wat dit lyk like-- ruimte te skep. 457 00:23:36,460 --> 00:23:43,560 Maak ouderdomme saamstel. 458 00:23:43,560 --> 00:23:45,080 Hardloop ouderdomme. 459 00:23:45,080 --> 00:23:46,580 Ons sien aantal mense in die kamer. 460 00:23:46,580 --> 00:23:48,850 So ek sal sê daar is drie mense in die kamer. 461 00:23:48,850 --> 00:23:54,000 Ouderdom van persoon nommer een, kom ons sê 15, 20, 25. 462 00:23:54,000 --> 00:23:59,680 En nou sal ek sê 'n jaar uit nou sal hulle wees 16, 21, 26. 463 00:23:59,680 --> 00:24:02,900 Kom ons kyk wat hierdie werk met 'n N wat nie gelyk is aan 3. 464 00:24:02,900 --> 00:24:07,940 So as ek sê aantal mense is 5, een, twee, drie, twee, een, 'n jaar van nou af 465 00:24:07,940 --> 00:24:11,170 hulle sal wees twee, drie, vier, drie, twee jaar oud. 466 00:24:11,170 --> 00:24:16,500 So ek kon net so maklik N 10.000. 467 00:24:16,500 --> 00:24:21,270 Nou sal ek hier sit vir ' 'n rukkie aangaan ouderdomme, maar dit werk. 468 00:24:21,270 --> 00:24:26,000 >> So nou in die geheue iewers ons het 'n verskeidenheid van grootte 10.000, 469 00:24:26,000 --> 00:24:28,830 so uiteindelik 40000 grepe, want daar is 470 00:24:28,830 --> 00:24:31,222 vier grepe vir elk van die heelgetalle. 471 00:24:31,222 --> 00:24:33,180 So is daar 'n verskeidenheid van grootte 10.000 waar ons kan 472 00:24:33,180 --> 00:24:36,201 stoor die ouderdomme van daardie 10,000 mense. 473 00:24:36,201 --> 00:24:36,700 Alles reg. 474 00:24:36,700 --> 00:24:40,070 Vrae oor enige van hierdie? 475 00:24:40,070 --> 00:24:41,892 Ja. 476 00:24:41,892 --> 00:24:43,350 Wat gebeur as jy 'n negatiewe getal gegee het? 477 00:24:43,350 --> 00:24:44,870 Kom ons kyk wat gebeur. 478 00:24:44,870 --> 00:24:49,320 So in hierdie spesifieke case-- getal van die mense in die kamer, negatiewe een. 479 00:24:49,320 --> 00:24:52,580 Dit verwerp dat want hier het ons gebeur 480 00:24:52,580 --> 00:24:57,180 word die hantering van die feit dat as n minder as een gaan ons weer vra nie. 481 00:24:57,180 --> 00:25:01,780 As jy probeer om 'n verklaar verskeidenheid van negatiewe grootte, 482 00:25:01,780 --> 00:25:03,950 dit oor die algemeen nie werk nie. 483 00:25:03,950 --> 00:25:05,570 >> So kom ons probeer. 484 00:25:05,570 --> 00:25:08,000 Kom ons ignoreer alles waarde wat hulle insette vir N 485 00:25:08,000 --> 00:25:10,571 en net sê int ouderdomme negatiewe een. 486 00:25:10,571 --> 00:25:12,410 Kom ons kyk of dit stel, selfs. 487 00:25:12,410 --> 00:25:14,100 Ek is nie seker nie. 488 00:25:14,100 --> 00:25:14,920 Geen. 489 00:25:14,920 --> 00:25:18,280 So ouderdomme verklaar as 'n array met 'n negatiewe grootte. 490 00:25:18,280 --> 00:25:22,540 So by voorbaat erken dit 'n skikking kan nie wees van negatiewe grootte en verwerp dit. 491 00:25:22,540 --> 00:25:26,840 Nou, as ons nie kan hanteer hierdie do-while lus korrek, 492 00:25:26,840 --> 00:25:28,810 as ons nie die nagaan as n minder as 1-- 493 00:25:28,810 --> 00:25:32,690 Kom ons sê ons het net het dit nie op alle 494 00:25:32,690 --> 00:25:35,940 en in plaas daarvan het ons net gryp 'n heelgetal. 495 00:25:35,940 --> 00:25:40,710 Maak nie saak wat dit is heelgetal, ons verklaar 'n verskeidenheid van die grootte. 496 00:25:40,710 --> 00:25:44,250 >> So het die samesteller kan nie moontlik kla nou. 497 00:25:44,250 --> 00:25:48,780 As ek stel this-- sodat dit kan nie kla nie, 498 00:25:48,780 --> 00:25:51,480 want dit kan nie weet dat ek gaan 'n negatiewe getal betree, 499 00:25:51,480 --> 00:25:52,550 wat ongeldig kan wees. 500 00:25:52,550 --> 00:25:54,633 Vir al wat dit weet, kan ek Voer 'n positiewe getal, 501 00:25:54,633 --> 00:25:56,000 wat is volkome geldig. 502 00:25:56,000 --> 00:26:01,090 So ek dink as ek kom negatiewe 1 mense in die kamer, segmentering skuld. 503 00:26:01,090 --> 00:26:06,040 >> So, OK. 504 00:26:06,040 --> 00:26:13,160 So laat voeg dit terug net hou dit wat dit oorspronklik was. 505 00:26:13,160 --> 00:26:15,640 So maak ouderdomme. 506 00:26:15,640 --> 00:26:18,120 Nou as ek wil 'n probeer negatiewe age-- so laat 507 00:26:18,120 --> 00:26:19,710 sê daar is vyf mense in die kamer. 508 00:26:19,710 --> 00:26:23,180 Ouderdom van persoon nommer een negatief 4, persoon drie 509 00:26:23,180 --> 00:26:26,500 nul, persoon three-- OK. 510 00:26:26,500 --> 00:26:29,850 So hier, 'n jaar van nou af, persoon getal een sal negatiewe 3 jaar oud wees. 511 00:26:29,850 --> 00:26:32,830 Dus waarskynlik nie sin maak nie. 512 00:26:32,830 --> 00:26:37,220 Maar dit is net omdat soek na die kode al ons doen 513 00:26:37,220 --> 00:26:40,260 versoek GetInt. 514 00:26:40,260 --> 00:26:44,110 >> Nou, as ons gehad het die GetPositiveInt funksie 515 00:26:44,110 --> 00:26:49,690 of ons het net eenvoudig dit gedoen soort van dieselfde terwyl loop af daar, 516 00:26:49,690 --> 00:26:52,340 dan sou hierdie werk heeltemal fyn. 517 00:26:52,340 --> 00:26:54,200 Maar in hierdie spesifieke geval, ons doen net nie 518 00:26:54,200 --> 00:26:57,772 gebeur om te wees hantering negatiewe waardes. 519 00:26:57,772 --> 00:26:59,147 Enige ander vrae oor skikkings? 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 het ons nou gesien skikkings. 523 00:27:09,380 --> 00:27:12,500 En ons gaan nodig is om te gebruik dit vir command-line argumente. 524 00:27:12,500 --> 00:27:14,680 So in die probleem stel two-- Ek weet baie van julle 525 00:27:14,680 --> 00:27:18,040 dalk nog werk op die probleem stel een nie, maar die probleem sit twee is kom. 526 00:27:18,040 --> 00:27:22,260 In gestel probleem twee, jy gaan om moet die hantering van snare, skikkings, 527 00:27:22,260 --> 00:27:23,950 en opdrag-lyn argumente. 528 00:27:23,950 --> 00:27:26,270 >> So, wat is command line argumente? 529 00:27:26,270 --> 00:27:29,570 Nou, kan jy hier onder 'n sien bietjie teaser vir presies wat 530 00:27:29,570 --> 00:27:30,950 gaan gebeur. 531 00:27:30,950 --> 00:27:32,950 Ons sien int main, inc argc, string argv hakies. 532 00:27:32,950 --> 00:27:34,560 533 00:27:34,560 --> 00:27:38,130 So eerste laat ons probeer om te interpreteer wat dit is probeer om te sê. 534 00:27:38,130 --> 00:27:40,800 Nou, OK. 535 00:27:40,800 --> 00:27:44,637 >> So op die opdrag lyn wat jy moet wees gewoond raak aan 'n paar van hierdie opdragte 536 00:27:44,637 --> 00:27:48,580 nou, en jy het waarskynlik hardloop cd in die terminale voor. 537 00:27:48,580 --> 00:27:52,100 So as ons sê cd pset1, jy weet dat indien 538 00:27:52,100 --> 00:27:55,050 wees verander in die pset1 gids. 539 00:27:55,050 --> 00:27:59,120 >> Nou sien dat jy nog nooit geskryf 'n program soos hierdie voor. 540 00:27:59,120 --> 00:28:03,120 Elke program wat jy geskryf het, jy sou loop, sê, dot streep Mario, 541 00:28:03,120 --> 00:28:06,779 dot streep gulsig, en dan is dit kan jy gevra word vir insette. 542 00:28:06,779 --> 00:28:08,570 Nou, dit is nie wat verandering gids doen. 543 00:28:08,570 --> 00:28:12,770 Wanneer jy cd hardloop, beteken dit nie dan sê, wat directory wil jy cd in? 544 00:28:12,770 --> 00:28:17,200 In plaas daarvan, jy net sê, cd pset1 en is dit net gaan in die pset1 gids. 545 00:28:17,200 --> 00:28:20,430 >> So het ons insgelyks ander voorbeelde. 546 00:28:20,430 --> 00:28:21,540 maak hallo. 547 00:28:21,540 --> 00:28:25,760 Wanneer jy hardloop te maak, beteken dit nie dan sê, watter program wat jy wil om te maak? 548 00:28:25,760 --> 00:28:29,620 Jy sê net, by die command line te maak hallo. 549 00:28:29,620 --> 00:28:31,060 >> Skuif is nog 'n voorbeeld. 550 00:28:31,060 --> 00:28:34,840 Hierdie een ons beweeg die mario.c lêer een gids. 551 00:28:34,840 --> 00:28:38,060 So nou weet ons met hierdie voorbeeld ons is regtig verby twee argumente. 552 00:28:38,060 --> 00:28:42,090 Daar is mario.c as die eerste argument, en dot dot is die tweede argument. 553 00:28:42,090 --> 00:28:46,140 En dan wanneer jy hardloop, het jy sien dat baie lang opdrag line-- 554 00:28:46,140 --> 00:28:50,580 wat werklik lang opdrag gedruk op die command line. 555 00:28:50,580 --> 00:28:53,590 Sodat hierdie lang command-- is net 'n kort deel van dit, 556 00:28:53,590 --> 00:28:56,090 maar nou het ons drie opdrag-lyn argumente. 557 00:28:56,090 --> 00:28:59,750 Dot Dash nul, hello, en hello.c. 558 00:28:59,750 --> 00:29:03,497 >> So dit is opdrag-lyn argumente, argumente 559 00:29:03,497 --> 00:29:05,580 dat jy verby die command line sodat dit 560 00:29:05,580 --> 00:29:08,680 hoef nie gevra wanneer jy die program uitvoer. 561 00:29:08,680 --> 00:29:13,090 Dit sou frustrerend wees as wanneer jy gehardloop kletteren dit gesê het, "OK, 562 00:29:13,090 --> 00:29:15,630 wat program-- wat lêer is jy die opstel van? 563 00:29:15,630 --> 00:29:17,010 Hello.c. 564 00:29:17,010 --> 00:29:19,440 Wat sou jy vlae graag aan te gaan? Dash o. 565 00:29:19,440 --> 00:29:21,190 Waarvan sal jy hou die lêer genoem te word? 566 00:29:21,190 --> 00:29:21,690 hallo. 567 00:29:21,690 --> 00:29:25,290 Nee, jy net hardloop klang stamp o hallo hello.c. 568 00:29:25,290 --> 00:29:28,820 >> So om terug te kyk na hierdie. 569 00:29:28,820 --> 00:29:32,920 Nou argc-- argc is die argument tel. 570 00:29:32,920 --> 00:29:36,620 Dit is die nommer van die opdrag lyn argumente wat by die opdrag lyn. 571 00:29:36,620 --> 00:29:39,720 Wel, tegnies argv-- die v staan ​​vir vektor, 572 00:29:39,720 --> 00:29:41,460 wat beteken basies skikking. 573 00:29:41,460 --> 00:29:42,680 Maar jy kan ignoreer nie. 574 00:29:42,680 --> 00:29:47,540 Argv-- ons het string argv, so string argv hakies. 575 00:29:47,540 --> 00:29:50,150 So, dit is 'n ander vorm van hakies jy nie gesien het nie. 576 00:29:50,150 --> 00:29:52,300 So het ons gesien bracket notasie wanneer ons gesê het, 577 00:29:52,300 --> 00:29:53,970 soos, string s gelyk Zamyla. 578 00:29:53,970 --> 00:29:56,910 s bracket 0 toegang tot die karakter Z. 579 00:29:56,910 --> 00:30:00,720 >> Ons het ook gesien hakies wanneer Ons het int ouderdomme hakies 5. 580 00:30:00,720 --> 00:30:03,160 Dit verklaar 'n verskeidenheid van grootte 5. 581 00:30:03,160 --> 00:30:06,280 So hier is 'n weergawe van die hakies ons het nie gesien nie. 582 00:30:06,280 --> 00:30:09,630 So hierdie soort van string argv dat sou heeltemal vertroud wees 583 00:30:09,630 --> 00:30:12,050 dat dit net 'n string sou wees. 584 00:30:12,050 --> 00:30:14,520 Nou is die hakies dui dat dit 'n skikking. 585 00:30:14,520 --> 00:30:19,920 So string argv hakies middel dat argv is 'n verskeidenheid van snare. 586 00:30:19,920 --> 00:30:22,540 Nou tegnies 'n string is 'n verskeidenheid van die karakters. 587 00:30:22,540 --> 00:30:26,400 So, dit is nou 'n skikking van 'n verskeidenheid van die karakters. 588 00:30:26,400 --> 00:30:31,490 Maar dit is baie makliker om te dink oor dit as net 'n verskeidenheid van snare. 589 00:30:31,490 --> 00:30:34,900 >> So hoekom sou die hakies leeg wees? 590 00:30:34,900 --> 00:30:38,170 Soos, hoekom kan ons nie sê nie, bracket 5, bracket 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 Ons weet nie hoeveel insette daar gaan wees. 596 00:30:46,396 --> 00:30:53,560 So as ons kyk na die klang byvoorbeeld Ons sê kletteren Dash o hallo hello.c. 597 00:30:53,560 --> 00:30:56,710 In hierdie spesifieke geval, is daar gebeur om drie command-line argumente. 598 00:30:56,710 --> 00:31:00,522 En so het die brackets-- ons sal sien in 'n tweede sou dit nie drie. 599 00:31:00,522 --> 00:31:01,730 Dit tegnies sou vier. 600 00:31:01,730 --> 00:31:04,030 Maar die hakies, sou ons sê, is daar drie. 601 00:31:04,030 --> 00:31:08,220 Maar nou, as ons kyk na beweging mario.c dot dot die hakies 602 00:31:08,220 --> 00:31:09,760 Ons wil twee in hulle te sit. 603 00:31:09,760 --> 00:31:12,884 >> En daar is 'n baie opdragte wat het 'n veranderlike aantal command line 604 00:31:12,884 --> 00:31:13,620 argumente. 605 00:31:13,620 --> 00:31:17,430 So, wat hierdie weergawe van die hakienotasie dui 606 00:31:17,430 --> 00:31:20,820 is dat argv is 'n verskeidenheid van snare. 607 00:31:20,820 --> 00:31:24,360 Maar ons weet nie hoeveel snare is in daardie skikking. 608 00:31:24,360 --> 00:31:27,090 En hoe weet ons dan hoe baie snare is in die skikking? 609 00:31:27,090 --> 00:31:28,870 Dit is die hele punt argc. 610 00:31:28,870 --> 00:31:32,300 argc vertel ons hoe lank argv is. 611 00:31:32,300 --> 00:31:36,500 >> So is die laaste ding in hou gedagte is dat, tegnies, 612 00:31:36,500 --> 00:31:40,820 die opdrag self tel as een van die opdrag-lyn argumente. 613 00:31:40,820 --> 00:31:45,330 So cd pset1, is daar twee opdrag-lyn argumente. 614 00:31:45,330 --> 00:31:50,260 Die program op sigself, cd, en dan die werklike argument deel van dit, pset1. 615 00:31:50,260 --> 00:31:54,490 Enige program wat jy tot dusver geskryf het het een opdrag-lyn argument-- dot gehad 616 00:31:54,490 --> 00:31:55,320 streep Mario. 617 00:31:55,320 --> 00:31:57,350 Dit is die enigste opdrag-lyn argument. 618 00:31:57,350 --> 00:32:00,900 >> So nou op soek na klang stamp o hallo hello.c. 619 00:32:00,900 --> 00:32:01,905 So, 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 So argc is 4. 623 00:32:08,140 --> 00:32:12,140 Klang, so argv bracket 0 is klang. 624 00:32:12,140 --> 00:32:15,630 argv bracket 1 is Dash 0. 625 00:32:15,630 --> 00:32:21,870 argv bracket 2 is hello, en argv bracket 3 is hello.c. 626 00:32:21,870 --> 00:32:26,813 OK, so vrae oor hierdie, en dan sal ons kyk na sommige programmatiese voorbeelde. 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 So sal ons 'n blik op hello3.c neem. 630 00:32:36,260 --> 00:32:41,890 So hierdie bekende uit moet een van die eerste voorbeelde c 631 00:32:41,890 --> 00:32:45,800 ons het waar ons sou net sê, hello wêreld nie, maar dit is nou meer algemeen. 632 00:32:45,800 --> 00:32:52,300 Ons is so hier sê hallo % s backslash N argv bracket 1. 633 00:32:52,300 --> 00:32:57,440 Notice-- so tot op hierdie punt, dit is wat my sjabloon lêer gelyk het. 634 00:32:57,440 --> 00:33:01,800 Ek het int main (void), en dan sou ek iets in die belangrikste funksie te doen. 635 00:33:01,800 --> 00:33:05,100 Nou in plaas, sodra ons begin handel met opdrag-lyn argumente, 636 00:33:05,100 --> 00:33:07,890 ons nodig het om 'n staat ander vorm van die belangrikste. 637 00:33:07,890 --> 00:33:11,930 >> So kyk na hello3 weer, die hoof gaan 638 00:33:11,930 --> 00:33:15,990 twee argumente neem now-- int argc, die aantal opdrag-lyn argumente, 639 00:33:15,990 --> 00:33:20,970 en string argv hakies, die werklike snare wat by die opdrag lyn. 640 00:33:20,970 --> 00:33:26,560 So ek gaan om dit te verander template om daardie feit te weerspieël. 641 00:33:26,560 --> 00:33:29,060 Nou wanneer jy skryf 'n program, as jy dit nie doen nie 642 00:33:29,060 --> 00:33:33,720 nodig om enige opdrag-lyn te neem argumente, dan net gebruik int main (void). 643 00:33:33,720 --> 00:33:37,070 Maar nou dat jy skryf opdrag-lyn argument programme, wat 644 00:33:37,070 --> 00:33:40,350 jy gaan om te doen vir die probleem stel two-- so nou dat jy ' 645 00:33:40,350 --> 00:33:42,630 programme wat nodig het om te neem opdrag-lyn argumente, 646 00:33:42,630 --> 00:33:45,250 wat jy nodig belangrikste van hierdie vorm om te hê. 647 00:33:45,250 --> 00:33:51,290 >> So here-- dit is die groot gebruik van die opdrag-lyn argument. 648 00:33:51,290 --> 00:33:54,100 So druk argv 1. 649 00:33:54,100 --> 00:33:59,180 OK so laat opstel en hardloop hierdie program. 650 00:33:59,180 --> 00:34:02,440 Maak hello3. 651 00:34:02,440 --> 00:34:03,570 Saamstel. 652 00:34:03,570 --> 00:34:06,870 Dot streep hello3. 653 00:34:06,870 --> 00:34:08,920 En kom ons sê, "Rob." 654 00:34:08,920 --> 00:34:10,760 Hallo Rob. 655 00:34:10,760 --> 00:34:14,940 As ek sê "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 sê, "hallo Maria, "want ek is nie 658 00:34:18,639 --> 00:34:21,340 niks met ons te doen argv 2. 659 00:34:21,340 --> 00:34:22,590 Argv 2 nou sou wees "Hannah." 660 00:34:22,590 --> 00:34:25,030 Argc sou wees 3. 661 00:34:25,030 --> 00:34:27,735 Wat gebeur as ek dit gedoen het? 662 00:34:27,735 --> 00:34:31,980 663 00:34:31,980 --> 00:34:34,679 So hallo null. 664 00:34:34,679 --> 00:34:38,760 >> Hy raak kortliks op die feit dat tegnies, GetString 665 00:34:38,760 --> 00:34:42,429 kan null terugkeer nie, maar ons sal 'n te kry baie meer in wat null eintlik is. 666 00:34:42,429 --> 00:34:47,449 Maar neem dit as 'n saak van feit dat geen algemeen sleg. 667 00:34:47,449 --> 00:34:50,179 Ons het iets verkeerd as dit is die druk "hallo null." 668 00:34:50,179 --> 00:34:52,179 En die rede waarom ons het iets verkeerd is-- goed, 669 00:34:52,179 --> 00:34:56,179 toe ek gehardloop dot streep hello3, argc was 1. 670 00:34:56,179 --> 00:34:59,680 So dit beteken dat die lengte van argv was 1. 671 00:34:59,680 --> 00:35:05,110 As 'n skikking is lengte 1, die enigste geldige indeks is nul. 672 00:35:05,110 --> 00:35:08,550 En so hier argv 1 buite die omvang van hierdie skikking. 673 00:35:08,550 --> 00:35:13,410 Dit was soortgelyk aan voor toe ek probeer te slaan 6 buite die einde van die skikking. 674 00:35:13,410 --> 00:35:18,100 So ek probeer om toegang tot iets buite die argv tel, 675 00:35:18,100 --> 00:35:21,340 en ons kry null. 676 00:35:21,340 --> 00:35:24,360 >> So 'n beter weergawe van hierdie, 'n verbetering, 677 00:35:24,360 --> 00:35:27,010 uitdruklik nagaan argc. 678 00:35:27,010 --> 00:35:33,580 So as argc gelyk 2, wat beteken dat ons hardloop iets soos dot streep hello3 Rob. 679 00:35:33,580 --> 00:35:36,840 En dit sal druk "hallo Rob." 680 00:35:36,840 --> 00:35:39,850 As argc nie gelyk 2, dan is dit net gaan 681 00:35:39,850 --> 00:35:42,560 om te ignoreer alles wat jy het by die opdrag-lyn argument 682 00:35:42,560 --> 00:35:43,960 as opdrag-lyn argumente. 683 00:35:43,960 --> 00:35:47,168 Of as jy nie het nie sit nie, dit is net gaan om te ignoreer dit en net sê, 684 00:35:47,168 --> 00:35:47,960 "hallo julle." 685 00:35:47,960 --> 00:35:51,490 >> So die opstel van hierdie. 686 00:35:51,490 --> 00:35:54,500 Maak hello4. 687 00:35:54,500 --> 00:35:56,790 En loop hello4. 688 00:35:56,790 --> 00:36:00,010 Hardloop dit op hierdie manier, wat moet gedruk? 689 00:36:00,010 --> 00:36:01,330 "Hallo julle." 690 00:36:01,330 --> 00:36:02,810 Hallo julle. 691 00:36:02,810 --> 00:36:05,870 Wat van hello4 Rob? 692 00:36:05,870 --> 00:36:06,950 "Hallo Rob." 693 00:36:06,950 --> 00:36:10,580 En uiteindelik, hello Rob Maria is net "hallo Jy" weer 694 00:36:10,580 --> 00:36:13,677 omdat jy nie regtig ingaan iets wat hy verwag. 695 00:36:13,677 --> 00:36:15,510 Jy betree meer name as wat dit kon hanteer, 696 00:36:15,510 --> 00:36:19,500 so is dit net om gebreke Die Hello julle gedrag. 697 00:36:19,500 --> 00:36:23,040 So vrae oor hierdie? 698 00:36:23,040 --> 00:36:26,290 Of opdrag-lyn argumente? 699 00:36:26,290 --> 00:36:28,690 >> OK, so neem 'n blik op 'n paar voorbeelde van die gebruik van 700 00:36:28,690 --> 00:36:34,230 opdrag-lyn arguments-- eerste ons het argv Dash 1 dot c. 701 00:36:34,230 --> 00:36:38,510 So die kommentaar weggee wat hierdie program moet doen. 702 00:36:38,510 --> 00:36:42,460 Maar let now-- hierdie lus, hierdie wedstryde die presiese patroon 703 00:36:42,460 --> 00:36:43,390 Ek was voor sê. 704 00:36:43,390 --> 00:36:46,240 Ons gebeur net te wees gebruik van argc plaas van n. 705 00:36:46,240 --> 00:36:48,880 Nou argc is regtig die n. 706 00:36:48,880 --> 00:36:51,260 Dit is die lengte van die argv skikking. 707 00:36:51,260 --> 00:36:59,600 So is iterating oor die argv array-printf ing elke argv waarde. 708 00:36:59,600 --> 00:37:04,730 >> So as ek hierdie. 709 00:37:04,730 --> 00:37:08,232 Maak argv 1. 710 00:37:08,232 --> 00:37:09,940 Dit stel. 711 00:37:09,940 --> 00:37:11,620 Dot streep argv 1. 712 00:37:11,620 --> 00:37:15,530 Net hierdie hardloop, is dit afdrukke dot streep argv 1 713 00:37:15,530 --> 00:37:18,500 sedert dit was die enigste opdrag-lyn argument-- die program naam. 714 00:37:18,500 --> 00:37:22,080 Daar sal altyd by least-- argc kan nie minder nie as een, 715 00:37:22,080 --> 00:37:25,910 aangesien daar sal altyd ten minste wees die program naam te hardloop. 716 00:37:25,910 --> 00:37:32,040 So argv 1 Rob sal argv 1 druk en dan op die nuwe lyn "Rob." 717 00:37:32,040 --> 00:37:36,350 >> So in die eerste iterasie van hierdie lus, i is 0. 718 00:37:36,350 --> 00:37:39,090 Argv 0 is die naam program. 719 00:37:39,090 --> 00:37:40,010 Dot streep argv 1. 720 00:37:40,010 --> 00:37:43,770 En dan argv 1 is my eerste opdrag-lyn argument, wat is Rob. 721 00:37:43,770 --> 00:37:45,920 Op hierdie punt, ons is gelyk aan argc. 722 00:37:45,920 --> 00:37:48,210 Ons breek uit van die lus en ons gedoen het. 723 00:37:48,210 --> 00:37:53,940 So sal dit werk vir 'n arbitrêre aantal opdrag-lyn argumente. 724 00:37:53,940 --> 00:37:58,550 Let daarop dat dit druk argv 0, argv 1, 2 argv, argv 3, 4 argv. 725 00:37:58,550 --> 00:38:00,150 En daar is geen argv 5. 726 00:38:00,150 --> 00:38:01,460 argc is gelyk aan 5. 727 00:38:01,460 --> 00:38:06,960 So op argc-- by i gelyk 5, ons breek uit van die lus. 728 00:38:06,960 --> 00:38:07,950 OK. 729 00:38:07,950 --> 00:38:11,315 So vrae oor wat voor ons kyk na 'n meer komplekse voorbeeld? 730 00:38:11,315 --> 00:38:14,190 731 00:38:14,190 --> 00:38:16,860 >> So argv 2. 732 00:38:16,860 --> 00:38:17,830 Alles reg. 733 00:38:17,830 --> 00:38:20,610 So ons is nog steeds druk die opdrag-lyn argumente. 734 00:38:20,610 --> 00:38:23,170 Maar nou sien ons het 'n geneste lus. 735 00:38:23,170 --> 00:38:24,670 So, wat is dit? 736 00:38:24,670 --> 00:38:28,430 So het die eerste rondte doen presies wat dit tevore. 737 00:38:28,430 --> 00:38:30,950 Ons is nog steeds herhaling oor elke opdrag-lyn argument, 738 00:38:30,950 --> 00:38:34,260 maar nou die tweede loop-- ons het ook iets soos hierdie gesien voor. 739 00:38:34,260 --> 00:38:38,600 Toe hy iterating oor Zamyla uit te druk Z-A-M-Y-L-A. 740 00:38:38,600 --> 00:38:44,816 So hierdie tweede rondte vir Int J gelyk 0, n gelyk StrLen van argv bracket i. 741 00:38:44,816 --> 00:38:49,170 >> So laat se eerste dink vir the-- laat loop deur. 742 00:38:49,170 --> 00:38:53,560 Kom ons dink wat die rekenaar sou doen as ek gehardloop hierdie program as net dot 743 00:38:53,560 --> 00:38:56,030 streep argv Dash 2. 744 00:38:56,030 --> 00:39:03,590 So as ek gehardloop hierdie kode, dan argc gaan gelyk aan 1 te wees. 745 00:39:03,590 --> 00:39:07,050 En string argv-- daar is net gaan een indeks in argv, 746 00:39:07,050 --> 00:39:12,370 en wat gaan gelyke dot wees streep argv 2-- die program naam. 747 00:39:12,370 --> 00:39:19,170 >> OK, so nou is ek gelyk 0, i minder as 1, i plus plus vir Int J gelyk 0, 748 00:39:19,170 --> 00:39:23,880 N gelyk StrLen van argv bracket 0, so in die eerste iterasie van hierdie lus. argv 749 00:39:23,880 --> 00:39:27,250 bracket 0 is dot streep argv 2. 750 00:39:27,250 --> 00:39:29,320 So, wat is die lengte van die string? 751 00:39:29,320 --> 00:39:32,480 Wel, dot streep A-R-G-V Dash 2. 752 00:39:32,480 --> 00:39:35,020 So StrLen van wat sal wees 8. 753 00:39:35,020 --> 00:39:37,500 So j gelyk 0, n is gelyk aan 8. 754 00:39:37,500 --> 00:39:39,530 Solank as wat j is minder as 8, j ++. 755 00:39:39,530 --> 00:39:44,080 En met die dat ons gaan wees druk van 'n enkele karakter, wat 756 00:39:44,080 --> 00:39:47,350 is argv bracket i hakies j. 757 00:39:47,350 --> 00:39:49,826 >> Dus is die enigste i is nul. 758 00:39:49,826 --> 00:39:51,700 Ons het nog net een opdrag-lyn argument. 759 00:39:51,700 --> 00:39:53,890 In daardie eerste iterasie van die lus, ons is 760 00:39:53,890 --> 00:39:56,950 gaan druk wees argv bracket 0 bracket 0. 761 00:39:56,950 --> 00:39:58,325 En dan j gaan inkrementeer. 762 00:39:58,325 --> 00:40:01,650 En ons gaan druk argv bracket 0 bracket 1. 763 00:40:01,650 --> 00:40:04,150 En dan argv bracket 0 bracket 2. 764 00:40:04,150 --> 00:40:09,030 >> So dit is ons eerste ontmoeting van multi-dimensionele skikkings. 765 00:40:09,030 --> 00:40:12,770 Vroeër onthou dat ek gesê het dat argv tegnies 766 00:40:12,770 --> 00:40:15,950 'n verskeidenheid van skikkings van karakters. 767 00:40:15,950 --> 00:40:24,360 So hier as ek sê iets soos string s gelyk argv bracket i, 768 00:40:24,360 --> 00:40:29,590 en dan het ek gesê s bracket j, hierdie sou wees vervul dieselfde ding. 769 00:40:29,590 --> 00:40:31,960 Nou, jy het bracket j voorheen gesien s. 770 00:40:31,960 --> 00:40:36,680 Dit is net toegang tot die j-de karakter van hierdie string. 771 00:40:36,680 --> 00:40:48,010 So met hierdie, is ons om die j-de karakter van die i-de argv. 772 00:40:48,010 --> 00:40:51,450 >> So wat moet hierdie uiteindelik uitset? 773 00:40:51,450 --> 00:40:53,210 Maak argv 2. 774 00:40:53,210 --> 00:40:54,730 Dit stel. 775 00:40:54,730 --> 00:40:56,340 Dot streep argv 2. 776 00:40:56,340 --> 00:41:03,790 "Rob Maria Hanna," en gee ons 'n paar kamer. 777 00:41:03,790 --> 00:41:07,050 So sien ons dat dit uitdruk dot op sy eie lyn en slash 778 00:41:07,050 --> 00:41:08,920 op sy eie lyn en 'n op sy eie lyn. 779 00:41:08,920 --> 00:41:11,260 Dit is uit te druk elke individuele karakter 780 00:41:11,260 --> 00:41:12,950 van elke opdrag-lyn argument. 781 00:41:12,950 --> 00:41:15,960 En dan tussen hulle, as gevolg van hierdie nuwe reël 782 00:41:15,960 --> 00:41:19,380 ons hier druk af, in tussen hulle dit 'n nuwe lyn sal druk. 783 00:41:19,380 --> 00:41:24,540 >> So, dit is soortgelyk aan die vorige argv Dash 1, 784 00:41:24,540 --> 00:41:26,459 wat elke gedrukte opdrag-lyn argument, 785 00:41:26,459 --> 00:41:28,500 maar nou is ons druk die opdrag-lyn argumente 786 00:41:28,500 --> 00:41:31,950 en dan iterating deur elke karakter van elke opdrag-lyn argument 787 00:41:31,950 --> 00:41:35,400 om hierdie produksie te kry. 788 00:41:35,400 --> 00:41:36,870 OK? 789 00:41:36,870 --> 00:41:40,570 So vrae oor hierdie? 790 00:41:40,570 --> 00:41:45,130 >> Een ding om daarop te let dat opdrag-lyn arguments-- 791 00:41:45,130 --> 00:41:49,990 sodat hulle van mekaar geskei deur spasies as sou jy natuurlik verwag hulle moet wees. 792 00:41:49,990 --> 00:41:53,050 So 'n string kan spasies in dit. 793 00:41:53,050 --> 00:41:57,380 Dit is nie super belangrik, maar as ek wou die derde opdrag-lyn argument 794 00:41:57,380 --> 00:42:01,226 om 'n ruimte te hê in dit, dan sal ek kan iets soos hierdie te sê. 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 So dit nou nog net drie opdrag-lyn arguments-- goed 4. 798 00:42:12,190 --> 00:42:17,620 Dot streep 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 Vrae oor hierdie? 801 00:42:19,310 --> 00:42:22,700 802 00:42:22,700 --> 00:42:24,894 >> Daar is niks spesiaals oor die spasie karakter. 803 00:42:24,894 --> 00:42:27,810 Dit gebeur net te wees dat die opdrag-lyn behandel die spasie karakter 804 00:42:27,810 --> 00:42:29,226 hoe jy skei elke argument. 805 00:42:29,226 --> 00:42:32,048 806 00:42:32,048 --> 00:42:33,000 Alles reg. 807 00:42:33,000 --> 00:42:39,950 So dan Probleem stel two-- jy gaan wees 808 00:42:39,950 --> 00:42:43,240 op soek na die geheim-sleutel kriptografie. 809 00:42:43,240 --> 00:42:47,700 So, soortgelyk aan dié voorbeeld ons gesien het van A Christmas Story, 810 00:42:47,700 --> 00:42:52,840 jy gaan implementeer sommige algoritmes dat, gegewe 'n boodskap, 811 00:42:52,840 --> 00:42:55,560 jy gaan in staat wees om om die boodskap te enkripteer 812 00:42:55,560 --> 00:42:58,730 dat slegs iemand met daardie geheime sleutel, met daardie dekodeerder ring, 813 00:42:58,730 --> 00:43:01,090 moet in staat wees om te decrypt. 814 00:43:01,090 --> 00:43:04,839 >> Sodat is die standaard uitgawe. 815 00:43:04,839 --> 00:43:07,130 Jy gaan implementeer twee verskillende weergawes. 816 00:43:07,130 --> 00:43:09,620 As jy toevallig 'n blik by die hacker edition-- nou, 817 00:43:09,620 --> 00:43:12,600 ons gaan om te gee jy 'n string soos hierdie, 818 00:43:12,600 --> 00:43:15,240 wat verteenwoordig 'n geënkripteerde wagwoord. 819 00:43:15,240 --> 00:43:19,990 So is jou doel is om uit te vind wat die Ontcijferde wagwoord is. 820 00:43:19,990 --> 00:43:26,950 Nou is dit eintlik hoe wagwoorde word gestoor in 'n baie van rekenaars, 821 00:43:26,950 --> 00:43:31,290 en dit slaan net hierdie ewekansige string karakters. 822 00:43:31,290 --> 00:43:34,440 Jy het om uit te vind hoe om te kry Van hierdie ewekansige string karakters 823 00:43:34,440 --> 00:43:36,140 wat die oorspronklike wagwoord was. 824 00:43:36,140 --> 00:43:39,060 825 00:43:39,060 --> 00:43:43,290 >> En uiteindelik, na hierdie probleem stel, moet jy 826 00:43:43,290 --> 00:43:46,100 in staat wees om te verstaan ​​wat dit beteken. 827 00:43:46,100 --> 00:43:51,650 So sal jy leer hoe om te decrypt hierdie soort van ewekansige string. 828 00:43:51,650 --> 00:43:56,390 Net so, as jy onthou van week 0, kan jy hierdie URL gesien het. 829 00:43:56,390 --> 00:44:00,210 En jy moet in staat wees om decrypt dit uiteindelik. 830 00:44:00,210 --> 00:44:04,810 Jy kan nie gelukkig wees as jy decrypt dit en klik op die skakel. 831 00:44:04,810 --> 00:44:05,700 Alles reg. 832 00:44:05,700 --> 00:44:06,591 Dit is dit vir vandag. 833 00:44:06,591 --> 00:44:12,095 So jy sien volgende week! 834 00:44:12,095 --> 00:44:18,315 >> [Elektroniese musiek Speel] 835 00:44:18,315 --> 00:47:15,619