David J. MALAN: Så dette er CS50. Og dette var CS50 egen Colton Ogden, for mere af, hvem der er musik, du kan downloade på soundcloud.com/cs50. Så vi i dag fokuserer så meget desto mere om kunsten at programmeringen. Og vi tager, hvor vi forlod slukket i sidste uge, med fokus på bunden, der var det grafisk programmeringssprog. Og tage tingene ned til et lavere niveau, ved hjælp af en mere traditionel programmering sprog er kendt som C. Men undervejs, realisere at de samme ideer, vi talte om sidste fredag vil gentage sig ikke kun i denne sprog C, men i de fleste hver anden at vi ser på dette semester. Så vi kaldte denne ting her hvad sidste gang? Dette er repræsentativt for en redegørelse. Så vi kaldte det en erklæring. Og det gør noget. Det er en instruktion om, at et computer eller Scratch måtte udføre. Og nu, lad os også begynde kalde noget som dette en funktion, grunde skal vi snart se. I mellemtiden, så vi ting som dette. Og disse er generelt kendt som hvad konstruere? PUBLIKUM: Loop. David J. MALAN: Så en løkke. Så temmelig ligetil. Det bogstaveligt gør hvad den siger. Og i Scratch, hvis du vil proppe flere puslespilsbrikker derinde, stykket vil vokse til at passe det. Og vi vil se i C, der vi kan gøre det samme. En anden type af bue, selv om, i Scratch kan være evigt, eller der er et vilkårligt antal af andre metoder. Men lad os tage et mere generalist look, med et ansigt Det er sandsynligvis helt fortrolig, på loops mere generelt. Mark Zuckerberg: One ting som computere er rigtig gode til, er gentage kommandoer. Som person, ville du få virkelig keder sig, hvis du havde at gøre det samme masser af gange i træk. Men en computer kan gøre det samme millioner eller endda milliarder af gange, og ikke kede sig, og være i stand til at udføre den rigtig godt. Så for eksempel, hvis jeg ønskede at ønske alle på Facebook tillykke med fødselsdagen ved at sende dem en e-mail, det kan tage mig mere end en århundrede til rent faktisk at skrive ud alle disse e-mails til alle. Men med blot et par linjer kode, kan jeg have et system sende en e-mail til alle på Facebook, der ønsker dem tillykke med fødselsdagen. Så det er hvad loops er, og hvorfor de er værdifulde og noget at computere kan gøre meget godt. David J. MALAN: Så hvis du har været modtager nogle af CS50-og Dropbox plads for sent, det er faktisk præcis, hvad vi gøre, ved hjælp af kode helt ligesom det. Vi hovedsagelig har en stor regneark, hvori folk har været indtaste deres navne og e-mailadresser. Og vi skrev en lille smule kode, kan gentage over disse adresser og spytte ud unikke adresser i tilfælde af nogen fremlagt flere gange. Og derefter sender vi en automatiseret e-mail fra CS50 bot, herunder kuponkode. Nu har vi også set på denne konstruktion sidste gang. Og det er en særlig eksempel på, hvad? Så ja, en boolsk udtryk. Og formen menes at fange så godt. Alle sådanne spørgsmål til danner sandt eller falsk i Scratch vil se lidt noget som dette. Og vi kalde dette en boolsk udtryk. Det er faktisk sandt eller falsk, ja eller nej. Det er en måde at besvare et spørgsmål. Og i mellemtiden kan du bruge disse boolesk udtryk indersiden af ​​konstruktioner som disse, hvilke af Selvfølgelig er betingelserne eller filialer, legendarisk gafler i vejen. Og de kan ikke blot se som dette, men de kan også har elses forbundet med dem. Og du kan faktisk have en trevejs gaffel i vejen eller en fire vejs gaffel i vejen, blot ved indlejrer disse ting, som du kan se i Scratch hvis du ikke allerede har. Og som du kan gøre i C så godt. Lad os tage en anden generalist se på et alumnist, samt, som kan udgøre en anden tilgang disse ting kaldet betingelser. Bill Gates: Folk laver beslutninger hver dag. For eksempel, før du går uden dig slags har en if-sætning, der siger, hvis det regner så jeg brug for at få min jakke. Og computere er forbløffende, når du beslutte den slags udtalelser, at de pålideligt kan udføre disse ting til utrolige hastighed. Og så et edb-program virkelig er en lille smule af matematik og nogle hvis sætninger, hvor afgørelsen bliver foretaget. David J. MALAN: Så som du måske ved, var det folk som Bill Gates, Paul Allen, og andre der virkelig sparket off såkaldt personlig computer revolution for nogle år siden. Jeg troede, før vi dykker ind i nogle dokumentet, vi ville fortælle en fortælling fra Albuquerque, New Mexico Museum of Natural History og videnskab, hvor nogle af Bill Gates ' og Paul Allen tidligste historier er fortalte, hvordan vi har nu nutidens pc'er og Mac'er og meget mere. Til dette har vi brug to frivillige der har meget gode indtaling stemmer at læse et script højt. Okay, hvad med i tilbage der. Kom op. Og hvad med foran her. Kom ned. Tag din steder her. Som du fyre kommer op, et par af administrative meddelelser. sektionering processen at vælge en sektion, vil starte dette Onsdag til fredag. Mere om det i det kommende Onsdag i forelæsning. Super sektioner, i mellemtiden, er noget, som vi tilbyder i næste uge hvorved hele klassen opfordres at deltage i forholdsvis stor skala afdelinger, en mere komfortabel, en mindre behagelig. Og vi vil annoncere de oplysninger af det, så godt, senere i denne uge. Imens sektioner, selv, vil begynde i uge tre af naturligvis nul indeks, hvilket betyder de er et par uger ud. Så ikke at bekymre dig. Du har endnu ikke savnet noget langs disse linjer. I mellemtiden i mellemtiden, hvis du har spørgsmål administrativt email mig og Devon og Gabe og Rob på denne adresse her. Endelig problem sæt 0 er naturligvis ud. Du har måske bemærket det på kursets hjemmeside. Det bør give dig alle svar på spørgsmål du måtte have langs vejen for komme i gang med problemet sæt. Men hvis du befinder dig har behov for en hjælpende hånd, med alle midler deltage kontortid, Mandag, tirsdag, onsdag, torsdag af denne uge i aften i fire spisesale. Se denne webadresse der for de oplysninger, hvor kontortid skal være. Nu Lad os mødes vores to gæster her i dag. Hvad er dit navn? JAY PAUL: Jay Paul. David J. MALAN: Jay Paul, rart at møde dig. HIKARI: Hikari. David J. MALAN: Hikari? HIKARI: Hikari. David J. MALAN: Hikari. Rart at møde dig så godt. Jay Paul og Hikari har i foran dem på disse musik står to scripts, som jeg trykte ud denne morgen fra New Mexico Museum of Natural History og Science. Og hvad jeg troede Jeg ville gøre over hovedhøjde er ledsage din recitation af scriptet, og denne historie med nogle visuelle billeder, ingen overraskelser. Og hvad jeg har gjort i forvejen er prehighlight på dit script hvad du skal læse, og hvad du bør læse. Og vi vil i det væsentlige bare alternative stykker. Så det er meget ligesom du kan har gjort i engelsk klasse. Det er virkelig tvinge publikum at tro på din historie her. Skal vi? Så historien her er, at vi har et BASIC, og det begynder i Cambridge. JAY PAUL: Det var vinter, 1974 i Cambridge, Massachusetts hvor vintrene kan være koldt. En skægget, langhårede kollegium frafald opkaldt Paul Allen blev drudging tværs Harvard Square, absorberet i sine tanker. Hans største bekymring i disse dage var, hvordan man får sin ven, Bill Gates, at forlade skolen og gå i forretninger med ham. HIKARI: De to var allerede gået gennem en række erhvervsprojekter sammen, begyndende ved Lakeside skole i Seattle, hvor de blev betalt i fri computer tid til teste et PDP-10 computer på en lokal tid deling selskab. Den seneste plan havde været at holde op skole og danne et software firma. Allen havde forladt Washington State University. Men i sidste øjeblik, Gates besluttede at holde fast Harvard. JAY PAUL: Den dag, krydser Harvard Square, Allen spottet i januar, 1975 nummer af Popular Electronics med jorden standsning overskrift, Verdens første minicomputer kit til rival forretningsmodeller. Under overskriften var et billede af en lille boks smykket med lys og switche. Det blev kaldt Mits Altair 8800. Og Allen vidste, at dette var, hvad han havde ledt efter. HIKARI: Days of diskussion følges. Allen og Gates forstod Betydningen af ​​Altair. De havde talt ofte om mikroprocessorer og ventede på at se, hvad ville ske med dem. Nu var der en minicomputer kit på dække af Popular Electronics. Det havde tilsyneladende ingen software endnu. De forestillede sig en nation af programmører faldende på Mits. Og så de kaldte Ed Roberts, lederen af ​​virksomheden, hævder at have en version af BASIC programmeringssprog næsten klar til Altair. De gjorde ikke. Og Roberts må have vidst, at de ikke gjorde. Han fik 10 opkald om dagen fra mennesker, der havde en grundlæggende næsten klar. Og hans lager svar var, "Den første person der dukker op med en arbejdsgruppe BASIC får kontrakten. " JAY PAUL: Gates og Allen aldrig havde set en Altair. De havde aldrig selv set den Intel 8080 mikroprocessor i hjertet af Altair. Men et par år tidligere Allen havde skrevet et program på en mainframe computer, emuleret driften af ​​en tidligere Intel mikroprocessor. Og denne gang omkring de ville gøre det samme. HIKARI: Med en Intel 8080 manual ved hans side, Allen sad på en Harvard PDP-10 computer og skrev emulatoren og software nødvendige redskaber til at gøre programmeringen. Imens Gates stoppet går til klasser og helligede sig at designe BASIC, hjælp alle trick han vidste at få størrelsen ned under 4 kilobyte. JAY PAUL: Ude i Albuquerque, Ed Roberts fik et opkald fra Gates beder om flere oplysninger om, hvordan Altair håndteres specifikke rutiner. Ingen har nogensinde havde bedt før. Og Roberts begyndte at blive interesseret. HIKARI: Med udviklingen værktøjer og design klar, Gates og Allen skrev koden på PDP-10, mobilisere en anden Harvard-studerende, Monte Davidoff, at skrive matematiske rutiner. Efter en sidste nat af programmering, Allen fik på et fly til at levere deres BASIC til Mits. Han tilbragte flyet ride ud bekymrende. Og tilbage i Cambridge Gates var bekymrende. De havde testet deres grundlæggende og det havde arbejdet på emulatoren. Men hvad nu hvis emulatoren var forkert? JAY PAUL: Da flyet nærmede Albuquerque, Allen indså, at deres BASIC, nu pænt indeholdt på en lille rulle hullet papir tape, ville være ubrugelig uden et separat program, kaldet en læsser, som ville fortælle Altair hvordan at læse papir tape væsen tilføres Teletype maskinen. Han tog sin notesbog og hurtigt skriblet ned et loader program i forsamlingen sprog, derefter manuelt oversat det til 1s og 0'erne Altair ville forstå. HIKARI: Allen forventer en ren, lille, højteknologisk virksomhed drives af mænd i jakkesæt. Så han blev overrasket, da Roberts mødte ham i lufthavnen ligne en ranch hånd. Roberts var også overrasket. Da han faldt Harvard programmør på et dyrt hotel, Allen måtte tilstå, at han havde ikke råd til rummet. JAY Paul: Mits, selv, var placeret i en støvet striben mall. Inde på en rodet arbejdsbord var en Altair læsset op med 5 kilobyte hukommelse og forbundet med et kabel en Teletype maskine. Roberts og Chief Engineer, Bill Yates, ventede forventningsfuldt som Allen slås hans læsser program i Altair. Teletype begyndte chugging som det trak papiret tape gennem båndet læseren. Det tog måske 15 minutter at hente programmet. Så fjernskriver brat udskrevet en hukommelse prompt, så en klar prompt, og Allen begyndte at skrive et par test-kommandoer. Til alles forbløffelse, softwaren arbejdet. Der var fejl, selvfølgelig. Men det vigtigste var det fungerede. HIKARI: Senere, på vej til en $ 3,00 frokost på Pancho, en hveps fløj i vinduet af pickup lastbil og stukket Allen på armen. Men på det tidspunkt intet kunne ødelægge stemningen. Altair nu havde sin grundlæggende, første kommercielle software til et hjem computer, lavet af Paul Allen og Bill Gates, at drive forretning som Microsoft. David J. MALAN: Mange takket være vores to læsere. [Applaus] David J. MALAN: Nu du har dit valg, før du forlader, et sprudlende eller en glød i dark-- åh, vent et sekund, wait-- sprudlende og en glød i mørke elefant fra CS50 egen Cheng Gong. HIKARI: Aw, tak. David J. MALAN: Alle højre, tak så meget. [Applaus] David J. MALAN: Så sand historie. Dette vil sige, at alle disse maskiner og den lethed, hvormed vi bruge dem nu og tage for givet, virkelig startede her, blot et par skridt fra denne faktiske teater. Og nu i dag, hvis du ikke har været, dette er Maxwell Dworkin, computeren videnskaber bygning, også rundt om hjørnet. Og på den anden etage i denne bygning hænger tre sider fra den oprindelige kildekode, Bill Gates og Paul Allen skrev. I virkeligheden, hvis brug du zoome i du kan se ikke kun deres navne i oprindelige type, men også deres underskrifter, at de prydede en par år tilbage, da de sidst besøgte. Men hvad var særligt overbevisende om dette er, hvad de satte sig for at gøre var at skrive et program, der ville give andre folk til at skrive deres egne programmer. På det tidspunkt var der alle med denne Altair maskine lavet af Mits. Og alt, hvad de havde brug for var en måde at gør det nemt for hobbyfolk og mennesker ligesom os i dette rum til rent faktisk at programmet at uden nødvendigvis at forstå Forsamlingen kode, eller maskine kode, eller Gud forbyde det, 0'er og 1-taller. Vi programmører, ligesom dem i dette rum, vi ønsker at være i stand til at udtrykke os meget mere ligesom pseudokode selvom det er en smule mere nit kræsne end vi talte i sidste uge. Vi ønsker ikke at skrive kode som denne, som Paul Allen og Bill Gates gjorde. Vi, i stedet ønsker at skrive kode, ser lidt mere brugervenlig. Nu er dette er et sprog kaldet BASIC. Og linjenumre der er, hvad du bruge til blot at nummerere linjer kode at du skriver. Vi behøver ikke engang at gør at disse dage. Men du kan se her hvordan PRINT "Hello, world" ville faktisk formentlig udskrive netop det. Og hvad så Bill og Paul gjorde, var sætte folk til at skrive kode som denne i stedet af-- hvis du tager et kig på den datalogi wall-- kode som denne. Faktisk CS50 nylig haft mulighed at sidde ned med professor Harry Lewis i Datalogi, der faktisk lærte Bill Gates nogle år siden, og står her før disse tre sider af uddrag. Lad os tage et kig. HARRY LEWIS: Hvad du har her er en registrering af en tidlig stykke software skrevet af Bill Gates og Paul Allen, grundlæggerne af Microsoft. Så koden er interessant af to grunde. Først og fremmest blev det Microsofts første produkt, der var en tolk til BASIC programmeringssprog. Og for det andet, var dette et af de første forsøg at skabe en tolk så almindelig folk kunne bruge personlige computere. Så Bill Gates var en bachelor på Harvard. Jeg begyndte at undervise på Harvard i 1974. Dette blev gjort i 1975. Så det var tidligt i sin karriere og tidligt i min karriere. Jeg faktisk lærte Bill et kursus omkring dette tidspunkt. Paul Allen var ikke en Harvard-studerende, men han havde været en high school klassekammerat af Bill Gates. Hvis du kommer og ser på listen, skal du faktisk finde en tredje navn, Monte Davidoff, der var Gates klassekammerat her på Harvard. OK, så her er en interessant kommentar op her. Det siger "I 4K kan slette kvadratroden men efter sløjfer skal stadig arbejde. " OK, så hvad det betyder, er, at der var to måder at kompilere dette program. Det ene var at køre på en version denne Altair computer der kun havde 4K ord hukommelse, 4.096 ord hukommelse. Men den store version, havde 8K. Og så, hvad det siger, er at i 4K udgave du var nødt til at slette nogle kode til at gøre det passer. Og en af ​​de ting, der ville blive slettet ville være kvadratroden rutine. Men tilsyneladende efter sløjfer bør stadig arbejde, selv når du kompilerer ned for blot 4K version af computeren. David J. MALAN: Så en af ​​de temaer, som vi skal se i datalogi, er dette begreb lagdeling og abstraktion, og virkelig stå på skuldrene af folk, der er kommet før os, ikke i modsætning til nogle af Bill Gates og Paul Allen fortælling her. Og hvad det betyder er at vi i dag kan tage for givet, at tingene er faktisk lettere for os at skrive kode. Faktisk kode, som vi sagde på fredag, er mere teknisk kendt som kildekode. Og det er denne engelske ligesom syntaks der er mere korrekt og mere veldefineret end noget pseudo kode, hvor der ikke er nogen formel definition. Og i dag, hvad vi vil at fokusere på, er kildekode der ligner dette, som ganske vist ved første øjekast ser helt kryptisk. Og helt ærligt, det er langt mere æstetisk kompleks end det underliggende program. Alt dette program gør, tilbagekaldelse, er hvad gjorde vi sige? Det bare udskriver "Hej verden". Og alligevel se på alle de ting, vi har brug for at ombrydes omkring det meget enkle sætning. Men inden længe alle disse linjer og mere vil gøre meget bedre mening for dig. Og strømmen er som følger. Hvad vi har brug for til vores rådighed er at tage kode, ligesom kilden kode, som vi lige har set. Og vi har brug for et nyt program at køre det igennem. Vi har behov for algoritmer, som kan konvertere kildekode, som dette, i objekt kode, 0'er og 1-taller. Med andre ord, hvad vi kommer til at lære i dag er, hvordan man gør dette, så skriv kildekode op øverst, videregive det som input til en særlig program kaldet en compiler, og vi kommer til at producere objekt kode. Hvilket er bare en fancy måde siger vi vil tage noget der ligner dette, passere det ind i et program kaldet en compiler, producerende objekt kode der ligner dette. Så dette er bogstaveligt talt mønstre af 0'er og 1'ere der forstås af en Intel computer i disse dage, at hvis fortolket af CPU, hjerner inde i en computer, vil bogstaveligt udskrive, ganske enkelt, "Hej verden". Nu er der langt mere 0'er og 1-taller, end du håber kan være nødvendig for at. Men det er fordi vi er ved at bygge på en god del af kompleksitet at vi fremover kan tage for givet. Med andre ord, en masse smarte mennesker har givet os en masse fede værktøjer og kraftfuld software, som vi kan nu lave projekter af vores egne. Så lad os komme i gang. Betragtninger sidste fredag, og til Problem Sæt 0 i denne uge, du kan spille i et verden, der ser sådan ud. Fra i dag og til Problem Set 1 i næste uge, koden kommer til at se lidt mere kryptisk, men funktionelt er vil være den samme. Så varsel, toppen er Scratch, bund er C. Frankly Scratch er meget mere bruger venlige og tilgængelige. Men hvis du nu sammenligne visuelt top til bund, der er form for en for en korrespondance mellem puslespilsbrikker og sprog vi er ved at lege med. Især sige den blå brik op øverst, er tilsyneladende svarer til, hvad søgeord eller særlig sætning i dette sprog kaldet C? Publikum: printf. David J. MALAN: printf. Det betyder formateret udskrivning. Og det er bare en fancy måde at sige printf i C kommer til at være en erklæring eller en funktion der udskriver noget til skærmen. Hvad vil det udskrive til skærmen? Uanset hvad du fortælle det til inde citater, inde i parenteser. Så igen, ganske vist, der er en masse ting at du er nødt til at huske på, parenteser, citater, semikoloner, og alt dette. Men alt dette er sortering af ved siden af ​​punktet. Det interessante takeaway for nu er, at sige blok i Scratch er temmelig meget svarende til printf erklæring i C. I mellemtiden er den gule brik op øverst, når grønt flag klikkes, er sandsynligvis ækvivalent hvad søgeord her? PUBLIKUM: Hoved. David J. MALAN: So main. Måske int, måske ugyldige. Men vigtigste slags lyde som det er vigtigt, og det er faktisk. Så når grønt flag klikkede er igen brik der starter en Hele Scratch programmet. Men vi vil nu begynde at kalde at main, denne funktion er kendt som vigtigste. Nu i mellemtiden vi vil generalisere dette som følger. Vi kunne kalde sige en funktion. Og det kunne se ud specielt som denne. Jamen, hvad med sløjfer? Hvis vi ønsker at begynde at konvertere eller oversætte mere i Scratch til C, denne ting her tilsyneladende blot siger "hej verden" for evigt. Så hvis du forbinder disse scripts med en kat i Scratch, det bare at gå at holde siger i en slags tegneserie boble, "Hej verden, hej verden, goddag verden, "ad nauseum, for evigt. Hvis vi ønsker at gøre noget lignende i C, går det til at se lidt kryptisk. Men vi kan opnå den samme resultater, som vi vil til sidst finde ud af, med syntaks som denne. Jeg har tænkt mig at bruge printf igen, fordi i slutningen af ​​dagen Jeg ønsker at udskrive "Hej verden". Og jeg åbenbart bruger en søgeord, der er ikke for evigt. Det er i stedet ordet mens. Men netop semantisk i Engelsk, mens slags tyder på en vis form for løkke eller cykle. Så det sker for at være nøgleordet, at C bruger. Og mens sandt, hvorfor gør samtidig sand effektivt betyde for evigt? Nå, mens, som vi vil snart værdsætte desto mere, har denne parentes ved siden af ​​det hvor du kan sætte et boolsk udtryk. Og så længe det udtryk er sandt, denne kode, som betegnet mellem disse to krøllede parenteser, som vi kalder dem, vil bare holde kørende igen og igen. Så sandt, er sandt. Så mens sande midler bare gøre det for evigt. Det er næsten en dum konstruere at udtrykke dig. Men der var ingen for evigt nøgleord i C. Der var tid. Og der var en meget enkel Boolesk udtryk som sandt. Og så dette, vil vi se, giver det samme resultat. Hvor ellers kan du implementere en løkke? Tja, i Scratch du måske hård kode et bestemt antal gentagelser i sløjfen her. Og så det er præcis, hvad vi kan gøre i denne version af C, hvorved vi har en såkaldt for-løkke. Og for-løkken her vil at gentage, noget kryptisk, fra værdien 0 på op til, men mindre end 10. Nu variabler i bunden. Du har måske ikke haft lejlighed til at bruge disse. Men hvad er pointen i almindelighed af en variabel vi sige i sidste uge? Hvad er det? Publikum: Points. David J. MALAN: At påpege? Åh, påpeger. OK, holde styr på punkter, for eksempel i et spil. Eller mere generelt at gøre hvad med den variable? Hvad er nytten af ​​dem? Publikum: Hukommelse. David J. MALAN: Ja, så hukommelse. Det er til lagring af noget. Og den slags fjollet visuel jeg brugte sidste gang var ligesom denne glasskål. Og hvis vi ønskede at gemme noget inde i en variabel, for eksempel lige nu værdi er seks, fordi der er seks ping pong bolde i her. Det er bare en slags opbevaring beholder, der under hætten er implementeret med bits, 0'er og 1-taller, Men en computer sker for at gøre det. Så i Scratch, hvis vi ønsker at have en variabel, vi kan bruge en orange blok som denne. Vi vil kalde det tæller i dette særlige tilfælde. Jeg initialiseret det til 0. Og hvad det jeg så gøre? Evigt, siger tæller, som, hvis du spiller med det i Scratch, du bare se Scratch. Katten eller hvad kostume du lægge på ham vil tale det pågældende nummer. Skift disken af ​​1 er ligesom forøgelse med 1. Og så det kommer til at tælle fra hvad så hvad? Fra 0 to uendelighed, eller indtil Scratch pauser, eller indtil du slags mister interessen i at se hvor højt han rent faktisk kan tælle. Så hvordan kan vi konvertere dette til C? Det kommer til at se lidt kryptisk. Men igen, hvis man ser på de enkelte af disse linjer enkeltvis de slags lineup generelt. Så tilsyneladende int kommer til at har nogle særlige betydning i C. Vi vil se det igen. Som en side betyder det heltal. Så det betyder bare tal. Så det er den type glas skål jeg vil, en der kan lagre numre, ikke ping pong bolde. Og jeg har tænkt mig at bruge lighedstegnet der for at tildele den en værdi på 0. Så det er helt ligesom sæt tælleren til 0, men i C. I mellemtiden, mens sand, der var ækvivalent, naturligvis evigt, selvom det er lidt kryptisk, og derefter indersiden af ​​krøllede parenteser. Og du kan tænke på disse krøllede parenteser, som du kan skrive på dit tastatur, som virkelig bliver ligesom krumningen i Disse gule sløjfe blokke i bunden. Det omfatter flere linjer kode. Printf er at få en lidt skræmmende nu, fordi jeg se ikke kun citerer i parentes. Men hvad der ellers er nyt syntaktisk i dette eksempel? Der er en procent d. Og så backslash n er der. Vi ser, at før, selv selvom jeg ikke nævne det. Så er der et komma. Og så er der en tæller. Men vi vil se på blot et øjeblik at dette er blot en standard måde at sige at udskrive en "Decimaltal," citat, citat slut, nogle decimaltal. Men jeg har tænkt mig at fortælle dig senere hvad det decimaltal er. Så det faktum, at der er et komma i denne linje siger printf, betyder gå videre og udskrive nogle decimaltal. Åh, og ved den måde, at antallet er uanset værdien af ​​denne variabel er. Og så for at gøre dette mere klar, vil vi se et eksempel inden længe involverer præcis printf i forbindelse med virkelige C-programmer. Nu bare at ombryde op nogle af disse konstruktioner. Boolske udtryk, du måske ikke har lejlighed til at bruge disse i dit program men du kan meget vel, især hvis anvendelse af betingelser. Og så disse to eksempler fra Scratch betyde, hvis x er mindre end y, eller hvis x er mindre end y og y er mindre end z, hvordan kan vi oversætte det? Tja, i C er det bare kommer til at se sådan ud. Lidt kryptiske, flere parenteser, nogle underlige ampersands, men fundamentalt ideerne er så enkle, som de er i brik verden. Vi blot at markere, hvis noget er mindre end noget andet. Hvordan omkring forhold? I en nøddeskal på engelsk, hvad betyder dette luns af Scratch kode gøre ville du sige? Publikum: Sammenligner to numre. David J. MALAN: Sammenligner to tal, og hvis x er mindre end y det siger så meget. Hvis x er større end y det siger så meget, ellers hvis x er lig med y det siger så meget. Nu hvor har x og y kommer fra? Hvem ved. Denne luns af Scratch kode er ud af kontekst. Men hvad vi ønsker at gøre nu, er at oversætte dette for bare et øjeblik at se. Så som du får komfortabel denne uge i Problem sæt 0 spiller i denne verden til venstre, indser at idéerne ikke ændrer denne uge eller næste eller senere. Vi er simpelthen at gå til begynde at skrive tingene på en anden måde med vores tastaturet i stedet for vores mus. Så hvis x er mindre end y, og der er nogle parenteser dér, så er der nogle krøllede parenteser igen at slags indkapsle det ligesom de gule puslespilsbrikker gøre. Og jeg har tænkt mig at printf x er mindre end y og så videre. Hvad er rart om C, som du kan se her, er, at du ikke får denne nesting, nesting, nesting det er nødvendigvis skal skubbe din kode til højre. Du kan i stedet have alt lineup pænt lide dette. Men det er bare en æstetisk detalje, som vi vil se igen inden længe. Okay. Så det bringer os tilbage til dette kryptiske søger programmet. Lad os rent faktisk at skrive noget kode. Nu, hvordan kan du gå om at skrive kode? I alle disse år, at du har ejet en Mac eller PC, stationær eller bærbar, du rent faktisk har haft mulighed at begynde at skrive programkode. Men du sandsynligvis mangler en speciel type program. Du kan helt sikkert skrive kode. Men du kan ikke nødvendigvis, ud af kassen, konvertere denne kildekode til objektkode, 0'er og 1'ere uden hvad på din computer? Publikum: Compiler. David J. MALAN: Så en compiler, til højre. Nu er de fleste af jer sikkert ejer ikke en compiler, har aldrig hentet en compiler. Men du vil se, kan du downloade det ligesom de fleste enhver anden stykke software. I en verden af ​​Mac OS, kan du downloade eller har hentet allerede noget, der hedder Xcode eller GCC eller Dunk. Hvis du kommer fra Windows-verden, du måske har hentet Visual Studio, Visual Basic, miljøer som. Der er snesevis af compilere disse dage, at du kan bruge. Men korte af det her er, at det ville være en smerte og helt ærligt, en teknologisk mareridt for hundreder af mennesker med forskellig computerkonfigurationer til alle konfigurere deres maskiner på nøjagtig samme måde så vi alle kan være på den samme side. Så hvad vi i stedet gøre i CS50 er giver vi dig en standard miljø, en Linux-miljø, der er kommer til at se lidt noget som dette. Du vil se mere af denne i Problem Set 1 specifikation, der vil gå online i denne fredag ​​aften. Og hvad det betyder er, at du fremover vil være i stand til at downloade og installere et program kaldet CS50 Appliance. Og du kommer til at hente og installere et andet program kaldet en hypervisor, som er blot en fancy måde at opnå dette. Uanset om du ejer en Mac eller pc eller en Linux-computer eller en Solaris computer, eller hvad skøre drift system, du kører, du kommer til at downloade et program kaldet hypervisor, der er kommer til at køre CS50 Appliance på din computer uanset hvad dit operativsystem er. En hypervisor andre ord konverterer vores stuff til hvilket som helst sprog, uanset instruktioner dine egen computer forstår. Så dette er en lagdeling. Og igen, det er lidt af tematisk i computer videnskab, bygningen på toppen af ​​tingene. Du har måske Windows. Du har måske Mac OS. Men fra næste uge, du er kommer til at have downloadet et frit stykke software kaldet hypervisor. Du kommer til at have downloadet et stykke software kaldet CS50 Appliance. Det kommer til at køre i hypervisor, der kommer til at køre på din computer. Og slutresultatet er at vi alle vil har en simpel vindue som dette på din Mac eller pc der giver os en illusion af alle kører det samme operativsystem, uden nogen anden indvirkning på din computer. Og du kan fuld skærm det og i det væsentlige opfører som om du kører en operativsystem kaldet Linux, hvilket er, hvad CS50 Appliance er baseret på. Så lad os faktisk bruger dette nu til at skrive et program. Du kan skrive et program bruger Microsoft Word. Du kan skrive et program hjælp TextEdit eller Notepad, eller WordPad, eller stort set enhver ord forarbejdning program, du nogensinde har brugt. Men virkeligheden er, bør du ikke bruge rigtig nogen af ​​disse programmer. Du bør helt sikkert ikke bruge noget som Microsoft Word, som har fed vendende og kursiv, og større skrifttyper og mindre skrifttyper, fordi computeren ikke bekymre sig om noget af det. Alle computeren er kommer til at bekymre sig om, er Engelsk lignende instruktioner skrevet i C. Så hvad vi vil gøre inde af CS50 Appliance er at bruge et program, frit rådighed, og det er præ-installeret i denne apparat, kaldet Gedit. Og Gedit er bare en super enkel teksteditor som Mac OS'er TextEdit som Windows Notesblok, der kommer til ser lidt noget som dette. Så lad os faktisk ikke se lysbilleder af dette. Men lad os faktisk gå ind i selve miljøet. Jeg har tænkt mig at gå videre og log ind, i dette andet vindue, til min CS50 Appliance, som jeg har præ-installeret på min bærbare computer her. Bemærk, at, ligesom Windows og Mac OS, er det fik nogle menuer. Ligesom Windows det sætter det dernede i stedet af Mac OS, som sætter det dernede. Men virkeligheden er, det er alle slags af det samme. Og her er en hel bundt af software. Der er Dropbox. Der er en hel masse af tilbehør, grafiske programmer, som vi vil bruge senere i betegnelsen for problemet sæt. Der er en webbrowser indbygget, så at dette er en fuldt udbygget computer inde i en computer. Men jeg har tænkt mig at klikke på dette længst til venstre hvide ikon her, som er ikonet for Gedit. Og det kommer til at åbne et vindue der har tre paneler til det, en venstre en, en øverste og en nederste. Nu er det i denne top rigtige, der Jeg har tænkt mig at rent faktisk at skrive noget kode. Så lad os gøre dette ,. Jeg har tænkt mig at gå til Fil, Gem. Og du måske ikke nogensinde har set dette vindue før. Men det er ligesom Mac OS eller Windows. Det er bare et vindue med alle mapper at jeg har inde i denne computer. Og jeg har tænkt mig at spare filen som hello.c. Og jeg har tænkt mig at gå videre og klik på Gem. Og nu opdager jeg har en fane øverst til venstre kaldet hello.c. Så sandsynligvis temmelig velkendt, selvom du ikke har brugt dette program før. Og nu jeg har tænkt mig at skrive i dem temmelig kryptisk sekvens af kommandoer at vi så et øjeblik siden. Medtag, standard I / O.h. Mere om det snart. Int main tomrum, åben krøllet klampe, lukket klammeparentes. Og så inde i der jeg synes er hvor vi havde "Hej verden" semikolon. Og nu gemme. Så dette er et program skrevet i C, skrevet, derfor i kildekoden. Men jeg kan ikke bare køre dette program. Jeg slags ønsker at fordoble klik på et ikon eller andet sted, men intet ikon findes andre end kildekoden fil. Hvad igen, er processen nu at Jeg har brug for at køre denne fil igennem? Publikum: Compiler. David J. MALAN: Så en compiler. Så i forskellige computere, du gør dette på forskellige måder. Men hvad vi har gjort her i det CS50 Appliance, der er repræsentativt for, hvordan du kan gøre dette på mange forskellige systemer, er jeg simpelthen gå til køre en kommando kaldet fabrikat. Og gøre bogstaveligt talt kommer til at gøre det. Gør mig et program. Så gør kommer til at køre en compiler til mig. Og navnet på det program Jeg ønsker at gøre, er hej. Nu gør er et program. Og gøre er smart nok til at indse, at hvis jeg siger gøre hej, det kommer til at se ud automatisk efter en fil kaldet hello.c bare fordi det er den måde den er konfigureret. Så når jeg nu trykke Enter her, det skøre kryptiske linje lige blevet henrettet. Og tro mig, før lang, indenfor blot få dage, du vil forstå, hvad alle af det pjat midler. Men for nu, bare vide, at gøre udløst udførelse af en compiler. Med andre ord fandt en compiler på min computer der er forudinstalleret på CS50 Appliance at vi vil aflevere til dig i Problem Set 1. Og det så tog hello.c som indgang og producerede tilsyneladende 0'er og 1-taller som output. Og som standard, hvad det gør, er det sparer disse 0'er og 1-taller i en fil kaldet hej. Og selv om denne syntaks også kan være nyt for dig, ved blot at sige prik slash hej vil være den midler, som jeg køre dette program. For nu og for mindst et par uger næsten alle programmerne vi skriver vil være i sorte og hvide tekstvinduer. Ingen mus, ingen klikke, ingen vinduer, ingen ikoner. Vi kommer til at holde det simpelt og fokusere på de underliggende ideer første gang inden vi kommer til noget højere niveau, for eksempel, ligesom break out spil, som vi talte om i den første forelæsning i sidste uge. Så når jeg trykker på Enter her, det er tilsvarende i en tekst kun miljø at fordoble på et ikon kaldet hej. Hvad forventer du vil ske, når jeg trykker på Enter så? PUBLIKUM: Det vil udskrive "Hej verden". David J. MALAN: Forhåbentlig det vil udskrive "Hello World". Og ja det gjorde. Nu har der været nogle kryptiske syntaks her. Lad os spole tilbage for kun et øjeblik og se, om vi kan ikke starte udlede blot ved lappeløsninger, forsøger og undlader, om, hvad der foregår her. Hvad hvis jeg slippe af med backslash n? Nu er nogle af jer, der har programmeret før sandsynligvis ved straks hvad det betyder. Men for dem af jer, der har aldrig programmeret før, mindst tror på dig selv, hvad der foregår at ændre sig, når jeg køres igen dette program? Så jeg har tænkt mig at gå tilbage til mit lille sort og hvid vindue, som er det vindue, Jeg kan kompilere dette. Jeg har tænkt mig at recompile hej. Vi kommer til at se den samme kryptisk sekvens af kommandoer. Og jeg har tænkt mig at gøre dot skråstreg hej. Og nu man har, hvis man ville, som aldrig programmeret før, hvad der kunne være anderledes denne gang? Ja. PUBLIKUM: Det vil ikke stoppe udskrivning "Hej verden". David J. MALAN: Det kommer til-- undskyld? PUBLIKUM: Det vil ikke stoppe udskrivning det? David J. MALAN: det vil ikke stoppe udskrivning "Hej verden". Så ikke en dårlig idé. Andre ideer? Ja. PUBLIKUM: Fejl besked? David J. MALAN: Fejl budskab, OK, kunne være. Hvad ellers? PUBLIKUM: Det kan udskrive beslag med semikolon så godt? David J. MALAN: Might udskrive beslag med semikolon så godt. Så måske det omvendt skråstreg så er nogle slags terminous, der er vigtigt. Alle andre tanker? Så alle gode ideer. Og i virkeligheden, går det at være en fejlmeddelelse. Det er nok mest sandsynligt at være svaret i almindelighed for de næste par uger som vi lære at kode her. Men for nu huske, at computere kun gøre, hvad du fortæller dem at gøre. Meget ligesom latterlige peanut smør og gelé eksempel. Vores menneskelige computere skulle kun at gøre, hvad du fortalte dem at gøre. Så i dette tilfælde, hvis du ikke fortælle computeren at flytte den blinkende markør til næste linje, er det ikke kommer til at gøre det. Så når jeg kører dette program nu mærke forskellen. Ligner en fejl. Det er en æstetisk fejl, måske. Men hvad er anderledes ved denne output versus sidste naturligvis? Ja. PUBLIKUM: Det gjorde det ikke en ny linje. David J. MALAN: Det gjorde ikke gøre en ny linje. Nu dem af jer der har måske gjort websider før, du måske kender det BR-tag eller det stykke tag, meget ens i ånden. En webbrowser vil ignorere dig indtil du fortælle det præcis, hvad de skal gøre. Tilsvarende er et sprog som C kun kommer til at gøre, hvad du fortæller det at gøre. Så grunden til, at alle disse eksempler, hidtil har slags henkastet havde denne backslash i der, det er de midler, som du udtrykker dig som en ny linje, så at sige. Og du kan slags forstå, måske, at dette ville se lidt dum hvis intet andet. Hvis jeg ønskede en ny linje, bare trykke Enter og derefter venlig af slagte koden sådan burde egentlig ikke gnide dig på den rigtige måde. Og selv hvis du ikke gør virkelig pleje på dette tidspunkt, du vil indse, at dette er ikke en særlig god leder stykke kode. Og så, hvad verden besluttet år siden, er at når du ønsker at sætte markøren hen på en ny linje eksplicit skal du udtrykkeligt sige ny linje, backslash n. Og der er nogle andre symboler lide. Men for nu vi bare fokusere på backslash n. Lad os nu gøre programmet lidt mere interessant. Jeg har tænkt mig at gå videre og denne gang åbne en ny fil. Jeg har tænkt mig at gemme dette som goddag-1.c. Og bare for sjov, jeg vil gå sætte det ind i min Dropbox mappe. Som du kan se i CS50 dokumentationen til apparatet, senere i denne uge for Problem Set 1, vil vi opfordre dig at bruge Dropbox eller nogle tilsvarende tjeneste, fordi så alle dine kodens vil blive bakket op automatisk. Og så det er derfor jeg har gået ind i denne mappe her. Og nu jeg har tænkt mig at skrive et lidt andet program. Medtag, standard I / O.h, int main tomrum. Og så her printf, hej verden, som er præcis den samme som før. Men nu jeg ønsker at udskrive noget , der er lidt anderledes. Jeg ønsker at udskrive, sige, "Hej, David." Okay, så selvfølgelig, det skulle gerne være tilfældet, at hvis jeg genkompilere dette program, gentages det, det kommer til at sige "Hej, David." Men hvad hvis jeg ønsker at indføre denne form for variabel begrebet af en beholder, der sker til at gemme D-a-v-i-d og ikke hårdt kode det ind i mit program. Jamen hvad nu hvis jeg begynder gør noget som dette? String s, så dette er en variabel. Hvis du vil have en streng, alias et ord eller en sætning. En sekvens af tegn er, hvad vi i programmeringen kalde en streng. Vi vil bare generisk opkald det s, fordi det er et dejligt simpelt navn. Men jeg kunne kalde det noget. Jeg har tænkt mig at sige string s ligemænd citat citat slut, "David" semikolon. Og nu jeg ønsker at indsætte D-a-v-i-d i, hvad jeg udskrivning. Og før vi så en teaser på skærmen nogle speciel syntaks , tilladt os at erstatning i en værdi. Hvad var det særlige symbolet nogle glider siden? Så procent. På det tidspunkt var det procent d til decimaltal. Det betyder ikke rigtig synes relevant her. Slår derude er anden procent symbol som procent s, som står for en pladsholder for en streng. Så nu, meget enkelt, jeg er kommer til at gå gøre goddag-1, fordi denne fil hedder hej-1.c, og tryk Enter. Og jeg skruet op. Hvad sker der? Nå, her er, hvor vi er nødt til at begynde at forstå, at vi er i denne kommando line miljø, er dette kun tekst miljø. Der er ingen på deres ikoner ligesom mapper lige nu. Og tænke tilbage for et øjeblik siden. I hvad der gjorde mappe jeg siger Jeg sparede min kode? Så mappen Dropbox. Kunne have blevet kaldt noget. Men det sker at blive kaldt Dropbox. Så jeg en eller anden måde nødt til at dobbeltklikke på at Dropbox mappe for at få ind i det og få på min kode kaldet goddag-1.c. Faktisk, lad mig gå videre og minimere dette vindue for bare et øjeblik. Ligesom Windows og Mac OS, Der er mapper i Linux. Der er mapper i CS50 Appliance. Det er bare lige nu er vi indespærre os til denne tekst miljø. Men hvis jeg fordobler klik på Dropbox, bemærk der er den fil, som jeg ønsker at kompilere. Men jeg har brug for denne sort og hvid terminalvindue, så at sige. Men jeg har brug for, er derfor, at flytte ind i denne mappe eller bibliotek. Så lidt mystisk, men du vænne sig til denne også. I en verden af ​​Linux, som igen er operativsystemet system, vi kører inde i CS50 Appliance, der er en kommando kaldet cd. Hvilket betyder, at jeg kan gøre cd, rum, Dropbox. CD, skift bibliotek. Højre. Tilbage i dag, når folk var opfinde computere og drift systemer som dette, de ønskede at skriv færrest tastetryk muligt. Så den nemmeste måde at sige ændring bibliotek var cd. Så hvis jeg ramte cd, rum Dropbox, mærke til, hvad der er ændret her. Inde i parentes apparatet er venlig af humoring mig og minde mig hvor jeg er. Så den åbne mappe er Dropbox. Hvis jeg nu skriver LS til liste, igen kortfattet, fordi folk ikke ønsker at skrive tilbage i dag l-i-s-t. Så de i stedet gjort det ls. Enter. Bemærk, at jeg kan se to ting, goddag-1.c, og så er denne kryptiske ting, kilde 1m. Det er bare min måde at sige kildekoden til uge 1 mandag. Det er en mappe, jeg har hentet fra CS50 hjemmeside, som jeg gjorde tidligere i dag og bare sætte det ind i apparat i forvejen. Men for nu er den eneste, vi bekymrer sig om, er at gøre dette program. Så når jeg skriver gøre goddag-1, Enter. Damn det. Noget gik galt. Så lad os drille det fra hinanden. Og det er desværre, hvor tingene få lidt stressende i starten, i hvert fald hvis du har aldrig programmeret før. Min gud. Jeg skrev en to line program og Jeg har fire linjer af fejl. Så hvad der foregår her. Først og fremmest altid rulle tilbage op og finde den første fejlmeddelelse, fordi oftentimes compilers bare blive forvirret over, hvad du og jeg gør. Oversættere er temmelig dum. De vil kun gøre, hvad du fortælle dem at gøre. Og hvis du forvirre dem, de er bare kommer til at slags kaste op deres hænder og måske smide flere fejlmeldinger end rent faktisk er relevante. Så lad os se på det første. Super kryptisk i første omgang. Men varsel, her er navnet på den fil, hvor jeg skruet op tilsyneladende. Colon 5, kolon 5 betyder blot på linie 5 ved femte karakter. Så femte kolonne tegn, hvis du vil, fejl. Anvendelse af sort identifikator streng. Mente du standard n? Nej, jeg mente streng. Og så er det sådan kopiere og indsætte hvad jeg har skrevet til virkelig trækker min opmærksom på, hvor jeg skruet op. Så en eller anden grund C eller mindst compileren forstår ikke ordet streng. Og det er fordi vi gjorde det op. Så streng eksisterer ikke i C. Hvad CS50 gør, for de første par uger kun af klassen, er vi give nogle uddannelse hjul, så at sige. Og vi sætte disse støttehjul inde i en speciel fil kaldet CS50.h. Så dette er den anden af ​​to fil navne, der tilsyneladende ender på dot t. Lad os spole tilbage. Printf er et udsagn eller en funktion der tilsyneladende udskriver noget på skærmen. Men du kunne ikke se mig gennemføre printf, til højre. Nogen år siden gennemført printf. I hvilken fil ville du satse han eller hun satte gennemførelsen til printf, koden for printf? I en fil kaldet standard I / O.h. Faktisk er det sandsynligvis i to filer, standard I / O.h, som står for header fil, og standard I / O.c, der står for en C-kildekode. Så han eller hun for nogle år siden smed den kode, de skrev i filen så folk som os år senere kan omfatte det, så at sige, i vores egne programmer. Og ja, det er hvad havelåge efterfulgt af ordet omfatter gør. Det ser på den lokale harddisk, finder fil kaldet standard I / O.h, og så effektivt kopier og indsætter det inde i min egen fil. Så nu mit program ved hvordan du udskriver til skærmen. Så ved denne logik, hvor er streng defineres? Publikum: CS50.h. David J. MALAN: CS50.h. Og ja, det er hvad vi, kernen personale, har gjort. Vi har opfundet et par datatyper, så at sige, som en streng, i tillæg til dem, du få gratis, ligesom en int. Og vi vil se andre som en char til en karakter og et par mere. Inde i CS50.h tilsyneladende er i det mindste nogle omtale af strengen. Så lad mig gå videre og gentagelsen make hej-1. Jeg vil zoome ind igen og krydser mine fingre. Nu ved at have foretaget en ændre jeg fast fleste ting. Men damn it. Flere procenter end data argumenter. Hvad har jeg gjort forkert denne gang? Så det er stadig temmelig kryptisk. Men denne fejl er på linje 7 og karakter 21. Så lad os gå se op her. Det er lidt subtil. Men hvis du tænker over hvad grundtankerne her er, kan vi måske drille dette fra hinanden. Så printf er navnet på funktionen. Parenteser, hidtil, er ligesom hvad vi sætte omkring de ting, vi passerer som input til en funktion. Okay, bare en vilkårlig menneskelig konvention. Brug parenteser. Inde i disse parenteser Vi har været at sætte anførselstegn, og derefter en streng som "Hej verden". Men i det tidligere eksempel meget kortvarigt gjorde vi ser på med Scratch. Og vi havde procent d, hvad ellers var inde i de parenteser at jeg kaldte verbalt? Ja. PUBLIKUM: Så det er, hvad du tager [Uhørligt] indefra [uhørligt] hvad disse [uhørligt]? David J. MALAN: Præcis. Så vi havde procent d. Men så havde vi tæt citat, komma, tæller. Højre. Vi specificerede hvad vi ønsker at gøre, som pladsholder. Så hvad jeg har tænkt mig at gøre her, er komma, hvad vil du have mig til at sætte? Publikum: S. David J. MALAN: S, fordi s i dette tilfælde er navnet på lagerbeholderen. Det er navnet på denne glasskål. Hvor det før var tæller i det simpelt Scratch eksempel vi kiggede på. Så nu have foretaget to ændringer, lad mig zoome ind og prøv en gang til kompilere dette program. Nu ser jeg, at kryptiske linje. Men det er faktisk det navn på compiler. Dunk er navnet på oversætteren. Gør bare gemme mig hovedpine af nogensinde skrive det lange vanvittigt kommando ud. Så nu hvis jeg prik skråstreg goddag-1, Jeg skulle se "Hej, David." Temmelig underwhelming, selv om, ikke? Vi kunne have gjort dette en meget mere enkelt uden at tale om variable og CS50.h og alt dette. Så lad os gøre det til en lidt mere interessant. Ud over CS50.h, der ting som snor erklærede, at CS50 biblioteket også har et par funktioner. Så ligesom år siden, nogen skrev printf og sætte det i standard I / O.h og en anden fil. Vi, CS50 personale, skrev en funktion kaldet getchar, GetDouble, GetFloat, GetInt, GetLongLong, getString, og vi sætter dem i en fil kaldet CS50.h og CS50.c. Og vi sætter dem inde af CS50 Appliance. Og folk kan også hente dem på nettet, hvis de ønsker at sætte dem på deres egne computere så godt. Hvilket vil sige, at vi har skabt funktioner, der får input fra brugeren. Jeg ved ikke, hvad alle af disse datatyper er. GetInt er slags ligetil, ligesom få et heltal eller anden måde fra brugeren. Og getString er nok ligesom get et ord eller en sætning fra brugeren. Så lad os fokusere på det. Og jeg har tænkt mig at gå tilbage til apparat og jeg har tænkt mig at gå videre og gemme denne fil som, lad os kalde det goddag-2.c som min anden version. Og lad os lave et par ændringer. Denne gang i stedet for hårdt kodende David, som gør en utrolig konsekvent men underwhelming program, hvad hvis jeg i stedet gøre getString? Bemærk nu getString har en åben parentes, lukket parentes, fordi det behøver ikke nogen input. Det er bare kommer til at gå få en snor fra brugeren. Og nu et par ord om anden syntaks. Semikoloner bare afslutte en linje kode. Du behøver ikke dem overalt. Men det betyder bare jeg færdig med denne linje kode. Lad mig gå videre til en anden erklæring eller funktion. String erklærer en variabel. String er ligesom at sige give mig en skål, tak. Og lad mig sige en streng i det. Og nu lighedstegnet. Hvad er lighedstegnet væsentlige svarer til? Publikum: Tildel. David J. MALAN: Ja, tildele en værdi. Så hvis jeg for eksempel opkald denne funktion getString, og vi vil se i et øjeblik, der er kommer til at bede brugeren om en streng. Det er som at lade mig så skriv D-a-v-i-d på et stykke papir. Og når jeg siger streng s lig getString, lig betyder ikke rigtigt lige i C programmering. Det betyder tildele fra højre side til den venstre side. Så jeg har fået en streng. Og lighedstegnet betyder sætte det i opbevaringsboksen kaldet sek. Og derefter sende dette ud til printf til rent faktisk at gøre sin ting. Så slutresultatet derefter går at se lidt anderledes ud. Lad os gør goddag-2. Enten kunne arbejde. Du følger med. Gør goddag-2 virkede. Dot skråstreg goddag-2, Enter. Jeg synes at have en uendelig sløjfe eller noget. Intet sker. Hvorfor? PUBLIKUM: Det gør en uendelig løkke. David J. MALAN: Det er en uendelig løkke. Det er lidt venter på mig at faktisk give det nogle input. Så lad mig gå videre og skrive i David, og tryk på Enter. Og nu står der "hej, David." Hvis jeg kører det igen. Lad os skrive i Rob, "Hej, Rob." Nu er dette er den værste brugergrænseflade nogensinde. Brugeren er tilsyneladende formodes at vide, hvad de skal gøre. Men uanset. Ved hjælp af disse samme bygning blokke ligesom i Scratch, vi kan løse dette problem og sige noget lignende dit navn venligst, kolon, rum, lukket tilbud, tæt parentes, semikolon. Så en masse igen dumhed med syntaksen. Men bemærk jeg har lige tilføjet en brik over denne ene og over denne. Så nu, hvis jeg kør det, hej-2, Enter. Vent et øjeblik. Hvad er der galt? Det er ikke opfører anderledes. Ja. PUBLIKUM: Du har ikke køre gøre igen. David J. MALAN: Jeg gjorde ikke køre gøre igen, til højre. Så jeg har ændret min kildekode. Men igen, der er det flow. Kildekode gennem compiler giver du nyt objekt kode, eller 0'er og 1'ere. Så jeg har brug for til rent faktisk gentagelsen make hej-2 Enter. OK, noget ser ud til at være sket. Dot skråstreg goddag-2. Dit navn venligst. Og for at være klart nu, hvorfor er markøren på samme linje? Præcis. Jeg har ikke sat den omvendte skråstreg n op her i min kode. Så nu kan jeg skrive noget lignende Daven, Enter. Jeg kan køre det igen og skrive noget som Gabe, Enter, og vi får et andet program igen og igen og igen. Nu vi i sidste ende får brug for at bruge et par forskellige kapaciteter. Vi er nødt til at indføre i sidste ende nogle betingelser for at gøre tingene betinget. Måske sløjfer så vi kan gøre ting igen og igen. Måske ville det være rart, hvis vi kunne gennemføre vores egne funktioner, ligesom vi kan gennemføre vores egen printf eller vores egen version af getString og GetFlow, fordi i sidste ende selv bruger denne kommandolinje miljø kan vi gøre selv de mest visuelt interessant ting. Faktisk i konklusion lad mig gøre dette. Jeg har tænkt mig at gå videre og lukker disse vinduer og åbne denne ikon her, der er bare en større version af denne integrerede terminalvindue. Så Gedit har ikke kun sted for min kode, men også en indbygget terminal vinduet, sort og hvid vindue, hvor jeg kan køre kommandoer. Jeg lige er sket til at åbne en større version af dette. Og nu jeg har tænkt mig at gå ind i den mappe, jeg har allerede lagt på forhånd på kursets hjemmeside. Og jeg har tænkt mig at gå videre og åbne en fil kaldet thadgavin.c, som blev skrevet af en anden. Og hvis vi ser på det, dette er ikke den slags kode vi vil skrive, da målet med denne kode var at skrive den smukkeste søger kode, at han eller hun kunne, uanset om eller ej andet menneske nogensinde kunne forstå denne kode. Faktisk, er der hvert år, hvad der er kaldes en korrumperet C konkurrence, som er for rigtige nørder, der skriver kode, som ingen andre kan læse, men det betyder noget, enten virkelig simpelt eller virkelig forbløffende. Og vi troede, vi havde slutte med dette look på noget, der er ret fantastisk du måske har set en gang før. Men vi ender på dette note, prik skråstreg, thadgavin. Dette er altså, hvad der venter. Det er det for CS50. Vi vil se dig på onsdag. [Musik spiller]