DAVID MALAN: Dette er CS50, og dette er starten på ugen en. Og hvad vi troede, vi ville gøre, er at trække sig tilbage tæppet af en anordning, som mange af jer sikkert har gået forbi nu i år, men måske aldrig helt vidst, hvad det er. Så denne enhed vil sandsynligvis se velkendt for de fleste af jer ved nu. [VIDEO AFSPIL] -A triumf matematiske og mekanisk færdighed er denne store nye automatisk regnemaskine på Harvard University. Indviklede problemer i matematik sætte gennem maskinen i kodet form på tape er nøjagtigt løses i et minut brøkdel af den tid, der kræves for menneskelig beregning. Designet til at fremskynde alle former for matematisk og videnskabelig forskning, den gigantiske mekaniske hjerne vil arbejde for USA Flåde indtil krigens slutning. [END VIDEOAFSPILNING] DAVID MALAN: Så det er hvad du ser i Science Center, som er der, hvor denne maskine er nu opstaldet. Du faktisk kun se en del af det. Kun en del er i øjeblikket på displayet, og det er en enhed kaldet Mark I, og det var hovedsagelig en virkelig enorme lommeregner. Det blev efterfulgt af Mark II, og det er fra Mark II, at vi faktisk få lidt af leksikon. Dette er den første registrerede tilfælde af noget du er ved at blive alt alt for bekendt med over løbet af semesteret - nemlig en fejl. Så det viste sig på et tidspunkt Mark II-enhed fungerer ikke ordentligt, og ved nærmere eftersyn, der faktisk var en fejl - et møl - at møl - indeni. Og lige siden har vi nævnt fejl i programmer som bugs. Så mere om det at komme. Apropos video så godt, hvis du ikke allerede ved, at CS50 er tydeligvis filmet. Forelæsningerne typisk gå op lige efter klasse i en slags pre-release uredigerede format, og derefter en dag eller to senere, vi udbudt en højere opløsning og højere kvalitet version. Du husker måske Vanessa, der havde formue på at spille med Google Glass, som jeg huskede at oplade denne gang. Så hvis du ønsker at komme op efter klassen og spille, de skal arbejde i dag. Og hvis du gerne vil se, hvad Vanessa oplevede den anden dag, hvad du vil se her - lad mig hæve lydstyrken her på min bærbare computer. [VIDEO AFSPIL] -Så lad mig kø dette er op. Ok. Så røre ved dette. Ok. OK, Glass. Optag en video. Ok. Vanessa? [END VIDEOAFSPILNING] DAVID MALAN: Okay, så grunden at det ikke virker for de fleste af jer ved I slutningen af ​​klassen var fordi jeg fortsatte at optage en time af det optagelser peger på mig selv efter Jeg sætter brillerne ned. Så i dag, jeg vil lade dem ud, men tak dig til Vanessa for at være sådan en god sport. I mellemtiden, et par annonceringer inden vi mase dag. Så en, CS50 har en tradition for at gøre hvad vi kan for at forsøge at gøre en meget stor klasse føler mindre. Og mod herpå fleste hver fredag vi samles på en restaurant i pladsen, Fire and Ice, med 30 eller 40 af dine klassekammerater, mig selv, og nogle af lærerstaben, og vi bare har en meget afslappet frokost. Vi har ofte invitere venner fra industrien, alumni af klassen, alumni af college, virkelig bare at chatte hver anden op, tale om livet efter college, livet i college, og lignende. Så hvis du gerne vil deltage i dette første sådanne frokost denne fredag ​​på 13:15, hoved til at URL på et tidspunkt. Pladsen er begrænset, så vi vil gøre først til mølle. Men vi vil gøre det igen på et tilbagevendende basis, så ikke at bekymre dig, hvis du ikke gør det i denne første parti. Nu, i forhold til de ressourcer, forudsat curricularly af kurset, der er en hel masse, og hvis du ikke har trukket op kursets hjemmeside allerede, navnlig under foredrag du opdage, at alt vi gjorde i sidste uge er der, både i video og en slags af elektronisk formular. Men ud over de videoer, vil du finde at der nu er fuldtekst transskriptioner, for eksempel, i hver forelæsning. Så hvis vi faktisk gå tilbage til denne skærm her med Vanessa og navigere til det nederste hjørne af skærmen, du opdage, at der faktisk, ikke for Fredagens forelæsning, men hvis vi går tilbage til Onsdag da denne funktion tager en par dage, vil du opdage, at du kan faktisk trække op, for bedre eller værre, hvert ord, som jeg eller en frivillig på scenen sagde. Og mere end netop det. Du kan faktisk søge det, kan du klik på nogen af ​​disse sætninger, hoppe til det punkt i videoen, mod alle og slutningen af ​​gøre materialet alle mere sejlbar. Men hvis du hellere vil ikke følge det så detaljeret, vil du finde, for Eksempelvis denne lille menu her 1.5x hastighed, 2x hastighed eller i f jeg allerede tale for hurtigt for dig, 0,75 x hastighed. Så indser alt dette er tilgængelige der for dig. Men ud over dette, til foredrag, indser at vi også gør disse ressourcer tilgængelige samt. Slides, eksempel kode, noget, som jeg gøre på scenen eller i forvejen klassen, vi vil sende der, så du kan spille sammen hjemme eller på Sanders. Men hvad vi også troede, vi ville gøre dette år for første gang er også give dig walkthroughs af disse eksempler. I stigende grad som jeg har afspejlet på Værdien af ​​CS50 foredrag, har jeg begyndt at sætte spørgsmålstegn ved, hvor nyttigt det er for du fyre til at sidde der, for mig at stå her og for mig at tale på dig, især da det materiale, eksempler, får mere komplekse. Fordi uvægerligt, efter lidt antallet af minutter, nogen vil zone ud, og så du går glip af nogle vigtige indblik i nogle eksempel, og så er du hovedsageligt gået for den resterende del af klassen, hvilket ikke er den bedste udnyttelse af din tid, eller, virkelig, vores kollektivt som en klasse. Og så, hvad vi troede, vi ville forsøge at gøre, navnlig for nogle af de mere komplekse eksempler, som jeg ikke kan gøre retfærdighed til i klassen, at vi måske ikke har tid til i klassen, eller du kan bare zone i løbet, er vi producerer en række walkthroughs disse eksempler, så hvis du går til, for Eksempelvis sidste fredag ​​videosiden her under eksempler, vil du se, at for fredag, er der nu dette linke til walkthroughs. Og formatet af disse vil ændre sig over tid. For nu, bruger vi en simpel YouTube afspilningsliste. Men hvad jeg gjorde med vores produktion team bagefter var gå igennem hver og hver eneste af disse eksempler igen, forhåbentlig pege i meget større klarhed præcis, hvad grillbarer kunne eller burde være fra hver. Så du kan finde, for eksempel, fra sidste uge, alle scratch eksempler Vi gik gennem er færdig lineært i denne mode. Så velkommen til at engagere sig eller ej engagere sig i dette materiale. Virkelig et tema for denne særlige kursus er, at der er nok mere i vejen for ressourcer, end du kunne muligvis opsuge over løbet af et semester. Men det er bevidst. Det er meningen at være så, at du som enkelte elever kan selv vælge baseret på din læringsstil. Så hvis forelæsninger virker for dig, stor. Hvis dele arbejde for dig, stor. Hvis walkthroughs arbejder for dig bedre, stor. Det er virkelig vil være op til dig at vælge hvilke ressourcer fungerer bedst for dig. Endelig, takket være en elev af Selvfølgelig tilbyder vi også en kanonisk sæt skriftklog noter. Så snarere end at have jer hoveder ned i foredrag skrible ned ting, der kommer op i klassen, vi, de personale, vil give dig, hvad vi føler er en kanonisk sæt noter til frigøre dig af denne distraktion, således at hvis du er her og engageret, er du virkelig engageret med, hvad der foregår, med dine klassekammerater gør op på scene, med hvad der er på skærmen, og ikke blot at skrive ned ordret hvad der skete at have været sagt. Så realisere alle disse ressourcer er tilgængelige for dig. Sektionering, som svar på en FAQ, vil begynde denne onsdag. Vi hovedsagelig vente til efter de fleste andre klasser er færdig, så vi kan minimere antallet af ændringer at vi er nødt til at gøre. Men kommer op i denne weekend, startende Søndag, vil være en én gang forekomst af hvad vi kalder super sektioner. Disse vil blive filmet til dem, der ikke kan deltage og i det væsentlige, at kursets hoveder vil gå os gennem nogle af C-delen af ​​selvfølgelig, mod en ende af problemet sæt ene, som vil være vores første baseret C Problemet sæt. Og disse vil bare være valgfri sektioner i forventning om, hvad der vil bliver tilbagevendende førte sektioner af kursets 50 plus undervisning stipendiater ugentligt. På søndage eller mandage eller tirsdage, vi har 90 minutter sektioner i en meget traditionel forstand, hvilket vil blive muligheder for hands on og mere intime gennemgang af kursets materiale. Uden videre, så lad mig introducere kursets hoveder, der er bag kulisserne med mig, gør alt ske. Hvis de her i dag kunne slutte mig, Rob og Lauren og Josef og Lucas, alt af dem har været med i selvfølgelig i nogen tid. RJ er det tredje medlem af vores team. Han kunne ikke være her i dag, men han bad mig om at vise et billede af ham. Jeg er ikke sikker på, han ønskede denne en, men der er han. Og lad mig lige give holdet til at sige goddag og præsentere sig selv, så du kommer til at kende dem så godt som dit egen undervisning stipendiat udtrykket. LAUREN CARVALHO: Hej. Mit navn er Lauren Carvalho. Jeg er bosiddende tutor i Leverett House. Jeg er også super glade for at være en head TV for CS50 dette år. CS50 er en meget udfordrende klasse samt som en meget stor klasse, hvis så du har nogen bekymringer, hvis du har lyst du falder bagud, er du velkommen til nå ud til nogen af ​​os på heads@cs50.het eller til mig, hvis du vil lide at lege med min gyldne retriever hvalp. Her er Lucas. LUCAS FREITAS: Hey, gutter. Mit navn er Lucas Freitas. Jeg er en junior [uhørlig] datalogi og lingvistik. Jeg er faktisk fra Brasilien, og jeg har også realisere østasiatiske studier. Så hvis du har spørgsmål om datalogi eller sprog eller noget, bare lad mig det vide. Eller CS50, især. JOSEPH ONG: Hej. Jeg er Josef. Jeg er en senior studere computer videnskab i Elliott House. Så lad os se. Du vil se mig omkring transporterer en af ​​disse enorme kameraer. Jeg er den bosiddende personale fotograf for 50 så godt, og de studerende ofte sommetider forveksler mig med en asiatisk turist. Så hvis du ser mig med et kamera, ikke løbe væk. Bare smile og vær ikke genert. Og jeg håber du nyder 50 år. Jeg nød det meget, da jeg tog det, og det er derfor jeg har TFing for disse tre år. ROB BOWDEN: Hej. Jeg Rob. Dette er min fjerde semester med CS50. Jeg har netop uddannet i maj. Jeg var i Kirkland. Jeg er spændt på dette semester og jeg håber du er også. DAVID MALAN: Tak til dette års hoveder, samt til RJ så godt. Så et par afsluttende bemærkninger om ressourcer. Én, s. sæt 0 er allerede oppe. Denne ene eksisterer kun i standard udgave, som er beregnet til helhed af klassen. Begyndende med p sæt 1, vil der være hacker udgaver af de fleste problem-apparater, som igen vil dække materiale med en smule mere af en udfordring, mens stadig rører på nogle af de samme emner. Må tage et kig på kursets hjemmeside for denne specifikation p sæt 0. Kontortid, også vil begynde i denne uge, aften, i morgen, onsdag, og torsdag i forskellige spisning haller på campus. Tjek cs50.net/ohs til kontoret timer for kurset, og indse dette vil være meget afslappet muligheder, bestemt ved starten af semester, til at komme forbi med din laptop under hjernens pause. Medbring nogle venner og chat op kursets TFs og CA med eventuelle spørgsmål, du måtte have. Og jeg kan ikke understrege nok, selv for scratch og opgavesæt 0, der virkelig ingen dumme spørgsmål. Der er ingen studerende for ubehageligt at stille spørgsmål. Du er velkommen til at drage fordel af denne ressource. Det vil være der recurringly hele semestret som vil CS50 Diskuter. Dette er kurset online diskussion fora på denne adresse der. Hvad vil vi også gøre i undervisningen er også overvåge dette, takket være den kursets lærerteam. Og så hvis du har et spørgsmål i løbet af foredrag, fordi jeg sagde noget dårligt eller slet ikke, med alle midler, så spørg at i det virkelige tid, hvis du har din bærbare computer eller telefon på hjemmesiden, og vi vil gøre vores bedste i nær realtid til reagere på det. Er der nogen spørgsmål om CS 50? Så en sidste noter af mine. At spørgsmålet om SAT unsat. Som du færdiggør dit studie-kort, hvis du ikke allerede indse, at de overordnet vision for SAT unsat, til rådighed for alle studerende, er virkelig at hjælpe med at tage brodden af ​​et kursus, som dette, så at sige, så hvis du find dig selv sent om natten, 02:00, 03:00, virkelig banke hovedet op imod væggen, hvor du ved, du er 99% af vejen derhen til ende, men du har så mange andre ting at gøre, Jeg tror, ​​en bedre udnyttelse, ofte af studerendes tid er at faktisk gå videre til de andre ting, så du kan optimere din tid hele vejen rundt. Og SAT unsat er en mekanisme, hvorigennem du kan finde trøst i det faktum, at 99% af vejen er der stadig temmelig darn god. Tilsvarende også, hvis du er kommet ind i Selvfølgelig uden forudgående baggrund eller ikke nær så meget baggrund, som du mener, at dine klassekammerater kan have, true eller falsk, indse, at dette er en mulighed for at få dine hænder beskidte med kurset, sætte dine tæer i vand, så at sige, ligesom jeg selv gjorde år siden med bestået / ikke bestået. Som jeg sagde i sidste uge, havde dette kursus, ligesom andre ikke været tilgængelig bestået / ikke bestået på det tidspunkt, ville jeg sandsynligvis ikke nogensinde har forstærket mund i klassen, selvom jeg gjorde, fem uger senere ændre min mening, som du kan lige så godt, og skifte over til eller fra bogstav gradueret status. Ok. Så vi kiggede på ting som dette på Fredag, og vi er meget hurtigt at gå overgang til noget, ser mere kryptiske dag. Men det er ikke desto mindre samme grundtanke. Hvad var den generelle term, som vi bruges til at beskrive en brik der lignede det? Så en erklæring. Og du kan kalde dette en række ting. Men vi vil bare kalde det en erklæring, og en erklæring bare fortæller programmet - eller i tilfælde af Scratch, sprite - at gøre noget. Sig goddag i dette tilfælde. Noget som dette, vi stedet kaldes hvad? Yeah, så en boolesk udtryk. En boolesk udtryk er bare noget det er sandt eller falsk, og så Scratch trækker dem med denne form, men også med et spørgsmålstegn til at formidle den Tanken om, at svaret på dette spørgsmål er enten sand eller falsk, ja eller nej on, 1 eller 0. Og vi bruger disse boolske udtryk indersiden af ​​konstruktioner som disse, som vi kaldte hvad? Så tilstand eller filial. Og den betingelse, du ser her i Bunden har en lille pladsholder for en puslespil stykke af denne form, formålet hvoraf er så, at du kan trække det og slippe det på toppen og derefter diktere programmet, hvis dette Boolean udtryk er sandt, gør dette sæt instruktioner, dette sæt af udsagn, ellers gøre dette andet sæt af instruktioner. Og huske, at du kan reden disse ting. Selvom der ikke er meget plads visuelt i denne brik, Scratch vil vokse og skrumpe til at passe uanset puslespilsbrikker du Træk og slip i der så du kan faktisk indlejre dette og har en tre vejs gaffel i vejen. Hvis ellers hvis ellers. Og du kan endda gå videre med nesting længere og længere efter behov. Så endelig, så vi konstruktioner som dette, ellers kendt som en løkke. Og det er bare noget, der gør noget igen og igen og igen. I dette tilfælde sker det at være et endeligt antal gange, men vi har også så et eksempel, hvor antallet af tider kom fra en variabel, så det kan ændre sig. Og vi så også en anden blok helt kaldes en evigt blok, tilladt os at sløjfe uendelig lang. Så en anden konstruktion, der Scratch 2.0 har - og de af jer mere komfortabel med forudgående baggrund er allerede godt bekendt med denne konstruere - disse ting, vi kaldes hvad? Så vi kaldte disse funktioner, ellers kendt som procedurer. Der er en lille semantisk forskel, men vi vil kalde dem bare funktioner. Og en funktion, i tilfælde af Scratch, er en brugerdefineret puslespil brik, du selv kan lave, så du har en ny brik, der, i dette tilfælde, ville blive kaldt hoste, der vises blandt alle de andre tilgængelige puslespilsbrikker i Scratch. Selvom MIT opfandt ikke denne brik, du gjorde. Så en funktion kan du oprette en ny adfærd, giver det en funktion navn og så kalder det, så at sige. Virkelig bruge det i programmer igen og igen og igen uden at skulle vente for en som MIT ned ad vejen til opfinde nye funktionalitet fra Scratch. Du selv kan bygge disse puslespil stykker selv, og derefter genbruge dem i dine egne programmer. Og vi vil se en tilbagevendende eksempel af denne dag og fremefter. Så i dag, overgang vi nu til noget mere mystisk. Men i slutningen af ​​dagen, noget mere kraftfulde og ekspressive og mere repræsentativ for den vej, vi vil være på alle semester gennem en række af sprog - der af kode eller kildekode. Og kildekode, viser det sig, er ikke, hvad en computer typisk faktisk kører. Kildekode ser noget som dette. Så dette er, igen, måske den enkleste program, vi kan skrive i en sprog kaldet C. Vi vil begynde at drille denne apart inden længe, ​​og hvis dette virkelig ser ud som græsk for dig lige nu, tro mig. Inden for blot en uge eller to tid, det vil være alt for velkendt og faktisk ganske repræsentative for stigende komplekse eksempler med, som du vil også få mere komfortabel. Men du kan ikke bare køre dette slags kode normalt. Du er nødt til at gøre det til noget, selve computeren forstår. Og så for det, har vi brug for noget vi kommer til at kalde en compiler. En compiler er et program, der tager kildekode, som du lige har set, så input, og det producerer nuller og dem som output, ellers kendt som objekt kode. Og det er disse nuller og ettaller, der ser måske helt som denne, at sidste ende er forstået af din Mac eller din PC. Hvis du nogensinde har hørt markedsføring udtryk Intel Inside, der bare betyder, at et selskab kaldet Intel har fremstillet hjerner af computeren - ellers kendt som CPU, central processing unit - og det er netop den ting, forstår mønstre nuller og ettaller. Og så ved at konvertere kildekoden til objekt kode gennem denne proces her at vi vil gøre med et par kommandoer på bare en smule, er du skabe mønstre af nuller og ettaller at medarbejderne hos Intel har besluttet udgør visse udtalelser. Nu ved jeg ikke helt ved, hvilke er der ved blot et blik på disse nuller og ettaller. De fleste mennesker i disse dage ikke. Men et sted i der er et mønster af nuller og ettaller, der repræsenterer erklæring print. Et sted i der kunne være en anden sæt nuller og ettaller, der repræsentere begrebet evigt, eller gentag 10 gange eller endda meow, hvis det er faktisk et program, der kan omfatte nogle lyde. Så kort sagt, har mennesker netop besluttet, ligesom vi gjorde for ASCII - for bogstaverne i alfabetet i sidste uge - mennesker har besluttet, at selv mere komplekse mønstre af nuller og ettaller repræsenterer mere kompleks adfærd Ligesom udskrivning eller sige eller mjavende. Og så for i dag, og stort set videre i semestret, vil vi tage til givet, at nogen har regnet ud af, hvordan at gøre det kortlægning. Men vi, i overensstemmelse med denne idé om udlægning på toppen af ​​arbejdet i mennesker der er kommet foran os, vil tage for givet, at dette foregår under hætten. Men vi er meget mere interesseret i bygge ting, der er mere interessant på toppen af ​​alt dette. Og så ja, det første program, vi skrev i Scratch dette var super enkel én, Hello World. Og du kan tænke på dette som værende hovedprogrammet, der regulerer Scratch s adfærd som sidste fredag. I dag, vi kommer til at begynde at oversætte Skrab puslespilsbrikker ind kildekoden i dette kaldes sprog C, således at hvad der lignede dette på Fredag ​​starter i dag og fremefter, er nu kommer til at se sådan ud. Ganske vist mere kryptisk. Det er temmelig distraherende og sortere i sindet bedøvende at se alle de citater og semikolon og parenteser og så videre. Men hvis du begynder at ignorere noget, du ikke forstår, og virkelig se ved essensen af ​​den hvide tekst på skærm, helt sikkert du ser, som jeg gør, "Hej, verden." At linjer op med lilla erklæring op øverst, og det viser ud at nøgleordet vigtigste vil line op konceptuelt med, når grøn flag klikkede. Så med andre ord, mens i Scratch vi gennemfører dette Hello World program med disse to puslespilsbrikker, i C vi kommer til at gennemføre den med disse fire lidt kryptiske linjer. Men som vi dykke dybere ind i dette, vil du se, at hver af disse hvide bogstaver på skærmen faktisk har nogle betydelige betydning, og de fleste af vores programmer vil se strukturelt helt den samme. Så en erklæring, for at være klar, hvad lignede "siger goddag verden" på Fredag ​​kommer til at begynde at kigge gerne dette på mandag. printf ("Hello, world"). Og der er nogle underlige backslash n, der er parenteser, der er semikoloner. Men i slutningen af ​​dagen, nøglen takeaway dag er, at alt, hvad vi laver er oversætte tingene fra billedet danne til tekst form. Så en løkke, der lignede dette sidste uge kommer til at ser nu noget som dette. Og lad mig fraskriver, ligesom i Scratch, er der forskellige måder at nå det samme mål. Samme i C. Jeg viser dig ikke den eneste måde at gøre ting, men en måde at oversætte dette for evigt blokere en løkke i C. Denne ene her, gentag 10 gange. Denne ene virkelig slags bøjer huske den første gang, du ser det. Men at gennemføre dette fremover vi kommer til at bruge en for-løkke, så at sige. Og klart der er nogle syntaks, der er lidt kompliceret der med I og lige og 0, men når vi dykke ned i det dag og fremefter, er du bare at se, at det er alt bare laver nogle grundlæggende aritmetik til at få os fra 0 på op til 9 eller 10 i dette tilfælde. Endelig skal det med variabler, du husker at en variabel er et stykke opbevaring. Nå, hvad vi havde på den venstre der sidste uge kommer til at se lidt noget som dette i denne uge. Men igen, for mere om dette kommer. Vi havde boolske udtryk, som i sidste uge, lignede dette. I denne uge og fremefter, kommer de til at begynde at kigge lidt som. Og denne ene er faktisk lidt beroligende. Det er faktisk næsten lige så simpelt som den grønne blokke. Men her har vi, igen, nogle nye syntaks med-tegn, men du kan måske gætte mens der i Scratch, du siger A-N-D, tilsyneladende i C, er vi kommer til at sige tegnet tegnet. Men alt dette vil blive naturligt inden længe. Betingelser. I sidste uge, det lignede dette til venstre. I denne uge, til højre, er det kommer til at ligne det. Men igen, det centrale takeaway her er, at som du kan se ting som at der på til højre, og især hvis mindre behageligt, det er en slags over din hoved, du får det lidt overvældet, at Jeg har virkelig ingen idé om, hvordan jeg kunne muligvis komme op med der fra bunden - no pun intended - bare indse, at det er virkelig det samme idé, der formentlig følte sig så meget mere naturlig den foregående uge. Og selv hvis du ikke har dykket ned Problemet set 0, I daresay du finder at puslespilsbrikker er forholdsvis intuitiv, eller i det mindste bliver så over tid. Så lad os dykke i. Lad os få vores hænder beskidte her med denne første simple program. Og enkle er, selvfølgelig, relativ. For at gøre dette, jeg kommer til at ændre skærme til denne enhed jeg kaldte CS50 apparatet. Den CS50 Apparatet er et stykke software, der kører inde i en vindue på min Mac, og du kan også køre det i et vindue inde i din pc, der tillader mig at have nøjagtig de samme computer miljøet som enhver TF, som hver CA, som hver elev i klassen. Fordi CS50 apparat er bogstaveligt talt et andet operativsystem kaldet Linux - specifikt Fedora Linux - og vi, personale, har konfigureret installationen for dette operativsystem på en sådan måde, at man, der er en lille CS50 logo i midten, to, er der en brugerdefineret menu på bunden, og tre, pædagogisk vi har forenklet brugergrænseflade meget som muligt, således at når man først starte denne ting op på din egen Mac eller pc, du har det samme miljøet som alle andre, og du har alle de værktøjer, du har brug for for kurset uden at skulle regne ud af, hvordan du installerer hver hvert værktøj individuelt. Så det ser relativt Ligesom Mac OS eller Windows. I det nederste venstre hjørne, du væsentlige har en Start-menuen på sorterer, eller en Apple-menuen. Og så har du hvad vi har mistanke om, vil være dine tre mest almindelige ikoner. Den ene er Chrome. Der er en browser indeni af apparatet. Two er et program kaldet gedit, som vi så kort i sidste uge, hvilket er bare en grafisk editor. Og tre er en Terminal program, som er en sort og hvid vindue fra Gårsdagens der tillader os at skrive mere mystiske men mere kraftfulde kommandoer på vores tastatur. Så jeg har tænkt mig at gå videre og klik på gedit, og forvisset om, at problemet sæt 1, til at blive frigivet på fredag, vil gå dig gennem alle disse samme trin. Bemærk, at jeg har en temmelig simpel brugergrænseflade med tre dele. På venstre, har jeg en stor tom Vinduet kaldes kildekode. Det er, hvor jeg har tænkt mig at se en oversigt nogen kode, jeg skriver. På højre side har jeg en stor fanen aktuelt ufrelst, og det er hvor min kode kommer til at gå. Og på bunden, har jeg en indlejret Terminal vinduet, en sort og hvid prompt, hvor jeg kan skrive kommandoer til kompilere og køre mine programmer - at er, at lave og køre mine programmer. Så lad os starte simpelt. Lad mig gå op til Fil, Gem. Jeg har tænkt mig at gå videre og gå ind jharvard. Så apparatet for uanset hvad dit navn er, tilhører en fyr ved navn John Harvard, der har et jharvard hjem directory inderside hvor alle dine filer vil gå. Det er din egen kopi af hans konto, så vi er ikke alle dele den samme harddisk. Du skal bare have den illusion John Harvards egen. På forhånd jeg faktisk installeret Dropbox. Apparatet leveres preprepared med Dropbox, så hvis noget går galt i løbet af semestret, hvis du har konfigureret apparatet med en gratis Dropbox-konto, alle dine filer vil automatisk blive bakket op, så du kan meget nemt inddrive dem. Og jeg har tænkt mig at gå ind i min Dropbox bibliotek, og der har allerede går at være et par andre ting der. Men jeg har tænkt mig at gå videre og gå til Fil, Gem. Jeg har tænkt mig at gå ind i jharvard, Dropbox, og heroppe, vil jeg giver mit program en super enkel navn, hello.c og derefter gemme. Så jeg har samme interface nu. Det eneste, der er ændret er fanen op øverst. Så jeg meget hurtigt kommer til at genskabe at programmet fra slides for et øjeblik siden. Så i main (void), og derefter printf, "Hej, verden," en noget kryptisk backslash n tæt citat, luk parentes, semikolon og derefter Ctrl S for at gemme. Og varsel som en sidebemærkning, hvad der lige optrådte her på øverst til venstre. Og det er ikke nyttigt i dag, men vil være nyttig over tid. Du skal bare se, igen, en oversigt over den kode, du har skrevet. Og fordi jeg skrev noget, der hedder main, det er derfor at ordet main dukkede op derovre. Men for det meste, vi ikke brug for i dag. Okay, så jeg hævder, at dette er min første program skrevet i et programmeringssprog sprog kaldet C. Vi ved fra fredag at hvad denne ting vil gøre meget uinteressant, når jeg køre det er bare at vise - med andre ord, udskrive, som en computer videnskabsmand ville sige - hello world på skærmen. Så for at gøre dette, vil du bemærke, at jeg har at gå ned her til min terminal vinduet, og nu har jeg blinkende prompt. Men det er nu en tastatur version af min John Harvard hjemmebibliotek. Det er et tastatur måde via hvilken til at navigere min harddisk. Så jeg kan faktisk ikke skrive som jeg gjorde sidste uge gør hej, fordi det er kommer til at sige nej regel at gøre målet - noget er galt. Jeg ved ikke helt, hvad det budskab midler, men det er fordi som standard, når denne sorte og hvide vindue er åbnet, er jeg inde i John Harvards hjemmebibliotek. Men hvor har jeg redde dette program? I min Dropbox mappe. Nu har vi alle vokset op med computere, hvor du bare dobbeltklikke på på en mappe ikon, er det åbner, og voila. Det er, hvor filen hedder hello.c ville være. Så i virkeligheden, så lad os gøre det. Lad mig gå videre og minimere gedit ligesom du ville gøre på Windows eller Mac OS. Lad mig gå ind i Home folder øverst til venstre. Jeg ser her en flok mapper. Her er min Dropbox mappe. De checkmarks betyder, at det er blevet synkroniseret. Og der er et par ting her, men bemærke, at hello.c er faktisk lige der. Og så i Mac OS eller Windows, normalt Jeg ville dobbeltklikke på, at det åbner op uanset hvad program, og jeg er god til at gå. Men nu, i det mindste starter i dag, vi nødt til at tage et skridt tilbage for blot at give dig nogle basale værktøjer til din værktøjskasse med til at gøre mere kraftfulde ting inden længe. Så på denne prompt, er jeg nødt til at gøre det svarer at dobbeltklikke på Dropbox mappe. Og for at gøre det, vil jeg skrive cd til ændre biblioteket, Dropbox, indtast. Og nu mærke til de parenteser på min såkaldte prompt siger nu, at jeg er i tilde, den lille skæve symbol øverst til venstre på de fleste tastaturer, / Dropbox. Dette er blot stenografi notation for siger menneske, du er nu inde i Dropbox mappe, lige som om du havde dobbelt klikkede på det. Så nu, hvis jeg går videre og skriv gøre hej, indtaste, ser jeg en meget kryptisk kommando, men ikke en fejlmeddelelse, det forekommer, og derefter anden blinkende prompt. Og hvis du husker, nogensinde så hurtigt på fredag, vi gjorde dette. . / Hej. Hvad du er ved at se, er resultatet af min at køre dette program, eller i Mac OS og PC vilkår, hvis jeg normalt ville fordoble klik på et program -. en app program eller en. exe, åbner et vindue og kører. Skrive. / Hello er ligesom dobbelt klikke på et program til at køre det, men hjælp mit tastatur. Indtast, hej verden. Og det er det. Så lad os drille det fra hinanden til, så det ikke føler for meget som græsk. So. / Betyder hvad? Enhver, der nogensinde navigeret et tastatur miljø som dette, hvad er dot henvise til? Den aktuelle mappe. Så den aktuelle mappe er bare et synonym for en mappe. Så ved at sige dot skråstreg, siger jeg, kigge efter et program kaldet goddag i aktuelle katalog - i den aktuelle mappe. Med andre ord,. Min Dropbox mappe Og det er derfor trykke Enter derefter faktisk kører dette program. Hvis jeg nu type LS, bemærke, at jeg ser alt i min Dropbox mappe. Kom Started.pdf, som Dropbox giver dig gratis, mine fotos bibliotek, en offentlig fortegnelse, der ikke er gemt Dokument 1, der gjorde jeg ved en fejl en øjeblik siden, foo.c, som jeg gjorde tidligere, dag, og derefter to linjer - hello.c og goddag. Hello.c er det program, jeg skrev med gedit, og hvad er hej i grønt? Hello i grøn er den eksekverbare. Med andre ord, jeg når kørte denne kommando for et øjeblik siden - lad mig rulle tilbage i tiden - da jeg kørte gøre hej, det er den midterste trin her. Og det tog hello.c som input - AKA kildekode - og førte til en fil kaldet Hej som output, som indeholder alle disse nuller og ettaller. Og det er derfor i sidste ende, kan jeg faktisk køre en kommando som. / hej. På grund af Intel Inside, mit operativsystem Systemet, Linux, åbner de nuller og dem, fodrer dem i hjerner af min computer - CPU - og at CPU ved, åh, her er et mønster af nuller og ettaller, der siger udskrive følgende ting på skærmen. Hvad er følgende ting? Citat citat slut, "Hej verden". Okay, så en hurtig oversigt over nogle af disse kommandoer, så vi kan begynde tage dem for givet. Lad mig gå videre til hvor vi slap. Og du vil huske, at vi havde CD på vores back end for et øjeblik siden. Disse er, jeg tør sige, for nutidens formål - måske denne uge - de eneste kommandoer, vi muligvis indtaste på kommandolinjen bede udover gøre. Så CD stod for hvad? Skift bibliotek. Det er bare hvad der svarer til dobbelt klikke på en mappe. Og som en sidebemærkning, hvis du får mistede nogensinde indersiden af ​​dit apparat, således at Dropbox - Jeg ønsker at komme tilbage til min jharvard directory - i tvivlstilfælde, CD, indtaste, uden anden ord, og det bare lynlåse dig tilbage til hvor du startede, hvilket er en hyggelig lille genvej. Okay, så nu andre kommandoer. LS. Jeg har skrevet, at for et øjeblik siden. Hvad tror du LS står for? Så liste, right? Tilbage i dag, når mennesker kom op med disse kommandoer, de forsøgte at være effektiv, og snarere skrive ud L-I-S-t Indtast de besluttet LS. Det er fint. Det lyder nok som listen. Lad os bare type LS ind, og at opregner de filer eller mapper i min aktuelle mappe. mkdir, kan du sikkert gætte. Foretag bibliotek. Så du behøver ikke gå til nogle fil-menuen og vælge Ny mappe i dette miljø. Snarere, du skriver kommandoen mkdir plads og derefter navnet på den mappe, som du ønsker at oprette, og det vil ske. rm, kan du sikkert gætte. Fjern eller slette. Så hvis du ønsker at slette en fil, vil du se i opgavesæt, hvordan du kan gøre dette. Og rmdir, fjerne mappe. Så igen, jeg har tendens til at flyve gennem nogle disse detaljer, én, fordi de er ikke så meget sjovt at tilbringe tid på, men to, vil vi give dig langt mere detaljeret i nogen af Selvfølgelig problem sætter især standard udgaver, nogen af ​​trinene at du måske nødt til at skrive, så at du får mere og mere comfy med disse ting. Men lad mig nu drille hinanden en anden ting. Når vi indtastet gøre hej et øjeblik siden, så vi en kryptisk sekvens af kommandoer. Vi så igen, gør hej. OK, lad os gøre det. Jeg var ved at lave en fejl, men [Uhørlig] nu indrømme, at jeg var ved at og gør det med vilje. Hvad gjorde jeg forkert lige nu? Yeah, så jeg er ikke i Dropbox bibliotek, fordi et øjeblik siden jeg maskinskrevet cd og bare tryk på enter. Det zoomet mig tilbage til hvor jeg startede, hvilket er ikke hvor min fil er, så jeg virkelig nødt til at gøre CD Dropbox enter, og nu kan jeg gøre rm goddag enter, fjerne almindelig fil hej. Jeg ved ikke, hvorfor det er så kryptisk. Det betyder blot, er du sikker du vil slette hej? Du kan skrive y for ja, indtast, og nu er det væk. Og nu, hvis jeg skriver gøre hej igen, det er vil genskabe min objekt kode, genskabe de nuller og ettaller. Men hvad er det for noget med denne meget lange kommando? Nå, vi drille denne apart inden længe, ​​men gør - Jeg fortalte lidt af en hvid løgn før - er ikke en compiler. Lav er et program, der automatisk tal ud af at køre en compiler for dig. Så den kommando, du virkelig skal være kører for at omdanne hello.c ind hello ser faktisk ud lidt mere som dette. Og Gud forbyde vi har rent faktisk Husk at nogensinde skrive, at hele sekvens af kommandoer ud. Formålet med at gøre i livet er at huske på, at graden af ​​kompleksitet for os og automatisere hvad der ellers ville være meget kedelige trin. Men jeg kan tilnærme det. Så per denne lille snyde ark her, jeg kan tilnærme hvad denne kommando er gør ved blot at skrive klang, som er navnet på den compiler vi vil være ved hjælp af denne semester. Hvis nogen af ​​jer nogensinde har gjort iOS udvikling til iPhone eller iPad, Clang er det program, du har brugt inden Xcode for at gøre dine apps. Klang, selv om, er bare et andet program hvis navn vi kan skrive på kommandolinjen bede, og ved at indføre det nu, Jeg kan introducere noget, der er en lidt repræsentant kommandoer til at komme. Så lad mig gøre det manuelt. Så rm hej, og nu meddelelse i tilfælde Jeg, ligesom en tilregnelighed check - . / Hej, hvad tror du jeg skal se om jeg gør dette? Anden form for fejl. Ingen sådan fil bibliotek. Så man er faktisk temmelig direkte. Så lad mig rydde skærmen. Kontrol S bare rydder skærmen til at fjerne nogle distraktioner. Og nu vil jeg manuelt typen clang-o hej hello.c. Så hvad handler det om at gøre? Præcis de samme ting, der gør gjorde for os, men jeg smide nogle af de overflødige ord. Clang er det program, der kommer til tage en. c-fil som input og producerer nuller og ettaller som output. Men-o fremover vil kalde en switch eller et flag. Dette er blot techie jargon for at sige dette er et ord, du skriver på et prompt at en eller anden måde påvirker adfærden af det program, du kører. Så er der nogen ønsker at gætte hvad-o formidler? Output. Det er bare nogen besluttede-o betyder output en fil kaldet goddag og tage input uanset sidste ord om prompt er hello.c, så hvis jeg ramte Indtast nu, intet synes at ske. Og mærkeligt nok, i denne verden af programmering, hvis der ikke sker noget, det er sikkert en god ting fordi der er ingen fejl meddelelse på skærmen. Hej, Enter. Mit program er nu kørt. Men jeg kan gøre dumme små ting som dette. klang-o, hihihi, hello.c, enter, og nu har jeg en identisk program ved navn hihihi. Det opfører sig på samme, men navnet er anderledes. Så dette er blot at sige, at hvis du vil at påvirke adfærden hos en program, vi kommer til stadig se kaldet tingene kommandolinjeargumenter. Dette er en linje. Du skriver kommandoer. Ergo, kommandolinjen. Og kommandolinjeargumenter er blot ord eller små stykker af syntaks, der anden måde påvirke adfærden hos programmer, vi kører. Okay, det er måske det mest kedeligt program vi kan skrive og se. Lad os nu gøre noget mere interessant. Lad mig gå videre og oprette en ny fil. Jeg har tænkt mig at gå videre og gemme dette i John Harvard hjem mappe som, lad os kalde det custom.c at være lidt brugerdefineret program. Jeg har tænkt mig at zoome ind på min top fanerne her og start igen. Medtag standard stdio.h. Mere om det om et øjeblik. int main (void), mere på at i et øjeblik. printf ("Hej, David"). Meget mere interessant, ikke? Så nu, hvis - ikke på grund af mit navn, bare fordi det er anderledes - gøre brugerdefinerede ind. Brugerdefineret, hallo, David. Men selv det også er en hvid løgn. Dette program kunne lige så godt hedde david.c, fordi det ikke er skik adfærd overhovedet. Virkelig, jeg vil have et program, der beder brugeren om deres navn. Så hvordan gør jeg det? Nå, lad mig rulle op herovre. Og før jeg bruger en erklæring Scratch, før jeg bruger printf, ellers kendt som en funktion, lad mig først spørge brugeren for nogle input. Så for at gøre dette, jeg har brug for at gøre et par ting. Én, jeg har brug for et sted at gemme brugerens navn efter jeg har bedt ham eller hende for det. Hvilken konstruktion skal jeg bruge nok at gemme en værdi som det? En variabel. Så i modsætning til Scratch, hvor du bare en dejlig brik her, er vi nødt til bruge, naturligvis, ord til udtrykke os. Og nu, når du vil have en ord eller en sætning, i programmeringen, vi kommer til at kalde det en streng. Så en streng er et ord eller en sætning. Det er en sekvens af nul eller flere tegn, mere formelt. Og hvis du ønsker sådan en variabel til findes, er du nødt til at sige at give mig en. Og den måde, hvorpå du gøre det er at siger string s semikolon, hvor s kan være noget, du ønsker. Faktisk er s lidt underwhelming. Lad mig gå videre og mere klart kalde det navn. Giv mig en streng kaldet navn. Men nu, hvad er personens navn som standard? Tja, hvis det menneskelige ikke skrive noget i, naturligvis, er der vil at være nogen værdi i navnet. Og det viser sig i C, hvis du ikke giver en variabel en værdi, det kommer til at har en skrald værdi. Det kunne have nogle tilfældige nuller og dem, så du bare kommer til at se skrald, virkelig, på skærmen hvis du prøver at vise det. Men jeg kan ordne det ved at sige, faktisk, butik inde i navn efter værdi. Den måde du lagre værdier i variabler Hvis du har en variabel navn på tilbage, er du nødt til at en eller anden måde lægge, hvad du ønsker at gemme i den på højre og syntaksen for der kommer at være som følger. Vi har ikke set det før, men tage på tro for et øjeblik, at der eksisterer en anden udtalelse i verden at jeg har tænkt mig at igen kalde funktion, og denne funktion er kaldet få strengen. Og det gør bogstaveligt det. Den anden måde får en sekvens af tegn fra det menneskelige og derefter gør noget med det. Og det ser ud som kryptiske syntaks. Normalt, hvis du bruger lighedstegn - du er i verden, siger, algebra, og du er faktisk siger x er lig med 1. Her vil vi ikke sige, at navn lig få strengen. Vi siger butik i navnet, hvad der er på den højre side af det lighedstegn. Lighedstegnet repræsenterer opgaven operatør. Det er den syntaks, der siger lægge, hvad der er på højre side inde i hvad er til venstre. Så får streng er et nyt stykke funktionalitet, der ikke kun gør noget - beder brugeren om en streng - det returnerer også den, så at sige. Så lad os se, hvad der foregår at ske her. Jeg har tænkt mig at gå videre nu, og zoome ud, og jeg har tænkt mig at få et par fejltagelser på min prompt. Jeg har tænkt mig at skrive gøre brugerdefinerede, ind. Wow. En hel flok af fejltagelser. Okay, så det er lidt overvældende, i hvert fald i starten, men det viser sig alle disse meget ganske kryptiske fejlmeddelelser er henvise til nogle mønstre, vi vil begynde at se over tid. Så denne ene jeg vil plukke ud, fordi det er først. Anvendelse af sort identifikator streng. Det betyder blot, at gedit eller Clang, i dette tilfælde ikke ved hvad jeg mener med snoren. Og det er fordi i C, programmeringen sprog, der faktisk er ikke variabel af typen streng. C ikke ved, at strengene eksisterer. Men vi, CS50 personale, gør. Og så forud for klassen, vi skabte en fil kaldet CS50.h. Og inde i denne fil - og mere på syntaksen at komme - inde i denne fil er en definition af, hvad jeg lige har defineret, verbalt som en streng. Så blot ved at indgå denne ene linie kode i mit program, er jeg nu undervisning gedit og gøre og Clang alt til gengæld, hvad en streng er. Jeg ved ikke hvordan endnu. I et par uger, vil vi skræl tilbage, at lag. Men for nu, ved, at det lærer compileren, hvad en string rent faktisk er. Så lad mig klart min terminal hernede. Lad mig igen køre gøre brugerdefinerede, og jeg løst alle disse problemer. Så dette også kommer til at være et tilbagevendende tema. Jeg skrev kun en 9 line program, og men jeg havde 18 linjer af fejl. Det er lidt skræmmende. Men indse, at de ofte kaskade sådan at en lille fejl udløser forvirringen til compiler, og det ser meget værre end det er. Så nu en klog observatør vil vide at jeg får en snor fra bruger, men jeg er faktisk ikke gør hvad med det? Jeg er ikke faktisk gør noget med det. Så hvis jeg faktisk køre brugerdefinerede igen, det vil bare sidde der. Hvad sker der? Mit program ser ud til at blive hængende på hvilken linje, ville du sige? Så det er faktisk fast på linje 7.. Og vi har ikke set det før, men på linje 7, er der, igen, dette erklæring, få strengen. Og det gør, hvad det siger. Det venter nu for den menneskelige at tage strengen. Dette er helt unintuitive for mig, de menneskelige, fordi jeg ikke har fået at vide hvad de skal gøre. Men lad mig gå videre på tro og lad mig foregive at være Rob. Enter. Det er ikke det program, jeg havde tænkt mig. Så vi har vores første blog. Men lad os prøve at ræsonnere gennem hvorfor dette er tilfældet. Først, lad mig løse dette første problem. Lad mig tilføje en linje her, der siger printf, hvad er dit navn? Lad os bare gøre tæt citat, lukke parentes. Lad mig nu igen køre programmet. Problem. Jeg kan ikke se det. Right. Jeg har ikke genkompilere det. Så i et sprog som C, fordi du ændre kildekoden betyder ikke at du har ændret dit objekt kode til at generere nye objekt kode, nye nuller og ettaller. Du er nødt til at kompilere. Hvis jeg nu igen køre skik, indtaste, ah, lidt mere klart. Mit navn er Rob. Stadig buggy. Og jeg ville argumentere at der er et par bugs nu. Dette blot ser hæslige, helt ærligt. Ligesom, minimalt, skal jeg have en plads der, eller flyt markøren til den nye linje. Og faktisk ny linje. Det er sådan en central sætning her, at vi har set, men ikke defineret. Den måde, som du får en tekst til at flytte til den næste linje, behøver du ikke gøre dette. Dette er forvirrende for computeren. Det ligner to separate linjer kode, i nogen som er helt korrekt. Man i stedet nødt til at være mere eksplicit og sige, giv mig en ny linje, som vi repræsentere i c med backslash n. Så der er et par sådanne tegn. Backslash n vil løse denne æstetik. Lad mig kompilere mit program. Lad mig igen køre mit program. Det ser bedre ud. Det er stadig temmelig primitive, men det er også stadig buggy. Så der er en - selvom du aldrig har programmeret før, kan du sikkert tage et gæt på, hvorfor dette program er stadig behæftet med fejl. Hvad har jeg brug for at gøre det Jeg har ikke gjort endnu? Så jeg er nødt til rent faktisk at gøre noget med navn. Ligesom i bunden, kan du faktisk tildele en variabel ligesom n eller imødegå ligesom vi gjorde sidste uge - en værdi. Men hvis du ikke gør noget med det, er intet kommer til at ske. Okay, så lad fix. Lad mig skrive min variabel der, og lad mig gå ned her. Lad mig kompilere, lad mig re-run, Rob. Nu er jeg bare en idiot, right? Så dette er ikke virkelig får mig yderligere. Men det var en helt naturlig instinkt, ville jeg argumentere, right? Hvis variablen kaldes navn, og jeg vil have det til at gå der, hvorfor jeg ikke bare skrive det der? Nå, selvfølgelig har vi at skelne nu mellem, hvad er en streng? Bemærk, at citat citat slut her, hallo navn? Dette faktisk selv er en streng. Det er svært kodet. Det er ikke fra det menneskelige. Det er fra mig, den oprindelige programmør, men det er stadig en streng. Så hvis du bogstaveligt skrive N-A-M-E indeni af en streng, hvad kommer til at få udskrevet? Nå, N-A-M-E. Vi har i stedet brug for at fortælle printf, udskrives ikke ud bogstaveligt navngive. Print ud af værdien af ​​navn. Og for at gøre det, vi gør følgende. Og det er bare et menneske konvention. Vi stedet siger% s, og at står for streng. Og så i slutningen af ​​mine nære citater, Jeg har tænkt mig at sætte et komma, og passere en andet argument ind i denne erklæring. Jeg har tænkt mig at skrive navnet der. Så nu ser vi, har en lidt nyt syntaks. Vi har stadig to parenteser og fremover lad mig sige, at de ting parentes repræsenterer argumenter i en funktion - materialer, der en eller anden måde går at påvirke dens adfærd. Så ved den logik, argumenter hvor mange ikke printf synes at være tager i dette øjeblik? Så det ser ud til at tage to, og det er faktisk underforstået af komma her. Så dette er et argument i anførselstegn. Selvom det har et komma i det, alt er i anførselstegn, hvilket betyder det er en lang streng. Komma, variabelnavn. Så lad mig zoome ud. Lad mig køre den igen. Rob. Fandens, hvad gjorde jeg forkert? Okay, så du er nødt til at kompilere. Så igen, let fejltagelser gøre tidligt igen og igen. Så nu igen køre skik, Rob, enter, og voila. Vi har nu en brugerdefineret program. Så jeg har nu et program, der bruge et par karakteristika der er værd at bemærke. Én, jeg bruger CS50.h, ellers kendt som CS50 biblioteket. Og inde i CS50-biblioteket er funktioner, som andre mennesker skrev - nemlig personale - for dig at bruge, og få streng er en af ​​dem. Inde i linje 2 er stdio.h, og hvorfor er det der? Tag et gæt. Hvad eksisterer inde i standard IO forælder? Printf. Så printf, behøver du ikke se det nogen steder ellers på skærmen. Den skal komme med computer eller anden måde. Hvor kommer den fra? Det er inde i - det er erklæret, så at sige, indersiden af en fil kaldet stdio.h. Nu, for det her, vi vil komme tilbage i sidste ende, fordi det er en smule distraherende for nu. Dette refererer til vores tilbagevenden type. Dette refererer til et argument. Men i dag, er vi fokuseret bare her på disse strækninger. Så string navn, bare for at opsummere, hvad gjorde det gøre for mig? Så det erklæret en variabel af typen streng. Så det er beregnet til at være for ord, ikke for tal. Lige som en sidebemærkning, hvis jeg gjorde ønsker det at være et nummer, vil jeg sige noget som int. Hvis jeg ønskede at være en floating point værdi, noget med et komma, Jeg vil sige float. Men for i dag, jeg har lige sagt streng. Og jeg har givet denne variabel et navn på navn, men jeg kunne har kaldt det noget. I virkeligheden, oprindeligt jeg kaldte det S. Det her er bare en anden opgørelse. Hvor mange argumenter er det erklæring tager? Så det er bare at tage én, og at er simpelthen en æstetisk detalje af visning noget på skærmen til mig. Hvad er denne linje 8 laver i lægmandssprog? Det bliver en værdi fra bruger - nemlig en streng - og hvad laver det med det? Det er væsentligt at overdrage det til fyr på venstre side af lighedstegn således at i dette tilfælde Navnet variabel kan faktisk gemme det. Og så printf er en anden forekomst af en funktion. Og vi siger til at kalde en funktion. For at bruge en funktion er at kalde en funktion. Denne ting tilsyneladende tager to argumenter. Denne ene, komma, denne ene. Denne ene selv er blot en streng , der indeholder en pladsholder. % S betyder sagt på en anden streng her. Og så ved at sætte navn efter komma, der er indsættelse at ting for mig. Så jeg kan gøre andre ting stadig. Lad mig gå videre nu, og gøre lidt af et fjollet program, men lad mig slette denne, og lad mig lave en løkke. Mens sandt. Symbolet sandt er tydeligvis altid vil være sandt. Så hvad slags loop jeg fremkalde ved at skrive en linje som denne? Så en uendelig løkke, right? Bare mens sandt. Der er ingen måde jeg kan ændre ordet rigtigt at være noget andet, så det er bare at køre for evigt. Så hvis du nogensinde har faktisk haft et program i din Mac eller pc, der synes at have låst op, eller det gør noget og noget, og du bare kan ikke få de ting til at holde op, medmindre du genstarte computeren eller trække op Task Manager eller lignende, her er et eksempel herpå. Jeg kan sige, "Jeg er en fejlbehæftet program." Luk citat, luk parentes, semikolon. Så igen mærke mønstrene. Selvom nogle af vores syntaks er ny, nøgleordet mens nøgleordet sandt, Bemærk, at jeg har det samme slags krøllede parenteser. I got et semikolon og parenteser. Så lad os nu gå videre og kompilere dette. Gør skik, sædvane. Så på dette punkt, behøver du ikke at genstarte apparatet, okay? Så den nemme lektion her er med to fingre, Kontrol C, vi afslutte dette program. Men du kan se præcis, hvorfor denne ting var gentage sig selv igen og igen. Jeg kan gøre noget lidt mere kompliceret, da en teaser. Jeg har tænkt mig at gå videre og sige følgende. For int, hvilket er et heltal, er jeg bare et generisk navn vi giver til de fleste variabler i programmering, når du er bare tælle, er lig med 0. Lad mig gå videre og sige, mens jeg er, lad os sige, mindre end 100, jeg plus plus. Vi tilbage til denne syntaks, men dette betyder blot tilvækst i igen og igen. Og hvad ønsker jeg at gøre her? Printf, "Jeg kan tælle til i". Dette er en fejlbehæftet program. Hvad gjorde jeg egentlig hensigt her? Procent ikke s, men du ville ikke gætte dette. % D er en decimal heltal. Komma dvs. Lad mig rulle tilbage. Lad mig nu genkompilere med lave. Lad mig nu køre med brugerdefinerede. Jeg kan tælle rigtig sgu hurtigt, når Jeg skriver et program som dette. Lad os nu gøre noget lidt utilsigtet. Hvordan omkring lad os gøre det, mens jeg er større end eller lig med 0. Hvad vil dette fremkalde? Så logisk, det er ikke så klog, fordi nu hvis jeg køre dette optælling, Jeg kan nu regne rigtig, rigtig højt. Desværre lige så højt som jeg kan count er 4 milliarder, så det går til at tage et stykke tid. Så hvorfor ikke forlader vi dette som vores cliffhanger, lover, at der på Onsdag vil vi se, om dette program er gjort. To, vil vi introducere hvordan du selv skrive din egen funktion, så meget hurtigt ved onsdag vi vil, som vi overgang fra Scratch til C, start skriver stadig mere komplekse programmer, der gør meget, meget mere end dette. Vi vil se dig derefter. [Applaus] SPEAKER 1: På det næste CS50, Puzzle Day var en succes.