DAVID J. MALAN: Så detta är CS50. Och detta var CS50 egen Colton Ogden, för mer av vem som är musik som du kan hämta på soundcloud.com/cs50. Så idag fokuserar vi allt mer om konsten att programmeringen. Och vi tar när vi lämnade off i förra veckan, med fokus på Scratch, som var här grafiska programmeringsspråk. Och ta ner saker till en lägre nivå, med användning av en mer traditionell programmering språk kallas C. Men längs vägen, förverkliga att samma idéer som vi talade om i fredags återkommer inte bara i detta språket C, men i de flesta alla andra att vi tittar på den här terminen. Så vi kallade denna sak Här vad förra gången? Detta är representativt för ett uttalande. Så vi kallade detta ett uttalande. Och den gör något. Det är en instruktion om att en dator eller Scratch kan exekvera. Och hädanefter ska vi också börja ringer ungefär så här en funktion, skäl får vi snart se. Samtidigt såg vi saker som detta. Och dessa är i allmänhet känd som vad konstruera? PUBLIKEN: Loop. DAVID J. MALAN: Så en loop. Så ganska enkelt. Det gör bokstavligen vad den säger. Och i Scratch, om du vill klämma fler pusselbitar där, pjäsen kommer att växa för att passa den. Och vi får se i C som Vi kan göra samma sak. En annan typ av slinga, fast, i Scratch kan vara för evigt, eller finns det något nummer av andra metoder. Men låt oss ta en mer generalist look, med ett ansikte det är sannolikt ganska bekant, på loopar mer allmänt. Mark Zuckerberg: One sak som datorer är riktigt bra på är upprepa kommandon. Som person, skulle du få riktigt uttråkad om du var tvungen att göra samma sak massor av gånger i rad. Men en dator kan göra samma sak miljoner eller till och med miljarder gånger, och inte bli uttråkad, och kunna att utföra den riktigt bra. Så till exempel, om jag ville önska alla på Facebook på födelsedagen genom att skicka en e-post, det kan ta mig mer än en talet att faktiskt skriva ut alla dessa e-postmeddelanden till alla. Men med bara några rader kod, kan jag har ett system skicka ett mail till alla på Facebook önskar dem en trevlig födelsedag. Så det är vad loopar är och varför de är värdefulla och något att datorer kan göra mycket bra. DAVID J. MALAN: Så om du har varit mottagaren av några av CS50: s och Dropbox utrymme för sent, det är faktiskt precis vad vi gör, med hjälp av koden riktigt gillar det. Vi har i huvudsak en stor kalkylblad i vilken folk har mata in sina namn och e-postadresser. Och vi skrev en liten bit av kod som kan iterera över dessa adresser och spotta ut unika adresser i fall någon lämnat in flera gånger. Och därefter skickar vi en automatiserad e-post från CS50: s bot, inklusive kupongkod. Nu har vi också tittat på detta konstruera förra gången. Och detta är ett särskilt exempel på vad? Så, ja, ett booleskt uttryck. Och formen menas att fånga det också. Alla sådana frågor till bilda sant eller falskt i Scratch kommer att se ut ungefär så här. Och vi kallar detta ett booleskt uttryck. Det är förvisso sant eller falskt, ja eller nej. Det är ett sätt att svara på en fråga. Och tiden kan du använda dessa Boolean uttryck inuti konstruktioner som dessa, vilka av Naturligtvis finns förutsättningar eller grenar, ökända gafflar i vägen. Och de kan se inte bara så här, men de kan också har elses associerade med dem. Och du kan faktiskt ha en tre sätt vägskäl eller en fyra sätt gaffel i vägen, helt enkelt genom häckar dessa saker, som du ser i Scratch Om du inte redan har. Och som du kan göra i C också. Låt oss ta ett annat generalist titta på ett alumnist, liksom, som kan utgöra en annan strategi dessa saker som kallas villkor. BILL GATES: Människor gör beslut varje dag. Till exempel, innan du går utanför du typ av har en if-sats som säger, om det regnar då jag måste få min jacka. Och datorer är fantastiskt när du bestämma dessa typer av uttalanden, att de på ett tillförlitligt sätt kan utföra dessa saker på otrolig hastighet. Och så ett datorprogram egentligen är en liten bit av matematik och en del om uttalanden där beslutet skickas ut. DAVID J. MALAN: Så som ni kanske vet var det folk som Bill Gates, Paul Allen, m.fl. som verkligen sparkade igång s.k. persondator revolution för några år sedan. Jag trodde, innan vi dyker in några Administrivia, vi skulle relatera en berättelse från Albuquerque, New Mexico Museum of Natural History och vetenskap där några av Bill Gates och Paul Allen tidigaste berättelser berättas hur vi har nu dagens PC och Mac och mer. För detta, men vi behöver två frivilliga som har mycket bra berättande röster att läsa ett manus högt. Okej, vad sägs om på baksidan där. Kom upp. Och vad sägs om framför här. Kom ner. Ta dina platser här. Som ni kommer upp, ett par administrativa meddelanden. sektionering, processen att välja ett avsnitt, startar här Onsdag till fredag. Mer om det här kommer Onsdag i föreläsningen. Super sektioner, tiden är något som vi erbjuder nästa vecka varvid hela klassen är inbjuden att delta i ganska stor skala sektioner, en mer bekväm, en mindre bekväm. Och vi kommer att meddela de uppgifter av det, liksom, senare i veckan. Samtidigt sektioner själva, startar i vecka tre av kursen, noll index, vilket innebär de är ett par veckor ut. Så att inte oroa dig. Du har ännu inte missat något i den stilen. Under tiden i tiden, om du har några frågor administrativt, maila mig och Devon och Gabe och Rob på denna adress här. Slutligen, problembild 0 är naturligtvis ut. Du kanske har märkt det på kursens hemsida. Det borde ge dig alla svar på frågor du kan ha på vägen för komma igång med problemet set. Men om du befinner dig i behov av en hjälpande hand, med alla medel går kontorstid, Måndag, tisdag, onsdag, torsdag av denna vecka på kvällen i fyra matsalarna. Se den webbadressen där för de uppgifter var kontorstid ska vara. Nu Låt oss möta våra två gäster här i dag. Vad heter du? JAY PAUL: Jay Paul. DAVID J. MALAN: Jay Paul, trevligt att träffas. HIKARI: Hikari. DAVID J. MALAN: Hikari? HIKARI: Hikari. DAVID J. MALAN: Hikari. Trevligt att träffa dig också. Jay Paul och Hikari har i Framför dem på dessa musik står två manus som jag tryckt ut i morse från New Mexico Naturhistoriska museet och vetenskap. Och vad jag tyckte Jag skulle göra på overhead är följa din recitation av manus och denna historia med vissa visuella bilder, inga överraskningar. Och vad jag har gjort i förväg är prehighlight på ditt manus vad du ska läsa, och vad du bör läsa. Och vi kommer i huvudsak bara alternativa stycken. Så det är ungefär som du kanske har gjort i engelska klass. Det är verkligen tvinga publiken att tro på din berättelse här. Ska vi? Så historien här är, vi har en BASIC, och den börjar i Cambridge. JAY PAUL: Det var vinter, 1974, i Cambridge, Massachusetts där vintrarna kan vara kalla. En skäggig, långhårig college dropout namnges Paul Allen ades drudging tvärs Harvard Square, försjunken i sina tankar. Hans främsta intresse på den tiden var hur man får sin vän, Bill Gates, sluta skolan och gå in i affärer med honom. HIKARI: De två hade redan gått genom ett antal affärsprojekt tillsammans, med början vid Lakeside skola i Seattle där De betalades gratis dator tid testa en PDP-10 dator i lokal tid dela bolaget. Den senaste planen hade varit att sluta skola och bildar ett mjukvaruföretag. Allen hade lämnat Washington State University. Men i sista minuten, Gates beslutade att hålla fast vid Harvard. JAY PAUL: Den dagen, passerar Harvard Square, spotted Allen i januari 1975 numret av Popular Electronics med jorden stopp rubriken, Världens första mini Kit att konkurrera Kommersiella modeller. Under rubriken var en bild av en liten låda prydd med ljus och switchar. Den kallades MITS Altair 8800. Och Allen visste att detta var vad Han hade letat efter. HIKARI: Days of diskussion följde. Allen och Gates förstått betydelsen av Altair. De hade talat ofta om mikroprocessorer och väntade för att se vad skulle göras med dem. Nu fanns det en minidator kit på omslaget till Popular Electronics. Den hade tydligen ingen programvara ännu. De föreställde sig en nation av programmerare fallande på MITS. Och så de kallade Ed Roberts, chefen för företaget, påstår sig ha en version av BASIC programmeringsspråk nästan klar för Altair. De gjorde det inte. Och Roberts måste ha vetat att de inte gjorde det. Han var att få 10 samtal om dagen från människor som hade en BASIC nästan klar. Och hans lager svar var, "Den första personen som dyker upp med en fungerande BASIC får kontraktet. " JAY PAUL: Gates och Allen hade aldrig sett en Altair. De hade aldrig ens sett Intel 8080 mikroprocessor i hjärtat av Altair. Men ett par år tidigare Allen hade skrivit ett program på en stordator som emuleras driften av en tidigare Intel mikroprocessor. Och den här gången de skulle göra samma sak. HIKARI: Med en Intel 8080 manual vid sin sida, Allen satte sig vid ett Harvard PDP-10 dator och skrev emulatorn och programvara verktyg som behövs för att göra programmeringen. Samtidigt Gates slutat gå till klasser och ägnade sig att utforma BASIC, använda varje trick han visste att få storleken ned under 4 kilobyte. JAY PAUL: Ut i Albuquerque, Ed Roberts fick ett samtal från Gates ber om information om hur Altair hanterat specifika rutiner. Ingen hade någonsin frågat förut. Och Roberts började bli intresserad. HIKARI: Med utvecklingen verktyg och designen klar, Gates och Allen skrev koden på PDP-10, värva en annan Harvard student, Monte Davidoff, att skriva matematiska rutiner. Efter en sista natten av programmering, Allen fick på ett plan att leverera sina BASIC till MITS. Han tillbringade planet rida ut oroande. Och tillbaka i Cambridge Gates var oroande. De hade testat sina BASIC och det hade fungerat på emulatorn. Men vad händer om emulatorn var fel? JAY PAUL: När planet närmade Albuquerque, Allen insåg att deras BASIC, nu prydligt inne på en liten rulle av stansade papperstejp, skulle vara värdelösa utan separat Programmet, som kallas en lastare, som skulle tala om Altair hur att läsa papperstejp varelse matas in i teletype maskinen. Han tog fram sin anteckningsbok och snabbt klottrat ner en hanteringsprogram i Assembler, sedan manuellt översatt det in i 1s och 0s Altair skulle förstå. HIKARI: Allen väntade en rent, litet, högteknologiskt företag drivs av män i kostymer. Så han blev förvånad när Roberts träffades honom på flygplatsen ser ut som en ranch handen. Roberts var också förvånad. När han tappade Harvard programmerare på ett dyrt hotell, Allen hade att erkänna att Han hade inte råd rummet. JAY PAUL: MITS, själva var som ligger i en dammig remsor köpcentret. Inne på en rörig arbetsbänk var en Altair laddat upp med fem kilobyte minne och ansluten med en kabel till en teletype maskin. Roberts och chefsingenjör, Bill Yates, väntade förväntans såsom Allen växlas hans loader program i Altair. Den teletype började chugging som det dras papperstejp genom tejpen läsaren. Det tog kanske 15 minuter att ladda programmet. Då teletype plötsligt tryckt en minnes prompten, sedan en klar uppmaning, och Allen började skriva några prov kommandon. Till allas förvåning, mjukvaran arbetade. Det var fel, förstås. Men det viktigaste var att det fungerade. HIKARI: Senare, på väg till en $ 3,00 lunch på Pancho s, flög en geting i fönstret i pickup lastbil och sved Allen på armen. Men på den punkten inget kan förstöra stämningen. Altair hade nu sin BASIC, den första kommersiella mjukvara för ett hem dator, gjord av Paul Allen och Bill Gates, göra affärer som Microsoft. DAVID J. MALAN: Många tack vare våra två läsare. [Applåder] DAVID J. MALAN: Nu du har ditt val, innan du reser, en glittrig eller en glöd i dark-- oh, vänta en sekund, wait-- glittrig och en glöd i mörker elefant från CS50 egen Cheng Gong. HIKARI: AW, tack. DAVID J. MALAN: Alla rätt, tack så mycket. [Applåder] DAVID J. MALAN: Så sann historia. Detta är att säga att alla dessa maskiner och den lätthet med vilken vi använda dem nu och ta för givet, egentligen började här, bara några steg från denna faktiska teater. Och nu i dag, om du inte har varit, detta är Maxwell Dworkin, datorn Sciences Building, också runt hörnet. Och på andra våningen i denna Byggnaden gör hänger tre sidor från den ursprungliga källkoden som Bill Gates och Paul Allen skrev. I själva verket om användning du zooma in kan du inte bara se deras namn i originaltyp, men också sina underskrifter att de smyckade en några år tillbaka när de senast besökte. Men vad var särskilt övertygande om detta är vad de föresatt sig att göra var att skriva ett program som skulle göra det möjligt för andra att skriva sina egna program. På den tiden alla fanns med denna Altair maskin gjord av MITS. Och allt de behövde var en bit av vilket gör det enkelt för hobbyister och människor att vi i detta rum att faktiskt program som utan att nödvändigtvis förstå Assembly kod, eller maskin kod, eller Gud förbjude, 0 och 1. Vi programmerare, som de i det här rummet, vi vill kunna uttrycka oss mycket mer som pseudokod även om det är lite mer nit kräsen än vi pratade i förra veckan. Vi vill inte skriva kod som den här, som Paul Allen och Bill Gates gjorde. Vi, i stället vill skriva kod som ser lite mer användarvänlig. Nu är det här ett språk som kallas BASIC. Och radnummer det är vad du använda för att helt enkelt numrera alla kodrader som du skriver. Vi behöver inte ens att gör att dessa dagar. Men du kan se här hur PRINT "Hello, world" skulle faktiskt förmodligen skriva ut just det. Och så vad Bill och Paul gjorde var ge människor möjlighet att skriva kod som denna istället of-- om du tar en titt på den datavetenskap wall-- koden så här. Faktum CS50 nyligen haft möjlighet att sitta ner med professor Harry Lewis i datavetenskap avdelning, som faktiskt lärde Bill Gates några år sedan, och står här innan dessa tre sidor av utdrag. Låt oss ta en titt. HARRY LEWIS: Vad du har här är en notering av en tidig mjukvara skriven av Bill Gates och Paul Allen, grundarna av Microsoft. Så koden är intressant för två skäl. Först av allt, det blev Microsofts första produkt, som var tolk för BASIC programmeringsspråk. Och för det andra, var det ett av de första försöken att skapa en tolk så vanligt människor skulle kunna använda datorer. Så Bill Gates var en grundutbildning vid Harvard. Jag började undervisa vid Harvard 1974. Detta gjordes 1975. Så det var i början av sin karriär och i början av min karriär. Jag faktiskt lärt Bill in en kurs vid den här tiden. Paul Allen var inte en Harvard student, men han hade varit en skola klasskamrat till Bill Gates. Om ni komma och titta vid noteringen, du ska faktiskt hitta en tredje namn, Monte Davidoff, som var Gates klasskamrat här på Harvard. OK, här är så en intressant kommentar här uppe. Det står "I 4K kan radera kvadratroten men för slingor ändå bör fungera. " OK, så vad det betyder är att det var två sätt att kompilera programmet. Det ena var att köra på en version av denna Altair dator som bara hade 4K ord minne, 4,096 ord av minnet. Men den stora versionen hade 8K. Och så vad det säger är att i den 4K version du var tvungen att ta bort en del kod för att få det att passa. Och en av de saker som skulle utgå skulle vara kvadratroten rutin. Men tydligen loopar bör fortfarande fungerar även när du sammanställa ner för bara 4K version av datorn. DAVID J. MALAN: Så en av de teman, som vi får se i datavetenskap, är denna föreställning om skiktning och abstraktion, och verkligen står på axlarna av folk som har kommit före oss, inte till skillnad från vissa av Bill Gates och Paul Allen berättelse här. Och vad detta innebär är att vi i dag kan ta för givet att saker är faktiskt lättare för oss att skriva kod. Faktum kod, som vi sade på fredagen, är mer tekniskt kallas källkod. Och det är denna engelska liknande syntax det är mer korrekt och mer väldefinierat än något som pseudo-kod, för vilket det inte finns någon formell definition. Och idag vad vi ska att fokusera på är källkod som ser ut så här, vilket visserligen vid första anblicken ser helt kryptiska. Och ärligt talat, det är mycket mer estetiskt komplex än den underliggande programmet. Allt det här programmet gör, minns, är det som vi säger? Den skriver bara "hej världen." Och ändå titta på alla de saker vi behöver att linda runt den mycket enkel fras. Men snart alla dessa linjer och fler kommer att göra mycket bättre känsla för dig. Och flödet är som följer. Vad vi behöver till vårt förfogande är att ta koden, som källa kod som vi såg bara. Och vi behöver ett nytt program att köra igenom det. Vi behöver algoritmer som kan konvertera källkod, som den här, i objektkod, 0 och 1. Med andra ord, vad vi kommer att lära oss i dag är hur man gör detta, skriv källkod där uppe, ge det som indata till en särskild program som kallas en kompilator, och vi kommer att producera objektkod. Vilket är bara ett finare sätt att säger vi kommer att ta något som ser ut så här, ge det in i ett program som kallas en kompilator, producerande objektkod som ser ut så här. Så dessa är bokstav de mönster av 0 och 1 som förstås av en Intel dator dessa dagar, att om den tolkas av CPU, hjärnorna insidan av en dator, kommer bokstavligen skriva ut, helt enkelt, "hello world." Nu finns det sätt fler 0s och 1s än du hoppas kan vara nödvändigt för detta. Men det beror på att vi bygger På en hel del av komplexiteten att vi hädanefter kan ta för givet. Med andra ord, en massa smarta människor har gett oss en massa häftiga verktyg och kraftfull programvara som vi kan nu göra projekt av våra egna. Så låt oss komma igång. Av följande skäl: i fredags, och för Problem Set 0 den här veckan, du kommer att spela i en värld som ser ut så här. Från och med idag och för problem Set 1 nästa vecka, koden kommer att se lite mer kryptiskt, men funktionellt är kommer att vara samma. Så varsel, toppen är Scratch, botten är C. Frankly Scratch är mycket mer användarvänlig vänliga och tillgängliga. Men om man nu jämför visuellt topp till botten, det är lite av en 00:59 överensstämmelse mellan pusselbitar och språket vi håller på att spela med. I synnerhet säga, den blå pusselbit upp överst, är tydligen motsvarande vad sökord eller särskild fras i detta språk heter C? PUBLIKEN: Printf. DAVID J. MALAN: Printf. Det innebär formaterad utskrift. Och det är bara en fantasi sätt att säga printf i C kommer att bli ett uttalande eller en funktion som skriver ut något på skärmen. Vad innebär det att skriva ut på skärmen? Oavsett vad du säger till insidan av citat, inuti parenteser. Så återigen, visserligen, det finns massor av saker att du måste tänka på, parenteser, citationstecken, semikolon, och allt detta. Men allt detta är en slags av ovidkommande. Det intressanta takeaway för nu är att säga blocket i Scratch är ganska mycket motsvarar printf uttalande i C. Under tiden den gula pusselbit upp topp, när grön flagg klickade, är förmodligen likvärdigt vad sökord här? PUBLIKEN: Main. DAVID J. MALAN: Så main. Kanske int, kanske ogiltiga. Men huvud typ av ljud som det är viktigt, och det är verkligen. Så när grön flagga klickas är, återigen, den pusselbit som drar igång en Hela Scratch programmet. Men vi ska nu börja ringa det viktigaste, denna funktion kallas huvud. Nu under tiden vi kommer generalisera detta på följande sätt. Vi kan kalla säga en funktion. Och det kan se ut speciellt så här. Nå, hur är det med loopar? Om vi ​​vill börja konvertera eller översätta mer i Scratch till C, denna sak här tydligen bara säger "hello world" för alltid. Så om du associera dessa skript med en katt i Scratch, det bara kommer att fortsätta säga i någon form av tecknad bubbla, "Hallå världen, hallå världen, hello världen ", till leda, för alltid. Om vi ​​vill göra något liknande i C, det kommer att se lite kryptiskt. Men vi kan uppnå samma resultat, eftersom vi kommer så småningom reda, med syntax som denna. Jag kommer att använda printf igen, eftersom i slutet av dagen Jag vill skriva ut "hallå världen." Och jag tydligen med hjälp av en sökord som inte är för evigt. Det är i stället ordet samtidigt. Men bara semantiskt i English, medan typ av föreslår någon form av slinga eller cykel. Så det råkar vara det sökord som C använder. Och medan sant, varför inte samtidigt sant effektivt menar evigt? Tja, medan, som vi snart uppskattar allt mer, har detta parenteser bredvid där du kan sätta ett booleskt uttryck. Och så länge som det uttrycket är sant, denna kod, såsom betecknas mellan dessa två klamrar som vi kallar dem, kommer bara hålla igång igen och igen. Så sant är sant. Så medan riktiga medel bara göra det här för alltid. Det är nästan en dum konstruera för att uttrycka dig. Men det fanns ingen för evigt sökord i C. Det fanns samtidigt. Och det var en mycket enkel Booleskt uttryck som sant. Och så det här, vi får se, uppnår samma resultat. Hur annars kan du implementera en loop? Tja, i Scratch du kanske hårt kod ett visst antal iterationer i slingan här. Och så det är precis vad vi skulle kunna göra i denna version av C, där vi har en så kallad för slinga. Och för loop här kommer att iterera, något kryptiskt, från värdet 0 på upp till men mindre än 10. Nu variabler i Scratch. Du kanske inte har haft tillfälle att använda dessa. Men vad är poängen, i allmänhet, av en variabel vi säga förra veckan? Vad är det? Publik: Poäng. DAVID J. MALAN: Att peka? Åh, pekar. OK, hålla reda på punkter, till exempel, i ett spel. Eller mer allmänt göra vad med den rörliga? Vad är nyttan av dem? PUBLIKEN: Minne. DAVID J. MALAN: Ja, så minnet. Det är för att lagra något. Och den typ av fåniga visuella jag använt förra gången var så här glasskål. Och om vi ville att lagra något inne i en variabel, till exempel just nu värdet är sex eftersom det är sex pingisbollar i här. Det är bara någon form av lagring behållare som under huven genomförs med bitar, 0 och 1, Men en dator råkar göra det. Så i Scratch, om vi vill ha en variabel, Vi kan använda en orange-block som denna. Vi kallar det räknare i det här fallet. Jag initierade den till 0. Och vad det jag då göra? För alltid, säger disk, som om du spelar med det i Scratch, du ska bara se Scratch. Katten eller vad kostym du sätta på honom kommer att tala det aktuella numret. Byt disk av 1 är liknande uppräkning med 1. Och så detta kommer att räknas från det så vad? Från 0 til oändlighet, eller tills Scratch raster, eller tills du slags tappar intresset för att titta på hur högt han faktiskt kan räkna. Så hur kan vi omvandla denna till C? Det kommer att se lite kryptiskt. Men återigen, om man tittar på varje av dessa linjer var för sig De slags lineup allmänhet. Så tydligen int kommer att har någon speciell betydelse i C. Vi får se det igen. Som en parentes betyder heltal. Så det betyder bara nummer. Så det är den typ av glasskål jag vill, en som kan lagra nummer, inte bordtennisbollar. Och jag kommer att använda likhetstecken där för att tilldela den ett värde på 0. Så det är riktigt som set mot 0, men i C. Under tiden, medan sant, var att motsvarande, naturligtvis, för att för evigt, även om det är lite kryptiskt, och sedan inne i klammerparentes. Och du kan tänka på dessa klammerparenteser, som du kan skriva på tangentbordet, som verkligen vara som krökningen i Dessa gula slinga block i Scratch. Det omfattar flera rader kod. Printf är att få en lite skrämmande nu eftersom jag se inte bara citerar inom parentes. Men vad annat är nytt syntaktiskt i detta exempel? Det finns en procent d. Och sedan snedstreck n är där. Vi såg det innan, och med även om jag inte nämnde det. Sedan finns det ett kommatecken. Och sedan finns det en räknare. Men vi får se på bara ögonblick att detta bara en standard sätt att säga print a "Decimaltal," citat, unquote, några decimaltal. Men jag ska berätta senare vad det decimaltal är. Så det faktum att det finns ett kommatecken i denna linje säger printf, betyder gå vidare och skriva ut några decimaltal. Åh, och förresten, är antalet oavsett värdet på denna variabel är. Och så för att göra det mer klart, vi får se ett exempel snart involverar exakt printf inom ramen för verkliga C-program. Nu är det bara att slå in några av dessa konstruktioner. Booleska uttryck, kanske du inte har tillfälle att använda dessa i ditt program men du kanske mycket väl, speciellt om användning av betingelser. Varför dessa två exempel från Skrapa menar om x är mindre än y, eller om x är mindre än y och y är mindre än z, hur kan vi översätta det? Tja, i C är det bara kommer att se ut så här. Lite kryptiskt, fler parenteser, några konstiga et-tecken, men i grunden idéerna är så enkla som de är i pusselbit världen. Vi är helt enkelt kontrollera om något är mindre än något annat. Vad sägs om förhållanden? I ett nötskal på engelska, vad innebär det bit av Scratch kod do skulle du säga? Publik: Jämför två siffror. DAVID J. MALAN: Jämför två siffror, och om x är mindre än y den säger så mycket. Om x är större än y den säger så mycket, annars om x är lika med y det står så mycket. Var har x och y ifrån? Vem vet. Denna bit av Scratch kod är ur sitt sammanhang. Men vad vi vill göra nu är att översätta detta för bara ett ögonblick för att se. Så när du får bekväm denna vecka i Problem Set 0 spelar i den här världen till vänster, inser att idéerna inte förändras denna vecka eller nästa eller därefter. Vi är helt enkelt att gå till börja skriva saker på ett annat sätt med våra tangentbord i stället för vår mus. Så om x är mindre än y, och det finns några parenteser där, så finns det några klammerparenteser igen för slags kapsla den precis som de gula pusselbitar gör. Och jag ska printf x är mindre än y, och så vidare. Vad är trevligt om C, som ni kan se här, är att du inte får denna häckning, häckande, häckande det är nödvändigtvis kommer att driva din kod till höger. Du kan i stället få allt lineup gillar prydligt här. Men det är bara en estetisk detalj vi får se igen snart. Okej. Så det för oss tillbaka till denna kryptiska ser programmet. Låt oss faktiskt skriva lite kod. Nu hur ska du gå om att skriva kod? Alla dessa år som du har ägs Mac eller PC, stationär eller bärbar dator, du faktiskt har haft möjlighet att börja skriva programkod. Men du är förmodligen saknar en speciell typ av program. Du kan säkert skriva kod. Men du kan inte nödvändigtvis, ur lådan, konvertera denna källkod till objektkod, 0 och 1 utan vad på din dator? PUBLIKEN: Compiler. DAVID J. MALAN: Så en kompilator, höger. Nu har de flesta av er förmodligen äger inte en kompilator, har aldrig hämtat en kompilator. Men du kommer att se att du kan ladda ner den liksom de flesta andra mjukvara. I en värld av Mac OS, kanske du ladda ner eller har hämtat redan något som kallas Xcode eller GCC eller klang. Om du kommer från Windows värld du kanske har hämtat Visual Studio, Visual Basic, miljöer som. Det finns dussintals kompilatorer dessa dagar som du kan använda. Men korta av det här är att det skulle vara jobbigt och, ärligt talat, en teknisk mardröm för hundratals för människor med olika datorkonfigurationer för alla konfigurera sina maskiner på exakt samma sätt så att vi alla kan vara på samma sida. Så vad vi i stället göra i CS50 är vi ger dig en vanlig miljö, en Linux-miljö som är kommer att se lite ungefär så här. Du kommer att se mer av detta i Problem Set 1 specifikation som kommer att gå på nätet denna fredag ​​kväll. Och vad det innebär är att du hädan kommer att kunna ladda ner och installera ett program kallas CS50 Appliance. Och du ska ladda ner och installerar ett annat program som heter en hypervisor, som är bara en finare sätt att uppnå detta. Oavsett om du äger en Mac eller PC eller Linux-dator eller en Solaris-dator, eller vad galet drifts system du kör, du ska ladda ner ett program kallad hypervisor som är kommer att köra CS50 Appliance på datorn oavsett vad ditt operativsystem är. En hypervisor med andra ord omvandlar våra grejer till oavsett språk, oavsett instruktioner dina egen dator förstår. Så detta är en skiktning. Och återigen, är denna typ av tematisk i datorn vetenskap, byggnaden på toppen av saker. Du kanske har Windows. Du kanske har Mac OS. Men från och med nästa vecka är du kommer att ha hämtat en fri mjukvara kallad hypervisor. Du kommer att ha laddat ner en bit av programvara som kallas CS50 Appliance. Det kommer att köras i hypervisor, som kommer att köras på datorn. Och slutresultatet är att vi alla kommer har ett enkelt fönster som detta på din Mac eller PC som ger oss en illusion av alla kör samma operativsystem, utan någon annan inverkan på din dator. Och du kan helskärm den och i huvudsak beter som om du kör en operativsystem kallat Linux, vilket är vad CS50 Appliance är baserad på. Så låt oss verkligen använda detta nu att skriva ett program. Du kan skriva ett program Microsoft Word. Du kan skriva ett program använder Textedit eller Notepad, eller WordPad, eller ganska mycket ett ord bearbetningsprogram du någonsin använt. Men verkligheten är att du inte ska Använd egentligen något av dessa program. Du absolut inte bör använda något som Microsoft Word, vilket har fet riktade och kursiv stil, och större typsnitt och mindre typsnitt, eftersom datorn inte bryr sig om något av detta. Allt datorn är kommer att bry sig om är Engelska som instruktioner, skrivna i C. Så vad vi ska göra inne av CS50 Appliance är använda ett program fritt tillgängliga, det och det förinstallerad i detta apparat, som kallas Gedit. Och Gedit är bara en super enkel textredigerare som Mac OS s Textedit, som Windows Anteckningar som kommer att ser lite ut så här. Så låt oss faktiskt inte titta på diabilder på detta. Men låt oss faktiskt gå in i miljön i sig. Jag kommer att gå vidare och logga in, i denna andra fönstret, till min CS50 Appliance, som jag har förinstallerat på min laptop här. Lägg märke till att, som Windows och Mac OS, den har vissa menyer. Liksom Windows det sätter det där nere istället för Mac OS, vilket placerar den där nere. Men verkligheten är att det är alla typer av samma. Och här är ett helt massa programvara. Det finns Dropbox. Det finns en hel massa tillbehör, grafiska program som vi ska använda senare i termen för problemsamlingar. Det finns en webbläsare inbyggd så att detta är ett fullfjädrat dator insidan av en dator. Men jag kommer att klicka här längst till vänster vit ikon här, vilket är symbolen för Gedit. Och det kommer att öppna ett fönster som har tre paneler till den, en vänster ett, en övre en, och en botten ett. Nu är det i denna topp rätta som Jag ska faktiskt skriva lite kod. Så låt oss göra det här ,. Jag kommer att gå till Arkiv, Spara. Och du aldrig skulle ha sett detta fönster innan. Men detta är som Mac OS eller Windows. Det är bara ett fönster med alla mappar att jag har inuti datorn. Och jag kommer att spara filen som hej.c. Och jag ska gå vidare och klicka på Spara. Och nu märker jag en flik uppe till vänster heter hej.c. Så förmodligen ganska bekant även om du har inte använt detta program innan. Och nu ska jag skriva in dem ganska kryptisk sekvens av kommandon att vi såg för en stund sedan. Inkludera, standard I / O.h. Mer om det snart. Int main tomrum, öppen lockigt stag, stängt klammerparentes. Och så inne i det jag tycker är där vi hade "Hej världen" semikolon. Och nu spara. Så det här är ett program skrivet i C, skriven därför i källkoden. Men jag kan inte bara köra det här programmet. Jag liksom vill dubbla klicka på en ikon någonstans, men ingen ikon finns andra än källkoden filen. Vad, återigen, är processen nu att Jag måste köra den här filen igenom? PUBLIKEN: Compiler. DAVID J. MALAN: Så en kompilator. Så i olika datorer som du göra detta på olika sätt. Men vad vi har gjort här i den CS50 Appliance som är representativ för hur du kanske göra detta på många olika system, är jag helt enkelt gå till köra ett kommando som heter make. Och gör bokstavligen kommer att göra det. Gör mig ett program. Så gör kommer att köra en kompilator för mig. Och namnet på programmet Jag vill göra är hej. Nu gör är ett program. Och gör är smart nog att inse att om jag säger att hej, det kommer att se ut automatiskt efter en fil som heter hej.c bara för att det är det sätt den är konfigurerad. Så när jag nu slår in här, det här galet kryptisk linje fick just avrättades. Och tro mig, innan lång, inom bara några dagar, kommer du att förstå vad alla av detta nonsens medel. Men för nu, vet bara att göra utlöst utförandet av en kompilator. Med andra ord, fann det en kompilator på min dator det är förinstallerat på CS50 Appliance att vi ska lämna till dig i Problem Set 1. Och det tog sedan hej.c som ingång, och producerade tydligen 0 och 1 som produktion. Och som standard vad den gör är det sparar dessa 0 och 1 i en fil som heter hej. Och även om denna syntax för kanske vara nytt för dig, helt enkelt genom att säga dot slash hej kommer att vara den menar med vilket jag kör det här programmet. För nu och för åtminstone ett par veckor, nästan alla av de program Vi skriver kommer att vara i svartvit textfönster. Ingen mus, inget klickande, inga fönster, inga ikoner. Vi kommer att hålla det enkelt och fokusera på de underliggande idéerna början innan vi kommer till något högre nivå, till exempel, liksom bryta ut spel som vi talat omkring i den första föreläsningen i förra veckan. Så när jag slog in här, det är motsvarande i en text bara miljö att dubbla klicka på en ikon som heter hej. Vad förväntar du vilja hända när jag slog in då? PUBLIK: Det ska skriva ut "hello world." DAVID J. MALAN: Förhoppningsvis Det kommer att skrivas ut "hello world." Och ja det gjorde. Nu det har varit en del kryptiska syntax här. Låt oss spola tillbaka för bara en stund och se om vi kan inte börja dra slutsatser bara genom knorra, försöker och misslyckas, om vad som händer här. Vad händer om jag bli av med backslash n? Nu några av er som har programmeras före förmodligen vet direkt vad det betyder. Men för de av er som har aldrig programmerat förut, åtminstone tror på dig själv vad som händer att ändras när jag kör det här programmet? Så jag kommer att gå tillbaka till min lite svart och vitt fönster, vilket är det fönster där Jag kan sammanställa denna. Jag kommer att kompilera hello. Vi kommer att se samma kryptisk sekvens av kommandon. Och jag kommer att göra punkt snedstreck hej. Och nu någon, om du skulle, som aldrig programmerat förut, vad som kan vara annorlunda den här gången? Yeah. PUBLIK: Det kommer inte att stoppa utskrift "hej världen." DAVID J. MALAN: Det kommer att-- ledsen? PUBLIK: Det kommer inte att sluta att skriva ut det? DAVID J. MALAN: Det kommer inte sluta skriva ut "hello world." Så inte en dålig idé. Andra idéer? Yeah. PUBLIK: Felmeddelande? DAVID J. MALAN: Fel meddelande, OK, kunde vara. Vad mer? PUBLIK: Det kan skriva ut konsolen med semikolon också? DAVID J. MALAN: Kan skriva ut konsolen med semikolon också. Så kanske det bakstreck då vissa typ av falla som är viktigt. Alla andra tankar? Så alla goda idéer. Och faktiskt, det kommer att vara ett felmeddelande. Det är nog mest troligt vara svaret i allmänhet för de närmaste veckorna som vi lär oss att koda här. Men för nu ihåg att datorer bara vad du säger till dem att göra. Ungefär som den löjliga jordnöt smör och gelé exempel. Våra mänskliga datorerna skulle bara att göra det du sa till dem att göra. Så i detta fall, om du inte tala om för datorn för att flytta den blinkande markören till nästa rad, det kommer inte att göra det. Så när jag kör det här programmet nu märker skillnaden. Ser ut som en bugg. Det är en estetisk bugg, kanske. Men det som är nytt med den här utgång kontra den sista tydligen? Yeah. PUBLIK: Det gjorde inte en ny rad. DAVID J. MALAN: Det gjorde inte en ny rad. Nu de av er som har kanske gjort webbsidor innan, kanske du känner till den BR tagg eller punkt taggen, mycket lika i anden. En webbläsare kommer att ignorera dig tills du berätta exakt vad du ska göra. På samma sätt är ett språk som C endast kommer att göra det du ber den om. Så anledningen till att alla dessa exempel, Hittills har sådan nonchalant hade denna bakstreck i det, det är de medel genom vilken man uttrycker sig som en ny rad tecken, så att säga. Och du kan sorts uppskatta, kanske, att det skulle se sådan dum om inte annat. Om jag ville ha en ny linje, precis slå in och sedan slag för styckning koden sånt borde egentligen inte gnida dig på rätt sätt. Och även om du inte verkligen bryr sig på denna punkt, kommer du att inse att Detta är inte en särskilt snygg bit kod. Och så vad världen beslutade år sedan är att när du vill placera markören till en ny rad explicit, måste du uttryckligen säga ny linje, bakstreck n. Och det finns något annat symboler som det. Men just nu vi ska bara fokusera på omvänt snedstreck n. Låt oss nu göra programmet lite mer intressant. Jag kommer att gå vidare och denna gång öppna upp en ny fil. Jag kommer att spara detta som hej-1.c. Och bara för sparkar, kommer jag att går stick den i min Dropbox-mappen. Som du ser i CS50 dokumentation för apparaten, senare i veckan för problem Set 1, vi uppmuntrar dig att använda Dropbox eller någon motsvarande tjänst, för då alla dina kodens ska säkerhetskopieras automatiskt. Och så det är därför jag har gått in i denna mapp här. Och nu ska jag skriva en något annat program. Inkludera, standard I / O.h, int main ogiltiga. Och sedan i här printf, hallå världen, vilket är exakt samma som tidigare. Men nu vill jag skriva ut något det är lite annorlunda. Jag vill skriva ut, säger, "Hej, David." Okej, så självklart, det ska förhoppningsvis vara så att om jag kompilera detta program, köra den, det kommer att säga "Hej, David." Men om jag vill presentera denna typ av variabel, begreppet en behållare som händer att lagra D-a-v-i-d och inte svårt koden det in i mitt program. Tja vad händer om jag börjar göra något sådant? String s, så detta är en variabel. Om du vill ha en sträng, alias ett ord eller en fras. En sekvens av tecken är det som Vi i programmering kallar en sträng. Vi ska bara allmänt samtal det s, eftersom det är en trevlig enkel namn. Men jag kan kalla det vad som helst. Jag kommer att säga sträng s jämlikar citat unquote, "David," semikolon. Och nu vill jag sätta in D-A-V-I-d in i vad jag är utskrift. Och innan vi såg en teaser på skärmen på någon speciell syntax som får oss att ersättning i ett värde. Vad var det speciella symbol för några diabilder sedan? Så procent. På den tiden var det procent d för decimaltal. Det betyder egentligen inte vara relevant här. Visar sig att det finns annan procenttecken, vilket är procent s, som står för en platshållare för en sträng. Så nu, mycket enkelt, jag är kommer att gå att göra hello-1, eftersom den här filen kallas hello-1.c, och tryck på Retur. Och jag klantade. Vad händer? Tja, här där vi måste börja uppskattar att vi är i det här kommandot line miljö, detta text bara miljö. Det finns ingen klicka på dem som mappar just nu. Och tänk tillbaka för en stund sedan. På vilket gjorde mapp jag säger Jag sparade min kod? Så mappen Dropbox. Kunde ha kallats något. Men det händer att kallas Dropbox. Så jag behöver något sätt att dubbelklicka på att Dropbox-mappen för att få in i det och få på mitt kod som kallas hello-1.c. Faktum är, låt mig gå vidare och minimerar detta fönster för bara ett ögonblick. Precis som Windows och Mac OS, mappar finns i Linux. Det finns mappar i CS50 Appliance. Det är bara just nu vi begränsa oss till denna text miljö. Men om jag dubbelklickar på Dropbox, märker det är den fil som jag vill kompilera. Men jag behöver den här svartvita terminalfönster, så att säga. Men jag behöver, därför att flytta in i den mappen eller katalogen. Så lite svårbegripliga, men du får använda till detta också. I en värld av Linux, som återigen är operativsystemet system vi kör inne i CS50 Appliance, det finns ett kommando som heter CD. Vilket betyder att jag kan göra CD, utrymme, Dropbox. CD, ändra katalog. Rätt. Tillbaka i dag när människor var uppfinna datorer och drift system som detta, de ville skriver minst antal knapptryckningar möjligt. Så det enklaste sättet att säga förändring katalogen var CD. Så om jag slog CD, utrymme Dropbox, märker vad som har förändrats här. Insida i parenteser apparaten är snäll av humoring mig och påminna mig var jag är. Så den öppna mappen är Dropbox. Om jag skriver nu ls för listan, återigen kortfattad, eftersom folk inte ville skriver tillbaka i dag l-i-s-t. Så de i stället gjorde det ls. Enter. Lägg märke Jag ser två saker, hello-1.c, och sedan det kryptiska sak, käll 1m. Det är bara mitt sätt att säga källkod för vecka 1 Måndag. Det är en mapp jag ner från CS50: s hemsida som jag gjorde tidigare i dag och bara sätta in den i apparaten i förväg. Men för tillfället det enda vi bryr sig om är att göra det här programmet. Så när jag skriver gör hello-1, Enter. Fan också. Något gick fel. Så låt oss retas här isär. Och tyvärr är där saker och ting blir lite stressigt i början, åtminstone om du har aldrig programmerat tidigare. Min Gud. Jag skrev en två line-programmet och Jag har fyra rader av felaktigheter. Så vad händer här. Först och främst alltid rulla tillbaka upp och hitta den första felmeddelandet, eftersom ofta kompilatorer bara förvirrad av vad du och jag gör. Kompilatorer är ganska dum. De kommer bara göra det som du berätta för dem att göra. Och om du blandar ihop dem, de är bara ska sorts kasta upp sina händer och kanske kasta mer felmeddelanden än faktiskt är relevanta. Så låt oss titta på den första. Super kryptiskt i början. Men varsel, här är namnet på fil där jag skruvade upp tydligen. Colon 5, kolon 5 innebär bara på linje 5 vid det femte tecknet. Så femte kolonn tecken, om du vill, fel. Användning av odeklarerat identifieringssträng. Menade du standard n? Nej, jag menade sträng. Och då är det slags kopiera och klistra vad jag skrev för att verkligen dra mitt uppmärksamhet där jag skruvade upp. Så någon anledning C, eller åtminstone kompilatorn förstår inte ordet strängen. Och det beror på att vi gjorde det. Så sträng existerar inte i C. Vad CS50 gör, för de första veckorna endast av klassen, är vi ge viss utbildning hjul, så att säga. Och vi sätter dessa stödhjul inne i en speciell fil som heter CS50.h. Så det här är den andra av två fil namn som synes slutar i dot tim. Låt oss spola tillbaka. Printf är ett uttalande eller en funktion som uppenbar skriver någonting till skärmen. Men du såg mig genomföra printf, höger. Någon år sedan implementeras printf. I vilken fil skulle du satsa han eller hon sätter genomförandet för printf, koden för printf? I en fil som heter standard I / O.h. I själva verket är det antagligen i två filer, standard I / O.h, vilket står för sidhuvudet fil, och standard I / O.c, som står för C källkod. Så han eller hon för några år sedan plopped den kod som de skrev in i filen så att människor som oss år senare kan inkludera det, så att säga, i våra egna program. Och faktiskt, det är vad nummertecken följt av ordet inkluderar gör. Det ser ut på den lokala hårddisken, finner fil som heter standard I / O.h, och sedan effektivt exemplar och klistras det inne i min egen fil. Så nu mitt program vet hur man skriver ut på skärmen. Så genom denna logik, där är sträng definieras? PUBLIK: CS50.h. DAVID J. MALAN: CS50.h. Och faktiskt, det är vad vi, den ordinarie personalen har gjort. Vi har uppfunnit några datatyper, så att säga, som en sträng, utöver de du få gratis, som en int. Och vi får se andra som en char för en karaktär och några fler. Inuti CS50.h tydligen är åtminstone några omnämnande av strängen. Så nu vill jag gå vidare och kör make hello-1. Jag ska zooma in igen och korsar mina fingrar. Nu genom att ha gjort en ändrar jag fast det mesta. Men damn it. Fler PROCENT än uppgifts argument. Vad gjorde jag för fel den här gången? Så det är fortfarande ganska kryptiskt. Men detta fel är på linje 7 och tecken 21. Så låt oss gå titta här uppe. Det är lite subtil. Men om man tänker på vad de grundläggande idéerna här är, kanske vi kan retas här isär. Så printf är namnet på funktionen. Parenteser, så här långt, är precis vad vi lägger runt grejer vi passerar som indata till en funktion. Okej, bara en godtycklig mänsklig konvention. Använd parenteser. Insida av dessa parenteser Vi har skjutit citationstecken, och sedan en sträng som "hallå världen." Men i det tidigare exemplet mycket kort gjorde vi tittar på med Scratch. Och vi hade procent d, vad annars var inne i dessa parenteser att jag ropade muntligt? Yeah. PUBLIK: Så det är vad du tar [Ohörbart] inifrån [ohörbart] vad dessa [ohörbart]? DAVID J. MALAN: Exakt. Så vi hade procent d. Men sedan hade vi ett nära citationstecken, kommatecken, disk. Rätt. Vi specificerade vad vi vill att göra som platshållare. Så vad jag ska göra här är kommatecken, vad vill du att jag ska sätta? PUBLIK: S. DAVID J. MALAN: S, eftersom s i detta fall är namnet på lagringsbehållaren. Det är namnet på denna glasskål. Om det tidigare var disk i det enkelt Scratch exempel vi tittat på. Så nu har gjort två förändringar, låt mig zooma in och försöka en gång till kompilera programmet. Nu ser jag att kryptisk linje. Men det är faktiskt den namn av kompilatorn. Klang är namnet på kompilatorn. Gör bara spara mig huvudvärk av allt skriva att långa galna kommandot ut. Så nu om jag dot slash hello-1, Jag skulle se "Hej, David." Ganska underwhelming, fast, eller hur? Vi kunde ha gjort detta mycket mer enkelt utan att tala om variabler och CS50.h och allt det. Så låt oss göra det till en lite mer intressant. Förutom CS50.h, att ha saker som sträng förklarade, att CS50 biblioteket också har ett par funktioner. Så precis som år sedan skrev någon printf och lägga den i standard-I / O.h och någon annan fil. Vi, CS50 personal, skrev en funktion kallas getchar, getDouble, getFloat, GetInt, GetLongLong, GetString, och vi lägger dem i en fil kallas CS50.h och CS50.c. Och vi sätter dem i av CS50 Appliance. Och folk kan också hämta dem på nätet om de vill sätta dem på deras egna datorer också. Vilket är att säga att vi har skapat funktioner som får input från användaren. Jag vet inte vad alla av dessa datatyper. GetInt är typ av okomplicerad, liksom få ett heltal på något sätt från användaren. Och GetString är nog som get ett ord eller en mening från användaren. Så låt oss fokusera på det. Och jag kommer att gå tillbaka in i apparaten och jag kommer att gå vidare och spara denna fil som, låt oss kalla Det hello-2.c som min andra versionen. Och låt oss göra ett par ändringar. Den här gången i stället för hårt kodning David, som gör en otroligt konsekvent men underwhelming programmet tänk om jag istället gör GetString? Nu märker GetString har en öppen parentes, sluten parentes, eftersom den inte behöver någon ingång. Det kommer bara att gå och hämta en sträng från användaren. Och nu ett ord om andra syntax. Semikolon bara sluta en rad kod. Du behöver inte dem överallt. Men det betyder bara att jag är gjort med denna kodrad. Låt mig gå till en annan uttalande eller funktion. String deklarerar en variabel. String är som att säga ge mig en skål, tack. Och låt mig uttrycka en sträng i den. Och nu likhetstecknet. Vad är likhetstecknet huvudsak motsvarar? PUBLIKEN: Tilldela. DAVID J. MALAN: Ja, tilldela ett värde. Så om jag till exempel samtal denna funktion GetString, och vi kommer att se i ett ögonblick som är kommer att uppmana användaren för en sträng. Det är som att låta mig sedan skriva D-A-V-I-d på en bit papper. Och när jag säger sträng ar lika GetString, lika egentligen inte betyder lika i C-programmering. Det betyder delar från höger sidan till den vänstra sidan. Så jag har fått en sträng. Och likhetstecknet innebär uttryckte det i lagringsbehållare som kallas s. Och sedan vidarebefordra detta iväg till printf att faktiskt göra sin sak. Så slutresultatet sedan går se lite annorlunda ut. Låt oss gör hello-2. Antingen skulle kunna fungera. Du följer med. Gör hello-2 arbetade. Dot slash hello-2, Enter. Jag verkar ha en oändlig slinga eller något. Ingenting händer. Varför? PUBLIK: Det gör en oändlig slinga. DAVID J. MALAN: Det är en oändlig loop. Det är typ av som väntar för mig att faktiskt ge den med lite input. Så låt mig gå vidare och skriva i David, och tryck på Retur. Och nu står det "Hej, David." Om jag kör den igen. Låt oss skriva in Rob, "Hej, Rob." Nu är detta den värsta användargränssnitt någonsin. Användaren är tydligen kunna veta vad man ska göra. Men oavsett. Med hjälp av dessa samma byggnad blocken precis som i Scratch, Vi kan lösa det problemet och säga något som ditt namn snälla, kolon, utrymme, stängt citat, nära parentes, semikolon. Så mycket av igen enfald med syntaxen. Men märker jag har precis lagt till en pusselbit ovanför denna en och ovanför denna. Så nu om jag kör här, hello-2, Enter. Vänta lite. Vad är fel? Det är inte beter sig annorlunda. Yeah. PUBLIK: Du körde inte göra igen. DAVID J. MALAN: Jag gjorde inte kör make igen, eller hur. Så jag har ändrat min källkod. Men återigen, det är detta flöde. Källkod genom kompilatorn ger du nya objektkod, eller 0 och 1. Så jag behöver faktiskt repris make hello-2 Enter. OK, verkar något ha hänt. Dot slash hello-2. Ditt namn tack. Och för att vara tydlig nu, varför är markören på samma linje? Exakt. Jag satte inte det omvända snedstrecket n här uppe i min kod. Så nu kan jag skriva något som Daven, Enter. Jag kan köra den igen och skriv något som Gabe, Enter, och vi får ett annat program igen och igen och igen. Nu i slutändan ska vi behöva att använda några olika möjligheter. Vi måste införa slutligen några förutsättningar att göra saker villkor. Kanske loopar så att vi kan göra saker om och om igen. Kanske det skulle vara trevligt om vi skulle kunna genomföra våra egna funktioner, som vi skulle kunna genomföra vår egen printf eller vår egen version av GetString och GetFlow, för i slutändan även använda denna kommandorad miljö kan vi göra även de mest visuellt intressant saker. Faktiskt avslutningsvis vill jag göra det här. Jag kommer att gå vidare och stänger dessa fönster och öppna den här ikonen här, som är bara en större version av den inbäddade terminalfönster. Så Gedit har inte bara platsen för min kod, utan också en inbyggd terminalfönster, den svart och vitt fönster där jag kan köra kommandon. Jag råkade bara öppna en större version av denna. Och nu ska jag gå in mappen som jag har redan sätta på förhand på kursens hemsida. Och jag ska gå vidare och öppna en fil som heter thadgavin.c, som skrevs av någon annan. Och om vi ser på det här, detta är inte den typ av kod Vi kommer att skriva eftersom målet med denna kod var att skriva den vackraste ser kod som han eller hon kunde, oberoende av om annan människa någonsin kunde förstå denna kod. I själva verket varje år finns är vad som är kallas en förvrängd C tävling, som är för riktiga nördar som skriver kod som ingen annan kan läsa, men som gör något antingen riktigt enkelt eller verkligen fantastiskt. Och vi trodde vi skulle avsluta med denna look på något som är ganska häpnadsväckande du kanske har sett en gång tidigare. Men vi ska sluta på det här notera, dot snedstreck, thadgavin. Detta är då vad som väntar. Det var allt för CS50. Vi kommer att se dig på onsdag. [MUSIK SPELA]