1 00:00:00,000 --> 00:00:11,375 2 00:00:11,375 --> 00:00:14,430 >> DAVID MALAN: Detta är CS50, och detta är början på veckan en. 3 00:00:14,430 --> 00:00:17,930 Och vad vi trodde vi skulle göra är att dra sig tillbaka ridån av en enhet som många 4 00:00:17,930 --> 00:00:20,970 av er har säkert gått förbi nu för år, men kanske aldrig riktigt 5 00:00:20,970 --> 00:00:22,280 känt vad det är. 6 00:00:22,280 --> 00:00:26,000 Så här enheten kommer förmodligen se bekant för de flesta av er vid det här laget. 7 00:00:26,000 --> 00:00:32,972 >> [VIDEO SPELA] 8 00:00:32,972 --> 00:00:36,150 >> -En triumf för matematiska och mekanisk färdighet är denna stora nya 9 00:00:36,150 --> 00:00:39,120 automatisk miniräknare Harvard University. 10 00:00:39,120 --> 00:00:43,220 Intrikata problem i matematik sätter genom maskinen i kodad form på 11 00:00:43,220 --> 00:00:47,840 tejpen är korrekt lösta i en minut bråkdel av den tid som krävs för 12 00:00:47,840 --> 00:00:49,090 mänsklig beräkning. 13 00:00:49,090 --> 00:01:00,090 14 00:01:00,090 --> 00:01:04,080 >> Designad för att påskynda alla former av matematisk och vetenskaplig forskning, 15 00:01:04,080 --> 00:01:07,860 jätten mekanisk hjärnan kommer arbetar för USA 16 00:01:07,860 --> 00:01:09,180 Navy tills krigsslutet. 17 00:01:09,180 --> 00:01:18,180 18 00:01:18,180 --> 00:01:18,600 >> [END VIDEOAVSPELNING] 19 00:01:18,600 --> 00:01:21,980 >> DAVID MALAN: Så det är vad du ser i Science Center, som är där 20 00:01:21,980 --> 00:01:23,540 att maskinen är nu inrymt. 21 00:01:23,540 --> 00:01:25,910 Du egentligen bara se en del av det. 22 00:01:25,910 --> 00:01:28,800 Endast en del är för närvarande på skärm, och det är en enhet som kallas 23 00:01:28,800 --> 00:01:31,970 Mark I, och det var i huvudsak en riktigt stor miniräknare. 24 00:01:31,970 --> 00:01:36,250 Det följdes av Mark II, och det är från Mark II som vi faktiskt 25 00:01:36,250 --> 00:01:39,210 få en bit av lexikon. 26 00:01:39,210 --> 00:01:43,780 >> Detta är den första inspelade instans av något du är på väg att bli allt 27 00:01:43,780 --> 00:01:45,860 alltför bekant med över terminen - 28 00:01:45,860 --> 00:01:48,460 nämligen en bugg. 29 00:01:48,460 --> 00:01:52,030 Så visade det sig vid en punkt i Mark II-enhet inte fungerar 30 00:01:52,030 --> 00:01:55,930 korrekt, och vid närmare inspektion, det faktiskt fanns en bugg - en mal - 31 00:01:55,930 --> 00:01:56,910 att mal - 32 00:01:56,910 --> 00:01:57,610 insidan. 33 00:01:57,610 --> 00:02:03,130 Och sedan dess har vi hänvisade till misstag i program som buggar. 34 00:02:03,130 --> 00:02:05,330 Så mer om detta framöver. 35 00:02:05,330 --> 00:02:08,919 >> På tal om video också, om du har inte redan, vet att CS50 är 36 00:02:08,919 --> 00:02:09,669 uppenbarligen filmade. 37 00:02:09,669 --> 00:02:13,330 Föreläsningarna brukar gå upp direkt efter klass i form av en pre-release 38 00:02:13,330 --> 00:02:17,240 oredigerade format, och sedan en dag eller två senare, satte vi upp en högre upplösning 39 00:02:17,240 --> 00:02:18,490 och högre kvalitet version. 40 00:02:18,490 --> 00:02:21,800 Ni kanske minns Vanessa, som hade förmögenhet för att leka med Google Glass, 41 00:02:21,800 --> 00:02:23,540 som jag tänkte att ut denna gång. 42 00:02:23,540 --> 00:02:26,450 Så om du vill komma upp efter klass och spela, de ska jobba idag. 43 00:02:26,450 --> 00:02:30,816 Och om du vill se vad Vanessa såg häromdagen, vad du ser 44 00:02:30,816 --> 00:02:35,260 här - låt mig höja volymen här på min laptop. 45 00:02:35,260 --> 00:02:35,690 >> [VIDEO SPELA] 46 00:02:35,690 --> 00:02:37,620 >> -Så låt mig köa detta är upp. 47 00:02:37,620 --> 00:02:38,070 Okej. 48 00:02:38,070 --> 00:02:40,930 Så beröra detta. 49 00:02:40,930 --> 00:02:41,720 Okej. 50 00:02:41,720 --> 00:02:43,470 OK, glas. 51 00:02:43,470 --> 00:02:44,720 Spela in en video. 52 00:02:44,720 --> 00:02:47,240 53 00:02:47,240 --> 00:02:48,640 >> Okej. 54 00:02:48,640 --> 00:02:50,446 Vanessa? 55 00:02:50,446 --> 00:02:50,870 >> [END VIDEOAVSPELNING] 56 00:02:50,870 --> 00:02:53,485 >> DAVID MALAN: Okej, så anledningen att det inte fungerade för de flesta av er på 57 00:02:53,485 --> 00:02:56,540 I slutet av klassen var att jag fortsatte att spela in en timme av att 58 00:02:56,540 --> 00:02:59,505 tagningar pekar på mig själv efter Jag lägger glasögonen ner. 59 00:02:59,505 --> 00:03:04,010 Så idag ska jag lämna dem utanför, men tack du till Vanessa för att en sådan 60 00:03:04,010 --> 00:03:05,420 bra sport. 61 00:03:05,420 --> 00:03:08,330 >> Under tiden, ett par meddelanden innan vi gå framåt i dag. 62 00:03:08,330 --> 00:03:11,120 Så en, CS50 har en tradition av att göra vad vi kan för att försöka göra en mycket 63 00:03:11,120 --> 00:03:12,630 stor klass känns mindre. 64 00:03:12,630 --> 00:03:16,640 Och mot detta syfte, de flesta varje fredag, samlas vi på en restaurang i 65 00:03:16,640 --> 00:03:20,160 torget, eld och is, med 30 eller 40 av dina klasskamrater, jag själv, en del av 66 00:03:20,160 --> 00:03:22,520 lärarna, och vi bara har en mycket avslappnad lunch. 67 00:03:22,520 --> 00:03:26,280 Vi bjuder ofta vänner från industrin, alumner för klassen, alumner i 68 00:03:26,280 --> 00:03:30,340 högskola, egentligen bara för att chatta varje andra upp, prata om livet efter 69 00:03:30,340 --> 00:03:32,260 högskola, liv på college, och liknande. 70 00:03:32,260 --> 00:03:35,570 Så om du vill delta i detta första sådan lunch denna fredag ​​på 71 00:03:35,570 --> 00:03:38,640 13:15, chef för det URL någon gång. 72 00:03:38,640 --> 00:03:40,830 >> Utrymmet är begränsat, så vi ska göra först till kvarn. 73 00:03:40,830 --> 00:03:43,880 Men vi ska göra det igen på ett återkommande basis, så att inte oroa dig om du inte gör det 74 00:03:43,880 --> 00:03:45,800 göra det i denna första omgång. 75 00:03:45,800 --> 00:03:48,960 >> Nu, i termer av de resurser som tillhandahålls curricularly av kursen, 76 00:03:48,960 --> 00:03:51,500 det finns en hel massa, och om du inte har drog upp kursens hemsida 77 00:03:51,500 --> 00:03:54,310 redan, i synnerhet under föreläsningar, du kommer att upptäcka att allt 78 00:03:54,310 --> 00:03:57,070 vi gjorde förra veckan är det, både i video och någon sorts 79 00:03:57,070 --> 00:03:58,435 av elektronisk form. 80 00:03:58,435 --> 00:04:01,210 Men bortom de videor, hittar du att det nu finns hela texten 81 00:04:01,210 --> 00:04:03,290 transkript, till exempel, av varje föreläsning. 82 00:04:03,290 --> 00:04:08,260 >> Så om vi går faktiskt tillbaka till den här skärmen här med Vanessa, och navigera 83 00:04:08,260 --> 00:04:12,010 till det nedre hörnet av skärmen, du hittar det faktiskt, inte för 84 00:04:12,010 --> 00:04:15,060 Fredagens föreläsning, men om vi går tillbaka till Onsdag, eftersom den här funktionen tar en 85 00:04:15,060 --> 00:04:17,870 några dagar, ser du att du kan faktiskt dra upp, på gott eller 86 00:04:17,870 --> 00:04:22,260 värre, varje ord som jag eller en volontär på scenen sa. 87 00:04:22,260 --> 00:04:23,270 Och mer än just det. 88 00:04:23,270 --> 00:04:25,700 Du kan faktiskt söka det, kan du klicka på någon av dessa meningar, hoppa 89 00:04:25,700 --> 00:04:29,250 till den punkten i videon, allt mot och slutet av göra materialet all 90 00:04:29,250 --> 00:04:30,620 mer farbara. 91 00:04:30,620 --> 00:04:34,550 >> Men om du inte vill följa det i sådan detalj, hittar du, för 92 00:04:34,550 --> 00:04:39,710 Exempelvis denna lilla meny här för 1.5x hastighet, 2x hastighet, eller Jag f jag redan 93 00:04:39,710 --> 00:04:42,100 tala för fort för dig, 0,75 x hastighet. 94 00:04:42,100 --> 00:04:45,190 Så inser allt detta är finns där för dig. 95 00:04:45,190 --> 00:04:49,120 >> Men utöver detta, för föreläsningar, inser att vi gör också dessa resurser 96 00:04:49,120 --> 00:04:50,530 finns också. 97 00:04:50,530 --> 00:04:55,240 Diabilder, exempelkod, något som jag gör på scen eller i förskott av klass, 98 00:04:55,240 --> 00:04:58,160 vi kommer lägga upp det så att du kan spela tillsammans hemma eller i Sanders. 99 00:04:58,160 --> 00:05:01,280 Men vad vi trodde också att vi skulle göra det här år för första gången är också 100 00:05:01,280 --> 00:05:04,240 förse dig med genomgångar av dessa exempel. 101 00:05:04,240 --> 00:05:08,120 Alltmer, som jag har funderat på det Värdet av CS50 föreläsningar, jag har börjat 102 00:05:08,120 --> 00:05:11,450 att ifrågasätta hur bra det är för ni att sitta där, för mig att stå 103 00:05:11,450 --> 00:05:15,020 här, och för mig att prata med dig, särskilt som materialet, 104 00:05:15,020 --> 00:05:17,020 exempel, blir allt mer komplexa. 105 00:05:17,020 --> 00:05:20,790 Eftersom alltid, efter ett visst antal minuter, någon kommer att zonen ut, och 106 00:05:20,790 --> 00:05:24,310 då du missar några viktiga insikter om vissa exempel, och då är du i huvudsak 107 00:05:24,310 --> 00:05:27,720 gått för den återstående delen av klassen, vilket inte är den bästa användningen av 108 00:05:27,720 --> 00:05:31,330 din tid, eller, egentligen, vår kollektivt som en klass. 109 00:05:31,330 --> 00:05:33,920 >> Och så vad vi trodde vi skulle försöka att göra, särskilt för några av de mer 110 00:05:33,920 --> 00:05:37,700 komplexa exempel att jag inte skulle göra rättvisa i klassen, att vi kanske inte 111 00:05:37,700 --> 00:05:41,560 ha tid för i klassen, eller du kanske bara zon ut under, är att vi kommer att producera 112 00:05:41,560 --> 00:05:45,500 en serie av genomgångar av dessa exempel så att om du går till, för 113 00:05:45,500 --> 00:05:51,410 exempel, förra fredagens video sida här enligt exempel, ser du att 114 00:05:51,410 --> 00:05:54,050 för fredag, finns det nu här länka till genomgångar. 115 00:05:54,050 --> 00:05:55,780 Och formatet för dessa kommer att förändras över tiden. 116 00:05:55,780 --> 00:05:58,080 För nu, använder vi en enkel YouTube spellista. 117 00:05:58,080 --> 00:06:00,980 >> Men vad jag gjorde med vårt produktionsteam efteråt gå igenom varje 118 00:06:00,980 --> 00:06:04,480 och en av dessa exempel igen, förhoppningsvis peka ut i mycket större 119 00:06:04,480 --> 00:06:07,550 tydlighet exakt vad de hämtställen kan eller bör vara från vardera. 120 00:06:07,550 --> 00:06:10,560 Så hittar du till exempel från förra vecka, alla scratch exemplen 121 00:06:10,560 --> 00:06:12,950 Vi gick igenom görs linjärt på det sättet. 122 00:06:12,950 --> 00:06:15,840 Så välkommen att engagera eller inte engagera sig i detta material. 123 00:06:15,840 --> 00:06:19,140 Verkligen ett tema för denna kurs är att det finns förmodligen mer 124 00:06:19,140 --> 00:06:21,870 i vägen för resurser än du skulle kunna absorbera över 125 00:06:21,870 --> 00:06:23,260 loppet av en termin. 126 00:06:23,260 --> 00:06:23,980 >> Men det är avsiktligt. 127 00:06:23,980 --> 00:06:26,990 Det är tänkt att vara så att du som enskilda elever kan själv välja 128 00:06:26,990 --> 00:06:28,070 baserat på din lärstil. 129 00:06:28,070 --> 00:06:29,790 Så om föreläsningar fungerar för dig, bra. 130 00:06:29,790 --> 00:06:31,090 Om delar fungerar för dig, bra. 131 00:06:31,090 --> 00:06:32,930 Om genomgångar fungerar för dig bättre, bra. 132 00:06:32,930 --> 00:06:36,980 Det verkligen kommer att vara upp till dig att välja vilka resurser som fungerar bäst för dig. 133 00:06:36,980 --> 00:06:40,380 >> Slutligen, tack vare en före detta elev av Självklart ger vi också en kanonisk 134 00:06:40,380 --> 00:06:41,890 uppsättning rits anteckningar. 135 00:06:41,890 --> 00:06:46,270 Så istället har ni huvuden i föreläsningar klottra ner 136 00:06:46,270 --> 00:06:49,880 saker som kommer upp i klassen, vi, de personal, kommer att förse dig med vad vi 137 00:06:49,880 --> 00:06:53,410 känner är en kanonisk uppsättning noter till befria dig av denna distraktion, så att 138 00:06:53,410 --> 00:06:57,150 om du är här och engagerad, är du verkligen engagerade med vad som händer, 139 00:06:57,150 --> 00:07:00,110 med dina klasskamrater gör upp scen, med vad som händer på skärmen, 140 00:07:00,110 --> 00:07:03,570 och inte bara skriva ner ordagrant vad hände med har sagt. 141 00:07:03,570 --> 00:07:06,730 Så inser alla dessa resurser finns tillgängliga för dig. 142 00:07:06,730 --> 00:07:09,210 >> Sektionering, som svar på en FAQ, börjar denna onsdag. 143 00:07:09,210 --> 00:07:12,050 Vi väntar huvudsak förrän efter att de flesta andra klasser gjort så att vi kan 144 00:07:12,050 --> 00:07:14,420 minimera antalet förändringar att vi måste göra. 145 00:07:14,420 --> 00:07:20,010 Men kommer upp i helgen, med start Söndag, kommer att bli en en gång instans av 146 00:07:20,010 --> 00:07:21,360 vad vi kallar super sektioner. 147 00:07:21,360 --> 00:07:23,990 Dessa kommer att filmas för dem som inte kan delta, och i huvudsak, den 148 00:07:23,990 --> 00:07:28,880 kursens huvuden kommer att gå oss igenom några av C delen av kursen, 149 00:07:28,880 --> 00:07:32,330 mot en ände av problemet set en, som kommer att vara vår första C bygger 150 00:07:32,330 --> 00:07:33,140 problem set. 151 00:07:33,140 --> 00:07:36,240 Och dessa kommer bara vara valfria avsnitt i väntan på vad som kommer 152 00:07:36,240 --> 00:07:40,010 bli återkommande ledde sektioner av kursens 50 plus 153 00:07:40,010 --> 00:07:41,600 Undervisning Fellows vecka. 154 00:07:41,600 --> 00:07:45,130 På söndagar eller måndagar eller tisdagar, vi har 90 minuten sektioner i en mycket 155 00:07:45,130 --> 00:07:48,020 traditionell mening, som kommer att vara möjligheter för händerna på och mer 156 00:07:48,020 --> 00:07:50,800 intim översyn av kursens material. 157 00:07:50,800 --> 00:07:53,820 >> Utan vidare, låt mig presentera kursens huvuden, som är 158 00:07:53,820 --> 00:07:57,380 bakom kulisserna med mig, göra allt hända. 159 00:07:57,380 --> 00:08:02,670 Om de här i dag kunde gå med mig, Rob och Lauren och Joseph och Lucas, alla 160 00:08:02,670 --> 00:08:05,770 av dem har varit med kurs för en viss tid. 161 00:08:05,770 --> 00:08:08,450 RJ är den tredje medlem av vårt team. 162 00:08:08,450 --> 00:08:11,720 Han kunde inte vara här i dag, men han bad mig att visa en bild av honom. 163 00:08:11,720 --> 00:08:14,600 Jag är inte säker på att han ville ha detta en, men det är han. 164 00:08:14,600 --> 00:08:18,350 >> Och låt mig bara att gruppen skall kunna säga hej och presentera sig så att 165 00:08:18,350 --> 00:08:22,260 du lär känna dem så bra som din egen undervisning karl denna term. 166 00:08:22,260 --> 00:08:23,490 >> LAUREN CARVALHO: Hej. 167 00:08:23,490 --> 00:08:24,740 Mitt namn är Lauren Carvalho. 168 00:08:24,740 --> 00:08:26,900 Jag är bosatt handledare i Leverett House. 169 00:08:26,900 --> 00:08:31,120 Jag är super också glada att vara en head-TV för CS50 detta år. 170 00:08:31,120 --> 00:08:35,830 >> CS50 är en mycket utmanande klass samt som en mycket stor klass, så om du 171 00:08:35,830 --> 00:08:38,780 har några funderingar, om du känner du efterkälken, gärna 172 00:08:38,780 --> 00:08:43,840 nå ut till någon av oss på heads@cs50.het, eller till mig, om du skulle 173 00:08:43,840 --> 00:08:46,330 gillar att leka med min golden retriever valp. 174 00:08:46,330 --> 00:08:48,060 Här är Lucas. 175 00:08:48,060 --> 00:08:48,560 >> LUCAS FREITAS: Hej, grabbar. 176 00:08:48,560 --> 00:08:49,330 Mitt namn är Lucas Freitas. 177 00:08:49,330 --> 00:08:51,880 Jag är en junior [OHÖRBAR] 178 00:08:51,880 --> 00:08:53,630 datavetenskap och lingvistik. 179 00:08:53,630 --> 00:08:58,030 Jag är faktiskt från Brasilien, och jag också inser östasiatiska studier. 180 00:08:58,030 --> 00:09:00,740 Så om du har några frågor om datavetenskap eller språk eller 181 00:09:00,740 --> 00:09:01,870 någonting, så låt mig veta. 182 00:09:01,870 --> 00:09:05,630 Eller CS50, speciellt. 183 00:09:05,630 --> 00:09:05,880 >> JOSEPH ONG: Hej. 184 00:09:05,880 --> 00:09:06,265 Jag är Josef. 185 00:09:06,265 --> 00:09:11,360 Jag är en senior studerar dator vetenskap i Elliott House. 186 00:09:11,360 --> 00:09:13,500 Så, låt oss se. 187 00:09:13,500 --> 00:09:16,530 Du ser mig omkring bär en av dessa enorma kameror. 188 00:09:16,530 --> 00:09:21,110 Jag är bosatt personal fotografen för 50 också, och eleverna ofta 189 00:09:21,110 --> 00:09:25,140 ibland misstar mig för en asiatisk turist. 190 00:09:25,140 --> 00:09:29,220 >> Så om du ser mig med en kamera, inte springa iväg. 191 00:09:29,220 --> 00:09:32,960 Bara le och inte vara blyg. 192 00:09:32,960 --> 00:09:34,870 Och jag hoppas att du tycker om 50. 193 00:09:34,870 --> 00:09:38,690 Jag gillade det väldigt mycket när jag tog det, och det är därför jag har TFing för 194 00:09:38,690 --> 00:09:41,164 dessa tre år. 195 00:09:41,164 --> 00:09:41,570 >> ROB BOWDEN: Hej. 196 00:09:41,570 --> 00:09:42,550 Jag är Rob. 197 00:09:42,550 --> 00:09:46,240 Detta är min fjärde termin med CS50. 198 00:09:46,240 --> 00:09:47,430 Jag tog bara i maj. 199 00:09:47,430 --> 00:09:49,650 Jag var i Kirkland. 200 00:09:49,650 --> 00:09:53,670 Jag är glad för den här terminen, och jag hoppas att du är för. 201 00:09:53,670 --> 00:09:56,650 >> DAVID MALAN: Tack till årets huvuden, och till RJ liksom. 202 00:09:56,650 --> 00:09:59,910 203 00:09:59,910 --> 00:10:02,310 >> Så några sista anteckningar på resurser. 204 00:10:02,310 --> 00:10:04,090 En, som p 0 är redan uppe. 205 00:10:04,090 --> 00:10:06,620 Detta finns bara i standard upplaga, som är avsedd för den 206 00:10:06,620 --> 00:10:07,610 helhet av klassen. 207 00:10:07,610 --> 00:10:10,940 Börjar med p set 1, kommer det att finnas hacker upplagor av de flesta problemsamlingar, 208 00:10:10,940 --> 00:10:14,660 vilket, återigen, kommer att täcka material med lite mer av en utmaning, medan 209 00:10:14,660 --> 00:10:17,400 fortfarande röra på vissa av samma ämnen. 210 00:10:17,400 --> 00:10:21,400 Tar en titt på kursens hemsida för att specifikationen för p set 0. 211 00:10:21,400 --> 00:10:25,140 >> Kontorstid, även kommer att börja denna vecka, ikväll, i morgon, onsdag, 212 00:10:25,140 --> 00:10:27,670 och torsdag i olika restauranger hallar på campus. 213 00:10:27,670 --> 00:10:32,140 Kolla in cs50.net/ohs för kontoret timmar för kursen, och inser detta 214 00:10:32,140 --> 00:10:34,430 kommer att vara mycket tillfälliga möjligheter, förvisso, i början av den 215 00:10:34,430 --> 00:10:37,190 termin, för att komma förbi med din laptop under hjärnans paus. 216 00:10:37,190 --> 00:10:40,500 Ta några vänner och chatta upp kursens TF och CA med någon 217 00:10:40,500 --> 00:10:41,750 frågor som du kan ha. 218 00:10:41,750 --> 00:10:45,320 >> Och jag kan inte nog betona, även för scratch och problem set 0, där 219 00:10:45,320 --> 00:10:47,110 verkligen ingen dum fråga. 220 00:10:47,110 --> 00:10:51,200 Det finns ingen elev alltför obehagligt att ställa frågor. 221 00:10:51,200 --> 00:10:53,940 Tveka inte att ta tillvara av denna resurs. 222 00:10:53,940 --> 00:10:56,430 Det kommer att vara där återkommande och hela terminen, 223 00:10:56,430 --> 00:10:57,840 som kommer CS50 Diskutera. 224 00:10:57,840 --> 00:11:00,900 Detta är kursens online-diskussion forum på den adress där. 225 00:11:00,900 --> 00:11:04,490 >> Vad ska vi också göra under föreläsningar är också övervaka detta, tack vare 226 00:11:04,490 --> 00:11:05,580 kursens lärarlag. 227 00:11:05,580 --> 00:11:08,390 Och så om du har en fråga under föreläsa, eftersom jag sa något 228 00:11:08,390 --> 00:11:11,690 dåligt eller inte alls, med alla medel, be att i realtid om du har din 229 00:11:11,690 --> 00:11:15,700 laptop eller telefon på hemsidan, och Vi ska göra vårt bästa i nära realtid till 230 00:11:15,700 --> 00:11:17,410 svara på det. 231 00:11:17,410 --> 00:11:21,500 >> Finns det några frågor om CS 50? 232 00:11:21,500 --> 00:11:23,930 Så en sista tonerna av mina. 233 00:11:23,930 --> 00:11:25,530 Att frågan om SAT UNSAT. 234 00:11:25,530 --> 00:11:28,550 När du slutför dina studieresultat kort, om du har inte redan, inser att 235 00:11:28,550 --> 00:11:32,360 övergripande vision av SAT UNSAT, tillgängliga för alla elever, är verkligen 236 00:11:32,360 --> 00:11:36,350 att hjälpa till att ta udden av en kurs så här, så att säga, så att om du 237 00:11:36,350 --> 00:11:40,510 hitta dig själv sent på natten, 02:00, 03:00, verkligen bankar ditt huvud upp mot 238 00:11:40,510 --> 00:11:43,960 väggen där du vet att du är 99% av vägen dit till slut, men du 239 00:11:43,960 --> 00:11:47,510 har så många andra saker att göra, Jag tror att en bättre användning, ofta, av 240 00:11:47,510 --> 00:11:51,260 elevernas tid är att faktiskt gå vidare till dessa andra saker så att du kan 241 00:11:51,260 --> 00:11:52,780 optimera din tid runt. 242 00:11:52,780 --> 00:11:56,950 Och SAT UNSAT är en mekanism via vilken du kan ta tröst i det faktum 243 00:11:56,950 --> 00:12:00,530 att 99% av vägen finns fortfarande ganska bra. 244 00:12:00,530 --> 00:12:03,790 >> Likaså också, om du har kommit in i Naturligtvis med någon tidigare bakgrund eller 245 00:12:03,790 --> 00:12:07,960 inte alls lika mycket bakgrund som du tror att dina klasskamrater kan ha, sant 246 00:12:07,960 --> 00:12:13,210 eller falsk, inse att detta är en möjlighet att få händerna smutsiga 247 00:12:13,210 --> 00:12:16,590 med kursen, sätta tårna i vatten, så att säga, ungefär som jag själv 248 00:12:16,590 --> 00:12:18,500 gjorde år sedan med godkänt / underkänt. 249 00:12:18,500 --> 00:12:21,850 Som jag sa förra veckan, hade denna kurs, liksom andra, inte varit tillgänglig 250 00:12:21,850 --> 00:12:25,090 godkänd / underkänd på den tiden, skulle jag förmodligen inte någonsin har satt sin fot i 251 00:12:25,090 --> 00:12:28,310 klassen, även om jag gjorde det, fem veckor senare, ångrar mig, som du 252 00:12:28,310 --> 00:12:32,400 kan lika gärna, och växla över till eller från brev graderad status. 253 00:12:32,400 --> 00:12:32,990 >> Okej. 254 00:12:32,990 --> 00:12:37,380 Så vi tittade på saker som detta på Fredag, och vi är mycket snabbt gå 255 00:12:37,380 --> 00:12:39,890 övergång till något som ser mer kryptisk idag. 256 00:12:39,890 --> 00:12:42,300 Men det är ändå den samma grundtanke. 257 00:12:42,300 --> 00:12:45,540 Vad var den allmänna term som vi används för att beskriva en pusselbit 258 00:12:45,540 --> 00:12:47,690 som såg ut så här? 259 00:12:47,690 --> 00:12:48,510 >> Så, ett uttalande. 260 00:12:48,510 --> 00:12:50,020 Och du kan kalla detta något antal saker. 261 00:12:50,020 --> 00:12:51,870 Men vi ska bara kalla det ett uttalande, och ett uttalande 262 00:12:51,870 --> 00:12:53,200 bara talar om för programmet - 263 00:12:53,200 --> 00:12:55,290 eller i fallet med Scratch, sprite - 264 00:12:55,290 --> 00:12:56,520 att göra något. 265 00:12:56,520 --> 00:12:58,430 Säg hej i det här fallet. 266 00:12:58,430 --> 00:13:01,450 >> Ungefär så här vi istället kallas vad? 267 00:13:01,450 --> 00:13:03,560 Ja, så ett booleskt uttryck. 268 00:13:03,560 --> 00:13:07,380 Ett booleskt uttryck är bara något det är sant eller falskt, och så Scratch 269 00:13:07,380 --> 00:13:10,530 drar dem med denna form, men också med ett frågetecken för att förmedla 270 00:13:10,530 --> 00:13:14,510 Tanken att svaret på denna fråga är antingen sant eller falskt, ja eller nej 271 00:13:14,510 --> 00:13:15,910 en, 1 eller 0. 272 00:13:15,910 --> 00:13:19,290 >> Och vi använder dessa booleska uttryck insidan av konstruktioner som dessa, som 273 00:13:19,290 --> 00:13:21,010 vi kallas vad? 274 00:13:21,010 --> 00:13:22,460 Så, tillstånd eller gren. 275 00:13:22,460 --> 00:13:25,600 Och det skick du ser här i Scratch har en liten platshållare för ett 276 00:13:25,600 --> 00:13:28,260 pusselbit i den formen, syftet vilket är så att du kan 277 00:13:28,260 --> 00:13:32,670 dra och släpp den ovanpå och sedan diktera till programmet om detta Boolean 278 00:13:32,670 --> 00:13:36,410 uttrycket är sant, gör denna uppsättning instruktioner, denna uppsättning av påståenden, 279 00:13:36,410 --> 00:13:39,320 annan göra detta andra set av instruktioner. 280 00:13:39,320 --> 00:13:41,270 >> Och minns att du kan häckar dessa saker. 281 00:13:41,270 --> 00:13:44,170 Även om det inte finns mycket utrymme visuellt i denna pusselbit, Scratch 282 00:13:44,170 --> 00:13:47,820 kommer att växa och krympa för att passa vad pusselbitar du drar och släpper in 283 00:13:47,820 --> 00:13:51,410 det så att du faktiskt kan bo här och har en tre sätt vägskäl. 284 00:13:51,410 --> 00:13:53,870 Om, annars om, annars. 285 00:13:53,870 --> 00:13:58,100 Och du kan även gå längre än så genom nesting längre och längre efter behov. 286 00:13:58,100 --> 00:14:02,520 >> Så slutligen, såg vi konstruktioner som detta, annars känd som en slinga. 287 00:14:02,520 --> 00:14:05,690 Och detta är bara något som gör något igen och igen och igen. 288 00:14:05,690 --> 00:14:09,250 I detta fall händer det att vara en ändlig antal gånger, men vi också 289 00:14:09,250 --> 00:14:12,890 såg ett exempel där antalet gånger kom från en variabel, så det 290 00:14:12,890 --> 00:14:13,690 kan förändras. 291 00:14:13,690 --> 00:14:16,910 Och vi såg också ett annat block helt kallas ett evigt block som 292 00:14:16,910 --> 00:14:19,590 tillät oss att slinga oändligt lång. 293 00:14:19,590 --> 00:14:23,300 >> Så en annan konstruktion som Scratch 2.0 har - och de av er mer 294 00:14:23,300 --> 00:14:26,330 bekväm med tidigare bakgrund är redan väl förtrogen med detta 295 00:14:26,330 --> 00:14:27,080 konstruera - 296 00:14:27,080 --> 00:14:29,910 dessa saker vi kallas vad? 297 00:14:29,910 --> 00:14:32,540 Så vi kallade dessa funktioner, annars kallas rutiner. 298 00:14:32,540 --> 00:14:35,030 Det finns en liten semantisk skillnad, men vi kallar dem bara fungerar. 299 00:14:35,030 --> 00:14:39,950 >> Och en funktion, i fallet med Scratch, är en anpassad pusselbit som 300 00:14:39,950 --> 00:14:43,670 du själv kan skapa så att du har en ny pusselbit som, i det här 301 00:14:43,670 --> 00:14:47,190 fallet, skulle kallas hosta, som noteras som alla de andra 302 00:14:47,190 --> 00:14:48,730 tillgängliga pusselbitar i Scratch. 303 00:14:48,730 --> 00:14:52,010 Även om MIT uppfann inte denna pusselbit, det gjorde du. 304 00:14:52,010 --> 00:14:57,600 >> Så en funktion gör att du kan skapa nya beteende, ge det en funktion namn, och 305 00:14:57,600 --> 00:14:59,200 sedan kalla det, så att säga. 306 00:14:59,200 --> 00:15:04,690 Verkligen använda den i program igen och om och om igen utan att behöva vänta 307 00:15:04,690 --> 00:15:08,600 för någon som MIT väg till uppfinna ny funktionalitet från Scratch. 308 00:15:08,600 --> 00:15:12,460 Du själv kan bygga dessa pussel stycken själv, och sedan återanvända dem 309 00:15:12,460 --> 00:15:13,600 i dina egna program. 310 00:15:13,600 --> 00:15:17,520 Och vi får se ett återkommande exempel av denna dag och framåt. 311 00:15:17,520 --> 00:15:20,960 >> Så idag, övergång vi nu till något mer svårbegripliga. 312 00:15:20,960 --> 00:15:24,350 Men i slutet av dagen, något mer kraftfulla och uttrycksfulla och mer 313 00:15:24,350 --> 00:15:28,110 representativa för den väg som vi ska vara på hela terminen under ett antal 314 00:15:28,110 --> 00:15:28,800 av språk - 315 00:15:28,800 --> 00:15:30,800 som av kod eller källkod. 316 00:15:30,800 --> 00:15:34,720 Och källkod, visar det sig, är inte vad en dator 317 00:15:34,720 --> 00:15:37,400 typiskt faktiskt körs. 318 00:15:37,400 --> 00:15:39,860 Källkod ser ut ungefär så här. 319 00:15:39,860 --> 00:15:43,010 >> Så detta är, igen, kanske den enklaste program som vi kan skriva in ett 320 00:15:43,010 --> 00:15:46,670 språk som kallas C. Vi kommer att börja retas detta isär innan länge, och om 321 00:15:46,670 --> 00:15:49,260 detta verkligen ser ut som grekiska för dig just nu, tro mig. 322 00:15:49,260 --> 00:15:54,040 Inom bara en vecka eller två tid, detta kommer att bli alltför bekant och faktiskt 323 00:15:54,040 --> 00:15:57,780 ganska representativ för allt komplexa exempel med där du kan 324 00:15:57,780 --> 00:15:59,870 också få mer bekväm. 325 00:15:59,870 --> 00:16:03,100 >> Men du kan inte bara köra det här slags kod brukar. 326 00:16:03,100 --> 00:16:06,750 Du måste göra det till något som själva datorn förstår. 327 00:16:06,750 --> 00:16:09,840 Och så för det behöver vi något vi kommer att kalla en kompilator. 328 00:16:09,840 --> 00:16:13,910 En kompilator är ett program som tar källkod, som du just såg, som 329 00:16:13,910 --> 00:16:17,680 ingång, och den producerar nollor och ettor som produktion, annars 330 00:16:17,680 --> 00:16:19,210 kallas objektkod. 331 00:16:19,210 --> 00:16:23,190 Och det är dessa nollor och ettor som kan se ganska så här att 332 00:16:23,190 --> 00:16:26,310 slutändan är förstås med din Mac eller PC. 333 00:16:26,310 --> 00:16:30,050 >> Om du någonsin har hört marknadsföring uttryck Intel Inside, som bara 334 00:16:30,050 --> 00:16:32,800 innebär att ett företag som heter Intel har tillverkat 335 00:16:32,800 --> 00:16:34,130 hjärnor i datorn - 336 00:16:34,130 --> 00:16:37,270 annars känd som CPU, centralenhet - 337 00:16:37,270 --> 00:16:39,640 och det är just det som förstår mönster 338 00:16:39,640 --> 00:16:40,880 av nollor och ettor. 339 00:16:40,880 --> 00:16:46,330 Och så genom att konvertera källkoden till objektkod genom denna process här 340 00:16:46,330 --> 00:16:49,130 att vi kommer att göra med ett par kommandon i bara lite, är du 341 00:16:49,130 --> 00:16:53,070 skapar mönster av ettor och nollor att de anställda på Intel har 342 00:16:53,070 --> 00:16:56,000 beslutat utgör vissa uttalanden. 343 00:16:56,000 --> 00:16:58,810 >> Nu vet jag inte riktigt vet vilka är vilken genom att bara kasta en blick på 344 00:16:58,810 --> 00:16:59,890 dessa nollor och ettor. 345 00:16:59,890 --> 00:17:01,420 De flesta människor i dessa dagar inte. 346 00:17:01,420 --> 00:17:04,900 Men någonstans i det finns ett mönster av ettor och nollor som representerar 347 00:17:04,900 --> 00:17:06,349 uttalande print. 348 00:17:06,349 --> 00:17:10,460 Någonstans i det kan finnas en annan satt av nollor och ettor som 349 00:17:10,460 --> 00:17:16,940 representerar begreppet evigt eller upprepa 10 gånger eller till och med jama, om det är 350 00:17:16,940 --> 00:17:20,000 faktiskt ett program som kan omfatta vissa ljud. 351 00:17:20,000 --> 00:17:24,390 >> Så kort sagt, har människan just beslutat, mycket som vi gjorde för ASCII - 352 00:17:24,390 --> 00:17:27,480 för bokstäverna i alfabetet förra veckan - människor har beslutat att även 353 00:17:27,480 --> 00:17:32,200 mer komplexa mönster av ettor och nollor representerar mer komplext beteende 354 00:17:32,200 --> 00:17:35,650 som att skriva eller säga eller jamar. 355 00:17:35,650 --> 00:17:38,640 Och så för idag, och till stor del framåt i terminen, vi tar för 356 00:17:38,640 --> 00:17:41,820 givet att någon har räknat ut hur man gör det mappning. 357 00:17:41,820 --> 00:17:45,560 Men vi, i överensstämmelse med denna idé om skiktning ovanpå arbetet med människor 358 00:17:45,560 --> 00:17:49,340 som har kommit före oss, tar för givet att detta pågår 359 00:17:49,340 --> 00:17:50,300 under huven. 360 00:17:50,300 --> 00:17:53,840 Men vi är mycket mer intresserade av bygga saker som är mer 361 00:17:53,840 --> 00:17:55,880 intressant ovanpå allt detta. 362 00:17:55,880 --> 00:17:58,900 >> Och så faktiskt, det första programmet vi skrev i Scratch var detta super enkla 363 00:17:58,900 --> 00:18:00,600 en, Hello World. 364 00:18:00,600 --> 00:18:05,100 Och du kan tänka på detta som den huvudprogram som styr Scratch s 365 00:18:05,100 --> 00:18:07,280 beteende som i fredags. 366 00:18:07,280 --> 00:18:11,510 >> Idag ska vi börja att översätta Skrapa pusselbitar i 367 00:18:11,510 --> 00:18:16,040 källkod i detta kallas språket C så att det såg ut så här på 368 00:18:16,040 --> 00:18:20,230 Fredag, med start idag och framåt, är nu kommer att se ut så här. 369 00:18:20,230 --> 00:18:21,860 Visserligen mer kryptiskt. 370 00:18:21,860 --> 00:18:25,010 Det är ganska störande och typ av sinne bedövande att se alla de citat 371 00:18:25,010 --> 00:18:27,760 och semikolon och parenteser och så vidare. 372 00:18:27,760 --> 00:18:32,350 >> Men om du börjar bry dig inte inte förstår, och ser verkligen 373 00:18:32,350 --> 00:18:35,960 vid kärnan av den vita texten på skärm, säkert du ser, som jag gör, 374 00:18:35,960 --> 00:18:40,360 "Hej, världen." Som linjer upp med lila uttalande där uppe, och det visar 375 00:18:40,360 --> 00:18:44,790 att sökordet huvud kommer att rada upp konceptuellt med när grönt 376 00:18:44,790 --> 00:18:46,350 flagga klickade. 377 00:18:46,350 --> 00:18:49,820 >> Så med andra ord, medan i Scratch, vi genomföra detta Hello World-program 378 00:18:49,820 --> 00:18:53,360 med dessa två pusselbitar, i C, vi kommer att genomföra det med dessa 379 00:18:53,360 --> 00:18:55,510 fyra något kryptiska rader. 380 00:18:55,510 --> 00:18:58,130 Men som vi dyka djupare i detta, kommer du se att var och en av dem 381 00:18:58,130 --> 00:19:02,730 vita tecken på skärmen faktiskt har några betydande innebörd, 382 00:19:02,730 --> 00:19:05,880 och de flesta av våra program kommer att ser strukturellt riktigt samma. 383 00:19:05,880 --> 00:19:08,980 Så ett uttalande, att vara tydlig, det såg ut som "Säg hej världen" på 384 00:19:08,980 --> 00:19:12,020 Fredag ​​kommer att börja leta gillar det här på måndag. 385 00:19:12,020 --> 00:19:15,250 printf ("Hello, world"). 386 00:19:15,250 --> 00:19:17,700 Och det finns några konstiga backslash n, det finns parenteser, det finns 387 00:19:17,700 --> 00:19:18,490 semikolon. 388 00:19:18,490 --> 00:19:21,950 >> Men i slutet av dagen, nyckeln takeaway idag är att allt vi gör 389 00:19:21,950 --> 00:19:25,710 översätter saker från bilden forma till textform. 390 00:19:25,710 --> 00:19:28,820 Så en loop som såg ut så här förra veckan kommer att nu se 391 00:19:28,820 --> 00:19:30,140 ungefär så här. 392 00:19:30,140 --> 00:19:33,020 >> Och låt mig förnekanden, precis som i Scratch, det finns olika sätt att 393 00:19:33,020 --> 00:19:34,110 uppnå samma mål. 394 00:19:34,110 --> 00:19:38,860 Samma i C. Jag tänker inte visa er den enda sätt att göra saker, men ett sätt att 395 00:19:38,860 --> 00:19:43,230 Översätt den här forever blockera till en slinga i C. 396 00:19:43,230 --> 00:19:44,980 >> Detta här, upprepa 10 gånger. 397 00:19:44,980 --> 00:19:47,580 Detta verkligen slags böjer emot den första gången du ser det. 398 00:19:47,580 --> 00:19:49,860 Men att genomföra det hädanefter, vi kommer att använda en 399 00:19:49,860 --> 00:19:51,990 för loop, så att säga. 400 00:19:51,990 --> 00:19:56,150 Och uppenbarligen finns det vissa syntax som är ett litet komplex där med jag och 401 00:19:56,150 --> 00:19:59,740 lika och 0, men när vi dyka in i det idag och framåt, du kommer bara 402 00:19:59,740 --> 00:20:04,260 att se att det är allt helt enkelt göra några grundläggande aritmetik för att få oss från 0 403 00:20:04,260 --> 00:20:07,720 på upp till 9 eller 10 i detta fall. 404 00:20:07,720 --> 00:20:11,570 >> Slutligen, med variabler, kommer du ihåg att en variabel är en bit av lagringsutrymme. 405 00:20:11,570 --> 00:20:14,290 Tja, vad vi hade på vänster där förra vecka kommer att se lite 406 00:20:14,290 --> 00:20:15,920 ungefär så här den här veckan. 407 00:20:15,920 --> 00:20:17,870 Men återigen, för mer om det kommer. 408 00:20:17,870 --> 00:20:20,700 >> Vi hade booleska uttryck, vilket förra veckan, såg ut så här. 409 00:20:20,700 --> 00:20:23,370 Denna vecka framåt, kommer de att börjar se lite sådär. 410 00:20:23,370 --> 00:20:24,890 >> Och detta är faktiskt lite lugnande. 411 00:20:24,890 --> 00:20:27,680 Det är faktiskt nästan lika enkelt som de gröna blocken. 412 00:20:27,680 --> 00:20:31,115 Men här har vi, återigen, några nya syntax med et-tecken, men du kan 413 00:20:31,115 --> 00:20:35,390 kanske gissa medan i Scratch, du säger A-N-D, tydligen i C, är vi 414 00:20:35,390 --> 00:20:37,070 kommer att säga ampersand ampersand. 415 00:20:37,070 --> 00:20:39,650 Men allt detta kommer att bli naturligt före lång. 416 00:20:39,650 --> 00:20:40,680 >> Villkor. 417 00:20:40,680 --> 00:20:42,610 Förra veckan såg det ut som detta till vänster. 418 00:20:42,610 --> 00:20:44,800 Denna vecka, till höger, är det kommer att se ut så. 419 00:20:44,800 --> 00:20:48,560 Men återigen, är nyckeln takeaway här att som ni ser saker som på 420 00:20:48,560 --> 00:20:51,950 rätten, och särskilt om mindre bekväm, det slags över din 421 00:20:51,950 --> 00:20:54,950 huvud, får du lite överväldigad att Jag har verkligen ingen aning om hur jag kunde 422 00:20:54,950 --> 00:20:58,420 eventuellt komma med att från grunden - 423 00:20:58,420 --> 00:20:59,500 no pun intended - 424 00:20:59,500 --> 00:21:05,300 bara inse att det är egentligen samma idé som förmodligen kände så mycket mer 425 00:21:05,300 --> 00:21:06,760 naturliga förra veckan. 426 00:21:06,760 --> 00:21:10,960 Och även om du inte har dykt in Problemet set 0, jag förmodar att du hittar 427 00:21:10,960 --> 00:21:13,790 att pusselbitarna är ganska intuitiv, eller åtminstone 428 00:21:13,790 --> 00:21:16,050 blivit så med tiden. 429 00:21:16,050 --> 00:21:16,990 >> Så låt oss dyka i. 430 00:21:16,990 --> 00:21:20,760 Låt oss få våra händer smutsiga här med denna första enkelt program. 431 00:21:20,760 --> 00:21:22,410 Och enkel är naturligtvis relativt. 432 00:21:22,410 --> 00:21:25,190 För att göra detta, kommer jag att byta skärmar till den enhet jag heter 433 00:21:25,190 --> 00:21:26,150 CS50 apparaten. 434 00:21:26,150 --> 00:21:29,700 Den CS50 Apparaten är en bit av programvara som körs inuti en 435 00:21:29,700 --> 00:21:33,920 fönster på min Mac, och du kan även köra det i ett fönster inne i datorn, som 436 00:21:33,920 --> 00:21:38,720 tillåter mig att ha exakt samma datormiljö som varje TF, som 437 00:21:38,720 --> 00:21:40,940 varje CA, som varje elev i klassen. 438 00:21:40,940 --> 00:21:44,590 Eftersom CS50 apparaten är bokstavligen annat operativsystem 439 00:21:44,590 --> 00:21:45,410 kallas Linux - 440 00:21:45,410 --> 00:21:47,160 specifikt Fedora Linux - 441 00:21:47,160 --> 00:21:51,320 och vi, personalen, har konfigurerat installationsprocessen för detta 442 00:21:51,320 --> 00:21:55,200 operativsystem på ett sådant sätt att en, det finns en liten CS50 logotyp i 443 00:21:55,200 --> 00:21:59,240 mitten, två, det finns en egen meny på botten, och tre, pedagogiskt, 444 00:21:59,240 --> 00:22:02,570 Vi har förenklat användargränssnitt som mycket som möjligt så att när du 445 00:22:02,570 --> 00:22:05,540 först starta denna sak upp på egen hand Mac eller PC, har du samma 446 00:22:05,540 --> 00:22:08,280 miljö som alla andra, och du har alla de verktyg som du behöver 447 00:22:08,280 --> 00:22:11,390 för kursen utan att behöva räkna hur man installerar varje och 448 00:22:11,390 --> 00:22:13,280 varje verktyg för sig. 449 00:22:13,280 --> 00:22:15,840 >> Så här ser relativt som Mac OS eller Windows. 450 00:22:15,840 --> 00:22:18,760 I det nedre vänstra hörnet, du huvudsak har en Start-meny 451 00:22:18,760 --> 00:22:20,280 sorterar, eller en Apple-menyn. 452 00:22:20,280 --> 00:22:23,700 Och så har du vad vi misstänker kommer vara dina tre vanligaste ikonerna. 453 00:22:23,700 --> 00:22:24,460 En är Chrome. 454 00:22:24,460 --> 00:22:26,460 Det finns en webbläsare inuti av apparaten. 455 00:22:26,460 --> 00:22:29,970 >> Två är ett program som heter gedit, vilket vi såg kort förra veckan, vilket är 456 00:22:29,970 --> 00:22:31,310 bara en grafisk editor. 457 00:22:31,310 --> 00:22:35,350 Och tre är ett Terminal-program, vilket är en svartvit fönster från 458 00:22:35,350 --> 00:22:39,860 föredömen som tillåter oss att skriva mer svårbegripliga men mer kraftfulla kommandon 459 00:22:39,860 --> 00:22:40,660 våra tangentbord. 460 00:22:40,660 --> 00:22:44,220 Så jag kommer att gå vidare och klicka på gedit, och vara säker på att problemet 461 00:22:44,220 --> 00:22:48,520 sats 1, som släpps på fredag, kommer gå igenom alla dessa steg. 462 00:22:48,520 --> 00:22:51,730 >> Lägg märke till att jag har en ganska enkel användargränssnitt med tre delar. 463 00:22:51,730 --> 00:22:54,990 Till vänster har jag en stor tomt Fönstret kallas källkod. 464 00:22:54,990 --> 00:22:58,930 Det är där jag kommer att visa en sammanfattning någon kod som jag skriver. 465 00:22:58,930 --> 00:23:01,990 På höger sida, har jag en stor flik, är för närvarande inte sparats, och att 466 00:23:01,990 --> 00:23:03,510 där min kod kommer att gå. 467 00:23:03,510 --> 00:23:06,780 Och på botten, har jag en inbäddad Terminal-fönster, en svart och vit 468 00:23:06,780 --> 00:23:12,060 prompt vid vilken jag kan skriva kommandon till kompilera och köra mina program - att 469 00:23:12,060 --> 00:23:14,110 är, att göra och att köra mina program. 470 00:23:14,110 --> 00:23:15,170 >> Så låt oss börja enkelt. 471 00:23:15,170 --> 00:23:17,700 Låt mig gå upp till Arkiv, Spara. 472 00:23:17,700 --> 00:23:20,530 Jag kommer att gå vidare och gå in jharvard. 473 00:23:20,530 --> 00:23:24,320 Så apparaten, oavsett vad ditt namn är, tillhör en namngiven kille 474 00:23:24,320 --> 00:23:28,250 John Harvard, som har en jharvard hem inuti katalogen där alla dina 475 00:23:28,250 --> 00:23:29,100 filer kommer att gå. 476 00:23:29,100 --> 00:23:31,640 Det är ditt eget exemplar av hans konto, så vi är inte alla delar 477 00:23:31,640 --> 00:23:33,530 samma hårddisk. 478 00:23:33,530 --> 00:23:35,580 Du har bara en illusion av John Harvard egen. 479 00:23:35,580 --> 00:23:38,350 >> I förväg, faktiskt jag installerat Dropbox. 480 00:23:38,350 --> 00:23:42,600 Apparaten levereras preprepared med Dropbox så att om något går fel 481 00:23:42,600 --> 00:23:45,950 under terminen, om du har konfigurerat din apparat med en fri 482 00:23:45,950 --> 00:23:48,950 Dropbox-konto, alla dina filer automatiskt säkerhetskopieras så att du 483 00:23:48,950 --> 00:23:50,430 kan mycket enkelt återställa dem. 484 00:23:50,430 --> 00:23:53,980 Och jag kommer att gå in i min Dropbox katalog, och det finns redan pågår 485 00:23:53,980 --> 00:23:55,530 att vara ett par andra saker där. 486 00:23:55,530 --> 00:24:02,090 >> Men jag ska gå vidare och gå till Arkiv, Spara. 487 00:24:02,090 --> 00:24:05,930 Jag kommer att gå in i jharvard, Dropbox, och här uppe, kommer jag att 488 00:24:05,930 --> 00:24:10,590 ge mitt program en super enkel namn, hej.c, och sedan spara. 489 00:24:10,590 --> 00:24:11,810 Så jag har samma gränssnitt nu. 490 00:24:11,810 --> 00:24:14,190 Det enda som har förändrats är fliken där uppe. 491 00:24:14,190 --> 00:24:17,170 Så jag mycket snabbt kommer att återskapa det programmet från 492 00:24:17,170 --> 00:24:19,060 glider en stund sedan. 493 00:24:19,060 --> 00:24:25,690 >> Så in i main (void), och sedan printf, "Hej världen", en något kryptisk 494 00:24:25,690 --> 00:24:29,920 backslash n, stäng citationstecken, stäng parentes, semikolon, och 495 00:24:29,920 --> 00:24:32,030 sedan Ctrl S för att spara. 496 00:24:32,030 --> 00:24:34,860 Och meddelandet som ett undan vad som just visade sig här uppe till vänster. 497 00:24:34,860 --> 00:24:37,490 Och detta är inte bra idag, men kommer att vara användbart med tiden. 498 00:24:37,490 --> 00:24:40,160 Du ser bara, återigen, en sammanfattning av koden som du har skrivit. 499 00:24:40,160 --> 00:24:43,320 Och eftersom jag skrev något som kallas viktigaste, det är därför ordet huvud poppade 500 00:24:43,320 --> 00:24:44,030 upp där borta. 501 00:24:44,030 --> 00:24:46,610 Men för det mesta, vi behöver inte det idag. 502 00:24:46,610 --> 00:24:51,130 >> Okej, så jag hävdar att detta är min första program skrivet i ett programmeringsspråk 503 00:24:51,130 --> 00:24:54,620 språk som kallas C. Vi vet från fredag att vad denna sak kommer att göra 504 00:24:54,620 --> 00:24:58,450 mycket uninterestingly när jag kör det är bara visa - 505 00:24:58,450 --> 00:25:01,270 med andra ord, skriva ut, som en dator forskare skulle säga - 506 00:25:01,270 --> 00:25:03,310 hallå världen på skärmen. 507 00:25:03,310 --> 00:25:06,800 Så för att göra detta, kommer du att märka att jag har att gå ner hit till min terminal 508 00:25:06,800 --> 00:25:09,250 fönster, och nu har jag en blinkande prompt. 509 00:25:09,250 --> 00:25:15,480 Men detta är nu ett tangentbord version av min John Harvard hemkatalog. 510 00:25:15,480 --> 00:25:19,610 Det är ett vanligt tangentbord via vilket att navigera min hårddisk. 511 00:25:19,610 --> 00:25:25,380 >> Så jag kan faktiskt inte skriva som jag gjorde förra veckan gör hej, eftersom det är 512 00:25:25,380 --> 00:25:27,230 kommer att säga ingen regel att göra mål - 513 00:25:27,230 --> 00:25:27,950 något är fel. 514 00:25:27,950 --> 00:25:31,690 Jag vet inte riktigt vad det budskapet medel, men det beror på som standard, 515 00:25:31,690 --> 00:25:35,350 när denna svarta och vita fönster är öppnat, jag insidan av John Harvards 516 00:25:35,350 --> 00:25:36,160 hemkatalog. 517 00:25:36,160 --> 00:25:39,180 Men där gjorde jag sparar det programmet? 518 00:25:39,180 --> 00:25:40,440 I min Dropbox mapp. 519 00:25:40,440 --> 00:25:43,110 >> Nu har vi alla vuxit upp med datorer där du bara dubbelklicka på 520 00:25:43,110 --> 00:25:45,610 på en mapp ikon, det öppnas, och voila. 521 00:25:45,610 --> 00:25:48,280 Det är där filen som heter hej.c skulle vara. 522 00:25:48,280 --> 00:25:49,470 Så i själva verket, låt oss göra det. 523 00:25:49,470 --> 00:25:51,610 >> Låt mig gå vidare och minimera gedit precis som du gör på 524 00:25:51,610 --> 00:25:52,990 Windows eller Mac OS. 525 00:25:52,990 --> 00:25:56,160 Låt mig gå in på Home mapp överst till vänster. 526 00:25:56,160 --> 00:25:57,620 Jag ser här en massa mappar. 527 00:25:57,620 --> 00:25:58,870 Här är min Dropbox-mappen. 528 00:25:58,870 --> 00:26:00,770 Markeringarna betyder det har synkroniserats. 529 00:26:00,770 --> 00:26:04,040 Och det finns ett par saker här, men märker att hello.c är 530 00:26:04,040 --> 00:26:04,960 faktiskt rätt där. 531 00:26:04,960 --> 00:26:08,050 >> Och så i Mac OS eller Windows, normalt, Jag dubbelklickar skulle klicka på den, öppnar det upp i 532 00:26:08,050 --> 00:26:10,220 oavsett program, och jag är bra att gå. 533 00:26:10,220 --> 00:26:13,370 Men nu, åtminstone från och med idag, vi måste ta ett steg tillbaka bara för att 534 00:26:13,370 --> 00:26:16,960 ge dig några grundläggande verktyg för din verktygslåda som man kan göra mer 535 00:26:16,960 --> 00:26:18,980 kraftfulla saker inom kort. 536 00:26:18,980 --> 00:26:22,280 >> Så i den här frågan har jag att göra motsvarigheten till att dubbelklicka på 537 00:26:22,280 --> 00:26:23,560 Dropbox mappen. 538 00:26:23,560 --> 00:26:29,900 Och att göra det, kommer jag att skriva cd för ändra katalog, Dropbox, anger. 539 00:26:29,900 --> 00:26:36,100 Och nu märker parentesen på min så kallad prompt säger nu att jag är i 540 00:26:36,100 --> 00:26:38,470 tilde, den lilla snirkliga symbolen längst upp till vänster i 541 00:26:38,470 --> 00:26:40,860 de flesta tangentbord / Dropbox. 542 00:26:40,860 --> 00:26:45,200 Detta är bara förkortning notation för säger människa, du är nu inne på 543 00:26:45,200 --> 00:26:48,650 Dropbox-mappen, precis som om du hade dubbelklickat på den. 544 00:26:48,650 --> 00:26:54,610 >> Så nu om jag går vidare och skriver att hej, skriv, ser jag en väldigt kryptiskt 545 00:26:54,610 --> 00:26:57,450 kommando, men inte ett felmeddelande, det verkar, och sedan 546 00:26:57,450 --> 00:26:59,020 annan blinkande prompt. 547 00:26:59,020 --> 00:27:04,470 Och om ni minns, någonsin så snabbt på fredag, vi gjorde det här. . / Hello. 548 00:27:04,470 --> 00:27:10,000 >> Vad du är på väg att se är resultatet min kör detta program, eller, i Mac 549 00:27:10,000 --> 00:27:14,310 OS och PC-termer, om jag skulle normalt dubbelt Klicka på ett program -. en app 550 00:27:14,310 --> 00:27:17,620 program eller en. exe, öppnar det ett fönster och körningar. 551 00:27:17,620 --> 00:27:21,920 Skriva. / Hej är precis som dubbel klicka ett program för att köra det, men 552 00:27:21,920 --> 00:27:23,280 med mitt tangentbord. 553 00:27:23,280 --> 00:27:25,410 >> Enter, hallå världen. 554 00:27:25,410 --> 00:27:26,150 Och det är det. 555 00:27:26,150 --> 00:27:29,150 Så låt oss retas detta isär så det känns inte alltför mycket som grekiska. 556 00:27:29,150 --> 00:27:31,370 >> Så. / Betyder vad? 557 00:27:31,370 --> 00:27:34,120 Alla som någonsin navigerat ett tangentbord miljö som denna, vad är prick 558 00:27:34,120 --> 00:27:36,690 hänvisar till? 559 00:27:36,690 --> 00:27:37,800 Den aktuella katalogen. 560 00:27:37,800 --> 00:27:41,320 >> Så den aktuella katalogen är bara en synonym för en mapp. 561 00:27:41,320 --> 00:27:46,230 Så genom att säga dot snedstreck, säger jag, leta efter ett program som heter hej i 562 00:27:46,230 --> 00:27:47,250 aktuell katalog - 563 00:27:47,250 --> 00:27:48,540 i den aktuella mappen. 564 00:27:48,540 --> 00:27:50,480 Med andra ord, min Dropbox mapp. 565 00:27:50,480 --> 00:27:54,220 Och det är därför slå Enter därefter faktiskt kör programmet. 566 00:27:54,220 --> 00:27:58,790 >> Om jag nu typ LS, märker att jag ser allt i min Dropbox-mappen. 567 00:27:58,790 --> 00:28:02,000 Att få Started.pdf, som Dropbox ger dig gratis, mina foton 568 00:28:02,000 --> 00:28:05,450 katalog, en offentlig katalog som inte sparats Dokument 1, som jag gjorde av misstag en 569 00:28:05,450 --> 00:28:09,730 stund sedan, foo.c, som jag gjorde tidigare idag, och sedan två linjer - 570 00:28:09,730 --> 00:28:12,090 hej.c och hej. 571 00:28:12,090 --> 00:28:17,280 >> Hello.c är det program jag skrev med gedit, och vad är hello i grönt? 572 00:28:17,280 --> 00:28:20,920 573 00:28:20,920 --> 00:28:22,940 Hello i grönt är körbara. 574 00:28:22,940 --> 00:28:27,020 Med andra ord, när jag körde detta kommando en stund sedan - låt mig rulla 575 00:28:27,020 --> 00:28:28,040 tillbaka i tiden - 576 00:28:28,040 --> 00:28:32,400 när jag sprang gör hej, det är mitt steg här. 577 00:28:32,400 --> 00:28:34,410 Och det tog hej.c som indata - 578 00:28:34,410 --> 00:28:39,910 AKA källkod - och det gav en fil som heter hej som produktion, vilket 579 00:28:39,910 --> 00:28:42,510 innehåller alla dessa nollor och ettor. 580 00:28:42,510 --> 00:28:47,640 Och det är därför, i slutändan, kan jag faktiskt köra ett kommando som. / hello. 581 00:28:47,640 --> 00:28:53,310 På grund av Intel Inside, mitt operativsystem systemet, Linux, öppnar dessa nollor 582 00:28:53,310 --> 00:28:55,820 och sådana, matar dem in i hjärnor på min dator - 583 00:28:55,820 --> 00:28:56,580 CPU - 584 00:28:56,580 --> 00:29:00,460 och att CPU vet, åh, här är ett mönster av ettor och nollor som säger 585 00:29:00,460 --> 00:29:02,800 skriva ut följande ting på skärmen. 586 00:29:02,800 --> 00:29:04,450 >> Vad är följande sak? 587 00:29:04,450 --> 00:29:07,650 Citat unquote, "hallå världen." 588 00:29:07,650 --> 00:29:12,100 >> Okej, så en snabb sammanfattning av några av dessa kommandon så att vi kan börja 589 00:29:12,100 --> 00:29:13,350 tar dem för givna. 590 00:29:13,350 --> 00:29:15,550 Låt mig hoppa vidare till där vi slutade. 591 00:29:15,550 --> 00:29:22,230 Och du kommer ihåg att vi hade CD på vår back end för en stund sedan. 592 00:29:22,230 --> 00:29:24,880 Dessa är, vågar jag säga, för dagens ändamål - 593 00:29:24,880 --> 00:29:29,010 kanske denna vecka - de enda kommandon vi skulle behöva skriva på kommandoraden 594 00:29:29,010 --> 00:29:30,580 föranleda förutom göra. 595 00:29:30,580 --> 00:29:34,510 >> Så CD stod för vad? 596 00:29:34,510 --> 00:29:35,180 Byt katalog. 597 00:29:35,180 --> 00:29:38,010 Det är bara motsvarar dubbla klicka på en mapp. 598 00:29:38,010 --> 00:29:41,320 Och som en parentes, om du får förlorat allt inne i ditt 599 00:29:41,320 --> 00:29:43,430 apparaten, så att Dropbox - 600 00:29:43,430 --> 00:29:45,420 Jag vill komma tillbaka till min jharvard Directory - 601 00:29:45,420 --> 00:29:50,490 när du är osäker, CD, in, med ingen annan ord, och det bara blixtlås du tillbaka 602 00:29:50,490 --> 00:29:53,110 till där du startade, vilket är en trevlig liten genväg. 603 00:29:53,110 --> 00:29:54,840 >> Okej, så nu andra kommandon. 604 00:29:54,840 --> 00:29:55,660 LS. 605 00:29:55,660 --> 00:29:56,840 Jag skrev att för ett ögonblick sedan. 606 00:29:56,840 --> 00:29:59,500 Vad tror du LS står för? 607 00:29:59,500 --> 00:30:00,470 >> Så, lista, eller hur? 608 00:30:00,470 --> 00:30:03,300 Tillbaka i dag, när människor kom upp med dessa kommandon, de 609 00:30:03,300 --> 00:30:07,180 försökte vara effektiv, och i stället skriva ut L-I-S-T enter, de 610 00:30:07,180 --> 00:30:08,470 beslutat LS. 611 00:30:08,470 --> 00:30:09,080 Det är bra. 612 00:30:09,080 --> 00:30:10,420 Det låter nog som lista. 613 00:30:10,420 --> 00:30:13,870 Låt oss bara typ LS in, och att listar filer eller mappar i min 614 00:30:13,870 --> 00:30:15,000 aktuella mappen. 615 00:30:15,000 --> 00:30:17,530 >> mkdir, kan du nog gissa. 616 00:30:17,530 --> 00:30:18,440 Gör katalogen. 617 00:30:18,440 --> 00:30:22,010 Så du behöver inte gå till någon arkivmenyn och välj Ny mapp i den här miljön. 618 00:30:22,010 --> 00:30:27,410 Snarare skriver du det utrymme kommandot mkdir och sedan namnet på mappen 619 00:30:27,410 --> 00:30:29,850 som du vill skapa, och det kommer att ske. 620 00:30:29,850 --> 00:30:32,380 >> rm, kan du nog gissa. 621 00:30:32,380 --> 00:30:33,480 Ta bort eller radera. 622 00:30:33,480 --> 00:30:36,740 Så om du vill ta bort en fil, kommer du se på problemet set hur du 623 00:30:36,740 --> 00:30:37,240 kan göra detta. 624 00:30:37,240 --> 00:30:39,510 Och rmdir, ta bort katalogen. 625 00:30:39,510 --> 00:30:42,320 >> Så, återigen, jag har en tendens att flyga igenom några dessa detaljer en,, eftersom 626 00:30:42,320 --> 00:30:46,010 de är inte så mycket roligt att spendera tid på, men två, ger vi dig 627 00:30:46,010 --> 00:30:48,720 mycket större detalj i något av de kursens problem ställer, särskilt 628 00:30:48,720 --> 00:30:52,370 de vanliga utgåvor, några av stegen som du kan behöva skriva så 629 00:30:52,370 --> 00:30:54,830 att du får mer och mer bekväma med dessa saker. 630 00:30:54,830 --> 00:30:57,430 >> Men låt mig nu retas isär en annan sak. 631 00:30:57,430 --> 00:31:02,580 När vi skrev gör hej en stund sedan, Vi såg en kryptisk sekvens av kommandon. 632 00:31:02,580 --> 00:31:04,805 Vi såg, återigen, gör hej. 633 00:31:04,805 --> 00:31:07,640 634 00:31:07,640 --> 00:31:08,520 OK, låt oss göra detta. 635 00:31:08,520 --> 00:31:11,840 Jag var på väg att göra ett misstag, men [OHÖRBAR] nu erkänna att jag var på väg att 636 00:31:11,840 --> 00:31:14,400 och gör det medvetet. 637 00:31:14,400 --> 00:31:15,810 >> Vad har jag gjort för fel just nu? 638 00:31:15,810 --> 00:31:18,680 639 00:31:18,680 --> 00:31:21,060 Ja, så jag är inte i Dropbox katalog, eftersom en stund sedan jag 640 00:31:21,060 --> 00:31:22,720 maskinskrivna CD och bara Enter. 641 00:31:22,720 --> 00:31:25,480 Det zoomat mig tillbaka till där jag började, vilket inte är där min fil 642 00:31:25,480 --> 00:31:31,720 är, så jag behöver verkligen göra CD Dropbox in, och nu kan jag göra rm hello 643 00:31:31,720 --> 00:31:34,060 in, ta bort vanlig fil hej. 644 00:31:34,060 --> 00:31:35,200 Jag vet inte varför det är så kryptisk. 645 00:31:35,200 --> 00:31:37,600 Det betyder bara att du är säker du vill radera hej? 646 00:31:37,600 --> 00:31:41,510 Du kan skriva y för ja, ange, och nu är det borta. 647 00:31:41,510 --> 00:31:46,010 >> Och nu när jag skriver gör hej igen, det är kommer att återskapa min objektkod, 648 00:31:46,010 --> 00:31:47,460 återskapa dessa nollor och ettor. 649 00:31:47,460 --> 00:31:51,070 Men vad är det med detta mycket långa kommando? 650 00:31:51,070 --> 00:31:53,960 Tja, vi retas detta isär före länge, men gör - 651 00:31:53,960 --> 00:31:55,500 Jag berättade lite av en vit lögn före - 652 00:31:55,500 --> 00:31:56,880 är inte en kompilator. 653 00:31:56,880 --> 00:32:00,350 Gör är ett program som automatiskt räknar ut hur man driver ett 654 00:32:00,350 --> 00:32:02,060 kompilator för dig. 655 00:32:02,060 --> 00:32:07,490 >> Så det kommando som du egentligen borde vara igång för att konvertera hej.c 656 00:32:07,490 --> 00:32:11,240 in hello faktiskt ser lite mer om detta. 657 00:32:11,240 --> 00:32:15,900 Och Gud förbjude att vi måste faktiskt kom ihåg att aldrig skriva att hela 658 00:32:15,900 --> 00:32:17,280 sekvens av kommandon ut. 659 00:32:17,280 --> 00:32:21,360 Syftet med att göra i livet är att kom ihåg att graden av komplexitet för 660 00:32:21,360 --> 00:32:24,470 oss och automatisera vad som annars vara mycket tråkiga steg. 661 00:32:24,470 --> 00:32:26,040 >> Men jag kan approximera det. 662 00:32:26,040 --> 00:32:29,960 Så per denna lilla lathund här, jag kan approximera vad detta kommando är 663 00:32:29,960 --> 00:32:33,960 göra genom att skriva klang, vilket är namnet på kompilatorn vi ska vara 664 00:32:33,960 --> 00:32:35,170 använda denna termin. 665 00:32:35,170 --> 00:32:38,500 Om någon av er har någonsin gjort iOS utveckling för iPhone eller iPad, 666 00:32:38,500 --> 00:32:42,930 Klang är det program du har använt inom Xcode för att göra dina appar. 667 00:32:42,930 --> 00:32:46,360 Klang, men är bara ett annat program vars namn vi kan skriva på kommandoraden 668 00:32:46,360 --> 00:32:49,210 uppmaningen, och genom att införa detta nu, Jag kan presentera något som är en 669 00:32:49,210 --> 00:32:52,410 liten representativ kommandon för att komma. 670 00:32:52,410 --> 00:32:53,910 Så låt mig göra detta manuellt. 671 00:32:53,910 --> 00:32:59,240 >> Så rm hej, och nu märker i fall Jag, precis som en sanity check - 672 00:32:59,240 --> 00:33:03,180 . / Hej, vad tror du jag ska se om jag gör det? 673 00:33:03,180 --> 00:33:04,060 Någon typ av fel. 674 00:33:04,060 --> 00:33:05,110 Ingen sådan fil katalog. 675 00:33:05,110 --> 00:33:06,740 Så att man är faktiskt ganska direkt. 676 00:33:06,740 --> 00:33:08,110 >> Så nu låt mig rensa skärmen. 677 00:33:08,110 --> 00:33:11,370 Kontroll S rensar bara skärmen att ta bort några distraktioner. 678 00:33:11,370 --> 00:33:17,160 Och nu ska jag till manuellt typ klang-o hej hej.c. 679 00:33:17,160 --> 00:33:18,890 Så vad handlar det här om att göra? 680 00:33:18,890 --> 00:33:23,820 Exakt samma sak som att göra gjorde för oss, men jag slängde bort en del av 681 00:33:23,820 --> 00:33:25,430 de överflödiga ord. 682 00:33:25,430 --> 00:33:28,570 >> Klang är det program som kommer att ta en. c-fil som indata och producerar 683 00:33:28,570 --> 00:33:30,110 nollor och ettor som utdata. 684 00:33:30,110 --> 00:33:35,120 Men-o hädanefter kommer att kalla en switch eller en flagga. 685 00:33:35,120 --> 00:33:39,080 Detta är bara techie jargong för att säga Detta är ett ord som du skriver på en prompt 686 00:33:39,080 --> 00:33:42,590 som påverkar på något sätt beteendet av det program du kör. 687 00:33:42,590 --> 00:33:47,180 Så inte vill att någon ska gissa vad-o förmedlar? 688 00:33:47,180 --> 00:33:47,840 >> Utgång. 689 00:33:47,840 --> 00:33:52,670 Det är bara någon bestämde-o betyder utgång en fil som heter hej och ta så 690 00:33:52,670 --> 00:33:56,440 input vad det sista ordet på prompt är, hello.c, så att om jag slog 691 00:33:56,440 --> 00:33:58,930 Ange nu, ingenting verkar hända. 692 00:33:58,930 --> 00:34:02,010 Och konstigt nog, i denna värld av programmering, om inget händer, 693 00:34:02,010 --> 00:34:03,980 det är förmodligen en bra sak eftersom det inte finns något fel 694 00:34:03,980 --> 00:34:05,350 meddelande på skärmen. 695 00:34:05,350 --> 00:34:07,190 Hej, Enter. 696 00:34:07,190 --> 00:34:08,670 Mitt program har nu fått. 697 00:34:08,670 --> 00:34:14,517 >> Men jag kan göra dumma små saker som detta. klang-o, hihihi, hej.c, 698 00:34:14,517 --> 00:34:18,590 in, och nu har jag en identisk program som heter hihihi. 699 00:34:18,590 --> 00:34:20,739 Det fungerar på samma, men namnet är annorlunda. 700 00:34:20,739 --> 00:34:23,360 >> Så detta är bara att säga att om du vill att påverka beteendet hos en 701 00:34:23,360 --> 00:34:25,909 program, kommer vi att alltmer se saker som kallas 702 00:34:25,909 --> 00:34:27,739 kommandoradsargument. 703 00:34:27,739 --> 00:34:28,639 Detta är en linje. 704 00:34:28,639 --> 00:34:29,580 Du skriver kommandon. 705 00:34:29,580 --> 00:34:30,969 Ergo kommandoraden. 706 00:34:30,969 --> 00:34:35,690 Och kommandoradsargument är bara ord eller små bitar av syntax som 707 00:34:35,690 --> 00:34:40,840 något sätt påverka beteendet hos program som vi kör. 708 00:34:40,840 --> 00:34:44,639 >> Okej, det är kanske den mest tråkiga program vi kan skriva och se. 709 00:34:44,639 --> 00:34:46,670 Låt oss nu göra något mer intressant. 710 00:34:46,670 --> 00:34:49,420 Låt mig gå vidare och skapa en ny fil. 711 00:34:49,420 --> 00:34:53,139 Jag ska gå vidare och spara detta i John Harvard hemkatalog som, 712 00:34:53,139 --> 00:34:58,670 låt oss kalla det custom.c, att vara en liten anpassat program. 713 00:34:58,670 --> 00:35:01,920 Jag kommer att zooma in på min topp flikarna här och börja om igen. 714 00:35:01,920 --> 00:35:03,730 >> Inkludera standard stdio.h. 715 00:35:03,730 --> 00:35:04,990 Mer om det i ett ögonblick. 716 00:35:04,990 --> 00:35:08,240 int main (void), mer på att i ett ögonblick. 717 00:35:08,240 --> 00:35:09,490 printf ("hej, David"). 718 00:35:09,490 --> 00:35:12,810 719 00:35:12,810 --> 00:35:14,560 Mycket mer intressant, eller hur? 720 00:35:14,560 --> 00:35:20,690 >> Så nu om - inte på grund av mitt namn, bara för att det är annorlunda - 721 00:35:20,690 --> 00:35:24,950 gör beställnings in. 722 00:35:24,950 --> 00:35:26,780 Anpassad, hej, David. 723 00:35:26,780 --> 00:35:28,020 Men även det är också en vit lögn. 724 00:35:28,020 --> 00:35:30,850 Detta program skulle lika gärna kunna kallas david.c, eftersom det inte är anpassade 725 00:35:30,850 --> 00:35:31,880 beteende alls. 726 00:35:31,880 --> 00:35:35,080 Verkligen, jag vill ha ett program som frågar användaren för sitt namn. 727 00:35:35,080 --> 00:35:36,320 >> Så hur gör jag det? 728 00:35:36,320 --> 00:35:38,520 Nåväl, låt mig rulla upp hit. 729 00:35:38,520 --> 00:35:42,960 Och innan jag använder ett uttalande i Scratch, innan jag använder printf, 730 00:35:42,960 --> 00:35:47,600 annars känd som en funktion, låt mig först fråga användaren för lite input. 731 00:35:47,600 --> 00:35:49,690 >> Så för att göra detta, måste jag göra ett par saker. 732 00:35:49,690 --> 00:35:53,360 Ett, jag behöver en plats att lagra användarens namnge efter att jag har frågat honom eller 733 00:35:53,360 --> 00:35:54,510 henne för det. 734 00:35:54,510 --> 00:36:00,120 Vilken konstruktion behöver jag antagligen använda att lagra ett värde som? 735 00:36:00,120 --> 00:36:00,910 En variabel. 736 00:36:00,910 --> 00:36:05,130 >> Så till skillnad från Scratch, där du får bara ett trevligt pusselbit, här måste vi 737 00:36:05,130 --> 00:36:07,620 använda, naturligtvis, ord uttrycka oss. 738 00:36:07,620 --> 00:36:11,510 Och hädanefter, när som helst du vill ha en ord eller en fras, i programmering, 739 00:36:11,510 --> 00:36:13,090 vi kommer att kalla det en sträng. 740 00:36:13,090 --> 00:36:14,990 Så en sträng är ett ord eller en fras. 741 00:36:14,990 --> 00:36:18,170 Det är en sekvens av noll eller flera tecken, mer formellt. 742 00:36:18,170 --> 00:36:22,520 >> Och om du vill ha en sådan variabel existerar, har du att säga ge mig en. 743 00:36:22,520 --> 00:36:27,490 Och det sätt på vilket du gör det är att säga string s semikolon, där s kan vara 744 00:36:27,490 --> 00:36:28,740 vad du vill. 745 00:36:28,740 --> 00:36:30,510 I själva verket är s lite underwhelming. 746 00:36:30,510 --> 00:36:33,250 Låt mig gå vidare och mer klart kalla det namnet. 747 00:36:33,250 --> 00:36:36,570 Ge mig en sträng som heter namn. 748 00:36:36,570 --> 00:36:40,180 >> Men nu, vad är personens namn som standard? 749 00:36:40,180 --> 00:36:42,930 Tja, om det mänskliga inte skriva något in, självklart, det kommer 750 00:36:42,930 --> 00:36:44,310 att vara något värde i namn. 751 00:36:44,310 --> 00:36:48,120 Och det visar sig i C, om du inte ger en variabel ett värde, det kommer att 752 00:36:48,120 --> 00:36:49,180 har ett skräp värde. 753 00:36:49,180 --> 00:36:51,650 Det kanske har några slumpmässiga nollor och ettor, så du ska bara se 754 00:36:51,650 --> 00:36:54,570 skräp, verkligen, på skärmen om du försöker att visa det. 755 00:36:54,570 --> 00:36:59,800 >> Men jag kan fixa det genom att säga, faktiskt, butik inne i namnet 756 00:36:59,800 --> 00:37:01,400 efter värdet. 757 00:37:01,400 --> 00:37:09,240 Det sätt du lagra värden i variabler är om du har en variabel namn på 758 00:37:09,240 --> 00:37:13,370 vänster, måste du på något sätt sätta vad du vill spara i den på höger, och 759 00:37:13,370 --> 00:37:17,650 syntaxen för det kommer att vara följande. 760 00:37:17,650 --> 00:37:22,120 >> Vi har inte sett det här förut, men ta om tro för ett ögonblick att det 761 00:37:22,120 --> 00:37:26,270 finns ett annat uttalande i världen att jag ska återigen kalla funktionen, 762 00:37:26,270 --> 00:37:28,310 och denna funktion är heter får strängen. 763 00:37:28,310 --> 00:37:29,670 Och det gör bokstavligen det. 764 00:37:29,670 --> 00:37:34,680 Det blir på något sätt en sekvens av tecken från människa och sedan 765 00:37:34,680 --> 00:37:36,380 gör något med det. 766 00:37:36,380 --> 00:37:38,410 >> Och det ser ut som kryptisk syntax. 767 00:37:38,410 --> 00:37:40,880 Normalt, om du använder likhetstecken - du är i en värld av, säg, 768 00:37:40,880 --> 00:37:43,740 algebra, och du är faktiskt säger x är lika med 1. 769 00:37:43,740 --> 00:37:46,570 Här är vi inte säga att Namnet är lika få strängen. 770 00:37:46,570 --> 00:37:51,270 Vi säger butiken i namn vad på höger sida 771 00:37:51,270 --> 00:37:52,400 av det likhetstecken. 772 00:37:52,400 --> 00:37:55,030 Likhetstecknet representerar tilldelningsoperatorn. 773 00:37:55,030 --> 00:37:58,240 Det är den syntax som säger sätta vad som finns på höger insida vad 774 00:37:58,240 --> 00:37:59,090 till vänster. 775 00:37:59,090 --> 00:38:03,040 Så får strängen är en ny bit funktionalitet som inte bara 776 00:38:03,040 --> 00:38:03,670 något - 777 00:38:03,670 --> 00:38:05,000 frågar användaren efter en sträng - 778 00:38:05,000 --> 00:38:08,500 Det returnerar även det, så att säga. 779 00:38:08,500 --> 00:38:10,690 >> Så låt oss se vad som händer att hända här. 780 00:38:10,690 --> 00:38:14,300 Jag ska gå vidare nu och zooma ut, och jag kommer att få ett par 781 00:38:14,300 --> 00:38:15,780 misstag på min prompt. 782 00:38:15,780 --> 00:38:18,750 Jag kommer att skriva gör beställnings anger. 783 00:38:18,750 --> 00:38:19,230 Wow. 784 00:38:19,230 --> 00:38:20,500 En hel massa misstag. 785 00:38:20,500 --> 00:38:23,120 >> Okej, så detta är typ av överväldigande, förvisso vid första, men 786 00:38:23,120 --> 00:38:27,220 det visar sig alla dessa mycket visserligen kryptiska felmeddelanden är 787 00:38:27,220 --> 00:38:30,700 hänvisning till vissa mönster som vi kommer att börja se över tid. 788 00:38:30,700 --> 00:38:32,600 Så här ska jag plocka bort, eftersom det är först. 789 00:38:32,600 --> 00:38:35,700 Användning av odeklarerat identifieringssträng. 790 00:38:35,700 --> 00:38:39,400 >> Det betyder bara att gedit, eller klang, i detta fall inte vet 791 00:38:39,400 --> 00:38:40,780 vad jag menar med snöre. 792 00:38:40,780 --> 00:38:43,880 Och det beror i C programmering språk, det finns faktiskt 793 00:38:43,880 --> 00:38:47,750 är ingen variabel av typen string. 794 00:38:47,750 --> 00:38:49,810 C vet inte att strängarna existerar. 795 00:38:49,810 --> 00:38:52,260 >> Men vi, CS50 personal, gör. 796 00:38:52,260 --> 00:38:57,080 Och så i förväg av klassen, vi skapas en fil som heter CS50.h. 797 00:38:57,080 --> 00:39:00,060 Och insidan av denna fil - och mer om syntax för att komma - 798 00:39:00,060 --> 00:39:03,730 insidan av denna fil är en definition av vad jag just definierat 799 00:39:03,730 --> 00:39:05,340 muntligt som en sträng. 800 00:39:05,340 --> 00:39:09,100 Så enkelt genom att ingå detta en rad av koden i mitt program, är jag nu 801 00:39:09,100 --> 00:39:14,620 undervisning gedit och ringa och Clang alla dyker in vad en sträng är. 802 00:39:14,620 --> 00:39:15,475 >> Jag vet inte hur ännu. 803 00:39:15,475 --> 00:39:17,110 Inom några veckor kommer vi skal tillbaka det lagret. 804 00:39:17,110 --> 00:39:20,340 Men för nu, vet att det lär kompilatorn vad en 805 00:39:20,340 --> 00:39:22,020 strängen är faktiskt. 806 00:39:22,020 --> 00:39:24,230 >> Så nu låt mig klara mig terminal här nere. 807 00:39:24,230 --> 00:39:28,530 Låt mig åter springa göra egna, och jag löst alla dessa problem. 808 00:39:28,530 --> 00:39:30,210 Så även detta kommer att vara ett återkommande tema. 809 00:39:30,210 --> 00:39:34,190 Jag skrev bara en 9 rad program, och men jag hade 18 rader av fel. 810 00:39:34,190 --> 00:39:35,650 Det är ganska skrämmande. 811 00:39:35,650 --> 00:39:39,260 Men inser att de kaskad ofta sådana att ett litet misstag utlöser 812 00:39:39,260 --> 00:39:43,070 förvirringen för kompilatorn, och det ser mycket värre än det är. 813 00:39:43,070 --> 00:39:47,460 >> Så nu en skarpsinnig observatör vet att jag får en sträng från 814 00:39:47,460 --> 00:39:51,460 användare, men jag är faktiskt inte gör vad med det? 815 00:39:51,460 --> 00:39:53,570 Jag faktiskt inte gör någonting med det. 816 00:39:53,570 --> 00:40:01,240 Så om jag kör faktiskt egen igen, det kommer att bara sitta där. 817 00:40:01,240 --> 00:40:03,380 Vad är det som händer? 818 00:40:03,380 --> 00:40:07,990 Mitt program verkar ha fastnat på vilken linje, skulle du säga? 819 00:40:07,990 --> 00:40:09,860 >> Så det är faktiskt fastnat på rad 7. 820 00:40:09,860 --> 00:40:13,600 Och vi har inte sett det här förut, men på rad 7, det finns, återigen, detta 821 00:40:13,600 --> 00:40:14,650 uttalande, få strängen. 822 00:40:14,650 --> 00:40:15,930 Och det gör vad den säger. 823 00:40:15,930 --> 00:40:18,480 Det väntar nu för den mänskliga att ta strängen. 824 00:40:18,480 --> 00:40:22,230 Detta är helt intuitiv för mig, människan, eftersom jag inte har sagt 825 00:40:22,230 --> 00:40:23,040 vad man ska göra. 826 00:40:23,040 --> 00:40:27,320 >> Men låt mig gå vidare på tro och låt mig låtsas vara Rob. 827 00:40:27,320 --> 00:40:28,500 Enter. 828 00:40:28,500 --> 00:40:30,930 Det är inte det program jag tänkt. 829 00:40:30,930 --> 00:40:32,350 Så vi har vår första blogg. 830 00:40:32,350 --> 00:40:34,390 >> Men låt oss försöka att resonera igenom varför detta är fallet. 831 00:40:34,390 --> 00:40:36,940 Först, låt mig fixa detta första problemet. 832 00:40:36,940 --> 00:40:44,690 Låt mig lägga till en linje här som säger printf, vad är ditt namn? 833 00:40:44,690 --> 00:40:47,700 Låt oss bara göra nära citationstecken, nära parentes. 834 00:40:47,700 --> 00:40:51,350 >> Nu låt mig köra om programmet. 835 00:40:51,350 --> 00:40:51,760 Problem. 836 00:40:51,760 --> 00:40:54,690 Jag ser det. 837 00:40:54,690 --> 00:40:54,930 >> Rätt. 838 00:40:54,930 --> 00:40:55,990 Jag har inte kompilera det. 839 00:40:55,990 --> 00:40:59,800 Så på ett språk som C, eftersom du ändra källkoden betyder inte 840 00:40:59,800 --> 00:41:03,170 att du har ändrat din objektkod att generera nya objektkod, 841 00:41:03,170 --> 00:41:04,330 nya ettor och nollor. 842 00:41:04,330 --> 00:41:05,590 Du måste kompilera om. 843 00:41:05,590 --> 00:41:10,300 Om jag nu åter köra anpassningsbar, skriv, ah, lite mer tydlig. 844 00:41:10,300 --> 00:41:11,890 Mitt namn är Rob. 845 00:41:11,890 --> 00:41:12,760 Fortfarande buggy. 846 00:41:12,760 --> 00:41:14,170 >> Och jag skulle hävda att det finns ett par buggar nu. 847 00:41:14,170 --> 00:41:15,450 Det ser bara otäckt, ärligt talat. 848 00:41:15,450 --> 00:41:18,980 Liksom, minimalt, skulle jag ha ett utrymme där, eller flytta 849 00:41:18,980 --> 00:41:20,330 markören till den nya linjen. 850 00:41:20,330 --> 00:41:21,370 >> Och faktiskt, ny rad. 851 00:41:21,370 --> 00:41:24,660 Det är lite av en nyckelfras här att vi har sett, men inte definierat. 852 00:41:24,660 --> 00:41:28,560 Det sätt på vilket du får en text att gå vidare till nästa rad, 853 00:41:28,560 --> 00:41:29,480 du inte gör detta. 854 00:41:29,480 --> 00:41:31,070 Detta är förvirrande för datorn. 855 00:41:31,070 --> 00:41:33,830 Det ser ut som två separata linjer av kod, varav ingen 856 00:41:33,830 --> 00:41:35,010 är helt korrekt. 857 00:41:35,010 --> 00:41:39,380 Du måste i stället vara mer explicit och säga, ge mig en ny linje, vilket vi 858 00:41:39,380 --> 00:41:41,810 representerar i c med backslash n.. 859 00:41:41,810 --> 00:41:43,230 >> Så det finns några sådana tecken. 860 00:41:43,230 --> 00:41:45,080 Backslash n kommer att fixa det estetiska. 861 00:41:45,080 --> 00:41:49,640 862 00:41:49,640 --> 00:41:50,870 Låt mig kompilera mitt program. 863 00:41:50,870 --> 00:41:52,300 Låt mig åter köra mitt program. 864 00:41:52,300 --> 00:41:53,520 >> Det ser bättre ut. 865 00:41:53,520 --> 00:41:56,960 Det är fortfarande ganska primitiv, men det är också fortfarande buggig. 866 00:41:56,960 --> 00:41:58,090 Så det finns en - 867 00:41:58,090 --> 00:42:01,680 även om du aldrig har programmerat tidigare, Du kan nog ta en gissning 868 00:42:01,680 --> 00:42:04,960 på varför detta program är fortfarande bristfällig. 869 00:42:04,960 --> 00:42:08,540 Vad behöver jag för att göra det Jag har ännu inte gjort? 870 00:42:08,540 --> 00:42:10,450 >> Så jag måste faktiskt göra något med namnet. 871 00:42:10,450 --> 00:42:14,190 Precis som i början, kanske du faktiskt tilldela en variabel som n eller 872 00:42:14,190 --> 00:42:16,150 motverka som vi gjorde förra vecka - ett värde. 873 00:42:16,150 --> 00:42:18,930 Men om du inte gör något med det, är ingenting kommer att hända. 874 00:42:18,930 --> 00:42:20,210 >> Okej, så låt åtgärda. 875 00:42:20,210 --> 00:42:23,670 Låt mig skriva min variabel där, och låt mig gå ner hit. 876 00:42:23,670 --> 00:42:29,120 Låt mig kompilera, låt mig repris, Rob. 877 00:42:29,120 --> 00:42:30,540 Nu är jag bara en idiot, eller hur? 878 00:42:30,540 --> 00:42:33,280 >> Så det här är egentligen inte att få mig längre. 879 00:42:33,280 --> 00:42:35,850 Men det var ett helt naturligt instinkt, skulle jag hävda, rätt? 880 00:42:35,850 --> 00:42:39,340 Om variabeln kallas namn, och jag vill att det ska gå dit, varför gör jag inte bara 881 00:42:39,340 --> 00:42:40,200 skriva det där? 882 00:42:40,200 --> 00:42:42,210 >> Jo, naturligtvis, har vi att skilja nu 883 00:42:42,210 --> 00:42:44,070 mellan vad som är ett snöre? 884 00:42:44,070 --> 00:42:47,060 Observera att citatet unquote här, hello namn? 885 00:42:47,060 --> 00:42:48,960 Detta faktiskt själv är en sträng. 886 00:42:48,960 --> 00:42:49,820 Det är hårt kodad. 887 00:42:49,820 --> 00:42:50,690 Det är inte från människa. 888 00:42:50,690 --> 00:42:54,020 Det är från mig, den ursprungliga programmeraren, men det är fortfarande en sträng. 889 00:42:54,020 --> 00:42:58,300 >> Så om du skriver bokstavligen N-A-M-E insida av en sträng, vad som händer med 890 00:42:58,300 --> 00:42:59,120 få ut? 891 00:42:59,120 --> 00:43:03,660 Tja, N-A-M-E. Vi behöver istället berätta printf, skrivs inte ut 892 00:43:03,660 --> 00:43:04,870 ut bokstavligen namnge. 893 00:43:04,870 --> 00:43:06,680 Skriv ut värdet av namnet. 894 00:43:06,680 --> 00:43:08,410 >> Och att göra det, gör vi följande. 895 00:43:08,410 --> 00:43:09,800 Och detta är bara en mänsklig konvention. 896 00:43:09,800 --> 00:43:14,990 Vi säger istället% s, och att står för sträng. 897 00:43:14,990 --> 00:43:19,810 Och sedan i slutet av mina nära offerter, Jag kommer att sätta ett kommatecken och 898 00:43:19,810 --> 00:43:23,790 passerar en andra argument till detta uttalande. 899 00:43:23,790 --> 00:43:25,970 Jag kommer att skriva namn där. 900 00:43:25,970 --> 00:43:27,960 >> Så nu märker vi en något nytt syntax. 901 00:43:27,960 --> 00:43:32,320 Vi har fortfarande två parenteser, och hädanefter låt mig säga att saker 902 00:43:32,320 --> 00:43:36,830 mellan parentes representerar argument till en funktion - 903 00:43:36,830 --> 00:43:39,730 ingångar som på något sätt går att påverka dess beteende. 904 00:43:39,730 --> 00:43:43,010 Så genom denna logik, hur många argument verkar printf vara 905 00:43:43,010 --> 00:43:45,450 tar i detta ögonblick? 906 00:43:45,450 --> 00:43:48,370 >> Så det verkar ta två, och det är verkligen underförstådda 907 00:43:48,370 --> 00:43:49,570 med kommatecken här. 908 00:43:49,570 --> 00:43:51,640 Så detta är ett argument i mellan citationstecken. 909 00:43:51,640 --> 00:43:54,540 Även om det har ett kommatecken i den, allt är inom citationstecken, vilket innebär 910 00:43:54,540 --> 00:43:56,230 det är en lång sträng. 911 00:43:56,230 --> 00:43:58,280 Comma, variabelnamn. 912 00:43:58,280 --> 00:44:00,680 >> Så låt mig nu zooma ut. 913 00:44:00,680 --> 00:44:02,240 Låt mig åter köra det. 914 00:44:02,240 --> 00:44:03,490 Rob. 915 00:44:03,490 --> 00:44:06,520 Fan, vad gjorde jag för fel? 916 00:44:06,520 --> 00:44:07,920 >> Okej, så du måste kompilera. 917 00:44:07,920 --> 00:44:11,030 Så återigen, för enkla misstag göra tidigt igen och igen. 918 00:44:11,030 --> 00:44:15,280 Så nu åter köra anpassade, Rob, in, och voila. 919 00:44:15,280 --> 00:44:17,110 Vi har nu ett anpassat program. 920 00:44:17,110 --> 00:44:21,660 >> Så jag har nu ett program som med några egenskaper 921 00:44:21,660 --> 00:44:22,520 som är värt att notera. 922 00:44:22,520 --> 00:44:27,850 Ett, jag använder CS50.h, annars känd som CS50 biblioteket. 923 00:44:27,850 --> 00:44:33,050 Och insidan av CS50 bibliotek funktioner som andra människor skrev - 924 00:44:33,050 --> 00:44:33,980 nämligen personal - 925 00:44:33,980 --> 00:44:36,620 för dig att använda, och få sträng är en av dem. 926 00:44:36,620 --> 00:44:41,310 >> Inuti linje 2 är stdio.h, och varför är det där? 927 00:44:41,310 --> 00:44:42,070 Ta en gissning. 928 00:44:42,070 --> 00:44:46,200 Vad finns inuti standard IO förälder? 929 00:44:46,200 --> 00:44:46,940 Printf. 930 00:44:46,940 --> 00:44:49,600 Så printf, ser du inte det någonstans annanstans på skärmen. 931 00:44:49,600 --> 00:44:51,870 Det måste komma med dator på något sätt. 932 00:44:51,870 --> 00:44:54,870 Var kommer det ifrån? 933 00:44:54,870 --> 00:44:57,660 Det är inne på - det är förklarat, så att säga, insidan av 934 00:44:57,660 --> 00:44:59,890 en fil som heter stdio.h. 935 00:44:59,890 --> 00:45:02,670 >> Nu, för det här, vi kommer tillbaka att så småningom, eftersom det är en bit 936 00:45:02,670 --> 00:45:03,930 störande för nu. 937 00:45:03,930 --> 00:45:05,490 Detta syftar på vår returtyp. 938 00:45:05,490 --> 00:45:07,660 Detta hänvisar till ett argument. 939 00:45:07,660 --> 00:45:10,230 Men för idag, vi fokuserade bara här på dessa linjer. 940 00:45:10,230 --> 00:45:13,280 >> Så string namn, bara för att sammanfatta, vad gjorde det göra för mig? 941 00:45:13,280 --> 00:45:16,940 942 00:45:16,940 --> 00:45:19,560 Så det förklarade en variabel av typen string. 943 00:45:19,560 --> 00:45:22,630 Så det är tänkt att vara för ord, inte för siffror. 944 00:45:22,630 --> 00:45:25,530 Precis som en parentes, om jag ville ha det att finnas ett antal, skulle jag säga 945 00:45:25,530 --> 00:45:26,560 något som int. 946 00:45:26,560 --> 00:45:29,740 Om jag ville vara ett flyttal värde, något med en decimal, 947 00:45:29,740 --> 00:45:30,600 Jag skulle säga float. 948 00:45:30,600 --> 00:45:32,640 Men för idag, jag sa bara sträng. 949 00:45:32,640 --> 00:45:35,940 >> Och jag har gett denna variabel ett namn på namn, men jag kunde 950 00:45:35,940 --> 00:45:37,240 har kallat det något. 951 00:45:37,240 --> 00:45:39,340 I själva verket, ursprungligen, jag kallade den S. 952 00:45:39,340 --> 00:45:41,050 >> Det här är bara ett annat uttalande. 953 00:45:41,050 --> 00:45:44,170 Hur många argument är detta uttalande tar? 954 00:45:44,170 --> 00:45:47,890 Så det är bara att ta en, och att är helt enkelt en estetisk detalj 955 00:45:47,890 --> 00:45:49,610 visa något på skärmen till mig. 956 00:45:49,610 --> 00:45:54,750 Vad är denna linje 8 gör i lekmannatermer? 957 00:45:54,750 --> 00:45:57,320 >> Det blir ett värde från användare - nämligen en sträng - 958 00:45:57,320 --> 00:45:58,770 och vad det gör med den? 959 00:45:58,770 --> 00:46:02,450 Det är i huvudsak den överlämnas till killen på vänster sida av 960 00:46:02,450 --> 00:46:07,100 likhetstecken så att i detta fall, den namn variabel kan faktiskt lagra den. 961 00:46:07,100 --> 00:46:10,020 >> Och sedan printf är en annan instans av en funktion. 962 00:46:10,020 --> 00:46:11,870 Och vi säger att anropa en funktion. 963 00:46:11,870 --> 00:46:13,870 Om du vill använda en funktion är att anropa en funktion. 964 00:46:13,870 --> 00:46:15,640 Denna sak tydligen tar två argument. 965 00:46:15,640 --> 00:46:18,100 Detta, kommatecken, här. 966 00:46:18,100 --> 00:46:20,910 >> Detta i sig är bara en sträng som innehåller en platshållare. 967 00:46:20,910 --> 00:46:23,860 % S medel sätta en annan sträng här. 968 00:46:23,860 --> 00:46:27,360 Och så genom att sätta namn efter kommatecken, det är sätta 969 00:46:27,360 --> 00:46:29,420 den sak för mig. 970 00:46:29,420 --> 00:46:31,300 >> Så jag kan göra andra saker ändå. 971 00:46:31,300 --> 00:46:36,820 Låt mig gå vidare nu och göra en bit av en dumt program, men låt mig ta bort detta, 972 00:46:36,820 --> 00:46:38,880 och låt mig skapa en loop. 973 00:46:38,880 --> 00:46:41,390 Medan sant. 974 00:46:41,390 --> 00:46:45,210 Symbolen sant är naturligtvis alltid kommer att vara sant. 975 00:46:45,210 --> 00:46:49,830 Så vilken typ av loop jag inducera genom att skriva en rad som denna? 976 00:46:49,830 --> 00:46:51,070 >> Så en oändlig loop, eller hur? 977 00:46:51,070 --> 00:46:52,090 Just medan sant. 978 00:46:52,090 --> 00:46:56,210 Det finns inget sätt jag kan ändra ordet sant att vara något annat, så det är 979 00:46:56,210 --> 00:46:57,310 bara att köra för evigt. 980 00:46:57,310 --> 00:46:59,960 Så om du någonsin har faktiskt haft ett program i din Mac eller PC som verkar 981 00:46:59,960 --> 00:47:02,480 att ha låst upp, eller det gör någonting och någonting, och du bara 982 00:47:02,480 --> 00:47:05,500 kan inte få saken att sluta om du inte starta om datorn eller dra upp 983 00:47:05,500 --> 00:47:08,360 Aktivitetshanteraren eller liknande, Här är ett sådant exempel. 984 00:47:08,360 --> 00:47:14,340 >> Jag kan säga, "Jag är en buggy program." Stäng citat, stäng 985 00:47:14,340 --> 00:47:15,780 parentes, semikolon. 986 00:47:15,780 --> 00:47:17,010 Så återigen, märker mönstren. 987 00:47:17,010 --> 00:47:21,440 Även om några av vår syntax är ny, nyckelordet medan sökordet sant, 988 00:47:21,440 --> 00:47:23,590 märker jag har samma typ av klammerparenteser. 989 00:47:23,590 --> 00:47:25,890 Jag har fått ett semikolon och parenteser. 990 00:47:25,890 --> 00:47:28,000 >> Så nu ska vi gå vidare och sammanställa detta. 991 00:47:28,000 --> 00:47:29,630 Gör beställnings, beställnings. 992 00:47:29,630 --> 00:47:32,690 993 00:47:32,690 --> 00:47:36,660 Så på denna punkt, behöver du inte starta om maskinen, okej? 994 00:47:36,660 --> 00:47:39,925 Så den enkla lärdomen här är med två fingrar, Kontroll C, 995 00:47:39,925 --> 00:47:41,230 Vi ska avsluta det programmet. 996 00:47:41,230 --> 00:47:45,430 Men du kan se exakt varför denna sak var att upprepa sig om och om igen. 997 00:47:45,430 --> 00:47:48,080 >> Jag kan göra något lite mer komplext som en teaser. 998 00:47:48,080 --> 00:47:49,600 Jag kommer att gå vidare och säga följande. 999 00:47:49,600 --> 00:47:55,210 För int, vilket är ett heltal, är jag bara ett generiskt namn vi ger till de flesta 1000 00:47:55,210 --> 00:47:59,500 variabler i programmering när du är bara räkna, är lika med 0. 1001 00:47:59,500 --> 00:48:08,640 Låt mig gå vidare och säga när jag är, låt oss säga, mindre än 100, jag plus plus. 1002 00:48:08,640 --> 00:48:10,240 Vi kommer tillbaka till denna syntax, men det betyder bara 1003 00:48:10,240 --> 00:48:12,270 öka jag igen och igen. 1004 00:48:12,270 --> 00:48:14,200 >> Och vad vill jag göra här? 1005 00:48:14,200 --> 00:48:21,130 Printf, "Jag kan räkna till i.." Detta är en buggy program. 1006 00:48:21,130 --> 00:48:22,450 Vad gjorde jag egentligen tänker här? 1007 00:48:22,450 --> 00:48:25,220 1008 00:48:25,220 --> 00:48:30,940 >> Procent inte s, men du skulle inte gissa detta. % D är ett heltal. 1009 00:48:30,940 --> 00:48:32,720 Comma jag. 1010 00:48:32,720 --> 00:48:34,340 Låt mig rulla tillbaka. 1011 00:48:34,340 --> 00:48:37,170 >> Låt mig nu kompilera med make. 1012 00:48:37,170 --> 00:48:39,280 Låt mig nu köra med anpassad. 1013 00:48:39,280 --> 00:48:42,410 Jag kan räkna riktigt jävla snabbt när Jag skriver ett program som detta. 1014 00:48:42,410 --> 00:48:45,480 >> Nu ska vi göra något lite oavsiktligt. 1015 00:48:45,480 --> 00:48:51,220 Hur ska vi göra detta samtidigt som jag är större än eller lika med 0. 1016 00:48:51,220 --> 00:48:53,630 Vad är det här går att framkalla? 1017 00:48:53,630 --> 00:49:01,030 Så logiskt, är det inte så klokt, för nu om jag kör här, berätta, 1018 00:49:01,030 --> 00:49:05,050 Jag kan nu räkna riktigt, riktigt högt. 1019 00:49:05,050 --> 00:49:08,850 Tyvärr, ungefär lika högt som jag kan räkningen är 4 miljarder, så detta kommer 1020 00:49:08,850 --> 00:49:10,140 att ta ett tag. 1021 00:49:10,140 --> 00:49:13,440 >> Så varför inte vi lämnar detta som vår cliffhanger, lovar att på 1022 00:49:13,440 --> 00:49:15,650 Onsdag, vi får se om det detta program görs. 1023 00:49:15,650 --> 00:49:19,260 Två, kommer vi att presentera hur du själv skriva en egen funktion så att mycket 1024 00:49:19,260 --> 00:49:22,930 snabbt, onsdagen, vi ska, som vi övergång från Scratch i C, startar 1025 00:49:22,930 --> 00:49:25,880 skriva alltmer komplex program som gör mycket, 1026 00:49:25,880 --> 00:49:27,070 mycket mer än detta. 1027 00:49:27,070 --> 00:49:28,766 Vi kommer att se dig då. 1028 00:49:28,766 --> 00:49:31,580 >> [Applåder] 1029 00:49:31,580 --> 00:49:34,690 >> Högtalare 1: Vid nästa CS50, Puzzle Day var en succé. 1030 00:49:34,690 --> 00:49:39,690