1 00:00:00,000 --> 00:00:01,500 >> [MUSIK SPELA] 2 00:00:01,500 --> 00:00:11,000 3 00:00:11,000 --> 00:00:16,110 >> DAVID MALAN: Okej detta är CS50 och detta är i slutet av vecka ett. 4 00:00:16,110 --> 00:00:20,760 Så jag skulle vilja presentera min tidigare advisee, Andel Duff, som inte bara gör 5 00:00:20,760 --> 00:00:25,460 iPhone 5 står, liksom detta talarstol, också gör han bilar. 6 00:00:25,460 --> 00:00:27,927 7 00:00:27,927 --> 00:00:29,510 Ansel DUFF: Hur går det, alla? 8 00:00:29,510 --> 00:00:31,980 Jag vill bara berätta lite lite om Formula SAE, som jag 9 00:00:31,980 --> 00:00:32,604 är kapten. 10 00:00:32,604 --> 00:00:33,437 Det är en MIT laget. 11 00:00:33,437 --> 00:00:35,520 Jag vill bara berätta för dig Killarna lite om det 12 00:00:35,520 --> 00:00:37,520 och förhoppningsvis generera en del intresse. 13 00:00:37,520 --> 00:00:41,590 >> Så låt mig bara gå igenom en par saker om vårt team. 14 00:00:41,590 --> 00:00:43,640 Så vi är helt elev körning, varvid alla 15 00:00:43,640 --> 00:00:47,300 av medlemmarna konstruktion, simulera, testa och tillverkare ett delsystem 16 00:00:47,300 --> 00:00:48,090 av bilen. 17 00:00:48,090 --> 00:00:51,240 Vi har vår egen verkstad och garage och N52-- eller ledsen, 18 00:00:51,240 --> 00:00:54,140 N51-- vilket är samma byggnad som MIT Science Museum. 19 00:00:54,140 --> 00:00:55,990 Och vi är folket att köra bilen. 20 00:00:55,990 --> 00:00:58,340 Det finns en nationell tävling i början av sommaren, 21 00:00:58,340 --> 00:01:01,215 och sedan finns det mindre straffar tävlingar under hela året. 22 00:01:01,215 --> 00:01:04,400 Och sedan gör vi förarutbildning dagar för att få nya medlemmar bekanta. 23 00:01:04,400 --> 00:01:08,280 >> Våra byggdagar är på Lördagar från 11:00 till 08:00. 24 00:01:08,280 --> 00:01:11,060 Lunch och middag tar hand av, från Bertuccis och Beantown 25 00:01:11,060 --> 00:01:12,130 respektive. 26 00:01:12,130 --> 00:01:15,260 Vi har ett veckomöte och Seminariet, som är för kurs kredit. 27 00:01:15,260 --> 00:01:18,560 Vilket är nytt från och med denna termin, och Det kommer också att vara till nästa termin, 28 00:01:18,560 --> 00:01:19,940 så att du kan passera-reg för det. 29 00:01:19,940 --> 00:01:22,960 Och då har vi designa, shoppa, och CAD-dagar under veckan, 30 00:01:22,960 --> 00:01:26,870 medan medlemmarna kommer självständigt CAD-delar, orderstock et cetera. 31 00:01:26,870 --> 00:01:29,200 >> Så för elektrisk teknik vid laget 32 00:01:29,200 --> 00:01:31,110 Vi har vår drag, högspänningssystemet, 33 00:01:31,110 --> 00:01:33,390 som löper med en nominell 300 volt, vilket inkluderar 34 00:01:33,390 --> 00:01:35,360 motorer, motorskåp, och batterier. 35 00:01:35,360 --> 00:01:37,235 Sedan har vi en låg spänningssystemet, som löper 36 00:01:37,235 --> 00:01:40,180 vid 12 volt, som inkluderar kontroller, CAN-noder, hjärnan 37 00:01:40,180 --> 00:01:41,570 rutan och instrumentbrädan. 38 00:01:41,570 --> 00:01:43,890 Så långt CS går, vi gör har hemsida underhåll 39 00:01:43,890 --> 00:01:47,940 att vi behöver göras för evenemang, medlemskap förändringar, nya bilder och PR-material. 40 00:01:47,940 --> 00:01:51,540 Och så har vi kod som styr bil för vår antispinn, lansering 41 00:01:51,540 --> 00:01:55,750 kontroll, instrumentstyrning, torque vectoring, och regenererande bromssystem, som 42 00:01:55,750 --> 00:01:59,170 brukar köras i MATLAB, Simulink och LabView. 43 00:01:59,170 --> 00:02:00,910 >> Berätta lite om bilen. 44 00:02:00,910 --> 00:02:02,470 Så det är cirka 500 pounds. 45 00:02:02,470 --> 00:02:04,285 Det är regler som är begränsade till 85 kilowatt. 46 00:02:04,285 --> 00:02:08,310 Den har 2 EMRAX 207 motorer i tillbaka, en för varje bakhjul. 47 00:02:08,310 --> 00:02:11,880 Den har specialbyggda batterier från Prisma A123 påse celler, 48 00:02:11,880 --> 00:02:14,780 totalt 300 volt och 5.6 kilowattimmar. 49 00:02:14,780 --> 00:02:17,950 Och det är direktdriven med en 2,64-1 utväxling. 50 00:02:17,950 --> 00:02:20,970 Här är några bilder vi tog av den på konkurrensen. 51 00:02:20,970 --> 00:02:25,820 Här är baksidan, noskon, och här är motorerna, 52 00:02:25,820 --> 00:02:29,682 de stora svarta diskar nedanför et mens manus. 53 00:02:29,682 --> 00:02:32,140 Här är en bild som jag drog av vår tävling system. 54 00:02:32,140 --> 00:02:35,389 Och det är bara att jämföra vår bil till en par av kommersiellt tillgängliga bilar, 55 00:02:35,389 --> 00:02:38,380 liksom KTM XBOW, Ariel Atom, och Caterha M 7-280. 56 00:02:38,380 --> 00:02:42,110 Om du är bekant med priset, makt dra vikt, dollar per hästkraft, 57 00:02:42,110 --> 00:02:44,930 dollar per moment, och vår bil blåser dem ur vattnet. 58 00:02:44,930 --> 00:02:47,520 Om du har några frågor, skriva ned denna e-postadress. 59 00:02:47,520 --> 00:02:50,800 Skjut ett mail till fsae@mit.edu. 60 00:02:50,800 --> 00:02:53,350 >> Vi är glada att tala om något du skulle vilja. 61 00:02:53,350 --> 00:02:55,600 Harvard studenter är snäll av minoriteten i laget. 62 00:02:55,600 --> 00:02:58,350 Om du har några frågor om att vänligen skjuta oss ett mail, 63 00:02:58,350 --> 00:03:00,810 gärna prata, och jag ska att huvudet tillbaka över till David. 64 00:03:00,810 --> 00:03:01,550 Tack. 65 00:03:01,550 --> 00:03:02,466 Jag uppskattar det, grabbar. 66 00:03:02,466 --> 00:03:03,615 [Applåder] 67 00:03:03,615 --> 00:03:07,080 68 00:03:07,080 --> 00:03:10,980 >> DAVID MALAN: Ansel bringade sommaren arbeta med oss ​​här på campus i CS50 69 00:03:10,980 --> 00:03:11,480 i sommar. 70 00:03:11,480 --> 00:03:13,505 Och förutom att arbeta på saker som de binära lökar, 71 00:03:13,505 --> 00:03:16,090 han faktiskt verkligen öppnat våra eyes-- och gruvan i particular-- 72 00:03:16,090 --> 00:03:20,535 vad egentligen korsningen av inte av hårdvara och mjukvara kan vara. 73 00:03:20,535 --> 00:03:23,410 I själva verket en hel del av de saker som han bara turnerade igenom är ytterst 74 00:03:23,410 --> 00:03:26,030 skapades först i mjukvara, och sedan slutligen tillverkas 75 00:03:26,030 --> 00:03:27,299 i den verkliga världen i hårdvara. 76 00:03:27,299 --> 00:03:29,590 Så om du är intresserad av utforska denna korsning, 77 00:03:29,590 --> 00:03:31,430 kanske ta upp den gruppen. 78 00:03:31,430 --> 00:03:34,140 >> Nu under tiden de av er som är fans av teknik, 79 00:03:34,140 --> 00:03:36,140 och Apple-produkter i Särskilt vet att det 80 00:03:36,140 --> 00:03:37,860 fanns ett par Meddelanden från igår. 81 00:03:37,860 --> 00:03:39,776 Men vi trodde att vi skulle visa du en som kom ut 82 00:03:39,776 --> 00:03:43,590 ett par dagar innan det du kanske inte har sett. 83 00:03:43,590 --> 00:03:46,150 >> JORGEN EGHAMMER: Du vet, gång på ett tag något 84 00:03:46,150 --> 00:03:49,540 dyker upp som förändrar vårt sätt att leva. 85 00:03:49,540 --> 00:03:53,479 En anordning så enkelt och intuitivt använder det känns nästan bekant. 86 00:03:53,479 --> 00:03:59,710 87 00:03:59,710 --> 00:04:04,138 Introduktion 2015 IKEA katalogen. 88 00:04:04,138 --> 00:04:10,420 Det är inte en digital bok eller en e-bok, det är en bok-bok. 89 00:04:10,420 --> 00:04:14,440 >> Det första att notera är inget kablar, inte ens en strömkabel. 90 00:04:14,440 --> 00:04:18,519 Den 2015 IKEA katalogen är fullt laddat, 91 00:04:18,519 --> 00:04:20,550 och batteriets livslängd är evigt. 92 00:04:20,550 --> 00:04:27,300 Gränssnittet är 7,5 efter 8 inches, men kan expandera till 15 från 8 inches. 93 00:04:27,300 --> 00:04:32,410 Navigeringen är baserat på taktil beröring teknik som du faktiskt kan känna. 94 00:04:32,410 --> 00:04:37,120 >> Innehållet kommer förinstallerat via 328 HD-sidor 95 00:04:37,120 --> 00:04:40,180 av inspirerande heminredningsidéer. 96 00:04:40,180 --> 00:04:43,740 Börja surfa, tryck på och dra. 97 00:04:43,740 --> 00:04:50,870 Höger till vänster för att gå framåt, vänster till höger för att gå bakåt. 98 00:04:50,870 --> 00:04:52,770 >> Lägg märke till något annat? 99 00:04:52,770 --> 00:04:53,780 Det stämmer. 100 00:04:53,780 --> 00:04:55,190 Ingen fördröjning. 101 00:04:55,190 --> 00:04:58,400 Varje kristallklar sida belastningar omedelbart, 102 00:04:58,400 --> 00:05:00,586 oavsett hur snabbt du bläddrar. 103 00:05:00,586 --> 00:05:03,710 Om du vill få en snabb överblick, bara hålla den i handflatan, 104 00:05:03,710 --> 00:05:06,816 och med bara tummen, hastighet bläddra i innehållet. 105 00:05:06,816 --> 00:05:10,930 >> Om du hittar något du vill spara för senare, kan du helt enkelt bokmärke. 106 00:05:10,930 --> 00:05:17,620 Och även om du stänger programmet, kan du lätt hitta bokmärket igen. 107 00:05:17,620 --> 00:05:18,490 Fantastiskt. 108 00:05:18,490 --> 00:05:20,434 >> [LAUGHTER] 109 00:05:20,434 --> 00:05:21,406 [Applåder] 110 00:05:21,406 --> 00:05:26,760 111 00:05:26,760 --> 00:05:29,870 Så det leder oss till slutet av vecka ett. 112 00:05:29,870 --> 00:05:31,760 Några meddelanden nu. 113 00:05:31,760 --> 00:05:33,440 Så snitt Nu pågår. 114 00:05:33,440 --> 00:05:36,860 Gå till denna URL här någon gång mellan nu och fredag ​​vid lunchtid 115 00:05:36,860 --> 00:05:39,960 att faktiskt ange om du är bland dem mindre bekväm, mer 116 00:05:39,960 --> 00:05:41,690 bekväm, eller någonstans däremellan. 117 00:05:41,690 --> 00:05:44,511 >> Detta är typiskt en av de som saker som du bara typ av vet. 118 00:05:44,511 --> 00:05:47,510 Och faktiskt de av er som är mindre bekväm förmodligen vet så mycket, 119 00:05:47,510 --> 00:05:49,634 de av er som är mer bekväm veta så mycket, 120 00:05:49,634 --> 00:05:54,960 och igen om du inte är riktigt säker på vilken av dessa hinkar du tillhör du är 121 00:05:54,960 --> 00:05:56,210 förmodligen någonstans mittemellan. 122 00:05:56,210 --> 00:05:59,810 Men lita på att du kan byta efter ett par veckor om det behövs. 123 00:05:59,810 --> 00:06:02,620 >> Under tiden för den kommande veckan Vi börjar inte avsnitten i sig, 124 00:06:02,620 --> 00:06:04,760 men super avsnitt som är öppna för alla studenter. 125 00:06:04,760 --> 00:06:08,220 Denna kommande söndag på en plats till meddelas på kursens hemsida 126 00:06:08,220 --> 00:06:10,190 Vi kommer att ha en för de som är mindre bekväm, 127 00:06:10,190 --> 00:06:12,470 samt en för dem mer bekväm. 128 00:06:12,470 --> 00:06:15,460 Och de någonstans mellan kan välja vilken av dessa två, 129 00:06:15,460 --> 00:06:17,360 eller båda, om du vill, att sitta in på. 130 00:06:17,360 --> 00:06:19,630 Och i fokus för de kommer att vara ytterst på C, 131 00:06:19,630 --> 00:06:22,440 som vi kommer att fortsätta vår samtal i dag. 132 00:06:22,440 --> 00:06:25,070 >> Problem set 0 under tiden är förhoppningsvis i dina händer. 133 00:06:25,070 --> 00:06:27,500 Officiellt på grund av i morgon, Torsdag, kl. 134 00:06:27,500 --> 00:06:29,490 Om du inte kontanter i en av dina fem sena dagar, 135 00:06:29,490 --> 00:06:31,780 som skulle föra det fram till fredag ​​kl. 136 00:06:31,780 --> 00:06:34,420 Problem set 1 under tiden kommer att vara anslås på kursens hemsida. 137 00:06:34,420 --> 00:06:37,381 Och detta kommer att vara vårt första razzia som en klass i C. 138 00:06:37,381 --> 00:06:40,630 Och det problemet satt spec kommer att gå igenom en hel del mekaniken i vad 139 00:06:40,630 --> 00:06:43,960 Vi började prata om på måndag, och vi ska fortsätta prata om idag. 140 00:06:43,960 --> 00:06:46,770 C, Linux, den CS50 apparaten, allt detta 141 00:06:46,770 --> 00:06:48,990 väntar dig i beskrivningen. 142 00:06:48,990 --> 00:06:52,840 >> Kontorstid tiden pågår, i grund-matsalen. 143 00:06:52,840 --> 00:06:56,240 Chef till denna URL här för att se Schema för ikväll och i morgon, 144 00:06:56,240 --> 00:06:57,930 om du vill delta. 145 00:06:57,930 --> 00:07:01,920 Frågor under tiden, så att du ha möjligheter att ställa frågor 146 00:07:01,920 --> 00:07:05,860 asynkront, 24/7, inser att du är inte begränsat till avsnitt och kontor 147 00:07:05,860 --> 00:07:09,530 timmar, utan snarare detta verktyg Här, CS50 Diskutera på webbadressen 148 00:07:09,530 --> 00:07:12,150 blir kursens nätet anslagstavla mjukvara, via vilken 149 00:07:12,150 --> 00:07:15,030 Du kan ställa frågor klasskamrater och även personal. 150 00:07:15,030 --> 00:07:18,492 Så tänk på att resurs också. 151 00:07:18,492 --> 00:07:20,200 Under tiden en tradition startar denna fredag. 152 00:07:20,200 --> 00:07:23,200 Som du kanske har skymtat från förra onsdagens teaser video, 153 00:07:23,200 --> 00:07:25,510 Vi har en tradition mest varje fredag ​​under terminstid 154 00:07:25,510 --> 00:07:28,750 att ta omkring 50 elever och personal till en lokal restaurang som heter 155 00:07:28,750 --> 00:07:31,510 Fire and Ice, där vi är vanligtvis sällskap av några alumner 156 00:07:31,510 --> 00:07:33,850 eller vänner från industrin att generellt aspirera 157 00:07:33,850 --> 00:07:35,780 för att göra en stor klass känner sig mindre. 158 00:07:35,780 --> 00:07:37,560 Så det är en helt avslappnad lunch. 159 00:07:37,560 --> 00:07:40,160 Ett gäng av oss, personalen framför allt, kommer att spela stormar 160 00:07:40,160 --> 00:07:43,360 och chatta med eleverna om 50, liv utanför 50, 161 00:07:43,360 --> 00:07:46,510 liv i framtiden, den verkliga världen, Jag talar om arbetstillfällen 162 00:07:46,510 --> 00:07:47,680 med vänner i branschen. 163 00:07:47,680 --> 00:07:51,110 >> Så om du vill gå med oss denna fredag, gå till denna URL här. 164 00:07:51,110 --> 00:07:54,180 Utrymmet är begränsat, men vi ska göra det här återkommande och hela uttrycket. 165 00:07:54,180 --> 00:07:57,380 Bege där för att cs50.harvard.edu/rsvp. 166 00:07:57,380 --> 00:07:59,380 Och om du inte får in den här gången, inte oroa dig. 167 00:07:59,380 --> 00:08:02,390 Vi kommer att göra det igen i de kommande veckorna också. 168 00:08:02,390 --> 00:08:05,434 >> Så det här är bilden Vi målade förra veckan, 169 00:08:05,434 --> 00:08:07,350 och du har förmodligen varit syssla med hittills. 170 00:08:07,350 --> 00:08:10,360 Men låt oss försöka att ansluta denna nu vad vi ska göra idag 171 00:08:10,360 --> 00:08:11,440 och framåt. 172 00:08:11,440 --> 00:08:14,760 Kan jag få en volontär? 173 00:08:14,760 --> 00:08:16,000 Okej, eller flera. 174 00:08:16,000 --> 00:08:18,460 Vad sägs om här på slut, i blå skjorta. 175 00:08:18,460 --> 00:08:20,329 Kom upp, vad heter du? 176 00:08:20,329 --> 00:08:20,870 ALANA: Alana. 177 00:08:20,870 --> 00:08:21,661 DAVID MALAN: Alana. 178 00:08:21,661 --> 00:08:25,100 Så Alana, för bara en moment-- trevligt att träffa dig-- 179 00:08:25,100 --> 00:08:28,260 kommer att spela rollen av denna funktion här. 180 00:08:28,260 --> 00:08:31,290 Den lila blocket vi har heter hittills en funktion. 181 00:08:31,290 --> 00:08:34,830 Så vad jag ska gå framåt här och erbjuda Alana 182 00:08:34,830 --> 00:08:38,380 är en liten namnbricka, för att göra klart vilken roll du spelar. 183 00:08:38,380 --> 00:08:39,753 >> Så du ska vara säg blocket. 184 00:08:39,753 --> 00:08:41,419 Om du vill gå vidare och lägga det på. 185 00:08:41,419 --> 00:08:43,169 Och vi ska hålla denna super enkelt. 186 00:08:43,169 --> 00:08:46,180 Om målet till hands är helt enkelt nu att genomföra med Alana, 187 00:08:46,180 --> 00:08:49,710 denna så kallade säga blocket, här är hur det kommer att fungera. 188 00:08:49,710 --> 00:08:52,574 Jag have-- låt oss kalla det ett argument eller parameter, 189 00:08:52,574 --> 00:08:54,240 det är egentligen bara ett tomt pappersark. 190 00:08:54,240 --> 00:08:57,239 Och det är vit till typ av vara som påminner i den vita rutan där du 191 00:08:57,239 --> 00:08:58,080 kan skriva ord. 192 00:08:58,080 --> 00:09:00,660 >> Under tiden ska jag gå här. 193 00:09:00,660 --> 00:09:06,560 Jag kommer att gå vidare och skriver H-E-L-L-O kommatecken världen. 194 00:09:06,560 --> 00:09:09,972 Och nu har jag, som säger programmeraren, inte faktiskt vet hur man säger något. 195 00:09:09,972 --> 00:09:12,180 Jag kan komma med ord, men jag gör inte nödvändigtvis 196 00:09:12,180 --> 00:09:15,220 vet hur man uttrycka mig verbalt eller på skärmen. 197 00:09:15,220 --> 00:09:17,280 Och så vad jag ska göra är att ta denna pjäs 198 00:09:17,280 --> 00:09:21,157 av funktionalitet, vars input-- eller argument, som vi kallar det, 199 00:09:21,157 --> 00:09:23,990 Jag har skrivit om denna bit av paper-- och jag kommer att lägga ut den. 200 00:09:23,990 --> 00:09:26,831 >> Och faktiskt det är den roll som fungerar i ett programmeringsspråk 201 00:09:26,831 --> 00:09:27,330 kan spela. 202 00:09:27,330 --> 00:09:29,246 Något som att säga block kan läggas ut på entreprenad 203 00:09:29,246 --> 00:09:32,074 till någon som verkligen vet vad hon eller han talar om. 204 00:09:32,074 --> 00:09:33,990 Så om du kommer att kliva över här bara ett ögonblick, 205 00:09:33,990 --> 00:09:40,092 Jag kommer att vidarebefordra denna ingång till Alana, och ber att du säger den här ingången. 206 00:09:40,092 --> 00:09:41,202 >> ALANA: Hej, värld. 207 00:09:41,202 --> 00:09:42,160 DAVID MALAN: Det är allt. 208 00:09:42,160 --> 00:09:43,326 Så att det finns en funktion. 209 00:09:43,326 --> 00:09:46,556 Nu kan vi ta det lite mer, Vi kan ta ett steg framåt här. 210 00:09:46,556 --> 00:09:48,180 Eftersom det var uppenbart underwhelming. 211 00:09:48,180 --> 00:09:51,670 Så låt oss nu omvandla detta till något lite mer sofistikerat. 212 00:09:51,670 --> 00:09:53,630 >> Så det här är naturligtvis vår C-versionen. 213 00:09:53,630 --> 00:09:56,760 Så nu om du vill ta det en av, att namnskylt utanför, 214 00:09:56,760 --> 00:09:58,530 och låt oss ha du sätter på ett nytt namn. 215 00:09:58,530 --> 00:10:00,850 Men i grunden är du spela samma roll, 216 00:10:00,850 --> 00:10:03,400 det råkar vara så att kallas printf nu. 217 00:10:03,400 --> 00:10:06,930 >> Berättelsen är, naturligtvis, kommer att vara-- förmodligen 218 00:10:06,930 --> 00:10:09,317 lika underwhelming-- är kommer att vara följande. 219 00:10:09,317 --> 00:10:10,650 Nu är funktionen printf. 220 00:10:10,650 --> 00:10:13,300 Jag är den som ringer, eller programmerare, som vill 221 00:10:13,300 --> 00:10:15,745 att stå på axlarna av människor i det förflutna som du, 222 00:10:15,745 --> 00:10:18,670 som har redan listat ut hur att faktiskt skriva ner något. 223 00:10:18,670 --> 00:10:20,650 Och så den här gången, snarare än att säga det vi 224 00:10:20,650 --> 00:10:22,255 faktiskt använda vår skärm här. 225 00:10:22,255 --> 00:10:24,130 Så om du vill kliva hit kommer jag 226 00:10:24,130 --> 00:10:27,196 att passera igen detta som ingång till min printf vän. 227 00:10:27,196 --> 00:10:29,320 Om du kunde gå vidare och skriva ut den på skärmen, 228 00:10:29,320 --> 00:10:31,611 helt enkelt genom att dra med fingret på den svarta skärmen. 229 00:10:31,611 --> 00:10:43,680 230 00:10:43,680 --> 00:10:44,180 Utmärkt. 231 00:10:44,180 --> 00:10:47,350 Okej, så massor av spänning för hur det skulle spela ut. 232 00:10:47,350 --> 00:10:51,390 >> Så nu ska vi ta upp saker man Slut notch, om vi kunde, enligt följande. 233 00:10:51,390 --> 00:10:53,980 Så detta är ett C-program som vi sade förra gången. 234 00:10:53,980 --> 00:10:57,460 Och detta bara gör vad du gjorde, det skriver ut till skärmen, hej, värld. 235 00:10:57,460 --> 00:11:00,290 Även om det är helt klart en hel del av störande grejer där uppe. 236 00:11:00,290 --> 00:11:03,630 Men låt oss ta upp saker ett snäpp och införa denna version, som minns 237 00:11:03,630 --> 00:11:06,160 var den tredje versionen som vi slutade med förra gången. 238 00:11:06,160 --> 00:11:09,120 >> Och nu finns det helt klart två användningar av printf. 239 00:11:09,120 --> 00:11:12,280 Det finns två samtal till Alana i det här fallet för printf, 240 00:11:12,280 --> 00:11:14,740 men det finns också ett samtal till en annan funktion. 241 00:11:14,740 --> 00:11:17,150 Vad är det funktionen tydligt? 242 00:11:17,150 --> 00:11:17,650 GetString. 243 00:11:17,650 --> 00:11:18,980 >> Kan vi få ytterligare en volontär? 244 00:11:18,980 --> 00:11:20,980 OK, kom upp. 245 00:11:20,980 --> 00:11:21,805 Vad heter du? 246 00:11:21,805 --> 00:11:22,990 >> JAVIER: Javier. 247 00:11:22,990 --> 00:11:24,750 >> DAVID MALAN: Javier, kom upp. 248 00:11:24,750 --> 00:11:27,270 Så Javier roll är på detta papper. 249 00:11:27,270 --> 00:11:28,860 Vilket jag ska ringa allmänt s. 250 00:11:28,860 --> 00:11:32,250 Nu är det här en variabel, det är av typen sträng, vilket antyds 251 00:11:32,250 --> 00:11:34,290 genom att andra raden i mitten finns. 252 00:11:34,290 --> 00:11:36,540 Och jag vill att du gå och hämta mig en sträng. 253 00:11:36,540 --> 00:11:40,120 Specifikt huvudet ner till orkestern avsnitt och få mig namnet på någon, 254 00:11:40,120 --> 00:11:43,142 och komma tillbaka med en variabel innehåller detta värde. 255 00:11:43,142 --> 00:11:44,225 Det kan vara vem du vill. 256 00:11:44,225 --> 00:11:47,590 257 00:11:47,590 --> 00:11:48,520 >> Nu kör vi. 258 00:11:48,520 --> 00:11:53,620 259 00:11:53,620 --> 00:11:55,960 Okej, är Javier skriva ner namnet. 260 00:11:55,960 --> 00:12:02,210 261 00:12:02,210 --> 00:12:03,280 Okej. 262 00:12:03,280 --> 00:12:05,740 Vi kan alla nog gissa hur detta kommer att spela ut. 263 00:12:05,740 --> 00:12:07,489 Vi kanske belaboring punkten för vad 264 00:12:07,489 --> 00:12:10,320 en funktion är att göra, men ändå tack så mycket. 265 00:12:10,320 --> 00:12:13,890 >> Så Javier har återvänt här strängen här, som inte kan riktigt se, 266 00:12:13,890 --> 00:12:15,800 Jonathan är den sträng att vi har fått. 267 00:12:15,800 --> 00:12:18,330 Så nu vad jag faktiskt kommer att lämna till Alana men 268 00:12:18,330 --> 00:12:20,150 är något lite annorlunda. 269 00:12:20,150 --> 00:12:23,800 För i denna version av program, först finns ditt namn. 270 00:12:23,800 --> 00:12:26,160 Så det allra första argumentet Jag måste ge Alana 271 00:12:26,160 --> 00:12:33,030 med kommer att bli bokstavligen uppge ditt namn. 272 00:12:33,030 --> 00:12:35,280 Okej, så enkelt är det Jag skulle lämna detta till dig. 273 00:12:35,280 --> 00:12:36,730 Och när jag skriver upp nästa argument, om du 274 00:12:36,730 --> 00:12:39,230 vill gå vidare och skriva detta på bordet, låt oss gå vidare 275 00:12:39,230 --> 00:12:42,659 och gör det sista exemplet här för att göra rensa vad slutligen fick hända. 276 00:12:42,659 --> 00:12:44,450 Så skall namn, skriva det mot toppen 277 00:12:44,450 --> 00:12:47,220 Om du inte gör något, bara så att Vi har utrymme för en andra raden. 278 00:12:47,220 --> 00:12:52,890 Eftersom det sista jag tänker att nu ge dig är inte en, 279 00:12:52,890 --> 00:12:57,220 men två pappersbitar. 280 00:12:57,220 --> 00:12:58,074 >> Okej. 281 00:12:58,074 --> 00:13:01,920 H-E-L-L-O kommatecken och sedan en tom rad. 282 00:13:01,920 --> 00:13:04,780 Så vad jag är på väg att lämna Alana nu är något lite annorlunda. 283 00:13:04,780 --> 00:13:08,600 Inte bara är hon få detta, där fylla i de tomma representerar 284 00:13:08,600 --> 00:13:12,050 det percent-- vad var platshållare vi har använt? 285 00:13:12,050 --> 00:13:13,890 Ja, så procent s. 286 00:13:13,890 --> 00:13:16,530 Under tiden kommer jag att passera henne i ett andra argument, som 287 00:13:16,530 --> 00:13:19,290 är just det som Javier hämtas från Jonathan. 288 00:13:19,290 --> 00:13:20,534 >> Så låt mig ge er dessa två. 289 00:13:20,534 --> 00:13:22,575 Om du vill, gå vidare och skriva ut detta. 290 00:13:22,575 --> 00:13:25,660 291 00:13:25,660 --> 00:13:28,130 Vad slutligen händer nu är, Alana igen 292 00:13:28,130 --> 00:13:29,410 spelar rollen som printf. 293 00:13:29,410 --> 00:13:32,160 Javier spelade roll GetString. 294 00:13:32,160 --> 00:13:34,700 Så det kommer att vara din souvenir. 295 00:13:34,700 --> 00:13:39,910 Och i slutändan vad som händer, trots Detta hello-- Japp gå vidare och kommatecken. 296 00:13:39,910 --> 00:13:41,410 ALANA: Gjorde jag får detta ännu eller nej? 297 00:13:41,410 --> 00:13:43,451 DAVID MALAN: Japp, du fått dem båda på en gång. 298 00:13:43,451 --> 00:13:45,740 Så tanken är att du kan nu vända sidan 299 00:13:45,740 --> 00:13:50,000 att hantera den andra dessa två ingångar. 300 00:13:50,000 --> 00:13:53,280 Så det här är bara för att slå fast påpeka att medan Alana avrättades 301 00:13:53,280 --> 00:13:55,830 denna gröna linjen här, och sedan Javier gjorde detta en för oss 302 00:13:55,830 --> 00:13:57,820 och återgå till mig något Vi ringer er, men det var verkligen 303 00:13:57,820 --> 00:13:59,520 just det papper som han själv. 304 00:13:59,520 --> 00:14:02,320 Och nu Alana har gjort denna tredje raden. 305 00:14:02,320 --> 00:14:06,010 >> Och även om allt detta ser så otroligt kryptisk kanske 306 00:14:06,010 --> 00:14:08,870 vid första anblicken, det verkligen Så enkelt är det. 307 00:14:08,870 --> 00:14:11,390 Passerar ingångar runt, få utgångar, antingen 308 00:14:11,390 --> 00:14:14,560 är fysiskt lämnas tillbaka något, eller se en bieffekt som denna. 309 00:14:14,560 --> 00:14:17,170 Något visuellt skrivet på skärmen. 310 00:14:17,170 --> 00:14:19,990 Så låt oss gå vidare och tacka Alana och Javier, 311 00:14:19,990 --> 00:14:25,012 som var här nere, för ansluter sig till oss här uppe. 312 00:14:25,012 --> 00:14:25,934 >> [Applåder] 313 00:14:25,934 --> 00:14:29,360 314 00:14:29,360 --> 00:14:33,480 >> Så nu ska vi ta för givet hur okomplicerad allt detta skulle kunna vara. 315 00:14:33,480 --> 00:14:36,775 Och låt oss gå vidare till faktiskt göra något i själva koden. 316 00:14:36,775 --> 00:14:40,620 Så upp på skärmen här är en skärmdump av den så kallade CS50 apparaten. 317 00:14:40,620 --> 00:14:43,980 Och om du var tvungen att på, som en 02:00 på onsdag eftermiddag, 318 00:14:43,980 --> 00:14:46,602 förklara för någon vän vad CS50 apparaten, 319 00:14:46,602 --> 00:14:48,185 Hur skulle du definiera den i en mening? 320 00:14:48,185 --> 00:14:52,160 321 00:14:52,160 --> 00:14:53,240 Någon mening? 322 00:14:53,240 --> 00:14:54,876 Yeah? 323 00:14:54,876 --> 00:14:57,334 STUDENT: Det är som ett program som gör allas dator 324 00:14:57,334 --> 00:14:58,460 köras med samma system. 325 00:14:58,460 --> 00:14:59,210 DAVID MALAN: Bra! 326 00:14:59,210 --> 00:15:02,810 Det är ett program som gör att allas dator för att köra med samma system. 327 00:15:02,810 --> 00:15:04,920 Det blir liksom en egen kopia av ett operativsystem 328 00:15:04,920 --> 00:15:07,540 system som händer kallas Ubuntu Linux. 329 00:15:07,540 --> 00:15:11,070 Och det körs effektivt inuti ett fönster på din egen Mac eller PC, 330 00:15:11,070 --> 00:15:15,080 så att detta sätt direkt ur porten i vecka 1, alla här i klassen 331 00:15:15,080 --> 00:15:17,590 har tillgång till samma verktyg, samma konfiguration, 332 00:15:17,590 --> 00:15:21,250 och det finns ingen inlärningskurva specifik till en Mac eller PC i synnerhet. 333 00:15:21,250 --> 00:15:25,620 >> Nu har vi öppnat upp, inne i CS50 apparaten på måndag, det här programmet här. 334 00:15:25,620 --> 00:15:27,040 Det händer att kallas gedit. 335 00:15:27,040 --> 00:15:29,050 Men det är egentligen bara en grafisk editor. 336 00:15:29,050 --> 00:15:33,170 Det är något som Anteckningar eller Text Redigera i Windows eller Mac OS respektive. 337 00:15:33,170 --> 00:15:36,720 Och jag föreslog att det var riktigt tre viktiga delar till denna skärm. 338 00:15:36,720 --> 00:15:39,560 Den övre sidan är där du skulle skriva din kod. 339 00:15:39,560 --> 00:15:44,080 Och det är där vi tillbringade mycket av vår tre exempel i måndagens föreläsning. 340 00:15:44,080 --> 00:15:47,650 Botten kallade vi det, denna svarta fönster, ja? 341 00:15:47,650 --> 00:15:48,640 >> STUDENT: Compiler? 342 00:15:48,640 --> 00:15:51,500 >> DAVID MALAN: Kompilator vi nås med hjälp av det fönstret. 343 00:15:51,500 --> 00:15:53,040 Men mer allmänt. 344 00:15:53,040 --> 00:15:54,540 Ja, det var bara ett terminalfönster. 345 00:15:54,540 --> 00:15:57,780 Detta är en ålder gammal term som bara beskriver i huvudsak en blinkande 346 00:15:57,780 --> 00:16:01,910 tolken, att år sedan brukade vara på en av de stora CRT stil monitorer. 347 00:16:01,910 --> 00:16:04,300 Men numera är det slags virtuell i mjukvara. 348 00:16:04,300 --> 00:16:06,710 Och terminalfönster Äntligen går det att skriva kommandon. 349 00:16:06,710 --> 00:16:11,750 Den typ av den förenklade versionen av användargränssnittet eller UI. 350 00:16:11,750 --> 00:16:14,060 Det är inte ett grafiskt användargränssnitt eller GUI, 351 00:16:14,060 --> 00:16:17,250 Det är ett textbaserat gränssnitt eller ett kommandoradsgränssnitt. 352 00:16:17,250 --> 00:16:20,770 >> Och faktiskt det är där i slutändan Jag kunde skriva lite kod. 353 00:16:20,770 --> 00:16:24,200 När jag hade skrivit en del kod men, minns att jag använde detta kommando. 354 00:16:24,200 --> 00:16:26,210 Och som det namnet slags antyder detta 355 00:16:26,210 --> 00:16:29,860 tillåter mig att göra en program som heter Hej. 356 00:16:29,860 --> 00:16:33,400 Men vad var det egentligen? 357 00:16:33,400 --> 00:16:36,180 Väl make tog min ingång, min källkod, 358 00:16:36,180 --> 00:16:39,380 och omvandla den till vad, i slutändan? 359 00:16:39,380 --> 00:16:40,060 >> Objektkod. 360 00:16:40,060 --> 00:16:42,790 Och objektkod är bara en fancy sätt att säga nollor och ettor. 361 00:16:42,790 --> 00:16:46,420 Och sedan när jag ville att köra den objektkod, 362 00:16:46,420 --> 00:16:50,940 när jag ville passera som inmatning de nollor och ettor i datorns 363 00:16:50,940 --> 00:16:54,430 hjärna, den så kallade CPU eller central behandlingsenhet, 364 00:16:54,430 --> 00:16:55,730 Jag var tvungen att köra programmet. 365 00:16:55,730 --> 00:16:59,042 Men det var inte helt enkel på måndag som bara dubbla klicka viss ikonen. 366 00:16:59,042 --> 00:17:01,375 Vad istället var jag tvungen att göra för att köra ett program? 367 00:17:01,375 --> 00:17:04,130 368 00:17:04,130 --> 00:17:07,890 >> Vad var det andra kommandot? 369 00:17:07,890 --> 00:17:09,619 Jag hör lite snedstreck? 370 00:17:09,619 --> 00:17:10,544 Ja, ja? 371 00:17:10,544 --> 00:17:12,474 >> STUDENT: Dot slash och programmets namn. 372 00:17:12,474 --> 00:17:13,349 DAVID MALAN: Exakt. 373 00:17:13,349 --> 00:17:15,030 Dot snedstreck och programmets namn. 374 00:17:15,030 --> 00:17:16,210 Nu vad gjorde det? 375 00:17:16,210 --> 00:17:19,470 Tja dot är bara ett svårbegripliga sätt att säga aktuell katalog. 376 00:17:19,470 --> 00:17:23,440 Oavsett mapp du befinner dig i är kallad, representeras prick. 377 00:17:23,440 --> 00:17:26,680 Det snedstreck är precis vad du har sett i Mac OS och Windows i flera år, 378 00:17:26,680 --> 00:17:30,329 det är en separator mellan en katalog eller mapp och resten av vissa namn. 379 00:17:30,329 --> 00:17:32,620 I Windows händer det att gå bakåt, i Linux och Mac 380 00:17:32,620 --> 00:17:34,210 OS det råkar gå framåt. 381 00:17:34,210 --> 00:17:37,560 Men det är bara separatorn, så det är bara en ointressant syntaktiska detaljer. 382 00:17:37,560 --> 00:17:40,440 >> Den saftiga delen är naturligtvis namnet på programmet, Hej. 383 00:17:40,440 --> 00:17:42,650 Och det är vad gör skapat för oss. 384 00:17:42,650 --> 00:17:44,910 Det matas ut som hos oss. 385 00:17:44,910 --> 00:17:46,700 Men hur kom vi till den punkten? 386 00:17:46,700 --> 00:17:48,870 Låt oss nu be frågan, vad var egentligen 387 00:17:48,870 --> 00:17:52,470 händer här, åtminstone med När det gäller en del av denna syntax? 388 00:17:52,470 --> 00:17:57,000 >> Så i en mening eller så, hur har vi bortförklara 389 00:17:57,000 --> 00:17:59,020 denna första linje som är markerad i grönt? 390 00:17:59,020 --> 00:18:02,998 Vad var det första raden gör, med avseende på mitt program? 391 00:18:02,998 --> 00:18:03,974 Yeah? 392 00:18:03,974 --> 00:18:05,067 >> STUDENT: [ohörbart]. 393 00:18:05,067 --> 00:18:06,150 DAVID MALAN: Säg det igen? 394 00:18:06,150 --> 00:18:08,734 STUDENT: Inklusive och nedladdning senaste funktionerna [ohörbart]. 395 00:18:08,734 --> 00:18:09,483 DAVID MALAN: Bra. 396 00:18:09,483 --> 00:18:11,900 Inklusive, kommer jag inte säga nedladdning, men låt oss säga 397 00:18:11,900 --> 00:18:15,500 inklusive funktioner som människor har skrivit tidigare. 398 00:18:15,500 --> 00:18:18,260 Och dessa funktioner genomförs någonstans i min dator. 399 00:18:18,260 --> 00:18:20,470 Någon skrev en fil år sedan, och den filen 400 00:18:20,470 --> 00:18:23,490 är någonstans inne i CS50 apparat, eller på min hårddisk 401 00:18:23,490 --> 00:18:24,480 mer allmänt. 402 00:18:24,480 --> 00:18:27,810 Och så denna linje är i grunden säger, gå hitta filen, standard I / O-dot 403 00:18:27,810 --> 00:18:31,740 h, och kopiera och klistra in innehållet här på toppen av min fil 404 00:18:31,740 --> 00:18:33,860 så att jag inte behöver göra det manuellt själv. 405 00:18:33,860 --> 00:18:40,970 >> Och bland de saftigaste bitarna inuti den filen vi påstod var vilken funktion? 406 00:18:40,970 --> 00:18:45,740 Vilken funktion har vi säga förklarades eller som nämns i standard I / O dot h 407 00:18:45,740 --> 00:18:47,120 mest troligt? 408 00:18:47,120 --> 00:18:47,900 Printf, eller hur? 409 00:18:47,900 --> 00:18:50,797 Vi skrev inte printf på Måndag, det bara fanns. 410 00:18:50,797 --> 00:18:52,880 Ungefär som Alana bara kom upp på scenen och hon bara 411 00:18:52,880 --> 00:18:55,540 existerade och visste hur man tecknar något på skärmen, 412 00:18:55,540 --> 00:18:58,660 så existerar printf i många år. 413 00:18:58,660 --> 00:19:00,240 Och så detta är så vi åt det. 414 00:19:00,240 --> 00:19:03,280 Nu om vi går vidare här, viktigaste var analogt vi 415 00:19:03,280 --> 00:19:06,620 sade till pusselbit kallas när grön flagga klickas 416 00:19:06,620 --> 00:19:07,620 i världen av Scratch. 417 00:19:07,620 --> 00:19:10,130 Det är bara typ av standardnamn som människor 418 00:19:10,130 --> 00:19:13,340 beslutade skulle representera standard ingång till ett program. 419 00:19:13,340 --> 00:19:16,540 Den bit av programkod som blir avrättade först. 420 00:19:16,540 --> 00:19:19,700 >> Under tiden dessa klamrar är ungefär som den böjda formen 421 00:19:19,700 --> 00:19:21,410 en hel del av dessa gula skrap bitar. 422 00:19:21,410 --> 00:19:24,860 De slags kapsla helhet gäng instruktioner tillsammans. 423 00:19:24,860 --> 00:19:28,350 Så det bara typ av binder samman vissa tillhörande funktionaliteter. 424 00:19:28,350 --> 00:19:33,750 printf naturligtvis är en funktion som skriver på skärmen, som vi just gjorde. 425 00:19:33,750 --> 00:19:35,190 >> Hur är dessa parenteser? 426 00:19:35,190 --> 00:19:38,770 Hur skulle du define-- även om du har aldrig programmerat förut, men bara baserat 427 00:19:38,770 --> 00:19:41,320 nu en ökande förhoppningsvis intuition, vad 428 00:19:41,320 --> 00:19:43,290 är parenteserna gör för oss här? 429 00:19:43,290 --> 00:19:45,450 Eller vad är de omgivande? 430 00:19:45,450 --> 00:19:46,360 Yeah? 431 00:19:46,360 --> 00:19:49,360 >> STUDENT: De säger vad du ska skriva ut med printf. 432 00:19:49,360 --> 00:19:52,401 >> DAVID MALAN: Ja, de säger vad du ska skriva ut med printf. 433 00:19:52,401 --> 00:19:56,260 Eller mer generellt, de är omgivande insignalerna till funktionen. 434 00:19:56,260 --> 00:19:58,530 Så du kan nästan tro av dessa parenteser 435 00:19:58,530 --> 00:20:01,620 som vara liknande metallen klipp på den här klippbordet. 436 00:20:01,620 --> 00:20:05,940 Det är vad som håller, det är vad som är kommer att användas för att ge argument 437 00:20:05,940 --> 00:20:08,500 i funktion, vilket i det här fallet kallas printf. 438 00:20:08,500 --> 00:20:12,390 >> Så generellt nästan alla När vi kallar en funktion, 439 00:20:12,390 --> 00:20:14,280 vi kommer att se ett par parenteser. 440 00:20:14,280 --> 00:20:17,000 Kanske med något i den, som nu, kanske något i det. 441 00:20:17,000 --> 00:20:19,770 Men det är där du skulle sätta ingångarna eller så kallade argument 442 00:20:19,770 --> 00:20:20,680 till en funktion. 443 00:20:20,680 --> 00:20:22,470 >> Här är ett sådant argument. 444 00:20:22,470 --> 00:20:24,467 Jag har markerat allt mellan citat, 445 00:20:24,467 --> 00:20:26,300 eftersom det visar sig på detta språk kallas 446 00:20:26,300 --> 00:20:29,950 C, när du vill representera en string-- det är ett ord eller en fras 447 00:20:29,950 --> 00:20:33,470 eller ens en paragraph-- du måste omge den med dubbla citattecken. 448 00:20:33,470 --> 00:20:35,420 Inte apostrof, citationstecken. 449 00:20:35,420 --> 00:20:37,460 Och det är precis vad jag har gjort här. 450 00:20:37,460 --> 00:20:39,900 >> Samtidigt finns det en funky symbol mot slutet där. 451 00:20:39,900 --> 00:20:41,600 Det omvända snedstrecket n. 452 00:20:41,600 --> 00:20:43,460 Vad gjorde vi säger att representeras? 453 00:20:43,460 --> 00:20:44,093 Yeah? 454 00:20:44,093 --> 00:20:44,980 >> STUDENT: En ny linje. 455 00:20:44,980 --> 00:20:45,896 >> DAVID MALAN: Ny rad. 456 00:20:45,896 --> 00:20:47,910 Rätt, du behöver inte generellt trycka Enter när 457 00:20:47,910 --> 00:20:50,430 du vill att programmet att spotta ut en ny rad. 458 00:20:50,430 --> 00:20:54,210 Snarare du berätta det uttryckligen med detta förvisso ockult bit 459 00:20:54,210 --> 00:20:58,770 av syntax, bakstreck n, att du vill ha en ny linje att åka dit. 460 00:20:58,770 --> 00:20:59,810 Slutligen semikolon. 461 00:20:59,810 --> 00:21:01,560 Vi visste inte riktigt prata för mycket om det här, 462 00:21:01,560 --> 00:21:04,893 och överlägset det blir bane vissa om din existens för första problemet 463 00:21:04,893 --> 00:21:07,990 ställa, när man bara misslyckats med att inse du har glömt något så dumt 464 00:21:07,990 --> 00:21:08,614 som ett semikolon. 465 00:21:08,614 --> 00:21:11,600 Och generellt tar den Det kommer att fixa det problemet. 466 00:21:11,600 --> 00:21:13,511 Men vad är det gör för oss, skulle du säga? 467 00:21:13,511 --> 00:21:15,670 >> STUDENT: [ohörbart]. 468 00:21:15,670 --> 00:21:17,484 >> DAVID MALAN: Förlåt? 469 00:21:17,484 --> 00:21:18,532 >> STUDENT: [ohörbart]. 470 00:21:18,532 --> 00:21:19,990 DAVID MALAN: Finishing ett uttalande. 471 00:21:19,990 --> 00:21:22,770 Det är ungefär som den period på I slutet av en engelsk mening, 472 00:21:22,770 --> 00:21:25,790 I detta språk C det slutar ett uttalande. 473 00:21:25,790 --> 00:21:29,250 En instruktion för programmering kod som du vill bara säga, 474 00:21:29,250 --> 00:21:30,500 Jag är klar med det här. 475 00:21:30,500 --> 00:21:32,240 Nu märker att det är den enda här. 476 00:21:32,240 --> 00:21:34,614 Så du vill inte komma in en vana att sätta semikolon 477 00:21:34,614 --> 00:21:36,190 efter varje sluten parentes. 478 00:21:36,190 --> 00:21:38,610 Till exempel finns det ingen bredvid annullera, och vi kommer 479 00:21:38,610 --> 00:21:40,430 komma tillbaka i framtiden vad void medel. 480 00:21:40,430 --> 00:21:44,080 Men i detta fall ditt printf är en funktion, eller en förklaring som används, 481 00:21:44,080 --> 00:21:47,420 och så vill vi ha det terminalen i slutet av den. 482 00:21:47,420 --> 00:21:50,980 >> Och jag avsiktligt plocka på C. Och ärligt talat en hel del språk som C, C ++, 483 00:21:50,980 --> 00:21:55,000 Java, JavaScript, och valfritt antal andra språk har en hel del av dessa 484 00:21:55,000 --> 00:21:56,730 slags syntaktiska detaljer. 485 00:21:56,730 --> 00:22:00,120 Att särskilt om du är ny på programmering kan verkligen resa dig upp. 486 00:22:00,120 --> 00:22:02,307 Och du kommer, markera min ord, några av er kommer 487 00:22:02,307 --> 00:22:04,140 har denna erfarenhet i kontorstid eller sent 488 00:22:04,140 --> 00:22:07,554 nattetid arbetar på en p-set, där din jävla program bara inte kompilera, 489 00:22:07,554 --> 00:22:09,470 Det går inte, du har ingen aning om vad som är fel, 490 00:22:09,470 --> 00:22:11,513 det verkar helt logiskt korrekt för dig. 491 00:22:11,513 --> 00:22:13,596 Och det är för att du har glömt något som slår 492 00:22:13,596 --> 00:22:15,250 ett semikolon i slutet av en rad. 493 00:22:15,250 --> 00:22:17,590 >> Men det är dessa typer av saker du är ska genast lära sig att se. 494 00:22:17,590 --> 00:22:20,048 Och faktiskt det är dessa saker att CA: s och TF: s har 495 00:22:20,048 --> 00:22:23,210 varit sorts utbildade för att se mycket snabbare än du. 496 00:22:23,210 --> 00:22:26,610 Och så det här är bara för att säga, som ni dyka in problemet set 1 synnerhet, 497 00:22:26,610 --> 00:22:28,217 Bli inte frustrerad av det här. 498 00:22:28,217 --> 00:22:30,050 När du typ av vänja till världen, du 499 00:22:30,050 --> 00:22:35,130 börja se saker som du kanske inte se vid första anblicken denna första vecka. 500 00:22:35,130 --> 00:22:37,440 >> Så källkod är något liknande. 501 00:22:37,440 --> 00:22:40,370 Vi vill ge det till den så kallade kompilator. 502 00:22:40,370 --> 00:22:42,850 Och den kompilator som Vi sa ger utdata 503 00:22:42,850 --> 00:22:45,660 kallas objektkod, den så kallade nollor och ettor. 504 00:22:45,660 --> 00:22:47,747 Men därifrån, vad betyder det ger oss? 505 00:22:47,747 --> 00:22:49,080 Jo det ger oss dessa mönster. 506 00:22:49,080 --> 00:22:52,020 Och återigen din dator, Intel inuti, 507 00:22:52,020 --> 00:22:54,350 förstår dessa mönster av nollor och ettor. 508 00:22:54,350 --> 00:22:57,300 Och ibland mönstret representerar ett faktiskt decimaltal 509 00:22:57,300 --> 00:22:59,770 som vi såg i förra veckan, ibland den representerar ett brev 510 00:22:59,770 --> 00:23:02,730 som vi såg förra veckan, ibland den representerar en instruktion, 511 00:23:02,730 --> 00:23:05,460 som att skriva ut något på skärmen. 512 00:23:05,460 --> 00:23:08,782 >> Så printf för instance-- utan snarare, låt mig spola tillbaka. 513 00:23:08,782 --> 00:23:11,240 Vi har tagit för givet att dessa nollor och ettor är 514 00:23:11,240 --> 00:23:14,200 produceras av det här kommandot make. 515 00:23:14,200 --> 00:23:16,050 Men gör inte en kompilator. 516 00:23:16,050 --> 00:23:19,370 Gör inte saken i mitten som är att producera nollor och ettor. 517 00:23:19,370 --> 00:23:23,780 Snarare gör är bara en mycket bra namngav program vars syfte i livet 518 00:23:23,780 --> 00:23:27,267 är i huvudsak att räkna ut hur man kompilerar ditt program. 519 00:23:27,267 --> 00:23:29,350 Och vi använder det i dessa första veckorna eftersom det bara 520 00:23:29,350 --> 00:23:30,910 sparar oss en massa problem. 521 00:23:30,910 --> 00:23:34,080 >> Men vad gör egentligen gör när du kompilerar hej, 522 00:23:34,080 --> 00:23:36,690 är, som vi sade förra gången, det är tittar på din hårddisk 523 00:23:36,690 --> 00:23:40,620 eller i den aktuella mappen, för fil som heter vad, tydligen? 524 00:23:40,620 --> 00:23:41,815 Hej.c, eller hur? 525 00:23:41,815 --> 00:23:43,190 Det är bara lite av en konvention. 526 00:23:43,190 --> 00:23:45,620 Det är godtyckligt, men det är så det är. 527 00:23:45,620 --> 00:23:48,620 Gör, om du bara ange namnet på ett program som ännu inte finns, 528 00:23:48,620 --> 00:23:52,200 det kommer att leta efter källkoden i en fil, som standard innebär hej.c. 529 00:23:52,200 --> 00:23:53,530 Och om den finner det, bra. 530 00:23:53,530 --> 00:23:56,650 Det kommer att konvertera den källan kod i objektkod för dig. 531 00:23:56,650 --> 00:23:59,670 >> Men varje gång jag har tryck Enter efter att ha kört göra hello, 532 00:23:59,670 --> 00:24:03,560 minns du se förra gången en ganska lång och kryptisk sekvens 533 00:24:03,560 --> 00:24:06,430 andra vita bokstäver och tecken på skärmen? 534 00:24:06,430 --> 00:24:11,220 Det var väl själva kommandot, den faktiska kompilator, som var igång. 535 00:24:11,220 --> 00:24:15,500 Så själva kompilatorn vi använder de flesta av terminen är något som kallas klang. 536 00:24:15,500 --> 00:24:19,280 Några av er kanske har använt Visual Studio innan eller GCC, 537 00:24:19,280 --> 00:24:21,340 eller valfritt antal andra kompilatorer. 538 00:24:21,340 --> 00:24:22,620 Vi använder klang. 539 00:24:22,620 --> 00:24:26,950 >> Och klang ger oss möjlighet att faktiskt konvertera att källkoden till objektkod. 540 00:24:26,950 --> 00:24:29,430 Vad detta faktiskt i praktiken? 541 00:24:29,430 --> 00:24:33,390 Bra låt mig gå in i en av mina mappar från förra gången. 542 00:24:33,390 --> 00:24:35,760 Inne i CS50 apparaten. 543 00:24:35,760 --> 00:24:42,080 Och låt mig gå vidare och skapa detta samma fil, innefattar standard I / O-dot h. 544 00:24:42,080 --> 00:24:42,875 Int main ogiltiga. 545 00:24:42,875 --> 00:24:46,000 Och vi ska återkomma i framtiden vad int medel och vad void medel. 546 00:24:46,000 --> 00:24:49,130 Men nu ska vi göra hallå världen backslash n, 547 00:24:49,130 --> 00:24:50,500 precis som vi gjorde i styrelsen. 548 00:24:50,500 --> 00:24:53,930 >> Låt mig spara filen som heter hej.c. 549 00:24:53,930 --> 00:24:58,280 Och nu om jag vill sammanställa denna Jag kan-- låt mig zooma in-- körning 550 00:24:58,280 --> 00:25:00,450 gör hello anger. 551 00:25:00,450 --> 00:25:02,645 Och detta igen var det väldigt kryptisk linje. 552 00:25:02,645 --> 00:25:05,120 Men nu minst ett ord troligen hoppar ut på dig. 553 00:25:05,120 --> 00:25:07,087 Klang är den linjen vi såg tidigare. 554 00:25:07,087 --> 00:25:10,420 Nu finns det massor av andra saker ärligt att vi ska vifta händerna på för idag. 555 00:25:10,420 --> 00:25:14,020 Men det finns några undergrupper, några tecken i här 556 00:25:14,020 --> 00:25:14,907 som är av intresse. 557 00:25:14,907 --> 00:25:16,490 Men jag ska gå vidare och göra det. 558 00:25:16,490 --> 00:25:18,281 Jag ska till första körningen Hej, bara för att bevisa 559 00:25:18,281 --> 00:25:20,320 att detta fungerar som det var måndag. 560 00:25:20,320 --> 00:25:22,330 Men nu ska jag ta bort programmet. 561 00:25:22,330 --> 00:25:25,870 Och mycket som vi hade dessa korta namn förra gången, 562 00:25:25,870 --> 00:25:29,787 kommandot för att ta bort något är rm, ta bort, ange. 563 00:25:29,787 --> 00:25:31,870 Du kommer att få några ganska kryptiska frågor. 564 00:25:31,870 --> 00:25:35,210 Svårt att tro att du kan göra även denna fråga svår att förstå. 565 00:25:35,210 --> 00:25:38,100 Men avlägsna vanlig fil hej bara sätt vill du ta bort hej. 566 00:25:38,100 --> 00:25:42,650 >> Och jag kan gå vidare och skriva y för Ja, Enter, och nu är det borta. 567 00:25:42,650 --> 00:25:45,130 Vad detta betyder nu, om jag rensa min skärm, 568 00:25:45,130 --> 00:25:47,301 är att i stället för gör make hello-- du 569 00:25:47,301 --> 00:25:48,800 Vet du vad, jag får bra på det här. 570 00:25:48,800 --> 00:25:50,690 Jag kommer att köra kompilatorn själv. 571 00:25:50,690 --> 00:25:53,330 Jag behöver inte något program för att räkna ut vad min fil heter. 572 00:25:53,330 --> 00:25:55,370 Jag skrev hej.c jag vet vad den heter, 573 00:25:55,370 --> 00:25:57,640 Jag är helt klart kapabel att skriva det. 574 00:25:57,640 --> 00:26:02,620 Så jag ska gå vidare och gör klang hej.c Enter. 575 00:26:02,620 --> 00:26:03,264 >> Verkar fungera. 576 00:26:03,264 --> 00:26:05,930 Och det finns ingen extra utgång, eftersom klang är kompilatorn. 577 00:26:05,930 --> 00:26:08,590 Det är vad som omvandlar källkod till nollor och ettor. 578 00:26:08,590 --> 00:26:12,870 Så om jag nu dot slash hello Enter, hm. 579 00:26:12,870 --> 00:26:14,630 Nytt felmeddelande idag. 580 00:26:14,630 --> 00:26:17,610 Så bash är bara namnet på den blinkande prompt som vi använder. 581 00:26:17,610 --> 00:26:20,360 Det är en grov förenkling, men nu det är allt det är, 582 00:26:20,360 --> 00:26:21,401 det är den blinkande prompten. 583 00:26:21,401 --> 00:26:22,880 Och det är därför det skriker på oss. 584 00:26:22,880 --> 00:26:25,690 >> Ingen sådan fil eller katalog är lite mer okomplicerat. 585 00:26:25,690 --> 00:26:28,190 Men säkert jag gjorde det objektkod. 586 00:26:28,190 --> 00:26:30,930 Men kruxet är att om jag skriver kommandot 587 00:26:30,930 --> 00:26:34,650 att lista innehållet i denna katalog, vilket är vad? 588 00:26:34,650 --> 00:26:36,210 ls för listan. 589 00:26:36,210 --> 00:26:39,332 Det finns en massa saker här inne, varav en del kom med apparaten, 590 00:26:39,332 --> 00:26:42,040 som min skrivbordsmapp Downloads mapp, Dropbox-mappen, och alla 591 00:26:42,040 --> 00:26:42,850 det där. 592 00:26:42,850 --> 00:26:45,410 Men det som är intressant är hej.c, som 593 00:26:45,410 --> 00:26:47,286 Jag skapade nyss med gedit. 594 00:26:47,286 --> 00:26:49,160 Och vad är den konstigaste söker namn här, 595 00:26:49,160 --> 00:26:53,110 kanske att vi inte se sista tid alls? 596 00:26:53,110 --> 00:26:54,710 >> a.out, eller hur? 597 00:26:54,710 --> 00:26:56,920 Så tillbaka i dag, det ades just beslutat att när 598 00:26:56,920 --> 00:26:58,760 du kompilerar ett program för första gången, 599 00:26:58,760 --> 00:27:02,360 och du inte anger namnet av en fil, låt oss kalla det en. 600 00:27:02,360 --> 00:27:05,800 Och a.out innebär just detta var utsignalen från kompilatorn. 601 00:27:05,800 --> 00:27:07,790 Så det är en hemsk namn för ett program. 602 00:27:07,790 --> 00:27:12,820 Men genom den logiken, dot slash för aktuella katalogen, snedstreck a.out, 603 00:27:12,820 --> 00:27:16,102 bör innebära att det finns faktiskt min hello world-program. 604 00:27:16,102 --> 00:27:17,560 Nu lite värma upp motion också. 605 00:27:17,560 --> 00:27:20,420 Om jag vill byta namn här fil, visar sig att du 606 00:27:20,420 --> 00:27:23,000 flytta en fil från ett namn till en annan. 607 00:27:23,000 --> 00:27:28,750 Så mv a.out, och sedan jag kan kalla det hej Enter. 608 00:27:28,750 --> 00:27:30,940 Så detta är en Linux-kommando. 609 00:27:30,940 --> 00:27:34,370 DOS hade det år sedan, Windows har ett terminalfönster 610 00:27:34,370 --> 00:27:36,460 av något slag som ser så här, Linux och Mac 611 00:27:36,460 --> 00:27:38,140 datorer har denna blinkande prompt. 612 00:27:38,140 --> 00:27:41,490 Även om de flesta av oss antagligen sällan, om någonsin, använder det. 613 00:27:41,490 --> 00:27:44,590 >> Men vad jag har gjort är att köra en Programmet, vars namn är mv, 614 00:27:44,590 --> 00:27:47,900 och jag har försett den med två argument, så att säga. 615 00:27:47,900 --> 00:27:48,630 Två ingångar. 616 00:27:48,630 --> 00:27:50,260 a.out är det ursprungliga namnet. 617 00:27:50,260 --> 00:27:51,630 Hej är det nya namnet. 618 00:27:51,630 --> 00:27:55,670 Så om jag nu dot snedstreck Hej, Enter, existerar det. 619 00:27:55,670 --> 00:28:00,770 Och om jag gör dot slash a.out, vad förväntar jag ska se? 620 00:28:00,770 --> 00:28:02,250 >> Bash, ingen sådan fil eller katalog. 621 00:28:02,250 --> 00:28:03,350 Eftersom jag precis bytt namn det. 622 00:28:03,350 --> 00:28:04,975 Så det här tar lite tid att vänja sig. 623 00:28:04,975 --> 00:28:06,977 Men problemet set 1 specifikation kommer verkligen 624 00:28:06,977 --> 00:28:08,810 hålla din hand genom en del av denna minutae. 625 00:28:08,810 --> 00:28:11,050 Eftersom detta är en fullständig intellektuell distraktion 626 00:28:11,050 --> 00:28:12,966 från mer intressant idéer till hands, vilket 627 00:28:12,966 --> 00:28:15,310 är faktiskt att skapa något ur koden. 628 00:28:15,310 --> 00:28:18,830 Men låt oss göra en ändring Nu till det här programmet. 629 00:28:18,830 --> 00:28:23,150 >> Minns att förra gången jag gjorde något så här, printf uppge namn. 630 00:28:23,150 --> 00:28:25,790 Och faktiskt gjorde vi just detta på den stora skärmen där borta. 631 00:28:25,790 --> 00:28:30,640 Och sedan gjorde jag string s blir GetString öppna Paren, nära Paren. 632 00:28:30,640 --> 00:28:33,430 Och Paren bara short notation för parentes. 633 00:28:33,430 --> 00:28:36,460 Så tar GetString tar några argument? 634 00:28:36,460 --> 00:28:38,440 Inga ingångar Nej, men det behöver parentes, 635 00:28:38,440 --> 00:28:41,830 eftersom det är vad avgränsar kallelse en funktion. 636 00:28:41,830 --> 00:28:46,440 >> Så jag ska gå vidare och försöka kör kompilatorn på detta program nu. 637 00:28:46,440 --> 00:28:50,774 Klang hej.c, eftersom jag ändrade inte sitt namn nu. 638 00:28:50,774 --> 00:28:51,940 Och jag fick en massa fel. 639 00:28:51,940 --> 00:28:53,570 Låt oss zooma ut här. 640 00:28:53,570 --> 00:28:55,420 Om jag rulla upp igen, som jag sa förra gången, 641 00:28:55,420 --> 00:28:58,420 till den första, samma fel att jag fick förra gången. 642 00:28:58,420 --> 00:29:04,210 På rad 6 i hej.c hade jag en odeklarerat identifieringssträng, 643 00:29:04,210 --> 00:29:05,590 jag menar standard i? 644 00:29:05,590 --> 00:29:06,750 Det gjorde jag inte. 645 00:29:06,750 --> 00:29:10,050 För vad misstag har jag gjort i denna programmet, om du minns från förra gången? 646 00:29:10,050 --> 00:29:13,219 647 00:29:13,219 --> 00:29:15,010 Ja, vi behöver sk stödhjul 648 00:29:15,010 --> 00:29:16,510 att vi bara kommer att använda för ett par veckor. 649 00:29:16,510 --> 00:29:19,480 Men jag måste precisera att även, någonstans inne i apparaten, 650 00:29:19,480 --> 00:29:22,720 är en fil som vi skrev bara några år sedan. 651 00:29:22,720 --> 00:29:26,500 Inuti vilken är funktioner som tydligen GetString. 652 00:29:26,500 --> 00:29:35,160 Så nu om jag går tillbaka hit, zooma in, och åter springa klang hej.c. 653 00:29:35,160 --> 00:29:36,500 Fan, ett annat fel. 654 00:29:36,500 --> 00:29:38,590 Men vi har inte sett det här förut. 655 00:29:38,590 --> 00:29:41,900 >> Den här är lite mer esoterisk att räkna ut. 656 00:29:41,900 --> 00:29:46,910 Men detta är avsiktligt på skärmen, eftersom vi ville berätta den här historien. 657 00:29:46,910 --> 00:29:51,280 När du kompilerar hej.c, precis som bilden från tidigare föreslagits, 658 00:29:51,280 --> 00:29:54,650 du bara omvandla denna källkod till nollor och ettor. 659 00:29:54,650 --> 00:30:00,340 Nu CS50 personal för några år sedan skrev CS50.h, och en motsvarande fil, 660 00:30:00,340 --> 00:30:01,640 CS50.c. 661 00:30:01,640 --> 00:30:04,490 Och vi, för några år sedan, sammanställt dessa filer 662 00:30:04,490 --> 00:30:07,290 i en fil som händer att kallas CS50.o. 663 00:30:07,290 --> 00:30:09,180 >> Eller det kan döpas ett några olika saker. 664 00:30:09,180 --> 00:30:11,054 Men det är ett enkelt sätt att tänka på det. 665 00:30:11,054 --> 00:30:14,960 Så vi sammanställt CS50 s biblioteket till ettor och nollor. 666 00:30:14,960 --> 00:30:20,340 Men ingenstans har jag specificerat att jag vill kombinera mina nollor 667 00:30:20,340 --> 00:30:24,030 och de för min hallå världen program med nollor och ettor 668 00:30:24,030 --> 00:30:29,760 att CS50 personal skapade några år sedan i ett komplett program. 669 00:30:29,760 --> 00:30:34,100 Allt jag har angett genom att skriva klang hej.c är kompilera hej.c. 670 00:30:34,100 --> 00:30:38,380 >> Jag har inte sagt klang till länk i nollor och ettor 671 00:30:38,380 --> 00:30:41,650 att CS50 personal skapade för dig för en tid sedan. 672 00:30:41,650 --> 00:30:48,280 Så det är en enkel fix, dash l för länk, CS50. 673 00:30:48,280 --> 00:30:52,600 Och vi kommer igen ser detta snart igen och igen. 674 00:30:52,600 --> 00:30:54,420 Men märker nu fanns det inga klagomål. 675 00:30:54,420 --> 00:30:59,770 Så nu om jag kör dot snedstreck Hej, nu det funkar. 676 00:30:59,770 --> 00:31:03,840 Även om det är lite missvisande eftersom jag precis åter vilken fil? 677 00:31:03,840 --> 00:31:05,880 a.out. 678 00:31:05,880 --> 00:31:07,930 >> Så låt mig spola tillbaka för bara ett ögonblick. 679 00:31:07,930 --> 00:31:10,900 Programmet vi bara sammanställt har de tre rader kod. 680 00:31:10,900 --> 00:31:14,710 När jag körde hallå världen, hej en stund sedan såg jag inte uppge ditt namn. 681 00:31:14,710 --> 00:31:17,080 Och det är för att jag sprang gamla versionen av programmet. 682 00:31:17,080 --> 00:31:22,700 Men om jag verkligen köra dot slash a.out Enter, ange ditt namn, Rob, hej, 683 00:31:22,700 --> 00:31:23,370 världen. 684 00:31:23,370 --> 00:31:23,870 Hm. 685 00:31:23,870 --> 00:31:26,110 Det är lite av en bugg. 686 00:31:26,110 --> 00:31:28,560 Troligen menade Rob, eller hur? 687 00:31:28,560 --> 00:31:30,997 Så vad är det fix här i koden. 688 00:31:30,997 --> 00:31:31,872 STUDENT: [ohörbart]. 689 00:31:31,872 --> 00:31:38,415 690 00:31:38,415 --> 00:31:39,290 DAVID MALAN: Exakt. 691 00:31:39,290 --> 00:31:43,160 Så jag behöver bara göra det sista tweak så att jag passerar i en platshållare, 692 00:31:43,160 --> 00:31:45,690 som en fylla i de tomma, som vi gjorde för en stund sedan. 693 00:31:45,690 --> 00:31:47,870 Men procent s är nu som fyller i de tomma. 694 00:31:47,870 --> 00:31:52,100 Så slutligen låt oss avslöja en sista detalj så att det finns ingen magi. 695 00:31:52,100 --> 00:31:54,090 Jag kommer att gå vidare och bli av hellow. 696 00:31:54,090 --> 00:31:56,070 Jag kommer att gå vidare och bli av med a.out. 697 00:31:56,070 --> 00:31:58,410 Så nu har jag inga program, bara min källkod. 698 00:31:58,410 --> 00:32:01,100 Och jag kommer att köra en något längre kommando, klang 699 00:32:01,100 --> 00:32:05,650 dash o hej hej.c streck LCS50. 700 00:32:05,650 --> 00:32:08,700 >> Nu börjar slags gå i ena örat och ut genom det andra kanske. 701 00:32:08,700 --> 00:32:10,366 Men bara retas isär vad detta gör. 702 00:32:10,366 --> 00:32:14,910 Klang är kompilatorn, streck LCS50 medvetet i slutet 703 00:32:14,910 --> 00:32:18,330 gör vad i en mening? 704 00:32:18,330 --> 00:32:19,607 Länkar till CS50 biblioteket. 705 00:32:19,607 --> 00:32:21,440 Griper nollor och de som personalen gjort 706 00:32:21,440 --> 00:32:23,310 och crams dem i mitt eget program. 707 00:32:23,310 --> 00:32:27,040 Så den sista frågan till hands är, vad som är streck o hello troligen 708 00:32:27,040 --> 00:32:30,530 göra, även om du har aldrig sett detta syntax innan? 709 00:32:30,530 --> 00:32:34,920 >> Utmatning av ett program som är inte namnstandard a.out. 710 00:32:34,920 --> 00:32:37,330 Snarare det som heter hej. 711 00:32:37,330 --> 00:32:39,460 Så nu finns det ingen a.out. 712 00:32:39,460 --> 00:32:42,660 Ingen sådan fil eller katalog, eftersom jag uttryckligen sagt 713 00:32:42,660 --> 00:32:46,720 kalla detta program hej, så att Jag kan nu skriva in ett namn som detta 714 00:32:46,720 --> 00:32:47,790 och har det beter sig. 715 00:32:47,790 --> 00:32:50,180 >> Nu ärligt talat, är pojken som ointressant att ha 716 00:32:50,180 --> 00:32:52,170 att komma ihåg allt det lite minutia, eller hur? 717 00:32:52,170 --> 00:32:54,180 Så låt oss gå vidare och bli av hello igen. 718 00:32:54,180 --> 00:32:57,880 Och låt oss nu återvända till en värld vilket det räcker att säga att hej. 719 00:32:57,880 --> 00:33:00,410 Men det är den magi som gör gör för dig, 720 00:33:00,410 --> 00:33:02,320 det är tråkjobbet som det gör för dig. 721 00:33:02,320 --> 00:33:04,630 Och som våra program och problemen blir mer komplexa, 722 00:33:04,630 --> 00:33:06,142 gör kommer verkligen vara din vän. 723 00:33:06,142 --> 00:33:07,850 Eftersom inte alltför länge från och med nu ska vi 724 00:33:07,850 --> 00:33:11,150 ha program som är skrivna inte med en fil, men flera filer, 725 00:33:11,150 --> 00:33:16,310 och gör kommer att automatisera processen sammanställa allt detta för oss samman. 726 00:33:16,310 --> 00:33:20,620 >> Så nu ut. 727 00:33:20,620 --> 00:33:24,960 printf är inne i den här filen, standard I / O-dot h, som vi har sett tidigare, 728 00:33:24,960 --> 00:33:26,980 men det finns mer till printf än så. 729 00:33:26,980 --> 00:33:30,482 Det finns backslash n, men det finns också ett gäng andra escape-sekvenser. 730 00:33:30,482 --> 00:33:32,940 Och escape-sekvens är bara en fint sätt att säga något 731 00:33:32,940 --> 00:33:35,990 som börjar med ett omvänt snedstreck, inte ett snedstreck, ett omvänt snedstreck, 732 00:33:35,990 --> 00:33:37,920 och gör lite speciell sak. 733 00:33:37,920 --> 00:33:43,770 Och vi kommer inte att uppehålla mig vid de flesta av dessa, men varför är det omvänt snedstreck dubbla citationstecken, 734 00:33:43,770 --> 00:33:44,830 tror du? 735 00:33:44,830 --> 00:33:48,010 Varför denna konstiga sekvens av tecken, bakstreck dubbla citationstecken, 736 00:33:48,010 --> 00:33:50,505 Varför skulle det vara användbart? 737 00:33:50,505 --> 00:33:51,380 STUDENT: [ohörbart]. 738 00:33:51,380 --> 00:33:56,594 739 00:33:56,594 --> 00:33:57,760 DAVID MALAN: Exakt, hur? 740 00:33:57,760 --> 00:34:01,830 Tänk tillbaka till vår hallå världen program att vi har sett ganska många gånger nu, 741 00:34:01,830 --> 00:34:05,880 varje gång vi har sett att hallå världen program som vi har haft dubbla citationstecken inne 742 00:34:05,880 --> 00:34:08,210 av vilka är hej kommatecken världen snedstreck n. 743 00:34:08,210 --> 00:34:10,070 Men tänk på dig själv, tänk om du faktiskt 744 00:34:10,070 --> 00:34:12,520 ville skriva ut ett citationstecken? 745 00:34:12,520 --> 00:34:16,100 Din första instinkt kanske, jag vet inte vet varför jag kanske vill do-- här, 746 00:34:16,100 --> 00:34:18,780 Vi kan vara lite passiv aggressiva, hello vän. 747 00:34:18,780 --> 00:34:21,350 Vi kanske vill göra något liknande. 748 00:34:21,350 --> 00:34:25,230 >> Men varför är det nu problematiskt? 749 00:34:25,230 --> 00:34:28,730 Att ignorera de typografiska citattecken åt sidan att keynote gjort för oss automatiskt. 750 00:34:28,730 --> 00:34:29,730 Varför är detta problematiskt? 751 00:34:29,730 --> 00:34:36,719 752 00:34:36,719 --> 00:34:37,270 >> Exakt. 753 00:34:37,270 --> 00:34:39,022 Eftersom vi har som 4 citattecken. 754 00:34:39,022 --> 00:34:41,230 Jo den första troligen går med den andra, 755 00:34:41,230 --> 00:34:43,271 och kanske den fjärde en går med den tredje, 756 00:34:43,271 --> 00:34:46,170 eller, jag menar jag är inte ens säker på, inte heller är datorn kommer att bli. 757 00:34:46,170 --> 00:34:48,352 Datorer igen, kompilatorer igen, är ganska dum. 758 00:34:48,352 --> 00:34:50,060 De kommer bara göra det som du berätta för dem att göra. 759 00:34:50,060 --> 00:34:54,270 Och om du inte är entydig de förmodligen kommer att kasta ett fel. 760 00:34:54,270 --> 00:34:57,700 >> Om du inte är entydiga om hur man gör en jordnötssmör och gelé smörgås 761 00:34:57,700 --> 00:34:59,510 konstiga saker kan komma fram. 762 00:34:59,510 --> 00:35:00,580 Det är samma idé. 763 00:35:00,580 --> 00:35:03,100 Nu räcker det att säga att det finns några andra escape-sekvenser, 764 00:35:03,100 --> 00:35:04,820 men vi kommer till dem snart. 765 00:35:04,820 --> 00:35:07,410 I huvudsak dessa escape sekvenser representerar något 766 00:35:07,410 --> 00:35:10,480 att du inte skulle kunna alltför lätt på tangentbordet, 767 00:35:10,480 --> 00:35:12,010 utan att förväxla datorn. 768 00:35:12,010 --> 00:35:15,733 >> Nu under tiden vi har platshållare i printf. 769 00:35:15,733 --> 00:35:19,630 Procent d, som också kan skrivas i nästan samtliga fall som procent i, 770 00:35:19,630 --> 00:35:21,610 är en platshållare för vilken typ av data? 771 00:35:21,610 --> 00:35:23,920 Vilken typ av värde? 772 00:35:23,920 --> 00:35:24,920 Ett decimaltal. 773 00:35:24,920 --> 00:35:27,234 Så egentligen ska vi börja använder procent i eftersom det är 774 00:35:27,234 --> 00:35:28,650 lite enklare, som ett heltal. 775 00:35:28,650 --> 00:35:29,550 Procent i. 776 00:35:29,550 --> 00:35:31,320 Ett heltal som råkar vara decimal. 777 00:35:31,320 --> 00:35:35,690 >> Procent s vi redan sagt var en platshållare för en sträng. 778 00:35:35,690 --> 00:35:38,630 Vilket är bara ett ord, en fras, ett stycke, en uppsats, vad som helst. 779 00:35:38,630 --> 00:35:40,830 Det är en sekvens av tecknen i viss längd. 780 00:35:40,830 --> 00:35:42,820 Och vi får se snart vissa av dessa andra. 781 00:35:42,820 --> 00:35:45,950 Men procent c är för ett enda tecken. 782 00:35:45,950 --> 00:35:48,500 Procent f är en flyttal, 783 00:35:48,500 --> 00:35:50,860 som ett reellt tal som har ett decimaltecken i den, vilket 784 00:35:50,860 --> 00:35:52,550 är naturligtvis inte ett heltal. 785 00:35:52,550 --> 00:35:54,670 Och det finns en hel gäng andra. 786 00:35:54,670 --> 00:35:56,990 >> Under tiden i C, och i många språk, 787 00:35:56,990 --> 00:35:58,650 Vi har olika datatyper. 788 00:35:58,650 --> 00:36:00,650 Olika typer av glas skålar om du kommer. 789 00:36:00,650 --> 00:36:03,830 Skålen jag använde förra gången var för pingisbollar, 790 00:36:03,830 --> 00:36:06,990 men vi kan också spara olika värden som tecken och strängar 791 00:36:06,990 --> 00:36:10,820 och heltal i en behållare, som en variabel, och C har dessa. 792 00:36:10,820 --> 00:36:14,020 Char är den typ av data, vilken typ av variabel, 793 00:36:14,020 --> 00:36:15,700 där du kan lagra ett tecken. 794 00:36:15,700 --> 00:36:19,560 Float är en typ av variabel i där du kan lagra ett reellt tal. 795 00:36:19,560 --> 00:36:21,220 >> Int är naturligtvis för en int. 796 00:36:21,220 --> 00:36:23,760 Och ganska löjligt namngav en lång lång 797 00:36:23,760 --> 00:36:26,830 är där du kan lagra i huvudsak en riktigt lång rad, med ännu 798 00:36:26,830 --> 00:36:29,930 fler siffror sedan en typiska int kanske butik. 799 00:36:29,930 --> 00:36:32,420 Men vi ska återkomma till det inom kort. 800 00:36:32,420 --> 00:36:35,520 >> I CS50 dot h under tiden den andra huvudfil 801 00:36:35,520 --> 00:36:37,630 att vi har sett ett par tider i användning, det finns 802 00:36:37,630 --> 00:36:41,350 två andra datatyper som finns inte i C normalt. 803 00:36:41,350 --> 00:36:45,000 En är sträng, och vi kommer att se i några veckor vilka strängar verkligen 804 00:36:45,000 --> 00:36:46,610 är under huven. 805 00:36:46,610 --> 00:36:47,950 Och en är bool. 806 00:36:47,950 --> 00:36:51,650 Och en bool är en variabel som kan bara anta vissa värden. 807 00:36:51,650 --> 00:36:54,370 Och bara bygger på förra veckans förklaring av Scratch, 808 00:36:54,370 --> 00:36:56,680 och på senare tid C, vad skulle du gissa 809 00:36:56,680 --> 00:37:01,770 är de två möjliga värdena för vissa behållare som är av typen bool? 810 00:37:01,770 --> 00:37:02,860 >> Både ja och nej. 811 00:37:02,860 --> 00:37:03,870 Ett och noll. 812 00:37:03,870 --> 00:37:04,502 Sant eller falskt. 813 00:37:04,502 --> 00:37:07,460 Och faktiskt är det sista som tenderar vara konventionell i en programmerings 814 00:37:07,460 --> 00:37:10,030 språk, säger något som sant eller falskt. 815 00:37:10,030 --> 00:37:13,160 >> Under tiden CS50 biblioteket kommer med ett gäng funktioner 816 00:37:13,160 --> 00:37:16,640 att personalen skrev för dig, Förutom att bara få en sträng. 817 00:37:16,640 --> 00:37:20,910 Vi skrev i förskott funktioner som kan få ett helt tal från användaren, 818 00:37:20,910 --> 00:37:22,990 få en enda karaktär, få en flottör, som 819 00:37:22,990 --> 00:37:25,160 är bara ett nummer med decimalkommat. 820 00:37:25,160 --> 00:37:28,290 Få en lång lång, en riktigt stort värde från användaren. 821 00:37:28,290 --> 00:37:30,930 Så vi har bara sett detta i åtgärder i form av GetString. 822 00:37:30,930 --> 00:37:33,230 Men via dessa funktioner kommer snart att kunna skriva 823 00:37:33,230 --> 00:37:36,070 program som får input från användaren. 824 00:37:36,070 --> 00:37:39,230 >> Samtidigt anser detta program, och överväga 825 00:37:39,230 --> 00:37:42,600 hur vi nu kan börja lägga att det med nya konstrukt. 826 00:37:42,600 --> 00:37:44,530 En snabb virvlande tur och sedan kommer vi att titta 827 00:37:44,530 --> 00:37:47,340 någon skriver något program manuellt själva. 828 00:37:47,340 --> 00:37:49,700 Hädan om vi vill genomföra ett villkor, 829 00:37:49,700 --> 00:37:52,790 det kommer inte att se ut som en fin liten nätt pusselbit. 830 00:37:52,790 --> 00:37:54,460 Det kommer att se lite mer svårbegripliga. 831 00:37:54,460 --> 00:37:57,620 Men detta är den kanoniska strukturen av ett tillstånd i C. 832 00:37:57,620 --> 00:38:00,380 >> Ordet om, två parenteser, inuti vilken 833 00:38:00,380 --> 00:38:02,590 kommer att bli någon form av Booleskt uttryck. 834 00:38:02,590 --> 00:38:04,999 Nu snedstreck snedstreck i mitten, det är 835 00:38:04,999 --> 00:38:07,290 för tillfället ungefär som pseudokod platshållare kod. 836 00:38:07,290 --> 00:38:11,576 Men mer korrekt, varje kodrad i C som börjar med snedstreck snedstreck 837 00:38:11,576 --> 00:38:12,850 är en kommentar. 838 00:38:12,850 --> 00:38:15,920 >> Det är som en klisterlapp som du kanske sätta på en uppsats, som skrivs ut på papper. 839 00:38:15,920 --> 00:38:17,290 Det är en notering till dig själv. 840 00:38:17,290 --> 00:38:20,100 Den har ingen funktionell inverkan på programmet. 841 00:38:20,100 --> 00:38:23,580 Det blir liksom en påminnelse, det är ditt eget dokumentation om vad som händer. 842 00:38:23,580 --> 00:38:25,720 Så gör du för tillfället är typ av platshållare 843 00:38:25,720 --> 00:38:27,560 oavsett finns inuti av dessa klammerparenteser 844 00:38:27,560 --> 00:38:29,810 så småningom kommer att göra något. 845 00:38:29,810 --> 00:38:35,160 >> Under tiden du har två gafflar i väg, en om annat konstruera så här. 846 00:38:35,160 --> 00:38:37,024 Du kan om, elseif, annars. 847 00:38:37,024 --> 00:38:39,690 Nu är det värt att notera, speciellt om du har googla runt 848 00:38:39,690 --> 00:38:42,480 online resurser av nyfikenhet, eller om du plockar upp 849 00:38:42,480 --> 00:38:44,575 en av kursens rekommenderade böcker om C, 850 00:38:44,575 --> 00:38:48,430 kommer du att se att människor har massor olika inställningar för hur 851 00:38:48,430 --> 00:38:50,510 att uttrycka sig i kod. 852 00:38:50,510 --> 00:38:53,800 Vissa tycker om att sätta klamrar som jag har gjort här. 853 00:38:53,800 --> 00:38:57,760 Vissa tycker om att sätta lockigt hängslen till exempel här uppe. 854 00:38:57,760 --> 00:39:01,700 >> Vissa tycker om att sätta annans upp här och sedan det här. 855 00:39:01,700 --> 00:39:05,120 Det finns ett antal sätt att skrivkoden, och ingen av dem 856 00:39:05,120 --> 00:39:06,566 är rätt per se. 857 00:39:06,566 --> 00:39:08,440 Även om det finns några som är ganska fel. 858 00:39:08,440 --> 00:39:11,315 Men det finns no-- om detta är i slutändan en mycket religiös debatt. 859 00:39:11,315 --> 00:39:13,940 I själva verket är en av de mest irriterande saker om datavetenskap 860 00:39:13,940 --> 00:39:16,310 är hur påstridig datavetare kan vara. 861 00:39:16,310 --> 00:39:19,880 Och hittar du över tiden som även du utveckla personliga preferenser 862 00:39:19,880 --> 00:39:22,130 hur din kod ska se ut. 863 00:39:22,130 --> 00:39:27,162 >> Inte bara beter sig, inte bara skapa utdata, men hur det ska se estetiskt. 864 00:39:27,162 --> 00:39:30,120 Så vad vi ska göra är att guida dig längs vägen mot, för nu åtminstone, 865 00:39:30,120 --> 00:39:34,825 en standard CS50 stil som åtminstone håller saker enhetligt och lättläst. 866 00:39:34,825 --> 00:39:37,330 Men mer om dem distinktioner kort. 867 00:39:37,330 --> 00:39:41,830 >> Ett booleskt uttryck i C, om du ville säga om detta villkor är sant 868 00:39:41,830 --> 00:39:44,650 och detta andra villkor är sant, du behöver inte skriva ordet 869 00:39:44,650 --> 00:39:46,610 och, som du skulle i engelska. 870 00:39:46,610 --> 00:39:50,580 Du använder i stället och-tecken et-tecken, av skäl som vi ska återkomma till. 871 00:39:50,580 --> 00:39:54,520 Om du vill säga eller om du använder två vertikala barer, som på ett amerikanskt tangentbord 872 00:39:54,520 --> 00:39:57,650 är i allmänhet över på Enter nyckel bredvid backslash. 873 00:39:57,650 --> 00:40:03,080 Och det betyder bara om detta villkor eller det andra villkoret är sant gör detta. 874 00:40:03,080 --> 00:40:05,210 >> Samtidigt finns det här galen sak, som 875 00:40:05,210 --> 00:40:07,760 du har tillfälle att använda gång på ett tag. 876 00:40:07,760 --> 00:40:10,390 Men det är bara ett alternativ sätt att uttrycka sig. 877 00:40:10,390 --> 00:40:12,400 Detta, för nu, låt oss stipulerar, det är bara 878 00:40:12,400 --> 00:40:16,880 annat funky sätt att uttrycka om, elseif, elseif, elseif, elseif. 879 00:40:16,880 --> 00:40:19,720 Det är bara formateras i termer av fallen, där du bokstavligen 880 00:40:19,720 --> 00:40:23,420 räkna upp de värden som kanske du vill kontrollera. 881 00:40:23,420 --> 00:40:24,410 >> Under tiden loopar. 882 00:40:24,410 --> 00:40:26,842 Vi såg en jämförelse av Skrapa med en slinga. 883 00:40:26,842 --> 00:40:29,550 Och jag ska vinka min hand på vilken var och en av dessa saker betyder. 884 00:40:29,550 --> 00:40:33,520 Men märker att en slinga kommer mycket ofta börjar med sökordet för. 885 00:40:33,520 --> 00:40:36,350 Eller kommer det att börja med sökordet tag. 886 00:40:36,350 --> 00:40:41,360 Eller kommer det att börja med sökordet göra, och avslutas med sökordet tag. 887 00:40:41,360 --> 00:40:43,920 >> Men vad vi håller på att se är saker mer som denna. 888 00:40:43,920 --> 00:40:47,950 Här är i allmänhet i C, hur du kanske deklarera en variabel och ge den ett värde. 889 00:40:47,950 --> 00:40:50,610 I C det inte räcker, som i Scratch, du bara 890 00:40:50,610 --> 00:40:52,810 säger ge mig en variabel som heter något. 891 00:40:52,810 --> 00:40:55,960 Du måste tala om för C, och berätta din kompilator, mer specifikt, 892 00:40:55,960 --> 00:40:58,680 vilken typ av värde gör du vill sätta i glasskålen. 893 00:40:58,680 --> 00:40:59,610 >> Är det ett heltal? 894 00:40:59,610 --> 00:41:02,210 I så fall måste du bokstavligen säger int och sedan 895 00:41:02,210 --> 00:41:04,220 namnet på variabeln, sedan ett semikolon. 896 00:41:04,220 --> 00:41:08,050 Om du i stället ville sträng och kallade det s som jag gjorde min kod här i dag, 897 00:41:08,050 --> 00:41:10,920 du skulle säga strängen s semikolon. 898 00:41:10,920 --> 00:41:14,200 När du vill ge det ett värde Du kan sedan använda likhetstecknet, 899 00:41:14,200 --> 00:41:16,211 annars känd som den tilldelningsoperator. 900 00:41:16,211 --> 00:41:17,960 Och märker hur varje av dessa kodrader 901 00:41:17,960 --> 00:41:20,650 har semikolonet i slutet av den. 902 00:41:20,650 --> 00:41:22,550 >> Men ärligt talat detta bara ser lite fult. 903 00:41:22,550 --> 00:41:26,580 Varför kan jag inte säga till datorn, ge mig en variabel och initiera den till noll. 904 00:41:26,580 --> 00:41:28,380 Det vill säga, ge mig en tom glasskål. 905 00:41:28,380 --> 00:41:28,980 Även om du kan. 906 00:41:28,980 --> 00:41:32,250 Och så en av dom ringer du kommer måste göra stilist över tiden 907 00:41:32,250 --> 00:41:36,290 är, du skriver din kod så här, eller tror du slags rensa den och imponera 908 00:41:36,290 --> 00:41:39,040 människor genom att skriva två rader som bara en. 909 00:41:39,040 --> 00:41:41,830 Och detta skulle anses vara generellt ett mer elegant sätt 910 00:41:41,830 --> 00:41:43,870 att skriva din kod stilistiskt. 911 00:41:43,870 --> 00:41:45,200 >> Funktioner är vi naturligtvis sett. 912 00:41:45,200 --> 00:41:46,340 De kommer att ta det här formatet. 913 00:41:46,340 --> 00:41:48,881 Namnet på en funktion, en del parenteser, och då kanske en del 914 00:41:48,881 --> 00:41:49,910 saker inuti. 915 00:41:49,910 --> 00:41:52,540 Eller du kanske ser användningsområden för flera funktioner sidan 916 00:41:52,540 --> 00:41:55,980 vid sida, som något så här. 917 00:41:55,980 --> 00:41:59,390 Nu som en tangent, gör detta skämt nu vettigt? 918 00:41:59,390 --> 00:42:03,566 919 00:42:03,566 --> 00:42:04,960 >> [LAUGHTER] 920 00:42:04,960 --> 00:42:09,360 Det betyder inte att det är roligt, men det gör kanske göra lite mer mening. 921 00:42:09,360 --> 00:42:12,140 Så nu ska vi gå in i CS50 apparaten för ett ögonblick. 922 00:42:12,140 --> 00:42:14,640 Och låt mig öppna upp en teaser här. 923 00:42:14,640 --> 00:42:17,470 >> Och faktiskt en av anledningarna för införande av IKEA katalogen 924 00:42:17,470 --> 00:42:20,080 och blinkande bilden av iPhone lite sedan 925 00:42:20,080 --> 00:42:24,700 var att faktiskt binda ihop den faktum att bara några år sedan, år 2007, 926 00:42:24,700 --> 00:42:26,540 denna bit kod var Tillstånd, som var 927 00:42:26,540 --> 00:42:29,820 en av de allra första genomförandet av en programvara 928 00:42:29,820 --> 00:42:31,494 som gör vad som kallas jailbreaking. 929 00:42:31,494 --> 00:42:34,410 För de som känner, jailbreaking något som en telefon eller en iPhone 930 00:42:34,410 --> 00:42:37,680 innebär i huvudsak räkna ut hur man gör saker 931 00:42:37,680 --> 00:42:39,864 med det att företaget som gjorde det inte hade för avsikt. 932 00:42:39,864 --> 00:42:42,780 Som du vill installera vissa program som inte är i App Store, 933 00:42:42,780 --> 00:42:45,405 jailbreaking telefonen som du gör saker som detta och mer. 934 00:42:45,405 --> 00:42:47,447 Men vad som var kul i 2007-- och det har varit 935 00:42:47,447 --> 00:42:49,780 dussintals olika versioner av dessa saker sedan dess, 936 00:42:49,780 --> 00:42:53,540 i alla typer av languages-- är att detta program här, heter iUnlock, 937 00:42:53,540 --> 00:42:57,036 var faktiskt skrivet i C. Så jag drog upp källkoden för det här, 938 00:42:57,036 --> 00:42:59,910 bara för att typ av visa någon dig om likheterna med konstruktionerna 939 00:42:59,910 --> 00:43:01,450 Vi har diskuterat hittills. 940 00:43:01,450 --> 00:43:05,150 Nu finns det mycket mer komplicerat här än vad vi har sett redan i klassen. 941 00:43:05,150 --> 00:43:07,160 Låt mig rulla upp bara lite här. 942 00:43:07,160 --> 00:43:11,520 >> Men märker these-- väl märker vi några saker-- men märker dessa rader här, 943 00:43:11,520 --> 00:43:14,090 inklusive standard I / O punkt h. 944 00:43:14,090 --> 00:43:17,660 Och all-- linje 24, please-- märker standard I / O 945 00:43:17,660 --> 00:43:21,380 dot h och en hel massa andra Filer som tydligen andra människor 946 00:43:21,380 --> 00:43:22,160 har skrivit. 947 00:43:22,160 --> 00:43:24,850 Och om vi rulla ner genom detta, lite godtyckligt, 948 00:43:24,850 --> 00:43:27,910 märker jag inte vet hur man skriver allt detta själv nödvändigtvis ännu, 949 00:43:27,910 --> 00:43:28,880 men det är om. 950 00:43:28,880 --> 00:43:30,400 Så tydligen detta har en filial. 951 00:43:30,400 --> 00:43:33,210 >> Och om jag bläddra ner lite vidare finns det en annan om. 952 00:43:33,210 --> 00:43:38,210 Om jag rulla upp, tror jag runt linje 100 jag såg efter. 953 00:43:38,210 --> 00:43:40,020 Så jag är inte helt säker hur detta fungerar ännu, 954 00:43:40,020 --> 00:43:43,180 men detta är en for-loop som kommer att Låt mig upprepa några antal gånger. 955 00:43:43,180 --> 00:43:45,230 Och om jag bläddra alla vägen till botten 956 00:43:45,230 --> 00:43:51,020 Jag ser att det finns en fungera här nere kallas 957 00:43:51,020 --> 00:43:54,570 viktigaste, och några ytterligare krediter för din läsning nöje. 958 00:43:54,570 --> 00:43:57,830 >> Så detta är bara för att säga-- och vi ska sätta detta online bland kursens källan 959 00:43:57,830 --> 00:44:01,480 kod today-- att även vissa av dessa enheter som vi tar för givet, 960 00:44:01,480 --> 00:44:05,130 i slutet av dagen du är fortfarande med hjälp av dessa grundläggande konstruktioner som Prisjakt 961 00:44:05,130 --> 00:44:07,430 infört redan hittills. 962 00:44:07,430 --> 00:44:08,620 Det räcker för att en. 963 00:44:08,620 --> 00:44:11,480 Okej, så nu ska vi faktiskt bygga något. 964 00:44:11,480 --> 00:44:15,640 >> Låt oss gå längre än något som hej.c, och öppna upp det här, 965 00:44:15,640 --> 00:44:17,170 låt oss skriva detta program här. 966 00:44:17,170 --> 00:44:19,850 Jag kommer att gå vidare och skriva ett program som heter adder.c, 967 00:44:19,850 --> 00:44:23,310 vars syfte i livet kommer att bli som min första super enkel kalkylator 968 00:44:23,310 --> 00:44:24,840 som lägger bara ett par siffror. 969 00:44:24,840 --> 00:44:27,050 Inte för att det är svårt problem, men eftersom det 970 00:44:27,050 --> 00:44:29,390 tillåter mig att nu knyta ihop ett par saker. 971 00:44:29,390 --> 00:44:33,100 Så jag ska gå vidare och inkludera standard I / O punkt h och CS50 dot h. 972 00:44:33,100 --> 00:44:34,670 Jag kommer att säga int main ogiltiga. 973 00:44:34,670 --> 00:44:36,545 Och igen i framtiden Vi ska återkomma till det 974 00:44:36,545 --> 00:44:38,560 in i detta sammanhang och void sätt. 975 00:44:38,560 --> 00:44:43,340 >> Och nu ska jag säga något som printf, ge mig ett heltal. 976 00:44:43,340 --> 00:44:47,610 Och nu på min andra raden, hur gör jag uttrycka mig sådan 977 00:44:47,610 --> 00:44:50,980 att jag vill deklarera en variabel det kommer att lagra en int? 978 00:44:50,980 --> 00:44:55,470 Bokstavligen vad ska jag skriva om jag vill skapa en variabel som lagrar en int 979 00:44:55,470 --> 00:44:58,270 skulle du säga? 980 00:44:58,270 --> 00:44:59,650 int en lika getInt. 981 00:44:59,650 --> 00:45:00,485 Visst, så det fungerar. 982 00:45:00,485 --> 00:45:02,360 Och bara för konsekvens med koden du kommer 983 00:45:02,360 --> 00:45:04,485 se på nätet, låt mig förändring detta till x, bara för att x 984 00:45:04,485 --> 00:45:06,830 är en vanlig variabelnamn att använda, åtminstone i algebra. 985 00:45:06,830 --> 00:45:08,720 Låt mig gå vidare och inte printf igen. 986 00:45:08,720 --> 00:45:10,692 Ge mig ett annat heltal. 987 00:45:10,692 --> 00:45:12,900 Och nu ska jag typ av lära av detta mönster, 988 00:45:12,900 --> 00:45:14,490 Jag kommer att säga int y får getInt. 989 00:45:14,490 --> 00:45:16,340 >> Och vi har inte använt GetInt förut, men bara 990 00:45:16,340 --> 00:45:19,860 som GetString går och får en sträng, som Javier gjorde från publiken, 991 00:45:19,860 --> 00:45:22,780 på liknande sätt gör getInt börjar blinka snabbt. 992 00:45:22,780 --> 00:45:26,750 Och effektivt väntar på att användaren för att ge det ett heltal, genom att skriva den i 993 00:45:26,750 --> 00:45:27,900 och slå Enter. 994 00:45:27,900 --> 00:45:30,850 Nu sist jag ska göra detta, printf summan of-- 995 00:45:30,850 --> 00:45:36,080 och låt mig få lust nu-- procent i och procent i är närvarande 996 00:45:36,080 --> 00:45:39,270 Jag utropsbackslash n. 997 00:45:39,270 --> 00:45:42,750 Och vad tror du att jag ska sätter in nu som de extra ingångarna 998 00:45:42,750 --> 00:45:44,620 till printf? 999 00:45:44,620 --> 00:45:47,380 >> Jag vill inte säga bokstav citera unquote x. 1000 00:45:47,380 --> 00:45:52,210 Jag vill klass i x och sedan, och nu ska vi få lust 1001 00:45:52,210 --> 00:45:54,420 och låt oss bara anta vi kan göra vad vi vill. 1002 00:45:54,420 --> 00:45:56,330 Vad du vill säga nästa? 1003 00:45:56,330 --> 00:45:57,070 x plus y. 1004 00:45:57,070 --> 00:45:58,520 Och faktiskt det kommer att fungera. 1005 00:45:58,520 --> 00:46:01,760 Det är minimalt programmeringsspråk förstår grundläggande aritmetik, 1006 00:46:01,760 --> 00:46:03,500 och så detta borde faktiskt arbete. 1007 00:46:03,500 --> 00:46:06,730 >> Så låt mig gå vidare och gör huggorm i min svarta och vita fönster 1008 00:46:06,730 --> 00:46:08,090 här nere, Enter. 1009 00:46:08,090 --> 00:46:10,830 Cryptic rad men inget fel budskap, så det är bra. 1010 00:46:10,830 --> 00:46:14,410 Dot slash huggorm, ge mig ett heltal, 1. 1011 00:46:14,410 --> 00:46:16,230 Ge mig ett annat heltal, 2. 1012 00:46:16,230 --> 00:46:18,770 Summan av 1 och 2 är 3. 1013 00:46:18,770 --> 00:46:21,730 >> Okej, så en ganska trivial programmet, men vad är det gjort? 1014 00:46:21,730 --> 00:46:25,680 Det får mig att använda en funktion ringa hit, ringa en annan funktion här, 1015 00:46:25,680 --> 00:46:29,260 två samtal till getInt, en tredje samtal till printf, 1016 00:46:29,260 --> 00:46:30,720 och sedan använda dessa platshållare. 1017 00:46:30,720 --> 00:46:33,160 Så det är lite mer sofistikerad än förra gången. 1018 00:46:33,160 --> 00:46:35,260 Men om jag vill få lite snyggare? 1019 00:46:35,260 --> 00:46:38,900 >> Låt mig gå vidare och nu gör det. 1020 00:46:38,900 --> 00:46:42,890 Låt mig gå vidare och skapa en ny fil som heter villkor noll. 1021 00:46:42,890 --> 00:46:44,890 Och jag kommer att spara lite tid för klasserna skull 1022 00:46:44,890 --> 00:46:48,260 och bara klistra in det kod som utgångspunkt. 1023 00:46:48,260 --> 00:46:51,510 Och nu ska jag bara ska sätta något nytt här i mitten. 1024 00:46:51,510 --> 00:46:55,889 Så printf jag skulle vilja ett heltal tack. 1025 00:46:55,889 --> 00:46:58,180 Och allt detta koden finns tillgänglig på kursens hemsida, 1026 00:46:58,180 --> 00:47:00,556 du behöver inte skriva ut allt i klassen, om du inte vill. 1027 00:47:00,556 --> 00:47:02,638 int, och nu ska jag använda, i stället för x och y, 1028 00:47:02,638 --> 00:47:05,270 Jag kommer att använda n, som är troligen den vanligaste namn 1029 00:47:05,270 --> 00:47:09,220 för ett heltal inom ett datorprogram. 1030 00:47:09,220 --> 00:47:12,060 Och nu vill jag göra en lite dom här. 1031 00:47:12,060 --> 00:47:15,460 Jag ska se om n är större än 0, då 1032 00:47:15,460 --> 00:47:23,670 Jag kommer att säga printf-- hoppsan, printf-- du plockat ett positivt tal, 1033 00:47:23,670 --> 00:47:25,370 utropstecken backslash n. 1034 00:47:25,370 --> 00:47:26,460 Stäng det. 1035 00:47:26,460 --> 00:47:33,150 Else jag ska skriva ut printf du valde ett negativt tal. 1036 00:47:33,150 --> 00:47:35,377 >> Nu innan du skrika på mig, låt oss köra programmet. 1037 00:47:35,377 --> 00:47:36,210 Låt mig gå hit. 1038 00:47:36,210 --> 00:47:40,730 Och hur gör jag kompilerar ett program kallas betingelser streck 0? 1039 00:47:40,730 --> 00:47:42,300 Gör betingelser streck 0. 1040 00:47:42,300 --> 00:47:45,560 Typ av en dum namn, men-- dammit. 1041 00:47:45,560 --> 00:47:47,560 OK, bra undervisningstillfälle. 1042 00:47:47,560 --> 00:47:48,410 Varför gick det sönder? 1043 00:47:48,410 --> 00:47:51,360 1044 00:47:51,360 --> 00:47:54,710 >> Vad gjorde jag av misstag kallar den här filen? 1045 00:47:54,710 --> 00:47:56,876 Du kan sorts sluta från fliken här uppe. 1046 00:47:56,876 --> 00:47:58,750 Så det är inte dåligt att jag gjorde detta, eftersom detta 1047 00:47:58,750 --> 00:48:00,208 händer kanske några av er. 1048 00:48:00,208 --> 00:48:03,880 Så jag av misstag namngav min källkod tillstånd 0. 1049 00:48:03,880 --> 00:48:09,950 Men min källkod av konvention bör vara i en fil som heter tillstånd 0 dash c, 1050 00:48:09,950 --> 00:48:11,720 eller vad dot c. 1051 00:48:11,720 --> 00:48:12,610 >> Så låt mig fixa det här. 1052 00:48:12,610 --> 00:48:16,880 Precis som Microsoft Word kan jag gå upp på Spara som och gör villkoret 0 dot c. 1053 00:48:16,880 --> 00:48:20,100 Nu är det bara för att vara snygg är jag kommer att gå vidare och ta bort 1054 00:48:20,100 --> 00:48:23,020 tillstånd 0, vilket var min gamla versionen. 1055 00:48:23,020 --> 00:48:26,550 Och nu ska vi gör tillstånd 0, Enter. 1056 00:48:26,550 --> 00:48:27,870 OK, verkar bra. 1057 00:48:27,870 --> 00:48:29,510 >> Skick 0, Enter. 1058 00:48:29,510 --> 00:48:33,530 Jag skulle vilja ett heltal snälla, 50, du valde ett positivt tal. 1059 00:48:33,530 --> 00:48:35,390 Nu sägs om negativ 50? 1060 00:48:35,390 --> 00:48:37,660 Du valde ett negativt tal. 1061 00:48:37,660 --> 00:48:39,605 Vad sägs om nu, 0. 1062 00:48:39,605 --> 00:48:42,250 1063 00:48:42,250 --> 00:48:45,350 Ganska säker på 0 är inte negativt. 1064 00:48:45,350 --> 00:48:47,780 >> Så det här är lite av en logisk bugg. 1065 00:48:47,780 --> 00:48:50,680 Hur åtgärdar jag detta? 1066 00:48:50,680 --> 00:48:57,260 Annars om n är mindre än 0, gör detta, annars vi kan ha en trevägs filial här, 1067 00:48:57,260 --> 00:49:01,740 printf du plockat 0. 1068 00:49:01,740 --> 00:49:06,150 Så nu om jag kör det här programmet, efter att sammanställa den 1069 00:49:06,150 --> 00:49:10,790 igen med make, och nu kör tillstånd 0, vad jag ser här 1070 00:49:10,790 --> 00:49:14,570 är 0 ger mig denna utgång. 1071 00:49:14,570 --> 00:49:16,280 Så vart är vi på väg med detta? 1072 00:49:16,280 --> 00:49:18,930 >> Jo det är väldigt lätt att glömma bort av skogen för alla träd. 1073 00:49:18,930 --> 00:49:23,590 Och så kan vi dra slutsatsen med denna 2 och 1/2 minuters video 1074 00:49:23,590 --> 00:49:25,710 som i slutändan är lite av en annons från Google, 1075 00:49:25,710 --> 00:49:28,850 men det är verkligen ett bevis på vad ens med hjälp av dessa grundläggande bygg 1076 00:49:28,850 --> 00:49:33,020 block som vi i slutändan kan göra en gång Vi har lite programmering 1077 00:49:33,020 --> 00:49:34,463 savvy enligt våra bälten. 1078 00:49:34,463 --> 00:49:35,150 >> [MUSIK SPELA] 1079 00:49:35,150 --> 00:49:38,370 1080 00:49:38,370 --> 00:49:40,540 >> SAROO Brierley (Berättarröst): Det var 26 år sedan, 1081 00:49:40,540 --> 00:49:42,470 och jag var precis på väg att vända 5. 1082 00:49:42,470 --> 00:49:45,465 Vi fick till tågstationen och Vi bordade tåget tillsammans. 1083 00:49:45,465 --> 00:49:48,010 Min bror sa bara jag ska stanna här, och jag ska komma tillbaka. 1084 00:49:48,010 --> 00:49:51,140 Och jag tänkte, ja du vet, Jag kan lika gärna gå i vila 1085 00:49:51,140 --> 00:49:52,690 och han ska bara väcka mig. 1086 00:49:52,690 --> 00:49:55,145 Och när jag vaknade nästa dag, hela vagnen 1087 00:49:55,145 --> 00:49:59,125 var tomt på ett skenande tåg, ett spöke Tåget tar mig jag vet inte var. 1088 00:49:59,125 --> 00:50:01,980 1089 00:50:01,980 --> 00:50:06,280 >> Jag antogs ut till Australien, till en australisk familj. 1090 00:50:06,280 --> 00:50:09,710 Och mamma hade dekorerat min rum med kartan över Indien, 1091 00:50:09,710 --> 00:50:11,950 som hon lagt bredvid min säng. 1092 00:50:11,950 --> 00:50:15,830 Jag vaknade upp varje morgon ser att kartan, och därmed 1093 00:50:15,830 --> 00:50:18,530 det slags höll minnena vid liv. 1094 00:50:18,530 --> 00:50:20,530 Folk skulle säga, du är försöker hitta en nål 1095 00:50:20,530 --> 00:50:23,560 i en höstack, Saroo du kommer aldrig hitta den. 1096 00:50:23,560 --> 00:50:28,540 >> Jag skulle ha blixtrade av de platser som jag brukade gå, de blixtar av min familj 1097 00:50:28,540 --> 00:50:29,890 ansikten. 1098 00:50:29,890 --> 00:50:34,060 Det var bilden av min mor, sitta ner med benen i kors, 1099 00:50:34,060 --> 00:50:35,740 bara titta henne gråta. 1100 00:50:35,740 --> 00:50:38,160 Livet är bara så svårt. 1101 00:50:38,160 --> 00:50:41,237 Det var min skatt. 1102 00:50:41,237 --> 00:50:44,320 Och jag såg på Google Map och insåg att det finns Google Earth också. 1103 00:50:44,320 --> 00:50:48,140 I en värld där du kan zooma in, Jag började att ha alla dessa tankar 1104 00:50:48,140 --> 00:50:51,500 och vilka möjligheter att detta kan göra för mig. 1105 00:50:51,500 --> 00:50:54,890 Jag sade till mig själv, du vet, du har fick alla dessa fotografiska minnen 1106 00:50:54,890 --> 00:50:58,590 och landmärken var du är från, och du vet vad staden ser ut. 1107 00:50:58,590 --> 00:51:03,060 Detta kan vara ett program som du kan använda för att hitta tillbaka. 1108 00:51:03,060 --> 00:51:06,720 >> Jag tänkte, ja jag ska sätta en prick på Calcutta tågstationen, 1109 00:51:06,720 --> 00:51:10,890 och en radie linje, du vet, att du ska söka runt området. 1110 00:51:10,890 --> 00:51:13,750 Jag sorts kom över Dessa tåg spår. 1111 00:51:13,750 --> 00:51:18,160 Och jag började följa den, och Jag kom till en järnvägsstation, som 1112 00:51:18,160 --> 00:51:22,228 återspeglas samma bild som var i mina minnen. 1113 00:51:22,228 --> 00:51:23,707 Allt matchas. 1114 00:51:23,707 --> 00:51:27,950 Jag tänkte bara yep, jag vet vart jag ska. 1115 00:51:27,950 --> 00:51:30,116 Jag ska bara låta karta som jag har i mitt huvud 1116 00:51:30,116 --> 00:51:33,080 leda mig och ta mig tillbaka till min hemstad. 1117 00:51:33,080 --> 00:51:36,420 >> Jag kom till tröskeln till det hus som jag föddes. 1118 00:51:36,420 --> 00:51:39,140 Och gick runt ca 15 meter runt hörnet, 1119 00:51:39,140 --> 00:51:42,980 Det var tre damer som står utanför, intill varandra. 1120 00:51:42,980 --> 00:51:47,830 Och den mellersta klev fram, och Jag tänkte bara, det här är din mamma. 1121 00:51:47,830 --> 00:51:53,450 Hon kom fram, hon kramade mig, och Vi var där i ungefär fem minuter. 1122 00:51:53,450 --> 00:51:56,530 1123 00:51:56,530 --> 00:51:59,000 >> Hon tog tag i min hand och Hon tog mig till huset 1124 00:51:59,000 --> 00:52:02,450 och fick på telefonen, där hon ringde min syster och min bror 1125 00:52:02,450 --> 00:52:05,600 att säga att, du vet, din bror har precis 1126 00:52:05,600 --> 00:52:09,340 helt plötsligt dök upp som ett spöke. 1127 00:52:09,340 --> 00:52:12,440 Och sedan familjen återförenades igen. 1128 00:52:12,440 --> 00:52:15,110 Allt är allt bra, Jag hjälpte min mor ut, 1129 00:52:15,110 --> 00:52:17,110 hon inte måste släpa bort. 1130 00:52:17,110 --> 00:52:19,555 Hon kan leva resten av sitt liv i fred. 1131 00:52:19,555 --> 00:52:23,460 >> Det var en nål i en höstack, men nålen var där. 1132 00:52:23,460 --> 00:52:24,400 Allting finns där. 1133 00:52:24,400 --> 00:52:28,260 Allt vi har i världen är på kranen på en knapp. 1134 00:52:28,260 --> 00:52:32,010 Men du måste ha viljan och viljan att vilja det. 1135 00:52:32,010 --> 00:52:32,950 >> [MUSIK SPELA] 1136 00:52:32,950 --> 00:52:36,420 1137 00:52:36,420 --> 00:52:38,170 DAVID MALAN: Underbart söt omdöme 1138 00:52:38,170 --> 00:52:40,540 till precis vad du kan nu gör med tekniken. 1139 00:52:40,540 --> 00:52:43,390 Vi ses nästa vecka. 1140 00:52:43,390 --> 00:52:44,374