DAVID MALAN: Detta är CS50, och detta är början på veckan en. Och vad vi trodde vi skulle göra är att dra sig tillbaka ridån av en enhet som många av er har säkert gått förbi nu för år, men kanske aldrig riktigt känt vad det är. Så här enheten kommer förmodligen se bekant för de flesta av er vid det här laget. [VIDEO SPELA] -En triumf för matematiska och mekanisk färdighet är denna stora nya automatisk miniräknare Harvard University. Intrikata problem i matematik sätter genom maskinen i kodad form på tejpen är korrekt lösta i en minut bråkdel av den tid som krävs för mänsklig beräkning. Designad för att påskynda alla former av matematisk och vetenskaplig forskning, jätten mekanisk hjärnan kommer arbetar för USA Navy tills krigsslutet. [END VIDEOAVSPELNING] DAVID MALAN: Så det är vad du ser i Science Center, som är där att maskinen är nu inrymt. Du egentligen bara se en del av det. Endast en del är för närvarande på skärm, och det är en enhet som kallas Mark I, och det var i huvudsak en riktigt stor miniräknare. Det följdes av Mark II, och det är från Mark II som vi faktiskt få en bit av lexikon. Detta är den första inspelade instans av något du är på väg att bli allt alltför bekant med över terminen - nämligen en bugg. Så visade det sig vid en punkt i Mark II-enhet inte fungerar korrekt, och vid närmare inspektion, det faktiskt fanns en bugg - en mal - att mal - insidan. Och sedan dess har vi hänvisade till misstag i program som buggar. Så mer om detta framöver. På tal om video också, om du har inte redan, vet att CS50 är uppenbarligen filmade. Föreläsningarna brukar gå upp direkt efter klass i form av en pre-release oredigerade format, och sedan en dag eller två senare, satte vi upp en högre upplösning och högre kvalitet version. Ni kanske minns Vanessa, som hade förmögenhet för att leka med Google Glass, som jag tänkte att ut denna gång. Så om du vill komma upp efter klass och spela, de ska jobba idag. Och om du vill se vad Vanessa såg häromdagen, vad du ser här - låt mig höja volymen här på min laptop. [VIDEO SPELA] -Så låt mig köa detta är upp. Okej. Så beröra detta. Okej. OK, glas. Spela in en video. Okej. Vanessa? [END VIDEOAVSPELNING] DAVID MALAN: Okej, så anledningen att det inte fungerade för de flesta av er på I slutet av klassen var att jag fortsatte att spela in en timme av att tagningar pekar på mig själv efter Jag lägger glasögonen ner. Så idag ska jag lämna dem utanför, men tack du till Vanessa för att en sådan bra sport. Under tiden, ett par meddelanden innan vi gå framåt i dag. Så en, CS50 har en tradition av att göra vad vi kan för att försöka göra en mycket stor klass känns mindre. Och mot detta syfte, de flesta varje fredag, samlas vi på en restaurang i torget, eld och is, med 30 eller 40 av dina klasskamrater, jag själv, en del av lärarna, och vi bara har en mycket avslappnad lunch. Vi bjuder ofta vänner från industrin, alumner för klassen, alumner i högskola, egentligen bara för att chatta varje andra upp, prata om livet efter högskola, liv på college, och liknande. Så om du vill delta i detta första sådan lunch denna fredag ​​på 13:15, chef för det URL någon gång. Utrymmet är begränsat, så vi ska göra först till kvarn. Men vi ska göra det igen på ett återkommande basis, så att inte oroa dig om du inte gör det göra det i denna första omgång. Nu, i termer av de resurser som tillhandahålls curricularly av kursen, det finns en hel massa, och om du inte har drog upp kursens hemsida redan, i synnerhet under föreläsningar, du kommer att upptäcka att allt vi gjorde förra veckan är det, både i video och någon sorts av elektronisk form. Men bortom de videor, hittar du att det nu finns hela texten transkript, till exempel, av varje föreläsning. Så om vi går faktiskt tillbaka till den här skärmen här med Vanessa, och navigera till det nedre hörnet av skärmen, du hittar det faktiskt, inte för Fredagens föreläsning, men om vi går tillbaka till Onsdag, eftersom den här funktionen tar en några dagar, ser du att du kan faktiskt dra upp, på gott eller värre, varje ord som jag eller en volontär på scenen sa. Och mer än just det. Du kan faktiskt söka det, kan du klicka på någon av dessa meningar, hoppa till den punkten i videon, allt mot och slutet av göra materialet all mer farbara. Men om du inte vill följa det i sådan detalj, hittar du, för Exempelvis denna lilla meny här för 1.5x hastighet, 2x hastighet, eller Jag f jag redan tala för fort för dig, 0,75 x hastighet. Så inser allt detta är finns där för dig. Men utöver detta, för föreläsningar, inser att vi gör också dessa resurser finns också. Diabilder, exempelkod, något som jag gör på scen eller i förskott av klass, vi kommer lägga upp det så att du kan spela tillsammans hemma eller i Sanders. Men vad vi trodde också att vi skulle göra det här år för första gången är också förse dig med genomgångar av dessa exempel. Alltmer, som jag har funderat på det Värdet av CS50 föreläsningar, jag har börjat att ifrågasätta hur bra det är för ni att sitta där, för mig att stå här, och för mig att prata med dig, särskilt som materialet, exempel, blir allt mer komplexa. Eftersom alltid, efter ett visst antal minuter, någon kommer att zonen ut, och då du missar några viktiga insikter om vissa exempel, och då är du i huvudsak gått för den återstående delen av klassen, vilket inte är den bästa användningen av din tid, eller, egentligen, vår kollektivt som en klass. Och så vad vi trodde vi skulle försöka att göra, särskilt för några av de mer komplexa exempel att jag inte skulle göra rättvisa i klassen, att vi kanske inte ha tid för i klassen, eller du kanske bara zon ut under, är att vi kommer att producera en serie av genomgångar av dessa exempel så att om du går till, för exempel, förra fredagens video sida här enligt exempel, ser du att för fredag, finns det nu här länka till genomgångar. Och formatet för dessa kommer att förändras över tiden. För nu, använder vi en enkel YouTube spellista. Men vad jag gjorde med vårt produktionsteam efteråt gå igenom varje och en av dessa exempel igen, förhoppningsvis peka ut i mycket större tydlighet exakt vad de hämtställen kan eller bör vara från vardera. Så hittar du till exempel från förra vecka, alla scratch exemplen Vi gick igenom görs linjärt på det sättet. Så välkommen att engagera eller inte engagera sig i detta material. Verkligen ett tema för denna kurs är att det finns förmodligen mer i vägen för resurser än du skulle kunna absorbera över loppet av en termin. Men det är avsiktligt. Det är tänkt att vara så att du som enskilda elever kan själv välja baserat på din lärstil. Så om föreläsningar fungerar för dig, bra. Om delar fungerar för dig, bra. Om genomgångar fungerar för dig bättre, bra. Det verkligen kommer att vara upp till dig att välja vilka resurser som fungerar bäst för dig. Slutligen, tack vare en före detta elev av Självklart ger vi också en kanonisk uppsättning rits anteckningar. Så istället har ni huvuden i föreläsningar klottra ner saker som kommer upp i klassen, vi, de personal, kommer att förse dig med vad vi känner är en kanonisk uppsättning noter till befria dig av denna distraktion, så att om du är här och engagerad, är du verkligen engagerade med vad som händer, med dina klasskamrater gör upp scen, med vad som händer på skärmen, och inte bara skriva ner ordagrant vad hände med har sagt. Så inser alla dessa resurser finns tillgängliga för dig. Sektionering, som svar på en FAQ, börjar denna onsdag. Vi väntar huvudsak förrän efter att de flesta andra klasser gjort så att vi kan minimera antalet förändringar att vi måste göra. Men kommer upp i helgen, med start Söndag, kommer att bli en en gång instans av vad vi kallar super sektioner. Dessa kommer att filmas för dem som inte kan delta, och i huvudsak, den kursens huvuden kommer att gå oss igenom några av C delen av kursen, mot en ände av problemet set en, som kommer att vara vår första C bygger problem set. Och dessa kommer bara vara valfria avsnitt i väntan på vad som kommer bli återkommande ledde sektioner av kursens 50 plus Undervisning Fellows vecka. På söndagar eller måndagar eller tisdagar, vi har 90 minuten sektioner i en mycket traditionell mening, som kommer att vara möjligheter för händerna på och mer intim översyn av kursens material. Utan vidare, låt mig presentera kursens huvuden, som är bakom kulisserna med mig, göra allt hända. Om de här i dag kunde gå med mig, Rob och Lauren och Joseph och Lucas, alla av dem har varit med kurs för en viss tid. RJ är den tredje medlem av vårt team. Han kunde inte vara här i dag, men han bad mig att visa en bild av honom. Jag är inte säker på att han ville ha detta en, men det är han. Och låt mig bara att gruppen skall kunna säga hej och presentera sig så att du lär känna dem så bra som din egen undervisning karl denna term. LAUREN CARVALHO: Hej. Mitt namn är Lauren Carvalho. Jag är bosatt handledare i Leverett House. Jag är super också glada att vara en head-TV för CS50 detta år. CS50 är en mycket utmanande klass samt som en mycket stor klass, så om du har några funderingar, om du känner du efterkälken, gärna nå ut till någon av oss på heads@cs50.het, eller till mig, om du skulle gillar att leka med min golden retriever valp. Här är Lucas. LUCAS FREITAS: Hej, grabbar. Mitt namn är Lucas Freitas. Jag är en junior [OHÖRBAR] datavetenskap och lingvistik. Jag är faktiskt från Brasilien, och jag också inser östasiatiska studier. Så om du har några frågor om datavetenskap eller språk eller någonting, så låt mig veta. Eller CS50, speciellt. JOSEPH ONG: Hej. Jag är Josef. Jag är en senior studerar dator vetenskap i Elliott House. Så, låt oss se. Du ser mig omkring bär en av dessa enorma kameror. Jag är bosatt personal fotografen för 50 också, och eleverna ofta ibland misstar mig för en asiatisk turist. Så om du ser mig med en kamera, inte springa iväg. Bara le och inte vara blyg. Och jag hoppas att du tycker om 50. Jag gillade det väldigt mycket när jag tog det, och det är därför jag har TFing för dessa tre år. ROB BOWDEN: Hej. Jag är Rob. Detta är min fjärde termin med CS50. Jag tog bara i maj. Jag var i Kirkland. Jag är glad för den här terminen, och jag hoppas att du är för. DAVID MALAN: Tack till årets huvuden, och till RJ liksom. Så några sista anteckningar på resurser. En, som p 0 är redan uppe. Detta finns bara i standard upplaga, som är avsedd för den helhet av klassen. Börjar med p set 1, kommer det att finnas hacker upplagor av de flesta problemsamlingar, vilket, återigen, kommer att täcka material med lite mer av en utmaning, medan fortfarande röra på vissa av samma ämnen. Tar en titt på kursens hemsida för att specifikationen för p set 0. Kontorstid, även kommer att börja denna vecka, ikväll, i morgon, onsdag, och torsdag i olika restauranger hallar på campus. Kolla in cs50.net/ohs för kontoret timmar för kursen, och inser detta kommer att vara mycket tillfälliga möjligheter, förvisso, i början av den termin, för att komma förbi med din laptop under hjärnans paus. Ta några vänner och chatta upp kursens TF och CA med någon frågor som du kan ha. Och jag kan inte nog betona, även för scratch och problem set 0, där verkligen ingen dum fråga. Det finns ingen elev alltför obehagligt att ställa frågor. Tveka inte att ta tillvara av denna resurs. Det kommer att vara där återkommande och hela terminen, som kommer CS50 Diskutera. Detta är kursens online-diskussion forum på den adress där. Vad ska vi också göra under föreläsningar är också övervaka detta, tack vare kursens lärarlag. Och så om du har en fråga under föreläsa, eftersom jag sa något dåligt eller inte alls, med alla medel, be att i realtid om du har din laptop eller telefon på hemsidan, och Vi ska göra vårt bästa i nära realtid till svara på det. Finns det några frågor om CS 50? Så en sista tonerna av mina. Att frågan om SAT UNSAT. När du slutför dina studieresultat kort, om du har inte redan, inser att övergripande vision av SAT UNSAT, tillgängliga för alla elever, är verkligen att hjälpa till att ta udden av en kurs så här, så att säga, så att om du hitta dig själv sent på natten, 02:00, 03:00, verkligen bankar ditt huvud upp mot väggen där du vet att du är 99% av vägen dit till slut, men du har så många andra saker att göra, Jag tror att en bättre användning, ofta, av elevernas tid är att faktiskt gå vidare till dessa andra saker så att du kan optimera din tid runt. Och SAT UNSAT är en mekanism via vilken du kan ta tröst i det faktum att 99% av vägen finns fortfarande ganska bra. Likaså också, om du har kommit in i Naturligtvis med någon tidigare bakgrund eller inte alls lika mycket bakgrund som du tror att dina klasskamrater kan ha, sant eller falsk, inse att detta är en möjlighet att få händerna smutsiga med kursen, sätta tårna i vatten, så att säga, ungefär som jag själv gjorde år sedan med godkänt / underkänt. Som jag sa förra veckan, hade denna kurs, liksom andra, inte varit tillgänglig godkänd / underkänd på den tiden, skulle jag förmodligen inte någonsin har satt sin fot i klassen, även om jag gjorde det, fem veckor senare, ångrar mig, som du kan lika gärna, och växla över till eller från brev graderad status. Okej. Så vi tittade på saker som detta på Fredag, och vi är mycket snabbt gå övergång till något som ser mer kryptisk idag. Men det är ändå den samma grundtanke. Vad var den allmänna term som vi används för att beskriva en pusselbit som såg ut så här? Så, ett uttalande. Och du kan kalla detta något antal saker. Men vi ska bara kalla det ett uttalande, och ett uttalande bara talar om för programmet - eller i fallet med Scratch, sprite - att göra något. Säg hej i det här fallet. Ungefär så här vi istället kallas vad? Ja, så ett booleskt uttryck. Ett booleskt uttryck är bara något det är sant eller falskt, och så Scratch drar dem med denna form, men också med ett frågetecken för att förmedla Tanken att svaret på denna fråga är antingen sant eller falskt, ja eller nej en, 1 eller 0. Och vi använder dessa booleska uttryck insidan av konstruktioner som dessa, som vi kallas vad? Så, tillstånd eller gren. Och det skick du ser här i Scratch har en liten platshållare för ett pusselbit i den formen, syftet vilket är så att du kan dra och släpp den ovanpå och sedan diktera till programmet om detta Boolean uttrycket är sant, gör denna uppsättning instruktioner, denna uppsättning av påståenden, annan göra detta andra set av instruktioner. Och minns att du kan häckar dessa saker. Även om det inte finns mycket utrymme visuellt i denna pusselbit, Scratch kommer att växa och krympa för att passa vad pusselbitar du drar och släpper in det så att du faktiskt kan bo här och har en tre sätt vägskäl. Om, annars om, annars. Och du kan även gå längre än så genom nesting längre och längre efter behov. Så slutligen, såg vi konstruktioner som detta, annars känd som en slinga. Och detta är bara något som gör något igen och igen och igen. I detta fall händer det att vara en ändlig antal gånger, men vi också såg ett exempel där antalet gånger kom från en variabel, så det kan förändras. Och vi såg också ett annat block helt kallas ett evigt block som tillät oss att slinga oändligt lång. Så en annan konstruktion som Scratch 2.0 har - och de av er mer bekväm med tidigare bakgrund är redan väl förtrogen med detta konstruera - dessa saker vi kallas vad? Så vi kallade dessa funktioner, annars kallas rutiner. Det finns en liten semantisk skillnad, men vi kallar dem bara fungerar. Och en funktion, i fallet med Scratch, är en anpassad pusselbit som du själv kan skapa så att du har en ny pusselbit som, i det här fallet, skulle kallas hosta, som noteras som alla de andra tillgängliga pusselbitar i Scratch. Även om MIT uppfann inte denna pusselbit, det gjorde du. Så en funktion gör att du kan skapa nya beteende, ge det en funktion namn, och sedan kalla det, så att säga. Verkligen använda den i program igen och om och om igen utan att behöva vänta för någon som MIT väg till uppfinna ny funktionalitet från Scratch. Du själv kan bygga dessa pussel stycken själv, och sedan återanvända dem i dina egna program. Och vi får se ett återkommande exempel av denna dag och framåt. Så idag, övergång vi nu till något mer svårbegripliga. Men i slutet av dagen, något mer kraftfulla och uttrycksfulla och mer representativa för den väg som vi ska vara på hela terminen under ett antal av språk - som av kod eller källkod. Och källkod, visar det sig, är inte vad en dator typiskt faktiskt körs. Källkod ser ut ungefär så här. Så detta är, igen, kanske den enklaste program som vi kan skriva in ett språk som kallas C. Vi kommer att börja retas detta isär innan länge, och om detta verkligen ser ut som grekiska för dig just nu, tro mig. Inom bara en vecka eller två tid, detta kommer att bli alltför bekant och faktiskt ganska representativ för allt komplexa exempel med där du kan också få mer bekväm. Men du kan inte bara köra det här slags kod brukar. Du måste göra det till något som själva datorn förstår. Och så för det behöver vi något vi kommer att kalla en kompilator. En kompilator är ett program som tar källkod, som du just såg, som ingång, och den producerar nollor och ettor som produktion, annars kallas objektkod. Och det är dessa nollor och ettor som kan se ganska så här att slutändan är förstås med din Mac eller PC. Om du någonsin har hört marknadsföring uttryck Intel Inside, som bara innebär att ett företag som heter Intel har tillverkat hjärnor i datorn - annars känd som CPU, centralenhet - och det är just det som förstår mönster av nollor och ettor. Och så genom att konvertera källkoden till objektkod genom denna process här att vi kommer att göra med ett par kommandon i bara lite, är du skapar mönster av ettor och nollor att de anställda på Intel har beslutat utgör vissa uttalanden. Nu vet jag inte riktigt vet vilka är vilken genom att bara kasta en blick på dessa nollor och ettor. De flesta människor i dessa dagar inte. Men någonstans i det finns ett mönster av ettor och nollor som representerar uttalande print. Någonstans i det kan finnas en annan satt av nollor och ettor som representerar begreppet evigt eller upprepa 10 gånger eller till och med jama, om det är faktiskt ett program som kan omfatta vissa ljud. Så kort sagt, har människan just beslutat, mycket som vi gjorde för ASCII - för bokstäverna i alfabetet förra veckan - människor har beslutat att även mer komplexa mönster av ettor och nollor representerar mer komplext beteende som att skriva eller säga eller jamar. Och så för idag, och till stor del framåt i terminen, vi tar för givet att någon har räknat ut hur man gör det mappning. Men vi, i överensstämmelse med denna idé om skiktning ovanpå arbetet med människor som har kommit före oss, tar för givet att detta pågår under huven. Men vi är mycket mer intresserade av bygga saker som är mer intressant ovanpå allt detta. Och så faktiskt, det första programmet vi skrev i Scratch var detta super enkla en, Hello World. Och du kan tänka på detta som den huvudprogram som styr Scratch s beteende som i fredags. Idag ska vi börja att översätta Skrapa pusselbitar i källkod i detta kallas språket C så att det såg ut så här på Fredag, med start idag och framåt, är nu kommer att se ut så här. Visserligen mer kryptiskt. Det är ganska störande och typ av sinne bedövande att se alla de citat och semikolon och parenteser och så vidare. Men om du börjar bry dig inte inte förstår, och ser verkligen vid kärnan av den vita texten på skärm, säkert du ser, som jag gör, "Hej, världen." Som linjer upp med lila uttalande där uppe, och det visar att sökordet huvud kommer att rada upp konceptuellt med när grönt flagga klickade. Så med andra ord, medan i Scratch, vi genomföra detta Hello World-program med dessa två pusselbitar, i C, vi kommer att genomföra det med dessa fyra något kryptiska rader. Men som vi dyka djupare i detta, kommer du se att var och en av dem vita tecken på skärmen faktiskt har några betydande innebörd, och de flesta av våra program kommer att ser strukturellt riktigt samma. Så ett uttalande, att vara tydlig, det såg ut som "Säg hej världen" på Fredag ​​kommer att börja leta gillar det här på måndag. printf ("Hello, world"). Och det finns några konstiga backslash n, det finns parenteser, det finns semikolon. Men i slutet av dagen, nyckeln takeaway idag är att allt vi gör översätter saker från bilden forma till textform. Så en loop som såg ut så här förra veckan kommer att nu se ungefär så här. Och låt mig förnekanden, precis som i Scratch, det finns olika sätt att uppnå samma mål. Samma i C. Jag tänker inte visa er den enda sätt att göra saker, men ett sätt att Översätt den här forever blockera till en slinga i C. Detta här, upprepa 10 gånger. Detta verkligen slags böjer emot den första gången du ser det. Men att genomföra det hädanefter, vi kommer att använda en för loop, så att säga. Och uppenbarligen finns det vissa syntax som är ett litet komplex där med jag och lika och 0, men när vi dyka in i det idag och framåt, du kommer bara att se att det är allt helt enkelt göra några grundläggande aritmetik för att få oss från 0 på upp till 9 eller 10 i detta fall. Slutligen, med variabler, kommer du ihåg att en variabel är en bit av lagringsutrymme. Tja, vad vi hade på vänster där förra vecka kommer att se lite ungefär så här den här veckan. Men återigen, för mer om det kommer. Vi hade booleska uttryck, vilket förra veckan, såg ut så här. Denna vecka framåt, kommer de att börjar se lite sådär. Och detta är faktiskt lite lugnande. Det är faktiskt nästan lika enkelt som de gröna blocken. Men här har vi, återigen, några nya syntax med et-tecken, men du kan kanske gissa medan i Scratch, du säger A-N-D, tydligen i C, är vi kommer att säga ampersand ampersand. Men allt detta kommer att bli naturligt före lång. Villkor. Förra veckan såg det ut som detta till vänster. Denna vecka, till höger, är det kommer att se ut så. Men återigen, är nyckeln takeaway här att som ni ser saker som på rätten, och särskilt om mindre bekväm, det slags över din huvud, får du lite överväldigad att Jag har verkligen ingen aning om hur jag kunde eventuellt komma med att från grunden - no pun intended - bara inse att det är egentligen samma idé som förmodligen kände så mycket mer naturliga förra veckan. Och även om du inte har dykt in Problemet set 0, jag förmodar att du hittar att pusselbitarna är ganska intuitiv, eller åtminstone blivit så med tiden. Så låt oss dyka i. Låt oss få våra händer smutsiga här med denna första enkelt program. Och enkel är naturligtvis relativt. För att göra detta, kommer jag att byta skärmar till den enhet jag heter CS50 apparaten. Den CS50 Apparaten är en bit av programvara som körs inuti en fönster på min Mac, och du kan även köra det i ett fönster inne i datorn, som tillåter mig att ha exakt samma datormiljö som varje TF, som varje CA, som varje elev i klassen. Eftersom CS50 apparaten är bokstavligen annat operativsystem kallas Linux - specifikt Fedora Linux - och vi, personalen, har konfigurerat installationsprocessen för detta operativsystem på ett sådant sätt att en, det finns en liten CS50 logotyp i mitten, två, det finns en egen meny på botten, och tre, pedagogiskt, Vi har förenklat användargränssnitt som mycket som möjligt så att när du först starta denna sak upp på egen hand Mac eller PC, har du samma miljö som alla andra, och du har alla de verktyg som du behöver för kursen utan att behöva räkna hur man installerar varje och varje verktyg för sig. Så här ser relativt som Mac OS eller Windows. I det nedre vänstra hörnet, du huvudsak har en Start-meny sorterar, eller en Apple-menyn. Och så har du vad vi misstänker kommer vara dina tre vanligaste ikonerna. En är Chrome. Det finns en webbläsare inuti av apparaten. Två är ett program som heter gedit, vilket vi såg kort förra veckan, vilket är bara en grafisk editor. Och tre är ett Terminal-program, vilket är en svartvit fönster från föredömen som tillåter oss att skriva mer svårbegripliga men mer kraftfulla kommandon våra tangentbord. Så jag kommer att gå vidare och klicka på gedit, och vara säker på att problemet sats 1, som släpps på fredag, kommer gå igenom alla dessa steg. Lägg märke till att jag har en ganska enkel användargränssnitt med tre delar. Till vänster har jag en stor tomt Fönstret kallas källkod. Det är där jag kommer att visa en sammanfattning någon kod som jag skriver. På höger sida, har jag en stor flik, är för närvarande inte sparats, och att där min kod kommer att gå. Och på botten, har jag en inbäddad Terminal-fönster, en svart och vit prompt vid vilken jag kan skriva kommandon till kompilera och köra mina program - att är, att göra och att köra mina program. Så låt oss börja enkelt. Låt mig gå upp till Arkiv, Spara. Jag kommer att gå vidare och gå in jharvard. Så apparaten, oavsett vad ditt namn är, tillhör en namngiven kille John Harvard, som har en jharvard hem inuti katalogen där alla dina filer kommer att gå. Det är ditt eget exemplar av hans konto, så vi är inte alla delar samma hårddisk. Du har bara en illusion av John Harvard egen. I förväg, faktiskt jag installerat Dropbox. Apparaten levereras preprepared med Dropbox så att om något går fel under terminen, om du har konfigurerat din apparat med en fri Dropbox-konto, alla dina filer automatiskt säkerhetskopieras så att du kan mycket enkelt återställa dem. Och jag kommer att gå in i min Dropbox katalog, och det finns redan pågår att vara ett par andra saker där. Men jag ska gå vidare och gå till Arkiv, Spara. Jag kommer att gå in i jharvard, Dropbox, och här uppe, kommer jag att ge mitt program en super enkel namn, hej.c, och sedan spara. Så jag har samma gränssnitt nu. Det enda som har förändrats är fliken där uppe. Så jag mycket snabbt kommer att återskapa det programmet från glider en stund sedan. Så in i main (void), och sedan printf, "Hej världen", en något kryptisk backslash n, stäng citationstecken, stäng parentes, semikolon, och sedan Ctrl S för att spara. Och meddelandet som ett undan vad som just visade sig här uppe till vänster. Och detta är inte bra idag, men kommer att vara användbart med tiden. Du ser bara, återigen, en sammanfattning av koden som du har skrivit. Och eftersom jag skrev något som kallas viktigaste, det är därför ordet huvud poppade upp där borta. Men för det mesta, vi behöver inte det idag. Okej, så jag hävdar att detta är min första program skrivet i ett programmeringsspråk språk som kallas C. Vi vet från fredag att vad denna sak kommer att göra mycket uninterestingly när jag kör det är bara visa - med andra ord, skriva ut, som en dator forskare skulle säga - hallå världen på skärmen. Så för att göra detta, kommer du att märka att jag har att gå ner hit till min terminal fönster, och nu har jag en blinkande prompt. Men detta är nu ett tangentbord version av min John Harvard hemkatalog. Det är ett vanligt tangentbord via vilket att navigera min hårddisk. Så jag kan faktiskt inte skriva som jag gjorde förra veckan gör hej, eftersom det är kommer att säga ingen regel att göra mål - något är fel. Jag vet inte riktigt vad det budskapet medel, men det beror på som standard, när denna svarta och vita fönster är öppnat, jag insidan av John Harvards hemkatalog. Men där gjorde jag sparar det programmet? I min Dropbox mapp. Nu har vi alla vuxit upp med datorer där du bara dubbelklicka på på en mapp ikon, det öppnas, och voila. Det är där filen som heter hej.c skulle vara. Så i själva verket, låt oss göra det. Låt mig gå vidare och minimera gedit precis som du gör på Windows eller Mac OS. Låt mig gå in på Home mapp överst till vänster. Jag ser här en massa mappar. Här är min Dropbox-mappen. Markeringarna betyder det har synkroniserats. Och det finns ett par saker här, men märker att hello.c är faktiskt rätt där. Och så i Mac OS eller Windows, normalt, Jag dubbelklickar skulle klicka på den, öppnar det upp i oavsett program, och jag är bra att gå. Men nu, åtminstone från och med idag, vi måste ta ett steg tillbaka bara för att ge dig några grundläggande verktyg för din verktygslåda som man kan göra mer kraftfulla saker inom kort. Så i den här frågan har jag att göra motsvarigheten till att dubbelklicka på Dropbox mappen. Och att göra det, kommer jag att skriva cd för ändra katalog, Dropbox, anger. Och nu märker parentesen på min så kallad prompt säger nu att jag är i tilde, den lilla snirkliga symbolen längst upp till vänster i de flesta tangentbord / Dropbox. Detta är bara förkortning notation för säger människa, du är nu inne på Dropbox-mappen, precis som om du hade dubbelklickat på den. Så nu om jag går vidare och skriver att hej, skriv, ser jag en väldigt kryptiskt kommando, men inte ett felmeddelande, det verkar, och sedan annan blinkande prompt. Och om ni minns, någonsin så snabbt på fredag, vi gjorde det här. . / Hello. Vad du är på väg att se är resultatet min kör detta program, eller, i Mac OS och PC-termer, om jag skulle normalt dubbelt Klicka på ett program -. en app program eller en. exe, öppnar det ett fönster och körningar. Skriva. / Hej är precis som dubbel klicka ett program för att köra det, men med mitt tangentbord. Enter, hallå världen. Och det är det. Så låt oss retas detta isär så det känns inte alltför mycket som grekiska. Så. / Betyder vad? Alla som någonsin navigerat ett tangentbord miljö som denna, vad är prick hänvisar till? Den aktuella katalogen. Så den aktuella katalogen är bara en synonym för en mapp. Så genom att säga dot snedstreck, säger jag, leta efter ett program som heter hej i aktuell katalog - i den aktuella mappen. Med andra ord, min Dropbox mapp. Och det är därför slå Enter därefter faktiskt kör programmet. Om jag nu typ LS, märker att jag ser allt i min Dropbox-mappen. Att få Started.pdf, som Dropbox ger dig gratis, mina foton katalog, en offentlig katalog som inte sparats Dokument 1, som jag gjorde av misstag en stund sedan, foo.c, som jag gjorde tidigare idag, och sedan två linjer - hej.c och hej. Hello.c är det program jag skrev med gedit, och vad är hello i grönt? Hello i grönt är körbara. Med andra ord, när jag körde detta kommando en stund sedan - låt mig rulla tillbaka i tiden - när jag sprang gör hej, det är mitt steg här. Och det tog hej.c som indata - AKA källkod - och det gav en fil som heter hej som produktion, vilket innehåller alla dessa nollor och ettor. Och det är därför, i slutändan, kan jag faktiskt köra ett kommando som. / hello. På grund av Intel Inside, mitt operativsystem systemet, Linux, öppnar dessa nollor och sådana, matar dem in i hjärnor på min dator - CPU - och att CPU vet, åh, här är ett mönster av ettor och nollor som säger skriva ut följande ting på skärmen. Vad är följande sak? Citat unquote, "hallå världen." Okej, så en snabb sammanfattning av några av dessa kommandon så att vi kan börja tar dem för givna. Låt mig hoppa vidare till där vi slutade. Och du kommer ihåg att vi hade CD på vår back end för en stund sedan. Dessa är, vågar jag säga, för dagens ändamål - kanske denna vecka - de enda kommandon vi skulle behöva skriva på kommandoraden föranleda förutom göra. Så CD stod för vad? Byt katalog. Det är bara motsvarar dubbla klicka på en mapp. Och som en parentes, om du får förlorat allt inne i ditt apparaten, så att Dropbox - Jag vill komma tillbaka till min jharvard Directory - när du är osäker, CD, in, med ingen annan ord, och det bara blixtlås du tillbaka till där du startade, vilket är en trevlig liten genväg. Okej, så nu andra kommandon. LS. Jag skrev att för ett ögonblick sedan. Vad tror du LS står för? Så, lista, eller hur? Tillbaka i dag, när människor kom upp med dessa kommandon, de försökte vara effektiv, och i stället skriva ut L-I-S-T enter, de beslutat LS. Det är bra. Det låter nog som lista. Låt oss bara typ LS in, och att listar filer eller mappar i min aktuella mappen. mkdir, kan du nog gissa. Gör katalogen. Så du behöver inte gå till någon arkivmenyn och välj Ny mapp i den här miljön. Snarare skriver du det utrymme kommandot mkdir och sedan namnet på mappen som du vill skapa, och det kommer att ske. rm, kan du nog gissa. Ta bort eller radera. Så om du vill ta bort en fil, kommer du se på problemet set hur du kan göra detta. Och rmdir, ta bort katalogen. Så, återigen, jag har en tendens att flyga igenom några dessa detaljer en,, eftersom de är inte så mycket roligt att spendera tid på, men två, ger vi dig mycket större detalj i något av de kursens problem ställer, särskilt de vanliga utgåvor, några av stegen som du kan behöva skriva så att du får mer och mer bekväma med dessa saker. Men låt mig nu retas isär en annan sak. När vi skrev gör hej en stund sedan, Vi såg en kryptisk sekvens av kommandon. Vi såg, återigen, gör hej. OK, låt oss göra detta. Jag var på väg att göra ett misstag, men [OHÖRBAR] nu erkänna att jag var på väg att och gör det medvetet. Vad har jag gjort för fel just nu? Ja, så jag är inte i Dropbox katalog, eftersom en stund sedan jag maskinskrivna CD och bara Enter. Det zoomat mig tillbaka till där jag började, vilket inte är där min fil är, så jag behöver verkligen göra CD Dropbox in, och nu kan jag göra rm hello in, ta bort vanlig fil hej. Jag vet inte varför det är så kryptisk. Det betyder bara att du är säker du vill radera hej? Du kan skriva y för ja, ange, och nu är det borta. Och nu när jag skriver gör hej igen, det är kommer att återskapa min objektkod, återskapa dessa nollor och ettor. Men vad är det med detta mycket långa kommando? Tja, vi retas detta isär före länge, men gör - Jag berättade lite av en vit lögn före - är inte en kompilator. Gör är ett program som automatiskt räknar ut hur man driver ett kompilator för dig. Så det kommando som du egentligen borde vara igång för att konvertera hej.c in hello faktiskt ser lite mer om detta. Och Gud förbjude att vi måste faktiskt kom ihåg att aldrig skriva att hela sekvens av kommandon ut. Syftet med att göra i livet är att kom ihåg att graden av komplexitet för oss och automatisera vad som annars vara mycket tråkiga steg. Men jag kan approximera det. Så per denna lilla lathund här, jag kan approximera vad detta kommando är göra genom att skriva klang, vilket är namnet på kompilatorn vi ska vara använda denna termin. Om någon av er har någonsin gjort iOS utveckling för iPhone eller iPad, Klang är det program du har använt inom Xcode för att göra dina appar. Klang, men är bara ett annat program vars namn vi kan skriva på kommandoraden uppmaningen, och genom att införa detta nu, Jag kan presentera något som är en liten representativ kommandon för att komma. Så låt mig göra detta manuellt. Så rm hej, och nu märker i fall Jag, precis som en sanity check - . / Hej, vad tror du jag ska se om jag gör det? Någon typ av fel. Ingen sådan fil katalog. Så att man är faktiskt ganska direkt. Så nu låt mig rensa skärmen. Kontroll S rensar bara skärmen att ta bort några distraktioner. Och nu ska jag till manuellt typ klang-o hej hej.c. Så vad handlar det här om att göra? Exakt samma sak som att göra gjorde för oss, men jag slängde bort en del av de överflödiga ord. Klang är det program som kommer att ta en. c-fil som indata och producerar nollor och ettor som utdata. Men-o hädanefter kommer att kalla en switch eller en flagga. Detta är bara techie jargong för att säga Detta är ett ord som du skriver på en prompt som påverkar på något sätt beteendet av det program du kör. Så inte vill att någon ska gissa vad-o förmedlar? Utgång. Det är bara någon bestämde-o betyder utgång en fil som heter hej och ta så input vad det sista ordet på prompt är, hello.c, så att om jag slog Ange nu, ingenting verkar hända. Och konstigt nog, i denna värld av programmering, om inget händer, det är förmodligen en bra sak eftersom det inte finns något fel meddelande på skärmen. Hej, Enter. Mitt program har nu fått. Men jag kan göra dumma små saker som detta. klang-o, hihihi, hej.c, in, och nu har jag en identisk program som heter hihihi. Det fungerar på samma, men namnet är annorlunda. Så detta är bara att säga att om du vill att påverka beteendet hos en program, kommer vi att alltmer se saker som kallas kommandoradsargument. Detta är en linje. Du skriver kommandon. Ergo kommandoraden. Och kommandoradsargument är bara ord eller små bitar av syntax som något sätt påverka beteendet hos program som vi kör. Okej, det är kanske den mest tråkiga program vi kan skriva och se. Låt oss nu göra något mer intressant. Låt mig gå vidare och skapa en ny fil. Jag ska gå vidare och spara detta i John Harvard hemkatalog som, låt oss kalla det custom.c, att vara en liten anpassat program. Jag kommer att zooma in på min topp flikarna här och börja om igen. Inkludera standard stdio.h. Mer om det i ett ögonblick. int main (void), mer på att i ett ögonblick. printf ("hej, David"). Mycket mer intressant, eller hur? Så nu om - inte på grund av mitt namn, bara för att det är annorlunda - gör beställnings in. Anpassad, hej, David. Men även det är också en vit lögn. Detta program skulle lika gärna kunna kallas david.c, eftersom det inte är anpassade beteende alls. Verkligen, jag vill ha ett program som frågar användaren för sitt namn. Så hur gör jag det? Nåväl, låt mig rulla upp hit. Och innan jag använder ett uttalande i Scratch, innan jag använder printf, annars känd som en funktion, låt mig först fråga användaren för lite input. Så för att göra detta, måste jag göra ett par saker. Ett, jag behöver en plats att lagra användarens namnge efter att jag har frågat honom eller henne för det. Vilken konstruktion behöver jag antagligen använda att lagra ett värde som? En variabel. Så till skillnad från Scratch, där du får bara ett trevligt pusselbit, här måste vi använda, naturligtvis, ord uttrycka oss. Och hädanefter, när som helst du vill ha en ord eller en fras, i programmering, vi kommer att kalla det en sträng. Så en sträng är ett ord eller en fras. Det är en sekvens av noll eller flera tecken, mer formellt. Och om du vill ha en sådan variabel existerar, har du att säga ge mig en. Och det sätt på vilket du gör det är att säga string s semikolon, där s kan vara vad du vill. I själva verket är s lite underwhelming. Låt mig gå vidare och mer klart kalla det namnet. Ge mig en sträng som heter namn. Men nu, vad är personens namn som standard? Tja, om det mänskliga inte skriva något in, självklart, det kommer att vara något värde i namn. Och det visar sig i C, om du inte ger en variabel ett värde, det kommer att har ett skräp värde. Det kanske har några slumpmässiga nollor och ettor, så du ska bara se skräp, verkligen, på skärmen om du försöker att visa det. Men jag kan fixa det genom att säga, faktiskt, butik inne i namnet efter värdet. Det sätt du lagra värden i variabler är om du har en variabel namn på vänster, måste du på något sätt sätta vad du vill spara i den på höger, och syntaxen för det kommer att vara följande. Vi har inte sett det här förut, men ta om tro för ett ögonblick att det finns ett annat uttalande i världen att jag ska återigen kalla funktionen, och denna funktion är heter får strängen. Och det gör bokstavligen det. Det blir på något sätt en sekvens av tecken från människa och sedan gör något med det. Och det ser ut som kryptisk syntax. Normalt, om du använder likhetstecken - du är i en värld av, säg, algebra, och du är faktiskt säger x är lika med 1. Här är vi inte säga att Namnet är lika få strängen. Vi säger butiken i namn vad på höger sida av det likhetstecken. Likhetstecknet representerar tilldelningsoperatorn. Det är den syntax som säger sätta vad som finns på höger insida vad till vänster. Så får strängen är en ny bit funktionalitet som inte bara något - frågar användaren efter en sträng - Det returnerar även det, så att säga. Så låt oss se vad som händer att hända här. Jag ska gå vidare nu och zooma ut, och jag kommer att få ett par misstag på min prompt. Jag kommer att skriva gör beställnings anger. Wow. En hel massa misstag. Okej, så detta är typ av överväldigande, förvisso vid första, men det visar sig alla dessa mycket visserligen kryptiska felmeddelanden är hänvisning till vissa mönster som vi kommer att börja se över tid. Så här ska jag plocka bort, eftersom det är först. Användning av odeklarerat identifieringssträng. Det betyder bara att gedit, eller klang, i detta fall inte vet vad jag menar med snöre. Och det beror i C programmering språk, det finns faktiskt är ingen variabel av typen string. C vet inte att strängarna existerar. Men vi, CS50 personal, gör. Och så i förväg av klassen, vi skapas en fil som heter CS50.h. Och insidan av denna fil - och mer om syntax för att komma - insidan av denna fil är en definition av vad jag just definierat muntligt som en sträng. Så enkelt genom att ingå detta en rad av koden i mitt program, är jag nu undervisning gedit och ringa och Clang alla dyker in vad en sträng är. Jag vet inte hur ännu. Inom några veckor kommer vi skal tillbaka det lagret. Men för nu, vet att det lär kompilatorn vad en strängen är faktiskt. Så nu låt mig klara mig terminal här nere. Låt mig åter springa göra egna, och jag löst alla dessa problem. Så även detta kommer att vara ett återkommande tema. Jag skrev bara en 9 rad program, och men jag hade 18 rader av fel. Det är ganska skrämmande. Men inser att de kaskad ofta sådana att ett litet misstag utlöser förvirringen för kompilatorn, och det ser mycket värre än det är. Så nu en skarpsinnig observatör vet att jag får en sträng från användare, men jag är faktiskt inte gör vad med det? Jag faktiskt inte gör någonting med det. Så om jag kör faktiskt egen igen, det kommer att bara sitta där. Vad är det som händer? Mitt program verkar ha fastnat på vilken linje, skulle du säga? Så det är faktiskt fastnat på rad 7. Och vi har inte sett det här förut, men på rad 7, det finns, återigen, detta uttalande, få strängen. Och det gör vad den säger. Det väntar nu för den mänskliga att ta strängen. Detta är helt intuitiv för mig, människan, eftersom jag inte har sagt vad man ska göra. Men låt mig gå vidare på tro och låt mig låtsas vara Rob. Enter. Det är inte det program jag tänkt. Så vi har vår första blogg. Men låt oss försöka att resonera igenom varför detta är fallet. Först, låt mig fixa detta första problemet. Låt mig lägga till en linje här som säger printf, vad är ditt namn? Låt oss bara göra nära citationstecken, nära parentes. Nu låt mig köra om programmet. Problem. Jag ser det. Rätt. Jag har inte kompilera det. Så på ett språk som C, eftersom du ändra källkoden betyder inte att du har ändrat din objektkod att generera nya objektkod, nya ettor och nollor. Du måste kompilera om. Om jag nu åter köra anpassningsbar, skriv, ah, lite mer tydlig. Mitt namn är Rob. Fortfarande buggy. Och jag skulle hävda att det finns ett par buggar nu. Det ser bara otäckt, ärligt talat. Liksom, minimalt, skulle jag ha ett utrymme där, eller flytta markören till den nya linjen. Och faktiskt, ny rad. Det är lite av en nyckelfras här att vi har sett, men inte definierat. Det sätt på vilket du får en text att gå vidare till nästa rad, du inte gör detta. Detta är förvirrande för datorn. Det ser ut som två separata linjer av kod, varav ingen är helt korrekt. Du måste i stället vara mer explicit och säga, ge mig en ny linje, vilket vi representerar i c med backslash n.. Så det finns några sådana tecken. Backslash n kommer att fixa det estetiska. Låt mig kompilera mitt program. Låt mig åter köra mitt program. Det ser bättre ut. Det är fortfarande ganska primitiv, men det är också fortfarande buggig. Så det finns en - även om du aldrig har programmerat tidigare, Du kan nog ta en gissning på varför detta program är fortfarande bristfällig. Vad behöver jag för att göra det Jag har ännu inte gjort? Så jag måste faktiskt göra något med namnet. Precis som i början, kanske du faktiskt tilldela en variabel som n eller motverka som vi gjorde förra vecka - ett värde. Men om du inte gör något med det, är ingenting kommer att hända. Okej, så låt åtgärda. Låt mig skriva min variabel där, och låt mig gå ner hit. Låt mig kompilera, låt mig repris, Rob. Nu är jag bara en idiot, eller hur? Så det här är egentligen inte att få mig längre. Men det var ett helt naturligt instinkt, skulle jag hävda, rätt? Om variabeln kallas namn, och jag vill att det ska gå dit, varför gör jag inte bara skriva det där? Jo, naturligtvis, har vi att skilja nu mellan vad som är ett snöre? Observera att citatet unquote här, hello namn? Detta faktiskt själv är en sträng. Det är hårt kodad. Det är inte från människa. Det är från mig, den ursprungliga programmeraren, men det är fortfarande en sträng. Så om du skriver bokstavligen N-A-M-E insida av en sträng, vad som händer med få ut? Tja, N-A-M-E. Vi behöver istället berätta printf, skrivs inte ut ut bokstavligen namnge. Skriv ut värdet av namnet. Och att göra det, gör vi följande. Och detta är bara en mänsklig konvention. Vi säger istället% s, och att står för sträng. Och sedan i slutet av mina nära offerter, Jag kommer att sätta ett kommatecken och passerar en andra argument till detta uttalande. Jag kommer att skriva namn där. Så nu märker vi en något nytt syntax. Vi har fortfarande två parenteser, och hädanefter låt mig säga att saker mellan parentes representerar argument till en funktion - ingångar som på något sätt går att påverka dess beteende. Så genom denna logik, hur många argument verkar printf vara tar i detta ögonblick? Så det verkar ta två, och det är verkligen underförstådda med kommatecken här. Så detta är ett argument i mellan citationstecken. Även om det har ett kommatecken i den, allt är inom citationstecken, vilket innebär det är en lång sträng. Comma, variabelnamn. Så låt mig nu zooma ut. Låt mig åter köra det. Rob. Fan, vad gjorde jag för fel? Okej, så du måste kompilera. Så återigen, för enkla misstag göra tidigt igen och igen. Så nu åter köra anpassade, Rob, in, och voila. Vi har nu ett anpassat program. Så jag har nu ett program som med några egenskaper som är värt att notera. Ett, jag använder CS50.h, annars känd som CS50 biblioteket. Och insidan av CS50 bibliotek funktioner som andra människor skrev - nämligen personal - för dig att använda, och få sträng är en av dem. Inuti linje 2 är stdio.h, och varför är det där? Ta en gissning. Vad finns inuti standard IO förälder? Printf. Så printf, ser du inte det någonstans annanstans på skärmen. Det måste komma med dator på något sätt. Var kommer det ifrån? Det är inne på - det är förklarat, så att säga, insidan av en fil som heter stdio.h. Nu, för det här, vi kommer tillbaka att så småningom, eftersom det är en bit störande för nu. Detta syftar på vår returtyp. Detta hänvisar till ett argument. Men för idag, vi fokuserade bara här på dessa linjer. Så string namn, bara för att sammanfatta, vad gjorde det göra för mig? Så det förklarade en variabel av typen string. Så det är tänkt att vara för ord, inte för siffror. Precis som en parentes, om jag ville ha det att finnas ett antal, skulle jag säga något som int. Om jag ville vara ett flyttal värde, något med en decimal, Jag skulle säga float. Men för idag, jag sa bara sträng. Och jag har gett denna variabel ett namn på namn, men jag kunde har kallat det något. I själva verket, ursprungligen, jag kallade den S. Det här är bara ett annat uttalande. Hur många argument är detta uttalande tar? Så det är bara att ta en, och att är helt enkelt en estetisk detalj visa något på skärmen till mig. Vad är denna linje 8 gör i lekmannatermer? Det blir ett värde från användare - nämligen en sträng - och vad det gör med den? Det är i huvudsak den överlämnas till killen på vänster sida av likhetstecken så att i detta fall, den namn variabel kan faktiskt lagra den. Och sedan printf är en annan instans av en funktion. Och vi säger att anropa en funktion. Om du vill använda en funktion är att anropa en funktion. Denna sak tydligen tar två argument. Detta, kommatecken, här. Detta i sig är bara en sträng som innehåller en platshållare. % S medel sätta en annan sträng här. Och så genom att sätta namn efter kommatecken, det är sätta den sak för mig. Så jag kan göra andra saker ändå. Låt mig gå vidare nu och göra en bit av en dumt program, men låt mig ta bort detta, och låt mig skapa en loop. Medan sant. Symbolen sant är naturligtvis alltid kommer att vara sant. Så vilken typ av loop jag inducera genom att skriva en rad som denna? Så en oändlig loop, eller hur? Just medan sant. Det finns inget sätt jag kan ändra ordet sant att vara något annat, så det är bara att köra för evigt. Så om du någonsin har faktiskt haft ett program i din Mac eller PC som verkar att ha låst upp, eller det gör någonting och någonting, och du bara kan inte få saken att sluta om du inte starta om datorn eller dra upp Aktivitetshanteraren eller liknande, Här är ett sådant exempel. Jag kan säga, "Jag är en buggy program." Stäng citat, stäng parentes, semikolon. Så återigen, märker mönstren. Även om några av vår syntax är ny, nyckelordet medan sökordet sant, märker jag har samma typ av klammerparenteser. Jag har fått ett semikolon och parenteser. Så nu ska vi gå vidare och sammanställa detta. Gör beställnings, beställnings. Så på denna punkt, behöver du inte starta om maskinen, okej? Så den enkla lärdomen här är med två fingrar, Kontroll C, Vi ska avsluta det programmet. Men du kan se exakt varför denna sak var att upprepa sig om och om igen. Jag kan göra något lite mer komplext som en teaser. Jag kommer att gå vidare och säga följande. För int, vilket är ett heltal, är jag bara ett generiskt namn vi ger till de flesta variabler i programmering när du är bara räkna, är lika med 0. Låt mig gå vidare och säga när jag är, låt oss säga, mindre än 100, jag plus plus. Vi kommer tillbaka till denna syntax, men det betyder bara öka jag igen och igen. Och vad vill jag göra här? Printf, "Jag kan räkna till i.." Detta är en buggy program. Vad gjorde jag egentligen tänker här? Procent inte s, men du skulle inte gissa detta. % D är ett heltal. Comma jag. Låt mig rulla tillbaka. Låt mig nu kompilera med make. Låt mig nu köra med anpassad. Jag kan räkna riktigt jävla snabbt när Jag skriver ett program som detta. Nu ska vi göra något lite oavsiktligt. Hur ska vi göra detta samtidigt som jag är större än eller lika med 0. Vad är det här går att framkalla? Så logiskt, är det inte så klokt, för nu om jag kör här, berätta, Jag kan nu räkna riktigt, riktigt högt. Tyvärr, ungefär lika högt som jag kan räkningen är 4 miljarder, så detta kommer att ta ett tag. Så varför inte vi lämnar detta som vår cliffhanger, lovar att på Onsdag, vi får se om det detta program görs. Två, kommer vi att presentera hur du själv skriva en egen funktion så att mycket snabbt, onsdagen, vi ska, som vi övergång från Scratch i C, startar skriva alltmer komplex program som gör mycket, mycket mer än detta. Vi kommer att se dig då. [Applåder] Högtalare 1: Vid nästa CS50, Puzzle Day var en succé.