1 00:00:00,000 --> 00:00:07,070 [Powered by Google Translate] [♪ Buzzing ♪] 2 00:00:07,070 --> 00:00:10,380 Så för att introducera dig till vad jag har på skärmen, 3 00:00:10,380 --> 00:00:12,710 Det är ett av de verktyg som vi utvecklat under sommaren, 4 00:00:12,710 --> 00:00:15,530 det kallas CS50 utrymmen, 5 00:00:15,530 --> 00:00:18,860 och det är vår gemensamma kodning ansökan 6 00:00:18,860 --> 00:00:20,180 att vi kommer att använda i sektioner. 7 00:00:20,180 --> 00:00:22,470 Det är ganska coolt. 8 00:00:22,470 --> 00:00:26,040 Har någon av er sett CS50 köra ännu? 9 00:00:26,040 --> 00:00:29,760 Låt mig dra upp det i en annan flik. 10 00:00:29,760 --> 00:00:33,440 Run.cs50.net 11 00:00:33,440 --> 00:00:36,230 Så 12 00:00:36,230 --> 00:00:39,700 om du går till run.cs50.net, 13 00:00:39,700 --> 00:00:43,030 du kan se att detta är en i din webbläsare sätt 14 00:00:43,030 --> 00:00:45,940 faktiskt kod - skriv C-kod, 15 00:00:45,940 --> 00:00:47,460 och kör den, 16 00:00:47,460 --> 00:00:50,960 så det både kompilerar det, kör den, då återgår utsignalen till dig, 17 00:00:50,960 --> 00:00:53,350 så detta är typ av ett coolt sätt att experimentera 18 00:00:53,350 --> 00:00:56,060 med några av koden som David går över i föreläsningar 19 00:00:56,060 --> 00:00:58,640 och vi ger på dig på problem uppsättningar 20 00:00:58,640 --> 00:01:01,900 utan att behöva skjuta upp apparaten. 21 00:01:01,900 --> 00:01:04,489 >> Så vad Spaces gör som skiljer sig från det 22 00:01:04,489 --> 00:01:07,450 Om jag byter tillbaka till den här fliken 23 00:01:07,450 --> 00:01:11,580 Spaces är CS50 kör, som du ser här, 24 00:01:11,580 --> 00:01:15,380 men om vi bläddrar över och titta på den andra sidan av fönstret, 25 00:01:15,380 --> 00:01:18,130 du ser rätt jag är den enda personen i detta utrymme, 26 00:01:18,130 --> 00:01:21,030 men vad jag ska göra är att be er att delta i denna Space med mig 27 00:01:21,030 --> 00:01:24,590 och vi kommer alla få kod i samma lilla fönstret, 28 00:01:24,590 --> 00:01:26,070 dela kod med varandra, 29 00:01:26,070 --> 00:01:28,900 och tala om skillnaderna mellan vår kod. 30 00:01:28,900 --> 00:01:31,530 Så det är lite av en cool sak - 31 00:01:31,530 --> 00:01:35,770 så att gå med, om du skulle besöka den här länken här på toppen 32 00:01:35,770 --> 00:01:38,980 som jag har markerat, 33 00:01:38,980 --> 00:01:53,860 kan du bara skriva in apps.cs50.net/spaces/vqcspSnO. 34 00:01:53,860 --> 00:01:56,610 >> Okej, så börja, 35 00:01:56,610 --> 00:01:59,720 Jag ska ge er en liten bit av en rundtur i detta. 36 00:01:59,720 --> 00:02:01,720 Vi ska göra några fåniga lite kodning med det först, 37 00:02:01,720 --> 00:02:06,200 bara så att alla får kinda en känsla för hur det är, 38 00:02:06,200 --> 00:02:09,000 men vad jag har gjort - 39 00:02:09,000 --> 00:02:11,830 eller vad jag ska göra här är - 40 00:02:11,830 --> 00:02:13,480 Jag ska ta den kod som jag har skrivit här, 41 00:02:13,480 --> 00:02:15,800 vilket som ni ser just nu är tom; 42 00:02:15,800 --> 00:02:17,090 det gör ingenting. 43 00:02:17,090 --> 00:02:21,080 Det är bara panna plattan kod, vi kallar det. 44 00:02:21,080 --> 00:02:23,820 Med lite att göra kommentar. 45 00:02:23,820 --> 00:02:27,850 Jag ska spara den genom att trycka här knappen Spara. 46 00:02:27,850 --> 00:02:30,190 Och vad som gör det 47 00:02:30,190 --> 00:02:34,400 betonade upp det här kort - denna översyn spara grön ruta, 48 00:02:34,400 --> 00:02:37,570 och nu, om du söker efter mig i rymden, 49 00:02:37,570 --> 00:02:40,340 du klickar mitt namn, 50 00:02:40,340 --> 00:02:43,370 du kan se att jag har denna revidering här, 51 00:02:43,370 --> 00:02:45,490 och om du klickar på den revidering, 52 00:02:45,490 --> 00:02:48,240 det ska ladda den koden i din Space också. 53 00:02:50,510 --> 00:02:54,160 >> Så har alla laddats att koden i sin Space? 54 00:02:54,160 --> 00:02:57,810 Okej, om du ännu inte, gå vidare och göra det, 55 00:02:57,810 --> 00:03:01,120 och sedan vad jag vill att ni ska göra i denna lilla att göra avsnittet 56 00:03:01,120 --> 00:03:05,940 är att skriva lite med printf om dig själv, 57 00:03:05,940 --> 00:03:08,310 så till exempel, skulle jag skriva 58 00:03:08,310 --> 00:03:12,270 printf ("Mitt namn är Nate"); 59 00:03:15,140 --> 00:03:17,700 och då jag skulle skriva 60 00:03:17,700 --> 00:03:21,660 "Jag tog examen 2009 61 00:03:21,660 --> 00:03:24,440 från Stanford " 62 00:03:26,050 --> 00:03:28,390 och jag skulle älska att höra om 63 00:03:28,390 --> 00:03:30,270 Vilket år är du i skolan, 64 00:03:30,270 --> 00:03:33,910 oavsett om du är på college eller handelshögskola 65 00:03:33,910 --> 00:03:36,130 eller annan Harvard School, 66 00:03:36,130 --> 00:03:39,200 vad du studerar om det är känt ännu; 67 00:03:39,200 --> 00:03:41,290 om det inte är känt, det är helt cool. 68 00:03:41,290 --> 00:03:45,170 Jag har inte bestämma förrän jag var sen i min andra år. 69 00:03:46,910 --> 00:03:49,210 och då skulle jag också vilja veta 70 00:03:49,210 --> 00:03:51,610 något galet du vill berätta för mig eller 71 00:03:51,610 --> 00:03:54,790 något om klassen eller bara något annat. 72 00:03:56,930 --> 00:04:00,370 När du är klar skriver det med din lilla printf, 73 00:04:00,370 --> 00:04:03,480 Om du sparar en översyn eller snarare 74 00:04:03,480 --> 00:04:06,080 först se till att du kan köra det 75 00:04:06,080 --> 00:04:10,640 och att det skriver ut exakt vad du vill att det ska skriva ut, 76 00:04:14,050 --> 00:04:16,399 och sedan om du gå vidare och rädda revidering 77 00:04:16,399 --> 00:04:21,600 med översynen knappen Spara denna första lilla killen här, 78 00:04:24,080 --> 00:04:27,340 och vi kommer ganska gå igenom och göra lite introduktion på det sättet. 79 00:04:27,340 --> 00:04:30,150 Så du bör bara slå på knappen Spela, 80 00:04:30,150 --> 00:04:32,550 som är upp här på upp till vänster, 81 00:04:32,550 --> 00:04:35,340 så här Spela-knappen på övre vänstra kommer 82 00:04:35,340 --> 00:04:39,050 skicka din kod iväg till vår server där det blir sammanställas och sedan köra. 83 00:04:40,600 --> 00:04:43,300 Så vad är kinda galen om detta är 84 00:04:43,300 --> 00:04:46,550 denna kod faktiskt inte körs på din dator, 85 00:04:46,550 --> 00:04:49,290 det är faktiskt skickas över Internet. 86 00:04:49,290 --> 00:04:51,240 >> Hur är läget, Charlotte? 87 00:04:51,240 --> 00:04:54,810 >> I - okej. Jag är - Jag tror jag är 88 00:04:54,810 --> 00:04:57,330 har svårt att spara det 89 00:04:57,330 --> 00:05:00,530 på servern så att den kan - Jag kan köra programmet. 90 00:05:02,090 --> 00:05:05,780 Och sen när jag försöker köra den, står det att det finns ett fel. 91 00:05:05,780 --> 00:05:08,850 Deklarerats som ett virus, vilket inte är där längre. 92 00:05:08,850 --> 00:05:11,860 Åh, låt oss se, kan du slå på Spara igen? 93 00:05:11,860 --> 00:05:13,770 Jag ser det på skärmen. 94 00:05:13,770 --> 00:05:15,120 >> Rätt, okej, så vad jag har. 95 00:05:15,120 --> 00:05:19,430 Och jag vet inte varför det inte låta mig köra den. 96 00:05:22,990 --> 00:05:24,990 Åh, okej, ledsen. 97 00:05:27,930 --> 00:05:31,220 Kan du förklara varför - vad som var fel - vad som inte fungerar med den? 98 00:05:31,220 --> 00:05:34,760 >> Ja, eftersom jag inte se att det fanns en sista raden där det finns fortfarande en variabel 99 00:05:34,760 --> 00:05:37,700 att jag inte hade deklarerat, vilket jag inte hade för avsikt att det är det. 100 00:05:37,700 --> 00:05:38,730 Ja, perfekt! 101 00:05:38,730 --> 00:05:40,390 >> Nu om jag sparar det, tror jag att det skulle fungera. 102 00:05:40,390 --> 00:05:42,970 Nu när du har sparat den, fungerar det, häftigt. 103 00:05:42,970 --> 00:05:44,570 >> Så ja, som vi går igenom - 104 00:05:44,570 --> 00:05:46,690 så vad som pågår, 105 00:05:46,690 --> 00:05:49,130 Jag ska bara upprepa detta för kameran. 106 00:05:49,130 --> 00:05:51,760 Vad som hände var att denna variabel är 107 00:05:51,760 --> 00:05:54,310 lämnades in efter - jag antar att du raderat en del andra saker 108 00:05:54,310 --> 00:05:56,670 där du förklarats, 109 00:05:56,670 --> 00:05:59,560 och så detta kastade saker och var inte så att du kör det. 110 00:05:59,560 --> 00:06:02,540 Så detta är precis vad vi vill göra i avsnitt 111 00:06:02,540 --> 00:06:05,690 är har människor försöker skriva olika delar av kod, 112 00:06:05,690 --> 00:06:08,490 sammanställa det, se vad som fungerar, se vad som inte, 113 00:06:08,490 --> 00:06:10,730 och sedan kinda prata om dessa saker, eftersom dessa är utlösning punkter som 114 00:06:10,730 --> 00:06:12,850 Jag möter fortfarande, 115 00:06:12,850 --> 00:06:15,470 Jag fortfarande - jag gör massor av fåniga saker hela tiden, 116 00:06:15,470 --> 00:06:17,820 och jag vet inte varför det inte fungerar, 117 00:06:17,820 --> 00:06:22,960 så låt oss dra upp Charlottes revidering 3, 118 00:06:23,980 --> 00:06:25,380 och vi kommer att köra det. 119 00:06:25,380 --> 00:06:28,950 >> Så när jag kör, nu när jag har hennes kod här, 120 00:06:28,950 --> 00:06:31,450 Jag kan zooma in, slå på knappen Kör, 121 00:06:31,450 --> 00:06:33,680 uppladdningar det bygger det, kör den, 122 00:06:33,680 --> 00:06:36,980 säger att det sprang framgångsrikt, och om jag bläddra ner, 123 00:06:36,980 --> 00:06:39,440 se Charlotte är en junior på Adams House, 124 00:06:39,440 --> 00:06:42,720 psykologi, sekundär i ekonomi, awesome. 125 00:06:42,720 --> 00:06:44,310 Trevligt att träffas! 126 00:06:44,310 --> 00:06:46,550 Toppen. 127 00:06:46,550 --> 00:06:49,670 Okej, vi går vidare, låt oss gå till Daniel, 128 00:06:49,670 --> 00:06:52,710 gå till revidering 3, 129 00:06:52,710 --> 00:06:54,180 kompilera, köra; 130 00:06:54,180 --> 00:06:56,680 varför inte du berätta lite om dig själv, Daniel? 131 00:06:56,680 --> 00:06:59,380 >> Kalla mig Dan. 132 00:06:59,380 --> 00:07:01,920 Jag ska handelshögskola mittemot er, 133 00:07:01,920 --> 00:07:05,020 och jag var i marinkåren innan här, 134 00:07:05,020 --> 00:07:08,020 och detta är nytt för mig, så ja. 135 00:07:08,020 --> 00:07:11,060 Känn dig inte illa, jag är 30 och jag vet inte något av detta grejer. 136 00:07:11,060 --> 00:07:13,800 Toppen, tack, Dan! 137 00:07:13,800 --> 00:07:17,300 Okej, vi har en annan Daniel. 138 00:07:17,300 --> 00:07:20,930 Du går av Daniel - kommer du presentera dig, Daniel? 139 00:07:20,930 --> 00:07:22,260 >> >> Visst, jag Daniel. 140 00:07:22,260 --> 00:07:24,330 Jag är en sophomore på Mather just nu. 141 00:07:24,330 --> 00:07:25,840 Jag koncentrerar sig på regeringen, 142 00:07:25,840 --> 00:07:28,760 men jag ville ta CS50 eftersom jag har hört bra recensioner om klassen 143 00:07:28,760 --> 00:07:30,750 och jag har aldrig provat CS tidigare. 144 00:07:30,750 --> 00:07:34,680 Bläddra ner här och visa denna - cool. 145 00:07:36,330 --> 00:07:39,090 Går vidare, Jared. 146 00:07:39,090 --> 00:07:41,990 Hur går det? 147 00:07:41,990 --> 00:07:43,430 >> Bra, hur mår du? 148 00:07:43,430 --> 00:07:47,520 Som ni ser, jag är en yngre filosofi koncentrator i Eliot, 149 00:07:47,520 --> 00:07:50,260 ursprungligen från södra Kalifornien, 150 00:07:50,260 --> 00:07:53,100 och jag är intresserad av att CS50 eftersom jag gillar logiken av det, 151 00:07:53,100 --> 00:07:57,420 och det verkar riktigt coolt att göra saker på datorn, så. 152 00:07:57,420 --> 00:07:59,570 Toppen, var i södra Kalifornien kommer du ifrån? 153 00:07:59,570 --> 00:08:02,340 >> Om en timme från [ohörbart], en liten stad [ohörbart]. 154 00:08:02,340 --> 00:08:04,850 Oh, ja, det är min pappa från Redlands. 155 00:08:04,850 --> 00:08:07,060 Cool stuff. 156 00:08:07,060 --> 00:08:12,130 >> Okej, Jimmy, hur är läget, Jimmy? 157 00:08:12,130 --> 00:08:15,130 >> Bra, hur mår du? 158 00:08:15,130 --> 00:08:16,040 Gör ett bra! 159 00:08:16,040 --> 00:08:17,710 Berätta om dig själv. 160 00:08:17,710 --> 00:08:20,840 >> Jag är en nybörjare, och jag är inte helt säker på vad jag huvudämne 161 00:08:20,840 --> 00:08:22,820 men jag ganska lutar mot ekonomi. 162 00:08:22,820 --> 00:08:25,680 Liksom Daniel framför mig, jag har aldrig gjort någon CS, men det låter ganska coolt. 163 00:08:25,680 --> 00:08:28,120 Jag är ursprungligen från Chicago. 164 00:08:28,120 --> 00:08:31,640 Toppen. Så kolla in hans utskrift här. 165 00:08:31,640 --> 00:08:34,630 Jag ville fråga, gjorde detta tryck ut som förväntat? 166 00:08:34,630 --> 00:08:37,650 >> Nej, jag glömde att skriva ut en ny rad. 167 00:08:37,650 --> 00:08:41,270 Jag glömde faktiskt att när jag skrev min grej 168 00:08:41,270 --> 00:08:43,090 för första gången också. 169 00:08:43,090 --> 00:08:46,330 Det är lite av en smärta att komma ihåg att sätta dem i hand. 170 00:08:46,330 --> 00:08:50,560 Det skulle vara trevligt om det bara vet att det är vad du ville. 171 00:08:50,560 --> 00:08:53,630 >> Okej, Kelly. 172 00:08:53,630 --> 00:08:56,050 Wow, vi har 2 Kellys, 2 Daniels, 2 Kellys. 173 00:08:56,050 --> 00:09:00,490 Så Kelly - går du av Kelly Ren? 174 00:09:00,490 --> 00:09:03,870 Okej, häftigt. 175 00:09:03,870 --> 00:09:07,270 Eller Kelly, menar jag. 176 00:09:07,270 --> 00:09:10,260 >> Så ja, så jag är Kelly. 177 00:09:10,260 --> 00:09:12,930 Jag är en andraårsstuderande i Pfoho. 178 00:09:12,930 --> 00:09:17,000 Jag fick ett e-postmeddelande i dag att jag fortfarande har 7 veckor att förklara min koncentration, 179 00:09:17,000 --> 00:09:20,940 så jag försöker att inte tänka på det, 180 00:09:20,940 --> 00:09:24,090 och jag gillar bakning, löpning och Craisins. 181 00:09:24,090 --> 00:09:29,110 Jag har inte erfarenhet av det mesta av CS; 182 00:09:29,110 --> 00:09:32,700 Jag lärde mig att bygga webbplatser när jag var riktigt ung, 183 00:09:32,700 --> 00:09:35,750 men jag tror jag nog lärt mig fel många gånger. 184 00:09:35,750 --> 00:09:39,260 Förhoppningsvis kommer jag lära lite mer 185 00:09:39,260 --> 00:09:41,450 och - ja. 186 00:09:41,450 --> 00:09:44,100 >> Toppen, bra, tack. 187 00:09:44,100 --> 00:09:47,190 Låt oss gå till den andra Kelly, 188 00:09:47,190 --> 00:09:48,880 Jag har ingenting - sa du något här? 189 00:09:48,880 --> 00:09:51,880 >> [Ohörbart] 190 00:09:51,880 --> 00:09:56,180 Där är det! 191 00:09:56,180 --> 00:09:58,120 Söt! 192 00:09:58,120 --> 00:10:01,400 >> Okej, så jag är Kelly. 193 00:10:01,400 --> 00:10:03,980 Jag är en första året doktorand. 194 00:10:03,980 --> 00:10:05,560 Jag huvudämne i åtanke hjärna och utbildning. 195 00:10:05,560 --> 00:10:07,940 Jag tog examen i Franklin & Marshall College i 2008 196 00:10:07,940 --> 00:10:10,840 med stora aktörerna i psykologi och sociologi 197 00:10:10,840 --> 00:10:13,120 och en mindre på franska. 198 00:10:13,120 --> 00:10:15,330 Jag tar CS50 199 00:10:15,330 --> 00:10:18,080 eftersom jag är intresserad av att få en doktorsexamen i neurovetenskap 200 00:10:18,080 --> 00:10:21,220 och jag känner detta kommer att hjälpa mig att förstå den teknik som används. 201 00:10:21,220 --> 00:10:23,150 Toppen. 202 00:10:26,980 --> 00:10:29,390 Går vidare, Mikaela. 203 00:10:29,390 --> 00:10:31,640 Är det korrekt uttal? 204 00:10:31,640 --> 00:10:32,990 Okej, häftigt. 205 00:10:32,990 --> 00:10:34,640 >> >> Jag Mikhaila. 206 00:10:34,640 --> 00:10:36,870 Jag är en andraårsstuderande i Kirkland House, 207 00:10:36,870 --> 00:10:39,950 och jag koncentrerar inom maskinteknik. 208 00:10:39,950 --> 00:10:43,180 Jag gillar verkligen cykling, byggde en cykel i sommar. 209 00:10:43,180 --> 00:10:46,140 Jag tar CS, faktiskt, 210 00:10:46,140 --> 00:10:48,350 som en koncentration krav, 211 00:10:48,350 --> 00:10:52,550 men du vet, jag tror det är fortfarande kallt sorts teknisk klass. 212 00:10:52,550 --> 00:10:55,150 Awesome - du byggt en cykel i sommar? 213 00:10:55,150 --> 00:10:56,730 >> Ja. 214 00:10:56,730 --> 00:10:58,900 Wow, liksom ramen och allt det där? 215 00:10:58,900 --> 00:11:00,120 >> Uh-hunh (jakande). 216 00:11:00,120 --> 00:11:01,530 Wow, det är riktigt coolt. 217 00:11:01,530 --> 00:11:06,370 >> [Ohörbart utanför kameran chatt] 218 00:11:06,370 --> 00:11:10,000 [Skratt] 219 00:11:12,640 --> 00:11:14,200 Ja, det har varit så länge. 220 00:11:14,200 --> 00:11:16,730 Man vet aldrig, eller hur? 221 00:11:16,730 --> 00:11:19,420 Tja, cool, bra tack, Mikhaila. 222 00:11:19,420 --> 00:11:21,390 >> Okej, Missy. 223 00:11:21,390 --> 00:11:23,280 >> Jag heter Missy, jag är en nybörjare, 224 00:11:23,280 --> 00:11:25,500 så det betyder att jag inte vet något! 225 00:11:25,500 --> 00:11:29,180 Jag vill koncentrera astrofysik. 226 00:11:29,180 --> 00:11:31,220 Under CS50, 227 00:11:31,220 --> 00:11:33,350 Jag känner mig som kommer definitivt att hjälpa till med det. 228 00:11:33,350 --> 00:11:37,750 En udda faktum om mig är att jag är en nationellt certifierad brandman. 229 00:11:37,750 --> 00:11:39,960 Wow! 230 00:11:39,960 --> 00:11:42,440 Hur gick det till? 231 00:11:42,440 --> 00:11:45,570 >> Jag deltog en akademi 232 00:11:45,570 --> 00:11:49,000 och gick igenom helvetet för många veckor 233 00:11:49,000 --> 00:11:51,200 och fick min certifiering. 234 00:11:51,200 --> 00:11:54,090 Wow, grattis! 235 00:11:54,090 --> 00:11:57,280 Det är ingen liten bedrift, säkert. 236 00:11:57,280 --> 00:11:59,070 Okej, så nu ska vi göra mig. 237 00:11:59,070 --> 00:12:01,290 Jag är nästa i raden. 238 00:12:01,290 --> 00:12:04,510 Jag är - köra den. 239 00:12:04,510 --> 00:12:07,580 >> Så mitt namn är Nate. 240 00:12:07,580 --> 00:12:11,160 Jag var klass 2009 vid Stanford. 241 00:12:11,160 --> 00:12:13,840 Jag var en symbolisk Systems stora, 242 00:12:13,840 --> 00:12:17,370 som liknar Mind, Brain, Behavior koncentration här, 243 00:12:17,370 --> 00:12:19,300 men det är lite av en blandning av 244 00:12:19,300 --> 00:12:22,350 datavetenskap, lingvistik, psykologi och filosofi. 245 00:12:22,350 --> 00:12:26,600 Typ av - ja, en massa konstiga saker, men det var bra, 246 00:12:26,600 --> 00:12:29,880 och då jag gjorde min magisterexamen i datavetenskap där, liksom. 247 00:12:29,880 --> 00:12:33,250 Så jag är ny på Harvard i år. 248 00:12:33,250 --> 00:12:35,750 Jag ville verkligen komma in undervisningen. 249 00:12:35,750 --> 00:12:39,860 Jag tillbringade de sista 4 åren vid Stanford TA-ning Datavetenskap klasser 250 00:12:39,860 --> 00:12:43,370 och så David lät mig komma på, 251 00:12:43,370 --> 00:12:45,550 och jag ska vara att hjälpa till med CS50, 252 00:12:45,550 --> 00:12:47,890 så jag gör detta på heltid, jag är inte i grad skolan. 253 00:12:47,890 --> 00:12:50,330 Det har varit roligt. 254 00:12:50,330 --> 00:12:53,130 Förhoppningsvis kommer att fortsätta att vara roligt, jag är säker på att det kommer. 255 00:12:53,130 --> 00:12:56,040 >> Okej, Sam. 256 00:13:01,910 --> 00:13:05,470 >> Mitt namn är Sam, jag är en sophomore på högskolan, i lag specifikt. 257 00:13:05,470 --> 00:13:10,110 Min stora blir vetenskapshistoria, förmodligen, och VES sekundära, 258 00:13:10,110 --> 00:13:13,240 och min favoritfärg är gul. 259 00:13:18,790 --> 00:13:21,100 Inget behov av att döma eller något, men det är en bra färg! 260 00:13:21,100 --> 00:13:24,780 Och Stella. 261 00:13:24,780 --> 00:13:26,980 >> Hej, jag är Stella, jag är en nybörjare i Grays. 262 00:13:26,980 --> 00:13:30,070 Jag har ingen aning om vad jag har koncentrerat ännu, 263 00:13:30,070 --> 00:13:32,500 så CS50 var bara typ av slumpmässiga, 264 00:13:32,500 --> 00:13:34,220 vilket är intressant. 265 00:13:34,220 --> 00:13:36,080 Kul själva verket var Jimmy första Harvard vän till mig, 266 00:13:36,080 --> 00:13:38,360 eftersom vi är båda från Chicago. 267 00:13:38,360 --> 00:13:42,450 Cool, och Grace - som är tänkt att vara den riktigt nice, eller hur? 268 00:13:42,450 --> 00:13:45,220 >> Jag trodde [ohörbart]. 269 00:13:45,220 --> 00:13:46,690 Oh, ja. 270 00:13:46,690 --> 00:13:51,210 [Ohörbart / off-kamera chatt] 271 00:13:51,210 --> 00:13:54,420 Okej, jag är fortfarande lärande, fortfarande lärande. 272 00:13:54,420 --> 00:13:57,800 >> Så vi har fått något annat som är ganska intressant här. 273 00:13:59,600 --> 00:14:02,870 Ja, jag bara undrar, har du en idé som händer här? 274 00:14:02,870 --> 00:14:05,890 Du vet hur man ska tolka detta? 275 00:14:05,890 --> 00:14:13,340 >> Jag var tänkt att sätta semikolon efter varje enskild linje. 276 00:14:13,340 --> 00:14:16,370 Det är lite av en smärta. 277 00:14:16,370 --> 00:14:19,100 Ibland dessa semikolon kan vara en verklig smärta att spåra. 278 00:14:19,100 --> 00:14:21,420 Så visar det sig att 279 00:14:21,420 --> 00:14:22,820 specialprogrammet vi använder i år till 280 00:14:22,820 --> 00:14:26,670 kompilera vår C-kod kallas klang, 281 00:14:26,670 --> 00:14:29,460 och anledningen till att vi har börjat använda klang i år - 282 00:14:29,460 --> 00:14:32,030 eftersom vi inte har använt programmet tidigare, 283 00:14:32,030 --> 00:14:35,710 Vi har använt en annan som heter GCC som är riktigt populär - 284 00:14:35,710 --> 00:14:38,420 Klang ger faktiskt dig felmeddelanden som vettigt. 285 00:14:38,420 --> 00:14:41,420 Den här säger "förväntas", "efter uttrycket" 286 00:14:41,420 --> 00:14:45,260 och det säger även du uttrycket varefter du behövde ett semikolon. 287 00:14:45,260 --> 00:14:47,830 Så är du om fastställande av det? 288 00:14:47,830 --> 00:14:48,930 >> Ja, just nu. 289 00:14:48,930 --> 00:14:52,040 Toppen, låt mig veta och vi kommer dra upp, och vi kommer köra det. 290 00:14:52,040 --> 00:14:55,830 Men ja, sätta dessa semikolon i är typ av en smärta. 291 00:14:55,830 --> 00:14:59,580 >> Jag fixade det, så jag tycker att det borde fungera. 292 00:14:59,580 --> 00:15:02,760 Awesome - revision 3. 293 00:15:02,760 --> 00:15:05,250 Det ser ut som det. 294 00:15:05,250 --> 00:15:08,580 Okej, så nu när vi kör det, 295 00:15:08,580 --> 00:15:11,020 där det går. 296 00:15:11,020 --> 00:15:13,830 Cool stuff. 297 00:15:13,830 --> 00:15:15,340 >> Okej. 298 00:15:15,340 --> 00:15:18,230 Så tack för att göra det. 299 00:15:18,230 --> 00:15:20,210 Det är bra att träffa er. 300 00:15:20,210 --> 00:15:22,880 Vad vi ska göra nu är tillbringa nästa lite 301 00:15:22,880 --> 00:15:24,740 Kinda dykning i avsnittet problem 302 00:15:24,740 --> 00:15:27,550 som kommer från problemet som den här veckan 303 00:15:27,550 --> 00:15:29,920 och vi kommer att göra det för de flesta av avsnitten 304 00:15:29,920 --> 00:15:32,110 för resten av perioden, 305 00:15:32,110 --> 00:15:35,580 och sedan kommer vi spara de sista 15, 20 minuter eller så 306 00:15:35,580 --> 00:15:38,490 att prata om problemet satt 307 00:15:38,490 --> 00:15:41,420 och sedan bara alla andra frågor du har i allmänhet om klassen. 308 00:15:43,380 --> 00:15:45,670 Som sagt, vad vi verkligen vill göra 309 00:15:45,670 --> 00:15:49,390 är ha alla deltar 310 00:15:49,390 --> 00:15:51,500 med utrymmen grejer, 311 00:15:51,500 --> 00:15:53,500 kasta in kod, kasta i förslag, 312 00:15:53,500 --> 00:15:56,500 och talar om när saker gillar denna rast 313 00:15:56,500 --> 00:15:58,360 eller fungerar inte, bara för att det är saker som 314 00:15:58,360 --> 00:16:00,870 Jag vet att jag kom över 315 00:16:00,870 --> 00:16:03,180 när jag började kodning, 316 00:16:03,180 --> 00:16:05,490 och var verkligen ganska frustrerande ibland 317 00:16:05,490 --> 00:16:08,690 för om det är som 2 am innan ditt problem set beror, 318 00:16:08,690 --> 00:16:11,330 så - bara för avslöjande, 319 00:16:11,330 --> 00:16:14,590 Jag har inte börja programmera förrän jag var en sophomore på college. 320 00:16:14,590 --> 00:16:17,360 Det var typ av denna konstiga, okända ting 321 00:16:17,360 --> 00:16:20,360 att jag hörde var ganska coolt 322 00:16:20,360 --> 00:16:23,590 och jag hörde också att det kan vara en verklig smärta i butt 323 00:16:23,590 --> 00:16:27,610 om du missar ett semikolon och det är den enda fel att hålla ditt program från att arbeta 324 00:16:27,610 --> 00:16:30,890 och hålla dig från att gå i vila, 325 00:16:30,890 --> 00:16:32,650 så definitivt, 326 00:16:32,650 --> 00:16:34,020 om du har frågor som detta, 327 00:16:34,020 --> 00:16:37,060 Om du har frågor som detta, låt mig veta, 328 00:16:37,060 --> 00:16:40,050 eftersom jag vill göra detta till en bra upplevelse för er. 329 00:16:40,050 --> 00:16:44,620 >> Så har ni hämtat alla problem som ännu? 330 00:16:44,620 --> 00:16:47,160 Kinda vet var den är? Okej. 331 00:16:47,160 --> 00:16:51,490 Så går vi till cs50.net, eftersom jag inte har den på detta konto, 332 00:16:51,490 --> 00:16:54,110 dra upp problemet set, 333 00:16:54,110 --> 00:16:57,940 dra upp problemet set 2, och vi ska titta på standardversionen idag. 334 00:16:57,940 --> 00:17:01,190 Vi ska dra upp specifikationen här. 335 00:17:02,640 --> 00:17:04,420 Bläddra nedåt. 336 00:17:06,790 --> 00:17:11,109 Så vi ska börja titta på denna del av frågorna. 337 00:17:14,069 --> 00:17:16,710 Har ni sett dessa shorts ännu? 338 00:17:16,710 --> 00:17:18,329 Okej. 339 00:17:18,329 --> 00:17:21,329 Så det finns kortfilmer om loopar, 340 00:17:21,329 --> 00:17:24,700 vilket görs av Tommy, en av stipendiaterna huvudet undervisning. 341 00:17:24,700 --> 00:17:27,230 Det finns en på omfattning, 342 00:17:27,230 --> 00:17:30,530 Jag tror görs av en annan lärare man vid namn David 343 00:17:30,530 --> 00:17:33,400 och sedan en om Caesar Cipher också gjort av David. 344 00:17:33,400 --> 00:17:35,550 De är ganska coolt. 345 00:17:35,550 --> 00:17:37,770 Har ni kollat ​​sina shorts hittills? 346 00:17:37,770 --> 00:17:39,270 How've de varit? 347 00:17:39,270 --> 00:17:41,490 Hjälp? Okej, bra att veta. 348 00:17:41,490 --> 00:17:44,210 Om de inte är, kan du säga så. 349 00:17:46,290 --> 00:17:49,870 Men innan du gör det, 350 00:17:49,870 --> 00:17:52,600 har ni tittat på dessa frågor 351 00:17:52,600 --> 00:17:55,430 alls? 352 00:17:55,430 --> 00:17:57,480 >> Låt oss tala om det här lite. 353 00:17:57,480 --> 00:18:00,600 Så vi har infört under de senaste veckorna 354 00:18:00,600 --> 00:18:02,480 i föreläsning 355 00:18:02,480 --> 00:18:04,910 ett antal olika slingor. 356 00:18:04,910 --> 00:18:06,140 Det finns for-slingan, 357 00:18:06,140 --> 00:18:09,570 while-slingan och sedan gör-while-slingan, 358 00:18:09,570 --> 00:18:13,100 och föreläsning, vi har talat mycket om 359 00:18:13,100 --> 00:18:16,010 hur dessa slingor är alla 360 00:18:16,010 --> 00:18:18,320 ganska lika på många sätt, 361 00:18:18,320 --> 00:18:21,210 och du kan göra mycket av samma saker med en while-slinga 362 00:18:21,210 --> 00:18:23,260 som du kan med en for-slinga. 363 00:18:23,260 --> 00:18:26,300 Du måste bara typ av använda rätt kombinationer av variabler och sådant. 364 00:18:26,300 --> 00:18:28,680 och så verkligen 365 00:18:28,680 --> 00:18:31,200 den verkliga skillnaden mellan alla öglorna är att 366 00:18:31,200 --> 00:18:33,620 Ibland är de mer användbara 367 00:18:33,620 --> 00:18:36,930 använda dem på en gång än vid ett annat tillfälle. 368 00:18:36,930 --> 00:18:39,340 >> Så till exempel, 369 00:18:39,340 --> 00:18:42,260 while-slingan skiljer sig från en gör-while-slinga. 370 00:18:42,260 --> 00:18:45,680 Känner alla som de har ett bra grepp om när 371 00:18:45,680 --> 00:18:48,650 en gör-while-slinga är mer 372 00:18:48,650 --> 00:18:50,990 användbart eller vad skillnaden är? 373 00:18:50,990 --> 00:18:53,410 >> Jag tror att skillnaden är en gör-while-slinga 374 00:18:53,410 --> 00:18:56,960 kör - Jag vet inte riktigt vad terminologin är, 375 00:18:56,960 --> 00:18:59,750 men serien av funktioner inom slingan. 376 00:18:59,750 --> 00:19:02,020 De automatiskt - det gör sina körningar åtminstone 377 00:19:02,020 --> 00:19:05,390 innan den kontrollerar tillståndet, eller while-slingan kommer bara köra det när 378 00:19:05,390 --> 00:19:08,290 det körs kontinuerligt - huruvida villkoret är uppfyllda. 379 00:19:08,290 --> 00:19:11,010 Ja, gör det vettigt? 380 00:19:11,010 --> 00:19:14,200 >> Låt oss ta en titt på lite kod. 381 00:19:14,200 --> 00:19:16,930 Så bara för att upprepa frågan, 382 00:19:16,930 --> 00:19:19,230 eller svaret, snarare; 383 00:19:19,230 --> 00:19:22,050 svaret var att 384 00:19:22,050 --> 00:19:25,850 en while-slinga kommer att kontrollera för att se om villkoret 385 00:19:25,850 --> 00:19:27,440 du anger uppfylls 386 00:19:27,440 --> 00:19:31,320 innan den löper kropp slingan för första gången, 387 00:19:31,320 --> 00:19:35,000 Det gör-while-slinga körs automatiskt kroppen av slingan, 388 00:19:35,000 --> 00:19:38,450 är vad vi kallar det - det är konstigt terminologi, 389 00:19:38,450 --> 00:19:41,460 men om jag någonsin säga något som inte är vettigt, låt mig veta - 390 00:19:41,460 --> 00:19:45,360 slingan är det där som du sätter i mellan klammerparenteser. 391 00:19:45,360 --> 00:19:47,840 Och i en gör-while-slinga, 392 00:19:47,840 --> 00:19:50,220 det organet få köra minst en gång, 393 00:19:50,220 --> 00:19:54,460 och sedan tillståndet blir kontrolleras innan det löper varje efterföljande gång. 394 00:19:54,460 --> 00:19:56,580 >> Så egentligen, Sam, 395 00:19:56,580 --> 00:20:00,820 något emot dig skriva en enkel while-slinga 396 00:20:00,820 --> 00:20:02,840 i utrymmen? 397 00:20:02,840 --> 00:20:05,600 >> Hur sorterar man av liknande 398 00:20:05,600 --> 00:20:07,060 göra en ny ...? 399 00:20:07,060 --> 00:20:09,220 Jag raderar bara vad du har där. 400 00:20:09,220 --> 00:20:11,300 Ja, bara ta bort det. 401 00:20:11,300 --> 00:20:14,510 >> Tja, jag tror jag har det här - 402 00:20:14,510 --> 00:20:16,640 vilken vill du ha, en stund, eller vill du ha ...? 403 00:20:16,640 --> 00:20:19,350 Ja, bara en stund sant, skriva något. 404 00:20:21,050 --> 00:20:23,140 Och låt oss se. 405 00:20:23,140 --> 00:20:25,850 Alexander, insåg jag att vi aldrig introducerade dig. 406 00:20:25,850 --> 00:20:27,510 >> Åh, det är bra. 407 00:20:27,510 --> 00:20:30,760 Har du - kan du koda upp en gör-while-slinga för oss? 408 00:20:30,760 --> 00:20:32,520 >> Ja, jag ska försöka. 409 00:20:32,520 --> 00:20:34,370 Okej, vi drar bara upp dessa på skärmen, 410 00:20:34,370 --> 00:20:38,240 så att du typ av har ett handtag på vad skillnaderna är. 411 00:20:38,240 --> 00:20:41,280 >> Så här är vad Sam har gjort. 412 00:20:41,280 --> 00:20:44,460 Han har ett heltal kallas jag 413 00:20:44,460 --> 00:20:47,480 att han initieras till 17. 414 00:20:47,480 --> 00:20:51,570 Sen säger han medan (int i = 17) 415 00:20:51,570 --> 00:20:54,230 printf ("Mitt namn är Sam."); 416 00:20:54,230 --> 00:20:57,300 Så vad händer när vi kör denna kod? 417 00:20:57,300 --> 00:21:00,340 Det finns ett fel, vad felet säga? 418 00:21:00,340 --> 00:21:02,890 Vi drar upp den och prata om det. 419 00:21:02,890 --> 00:21:05,040 Ett fel uppstod, säger det. 420 00:21:05,040 --> 00:21:07,400 Låt oss bläddra nedåt. 421 00:21:07,400 --> 00:21:09,460 Så det gav oss detta fel, och det sa, 422 00:21:09,460 --> 00:21:12,690 "Hej, jag förväntade mig ett uttryck." 423 00:21:12,690 --> 00:21:16,180 Det är ganska kryptiskt. 424 00:21:19,160 --> 00:21:23,140 Ja, så exakt - och igen, 425 00:21:23,140 --> 00:21:27,140 kommer det att finnas en annan liten bugg som vi kommer att fånga på bara en sekund. 426 00:21:27,140 --> 00:21:31,800 Men detta är en annan av dessa typer av konstiga terminologi saker, 427 00:21:31,800 --> 00:21:36,150 så detta int i = 17 428 00:21:36,150 --> 00:21:39,290 är inte ett uttryck. 429 00:21:39,290 --> 00:21:41,220 Vad det ser ut som det gör är att det är 430 00:21:41,220 --> 00:21:43,410 förklara ett heltal kallas jag 431 00:21:43,410 --> 00:21:45,540 och ställer in det till lika med 17 432 00:21:45,540 --> 00:21:48,780 eller, snarare, sätta 17 in i den int kallas i. 433 00:21:50,560 --> 00:21:53,350 Och det inte är vettigt 434 00:21:53,350 --> 00:21:55,790 i samband med detta samtidigt slinga. 435 00:21:55,790 --> 00:21:58,190 Det är vettigt, eftersom vi får se, 436 00:21:58,190 --> 00:22:01,250 i samband med en for-slinga, eftersom det för loop deklarationer inte börja 437 00:22:01,250 --> 00:22:05,800 med den för int i lika något 438 00:22:05,800 --> 00:22:07,830 och går vidare. 439 00:22:07,830 --> 00:22:09,500 >> Det gjorde du - 440 00:22:09,500 --> 00:22:12,630 fixa något, okej. 441 00:22:12,630 --> 00:22:15,270 Här går, häftigt. 442 00:22:15,270 --> 00:22:17,920 Så nu ser det lite annorlunda. 443 00:22:17,920 --> 00:22:19,030 Ett par saker har förändrats. 444 00:22:19,030 --> 00:22:21,300 Kan du berätta vad saker och ting har förändrats? 445 00:22:21,300 --> 00:22:24,950 >> Jag tog fram int, så det finns ingen förklaring [ohörbart] i stället för ett uppdrag. 446 00:22:24,950 --> 00:22:28,770 Den en likhetstecken lade jag 2 likhetstecken, vilket innebär ett likhetstecken. 447 00:22:28,770 --> 00:22:30,560 Toppen. 448 00:22:30,560 --> 00:22:33,320 Ja, så vad Sam gjorde han tog ut int 449 00:22:33,320 --> 00:22:35,770 Det var just här tidigare, 450 00:22:35,770 --> 00:22:39,340 så om jag bara tittar på detta - det är vad det var tidigare, sa det int, 451 00:22:39,340 --> 00:22:41,970 som förklarar det - så vi tog ut typ. 452 00:22:41,970 --> 00:22:44,710 Det finns int, char, sträng, kort, 453 00:22:44,710 --> 00:22:47,380 dessa kallas typer. 454 00:22:47,380 --> 00:22:49,510 Så du tog ut den typ 455 00:22:49,510 --> 00:22:51,580 och sedan tidigare, 456 00:22:51,580 --> 00:22:54,190 Han hade bara den enda likhetstecken 457 00:22:54,190 --> 00:22:57,300 och vad han sa var problematiskt om detta 458 00:22:57,300 --> 00:22:59,580 när du har 1 likhetstecknet 459 00:22:59,580 --> 00:23:01,780 Det är ett uppdrag operatör. 460 00:23:01,780 --> 00:23:04,930 Det är inte att testa huruvida 2 saker är lika. 461 00:23:04,930 --> 00:23:07,920 Det faktiskt lurar något motsvarande något. 462 00:23:07,920 --> 00:23:11,110 Vi sätter numret 17 i variabeln i. 463 00:23:11,110 --> 00:23:13,850 Så för att göra den typen av jämförelser, 464 00:23:13,850 --> 00:23:16,430 Du måste använda dubbla jämlikar, 465 00:23:16,430 --> 00:23:19,640 som är typ av en konstig sak 466 00:23:19,640 --> 00:23:22,760 men är ett ganska vanligt fel. 467 00:23:23,980 --> 00:23:27,830 Så en annan sak jag påpeka, om du inte har något emot, 468 00:23:27,830 --> 00:23:30,610 är att 469 00:23:30,610 --> 00:23:33,210 vår funktion här i int main, 470 00:23:33,210 --> 00:23:36,740 du ser att kroppen av vår funktion 471 00:23:36,740 --> 00:23:39,810 är förskjuten från den vänstra sidan 472 00:23:39,810 --> 00:23:42,400 med 4 platser eller en flik. 473 00:23:42,400 --> 00:23:44,730 Anledningen till att vi gör detta 474 00:23:44,730 --> 00:23:47,000 är bara för läsbarheten. 475 00:23:47,000 --> 00:23:51,620 Som du kan se i Sams medan slinga här, 476 00:23:51,620 --> 00:23:53,120 han inte strecksatsen alls, 477 00:23:53,120 --> 00:23:55,390 och som inte påverkar funktionaliteten av koden. 478 00:23:55,390 --> 00:23:57,860 Det kommer att köras exakt samma. 479 00:23:57,860 --> 00:24:00,950 >> Så till exempel, om vi kommer upp till toppen här 480 00:24:00,950 --> 00:24:02,680 och tryck vår Play-knappen, kommer det att bygga den, 481 00:24:02,680 --> 00:24:04,470 det ska köra det, 482 00:24:04,470 --> 00:24:06,700 och vad som kommer att hända? 483 00:24:06,700 --> 00:24:08,360 Varför fungerar det fortfarande säga igång? 484 00:24:08,360 --> 00:24:10,560 >> Eftersom det kommer fortsätta upprepa hej. 485 00:24:10,560 --> 00:24:12,900 Exakt, och varför hålla det upprepas hej? 486 00:24:12,900 --> 00:24:15,850 >> Eftersom heltal ändras aldrig, så det är alltid 17. 487 00:24:15,850 --> 00:24:18,030 Ja, exakt, så 488 00:24:18,030 --> 00:24:20,970 låt oss se efter - påminner mig om ditt namn igen? 489 00:24:20,970 --> 00:24:24,020 Jimmy. Så Jimmy sa att 490 00:24:24,020 --> 00:24:27,340 Anledningen till detta fortsätter att upprepa hej om och om igen 491 00:24:27,340 --> 00:24:30,510 beror detta villkor är alltid sant. 492 00:24:30,510 --> 00:24:33,270 Vi byter aldrig värdet av jag. 493 00:24:33,270 --> 00:24:36,170 Vi byter aldrig innehållet i vad som lagras i den variabeln. 494 00:24:36,170 --> 00:24:39,180 Så på denna punkt fick vi detta fel som 495 00:24:39,180 --> 00:24:42,170 programmet genererade för mycket effekt, 496 00:24:42,170 --> 00:24:45,100 och om vi bläddra ner och typ av titta på vad som händer här, 497 00:24:45,100 --> 00:24:49,160 du kan se att det är hi, hi, hi, hi, hi, hi, hi hela vägen igenom. 498 00:24:49,160 --> 00:24:51,200 Toppen. 499 00:24:51,200 --> 00:24:53,750 >> Så slags tillbaka till den ursprungliga punkten 500 00:24:53,750 --> 00:24:57,020 att ha fördjupningen här 501 00:24:57,020 --> 00:25:00,110 i kroppen av while-slingan inte påverkar någonting. 502 00:25:00,110 --> 00:25:03,050 Programmet löpte fortfarande fint. 503 00:25:03,050 --> 00:25:06,790 Typiskt för god stil - 504 00:25:06,790 --> 00:25:10,210 och detta är något som vi ser i dina problemområden set - 505 00:25:10,210 --> 00:25:13,930 ber vi dig att stycket genom att 4 platser, som du kan göra 506 00:25:13,930 --> 00:25:16,440 genom att bara trycka på tabbtangenten 507 00:25:16,440 --> 00:25:18,860 eller genom att manuellt sätta i 4 platser själv. 508 00:25:21,880 --> 00:25:25,050 Cool, okej så låt oss gå tillbaka och titta på 509 00:25:25,050 --> 00:25:30,460 Alexanders gör-tag. 510 00:25:30,460 --> 00:25:32,980 >> Bara Kinda har lite problem. 511 00:25:32,980 --> 00:25:34,390 Okej, låt oss arbeta igenom det. 512 00:25:34,390 --> 00:25:36,400 Är det coolt? 513 00:25:36,400 --> 00:25:37,430 >> Ja. 514 00:25:37,430 --> 00:25:39,200 >> Okej, så nu kör vi. 515 00:25:39,200 --> 00:25:41,010 Detta är koden som Alexander skrev. 516 00:25:41,010 --> 00:25:43,410 Vill du gå av Alex - okej. 517 00:25:43,410 --> 00:25:46,380 Så här är koden som Alex har skrivit. 518 00:25:46,380 --> 00:25:50,500 Så, vi har vår förklaring om huvud just här, 519 00:25:50,500 --> 00:25:54,410 och sedan har vi fått denna heltalsvariabel kallade jag 520 00:25:54,410 --> 00:25:57,320 deklareras här. 521 00:25:57,320 --> 00:26:01,060 Vi har en gör uttalande 522 00:26:01,060 --> 00:26:04,600 och sedan kroppen igen med dessa hängslen, 523 00:26:04,600 --> 00:26:06,520 så detta är kroppen av gör-medan - 524 00:26:06,520 --> 00:26:09,210 Låt mig zooma in på detta så det är lättare att läsa - 525 00:26:09,210 --> 00:26:12,730 och i kroppen, vi försöker skriva ut "detta är kroppen", 526 00:26:12,730 --> 00:26:14,300 i + +, 527 00:26:14,300 --> 00:26:17,710 så öka innehållet av i och göra det 528 00:26:17,710 --> 00:26:19,470 tills jag får vara 3, 529 00:26:19,470 --> 00:26:22,440 och sedan vårt program avslutas. 530 00:26:22,440 --> 00:26:24,680 >> Så vad händer när vi kör det här programmet? 531 00:26:24,680 --> 00:26:27,580 >> Jag förväntade en identifierare. 532 00:26:27,580 --> 00:26:32,070 Okej, så bygga, driva, uppstår fel. 533 00:26:32,070 --> 00:26:34,820 Vad händer? 534 00:26:34,820 --> 00:26:37,060 Vi rulla ner här, 535 00:26:37,060 --> 00:26:40,260 vi får denna något kryptiska ser sak, 536 00:26:40,260 --> 00:26:43,930 förväntade semikolon efter toppnivå deklaration. 537 00:26:43,930 --> 00:26:46,620 Det är ganska konstigt. 538 00:26:46,620 --> 00:26:50,990 Har någon en idé om vad som kan händer? 539 00:26:53,080 --> 00:26:54,640 Kinda konstigt, ja. 540 00:26:54,640 --> 00:26:57,640 >> [Ohörbart] deklareras utanför parentesen? 541 00:26:57,640 --> 00:27:03,480 Så betyder det inte gäller, när du använder parenteser? 542 00:27:03,480 --> 00:27:07,390 Så han förklarade den här killen utanför som parenteser? 543 00:27:09,670 --> 00:27:12,240 Åh, dessa killar - de klammerparenteser? 544 00:27:12,240 --> 00:27:13,850 >> Ja. 545 00:27:13,850 --> 00:27:15,310 Ja, exakt. 546 00:27:15,310 --> 00:27:17,120 Så visar det sig att 547 00:27:17,120 --> 00:27:21,550 Du kan faktiskt inte deklarera en variabel här så här. 548 00:27:23,750 --> 00:27:26,690 Vad du kanske har försökt att göra var - 549 00:27:26,690 --> 00:27:30,110 klippa ut den där - 550 00:27:30,110 --> 00:27:34,330 kan du antingen lägga den inom klammerparenteser här 551 00:27:34,330 --> 00:27:37,400 eller annat alternativ 552 00:27:37,400 --> 00:27:40,350 är att sätta det helt utanför. 553 00:27:42,480 --> 00:27:46,610 Och så dessa - beroende på var du faktiskt sätta deklarationen 554 00:27:46,610 --> 00:27:48,550 denna heltalsvariabel, 555 00:27:48,550 --> 00:27:53,540 du kan få 2 mycket olika typer av variabler, 556 00:27:53,540 --> 00:27:55,100 när det är utanför huvud, 557 00:27:55,100 --> 00:27:58,240 Det är vad vi kallar en global variabel. 558 00:27:58,240 --> 00:28:00,070 Det är utanför någon av funktionerna - 559 00:28:00,070 --> 00:28:03,420 det är inte i en funktion - 560 00:28:03,420 --> 00:28:07,050 medan om vi sätter det inne i huvud, 561 00:28:07,050 --> 00:28:10,000 gillar här, så det kallas en lokal variabel, 562 00:28:10,000 --> 00:28:13,830 eftersom det är lokal omfattningen av huvud. 563 00:28:13,830 --> 00:28:16,720 Och vi pratar lite mer om vad skillnaderna är 564 00:28:16,720 --> 00:28:20,970 mellan de 2 typerna och varför du använder olika typer av variabler, 565 00:28:20,970 --> 00:28:23,040 men för nu, 566 00:28:23,040 --> 00:28:25,070 Du kan bara hålla alla variabler lokal, 567 00:28:25,070 --> 00:28:28,320 eftersom vi inte har något behov av globala variabler. 568 00:28:28,320 --> 00:28:31,390 >> Okej, så det är en sak där. 569 00:28:31,390 --> 00:28:34,680 Låt oss försöka köra detta igen, se vad som händer. 570 00:28:37,420 --> 00:28:40,270 Kör, få ett annat fel. 571 00:28:40,270 --> 00:28:43,320 Zooma in lite, vad vi får? 572 00:28:45,110 --> 00:28:50,000 Vi får här förväntade parentes efter gör / tid. 573 00:28:53,660 --> 00:28:55,260 Några idéer vad som händer? Dan? 574 00:28:55,260 --> 00:28:58,880 >> Är tag sedan parentes och sedan - 575 00:28:58,880 --> 00:29:01,990 Jag vet inte om du behöver redeclare int, 576 00:29:01,990 --> 00:29:04,980 men gör samtidigt (i <3). 577 00:29:04,980 --> 00:29:06,930 Exakt, ja. 578 00:29:06,930 --> 00:29:08,830 Så det visar sig att Dan är precis rätt. 579 00:29:08,830 --> 00:29:11,230 Vi behöver inte sätta denna typ här igen. 580 00:29:11,230 --> 00:29:14,440 Vi kan i stället döda typ 581 00:29:14,440 --> 00:29:17,220 och bara göra det. 582 00:29:19,270 --> 00:29:21,640 Okej. 583 00:29:21,640 --> 00:29:24,950 Jag what ut, prova det en gång till. 584 00:29:26,360 --> 00:29:29,580 Titta på det, det går lyckat. 585 00:29:29,580 --> 00:29:33,260 Om vi ​​scrolla ner, "detta är kroppen" skrivs ut 3 gånger. 586 00:29:33,260 --> 00:29:35,820 Det är ganska sött. 587 00:29:35,820 --> 00:29:38,670 Bra gjort, bra gjort, grabbar. 588 00:29:38,670 --> 00:29:41,080 Bra gjort. 589 00:29:41,080 --> 00:29:43,250 Hur är detta gå så långt? 590 00:29:43,250 --> 00:29:46,200 Decent takt? 591 00:29:46,200 --> 00:29:49,200 Okej, coolt. 592 00:29:49,200 --> 00:29:52,590 >> Så när vi typ av tillbaka till den ursprungliga frågan, 593 00:29:52,590 --> 00:29:55,430 vi - och nu om vi ser skillnaden, 594 00:29:55,430 --> 00:29:58,240 du ser att i denna gör-while-slinga, 595 00:29:58,240 --> 00:30:00,030 villkoret kommer sist. 596 00:30:00,030 --> 00:30:02,530 Så som datorn läser programmet 597 00:30:02,530 --> 00:30:06,050 eftersom C-program körs typ av i denna ordningsföljd, 598 00:30:06,050 --> 00:30:09,450 där de bokstavligen börjar med den första raden i huvud, 599 00:30:09,450 --> 00:30:13,450 och sedan köra rad 6, rad 7, rad 8, rad 9, 600 00:30:13,450 --> 00:30:16,150 ledning 10, 11 linje, 601 00:30:16,150 --> 00:30:18,440 allt det här längst upp till höger här 602 00:30:18,440 --> 00:30:20,020 kommer att utföra en gång 603 00:30:20,020 --> 00:30:23,350 innan vi testar någonsin detta villkor för att se 604 00:30:23,350 --> 00:30:26,240 om jag - eller innehållet av i, snarare - 605 00:30:26,240 --> 00:30:29,750 är mindre än antalet 3. 606 00:30:29,750 --> 00:30:33,300 Och endast om när vi kommer till ledningen 12, 607 00:30:33,300 --> 00:30:36,260 innehållet av i mindre än 3 608 00:30:36,260 --> 00:30:39,150 hoppar vi faktiskt tillbaka till linje 7 609 00:30:39,150 --> 00:30:41,140 och sedan upprepa processen, 610 00:30:41,140 --> 00:30:44,620 och sedan testar vi tillståndet igen och igen och igen. 611 00:30:44,620 --> 00:30:47,440 >> Så vi kan jämföra detta 612 00:30:47,440 --> 00:30:50,240 med - zoomar ut igen, 613 00:30:50,240 --> 00:30:56,500 bläddra ner till Sams version, 614 00:30:56,500 --> 00:31:00,760 vi ska titta på det här, något ändras så att det inte längre en oändlig loop - 615 00:31:00,760 --> 00:31:03,570 där om vi zoomar in, 616 00:31:03,570 --> 00:31:06,300 ser vi att programmet exekveras, 617 00:31:06,300 --> 00:31:09,120 det kommer att först förklara int i, 618 00:31:09,120 --> 00:31:12,030 ställa innehållet i jag vara att 0, 619 00:31:12,030 --> 00:31:15,820 och sedan träffar tillstånd medan slingan först, 620 00:31:15,820 --> 00:31:19,210 så i detta fall, den här kroppen, denna printf ("hej") och i + + 621 00:31:19,210 --> 00:31:21,630 kommer inte ens utföra 622 00:31:21,630 --> 00:31:24,310 om jag är faktiskt mindre än eller lika med 2. 623 00:31:24,310 --> 00:31:26,750 Så om i är 3, till exempel, 624 00:31:26,750 --> 00:31:28,840 om vi sätter det här 625 00:31:28,840 --> 00:31:32,160 lika med 4 - eller jag ska göra 3, eftersom jag sa 3 - 626 00:31:32,160 --> 00:31:34,890 och kör den, 627 00:31:34,890 --> 00:31:38,320 det ska bygga, det ska köras helt bra, 628 00:31:38,320 --> 00:31:40,530 men det kommer inte att faktiskt skriva ut något, 629 00:31:40,530 --> 00:31:43,030 eftersom det inte att testa för det första fallet. 630 00:31:44,780 --> 00:31:47,530 Så i klassen, vi typ av talat om varför dessa gör-while-slingor 631 00:31:47,530 --> 00:31:49,800 är användbara ibland 632 00:31:49,800 --> 00:31:53,140 och varför vi skulle använda det i motsats till en while-slinga. 633 00:31:53,140 --> 00:31:56,450 >> Finns det - Har ni några förslag 634 00:31:56,450 --> 00:31:59,090 till varför en gör-while-slinga kan vara mer användbart? 635 00:31:59,090 --> 00:32:02,560 >> Jag tror do-while-slingor är om du vill indata, 636 00:32:02,560 --> 00:32:05,020 eftersom det sätt du kan låta dem 637 00:32:05,020 --> 00:32:07,780 sätta något i gång, om det är korrekt, 638 00:32:07,780 --> 00:32:09,300 Vi kan gå vidare till resten av programmet, 639 00:32:09,300 --> 00:32:11,250 men om det inte är korrekt, då du håller på att användaren 640 00:32:11,250 --> 00:32:13,250 tills du lägger rätt ingång. 641 00:32:13,250 --> 00:32:14,260 Ja, exakt - exakt, 642 00:32:14,260 --> 00:32:16,840 så en gör-while-slinga är användbart 643 00:32:16,840 --> 00:32:18,930 eftersom vid fråga om användarinmatning 644 00:32:18,930 --> 00:32:23,000 eftersom du behöver för att få användarens indata innan du faktiskt kan kontrollera det. 645 00:32:23,000 --> 00:32:27,330 Så i pset 1, i pset 2, 646 00:32:27,330 --> 00:32:29,650 där du uppmanas att användarinmatning mycket, 647 00:32:29,650 --> 00:32:31,200 Det är en praktisk sak att använda 648 00:32:31,200 --> 00:32:33,740 i motsats till bara en enkel while-slinga. 649 00:32:33,740 --> 00:32:36,780 Om du använder en while-slinga, kan du göra samma sak - 650 00:32:36,780 --> 00:32:38,750 Du kan göra samma sak med en while-slinga 651 00:32:38,750 --> 00:32:40,580 som du gör med en gör-while-slinga. 652 00:32:40,580 --> 00:32:43,380 Det är bara att typ av ha denna dubbla process 653 00:32:43,380 --> 00:32:47,010 där du får in först och sedan starta while-slinga. 654 00:32:47,010 --> 00:32:49,800 En gör-while-slinga, du måste bara skriva det en gång 655 00:32:49,800 --> 00:32:52,430 och det är en mycket renare. 656 00:32:52,430 --> 00:32:54,650 >> Okej. 657 00:32:55,970 --> 00:32:57,330 Några frågor? 658 00:32:59,350 --> 00:33:01,380 Vettigt? 659 00:33:01,380 --> 00:33:06,200 >> Avkastningen 0 - det är bara lite av en stall eller är det -? 660 00:33:06,200 --> 00:33:08,960 Ja, så att vi kan - 661 00:33:08,960 --> 00:33:11,960 bra, vi täcker detta lite mer senare 662 00:33:11,960 --> 00:33:13,290 men det visar sig att 663 00:33:13,290 --> 00:33:15,720 denna återgång 0 att vi sätter 664 00:33:15,720 --> 00:33:19,090 I slutet av huvud hela tiden - 665 00:33:19,090 --> 00:33:21,980 Du kan kinda bara ta det som något vi gör 666 00:33:21,980 --> 00:33:24,930 för närvarande. 667 00:33:24,930 --> 00:33:28,860 Vad vi har börjat prata om med funktioner 668 00:33:28,860 --> 00:33:31,600 typ av i slutet av förra veckan och sedan igen den här veckan 669 00:33:31,600 --> 00:33:33,550 är att en funktion 670 00:33:33,550 --> 00:33:37,680 tar ingångar som är dessa saker inom parentes; 671 00:33:37,680 --> 00:33:41,690 dessa är 2 ingångar, våra argument eller parametrar, 672 00:33:41,690 --> 00:33:44,540 vad de kallas till vår huvuduppgift, 673 00:33:44,540 --> 00:33:48,510 och sedan en funktion alstrar en utsignal 674 00:33:48,510 --> 00:33:51,290 som vi kallar ett returvärde. 675 00:33:51,290 --> 00:33:56,260 Och returvärdet i fallet viktigaste är int, 676 00:33:56,260 --> 00:33:58,320 detta heltal, 677 00:33:58,320 --> 00:34:01,160 och hur du berättar en funktion, "Hej, detta är vad din produktion 678 00:34:01,160 --> 00:34:05,840 kommer att bli, "är på ordet" återvända ", 679 00:34:05,840 --> 00:34:07,960 det sökordet, snarare 680 00:34:07,960 --> 00:34:11,000 och så huvudsakliga återvänder 0 681 00:34:11,000 --> 00:34:13,389 eller huvudsakliga mata 0 682 00:34:13,389 --> 00:34:15,139 är standard i C-program 683 00:34:15,139 --> 00:34:18,110 eftersom återvänder 0 från stora medel som 684 00:34:18,110 --> 00:34:21,600 "Hej, allt utförs med mitt program bara bra." 685 00:34:21,600 --> 00:34:24,639 Om vi ​​skulle sätta något annat än 0, 686 00:34:24,639 --> 00:34:27,440 som 1, till exempel, 687 00:34:27,440 --> 00:34:31,080 som används för att tala om vem körde programmet 688 00:34:31,080 --> 00:34:33,540 att något gick fel. 689 00:34:35,739 --> 00:34:39,989 Så när vi blir mer delaktiga med grejer över terminen, 690 00:34:39,989 --> 00:34:42,670 om du någonsin behöver säga, 691 00:34:42,670 --> 00:34:46,650 "Oj, du vet, något gick fel med det här programmet," 692 00:34:46,650 --> 00:34:49,409 snarare än att mitt program kraschar vill jag meddela 693 00:34:49,409 --> 00:34:52,310 löpare av mitt program att något gick fel, 694 00:34:52,310 --> 00:34:54,530 Du kan använda returvärdet, 695 00:34:54,530 --> 00:34:57,230 som vi kallar det, det är inte 0. 696 00:35:00,180 --> 00:35:02,240 >> Så vi kommer att täcka det lite mer 697 00:35:02,240 --> 00:35:05,480 när vi kommer in funktioner. 698 00:35:05,480 --> 00:35:09,030 Denna typ av vettigt? 699 00:35:09,030 --> 00:35:11,240 Okej. 700 00:35:11,240 --> 00:35:13,530 Funktioner är typ av bisarra - 701 00:35:13,530 --> 00:35:17,270 Jag tror att för människor som har massor av matematik bakgrund, 702 00:35:17,270 --> 00:35:20,100 det kommer lite lättare, 703 00:35:20,100 --> 00:35:22,540 särskilt om du har lite mer abstrakt matematik bakgrund 704 00:35:22,540 --> 00:35:24,240 och du är van att prata om funktioner 705 00:35:24,240 --> 00:35:27,370 och alla såna saker. 706 00:35:28,590 --> 00:35:30,610 Men vi ska försöka täcka dem 707 00:35:30,610 --> 00:35:33,280 och gå lugnt och fint när de kommer upp. 708 00:35:34,730 --> 00:35:37,870 Likaså hela denna int argc, 709 00:35:37,870 --> 00:35:41,090 char * argv [], 710 00:35:41,090 --> 00:35:44,960 för just nu, kan du också ta det som pannan platta. 711 00:35:46,650 --> 00:35:49,050 Vi har börjat att täcka de lite i föreläsning 712 00:35:49,050 --> 00:35:53,060 när vi talar om argument som får skickas in program på kommandoraden, 713 00:35:53,060 --> 00:35:55,700 men i dina problem uppsättningar och dina program, 714 00:35:55,700 --> 00:35:58,760 Det är helt bra att bara skriva ogiltig och hålla det enkelt. 715 00:35:58,760 --> 00:36:01,490 Och vad detta tomrum innebär att 716 00:36:01,490 --> 00:36:04,630 "Hej, är främsta kommer inte att acceptera några ingångar; 717 00:36:04,630 --> 00:36:07,440 detta är bara ett program som vi ska bara köra. 718 00:36:07,440 --> 00:36:09,320 Vi ska inte ge det någon extra information 719 00:36:09,320 --> 00:36:12,420 varje gång vi startar upp igång. " 720 00:36:14,730 --> 00:36:16,600 Så nu kan du göra det här; 721 00:36:16,600 --> 00:36:19,710 Du kan också även utelämna retur 0 722 00:36:19,710 --> 00:36:22,650 I slutet av dina program och de kommer springa bra, 723 00:36:22,650 --> 00:36:26,150 men jag rekommenderar bara hålla det i. 724 00:36:26,150 --> 00:36:28,320 Om ett par veckor kommer vi att börja typ av 725 00:36:28,320 --> 00:36:31,340 dra tillbaka locket lite och förstå mer om 726 00:36:31,340 --> 00:36:34,380 alla dessa olika små rörliga delar. 727 00:36:34,380 --> 00:36:38,160 >> Okej, nu ska vi prata om vår andra fråga här. 728 00:36:38,160 --> 00:36:43,190 Så vad visar "odeklarerat identifierare" vanligtvis 729 00:36:43,190 --> 00:36:46,040 Om matas av klang? 730 00:36:46,040 --> 00:36:49,290 Jag tror att vi kanske har sett att redan idag. 731 00:36:51,170 --> 00:36:54,370 Kan någon ge en resumé av vad det innebär? 732 00:36:54,370 --> 00:36:57,680 Låt oss se, Kelly - en av Kellys. 733 00:37:02,580 --> 00:37:05,300 >> Så - 734 00:37:05,300 --> 00:37:07,080 Ja, vad gör - 735 00:37:07,080 --> 00:37:10,140 >> Jag tror att när du, liksom, inte deklarera variabler och du försöker använda den. 736 00:37:10,140 --> 00:37:13,310 Ja, exakt, exakt. 737 00:37:13,310 --> 00:37:15,250 Så om du ser någonsin denna utgång 738 00:37:15,250 --> 00:37:17,690 när du försöker och kompilera ditt program, 739 00:37:17,690 --> 00:37:19,470 precis som Kelly sade, 740 00:37:19,470 --> 00:37:24,210 Det betyder att du använde en variabel som du inte deklarera, 741 00:37:24,210 --> 00:37:28,460 så om jag går tillbaka till vårt utrymme, 742 00:37:28,460 --> 00:37:31,150 och jag göra något liknande 743 00:37:31,150 --> 00:37:34,800 printf ( 744 00:37:34,800 --> 00:37:38,260 "Hej% s") 745 00:37:40,070 --> 00:37:42,440 och försöka fylla i den% s 746 00:37:42,440 --> 00:37:45,640 med en variabel är att jag inte har förklarat någonstans 747 00:37:45,640 --> 00:37:48,330 och jag försöker köra den, 748 00:37:48,330 --> 00:37:51,330 ser du vad jag får ner på denna botten här: 749 00:37:51,330 --> 00:37:54,010 "Användning av odeklarerat identifierare" s ""; 750 00:37:54,010 --> 00:37:57,710 det betyder bara att du inte deklarera din variabel. 751 00:37:57,710 --> 00:38:00,750 Samma sak händer om 752 00:38:00,750 --> 00:38:05,240 du har x och du försöker och lagra 7 i den 753 00:38:05,240 --> 00:38:08,720 och jag inte förklara X. 754 00:38:08,720 --> 00:38:10,200 Jag får samma fel: 755 00:38:10,200 --> 00:38:13,480 "Användning av odeklarerat identifierare" x "". 756 00:38:16,390 --> 00:38:18,250 >> Okej, 757 00:38:18,250 --> 00:38:21,720 så Caesar Cipher, som inte är mycket säker, 758 00:38:21,720 --> 00:38:24,590 Jag ska låta er titta på detta kort, typ av förstå varför, 759 00:38:24,590 --> 00:38:27,590 och förhoppningsvis efter att ha gjort denna veckas problem som 760 00:38:27,590 --> 00:38:29,270 där du faktiskt skriva en Caesar Cipher, kommer du att förstå lite mer 761 00:38:29,270 --> 00:38:32,600 om vad det innebär att vara en trygg och osäker - 762 00:38:36,180 --> 00:38:38,960 eller inte säker, jag antar - osäker är något annorlunda. 763 00:38:40,560 --> 00:38:43,140 Den andra saken var att vi har dessa andra frågor här 764 00:38:43,140 --> 00:38:45,470 om funktioner 765 00:38:45,470 --> 00:38:47,330 och vad en funktion är, 766 00:38:47,330 --> 00:38:52,820 och vi typ av talat om det kort när vi talade om returvärden; 767 00:38:52,820 --> 00:38:54,560 för någon som har varit att föreläsa, 768 00:38:54,560 --> 00:38:57,790 kan du sammanfatta som varit att föreläsa idag? 769 00:38:57,790 --> 00:38:59,670 Okej. 770 00:39:01,210 --> 00:39:04,320 Låt oss se, låt oss ha - kan någon berätta vad en funktion är? 771 00:39:04,320 --> 00:39:06,060 Kelly? 772 00:39:07,800 --> 00:39:11,260 >> >> Princip något du utnyttja något som är skrivet i biblioteket som är 773 00:39:11,260 --> 00:39:14,460 mer komplicerat där borta, och då du bara skriva en kort form av det, 774 00:39:14,460 --> 00:39:17,360 så som du hänvisar till det biblioteket, med hjälp av 775 00:39:17,360 --> 00:39:19,650 allt lång kod och [ohörbart]. 776 00:39:19,650 --> 00:39:22,680 Ja, exakt, och sedan vill du lägga till något till det? 777 00:39:22,680 --> 00:39:27,050 >> Ja, jag tror på det som liknar begreppet formel i matematik 778 00:39:27,050 --> 00:39:30,130 där du skriver bara en formel och sedan kan du ansluta variabler i 779 00:39:30,130 --> 00:39:32,660 och det är vad en funktion är [ohörbart]. 780 00:39:32,660 --> 00:39:35,390 >> Ja, så har vi ett par svar här 781 00:39:35,390 --> 00:39:38,080 som är både riktigt bra och rätt på. 782 00:39:38,080 --> 00:39:43,040 Det är med hänvisning till kod som är skrivits i biblioteket någonstans 783 00:39:43,040 --> 00:39:45,390 som är mer komplicerat 784 00:39:45,390 --> 00:39:47,130 och sedan kan du dra nytta av denna kod 785 00:39:47,130 --> 00:39:50,480 och faktiskt använda den genom att bara skriva korta formen av det - 786 00:39:50,480 --> 00:39:54,060 eller snarare dess namn - 787 00:39:54,060 --> 00:39:57,590 och sedan finns det också denna jämförelse med en formel i matematik 788 00:39:57,590 --> 00:40:00,400 eller fysik, alla såna saker 789 00:40:00,400 --> 00:40:02,980 där du har en formel 790 00:40:02,980 --> 00:40:05,690 och du kan sedan ansluta 791 00:40:05,690 --> 00:40:08,100 de variabler som denna formel 792 00:40:08,100 --> 00:40:11,130 att sedan få resultatet av formeln, 793 00:40:11,130 --> 00:40:14,580 så du tänker på det som som den kvadratiska ekvationen. 794 00:40:14,580 --> 00:40:17,690 Tänk om i stället för att lära sig om 795 00:40:17,690 --> 00:40:21,310 vad den kvadratiska formeln är i matematik klass, 796 00:40:21,310 --> 00:40:24,610 du hade bara en liten miniräknare program som gjorde det för dig. 797 00:40:24,610 --> 00:40:28,930 Har någon använda miniräknare program matematik klasser i gymnasiet? 798 00:40:28,930 --> 00:40:31,020 Ja, fysik klasser? 799 00:40:31,020 --> 00:40:34,670 Där du kan bara säga "Hej, kvadratisk formel. 800 00:40:34,670 --> 00:40:37,740 Dessa är de variabler som jag vill ingång. 801 00:40:37,740 --> 00:40:40,250 Ge mig svaret. " 802 00:40:40,250 --> 00:40:42,170 Det är typ av vad en funktion är. 803 00:40:42,170 --> 00:40:44,850 Det är ett sätt för oss att 804 00:40:44,850 --> 00:40:47,720 typ av skriva som en liten liten sub-programmet 805 00:40:47,720 --> 00:40:51,700 inom vår större program 806 00:40:51,700 --> 00:40:55,090 och använda den om och om igen 807 00:40:55,090 --> 00:40:58,380 så att vi inte behöver kopiera och klistra in koden, 808 00:40:58,380 --> 00:41:04,220 Vi kan ge det olika ingångar och få olika resultat, 809 00:41:04,220 --> 00:41:07,090 det är super praktiskt 810 00:41:07,090 --> 00:41:11,420 När du försöker skriva olika program vid olika tidpunkter. 811 00:41:11,420 --> 00:41:14,580 >> Så till exempel, en funktion som vi har använt om och om och om igen 812 00:41:14,580 --> 00:41:17,310 under kursen är printf. 813 00:41:17,310 --> 00:41:19,680 Printf är i sig en funktion 814 00:41:19,680 --> 00:41:23,360 och det visar sig att det faktiskt är en ganska lång och komplicerad, 815 00:41:23,360 --> 00:41:26,420 otäck ut, fungerar att skriva. 816 00:41:26,420 --> 00:41:29,590 Så så enkelt som det verkar för oss 817 00:41:29,590 --> 00:41:31,810 att skriva saker ut till skärmen, 818 00:41:31,810 --> 00:41:34,820 eftersom vi alla gjorde just det i början av avsnitt idag, 819 00:41:34,820 --> 00:41:36,870 det visar sig att det faktiskt är, du vet, 820 00:41:36,870 --> 00:41:39,900 ett bra par hundra rader kod. 821 00:41:42,030 --> 00:41:45,620 Det är inte något som jag någonsin skulle vilja skriva, säker, 822 00:41:45,620 --> 00:41:47,480 men vi får använda den varje dag, det är ganska coolt, 823 00:41:47,480 --> 00:41:49,020 så vi får dela den med varandra, 824 00:41:49,020 --> 00:41:51,790 med olika program, 825 00:41:51,790 --> 00:41:54,520 så vi kommer dyka mer i funktioner; 826 00:41:54,520 --> 00:41:56,090 för närvarande, vi är inte - 827 00:41:56,090 --> 00:41:59,150 den enda funktionen vi ska skriva är viktigaste. 828 00:41:59,150 --> 00:42:01,570 Huvud själv är också en funktion, 829 00:42:01,570 --> 00:42:04,270 och du kan se det har fått sin produktion, 830 00:42:04,270 --> 00:42:06,610 dess ingångar som vi pratade om, 831 00:42:06,610 --> 00:42:08,930 och sedan dess namn, vilket är främsta. 832 00:42:08,930 --> 00:42:11,800 Main är lite av en - är en speciell funktion där. 833 00:42:11,800 --> 00:42:14,800 I din C-programmet, måste det finnas en huvudfunktion, 834 00:42:14,800 --> 00:42:17,900 och så för nu, vi har typ av utelämnat skriva 835 00:42:17,900 --> 00:42:21,400 prototypen, eller deklarering huvud. 836 00:42:21,400 --> 00:42:23,050 Vi har gett det till dig, 837 00:42:23,050 --> 00:42:25,650 och vi har just haft du fyller i form av ämnena. 838 00:42:25,650 --> 00:42:29,120 >> >> Så för det andra problemet som, behöver vi inte 839 00:42:29,120 --> 00:42:31,350 skriv det i den andra funktionen? 840 00:42:31,350 --> 00:42:34,200 Jag tror inte det. 841 00:42:34,200 --> 00:42:37,600 Jag tror det är alla här. 842 00:42:37,600 --> 00:42:41,710 Ja, så Caesar Cipher, 843 00:42:41,710 --> 00:42:45,000 du inte behöver, ser det inte ut, 844 00:42:48,740 --> 00:42:53,150 och Vigenère, du inte heller, 845 00:42:53,150 --> 00:42:56,400 så - och det visar sig att du inte någonsin faktiskt behöva skriva 846 00:42:56,400 --> 00:42:58,250 en funktion, eller hur? 847 00:42:58,250 --> 00:43:01,950 Du ringer alltid sätta alla dina kod i main, 848 00:43:01,950 --> 00:43:04,500 och många programmerare gör det. 849 00:43:04,500 --> 00:43:07,130 När vi går vidare, 850 00:43:07,130 --> 00:43:09,480 vi börjar införa funktioner som ett sätt 851 00:43:09,480 --> 00:43:11,530 att rensa upp din kod, 852 00:43:11,530 --> 00:43:13,380 för att göra det mer elegant, 853 00:43:13,380 --> 00:43:16,890 om du har uppgifter - Ungefär som när vi pratade om slingor, 854 00:43:16,890 --> 00:43:20,400 hur ibland finns det saker som du vill göra igen och igen och igen, 855 00:43:20,400 --> 00:43:23,510 och du har typ av naiva sätt - 856 00:43:23,510 --> 00:43:26,360 eller vad vi kallar ofta "halm mannen"-lösning, 857 00:43:26,360 --> 00:43:29,390 är att bara kopiera och klistra in om och om igen - 858 00:43:29,390 --> 00:43:31,000 Du kan göra samma sak med funktioner där du bara kopiera och klistra in 859 00:43:31,000 --> 00:43:33,360 samma kod om och om igen, 860 00:43:33,360 --> 00:43:35,750 men det blåser upp din kod - 861 00:43:35,750 --> 00:43:38,550 det hamnar gör din kod riktigt långt - 862 00:43:38,550 --> 00:43:41,550 och det blir också lite förvirrande, 863 00:43:41,550 --> 00:43:43,470 och då betyder det att du inte kan vilja - 864 00:43:43,470 --> 00:43:45,250 om du någonsin vill använda koden igen i ett annat program, 865 00:43:45,250 --> 00:43:48,610 du också fastnat kopiera och klistra det igen, 866 00:43:48,610 --> 00:43:51,170 så en av de saker vi ska prata om är 867 00:43:51,170 --> 00:43:54,960 typ av design och stil av dina program, 868 00:43:54,960 --> 00:43:57,010 och så när det är vettigt att typ av 869 00:43:57,010 --> 00:43:59,800 paket upp något och lägga den som en separat funktion, 870 00:43:59,800 --> 00:44:02,080 Vi uppmuntrar dig att göra det, 871 00:44:02,080 --> 00:44:04,700 och det är något som, återigen, 872 00:44:04,700 --> 00:44:07,790 det finns ingen hård och snabb regel. 873 00:44:07,790 --> 00:44:11,540 Vi säger sällan att du måste skriva en funktion som kallas detta, 874 00:44:12,870 --> 00:44:16,320 men det är mer av en av de saker du bara utvecklas över tiden 875 00:44:16,320 --> 00:44:19,470 som du skriver fler och fler program. 876 00:44:21,940 --> 00:44:24,790 >> Några fler frågor? 877 00:44:26,340 --> 00:44:30,610 Okej, så låt oss nu 878 00:44:30,610 --> 00:44:34,750 Gå tillbaka till den här killen här, 879 00:44:34,750 --> 00:44:37,800 så jag är fortfarande i denna del av frågorna. 880 00:44:37,800 --> 00:44:39,900 Vi har pratat om alla dessa olika sådana, 881 00:44:39,900 --> 00:44:42,050 vad är en funktion, varför man skriver funktioner, 882 00:44:42,050 --> 00:44:44,700 när du kan bara kopiera och klistra in? 883 00:44:44,700 --> 00:44:47,700 Förhoppningsvis har vi övertygat dig om att skriva funktioner är en bra sak. 884 00:44:47,700 --> 00:44:50,870 Så låt oss nu gå vidare till denna MySpace program, 885 00:44:50,870 --> 00:44:53,080 och vi kommer att spendera lite tid att göra detta. 886 00:44:54,600 --> 00:44:56,480 >> Så, låt oss se, 887 00:44:56,480 --> 00:45:00,230 kan jag ha någon läsa detta för mig? 888 00:45:02,640 --> 00:45:04,660 Låt oss ha Mikhaila - kommer du läsa detta för oss? 889 00:45:07,660 --> 00:45:08,890 >> Du menar tillbaka när MySpace - 890 00:45:08,890 --> 00:45:10,920 Tillbaka när MySpace var coolt. 891 00:45:10,920 --> 00:45:12,070 >> "Tillbaka när MySpace var cool, 892 00:45:12,070 --> 00:45:14,900 Det var på modet att skriva så här. 893 00:45:14,900 --> 00:45:17,320 Kanske är det fortfarande? Jag är inte riktigt säker. 894 00:45:17,320 --> 00:45:19,990 I varje fall, med användning av CS50 Appliance, 895 00:45:19,990 --> 00:45:22,600 CS50 Kör eller CS50 Spaces 896 00:45:22,600 --> 00:45:25,370 skriva ett program som uppmanar användaren att ett meddelande 897 00:45:25,370 --> 00:45:29,350 och matar därefter ut meddelandet med sin första bokstaven aktiveras, 898 00:45:29,350 --> 00:45:31,800 med alla andra bokstäver i alternerande fall, 899 00:45:31,800 --> 00:45:34,010 enligt den prov på utdata nedan, 900 00:45:34,010 --> 00:45:37,060 där fetstil text står för cirka användarens inmatning. 901 00:45:37,060 --> 00:45:39,800 För enkelhetens skull kan du anta att användaren 902 00:45:39,800 --> 00:45:42,810 kommer endast mata in gemener och mellanslag. 903 00:45:42,810 --> 00:45:45,900 Tänk på detta problem en möjlighet att öva, 904 00:45:45,900 --> 00:45:48,640 du kommer inte att bli ombedd att lämna programmet. " 905 00:45:48,640 --> 00:45:51,640 >> Awesome, tack. 906 00:45:51,640 --> 00:45:54,750 Så som Mikhaila sagt, 907 00:45:54,750 --> 00:45:58,850 vi kommer att skriva ett program som MySpaces din kod. 908 00:45:58,850 --> 00:46:02,230 Så gjorde någon av er använder MySpace? 909 00:46:02,230 --> 00:46:04,100 Någon av er har MySpace konton? 910 00:46:04,100 --> 00:46:05,920 Oh, ja, ja! 911 00:46:05,920 --> 00:46:08,300 Det var ganska coolt. 912 00:46:08,300 --> 00:46:09,950 [Skratt] 913 00:46:09,950 --> 00:46:12,060 Jag vet. 914 00:46:12,060 --> 00:46:14,500 Dating mig själv. 915 00:46:15,490 --> 00:46:18,300 Så vad vi försöker göra är att skriva ett program 916 00:46:18,300 --> 00:46:21,110 som går igenom 917 00:46:21,110 --> 00:46:24,490 och den första bokstaven 918 00:46:24,490 --> 00:46:27,140 och sedan varje bokstav därefter - 919 00:46:27,140 --> 00:46:29,350 eller varannan bokstav därefter, jag är ledsen. 920 00:46:29,350 --> 00:46:32,910 >> Så - och du kan se i det här exemplet, 921 00:46:32,910 --> 00:46:35,260 detta är hur vi kör programmet, 922 00:46:35,260 --> 00:46:38,780 och så detta är bara att säga: "Vi kör ett program som heter a.out. 923 00:46:41,490 --> 00:46:44,630 Ingången som vi ska ge det 924 00:46:44,630 --> 00:46:47,090 kommer att bli tillfrågad. 925 00:46:47,090 --> 00:46:51,150 Vi kommer inte att lämna in på kommandoraden. " 926 00:46:51,150 --> 00:46:54,100 Om du har följt alla föreläsningar 927 00:46:54,100 --> 00:46:56,710 och höra om kommandoradsargument, 928 00:46:57,810 --> 00:47:00,080 Det är typ av där de - som funky syntax 929 00:47:00,080 --> 00:47:04,530 på stora kommer in med int argc, allt det där, 930 00:47:04,530 --> 00:47:07,630 så här vi inte använder det, vi är inte att göra med något av det. 931 00:47:09,400 --> 00:47:12,650 Vi ska bara få detta inskrivet av användaren, 932 00:47:12,650 --> 00:47:15,700 och sedan den andra raden med funky kapitalisering 933 00:47:15,700 --> 00:47:18,550 är vad vi vill vårt program till utgång. 934 00:47:19,790 --> 00:47:22,860 >> Så istället för att använda apparaten eller Run använder vi Spaces 935 00:47:22,860 --> 00:47:25,360 eftersom vi har utrymmen, 936 00:47:25,360 --> 00:47:28,640 och så om ni skulle 937 00:47:28,640 --> 00:47:32,380 få din kod se ut ungefär så här, 938 00:47:32,380 --> 00:47:35,930 så jag ska spara denna översyn 939 00:47:35,930 --> 00:47:38,390 bara så du har pannan plattan här 940 00:47:38,390 --> 00:47:42,840 som ser ut så här, int main (void), ingenting i den. 941 00:47:44,480 --> 00:47:48,460 Egentligen är det vi ska göra vi ska bara ta bort allt tillsammans. 942 00:47:48,460 --> 00:47:50,330 Vi vill ha ett oskrivet blad, 943 00:47:50,330 --> 00:47:52,470 eftersom vi inte ska börja skriva kod; 944 00:47:52,470 --> 00:47:55,380 snarare, vi ska försöka skriva lite pseudokod 945 00:47:55,380 --> 00:47:58,580 vilket egentligen bara innebär att vi kommer att skriva något som inte är kod 946 00:47:58,580 --> 00:48:01,010 den typen av beskriver vad vi vill göra, 947 00:48:01,010 --> 00:48:05,180 kinda som David gjorde den första dagen i föreläsning, 948 00:48:05,180 --> 00:48:08,310 eller jag antar att det var den andra dagen av föreläsning när han gjorde hela strumpor demo. 949 00:48:08,310 --> 00:48:10,990 Ni minns att - se strumporna? 950 00:48:10,990 --> 00:48:13,300 Josef var uppe slags skriva på engelska? 951 00:48:13,300 --> 00:48:16,300 Så vi ska göra samma sak. 952 00:48:16,300 --> 00:48:18,380 >> Så när jag börjar skriva pseudokod, 953 00:48:18,380 --> 00:48:22,640 Jag vill börja med att titta på vad ingången kommer att bli. 954 00:48:22,640 --> 00:48:24,950 Och jag ger mig själv ett urval fall, 955 00:48:24,950 --> 00:48:28,780 så som "tack för add!" 956 00:48:35,030 --> 00:48:38,010 Och då jag skriver också vad jag vill produktionen ska vara, 957 00:48:38,010 --> 00:48:42,210 som i detta fall är något som detta. 958 00:48:53,790 --> 00:48:56,050 Och den sortens ger mig en bra, liksom, startpunkt att tänka på, 959 00:48:56,050 --> 00:48:59,730 "Okej, jag vill ta linje 1 960 00:48:59,730 --> 00:49:03,560 och jag vill omvandla den till linje 2, " 961 00:49:03,560 --> 00:49:06,570 och den typen av hjälper vägleda mitt tänkande. 962 00:49:06,570 --> 00:49:09,990 Detta är ett bra ställe att börja. 963 00:49:09,990 --> 00:49:12,190 Ett annat sätt att tänka på det också, eftersom vi kinda gå vidare 964 00:49:12,190 --> 00:49:15,020 och när du gör detta i dina egna program, är att 965 00:49:15,020 --> 00:49:18,530 tänka ungefär som vad är kanten fall till detta? 966 00:49:18,530 --> 00:49:20,740 Vad är typ av de konstiga scenarier? 967 00:49:20,740 --> 00:49:23,660 Vilka är de konstiga insatsvaror som vi kan få? 968 00:49:23,660 --> 00:49:26,550 Och vad ska de utgångar se ut? 969 00:49:26,550 --> 00:49:29,670 Till exempel, en konstig ingång 970 00:49:29,670 --> 00:49:33,200 skulle vara här, 971 00:49:33,200 --> 00:49:35,630 skapa absolut ingenting, 972 00:49:35,630 --> 00:49:37,840 som vad ska vi mata i så fall? 973 00:49:37,840 --> 00:49:40,530 Något vi vill tänka på också. 974 00:49:40,530 --> 00:49:44,450 >> Så precis som en fråga, 975 00:49:44,450 --> 00:49:46,870 vad kan vi vill utmatning? 976 00:49:46,870 --> 00:49:50,740 Om vi ​​inte får någon ingång alls, vad ska vi programmet mata? 977 00:49:53,740 --> 00:49:54,860 >> Inget. 978 00:49:54,860 --> 00:49:57,340 Inget? Låter bra. 979 00:49:57,340 --> 00:49:59,280 Så vi vill se till att vi inte skriver någonting 980 00:49:59,280 --> 00:50:01,500 Om vi ​​inte får något i. 981 00:50:01,500 --> 00:50:04,320 Cool. Okej. 982 00:50:04,320 --> 00:50:07,370 Så 983 00:50:07,370 --> 00:50:09,380 Jag ska ringa på ett par människor som vi går igenom 984 00:50:09,380 --> 00:50:12,790 och bara räkna ut ungefär som vad den allmänna algoritmen 985 00:50:12,790 --> 00:50:15,250 och vi typ börja arbeta igenom det här tillsammans. 986 00:50:16,240 --> 00:50:19,710 >> Så, låt oss se. Missy. 987 00:50:19,710 --> 00:50:21,220 Hur tror du att vi skulle börja? 988 00:50:21,220 --> 00:50:24,830 Vad skulle vara ett bra ställe att börja här 989 00:50:24,830 --> 00:50:27,900 om vi vill förändra, säger, linje 1 990 00:50:27,900 --> 00:50:29,440 i linje 2? 991 00:50:29,440 --> 00:50:32,650 Kan du liksom bara förklara för mig, på engelska, vad du tänker? 992 00:50:32,650 --> 00:50:34,770 Inte ens oroa kod. 993 00:50:34,770 --> 00:50:38,250 >> Det första jag skulle göra vore att 994 00:50:38,250 --> 00:50:41,170 typ av direkt användaren att berätta vad du vill. 995 00:50:41,170 --> 00:50:44,730 Okej, så att säga, 996 00:50:44,730 --> 00:50:47,450 "Hej, användare. Jag vill 997 00:50:47,450 --> 00:50:50,560 en sträng "- fantastisk. 998 00:50:50,560 --> 00:50:52,990 Så låt oss skriva ner det. 999 00:50:52,990 --> 00:50:56,140 Uppmana användaren efter en sträng. 1000 00:50:56,140 --> 00:50:59,270 Det låter som en bra start. 1001 00:51:03,920 --> 00:51:06,460 Okej. 1002 00:51:06,460 --> 00:51:09,750 Låt oss be Kelly Ren denna gång. 1003 00:51:09,750 --> 00:51:11,580 Vad skulle vi vilja då göra nu? 1004 00:51:11,580 --> 00:51:14,220 Vad är typ av vår nästa -? 1005 00:51:14,220 --> 00:51:18,080 >> Samla deras insatser och lagra den som en variabel. 1006 00:51:18,080 --> 00:51:20,470 Jättebra. 1007 00:51:20,470 --> 00:51:24,280 Så samla strängen, 1008 00:51:25,450 --> 00:51:27,880 förvara den i en variabel. 1009 00:51:34,840 --> 00:51:36,460 Så är det något speciellt vi vill göra här? 1010 00:51:36,460 --> 00:51:39,700 Vill vi kontrollera deras bidrag 1011 00:51:39,700 --> 00:51:42,260 innan -? 1012 00:51:42,260 --> 00:51:43,790 >> Ja. 1013 00:51:43,790 --> 00:51:46,330 Vad kan vi vill kontrollera? 1014 00:51:46,330 --> 00:51:48,980 >> Du sa att vi inte behöver kontrollera om det är ett nummer, eller hur? 1015 00:51:48,980 --> 00:51:52,400 Eftersom det kommer att anta att det är gemener? 1016 00:51:52,400 --> 00:51:55,650 Ja. 1017 00:51:56,380 --> 00:51:58,920 >> Så det visar sig att - ja. 1018 00:51:58,920 --> 00:52:01,850 Så getString garanteras att återvända oss en sträng. 1019 00:52:01,850 --> 00:52:05,050 Det kommer inte att returnera ett tal till oss eller nåt sånt. 1020 00:52:05,050 --> 00:52:09,140 Det kan finnas siffra tecken inom den strängen, dock. 1021 00:52:09,140 --> 00:52:13,460 Och de kan vi bortse som vi gjorde kapitalisering. 1022 00:52:13,460 --> 00:52:16,620 Men en tom sträng är helt bra, 1023 00:52:16,620 --> 00:52:19,900 så fall här på linje 4 och 5, 1024 00:52:19,900 --> 00:52:22,020 höger, där det inte finns någon ingång, 1025 00:52:22,020 --> 00:52:25,190 och vi har lagt något som vår produktion. 1026 00:52:25,190 --> 00:52:28,730 Vi behöver inte oroa dig för att se till att det finns något i strängen 1027 00:52:28,730 --> 00:52:31,840 eller att strängen är minst 4 tecken lång; 1028 00:52:31,840 --> 00:52:34,190 allt är bra. 1029 00:52:34,190 --> 00:52:38,270 Så detta kontrasteras till exempel med som de pennies program som du skrev 1030 00:52:38,270 --> 00:52:42,340 där du var tvungen att se till att du fick icke-negativa tal; 1031 00:52:42,340 --> 00:52:46,430 du var tvungen att se till att du fick rätt antal dagar i en månad. 1032 00:52:46,430 --> 00:52:49,630 Och hur gör ni det? 1033 00:52:49,630 --> 00:52:51,470 Hur skulle du göra det testet? 1034 00:52:51,470 --> 00:52:54,090 Vad gjorde det kräver att du använder? 1035 00:52:54,090 --> 00:52:55,650 >> Gör-while-slingor. 1036 00:52:55,650 --> 00:53:00,840 Gör-while-slingor, andra typer av loopar också, ja. 1037 00:53:02,190 --> 00:53:04,520 Så det visar sig att vi inte behöver använda en slinga i detta fall, 1038 00:53:04,520 --> 00:53:07,360 när vi ber för en sträng, är vilken typ av trevligt. 1039 00:53:08,280 --> 00:53:10,620 >> Okej, vi går vidare. 1040 00:53:12,410 --> 00:53:14,270 Så, Stella. 1041 00:53:14,270 --> 00:53:17,530 Kan du berätta lite om vad vi ska göra härnäst? 1042 00:53:17,530 --> 00:53:20,270 Så nu har vi strängen har vi det lagras i en variabel, 1043 00:53:20,270 --> 00:53:23,360 Vad behöver vi göra med strängen? 1044 00:53:26,790 --> 00:53:33,530 >> Vi behöver - 1045 00:53:33,530 --> 00:53:36,550 identifiera 2 - 1046 00:53:36,550 --> 00:53:39,290 Ja, bara säga det på engelska, det är häftigt. 1047 00:53:39,290 --> 00:53:42,670 >> Identifiera [ohörbara] huvudstäder - eller versaler. 1048 00:53:44,420 --> 00:53:48,130 Ja, så du skulle identifiera vilka som är versaler och gemener. 1049 00:53:50,020 --> 00:53:54,180 Vi kan inte versaler eller gemener dem tills vi har identifierat vilka. 1050 00:54:03,790 --> 00:54:06,350 Så vi ska sätta det här. 1051 00:54:06,350 --> 00:54:10,210 >> Så bara tänka på den här processen, 1052 00:54:10,210 --> 00:54:13,200 Hur gör vi denna identifiering? 1053 00:54:13,200 --> 00:54:15,050 Vet du, Dan? 1054 00:54:15,050 --> 00:54:18,120 Typ av vad vi - vilket verktyg vi skulle behöva använda ur vår verktygslåda? 1055 00:54:18,120 --> 00:54:22,500 >> Jag skulle lägga den i något i likhet med en rad eller varje rad 1056 00:54:22,500 --> 00:54:24,240 är sin egen lilla låda, 1057 00:54:24,240 --> 00:54:27,240 och sedan versaler det därifrån eller inte. 1058 00:54:27,240 --> 00:54:30,440 Okej, så ett verktyg som vi kan använda är en matris. 1059 00:54:30,440 --> 00:54:33,760 Vad har vi att titta på i strängen, 1060 00:54:33,760 --> 00:54:36,680 Men att räkna ut - vi var tvungna att titta på tecknen. 1061 00:54:36,680 --> 00:54:40,890 >> Så du har att titta på längden på strängen? 1062 00:54:40,890 --> 00:54:43,880 Ja, så en del av det är att få längden på strängen. 1063 00:54:50,450 --> 00:54:54,150 Bara av nyfikenhet, vad vi använder för att få längden på en sträng? 1064 00:54:54,150 --> 00:54:58,080 >> Strlen? 1065 00:54:58,080 --> 00:55:02,870 Ja, strlen, vi kallar detta "strlen" 1066 00:55:04,180 --> 00:55:08,620 Alla dessa strängfunktioner, så strlen är en funktion, 1067 00:55:08,620 --> 00:55:10,670 och det är super praktiskt, eftersom vi kan använda den för att bara säga, 1068 00:55:10,670 --> 00:55:13,430 Hej, strlen: Här är en sträng, berätta hur lång tid det är. 1069 00:55:13,430 --> 00:55:17,350 I föreläsningen idag, pratade David mycket om hur strlen genomförs, 1070 00:55:17,350 --> 00:55:20,370 vad som faktiskt händer bakom kulisserna. 1071 00:55:20,370 --> 00:55:25,450 Men detta är en av de mycket super praktiska sådana. 1072 00:55:25,450 --> 00:55:29,170 Det finns andra som också i strängen biblioteket, 1073 00:55:29,170 --> 00:55:34,690 såsom strcmp som stavas "strcmp", 1074 00:55:34,690 --> 00:55:38,010 som används för att jämföra strängar till varandra. 1075 00:55:41,220 --> 00:55:45,020 Andra som du kommer att använda som strstr, 1076 00:55:45,020 --> 00:55:48,770 vilket är bra för att hitta underleverantörer strängar och så vidare. 1077 00:55:48,770 --> 00:55:53,380 För det mesta, de alla börjar med str och sedan gå vidare för att vara något annat. 1078 00:55:53,380 --> 00:55:57,080 Anledningen till att de egentligen inte stava dem som sträng och så vidare 1079 00:55:57,080 --> 00:56:00,260 beror tillbaka som början av C, 1080 00:56:00,260 --> 00:56:04,100 när folk var först skrivande och allt det där, 1081 00:56:04,100 --> 00:56:07,580 de hade begränsningar i antalet tecken som du kan använda 1082 00:56:07,580 --> 00:56:09,950 för funktionsnamn och variabelnamn, 1083 00:56:09,950 --> 00:56:12,620 så allt är som Super kondenseras. 1084 00:56:12,620 --> 00:56:15,750 Men när du ser något som börjar med str, 1085 00:56:15,750 --> 00:56:18,600 det betyder oftast detta har något att göra med en sträng. 1086 00:56:20,990 --> 00:56:23,350 >> Okej, så du har att få längden på strängen, 1087 00:56:23,350 --> 00:56:27,110 och sedan, vad gör vi med karaktärerna? 1088 00:56:27,110 --> 00:56:29,020 Vet du, Sam? 1089 00:56:29,020 --> 00:56:32,410 >> Jag har ingen aning, jag försökte lista ut det. 1090 00:56:32,410 --> 00:56:35,410 Jag vet inte - jag önskar att det fanns något sätt att - 1091 00:56:35,410 --> 00:56:38,990 Jag menar, jag skulle tro att vi kanske kunde göra något med odds och jämnar, 1092 00:56:38,990 --> 00:56:40,860 men jag vet inte om någon funktion som. 1093 00:56:40,860 --> 00:56:42,240 Ja. 1094 00:56:43,160 --> 00:56:45,200 >> Men det - det skulle inte nödvändigtvis fungera, 1095 00:56:45,200 --> 00:56:48,690 för då skulle du få utrymmen att vara - 1096 00:56:48,690 --> 00:56:51,130 du måste ha utrymme att få tips om hur - 1097 00:56:51,130 --> 00:56:54,310 Okej. 1098 00:56:54,310 --> 00:56:56,490 >> Jag vet inte - jag sortens förlorade på denna punkt. 1099 00:56:56,490 --> 00:56:58,120 Ja - nej, nej, nej, det är bra punkter. 1100 00:56:58,120 --> 00:57:00,420 Så vad vi behöver göra är, liksom Sam sa, 1101 00:57:00,420 --> 00:57:02,970 måste vi spåra vilka bokstäver är de udda bokstäver, 1102 00:57:02,970 --> 00:57:05,540 och vilka som är de jämna bokstäver. 1103 00:57:06,650 --> 00:57:09,090 Men vi vill se till att vi inte bara är ute 1104 00:57:09,090 --> 00:57:12,110 vid udda och jämna 1105 00:57:12,110 --> 00:57:14,030 index i strängen, 1106 00:57:14,030 --> 00:57:17,660 utan snarare att titta på de udda och jämna bokstäver i strängen, 1107 00:57:17,660 --> 00:57:20,190 så vi behöver kinda ha denna skillnad mellan 1108 00:57:20,190 --> 00:57:25,190 bokstäver - som vad är faktiskt A, B, C, D, eller så vidare, 1109 00:57:25,190 --> 00:57:29,090 och vilka saker är inte bokstäver men i vår sträng. 1110 00:57:29,090 --> 00:57:32,390 Till exempel här, såhär utropstecken är inte en bokstav, 1111 00:57:32,390 --> 00:57:36,060 men det är fortfarande en del av vårt sträng, det är fortfarande en röding. 1112 00:57:36,060 --> 00:57:38,820 Likaså, alla dessa utrymmen - 1113 00:57:38,820 --> 00:57:41,710 Det är inte meningsfullt att kapitalisera ett utrymme, eller hur? 1114 00:57:41,710 --> 00:57:46,160 Så vi vill se till att vi på något sätt hoppa dem 1115 00:57:46,160 --> 00:57:49,410 samtidigt spåra odds och jämnar. 1116 00:57:50,900 --> 00:57:54,990 >> Så typ av i våra program verktygslåda 1117 00:57:54,990 --> 00:57:57,270 Hittills, om du vill, 1118 00:57:57,270 --> 00:58:01,310 Vi har ett antal olika verktyg som vi har pratat om. 1119 00:58:01,310 --> 00:58:04,640 Så en, till exempel, är variabler, 1120 00:58:04,640 --> 00:58:07,120 som vi har pratat om här. 1121 00:58:07,120 --> 00:58:10,730 Ett annat verktyg som vi har pratat om är funktioner. 1122 00:58:10,730 --> 00:58:15,800 Så vi har pratat om variabler i vår pseudokod här uppe 1123 00:58:15,800 --> 00:58:19,760 som vad vi kommer att använda för att lagra våra sträng. 1124 00:58:19,760 --> 00:58:24,630 Vi har pratat om funktioner för att få längden på en sträng, som strlen. 1125 00:58:28,510 --> 00:58:31,170 Vi har pratat om något annat, och vi har pratat om det 1126 00:58:31,170 --> 00:58:34,850 för mycket tidigare i avsnitt idag: slingor. 1127 00:58:39,390 --> 00:58:42,030 >> Vad tycker ni om att använda en slinga i det här programmet? 1128 00:58:42,030 --> 00:58:44,110 Jared, vad tror du? 1129 00:58:47,150 --> 00:58:50,030 Skulle vi använda en slinga i det här programmet? 1130 00:58:50,030 --> 00:58:52,500 >> Förmodligen inte, nej, eftersom du inte behöver gå igenom det mer än en gång. 1131 00:58:52,500 --> 00:58:55,260 Okej, du behöver inte gå igenom vad mer än en gång? 1132 00:58:55,260 --> 00:58:57,190 >> Hela strängen. 1133 00:58:57,190 --> 00:59:00,660 Rätt, så du behöver inte gå igenom strängen hela gång. 1134 00:59:00,660 --> 00:59:03,330 Ledsen som gjorde absolut ingen mening! 1135 00:59:03,330 --> 00:59:06,360 Du behöver inte gå igenom hela strängen mer än en gång. 1136 00:59:06,360 --> 00:59:08,660 Okej. 1137 00:59:09,790 --> 00:59:11,920 Vad tycker du? 1138 00:59:11,920 --> 00:59:14,110 >> Jag tror att det är bättre att använda dem 1139 00:59:14,110 --> 00:59:16,640 så att vi kan göra som kapitalisera medan 1140 00:59:16,640 --> 00:59:19,750 platsen för det är [ohörbart] nummer. 1141 00:59:19,750 --> 00:59:22,940 Stor, och så utnyttja vad? 1142 00:59:22,940 --> 00:59:25,200 Okej, så vi säger att 1143 00:59:25,200 --> 00:59:28,130 Vi bör använda en slinga för att vi vill 1144 00:59:28,130 --> 00:59:32,550 en versal medan det inte är en siffra. 1145 00:59:35,130 --> 00:59:37,140 Så - ledsen, ville du lägga till? 1146 00:59:37,140 --> 00:59:39,340 >> Jag tänkte säga att det sätt du behandlar strängen 1147 00:59:39,340 --> 00:59:42,290 och det [ohörbart] separera [ohörbart] på karaktärerna? 1148 00:59:42,290 --> 00:59:43,710 Ja. 1149 00:59:43,710 --> 00:59:45,850 >> Och då kan vi tilldela nummer till - 1150 00:59:45,850 --> 00:59:47,780 eller baserat på placeringen av bokstäverna i strängen? 1151 00:59:47,780 --> 00:59:49,720 Ja. 1152 00:59:49,720 --> 00:59:53,640 >> Och identifiera om det är udda eller jämnt och att kapitalisera själva brevet 1153 00:59:53,640 --> 00:59:57,750 medan placeringen av brevet är [ohörbart] - sorry. 1154 00:59:57,750 --> 01:00:00,150 Jättebra. 1155 01:00:00,150 --> 01:00:03,430 >> Så bara en resumé. 1156 01:00:03,430 --> 01:00:05,840 Kan du påminna mig om ditt namn igen - Jag är ledsen. 1157 01:00:05,840 --> 01:00:06,900 >> Charlotte. 1158 01:00:06,900 --> 01:00:08,490 Charlotte, okej. 1159 01:00:08,490 --> 01:00:11,130 Så vad Charlotte säger, 1160 01:00:11,130 --> 01:00:14,950 som är helt rätt - Jisses, denna gillar att automatiskt strecksatsen om mig - 1161 01:00:14,950 --> 01:00:17,770 är att om vi tittar på en sträng 1162 01:00:17,770 --> 01:00:19,160 som denna överst - 1163 01:00:19,160 --> 01:00:21,590 "Tack för lägg till" - 1164 01:00:21,590 --> 01:00:24,790 som en sekvens av tecken 1165 01:00:24,790 --> 01:00:29,010 där den är i position 0, 1166 01:00:29,010 --> 01:00:32,260 den h är vid position 1. 1167 01:00:32,260 --> 01:00:36,880 A är 2, då vi fick 3, 4, 5; 1168 01:00:36,880 --> 01:00:40,830 utrymmet är vid position 6. 1169 01:00:42,380 --> 01:00:45,300 Medan - vad är läget för f? 1170 01:00:45,300 --> 01:00:47,610 7! 1171 01:00:47,610 --> 01:00:49,300 O? 8. 1172 01:00:49,300 --> 01:00:52,070 R? 9. 1173 01:00:52,070 --> 01:00:54,340 Och sedan har vi 10, och då kan jag inte riktigt skriva det utan att det 1174 01:00:54,340 --> 01:00:57,430 kinda få rörigt på skärmen. 1175 01:00:57,430 --> 01:01:02,340 Men detta är faktiskt hur vi kan tala om strängar i minnet. 1176 01:01:02,340 --> 01:01:04,660 Är det en sträng 1177 01:01:04,660 --> 01:01:07,920 är en sekvens av tecken, 1178 01:01:07,920 --> 01:01:12,430 och när vi hänvisar till en särprägel i en sträng, 1179 01:01:12,430 --> 01:01:15,280 Vi gör det ofta genom att hänvisa till det tecknet position 1180 01:01:15,280 --> 01:01:17,620 i strängen, 1181 01:01:17,620 --> 01:01:19,910 förmodligen på samma sätt som vi talar om September 1182 01:01:19,910 --> 01:01:22,870 är den nionde månaden på året 1183 01:01:22,870 --> 01:01:27,730 eller måndag är den första dagen i veckan. 1184 01:01:29,280 --> 01:01:33,070 Så detta ger oss ett sätt att 1185 01:01:33,070 --> 01:01:37,030 räkna ut vilka som är udda jämfört med 1186 01:01:37,030 --> 01:01:39,540 eftersom du kan se här, 1187 01:01:39,540 --> 01:01:43,640 om vi matcha det med denna T, 1188 01:01:46,310 --> 01:01:49,360 kan du se att alla aktiverade dem 1189 01:01:49,360 --> 01:01:53,040 är på jämna positioner, 1190 01:01:53,040 --> 01:01:55,880 åtminstone för det första ordet, 1191 01:01:55,880 --> 01:01:59,080 och sedan saker får kastas bort när vi drabbades av utrymme, 1192 01:01:59,080 --> 01:02:02,460 eftersom vi inte räkna detta utrymme som ett brev, 1193 01:02:02,460 --> 01:02:05,150 så det är som om vi började 1194 01:02:05,150 --> 01:02:08,930 och gick 0, 1, 2, 3, 4, 5, 1195 01:02:08,930 --> 01:02:12,600 utrymme, 6, 7, 8, rymd, 1196 01:02:12,600 --> 01:02:16,440 9, och därefter 10, 11, 12, och så vidare. 1197 01:02:19,300 --> 01:02:22,910 >> Cool, så vi definitivt kommer att vilja använda någon form av slinga 1198 01:02:22,910 --> 01:02:27,760 att gå över varje tecken i tur och ordning. 1199 01:02:31,330 --> 01:02:34,580 Så vid denna punkt, 1200 01:02:36,490 --> 01:02:38,360 vi kommer tillbaka till vår gamla pseudokod här. 1201 01:02:40,970 --> 01:02:42,650 Som en del av denna identifiering av vilka som 1202 01:02:42,650 --> 01:02:45,350 är versaler och vilka som är gemener, 1203 01:02:45,350 --> 01:02:48,340 vi vill göra detta i någon form av slingan. 1204 01:02:51,080 --> 01:02:53,390 Loop, kolon. 1205 01:02:55,070 --> 01:03:01,220 Vilken typ av slinga ut de typer av slingor som vi har, 1206 01:03:01,220 --> 01:03:03,670 verkar vara bra att använda i detta fall? 1207 01:03:03,670 --> 01:03:05,610 >> Jag tänkte för slingan. 1208 01:03:05,610 --> 01:03:07,500 Och varför tänker du för slinga? 1209 01:03:07,500 --> 01:03:10,000 >> Eftersom det börjar på noll och sedan 1210 01:03:10,000 --> 01:03:13,000 När vi når strängens längd, 1211 01:03:13,000 --> 01:03:16,170 och sedan varje iteration kan du [ohörbart], också? 1212 01:03:16,170 --> 01:03:18,260 Ja, exakt. 1213 01:03:18,260 --> 01:03:21,490 Så, av de olika val av slingor, 1214 01:03:21,490 --> 01:03:25,350 Vi har för slingor, medan loopar, och gör-while-slingor. 1215 01:03:25,350 --> 01:03:28,550 När en for-slinga är speciellt användbar 1216 01:03:28,550 --> 01:03:32,120 är när man vill veta 1217 01:03:32,120 --> 01:03:34,940 typ av var du är på i slingan, 1218 01:03:34,940 --> 01:03:38,520 hur många gånger slingan har utförts hittills. 1219 01:03:38,520 --> 01:03:42,490 Vilket är precis vad vi vill veta i denna situation, 1220 01:03:42,490 --> 01:03:44,640 Liksom Kelly sade, 1221 01:03:44,640 --> 01:03:47,400 baserade av Charlottes tidigare kommentar om att vi vill veta positionen 1222 01:03:47,400 --> 01:03:49,900 av tecknet i strängen, 1223 01:03:49,900 --> 01:03:51,750 och for-slingan kommer att ge oss just det, 1224 01:03:51,750 --> 01:03:54,680 för om vi börjar slags titta tillbaka på vår sträng, 1225 01:03:54,680 --> 01:03:57,140 Om vi ​​börjar vår for-slingan vid 0, 1226 01:03:57,140 --> 01:04:00,350 och vi går upp genom längden av hela strängen, 1227 01:04:00,350 --> 01:04:04,740 då kan vi associera bokstaven T 1228 01:04:04,740 --> 01:04:08,110 med 0 i vår for-slingan, 1229 01:04:09,950 --> 01:04:13,080 bokstaven H med 1 i vår för slingan, och så vidare, 1230 01:04:13,080 --> 01:04:16,600 gå hela vägen till slutet av strängen. 1231 01:04:18,810 --> 01:04:21,890 >> Så låt oss börja koda detta bara lite 1232 01:04:21,890 --> 01:04:24,930 bara så ni får en känsla för vad det ser ut. 1233 01:04:24,930 --> 01:04:27,980 Jag ska spara, 1234 01:04:27,980 --> 01:04:31,230 så vi har fått vår pseudokod här, 1235 01:04:33,490 --> 01:04:38,120 och jag ska ta bort allt. 1236 01:04:38,120 --> 01:04:42,210 Så jag har ett oskrivet blad. 1237 01:04:42,210 --> 01:04:45,910 Jag ska börja med att skriva int main (void) 1238 01:04:45,910 --> 01:04:48,440 { 1239 01:04:48,440 --> 01:04:51,380 Jag ska sätta tillbaka 0 i 1240 01:04:51,380 --> 01:04:53,320 och sedan}. 1241 01:04:53,320 --> 01:04:56,130 Så oftast när jag börjar programmet, det är vad jag börja med. 1242 01:04:56,130 --> 01:04:59,370 Jag ska spara det så att ni har det. 1243 01:05:06,290 --> 01:05:08,440 Så en av de första saker som vi talat om var 1244 01:05:08,440 --> 01:05:10,920 få inmatning från användaren 1245 01:05:10,920 --> 01:05:13,740 och lagra den i en sträng. 1246 01:05:13,740 --> 01:05:16,420 Hur får vi input från en användare? 1247 01:05:16,420 --> 01:05:19,640 >> GetString. 1248 01:05:19,640 --> 01:05:21,870 GetString, okej. 1249 01:05:23,150 --> 01:05:26,820 Så om jag skriver GetString () 1250 01:05:26,820 --> 01:05:32,150 och ett semikolon. 1251 01:05:32,150 --> 01:05:36,630 Låt oss försöka köra detta, kommer denna körning, först och främst? 1252 01:05:36,630 --> 01:05:38,430 Och varför inte det körs? 1253 01:05:38,430 --> 01:05:40,090 >> Du måste deklarera variabeln. 1254 01:05:40,090 --> 01:05:43,040 Jag måste deklarera en variabel. Okej. 1255 01:05:43,040 --> 01:05:45,700 >> Så hur gör jag det? 1256 01:05:45,700 --> 01:05:48,400 Har du något emot att skriva något, dela den? 1257 01:05:48,400 --> 01:05:51,270 Och då kan vi dra upp den. 1258 01:05:51,270 --> 01:05:54,630 Låt oss se, Dan, höger, okej. 1259 01:05:54,630 --> 01:05:59,100 Eller Daniel. Uppfattat i, sträng input = GetString (). 1260 01:05:59,100 --> 01:06:01,340 Toppen. 1261 01:06:01,340 --> 01:06:02,890 Kommer detta kör? 1262 01:06:02,890 --> 01:06:05,210 Låt oss försöka det. 1263 01:06:05,210 --> 01:06:08,890 Hit kör, ladda upp källkoden, byggnad, inträffade ett fel. 1264 01:06:08,890 --> 01:06:11,040 Okej. 1265 01:06:11,040 --> 01:06:14,950 Så vad händer här? 1266 01:06:14,950 --> 01:06:18,700 Användning av odeklarerat identifierare "sträng". 1267 01:06:18,700 --> 01:06:22,840 >> Vi måste inkludera biblioteken? 1268 01:06:22,840 --> 01:06:25,130 Ja, så Dan säger att vi måste ha med biblioteken. 1269 01:06:25,130 --> 01:06:28,270 Är det vad du skulle säga, Stella? Toppen. 1270 01:06:29,450 --> 01:06:31,430 Det är häftigt, så Stella kan du 1271 01:06:31,430 --> 01:06:34,800 kopiera koden från Daniels Space? 1272 01:06:34,800 --> 01:06:37,580 Om du klickar på Daniel Roland Ki, kopiera den, 1273 01:06:37,580 --> 01:06:41,360 och då kommer du sätta inkluderar linjeingång, och sedan spara det? 1274 01:06:46,580 --> 01:06:49,360 Låt mig veta när du är redo. 1275 01:06:57,160 --> 01:06:59,490 Så denna inkluderar syntax är också typ av funky; 1276 01:06:59,490 --> 01:07:02,210 Det är som det hash-taggen, 1277 01:07:02,210 --> 01:07:05,760 och det har bland annat, och sedan finns det de vinkelparenteser. 1278 01:07:12,490 --> 01:07:15,360 Kommer du ihåg hur det fungerar, eller ska jag sätta upp den på denna kod här? 1279 01:07:15,360 --> 01:07:17,850 >> Jag är bra. 1280 01:07:17,850 --> 01:07:19,810 Okej. 1281 01:07:19,810 --> 01:07:23,260 >> Jag tryckt det - jag var inte säker på vilken biblioteket, dock. 1282 01:07:23,260 --> 01:07:25,570 Åh, okej - ja, så är det CS50 biblioteket. 1283 01:07:25,570 --> 01:07:27,660 >> Åh, jag satte stdio bibliotek. 1284 01:07:27,660 --> 01:07:30,950 >> Åh, fick det - ja, nej, that - 1285 01:07:30,950 --> 01:07:34,380 så visar det sig att strängen är faktiskt något som är speciellt för CS50. 1286 01:07:36,590 --> 01:07:41,240 Det är faktiskt inte en sann sträng typ 1287 01:07:41,240 --> 01:07:45,000 eftersom här är sträng i typ läge, - 1288 01:07:45,000 --> 01:07:49,140 vi deklarera en variabel som heter ingång av typen String - 1289 01:07:49,140 --> 01:07:53,320 och vi sätter insidan av indata 1290 01:07:53,320 --> 01:07:58,440 det värde som får returneras till oss: utgången av denna GetString funktionsanrop. 1291 01:07:58,440 --> 01:08:02,910 Du kan tala om detta är ett funktionsanrop eftersom den har parenteserna, precis som printf gör, 1292 01:08:02,910 --> 01:08:05,920 precis som strlen gör. 1293 01:08:05,920 --> 01:08:09,860 Men sträng är faktiskt inte en riktig typ 1294 01:08:09,860 --> 01:08:11,760 i C-språket. 1295 01:08:11,760 --> 01:08:15,710 Vi har gjort det till en typ, och vi tar över mer vad det egentligen är 1296 01:08:15,710 --> 01:08:19,000 i C, eftersom det finns ett sätt att arbeta med strängar; 1297 01:08:19,000 --> 01:08:22,479 Vi har precis gjort något så att det ser lite trevligare. 1298 01:08:22,479 --> 01:08:25,240 >> Så här går vi. 1299 01:08:25,240 --> 01:08:28,439 Här är Stellas kod. 1300 01:08:28,439 --> 01:08:32,470 Det har fått den # include . 1301 01:08:32,470 --> 01:08:36,390 Andra människor kommer att kalla detta som en hash inkluderar ibland eller en skarp inkluderar. 1302 01:08:36,390 --> 01:08:39,580 Nu kan vi börja det, kör den, 1303 01:08:39,580 --> 01:08:43,649 och vi får fortfarande ett fel. 1304 01:08:43,649 --> 01:08:46,290 Låt oss se vad som händer. 1305 01:08:48,069 --> 01:08:50,569 "Oanvänt variabel" input "." 1306 01:08:50,569 --> 01:08:53,350 Okej, det är så att coolt, det är coolt. 1307 01:08:53,350 --> 01:08:55,859 Jag menar, det är inte riktigt coolt, 1308 01:08:55,859 --> 01:08:57,930 eftersom vi får ett fel och det är inte igång, 1309 01:08:57,930 --> 01:09:00,410 men vad detta säger är att 1310 01:09:00,410 --> 01:09:03,130 Vi har inte använt vår variabel, vilket är vettigt. 1311 01:09:03,130 --> 01:09:06,090 Vi har inte försökt att göra något med det. 1312 01:09:07,819 --> 01:09:10,490 Detta är ett sätt att 1313 01:09:10,490 --> 01:09:14,170 Klang försöker hjälpa oss att se till att vi inte bara är med hjälp av variabler 1314 01:09:14,170 --> 01:09:18,819 och sedan oavsiktligt kalla dem något annat senare i vår kod, 1315 01:09:18,819 --> 01:09:21,649 hjälper oss att undvika fel på det sättet. 1316 01:09:23,130 --> 01:09:28,810 >> Okej, så vi har fått input från användaren, 1317 01:09:28,810 --> 01:09:31,910 Vi lagras det i en variabel. 1318 01:09:31,910 --> 01:09:34,569 Nästa steg var att då 1319 01:09:34,569 --> 01:09:37,609 börja titta på alla tecken i strängen 1320 01:09:37,609 --> 01:09:41,830 och identifiera vilka som ska vara versaler 1321 01:09:41,830 --> 01:09:44,600 och vilka som ska vara gemener. 1322 01:09:44,600 --> 01:09:49,439 Och liksom Kelly och Charlotte tog upp, 1323 01:09:49,439 --> 01:09:52,340 Vi gör detta med hjälp av en for-slinga. 1324 01:09:52,340 --> 01:09:55,520 Så minns någon syntaxen för en for-slinga 1325 01:09:55,520 --> 01:09:58,670 och vill ta en stab på bara skriva 1326 01:09:58,670 --> 01:10:03,170 den första raden i for-slingan, bara för lite? 1327 01:10:05,740 --> 01:10:07,330 Kelly, vill du ge det ett försök? 1328 01:10:07,330 --> 01:10:10,300 >> Ja, så du måste initiera först, 1329 01:10:10,300 --> 01:10:13,170 så jag satte i = 0, 1330 01:10:13,170 --> 01:10:15,390 och då gjorde jag i 01:10:18,570 Är det i ditt utrymme - kan jag dra upp? 1332 01:10:18,570 --> 01:10:21,330 >> Ja, skruvas jag upp lite, men ja. 1333 01:10:21,330 --> 01:10:24,180 >> Okej, låt oss dra upp den. 1334 01:10:24,180 --> 01:10:26,490 Toppen. 1335 01:10:26,490 --> 01:10:29,510 >> Men jag visste inte om du hade det - 1336 01:10:29,510 --> 01:10:32,180 Ja, okej. 1337 01:10:33,020 --> 01:10:36,030 Så här är vad Kelly har fått: låt oss titta på det snabbt. 1338 01:10:36,030 --> 01:10:40,290 Så hon ingår i CS50-biblioteket på toppen. 1339 01:10:40,290 --> 01:10:44,790 Hon ingår standard IO-biblioteket på toppen, 1340 01:10:45,550 --> 01:10:48,990 och standardavvikelsen IO har funktioner som printf, 1341 01:10:48,990 --> 01:10:51,690 så om du någonsin vill använda printf behöver du den linjen. 1342 01:10:53,060 --> 01:10:56,140 Och hon ingick strängen biblioteket, 1343 01:10:56,140 --> 01:10:58,200 som vi kommer att behöva, 1344 01:10:58,200 --> 01:11:01,010 eftersom strängen biblioteket har strlen funktion, 1345 01:11:01,010 --> 01:11:04,320 som vi får i bara lite. 1346 01:11:04,320 --> 01:11:07,560 Så om vi tittar på vad Kelly har gjort här, 1347 01:11:07,560 --> 01:11:10,260 kan du gå oss igenom vad du gjorde? 1348 01:11:10,260 --> 01:11:13,600 >> Ja, så - jag menar, jag fel, så - 1349 01:11:13,600 --> 01:11:15,380 Ja, nej, it's - 1350 01:11:15,380 --> 01:11:18,580 >> Jag ville ringa strängen som jag fick bara "sträng". 1351 01:11:18,580 --> 01:11:22,230 Jag ville skriva ut strängen 1352 01:11:22,230 --> 01:11:25,640 och sedan jag - 1353 01:11:27,450 --> 01:11:30,930 Jag ville gärna ställa sträng som som en rad varje tecken 1354 01:11:30,930 --> 01:11:33,170 vara annorlunda [ohörbart], eller hur? 1355 01:11:33,170 --> 01:11:38,080 Och då jag ville börja i position 0 1356 01:11:38,080 --> 01:11:40,630 och därefter var 2 platser, 1357 01:11:40,630 --> 01:11:42,580 Jag tänkte att kapitalisera, 1358 01:11:42,580 --> 01:11:45,680 så jag beskrivs bara det som 23, eftersom jag tittar på ASCII tabellen. 1359 01:11:45,680 --> 01:11:48,730 Så det är vad jag tänkte - jag vet att det är inte rätt. 1360 01:11:48,730 --> 01:11:50,920 >> Fick det, så detta är en bra start. 1361 01:11:50,920 --> 01:11:54,120 Jag tror att en hel del av ramverket är på plats här. 1362 01:11:54,120 --> 01:11:57,500 Låt oss gå igenom typ av rad för rad och se vad som händer. 1363 01:11:57,500 --> 01:12:01,040 Så som jag vill göra detta är att börja bara genom att sammanställa koden 1364 01:12:01,040 --> 01:12:04,300 och låta kompilatorn berätta precis vad som är fel med min kod, 1365 01:12:04,300 --> 01:12:07,450 eftersom kompilatorn är riktigt bra på att berätta vad som är fel med din kod. 1366 01:12:09,790 --> 01:12:12,780 Så om vi spelar det, bygga, och det bygger inte. 1367 01:12:12,780 --> 01:12:14,860 Det säger att det var ett misstag, 1368 01:12:14,860 --> 01:12:17,320 så om vi bläddra ner och titta på det första felet, 1369 01:12:17,320 --> 01:12:20,960 Det sade - 1370 01:12:20,960 --> 01:12:22,040 Vi bläddra tillbaka upp till toppen, 1371 01:12:22,040 --> 01:12:26,070 Vi kan se att det finns 5 fel som genereras här nere på botten. 1372 01:12:26,070 --> 01:12:30,180 Oj, det är verkligen avskurna. 1373 01:12:31,810 --> 01:12:35,790 Jag antar att bara inte kommer att bli bättre. 1374 01:12:36,970 --> 01:12:38,500 >> Nu kör vi. 1375 01:12:39,790 --> 01:12:42,530 Så det finns 5 totalt genererade fel. 1376 01:12:42,530 --> 01:12:45,140 Här kan jag bara se de första 2, 1377 01:12:45,140 --> 01:12:49,100 så jag kan flytta det upp lite och sedan typ av scroll upp. 1378 01:12:49,100 --> 01:12:53,220 Detta är kommandot som kördes för att kompilera koden, 1379 01:12:53,220 --> 01:12:59,030 och sedan det första felet var file.c här: 1380 01:12:59,030 --> 01:13:03,300 "Förväntades identifiera eller '('", och det var på den här raden 1381 01:13:03,300 --> 01:13:06,680 där vi sa String = GetString (). 1382 01:13:07,660 --> 01:13:12,920 Du kan se här att det var på rad 8 i file.c, 1383 01:13:12,920 --> 01:13:17,230 och då tror jag att detta är tecken 12 - det är felet. 1384 01:13:17,230 --> 01:13:20,390 Så vad går fel på rad 8 - Kelly? 1385 01:13:20,390 --> 01:13:22,810 >> Du behöver bara kalla det, som, ett brev eller något, 1386 01:13:22,810 --> 01:13:24,400 Liksom sträng s eller något? 1387 01:13:24,400 --> 01:13:28,250 Ja, så visar det sig att dessa speciella typ namn, 1388 01:13:28,250 --> 01:13:31,770 så sträng, int, char, kort, 1389 01:13:31,770 --> 01:13:35,740 de är alla speciella sökord, 1390 01:13:35,740 --> 01:13:38,940 och du inte kan faktiskt använda dem som namnen på dina variabler, 1391 01:13:38,940 --> 01:13:41,430 eftersom kompilatorn ser på det och säger, 1392 01:13:41,430 --> 01:13:43,680 "Åh, jag vet att det är en typ," 1393 01:13:43,680 --> 01:13:46,530 så att du inte kan faktiskt ha en sträng variabel som heter sträng, 1394 01:13:46,530 --> 01:13:50,800 som jag försöker göra här, det kommer inte att fungera. 1395 01:13:52,610 --> 01:13:58,250 Men i stället kan vi kalla det något i stil med s eller ST eller str. 1396 01:13:58,250 --> 01:14:01,540 Vi kunde inte heller kalla det int. 1397 01:14:01,540 --> 01:14:03,740 Vi kan inte ha en sträng som heter inv. 1398 01:14:03,740 --> 01:14:06,740 Vi kan inte ha en sträng som heter röding, ingen av dem kommer att fungera. 1399 01:14:06,740 --> 01:14:09,420 >> Så vi ska bara kalla det är för tillfället. 1400 01:14:10,630 --> 01:14:13,170 Toppen. 1401 01:14:13,170 --> 01:14:17,500 Så vad nästa som händer i denna linje? 1402 01:14:21,390 --> 01:14:24,350 String - denna linje ser ganska bra? 1403 01:14:24,350 --> 01:14:27,830 Låt oss ge den en annan försök, låt oss köra den. 1404 01:14:27,830 --> 01:14:30,360 Okej, så vi får fortfarande fel. 1405 01:14:30,360 --> 01:14:32,080 Den här gången är vi ner till 4 fel. 1406 01:14:32,080 --> 01:14:34,350 Så vi fick en av dem. 1407 01:14:34,350 --> 01:14:36,130 Låt oss gå upp. 1408 01:14:36,130 --> 01:14:38,890 "Oväntat typnamn" string ": förväntad uttryck," ja? 1409 01:14:38,890 --> 01:14:41,780 >> Ja, det är för att jag försökte namnge strängen. 1410 01:14:41,780 --> 01:14:44,270 Ja, så det ser ut som vi nu också gå fix 1411 01:14:44,270 --> 01:14:46,560 alla dessa hänvisningar till sträng. 1412 01:14:46,560 --> 01:14:50,070 Du kan se att det finns en hänvisning till sträng här, en här, en här, 1413 01:14:50,070 --> 01:14:53,440 så att vi kan flytta alla dessa till s. 1414 01:14:56,040 --> 01:15:00,930 Jättebra. Okej, kör det igen. 1415 01:15:00,930 --> 01:15:03,260 Byggnad - annat fel har uppstått. 1416 01:15:03,260 --> 01:15:06,900 >> Okej, nu är vi ner till en fel, 1417 01:15:06,900 --> 01:15:11,090 så int i = s och sedan hakparenteser. 1418 01:15:11,090 --> 01:15:14,880 Så kan du berätta lite om vad du gjorde här, Kelly? 1419 01:15:14,880 --> 01:15:17,120 >> Ja. 1420 01:15:17,120 --> 01:15:19,410 Det var på rad 10. 1421 01:15:19,410 --> 01:15:22,760 >> Jag vet inte om vi behövde allt, 1422 01:15:22,760 --> 01:15:25,560 men jag tror jag försökte - 1423 01:15:25,560 --> 01:15:27,580 Jag ska spara den så att du kan följa med. 1424 01:15:27,580 --> 01:15:30,470 >> Jag tror jag var 1425 01:15:30,470 --> 01:15:33,150 försöker berätta det att börja i position 0 1426 01:15:33,150 --> 01:15:35,030 I början av min for-slingan, 1427 01:15:35,030 --> 01:15:38,370 så jag tror kanske att säga var onödig. 1428 01:15:39,690 --> 01:15:41,350 Så bara för att sammanfatta, 1429 01:15:41,350 --> 01:15:44,850 du sa att detta - du försökte starta detta vid position 0 1430 01:15:44,850 --> 01:15:47,030 och få detta - ja, 1431 01:15:47,030 --> 01:15:50,460 så jag tror tidigare också, när du går igenom koden, 1432 01:15:50,460 --> 01:15:54,070 du pratade om hur man ville behandla strängen som en array 1433 01:15:54,070 --> 01:15:57,440 så att vi kan komma varje tecken individuellt. 1434 01:15:57,440 --> 01:16:00,660 Jag tror Dan nämnda matriser också försöka omvandla strängar till matriser. 1435 01:16:01,400 --> 01:16:03,300 >> Det visar sig att sådan under huven, 1436 01:16:03,300 --> 01:16:06,060 en sträng är faktiskt lagras som en matris redan 1437 01:16:06,060 --> 01:16:08,060 och du kan komma åt den som en rad; 1438 01:16:08,060 --> 01:16:12,390 det finns ingen omvandling som du måste göra. 1439 01:16:12,390 --> 01:16:15,770 En sträng isnt - så - 1440 01:16:15,770 --> 01:16:18,200 en sträng är egentligen inte en matris, 1441 01:16:18,200 --> 01:16:21,940 men du kan komma åt det så, eftersom alla tecken lagras 1442 01:16:21,940 --> 01:16:25,160 en höger bredvid varandra i minnet, 1443 01:16:25,160 --> 01:16:28,310 så om du vill få det första tecknet i strängen, 1444 01:16:28,310 --> 01:16:31,910 det är samma som att få den första heltal i ett heltal array. 1445 01:16:31,910 --> 01:16:35,010 Så vi ofta - we'll 1446 01:16:35,010 --> 01:16:36,360 se 2 som 1447 01:16:36,360 --> 01:16:38,590 Åh, som en sträng, som en array, 1448 01:16:38,590 --> 01:16:40,830 även om det egentligen - de är helt olika saker, 1449 01:16:40,830 --> 01:16:43,410 men du kan behandla dem mycket samma. 1450 01:16:44,700 --> 01:16:47,400 Så det visar sig att denna linje faktiskt - 1451 01:16:47,400 --> 01:16:51,270 Vi behöver inte göra någon konvertering, 1452 01:16:51,270 --> 01:16:53,500 och i själva verket, 1453 01:16:53,500 --> 01:16:56,790 detta är faktiskt inte en giltig uttryck, 1454 01:16:56,790 --> 01:16:59,040 vilket är vad vi kompilator säger oss. 1455 01:16:59,040 --> 01:17:01,290 Det säger, "Hej, förväntas det ett uttryck, 1456 01:17:01,290 --> 01:17:04,610 och vad jag har här är något som inte är ett uttryck. " 1457 01:17:04,610 --> 01:17:07,310 Att förklara en array, 1458 01:17:07,310 --> 01:17:11,780 allt du behöver göra är att något liknande med ett semikolon, 1459 01:17:11,780 --> 01:17:15,080 och sedan berätta arrayen hur länge du vill att det ska vara, 1460 01:17:15,080 --> 01:17:18,370 såsom 5, så denna linje 10 1461 01:17:18,370 --> 01:17:23,880 kommer att förklara en array med namnet i med 5 heltal i den. 1462 01:17:23,880 --> 01:17:26,540 >> Detta är ett åt sidan, det är inte nödvändigt för koden, 1463 01:17:26,540 --> 01:17:30,970 men detta är - det är typ av vad deklarationen ser ut. 1464 01:17:30,970 --> 01:17:35,310 >> Hur skulle du inte använda röding i [strlen (s)]? 1465 01:17:35,310 --> 01:17:38,500 Röding i [strlen (s)]? 1466 01:17:38,500 --> 01:17:41,500 >> Röding i, och sedan inne i parentes, strlen (s). 1467 01:17:43,900 --> 01:17:47,710 Ja, så vi kunde - 1468 01:17:47,710 --> 01:17:49,460 vi kunde göra detta, 1469 01:17:49,460 --> 01:17:52,160 och detta skulle förklara - vad skulle det göra? 1470 01:17:52,160 --> 01:17:55,900 >> Jag tror att det skulle förklara en rad 1471 01:17:55,900 --> 01:18:01,780 av, liksom - i - 1472 01:18:01,780 --> 01:18:04,540 Åh, behöver du inte i - Åh, 1473 01:18:04,540 --> 01:18:06,420 Ja, du definitivt behöver inte jag. 1474 01:18:06,420 --> 01:18:10,250 Du deklarerar en array av tecken 1475 01:18:10,250 --> 01:18:13,150 med längden s.. 1476 01:18:14,680 --> 01:18:16,770 Och så vad Sams säger är att 1477 01:18:16,770 --> 01:18:20,660 denna linje 10 - Låt mig sätta lite utrymme mellan den och resten så att vi kan isolera det - 1478 01:18:20,660 --> 01:18:23,440 denna linje 10 skulle förklara en rad 1479 01:18:23,440 --> 01:18:28,520 av tecken, strlen (s) till ett värde av dem, 1480 01:18:28,520 --> 01:18:32,270 men vi egentligen inte behöver jag, 1481 01:18:32,270 --> 01:18:35,710 och anledningen till att vi behöver i är att vi måste ge arrayen ett namn; 1482 01:18:35,710 --> 01:18:38,900 Annars skulle vi inte ha ett sätt att hänvisa till arrayen senare i koden. 1483 01:18:38,900 --> 01:18:41,180 >> Så denna rätt här är arrayen namn 1484 01:18:41,180 --> 01:18:43,420 och inuti är längden. 1485 01:18:43,420 --> 01:18:45,010 Detta kommer att ge oss en array, 1486 01:18:45,010 --> 01:18:47,430 men detta är - återigen, detta är en förklaring. 1487 01:18:47,430 --> 01:18:50,380 Det är inte en uppgift, det är inte en initiering. 1488 01:18:50,380 --> 01:18:52,330 Om vi ​​förklarar denna array som denna, 1489 01:18:52,330 --> 01:18:54,490 det finns faktiskt ingenting i innehållet i uppsättningen. 1490 01:18:54,490 --> 01:18:57,490 Det är bara skräp - vad är där. 1491 01:18:57,490 --> 01:18:59,780 Och som vi sa, 1492 01:18:59,780 --> 01:19:01,340 vi faktiskt inte ens behöver göra denna konvertering, 1493 01:19:01,340 --> 01:19:04,810 eftersom vi kan redan behandla strängen s som en matris. 1494 01:19:06,750 --> 01:19:09,170 Jag vet att vi kör lite lång i tid, 1495 01:19:09,170 --> 01:19:12,330 men jag vill bara verkligen snabbt komma till detta för slinga 1496 01:19:12,330 --> 01:19:14,850 och visa dig hur man kommer åt enskilda tecken i arrayen, 1497 01:19:14,850 --> 01:19:17,170 eftersom det är nyckeln till vårt uppdrag. 1498 01:19:17,170 --> 01:19:20,790 Och sedan kommer vi låta dig gå därifrån. 1499 01:19:20,790 --> 01:19:24,610 >> Så här har vi en for-slinga 1500 01:19:24,610 --> 01:19:28,310 som ser nästan bra. 1501 01:19:28,310 --> 01:19:30,960 Vad är inte riktigt nästan där? 1502 01:19:30,960 --> 01:19:33,240 What's - vad är inte riktigt rätt om detta för slinga? 1503 01:19:33,240 --> 01:19:36,010 >> Inga klammerparenteser? 1504 01:19:36,010 --> 01:19:38,420 Inga klammerparenteser, för en. 1505 01:19:38,420 --> 01:19:42,580 Vill du vara säker på att vi har kropp av slingan med klammerparenteser. 1506 01:19:42,580 --> 01:19:45,240 Oj, inte den fyrkantiga stag! 1507 01:19:45,240 --> 01:19:48,660 Och vad är nästa sak som vi måste göra med denna slinga? 1508 01:19:48,660 --> 01:19:52,640 Om jag försöker köra den, 1509 01:19:52,640 --> 01:19:56,740 whats detta fel att jag får? 1510 01:19:56,740 --> 01:20:00,990 Jag får alla dessa fel - jag initiera i.. 1511 01:20:00,990 --> 01:20:03,610 Jättebra. 1512 01:20:03,610 --> 01:20:05,770 Så det här kommer att bli en loop - det är inte riktigt där, 1513 01:20:05,770 --> 01:20:08,680 men det börjar bli riktigt nära. 1514 01:20:08,680 --> 01:20:11,260 Denna kod kan vi nu köra, 1515 01:20:11,260 --> 01:20:14,620 bygga, uppstår ett fel fortfarande. 1516 01:20:17,960 --> 01:20:19,800 Varför är det klagar fortfarande, 1517 01:20:19,800 --> 01:20:22,030 säger uttrycket är oanvänd, 1518 01:20:22,030 --> 01:20:24,600 och det beror på denna linje inte göra någonting. 1519 01:20:24,600 --> 01:20:27,620 Vi har inte förvara den någonstans, vi inte spara resultatet. 1520 01:20:27,620 --> 01:20:30,210 Var ska vi vara rädda detta resultat? 1521 01:20:30,210 --> 01:20:32,920 >> S eller jag? 1522 01:20:32,920 --> 01:20:35,990 Exakt, och denna funky syntax, 1523 01:20:35,990 --> 01:20:38,550 Detta är med hakparenteser 1524 01:20:38,550 --> 01:20:41,500 innebär tillgång till i: te karaktär talet. 1525 01:20:41,500 --> 01:20:45,650 Det kommer att vara något som är väldigt viktigt för uppdraget. 1526 01:20:45,650 --> 01:20:48,070 Tyvärr, vi kommer att behöva sluta här, 1527 01:20:48,070 --> 01:20:50,550 så att Sebastian avsnitt kan komma in, 1528 01:20:50,550 --> 01:20:53,980 men jag är glad att bo efter utsidan och kommer att ta några frågor. 1529 01:20:53,980 --> 01:20:56,680 Så tack killar för att ni kom. 1530 01:20:56,680 --> 01:20:59,730 Detta bör nu ladda upp, bygga, driva. 1531 01:21:01,570 --> 01:21:04,320 Vi kan ange en sträng som "hej" 1532 01:21:06,570 --> 01:21:08,730 och det skrivs "QOX". 1533 01:21:08,730 --> 01:21:11,030 [Skratt] 1534 01:21:11,030 --> 01:21:14,640 >> Så inte riktigt där, men flytta, få mot dessa slingor! 1535 01:21:14,640 --> 01:21:18,640 Tack för att ni kom, och jag ska vara utanför.