1 00:00:00,000 --> 00:00:02,742 >> [Muziek] 2 00:00:02,742 --> 00:00:05,030 3 00:00:05,030 --> 00:00:09,090 >> ANDI Peng: Dit is CS50, en welkom op week twee van de sectie. 4 00:00:09,090 --> 00:00:11,740 Dit is eigenlijk tijdens week twee van onze class-- eigenlijk, 5 00:00:11,740 --> 00:00:14,550 de eerste week hebben we deel gehad. 6 00:00:14,550 --> 00:00:18,897 Handopsteken, hoeveel van jullie allemaal kwam super sectie van vorige week? 7 00:00:18,897 --> 00:00:19,480 OK, dat is OK. 8 00:00:19,480 --> 00:00:20,020 Dat is goed. 9 00:00:20,020 --> 00:00:23,110 Hoeveel van jullie bekeken super sectie van vorige week? 10 00:00:23,110 --> 00:00:23,610 OK. 11 00:00:23,610 --> 00:00:25,702 En jullie deden het goed Op probleem set één? 12 00:00:25,702 --> 00:00:28,660 Dus ik ga om het te nemen dat we een heleboel echt intelligente kinderen 13 00:00:28,660 --> 00:00:32,310 in deze klasse en de dingen zullen wel goed. 14 00:00:32,310 --> 00:00:33,180 OK. 15 00:00:33,180 --> 00:00:33,980 Dus first-- 16 00:00:33,980 --> 00:00:37,900 17 00:00:37,900 --> 00:00:41,090 >> Ten eerste, we gewoon te kort gaan over de agenda voor vandaag. 18 00:00:41,090 --> 00:00:42,700 We praten natuurlijk logistiek. 19 00:00:42,700 --> 00:00:45,480 Veel van jullie waarschijnlijk hebben vragen over 20 00:00:45,480 --> 00:00:46,920 hoe de dingen lopen in deze cursus. 21 00:00:46,920 --> 00:00:47,897 We zullen ze te beantwoorden. 22 00:00:47,897 --> 00:00:49,730 We gaan in het kort gaan over lussen in het geval 23 00:00:49,730 --> 00:00:51,410 elk van jullie gemist super sectie. 24 00:00:51,410 --> 00:00:53,240 We praten over ASCII-mapping. 25 00:00:53,240 --> 00:00:56,180 We praten over arrays, functies command line argumenten. 26 00:00:56,180 --> 00:01:00,210 En tot slot, wat jullie waarschijnlijk allemaal echt willen om hier te zijn om te leren over, 27 00:01:00,210 --> 00:01:01,270 is uw pset2. 28 00:01:01,270 --> 00:01:04,209 We zullen een aantal leuke trucs hebben en tips voor hoe dat te doen. 29 00:01:04,209 --> 00:01:07,910 30 00:01:07,910 --> 00:01:08,690 >> OK. 31 00:01:08,690 --> 00:01:11,450 Ook tweede we veel snoep hier. 32 00:01:11,450 --> 00:01:13,583 Iedereen die houdt van snoep, kom gewoon hier boven. 33 00:01:13,583 --> 00:01:14,430 Pak wat. 34 00:01:14,430 --> 00:01:15,100 Ik heb een bos. 35 00:01:15,100 --> 00:01:16,390 We hebben een ton in het kantoor. 36 00:01:16,390 --> 00:01:18,230 Ik wil eigenlijk niet om snoep te eten de hele dag. 37 00:01:18,230 --> 00:01:20,300 Jullie moeten alle snoep eten, want ik bracht het hier voor jullie. 38 00:01:20,300 --> 00:01:20,990 Gewoon eten snoep. 39 00:01:20,990 --> 00:01:24,080 Er zal snoep zijn elke sectie. 40 00:01:24,080 --> 00:01:25,330 >> Dus eerst, wie ben ik? 41 00:01:25,330 --> 00:01:27,080 Mijn naam is Andi Peng. 42 00:01:27,080 --> 00:01:30,270 Ik ben het hoofd van TA CS50 hier bij Yale. 43 00:01:30,270 --> 00:01:32,540 En naast dat zal ik ook be-- 44 00:01:32,540 --> 00:01:35,600 als iemand uw lopende zou like-- maatje, je schouder om op te huilen. 45 00:01:35,600 --> 00:01:39,140 Als de avond voor als gevolg van uw PSET, je hebt geen idee wat er gaande is, 46 00:01:39,140 --> 00:01:40,080 geef me iets. 47 00:01:40,080 --> 00:01:42,770 We zullen samen medelijden, et cetera. 48 00:01:42,770 --> 00:01:46,100 Weet alleen dat ik hier ben als een bron voor u als de frontlinie 49 00:01:46,100 --> 00:01:51,830 in het helpen van jullie uitzoeken hoe problemen in CS50 en daarbuiten lossen. 50 00:01:51,830 --> 00:01:54,590 >> Mijn e-mail is andi.peng@yale.edu. 51 00:01:54,590 --> 00:01:58,390 Ik zal ook het verzenden van een individu e-mail met mijn telefoonnummer erin 52 00:01:58,390 --> 00:02:01,860 zodat niet iedereen op de internet kunnen mijn telefoonnummer zien. 53 00:02:01,860 --> 00:02:03,640 Voel je vrij om mij te bellen op elk moment. 54 00:02:03,640 --> 00:02:07,510 Serieus, mijn telefoon is meestal verbonden aan mijn hand. 55 00:02:07,510 --> 00:02:10,240 Ik kan niet reageren binnen een paar minuten. 56 00:02:10,240 --> 00:02:11,984 Ik kan niet binnen een paar uur te reageren. 57 00:02:11,984 --> 00:02:14,400 Maar ik kan je verzekeren, als je e-mail me, als je me bellen, 58 00:02:14,400 --> 00:02:17,404 tekst me, ik zal reageren binnen 24 uur. 59 00:02:17,404 --> 00:02:19,820 Vaak, zal ik reageren vóór dat, omdat ik begrijp 60 00:02:19,820 --> 00:02:23,900 dat iedereen heeft wat problemen, en u wilt dat uw antwoorden 61 00:02:23,900 --> 00:02:26,110 zeer snel worden beantwoord. 62 00:02:26,110 --> 00:02:28,945 >> Echter, als je belt me 30 minuten voor 63 00:02:28,945 --> 00:02:31,570 dat stuk dat is te wijten donderdag nacht-- zijn als, Andi, help me, 64 00:02:31,570 --> 00:02:35,380 Ik heb niet started-- ik kan geven je die schouder om op te huilen. 65 00:02:35,380 --> 00:02:41,520 Maar is het misschien tijd om na te denken over zijn hoe je dat niet doen de volgende keer. 66 00:02:41,520 --> 00:02:44,040 OK. 67 00:02:44,040 --> 00:02:44,944 Oeps. 68 00:02:44,944 --> 00:02:45,850 Hoe kan ik teruggaan? 69 00:02:45,850 --> 00:02:48,140 Daar gaan we. 70 00:02:48,140 --> 00:02:52,310 >> Dus in deze cursus hebben we een ton van ondersteuning voor iedereen. 71 00:02:52,310 --> 00:02:54,640 Naast gewoon secties hier, die u 72 00:02:54,640 --> 00:02:57,000 Elke week krijgen om te besteden 90 prachtige minuten met mij, 73 00:02:57,000 --> 00:02:58,330 we hebben ook kantooruren. 74 00:02:58,330 --> 00:03:01,021 Hoeveel van jullie hebben al tot kantooruren geweest voor hulp? 75 00:03:01,021 --> 00:03:01,520 Grote. 76 00:03:01,520 --> 00:03:05,700 Dat is echt goed om te zien, omdat we heeft een staf van meer dan 45 TA en CA 77 00:03:05,700 --> 00:03:11,780 opgeleid voor deze cursus die hier voor het helpen jullie met je psets. 78 00:03:11,780 --> 00:03:14,580 >> Maandag ze gehouden in de TEAL klaslokaal in 17 Hill House hier 79 00:03:14,580 --> 00:03:15,350 aan de Yale. 80 00:03:15,350 --> 00:03:17,349 Dinsdag en donderdag, ze gehouden in commons. 81 00:03:17,349 --> 00:03:20,010 8:00-11:00 vrijwel elke weekdag. 82 00:03:20,010 --> 00:03:21,620 Kom binnen, kom naar buiten. 83 00:03:21,620 --> 00:03:24,030 Elk probleem, geen probleem-- net kom binnen, 84 00:03:24,030 --> 00:03:26,650 en dan zullen we u helpen met dat. 85 00:03:26,650 --> 00:03:31,640 >> Ten tweede, naast kantooruren en afdelingen, hebben we ook een korte broek. 86 00:03:31,640 --> 00:03:35,930 Heeft iemand ooit gezien een paar van de korte broek of walkthroughs in de video's 87 00:03:35,930 --> 00:03:36,750 op de website? 88 00:03:36,750 --> 00:03:37,250 OK. 89 00:03:37,250 --> 00:03:39,510 Dus ze zijn echt, echt behulpzaam. 90 00:03:39,510 --> 00:03:42,470 Onze mooie Harvard productie team over daar op die school 91 00:03:42,470 --> 00:03:47,910 het noorden, hebben ze gefilmd en geproduceerd deze ongelooflijke walkthrough video's. 92 00:03:47,910 --> 00:03:52,290 >> Ze nemen u stap voor stap door hoe om te gaan over het oplossen van een probleem. 93 00:03:52,290 --> 00:03:56,340 Vaak, als je in de war bent over een eenvoudig concept, een unieke concept, 94 00:03:56,340 --> 00:03:59,780 een kijkje nemen, want we hebben waarschijnlijk een korte op het ergens op onze website. 95 00:03:59,780 --> 00:04:03,800 En het is meestal een geweldige bron om te zoeken wanneer u voor het eerst bent 96 00:04:03,800 --> 00:04:06,510 verloren over hoe een probleem aan te pakken. 97 00:04:06,510 --> 00:04:09,750 >> Ten derde, hebben wij ook study50 en reference50. 98 00:04:09,750 --> 00:04:15,650 Dus bestuderen 50 van de website is slechts een link. 99 00:04:15,650 --> 00:04:21,500 Het is, denk ik, study.cs50.net of zoiets. 100 00:04:21,500 --> 00:04:22,860 Google het net. 101 00:04:22,860 --> 00:04:24,229 We hebben veel dia's voorbereid. 102 00:04:24,229 --> 00:04:26,770 We hebben veel korte broek en walkthroughs-- dingen alle gecompileerd 103 00:04:26,770 --> 00:04:31,070 erg mooi en netjes voor jullie allemaal om door te bladeren, zie geen concepten 104 00:04:31,070 --> 00:04:32,860 dat je verward over. 105 00:04:32,860 --> 00:04:35,920 Het zou waarschijnlijk worden gedekt daar in study50. 106 00:04:35,920 --> 00:04:37,640 >> Reference50-- vergelijkbaar. 107 00:04:37,640 --> 00:04:41,510 We hebben een heleboel verschillende noten direct beschikbaar voor uw beschikking. 108 00:04:41,510 --> 00:04:44,450 En tot slot, we hebben wat riep CS50 Bespreek, 109 00:04:44,450 --> 00:04:48,082 een forum waarin, als de avond tevoren je doet uw problemen, laten we zeggen, 110 00:04:48,082 --> 00:04:49,880 heb je een vraag. 111 00:04:49,880 --> 00:04:52,340 Log in om CS50 bespreken. 112 00:04:52,340 --> 00:04:53,190 Stel uw vraag. 113 00:04:53,190 --> 00:04:55,820 En vervolgens een van de hundreds-- misschien, thousands-- peers 114 00:04:55,820 --> 00:04:57,960 het nemen van deze klasse zal online aanmelden. 115 00:04:57,960 --> 00:05:01,182 En misschien iemand kan krijgen uw antwoord voordat een TA kan. 116 00:05:01,182 --> 00:05:03,390 Het is in wezen slechts een online forum dat we kunnen allemaal 117 00:05:03,390 --> 00:05:04,556 gebruiken om onze problemen te bespreken. 118 00:05:04,556 --> 00:05:06,483 Dat is cool. 119 00:05:06,483 --> 00:05:10,660 120 00:05:10,660 --> 00:05:11,550 >> OK. 121 00:05:11,550 --> 00:05:13,220 Dus probleem stelt. 122 00:05:13,220 --> 00:05:17,840 We staan ​​op het punt in het dikke probleem set twee. 123 00:05:17,840 --> 00:05:20,570 Veel van ons hebben al worstelde door middel van een probleem stellen. 124 00:05:20,570 --> 00:05:24,460 We weten al dat misschien te wachten voor de laatste nacht om uw PSET doen 125 00:05:24,460 --> 00:05:28,170 is niet de slimste wat je moet doen in CS50. 126 00:05:28,170 --> 00:05:32,380 >> Tips en tips voor wezen succes worden gelezen het hele spec. 127 00:05:32,380 --> 00:05:36,270 Hoeveel van jullie hebben al lees de spec voor PSET 2? 128 00:05:36,270 --> 00:05:36,770 OK. 129 00:05:36,770 --> 00:05:39,840 Dat is een stevige hoeveelheid. 130 00:05:39,840 --> 00:05:43,210 Ik weet dat jullie waarschijnlijk erkend nu de specs zijn echt lang. 131 00:05:43,210 --> 00:05:45,700 Ze zijn echt, echt lang. 132 00:05:45,700 --> 00:05:49,630 >> Het is echt moeilijk om elke regel te lezen van die zorgvuldig woord voor woord. 133 00:05:49,630 --> 00:05:52,780 Je wilt gewoon romen naar waar het vertelt je om iets te doen. 134 00:05:52,780 --> 00:05:54,459 Ik kan u verzekeren, dat niet doen. 135 00:05:54,459 --> 00:05:56,750 Als je dat doet, ben je waarschijnlijk ga ergens missen 136 00:05:56,750 --> 00:05:58,458 waar het je vertelt hoe een probleem te beginnen 137 00:05:58,458 --> 00:06:01,140 of het vertelt je wat je moet naam uw probleem of het u vertelt, 138 00:06:01,140 --> 00:06:03,720 Dit is waarschijnlijk de beste manier om te beginnen met het doen van uw probleem. 139 00:06:03,720 --> 00:06:05,050 En dan zul je verloren. 140 00:06:05,050 --> 00:06:08,219 >> Wanneer u probeert te lezen uw spec halverwege, 141 00:06:08,219 --> 00:06:10,510 veel van de belangrijke information-- in dat je niet 142 00:06:10,510 --> 00:06:12,260 zal in staat zijn om echt toegang. 143 00:06:12,260 --> 00:06:13,219 Dus lees het hele spec. 144 00:06:13,219 --> 00:06:15,468 Probeer om het hele spec lezen voordat je naar sectie, 145 00:06:15,468 --> 00:06:17,360 omdat dan, als we praten over de PSET, 146 00:06:17,360 --> 00:06:21,070 we allemaal kunnen een idee van wat er gaande is. 147 00:06:21,070 --> 00:06:25,169 >> Ten tweede is een concept dat ik graag verwijzen 148 00:06:25,169 --> 00:06:26,710 veel in de loop semester. 149 00:06:26,710 --> 00:06:30,070 Maar in wezen, ontmoet ons halverwege, toch? 150 00:06:30,070 --> 00:06:33,970 Mij, als uw TA en Jason als natuurlijk manager en Scaz als je docent 151 00:06:33,970 --> 00:06:37,120 en David als uw professor en alle de andere mooie TA in deze cursus, 152 00:06:37,120 --> 00:06:39,830 assistenten in deze course-- we zullen ons best doen 153 00:06:39,830 --> 00:06:42,965 om ervoor te zorgen dat u zijn ingesteld up om te slagen in deze cursus. 154 00:06:42,965 --> 00:06:43,840 Wij zullen houden sectie. 155 00:06:43,840 --> 00:06:44,870 We zullen spreekuren houden. 156 00:06:44,870 --> 00:06:47,087 Wij zullen uw telefoon te beantwoorden oproepen beantwoorden uw e-mails, 157 00:06:47,087 --> 00:06:49,670 alles doen wat we kunnen om te maken ervoor dat uw vragen worden beantwoord. 158 00:06:49,670 --> 00:06:51,460 >> Echter, helpen ons ook. 159 00:06:51,460 --> 00:06:52,450 Ontmoet ons halverwege. 160 00:06:52,450 --> 00:06:56,040 Als je naar de kantooruren niet gegaan sectie, niet 161 00:06:56,040 --> 00:07:02,060 gezien de lezingen, die geen idee wat er aan de hand, net als, help me. 162 00:07:02,060 --> 00:07:04,350 Ik ga zijn als, nou, het spijt me. 163 00:07:04,350 --> 00:07:06,410 Is het misschien tijd om te lenen zijn die schouder om op te huilen, 164 00:07:06,410 --> 00:07:08,959 want ik ben niet zeker wat ik kan doen om je te helpen 165 00:07:08,959 --> 00:07:12,000 als je niet proberen om minstens hulp jezelf een beetje in het begin. 166 00:07:12,000 --> 00:07:12,910 Ontmoet ons halverwege. 167 00:07:12,910 --> 00:07:15,020 Je weet wel, kom bereid zijn om te beantwoorden en krijgen 168 00:07:15,020 --> 00:07:16,353 klaar om deel te nemen in het materiaal. 169 00:07:16,353 --> 00:07:19,342 Het maakt de dingen zoveel makkelijker voor iedereen die betrokken is. 170 00:07:19,342 --> 00:07:22,970 Ja, dat is vrij veel. 171 00:07:22,970 --> 00:07:23,720 >> Indeling. 172 00:07:23,720 --> 00:07:29,250 Dus op de syllabus, het is vrij diepgaande over hoe we leerjaar. 173 00:07:29,250 --> 00:07:32,440 Maar in wezen, de afbraak in dit is 50% van je cijfer 174 00:07:32,440 --> 00:07:34,530 zullen de psets, die is mooi, want dat is 175 00:07:34,530 --> 00:07:37,400 waar je de besteding van de overgrote meerderheid van uw natuurlijk tijd aan. 176 00:07:37,400 --> 00:07:39,854 Ondervraagt ​​40%, en de laatste project zal 10% bedragen. 177 00:07:39,854 --> 00:07:42,520 Er zullen twee quizzen hele de loop van het semester. 178 00:07:42,520 --> 00:07:47,050 Ik denk dat de tijden en data zijn ook vermeld op de syllabus. 179 00:07:47,050 --> 00:07:49,210 >> De manier waarop we zullen worden de indeling van uw psets 180 00:07:49,210 --> 00:07:53,930 is dat we in wezen vier waarden die we toekennen aan elke rang. 181 00:07:53,930 --> 00:07:57,250 We hebben een waarde van scope, correctheid, design en stijl. 182 00:07:57,250 --> 00:08:01,530 Dus zoals je ziet, dat is een soort van onze formule voor de berekening psets. 183 00:08:01,530 --> 00:08:03,640 Drie geven we de meest gewicht juistheid, 184 00:08:03,640 --> 00:08:06,140 want natuurlijk je coach moeten testen op de zaken 185 00:08:06,140 --> 00:08:08,480 dat we willen dat het testen. 186 00:08:08,480 --> 00:08:11,000 >> Jullie hebben allemaal check50 tot uw beschikking. 187 00:08:11,000 --> 00:08:13,730 Het is een zeer nuttige functie dat jullie allemaal kunnen 188 00:08:13,730 --> 00:08:17,560 upload uw code om onze servers, waar we het voor u controleren. 189 00:08:17,560 --> 00:08:20,800 En je hebt gezien die frowny gezichten, smiley gezichten. 190 00:08:20,800 --> 00:08:22,119 Ze zijn echt, echt behulpzaam. 191 00:08:22,119 --> 00:08:23,910 Aarzel dan niet de student die probeert graag 192 00:08:23,910 --> 00:08:26,230 om hardcode in alle antwoorden op hen. 193 00:08:26,230 --> 00:08:30,050 Ik heb zeker gezien een PSET waarbij iemand zag alle waarden van check50 194 00:08:30,050 --> 00:08:33,429 en ze gewoon hard gecodeerd in-- als dit nummer, print dit nummer. 195 00:08:33,429 --> 00:08:35,080 Als dat aantal, uit te printen dat nummer. 196 00:08:35,080 --> 00:08:36,090 Doe dat niet. 197 00:08:36,090 --> 00:08:39,360 >> Hoewel technisch check50 is correct, 198 00:08:39,360 --> 00:08:41,809 uw manier van het oplossen van de probleem is niet correct. 199 00:08:41,809 --> 00:08:45,770 Dus gewoon gebruik check50 spaarzaam. 200 00:08:45,770 --> 00:08:48,497 Maar er ook voor zorgen dat u begrijpen hoe het functioneert, 201 00:08:48,497 --> 00:08:50,580 het programma functioneert in aanvulling op check50, 202 00:08:50,580 --> 00:08:53,120 omdat we niet elke kunnen testen mogelijk geval van check50. 203 00:08:53,120 --> 00:08:55,440 We zullen het testen van een aantal van hen. 204 00:08:55,440 --> 00:09:00,390 >> Ontwerp is in wezen, hoe goed ontworpen is uw code? 205 00:09:00,390 --> 00:09:04,150 Als u copy-plakken multiple regels code vele malen. 206 00:09:04,150 --> 00:09:06,960 Misschien heb je niet helemaal hebben het beste ontwerp in de code. 207 00:09:06,960 --> 00:09:09,470 Misschien is het tijd om die lus toe te voegen. 208 00:09:09,470 --> 00:09:12,090 In wezen, hier is het gewoon allemaal over het proberen om uw code te doen, 209 00:09:12,090 --> 00:09:17,010 proberen om de code zo efficiënt schrijven mogelijk, zodat uw programma loopt 210 00:09:17,010 --> 00:09:19,630 zo snel mogelijk. 211 00:09:19,630 --> 00:09:20,996 >> Tot slot hebben we de stijl. 212 00:09:20,996 --> 00:09:24,360 Dus stijl is een soort van een willekeurige, subjectieve term. 213 00:09:24,360 --> 00:09:27,470 Ik weet dat we officieel hebben een stijl 50 gids voor CS50, 214 00:09:27,470 --> 00:09:30,050 waar het vertelt je, oh, je moet een ruimte hier. 215 00:09:30,050 --> 00:09:32,220 Je moet soort van formaat uw code op deze manier. 216 00:09:32,220 --> 00:09:34,070 Je moet de dingen te noemen op deze manier. 217 00:09:34,070 --> 00:09:38,180 >> Ik heb niet echt schelen, per se, hoe u ervoor kiest om uw code stijl, 218 00:09:38,180 --> 00:09:39,840 net zo lang als je consequent blijven. 219 00:09:39,840 --> 00:09:43,732 Bijvoorbeeld, als je wilt laat een ruimte na vier 220 00:09:43,732 --> 00:09:45,690 voordat je vier loop, gewoon doen dat elke keer. 221 00:09:45,690 --> 00:09:46,523 Niet soort doen. 222 00:09:46,523 --> 00:09:47,730 Geen andere keer niet. 223 00:09:47,730 --> 00:09:51,046 Als je graag krullend houden braces ruimte op een bepaalde manier, 224 00:09:51,046 --> 00:09:52,170 gewoon altijd doen het op die manier. 225 00:09:52,170 --> 00:09:54,628 Niet soort ergens doen hier en ergens niet. 226 00:09:54,628 --> 00:09:57,010 Als we de indeling, het is echt moeilijk 227 00:09:57,010 --> 00:09:59,420 als ik heb geen idee hoe je bent het formatteren van uw code, 228 00:09:59,420 --> 00:10:02,064 dingen zijn gekke en misplaatst. 229 00:10:02,064 --> 00:10:04,980 Als je gewoon consistent te houden, het is veel gemakkelijker voor mij als de grotere 230 00:10:04,980 --> 00:10:06,310 in staat zijn om de code te lezen. 231 00:10:06,310 --> 00:10:09,393 Het is veel gemakkelijker voor u als student om te kunnen kijken via uw code 232 00:10:09,393 --> 00:10:11,720 en zien wat er mis is met Het slash waarom er problemen. 233 00:10:11,720 --> 00:10:15,740 Stijl is een van de makkelijkste dingen jullie kunnen doen om de volledige scores te krijgen. 234 00:10:15,740 --> 00:10:18,770 In wezen, als je gewoon schelen, als betaal je vijf minuten van de aandacht 235 00:10:18,770 --> 00:10:22,760 uw code elke week, moet u krijgen volledige stijl punten. 236 00:10:22,760 --> 00:10:26,020 >> Ten slotte, hebben wij wat heet de multiplier van de scope. 237 00:10:26,020 --> 00:10:28,890 Scope-- Ik weet dat het een grote woord, vooral in deze klasse. 238 00:10:28,890 --> 00:10:31,030 Maar scope, alles dat middelen is dat je probeert 239 00:10:31,030 --> 00:10:33,670 de psets om het beste van uw vermogen. 240 00:10:33,670 --> 00:10:37,180 Als u zich in drie van vier problemen 241 00:10:37,180 --> 00:10:39,460 en zelfs niet proberen de laatste, ben je waarschijnlijk 242 00:10:39,460 --> 00:10:41,630 ga een aantal punten te verliezen op scope. 243 00:10:41,630 --> 00:10:44,560 >> Zelfs als je gewoon het probleem te starten, doe je best om er doorheen lopen. 244 00:10:44,560 --> 00:10:47,691 Zelfs als het niet werkt, zet hem in, want dat laat zien en toont 245 00:10:47,691 --> 00:10:50,190 voor ons dat je probeert, dat de set probleem geprobeerd 246 00:10:50,190 --> 00:10:51,430 om het beste van uw vermogen. 247 00:10:51,430 --> 00:10:53,800 En dan kunnen wij u volle punten voor scope. 248 00:10:53,800 --> 00:10:58,715 >> Scope is ook erg belangrijk voor als we praten over de laagste PSET score neerzetten. 249 00:10:58,715 --> 00:11:02,010 Dus in de loop van de semester, jullie hebben negen psets. 250 00:11:02,010 --> 00:11:05,340 En we zullen daadwerkelijk te laten vallen de laagste score uit die negen, 251 00:11:05,340 --> 00:11:07,670 maar alleen als je volledige reikwijdte punten. 252 00:11:07,670 --> 00:11:11,120 >> Dus als je draaien in een onvolledige PSET, Helaas kunnen we niet die ene druppel, 253 00:11:11,120 --> 00:11:13,540 omdat uw scope punten werden niet afgerond. 254 00:11:13,540 --> 00:11:16,570 Dus zelfs als je de vreselijke week waar je sterft en je ziek bent 255 00:11:16,570 --> 00:11:20,040 of je hond sterft, je kat sterft, en je bent overladen met huiswerk, 256 00:11:20,040 --> 00:11:21,074 gewoon proberen de PSET. 257 00:11:21,074 --> 00:11:22,490 Doen om het beste van uw vermogen. 258 00:11:22,490 --> 00:11:23,840 Als het niet werkt, het maakt niet uit. 259 00:11:23,840 --> 00:11:24,506 Zet hem gewoon in. 260 00:11:24,506 --> 00:11:26,590 Kunnen we tenminste geven je punten voor de moeite. 261 00:11:26,590 --> 00:11:28,510 >> A voor inspanning in deze klasse. 262 00:11:28,510 --> 00:11:30,170 Tenminste laagste score neerzetten voor inspanning. 263 00:11:30,170 --> 00:11:32,354 Dus ja. 264 00:11:32,354 --> 00:11:33,270 Dat is vrij veel. 265 00:11:33,270 --> 00:11:36,521 Heeft iemand vragen hebben, zodat ver over hoe we de rang in de klas? 266 00:11:36,521 --> 00:11:37,187 Of een van deze? 267 00:11:37,187 --> 00:11:41,220 Elk van deze zo far-- secties, kantooruren? 268 00:11:41,220 --> 00:11:41,720 Cool. 269 00:11:41,720 --> 00:11:46,720 270 00:11:46,720 --> 00:11:47,800 OK. 271 00:11:47,800 --> 00:11:51,260 >> Dus dit is een onderwerp dat er geen men houdt echt om over te praten. 272 00:11:51,260 --> 00:11:53,084 Ik hou er niet echt over praten. 273 00:11:53,084 --> 00:11:55,250 Jullie willen niet echt om mij te horen over praten. 274 00:11:55,250 --> 00:11:57,690 Maar helaas, we hebben allemaal hebben om erover te praten. 275 00:11:57,690 --> 00:12:00,110 David bracht 20 minuten een lezing over te praten. 276 00:12:00,110 --> 00:12:02,580 En dat is het onderwerp academische eerlijkheid. 277 00:12:02,580 --> 00:12:08,110 >> Dus we hier allemaal hebben waarschijnlijk geschreven een essay ergens in onze Yale carrière. 278 00:12:08,110 --> 00:12:11,800 We hebben waarschijnlijk gekregen een gesprek waarin we hebben verteld om niet plagiaat onze essay, 279 00:12:11,800 --> 00:12:13,940 want dat werk is niet van ons. 280 00:12:13,940 --> 00:12:18,109 In de informatica, hebben we dezelfde soort concept. 281 00:12:18,109 --> 00:12:20,150 Alle werkzaamheden die u indient, alle code die je schrijft 282 00:12:20,150 --> 00:12:21,900 moet de code die u hebt geschreven zijn. 283 00:12:21,900 --> 00:12:24,280 Moet code die je hebt niet gekopieerd van ergens anders. 284 00:12:24,280 --> 00:12:26,777 Moet code niet zo zijn dat heb je googled en plofte in 285 00:12:26,777 --> 00:12:28,360 en je weet niet echt of het werkt. 286 00:12:28,360 --> 00:12:32,440 Je hebt een soort van een gevoel van wat het doet, maar niet echt. 287 00:12:32,440 --> 00:12:36,562 Bij twijfel, wezen, het is gewoon redelijk. 288 00:12:36,562 --> 00:12:38,520 Op onze syllabus hebben we een hele lijst van dingen 289 00:12:38,520 --> 00:12:40,560 zien wij als een redelijke versus niet redelijk. 290 00:12:40,560 --> 00:12:43,820 >> Bijvoorbeeld, redelijke is jou en je vriend 291 00:12:43,820 --> 00:12:47,360 bespreken wat de beste manier om te gaan over logisch oplossen van een probleem. 292 00:12:47,360 --> 00:12:48,910 Dat is redelijk. 293 00:12:48,910 --> 00:12:53,244 Wat zou niet redelijk zijn, is als je jongens kwamen bij elkaar, getypt dezelfde code, 294 00:12:53,244 --> 00:12:54,410 en draaide in dezelfde code. 295 00:12:54,410 --> 00:12:56,302 Dat is niet redelijk. 296 00:12:56,302 --> 00:12:57,510 Hetzelfde, een soort van een essay. 297 00:12:57,510 --> 00:12:59,290 Als u wilt bespreken met je vriend, hey, 298 00:12:59,290 --> 00:13:00,220 dit is wat ik wil schrijven. 299 00:13:00,220 --> 00:13:02,500 Dit zijn de stappen die ik wil nemen om erover te schrijven, geweldig. 300 00:13:02,500 --> 00:13:03,208 Dat is geweldig. 301 00:13:03,208 --> 00:13:04,790 Gelieve met elkaar samenwerken. 302 00:13:04,790 --> 00:13:06,540 Als jullie beginnen het schrijven van het zelfde ding, 303 00:13:06,540 --> 00:13:10,020 draaien in hetzelfde essay, dat is minder OK. 304 00:13:10,020 --> 00:13:13,200 Dus wanneer je twijfelt, gewoon niet doen. 305 00:13:13,200 --> 00:13:16,940 >> Hier hebben we in CS50, hebben we scripts die lopen te automatiseren om te testen 306 00:13:16,940 --> 00:13:21,740 niet alleen de juistheid van de code, maar ook het unieke karakter van uw code. 307 00:13:21,740 --> 00:13:25,920 Dus gelieve niet zetten ons in de positie van het hebben van uw zaak te verwijzen naar ExComm. 308 00:13:25,920 --> 00:13:31,110 Neem gewoon voor iedereen, laten we gewoon maken dit een geweldige ervaring. 309 00:13:31,110 --> 00:13:33,600 Iedereen leert beter, we allemaal gelukkiger, 310 00:13:33,600 --> 00:13:37,926 en we zijn allemaal opgezet om slagen in deze cursus. 311 00:13:37,926 --> 00:13:39,800 Iets dat is heel Uniek aan deze klasse 312 00:13:39,800 --> 00:13:42,660 dat ik denk dat iedereen moet echt aandacht te besteden aan is dat we 313 00:13:42,660 --> 00:13:44,930 wat de spijt heet clausule in onze syllabus. 314 00:13:44,930 --> 00:13:50,010 Dus in wezen, binnen 72 uur, als je denkt dat je iets hebt gedaan 315 00:13:50,010 --> 00:13:53,240 je bent niet echt zeker was geval, dan kunt u bij ons terecht. 316 00:13:53,240 --> 00:13:57,220 Wij beloven u dat binnen 72 uur zullen we de zaak zelf te behandelen 317 00:13:57,220 --> 00:13:59,820 zonder naar een hogere autoriteit in de administratie. 318 00:13:59,820 --> 00:14:03,100 >> Dus als je bij mij komen en zeggen: Andi, hey, ik ben echt jammer, 319 00:14:03,100 --> 00:14:07,620 maar ik denk dat er een paar lijnen in mijn code gisteravond dat ik soort van googled, 320 00:14:07,620 --> 00:14:10,120 stapte uit van Stack Overloop, kopiëren en plakken, 321 00:14:10,120 --> 00:14:13,680 en ik ben echt, echt spijt over, laat het me weten. 322 00:14:13,680 --> 00:14:16,900 Gelieve niet gewoon laten etteren en maar hopen dat ik vangen. 323 00:14:16,900 --> 00:14:17,784 We zullen het op te vangen. 324 00:14:17,784 --> 00:14:18,450 Kom gewoon naar me. 325 00:14:18,450 --> 00:14:20,520 Laat het me weten binnen 72 uur. 326 00:14:20,520 --> 00:14:22,240 We zullen uitzoeken een oplossing. 327 00:14:22,240 --> 00:14:26,679 En we beloven dat we niet zullen verwijzen naar universitaire autoriteiten wezen. 328 00:14:26,679 --> 00:14:29,220 Dus het is in uw belang om gewoon eerlijk met iedereen 329 00:14:29,220 --> 00:14:31,720 die betrokken zijn bij de cursus. 330 00:14:31,720 --> 00:14:34,630 >> OK. 331 00:14:34,630 --> 00:14:35,240 OK. 332 00:14:35,240 --> 00:14:37,800 Dus nu snel voor Ik ga verder, doet iedereen 333 00:14:37,800 --> 00:14:42,670 hebben vragen over logistiek hoe cursussen we gaan lopen, 334 00:14:42,670 --> 00:14:45,982 hoe secties gaan te lopen, een van die? 335 00:14:45,982 --> 00:14:46,711 OK. 336 00:14:46,711 --> 00:14:47,210 Ja. 337 00:14:47,210 --> 00:14:48,126 >> PUBLIEK: [onverstaanbaar]? 338 00:14:48,126 --> 00:14:50,414 339 00:14:50,414 --> 00:14:51,080 ANDI PENG: Ja. 340 00:14:51,080 --> 00:14:54,850 Dus quizzes-- hoeveel van jullie zijn in de sectie maandag / woensdag? 341 00:14:54,850 --> 00:14:56,700 Hoeveel van jullie zijn in de dinsdag / donderdag? 342 00:14:56,700 --> 00:14:58,550 OK, dus het is een solide split hier. 343 00:14:58,550 --> 00:15:00,900 Dus de manier waarop we lopen het op Yale is dat we 344 00:15:00,900 --> 00:15:04,040 zullen twee afzonderlijke hebben quizzes-- één voor elk section-- dat 345 00:15:04,040 --> 00:15:06,160 zullen worden genomen tijdens de les. 346 00:15:06,160 --> 00:15:09,310 Ik denk dat het oktober, eind oktober, zoiets als een week 347 00:15:09,310 --> 00:15:10,794 van de quiz. 348 00:15:10,794 --> 00:15:11,960 Ja, dus kom gewoon naar de klas. 349 00:15:11,960 --> 00:15:13,920 Op die maandag of woensdag, je de quiz te nemen. 350 00:15:13,920 --> 00:15:16,336 Op die dinsdag of donderdag, je zult een andere quiz. 351 00:15:16,336 --> 00:15:18,570 Maar hetzelfde materiaal bedekt. 352 00:15:18,570 --> 00:15:19,160 Ja. 353 00:15:19,160 --> 00:15:20,660 Goede vraag. 354 00:15:20,660 --> 00:15:21,160 Ja. 355 00:15:21,160 --> 00:15:23,260 >> Publiek: Waar doen we ga naar onze kwaliteiten te controleren? 356 00:15:23,260 --> 00:15:23,926 >> ANDI PENG: Ja. 357 00:15:23,926 --> 00:15:28,420 Dus ik zal het verzenden van een e-mail, ongeacht elke week 358 00:15:28,420 --> 00:15:31,460 wanneer quizzen zijn graded-- of, sorry, wanneer psets worden gesorteerd. 359 00:15:31,460 --> 00:15:34,120 Psets zijn meestal gedraaid in de middag of vrijdag. 360 00:15:34,120 --> 00:15:37,540 Dus ik beloof dat ik zal proberen om ze terug te krijgen om u 361 00:15:37,540 --> 00:15:40,000 door de middag van de volgende vrijdag. 362 00:15:40,000 --> 00:15:44,950 >> Wanneer ik een graad PSET, zal ik stuur een melding op de rang boek 363 00:15:44,950 --> 00:15:47,070 dat vertelt je je score kan online worden bekeken. 364 00:15:47,070 --> 00:15:52,022 Zo goed deze week, nadat ik afwerking indeling psets van vorige week, 365 00:15:52,022 --> 00:15:54,230 jullie zullen een e-mail te krijgen kennisgeving zeg je, 366 00:15:54,230 --> 00:15:55,870 hey dit is waar je ga naar je cijfers te bekijken. 367 00:15:55,870 --> 00:15:57,680 En je kunt elke zien overzicht van uw kwaliteiten. 368 00:15:57,680 --> 00:15:58,555 Kun je de opmerkingen zien. 369 00:15:58,555 --> 00:16:00,360 Oh, snelle ding ook. 370 00:16:00,360 --> 00:16:03,060 De commentaar sectie in de grote boek is waar ik zal waarschijnlijk 371 00:16:03,060 --> 00:16:05,300 spenderen het grootste deel van mijn tijd sorteren. 372 00:16:05,300 --> 00:16:07,094 Dus een ding dat is echt belangrijk wanneer 373 00:16:07,094 --> 00:16:09,010 jullie bekijkt je cijfers op uw psets 374 00:16:09,010 --> 00:16:11,400 niet alleen kijkt op de fysieke score 375 00:16:11,400 --> 00:16:14,630 maar ook de tijd nemen om echt mijn opmerkingen gelezen. 376 00:16:14,630 --> 00:16:17,820 >> Vaak dat geeft je feedback over hoe je een probleem hebt oplossen. 377 00:16:17,820 --> 00:16:20,480 Als u hoeft te doen iets een beetje beter, 378 00:16:20,480 --> 00:16:24,080 opbouwende kritiek is meestal beste gegeven in die sectie opmerkingen. 379 00:16:24,080 --> 00:16:26,950 Dus alsjeblieft, alsjeblieft, ga ik om tijd te besteden aan het schrijven opmerkingen. 380 00:16:26,950 --> 00:16:30,440 Alsjeblieft, ik zou echt waarderen als jullie deze opmerkingen zou lezen. 381 00:16:30,440 --> 00:16:31,170 OK. 382 00:16:31,170 --> 00:16:34,150 Cool. 383 00:16:34,150 --> 00:16:34,680 >> Prima. 384 00:16:34,680 --> 00:16:40,680 Dus gaan we om te beginnen met praten en gewoon snel herzien 385 00:16:40,680 --> 00:16:45,040 deel van het materiaal van week nul net zo zijn we 386 00:16:45,040 --> 00:16:48,760 op de juiste pagina voor beginnen de problemen van deze week. 387 00:16:48,760 --> 00:16:52,600 Dus de while lus is een van de drie lussen 388 00:16:52,600 --> 00:16:54,510 we eerder in deze klasse besproken. 389 00:16:54,510 --> 00:16:57,060 >> Een tijdje loop wezen is geschreven in de syntaxis 390 00:16:57,060 --> 00:17:00,666 waarbij, terwijl een bepaalde voorwaarde, doe dit herhaaldelijk, toch? 391 00:17:00,666 --> 00:17:02,040 Denk aan het in deze grafische hier. 392 00:17:02,040 --> 00:17:04,780 Je gaat om te beginnen op een bepaald punt in de code. 393 00:17:04,780 --> 00:17:09,030 Je gaat naar de lus voorwaarde in te voeren if-- ik niet weten-- x minder dan één. 394 00:17:09,030 --> 00:17:11,677 >> Als dat waar is, je gaat het luslichaam te voeren. 395 00:17:11,677 --> 00:17:14,010 En je gaat blijven doen die opnieuw, opnieuw, opnieuw, 396 00:17:14,010 --> 00:17:17,900 over en over-- dat is waarom het is een loop-- totdat je conditie wordt 397 00:17:17,900 --> 00:17:19,079 vals. 398 00:17:19,079 --> 00:17:22,140 Dus op deze manier, een tijdje lus is een van de eenvoudigere manieren 399 00:17:22,140 --> 00:17:25,619 om elke vorm van de aandoening schrijven dat moet over en over en over herhalen. 400 00:17:25,619 --> 00:17:28,109 Wees voorzichtig wanneer je schrijft een soort van lus 401 00:17:28,109 --> 00:17:32,140 dat u een uitgang voorwaarde evenals een update voor wat het 402 00:17:32,140 --> 00:17:36,714 is zodat uw lus doet niet alleen lopen over en oneindig. 403 00:17:36,714 --> 00:17:38,630 In ieder geval, je gaat te willen ervoor zorgen 404 00:17:38,630 --> 00:17:42,670 dat je een bepaald aspect van je veranderende code of aan het einde van de lus 405 00:17:42,670 --> 00:17:46,680 gewoon om ervoor te zorgen dat u een manier om vooruitgang te boeken in de richting van de aandoening 406 00:17:46,680 --> 00:17:48,400 die u wilt ontmoeten om eind. 407 00:17:48,400 --> 00:17:50,239 Heeft dat zin om iedereen? 408 00:17:50,239 --> 00:17:52,530 We gewoon niet willen zijn gevangen in deze spiraal, waar 409 00:17:52,530 --> 00:17:55,710 We gaan rond en rond en er is geen manier om de lus te breken. 410 00:17:55,710 --> 00:17:58,844 En elke lus in wezen heeft een manier om dat te doen. 411 00:17:58,844 --> 00:17:59,344 OK. 412 00:17:59,344 --> 00:18:03,030 413 00:18:03,030 --> 00:18:06,060 >> Ten tweede, velen van jullie in uw Mario psets 414 00:18:06,060 --> 00:18:08,910 Waarschijnlijk moest in dienst Dit soort lus. 415 00:18:08,910 --> 00:18:11,802 Het heet een do while lus. 416 00:18:11,802 --> 00:18:14,510 Allereerst, kan iemand mij vertellen wat het verschil tussen een do 417 00:18:14,510 --> 00:18:16,586 terwijl de lus en een tijdje lus? 418 00:18:16,586 --> 00:18:17,086 Ja. 419 00:18:17,086 --> 00:18:21,030 >> Publiek do while lus loopt in eerste instantie [onverstaanbaar]. 420 00:18:21,030 --> 00:18:22,120 >> ANDI Peng: Ja, precies. 421 00:18:22,120 --> 00:18:27,130 Dus een do while lus altijd doet wat is binnen de doe, binnen de beugels 422 00:18:27,130 --> 00:18:30,520 daar en doet die voorwaarde voor het controleren van the-- sorry, 423 00:18:30,520 --> 00:18:32,940 doet die code voor het controleren van de conditie. 424 00:18:32,940 --> 00:18:37,200 Dit is vooral relevant voor ons hier in deze klasse, omdat de meeste tijden 425 00:18:37,200 --> 00:18:41,450 gaan we willen vragen de gebruiker een soort van invoer. 426 00:18:41,450 --> 00:18:43,520 En dan, afhankelijk de input die ze ons geven, 427 00:18:43,520 --> 00:18:46,150 dan kunnen we evalueren, oh, doe we moeten ze opnieuw vragen? 428 00:18:46,150 --> 00:18:49,930 >> Dus in Mario, als de gebruiker je gaf een negatieve hoogte, bijvoorbeeld, 429 00:18:49,930 --> 00:18:52,990 je gaat naar de eerste prompt en doen wat er in zit. 430 00:18:52,990 --> 00:18:54,820 Dan zul je tijdens het controleren. 431 00:18:54,820 --> 00:18:57,570 Je weet wel, is negatief 1, is dat een positief getal? 432 00:18:57,570 --> 00:19:00,680 Als het niet, ik ga om te gaan terug en herhaal de do en herhaal 433 00:19:00,680 --> 00:19:03,950 en herhalen en herhalen totdat ze eindelijk geven u een nummer dat u wilt, 434 00:19:03,950 --> 00:19:07,002 dat we allemaal kunnen gebruiken in onze code. 435 00:19:07,002 --> 00:19:09,210 Het is vrij belangrijk voor wezen elk gebruikersinvoer. 436 00:19:09,210 --> 00:19:11,760 Ik kan u garanderen tijd in een PSET, waar 437 00:19:11,760 --> 00:19:15,070 vragen wij u om input een soort van code, we zijn 438 00:19:15,070 --> 00:19:17,540 waarschijnlijk gaan om u een testcase waarin we 439 00:19:17,540 --> 00:19:21,200 zal je iets ergs te geven dat ga proberen om de code te breken. 440 00:19:21,200 --> 00:19:25,044 >> Als we proberen om u te vragen om input van een integer, kunnen we geven je gewoon een string 441 00:19:25,044 --> 00:19:26,460 en zie hoe je zou omgaan met dat. 442 00:19:26,460 --> 00:19:30,610 Als we vragen jullie om een ​​leeftijd in dienst, We kunnen u een negatief getal te geven 443 00:19:30,610 --> 00:19:32,340 om te zien hoe je zou omgaan met dat. 444 00:19:32,340 --> 00:19:37,260 Maar zorg ervoor dat jullie testen voor gevallen waarin je niet het beste 445 00:19:37,260 --> 00:19:38,590 input, laten we maar zeggen. 446 00:19:38,590 --> 00:19:40,510 En een do while lus is vaak de beste 447 00:19:40,510 --> 00:19:45,260 manier om uw code zo te ontwerpen dat het voldoet aan die ruimte. 448 00:19:45,260 --> 00:19:45,760 OK. 449 00:19:45,760 --> 00:19:48,930 450 00:19:48,930 --> 00:19:49,470 >> OK. 451 00:19:49,470 --> 00:19:53,270 Dus dit is waarschijnlijk de meest complexe loop van de drie 452 00:19:53,270 --> 00:19:54,990 dat we hebben gekeken naar nu toe. 453 00:19:54,990 --> 00:19:56,689 En het lijkt heel eng op het eerste. 454 00:19:56,689 --> 00:19:59,730 Maar ik garandeer je, als je eenmaal jongens de knie krijgen van hoe je gebruik maken van een lus, 455 00:19:59,730 --> 00:20:03,320 het is een van de meest nuttige dingen, meest handige tools in je arsenaal 456 00:20:03,320 --> 00:20:05,300 voor verdere vooruitgang in deze klasse. 457 00:20:05,300 --> 00:20:09,920 >> Dus bijvoorbeeld in Scratch, we hadden dit heel eenvoudig blok 458 00:20:09,920 --> 00:20:13,180 dat net gezegd herhaal deze bepaalde zinnen bepaald aantal keren. 459 00:20:13,180 --> 00:20:16,260 By the way, SAJ-- dat is Scaz Andi Jason. 460 00:20:16,260 --> 00:20:18,740 We vaak ondertekenen onze e-mails SAJ. 461 00:20:18,740 --> 00:20:20,360 Als we zeggen SAJ, niet worden verward. 462 00:20:20,360 --> 00:20:22,630 Dat is gewoon ons. 463 00:20:22,630 --> 00:20:28,600 >> Dus in Scratch, konden we hebben een blok dat zei, herhaal ik hou SAJ! 464 00:20:28,600 --> 00:20:29,430 10 keer. 465 00:20:29,430 --> 00:20:30,130 Erg makkelijk. 466 00:20:30,130 --> 00:20:32,302 De logica hierachter is dat een heel, heel simpel, toch? 467 00:20:32,302 --> 00:20:35,260 Ik wil eerst gaan door de eerste de tijd en zien dat, voor de tweede keer 468 00:20:35,260 --> 00:20:38,510 en zie dat, de derde keer, enzovoort en zo verder, totdat je raakt tot 10. 469 00:20:38,510 --> 00:20:41,960 >> En de manier waarop we zouden vertegenwoordigen die in code is slechts door middel van een eenvoudige lus. 470 00:20:41,960 --> 00:20:45,440 Dus, je gaat te verklaren variabele hier, in casu 471 00:20:45,440 --> 00:20:46,349 met int. 472 00:20:46,349 --> 00:20:47,390 We gaan noem ik. 473 00:20:47,390 --> 00:20:49,500 We gaan het initialiseren op 0. 474 00:20:49,500 --> 00:20:52,490 En het stoppen editie zal worden i kleiner is dan 10. 475 00:20:52,490 --> 00:20:54,622 En de update zal worden i ++. 476 00:20:54,622 --> 00:20:57,750 >> En binnen de lus, het gaat uitvoeren totdat uiteindelijk 477 00:20:57,750 --> 00:21:01,490 raakt het einde van de Staat- waarin geval, het gaat om de lus te breken. 478 00:21:01,490 --> 00:21:04,600 Er moeten dingen zijn dat u jongens hebben al soort eerder gezien 479 00:21:04,600 --> 00:21:07,270 en had te doen voor uw probleem te stellen één. 480 00:21:07,270 --> 00:21:12,310 Heeft iemand enig vragen over voor lussen op dit moment? 481 00:21:12,310 --> 00:21:12,930 OK. 482 00:21:12,930 --> 00:21:13,430 Grote. 483 00:21:13,430 --> 00:21:17,520 484 00:21:17,520 --> 00:21:18,620 >> OK. 485 00:21:18,620 --> 00:21:22,270 Dus voor degenen onder u die hebt lees de PSET spec voor deze week 486 00:21:22,270 --> 00:21:27,690 weten dat we zullen moeten gebruiken iets genaamd ASCII en ASCII-tabel. 487 00:21:27,690 --> 00:21:32,380 David in lezing ging over het kort hoe computers essentially-- alles 488 00:21:32,380 --> 00:21:35,410 wordt gecodeerd in een computer in binair, in nullen en enen. 489 00:21:35,410 --> 00:21:39,740 En de manier waarop computers in staat zijn verschillende waarden daarnaast slaan 490 00:21:39,740 --> 00:21:44,360 om nullen en enen zijn door middel van het in kaart brengen die nummers aan andere cijfers vertegenwoordigen 491 00:21:44,360 --> 00:21:47,220 of in hoofdzaak andere personages. 492 00:21:47,220 --> 00:21:49,810 >> Dus in dit geval, een ASCII table-- alles wat het doet 493 00:21:49,810 --> 00:21:53,600 is kaart tekens, of tekens, nummers. 494 00:21:53,600 --> 00:21:57,385 Dus de broncode bestand in computer-- je het ziet, 495 00:21:57,385 --> 00:22:00,010 hey, een heleboel nullen en enen, nullen en enen, nullen en enen. 496 00:22:00,010 --> 00:22:02,350 Dat opgeslagen in het werkelijke geheugen van uw computer. 497 00:22:02,350 --> 00:22:04,750 >> Maar als we mensen willen communiceren met de computer, 498 00:22:04,750 --> 00:22:08,249 want-- we zeggen, bijvoorbeeld, als ik wil de hoofdletter A, 499 00:22:08,249 --> 00:22:10,540 Ik ga een manier nodig van het vertellen van de computer, oh, 500 00:22:10,540 --> 00:22:16,300 toen ik typ hoofdletter A, ik bedoel Deze vertegenwoordiging in binaire. 501 00:22:16,300 --> 00:22:22,260 >> En dus is de manier waarop we dat doen is gooide een willekeurige ding heet een ASCII-tabel, 502 00:22:22,260 --> 00:22:25,020 waarin wij mensen, als programmeurs, enige tijd geleden, 503 00:22:25,020 --> 00:22:28,660 we willekeurig besloten dat we gingen deze toewijzen 504 00:22:28,660 --> 00:22:30,960 waarden van deze karakters. 505 00:22:30,960 --> 00:22:32,720 >> Dus jullie kunnen deze online google. 506 00:22:32,720 --> 00:22:37,120 Ik denk dat er een link naar het in uw pset-- gewoon een ASCII kaart tafel, ASCII 507 00:22:37,120 --> 00:22:37,720 tafel. 508 00:22:37,720 --> 00:22:40,722 Het vertaalt gewoon binaire getallen in karakters. 509 00:22:40,722 --> 00:22:42,930 En het zal zeer worden handig voor uw probleem set 510 00:22:42,930 --> 00:22:45,470 wanneer u maar wilt berekenen iets of als u 511 00:22:45,470 --> 00:22:47,880 willen bepaalde weergeven tekens of getallen 512 00:22:47,880 --> 00:22:50,327 of manipuleren van bepaalde tekens. 513 00:22:50,327 --> 00:22:52,160 Het gaat om heel te zijn belangrijk dat u alle 514 00:22:52,160 --> 00:22:55,140 weet hoe je een ASCII-tabel te navigeren. 515 00:22:55,140 --> 00:23:01,260 >> Dus bijvoorbeeld de hoofdletter A wordt weergegeven door het getal 65. 516 00:23:01,260 --> 00:23:04,207 En de kleine letters a wordt vertegenwoordigd door 97. 517 00:23:04,207 --> 00:23:07,040 Dus het is belangrijk om te weten dat de verschil tussen de twee waarden 518 00:23:07,040 --> 00:23:08,320 is 32. 519 00:23:08,320 --> 00:23:13,210 Vaak, als je nodig hebt om te zetten van een naar de ander, het verschil is 32. 520 00:23:13,210 --> 00:23:15,710 En maak je geen zorgen als je kind bent verward deze eerst. 521 00:23:15,710 --> 00:23:20,230 We zullen gaan over hoe we zouden gebruiken deze in eigenlijke code. 522 00:23:20,230 --> 00:23:24,700 523 00:23:24,700 --> 00:23:26,380 >> OK. 524 00:23:26,380 --> 00:23:30,770 Dus voor degenen onder u met laptops uit, voel je vrij om te trekken van een ASCII-tabel, 525 00:23:30,770 --> 00:23:36,030 omdat deze zal waarschijnlijk vereisen jullie om te verwijzen 526 00:23:36,030 --> 00:23:38,100 wat de personages zijn. 527 00:23:38,100 --> 00:23:38,640 OK. 528 00:23:38,640 --> 00:23:42,840 >> Dus weten dat bepaalde tekens kaart naar bepaalde nummers, 529 00:23:42,840 --> 00:23:47,240 als ik alleen nog maar de eerste lijn van dat code-- de printf een, 530 00:23:47,240 --> 00:23:50,900 kleine letters a, minus hoofdletter A. Heeft iemand 531 00:23:50,900 --> 00:23:55,880 een gissing wat zou afdrukken van het scherm op dit moment? 532 00:23:55,880 --> 00:23:58,190 >> Dus in de eerste plaats, wat doet Kleine letters a vertegenwoordigen? 533 00:23:58,190 --> 00:24:00,990 Welk nummer is dat gecodeerd in de ASCII-tabel. 534 00:24:00,990 --> 00:24:01,490 Sorry? 535 00:24:01,490 --> 00:24:02,630 >> Publiek: 97? 536 00:24:02,630 --> 00:24:03,630 >> ANDI Peng: 97, geweldig. 537 00:24:03,630 --> 00:24:05,077 En wat is hoofdletter A? 538 00:24:05,077 --> 00:24:06,330 >> Publiek: 65. 539 00:24:06,330 --> 00:24:08,255 >> ANDI Peng: Dus wat is 97 minus 65? 540 00:24:08,255 --> 00:24:09,227 >> Publiek: 32. 541 00:24:09,227 --> 00:24:09,810 ANDI Peng: OK. 542 00:24:09,810 --> 00:24:13,530 Dus wat doen jullie denken gaat gebeuren als ik input die regel code 543 00:24:13,530 --> 00:24:14,670 in mijn computer? 544 00:24:14,670 --> 00:24:17,981 545 00:24:17,981 --> 00:24:19,896 >> PUBLIEK: [onverstaanbaar]. 546 00:24:19,896 --> 00:24:21,020 ANDI Peng: Sorry, spreken. 547 00:24:21,020 --> 00:24:22,520 Geen zorgen. 548 00:24:22,520 --> 00:24:25,750 Dit is een zeer veilige milieu, verminderd met de camera. 549 00:24:25,750 --> 00:24:27,550 We gaan allemaal to-- geen zorgen. 550 00:24:27,550 --> 00:24:30,940 Dat we gaan allemaal doen alsof het is gewoon ons chillen in deze kamer. 551 00:24:30,940 --> 00:24:31,480 Geen zorgen. 552 00:24:31,480 --> 00:24:33,410 Geen vraag is te dom. 553 00:24:33,410 --> 00:24:35,300 Geen antwoord is een dom antwoord. 554 00:24:35,300 --> 00:24:38,260 Ik ga waarschijnlijk om fouten te maken in de loop van mijn leer. 555 00:24:38,260 --> 00:24:40,740 Serieus, jongens, net flappen het uit. 556 00:24:40,740 --> 00:24:43,092 Heb vertrouwen in jezelf, weet je? 557 00:24:43,092 --> 00:24:43,800 Dus wat was dat? 558 00:24:43,800 --> 00:24:47,990 Wie zei dat laatste antwoord? 559 00:24:47,990 --> 00:24:48,540 OK. 560 00:24:48,540 --> 00:24:50,380 Roepen dat mooi en duidelijk. 561 00:24:50,380 --> 00:24:51,220 >> Publiek: 32? 562 00:24:51,220 --> 00:24:51,850 >> ANDI Peng: 32. 563 00:24:51,850 --> 00:24:54,141 Oké, laten we het uitvoeren van deze code en te zien als dat is wat er gebeurt. 564 00:24:54,141 --> 00:25:00,260 565 00:25:00,260 --> 00:25:00,760 OK. 566 00:25:00,760 --> 00:25:03,300 567 00:25:03,300 --> 00:25:06,360 Zodat jullie kunnen soort zie, de typische notatie ik heb 568 00:25:06,360 --> 00:25:12,250 opgezet hier voor hoe we zouden in dienst elke vorm van het programma in onze computer. 569 00:25:12,250 --> 00:25:14,770 We hebben onze functie binnen onze functie. 570 00:25:14,770 --> 00:25:17,265 Ik ga gewoon te kopiëren en plak deze regel code. 571 00:25:17,265 --> 00:25:21,082 572 00:25:21,082 --> 00:25:23,540 Wees ook voorzichtig wanneer u kerels kopieert en code plakken. 573 00:25:23,540 --> 00:25:28,750 Soms sommige marktdeelnemers niet goed plakken voorbij. 574 00:25:28,750 --> 00:25:31,397 In dat geval is de min teken was eigenlijk een streepje. 575 00:25:31,397 --> 00:25:32,980 En dus is de computer niet ophalen. 576 00:25:32,980 --> 00:25:35,870 Dus moest ik terug te gaan en fysiek overtypen dat. 577 00:25:35,870 --> 00:25:37,846 Wees voorzichtig bij het jullie doen dat. 578 00:25:37,846 --> 00:25:41,178 579 00:25:41,178 --> 00:25:42,660 >> OK. 580 00:25:42,660 --> 00:25:43,980 We gaan dit hier te lopen. 581 00:25:43,980 --> 00:25:45,670 Dus we gaan naar cd in onze section2. 582 00:25:45,670 --> 00:25:50,470 583 00:25:50,470 --> 00:25:52,030 Ik heb dit programma asciimath genoemd. 584 00:25:52,030 --> 00:25:55,690 Dus onthoud, wanneer we lopen elke programma, willen we eerst compileren 585 00:25:55,690 --> 00:25:57,150 door het uitvoeren van het door onze make. 586 00:25:57,150 --> 00:26:00,030 En dan willen we eigenlijk lopen het programma door het doen van dot-slash. 587 00:26:00,030 --> 00:26:01,280 Dus we gaan ./asciimath. 588 00:26:01,280 --> 00:26:05,780 589 00:26:05,780 --> 00:26:06,590 >> Juist, daar gaan we. 590 00:26:06,590 --> 00:26:07,410 En we zien 32. 591 00:26:07,410 --> 00:26:07,930 Goed gedaan. 592 00:26:07,930 --> 00:26:10,340 Je verdient een snoepje. 593 00:26:10,340 --> 00:26:11,160 Snoep voor je. 594 00:26:11,160 --> 00:26:11,900 Sorry. 595 00:26:11,900 --> 00:26:13,100 Prima. 596 00:26:13,100 --> 00:26:13,670 OK. 597 00:26:13,670 --> 00:26:18,070 Dus kunnen we terug naar ons voorbeeld gaan hier. 598 00:26:18,070 --> 00:26:23,530 599 00:26:23,530 --> 00:26:24,345 Aah, nee. 600 00:26:24,345 --> 00:26:29,147 601 00:26:29,147 --> 00:26:31,090 Aah. 602 00:26:31,090 --> 00:26:32,490 OK. 603 00:26:32,490 --> 00:26:34,610 Ik ga gewoon om het zo te houden. 604 00:26:34,610 --> 00:26:48,520 605 00:26:48,520 --> 00:26:51,240 OK. 606 00:26:51,240 --> 00:26:51,740 OK. 607 00:26:51,740 --> 00:26:55,340 Dus zoals jullie kunnen zien, kunnen we doen veel zeer interessante dingen, 608 00:26:55,340 --> 00:26:58,880 een groot aantal zeer leuke dingen, veel zeer ingewikkelde dingen met 609 00:26:58,880 --> 00:27:02,720 ASCII-tekens en cijfers. 610 00:27:02,720 --> 00:27:05,890 Zodra je naar beneden op lijn vijf, dat is veel om mee te volgen. 611 00:27:05,890 --> 00:27:07,640 We gaan niet om te gaan via de rubriek. 612 00:27:07,640 --> 00:27:10,720 Voel je vrij om, als je kunt, beredeneren het uit op papier 613 00:27:10,720 --> 00:27:14,750 eerst op wat er moet gebeuren wanneer u invoert zoals een reeks van waarden. 614 00:27:14,750 --> 00:27:19,720 Bijvoorbeeld, in die laatste regel, we z-- die een zekere number-- vertegenwoordigt 615 00:27:19,720 --> 00:27:24,740 a-- die ook staat voor een bepaalde number-- plus 1 modulos 26 616 00:27:24,740 --> 00:27:26,750 plus een kleine letters. 617 00:27:26,750 --> 00:27:29,220 >> Als jullie blijven lezen door deze, je 618 00:27:29,220 --> 00:27:34,009 kan een patroon komen in hoe we het manipuleren van de code. 619 00:27:34,009 --> 00:27:36,050 Ik beveel ten zeerste aanraden na sectie jullie allemaal 620 00:27:36,050 --> 00:27:38,160 jongens ga je gang en input die allemaal in je computer 621 00:27:38,160 --> 00:27:40,060 en zie wat voor soort nummers komen uit 622 00:27:40,060 --> 00:27:43,090 en redeneren door middel van waarom die zijn gebeuren, want voor je psets 623 00:27:43,090 --> 00:27:45,060 het zal heel belangrijk zijn voor u om te begrijpen 624 00:27:45,060 --> 00:27:47,132 waarom bepaalde dingen gebeuren. 625 00:27:47,132 --> 00:27:48,590 Al deze slides zal online zijn. 626 00:27:48,590 --> 00:27:51,510 Dus geen zorgen over pogingen om fysiek kopiëren aantekeningen. 627 00:27:51,510 --> 00:27:52,510 Online alles is. 628 00:27:52,510 --> 00:27:54,050 Dit gedeelte zelf zal online zijn. 629 00:27:54,050 --> 00:27:57,500 Al mijn broncode die Ik ben actief zal online zijn. 630 00:27:57,500 --> 00:27:58,180 Ja. 631 00:27:58,180 --> 00:27:59,430 Hebt u nog vragen? 632 00:27:59,430 --> 00:28:00,587 Publiek: Wat is modulos? 633 00:28:00,587 --> 00:28:01,170 ANDI Peng: OK. 634 00:28:01,170 --> 00:28:05,620 Dus modulo is een operator die gaat behoorlijk belangrijk om uw jongens PSET 635 00:28:05,620 --> 00:28:06,690 here. 636 00:28:06,690 --> 00:28:12,280 Dus de manier waarop exploitanten in C en in de programmering werk 637 00:28:12,280 --> 00:28:16,360 is dat je wat heet de scheiding symbool en de modulus symbool 638 00:28:16,360 --> 00:28:18,350 dat is net als het percentage teken. 639 00:28:18,350 --> 00:28:24,840 >> Dus in C, wanneer u een integer doen gedeeld door een geheel getal met een schuine streep, 640 00:28:24,840 --> 00:28:27,720 C heeft de neiging om te zagen korting op alle van de decimale punten, 641 00:28:27,720 --> 00:28:30,290 omdat een integer wil converteren naar een integer. 642 00:28:30,290 --> 00:28:33,550 Het is niet van plan te willen een dubbele te zijn met een bos van decimalen alles na. 643 00:28:33,550 --> 00:28:39,322 >> Dus als ik 3 gedeeld door 2, het gaat af te snijden van de 0,5 en geef je 1. 644 00:28:39,322 --> 00:28:41,530 Dus dat is iets om heel voorzichtig zijn wanneer je 645 00:28:41,530 --> 00:28:45,294 het doen van elke vorm van wiskunde in de programmering, is dat de nummers die je krijgt 646 00:28:45,294 --> 00:28:47,210 misschien niet de aantallen dat je denkt, 647 00:28:47,210 --> 00:28:50,190 Daarom afronding in laatste PSET is zo belangrijk. 648 00:28:50,190 --> 00:28:51,980 >> Modulo geeft je de rest. 649 00:28:51,980 --> 00:28:56,200 Dus bijvoorbeeld, als ik dat deed 3 modulo 2-- dus 3 procent teken 2-- 650 00:28:56,200 --> 00:28:58,020 het zou de rest van die geven. 651 00:28:58,020 --> 00:29:00,460 So 3 gedeeld door 2 is 1,5. 652 00:29:00,460 --> 00:29:01,410 Het is 1 rest van 1. 653 00:29:01,410 --> 00:29:04,600 Het zou geven u de 1, die is de rest van dat. 654 00:29:04,600 --> 00:29:07,361 >> Dus als jullie verhuizen door middel van de ASCII-tabel, 655 00:29:07,361 --> 00:29:09,735 modulo zullen uiteindelijk op een iets dat is heel belangrijk, 656 00:29:09,735 --> 00:29:11,240 en we zullen bespreken die later. 657 00:29:11,240 --> 00:29:17,750 658 00:29:17,750 --> 00:29:19,040 >> OK. 659 00:29:19,040 --> 00:29:27,300 Dus iets dat is vrij, vrij nieuw en vrij uniek 660 00:29:27,300 --> 00:29:31,920 dat we deze week hebben besproken wordt het begrip wat een matrix is. 661 00:29:31,920 --> 00:29:34,370 Dus is de eerste matrix type gegevensstructuur 662 00:29:34,370 --> 00:29:36,320 dat we gaan tegenkomen in deze klasse. 663 00:29:36,320 --> 00:29:40,010 Alle gegevensstructuur is een soort van willekeurige, 664 00:29:40,010 --> 00:29:43,370 letterlijk dingen achtige structuur dat wij als programmeurs hebben gecreëerd, 665 00:29:43,370 --> 00:29:47,890 dat we in onze code hebben gezet dat kunnen andere stukken code bevatten. 666 00:29:47,890 --> 00:29:51,090 >> Dus in die zin, een array-- denk aan het als een archiefkast, 667 00:29:51,090 --> 00:29:53,470 waar als je anders opent schappen van uw archiefkast, 668 00:29:53,470 --> 00:29:55,630 u toegang tot verschillende dingen. 669 00:29:55,630 --> 00:29:58,630 In het geheugen, wordt een array gewoon te doen het zelfde ding op je computer. 670 00:29:58,630 --> 00:30:01,730 U kunt verschillende blocks-- we noemen ze indices-- van een array. 671 00:30:01,730 --> 00:30:04,210 Het is net als een blok, een plank geheugen 672 00:30:04,210 --> 00:30:07,580 dat wij binnen hebben gemaakt uw computer die u kunt invoeren 673 00:30:07,580 --> 00:30:10,270 bepaalde dingen in de verschillende ruimtes. 674 00:30:10,270 --> 00:30:18,000 >> Dus met een array, u altijd te specify-- 675 00:30:18,000 --> 00:30:22,360 je moet opgeven verklaren een array in het volgende formaat. 676 00:30:22,360 --> 00:30:24,290 Je gaat eerst geef de soort data 677 00:30:24,290 --> 00:30:25,831 dat u wilt maken van de array. 678 00:30:25,831 --> 00:30:28,870 Als ik wil een array van integers, Ik ga int daar te zetten. 679 00:30:28,870 --> 00:30:32,079 Als ik wil een array van strings, Ik ga strings daar te zetten, 680 00:30:32,079 --> 00:30:34,995 de naam van de array, en vervolgens je gaat vierkante haken hebben. 681 00:30:34,995 --> 00:30:39,580 En in de vierkante haken, je bent naar de grootte van de array. 682 00:30:39,580 --> 00:30:42,900 >> Iets dat is echt belangrijk in gedachten te houden bij het maken van arrays is 683 00:30:42,900 --> 00:30:46,530 dat, als je eenmaal een te creëren array, kan die grootte niet veranderen. 684 00:30:46,530 --> 00:30:50,180 Dus als je weet dat op dit moment heb je een array van maat 10, 685 00:30:50,180 --> 00:30:54,550 je weet dat ik ga 10 cellen binnen of 10 indices binnen deze array, 686 00:30:54,550 --> 00:30:56,830 en het is nooit uit te breiden of te verminderen 687 00:30:56,830 --> 00:30:59,850 wat er ook gebeurt, en dat er momenteel slechts 10 blokken van de ruimte 688 00:30:59,850 --> 00:31:04,490 in uw geheugen dat kan opslaan toegewezen tot 10 dingen van wat je hebt gezet. 689 00:31:04,490 --> 00:31:08,790 >> Dus op deze wijze een matrix gegevenstype de gegevensstructuur die een array 690 00:31:08,790 --> 00:31:13,392 is heel anders dan sommige anderen we zullen worden die later in deze cursus. 691 00:31:13,392 --> 00:31:15,170 Ja. 692 00:31:15,170 --> 00:31:20,080 Bijvoorbeeld, als je wilde een array van grootte 3 die 693 00:31:20,080 --> 00:31:23,670 bevatte variabelen integer-- oh, sorry, van temperature-- 694 00:31:23,670 --> 00:31:25,640 en temperatuur van Uiteraard is een geheel getal. 695 00:31:25,640 --> 00:31:28,710 >> Zo zouden we int creëren, die de data type wat we willen opslaan. 696 00:31:28,710 --> 00:31:32,680 We gaan deze temperaturen bellen omwille van de nomenclatuur van naamgeving 697 00:31:32,680 --> 00:31:34,200 iets dat we allemaal begrijpen. 698 00:31:34,200 --> 00:31:35,900 En we gaan vierkante haken hebben. 699 00:31:35,900 --> 00:31:37,200 En we willen drie getallen. 700 00:31:37,200 --> 00:31:39,000 Dus we gaan zetten drie binnenkant van het. 701 00:31:39,000 --> 00:31:41,041 >> Iets dat is echt belangrijk om in gedachten te houden 702 00:31:41,041 --> 00:31:43,530 dat arrays nul geïndexeerd. 703 00:31:43,530 --> 00:31:46,410 Al dat betekent is dat je beginnen met de index van 0, 704 00:31:46,410 --> 00:31:49,800 en je omhoog lopen door de grootte van de matrix minus 1. 705 00:31:49,800 --> 00:31:52,730 Dus hier hebben we bijvoorbeeld hebben een scala van maat 3. 706 00:31:52,730 --> 00:31:54,680 Het gaat om te kunnen drie waarden houden. 707 00:31:54,680 --> 00:31:57,450 Maar de nummers die themselves-- nummer, de matrix, die index, 708 00:31:57,450 --> 00:32:00,271 de array, zijn 0 tot en met 2. 709 00:32:00,271 --> 00:32:03,520 Dus jongens, echt, echt voorzichtig bij je gaat door je problemen stellen 710 00:32:03,520 --> 00:32:06,500 en het creëren van een soort van matrix, omdat veel van de tijd is het 711 00:32:06,500 --> 00:32:08,490 echt, echt gemakkelijk om te vergeten dat. 712 00:32:08,490 --> 00:32:11,840 Ik eigenlijk niet de index van 3, dat ik op dit moment alleen 713 00:32:11,840 --> 00:32:13,130 hebben de index van 2. 714 00:32:13,130 --> 00:32:16,046 En als je probeert te toegang tot de derde index, 715 00:32:16,046 --> 00:32:18,170 het gaat om wat er riep de null-terminator. 716 00:32:18,170 --> 00:32:19,990 Het gaat niet om daadwerkelijk bestaan ​​in de array. 717 00:32:19,990 --> 00:32:21,781 En de computer is niet van plan te willen dat. 718 00:32:21,781 --> 00:32:24,570 Dus wees voorzichtig wanneer u toegang tot dingen gewoon 719 00:32:24,570 --> 00:32:28,070 om ervoor te zorgen dat u niet vergeten dat arrays nul geïndexeerd. 720 00:32:28,070 --> 00:32:28,880 >> OK. 721 00:32:28,880 --> 00:32:34,030 Dus het eerste voorbeeld is gewoon een manier om een ​​array. 722 00:32:34,030 --> 00:32:36,790 Het tweede voorbeeld dat ik heb Hieronder is slechts een aparte manier 723 00:32:36,790 --> 00:32:40,210 creëren wat hetzelfde data structuur die we net hebben ingevoerd. 724 00:32:40,210 --> 00:32:44,347 Dus in plaats van fysiek running door en de invoering van de temperatuur van 0 725 00:32:44,347 --> 00:32:47,180 gelijk aan wat dan ook, de temperatuur 1 gelijk aan wat dan ook, de temperatuur 2 gelijken 726 00:32:47,180 --> 00:32:50,950 wat dan ook, ik kon gewoon eigenlijk het allemaal rechtstreeks te maken op één lijn 727 00:32:50,950 --> 00:32:53,010 in temperatuur vierkante haakjes gelijk. 728 00:32:53,010 --> 00:32:56,536 >> En de mededeling in dit geval, hoeft u niet om aan te geven hoe groot de array is, 729 00:32:56,536 --> 00:32:59,160 omdat de computer gaat ga door en zie dat er 730 00:32:59,160 --> 00:33:01,570 drie elementen die accolades. 731 00:33:01,570 --> 00:33:04,000 En het gaat om te weten, OK, Ik heb een array van grootte 3. 732 00:33:04,000 --> 00:33:07,440 Je bent niet gaat nodig hebben om ingang is op de volgende manier. 733 00:33:07,440 --> 00:33:10,170 >> En ook, ja, op die manier. 734 00:33:10,170 --> 00:33:12,610 Heeft iemand vragen over hoe we arrays 735 00:33:12,610 --> 00:33:17,391 of hoe de structuur van een matrix werkt? 736 00:33:17,391 --> 00:33:17,890 Ja. 737 00:33:17,890 --> 00:33:18,806 >> PUBLIEK: [onverstaanbaar]? 738 00:33:18,806 --> 00:33:21,649 739 00:33:21,649 --> 00:33:22,690 ANDI Peng: Ja, precies. 740 00:33:22,690 --> 00:33:26,150 Dus als je te verklaren en te initialiseren een array van de volgende werkwijze, 741 00:33:26,150 --> 00:33:28,477 dat is de tweede manier, u kunt gewoon laten deze. 742 00:33:28,477 --> 00:33:30,310 En de computer weet automatisch dat het 743 00:33:30,310 --> 00:33:33,950 moet het aantal elementen tellen zijn in die accolades, gescheiden 744 00:33:33,950 --> 00:33:34,930 door komma's. 745 00:33:34,930 --> 00:33:37,517 >> Dus hier zien ze 65, 87, 30. 746 00:33:37,517 --> 00:33:39,600 Zodat de computer weet, oh, er zijn drie getallen. 747 00:33:39,600 --> 00:33:45,960 Ik weet dat een array naam creëren temperatuur drie elementen daarin. 748 00:33:45,960 --> 00:33:46,590 Goede vraag. 749 00:33:46,590 --> 00:33:47,090 Ja. 750 00:33:47,090 --> 00:33:51,590 >> Publiek: Is het niet mogelijk om te creëren een array met verschillende types van data 751 00:33:51,590 --> 00:33:53,021 die kunnen worden opgenomen in het? 752 00:33:53,021 --> 00:33:56,746 Bijvoorbeeld, met integers [onhoorbaar] 753 00:33:56,746 --> 00:33:59,120 ANDI Peng: Voor de toepassing van deze klasse, nee, juist nu. 754 00:33:59,120 --> 00:34:03,070 Wanneer u een data maken structureren als een array, 755 00:34:03,070 --> 00:34:04,990 vertel je bent de computer, hey, ik heb je nodig 756 00:34:04,990 --> 00:34:08,159 om deze veel wijzen geheugen van mijn harde schijf, 757 00:34:08,159 --> 00:34:10,690 waarbij elke cel wordt een aantal bits. 758 00:34:10,690 --> 00:34:13,429 >> Vergeet niet dat we geleerd hebben in week zero dat verschillende data 759 00:34:13,429 --> 00:34:15,300 types hebben verschillende maten? 760 00:34:15,300 --> 00:34:17,630 Dus bijvoorbeeld, een koord een ander bedrag 761 00:34:17,630 --> 00:34:20,719 ruimte dan een char, die een andere hoeveelheid ruimte 762 00:34:20,719 --> 00:34:21,830 uit een integer. 763 00:34:21,830 --> 00:34:25,534 En dus als je niet opgeeft en je mix en match welke soorten variabelen 764 00:34:25,534 --> 00:34:27,659 je hebt, de computer gaan erg in de war zijn. 765 00:34:27,659 --> 00:34:29,950 En het gaat niet om te weten hoeveel geheugen om u te geven. 766 00:34:29,950 --> 00:34:32,480 Dus voor doeleinden van rechtswege nu, computers kan alleen 767 00:34:32,480 --> 00:34:36,120 herkennen type van een array. 768 00:34:36,120 --> 00:34:37,940 Goede vraag. 769 00:34:37,940 --> 00:34:38,440 OK. 770 00:34:38,440 --> 00:34:45,179 771 00:34:45,179 --> 00:34:47,120 >> Zo natuurlijk, de tweede vraag die wij hebben 772 00:34:47,120 --> 00:34:50,760 is, nou ja, nu we een hebt gemaakt array en we hebben al deze dingen te zetten 773 00:34:50,760 --> 00:34:54,190 in de array, hoe zijn we zal in staat zijn om toegang te krijgen? 774 00:34:54,190 --> 00:34:59,710 Dus de typische structuur die we altijd toegang krijgen tot een array is onze mooie lus. 775 00:34:59,710 --> 00:35:03,830 Ik beloof jullie dat we zijn het zien van een heleboel deze kerel hier. 776 00:35:03,830 --> 00:35:06,470 >> In wezen, wanneer u maar wilt input waarden in een array 777 00:35:06,470 --> 00:35:09,940 of wilt u hen de toegang, de beste manier om dat te doen is een lus, 778 00:35:09,940 --> 00:35:13,730 want in een lus, u hoe vaak je bent 779 00:35:13,730 --> 00:35:17,290 gaat te willen lopen door de array, omdat je een stop editie, toch? 780 00:35:17,290 --> 00:35:19,680 En elke keer dat u door middel van, kunt u toegang 781 00:35:19,680 --> 00:35:21,310 een ander element van de array. 782 00:35:21,310 --> 00:35:26,920 >> Ook dit is een reden waarom gewoonlijk we beginnen onze voor lussen aan de waarde 0, 783 00:35:26,920 --> 00:35:30,080 want als je toegang tot arrays, u toegang tot het nul-index. 784 00:35:30,080 --> 00:35:32,070 En zo parallellen heel mooi. 785 00:35:32,070 --> 00:35:35,295 Jullie kunnen hebben willen schrijven voor int i is gelijk aan 1. 786 00:35:35,295 --> 00:35:37,330 i kleiner is dan of gelijk is aan 3. 787 00:35:37,330 --> 00:35:39,890 >> Het zou niet goed werken als hier goed, omdat je alleen 788 00:35:39,890 --> 00:35:42,010 elementen heeft van 0, 1 en 2. 789 00:35:42,010 --> 00:35:45,815 En dus als je om te beginnen je i op element 1, 2 en 3, 790 00:35:45,815 --> 00:35:48,440 je gaat eindigen running buiten de grenzen van de array, 791 00:35:48,440 --> 00:35:50,440 en slechte dingen gaan gebeuren. 792 00:35:50,440 --> 00:35:54,480 >> Dus ik hoop dat jullie zien de segue waarom in de eerdere klassen 793 00:35:54,480 --> 00:35:58,560 We leerden jullie hoe te lopen en formatteren een lus van de manier waarop we waren. 794 00:35:58,560 --> 00:36:01,900 Het is omdat, nu hebben we overgegaan in arrays, 795 00:36:01,900 --> 00:36:06,760 kunt u zien waarom de 0 leent zelf erg mooi om toegang. 796 00:36:06,760 --> 00:36:09,880 >> Dus de manier waarop we dat doen is dat-- ik ben gewoon uit te drukken hier omwille 797 00:36:09,880 --> 00:36:10,830 afdrukken van het uit. 798 00:36:10,830 --> 00:36:13,750 Maar ik heb mijn placeholder, komma. 799 00:36:13,750 --> 00:36:15,645 En de eigenlijke ontsluiting deel gebeurt. 800 00:36:15,645 --> 00:36:17,520 De naam van de array temperatuur werd genoemd. 801 00:36:17,520 --> 00:36:21,570 Dus het is de temperatuur en de i-de element van de array. 802 00:36:21,570 --> 00:36:24,400 >> Zodat de lus loopt door, het gaat om te beginnen bij 0. 803 00:36:24,400 --> 00:36:27,640 Het gaat om een ​​afdruk van de 0 index van deze array. 804 00:36:27,640 --> 00:36:29,599 Dan is het ter perse gaan het eerste element. 805 00:36:29,599 --> 00:36:31,431 Dan is het ter perse gaan de tweede. 806 00:36:31,431 --> 00:36:32,880 En dan gaan we breken. 807 00:36:32,880 --> 00:36:36,718 Is iedereen duidelijk Hoe dat gebeurt? 808 00:36:36,718 --> 00:36:37,217 Grote. 809 00:36:37,217 --> 00:36:43,230 810 00:36:43,230 --> 00:36:44,100 >> Prima. 811 00:36:44,100 --> 00:36:47,270 Dus hier hebben we een manier van zeggen, als we niet willen 812 00:36:47,270 --> 00:36:50,020 hard-code in-- mij als programmeur. 813 00:36:50,020 --> 00:36:53,320 Ik wilde niet fysiek zet in elk individueel element 814 00:36:53,320 --> 00:36:54,020 van deze array. 815 00:36:54,020 --> 00:36:56,500 Als ik wilde in plaats de gebruikersinvoer waarden 816 00:36:56,500 --> 00:36:58,100 wat is de beste manier om dat te doen? 817 00:36:58,100 --> 00:37:00,920 >> Nou, hier heb ik gemaakt deze mooie functie, 818 00:37:00,920 --> 00:37:03,560 waar kan ik verklaren een array. 819 00:37:03,560 --> 00:37:06,210 Dus int scores-- laten gewoon zeggen dat we willen maken 820 00:37:06,210 --> 00:37:10,660 een array dat de kwaliteiten van alle 18 gehouden van de studenten hier in deze sectie. 821 00:37:10,660 --> 00:37:12,670 Ik denk dat we een beetje gekregen meer dan 18 kinderen van vandaag. 822 00:37:12,670 --> 00:37:16,460 Maar om het voorbeeld van, laten we aannemen dat we hadden 18. 823 00:37:16,460 --> 00:37:21,580 Ik zou een array naam scoort met creëren int omdat scores, natuurlijk 824 00:37:21,580 --> 00:37:22,987 getallen. 825 00:37:22,987 --> 00:37:24,820 En ik ga moeten 18 vierkante haken, 826 00:37:24,820 --> 00:37:29,900 want dat is hoeveel studenten I willen in staat zijn om scores van slaan. 827 00:37:29,900 --> 00:37:32,206 >> En de manier waarop ik zou bevolken de array is dat ik zou 828 00:37:32,206 --> 00:37:35,572 voer het uit door middel van een lus, van Natuurlijk, waarbij 0 0 mijn index. 829 00:37:35,572 --> 00:37:38,030 En vervolgens met 18 zijn mijn stoppen editie, want er is 830 00:37:38,030 --> 00:37:39,690 18 elementen in de array. 831 00:37:39,690 --> 00:37:44,620 En dan ga ik printf doen, Enter scoren voor student-- yada yada yada. 832 00:37:44,620 --> 00:37:51,171 >> Kan iemand mij vertellen waarom ik hier ben afdrukken i plus 1 en niet ik? 833 00:37:51,171 --> 00:37:52,920 Het is een soort van een truc vraag, niet echt. 834 00:37:52,920 --> 00:37:56,020 Het maakt eigenlijk niet fysiek van invloed op de werking van de code. 835 00:37:56,020 --> 00:37:56,520 Ja. 836 00:37:56,520 --> 00:37:57,909 >> PUBLIEK: [onverstaanbaar] 0? 837 00:37:57,909 --> 00:37:58,950 ANDI Peng: Ja, precies. 838 00:37:58,950 --> 00:38:02,620 Het is een beetje lastig om te zeggen, he, je bent de 0 student in deze klasse. 839 00:38:02,620 --> 00:38:03,780 Het is een beetje raar. 840 00:38:03,780 --> 00:38:08,340 Dus wij, als mens, niet echt om na te denken over hoe computers denken. 841 00:38:08,340 --> 00:38:10,930 Dus hoewel in de computer, het opslaan van waarden 842 00:38:10,930 --> 00:38:13,310 in de 0-ste index bij We zijn mensen, we doen niet echt 843 00:38:13,310 --> 00:38:15,520 willen verwijzen naar onszelf als nul. 844 00:38:15,520 --> 00:38:18,119 Dus toen ik printen alleen dat, Ik ga om af te drukken en voeg 845 00:38:18,119 --> 00:38:19,410 1 alleen voor de duidelijkheid. 846 00:38:19,410 --> 00:38:22,447 Dus toen ik afdrukken, ik ga worden kunnen studenten afdrukken 1 tot en met 18. 847 00:38:22,447 --> 00:38:24,530 Het doet er niet echt invloed de werking van de code 848 00:38:24,530 --> 00:38:27,110 op welke wijze, de manier waarop ik te drukken. 849 00:38:27,110 --> 00:38:30,380 >> Maar wees voorzichtig als je eigenlijk de toegang tot array. 850 00:38:30,380 --> 00:38:32,780 Als je de scores i, merkt hier Ik ben eigenlijk 851 00:38:32,780 --> 00:38:38,200 de toegang tot 0-index en geen 1 plus 0-- of 1 plus 1, 852 00:38:38,200 --> 00:38:45,530 in dit geval dus index dat het eigenlijk duidelijk. 853 00:38:45,530 --> 00:38:48,870 Is iedereen soort OK op hoe dit wordt uitgevoerd door middel van 854 00:38:48,870 --> 00:38:51,470 en bij elke index Ik ben zetten een waarde in de array 855 00:38:51,470 --> 00:38:55,340 en het creëren van een array met 18 nummers de gebruiker zal invoeren? 856 00:38:55,340 --> 00:38:58,780 857 00:38:58,780 --> 00:38:59,821 OK. 858 00:38:59,821 --> 00:39:00,321 Cool. 859 00:39:00,321 --> 00:39:05,380 860 00:39:05,380 --> 00:39:07,400 >> OK. 861 00:39:07,400 --> 00:39:12,220 We gaan nu in iets dat is vrij relevant voor dit stuk zo goed opgezet. 862 00:39:12,220 --> 00:39:15,020 Ik weet in collegezaal, David-- sorry, u een vraag had? 863 00:39:15,020 --> 00:39:16,840 >> Publiek: Kan je het vergroten? 864 00:39:16,840 --> 00:39:18,080 >> ANDI Peng: Ja, dus ik probeerde. 865 00:39:18,080 --> 00:39:18,788 Maar ik weet het niet. 866 00:39:18,788 --> 00:39:21,437 Om een ​​of andere reden, dit versie van PowerPoint 867 00:39:21,437 --> 00:39:23,270 is echt niet werken goed met de display. 868 00:39:23,270 --> 00:39:25,260 Dus we gaan gewoon te houden als dit. 869 00:39:25,260 --> 00:39:27,280 Al deze zal online worden geüpload. 870 00:39:27,280 --> 00:39:28,218 Sorry jongens. 871 00:39:28,218 --> 00:39:30,090 Ja. 872 00:39:30,090 --> 00:39:30,980 OK. 873 00:39:30,980 --> 00:39:35,530 >> Dus we kunnen ook strings. 874 00:39:35,530 --> 00:39:39,320 Dus als jullie eigenlijk notice-- I weet Rob ging dit in die lezing 875 00:39:39,320 --> 00:39:43,652 dat hij did-- een tekenreeks daadwerkelijk slechts een array van karakters, 876 00:39:43,652 --> 00:39:44,860 Als je erover nadenkt, toch? 877 00:39:44,860 --> 00:39:47,500 Een string is een naam of een zin of een woord, toch? 878 00:39:47,500 --> 00:39:52,975 >> Als ik naar een string met de naam maken Andi-- gewoon mijn naam, A-N-D-I. 879 00:39:52,975 --> 00:39:55,460 Je denkt aan dat als slechts een variabele. 880 00:39:55,460 --> 00:39:58,630 Maar eigenlijk, het is afgebroken in slechts een array van chars. 881 00:39:58,630 --> 00:40:01,910 Dus het heeft een teken van Opgeslagen in een array waarde. 882 00:40:01,910 --> 00:40:05,420 Het heeft een karakter van n opgeslagen in de tweede index, enzovoort, enzovoort. 883 00:40:05,420 --> 00:40:08,660 >> Dus zodanig, we eigenlijk dit soort 884 00:40:08,660 --> 00:40:10,970 structuur in plaats voor onze snaren. 885 00:40:10,970 --> 00:40:14,660 Dus hier, als ik het invoeren van de Het woord "eten" - dus touwtje woord evenaart 886 00:40:14,660 --> 00:40:15,540 krijgen string. 887 00:40:15,540 --> 00:40:19,260 Als ik ingang van het woord "eten", dat fysiek de manier waarop mijn computer 888 00:40:19,260 --> 00:40:21,870 opslaat die string in mijn geheugen. 889 00:40:21,870 --> 00:40:27,140 >> En als ik wilde lopen door dat en printen die zo out-- voor in i 890 00:40:27,140 --> 00:40:30,890 gelijk is aan nul, herinner me, in collegezaal, we bedekt iets dat strlen heet, 891 00:40:30,890 --> 00:40:32,990 of de lengte van de snaar. 892 00:40:32,990 --> 00:40:36,520 Omdat ik niet echt weten hoe groot de array 893 00:40:36,520 --> 00:40:38,210 van welke inputting-- de gebruiker 894 00:40:38,210 --> 00:40:40,370 >> Bijvoorbeeld, ingevoerde I het woord "eten," en ik weet 895 00:40:40,370 --> 00:40:41,870 dat is drie tekens lang zijn, toch? 896 00:40:41,870 --> 00:40:44,700 Dus ik kon in een drie daar te zetten en alles komt goed. 897 00:40:44,700 --> 00:40:49,290 Maar als je input van de gebruiker iets dat is een ander aantal waarden, 898 00:40:49,290 --> 00:40:52,760 je gaat niet in staat zijn om echt weten dat wanneer u uw code te programmeren. 899 00:40:52,760 --> 00:40:56,040 >> Dus de manier waarop we omgaan met testcases als dat is dat we iets 900 00:40:56,040 --> 00:41:00,070 strlen genaamd, dat is gewoon een functie dat vertelt u hoe lang een string is. 901 00:41:00,070 --> 00:41:02,080 Dus strlen van het woord. 902 00:41:02,080 --> 00:41:03,470 Mijn woord is eten. 903 00:41:03,470 --> 00:41:05,990 n gelijk strlen van het woord. 904 00:41:05,990 --> 00:41:08,930 Kan iemand mij vertellen wat dat waarde eigenlijk is daar? 905 00:41:08,930 --> 00:41:12,550 Wat doet n recht vertegenwoordigt Nu, in dit voorbeeld, als ik eten? 906 00:41:12,550 --> 00:41:13,530 >> Publiek: 3. 907 00:41:13,530 --> 00:41:14,520 >> ANDI Peng: 3, precies. 908 00:41:14,520 --> 00:41:18,820 Dus we hebben voor int i gelijk nul, n gelijk is aan 3, wezen. 909 00:41:18,820 --> 00:41:22,355 En ik zal lopen totdat het is minder dan 3i ++. 910 00:41:22,355 --> 00:41:24,980 En het gaat in wezen gaan door en doe hetzelfde. 911 00:41:24,980 --> 00:41:26,979 Het gaat om uit te printen elke waarde en geven u 912 00:41:26,979 --> 00:41:29,700 E-A-T. Het is gewoon een aanduiding andere manier van schrijven. 913 00:41:29,700 --> 00:41:31,170 Dat zal zeer nuttig zijn. 914 00:41:31,170 --> 00:41:31,670 Ja. 915 00:41:31,670 --> 00:41:35,174 Publiek: Wat is de voordelen van zetten de n gelijk strlen woord binnen dat 916 00:41:35,174 --> 00:41:36,894 lus [onverstaanbaar]? 917 00:41:36,894 --> 00:41:37,560 ANDI PENG: Ja. 918 00:41:37,560 --> 00:41:44,880 Dus als ik to-- zeggen, bijvoorbeeld, als ik om dat te doen en dan 919 00:41:44,880 --> 00:41:51,935 doen-- oop-- dat, in mijn code, het zou eigenlijk moeten doen, zoals het zelfde ding. 920 00:41:51,935 --> 00:41:55,060 Echter, de manier waarop David verklaard het tijdens college, als iemand van jullie 921 00:41:55,060 --> 00:41:57,854 herinneren, was dat, mensen, programmeurs, 922 00:41:57,854 --> 00:42:00,270 we echt proberen te programmeren onze code, zodat onze computer 923 00:42:00,270 --> 00:42:04,070 zo klein mogelijk te werken, zodat dat onze code is zeer efficiënt. 924 00:42:04,070 --> 00:42:06,850 >> Dus als ik had dat er, wat zou gebeuren door mijn lus 925 00:42:06,850 --> 00:42:10,790 is dat ik voor het eerst zou verklaren een variabele met de naam i gaat worden 0. 926 00:42:10,790 --> 00:42:13,350 Ik ga om te controleren, oh, wat is de strlen van het woord? 927 00:42:13,350 --> 00:42:15,000 Oh, de strlen is 3. 928 00:42:15,000 --> 00:42:16,191 Dus ik minder dan drie? 929 00:42:16,191 --> 00:42:16,690 Ja dat is zo. 930 00:42:16,690 --> 00:42:17,870 Ik ga om te draaien. 931 00:42:17,870 --> 00:42:21,130 >> En dan is de tweede keer terug rond de lus, ik ga ik verhogen. 932 00:42:21,130 --> 00:42:22,550 i zal een. 933 00:42:22,550 --> 00:42:25,600 En ik zal controleren, oh, maar wat is het strlen van het woord? 934 00:42:25,600 --> 00:42:26,839 Oh, het is drie. 935 00:42:26,839 --> 00:42:29,880 En doet dat soort verspilling lijken, elke keer dat je door de lus lopen, 936 00:42:29,880 --> 00:42:33,340 te controleren van de functie, hoewel de strlen van het woord 937 00:42:33,340 --> 00:42:35,490 nooit echt verandert? 938 00:42:35,490 --> 00:42:38,590 >> Dus het is extra vermogen voor een computer. 939 00:42:38,590 --> 00:42:42,180 Wanneer je begint te praten over dingen die miljarden en miljarden 940 00:42:42,180 --> 00:42:44,431 en miljarden plaatsen lang, stel uw computer 941 00:42:44,431 --> 00:42:47,430 hebben om fysiek te gaan door en Controleer dat alles elke keer weer. 942 00:42:47,430 --> 00:42:53,170 Dat is de reden waarom, om gewoon te maken omwille van de efficiëntie, 943 00:42:53,170 --> 00:42:57,620 hebben we de neiging om dit gewoon doen, omdat op deze manier zijn we alleen 944 00:42:57,620 --> 00:42:59,850 aanroepen van de functie eenmaal in het begin, 945 00:42:59,850 --> 00:43:01,766 en dat elke keer gaat door het gaat 946 00:43:01,766 --> 00:43:03,789 de waarde op te slaan 3 er zijn, dat je niet 947 00:43:03,789 --> 00:43:05,330 moet voortdurend controleren elke keer. 948 00:43:05,330 --> 00:43:05,743 Ja. 949 00:43:05,743 --> 00:43:06,409 >> Publiek: Sorry. 950 00:43:06,409 --> 00:43:09,070 Net [onverstaanbaar]. 951 00:43:09,070 --> 00:43:13,985 Kon je int n gelijk strlen en zet dat boven het buiten de lus 952 00:43:13,985 --> 00:43:15,364 ook? 953 00:43:15,364 --> 00:43:16,030 ANDI PENG: Ja. 954 00:43:16,030 --> 00:43:17,100 Je zou kunnen doen, absoluut. 955 00:43:17,100 --> 00:43:19,970 De reden dat we hebben het in hier omdat de manier waarop een lus werkt 956 00:43:19,970 --> 00:43:23,500 is dat het heet een lokale variabele in de zin 957 00:43:23,500 --> 00:43:26,150 dat alles wat je bent het creëren van de binnenkant van de lus 958 00:43:26,150 --> 00:43:27,890 alleen bestaat de binnenkant van de lus. 959 00:43:27,890 --> 00:43:31,530 >> Alleen zodat de variabele i bestaat in deze haken. 960 00:43:31,530 --> 00:43:35,260 En hier de variabelen n ook bestaat alleen in die tussen haakjes. 961 00:43:35,260 --> 00:43:39,350 Dus als je om te gebruiken strlen van woord meerdere keren beneden, 962 00:43:39,350 --> 00:43:42,230 absoluut de beste manier om dat te doen zou zijn om het te verklaren de top 963 00:43:42,230 --> 00:43:43,563 zodat u niet hoeft te keer te doen. 964 00:43:43,563 --> 00:43:45,420 Ja. 965 00:43:45,420 --> 00:43:47,670 Publiek: Waarom heb je een nieuwe regel na het percentage 966 00:43:47,670 --> 00:43:51,300 te zien als je wilt om alle zetten de letters ernaast scheiden? 967 00:43:51,300 --> 00:43:54,140 >> ANDI Peng: Oh, ik wilde print ze allemaal op elke lijn. 968 00:43:54,140 --> 00:43:54,890 Het maakt niet uit. 969 00:43:54,890 --> 00:43:55,890 Ja, het is een opmaak. 970 00:43:55,890 --> 00:43:57,181 Dat is een goede vraag, dat wel. 971 00:43:57,181 --> 00:43:59,360 Ja, als ik wilde afdrukken het allemaal op één lijn, 972 00:43:59,360 --> 00:44:02,731 Ik zou niet in het dashboard. 973 00:44:02,731 --> 00:44:03,230 OK. 974 00:44:03,230 --> 00:44:06,880 Iedereen goed? 975 00:44:06,880 --> 00:44:07,500 OK. 976 00:44:07,500 --> 00:44:08,000 Cool. 977 00:44:08,000 --> 00:44:12,080 978 00:44:12,080 --> 00:44:14,750 >> Dus ik denk dat ik heb genoeg gepraat. 979 00:44:14,750 --> 00:44:20,040 Jullie aan de beurt om door de code en vertel me wat er mis is hier. 980 00:44:20,040 --> 00:44:21,560 Waar is het fout? 981 00:44:21,560 --> 00:44:26,920 Dus zoals je kunt zien, heb ik verklaard nieuwe array van het type tekenreeks met de naam klasse. 982 00:44:26,920 --> 00:44:30,220 En ik heb ingevoerd Sam, Jess en Kim in. 983 00:44:30,220 --> 00:44:33,400 En ik ben een poging om uit te printen alle elementen van de array. 984 00:44:33,400 --> 00:44:36,796 Kan iemand mij vertellen waarom dit gaat me problemen geven? 985 00:44:36,796 --> 00:44:39,320 Ik zal jullie geven 10 seconden na te denken over dit. 986 00:44:39,320 --> 00:44:55,490 987 00:44:55,490 --> 00:44:56,619 >> OK. 988 00:44:56,619 --> 00:44:57,118 Ja? 989 00:44:57,118 --> 00:45:01,972 >> PUBLIEK: Is de linker centrum gelijk aan 3 of [onhoorbaar] 990 00:45:01,972 --> 00:45:02,680 ANDI Peng: Recht. 991 00:45:02,680 --> 00:45:06,784 Dus hoe vaak is dit eigenlijk gaan lopen door deze lus? 992 00:45:06,784 --> 00:45:07,620 >> Publiek: Four. 993 00:45:07,620 --> 00:45:08,070 >> ANDI PENG: Precies. 994 00:45:08,070 --> 00:45:09,445 Het gaat om door vier keer. 995 00:45:09,445 --> 00:45:12,250 Het gaat om door te lopen bij 0, 1, 2 en 3, 996 00:45:12,250 --> 00:45:15,200 omdat hun element i kleiner is dan of gelijk aan 3. 997 00:45:15,200 --> 00:45:16,960 Het is niet van plan om te stoppen als het 2. 998 00:45:16,960 --> 00:45:18,800 Het zal houden gaan tot het hits 3. 999 00:45:18,800 --> 00:45:21,720 En zoals we weten, is er slechts drie elementen in onze huidige array. 1000 00:45:21,720 --> 00:45:27,260 >> Als we proberen om toegang te krijgen tot het vierde element of de index van 3, 1001 00:45:27,260 --> 00:45:30,357 je gaat om ergens te raken geheugen dat niet bestaat. 1002 00:45:30,357 --> 00:45:31,690 Het heet de null-terminator. 1003 00:45:31,690 --> 00:45:32,856 Niets gaat om daar te zijn. 1004 00:45:32,856 --> 00:45:35,324 Uw computer is niet van plan te zijn erg blij met je. 1005 00:45:35,324 --> 00:45:36,170 Ja. 1006 00:45:36,170 --> 00:45:38,430 Heeft iemand vragen over waarom dat gebeurde? 1007 00:45:38,430 --> 00:45:39,679 Dat is een gemeenschappelijke ruimte om te vermijden. 1008 00:45:39,679 --> 00:45:40,712 Ja. 1009 00:45:40,712 --> 00:45:45,777 >> Publiek: Is niet de eerste Schuif ook een reeks 2? 1010 00:45:45,777 --> 00:45:46,360 ANDI PENG: No. 1011 00:45:46,360 --> 00:45:49,610 Dus in wezen als je maakt een array, 1012 00:45:49,610 --> 00:45:51,540 dat beugel rechts daar alle number-- 1013 00:45:51,540 --> 00:45:53,480 het is je te vertellen is hoe veel elementen die ik heb. 1014 00:45:53,480 --> 00:45:55,840 Het is eigenlijk niet te vertellen me de indexen van alles. 1015 00:45:55,840 --> 00:45:58,760 Dus in dit geval, ik weet dat ik wil schrijven met drie plaatsen, 1016 00:45:58,760 --> 00:46:02,690 met drie fysieke plaatsen Houd wat ik wil vasthouden. 1017 00:46:02,690 --> 00:46:04,510 Dus dat is de reden waarom de nummer drie is er. 1018 00:46:04,510 --> 00:46:06,560 Echter, als ik wilde daadwerkelijk toegang toe, 1019 00:46:06,560 --> 00:46:11,220 als ik wilde zeggen, printf klasse beugel nummer, dan 1020 00:46:11,220 --> 00:46:14,560 je gaat om daadwerkelijk zetten de fysieke index daar. 1021 00:46:14,560 --> 00:46:16,330 Ja, goede vraag. 1022 00:46:16,330 --> 00:46:20,065 >> Publiek: Dus is de fysieke index hoort te zijn [onverstaanbaar]? 1023 00:46:20,065 --> 00:46:20,940 ANDI PENG: Het spijt me. 1024 00:46:20,940 --> 00:46:21,500 Kunt u spreken een beetje? 1025 00:46:21,500 --> 00:46:24,208 >> Publiek: Dus is de fysieke index [Onverstaanbaar] elk van de dozen? 1026 00:46:24,208 --> 00:46:25,260 [Onverstaanbaar]? 1027 00:46:25,260 --> 00:46:26,040 >> ANDI PENG: Ja. 1028 00:46:26,040 --> 00:46:28,970 Dus ik ga terug naar hier. 1029 00:46:28,970 --> 00:46:31,120 Denk aan hier. 1030 00:46:31,120 --> 00:46:32,820 We hebben een scala van maat 3. 1031 00:46:32,820 --> 00:46:35,540 Er zijn drie plaatsen, zoals, fysieke placeholders hier. 1032 00:46:35,540 --> 00:46:37,620 Maar ze zijn genoemd 0, 1 en 2. 1033 00:46:37,620 --> 00:46:40,700 Dus als ik wilde om ze te openen, de manier waarop ik toegang tot deze 1034 00:46:40,700 --> 00:46:43,480 is printf van wat ik wilde hier. 1035 00:46:43,480 --> 00:46:45,485 Je zou hebben om af te drukken de naam van het, 1036 00:46:45,485 --> 00:46:47,610 omdat dan de computer weet, oh, ik moet kijken 1037 00:46:47,610 --> 00:46:51,391 in deze array voor de 0-index. 1038 00:46:51,391 --> 00:46:51,890 Ja. 1039 00:46:51,890 --> 00:46:53,306 Maar de grootte ervan niet verandert. 1040 00:46:53,306 --> 00:46:55,492 De grootte is 3, ongeacht hoe je ze te labelen. 1041 00:46:55,492 --> 00:46:58,321 1042 00:46:58,321 --> 00:46:58,820 OK. 1043 00:46:58,820 --> 00:47:01,387 Iedereen goed? 1044 00:47:01,387 --> 00:47:02,970 Publiek: Dus elke keer als ik [onverstaanbaar]? 1045 00:47:02,970 --> 00:47:06,357 1046 00:47:06,357 --> 00:47:06,940 ANDI Peng: OK. 1047 00:47:06,940 --> 00:47:13,270 Dus in dit geval hebben we niet echt krijgen in het nu in de cursus. 1048 00:47:13,270 --> 00:47:16,760 Maar weet dat een string-- zoals ik gezegd, een string in hoofdzaak 1049 00:47:16,760 --> 00:47:18,440 een array van karakters. 1050 00:47:18,440 --> 00:47:21,430 Dus als ik een array strijkers, ik soort van 1051 00:47:21,430 --> 00:47:24,430 een reeks matrix karakters, toch? 1052 00:47:24,430 --> 00:47:27,720 >> Dus in dit geval, omdat ik hebben een array van strings, 1053 00:47:27,720 --> 00:47:31,340 als je het invoeren van een heel lang woord, die nog steeds neemt slechts één ruimte, 1054 00:47:31,340 --> 00:47:33,230 want dat is het één snaar. 1055 00:47:33,230 --> 00:47:37,492 Maar als je te denken van de tekens van deze matrix, 1056 00:47:37,492 --> 00:47:40,450 dan is dat het nemen van een veel meer karakters dan enig ander woorden 1057 00:47:40,450 --> 00:47:41,372 zijn. 1058 00:47:41,372 --> 00:47:42,830 Niet echt belangrijk voor nu. 1059 00:47:42,830 --> 00:47:44,921 Maar dat is slechts het algemeen hoe het werkt. 1060 00:47:44,921 --> 00:47:49,750 1061 00:47:49,750 --> 00:47:50,560 >> OK. 1062 00:47:50,560 --> 00:47:55,840 Dus dit is iets wat ik zal u laten doen veel in de loop van het semester. 1063 00:47:55,840 --> 00:47:57,500 Ik moet mijn stem te rusten. 1064 00:47:57,500 --> 00:47:59,530 Jullie moeten jezelf te stimuleren. 1065 00:47:59,530 --> 00:48:02,300 Veel van jullie waarschijnlijk moet nu slapen. 1066 00:48:02,300 --> 00:48:05,960 Ik ben het invoeren van willekeurige problemen waar we als een klasse of u 1067 00:48:05,960 --> 00:48:09,480 met een partner naast je gaat om een ​​paar minuten te besteden bespreken 1068 00:48:09,480 --> 00:48:14,980 over hoe we zouden gaan over het oplossen of het creëren van een programma zoals dit. 1069 00:48:14,980 --> 00:48:17,100 >> Dus nu, we willen een program-- creëren 1070 00:48:17,100 --> 00:48:19,560 we gaan noemen upper.c-- dat bekeerlingen 1071 00:48:19,560 --> 00:48:24,787 een kleine letter woord om een ​​upper-class string-- hoofdletters, sorry. 1072 00:48:24,787 --> 00:48:26,370 Woord in strings, sorry, is synoniem. 1073 00:48:26,370 --> 00:48:28,370 Ik ga ze veranderen om hetzelfde te betekenen. 1074 00:48:28,370 --> 00:48:32,270 1075 00:48:32,270 --> 00:48:33,499 >> Ja. 1076 00:48:33,499 --> 00:48:34,540 Neem een ​​paar minuten. 1077 00:48:34,540 --> 00:48:37,130 Het hoeft niet te worden geschreven in elke taal. 1078 00:48:37,130 --> 00:48:39,890 Just in pseudocode code of logisch hoe we zouden zelfs 1079 00:48:39,890 --> 00:48:42,083 gaan over het doen van een dergelijk probleem. 1080 00:48:42,083 --> 00:48:42,583 Ja. 1081 00:48:42,583 --> 00:48:49,881 1082 00:48:49,881 --> 00:48:52,780 >> [SIDE GESPREK] 1083 00:48:52,780 --> 00:49:18,680 1084 00:49:18,680 --> 00:49:22,130 >> Ik heb ook gemerkt dat jullie can-- Ik soort zie al het programma. 1085 00:49:22,130 --> 00:49:24,600 Ik denk dat mijn gebrek aan presentator modus is een probleem. 1086 00:49:24,600 --> 00:49:27,410 Maar het is oke. 1087 00:49:27,410 --> 00:49:30,410 >> [SIDE GESPREK] 1088 00:49:30,410 --> 00:50:03,589 1089 00:50:03,589 --> 00:50:04,380 Ja, alsjeblieft, jongens. 1090 00:50:04,380 --> 00:50:05,400 Kom krijgen snoep. 1091 00:50:05,400 --> 00:50:06,372 Kom krijgen snoep. 1092 00:50:06,372 --> 00:50:07,698 >> Publiek: Ja! 1093 00:50:07,698 --> 00:50:09,958 >> [SIDE GESPREK] 1094 00:50:09,958 --> 00:50:16,101 1095 00:50:16,101 --> 00:50:18,100 ANDI PENG: Ook, ja, Ik zal beginnen met het gooien van snoep 1096 00:50:18,100 --> 00:50:20,280 bij mensen die geen vragen beantwoordt. 1097 00:50:20,280 --> 00:50:22,260 Dus moet je alle vragen te beantwoorden. 1098 00:50:22,260 --> 00:50:24,895 Of ik denk dat mensen die beantwoordt vragen. 1099 00:50:24,895 --> 00:50:26,070 Ja, andersom. 1100 00:50:26,070 --> 00:50:28,570 >> [SIDE GESPREK] 1101 00:50:28,570 --> 00:51:13,399 1102 00:51:13,399 --> 00:51:14,274 PUBLIEK: [onverstaanbaar] 1103 00:51:14,274 --> 00:51:17,300 1104 00:51:17,300 --> 00:51:18,340 >> ANDI PENG: Ja. 1105 00:51:18,340 --> 00:51:19,340 Ja. 1106 00:51:19,340 --> 00:51:22,840 >> [SIDE GESPREK] 1107 00:51:22,840 --> 00:51:40,700 1108 00:51:40,700 --> 00:51:41,590 >> Oké, jongens. 1109 00:51:41,590 --> 00:51:44,731 Neem, als, 10 seconden. 1110 00:51:44,731 --> 00:51:48,210 >> [SIDE GESPREK] 1111 00:51:48,210 --> 00:52:10,600 1112 00:52:10,600 --> 00:52:11,750 >> Oké, jongens. 1113 00:52:11,750 --> 00:52:14,920 Dus voordat we beginnen proberen daadwerkelijk fysiek code schrijven, 1114 00:52:14,920 --> 00:52:20,650 een goede gewoonte om te ontwikkelen is dat we willen eerste soort van de rede 1115 00:52:20,650 --> 00:52:22,737 out logisch hoe we dat zouden doen. 1116 00:52:22,737 --> 00:52:24,570 U wilt er zeker van, voordat je fysiek 1117 00:52:24,570 --> 00:52:27,210 beginnen proberen coderen Mario, die je maakt 1118 00:52:27,210 --> 00:52:28,870 ervoor dat u uw pseudocode. 1119 00:52:28,870 --> 00:52:31,235 Dat neemt u door wat je nodig hebt om dit te creëren 1120 00:52:31,235 --> 00:52:33,360 dat, wanneer je fysiek schrijf uw programma later, 1121 00:52:33,360 --> 00:52:36,640 bent u beter in staat om fouten te vangen in uw code en dat soort dingen. 1122 00:52:36,640 --> 00:52:40,460 >> Dus we gaan gewoon beginnen by-- in het Engels, in pseudocode, 1123 00:52:40,460 --> 00:52:43,320 doet iedereen willen geven me een algemene verklaring 1124 00:52:43,320 --> 00:52:46,250 hoe zouden we dat doen? 1125 00:52:46,250 --> 00:52:48,102 Ja. 1126 00:52:48,102 --> 00:52:49,664 >> PUBLIEK: [onverstaanbaar]. 1127 00:52:49,664 --> 00:52:50,830 ANDI Peng: Tuurlijk, geen zorgen. 1128 00:52:50,830 --> 00:52:57,233 Publiek: Kun je het vragen of vragen iemand string 1-- ja, touwtje te krijgen, 1129 00:52:57,233 --> 00:52:58,160 en dan-- 1130 00:52:58,160 --> 00:52:59,826 >> ANDI Peng: Ja, dus dit is een goed begin. 1131 00:52:59,826 --> 00:53:01,972 Ik zal beginnen met typen, sorry, als je spreekt. 1132 00:53:01,972 --> 00:53:02,471 So-- 1133 00:53:02,471 --> 00:53:05,698 >> PUBLIEK: --de kleine letters getallen hoger zijn, toch? 1134 00:53:05,698 --> 00:53:08,519 Of de kleine letters hebben hoge aantallen? 1135 00:53:08,519 --> 00:53:09,310 ANDI PENG: Precies. 1136 00:53:09,310 --> 00:53:16,156 Publiek: Dus dan aftrekken we 32 van welke [onverstaanbaar]. 1137 00:53:16,156 --> 00:53:28,600 1138 00:53:28,600 --> 00:53:29,870 >> ANDI Peng: Grote. 1139 00:53:29,870 --> 00:53:35,020 Dus we soort hebben een algemeen gevoel van hoe te werken over dit probleem. 1140 00:53:35,020 --> 00:53:40,060 Wetende dat we soort hebben geleerd de fysieke manier waarop strings 1141 00:53:40,060 --> 00:53:43,320 worden opgeslagen in het geheugen, wat je doet al 1142 00:53:43,320 --> 00:53:45,920 weet dat je gaat waarschijnlijk moeten schrijven in uw code 1143 00:53:45,920 --> 00:53:48,288 om te bewegen door de string? 1144 00:53:48,288 --> 00:53:49,259 >> Publiek: voor lus. 1145 00:53:49,259 --> 00:53:50,550 ANDI Peng: Een lus, precies. 1146 00:53:50,550 --> 00:53:56,540 1147 00:53:56,540 --> 00:53:57,220 Grote. 1148 00:53:57,220 --> 00:54:00,539 Dus hebben we een soort van generieke pseudocode opgeschreven 1149 00:54:00,539 --> 00:54:02,330 dat soort geeft je merkt hoe je 1150 00:54:02,330 --> 00:54:03,900 zou bewegen oplossen van het probleem. 1151 00:54:03,900 --> 00:54:06,150 Nu je dit hebt, je kan het referentie voor later 1152 00:54:06,150 --> 00:54:08,233 wanneer je probeert om eigenlijk schrijf uw code. 1153 00:54:08,233 --> 00:54:10,240 Dus we kunnen eigenlijk gaan hier. 1154 00:54:10,240 --> 00:54:25,130 En ik heb een functie genaamd kreeg upper.c-- daar is-- van slechts een blanco sjabloon 1155 00:54:25,130 --> 00:54:28,510 nu dat jullie gaan me helpen uitzoeken hoe om te schrijven 1156 00:54:28,510 --> 00:54:30,430 deze lijn van code-- geen regel code. 1157 00:54:30,430 --> 00:54:32,890 Het zal meerdere regels code. 1158 00:54:32,890 --> 00:54:35,710 >> Bij het starten van een soort blanco PSET, wat is 1159 00:54:35,710 --> 00:54:37,418 het eerste wat ik nodig om te onthouden om te doen? 1160 00:54:37,418 --> 00:54:39,290 >> PUBLIEK: [onverstaanbaar]. 1161 00:54:39,290 --> 00:54:41,000 >> ANDI PENG: Great Yep. 1162 00:54:41,000 --> 00:54:41,500 Omvatten. 1163 00:54:41,500 --> 00:54:44,850 1164 00:54:44,850 --> 00:54:47,130 stdio.h. 1165 00:54:47,130 --> 00:54:49,640 Vaak is dit een van de meest eenvoudige fouten die mensen 1166 00:54:49,640 --> 00:54:51,598 zal maken als ze schrijven, is dat ze zullen 1167 00:54:51,598 --> 00:54:54,180 vergeten om een ​​include belangrijke bibliotheek die ze nodig hebben. 1168 00:54:54,180 --> 00:54:57,689 Dus als het kantooruren en je bent zoals, Ik weet niet waarom mijn code niet werkt. 1169 00:54:57,689 --> 00:54:59,230 Kunt u mij vertellen waarom het niet werkt? 1170 00:54:59,230 --> 00:55:00,730 We gaan om te zeggen heb je #include? 1171 00:55:00,730 --> 00:55:02,520 Je moet het #include. 1172 00:55:02,520 --> 00:55:03,270 OK. 1173 00:55:03,270 --> 00:55:07,230 >> Dus hebben we de standaard I / O kreeg hier. 1174 00:55:07,230 --> 00:55:10,740 Is dat het enige bibliotheek we gaan hier nodig? 1175 00:55:10,740 --> 00:55:12,681 Wat gaan we doen? 1176 00:55:12,681 --> 00:55:13,180 Sorry. 1177 00:55:13,180 --> 00:55:14,562 Iemand die net schreeuwen het uit? 1178 00:55:14,562 --> 00:55:15,666 >> PUBLIEK: [onverstaanbaar]. 1179 00:55:15,666 --> 00:55:16,666 ANDI Peng: Daar ga je. 1180 00:55:16,666 --> 00:55:20,320 1181 00:55:20,320 --> 00:55:21,440 OK. 1182 00:55:21,440 --> 00:55:26,070 En hoe ga ik over het starten van een soort van de functie, een soort van hoofdfunctie 1183 00:55:26,070 --> 00:55:28,760 binnen ons programma? 1184 00:55:28,760 --> 00:55:30,020 Int main. 1185 00:55:30,020 --> 00:55:34,531 1186 00:55:34,531 --> 00:55:35,030 OK. 1187 00:55:35,030 --> 00:55:35,970 Wat doe ik hier binnen? 1188 00:55:35,970 --> 00:55:37,640 Wat is het eerste wat je wilt doen? 1189 00:55:37,640 --> 00:55:39,910 Als we willen een te krijgen snaar van de gebruiker, 1190 00:55:39,910 --> 00:55:43,870 wat gaan we te hebben te doen op de eerste lijn? 1191 00:55:43,870 --> 00:55:46,120 Sorry, jullie voel me vrij om te spreken en luid. 1192 00:55:46,120 --> 00:55:47,123 Gewoon schreeuwen wat dan ook. 1193 00:55:47,123 --> 00:55:48,772 >> Publiek: Vraag de gebruiker? 1194 00:55:48,772 --> 00:55:49,980 ANDI Peng: Hoe doen we dat? 1195 00:55:49,980 --> 00:55:51,873 Ask-- ben ik naar het type "vragen de gebruiker"? 1196 00:55:51,873 --> 00:55:52,600 >> Publiek: Printf. 1197 00:55:52,600 --> 00:55:54,341 >> ANDI Peng: OK. 1198 00:55:54,341 --> 00:55:54,840 Printf. 1199 00:55:54,840 --> 00:55:57,372 Wat wil ik printf? 1200 00:55:57,372 --> 00:55:58,776 >> PUBLIEK: Typ iets. 1201 00:55:58,776 --> 00:56:02,760 1202 00:56:02,760 --> 00:56:03,840 >> ANDI Peng: Net als dat? 1203 00:56:03,840 --> 00:56:05,430 Jongens, doen alsof ik een computer. 1204 00:56:05,430 --> 00:56:08,475 Fysiek vertel me elke stap die ik nodig heb om hier te typen? 1205 00:56:08,475 --> 00:56:09,600 Doe ik iets verkeerd? 1206 00:56:09,600 --> 00:56:10,743 Moet ik iets heb getypt? 1207 00:56:10,743 --> 00:56:11,690 >> Publiek: Je moet aanhalingstekens. 1208 00:56:11,690 --> 00:56:12,380 >> ANDI Peng: ik citaten nodig? 1209 00:56:12,380 --> 00:56:12,880 OK. 1210 00:56:12,880 --> 00:56:15,520 1211 00:56:15,520 --> 00:56:16,297 OK. 1212 00:56:16,297 --> 00:56:17,698 >> PUBLIEK: En dan nieuwe lijn. 1213 00:56:17,698 --> 00:56:21,434 1214 00:56:21,434 --> 00:56:22,465 Puntkomma. 1215 00:56:22,465 --> 00:56:23,340 ANDI Peng: Puntkomma? 1216 00:56:23,340 --> 00:56:24,060 OK. 1217 00:56:24,060 --> 00:56:24,560 Goed. 1218 00:56:24,560 --> 00:56:27,060 >> Publiek: En misschien opgeven dat u het in kleine letters? 1219 00:56:27,060 --> 00:56:30,120 1220 00:56:30,120 --> 00:56:31,415 >> ANDI Peng: Grote. 1221 00:56:31,415 --> 00:56:33,540 Jullie lachen me vergeten om een ​​puntkomma te zetten. 1222 00:56:33,540 --> 00:56:36,350 Ik garandeer je ergens In de loop van deze klasse, 1223 00:56:36,350 --> 00:56:38,260 je zal vergeten te zetten een puntkomma, en het 1224 00:56:38,260 --> 00:56:41,116 zul je drie uur om erachter waarom uw code werkt niet. 1225 00:56:41,116 --> 00:56:42,240 Het is gebeurd voor ons allemaal. 1226 00:56:42,240 --> 00:56:43,950 Het zal waarschijnlijk gebeuren met je. 1227 00:56:43,950 --> 00:56:46,352 Krijgen in een goede gewoonte van het gebruik puntkomma. 1228 00:56:46,352 --> 00:56:46,852 OK. 1229 00:56:46,852 --> 00:56:49,010 >> PUBLIEK: Wilt u aan de backslash in doen? 1230 00:56:49,010 --> 00:56:50,398 >> ANDI PENG: Zeker. 1231 00:56:50,398 --> 00:56:51,856 Wilt u de backslash doen? 1232 00:56:51,856 --> 00:56:53,020 >> Publiek: Ja. 1233 00:56:53,020 --> 00:56:54,330 >> ANDI Peng: Grote. 1234 00:56:54,330 --> 00:56:54,830 OK. 1235 00:56:54,830 --> 00:56:57,872 Wat moet ik nu doen? 1236 00:56:57,872 --> 00:56:58,964 >> Publiek: Get string. 1237 00:56:58,964 --> 00:56:59,880 ANDI Peng: Get string. 1238 00:56:59,880 --> 00:57:03,080 1239 00:57:03,080 --> 00:57:03,830 Dus wat moet ik typen? 1240 00:57:03,830 --> 00:57:04,233 Iemand? 1241 00:57:04,233 --> 00:57:05,040 >> Publiek: String s. 1242 00:57:05,040 --> 00:57:05,873 >> ANDI PENG: String s. 1243 00:57:05,873 --> 00:57:07,251 Publiek: GetString. 1244 00:57:07,251 --> 00:57:09,000 ANDI Peng: Iemand, kunt u mij vertellen waar de 1245 00:57:09,000 --> 00:57:12,000 deze functie GetString vandaan komt? 1246 00:57:12,000 --> 00:57:13,660 >> Publiek: string.h. 1247 00:57:13,660 --> 00:57:15,256 >> ANDI Peng: string.h? 1248 00:57:15,256 --> 00:57:16,715 Je denkt dat het van string.h? 1249 00:57:16,715 --> 00:57:17,830 >> PUBLIEK: [onverstaanbaar]. 1250 00:57:17,830 --> 00:57:18,830 >> ANDI Peng: Daar ga je. 1251 00:57:18,830 --> 00:57:21,280 Het is van CS50.h. 1252 00:57:21,280 --> 00:57:24,530 Als je altijd in de war over waar een bibliotheek bestand of een header bestand, 1253 00:57:24,530 --> 00:57:28,450 google letterlijk string.h, en ik zal je vertellen 1254 00:57:28,450 --> 00:57:30,450 welke alle functies die in string.h. 1255 00:57:30,450 --> 00:57:31,340 OK. 1256 00:57:31,340 --> 00:57:35,210 >> Dus nu dat ik een string hebt gemaakt en ik heb gevraagd de gebruiker voor het, 1257 00:57:35,210 --> 00:57:38,770 Ik heb het opgeslagen in een variabele genaamd s, wat moet ik nu doen? 1258 00:57:38,770 --> 00:57:40,652 >> Publiek: Controleer of het in kleine letters. 1259 00:57:40,652 --> 00:57:41,360 ANDI PENG: Sorry? 1260 00:57:41,360 --> 00:57:42,545 Publiek: Controleer of het in kleine letters. 1261 00:57:42,545 --> 00:57:44,045 ANDI Peng: Oké, laten we dat doen. 1262 00:57:44,045 --> 00:57:45,857 Hoe doe ik dat? 1263 00:57:45,857 --> 00:57:47,940 Eigenlijk is de zin van de klasse op dit moment, 1264 00:57:47,940 --> 00:57:50,330 we gaan gewoon veronderstellen dat alles 1265 00:57:50,330 --> 00:57:52,620 dat we ingang is al in kleine letters. 1266 00:57:52,620 --> 00:57:55,430 Als je wilde om te controleren, zou je voeg gewoon een voorwaardelijke verklaring 1267 00:57:55,430 --> 00:57:59,640 dat gecontroleerd, dat door middel liep elk arrayelement 1268 00:57:59,640 --> 00:58:02,540 en gecontroleerd of het tussen bepaalde waarden. 1269 00:58:02,540 --> 00:58:05,627 Ik vergeten wat het aantal van de waarden van de kleine letters zijn. 1270 00:58:05,627 --> 00:58:07,210 U kunt het opzoeken van de ASCII-tabel. 1271 00:58:07,210 --> 00:58:08,800 Maar ja, dat is een heel goed punt. 1272 00:58:08,800 --> 00:58:11,758 Maar nu zijn we gewoon gaan aannemen dat alle strings we ingang 1273 00:58:11,758 --> 00:58:13,130 zijn in kleine letters. 1274 00:58:13,130 --> 00:58:13,870 OK. 1275 00:58:13,870 --> 00:58:18,069 >> Dus hoe zou ik gaan over het dit probleem de volgende stap? 1276 00:58:18,069 --> 00:58:18,860 Publiek: voor lus. 1277 00:58:18,860 --> 00:58:19,340 ANDI Peng: For-lus? 1278 00:58:19,340 --> 00:58:19,839 OK. 1279 00:58:19,839 --> 00:58:20,847 Vertel me wat te typen. 1280 00:58:20,847 --> 00:58:25,230 >> Publiek: voor int i gelijk is aan 0. 1281 00:58:25,230 --> 00:58:27,230 >> ANDI Peng: OK. 1282 00:58:27,230 --> 00:58:36,350 >> PUBLIEK: Oh, eigenlijk, dan moet je doe een komma en doe n gelijk strlen. 1283 00:58:36,350 --> 00:58:38,940 >> ANDI PENG: Zo belangrijk ding dat ik denk dat ze hier merkte 1284 00:58:38,940 --> 00:58:42,936 is dat we niet hoefde te zeggen int n de tweede keer hebben we dit. 1285 00:58:42,936 --> 00:58:45,060 Weet alleen dat in een voor lus wanneer u verklaren, 1286 00:58:45,060 --> 00:58:47,934 je eigenlijk niet de int van nodig de tweede keer dat je een variabele. 1287 00:58:47,934 --> 00:58:51,202 U kunt n strlen zeggen. 1288 00:58:51,202 --> 00:58:52,620 >> Publiek: Van s. 1289 00:58:52,620 --> 00:58:53,510 >> ANDI PENG: s. 1290 00:58:53,510 --> 00:58:54,706 OK. 1291 00:58:54,706 --> 00:58:58,370 >> PUBLIEK: Dan een puntkomma. 1292 00:58:58,370 --> 00:59:00,130 >> ANDI PENG: Zeker. 1293 00:59:00,130 --> 00:59:04,050 >> Publiek: En dan [onverstaanbaar] n. 1294 00:59:04,050 --> 00:59:07,480 1295 00:59:07,480 --> 00:59:09,460 Dan ++ i. 1296 00:59:09,460 --> 00:59:11,780 >> ANDI Peng: Grote. 1297 00:59:11,780 --> 00:59:12,280 Prima. 1298 00:59:12,280 --> 00:59:14,690 Wat willen we binnen van deze lus nu? 1299 00:59:14,690 --> 00:59:17,820 Vergeet niet, als we gaan door te draaien een string en lopen door een array, 1300 00:59:17,820 --> 00:59:19,287 We willen dingen te controleren in. 1301 00:59:19,287 --> 00:59:20,370 Wat gaan we nodig hebben? 1302 00:59:20,370 --> 00:59:23,070 1303 00:59:23,070 --> 00:59:26,900 Dit is een soort van het lastige deel nu. 1304 00:59:26,900 --> 00:59:27,960 Iedereen heeft een gok? 1305 00:59:27,960 --> 00:59:34,160 1306 00:59:34,160 --> 00:59:34,690 >> OK. 1307 00:59:34,690 --> 00:59:37,830 Dus eerst, hoe kunnen we zelfs toegang? 1308 00:59:37,830 --> 00:59:41,610 Hoe kunnen we zelfs de eerste cheque of toegang tot een element in de array? 1309 00:59:41,610 --> 00:59:42,920 Hoe doen we dat? 1310 00:59:42,920 --> 00:59:47,120 Wat is de notatie die we gebruiken om dat te doen? 1311 00:59:47,120 --> 00:59:50,920 Wat is de naam van deze serie genoemd? 1312 00:59:50,920 --> 00:59:52,400 Het heet is, toch? 1313 00:59:52,400 --> 00:59:54,850 >> Vergeet niet, elke reeks is altijd een array. 1314 00:59:54,850 --> 00:59:58,210 Dus s beugel ik, toch? 1315 00:59:58,210 --> 01:00:01,360 Want dat is de huidige waarde of indexwaarde we controleren. 1316 01:00:01,360 --> 01:00:05,156 En we gaan die gelijk te stellen to-- willen we een kleine waarde, toch? 1317 01:00:05,156 --> 01:00:07,530 We willen zetten dat lower-- sorry, we willen een hoofdletter. 1318 01:00:07,530 --> 01:00:10,014 We willen de kleine zetten waarde in een hoofdletter. 1319 01:00:10,014 --> 01:00:11,805 En dus like-- het spijt me, hoe heet je? 1320 01:00:11,805 --> 01:00:12,580 >> Publiek: Heidi. 1321 01:00:12,580 --> 01:00:12,940 >> ANDI PENG: Sorry? 1322 01:00:12,940 --> 01:00:13,280 >> Publiek: Heidi. 1323 01:00:13,280 --> 01:00:13,988 >> ANDI Peng: Heidi. 1324 01:00:13,988 --> 01:00:15,850 Zoals Heidi zei in eerste instantie, we zijn waarschijnlijk 1325 01:00:15,850 --> 01:00:20,330 gaat nodig the-- we waarschijnlijk zal moeten aftrekken 1326 01:00:20,330 --> 01:00:22,630 32 van welke charc dat is, toch? 1327 01:00:22,630 --> 01:00:24,680 Omdat op ASCII tafel, het verschil 1328 01:00:24,680 --> 01:00:27,790 tussen een kleine letter en een hoofdletter is 32. 1329 01:00:27,790 --> 01:00:31,290 Dus als we dit doen, zijn we waarschijnlijk gaat willen aftrekken 32, toch? 1330 01:00:31,290 --> 01:00:33,910 >> Dus we gaan en ik doe. 1331 01:00:33,910 --> 01:00:37,590 1332 01:00:37,590 --> 01:00:41,200 Heeft iedereen begrijpen waarom ik dat deed? 1333 01:00:41,200 --> 01:00:45,760 Want nu, in ons aanbod, we zijn het controleren van de 0-index, toch? 1334 01:00:45,760 --> 01:00:49,190 En in de 0-index van de koord, dat is het eerste teken. 1335 01:00:49,190 --> 01:00:51,820 En dat karakter we gaan om aan te nemen dat het in kleine letters. 1336 01:00:51,820 --> 01:00:55,980 Als we willen het hoofdletters te maken, we moeten aftrekken 32 van zijn waarde, 1337 01:00:55,980 --> 01:00:58,620 omdat in onze ASCII tafel, dat is hoe we het 1338 01:00:58,620 --> 01:01:01,600 de volgende overeenkomstige waarde dat het hoofdletters maakt. 1339 01:01:01,600 --> 01:01:03,714 Begrijpt iedereen dat? 1340 01:01:03,714 --> 01:01:04,213 Ja. 1341 01:01:04,213 --> 01:01:06,530 >> Publiek: Kunt u ook hebben kleine letters een minus-- 1342 01:01:06,530 --> 01:01:08,080 >> ANDI Peng: Ja, dus dat is eigenlijk heel goed. 1343 01:01:08,080 --> 01:01:10,455 Ik ga terug naar die vraag nadat we dit doen. 1344 01:01:10,455 --> 01:01:11,060 Ja. 1345 01:01:11,060 --> 01:01:13,940 En dan als ik wil zien wat er gaande is, 1346 01:01:13,940 --> 01:01:16,180 Ik ga waarschijnlijk wilt, rechts af te drukken? 1347 01:01:16,180 --> 01:01:19,930 Iemand mij vertellen wat Ik wil hier afdrukken. 1348 01:01:19,930 --> 01:01:29,160 >> PUBLIEK: printf procent c backslash [onverstaanbaar]. 1349 01:01:29,160 --> 01:01:33,570 Dat is de waarde van [onverstaanbaar] s i. 1350 01:01:33,570 --> 01:01:34,614 >> ANDI PENG: s ik, sorry? 1351 01:01:34,614 --> 01:01:35,530 PUBLIEK: [onverstaanbaar]. 1352 01:01:35,530 --> 01:01:38,550 1353 01:01:38,550 --> 01:01:39,550 ANDI Peng: Ik weet het niet. 1354 01:01:39,550 --> 01:01:40,600 Wat denk jij? 1355 01:01:40,600 --> 01:01:44,016 >> Publiek: Nou, ik wouldn't-- Ik denk dat ik zou niet bring-- 1356 01:01:44,016 --> 01:01:46,944 Ik zou het afsluiten van de binnen, omdat [onverstaanbaar]. 1357 01:01:46,944 --> 01:01:49,726 1358 01:01:49,726 --> 01:01:51,392 ANDI Peng: Oh, u zou hebben gedaan? 1359 01:01:51,392 --> 01:01:53,867 Publiek: Ja. 1360 01:01:53,867 --> 01:01:56,700 ANDI Peng: Laten we het de weg het is, en ik zal later uitleggen waarom. 1361 01:01:56,700 --> 01:01:58,533 Vergeet niet, zelfs wanneer u hebben een plaats houder, 1362 01:01:58,533 --> 01:02:00,701 je wilt haakjes omheen zetten. 1363 01:02:00,701 --> 01:02:01,200 Prima. 1364 01:02:01,200 --> 01:02:04,810 Dus dit moet een solide functie hier te zijn. 1365 01:02:04,810 --> 01:02:06,370 Laten we draaien het en zien of het compileert. 1366 01:02:06,370 --> 01:02:08,750 Maak de bovenste. 1367 01:02:08,750 --> 01:02:09,250 Oh Oh. 1368 01:02:09,250 --> 01:02:12,030 1369 01:02:12,030 --> 01:02:13,340 Dat klinkt niet zo goed uit. 1370 01:02:13,340 --> 01:02:14,507 Waarom gebeurt dit? 1371 01:02:14,507 --> 01:02:17,340 Zoals bij elke fout, u wilt gaan back en beginnen met de eerste, 1372 01:02:17,340 --> 01:02:20,630 want meestal één fout oorzaken tal van andere fouten na het. 1373 01:02:20,630 --> 01:02:26,700 Hier zien we upper.c: 18: 25, die vertelt me in dit programma genaamd upper.c, 1374 01:02:26,700 --> 01:02:33,800 op lijn 18, fout impliciet verklaren bibliotheek van functies strlen met type 1375 01:02:33,800 --> 01:02:36,330 unassigned-- blah, ik weet het niet wat er na dat. 1376 01:02:36,330 --> 01:02:39,990 >> Alles wat het vertelt me ​​nu is dat er iets aan de hand is de strlen. 1377 01:02:39,990 --> 01:02:43,520 En de computer is in de war, omdat Het is net als, ik weet niet wat strlen is? 1378 01:02:43,520 --> 01:02:45,520 Wat doet dat waarschijnlijk je vertellen je mist? 1379 01:02:45,520 --> 01:02:46,490 >> Publiek: Je mist [onverstaanbaar]. 1380 01:02:46,490 --> 01:02:47,630 >> ANDI Peng: Je hebt gelijk. 1381 01:02:47,630 --> 01:02:49,510 Precies. 1382 01:02:49,510 --> 01:02:52,140 Dus dit is waar het het belangrijk om ervoor te zorgen 1383 01:02:52,140 --> 01:02:56,970 dat elke functie die u in gebruik je code is het hebben van de juiste header 1384 01:02:56,970 --> 01:02:59,660 bestand voor de bibliotheek, of anders je gaat om veel fouten te krijgen 1385 01:02:59,660 --> 01:03:01,150 en uw code is niet van plan om te weten wat er gaande is. 1386 01:03:01,150 --> 01:03:03,050 Dus we gaan string.h hier onder. 1387 01:03:03,050 --> 01:03:06,270 >> Nu als we proberen boven te compileren. 1388 01:03:06,270 --> 01:03:08,410 Correct samen te stellen. 1389 01:03:08,410 --> 01:03:09,960 Laten we draaien dit programma. 1390 01:03:09,960 --> 01:03:12,000 Dus typt iets in kleine letters. 1391 01:03:12,000 --> 01:03:14,920 Wat willen jullie te typen? 1392 01:03:14,920 --> 01:03:16,546 Schreeuwen iets. 1393 01:03:16,546 --> 01:03:17,920 Oké, Charly liep gewoon in. 1394 01:03:17,920 --> 01:03:18,990 We zullen de naam Charly's typen. 1395 01:03:18,990 --> 01:03:21,670 1396 01:03:21,670 --> 01:03:22,840 >> Charly in kleine letters. 1397 01:03:22,840 --> 01:03:27,742 En hopelijk, hopelijk is dit gaan schreeuwen en spugen 1398 01:03:27,742 --> 01:03:28,575 Charly in hoofdletters. 1399 01:03:28,575 --> 01:03:30,830 Yay! 1400 01:03:30,830 --> 01:03:33,430 begrijpt iedereen hoe Ik ging over het oplossen van dat? 1401 01:03:33,430 --> 01:03:36,190 De manier waarop ik kan manipuleren met behulp van gehele getallen 1402 01:03:36,190 --> 01:03:39,410 iets dat oplossen Ik wil doen in strings, 1403 01:03:39,410 --> 01:03:44,390 omdat de personages en getallen kunnen worden verwezen op dezelfde manier, omdat 1404 01:03:44,390 --> 01:03:45,540 ASCII mapping. 1405 01:03:45,540 --> 01:03:52,890 >> Dus terug naar je punt, als ik wilde hier in plaats van 32 zetten 1406 01:03:52,890 --> 01:03:58,959 hoofdletter A minus kleine letter a, net als dat, zou dat even zo goed werkt, 1407 01:03:58,959 --> 01:04:01,750 want dat is gewoon de verschil tussen deze twee waarden. 1408 01:04:01,750 --> 01:04:09,570 Als ik wil dit again-- charly maken. 1409 01:04:09,570 --> 01:04:10,320 O nee. 1410 01:04:10,320 --> 01:04:11,820 Ik denk dat we de verkeerde kant op, ja? 1411 01:04:11,820 --> 01:04:13,260 >> PUBLIEK: [onverstaanbaar] kleine letters a. 1412 01:04:13,260 --> 01:04:14,260 >> ANDI Peng: Daar ga je. 1413 01:04:14,260 --> 01:04:22,380 1414 01:04:22,380 --> 01:04:22,880 Yep. 1415 01:04:22,880 --> 01:04:24,920 En uit spuugt charly. 1416 01:04:24,920 --> 01:04:28,020 Dus wees voorzichtig bij je aftrekken van waarden 1417 01:04:28,020 --> 01:04:30,400 om te onthouden welke is groter dan de andere. 1418 01:04:30,400 --> 01:04:35,220 Bijvoorbeeld, hier ben ik vergeten dat een kleine eigenlijk 1419 01:04:35,220 --> 01:04:38,540 groter dan hoofdletter A. Dus toen ik geprobeerd om ze af te trekken andersom 1420 01:04:38,540 --> 01:04:40,600 rond, ik kreeg negatieve 32. 1421 01:04:40,600 --> 01:04:42,800 En mijn computer was, Ik weet niet wat dat is. 1422 01:04:42,800 --> 01:04:45,810 Het is waarschijnlijk slechts enkele willekeurige waarde is niet erg goed. 1423 01:04:45,810 --> 01:04:48,760 En dus zorg ervoor dat je bent aftrekken van de juiste lengte 1424 01:04:48,760 --> 01:04:52,831 het teken dat u wilt. 1425 01:04:52,831 --> 01:04:53,330 OK. 1426 01:04:53,330 --> 01:04:58,550 Is er iemand in de war over hoe wij ging over het schrijven van deze functie? 1427 01:04:58,550 --> 01:04:59,180 OK. 1428 01:04:59,180 --> 01:05:04,830 Dus eigenlijk, een functie reeds bestaat in de bibliotheek genaamd ctype.h. 1429 01:05:04,830 --> 01:05:06,417 Genaamd ctype.h de bibliotheek. 1430 01:05:06,417 --> 01:05:08,500 Deze functie is eigenlijk al geschreven voor jou. 1431 01:05:08,500 --> 01:05:10,820 Het heet de bovenste. 1432 01:05:10,820 --> 01:05:13,027 >> Zo behoeve van Dit PSET, je gaat 1433 01:05:13,027 --> 01:05:15,860 te vinden dat je echt wilt gebruiken veel van de functies 1434 01:05:15,860 --> 01:05:17,390 binnen de CType bibliotheek. 1435 01:05:17,390 --> 01:05:21,040 Naar boven, om te verlagen, is de bovenste, is lower-- dat zijn alle functies 1436 01:05:21,040 --> 01:05:24,914 dat u in staat om zeer te gebruiken zal zijn, zeer snel in uw eigen code die 1437 01:05:24,914 --> 01:05:26,080 doet precies wat dit doet. 1438 01:05:26,080 --> 01:05:28,941 We schreven hoe om te zetten een tekenreeks naar hoofdletters. 1439 01:05:28,941 --> 01:05:31,440 Maar dit is eigenlijk de code dat iemand anders heeft geschreven 1440 01:05:31,440 --> 01:05:33,800 en dat u toegang via een andere functie. 1441 01:05:33,800 --> 01:05:34,300 Ja? 1442 01:05:34,300 --> 01:05:39,570 >> Publiek: Dus je gewoon kopiëren A's daar en doe het voor elke letter? 1443 01:05:39,570 --> 01:05:42,070 >> ANDI Peng: Ja, omdat ik niet zorg over de waarden van a. 1444 01:05:42,070 --> 01:05:44,540 Ik zorg dat het verschil tussen hen is 32, nietwaar? 1445 01:05:44,540 --> 01:05:48,210 Het verschil tussen kleine letters b en hoofdletters B is ook 32. 1446 01:05:48,210 --> 01:05:50,860 En het verschil tussen ca. en hoofdletter C is altijd 32. 1447 01:05:50,860 --> 01:05:53,235 >> Ik moet gewoon zorgen te maken over de verschil tussen de twee, 1448 01:05:53,235 --> 01:05:56,666 omdat alle letters volgen hetzelfde patroon, toch? 1449 01:05:56,666 --> 01:05:58,540 Als ik het verschil tussen één van hen 1450 01:05:58,540 --> 01:06:01,050 Ik weet wat het verschil tussen hen allen is. 1451 01:06:01,050 --> 01:06:01,740 Goede vraag. 1452 01:06:01,740 --> 01:06:04,090 Ja. 1453 01:06:04,090 --> 01:06:06,660 Iedereen goed? 1454 01:06:06,660 --> 01:06:09,080 OK. 1455 01:06:09,080 --> 01:06:09,580 Oop. 1456 01:06:09,580 --> 01:06:14,380 1457 01:06:14,380 --> 01:06:15,270 >> OK. 1458 01:06:15,270 --> 01:06:20,310 Dus een ander concept dat gaat heel nuttig als je zijn 1459 01:06:20,310 --> 01:06:22,570 blijven ontwikkelen de code is dit idee 1460 01:06:22,570 --> 01:06:25,430 van het creëren van functies of abstractie. 1461 01:06:25,430 --> 01:06:28,479 Dus nu hebben we allemaal algebra genomen. 1462 01:06:28,479 --> 01:06:31,770 In de algebra, wordt u geleerd dat er dit prachtige ding heet een functie 1463 01:06:31,770 --> 01:06:35,300 machine, waar als je ingang een soort nummer, 1464 01:06:35,300 --> 01:06:38,720 het door deze prachtige functie loopt en uit springt een andere uitgang, toch? 1465 01:06:38,720 --> 01:06:42,220 In de code, hetzelfde gebeurt in een soort van functie. 1466 01:06:42,220 --> 01:06:48,230 >> Dus kon ik fysiek schrijf in mijn lichaam van mijn code 1467 01:06:48,230 --> 01:06:52,357 een van de belangrijkste verklaring dat eigenlijk doet ongeacht het lichaam van de code doet. 1468 01:06:52,357 --> 01:06:54,940 Maar buiten dat, kan ik ook schrijf verschillende functies 1469 01:06:54,940 --> 01:06:56,320 dat veel verschillende dingen te doen. 1470 01:06:56,320 --> 01:06:58,570 Zo hebben we al begonnen met een aantal van hen. 1471 01:06:58,570 --> 01:07:00,610 Printf-- dat een functie die iemand anders 1472 01:07:00,610 --> 01:07:02,870 heeft al geschreven dat we kunnen noemen in onze code. 1473 01:07:02,870 --> 01:07:05,410 Om upper-- in dit geval, upper-- is een andere functie 1474 01:07:05,410 --> 01:07:07,330 we hebben geschreven dat we kunnen bellen in onze code. 1475 01:07:07,330 --> 01:07:09,520 En dus ik denk waarom we hebben zelfs functies? 1476 01:07:09,520 --> 01:07:12,100 Waarom gaan we niet gewoon plop te allemaal in dezelfde regel code? 1477 01:07:12,100 --> 01:07:13,730 Het maakt het gemakkelijk voor iedereen. 1478 01:07:13,730 --> 01:07:19,200 >> Nou, de redenering daarachter is allereerst, organisatie. 1479 01:07:19,200 --> 01:07:21,880 Het is echt vervelend te gaan door middel van code iemand 1480 01:07:21,880 --> 01:07:25,110 en één functie als printf. 1481 01:07:25,110 --> 01:07:28,570 Als jullie echt wist wat de functie printf meebrengt om te schrijven, 1482 01:07:28,570 --> 01:07:30,530 het is, net als, 1000 regels code. 1483 01:07:30,530 --> 01:07:32,357 >> Als elke keer als ik wilde iets printf, 1484 01:07:32,357 --> 01:07:35,440 Ik moest 1000 regels code te schrijven, dat echt vervelend om te lezen zou zijn, 1485 01:07:35,440 --> 01:07:36,290 toch? 1486 01:07:36,290 --> 01:07:38,860 Dat is de reden waarom we hebben net creëerde dit abstracte functie 1487 01:07:38,860 --> 01:07:41,670 dat we al iemand anders heeft ergens anders geschreven. 1488 01:07:41,670 --> 01:07:44,920 En elke keer moeten we om het te gebruiken in onze code, moeten we gewoon printf zeggen. 1489 01:07:44,920 --> 01:07:48,070 En dat in staat is de functie iemand anders heeft geschreven in onze code. 1490 01:07:48,070 --> 01:07:51,020 Het maakt het makkelijker organisatorisch om code te lezen. 1491 01:07:51,020 --> 01:07:53,460 >> Ten tweede is het vereenvoudigen. 1492 01:07:53,460 --> 01:07:56,750 Het vereenvoudigt de stappen die we hebben te nemen om onze problemen op te lossen. 1493 01:07:56,750 --> 01:07:59,300 Printf, functies zoals printf, functies zoals de bovenste 1494 01:07:59,300 --> 01:08:03,560 zijn allemaal dingen die ons in staat stellen vereenvoudigen onze code beneden, zodat het makkelijker is. 1495 01:08:03,560 --> 01:08:05,830 En de laatste is herbruikbaarheid. 1496 01:08:05,830 --> 01:08:08,710 >> Dus het feit dat we een functie genaamd printf 1497 01:08:08,710 --> 01:08:11,990 dat we kunnen noemen veel verschillende tijd en maakt het mogelijk om herbruikbaar. 1498 01:08:11,990 --> 01:08:14,980 Als ik printf schrijven, Ik schrijf het maar één keer. 1499 01:08:14,980 --> 01:08:16,439 Het bestaat alleen in die ene plaats. 1500 01:08:16,439 --> 01:08:19,890 Als ik het opnieuw zou doen, zou ik te kopiëren en te plakken dat alles 1501 01:08:19,890 --> 01:08:21,760 in mijn tweede regel code. 1502 01:08:21,760 --> 01:08:24,880 Dat is waarom als we een functie dat bestaat buiten onze, 1503 01:08:24,880 --> 01:08:26,880 kunnen we gewoon een beroep doen op het en opnieuw te gebruiken wanneer 1504 01:08:26,880 --> 01:08:29,604 moeten we dus dat het een stuk makkelijker voor ons als programma's te schrijven. 1505 01:08:29,604 --> 01:08:32,220 1506 01:08:32,220 --> 01:08:35,549 >> Dus de manier waarop we zouden eigenlijk schrijven een functie is zeer vergelijkbaar zijn, toch? 1507 01:08:35,549 --> 01:08:37,590 Dit is een soort van de eerste geval waarin we zullen 1508 01:08:37,590 --> 01:08:42,830 zie een functie nemen op een stijl anders dan onze int main leegte. 1509 01:08:42,830 --> 01:08:46,779 In dit geval, als ik wilde Schrijf een functie genaamd q, toch? 1510 01:08:46,779 --> 01:08:49,370 >> En int waarde hier is allemaal me te vertellen, 1511 01:08:49,370 --> 01:08:51,649 wat wil ik dit functie om terug te keren naar me? 1512 01:08:51,649 --> 01:08:54,484 Als ik wil een integer kubus, Ik ga om te willen invoeren. 1513 01:08:54,484 --> 01:08:55,525 Dit zijn de parameters. 1514 01:08:55,525 --> 01:08:58,490 Ik ga naar een waarde van het type int ingangen. 1515 01:08:58,490 --> 01:09:01,300 En ik ga om terug te keren een ander type waarde van int. 1516 01:09:01,300 --> 01:09:03,050 En hier, zoals u kan zien, alles wat ik doe 1517 01:09:03,050 --> 01:09:07,300 wordt cubing wat mijn inbreng is als mijn output en terug te zenden. 1518 01:09:07,300 --> 01:09:10,790 >> Dus al deze functie doet is neemt een soort van integer. 1519 01:09:10,790 --> 01:09:14,979 Het vermenigvuldigt door zelf twee keer zodat kubussen kracht. 1520 01:09:14,979 --> 01:09:17,729 En dan terug wat dat output is. 1521 01:09:17,729 --> 01:09:20,540 Dus in dit geval, het twee regels code dat we moesten extra schrijven. 1522 01:09:20,540 --> 01:09:22,880 Maar als we wilden bellen op deze meerdere keren, 1523 01:09:22,880 --> 01:09:26,210 het is een stuk makkelijker om die ene typen lijn hier die in kubus dan 1524 01:09:26,210 --> 01:09:28,830 moeten gaan door meerdere malen. 1525 01:09:28,830 --> 01:09:34,180 >> Dus de wijze waarop wezen elk opmaak voor elke vorm van functie 1526 01:09:34,180 --> 01:09:36,420 gaat bestaan ​​is als hier. 1527 01:09:36,420 --> 01:09:38,659 Dus hebben we de naam van de functie. 1528 01:09:38,659 --> 01:09:39,950 In dit geval, het heet kubus. 1529 01:09:39,950 --> 01:09:42,033 En we noemen dat kubus omdat het is makkelijk te onthouden. 1530 01:09:42,033 --> 01:09:44,220 U kunt noemt het plein en het kan eigenlijk worden in blokjes. 1531 01:09:44,220 --> 01:09:45,500 Maakt niet uit. 1532 01:09:45,500 --> 01:09:48,020 Gewoon een naam die je bent toewijzen van uw functie. 1533 01:09:48,020 --> 01:09:51,660 >> Dit recht hier, int, is het van de parameter die u nodig hebt. 1534 01:09:51,660 --> 01:09:54,149 Dus wat deze functie doet nodig om te kunnen werken? 1535 01:09:54,149 --> 01:09:55,990 Nou, het heeft behoefte aan een ingang. 1536 01:09:55,990 --> 01:09:56,704 Ik noemde het invoeren. 1537 01:09:56,704 --> 01:09:58,120 Je kunt het noemen wat je wilt. 1538 01:09:58,120 --> 01:10:00,500 Maar ik moet iets van het type int. 1539 01:10:00,500 --> 01:10:03,730 Het gaat om daadwerkelijk uit te voeren wat is de binnenkant van hier, 1540 01:10:03,730 --> 01:10:04,990 het lichaam van de functie. 1541 01:10:04,990 --> 01:10:07,847 En dan is de return type hier, dit int-- 1542 01:10:07,847 --> 01:10:09,680 Alle het is me te vertellen is dat deze functie 1543 01:10:09,680 --> 01:10:11,250 ga terug naar mij in int. 1544 01:10:11,250 --> 01:10:14,460 Dus het gaat om te nemen in een int, en het gaat om u terug te geven een int. 1545 01:10:14,460 --> 01:10:17,750 Heeft iedereen begrijpen hoe de opmaak van dit soort werkt? 1546 01:10:17,750 --> 01:10:18,250 Cool. 1547 01:10:18,250 --> 01:10:24,690 1548 01:10:24,690 --> 01:10:25,740 >> OK. 1549 01:10:25,740 --> 01:10:31,770 Dus wees niet ongerust als dit lijkt een beetje abstract nu. 1550 01:10:31,770 --> 01:10:33,450 Dit is iets dat we praten over. 1551 01:10:33,450 --> 01:10:36,310 We zullen duiken in diepere later in de cursus. 1552 01:10:36,310 --> 01:10:41,170 De manier waarop een soort van hoger niveau abstractie van deze dingen werk 1553 01:10:41,170 --> 01:10:43,530 dat in het geheugen, in uw computer, alles 1554 01:10:43,530 --> 01:10:47,660 wordt in deze soort van de stack, zal ik zeggen. 1555 01:10:47,660 --> 01:10:49,070 >> Dus daar aan de top. 1556 01:10:49,070 --> 01:10:50,861 Ik weet niet of je jongens kunnen dat goed zien. 1557 01:10:50,861 --> 01:10:52,590 Ik zal proberen om in te zoomen. 1558 01:10:52,590 --> 01:10:55,111 Hier boven, we hebben de fysieke tekst 1559 01:10:55,111 --> 01:10:57,860 van wat de computer is interpreting-- alle nullen en enen die 1560 01:10:57,860 --> 01:10:59,540 bestaan ​​binnen onze computer. 1561 01:10:59,540 --> 01:11:03,390 En dan hebben we het geïnitialiseerd gegevens en geïnitialiseerde data, 1562 01:11:03,390 --> 01:11:05,340 wat wij noemen globale variabelen. 1563 01:11:05,340 --> 01:11:08,200 Dus variabelen die bestaan in alle programma's 1564 01:11:08,200 --> 01:11:11,815 en in uw hele, wezen, code. 1565 01:11:11,815 --> 01:11:13,940 Geen zorgen als jullie zijn soort onduidelijk op dit punt. 1566 01:11:13,940 --> 01:11:16,060 Het maakt eigenlijk niet uit nu. 1567 01:11:16,060 --> 01:11:18,680 >> En dan hebben we wat zogenaamde heap in een stapel. 1568 01:11:18,680 --> 01:11:21,140 Denk aan een stapel letterlijk als net als een stapel van dingen, 1569 01:11:21,140 --> 01:11:23,098 een stapel van verschillende dingen op de top worden geduwd 1570 01:11:23,098 --> 01:11:27,870 van elkaar dat de verschillende slaan variabelen en syntax in uw code. 1571 01:11:27,870 --> 01:11:31,460 En dan is hier helemaal onderaan, hebben we de omgevingsvariabelen 1572 01:11:31,460 --> 01:11:35,480 van wat je binnen uitvoert gewoon je kleine regel code. 1573 01:11:35,480 --> 01:11:40,510 >> En we gaan gewoon om in te zoomen in op het werkelijke stack deel. 1574 01:11:40,510 --> 01:11:43,880 Dus hier, als we waren om in te zoomen in op enkel dit gebied van de stapel, 1575 01:11:43,880 --> 01:11:45,140 dit is wat het lijkt. 1576 01:11:45,140 --> 01:11:48,590 En dit is eigenlijk best belangrijk wanneer jullie praten over functies, 1577 01:11:48,590 --> 01:11:52,330 omdat bericht dat de geheugen van uw computer 1578 01:11:52,330 --> 01:11:55,600 opslaat de variabelen en de functies 1579 01:11:55,600 --> 01:11:58,790 en de parameters van zowel functie en uw belangrijkste variabelen 1580 01:11:58,790 --> 01:12:00,190 op verschillende plaatsen. 1581 01:12:00,190 --> 01:12:03,390 >> Dus nu, de belangrijkste is de eigenlijke functie 1582 01:12:03,390 --> 01:12:04,780 dat je het uitvoeren van een code. 1583 01:12:04,780 --> 01:12:08,050 Je hebt de parameters hier opgeslagen en de lokale variabelen opgeslagen. 1584 01:12:08,050 --> 01:12:12,270 Lokale variabele betekent gewoon een variabele dat bestaat alleen in die functie. 1585 01:12:12,270 --> 01:12:15,610 En op de top van het, deze heb je aparte functie genaamd kubus. 1586 01:12:15,610 --> 01:12:18,240 Je hebt dat is parameters evenals die de lokale bevolking. 1587 01:12:18,240 --> 01:12:21,540 >> En de reden dat je kunt hier zien is dat wat 1588 01:12:21,540 --> 01:12:25,030 gebeurt wanneer kubus neemt in een waarde uit uw belangrijkste functie 1589 01:12:25,030 --> 01:12:27,640 is dat eigenlijk is het kopiëren van dat voorbij. 1590 01:12:27,640 --> 01:12:31,470 Dus als ik wilde cube 2 en terug 8, dat 2 1591 01:12:31,470 --> 01:12:33,730 feitelijk ingevoerd als parameter en het 1592 01:12:33,730 --> 01:12:37,690 gekopieerd, zodat u deze bestaande op twee verschillende plaatsen in het geheugen. 1593 01:12:37,690 --> 01:12:40,520 En je moet heel voorzichtig zijn Op herinneren die een van deze 1594 01:12:40,520 --> 01:12:42,520 je bent eigenlijk manipuleren. 1595 01:12:42,520 --> 01:12:47,170 En een voorbeeld van wat er gebeurd is dat zeer, zeer slecht zou zijn 1596 01:12:47,170 --> 01:12:48,050 Er bestaat hier. 1597 01:12:48,050 --> 01:12:50,760 1598 01:12:50,760 --> 01:12:58,650 >> Dus hier, heb ik, in theorie, een programma hier, een van de belangrijkste functie 1599 01:12:58,650 --> 01:13:02,180 dat ik verklaren een int x gelijk aan 1. 1600 01:13:02,180 --> 01:13:04,505 Ik verklaar een ander int y is gelijk aan 2. 1601 01:13:04,505 --> 01:13:06,380 En dan ben ik het runnen van het door middel van deze functie 1602 01:13:06,380 --> 01:13:09,647 zogenaamde swap, waar ik neem aan dat dat het omwisselen van de twee waarden. 1603 01:13:09,647 --> 01:13:11,480 En dan ga ik print ze uit, toch? 1604 01:13:11,480 --> 01:13:13,220 Dat is wat ik wil dit programma te doen. 1605 01:13:13,220 --> 01:13:15,180 >> Dus laten we naar beneden komen en een kijkje nemen. 1606 01:13:15,180 --> 01:13:18,200 Dus als ik eigenlijk schrijf een andere functie, zoals je kunt zien, 1607 01:13:18,200 --> 01:13:19,750 we hebben onze functie hier. 1608 01:13:19,750 --> 01:13:22,860 En dan hebben we onze tweede functie hier. 1609 01:13:22,860 --> 01:13:24,520 Void swap. 1610 01:13:24,520 --> 01:13:27,090 Leegte gewoon betekent dat het niet van plan om iets terug te keren. 1611 01:13:27,090 --> 01:13:28,930 De naam van de functie is riep swap, en het is 1612 01:13:28,930 --> 01:13:33,730 naar intake twee variabelen, int en een int b, van uw [onverstaanbaar] functie. 1613 01:13:33,730 --> 01:13:39,010 >> Dus in wezen hier, we zijn langs x en y in deze functie. 1614 01:13:39,010 --> 01:13:40,760 En als we creëren dit-- dus we willen 1615 01:13:40,760 --> 01:13:42,420 een tijdelijke waarde te creëren, toch? 1616 01:13:42,420 --> 01:13:43,930 We gaan toe te wijzen dat een. 1617 01:13:43,930 --> 01:13:45,388 En dan een gaat nu gelijk b. 1618 01:13:45,388 --> 01:13:47,660 En b gaat om terug te zijn wanneer de temperatuur waarde werd 1619 01:13:47,660 --> 01:13:51,070 die een, want als je dingen wilt ruilen, 1620 01:13:51,070 --> 01:13:52,320 je kunt niet zomaar willen ruilen hen. 1621 01:13:52,320 --> 01:13:54,360 >> Je moet een buiten te houden hier, zodat het onthoudt 1622 01:13:54,360 --> 01:13:56,485 wat dat is, want zodra je er een swap, je vergeet 1623 01:13:56,485 --> 01:13:58,200 wat dat oorspronkelijke waarde was, toch? 1624 01:13:58,200 --> 01:14:00,990 Dus in theorie, dit programma zou moeten werken, toch? 1625 01:14:00,990 --> 01:14:03,630 Als ik wilde de swap twee, moeten ze ruilen. 1626 01:14:03,630 --> 01:14:05,490 Dus laten we lopen en zien of het werkt. 1627 01:14:05,490 --> 01:14:11,130 1628 01:14:11,130 --> 01:14:16,940 >> Dus zoals jullie kunnen zien, x ooit 1 en y was eens 2. 1629 01:14:16,940 --> 01:14:21,475 En als ik print het uit, x is nog 1 en y 2. 1630 01:14:21,475 --> 01:14:25,970 Hmm, dit programma lijkt niet te zijn werken op de manier waarop ik wil dat het werkt. 1631 01:14:25,970 --> 01:14:29,950 Wil iemand om een ​​schot te nemen op gissen waarom dit gebeurde? 1632 01:14:29,950 --> 01:14:34,430 Het heeft te maken met de manier waarop dat verschillende dingen zijn 1633 01:14:34,430 --> 01:14:38,172 opgeslagen in verschillende plaatsen in het geheugen. 1634 01:14:38,172 --> 01:14:39,377 >> OK. 1635 01:14:39,377 --> 01:14:41,960 Dus jullie geen zorgen te maken te veel over dit recht nu. 1636 01:14:41,960 --> 01:14:46,610 Maar weet dat kubus lokale variabelen a en b, 1637 01:14:46,610 --> 01:14:49,230 want hier in onze functie, we hebben verklaard a en b 1638 01:14:49,230 --> 01:14:53,570 de variabelen die bestaan binnen de kubus, die functie. 1639 01:14:53,570 --> 01:14:59,490 Maar zoals je kunt zien, de parameters die het neemt in werden opgeslagen. 1640 01:14:59,490 --> 01:15:01,370 Maar we waren niet echt iets terug. 1641 01:15:01,370 --> 01:15:03,120 We waren eigenlijk niet veranderen x en y. 1642 01:15:03,120 --> 01:15:04,440 We waren net het veranderen a en b. 1643 01:15:04,440 --> 01:15:08,340 >> We hebben x en y gekopieerd naar iets genaamd a en b. 1644 01:15:08,340 --> 01:15:11,092 Maar we eigenlijk nooit gemanipuleerde x en y zelf. 1645 01:15:11,092 --> 01:15:12,800 Zijn jullie het zien Hoe dat gebeurt? 1646 01:15:12,800 --> 01:15:16,140 Is dat we gewoon hebben gekopieerd over, maar we hebben niet echt gehouden 1647 01:15:16,140 --> 01:15:18,030 bijhouden van waar ze in het geheugen waren. 1648 01:15:18,030 --> 01:15:20,127 >> En nu de computer zoekt, oh, ik heb 1649 01:15:20,127 --> 01:15:21,960 lopen deze zaak door middel van deze mooie functie. 1650 01:15:21,960 --> 01:15:23,690 Maar x en y steeds x en y. 1651 01:15:23,690 --> 01:15:26,240 Niets is gebeurd met ze vanwege het feit 1652 01:15:26,240 --> 01:15:28,340 dat deze parameters en lokale variabelen 1653 01:15:28,340 --> 01:15:30,150 worden opgeslagen op een andere plaats in het geheugen. 1654 01:15:30,150 --> 01:15:32,030 Dit is een hogere concept dat we zullen 1655 01:15:32,030 --> 01:15:34,300 beginnen met het zien later in de cursus. 1656 01:15:34,300 --> 01:15:36,950 Maar weet dat dit Een probleem dat kan gebeuren 1657 01:15:36,950 --> 01:15:41,400 en dat we uitzoeken manieren over hoe om gaan met deze later in de cursus. 1658 01:15:41,400 --> 01:15:41,900 OK. 1659 01:15:41,900 --> 01:15:47,750 1660 01:15:47,750 --> 01:15:48,250 Prima. 1661 01:15:48,250 --> 01:15:51,780 Dus we de laatste begrip bent echt te dekken 1662 01:15:51,780 --> 01:15:53,880 dat gaat om bruikbaar te zijn voor de PSET deze week 1663 01:15:53,880 --> 01:15:56,060 zijn wat worden genoemd command line argumenten. 1664 01:15:56,060 --> 01:16:00,820 Dus Rob in zijn lezing ging door soort kort op hoe deze werken. 1665 01:16:00,820 --> 01:16:02,770 Hoofdzakelijk dat als je aan het schrijven bent 1666 01:16:02,770 --> 01:16:06,280 als een belangrijke functie, als we schreef functies alvorens in het verleden, 1667 01:16:06,280 --> 01:16:07,804 hadden we int main leegte. 1668 01:16:07,804 --> 01:16:10,470 En de reden dat we hadden er leegte was omdat onze programma's niet 1669 01:16:10,470 --> 01:16:12,520 moeten invoeren waarden te lopen, toch? 1670 01:16:12,520 --> 01:16:16,020 Toen ik liep Mario, heb ik niet nodig eigenlijk enkel type in iets 1671 01:16:16,020 --> 01:16:16,970 toen ik liep Mario. 1672 01:16:16,970 --> 01:16:20,170 Ik kon de gebruiker later gevraagd. 1673 01:16:20,170 --> 01:16:22,450 Maar dat niet altijd het geval zal zijn. 1674 01:16:22,450 --> 01:16:24,980 >> Bijvoorbeeld, in deze probleem week zet, 1675 01:16:24,980 --> 01:16:28,365 je gaat worden gevraagd, dat in Naast het runnen van uw programma, 1676 01:16:28,365 --> 01:16:30,990 je gaat te willen invoeren bepaalde dingen in een rechte zoals u 1677 01:16:30,990 --> 01:16:32,050 run je programma. 1678 01:16:32,050 --> 01:16:34,720 Dus de manier waarop we dat doen is genoemd een command line argument, dat 1679 01:16:34,720 --> 01:16:37,280 is als een argument u kunt invoeren direct 1680 01:16:37,280 --> 01:16:39,260 als je probeert om je programma uit te voeren. 1681 01:16:39,260 --> 01:16:44,680 >> Dus de notatie voor deze, het is vrij complex ogende, 1682 01:16:44,680 --> 01:16:47,320 maar het is echt niet zo moeilijk. Zo int main-- 1683 01:16:47,320 --> 01:16:48,910 dat is gewoon uw belangrijkste functie. 1684 01:16:48,910 --> 01:16:52,110 In argc komma reeks argv haakjes. 1685 01:16:52,110 --> 01:16:56,040 Dus alles wat te zeggen is dat dit int al die argc-- heeft je te vertellen 1686 01:16:56,040 --> 01:17:00,560 is dat deze zijn het aantal de argumenten van de computer moet verwachten. 1687 01:17:00,560 --> 01:17:03,130 >> Dus een ding dat is echt belangrijk om bij te houden 1688 01:17:03,130 --> 01:17:07,080 is de fysieke naam van uw programma geldt als een van de argumenten. 1689 01:17:07,080 --> 01:17:11,080 Dus als ik wilde mijn programma draaien plus een extra command line 1690 01:17:11,080 --> 01:17:13,310 argument, ik ben eigenlijk zullen twee hebben. 1691 01:17:13,310 --> 01:17:15,080 Argc is eigenlijk gaat om twee. 1692 01:17:15,080 --> 01:17:18,010 En dan touwtje argv bracket-- dat alles doet, 1693 01:17:18,010 --> 01:17:20,410 het geeft me een array van strings dat is 1694 01:17:20,410 --> 01:17:24,870 ga gewoon weer te geven en op te slaan wat al die command line argumenten. 1695 01:17:24,870 --> 01:17:34,090 >> Dus bijvoorbeeld, als ik wilde om dit te hebben programma, ./copy infile outfile, toch? 1696 01:17:34,090 --> 01:17:37,330 Dat is gewoon een typische Linux-commando. 1697 01:17:37,330 --> 01:17:38,830 Wat is eigenlijk argc? 1698 01:17:38,830 --> 01:17:41,320 Hoeveel opdrachtregelargumenten zijn er eigenlijk in deze? 1699 01:17:41,320 --> 01:17:45,130 Alle dit doet is een kopie van een infile van de naam van een bestand 1700 01:17:45,130 --> 01:17:47,070 en kopieert het in een ander bestand, toch? 1701 01:17:47,070 --> 01:17:48,700 Dat is dit allemaal doet. 1702 01:17:48,700 --> 01:17:53,080 Zoals je kunt zien, ik doe het op een lijn zonder dat hoeft het programma. 1703 01:17:53,080 --> 01:17:55,380 >> Wat is onze argc in dit geval? 1704 01:17:55,380 --> 01:17:58,968 Hoeveel argumenten hebben we? 1705 01:17:58,968 --> 01:17:59,634 PUBLIEK: Drie? 1706 01:17:59,634 --> 01:18:01,200 ANDI Peng: We hebben drie, precies. 1707 01:18:01,200 --> 01:18:05,030 Dus het is zeer intuïtief denk dat het gewoon 1708 01:18:05,030 --> 01:18:06,290 de infile en outfile. 1709 01:18:06,290 --> 01:18:10,190 Maar dat de fysieke naam programma je draait telt als één. 1710 01:18:10,190 --> 01:18:13,220 Dus in dit geval, argc is eigenlijk drie. 1711 01:18:13,220 --> 01:18:15,860 Hoe zit het, wat is argv 0? 1712 01:18:15,860 --> 01:18:18,180 Vergeet niet, alle van de command line argumenten 1713 01:18:18,180 --> 01:18:20,500 werden opgeslagen in een array van strings. 1714 01:18:20,500 --> 01:18:24,140 Dus als ik probeer om toegang te krijgen, wat zou argv beugel 0 geef me? 1715 01:18:24,140 --> 01:18:25,364 >> PUBLIEK: [onverstaanbaar]. 1716 01:18:25,364 --> 01:18:26,155 ANDI PENG: Precies. 1717 01:18:26,155 --> 01:18:28,550 Het zou me de stip te geven slash exemplaar, want dat is 1718 01:18:28,550 --> 01:18:31,070 de 0-element, de eerste element van mijn array. 1719 01:18:31,070 --> 01:18:33,236 Hoe zit het met argv 1? 1720 01:18:33,236 --> 01:18:33,945 >> Publiek: INFILE. 1721 01:18:33,945 --> 01:18:35,070 ANDI Peng: INFILE, precies. 1722 01:18:35,070 --> 01:18:36,272 Hoe zit het met argv 2? 1723 01:18:36,272 --> 01:18:37,022 Publiek: outfile. 1724 01:18:37,022 --> 01:18:38,190 ANDI Peng: outfile. 1725 01:18:38,190 --> 01:18:39,290 Dit is nu een beetje lastig. 1726 01:18:39,290 --> 01:18:42,630 Wat doen jullie denken argv 3 gaat geven me 1727 01:18:42,630 --> 01:18:45,522 als ik probeerde te drukken dat uit? 1728 01:18:45,522 --> 01:18:48,260 >> PUBLIEK: [onverstaanbaar]? 1729 01:18:48,260 --> 01:18:50,164 >> ANDI Peng: Had je een hand omhoog? 1730 01:18:50,164 --> 01:18:50,663 Ja. 1731 01:18:50,663 --> 01:18:51,550 >> Publiek: Een alternatief. 1732 01:18:51,550 --> 01:18:52,341 >> ANDI PENG: Precies. 1733 01:18:52,341 --> 01:18:55,440 Dus onthoud in de lezing die we aan het einde van een wedstrijd iets 1734 01:18:55,440 --> 01:18:56,640 riep een null-terminator? 1735 01:18:56,640 --> 01:18:58,890 We zullen ook in dit verderop in de klasse. 1736 01:18:58,890 --> 01:19:02,472 Maar weet dat in de notatie, de manier waarop uw computer 1737 01:19:02,472 --> 01:19:04,430 weet dat het is het einde van de array is dat het 1738 01:19:04,430 --> 01:19:07,310 zet zoiets als een null terminator of een streepje nul. 1739 01:19:07,310 --> 01:19:12,047 >> Dus als u probeert te openen argv 3, je gaat dit dashboard 0 geraakt. 1740 01:19:12,047 --> 01:19:13,630 Dit is nog meer een strikvraag. 1741 01:19:13,630 --> 01:19:17,020 Hoe zit het met argv 4? 1742 01:19:17,020 --> 01:19:20,920 Dus dit is afgelopen null terminator, voorbij de grenzen van onze array. 1743 01:19:20,920 --> 01:19:24,380 Wat denk je dat er gaat gebeuren wanneer we proberen om dat te doen? 1744 01:19:24,380 --> 01:19:25,842 >> PUBLIEK: [onverstaanbaar]? 1745 01:19:25,842 --> 01:19:26,550 ANDI PENG: Sorry? 1746 01:19:26,550 --> 01:19:28,025 Zeggen dat een beetje harder? 1747 01:19:28,025 --> 01:19:29,086 >> PUBLIEK: [onverstaanbaar]. 1748 01:19:29,086 --> 01:19:29,710 ANDI Peng: Ja. 1749 01:19:29,710 --> 01:19:32,420 Dat is de naam van de gebied dat u zult waarschijnlijk te krijgen. 1750 01:19:32,420 --> 01:19:36,610 Maar weet dat argv 4-- die u toelaat om toegang 1751 01:19:36,610 --> 01:19:38,610 plaatsen in uw computer geheugen dat je echt 1752 01:19:38,610 --> 01:19:41,650 niet aanraken, want nu weet je wat argv is. 1753 01:19:41,650 --> 01:19:46,220 Je weet dat het een array van grootte 3 dat heeft dot kopiëren infile en outfile. 1754 01:19:46,220 --> 01:19:50,200 >> Als u probeert om zo ver gaan verder dan dat dat je langs de null-terminator, 1755 01:19:50,200 --> 01:19:53,050 uw computer heeft waarschijnlijk opgeslagen iets in argv 4. 1756 01:19:53,050 --> 01:19:55,790 En je echt niet mag worden toegang krijgen tot argv 4, 1757 01:19:55,790 --> 01:19:58,130 omdat je een bestand hebt kast en je bent alleen 1758 01:19:58,130 --> 01:19:59,790 toegang krijgen tot die drie planken. 1759 01:19:59,790 --> 01:20:02,870 Maar als je probeert om veel verder te komen de plank waar u zijn toegestaan, 1760 01:20:02,870 --> 01:20:04,930 je gaat beginnen knoeien met andere dingen in het geheugen van uw computer. 1761 01:20:04,930 --> 01:20:06,690 Dat gaat echt, echt slecht. 1762 01:20:06,690 --> 01:20:07,440 Zo weet alleen dat. 1763 01:20:07,440 --> 01:20:10,370 Wees zeer voorzichtig dat u niet zomaar beginnen 1764 01:20:10,370 --> 01:20:14,772 toegang tot elementen in een array die waren niet in wat je wilde maken. 1765 01:20:14,772 --> 01:20:17,114 Yep. 1766 01:20:17,114 --> 01:20:18,430 >> OK. 1767 01:20:18,430 --> 01:20:26,360 Dus we gaan naar een ander te doen terminal bijvoorbeeld hier. 1768 01:20:26,360 --> 01:20:27,300 OK. 1769 01:20:27,300 --> 01:20:29,900 Dus Rob snel in collegezaal de andere dag ging 1770 01:20:29,900 --> 01:20:35,040 door dit voorbeeld, waar hij had int main int argc reeks argv 1771 01:20:35,040 --> 01:20:39,090 beugels, die is me te vertellen dat ik ben ga command line argumenten. 1772 01:20:39,090 --> 01:20:41,860 >> Hij heeft, als argc gelijk evenaart 2-- herinneren, 1773 01:20:41,860 --> 01:20:45,070 evenaart gelijken betekent vergelijking. 1774 01:20:45,070 --> 01:20:47,980 Als deze gelijk is aan 2, dan ben ik perse gaan hello, 1775 01:20:47,980 --> 01:20:51,190 ongeacht het eerste element van de array. 1776 01:20:51,190 --> 01:20:54,100 Else print, hello wereld. 1777 01:20:54,100 --> 01:20:56,300 Wat gaat dit gebeuren in wezen? 1778 01:20:56,300 --> 01:21:00,570 Kan iemand gewoon uitleggen Engels wat dit programma aan het doen is? 1779 01:21:00,570 --> 01:21:01,272 Ja. 1780 01:21:01,272 --> 01:21:08,160 >> Publiek: Als iemand getypt in een commando en zei dat hun voor- en achternaam, 1781 01:21:08,160 --> 01:21:12,096 het zal niet alleen af ​​te drukken eerste en zeggen: hallo, 1782 01:21:12,096 --> 01:21:14,090 wat uw voornaam is. 1783 01:21:14,090 --> 01:21:15,410 >> ANDI Peng: OK, laten draaien. 1784 01:21:15,410 --> 01:21:22,470 Dus bijvoorbeeld, als ik te maken Dit bestand maken to-- hallo hallo 1785 01:21:22,470 --> 01:21:24,500 to-- wat wil je dat ik invoeren? 1786 01:21:24,500 --> 01:21:25,900 >> PUBLIEK: Voor- en achternaam. 1787 01:21:25,900 --> 01:21:27,280 >> ANDI Peng: Voor- en achternaam? 1788 01:21:27,280 --> 01:21:28,180 Spaces? 1789 01:21:28,180 --> 01:21:29,690 >> Publiek: Ja. 1790 01:21:29,690 --> 01:21:33,490 >> ANDI Peng: Kan iemand vertellen me nu, wat is argc? 1791 01:21:33,490 --> 01:21:35,630 Gewoon daar? 1792 01:21:35,630 --> 01:21:36,290 Oeps, sorry. 1793 01:21:36,290 --> 01:21:37,920 Laat me terug te gaan. 1794 01:21:37,920 --> 01:21:40,740 Hoeveel opdrachtregelargumenten zijn-- jullie niet echt zien. 1795 01:21:40,740 --> 01:21:43,760 Maar ik zal proberen om in te zoomen. 1796 01:21:43,760 --> 01:21:44,290 Ik probeer. 1797 01:21:44,290 --> 01:21:45,414 Ja, er is drie, toch? 1798 01:21:45,414 --> 01:21:48,750 Het is dot slash hello, het is Andi, en het is Peng. 1799 01:21:48,750 --> 01:21:51,870 >> Dus wat doen jullie denken dit programma zal worden uit te printen? 1800 01:21:51,870 --> 01:21:55,550 1801 01:21:55,550 --> 01:21:56,060 Oh. 1802 01:21:56,060 --> 01:21:57,120 Oh sorry. 1803 01:21:57,120 --> 01:21:57,810 Verkeerde naam. 1804 01:21:57,810 --> 01:22:03,630 1805 01:22:03,630 --> 01:22:06,130 Het afdrukken van, hello wereld. 1806 01:22:06,130 --> 01:22:09,603 Heeft iemand wil uitleggen waarom dat gebeurt? 1807 01:22:09,603 --> 01:22:10,103 Ja? 1808 01:22:10,103 --> 01:22:11,019 >> PUBLIEK: [onverstaanbaar]. 1809 01:22:11,019 --> 01:22:14,439 1810 01:22:14,439 --> 01:22:15,230 ANDI PENG: Precies. 1811 01:22:15,230 --> 01:22:19,940 Dus hier, zijn voorwaardelijk is, indien argc gelijk gelijk 2. 1812 01:22:19,940 --> 01:22:23,650 Dus alleen in het geval dat er twee commandoregel argumenten. 1813 01:22:23,650 --> 01:22:25,850 Dan ga ik om af te drukken, hallo, wat het ook is. 1814 01:22:25,850 --> 01:22:28,210 Maar anders, ik ga afdrukken gewoon, hello wereld. 1815 01:22:28,210 --> 01:22:30,040 Zo heeft iemand wil voor mij een voorbeeld geven 1816 01:22:30,040 --> 01:22:35,050 van hoe ik in staat om daadwerkelijk zou zijn krijgen om de waarde van argv 1 afdrukken? 1817 01:22:35,050 --> 01:22:38,600 >> Wat zou ik moeten invoeren hier? 1818 01:22:38,600 --> 01:22:39,840 Slechts één ding, toch? 1819 01:22:39,840 --> 01:22:42,900 Omdat de stip hallo tegen al geldt als het eerste argument. 1820 01:22:42,900 --> 01:22:43,930 Ik heb slechts één meer. 1821 01:22:43,930 --> 01:22:46,470 Dus dot hallo als ik gewoon doen Andi. 1822 01:22:46,470 --> 01:22:47,270 Hallo, Andi. 1823 01:22:47,270 --> 01:22:49,186 Heeft iedereen begrijpen waarom dat gebeurt? 1824 01:22:49,186 --> 01:22:49,602 Ja. 1825 01:22:49,602 --> 01:22:52,500 >> Publiek: Dus de ruimte tussen de commando line-- is dat [onverstaanbaar]? 1826 01:22:52,500 --> 01:22:56,247 1827 01:22:56,247 --> 01:22:56,830 ANDI PENG: No. 1828 01:22:56,830 --> 01:23:03,810 Zodat de ruimte in een opdrachtregel argument, x, om uw computer te vertellen 1829 01:23:03,810 --> 01:23:06,820 dat dit het begin van een nieuwe reeks. 1830 01:23:06,820 --> 01:23:11,130 Dus touwtje argv hier-- deze winkels al uw commando lijn argumenten 1831 01:23:11,130 --> 01:23:13,110 in strings. 1832 01:23:13,110 --> 01:23:17,420 En zo de ruimte in de opdrachtregel argument-- dat alles doet is u te vertellen, 1833 01:23:17,420 --> 01:23:21,030 Dit is het einde van een koord en het is tijd om verder te gaan naar een andere. 1834 01:23:21,030 --> 01:23:21,990 >> Ja. 1835 01:23:21,990 --> 01:23:23,530 Dit is vrij belangrijk voor uw PSET, omdat je 1836 01:23:23,530 --> 01:23:24,613 zullen testen hiervan. 1837 01:23:24,613 --> 01:23:29,300 Dus heeft iemand Voor vragen over dit? 1838 01:23:29,300 --> 01:23:30,016 OK, cool. 1839 01:23:30,016 --> 01:23:30,515 Ja? 1840 01:23:30,515 --> 01:23:35,008 >> Publiek: Dus de reden dat je zou zet integer argument calc plaats 1841 01:23:35,008 --> 01:23:40,059 van [onverstaanbaar] zou zijn wanneer je wilt om aanvullende informatie te typen 1842 01:23:40,059 --> 01:23:41,030 [Onverstaanbaar]? 1843 01:23:41,030 --> 01:23:42,090 >> ANDI Peng: Ja, precies. 1844 01:23:42,090 --> 01:23:45,370 Sommige programma's zullen vereisen het invoeren van een command line argument 1845 01:23:45,370 --> 01:23:47,732 dat zij passen in en gebruikt deze. 1846 01:23:47,732 --> 01:23:49,035 Ja. 1847 01:23:49,035 --> 01:23:50,410 Publiek: Dus wat als [onverstaanbaar]? 1848 01:23:50,410 --> 01:23:55,440 1849 01:23:55,440 --> 01:23:58,870 >> ANDI Peng: Nou, wat heb ik om vervolgens te veranderen in mijn programma? 1850 01:23:58,870 --> 01:23:59,870 >> Publiek: Slechts 3. 1851 01:23:59,870 --> 01:24:12,460 1852 01:24:12,460 --> 01:24:15,020 >> ANDI Peng: Waarom is dat gebeurt, denk je? 1853 01:24:15,020 --> 01:24:18,940 >> Publiek: Omdat de [onverstaanbaar]. 1854 01:24:18,940 --> 01:24:22,370 >> Publiek: Je zou moeten verander het in 2 [onverstaanbaar]. 1855 01:24:22,370 --> 01:24:23,484 >> Publiek: 1 en 2. 1856 01:24:23,484 --> 01:24:24,650 ANDI PENG: 1 en 2, precies. 1857 01:24:24,650 --> 01:24:29,150 Dus in dit geval, zou je waarschijnlijk wil twee printf statements-- hebben 1858 01:24:29,150 --> 01:24:32,601 een die argv 1 gedrukt en degene die gedrukte argv 2. 1859 01:24:32,601 --> 01:24:33,100 Hier. 1860 01:24:33,100 --> 01:24:34,516 Ik kan eigenlijk doen dat echt snel. 1861 01:24:34,516 --> 01:24:46,720 1862 01:24:46,720 --> 01:24:47,320 Daar ga je. 1863 01:24:47,320 --> 01:24:48,287 Oh. 1864 01:24:48,287 --> 01:24:49,370 Niet helemaal wat je wilde. 1865 01:24:49,370 --> 01:24:52,590 Maar als jullie prutsen met de opmaak, zal het naar buiten komen. 1866 01:24:52,590 --> 01:24:54,981 Ja. 1867 01:24:54,981 --> 01:24:55,480 Cool. 1868 01:24:55,480 --> 01:24:57,670 Ik weet dat we een beetje kort op tijd. 1869 01:24:57,670 --> 01:25:02,469 Maar ik ga gewoon om snel te besteden paar minuten gaan door behulpzaam-- 1870 01:25:02,469 --> 01:25:03,760 Publiek: Je hebt twee minuten. 1871 01:25:03,760 --> 01:25:05,010 ANDI Peng: Ik heb twee minuten? 1872 01:25:05,010 --> 01:25:06,340 Dankjewel. 1873 01:25:06,340 --> 01:25:09,180 Enkele snelle PSET tips. 1874 01:25:09,180 --> 01:25:13,100 Dus voor deze PSET, ik beveel, zoals ik al zei, iedereen om de spec lezen. 1875 01:25:13,100 --> 01:25:16,804 U zult het schrijven van drie programs-- één riep initials.c, een zogenaamde caesar.c, 1876 01:25:16,804 --> 01:25:17,720 een zogenaamde vigenere.c. 1877 01:25:17,720 --> 01:25:20,465 1878 01:25:20,465 --> 01:25:22,340 Enkele belangrijke tips die jullie echt wilt 1879 01:25:22,340 --> 01:25:25,040 dus in mind-- te houden er is deze functie 1880 01:25:25,040 --> 01:25:27,770 riep atoi-- zoals ik willen zeggen, a trois. 1881 01:25:27,770 --> 01:25:29,520 Onduidelijk of dat eigenlijk hoe je het zegt. 1882 01:25:29,520 --> 01:25:32,510 Maar alles wat het doet, is het invoeren van. 1883 01:25:32,510 --> 01:25:34,320 Het zet een string naar een int. 1884 01:25:34,320 --> 01:25:37,490 Dus vertegenwoordigt een ASCII i integer. 1885 01:25:37,490 --> 01:25:40,310 Het is gewoon het omzetten van ASCII waarden waarden integer. 1886 01:25:40,310 --> 01:25:44,510 Dus onthoud argv, de array die winkels al uw commando lijn arguments-- 1887 01:25:44,510 --> 01:25:46,300 het hen allemaal opgeslagen als strings. 1888 01:25:46,300 --> 01:25:50,010 En dus als je wilt om te kunnen een ervan wordt een integer, 1889 01:25:50,010 --> 01:25:52,750 je gaat te hebben deze waarde hier te gebruiken. 1890 01:25:52,750 --> 01:25:56,690 >> Modulo, zoals wij behandeld eerder in de klas vandaag, 1891 01:25:56,690 --> 01:25:59,550 hiermee kunt u het hebben restant van wat je hebt. 1892 01:25:59,550 --> 01:26:03,620 Dus als we echt, echt grote aantallen in Caesar, 1893 01:26:03,620 --> 01:26:06,117 wat als we het einde van een reeks van Vigenere? 1894 01:26:06,117 --> 01:26:08,450 Hoe ga je om te kunnen om dat te wikkelen rond? 1895 01:26:08,450 --> 01:26:11,330 Als ik raakte z en ik wil is om terug te gaan naar een, 1896 01:26:11,330 --> 01:26:13,650 hoe ga ik om te krijgen dat te wikkelen rond? 1897 01:26:13,650 --> 01:26:15,960 Waarschijnlijk wilt gebruiken modulo daar ergens. 1898 01:26:15,960 --> 01:26:19,190 >> Ten tweede, rondkijken uw bibliotheek. ctype.h. 1899 01:26:19,190 --> 01:26:20,680 Dat is een nieuwe bibliotheek die we hebben. 1900 01:26:20,680 --> 01:26:25,270 Je zult een hoop heel erg vinden, bruikbare functions-- isupper, islower, 1901 01:26:25,270 --> 01:26:27,681 toupper, tolower, isAlpha, et cetera. 1902 01:26:27,681 --> 01:26:30,680 Alle functies die zeer nuttig zullen zijn als je probeert te achterhalen, 1903 01:26:30,680 --> 01:26:33,780 is dit personage een kleine letter? 1904 01:26:33,780 --> 01:26:35,730 Hoe kan ik dit omzetten string naar een hoofdletter? 1905 01:26:35,730 --> 01:26:38,146 Al deze dingen zal heel zijn, zeer nuttig zijn voor uw PSET. 1906 01:26:38,146 --> 01:26:42,720 1907 01:26:42,720 --> 01:26:45,500 OK. 1908 01:26:45,500 --> 01:26:49,644 >> Kantooruren vanavond zijn om 08:00 11:00 in de TEAL klas morgen 1909 01:26:49,644 --> 01:26:51,310 evenals woensdag en donderdagavond. 1910 01:26:51,310 --> 01:26:53,280 De openingstijden zijn in commons. 1911 01:26:53,280 --> 01:26:56,180 Ik raad sterk aan jullie Alle meteen aan de slag, 1912 01:26:56,180 --> 01:27:00,490 omdat je niet wilt dat jongen die donderdagavond heeft problemen 1913 01:27:00,490 --> 01:27:03,870 het indienen van uw PSET en zoals, ik weet niet wat te doen. 1914 01:27:03,870 --> 01:27:05,870 Ik begon, ik klaar, ik ingediend. 1915 01:27:05,870 --> 01:27:09,737 Probeer jezelf te geven wat ruimte, omdat in de code altijd problemen optreden. 1916 01:27:09,737 --> 01:27:11,570 U wilt er zeker van dat je jezelf 1917 01:27:11,570 --> 01:27:14,810 veel tijd te kunnen de psets voltooien. 1918 01:27:14,810 --> 01:27:15,310 Cool. 1919 01:27:15,310 --> 01:27:16,720 Ik zal hier in de buurt hangen. 1920 01:27:16,720 --> 01:27:18,226 >> PUBLIEK: Is dit al online? 1921 01:27:18,226 --> 01:27:20,850 ANDI Peng: Ik weet niet of het is online al, maar het zal zijn. 1922 01:27:20,850 --> 01:27:23,500 Ik zal hier in de buurt hangen als iedereen heeft vragen al. 1923 01:27:23,500 --> 01:27:25,390 Bedankt voor het komen. 1924 01:27:25,390 --> 01:27:27,105