DAVID MALAN: Dette er CS50, og dette er starten av en uke. Og hva vi trodde vi skulle gjøre er å trekke tilbake teppet av en enhet som mange av dere har sikkert gått forbi nå for år, men kanskje aldri helt visst hva det er. Så denne enheten vil trolig se kjent for de fleste av dere nå. [VIDEOAVSPILLING] -En triumf av matematiske og mekaniske ferdigheter er denne flotte nye automatisk kalkulator på Harvard University. Intrikate problemer i matematikk sette gjennom maskinen i kodet form på tape er nøyaktig løst på et øyeblikk brøkdel av den tid som kreves for menneskelig beregning. Designet for å fremskynde alle former for matematisk og vitenskapelig forskning, den gigantiske mekaniske hjernen vil arbeide for USA Navy fram til krigens slutt. [END VIDEOAVSPILLING] DAVID MALAN: Så det er det du ser i Science Center, som er der at maskinen er nå plassert. Du faktisk bare se en del av det. Bare en del er for tiden utstilt, og det er en enhet som kalles Mark I, og det var i hovedsak en virkelig stor kalkulator. Det ble etterfulgt av Mark II, og det er fra Mark II at vi faktisk få en bit av leksikonet. Dette er den første innspilte forekomst av noe du er i ferd med å bli alt altfor kjent med over løpet av semesteret - nemlig en bug. Så viste det seg på ett punkt Mark II-enheten var ikke fungerer riktig, og ved nærmere ettersyn, det var faktisk en bug - en møll - som møll - innsiden. Og siden den gang har vi referert til feil i programmer som bugs. Så mer på det som kommer. Snakker av video i tillegg, hvis du ikke allerede har, vet at CS50 er åpenbart filmet. Forelesningene vanligvis gå opp rett etter klasse i form av en pre-release uredigert format, og deretter en dag eller to senere, satte vi opp en høyere oppløsning og høyere kvalitet versjon. Du husker kanskje Vanessa, som hadde formue av å spille med Google Glass, som jeg husket å lade denne gangen. Så hvis du ønsker å komme opp etter klasse og spille, de skal jobbe i dag. Og hvis du ønsker å se hva Vanessa så den andre dagen, hva du vil se her - la meg heve volumet her på min laptop. [VIDEOAVSPILLING] -Så la meg køen dette er opp. OK. Så ta på denne. OK. OK, Glass. Spill inn en video. OK. Vanessa? [END VIDEOAVSPILLING] DAVID MALAN: All right, så grunnen at det ikke fungerte for de fleste av dere på slutten av klassen var fordi jeg fortsatte å spille en time av at opptakene peker på meg selv etter Jeg satte brillene ned. Så i dag vil jeg forlate dem, men takk du til Vanessa for å være en god sport. I mellomtiden, et par kunngjøringer før vi videre i dag. Så en, CS50 har en tradisjon for å gjøre hva vi kan for å prøve å gjøre en veldig stor klasse føles mindre. Og mot dette målet, de fleste hver fredag, vi samles på en restaurant i torget, Fire and Ice, med 30 eller 40 av dine klassekamerater, meg selv, noen av undervisningspersonalet, og vi bare har en svært uformell lunsj. Vi ofte invitere venner fra industri, alumni i klassen, alumni av college, egentlig bare for å chatte hver andre opp, snakke om livet etter college, livet på college, og lignende. Så hvis du ønsker å delta i dette første slike lunsj denne fredagen på 13:15, leder til at URL på enkelte punkt. Plassen er begrenset, så vi vil gjøre først til mølla. Men vi vil gjøre dette på nytt på et tilbakevendende basis, så ikke bekymre deg hvis du ikke gjør det gjøre det i denne første batch. Nå, i form av ressursene gitt curricularly av kurset, det er en hel haug, og hvis du ikke har trakk opp kurset hjemmeside allerede, særlig i henhold til foredrag du vil finne at alt vi gjorde forrige uke er der, både i video og en slags av elektronisk form. Men utover videoer, vil du finne at det nå er hele teksten transkripter, for eksempel, av hver forelesning. Så hvis vi faktisk gå tilbake til dette skjermbildet her med Vanessa, og naviger til bunnen hjørne av skjermen, du vil finne at faktisk, ikke for Fredag ​​foredrag, men hvis vi går tilbake til Onsdag, siden denne funksjonen tar en noen dager, vil du finne at du kan faktisk trekker opp, for bedre eller verre, hvert ord som jeg eller en frivillig på scenen sa. Og mer enn bare det. Du kan faktisk søke det, kan du Klikk på noen av disse setningene, hoppe til det punktet i videoen, alle mot og slutt gjør materialet hele mer farbar. Men hvis du heller ikke følge det i slike detaljer, finner du, for eksempel denne lille menyen her for 1.5x hastighet, 2x hastighet, eller jeg f jeg allerede snakke for fort for deg, 0,75 x hastighet. Så skjønner alle som er tilgjengelig der for deg. Men utover det, for forelesninger, innser at vi også gjøre disse ressursene tilgjengelig. Lysbilder, eksempelkode, noe som jeg gjøre på scenen eller i forkant av klassen, vi skal legge det slik at du kan spille sammen hjemme eller i Sanders. Men det vi også trodde vi ville gjøre dette år for første gang er også gi deg walkthroughs av disse eksemplene. Økende grad, som jeg har reflektert på Verdien av CS50 foredrag, har jeg begynt å stille spørsmål ved hvor nyttig det er for dere å sitte der, for meg å stå her, og for meg å snakke på deg, særlig når materialet, eksempler, blir mer komplekse. Fordi alltid, etter et antall minutter, noen vil sone ut, og så du savner noen viktig innsikt av noen eksempel, og så er du i hovedsak ble satt til den gjenværende del av klassen, som ikke er den beste bruken av tiden din, eller, egentlig, ours samlet som en klasse. Og så hva vi tenkte vi skulle prøve å gjøre, særlig for noen av de mer komplekse eksempler som jeg ikke kan gjøre rettferdighet til i klassen, at vi kanskje ikke har tid til i klassen, eller du kanskje bare sone ut i løpet, er vi produsere en serie av gjennomganger av disse eksempler slik at hvis du går til, for eksempel, sist fredag ​​videoside her etter eksempler, vil du se at for fredag, er det nå dette koble til walkthroughs. Og formatet på disse vil endre seg over tid. For nå bruker vi en enkel YouTube-spilleliste. Men det jeg gjorde med vår produksjon team etterpå ble gå gjennom hver og hver og en av disse eksemplene igjen, forhåpentligvis peker ut i mye større klarhet nøyaktig hva takeaways kan være eller burde være fra hver. Så du vil finne, for eksempel fra sist uke, alle scratch eksempler vi gikk gjennom er gjort lineært på den måten. Så gjerne engasjere seg eller ikke engasjere seg i dette materialet. Virkelig et tema for dette kurset er at det er sannsynligvis mer i veien for ressurser enn du kunne absorbere i løpet løpet av et semester. Men det er bevisst. Det er ment å være slik at du som enkelte student velge selv basert på din læringsstil. Så hvis forelesninger fungere for deg, flott. Hvis seksjoner fungere for deg, flott. Hvis walkthroughs arbeide for du bedre, flott. Det virkelig vil være opp til deg å velge hvilke ressurser som fungerer best for deg. Til slutt, takk til en alumnus av Selvfølgelig, vi også gi en kanonisk sett av skriftlærd notater. Så i stedet har dere hoder ned i forelesninger skrible ned ting som kommer opp i klassen, vi, de ansatte, vil gi deg med det vi føler er en kanonisk sett med notater til frigjøre deg fra at distraksjon, slik at hvis du er her og engasjert, er du virkelig engasjert med hva som skjer, med klassekameratene gjør opp på scenen, med hva som skjer på skjermen, og ikke bare skrive ned ordrett hva har skjedd å ha blitt sagt. Så realisere alle disse ressursene er tilgjengelige for deg. Seksjonering, som svar på et spørsmål, vil begynne denne onsdagen. Vi egentlig vente til etter at de fleste andre klasser er gjort slik at vi kan minimere antall endringer at vi trenger å gjøre. Men til helga, som starter Søndag vil være en engangsavgift forekomst av det vi kaller super seksjoner. Disse vil bli filmet for de som ikke kan delta, og i hovedsak, kursets hoder vil lede oss gjennom noen av C-delen av emnet mot en ende av problemet sett en, hvilken kommer til å være vår første C basert oppgavesettet. Og disse vil bare være valgfrie inndelinger i påvente av hva som vil bli tilbakevendende seksjoner ledet med 50 kursets pluss undervise stipendiater ukentlig. På søndager eller mandager eller tirsdager, vi har 90 minutters seksjoner i en svært tradisjonell forstand, noe som vil bli muligheter for hands on og mer intim gjennomgang av Kursets materiale. Uten videre, la meg introdusere kursets hoder, som er bak kulissene med meg, gjør alt skje. Hvis de som er her i dag kunne bli med meg, Rob og Lauren og Josef og Lucas, alle av dem har vært med kurs for noen tid. RJ er den tredje medlem av teamet vårt. Han kunne ikke være her i dag, men han ba meg om å vise et bilde av ham. Jeg er ikke sikker på at han ønsket dette en, men det han er. Og la meg bare tillate teamet å si hei og presentere seg slik at du blir kjent med dem, samt din egen undervisning fellow dette begrepet. LAUREN CARVALHO: Hei. Mitt navn er Lauren Carvalho. Jeg er bosatt veileder i Leverett House. Jeg er også super glade for å være en hode TV for CS50 i år. CS50 er en svært utfordrende klassen også som en svært stor klasse, så hvis du har noen bekymringer, hvis du føler for du faller bak, gjerne nå ut til noen av oss på heads@cs50.het, eller til meg, hvis du hadde liker å leke med min golden retriever valp. Her er Lucas. LUCAS FREITAS: Hei, folkens. Mitt navn er Lucas Freitas. Jeg er en junior [uhørlig] informatikk og lingvistikk. Jeg er faktisk fra Brasil, og jeg også realisere østasiatiske studier. Så hvis du har spørsmål om informatikk eller språk eller noe, bare gi meg beskjed. Eller CS50, spesielt. JOSEPH Ong: Hei. Jeg er Joseph. Jeg er en senior studere datamaskin vitenskap i Elliott House. Så, la oss se. Du vil se meg rundt med ett av disse store kameraer. Jeg er bosatt stabsfotograf for 50 også, og studentene ofte noen ganger misforstå meg for en asiatisk turist. Så hvis du ser meg med et kamera, ikke løpe unna. Bare smile og ikke vær sjenert. Og jeg håper du liker 50. Jeg likte det veldig mye da jeg tok den, og det er derfor jeg har blitt TFing for disse tre årene. ROB BOWDEN: Hei. Jeg er Rob. Dette er min fjerde semester med CS50. Jeg nettopp uteksaminert i mai. Jeg var i Kirkland. Jeg er begeistret for dette semesteret, og jeg håper du også. DAVID MALAN: Takk til årets hoder, og til RJ også. Så noen avsluttende merknader om ressurser. One, satt p 0 er allerede oppe. Denne eksisterer bare i standard utgave som er ment for Helheten av klassen. Fra og med p set 1, vil det være hacker utgaver av de fleste oppgavesett, som igjen, vil dekke materialet med litt mer av en utfordring, mens fortsatt berører et av de samme temaene. Må ta en titt på kursets hjemmeside for at spesifikasjonen for p settet 0. Kontortid vil også begynne denne uken, i kveld, i morgen, onsdag, og torsdag i ulike dining haller på campus. Sjekk ut cs50.net/ohs for kontoret timer for kurset, og innse dette vil være svært uformelle muligheter, sikkert, ved starten av semester, for å komme med din laptop under hjernen pause. Ta med noen venner og chatte opp kursets TFS og CAS med noen spørsmål som du måtte ha. Og jeg kan ikke understreke nok, selv for scratch og oppgavesettet 0, det virkelig er ingen dumt spørsmål. Det er ingen student for ubehagelig å stille spørsmål. Ta gjerne dra nytte av denne ressursen. Det vil være der recurringly gjennom hele semesteret, som vil CS50 Diskuter. Dette er kursets elektroniske diskusjonen fora på den adressen der. Hva vi vil også gjøre under forelesningene er også overvåke dette, takket være Kursets lærerteam. Og så hvis du har et spørsmål under forelese, fordi jeg sa noe dårlig eller ikke i det hele tatt, for all del, spør som i sanntid hvis du har din laptop eller telefon på nettstedet, og vi vil gjøre vårt beste i nær sanntid til svare på det. Er det noen spørsmål om CS 50? Så en siste notatene mine. At spørsmålet om SAT unsat. Som du ferdigstille studien kort, hvis du ikke allerede har, innser at overordnede visjon om SAT unsat, tilgjengelig for alle studenter, er virkelig å bidra til å ta kanten av av et kurs som dette, så å si, slik at hvis du finne deg selv sent på kvelden, 2 AM, 3 AM, virkelig stanger hodet opp mot veggen der du vet at du er 99% av veien dit til ferdigstillelse, men du har så mange andre ting å gjøre, Jeg tror en bedre bruk, ofte, av studentenes tid er å faktisk gå videre til de andre tingene, slik at du kan optimalisere din tid rundt. Og lør unsat er en mekanisme via der du kan ta trøst i det faktum at 99% av den måte det er fortsatt ganske darn bra. Tilsvarende, også, hvis du har kommet inn i kurs med ingen tidligere bakgrunn eller ikke på langt nær så mye bakgrunnsinformasjon som du tror klassekameratene dine kan ha, sant eller falsk, skjønner at dette er en mulighet til å få hendene skitne med kurset, sette tærne i vann, så å si, mye som jeg selv gjorde år siden med bestått / ikke bestått. Som jeg sa i forrige uke, hadde dette kurset, som andre, ikke vært tilgjengelig bestått / ikke bestått på den tiden, jeg sannsynligvis ville ikke noen gang har trappet foten i klassen, selv om jeg gjorde, fem uker senere ombestemmer meg, som du kan like godt, og bytte over til eller fra brev gradert status. OK. Så så vi på ting som dette på Fredag, og vi er veldig raskt kommer å gå over til noe som ser mer kryptisk i dag. Men det er likevel samme grunnleggende idé. Hva var generelt begrep som vi brukes til å beskrive et puslespill brikke som så ut som dette? Så, en uttalelse. Og du kan kalle dette noe rekke ting. Men vi vil bare kalle det en uttalelse, og en erklæring bare forteller programmet - eller i tilfelle av Scratch, sprite - å gjøre noe. Si hei i dette tilfellet. Noe sånt som dette vi stedet kalles hva? Ja, så et boolsk uttrykk. Et boolsk uttrykk er bare noe det er sant eller usant, og så Skrap trekker dem med denne form, men også med et spørsmålstegn å formidle Ideen om at svaret på dette spørsmålet er enten sant eller usant, ja eller nei ene, 1 eller 0. Og vi bruker disse boolske uttrykk innsiden av konstruksjoner som disse, som vi kalte det? Så, tilstand eller gren. Og tilstanden du ser her i Scratch har en liten plassholder for et puslespill stykke som form, formålet som er slik at du kan dra og slipp den på toppen og deretter diktere til programmet hvis dette Boolsk uttrykk er sant, gjør dette settet med instruksjoner, dette sett av oppgaver, andre gjøre dette andre settet med instruksjoner. Og minner om at du kan reir disse tingene. Selv om det er ikke mye plass visuelt i det puslespillet stykke, Scratch vil vokse og krympe å passe uansett Brikkene du dra og slippe i det slik at du faktisk kan reir dette og ha en treveis gaffel i veien. If, else if, else. Og du kan selv gå utover at ved nesting videre og videre etter behov. Så til slutt, så vi konstruerer som dette, også kjent som en løkke. Og dette er bare noe som gjør noe igjen og igjen og igjen. I dette tilfelle skjer det å være en endelig antall ganger, men vi har også så et eksempel der antall ganger kom fra en variabel, slik det kan endre seg. Og vi så også en annen blokk helt kalles en evig blokk som tillatt oss å sløyfe uendelig lang. Så en annen konstruksjon som Scratch 2.0 har - og de av dere mer komfortabel med tidligere bakgrunn er allerede godt kjent med dette konstruere - disse tingene vi kalte det? Så vi kalte disse funksjonene, ellers kjent som prosedyrer. Det er en svak semantisk forskjell, men vi kaller dem bare funksjoner. Og en funksjon, i tilfelle av bunnen, er en tilpasset puslespill brikke som du selv kan lage, slik at du har en ny oppgave stykke som, i denne tilfelle, ville bli kalt hoste, at kommer til syne mellom alle de andre tilgjengelige brikkene i Scratch. Selv om MIT ikke oppfinne dette puslespillet stykke, det gjorde du. Så en funksjon lar deg lage ny atferd, gi den en funksjon navn, og deretter ringe det, så å si. Virkelig bruke den i programmer igjen og igjen og igjen uten å måtte vente for en som MIT nedover veien til oppfinne ny funksjonalitet fra grunnen. Du selv kan bygge disse puslespill stykker selv, og deretter bruke dem i dine egne programmer. Og vi vil se et tilbakevendende eksempel av det i dag og framover. Så i dag, overgangen vi nå til noe mer uforståelige. Men ved slutten av dagen, noe kraftigere og uttrykksfulle og mer representant av banen som vi vil være på hele semesteret gjennom en rekke av språk - som av kode eller kildekoden. Og kildekode, det viser seg, er ikke hva en datamaskin vanligvis går faktisk. Kildekoden ser omtrent slik ut. Så dette er, igjen, kanskje den enkleste program vi kan skrive i en språk kalt C. Vi vil begynne å erte dette fra hverandre før lenge, og hvis dette virkelig ser ut som gresk for deg akkurat nå, stole på meg. Innenfor bare en uke eller to tid, dette vil bli alt for kjent og faktisk ganske representativ for stadig komplekse eksempler som du vil også få mer komfortable. Men du kan ikke bare kjøre denne slags kode vanligvis. Du må gjøre det til noe som selve datamaskinen forstår. Og så for det, vi trenger noe vi kommer til å kalle en kompilator. En kompilator er et program som tar kildekoden, som du nettopp så, som input, og den produserer og nuller de som utgang, ellers kjent som objektkode. Og det er disse nuller og enere som kan se ut som dette at til slutt blir forstått av din Mac eller PC. Hvis du noen gang har hørt markedsføring uttrykk Intel Inside, som bare betyr at et selskap kalt Intel har produsert den hjernen i datamaskinen - ellers kjent som CPU, central processing unit - og det er akkurat det som forstår mønstre av nuller og enere. Og så ved å konvertere kildekoden til objektkode gjennom denne prosessen her at vi vil gjøre med et par kommandoer i bare litt, er du skape mønstre av nuller og enere at de ansatte hos Intel har bestemte seg representere visse uttalelser. Nå vet jeg ikke helt vet hvilken er som ved bare å kaste et blikk på disse nuller og enere. De fleste mennesker i disse dager ikke. Men det er et eller annet sted i et mønster av nuller og enere som representerer statement print. Et sted der inne kan være en annen sett av nuller og enere som representerer forestillingen om evig eller gjenta 10 ganger eller enda meow, hvis det er faktisk et program som kan inneholde noen lyder. Så kort sagt, mennesker har nettopp besluttet, mye som vi gjorde for ASCII - for bokstavene i alfabetet forrige uke - mennesker har bestemt at selv mer komplekse mønstre av nuller og enere representerer mer kompleks oppførsel som å skrive eller si eller meowing. Og så for i dag, og i stor grad videre i semesteret, vil vi ta for gitt at noen har funnet ut hvordan du gjør det kartlegging. Men vi, i samsvar med denne ideen om lagvis på toppen av arbeidet til mennesker som har kommet før oss, vil ta for gitt det faktum at dette skjer under hetten. Men vi er mye mer interessert i bygge ting som er mer interessant på toppen av alt dette. Og så ja, det første programmet vi skrev i Scratch var dette super enkel ett, Hello World. Og du kan tenke på dette som den hovedprogram som styrer Scratch er atferd som forrige fredag. I dag skal vi begynne å oversette Skrap brikkene inn kildekoden i dette språket kalles C slik at det som så ut som dette på Fredag, starter i dag og framover, er nå kommer til å se slik ut. Riktignok mer kryptisk. Det er ganske distraherende og sortering av tankene lammende å se alle sitater og semikolon og parenteser og så videre. Men hvis du begynner å ignorere noe du ikke forstår, og virkelig se ved essensen av den hvite teksten på skjermen, sikkert du ser, som jeg gjør, "Hei, verden». At linje med lilla uttalelse opp toppen, og det viser ut at søkeordet viktigste kommer til å stille opp konseptuelt med når grønn flagg klikket. Så med andre ord, mens i Scratch, vi gjennomføre dette Hello World program med de to brikkene, i C, vi kommer til å gjennomføre det med disse fire noe kryptiske linjer. Men som vi dykke dypere inn i dette, vil du se at hver og en av dem hvite tegn på skjermen faktisk har noen vesentlig betydning, og de fleste av våre programmer skal se strukturelt helt det samme. Så en uttalelse, for å være klar, hva så ut som "si hello world" på Fredag ​​kommer til å begynne å lete liker dette på mandag. printf ("Hello, World"). Og det er noen rare backslash n, det er parenteser, er det semikolon. Men ved slutten av dagen, nøkkelen takeaway i dag er at alt vi gjør er å oversette ting fra bilde skjema for å tekstform. Så en loop som så ut som dette forrige uke skal nå se noe sånt som dette. Og la meg fraskrive, akkurat som i Scratch, det er forskjellige måter å oppnå samme mål. Samme i C. ikke jeg viser dere den eneste måten å gjøre ting, men en måte å oversette dette for alltid blokkere til en loop i C. Denne her, gjenta 10 ganger. Dette virkelig slags bøyer tankene første gang du ser den. Men å implementere det heretter, vi kommer til å bruke en for loop, så å si. Og klart det er noen syntaks som er et lite kompleks der med jeg og lik og 0, men når vi dykke inn i den i dag og fremover, du bare kommer å se at det er alt bare gjør noen grunnleggende aritmetikk å få oss fra 0 på opptil 9 eller 10 i dette tilfellet. Til slutt, med variabler, vil du huske at en variabel er et stykke bagasje. Vel, hva vi hadde på venstre er det siste uke kommer til å se litt noe som dette denne uken. Men igjen, til mer på det framover. Vi hadde boolske uttrykk, som forrige uke, så ut som dette. Denne uken framover, de kommer til å begynner å se litt sånn. Og dette er faktisk litt betryggende. Det er faktisk nesten like enkelt som den grønne blokkene. Men her har vi, igjen, noen nye syntaks med-tegn, men du kan kanskje gjette mens i Scratch, du sier A-N-D, tilsynelatende i C, vi kommer til å si ampersand-tegnet. Men alt dette vil bli naturlig før lenge. Forhold. I forrige uke så det ut som dette til venstre. Denne uken, på høyre side, er det kommer til å se ut som. Men igjen, er nøkkelen takeaway her at som du ser sånne ting på høyre, og spesielt hvis det er mindre komfortabel, er det liksom over hode, får du litt overveldet at Jeg aner ikke hvordan jeg kunne muligens komme opp med som fra bunnen av - no pun intended - bare innse at det er egentlig det samme idé som trolig følte så mye mer naturlig forrige uke. Og selv om du ikke har prøvd seg på oppgavesettet 0, jeg daresay du finner at brikkene er ganske intuitiv, eller i det minste blitt så over tid. Så la oss dykke i. La oss få hendene skitne her med denne første enkle program. Og enkelt er selvsagt relativt. For å gjøre dette, jeg kommer til å endre skjermer til den enheten jeg ringte CS50 apparatet. Den CS50 apparatet er et stykke Programvaren som kjører inne i en vindu på min Mac, og du kan også kjøre den i et vindu inne i PCen, som tillater meg å ha de samme datamaskin miljø som hver TF, som hver CA, som hver student i klassen. Fordi CS50 apparatet er bokstavelig talt et annet operativsystem kalt Linux - spesielt Fedora Linux - og vi, de ansatte, har konfigurert installasjonsprosessen for denne Systemet opererer på en slik måte at man, det er en liten CS50 logo i midten, to, det er en egendefinert meny på bunnen, og tre, pedagogisk vi har forenklet brukergrensesnitt som mye som mulig, slik at når du først starte denne tingen opp på egen hånd Mac eller PC, har du det samme miljø som alle andre, og du har alle de verktøyene du trenger for kurset uten å måtte finne ut hvordan du installerer hver og alle verktøy individuelt. Så dette ser relativt som Mac OS eller Windows. I nedre venstre hjørne, du hovedsak har en Start-menyen i slag, eller en Apple-menyen. Og så har du det vi mistenker vil være dine tre mest vanlige ikoner. En er Chrome. Det er en nettleser inne av apparatet. To er et program som heter gedit, som vi så kort forrige uke, som er bare en grafisk editor. Og tre er et Terminal-programmet, som er en svart og hvit vindu fra yesteryear som tillater oss å skrive mer uforståelige men kraftigere kommandoer på våre tastatur. Så jeg kommer til å gå videre og klikk på gedit, og være trygg på at problemet sett 1, til å bli utgitt på fredag, vil gå gjennom alle de samme trinnene. Legg merke til at jeg har en ganske enkel brukergrensesnitt med tre deler. På venstre, jeg har en stor tomt vindu som heter kildekoden. Det er der jeg kommer til å se en oppsummering på noe kode som jeg skriver. På høyre side har jeg en stor kategorien er for tiden ufrelste, og at hvor koden min kommer til å gå. Og på bunnen, jeg har en innebygd Terminal-vinduet, en svart og hvit spør hvor jeg kan skrive kommandoer til kompilere og kjøre mine programmer - som er, for å lage og å kjøre min programmer. Så la oss begynne enkelt. La meg gå opp til Fil, Lagre. Jeg kommer til å gå videre og gå inn jharvard. Så apparatet, uansett hva navnet ditt er, tilhører en fyr som heter John Harvard, som har en jharvard hjem katalogen innsiden av som alle dine filer vil gå. Det er ditt eget eksemplar av sin konto, så vi er ikke alle deler samme harddisk. Du trenger bare en illusjon av John Harvard egen. På forhånd, faktisk jeg installert Dropbox. Apparatet leveres preprepared med Dropbox slik at hvis noe går galt i løpet av semesteret, hvis du har konfigurert apparatet med en gratis Dropbox-konto, alle filene dine vil automatisk sikkerhetskopiert, slik at du kan veldig enkelt kan gjenopprette dem. Og jeg kommer til å gå inn i min Dropbox katalog, og det er allerede kommer å være et par andre ting der. Men jeg kommer til å gå videre og gå til Fil, Lagre. Jeg kommer til å gå inn jharvard, Dropbox, og opp her, kommer jeg til å gi mitt program en super enkel navn, hello.c, og deretter lagre. Så jeg har det samme grensesnittet nå. Det eneste som har forandret seg er fanen opp toppen. Så jeg er veldig raskt kommer til å gjenskape at programmet fra glir en stund siden. Så inn i main (void), og deretter printf, "Hei, verden», en noe kryptisk backslash n, nær sitat, lukke parentes, semikolon, og deretter Ctrl S for å lagre. Og legg merke til som en side hva som nettopp dukket opp her på øverst til venstre. Og dette er ikke nyttig i dag, men vil være nyttig over tid. Du må bare se, igjen, en oppsummering av koden som du har skrevet. Og fordi jeg skrev noe som kalles viktigste, det er derfor ordet viktigste poppet opp over det. Men for det meste, vi trenger ikke det i dag. Greit, så jeg påstå at dette er min første program skrevet i et programmeringsspråk språk kalt C. Vi vet fra fredag at hva denne tingen kommer til å gjøre svært uninterestingly når jeg kjøre det viser bare - med andre ord, skrive ut, som en datamaskin vitenskapsmann vil si - hello world på skjermen. Så for å gjøre dette, vil du legge merke til at jeg har å gå ned her for å klemme min vindu, og nå har jeg en blinkende melding. Men dette er nå et tastatur versjon av min John Harvard hjemmeområde. Det er et tastatur måte via der å navigere harddisken min. Så jeg kan faktisk ikke skrive som jeg gjorde forrige uke gjør hallo, fordi det er kommer til å si nei regel å gjøre target - noe er galt. Jeg vet ikke helt hva den meldingen midler, men det er på grunn av retten, når denne svarte og hvite vinduet er åpnet, jeg er inne i John Harvards hjemmeområde. Men hvor kom jeg lagre det programmet? I min Dropbox-mappen. Nå har vi alle vokst opp med datamaskiner der du bare å dobbeltklikke på en mappe ikon, det åpner opp, og voila. Det er der filen som heter hello.c ville være. Så faktisk, la oss gjøre det. La meg gå videre og minimere gedit akkurat som du ville gjort på Windows eller Mac OS. La meg gå inn i Hjem mappen øverst til venstre. Jeg ser her en haug med mapper. Her er min Dropbox-mappen. Merkingen betyr at det er blitt synkronisert. Og det er et par ting her, men merker at hello.c er faktisk akkurat der. Og så i Mac OS eller Windows, normalt, Jeg vil dobbeltklikker du på, åpnes det opp i det programmet, og jeg er god til å gå. Men nå, i hvert fall starter i dag, vi må ta et skritt bakover bare for å gi deg noen grunnleggende verktøy for din verktøysett med å gjøre mer kraftige ting før lenge. Så på dette spørsmålet, må jeg gjøre det tilsvarende dobbeltklikke på Dropbox-mappen. Og for å gjøre det, kommer jeg til å skrive CD for endre katalog, Dropbox, inn. Og nå merke parentes på min såkalte prompt sier nå at jeg er i tilde, den lille snirklete symbol øverst til venstre på de fleste tastaturer, / Dropbox. Dette er bare korte notasjonen for sier menneskelig, du er nå inne i Dropbox-mappen, akkurat som om du hadde dobbelt klikket på den. Så nå hvis jeg går videre og skriver at hallo, kommer inn ser jeg en veldig kryptisk kommandoen, men ikke en feilmelding, det virker, og deretter en annen blinker hurtig. Og hvis du husker, aldri så raskt på fredag, vi gjorde dette. . / Hallo. Hva du er i ferd med å se er resultatet av min kjører dette programmet, eller, i Mac OS og PC termer, hvis jeg ville normalt doble Klikk på et program -. en app program eller en. exe, åpner det et vindu og går. Skrive. / Hallo er akkurat som dobbel klikke et program for å kjøre den, men bruker mitt tastatur. Enter, hello world. Og det er det. Så la oss erte dette fra hverandre for å så det føles ikke for mye som gresk. So. / Betyr det? Alle som noensinne har navigert et tastatur miljø som dette, hva er prikk henviser til? Gjeldende katalog. Så den nåværende katalogen er bare et synonym for en mappe. Så ved å si dot slash, jeg sier, se etter et program som heter hallo i gjeldende katalog - i den aktuelle mappen. Med andre ord, min Dropbox-mappen. Og det er derfor treffende Enter etterpå faktisk kjører det programmet. Hvis jeg nå skriver LS, merker at jeg ser alt i min Dropbox-mappen. Komme Started.pdf, som Dropbox gir deg gratis, mine bilder katalog, en offentlig katalog, Ulagret Dokument 1 som jeg har gjort ved en feil en øyeblikk siden, foo.c, som jeg har gjort tidligere i dag, og deretter to linjer - hello.c og hallo. Hello.c er det programmet jeg skrev med gedit, og hva som er hei på grønt? Den hallo i grønt er kjørbar. Med andre ord, når jeg kjørte denne kommandoen et øyeblikk siden - la meg rulle tilbake i tid - når jeg kjørte gjøre hallo, det er midten skritt her. Og det tok hello.c som input - AKA kildekode - og det produseres en fil som heter Hei som utgang, som inneholder alle disse nuller og enere. Og det er derfor, til slutt, kan jeg faktisk kjøre en kommando som. / hallo. På grunn av Intel Inside, mitt operativsystem system, Linux, åpner opp de nuller og de, mater dem inn i hjernen i datamaskinen min - CPU - og at CPU vet, oh, her er et mønster av nuller og enere som sier skrive ut følgende ting på skjermen. Hva er følgende ting? Quote unquote, "hello world". Ok, så en rask oppsummering av noen av disse kommandoene slik at vi kan starte ta dem for gitt. La meg gå videre til der vi slapp. Og du husker at vi hadde CD på ryggen vår ende et øyeblikk siden. Disse er, tør jeg si, for dagens formål - kanskje denne uken - de eneste kommandoene vi kanskje skrive på kommando spør dessuten gjøre. Så CD sto for hva? Endre katalogen. Det er bare det samme som dobbel klikke på en mappe. Og som en side, hvis du får mistet noensinne innsiden av apparatet, slik at Dropbox - Jeg ønsker å komme tilbake til min jharvard katalog - når du er i tvil, CD, enter, med ingen andre ord, og det bare glidelåser deg tilbake til der du startet, noe som er en fin liten snarvei. Ok, så nå andre kommandoer. LS. Jeg skrev at et øyeblikk siden. Hva tror du LS står for? Så, liste, ikke sant? Tilbake i dag, når mennesker kom opp med disse kommandoene, de prøvde å være effektiv, og heller Skriv ut L-I-S-T enter, de besluttet LS. Det er bra. Det høres nok ut som listen. La oss bare skriver LS inn, og at lister opp filer eller mapper i min gjeldende mappe. mkdir, kan du sikkert gjette. Gjør katalogen. Så du trenger ikke gå til noen fil-menyen og velg Ny mappe i dette miljøet. Snarere, skriver du kommandoen mkdir plass og deretter navnet på mappen at du ønsker å opprette, og det vil bli gjort. rm, kan du sikkert gjette. Fjerne eller slette. Så hvis du ønsker å slette en fil, vil du se i oppgavesettet hvordan du kan gjøre dette. Og rmdir, fjerner katalogen. Så, igjen, jeg har en tendens til å fly gjennom noen av disse detaljene, en, fordi de er ikke så gøy å bruke tid på, men to, vil vi gi deg mye større detalj i en hvilken som helst av de Kursets problem setter, spesielt standard utgaver, noen av trinnene som du kanskje trenger å skrive så at du får mer og mer comfy med disse tingene. Men nå la meg erte hverandre en annen ting. Når vi skrev gjøre hallo et øyeblikk siden, vi så en kryptisk sekvens av kommandoer. Vi så, igjen, må hallo. OK, la oss gjøre dette. Jeg var i ferd med å gjøre en feil, men [Uhørlig] nå innrømme at jeg var i ferd med å og gjør det med vilje. Hva har jeg gjort galt akkurat nå? Ja, så jeg er ikke i Dropbox katalog, fordi et øyeblikk siden jeg maskinskrevet CD og bare trykke enter. Det zoomet meg tilbake til der jeg startet, som ikke er der min fil er, slik at jeg virkelig trenger å gjøre CD Dropbox inn, og nå kan jeg gjøre rm hallo inn, fjerne vanlig fil hallo. Jeg vet ikke hvorfor det er så kryptisk. Det betyr bare at du er sikker på du ønsker å slette hallo? Du kan skrive y for yes, enter, og nå er den borte. Og nå hvis jeg skriver gjøre hei igjen, det er kommer til å gjenskape min objektkode, gjenskape disse nuller og enere. Men hva er greia med dette svært lang kommando? Vel, vi erte dette fra hverandre før lenge, men gjør - Jeg fortalte litt av en hvit løgn før - er ikke en kompilator. Gjør er et program som automatisk tall ut hvordan du kjører en kompilatoren for deg. Så kommandoen du virkelig bør være kjører for å konvertere hello.c inn hallo faktisk ser litt mer som dette. Og Gud forby vi må faktisk husk å alltid skrive at hele sekvens av kommandoer ut. Formålet med ta i livet er å husk at graden av kompleksitet for oss og automatisere hva ellers ville være svært kjedelige trinn. Men jeg kan omtrentlig det. Så per denne lille jukselapp her, jeg kan omtrentlige hva den kommandoen er gjøre ved å skrive klang, som er navnet på kompilatoren vi vil være bruke dette semesteret. Hvis noen av dere har noen gang gjort iOS utvikling for iPhone eller iPad, Clang er programmet du har brukt innen Xcode for å gjøre dine apps. Klang, men er bare et annet program hvis navn vi kan skrive på kommando be, og ved å innføre dette nå, Jeg kan introdusere noe som er en lite representative med kommandoer som kommer. Så la meg gjøre dette manuelt. Så rm hei, og nå merker i tilfelle Jeg, akkurat som en tilregnelighet sjekk - . / Hallo, hva tror du jeg skal se om jeg gjør dette? Noen form for feil. Ingen slik fil katalog. Slik at man er faktisk ganske direkte. Så nå la meg tømme skjermen. Kontroll S klarner bare skjermen å fjerne noen distraksjoner. Og nå skal jeg til manuelt typen klang-o hei hello.c. Så hva er dette i ferd med å gjøre? Nøyaktig det samme som gjør gjorde for oss, men jeg gjorde kaste bort noen av de overflødige ord. Clang er programmet som kommer til å ta en. c fil som input og produserer nuller og enere som utgang. Men-o heretter vil kalle en bryter eller et flagg. Dette er bare teknikken sjargong for å si Dette er et ord du skriver på en melding som påvirker en eller annen måte atferden av programmet du kjører. Så ikke at noen skal gjette hva-o formidler? Utgang. Det er bare noen bestemte seg for-o betyr output en fil som heter hei og ta så inngang uansett det siste ordet i prompt er, hello.c, slik at hvis jeg treffer Bli med nå, ingenting synes å skje. Og merkelig nok, i denne verden av programmering, hvis ingenting skjer, det er sannsynligvis en god ting fordi det er ingen feil melding på skjermen. Hei, Enter. Mitt program er nå kjørt. Men jeg kan gjøre dumme små ting som dette. klang-o, hihihi, hello.c, inn, og nå har jeg en identisk Programmet heter hihihi. Den oppfører seg det samme, men navnet er forskjellig. Så dette er bare for å si at hvis du vil for å påvirke atferden til en program, skal vi stadig se ting som kalles kommandolinje argumenter. Dette er en linje. Du skriver kommandoer. Ergo, kommandolinje. Og kommandolinje argumenter er bare ord eller små biter av syntaks som eller annen måte påvirke atferden til programmene som vi kjører. Greit, det er kanskje det mest kjedelig program vi kan skrive og se. La oss nå gjøre noe mer interessant. La meg gå videre og opprette en ny fil. Jeg kommer til å gå videre og lagre dette i John Harvard hjemmekatalog som, la oss kalle det custom.c, for å være litt tilpasset program. Jeg kommer til å zoome inn på min topp av fanene her og starte på nytt. Inkluder standard stdio.h. Mer om det i et øyeblikk. int main (void), mer på det i et øyeblikk. printf ("hallo, David"). Mye mer interessant, ikke sant? Så nå hvis - ikke på grunn av mitt navn, bare fordi det er annerledes - lage custom inn. Custom, hallo, David. Men selv om det også er en hvit løgn. Dette programmet kan like godt bli kalt david.c, fordi det ikke er tilpasset oppførsel i det hele tatt. Virkelig, jeg vil ha et program som spør brukeren for navnet sitt. Så hvordan gjør jeg det? Vel, la meg bla opp over her. Og før jeg bruker en uttalelse i Scratch, før jeg bruker printf, ellers kjent som en funksjon, la meg først spørre brukeren om noen innspill. Så for å gjøre dette, trenger jeg å gjøre et par ting. En, må jeg et sted å lagre brukerens navnet etter at jeg har bedt ham eller henne for det. Hva konstruere trenger jeg for å bruke nok å lagre en verdi sånn? En variabel. Så i motsetning til Scratch, hvor du bare får en fint puslespill stykke, her må vi bruke, selvsagt, ord til uttrykke oss. Og fra nå av, når du vil ha en ord eller en setning, i programmering, vi kommer til å kalle det en streng. Så en streng er et ord eller en setning. Det er en sekvens av null eller flere tegn, mer formelt. Og hvis du ønsker en slik variabel til eksistere, må du si gi meg en. Og måten som du gjør det på er å si string s semikolon, der s kan være alt du vil. Faktisk er s litt uimponerende. La meg gå videre og mer klart kalle det navnet. Gi meg en streng kalt navn. Men nå, hva er personens navn som standard? Ja, skulle menneske ikke skrive noe i, selvsagt, det kommer ikke å være noen verdi i firma. Og det viser seg i C, hvis du ikke gir en variabel en verdi, det kommer til å har en søppel verdi. Det kan ha noen tilfeldige nuller og seg, slik at du bare kommer til å se søppel, virkelig, på skjermen hvis du prøver å vise det. Men jeg kan fikse det ved å si, faktisk, butikken innsiden av navnet etter verdi. Måten du lagre verdier i variabler er hvis du har en variabel navn på igjen, må du liksom sette det du vil lagre i den på høyre, og syntaksen for det kommer å være som følger. Vi har ikke sett dette før, men ta på tro et øyeblikk at det Det finnes en annen uttalelse i verden at jeg kommer til å igjen ringe funksjon, og denne funksjonen er kalt får streng. Og det gjør bokstavelig talt det. Det blir liksom en sekvens av tegn fra menneskekroppen og deretter gjør noe med den. Og dette ser ut som kryptiske syntaks. Normalt, hvis du bruker like tegn - du er i verden av, sier algebra, og du er faktisk sier x er lik en. Her vi ikke si at Navnet er lik få streng. Vi sier butikk i navnet hva som er på høyre side av at likhetstegnet. Likhetstegnet representerer tilordningsoperatoren. Det er syntaksen som sier sette hva som skjer høyre side inne hva som er til venstre. Så får streng er et nytt stykke funksjonalitet som ikke bare gjør noe - spør brukeren om et string - den returnerer også det, så å si. Så la oss se hva som skjer å skje her. Jeg kommer til å gå videre nå og zoome ut, og jeg kommer til å få et par feil på min rask. Jeg kommer til å skrive lage custom, inn. Wow. En hel haug med feil. Ok, så dette er slags overveldende, sikkert i starten, men det viser seg alle disse svært riktignok kryptiske feilmeldinger henvise til noen mønstre som vi vil begynne å se seg over tid. Så dette skal jeg nappe av, fordi det er først. Bruk av undeclared identifikator streng. Det betyr bare at gedit eller Clang, i dette tilfellet, ikke vet hva jeg mener med streng. Og det er fordi i C, programmeringsspråket språket, er det faktisk er ingen variabel av type string. C vet ikke at strenger eksisterer. Men vi, CS50 ansatte, gjøre. Og så i forkant av klassen, vi opprettet en fil som heter CS50.h. Og inne i denne fila - og mer på syntaksen som kommer - innsiden av denne filen er en definisjon av det jeg nettopp definerte verbalt som en streng. Så bare ved å inngå denne ene linjen av koden i programmet mitt, er jeg nå undervisning gedit og gjøre og Clang alt i sin tur hva en streng er. Jeg vet ikke hvor ennå. I løpet av noen uker, vil vi skrelle tilbake det laget. Men for nå, vet at dette lærer kompilatoren hva en strengen er faktisk. Så nå la meg klare min terminal her nede. La meg re-run lage custom, og jeg løst alle disse problemene. Så også dette kommer til å være et tilbakevendende tema. Jeg bare skrev en ni linjer program, og men jeg hadde 18 linjer med feil. Det er ganske skremmende. Men innser at de ofte kaskade slik at en liten feil utløser forvirring for kompilatoren, og det ser mye verre ut enn det er. Så nå en slu observatør vil vite at jeg får en streng fra bruker, men jeg er faktisk ikke gjør hva med den? Jeg er faktisk ikke gjør noe med det. Så hvis jeg faktisk kjøre custom igjen, det kommer til å bare sitte der. Hva skjer? Mitt program ser ut til å bli sittende fast på hvilken linje, vil du si? Så det er faktisk fast på linje 7. Og vi har sett dette før, men på linje 7, det er, igjen, denne uttalelse, få streng. Og den gjør hva den sier. Det venter nå for den menneskelige å ta strengen. Dette er helt unintuitive til meg, det menneskelige, fordi jeg ikke har blitt fortalt hva de skal gjøre. Men la meg gå videre på tro og la meg later til å være Rob. Enter. Det er ikke det programmet jeg hadde tenkt. Så vi har vår første blogg. Men la oss prøve å resonnere gjennom hvorfor dette er tilfelle. Først, la meg fikse dette første problemet. La meg legge til en linje her som sier printf, hva er ditt navn? La oss bare gjøre nær sitat, lukke parentes. Nå la meg å kjøre programmet. Problemet. Jeg ser det. Høyre. Jeg har ikke rekompilere det. Så i et språk som C, fordi du endre kildekoden betyr ikke at du har endret objektkode å generere nye objektet kode, nye nuller og enere. Du må rekompilere. Hvis jeg nå re-run skikk, enter, ah, litt mer tydelig. Mitt navn er Rob. Fortsatt buggy. Og jeg vil påstå det er et par bugs nå. Dette ser bare heslig, ærlig. Liker, minimalt, burde jeg ha en plass der, eller flytte markøren til den nye linje. Og faktisk, ny linje. Det er litt av en nøkkel setning her at vi har sett, men ikke definert. Måten du får en tekst å gå til neste linje, du ikke gjør dette. Dette er forvirrende til datamaskinen. Dette ser ut som to separate linjer av koden, verken som er helt riktig. Du har i stedet for å være mer eksplisitt og si, gi meg en ny linje, som vi representerer i c med backslash n. Så det er noen slike tegn. Backslash n vil fikse det estetiske. La meg rekompilere programmet mitt. La meg re-run mitt program. Dette ser bedre ut. Det er fortsatt ganske primitive, men det er også fortsatt buggy. Så det er ett - selv om du aldri har programmert før, du kan sikkert ta en gjetning på hvorfor dette programmet er fortsatt mangelfull. Hva må jeg gjøre det Jeg har ikke gjort ennå? Så jeg må faktisk gjøre noe med navnet. Akkurat som i grunnen, kan du faktisk tilordne en variabel som n eller motvirke som vi gjorde sist uke - en verdi. Men hvis du ikke gjør noe med det er ingenting kommer til å skje. Ok, så la fikse. La meg skrive min variabel der, og la meg gå ned her. La meg rekompilere, la meg re-run, Rob. Nå er jeg bare en idiot, ikke sant? Så dette er egentlig ikke får meg videre. Men det var en helt naturlig instinkt, vil jeg hevde, ikke sant? Hvis variabelen kalles navn, og jeg vil den skal gå der, hvorfor gjør jeg ikke bare skriv det der? Vel, selvfølgelig, har vi å skille nå mellom hva som er en streng? Legg merke til at sitatet unquote her, hallo navn? Dette faktisk i seg selv er en streng. Det er hardkodet. Det er ikke fra det menneskelige. Det er fra meg, den opprinnelige programmerer, men det er fortsatt en streng. Så hvis du bokstavelig talt skrive N-A-M-E innsiden av en streng, hva kommer til å få skrevet ut? Vel, N-A-M-E. Vi i stedet må å fortelle printf, ikke ut ut bokstavelig navngi. Skriv ut verdien av navnet. Og for å gjøre det, gjør vi følgende. Og dette er bare et menneske konvensjonen. Vi i stedet si% s, og at står for streng. Og så på slutten av mine nære sitater, Jeg kommer til å sette et komma og passere en andre argumentet inn i denne uttalelsen. Jeg kommer til å skrive navnet der. Så nå merker vi en litt ny syntaks. Vi har fortsatt to parenteser, og heretter la meg si at ting mellom parentes representerer argumenter i en funksjon - innganger som er en eller annen måte kommer å påvirke sin oppførsel. Så ved den logikken, hvor mange argumenter synes printf å være tar i dette øyeblikk? Så det ser ut å ta to, og det er faktisk underforstått av komma her. Så dette er ett argument i mellom anførselstegn. Selv om den har et komma i den, alt er i anførselstegn, noe som betyr det er en lang streng. Komma, variabelnavn. Så nå la meg zoome ut. La meg kjøre den. Rob. Faen, hva gjorde jeg galt? Ok, så du må rekompilere. Så igjen, til enkle feil gjør tidlig på igjen og igjen. Så nå re-run skikk, Rob, enter, og voila. Vi har nå et tilpasset program. Så jeg har nå et program som bruke noen kjennetegn som er verdt å merke seg. En, jeg bruker CS50.h, ellers kjent som CS50 biblioteket. Og innsiden av CS50 bibliotek er funksjoner som andre mennesker skrev - nemlig de ansatte - for deg å bruke, og få string er en av dem. Innsiden av linje 2 er stdio.h, og hvorfor er dette det? Ta en gjetning. Hva finnes innsiden av standard IO forelder? Printf. Så printf, ser du ikke det hvor som helst annet på skjermen. Det må komme med datamaskin eller annen måte. Hvor kommer den fra? Det er inne i - det er erklært, så å si, på innsiden av en fil som heter stdio.h. Nå, for slike ting, vil vi komme tilbake til slutt, fordi det er litt forstyrrende for nå. Dette refererer til vår retur type. Dette refererer til et argument. Men for i dag, vi fokusert her bare på disse linjene. Så string navn, bare for å gjenerobre, hva gjorde dette for meg? Så det erklært en variabel av typen streng. Så det er ment å være for ord, ikke for tall. Akkurat som en side, hvis jeg hadde lyst det å være et tall, vil jeg si noe som int. Hvis jeg ønsket å være et flyttall verdi, noe med en desimal, Jeg vil si float. Men for i dag, jeg har nettopp sagt streng. Og jeg har gitt denne variabelen et navn på navn, men jeg kunne har kalt det noe. Faktisk, opprinnelig, jeg kalte det S. Dette her er bare en annen uttalelse. Hvor mange argumenter er dette uttalelse tar? Så det er bare å ta en, og at er rett og slett en estetisk detalj av vise noe på skjermen til meg. Hva er denne linjen åtte gjøre i lekmann vilkår? Det begynner å bli en verdi fra bruker - nemlig en string - og hva det gjør med det? Det er i hovedsak overlate det til fyren på venstre side av likhetstegnet slik at i dette tilfellet, navn variable faktisk kan lagre det. Og så er printf annen forekomst av en funksjon. Og vi sier å kalle en funksjon. For å bruke en funksjon er å kalle en funksjon. Denne saken tilsynelatende tar to argumenter. Denne, komma, denne. Dette i seg selv er bare en streng som inneholder en plassholder. % S del sette en annen streng her. Og så ved å sette navn etter komma, som er å sette inn den tingen for meg. Slik at jeg kan gjøre andre ting fortsatt. La meg gå videre nå og gjøre litt av en dumt program, men la meg slette denne, og la meg lage en loop. Mens sant. Symbolet sant er åpenbart alltid kommer til å være sant. Så hva slags løkke jeg indusere ved å skrive en linje som dette? Så en uendelig loop, ikke sant? Akkurat mens sant. Det er ingen måte jeg kan endre ordet sant til å være noe annet, så dette er bare kommer til å kjøre for alltid. Så hvis du noen gang faktisk hadde et program i din Mac eller PC som virker å ha låst opp, eller det gjør noe og noe, og du bare kan ikke få ting til å slutte med mindre du starte datamaskinen på nytt eller trekke opp Task Manager eller lignende, her er et slikt eksempel. Jeg kan si: "Jeg er en buggy program." Lukk sitat, lukke parentes, semikolon. Så igjen, legge merke til mønstre. Selv om noen av syntaks vår er ny, søkeordet stund, søkeordet sant, merker jeg har den samme slags klammeparentes. Jeg har fått et semikolon og parenteser. Så nå la oss gå videre og kompilere dette. Gjør skikk, sedvane. Så på dette punktet, trenger du ikke å starte apparatet, ok? Så lett lærdommen her er med to fingre, Kontroll C, Vi vil avslutte dette programmet. Men du kan se nøyaktig hvorfor denne tingen var å gjenta seg igjen og igjen. Jeg kan gjøre noe litt mer komplisert som en teaser. Jeg kommer til å gå videre og si følgende. For int, som er et heltall, er jeg bare et generisk navn vi gir til de fleste variabler i programmering når du er bare å telle, er lik 0.. La meg gå videre og si mens jeg er, la oss si, mindre enn 100, i pluss pluss. Vi vil tilbake til dette syntaks, men dette betyr bare øke jeg igjen og igjen. Og hva ønsker jeg å gjøre her? Printf, "Jeg kan telle til jeg." Dette er en avlytting program. Hva gjorde jeg faktisk tenkt her? Prosent ikke s, men du ville ikke gjette dette. % D er et Desimalheltallet. Komma jeg. La meg rulle tilbake. La meg nå rekompilere med make. La meg nå kjøre med tilpasset. Jeg kan telle egentlig jævla fort når Jeg skriver et program som dette. Nå la oss gjøre noe Litt utilsiktet. Hva med la oss gjøre dette mens jeg er større enn eller lik 0.. Hva dette kommer til å indusere? Så logisk, dette er ikke så lurt, fordi nå hvis jeg kjøre dette, fortelle, Jeg kan nå telle veldig, veldig høy. Dessverre, omtrent like høyt som jeg kan teller er 4 milliarder kroner, så dette kommer å ta en stund. Så hvorfor ikke vi la dette som vår cliffhanger, lovende at på Onsdag skal vi se om dette programmet er gjort. To, vil vi presentere hvordan du selv skrive din egen funksjon slik at svært raskt, innen onsdag, vil vi, som vi Overgangen fra Scratch inn C, starter skriver stadig mer komplekse programmer som gjør mye, mye mer enn dette. Vi vil se deg da. [APPLAUSE] SPEAKER 1: Ved neste CS50, Puzzle Day ble en suksess.