LUCAS FREITAS: OK, jeg gætte nu er vi bor. Velkommen til CS50 Supersection. Vi er mindre behagelige. Mit navn er Lucas Freitas. Jeg er en CS50 hoved TFs. Det er Lauren. LAUREN CARVALHO: Hej, jeg hedder Lauren. Jeg er også chef TF til CS50. LUCAS FREITAS: I dag skal vi bare at give et overblik over hvad alt hvad du fyre har lært i uge et, forhåbentlig om at give jer en god mening for hvad du bør vide for problemet indstillet en sådan. Bare et par annonceringer. Først og fremmest, kontortid. Kontortid sker fra mandag til torsdag i forskellige huse i Annenberg hver dag. De er en meget god ressource for dig fyre til at komme og stille spørgsmål, og tale til TFS og endda udveksle ideer med andre studerende. Så sørg for at bruge denne ressource i din favør. Den anden ting er den CS50 Appliance. For den sidste [uhørligt] du fyre ikke har til rent faktisk at har et apparat. Du skal bare gjorde alt i din personlige computer. Men for at dette problem, du rent faktisk har at have en virtuel maskine, så Sørg for at hente CS50 Appliance og sætte det op. Og den tredje ting er at være sikker på at starte problem indstillet ASAP bare fordi det er meget lettere at finde hjælpe, når du er i begyndelsen af ​​ugen. Fordi folk har en tendens til at vente, indtil sidste sekund for at starte problemet sæt, og så skal du gå til kontortid, og der er en masse mennesker. Hvor hvis du går på mandag, er du nødt at se, at du kan tale med TFs temmelig meget for hele natten, og de vil være mere end glade for at hjælpe dig. LAUREN CARVALHO: Kan jeg bare stoppe du for bare en sekund? Har alle været i stand til at hente Den CS50 Appliance? Har folk prøvet? LUCAS FREITAS: For at downloade, ved måde, kan du få vejledning på cs50.net/appliance. LAUREN CARVALHO: Right. Og det tager lidt tid for vores systemadministrator for at få dig en licens nøgle, så meld dig til gratis prøveversion først. På den måde har du det i 30 dage, og derefter vente på din licens nøgle der bør give det til dig i et år. LUCAS FREITAS: Først og fremmest, Lad os snakke lidt om CS50 Appliance. Den CS50 Appliance er faktisk en virtuel maskine, som du vil køre i din egen computer, som er dybest set kører en anden computer inde i din egen computer. Hvilket er temmelig cool. Og faktisk det bruges overalt. Folk, der til tech ville vide, at dette bruges hele tiden. dig? Kan have flere computere i én enhed. Lad os faktisk tage et kig ved Appliance. Når du går til Appliance efter registrering, er du nødt til at sætte dit navn og log ind på Harvard så vi kan få dig alle registreret. Du kommer til at se dybest set bare et tapet, og derefter hjem og papirkurven, og så disse små ikoner. Denne tre ikoner er faktisk den mest vigtige ting, du kan have i din Appliance. Den første er gedit, hvilket er en tekst redaktør, ligesom Notesblok eller lignende enhver form for tekst editor. Det er bare noget, som vi bruger til at skrive kode og derefter gøre ting med det. Den anden ting, som vi har her er Chrome. Så hvis du har brug for at bruge internettet i Appliance, der er hvad du kan bruge. Og den tredje ting er terminalen, som faktisk er meget sød. Folk normalt er slags bange for terminalen, fordi det er denne meget gammeldags ansøgning, hvor du bare dybest set skrive alt med dit tastatur. Der er ikke en masse interaktion med din mus. Men faktisk terminalen gør meget gode ting. Først og fremmest, lad os bare gå igennem nogle kommandoer, som du kan bruge i terminalen. LAUREN CARVALHO: Og velkommen til at stoppe os, hvis du har spørgsmål. LUCAS FREITAS: Ja. Så den første kommando, at vi har for terminalen er ls. ls dybest set betyder liste alt, alt filer og alle de direktører, at jeg har på det sted, at jeg er på. Så hvis jeg gør ls her, jeg kommer til at se at jeg har nogle mapper. Jeg har på skrivebordet, downloads, logs, og vhosts. Det er i blå, fordi de er alle mapper. Så har du nogle andre filer. Du har ligesom goddag og hello.c, som er blot filer, og de er i forskellige farver. Så dette er en meget vigtig kommando bare du kan se, hvad er de filer, og mapper, som du har i den mappe, der du er på i terminalen. Når du ser jharvard @ apparat og så lille symbol der, tilde, det betyder blot, at det er mappe, at du er i øjeblikket. LAUREN CARVALHO: Så skrive ls er næsten som at klikke på mappen der er opført lige dér, i den viser du alt indhold, der er inden for denne mappe. PUBLIKUM: Er der tekst efter hello.c? LAUREN CARVALHO: Åh, kan du ikke se, at fordi det er blå. LUCAS FREITAS: Der står logs og vhosts. LAUREN CARVALHO: Det er bare andre mapper. Undskyld, det er virkelig svært at se. Måske hvis vi slukkede lyset? Colton, du ønsker at prøve og finde den lyskontakt? Undskyld. Jeg tænkte ikke over det. LUCAS FREITAS: Men det er dybest set - yeah, hvis du kunne - LAUREN CARVALHO: Zoom på din skærm. LUCAS FREITAS: Jeg gør ikke har denne funktion. LAUREN CARVALHO: [uhørligt]. OK. Tja, der er bare en masse af naturligt lys i dette rum så godt. LUCAS FREITAS: Lad os bare antage, at Der er to andre biblioteker der. LAUREN CARVALHO: Bare huske med os. Dette er den eneste del, som du vil kigge på terminalen. LUCAS FREITAS: Den næste kommando er dybest set måske du ønsker at organisere dine filer - for eksempel alle dine C-filer i ét directory-men du ikke har en mappe bare for C-filer endnu. Du kan stort set oprette en mappe ved hjælp af terminalen samt, som er det samme som at højreklikke og siger Ny mappe. Kommandoen lave mappen, som er mkdir, så dybest set "gøre" og "Bibliotek". Og så kan du sætte den navnet på den mappe. Lad os sige, at jeg ønskede at blive kaldt, Jeg ved det ikke, lad os sige pset1 Doing dette, jeg netop oprettet en mappe. Lad os lige tjekke, at det er der. Så hvis jeg gør ls, nu kan jeg se logs, og så pset1 og derefter vhosts. Så jeg har den nye mappe der. Og så når du har et nyt bibliotek, måske du ønsker at navigere ind i det, så den næste kommando denne cd, som netop betyder egentlig gå til en bestemt mappe. Så hvis jeg ønsker at gå til pset1, Jeg kan bare gøre cd pset1. LAUREN CARVALHO: cd står for forandring mappe, [uhørligt] i stand til at huske. LUCAS FREITAS: Og nu kan du se, at i stedet for bare at have jharvard apparat, jeg har jharvard apparat, og derefter pset1, fordi det viser mig, hvor jeg er i denne computer. Nu, hvis jeg ønsker at gå tilbage til mappe, der var før denne, jeg kan gøre en cd prik prik, hvilket betyder bare gå til den mappe, som jeg var før, ligesom moderselskab for dette mappe, dybest set. Og nu ser jeg, at jeg er tilbage til jharvard. Den næste ting, jeg kan gøre det er rm, som er at fjerne en fil. For eksempel, lad os først gøre ls at se, hvad jeg har her. Jeg har goddag og hello.c. Lad os sige, at jeg ønsker at fjerne dem. Jeg kan gøre rm hej. Det kommer til at sige "fjerne almindelig fil hej "Og jeg siger" ja ". Og nu, hvis jeg gøre ls, jeg kan se, at det er der ikke mere. Hvis jeg forsøger at bruge rm for en mappe, selv, er det ikke kommer at lade dig gøre noget. Det kommer til at sige, hey, du kan ikke fjerne en mappe. Så vi har dette andet komme kaldt rmdir, som netop dybest set betyder fjerne mappe. Jeg kan for eksempel fjerne pset1. Og hvis jeg gør ls, det gør jeg ikke have det længere. Eventuelle spørgsmål vedrørende denne? Nej? Ja? PUBLIKUM: Er det vigtigt, at du lader et mellemrum efter - når du begynde at skrive noget i? LUCAS FREITAS: Ja. Hvis jeg gør gerne cd og den mappe, Jeg nødt til at sætte et mellemrum. Hvad plads taler du om? LAUREN CARVALHO: Mellemrummet mellem cd og [uhørligt]. LUCAS FREITAS: Ja, er du nødt til sætte rum, fordi cd er kommando, og derefter den næste streng, du type er dybest set den mappe. Så det er ligesom et argument. Ja? PUBLIKUM: Når du liste alle dem er forskellige mapper, right? LUCAS FREITAS: Ja, de er i kataloget. PUBLIKUM: Hvad er forskellen blandt de mapper? LUCAS FREITAS: De er bare forskellige mapper. Bibliotek er en mappe i din computer. PUBLIKUM: Åbn mappe. LUCAS FREITAS: Ja, det er blot en åben mappe. LAUREN Carvalho: Over her, dem der er i blå er faktiske mapper, som du kan komme ind og så se en masse ting, der er inden for denne, hvilket er uheldigt fordi du ikke kan faktisk læse dem i blåt. Og dem i hvid er blot filer der er inden for den aktuelle mappe. LUCAS FREITAS: Så biblioteker er mapper. De andre er filer. PUBLIKUM: Hvad er kommandoen nulstille den eller for at slette det? LUCAS FREITAS: For at fjerne? LAUREN CARVALHO: For at fjerne? LUCAS FREITAS: Jeg tror det er "klar". Ja. Så du bare skrive klart, om din skærm er for rodet. Andre spørgsmål? Og du vil lære en masse andre kommandoer bare naturligt under semester, fordi de er meget nyttige. Så lad os nu snakke om kompilering. Vi talte om pseudokode og kildekoden og objekt kode. Og der er en masse koder, og måske du fyre er forvirret over det. Lad os snakke lidt om, hvad sker, når du skriver et program, og du kompilere det, og det bliver en eksekverbar fil. De er alle ord, du fyre sikkert hørt, og måske er du ikke helt sikker på hvad der foregår. Lad os sige, for eksempel, at jeg ønsker at skrive et program, der siger "hej." Den første ting, der kommer i dit sind er du slags prøv at tænke på, hvordan du er kommer til at gøre det i dit sind, og du sandsynligvis tænker på engelsk eller et andet sprog, som naturligt sprog, sandsynligvis. Og så du tror, ​​ja, hvis jeg vil, for eksempel skrive et program, siger "hej," Jeg vil starte et program, Jeg vil udskrive hej, og så vil jeg afslutte programmet. Dette er pseudokode. Dette er netop grunden du forsøger at komme op med en sekvens af hændelser at du kommer til at gøre for at være stand til at skrive et program. Så har du kildekoden, og kildekoden ikke behøver at specifikt være i C. Vi taler om source kode i C, fordi det er det sprog, vi er ved at lære, men selvfølgelig kode kan være stort set enhver programmeringssprog, som du har. Senere i semestret, er du nødt til at lære andre sprog. Det er også kildekode. For eksempel er her, det er min kilde kode, og så er jeg også en bibliotek, og derefter starter jeg main, og derefter udskrive jeg. Og Laura kommer til at snakke lidt lidt om alt dette. Så dette er kildekoden. Og hvad er formålet kode? Objektet er en flok nuller og dem, dybest set. Hvad der sker, er du i første omgang har pseudokode, som er alle på engelsk. Og jeg mener, du forstår det. Sandsynligvis dine venner forstå det, og de fleste mennesker ville forstå ideen. Men computere er virkelig dumme, og de forstår ikke engelsk, så du har omsætte det til noget, oversættes normalt ind i nogle programmeringssprog. Og du kan tænke på et programmeringssprog sprog som lidt ligesom et sprog at du fortæller din computer hvordan at tale og forstå. Du er dybest set at skrive noget i et sprog, som både du og dine computer forstå. Det er kildekoden. Så går formular pseudokode til kilden kode, er det op til dig. Det er dybest set du laver dit program. Men problemet er, at computer ikke engang forstå programmeringssprog. Det betyder ikke forstår kildekode overhovedet. Det faktisk bare forstår nuller og ettaller. Så vi har det meget magiske ting kaldet en compiler, som dybest set er kommer til at få den kilde, kaldet, at du skrev i et sprog, som både du og computeren tale, og nu er du kommer til at omdanne det i nuller og ettaller. Så dybest set, hvad compileren gør, er det får kildekode, i dette tilfælde C, det kommer til at omdanne det til nuller og dem, som computeren forstår og kan gøre en eksekverbar fil ud af det. Giver det mening? Du kan bare tænke på compiler som en slags oversætter, der er hjælper du forklare til computeren præcis, hvad det er meningen at gøre. Men hvordan kan jeg kompilere. Lad os gå tilbage til apparatet, og lad os sige, at jeg gør dette program. Først vil jeg oprette en mappe her, og jeg har tænkt mig at kalde det "Praksis". Nu vil jeg til at navigere til den mappe, så cd praksis. Nu er jeg inde i praksis. Nu vil jeg starte gedit, så hvordan gør jeg det? Jeg kan enten klikke her, eller jeg kan bare bogstaveligt skrive "gedit", og det kommer til at åbne for mig. Nu vil jeg til at skrive mit program, så præcis, hvad jeg skrev i diaset. Jeg erklære et bibliotek. Jeg gør int main, ugyldig. Og nu jeg gør printf, hej. Nu vil jeg til at redde dette. Lad mig sige det i praksis, og Jeg har tænkt mig at kalde denne hello.c. Så nu er det gemt. Hvis jeg ønsker at kompilere det, jeg faktisk kan gøre det på to forskellige steder. Jeg kan enten gøre det på en terminal vindue, så dette store, eller du kan bruge gedit, der rent faktisk har en terminal vindue lige her. Så kan du meget bekvemt lige gøre din kode, og så kan du bare skrive hvad her, og prøv at kompilere det. Så hvordan kan jeg kompilere kode? Den nemmeste måde, at vi har er ved hjælp af gøre, hvilket er en funktion, er dybest set vil kompilere din kode. Du skal bare nødt til at sige gøre hej, så "Gøre" og navnet på programmet. Ups. Dette er akavet. LAUREN CARVALHO: Kan du [uhørligt]? LUCAS FREITAS: Undskyld. Jeg havde ikke gemme den i rigtige bibliotek. Kom til praksis, og nu gemme det som hello.c. Undskyld. Nu er det gemt. Lad mig bare gøre ls og være sikker på, at det er her. OK, nu er det her. Så nu, hvis jeg gør hej, det spytter en masse ting, men så er det bare giver mig en anden linje for terminalen, som betyder, at det var en succes. Så nu, hvis jeg gør en ls igen, jeg faktisk se denne fil i grøn, hvilket er den eksekverbar fil. Og så hvis jeg vil køre det, alt det Jeg skal gøre er at dot skråstreg hej. Det kommer til at sige goddag lige her, så det er præcis, hvad jeg beder den til. Der er endnu en måde at kompilere, der bruger klang. Dunk er bare en compiler, vi har, og det er en lille smule mere detaljeret for kompilere det. Men det virker lige så godt. Så hvis jeg gør klang, og så-o, og derefter det navn, jeg ønsker at give til den eksekverbare fil, så lad os sige "Hello". Og så den fil, jeg vil at kompilere, hello.c. Det er også kommer til at kompilere. Og du har filen her, og Jeg kan bare udføre det så godt. Så både af dem arbejde. Giver det mening? Eventuelle spørgsmål? PUBLIKUM: Kan du zoome i en lille smule? LUCAS FREITAS: Undskyld? PUBLIKUM: Zoom ind? LAUREN CARVALHO: Jeg tror, ​​du kan bare kommandere plus. LUCAS FREITAS: kommando hvad? LAUREN CARVALHO: Command plus. LUCAS FREITAS: Nej. LAUREN CARVALHO: Åh, det er ikke kommer til at arbejde, fordi - er det fordi vi indstille opløsningen for denne ting. LUCAS FREITAS: Jeg gør ikke tror, ​​vi kan zoome ind Ja, vi kan ikke zoome. Har du har et andet spørgsmål? Undskyld. PUBLIKUM: Kan du gentage clang? LUCAS FREITAS: Den klang? Dunk er det samme som mærke, men det Forskellen er, at jeg først har tænkt mig at skrive klang, som er kommandoen, så jeg har tænkt mig at gøre -0, alt, der er lige, hvad vi kommer til at lære senere som et flag. Så bare tror, ​​at du altid nødt til at sætte-o. Og så først, er du nødt til at sætte navnet på den eksekverbare fil, dybest set den fil, du kommer til at skabe. Så jeg kan sige, for eksempel, hello2 og derefter den fil, jeg ønsker at kompilere, som er. c fil. Så det er hello.c. Giver det mening? PUBLIKUM: Hej hvad? Hvad er det? LUCAS FREITAS: Hello.c. Og hvis jeg kompilere det, og hvis Jeg kan ls, jeg har også en hello2 at jeg lige har kompileret. Og hvis jeg prøver at køre det, det kommer til at gør præcis det samme som hej, bare udskrive hej. PUBLIKUM: Hvordan kommer til make du kan sætte hello.c efter? LUCAS FREITAS: I fabrikat, du behøver ikke at sætte. ca. I fabrikat, du bare sige det navn på programmet. Du behøver ikke at sige. Ca. Men for klang, du skal. PUBLIKUM: Med clang har du også nødt til at tilføje [uhørligt] LAUREN CARVALHO: Ja. Så du også nødt til biblioteket. LUCAS FREITAS: Ja, det er noget vi kommer til at bruge senere. Det kaldes sammenkædning, og jeg tror, ​​vi er kommer til at tale om det senere. Et andet spørgsmål? PUBLIKUM: Har du sat en prik skråstreg klang? LUCAS FREITAS: Nej. Prikken skråstreg er bare at åbne den eksekverbare fil. Så klang, du bare skrive "klang", og så hvis du ønsker at åbne eksekverbar fil, du lige kompileret, så du dot skråstreg og navnet. Giver det mening? PUBLIKUM: Hvis du skulle bare forandring [Uhørligt] til goddag verden, gør du skal kompilere det? LUCAS FREITAS: Ja. hvis jeg ønsker at sige, for eksempel, "hello der, "Jeg kan bare gemme det nu, og jeg bare kompilere det igen. Så lad mig gøre en make hej. Og hvis jeg gør hej, det kommer til at sige "Hej der." Giver mening? Andre spørgsmål? PUBLIKUM: Har du nødt til at medtage standard I / O til at koordinere arbejdet? LUCAS FREITAS: Ja. Standard I / O er dybest set det bibliotek, der har en implementering for printf. Så ting lige på top omfatter stdio. Det er herunder et bibliotek, dybest set har en masse forskellige værktøjer, som du kan bruge. en? Af dem er printf der er en funktion der dybest set udskrives beskeder til skærmen. Andre spørgsmål? Nej? OK. Så lad os nu snakke om - LAUREN CARVALHO: Lad os bare gå til den stil guide. Ønsker du at bare finde det herinde? LUCAS FREITAS: Så vi vil at tale om stil. LAUREN CARVALHO: Åh, David ikke færdig. OK. Hvorfor vi ikke kommer tilbage til stil i slutningen? Det er faktisk blevet opdateret som vi taler. LUCAS FREITAS: Ja. Lad os vejen for David at afslutte det. LAUREN CARVALHO: Can vi skifter faktisk? Så jeg håber, at alle har været nyder Scratch. Desværre, er det tid til bevæge sig væk fra det - desværre er det tid til at flytte væk fra disse smukke blokprogrammering på C. Men heldigvis, alle af programmering konstruerer, at du har arbejdet med i Scratch er direkte overføres til et C, og vi er kommer til at begynde at lære om nogle af dem lige nu. Lad os først tale om forhold i boolske udtryk. Dette kører på reserve batteristrøm. LUCAS FREITAS: Hvordan er der ikke fungerer? OK. Du går der, jeg kommer til at få det - LAUREN CARVALHO: So betingelser vigtige, fordi de tillader os at introducere logik ind i vores programmer. Her er et eksempel på en betingelse inden for et C-program. Lad os bemærke, hvordan dette - Så denne betingelse blok lige her, dette printf erklæring vil ikke udføre medmindre betingelsen i parenteser, n er større end 0, evalueres til sand. Nu er alle betingelserne inden f udsagn er boolske udtryk, hvilket betyder, at der er kun to muligheder. De kunne enten evalueres til sand, eller de kan evalueres til falsk. Så her, så det giver mening, ikke? n større end 0, betyder, at det er en positiv nummer, hvilket betyder, at det vil udskrive out "du valgte et positivt tal." Der er masser af boolske udtryk som kan danne tilstand med en init erklæring. Vi har mindre end. Dette er mindre end eller lig med. Dette er blot en sjov [uhørligt]. Hvis du vil have den printf at opstå, hvis det er større end eller lig med 0, så du ville vælge dette. Så den lige netop tilføjer ret efter større end tegn. Lig lige, som er forskellig fra kun et lighedstegn svarende lig betyder faktisk, at uanset hvad der er på den venstre side af denne er den samme som hvad der er på den højre side af denne hvor man lighedstegn er hvad? Hvad er blot ét lighedstegn? Overdragelse. LUCAS FREITAS: Hvem sagde det? Er det slik? Åh, nej. Undskyld. Undskyld. Man både får slik. Åh, OK! Tre mennesker får slik! LAUREN CARVALHO: Så denne ene lige her er bang operatør foregående lighedstegnet, så det er ikke lig med. Så hvis dette var inden for min tilstand, kroppen af ​​den tilstand ville udføre, hvis hvad er i venstre er ikke det samme som hvad der er til højre. Jeg kan også have den helt udråbstegn. Faktisk vil vi se på en funktion glide hvordan dette ville blive anvendt. LUCAS FREITAS: Eventuelle spørgsmål? Nej? LAUREN CARVALHO: Vi kan kombinere disse Boolske udtryk til at konstruere mere indviklede betingede udsagn. Så her, hvis hvad er til venstre side af dobbelte søjler eller hvad der er på den højre side af de dobbelte søjler evalueres til sand, så vil vi udskrive ugyldigt. Og derefter ned her, hvis uanset s på venstre side af de to ampersands og hvad der nu er til højre side af de to-tegn evalueres til sand, så vi vil printe ud gyldig. De dobbelte stænger kaldes logiske OR operatør dobbelt-tegn er kaldes logisk OG operatør. Ja? PUBLIKUM: Er de bare lavere sag l's? LAUREN CARVALHO: Nej. De er faktisk - du kender bagslag, ligesom over din Return tasten? Kan du se det? LUCAS FREITAS: Det er faktisk en bar. LAUREN CARVALHO: Det er faktisk blot to barer. PUBLIKUM: Kan du bruge lige lige for strygere? LUCAS FREITAS: Nej. Vi kommer til at lære senere noget om det. LAUREN CARVALHO: Der er en funktion som du kan bruge. Men du behøver ikke at bange for, at netop yet. Hvad hvis jeg giver dette program nummer 5? Hvad vil udskrive? PUBLIKUM: [uhørligt] gyldig. LAUREN CARVALHO: Gyldigt? Ja. Jeg ved ikke, hvem der fik det. [Latter] LAUREN CARVALHO: Det er lidt skræmmende [uhørligt]. PUBLIKUM: Så det dobbelte, og det betyder bare, og? LAUREN CARVALHO: Ja. Så nummer 5 er både større end 0 og mindre end 100. PUBLIKUM: Hvorfor ville det være en? LAUREN CARVALHO: One-tegn er faktisk noget andet, og det er en bitvise operatør, som du vil lære om senere. Men det er noget, der faktisk fungerer med bit med et givet tal. LUCAS FREITAS: Tænk de ikke at bekymre dig om det for nu. LAUREN CARVALHO: Jeg synes det er sandsynligvis kommer op i næste uge. LUCAS FREITAS: Andre spørgsmål? Nej? LAUREN CARVALHO: Så vi har set, at en det blokere kan stå alene, men det kan også blive parret med og ellers blok. Så i dette tilfælde, hvis n er større end 0, vi kommer til at udskrive "Du plukket et positivt tal. "andet, hvilket betyder, hvis det er 0, eller hvis det er mindre end 0, vi kommer til at udskrive, "Du valgte et negativt tal." Det interessante her er, at disse er eksklusive hinanden. Der er aldrig vil være et tilfælde hvor denne og dette både kan printe ud. Jeg er sikker på, du har arbejdet med, hvis / andet Box i Scratch, så det bør være . temmelig velkendt Ja? PUBLIKUM: Har vi brug for plads mellem int n er lig GetInt derefter plads i hvis erklæring? Ligesom vi bruger en linje [uhørligt] LAUREN CARVALHO: Åh, den plads her? PUBLIKUM: Ligesom det, men du fordoble plads. Nej, gå op. Gå op. LUCAS FREITAS: Bare linjen? PUBLIKUM: Ja. LUCAS FREITAS: Bare den tomme linje? PUBLIKUM: Ja. LAUREN CARVALHO: Blank linje? Nej. Det er bare et stilistisk ting. LUCAS FREITAS: Det er ligesom nogle gange du bare springe nogle linjer, så at koden ikke ligner en stor blok af tekst. LAUREN CARVALHO: Jeg tror, ​​hvad der skete var, at vi havde en kommentar her, men jeg tog det ud, så du fyre ville have at tænke på koden snarere end lige læst min kommentar. I almindelighed afstand vil ikke rigtig påvirke den måde, dit program kører. Det er mere af en stilistisk ting. Og når vi har den stil guide opdateret og klar til at gå i slutningen af supersection, vi vil tale om det mere. Der er noget galt med dette program, ikke? Fordi 0 er ikke rigtig et negativt tal. Så lad os se om vi kan løse det. Du kan sikkert forestille med dette, siger, ikke? Hvis n er større end 0, vi udskriver "Du plukket et positivt tal. "Så ellers hvis n er mindre end 0, "Du valgte en negativt tal. "andet," Du valgte 0 ". Nu interessante er, at dette kunne blive ved for evigt. Du kan have en hvis blok, et andet, hvis blok, en anden else if blok, ellers hvis ellers hvis ellers hvis ellers, dybest set så længe du ønsker. Og når konstrueret som dette, disse er alle kommer til at være udelukker hinanden. Ja? PUBLIKUM: Så hvorfor kan du ikke bare bruge anden, hvis i stedet for [uhørligt]? LAUREN CARVALHO: I dette tilfælde, ja jeg kunne bruge en anden, hvis og det ville være helt fint, fordi betingelser selv er udelukker hinanden. Men hvis betingelserne ikke var eksklusiv af hinanden, vil dette tvinge dem til aldrig begge vurdere, hvis det giver mening. PUBLIKUM: I så fald kunne vi reden det andet, hvis det første, hvis? LAUREN CARVALHO: Hvis - hvad mener du? PUBLIKUM: Hvis de to betingelser udelukker ikke hinanden? LAUREN CARVALHO: Hvis betingelserne udelukker ikke hinanden? Men du vil kun én af dem til at køre? PUBLIKUM: Du vil bare hvis i stedet for andet. LAUREN CARVALHO: Ja. Der er altid vil være masser måder, du kan gøre dette. Du kan helt sikkert reden dem. Og du vil se i en fremtidig dias, du kan have flere hvis'er, blot én efter den anden. Men dette er en måde logisk organisere strømmen af ​​dit program. LUCAS FREITAS: Og der er en mere ting er, at du spurgte om at sætte hvis og derefter en anden, hvis. Det ville fungere perfekt, men det er dårligt design, fordi dybest set, hvis du kontrollere først, hvis, og du bemærker, at nummeret er større end 0, du kan bare afslutte programmet. Du behøver ikke at kontrollere, om det er mindre end 0, right? Men hvis du, hvis, hvis det kommer til at kontrollere begge, mens hvis jeg gøre, hvis andre er, det kommer til at kontrollere, om det er større end 0. Hvis det er, er det ikke kommer til at selv se på de andre linjer i koden. Så du dybest set at kontrollere det som to gange unødigt, så det er derfor vi gøre, hvis ellers hvis. Andre spørgsmål? PUBLIKUM: Så funktionaliteten af andet, hvis er den samme som hvis det var bare om? LAUREN CARVALHO: Nej. Du er faktisk kommer til at se i min næste glide et eksempel, hvor det kan være anderledes. I dette tilfælde er det næsten det samme. Så her har vi et eksempel på flere hvis udsagn, og funktionalitet er ikke det samme som om jeg lige havde sagt, hvis ellers hvis ellers hvis ellers. Lad os bare tænke over, hvad der ville udskrive ud af, om jeg indtaste nummeret 95 i dette program. PUBLIKUM: [uhørligt] LAUREN CARVALHO: Og hvad så? PUBLIKUM: [uhørligt] LAUREN CARVALHO: Ja. Så i dette tilfælde, er disse betingelser er ikke gensidigt udelukker hinanden. Og fordi der er intet stoppe denne betingelse fra at vurdere, om dette man allerede har, de er bare alle kommer til at printe ud. Så hvordan kan jeg løse dette? PUBLIKUM: else hvis'er? LAUREN CARVALHO: Du kan bruge ellers hvis'er. Jeg kunne ændre rækkefølgen af disse, right? Hvis jeg gjorde dette ene først? Tja, faktisk, nej. Det ville ikke fungere for 95. LUCAS FREITAS: Nej, bare de ellers hvis'er. LAUREN CARVALHO: Den ellers IFS ville have fastsat dette. Betyder at rydde op i forvirringen mellem IFS og ellers hvis'er? PUBLIKUM: Jeg ville bare spørge dig, hvis du har brugt andet, hvis, vil det stoppe? LAUREN CARVALHO: Right. Så kun denne første. Hvis jeg kom ind i nummer 95, men denne ville have trykt ud, og det aldrig ville have nået til det andet. LUCAS FREITAS: Lige slags tænker på det, som om det sker, skal du gøre dette. Det andet er ligesom hvis ikke, kontrol til dette, og derefter gøre det. Så ligesom de alle er gensidigt eksklusiv. Du kan ikke komme ind i to over dem. PUBLIKUM: Kan man bruge en logisk Og for den situation? LAUREN CARVALHO: Ja. Det er en anden måde, at vi kunne har løst dette problem. Vi kunne have defineret spænder, right? Så jeg kunne have sagt, hvis n er større end 90 og mindre end - Nå, jeg tror denne ikke rigtig noget, men her kunne jeg have sagt, hvis n er større end 80 og mindre end 90. Større end 70, er mindre end 80 år. Det ville også have virket. [Latter] LUCAS FREITAS: Hun er bange. LAUREN CARVALHO: Må ikke være bange. LUCAS FREITAS: Det er ikke at det vil være forkert. Det er bare, at det er unødvendigt verbose. Ligesom i datalogi, bør man være så enkel som muligt, så længe du har funktionaliteten. Vil du have slik? PUBLIKUM: Har ikke brug for det. LAUREN CARVALHO: Du skræmmer alle, Lucas. LUCAS FREITAS: Undskyld. LAUREN CARVALHO: David også nævnt disse skifter erklæring i klassen. Dybest set, hvad der foregår, er kontakten sætning tager en variabel. I dette tilfælde tager vi et heltal. Hvis heltal er 1, vil vi udskrive, "Du valgte en lille nummer. »Hvis tal er 1," Du plukket en mellemlang tal. "Hvis heltal er 3, "Du valgte en høj nummer ". Og jeg havde også en standard sag hernede, men det er ikke at vise op, hvilket er for dårligt. Dybest set er dette blot en anden syntaks. Vi kunne have gennemført denne eksakt samme med hvis og andet, hvis udsagn. Men når der er masser af forskellige betingelser og masser af forskellige variationer på hvad du vil gøre for hver indgang, er dette en mulighed. Så det er bare en god syntaks at vide. Ja? PUBLIKUM: Hvorfor er der ikke en omvendt skråstreg n i den første? LAUREN CARVALHO: For deroppe? Der er ingen backslash n deroppe fordi GetInt - hvis du forsøger dette, vil det give dig denne prompt. Giv mig et helt tal mellem 1 og 3. Og hvis jeg sætter modreaktion n, ville det tage mig til næste linje, men jeg bare ville have dem til at skrive heltal lige efter kolon. Du kunne have sat bagslag n. Det er ikke en big deal. Ja? PUBLIKUM: Til denne kode, er dette tilfælde, er, at fordi det er den første sag? Fordi - LAUREN CARVALHO: Nej, nej, nej. Så dette er at give mig et heltal mellem 1 og 3. Hvis n er 1, jeg udskrive denne. Hvis jeg havde bedt om breve, jeg kunne have sagde giv mig et bogstav mellem A og C. Så dette ville være tilfældet A. PUBLIKUM: [uhørligt]. Sagen ville bare [uhørligt] LAUREN CARVALHO: Ja, rigtigt. Ja? PUBLIKUM: Hvad hvis du ønskede at have mere af en relationel udtryk? Så i stedet for at sige n er lig med 1, [uhørligt] n er større end 1 i den første sag? LAUREN CARVALHO: Faktisk, hvis jeg ikke definere nogle af disse tilfælde ville dette skal bære ned. Så faktisk, måske er det ikke hvad du spørger. LUCAS FREITAS: Jeg tror, ​​hun spørger, om sagen var n større end 0, sag mindre end 0. LAUREN CARVALHO: Måske kontakten erklæring er ikke rigtig, hvad du ønsker til brug i denne sag. LUCAS FREITAS: Den switch-statement er bare for værdi, så du tjekker af værdien er ligesom dette eller hint. Så kan du faktisk ikke sætte betingelser. PUBLIKUM: Hvad hvis personen typer med [uhørligt]? LAUREN CARVALHO: Det ville have været min standard tilfælde, som desværre du ikke kan se. LUCAS FREITAS: [uhørligt] gøre dem se. LAUREN CARVALHO: Faktisk ved du hvad? Lad os bare gå for at studere 50, og jeg vil bare zoome ind på dias på undersøgelse 50, fordi det er bare irriterende. Så lad mig faktisk gå til tilstand. Det er bare at tage lidt tid. Ok. Så jeg er ked af det. Mindst nu vi vil være i stand til at se alt uden at afskære. Ok. Så hvis de sætter i en 10, ville vi som standard her til min standard sag, og jeg ville bare udskrive ugyldig, fordi jeg bedt dem om at indtaste et heltal mellem 1 og 3. Andre spørgsmål? Ja? PUBLIKUM: Lad os sige, for tilfælde af en sag tre, siger du ville have det til at være alle de samme ting, så du valgte en række det er ikke et medium tal. I så fald ville det være overflødigt? Vil du bare ændre teksten i både af dem, eller vil der være nogle redundans? Er der nogen måde at kombinere [Uhørligt]? LAUREN CARVALHO: Der er måder at kombinere dem, men jeg tror du kan kun kombinere hosliggende. Så hvis jeg ikke definere noget i tilfælde to, vil dette gælder for begge tilfælde. Åh, hvis jeg ikke sætte noget til sagen en, ville dette gælde for både tilfælde et og to. Hvis det giver mening. PUBLIKUM: Kan du gentage det en? LUCAS FREITAS: OK. Hvis du gjorde dybest set, ligesom, du har de samme ting, men du behøver ikke sætte noget her, ville du være enten Hvis en eller tilfælde to, gøre dette. Right? Og denne pause betyder, at hvis du får i dette tilfælde bare lade. Så det er hvad bremsen betyder. Så hvis jeg bare gjorde det, du ser, er det tilfælde en, og du vil bare gøre dette. Hvis det var tilfældet to, ville det også bare komme her og gøre det. PUBLIKUM: Men du kan gøre det? Hvis der er noget for tilfælde to [uhørligt] LAUREN CARVALHO: Jeg tror ikke på du kan gøre det. Jeg tror ikke, du kan springe rundt. Kan du gøre det, Rob? Det tror jeg ikke. PUBLIKUM: Så kun ét nummer kan gå efter en sag, right? Der kan ikke være tilfældet et, komma, to? LUCAS FREITAS: Nej, det kan du ikke. Du kan bestemt ikke. LAUREN CARVALHO: Jeg mener, pointen er dette er en mulighed, og det er ikke måske passer til din use case, så du derefter ville bruge, hvis forholdene. PUBLIKUM: Så hvorfor skulle du gøre det? Kontakten? LAUREN CARVALHO: Jeg vil bruge dette hvis du har meget definerede - faktisk, Lucas, er du blokerer. LUCAS FREITAS: Åh, undskyld. LAUREN CARVALHO: Hvis du har meget definerede adfærd, du ønsker til hver indgang, kan dette være en lidt mere kortfattet end at skrive ud en if-sætning for hver enkelt. PUBLIKUM: Hvad gør pause betyder igen? LAUREN CARVALHO: Pausen betyder stoppe. Husk, at hvis jeg ikke havde denne pause her, ville vi lige har faldet ned ind i det næste tilfælde. LUCAS FREITAS: Break midler til at få ud af switch-statementet. For hvis det er 1, vil jeg at udskrive denne og forlade. Jeg ønsker ikke at kontrollere noget andet. PUBLIKUM: Du ønsker ikke at udskrive noget andet. LUCAS FREITAS: Ja. Fordi det er gensidigt udelukkende. PUBLIKUM: Og betyder det kun fortsætte til næste tilfældet, hvis det første tilfælde er ikke sandt? Eller er det teste alle de tilfælde, på samme tid? LUCAS FREITAS: Nej, det kontrol sekventielt. Sekventielt, ja. Endnu et spørgsmål, så er vi nødt til at videre, så vi kan dække alt. Ja? PUBLIKUM: Så for sagen, kunne have gjort noget udover bare den ene? Kunne du give det en rækkevidde? LUCAS FREITAS: Nej. LAUREN CARVALHO: Jeg tror ikke, kan du give det et område. LUCAS FREITAS: Du kan du ikke kan ikke give det et område. PUBLIKUM: Sagen er specifik [Uhørligt]. LUCAS FREITAS: Switch er en slags værdier. Du laver forskellige ting, afhængigt på en værdi, en bestemt værdi. Du kan ikke gøre for rækkevidde, kan du ikke gøre noget andet. Det er bare endnu et værktøj til at se. LAUREN CARVALHO: De fleste mennesker ikke bruger skifte udsagn meget i CS50, men det er der. Ok. Så den næste ting vi kommer til at snakke om, er den ternære operatør. Dette er blot en anden type betinget. Dybest set, hvad der foregår her, er jeg beder om et tal, og hvis n er større end 100, jeg har tænkt mig at udskrive "Høj". Hvis det ikke er, vil jeg udskrive "lav". Så hvad det gør, er betingelsen er lige her i parentes, og du kan slags tænke på spørgsmålet da jeg spørger, om dette er sandt eller ej. Hvis det er sandt, vil jeg gøre det først ting, og hvis det ikke er sandt, jeg er kommer til at gøre denne anden ting. Eventuelle spørgsmål om ternære operatør? LUCAS FREITAS: Blot ønsker note fra David er, at når du har en betingelse - LAUREN CARVALHO: Jeg gætter Davids ser via live stream. LUCAS FREITAS: Han laver life stream lige nu. Så når du har en tilstand, du formodes at sætte krøllede parenteser, ligesom vi har i en switch erklæring her. Vi har krøllede parenteser her. For uanset betingelser, er du formodes også at sætte det. LAUREN CARVALHO: Du vil se dette i stil guide. Vi behøver faktisk ikke have den styleguide lige nu. Jeg tror Davids stadig arbejder. LUCAS FREITAS: Han sagde, at det er bare at arbejde nu. LAUREN CARVALHO: Åh, er det til at virke nu? OK. Så tilsyneladende dette år i den stil guide, selv hvis du bare har en linje, you got at sætte dem krøllede parenteser i. Du behøver ikke nødvendigvis at for funktionaliteten af ​​programmet. Og måske skulle vi bare tage en pause efter de betingelser og gå lige til den stil guide for at rydde op på nogle af disse ting? LUCAS FREITAS: Ja. Har du et spørgsmål? PUBLIKUM: Nej, jeg vil bare vente indtil den stil guide. PUBLIKUM: Kan du gå tilbage til den ternære operatør? LAUREN CARVALHO: Ternary, ja. LUCAS FREITAS: Ternary operatør er dybest set en hvis ellers erklæring, men i stedet for at skulle have de to linjer at kontrollere en hvis og derefter andet, du bare har én linje. Så dybest set, hvis jeg ønsker at give en streng en værdi på høj eller lav, og jeg ønsker at gøre en høj, hvis n er større end 100 eller lav, hvis det er mindre, hvad jeg kan gøre er dette [uhørligt] strengen vil være, og så er jeg spørger programmet er n større end 100? Så det er derfor, jeg har dette udtryk i parentes og derefter spørgsmålstegnet. Jeg beder det større end 100? Hvis det er, går det at være høj. Hvis det ikke er, går det at være lav. Så dybest set, hvad du synes er du spørger et spørgsmål, så du lægger i parentes tilstanden. Så kan du sætte spørgsmålstegn fordi du spørger det. Og hvis dette er sandt, vil det være i den første værdi [uhørligt] her. Hvis det ikke er, vil jeg sætte værdi, der er efter kolon. Giver det mening? Det er også noget, der er som en værktøj i C, men du behøver ikke at specifikt bruge det. Men CS folk normalt kan lide at fordi det bare sparer linjer. LAUREN CARVALHO: Det er meget elegant. Det gør en masse i bare én sætning. PUBLIKUM: Så procenttegn er bare uanset resultater på den foregående linje? LAUREN CARVALHO: Åh, jeg er ked af det. Denne procent tegn er faktisk pladsholder for denne s. I en printf erklæring, du har fået denne snor her, hvilket er, hvad der kommer til at udskrive, men du kan ikke bare sætte dette er derinde. Ellers ville det udskrive ud s bogstaveligt. Så vi sætter en procent her til at holde dette sted holdt uanset kommer efter kommaet. Så for en streng, har du fået procent sek. For et heltal, procent i. For en svømmer, procent f.. Du vil se dem, som vi se flere eksempler. Men måske skulle du snakke om stil guide for en stund, nu at det er op. LUCAS FREITAS: Hvis du går til cs50.net/style, du kommer til at se den stil guide. For problemet sæt, din score for problem sæt består af omfang, som dybest set betyder, at hvis du gjorde alt de dele af problemet, der er, eller hvis du forsøgt noget. Den anden ting er korrekthed, som middel er dit program gør, hvad den skulle gøre, eller gør det har fejl, eller er det ikke gør, hvad det er meningen at gøre. Den tredje ting er design, hvilket betyder er du gennemføre dette godt, eller er du bruge unødvendige udsagn? Så for eksempel, hvis du ønsker at gentage et nummer 10 gange, skriver du et for loop eller er du bare gør 10 gange den samme erklæring, bare gør kopiere og indsætte. Så design er for det. Og endelig har du stil. Style er ligesom at dømme hvis din kode ser læsbar og slags smuk. Det bare dybest set betyder er din kode læsbar? Ville en anden, der var på udkig er din kode være i stand til at forstå, hvad det gør? Har det har kommentarer og lignende? Lad os tale om den stil, du skulle bruge. Den første ting er kommentarer. Kommentarer er meget vigtigt for din kode, fordi nogle gange du laver dit program, og du ved præcis, hvad du ønsker at gøre, så du bare begynde kodning, bare skrive op en flok C. Men hvis en anden leder er du kode, er de ikke kommer til at være i stand til forstå det, fordi de ikke kender de ting, der er i dit hoved, ligesom den pesudocode, så måske vil de har en hård tid at forstå hvad koden gør. Så kommentarer er virkelig nyttigt at forklare til nogen, der kigger på din kode, hvad det gør, og faktisk selv for dig, de er meget nyttige. Som du gå til hårdere og hårde Psets, du kommer til at se, at koden bliver længere tid, og så kommentarer er virkelig vigtigt, så du kan huske, hvad hver del af dit program gør. For at sætte en kommentar, kan du bare gøre en skråstreg skråstreg og derefter skrive en kommentar. Og hele linjen er en del af en kommentar, og uanset hvad du skriver ned, det kommer ikke til at være bruges til din kode. Det er dybest set ligesom oversætteren kommer til at se bort fra dette. Giver det mening? PUBLIKUM: Hvad gør du igen at skrive en kommentar? LUCAS FREITAS: dette? Skråstregen skråstreg? Når du skriver slash slash, uanset er i denne linje ikke vil anses for at være C. Ja? PUBLIKUM: Så efter den kommentar, du bare ind og starte en ny linje? LUCAS FREITAS: Ja, præcis. LAUREN CARVALHO: Den skråstreg skråstreg er for enkelt kommentarer linjer. LUCAS FREITAS: For eksempel, her har vi - lad mig zoome ind - for eksempel, her er jeg erklære en float, men måske hvis du bare sætte dette i din kode, ligesom du har ingen idé hvad det gør, ligesom faktisk en person, der ser på denne kode bliver, som, hvad dælen foregår der? Hvis du sætter en kommentar siger "konvertere Fahrenheit til Celsius, det gør meget mere mening. Du er ligesom, OK, du er laver en konvertering. Giver det mening? Så det er bare noget, der hjælper folk klar din kode og også gøre du være i stand til at organisere din kode bedre. Den anden ting er, at du kan gøre multi-line kommentarer, så har én kommentar til en flok af linjer. I stedet for at skulle sætte skråstreg skråstreg, Den første linje kommentarer, skråstreg skråstreg, den anden linje, og så videre, du kan bruge skråstreg stjerne. Den måde, du gør det er, at for den første linje af den kommentar, er du kommer til at gøre en skråstreg stjerne stjerne, så ligesom det. Ligesom her har vi i starten af et program, du plejer at lægge, hvem du er, hvad dette program gør, og den slags. Det er lidt ligesom en header for programmet. Igen, det er ikke noget, at en compiler vil bekymre sig om, men er det vigtigt for dig at vide, hvad dette Programmet gør, eller for andre mennesker at vide, hvad dit program gør. Så du behøver slash stjerne stjerne, og derefter sidste linje, du kommer til at gøre stjerne slash at være i stand til at lukke denne kommentar. Så dybest set for alle de andre linjer, du kan bare skrive hvad, og dette er alle kommer til at blive ignoreret. Og også, ligesom stil, du se, at hver linje har en stjerne, og alle stjernerne er justeret. Det er vigtige ting, så at din kode ser temmelig. Lyder godt? Nu betingelser. Hvad David sagde, at vi skulle faktisk sat i disse dias, er, at når du har nogen form for hvis udsagn eller nogen form for betingelser, du skal bruge krøllede parenteser for at vise, at dette er, hvad der kommer til at ske når du har den betingelse. Teknisk, når du har en tilstand og derefter den næste linie er blot en linje, behøver du ikke teknisk har at sætte de krøllede parenteser. Dybest set compiler ville forstå det alligevel som implicit. Men for CS50, beder vi jer til at sætte de krøllede parenteser bare så din kode er mere organiseret og mere læsevenlig. Fordi denne kode bliver længere, hvis du ikke har krøllede parenteser og sådan. Det bliver virkelig rodet. LAUREN CARVALHO: Dette er præcis hvad David netop påpeget i mine tidligere dias. Det helt fungerer uden krøllede seler, men for stilistiske årsager vi vil bede om, at du sætter dem i. Og når du begynder at køre style50, som er form for check 50 for stil, vil det minde dig om at gøre dette. LUCAS FREITAS: Og en anden ting er husk at sætte de krøllede parenteser sammen i hver linje. Så du gør det, for eksempel L's. Gå til næste linje, skal du åbne krøllede klampe, så skal du gå til næste linje. Fordybning, hvilket er fire rum. Så kan du skrive hvad, så en anden linje, og luk klammeparentes. Så vær sikker på, at både de krøllede seler er i forskellige linjer. PUBLIKUM: Så hvis denne kode havde ligesom 10 ellers hvis'er, bør dette være 10 sæt af beslag? LUCAS FREITAS: Ja, for hver af dem. Ja. Så hvis ellers hvis, og så videre. PUBLIKUM: Kan du ikke trykke på Tab for at indrykke? LUCAS FREITAS: Vi beder dig fyre til at bruge fire rum. Nogle teksteditorer oversætte fane som fire rum automatisk. gedit ikke gør det, så er du nødt til gøre space space space space. Det er også noget, at nogle programmører kun gøre faner, nogle programmører kun gøre fire rum, og nogle andre mennesker endda gøre to eller tre rum. Det er bare, at her vi beder jer at gøre fire rum. PUBLIKUM: Der er næsten helt sikkert nødt til at være en måde for gedit til automatisk [uhørligt]. Ligesom ingen [uhørligt] gør det. LUCAS FREITAS: Ja. Jeg tror, ​​du kan gå til Indstillinger. PUBLIKUM: Det allerede gør alt dette. LUCAS FREITAS: det allerede gør? OK. Så bare være sikker på, at du har fire rum. PUBLIKUM: Har vi nødt til at sætte det krøllede parentes i efter sløjfer så godt? LUCAS FREITAS: Ja. LAUREN CARVALHO: Når din indkapsling af en blok af kode, bare skal du bruge de krøllede parenteser. Og før du tror, ​​at vi bare være sticklers om dette uden god grund, hvis du fyre går på at få tech praktikophold hos store virksomheder, de vil give dig en stil vejledning, og de vil fortælle dig det er, hvad din kode for at se ud. Og selvom du har lært at kode som dette, måske i din praktik du bliver nødt til at gøre noget helt anderledes. De forventer du at være i overensstemmelse til deres stil. LUCAS FREITAS: Og en ting mere, er som bemærker du, hvordan jeg har ligesom x, plads, mindre, plads, 0? Når du har en operatør - Det kan være som plus, minus, gange, mindre, større, uanset operatør - du nødt til at sætte en plads på venstre og til højre for føreren. LAUREN CARVALHO: Det er kaldet binære operander. Bare sørg for at du altid plads ud af dine binære operander. LUCAS FREITAS: Dette er ikke en binær operand. LAUREN CARVALHO: Det er fordi det tager to. LUCAS FREITAS: Åh, ja. OK, kontakterne. Først skal du nødt til at se, at ligesom i en hvis ellers erklæring, du har at sætte klammeparentes på sin egen linje og under klammeparentes her. Bemærk, at der er et enkelt mellemrum efter kontakt, ligesom i hvis og ellers Vi havde en enkelt plads mellem det, og parenteserne. Så du er nødt til at sætte det. Og der er ikke plads lige efter hver af parenteser eller inden af parenteser. Så du kan se, at det er alle sammen, og også gerne op her. Ja? LAUREN CARVALHO: Jeg tror vi nødt til at flytte på. LUCAS FREITAS: Så dette er en del af stil guide, som du har til CS50. Sørg for at gå til cs50.net/style og tage et kig på dette. Disse er alle meget vigtige til din stil score. Lad mig gå tilbage til den erklæring. LAUREN CARVALHO: Jeg vil hellere bare bruge style50. Vi vil bare gå lige til sløjfer. Ok. Så lad os komme tilbage til indholdet, nu at vi har gået over styleguide. Loops, har du set dem i Scratch, og vi kommer til at tale om dem i C. I en for-løkke, der er tre portioner til angivelse af denne for-løkke. Du har fået din initialisering i som du sætter dine variabler. Du har fået din tilstand, som er kontrol for at se, om noget er sandt eller falsk, og om loop bør fortsætte. Og du har fået din opdatering, som opdaterer dine variabler. Lad os bare tage et hurtigt kig på nogle C-koden i denne for-løkken i aktion. Hvad foregår der er her i initialisering, vi sætte i til 0. I den tilstand, vi tjekker om jeg er mindre end 10. Og i opdateringen er vi forøgelse i. Så hvad vil medføre dette for loop? LUCAS FREITAS: Faktisk først og fremmest, tror du fyre vide, hvad jeg + + er? PUBLIKUM: steg med 1. LUCAS FREITAS: steget med 1, ja. Så dette er det samme som laver jeg lig i plus 1. Og bemærk, at vi ikke har en plads mellem I og + +. Så tror du fyre ved, hvad det vil gøre? Kan nogen fortælle mig? Og måske få noget slik på grund af det? PUBLIKUM: [uhørligt] LUCAS FREITAS: OK. [Uhørligt] vise alle, senere [uhørligt]. Ja, det kommer til at vise "Dette er CS50 "10 gange. LAUREN CARVALHO: Jeg tror det var i titlen på diaset. LUCAS FREITAS: Åh, ja. [Latter] LUCAS FREITAS: Det hjælper. LAUREN CARVALHO: Så dem er efter sløjfer. Vi kommer til at se nogle flere eksempler af efter sløjfer senere. Men lad os faktisk tage et kig på anden type af sløjfe, som du vil støde på i C, og det hedder while-løkken. I en while-løkke, du har lige fået en betingelse. Betingelsen er markeret i begynder, og hvis denne betingelse evalueres til sand, så koden i krop, mens blokken vil udføre. Og koden vil fortsætte med at udføre, så længe der betingelsen forbliver sandt. Her er et eksempel på en while-løkke i C. Vi kommer til at sætte tæller til 10 til begynde med. Så længe tællingen er større end 0, vi kommer til at holde udskrive dette variabel her. Vi kommer til at formindske tæller og derefter kontrollere tilstanden igen. Print, formindske, kontrol tilstanden igen. Her har vi et eksempel, der relaterer på dit spørgsmål tidligere. Vi havde procent s da vi var udskrive en streng, og nu, vi udskrive en int, vi har en procent i som vores pladsholder stedet for. Bogstaverne bør alle være temmelig intuitiv, S for streng, i for int. Så hvis denne kode henretter, bør du tælle ned fra 10 til 0, udskrivning ud hvert heltal. LUCAS FREITAS: Og du kan tænke på procent så det føles som en tom plads, og så er du sætte dette variabel her i det tomme rum. Altså for eksempel, her vil jeg lige har en tom, og så er jeg sætte tælle lige der, den værdi af optællingen. Giver det mening? Kunne jeg bare gøre ligesom printf og derefter citerer, tælle? Ville det fungere? PUBLIKUM: Nej. LUCAS FREITAS: Nej, fordi det vil faktisk udskrive ordet "count" stedet for at udskrive værdien. Dette er, hvordan du gør det udskrive værdierne mod den variable i stedet for blot navnet på variablen. Eventuelle spørgsmål? PUBLIKUM: Hvorfor bruger du til som en modsætning til mens? LAUREN CARVALHO: Jeg ville bruge en til loop, hvis jeg ved præcis, hvor mange iterationer, jeg ønsker mit loop til at køre. I dette tilfælde betyder det ikke noget, fordi, Jeg mener, jeg prøver bare at tænke på en meget simpel eksempel på dette dias. Men lad os sige, at du vil have noget til at holde ud, mens - LUCAS FREITAS: For eksempel, er du beder om input, indtil personen giver dig den rigtige indgang. Så ligesom mens indgangen er ikke OK, holde beder om det. Eller som, mens du er forældre ikke giver dig penge, holde beder om det. [Latter] LAUREN CARVALHO: Du ved ikke, hvordan mange gange er du nødt til at gøre det. LUCAS FREITAS: Fordi du ikke gøre vide, hvor mange gange der er kommer til at holde i gang. LAUREN CARVALHO: Men i en for-løkke, du har brug for at vide, hvor mange gange. Ja? PUBLIKUM: Bare for at afklare, procent siger, at det er noget om at ske, i'erne for heltal, og backslash n - LAUREN Carvalho: Midler? Hvem ved, hvad det backslash n betyder? Ny linje, ja. Præcis. LUCAS FREITAS: Du kan tænke n som ny linje. LAUREN CARVALHO: Nice. PUBLIKUM: Hvad er det tæller dash dash [uhørligt]? LUCAS FREITAS: Count minus minus er det samme som plus plus, men stedet for at øge, det er faldende med 1. LAUREN CARVALHO: Enhver mere mens loop spørgsmål? Nej? Åh, vi skulle har sprunget over. Dette er en gør mens løkke. Meget lig en while-løkke, undtagen i dette tilfælde har vi kontrollere tilstanden efter koden i kroppen af loop udfører én gang. Så vi udføre koden først uanset hvad. Så tjek vi den betingelse, udføre det igen, hvis betingelsen er sand. Du vil finde dig selv at bruge dette, når du beder om brugerens input. Fordi du altid er nødt til at bede gang, og derefter afhængigt af, hvad brugerinput er, at du måske nødt til at reprompt og spørge igen og igen, hvis input var ikke, hvad du forventes det at være. PUBLIKUM: Så det er ligesom en formular for folk til at udfylde. LAUREN CARVALHO: Ja, præcis. Du kan finde, tror jeg, i din allerførste PSET, du nødt til at bruge en gør godt løkke til at indsamle input fra brugeren. PUBLIKUM: Afhængigt af situationen, at din mens loops vil være tilbøjelige til at køre mere ofte end mens loops, som af en eller noget? LAUREN CARVALHO: Hvis det er det nøjagtige - LUCAS FREITAS: De bør altid køre det nøjagtige beløb af gange, at du vil have den til at køre. Ligesom vi bruger gøre, mens fordi vi virkelig ønskede at få input mindst én gang. I mens loops, undertiden du ikke ønsker at udføre det på alle, hvis det ikke er sagen til at udføre. Så det afhænger af udformningen. Jeg mener, kan du enten bruge gøre, mens eller mens så længe din kode gør det det er meningen at gøre. LAUREN CARVALHO: Men jeg gør tror, ​​at svaret på dit Spørgsmålet er sandsynligvis ja. Lad os sige tilstand var falsk. I et tilfælde ville det løbe én gang, og et andet tilfælde ville det løbe nul gange. Så, ja. Har du flere spørgsmål? Ja? PUBLIKUM: Kan løkken betingelsen være en for loop i form af en anden variabel end [uhørligt]. LAUREN CARVALHO: Ja, Det kan være alt. Sandsynligvis for begyndelsen Psets, du vil ikke have at støde på sagen, men absolut det kan være hvad som helst. LUCAS FREITAS: Jeg tror vi er færdige her. LAUREN CARVALHO: Er vi? Nej? LUCAS FREITAS: Loops? Ja. LAUREN CARVALHO: Vi skal ikke være. Åh, vi er gjort med sløjfer. OK. Faktisk, fordi vi har talt så meget, lad os faktisk alle navigere over til study.cs50.net/conditions. Og du kommer til at navigere ned til problemerne widget. Tja, faktisk, mens folk bliver dette sat op, CS50 Study er kommer til at være et værktøj, dine TFs vil bruge til at forberede sig til sektioner, og at du fyre kan bruge, hvis du går glip af sektioner. Det kommer til at indeholde en masse af dias, nogle tips og tricks til hver emne, og nogle praksis problemer løsninger. Hvorfor ikke alle bare tage et kig på dette problem lige her. Undskyld, jeg skulle have mindet folk at bringe laptops i dag. Men hvis du ikke har en bærbar computer, det er OK. Du kan bare notere det ned på et stykke papir eller kigge over din nabos skulder. Lad os prøve at skrive et program, der beder brugeren om at tage et gæt, den gennemsnitlige antal børn pr familie enhed i USA. Dette antal er 2, ved den måde, som du kan se fra disse eksempler. Vi ønsker at udskrive gennemsnitlige antal børn pr familie i USA, så vi ønsker at hvad? Vi ønsker at samle input fra brugeren. Og derefter afhængigt af, hvad brugeren input er, du vil udskrive enten dette er korrekt eller det er forkert. Og det allerførste ting, du vil se, hvis du klikker på den lille pil ved bunden af ​​problemet widget er en spot at notere ned nogle pseudokode. Så du ikke programmering endnu. Du er bare at få din ideer i orden. Er der nogen der ønsker at hjælpe Lucas komme op med den rigtige pseudokode for dette problem? LUCAS FREITAS: Hvad er den første ting at vi sandsynligvis skal gøre her? Hvad tror du fyre tror? PUBLIKUM: [uhørligt] LUCAS FREITAS: Yeah, OK. Så print. Bare sige print dette gennemsnit Antallet af mennesker? OK. Print spørgsmål, lad os sige. Når jeg udskriver dette spørgsmål, hvad skal jeg gøre? PUBLIKUM: Få input. LUCAS FREITAS: Få input. Noget andet? PUBLIKUM: Betingelse. LUCAS FREITAS: Betingelse. LAUREN CARVALHO: Hvad er det betingelse kommer til at være? PUBLIKUM: Antallet af [uhørligt]. LAUREN CARVALHO: Right. LUCAS FREITAS: Så hvad skal jeg at kontrollere i den tilstand? PUBLIKUM: Hvis det er lig 2. LAUREN CARVALHO: Hvis det er lig 2. Præcis. LUCAS FREITAS: Er der noget andet, som jeg skal gøre? PUBLIKUM: Tæl. LUCAS FREITAS: Så hvis det er lig med 2, lad os sige - lad mig lige skrive, hvis input er lig til 2, så hvad jeg har tænkt mig gøre er at printe korrekt. Og så ellers, jeg har tænkt mig at udskrive forkert. Noget andet? Nej? LAUREN CARVALHO: Så du kan klikke på - Har alle det ned? LUCAS FREITAS: Giver det mening? Så lad os nu prøve at kode dette. LAUREN CARVALHO: Hvis du klikker på det lille pil, det faktisk gemmer dit pseudokode, som er virkelig spændende. Og du kan gøre dem i kommentarer, hvis du ønsker bare at minde dig selv om hvad de skal gøre. LUCAS FREITAS: Altså for eksempel, første Jeg har tænkt mig at udskrive spørgsmål, så hvordan skal jeg gøre det, egentlig? printf. Så printf, og spørgsmålet er gennemsnitlige antallet af børn pr familie i USA. Så jeg har tænkt mig at få input fra brugeren. Så hvordan kan jeg gøre det? PUBLIKUM: Get Int.. LAUREN CARVALHO: GetInt. LUCAS FREITAS: OK. Så først erklære, right? int, lad os kalde det n er lig GetInt. Og nu den betingelse. Så lad mig sige, at jeg har tænkt mig til her afkrydsningsfeltet svar. Så det første, hvis input, som er n, lig til - hvordan skal jeg skrive det? PUBLIKUM: Lige lige. LUCAS FREITAS: Perfect. Så n. Og bemærk, at jeg gør et rum, lig, lig, plads, sandt. Og nu, hvad skal jeg gøre? Noget meget vigtigt for stil. De krøllede parenteser. Og så har jeg tænkt mig at udskrive. Hvordan udskriver jeg? printf. PUBLIKUM: Kunne det kapitaliseres? LUCAS FREITAS: Nej. Det er meningen at være med små bogstaver. Så det er korrekt. Ville det være tilstrækkeligt for printf erklæring, eller er jeg mangler noget? PUBLIKUM: Ny linje. LUCAS FREITAS: Ny linje, ja. Og nu andet. PUBLIKUM: Er der et rum efter printf eller nej? LAUREN CARVALHO: Vi bør kontrollere den stil guide. PUBLIKUM: Det bør ikke være. LUCAS FREITAS: Bør ikke være OK. Så andet printf "Det er forkert." LAUREN CARVALHO: Ups, din citater. LUCAS FREITAS: OK. Noget andet? Ser det godt ud? LAUREN CARVALHO: Skal vi prøve det? LUCAS FREITAS: Ja, lad os køre den. Så det er kompilering, og det lader til, at det fungerer. Lad os prøve to børn. Det er korrekt. Og lad os nu køre igen, men nu i stedet lægge to børn, lad os sige, at jeg har tænkt mig at sætte ligesom fem. Det er forkert. Så det lader til, at det virker. LAUREN CARVALHO: Hvorfor tager du ikke vise dem hvad sker der hvis du lægger noget weird, ligesom nogle breve. LUCAS FREITAS: Åh, ja. Lad os også kontrollere, at. Hvad hvis brugeren forsøger at rod med dit program, og de bare skrive, ved jeg ikke to. Det kommer til at sige retry. LAUREN CARVALHO: So GetInt beder dem om at prøve igen. Vi havde ikke til at tage sig af at os selv. LUCAS FREITAS: Ja. Så medmindre jeg faktisk sat et tal, er det kommer til at holde beder mig om at prøve igen. PUBLIKUM: Hvordan har du køre det? LUCAS FREITAS: Bare klik denne stjerne knap. LAUREN CARVALHO: Du skal gå op. Værsgo. LUCAS FREITAS: Stjernen knappen lige der. Ja? PUBLIKUM: Er det bede [uhørligt] med decimaltal også? LAUREN CARVALHO: Jeg tror, ​​det vil. LUCAS FREITAS: Hvis det gør hvad? LAUREN CARVALHO: Hvis de skriver i et decimaltal, tror jeg det kommer til at bede. LUCAS FREITAS: Lad os se. LAUREN CARVALHO: Fordi det er ikke en int. LUCAS FREITAS: Ja. LAUREN CARVALHO: Så det det er ikke en int, Få Int vil bede dig om at prøve igen. PUBLIKUM: Så hvor i koden ville være decimaler, der beder bruger, at de har til at indtaste et heltal specifikt? LAUREN CARVALHO: GetInt er faktisk at gøre det for os. PUBLIKUM: Nej, jeg mener, hvis vi ønskede at indtaste [uhørligt] LUCAS FREITAS: Du kan sige som gennemsnit Antallet af børn i USA. Det ved jeg ikke. Vi kan sige, for eksempel, "Please input et heltal. " LAUREN CARVALHO: Et heltal lige til det gennemsnitlige antal. Jeg mener, det er bare hvordan du ord det, right? LUCAS FREITAS: Ja. Det er ikke del af faktisk kodning. Det er mere ligesom hvad du vil ønsker at skrive i dit program. PUBLIKUM: Hvordan ville vi have kørt det, hvis det var faktisk i gedit [uhørligt]. I stedet for at trykke på play? LUCAS FREITAS: Vi vil først kompilere det. Vi kan gøre det ved at gøre make og navnet på filen. Og så at køre det, vil vi gøre dot skråstreg og navnet på programmet. PUBLIKUM: Jeg gætte, hvad jeg mente var, hvis vi ønskede program til at reagere på deres forkert, ugyldig indtastning, du bør ikke sætte i - LUCAS FREITAS: Vi vil ikke være i stand til at gør det, fordi koden dette siger prøv igen kommer fra Få Int., som er en funktion, der er implementeret for os via CS50 bibliotek, og siden det er allerede implementeret der, vi kan ikke bare [uhørligt]. LAUREN CARVALHO: Hvis du ikke bruger GetInt, så kan du gøre det. LUCAS FREITAS: Ja. Men hvis du bruger GetInt, kan du ikke. Andre spørgsmål? PUBLIKUM: Kunne du have gået med lignende GetFloat og så være i stand til at sætte det i en decimal? LUCAS FREITAS: Ja. PUBLIKUM: OK. Derefter skal du bare kunne indtaste float a ligemænd - LAUREN CARVALHO: Ja. Præcis det samme, bortset fra en flyde i stedet for en int. LUCAS FREITAS: Bare sætte det her og derefter GetFloat der. PUBLIKUM: Som du vil se eller har set - LAUREN CARVALHO: Vi har ikke fået endnu. PUBLIKUM: - gøre ulighed med flåd ikke [uhørligt] PUBLIKUM: Hvad betyder de semikolon betyder? LAUREN CARVALHO: Den semikolon bare betyder, at denne erklæring er færdig, og vi kommer til at gå videre til næste dias. PUBLIKUM: Så det er nødvendigt hver gang? LAUREN CARVALHO: Ja. Nå, OK, så ikke for sådanne forhold, fordi de er indkapsle noget. Så dybest set, hvis noget er årsag at du derefter oprette en klammeparentes blok, ikke sætte et semikolon i slutningen. LUCAS FREITAS: Men alt andet, ja. Når du er færdig med en erklæring, sætte semikolon. Og hvis du glemmer semikoloner, den compiler kommer til at blive vred på dig, og du kommer til at have at forsøge at løse det. LAUREN CARVALHO: Hvis jeg sætter et semikolon her, ville det stoppe dette, og jeg ville aldrig komme til at udføre, hvad der er inde, ved den måde. Så det er en af ​​disse fælles bugs. PUBLIKUM: Altid udfører. LAUREN CARVALHO: Ja. I dette tilfælde, ville vi altid udføre, hvad der er indeni. PUBLIKUM: Din stil [uhørligt] vedhæfte det for dig, troede. LAUREN CARVALHO: Åh, det er sandt. PUBLIKUM: [uhørligt] single line ting [uhørligt] PUBLIKUM: Ja? PUBLIKUM: Kan du har flere input i en linje? Så ligesom du kan bede brugere at udskrive to ting? LAUREN CARVALHO: Ikke brug - LUCAS FREITAS: Nej. Lad os sige, at jeg også ønsker at få denne heltal m.. Jeg er nødt til at gøre det i en anden linje. PUBLIKUM: Hvis du skulle køre det, hvordan [uhørligt]? Det ville udskrive prompt der [uhørligt] og så ville du indtaster et og - LAUREN CARVALHO: Jamen, køre den. Jeg mener, der er intet stoppe os fra bare kører det og se, hvad ville ske. LUCAS FREITAS: Jeg synes det er gå til klager på os fordi vi ikke bruger - LAUREN CARVALHO: Ups. LUCAS FREITAS: Det beklagede på os lige nu, fordi vi ikke bruger denne variabel, men hvis jeg gjorde, for eksempel, n er lig lig med, og m er lig med lig med, så hvad vil ske i dette tilfælde? Hvad ville dette program gøre? PUBLIKUM: Jeg er bare undrende hvordan det ville - LAUREN CARVALHO: Hun vil bare have at vide, hvordan det ser ud ligesom, tror jeg, ikke? Så det tog en af ​​dem, og derefter det tog den anden. Jeg synes, vi skal komme videre, fordi vi har en mere Slide Show for at gå før - ønsker du at trække op matematik? LUCAS FREITAS: Yeah, matematik. LAUREN CARVALHO: Give mig bare et sekund. Der er et par forskellige numerisk variabler i C. Numeriske data i C kan inddeles i forskellige typer, og det er dem, du vil se de mest ofte. Og int er et helt tal. Du kan ikke have nogen decimaler. I Appliance, det tager 32 bit til at gemme en int. En svømmer kan have decimaler. Det tager også 32 bits til at lagre en svømmer i Appliance. En dobbelt er et tal med en decimal , som tager 64 bits til at gemme det, hvilket betyder, at du bare kan have større præcision fordi du kan få mere - hvad kalder du det? LUCAS FREITAS: Ja, det er mere. LAUREN Carvalho: Flere steder efter kommaet. Og en lang lang er et helt tal der tager 64 bits til øm det i Appliance. LUCAS FREITAS: Så det kan være større end int'er kan være. LAUREN CARVALHO: De ting om data typer i C er, at de fortæller dig, hvad slags data du kan gemme i din variabel. De fortæller dig, hvordan du kan bruge dette variabel i dit program. Det er meget vigtigt at bare holde styr af, hvad datatype, du bruger, og hvis du behøver at kaste fra en datatype til en anden, så sørg for at du kender præcis, hvad der sker, når der støbningen finder sted. Og du vil se et eksempel senere on i disse lysbilleder af en fejl, der kan forekomme. Lad os tage et kig på nogle matematik i C og synes virkelig grundigt, tror jeg, om, hvad der foregår, når denne matematik finder sted. I den allerførste linje, hvad er sker, når jeg erklærer x? PUBLIKUM: Du tillader x at være noget? LAUREN CARVALHO: Ja. Nå, jeg virkelig beder operativsystemet system til 32 bit hukommelse, right? I hvilke kan jeg gemme en int, og Jeg har tænkt mig at kalde det int x. LUCAS FREITAS: Dybest set går i hukommelsen og at finde et sted, der har 32 bits og sige, hey, jeg vil have dette rum, og det kommer til at hedde x. Så du er bare temmelig meget fund en boks i din hukommelse til lagre værdier for x. LAUREN CARVALHO: Og så jeg initialisere x, hvilket betyder, at jeg bare gemme værdi på 2 i stedet, at bid hukommelse, at vi bad drift system. Og hernede, hvad vi gør, er Vi er faktisk erklære og initialisering y på en linje i stedet for i to linjer som vi gjorde op her, der er også et helt fint, vi er tilsætte 1 til x, og vi opbevaring at værdi i y. LUCAS FREITAS: Så dybest set, hvad dette linje gør, det finder nu en boks til y, og derefter sin værdi, de ting, du kommer til at sætte inde i kassen, er vil være den værdi af x plus 1. Så det har denne boks for y. Det bliver værdien af ​​x, ser her, og se, at det er 2. Sætte det der, plus 1, så det sætter en 3 der. Giver det mening? Så y ville være 2 i dette tilfælde. LAUREN CARVALHO: Okay, cool. Vi så nogle kommer, så lad os nu tænke om division i C. Her er jeg erklære og initialisere en svømmer kaldet svar og dividere 1 med 10, og så jeg udskrive svaret til to decimaler. Og bemærk her, i mit printf erklæring, når jeg ønsker at udskrive noget til to decimaler,% .2 f er hvad jeg ønsker at bruge. Så pointen 2 bare at sige Jeg har brug for to pladser efter decimal udskrives. Nu, hvad der kommer til at ske hvis jeg køre denne kode? Er der nogen der har en idé? Hvad ville udskrive? LUCAS FREITAS: Hvad er vi forventer at få. LAUREN CARVALHO: Hvad gør Vi ønsker først og fremmest? LUCAS FREITAS: [uhørligt] LAUREN CARVALHO: 0,1, ja. Men hvad vil udskrive? PUBLIKUM: [uhørligt] LAUREN CARVALHO: Nå, nej, faktisk. Dette er, hvad jeg talte om, hvorfor du nødt til at holde meget omhyggelig styr på dine datatyper. Så hvad datatype er det? Er en int, right? Der er ingen decimal. 10 er også en int. Der er ingen decimal. Hvis jeg deler en int med en int, får jeg en int, som ikke er 0,1, fordi int'er kan ikke have decimaler, men blot 0. Fordi en int bare afkorter off decimaler. LUCAS FREITAS: Så når du gør operationer med int'er, du kommer til at få en int som svaret. Så dybest set, hvad computeren gør, er det skel 1 ved 10, og det får 0.1. Men så er det ligesom, vent, det er formodes at være et heltal, så du bare ignorere den 0,1, så det er nu bare 0. LAUREN CARVALHO: Så når jeg udskriver denne ud, jeg får 0,00 i stedet for 0,10. LUCAS FREITAS: Giver det mening? LAUREN CARVALHO: Det er lidt uheldige, right? LUCAS FREITAS: Så hvordan kan vi løse dette? LAUREN Carvalho: Lad os forsøge at løse det. Her er et eksempel på, hvor jeg faktisk støbning af 1 og 10 til flåd. Så nu, 1 er ikke længere en int. 1 er en svømmer. Af den måde, det er bare syntaksen for når du ønsker at kaste fra en datatype til en anden. Du kan bare sætte den datatype i parenteser og har det bare forud den værdi, du støbning. Så her, jeg dividere en svømmer ved en flyder for at få en float svar. Og ja, det ville i Faktisk udskrive 0.10. Giver det mening? LUCAS FREITAS: Så typen støbning er bare konvertere fra den ene type til den anden. Så flyde 1 er faktisk 1,000. Ikke ligefrem det, men det er noget med decimaler der er faktisk 1. Giver det mening? Ja? PUBLIKUM: Hvad hvis du gjorde float svar lig 1,0 divideret med 10? LAUREN CARVALHO: Du er faktisk går at se, at i det næste dias. Det er faktisk vores meget næste dias. Dette er faktisk et pænere end skriv støbning, tror jeg. Så disse to er flåd blot ved arten af ​​den kendsgerning, at de have decimaler. Ja? PUBLIKUM: Hvad hvis du gjorde [uhørligt] divideret med 10? LAUREN CARVALHO: Faktisk en float divideret med en int faktisk giver dig en flyde, så det ville fungere fint. Vent, er alle forstå dette? Da dette vil være en rigtig big deal i Pset1, faktisk. Ja? PUBLIKUM: Kan du lige hurtigt gå over den røde del? LAUREN CARVALHO: Den røde del, ja. Lucas, vil du? LUCAS FREITAS: OK. Så husk, at den procentvise er en pladsholder. Det er ligesom en tom plads. Så lad os prøve at forstå alt , der foregår her. Procent betyder, at det er en pladsholder. Så har du f, hvilket betyder, at denne pladsholder er for en float. Den sidste ting, som vi har her er en .2, Hvilket betyder, at jeg vil have to decimaler for svømmeren. Hvis jeg bare havde% f, de vil sætte en flok af decimaler. Så jeg kan bare sætte .2 eller .1 eller .5 eller uanset hvad, og det kommer til at sætte det Antallet af decimaler. Det eneste er, at hvis du sætter ligesom .100 Eller .1,000, er det faktisk ikke kommer til at sætte alle disse decimaler fordi det ikke har nok hukommelse at have denne præcision. Andre spørgsmål? Ja? PUBLIKUM: Så flyder bare tillader dig til at gå ud over heltal? LUCAS FREITAS: Ja. LAUREN CARVALHO: Nå, en float bare tillader dig at have decimaler. LUCAS FREITAS: Det betyder bare, at du nu kan have decimaltal. PUBLIKUM: Hvorfor skulle vi nogensinde bruge heltal? LUCAS FREITAS: Hvorfor skulle du bruger heltal? Måske hvis du tælle fra 0 til 10, du ønsker at bruge faktisk et heltal. Du behøver ikke at bruge en float. I nogle situationer, du ikke har rent faktisk - LAUREN CARVALHO: Måske har du ikke ønsker decimaler. LUCAS FREITAS: Måske har du ikke gøre ønsker at bruge en flyder. LAUREN CARVALHO: Den anden ting er, husk, både sætte en float og en int tage 32 bit til at gemme dem, og måske du ikke ønsker at spilde bits på decimaler. LUCAS FREITAS: Ja. Så ligesom, bare tænke over dette. Du har 32 bit til både en int og en svømmer. For en int, alle disse 32 bits gå til heltal. Hvis du bruger en float med 32 bits, du har en del af denne hukommelse, der bruges for antallet for hele tal, og den anden del, der benyttes til decimaler. Så det betyder, at du ikke kan komme til et meget stort antal med flåd fordi svømmeren er allerede bruge en masse hukommelse for de decimaler. Ja? PUBLIKUM: Det første svar, hvad der præcist er det at gøre? Er det at sætte værdien af ​​float lige til denne pladsholder for at du kan huske det i næste linje? Den siger flyde svar. LUCAS FREITAS: Ja. Så float svar betyder, at du får nu en lille spand i den hukommelse, der holder en float, og der kommer at blive kaldt svar. Så det er, hvad float svar gør. Og så siger du, at indersiden af dette, er du nødt til at sætte resultatet af denne. Så du kommer til at gøre 1,0 divideret med 10,0, får du 0,1, og så skal du sætte at indersiden af ​​svar. LAUREN CARVALHO: Så i én linje, er vi erklære og initialisere denne float kaldt svar. LUCAS FREITAS: interessant, selvom Dette er blot én linje, det gør flere operationer. Det er bare en måde at C udlejning du bruger mindre kode. Det er det samme som den ternære operatør, hvordan man bare kan gøre en [Uhørligt] på én linje. Det er faktisk gør det samme som laver float svar, semikolon, og så svaret er lig med det, men i stedet for gør du gøre to linjer til det, det er ligesom en genvej. Ja? PUBLIKUM: Så hvis du kørte dette, det ville være 0,10? LUCAS FREITAS: Ja. Ja? PUBLIKUM: Er besvare faktisk kode, eller er det bare det navn? LAUREN CARVALHO: Denne er faktisk kode. Dette er, hvad vi vil at navngive vores variabel. PUBLIKUM: Så er det bare et navn [uhørligt]. LAUREN CARVALHO: Ja. Jeg kunne have sagt float x lig 1,0. LUCAS FREITAS: Sagen er, at navnet på den variabel er noget, som du bruger. Det er vigtigt for dig. For selve programmet, det eneste at forhold, er den værdi, du har indersiden af ​​spanden. Grunden til at du har variable og navne på variabler, så du ville vide hvad du har med at, ligesom hvilken slags data, du er adgang ad gangen. Men for selve koden, hvis du ringer det besvare eller spørgsmål eller noget, temmelig meget, det gør ikke noget. Det betyder ikke noget. Så længe du er konsekvent i hver forekomst det, og så kalder du det noget andet. Ja? PUBLIKUM: Har variabler gå ud over den funktion? Ligesom hvis du skulle oprette et beslag [Uhørligt], kan du bare [Uhørligt] svare igen? LAUREN CARVALHO: Nej. PUBLIKUM: [uhørligt] LAUREN CARVALHO: Nej. Det ville være uden for rækkevidde af denne variabel. Og faktisk, det er lidt interessant, for når vi har ting som sløjfer eller disse, hvis betingelser, hvis du erklærer en variabel inden andet sæt krøllede parenteser, det virkelig kun eksisterer inden for disse krøllede parenteser. PUBLIKUM: En sidste bemærkning om de [uhørligt] flåd. Hvorfor ville du nogensinde ønsker at bruge ints? Dette er mere en side bemærkning end noget, men din computer er betydeligt bedre til at håndtere reklamationer end det er at håndtere flåd. Det er ligesom en rækkefølge størrelsesorden hurtigere. Så hvis vi bare kun behandles flåd, ting ville være meget langsommere. LAUREN CARVALHO: Faktisk synes der at være et problem med flåd. LUCAS FREITAS: Kind af årsagen til , at du kan tænke, er, hvordan i binær du kan repræsentere heltal ved at sætte 0'er og 1'er. LAUREN CARVALHO: Det er den næste ting. LUCAS FREITAS: OK. Awesome. LAUREN CARVALHO: Just holde den tanke. LUCAS FREITAS: OK, jeg vil fortælle dig senere. LAUREN CARVALHO: Før vi kommer til det, Lucas var bare at sige, operatør forrang. Det er sund fornuft. I gutter har gjort dette nok. Så bare hvis noget er i parentes, det vil ske først. Det er multiplikation forrang i Desuden subtraktion, ting som. Så faktisk, bare nogen der ønsker at fortælle mig, hvad nummer man faktisk evalueres til? PUBLIKUM: 27.. LAUREN CARVALHO: 27? Ja. LUCAS FREITAS: Lad mig give slik til folk. LAUREN CARVALHO: Okay. Hvad med nummer to? Hvad med nummer to? PUBLIKUM: 22.. LAUREN CARVALHO: 22, ja. Jeg ved ikke, hvem der fik det. Nummer tre? PUBLIKUM: 10.. LAUREN CARVALHO: 10, ja. Fedt. Så modulo. Lucas, vil du forklare modulo? LUCAS FREITAS: Modulo er denne operatør det er faktisk meget nyttigt for en bundt af problemer. Hvis jeg gør 55 modulo 10, hvad den gør dette lad os sige, at jeg ønsker at dele 55 af 10. Hvad får jeg? Det føles ligesom hvis jeg faktisk bare gør divisionen, hvad er første gang, at jeg fik heltal? PUBLIKUM: 5. jan. LUCAS FREITAS: 5.. Og så resten er 5, right? Så det er ligesom 5 gange 10 plus 5. Dybest set, hvad modulo betyder, den forsøger at dividere dette tal med denne ene, og det ser, hvad er resten af divisionen. LAUREN CARVALHO: Så det bare returnerer resten. Så nummer et er hvad? 5.. Nummer to? PUBLIKUM: 3.. LAUREN CARVALHO: 3.. Nummer tre? 0. Og fire er 1.. Præcis. LUCAS FREITAS: Simpel, right? LAUREN CARVALHO: Hvorfor vi ikke springe dette bare fordi vi ikke rigtig har tid, og folk synes at forstå. Så her er hvad Lucas var bare taler om. LUCAS FREITAS: En anden grund til, at jeg ville bruge int'er stedet for flåd er at flåd er meget upræcise. Og hvorfor er de upræcis? David sagde, at repræsentere et heltal, for eksempel, bruger vi 0'er og 1, ikke? Og så skal du stort set gøre det multiplikation, gør alle de operationer for at vide, hvad decimaltal du har i stedet for binære. Hvad sker der nu hvis jeg prøver at sætte decimaler? Faktisk, for eksempel, hvis jeg har det tal som 3,33333? Det føles som 10 over 3. Hvordan skal jeg nu til at gemme alle de 3 er, at jeg har efter det? Det er virkelig svært, ikke? Du kan ikke bare fortælle computeren, hey, jeg har en 3, og så du gør det for evigt. Faktisk er computeren ikke smart nok for dette. Så dybest set alle dine computer gør, er at det forsøger at sætte så mange cifre som det kan op til den hukommelse, som du har. Så lad os sige, at det kommer til at sige 3,3333, og det er det. Så det er ikke i stand til rent faktisk at udtrykke præcist, hvad der flyder er. LAUREN CARVALHO: Vi har et endeligt antal bit, hvilket betyder, at ikke hver decimaltal vil være kunne være repræsenteret præcist. Og så i dette eksempel, hvis vi er udskrive 0.1, er vi nu udskrivning ud 20 steder. LUCAS FREITAS: Ligesom jeg fortalte gutter, kan du sætte et vilkårligt antal. Men hvis du lige gjorde de to steder, du ville få 0,10, men hvis du lægger 20 steder, det kommer til at vise dig et bundt af 's, fordi det er, hvad du kan sætte i hukommelsen, right? Men lige her, op til 0, og så bare sætte det et flok tilfældige tal. Det er lidt ligesom nogle - LAUREN CARVALHO: Det er fordi vi er ikke i stand til at repræsentere denne decimal netop med nummeret bits vi har. LUCAS FREITAS: Og så computer er dybest set giver dig en papirkurv nummer. Dette er faktisk ikke værdien af ​​nummeret. PUBLIKUM: Det er så tæt som det kan få [uhørligt] bruge [uhørligt]. LAUREN CARVALHO: Så konsekvenserne af dette er, at lad os sige at i stedet for være 0.100014, uanset hvad, hvad nu hvis det var 0,0999 - godt, OK. Lad os lade som den faktiske svar til dette var 0,9999999. Det er meget tæt på 1, men det er ikke ligefrem 1.. Det er 0,99999. Det betyder, at hvis jeg tager det 0.999, og jeg kastede det til en int, får jeg 0. Jeg kan ikke få 1. LUCAS FREITAS: Fordi huske, støbning fra float til int, skal du bare ignorere alle de decimaler. Du skal bare ignorere dem. Der er ikke sådan noget som oprunding eller kører ned, når du typecast. Faktisk er der denne funktion, gør afrunding, som er meget vigtigt, men du bare tror, ​​at når du gør typecasting, det er bare ved at slette alt. Så selv hvis du har 0,99999, går det at bare give 0, hvis du typecast [Uhørligt] et heltal. LAUREN CARVALHO: Så bare være rigtig klar af floating point i præcision, især når du starter at bruge flåd i Pset1. Men gåtur gennem bør advare dig om, at så godt. LUCAS FREITAS: Og faktisk er det virkelig hårdt, for eksempel, hvis jeg gjorde float svar 1 er lig med 1,0 i 10, og derefter flyde svar 2 lig 10,0 løbet 100,0. De er de samme tal, right? 0,1, right? 1 i løbet af 10 eller 10 over 100. Men nu, hvis jeg forsøger at se lighed, ligesom hvis svar 1 er lig besvare 2, måske er det faktisk ikke går at være det samme. Så flåd er lidt ligesom det. De er ligesom at gøre ligestilling.