LUCAS FREITAS: OK, tror jeg nå er vi levende. Velkommen til CS50 Supersection. Vi er mindre komfortable. Mitt navn er Lucas Freitas. Jeg er en CS50 Leder TFs. Dette er Lauren. LAUREN CARVALHO: Hei, jeg er Lauren. Jeg er også leder TF for CS50. LUCAS FREITAS: I dag har vi bare kommer å gi en oversikt over hva alt du gutta har lært i uke en, forhåpentligvis å gi dere en god følelse for hva du bør vite for oppgavesettet ett. Bare et par kunngjøringer. Først av alt, kontortid. Kontortid skjer fra mandag til torsdag i forskjellige hus i Annenberg hver dag. De er en veldig god ressurs for deg gutta til å komme og stille spørsmål, og snakke med TFs, og selv utveksling ideer med andre studenter. Så sørg for å bruke denne ressursen i din favør. Den andre tingen er CS50 Appliance. For den siste [uhørbart] dere trengte ikke å faktisk ha et apparat. Du bare gjorde alt i din personlige datamaskin. Men for dette problemet, du faktisk har å ha en virtuell maskin, så Husk å laste ned CS50 Apparatet og sette det opp. Og den tredje tingen er å være sikker på å starte oppgavesettet ASAP bare fordi det er mye lettere å finne hjelp når du er i begynnelsen av uken. Fordi folk har en tendens til å vente til siste sekund for å starte Oppgavesettet, og deretter gå til kontortiden, og det er mye folk. Der hvis du går på mandag, du kommer å se at du kan snakke med TFs ganske mye for hele natten, og de kommer til å være mer enn glad for å hjelpe deg. LAUREN CARVALHO: Kan jeg bare slutte du for bare ett sekund? Har alle vært i stand til å laste ned den CS50 Appliance? Har folk prøvd? LUCAS FREITAS: For å laste ned, ved måte, kan du få instruksjoner på cs50.net/appliance. LAUREN CARVALHO: Høyre. Og det tar en liten stund for vår sys admins for å få deg en lisens nøkkel, så registrer deg for gratis prøveversjon først. På den måten vil du ha det i 30 dager, og deretter vente på lisensnøkkelen som bør gi den til deg for et år. LUCAS FREITAS: Først av alt, la oss snakke litt om CS50 Appliance. Den CS50 Appliance er faktisk en virtuell maskin som du kommer til å kjøre på din egen datamaskin som er utgangspunktet kjører en annen datamaskin inni din egen datamaskin. Som er ganske kult. Og faktisk er det brukt overalt. Folk som til tech ville vite at Dette blir brukt hele tiden. du? Kan ha flere datamaskiner i én enhet. La oss faktisk ta en titt på Appliance. Når du går til apparatet etter registrering, du er nødt til å sette navnet ditt og logge på Harvard slik at vi kan få deg all registrert. Du kommer til å se i utgangspunktet bare en tapet, og deretter hjem og Trash, og deretter disse små ikoner. Dette tre ikoner er faktisk den mest viktige ting som du kan ha i din Appliance. Den første er gedit, som er en tekst redaktør, akkurat som Notepad eller lignende noen form for tekst editor. Det er bare noe som vi bruker til å skrive kode og deretter gjøre ting med det. Den andre tingen som vi har her er Chrome. Så hvis du trenger å bruke internett i Appliance, er at hva du kan bruke. Og det tredje er terminalen som er faktisk veldig søt. Folk vanligvis er litt redd for terminalen fordi det er dette veldig gammeldags program der du bare utgangspunktet skriver alt med tastaturet. Det er ikke mye interaksjon med musen. Men faktisk terminalen gjør veldig gode ting. Først av alt, la oss bare gå gjennom noen kommandoer som du kan bruke i terminalen. LAUREN CARVALHO: Og gjerne stoppe oss dersom du har noen spørsmål. LUCAS FREITAS: Yeah. Så den første kommandoen som vi har for terminalen er ls. ls utgangspunktet betyr liste alt, alt filene og alle styremedlemmer, at jeg har på det stedet jeg er på. Så hvis jeg gjør ls her, kommer jeg til å se at jeg har noen kataloger. Jeg har skrivebordet, nedlastingene, loggene, og de VHOSTs. De er i blått, fordi de er alle kataloger. Da har du noen andre filer. Du har som hei og hello.c, som er bare filer, og de er i forskjellige farger. Så dette er en svært viktig kommando bare du kan se hva som er filene og kataloger som du har i katalogen som du er på i terminalen. Når du ser jharvard @ apparatet og deretter den lille symbol der, tilde, det betyr bare at det er katalog som du er i øyeblikket. LAUREN CARVALHO: Så skrive ls er nesten som å klikke på mappen som er oppført der, i det viser du alt innholdet som er i denne mappen. PUBLIKUM: Er det tekst etter hello.c? LAUREN CARVALHO: Åh, kan du ikke se at, fordi det er blå. LUCAS FREITAS: Det står logger og VHOSTs. LAUREN CARVALHO: De er bare andre mapper. Jeg beklager, det er veldig vanskelig å se. Kanskje hvis vi slått av lysene? Colton, har du lyst til å prøve og finne lysbryteren? Beklager. Jeg tenkte ikke på det. LUCAS FREITAS: Men det er i utgangspunktet - ja, hvis du kunne - LAUREN CARVALHO: Zoom inn skjermen din. LUCAS FREITAS: Jeg gjør ikke har denne funksjonen. LAUREN CARVALHO: [uhørbart]. OK. Vel, det er bare en masse naturlig lys i dette rommet også. LUCAS FREITAS: La oss bare anta at er det to andre kataloger der. LAUREN CARVALHO: Bare bære med oss. Dette er den eneste delen som du vil være å se på terminalen. LUCAS FREITAS: Den neste kommandoen er utgangspunktet kanskje du ønsker å organisere filene dine - for eksempel, alle dine C-filer i ett katalog-men du har ikke en katalogen bare for C-filer ennå. Du kan i utgangspunktet lage en katalog ved hjelp av terminalen, og, noe som er det samme som å høyreklikke og si ny mappe. Kommandoen er lage katalogen, som er mkdir, så i utgangspunktet "make" og "Katalog." Og så kan du sette navnet på katalogen. La oss si at jeg ønsket å bli kalt, Jeg vet ikke, la oss si pset1 Doing dette, jeg bare laget en katalog. La oss bare sjekke at det er der. Så hvis jeg gjør ls, nå ser jeg logger, og deretter pset1, og deretter VHOSTs. Så jeg har den nye katalogen der. Og så etter at du har en ny katalog, kanskje du ønsker å navigere inn i det, så neste kommando denne cd, som bare utgangspunktet betyr gå til en bestemt katalog. Så hvis jeg ønsker å gå til pset1, Jeg kan bare gjøre cd pset1. LAUREN CARVALHO: cd står for endring katalog, [uhørbart] stand til husk det. LUCAS FREITAS: Og nå ser du at i stedet for bare å ha jharvard apparatet, har jeg jharvard apparatet, og deretter pset1, fordi det viser meg hvor jeg er i denne datamaskinen. Nå hvis jeg ønsker å gå tilbake til katalog som var før dette, jeg kan gjøre en cd prikk prikk, noe som betyr bare gå til katalogen som jeg var før, som forelder til dette katalog, i utgangspunktet. Og nå ser jeg at jeg er tilbake til jharvard. Det neste som jeg kan gjøre det er rm, som er å fjerne en fil. For eksempel, la oss først gjøre ls for å se hva jeg har her. Jeg har hei og hello.c. La oss si at jeg ønsker å fjerne dem. Jeg kan gjøre rm hallo. Det kommer til å si "fjerne vanlig fil hallo? "Og jeg sier" ja ". Og nå hvis jeg gjøre ls, ser jeg at det er ikke der lenger. Hvis jeg prøver å bruke rm for en katalog, skjønt, det er ikke til å la deg gjøre noe. Det kommer til å si, hei, du kan ikke fjerne en katalog. Så har vi dette andre komme kalt rmdir, som bare utgangspunktet betyr fjerne katalogen. Jeg kan for eksempel fjerne pset1. Og hvis jeg gjør ls, gjør jeg ikke ha det lenger. Eventuelle spørsmål om dette? Nei? Yeah? PUBLIKUM: Er det viktig at du lar et mellomrom etter - når du begynner å skrive noe i? LUCAS FREITAS: Yeah. Hvis jeg gjør som CD og katalogen, Jeg må sette inn et mellomrom. Hva plass er det du snakker om? LAUREN CARVALHO: Avstanden mellom cd og [uhørbart]. LUCAS FREITAS: Yeah, må du sette mellomrom fordi cd er den kommando, og deretter den neste strengen som du typen er i utgangspunktet katalogen. Så det er som et argument. Yeah? PUBLIKUM: Når du fører opp, alle de er ulike kataloger, ikke sant? LUCAS FREITAS: Ja, de er i katalogen. PUBLIKUM: Hva er forskjellene blant katalogene? LUCAS FREITAS: De er bare ulike mapper. Directory er en mappe i datamaskinen. PUBLIKUM: Åpne mappe. LUCAS FREITAS: Ja, det er bare en åpen mappe. LAUREN Carvalho: Over her, de som er i blått er faktiske kataloger som du kan komme inn og deretter se en haug med ting som er i det, noe som er uheldig fordi du ikke kan faktisk lese seg i blått. Og de i hvitt er bare filer som er innenfor den gjeldende katalogen. LUCAS Freitas: Så kataloger er mapper. De andre som er filer. PUBLIKUM: Hva er kommandoen å nullstille den eller fjerne den? LUCAS FREITAS: Hvis du vil fjerne? LAUREN CARVALHO: Hvis du vil fjerne? LUCAS FREITAS: Jeg tror det er "klart". Yeah. Så du bare skrive klart om skjermen er for rotete. Eventuelle andre spørsmål? Og du vil lære en haug med andre kommandoer bare naturlig under semester fordi de er svært nyttig. Så nå la oss snakke om kompilering. Vi snakket om pseudo og kildekode og objektkode. Og det er mye av koder, og kanskje dere er forvirret om det. La oss snakke litt om hva skjer når du skriver et program, og du kompilere den, og det blir en kjørbar fil. De er alle ord at dere sikkert hørt, og kanskje du ikke er helt sikker på hva som skjer. La oss si, for eksempel, som jeg ønsker å skrive et program som sier "hei." Den første som kommer i tankene dine er du slags prøve å tenke på hvordan du er kommer til å gjøre det i tankene dine, og du tenker kanskje på engelsk eller et annet språk, som naturlig språk, sannsynligvis. Og så tenker du, vel, hvis jeg vil, for eksempel skrive et program som sier "hallo," Jeg vil starte et program, Jeg vil skrive hei, og deretter vil jeg avslutte programmet. Dette er pseudo. Dette er bare utgangspunktet du prøver å komme opp med en sekvens av hendelser at du kommer til å gjøre for å være i stand til å skrive et program. Da har du kildekoden, og kildekoden ikke må spesielt være i C. Vi snakker om kildekoden i C fordi det er språket vi lærer, men selvfølgelig Koden kan være ganske mye noen programmeringsspråk som du har. Senere i semesteret, du kommer å lære andre språk. Det er også kildekoden. For eksempel her, dette er min kilde kode, og da er jeg blant annet en bibliotek, og deretter starter jeg viktigste, og så skriver jeg ut. Og Laura kommer til å snakke litt litt om alt dette. Dette er altså kildekoden. Og hva er den objektkode? Objektet er en haug med nuller og de, i utgangspunktet. Hva skjer er at du i utgangspunktet har pseudo, som er alt på engelsk. Og jeg mener, forstår du det. Sannsynligvis dine venner forstår det, og de fleste ville forstå ideen. Men datamaskiner er veldig dumt, og de forstår ikke engelsk, så du har oversette det til noe, vanligvis oversatt til noen programmeringsspråk. Og du kan tenke på et programmerings språket som typen som et språk at du forteller datamaskinen hvordan å snakke og å forstå. Du er i utgangspunktet å skrive noe i et språk som både av deg og din Datamaskinen forstå. Det er kildekoden. Så skal danne pseudo til kilden kode, er det opp til deg. Det er i utgangspunktet det du gjør programmet. Men problemet er at Datamaskinen gjør ikke engang forstå programmeringsspråk. Det forstår ikke kildekoden i det hele tatt. Det faktisk bare forstår nuller og enere. Så har vi dette svært magiske tingen kalt en kompilator, som i utgangspunktet er kommer til å bli kilden heter at du skrev på et språk både deg og datamaskinen snakke, og nå er du kommer til å forvandle det i nuller og enere. Så i utgangspunktet hva kompilatoren gjør er det blir kildekoden, i dette tilfelle C, det kommer til å forvandle det til nuller og de som maskinen forstår og kan gjøre en kjørbar fil ut av det. Betyr det fornuftig? Du kan bare tenke på kompilatoren som eller annen form for oversetter som er hjelper du forklare til datamaskinen nøyaktig hva det er ment å gjøre. Men hvordan kompilere jeg. La oss gå tilbake til Appliance, og la oss si at jeg gjør det programmet. Først skal jeg lage en katalog her, og jeg kommer til å kalle det "Praksis." Nå kommer jeg til å navigere til katalogen, så cd praksis. Nå er jeg inne i praksis. Nå ønsker jeg å starte gedit, så hvordan gjør jeg det? Jeg kan enten klikke her, eller kan jeg bare bokstavelig type "gedit", og det kommer å åpne for meg. Nå kommer jeg til å skrive mitt program, så akkurat hva jeg skrev i raset. Jeg erklære et bibliotek. Jeg gjør int main, annullert. Og nå er jeg gjør printf, hallo. Nå kommer jeg til å lagre dette. La meg sette det ut i praksis, og Jeg kommer til å kalle dette hello.c. Så nå er det lagret. Hvis jeg ønsker å kompilere den, jeg faktisk kan gjøre det på to forskjellige steder. Jeg kan enten gjøre det i et terminalvindu, så dette stor en, eller du kan bruke gedit som faktisk har en terminalvinduet her. Så du kan veldig enkelt bare gjøre koden din, og så kan du bare skrive uansett her, og prøve å kompilere den. Så hvordan kompilere jeg koden? Den enkleste måten som vi har, er ved hjelp tjene, som er en funksjon som er i utgangspunktet kommer til å kompilere koden din. Du må bare si gjøre hei, så "Make" og navnet på programmet. Oops. Dette er pinlig. LAUREN CARVALHO: Kan du [uhørbart]? LUCAS FREITAS: Beklager. Jeg gjorde ikke lagre den i riktig katalog. Kom å øve, og nå lagre det som hello.c. Jeg beklager. Nå er det lagret. La meg bare gjøre ls og være sikker på at det er her. OK, nå er den her. Så nå hvis jeg gjør hallo, det spytter en masse ting, men da er det bare gir meg en annen linje for terminalen, som vil si at det var vellykket. Så nå hvis jeg gjør en ls igjen, jeg faktisk se i denne filen i grønt, som er kjørbar fil. Og så hvis jeg ønsker å kjøre den, alt som Jeg trenger å gjøre er dot slash hallo. Det kommer til å si hei til høyre her, så det er akkurat det jeg spør det til. Det er én måte å samle inn, som bruker klang. Clang er bare en kompilator som vi har, og det er en litt mer detaljert til kompilere den. Men det fungerer like bra. Så hvis jeg gjør klang, og deretter-o, og deretter navnet som jeg ønsker å gi til den kjørbare filen, så la oss si "Hallo". Og deretter filen som jeg vil å kompilere, hello.c. Det er også kommer til å kompilere. Og du har filen her, og Jeg kan bare kjøre den også. Så både av dem fungerer. Betyr det fornuftig? Eventuelle spørsmål? PUBLIKUM: Kan du zoome i en liten bit? LUCAS FREITAS: Sorry? PUBLIKUM: Zoom inn? LAUREN CARVALHO: Jeg tror du kan bare komman pluss. LUCAS FREITAS: Command hva? LAUREN CARVALHO: Command pluss. LUCAS FREITAS: Nei. LAUREN CARVALHO: Å, det er ikke kommer til å jobbe fordi - det er fordi vi setter oppløsningen for denne tingen. LUCAS FREITAS: Jeg gjør ikke tror vi kan zoome inn Ja, vi kan ikke zoome. Har du et annet spørsmål? Unnskyld. PUBLIKUM: Kan du gjenta klang? LUCAS FREITAS: Den klang? Clang er det samme merke, men den Forskjellen er at først skal jeg skrive klang, som er kommandoen, så jeg kommer til å gjøre -0, alt, noe som er akkurat hva vi kommer til å lære senere som et flagg. Så bare tenk at du alltid nødt til å sette the-o. Og da først, du kommer til å sette navnet på den kjørbare filen, utgangspunktet filen som du er skal lage. Så jeg kan si, for eksempel, hello2 og deretter filen som jeg ønsker å sette sammen, som er. c. filen. Så det er hello.c. Betyr det fornuftig? PUBLIKUM: Hei hva? Hva er det? LUCAS FREITAS: hello.c. Og hvis jeg kompilere den, og hvis Jeg vet ls, jeg har også en hello2 at jeg bare kompilert. Og hvis jeg prøver å kjøre den, kommer det til å gjøre akkurat det samme som hallo, bare skrive hei. PUBLIKUM: Hvordan komme til gjøre du kan sette hello.c etter? LUCAS FREITAS: I make, du trenger ikke å sette den. c.. I make, du bare si det navnet på programmet. Du trenger ikke å si. C.. Men for klang, bør du. PUBLIKUM: Med klang gjør du også må legge til [uhørbart] LAUREN CARVALHO: Yeah. Så har du også til biblioteket. LUCAS FREITAS: Ja, det er noe vi kommer til å bruke senere. Det kalles linking, og jeg tror vi er kommer til å snakke om det senere. Et annet spørsmål? PUBLIKUM: Har du satt en prikk slash klang? LUCAS FREITAS: Nei. Den dot slash er bare å åpne den kjørbare filen. Så klang, du bare skrive "klang", og så hvis du ønsker å åpne kjørbar fil som du bare kompilert, så trenger du dot slash og navnet. Betyr det fornuftig? PUBLIKUM: Hvis du skulle bare endring [Uhørbart] til hei verden, gjør du måtte rekompilere det? LUCAS FREITAS: Yeah. hvis jeg ønsker å si, for eksempel, "hallo det, "Jeg kan bare lagre det nå, og jeg bare kompilere den på nytt. Så la meg gjøre en make hallo. Og hvis jeg gjør hallo, det kommer til å sier "hello there." Gir mening? Eventuelle andre spørsmål? PUBLIKUM: Har du å inkludere standard I / O for å koordinere arbeidet? LUCAS FREITAS: Yeah. Den standard I / O er i utgangspunktet Biblioteket som har en implementering for printf. Slik at ting rett på topp inkluderer stdio. Det er blant annet et bibliotek som i utgangspunktet har en haug med forskjellig verktøy som du kan bruke. en? Av dem er printf som er en funksjon som i utgangspunktet utskrifter meldinger til skjermen. Eventuelle andre spørsmål? Nei? OK. Så nå la oss snakke om - LAUREN CARVALHO: La oss bare gå til stilen guide. Ønsker du å bare finne det her inne? LUCAS FREITAS: Så vi skal å snakke om stil. LAUREN CARVALHO: Oh, David førte ikke. OK. Hvorfor kan ikke vi komme tilbake til stil helt på slutten? Det har faktisk blitt oppdatert som vi snakker. LUCAS FREITAS: Yeah. La oss vei for David å fullføre det. LAUREN CARVALHO: Can vi bytter egentlig? Så jeg håper alle har vært nyter Scratch. Dessverre, er det på tide å bevege seg bort fra dette - dessverre er det på tide å bevege seg bort fra disse ganske blokkprogrammering videre til C. Men heldigvis, alt av programmering konstruerer at du har jobbet med i Scratch er direkte oversettbare til C, og vi er kommer til å begynne å lære om noen av dem akkurat nå. La oss først snakke om forholdene i boolske uttrykk. Denne kjører på reserve batteristrøm. LUCAS FREITAS: Hvordan er som ikke fungerer? OK. Du går dit, jeg kommer til å få - LAUREN CARVALHO: Så forholdene er viktig fordi de tillater oss å innføre logikk inn i våre programmer. Her er et eksempel på en tilstand i en C-program. La oss oppmerksom på hvordan dette - Så denne tilstanden blokk rett her, dette printf uttalelse vil ikke utføre mindre tilstanden innenfor parenteser, n er større enn 0, evalueres til sann. Nå er alle betingelsene i f uttalelser er boolske uttrykk, noe som betyr at det er bare to alternativer. De kunne heller vurdere å true, eller de kan behandles som usanne. Så her, så dette er fornuftig, ikke sant? n større enn 0, betyr at det er en positiv nummer, det vil si at den vil trykke out "du plukket et positivt tall." Det er mange boolske uttrykk som kan danne tilstand med en init uttalelse. Vi har mindre enn. Dette er mindre enn eller lik. Dette er bare en morsom [uhørbart]. Hvis du vil at printf å skje hvis det er større enn eller lik 0, og deretter du vil velge dette. Så lik bare føyer riktig etter større enn skiltet. Lik like, noe som er forskjellig fra bare ett likhetstegn, lik lik faktisk betyr at uansett er på venstre side av denne er det samme som hva som er på høyre side av denne hvor man likhetstegnet er hva? Hva er bare ett likhetstegn? Oppdraget. LUCAS FREITAS: Hvem sa det? Er det godteri? Å, nei. Unnskyld. Unnskyld. Dere får godteri. Oh, OK! Tre personer får godteri! LAUREN CARVALHO: Så denne retten her er det bang operatør foregå likhetstegnet, så det er ikke lik. Så hvis dette var innenfor min tilstand, kroppen av tilstanden ville utføres bare hvis det er i venstre er ikke det samme som hva som er til høyre. Jeg kan også ha rett på utropstegn. Egentlig vil vi se på en funksjon skyver hvordan dette skulle brukes. LUCAS FREITAS: Noen spørsmål? Nei? LAUREN CARVALHO: Vi kan kombinere disse Boolske uttrykk for å konstruere mer intrikate betinget utsagn. Så her, hvis det er til venstre side av dobbelt barer eller det som er på høyre side av de doble barer verdien true, så får vi skrive ut ugyldig. Og deretter ned her, hvis hva som står på venstre side av to -tegn og hva som står på høyre side av de to-tegn evalueres til sant, så vi vil skrive ut gyldig. Den doble barer kalles den logiske ELLER operatør de doble-tegn er kalles den logiske AND-operatoren. Ja? PUBLIKUM: Er de bare små bokstaver l's? LAUREN CARVALHO: Nei. De er faktisk - du vet tilbakeslag, som ovenfor din returtasten? Ser du det? LUCAS FREITAS: Det er faktisk en bar. LAUREN CARVALHO: Det er faktisk bare to barer. PUBLIKUM: Kan du bruke den lik lik for strenger? LUCAS FREITAS: Nei. Vi kommer til å lære senere noe om det. LAUREN CARVALHO: Det er en funksjon som du kan bruke. Men du trenger ikke å bekymre deg for at nettopp ennå. Hva om jeg gir dette programmet nummer 5? Hva vil skrive ut? PUBLIKUM: [uhørbart] gyldig. LAUREN CARVALHO: Gyldig? Yeah. Jeg vet ikke hvem som fikk det. [Latter] LAUREN CARVALHO: Det er en slags skummelt [uhørbart]. PUBLIKUM: Så den doble og, det betyr bare og? LAUREN CARVALHO: Yeah. Så nummer 5 er både større enn 0 og mindre enn 100. PUBLIKUM: Hvorfor skulle det være en? LAUREN CARVALHO: En ampersand er faktisk noe annerledes, og det er en bitvis operatør, som du vil lære om senere. Men det er noe som faktisk fungerer med biter av et gitt antall. LUCAS FREITAS: Bare tenk de ikke trenger å bekymre deg om det for nå. LAUREN CARVALHO: Jeg tror det er trolig kommer opp neste uke. LUCAS FREITAS: Eventuelle andre spørsmål? Nei? LAUREN CARVALHO: Så vi har sett at en det blokkere kan stå alene, men den kan også være sammen med og ellers blokk. Så i dette tilfellet er dersom n er større enn 0, kommer vi til å skrive ut "Du plukket et positivt tall. "annet, noe som betyr hvis den er 0 eller hvis den er mindre enn 0, kommer vi til å skrive ut, "Du plukket et negativt tall." Det interessante her er at disse er eksklusive hverandre. Det kommer aldri til å være et tilfelle hvori denne, og dette kan både skrive ut. Jeg er sikker på at du jobbet med hvis / annet bokse i Scratch, så dette bør være ganske kjent. Ja? PUBLIKUM: Trenger vi mellomrommet mellom int n er lik GetInt deretter plass i hvis setningen? Som bruker vi en linje [uhørbart] LAUREN CARVALHO: Oh, plassen her? PUBLIKUM: Sånn, men du doble plass. Nei, gå opp. Gå opp. LUCAS FREITAS: Bare linjen? PUBLIKUM: Yeah. LUCAS FREITAS: Bare den blanke linjen? PUBLIKUM: Yeah. LAUREN CARVALHO: Blank linje? Nei. Det er bare en stilistisk ting. LUCAS FREITAS: Det er akkurat som noen ganger du bare hoppe over noen linjer så at koden ikke ser ut som en stor blokk med tekst. LAUREN CARVALHO: Jeg tror det som skjedde var at vi hadde en kommentar her, men jeg tok den ut slik at dere ville ha å tenke på koden heller enn bare å lese min kommentar. Generelt vil avstanden virkelig påvirke hvordan programmet kjører. Det er mer av en stilistisk ting. Og når vi har den stilguide oppdatert og klar til å gå innen utgangen av supersection, vi skal snakke om at mer. Det er noe galt med dette programmet, ikke sant? Fordi 0 er ikke egentlig et negativt tall. Så la oss se om vi kan fikse det. Du kan sikkert forestille med dette sier, ikke sant? Hvis n er større enn 0, skriver vi: "Du plukket et positivt tall. "Da annet hvis n er mindre enn 0, "Du valgte en negativt tall. "annet" Du plukket 0 ". Nå det interessante er at dette kan fortsette i det uendelige. Du kan ha en hvis blokk, et annet hvis blokk, en annen else if blokk, annet hvis, else if, else if, annet, i utgangspunktet så lenge du vil. Og når konstruert som dette, disse er alle kommer til å være eks hverandre. Ja? PUBLIKUM: Så hvorfor kan ikke du bare bruke en annen hvis stedet for [uhørbart]? LAUREN CARVALHO: I dette tilfellet, ja jeg kan bruke en annen dersom, og det ville være helt greit fordi forholdene selv er eks hverandre. Men hvis forholdene var ikke eksklusiv av hverandre, ville denne tvinge dem til å aldri både evaluere, hvis det er fornuftig. PUBLIKUM: I så fall kunne vi reir den andre hvis du er i første om? LAUREN CARVALHO: If - hva mener du? PUBLIKUM: Hvis de to forholdene er ikke gjensidig utelukkende? LAUREN CARVALHO: Dersom vilkårene er ikke gjensidig utelukkende? Men du vil bare én av dem til å kjøre? PUBLIKUM: Du vil bare hvis stedet for andre. LAUREN CARVALHO: Yeah. Det er alltid kommer til å være mange av måter du kan gjøre dette. Du kan definitivt hekker dem. Og du vil se i en fremtidig lysbilde som du kan ha flere ifs, bare én etter hverandre. Men dette er en måte logisk organisere flyten i programmet. LUCAS FREITAS: Og det er en mer ting, er at du ba om å sette hvis og deretter en annen hvis. Det ville fungere perfekt, men det er ille design fordi utgangspunktet hvis du sjekk først om, og du merker at tallet er større enn 0, du kan bare fullføre programmet. Du trenger ikke å sjekke om det er mindre enn 0, ikke sant? Men hvis du vet om hvis, det kommer til å sjekke begge, mens hvis jeg gjøre hvis annet er, det kommer til å sjekke om den er større enn 0. Hvis det er, det er ikke til å selv se på de andre linjer av koden. Så du i utgangspunktet sjekke det ut to ganger unødvendig, så det er derfor vi gjøre hvis annet hvis. Eventuelle andre spørsmål? PUBLIKUM: Så funksjonaliteten av annet hvis det samme som hvis det var bare hvis? LAUREN CARVALHO: Nei. Du er faktisk kommer til å se i mitt neste skyver et eksempel der det kan være annerledes. I dette tilfellet er det nesten det samme. Så her har vi et eksempel på multippel hvis uttalelser, og funksjonaliteten ikke er den samme som om jeg nettopp hadde sagt hvis annet, hvis annet, hvis annet. La oss bare tenke på hva som ville skrive ut ut hvis jeg kommer inn i nummer 95 inn i dette programmet. PUBLIKUM: [uhørbart] LAUREN CARVALHO: Og så? PUBLIKUM: [uhørbart] LAUREN CARVALHO: Yeah. Så i dette tilfellet er disse forholdene er ikke utelukker hverandre. Og fordi det er ingenting som hindrer denne tilstanden fra å vurdere om dette man allerede har, de er bare alle kommer til å skrive ut. Så hvordan kunne jeg fikse dette? PUBLIKUM: Else ifs? LAUREN CARVALHO: Du kan bruke andres ifs. Jeg kunne endre rekkefølgen av disse, ikke sant? Hvis jeg gjorde dette først? Vel, faktisk, nei. Det ville ikke jobbe for 95. LUCAS FREITAS: Nei, bare de andres ifs. LAUREN CARVALHO: Else ifs ville ha løst dette. Betyr det klare opp i forvirringen mellom IFS og annet ifs? PUBLIKUM: Jeg ville bare spørre deg, hvis du brukte annet hvis, vil det stoppe? LAUREN CARVALHO: Høyre. Så bare denne første. Hvis jeg kom inn i nummer 95, bare dette ville ha skrevet ut, og det har aldri ville ha kommet til det annet. LUCAS FREITAS: Bare slags tenker på det som om dette skjer, gjør dette. Den andre er som om ikke, sjekk for dette, og deretter gjøre det. Så ut som de er alle gjensidig eksklusivt. Du kan ikke komme inn i to over de. PUBLIKUM: Kan du bruke en logisk OG for denne situasjonen? LAUREN CARVALHO: Yeah. Det er en annen måte at vi kunne har løst dette problemet. Vi kunne ha definert varierer, ikke sant? Så jeg kunne ha sagt hvis n er større enn 90 og mindre enn - vel, jeg tror dette gjør egentlig ikke rolle, men her kunne jeg ha sagt hvis n er større enn 80 og mindre enn 90. Større enn 70, mindre enn 80. Det ville også fungert. [Latter] LUCAS FREITAS: Hun er redd. LAUREN CARVALHO: Ikke vær redd. LUCAS FREITAS: Det er ikke at det vil være feil. Det er bare det at det er unødvendig ordrik. Som i informatikk, bør man være så enkelt som mulig så lenge du har den funksjonaliteten. Ønsker du godteri? PUBLIKUM: Trenger ikke det. LAUREN CARVALHO: Du skremmer alle, Lucas. LUCAS FREITAS: Beklager. LAUREN CARVALHO: David også nevnt disse bryter uttalelse i klassen. I utgangspunktet hva som skjer er bryteren uttalelsen tar en variabel. I dette tilfelle tar vi et heltall. Hvis heltall er en, skal vi skrive ut, "Du valgte en liten nummer. "Hvis heltall er en:" Du plukket et middels antall. "Dersom heltall er tre, "Du valgte en høy nummer. "Og jeg hadde også en standard sak her nede, men det er ikke viser opp, noe som er synd. I utgangspunktet er dette bare en annen syntaks. Vi kunne ha gjennomført dette eksakte samme med hvis og annet hvis uttalelser. Men når det er mange forskjellige forhold og masse forskjellig variasjoner på hva du vil gjøre for hver inngang, er dette et alternativ. Så det er bare en god syntaks å vite. Ja? PUBLIKUM: Hvorfor er det ikke en skråstrek n i det første? LAUREN CARVALHO: For der oppe? Det er ingen backslash n der oppe fordi GetInt - hvis du prøver dette, det vil gi deg denne meldingen. Gi meg et heltall mellom 1 og 3. Og hvis jeg legger tilbakeslag n, det ville ta meg til neste linje, men jeg bare ville ha dem til å skrive heltallet rett etter kolon. Du kunne ha lagt tilbakeslag n. Det er ikke en stor avtale. Yeah? PUBLIKUM: For denne koden, er dette Ved en, er at fordi det er den første saken? Fordi - LAUREN CARVALHO: Nei, nei, nei. Så dette er å gi meg et heltall mellom ett og tre. Hvis n er en, jeg skriver dette. Hvis jeg hadde bedt om bokstaver, kunne jeg ha sa gi meg en bokstav mellom A og C. Så dette ville være tilfelle A. PUBLIKUM: [uhørbart]. Saken ville bare [uhørbart] LAUREN CARVALHO: Ja, ikke sant. Yeah? PUBLIKUM: Hva om du ønsket å ha mer av en relasjons uttrykk? Så i stedet for å si n tilsvarer en, [uhørbart] n er større enn en i det første tilfellet? LAUREN CARVALHO: Egentlig, hvis jeg ikke gjør det definere noen av disse tilfellene, ville dette skal bære ned. Så egentlig, kanskje dette er ikke hva du spør. LUCAS FREITAS: Jeg tror hun spør om tilfelle var n er større enn 0, case mindre enn 0. LAUREN CARVALHO: Kanskje bryteren uttalelsen er egentlig ikke hva du vil å bruke i dette tilfellet. LUCAS FREITAS: Den bryter uttalelse er bare for verdien, så du sjekker av verdien er som dette eller hint. Så du kan faktisk ikke sette vilkår. PUBLIKUM: Hva hvis personen typer med [uhørbart]? LAUREN CARVALHO: Det ville ha vært min standard sak, som dessverre du kan ikke se. LUCAS FREITAS: [uhørbart] gjøre dem se. LAUREN CARVALHO: Egentlig vet du hva? La oss bare gå å studere 50, og jeg vil bare zoome inn på lysbildene på studiet 50, fordi dette er bare irriterende. Så la meg faktisk gå til stand. Dette er bare kommer til å ta en liten stund. OK. Så, jeg beklager. Minst nå vil vi være i stand til å se alt uten det å kutte av. OK. Så hvis de satt i en 10, vil vi misligholde her til min standard sak, og jeg ville bare skrive ugyldig fordi jeg ba dem om å oppgi et heltall mellom ett og tre. Eventuelle andre spørsmål? Yeah? PUBLIKUM: La oss si for saken en, sak tre, sier du ønsket å være hele samme, slik at du plukket en rekke det er ikke et medium nummer. I så fall ville det være overflødig? Vil du bare endre teksten i både av dem, eller vil det være en viss redundans? Er det noen måte å kombinere [Uhørbart]? LAUREN CARVALHO: Det finnes måter å kombinere dem, men jeg tror du kan bare kombinere tilstøtende seg. Så hvis jeg ikke definere noe for tilfelle to, ville dette gjelde for begge tilfeller. Å, hvis jeg ikke sette noe for saken en, vil dette gjelde for både Ved en og to. Hvis det er fornuftig. PUBLIKUM: Kan du gjenta det en? LUCAS FREITAS: OK. Hvis du gjorde i utgangspunktet, liksom, du har det samme, men du trenger ikke sette noe her, vil du være enten for Ved en eller to tilfelle, gjør dette. Høyre? Og denne pausen betyr at hvis du får i dette tilfellet, bare dra. Så det er det bremsen betyr. Så hvis jeg bare gjorde dette, ser du, det er sak en, og du ville bare gjøre dette. Hvis det var tilfelle to, ville det også bare komme hit og gjøre det. PUBLIKUM: Men du kan gjøre det? Hvis det er noe for Ved bruk av to [uhørbart] LAUREN CARVALHO: Jeg tror ikke du kan gjøre det. Jeg tror ikke du kan hoppe rundt. Kan du gjøre det, Rob? Jeg tror ikke det. PUBLIKUM: Så bare ett tall kan gå etter et fall, ikke sant? Det kan ikke være tilfelle en, komma, to? LUCAS FREITAS: Nei, det kan du ikke. Du definitivt ikke kan. LAUREN CARVALHO: Jeg mener, er det punktet dette er et alternativ, og dette ikke kan passer din bruk tilfelle, så da kan du ville bruke hvis forholdene. PUBLIKUM: Så hvorfor vil du gjøre dette? Bryteren? LAUREN CARVALHO: Jeg ville bruke denne hvis du har veldig definert - faktisk, Lucas, er du blokkerer. LUCAS FREITAS: Oh, sorry. LAUREN CARVALHO: Hvis du har veldig definerte atferd som du ønsker hver inngang, kan dette være en litt mer konsis enn å skrive ut en hvis setningen for hver enkelt. PUBLIKUM: Hva gjør break bety igjen? LAUREN CARVALHO: Bruddet betyr stopp. Husk, hvis jeg ikke hadde denne pausen her, ville vi nettopp har falt ned inn i det neste tilfelle. LUCAS FREITAS: Break betyr å få ut av bryteroppstillingen. For hvis det er en, jeg vil ha å skrive ut denne og forlate. Jeg ønsker ikke å sjekke noe annet. PUBLIKUM: Du ønsker ikke å skrive noe annet. LUCAS FREITAS: Yeah. Fordi det er gjensidig utelukkende. PUBLIKUM: Og betyr dette bare fortsette til det neste tilfelle hvis det første tilfellet er ikke sant? Eller gjør teste den alle sakene på samme tid? LUCAS FREITAS: Nei, det sjekker sekvensielt. Sekvensielt, ja. Ett spørsmål til, så vi er nødt til å gå videre, slik at vi kan dekke alt. Yeah? PUBLIKUM: Så for saken, kunne ha gjort noe annet enn bare den ene? Kan du gi den en rekkevidde? LUCAS FREITAS: Nei. LAUREN CARVALHO: Jeg tror ikke du kan gi det et område. LUCAS FREITAS: Du kan ikke du kan ikke gi det et område. PUBLIKUM: Saken er spesifikk [Uhørbart]. LUCAS FREITAS: Switch er liksom verdier. Du gjør forskjellige ting avhengig på en verdi, en bestemt verdi. Du kan ikke gjøre utvalg, kan du ikke gjøre noe annet. Det er bare et annet verktøy for å se. LAUREN CARVALHO: De fleste bruker ikke bytter uttalelser veldig mye i CS50, men den er der. OK. Så neste ting vi kommer til å snakke om er trefoldig operatør. Dette er bare en annen type av betinget. I utgangspunktet hva som skjer her er at jeg er ber om et heltall, og hvis n er større enn 100, kommer jeg til å skrive ut "Høy". Hvis det ikke er det, kommer jeg til å skrive ut "lav". Så hva det gjør er tilstanden er her i parentesene, og du kan slags tenker på spørsmålet så jeg spør om dette er sant eller ikke. Hvis det er sant, jeg kommer til å gjøre dette først ting, og hvis det ikke er sant, jeg er kommer til å gjøre dette andre ting. Eventuelle spørsmål om trefoldig operatør? LUCAS FREITAS: Vil bare oppmerksom fra David er at når du har en tilstand - LAUREN CARVALHO: Jeg antar Davids ser via live stream. LUCAS FREITAS: Han gjør life stream akkurat nå. Så når du har en tilstand, er du ment for å sette klammeparentes, akkurat som vi har i en bryter uttalelsen her. Vi har klammeparentes her. For uansett forhold, er du skal også sette det. LAUREN CARVALHO: Du vil se dette i stil guide. Vi trenger faktisk ikke ha stil guide akkurat nå. Jeg tror David er fremdeles arbeider. LUCAS FREITAS: Han sa at det er bare å jobbe nå. LAUREN CARVALHO: Åh, er det å jobbe nå? OK. Så tydeligvis dette året i stil veilede, selv om du bare har én linje, du er nødt til å putte dem klammeparentes i. Du trenger ikke nødvendigvis å for funksjonaliteten i programmet. Og kanskje vi skal bare ta en pause etter forholdene og gå rett til stilen guide for å fjerne opp noen av disse tingene? LUCAS FREITAS: Yeah. Har du et spørsmål? PUBLIKUM: Nei, jeg vil bare vente till stilen guide. PUBLIKUM: Kan du gå tilbake til trefoldig operatør? LAUREN CARVALHO: Ternær, ja. LUCAS FREITAS: trefoldig operatøren er utgangspunktet en hvis annet utsagn, men i stedet for å ha de to linjene for å kontrollere om en og deretter annet, du bare har én linje. Så i utgangspunktet hvis jeg ønsker å gi en streng en verdi på høyt eller lavt, og jeg ønsker å gjøre en høy hvis n er større enn 100 eller lavt hvis det er mindre, hva jeg kan gjøre er dette [uhørbart] strengen kommer til å bli, og da jeg spør programmet er n større enn 100? Så det er derfor jeg har dette uttrykket i parentes, og deretter spørsmålstegnet. Jeg spør er det større enn 100? Hvis det er, kommer det til å være høy. Hvis det ikke er det, kommer det til å være lav. Så innerst inne hva du tror er du spør et spørsmål, så du putter i parentes tilstanden. Så du setter spørsmålstegn fordi du spør det. Og hvis dette er sant, det kommer til å være i den første verdien [uhørbart] her. Hvis det ikke er det, kommer jeg til å sette verdi som er i det tykktarmen. Er det fornuftig? Det er også noe som er som en verktøy i C, men du trenger ikke å spesifikt bruke det. Men CS folk vanligvis liker at fordi det bare sparer linjer. LAUREN CARVALHO: Det er veldig elegant. Det gjør mye på bare en uttalelse. PUBLIKUM: Så prosenttegnet er bare hva resultatene på den forrige linje? LAUREN CARVALHO: Å, jeg beklager. Denne prosenttegn er faktisk en plassholder for dette er. I en printf uttalelse, har du fått denne streng her, som er hva som kommer til skrive ut, men du kan ikke bare sette dette er der inne. Ellers ville det skrives ut ut s bokstavelig talt. Så satte vi en prosent her til å holde dette stedet holdt uansett kommer etter komma. Så for en streng, har du fått prosent s. For et heltall, prosent jeg. For en dupp, prosent f. Du vil se de som vi se flere eksempler. Men kanskje du bør snakke om style guide for en liten stund, nå at det er opp. LUCAS FREITAS: Hvis du går til cs50.net/style, du kommer til å se stilen guide. For oppgavesett, poengsummen din for det Problemet sett består av omfang, noe som betyr at i utgangspunktet hvis du gjorde alt de delene av oppgavesettet eller hvis du forsøkt noe. Den andre tingen er nøyaktighet, som middel er programmet gjør hva det skulle gjøre, eller gjør det har bugs, eller er det ikke å gjøre det det er ment å gjøre. Den tredje er konstruksjon, noe som innebærer er du implementere dette også, eller er du bruker unødvendige uttalelser? Så for eksempel, hvis du ønsker å gjenta et nummer ti ganger, er du skrive en for loop eller er du bare gjør 10 ganger den samme setningen, bare gjør Kopier og lim inn. Så design er for det. Og til slutt, har du stil. Stil er akkurat som å dømme hvis koden din ser ut lesbar og litt pen. Det betyr bare utgangspunktet er koden din lesbar? Vil noen andre som var ute er koden din være i stand til å forstå hva det gjør? Har den kommentarer og lignende? La oss snakke om den stilen som du skal bruke. Det første er kommentarer. Kommentarer er svært viktig for din kode fordi noen ganger du gjør programmet ditt, og du vet nøyaktig hva du ønsker å gjøre, slik at du bare begynne koding, bare skriv opp en haug med C. Men hvis noen andre ser du er kode, er de ikke kommer til å være i stand til forstå det fordi de ikke vet de tingene som er i hodet ditt, som den pesudocode, så kanskje de vil har en hard tid å forstå hva koden gjør. Så kommentarer er veldig nyttig å forklare til noen som ser på koden din hva det gjør, og faktisk selv for deg, de er svært nyttig. Som du gå til hardere og harde Psets, du kommer til å se at koden blir lengre, og deretter kommentarer er virkelig viktig slik at du husker hva hver en del av programmet gjør. For å sette en kommentar, kan du bare gjøre en slash slash og deretter skrive en kommentar. Og hele linjen er en del av en kommentar, og uansett hva du skriver ned, det er ikke til å være brukes til koden din. Det er i utgangspunktet som kompilatoren kommer til å ignorere det. Betyr det fornuftig? PUBLIKUM: Hva gjør du igjen å skrive en kommentar? LUCAS FREITAS: Dette? Den skråstrek skråstrek? Når du skriver slash slash, uansett er i den linjen ikke kommer skal anses å være C. Yeah? PUBLIKUM: Så etter kommentaren, du bare gå inn og starte en ny linje? LUCAS FREITAS: Ja, akkurat. LAUREN CARVALHO: Den skråstrek skråstrek er for enkelt linje kommentarer. LUCAS FREITAS: For eksempel her har vi - la meg zoome inn - for eksempel, her jeg erklære en dupp, men kanskje hvis du bare sette dette i koden din, som du ikke aner hva dette gjør, som faktisk noen som ser på denne koden kommer til å være, som, hva pokker er det som skjer? Hvis du putter en kommentar som sier "konvertere Fahrenheit til Celsius, gjør det mye mer fornuftig. Du er, som, OK, du er gjør en konvertering. Betyr det fornuftig? Så det er bare noe som hjelper folk klar koden din og også gjøre du kunne organisere koden din bedre. Den andre tingen er at du kan gjøre flere linjer kommentarer, så har man kommentere for en haug med linjer. I stedet for å måtte sette slash slash, Den første linjen kommentarer, slash slash, den andre linjen, og så videre, du kan bruke slash stjerne. Måten du gjør det er at for første linjen i kommentaren, er du kommer til å gjøre en skråstrek star star, så bare sånn. Akkurat som her har vi i begynnelsen av et program, du vanligvis sette hvem du er, hva dette programmet gjør, og sånt. Det er litt som en header for programmet. Igjen, det er ikke noe som en kompilatoren kommer til å bry seg om, men det er viktig for deg å vite hva dette Programmet gjør eller for andre mennesker å vite hva programmet gjør. Så du slash star star, og deretter siste linje du skal gjøre stjerne slash å kunne lukke at kommentaren. Så i utgangspunktet for alle de andre linjene, du kan bare skrive hva som helst, og dette er alle kommer til å bli ignorert. Og også, akkurat som stil, vil du se at hver av linjene har en stjerne, og alle stjernene er justert. Dette er viktige ting så at koden ser pen. Høres bra ut? Nå er betingelsene. Hva David sa at vi burde faktisk satt i disse lysbildene, er at når du har noen form for hvis uttalelser eller en hvilken som helst form for betingelser, du bør bruke klammeparenteser for å vise at dette er hva som kommer til å skje når du har tilstanden. Teknisk sett, når du har en tilstand og deretter den neste linje er bare ett linje, trenger du ikke teknisk har å sette klammeparentes. I utgangspunktet kompilatoren ville forstå det likevel som implisitt. Men for CS50, ber vi dere til å sette klammeparentes bare slik at din Koden er mer organisert og mer lesbar. Fordi at koden blir lengre hvis du ikke har klammeparenteser og slikt. Det blir veldig rotete. LAUREN CARVALHO: Dette er nøyaktig hva David nettopp påpekt i mine tidligere lysbilder. Det fungerer definitivt uten krøllete bukseseler, men for stilistiske grunner vi kommer til å be om at du putte dem i. Og når du begynner å kjøre style50, som er slags sjekken 50 for stil, vil det minne deg på å gjøre dette. LUCAS FREITAS: Og en annen ting er husk å sette klammeparentes sammen i hver linje. Så du gjør, for eksempel, l's. Gå til neste linje, åpne krøllete brace, så du går til neste linje. Innrykk, som er fire plasser. Så skriver du hva, da en annen linje, og lukk klammeparentes. Så vær sikker på at både de krøllete bukseseler er i forskjellige linjer. PUBLIKUM: Så hvis denne koden hadde som 10 annet ifs, bør dette være 10 sett med braketter? LUCAS FREITAS: Ja, for hver av dem. Yeah. Så hvis, else if, og så videre. PUBLIKUM: Kan du ikke Trykk Tab for å rykke? LUCAS FREITAS: Vi ber deg gutta til å bruke fire mellomrom. Noen tekstredigeringssette kategorien som fire mellomrom automatisk. gedit ikke gjør det, så du må gjøre plass plass plass plass. Det er også noe som noen programmerere bare gjøre faner, noen programmerere bare gjøre fire områder, og noen andre folk selv gjøre to eller tre plasser. Det er bare det at her vi ber dere å gjøre fire mellomrom. PUBLIKUM: Det er nesten helt sikkert må være en måte for gedit til automatisk [uhørbart]. Som ingen [uhørbart] gjør det. LUCAS FREITAS: Yeah. Jeg tror du kan gå til Innstillinger. PUBLIKUM: Det gjør allerede alt dette. LUCAS FREITAS: Det allerede gjør? OK. Så bare pass på at du har fire plasser. PUBLIKUM: Må vi sette krøllete parentes i for sløyfer i tillegg? LUCAS FREITAS: Ja. LAUREN CARVALHO: Når din innkapsling av en kodeblokk, bare vennligst bruk klammeparentes. Og før du tror at vi er bare være sticklers om dette for ingen god grunn, hvis dere går på å få tech praksisplasser ved store selskaper, de vil gi deg en stil guide, og de vil fortelle deg dette er hva din Koden må se ut. Og selv om du lærte å kode som dette, kanskje i din internship du må gjøre noe helt annerledes. De forventer at du skal samsvare til deres stil. LUCAS FREITAS: Og en ting er som du legger merke til hvordan jeg har som x, plass, mindre, plass, 0? Når du har en operatør - det kan være som pluss, minus, ganger, mindre, større, uansett operatør - du må sette en plass på venstre og høyre for føreren. LAUREN CARVALHO: De er kalt binære operander. Bare sørg for at du alltid plass ut dine binære operander. LUCAS FREITAS: Dette er ikke en binær operand. LAUREN CARVALHO: Det er fordi det tar to. LUCAS FREITAS: Å, ja. OK, bryterne. Først må du se at akkurat som i en if eller annet utsagn, har du å sette klammeparentes på en egen linje og under den krøllete brace her. Legg merke til at det er en enkelt plass etter bytte, akkurat som i hvis og annet vi hadde et enkelt mellomrom mellom som og parenteser. Så må du sette det. Og det er ingen plass rett etter hver av de parenteser eller før slutten av parenteser. Så du ser at det er alt sammen, og liker også opp her. Yeah? LAUREN CARVALHO: Jeg tror vi trenger for å gå videre. LUCAS FREITAS: Så dette er en del av stilguide som du har for CS50. Sørg for å gå til cs50.net/style og ta en titt på dette. Disse er alle svært viktige for stilen din poengsum. La meg gå tilbake til uttalelse. LAUREN CARVALHO: Jeg vil heller bare bruke style50. Vi kommer bare til å gå rett til looper. OK. Så la oss komme tilbake til innholdet, nå at vi har gått over stilen guide. Loops, har du sett dem i Scratch, og vi kommer til å snakke om dem i C. I en for løkke, er tre porsjoner til en erklæring dette for loop. Du har din initialisering i som du setter dine variabler. Du har fått din tilstand, som er sjekke for å se om noe er sant eller usant, og om den Sløyfen skal fortsette. Og du har fått oppdateringen, som er å oppdatere variablene. La oss bare ta en rask titt på noen C-kode av dette for loop i aksjon. Hva som skjer er her i initialisering, setter vi i til 0. I den tilstanden vi sjekker om jeg er mindre enn ti. Og i oppdateringen er vi økes jeg. Så hva vil følge av dette for loop? LUCAS FREITAS: Egentlig, først av alt, vet dere vet hva jeg + + er? PUBLIKUM: Økte med 1. LUCAS FREITAS: Økte med 1, ja. Så dette er det samme som gjør jeg er lik i pluss ett. Og legg merke til at vi ikke har en plass mellom den i og + +. Så dere vet hva dette vil gjøre? Kan noen fortelle meg? Og kanskje få litt godteri på grunn av det? PUBLIKUM: [uhørbart] LUCAS FREITAS: OK. [Uhørbart] vise alle senere [uhørbart]. Ja, det kommer til å vise "Dette er CS50 "10 ganger. LAUREN CARVALHO: Jeg antar det var i tittelen på lysbildet. LUCAS FREITAS: Å, ja. [Latter] LUCAS FREITAS: Det hjelper. LAUREN CARVALHO: Så de er for sløyfer. Vi kommer til å se noen flere eksempler av for løkker senere. Men la oss faktisk ta en titt på andre type loop du vil støte i C, og det heter mens loop. I en stund loop, har du bare fikk en betingelse. Tilstanden er avkrysset i begynner, og hvis den tilstanden evalueres til sann, deretter koden innenfor selve mens blokken vil utføre. Og koden vil fortsette å utføre så lenge at tilstand er fortsatt til stede. Her er et eksempel på en stund løkke i C. Vi kommer til å sette telle til ti til begynne med. Så lenge antallet er større enn 0, vi kommer til å fortsette å skrive ut denne variabel her. Vi kommer til å minske antall og deretter sjekke tilstanden på nytt. Print, minsk, sjekk tilstanden på nytt. Her har vi et eksempel som gjelder på spørsmålet ditt tidligere. Vi hadde prosent s når vi var skrive ut en streng, og nå som vi skrive ut en int, har vi en prosent i som vår plassholder i stedet. Bokstavene bør alle være ganske intuitivt, er for streng, i for int. Så hvis denne koden utfører, bør du telle ned fra 10 til 0, skrive ut hvert heltall. LUCAS FREITAS: Og du kan tenke på prosent som det føles som en blank plass, og deretter du setter dette variabel her i det tomme rommet. Så for eksempel, her jeg vil ha akkurat en blank, og da jeg setter den telle rett der, det verdien av tellingen. Betyr det fornuftig? Kan jeg bare gjøre som printf og deretter siterer, telle? Vil det fungere? PUBLIKUM: Nei. LUCAS FREITAS: Nei, fordi det vil faktisk skrive ordet "teller" stedet for å skrive verdien. Dette er hvordan du gjør det ut verdiene mot den variable istedenfor bare navnet på variabelen. Eventuelle spørsmål? PUBLIKUM: Hvorfor bruker dere for som en motsetning til mens? LAUREN CARVALHO: Jeg ville bruke en for løkke hvis jeg vet nøyaktig hvor mange gjentakelser Jeg ønsker min sløyfe for å kjøre. I dette tilfellet spiller det ingen rolle, fordi, Jeg mener, jeg prøver bare å tenke på en veldig enkel eksempel på dette lysbildet. Men la oss si at du vil ha noe å holde det gående mens - LUCAS FREITAS: For eksempel, er du ber om innspill til den personen gir deg rett inngang. Så ut som mens inngangen er ikke OK, fortsette å spørre etter det. Eller som når du er foreldre ikke gir du penger, fortsette å spørre etter det. [Latter] LAUREN CARVALHO: Du vet ikke hvordan mange ganger du må gjøre det. LUCAS FREITAS: Fordi du ikke vet hvor mange ganger det er kommer til å holde det gående. LAUREN CARVALHO: Men i en for loop, du trenger å vite hvor mange ganger. Yeah? PUBLIKUM: Bare for å klargjøre, det prosent sier at dette er noe i ferd med å skje, de jeg er for heltall, og backslash n - LAUREN Carvalho: Midler? Hvem vet hva backslash n betyr? Ny linje, ja. Nettopp. LUCAS FREITAS: Du kan tenke av n som ny linje. LAUREN CARVALHO: Nice. PUBLIKUM: Hva er det telling dash dash [uhørbart]? LUCAS FREITAS: Count minus minus er det samme som pluss pluss, men stedet for å øke, det reduseres med ett. LAUREN CARVALHO: Noe mer mens sløyfe spørsmål? Nei? Åh, vi skulle har hoppet over det. Dette er en gjør mens loop. Svært lik en stund sløyfe bortsett dette tilfellet kan vi sjekke tilstanden etter koden i selve sløyfen utfører en gang. Så vi utføre koden først uansett hva. Så vi sjekke tilstanden, utføre det igjen hvis betingelsen er sann. Du vil finne deg selv å bruke denne når du ber om inndata fra brukeren. Fordi du alltid nødt til å spør en gang, og deretter avhengig av hva brukerens input er, må du kanskje reprompt og spør igjen og igjen hvis innspill var ikke hva du forventet at det skulle være. PUBLIKUM: Så det er som en form for folk å fylle ut. LAUREN CARVALHO: Ja, akkurat. Du vil finne, tror jeg, i din aller første PSett, du er nødt til å bruke en gjør godt sløyfe for å samle input fra brukeren. PUBLIKUM: Avhengig av situasjonen, mens loops vil tendere til å kjøre mer oftere enn mens looper, som av en eller noe? LAUREN CARVALHO: Hvis det er den nøyaktige - LUCAS FREITAS: De bør alltid kjøre den eksakte mengden av ganger at du vil den skal kjøre. Som vi bruker gjøre mens fordi vi egentlig ønsket å få inngangs minst én gang. I mens looper, noen ganger du ikke ønsker å utføre det i det hele tatt hvis det ikke er Ved å utføre. Så det kommer an på design. Jeg mener, kan du enten bruke gjøre mens eller mens så lenge koden din gjør at det er ment å gjøre. LAUREN CARVALHO: Men jeg gjør tror svaret på ditt Spørsmålet er trolig ja. La oss si at tilstanden var falsk. I ett tilfelle ville det løpe en gang, og et annet tilfelle det ville kjøre null ganger. Så, ja. Eventuelle flere spørsmål? Ja? PUBLIKUM: Kan loopen tilstand være en for loop i form av en variabel andre enn [uhørbart]. LAUREN CARVALHO: Yeah, det kan være hva som helst. Sannsynligvis for begynnelsen Psets, du slipper å møte så fall, men definitivt kan det være noe. LUCAS FREITAS: Jeg tror vi er ferdige her. LAUREN CARVALHO: Er vi? Nei? LUCAS FREITAS: Loops? Yeah. LAUREN CARVALHO: Vi bør ikke være. Åh, er vi ferdige med sløyfer. OK. Egentlig, fordi vi har snakket så mye, la oss faktisk alle navigere over til study.cs50.net/conditions. Og du kommer til å navigere ned til problemene widgeten. Vel, faktisk, mens folk får dette satt opp, er det CS50 Study kommer til å bli et verktøy som dine TFs vil bruke til å forberede seg for seksjoner og at dere kan bruke hvis du går glipp av seksjoner. Det kommer til å inneholde en haug med lysbilder, noen tips og triks for hver tema, og noen praksis problemer med løsninger. Hvorfor ikke alle bare ta en titt på dette problemet her. Jeg beklager, jeg burde ha minnet folk til å bringe bærbare datamaskiner i dag. Men hvis du ikke har en bærbar PC, er det OK. Du kan bare skrive dette ned på et stykke papir eller se over naboens skulder. La oss prøve og skrive et program som ber brukeren om å ta en gjetning, den gjennomsnittlig antall barn per familie enhet i USA. At antallet er to, forresten, som du kan se fra disse eksemplene. Vi ønsker å skrive ut gjennomsnittlig antall barn per familie i USA, så vi ønsker til hva? Vi ønsker å samle innspill fra brukeren. Og så avhengig av hva brukerens innspill er, du kommer til å skrive ut enten dette er riktig eller dette er feil. Og den aller første tingen som du vil se, hvis du klikker på den lille pilen ved bunnen av problemet widgeten er en øye å notere ned noen pseudo. Så du ikke programmerer ennå. Du bare får din ideer i orden. Er det noen som ønsker å hjelpe Lucas komme opp med den rette pseudo for dette problemet? LUCAS FREITAS: Hva er det første at vi bør nok gjøre her? Hva tror dere? PUBLIKUM: [uhørbart] LUCAS FREITAS: Ja, OK. Så, print. Bare si utskrifts dette gjennomsnittet antall mennesker? OK. Skriv ut spørsmålet, la oss si. Etter at jeg skriver dette spørsmålet, hva bør jeg gjøre? PUBLIKUM: Få innspill. LUCAS FREITAS: Få innspill. Noe mer? PUBLIKUM: Tilstand. LUCAS FREITAS: Tilstand. LAUREN CARVALHO: Hva er det tilstanden kommer til å bli? PUBLIKUM: Antallet [uhørbart]. LAUREN CARVALHO: Høyre. LUCAS FREITAS: Så hva skal jeg å sjekke inn tilstanden? PUBLIKUM: Hvis det er lik to. LAUREN CARVALHO: Hvis det er lik to. Nettopp. LUCAS FREITAS: Er det noe annet som jeg bør gjøre? PUBLIKUM: Tell. LUCAS FREITAS: Så hvis det er lik 2, la oss si - la meg bare skrive om innspill lik til 2, så hva jeg skal å gjøre er å skrive ut riktig. Og så annet, jeg kommer å skrive ut feil. Noe mer? Nei? LAUREN CARVALHO: Så du kan klikke på den - ikke alle har dette ned? LUCAS FREITAS: Er det fornuftig? Så nå skal vi prøve å kode dette. LAUREN CARVALHO: Hvis du klikker på den lille arrow, sparer det faktisk din pseudo, noe som er veldig spennende. Og du kan lage dem inn kommentarer om du bare ønsker å minne deg selv på hva de skal gjøre. LUCAS FREITAS: Så for eksempel først Jeg kommer til å skrive spørsmålet, så hvordan skal jeg gjøre det, egentlig? printf. Så printf, og spørsmålet er gjennomsnittlig antall barn per familie i USA. Så jeg kommer til å få input fra brukeren. Så hvordan kan jeg gjøre det? PUBLIKUM: Få Int.. LAUREN CARVALHO: GetInt. LUCAS FREITAS: OK. Så først erklære, ikke sant? int, la oss kalle det n er lik GetInt. Og nå tilstanden. Så la meg si at jeg kommer å her Sjekk svaret. Så først, hvis inngang, som er n, er lik til - hvordan skal jeg skrive det? PUBLIKUM: Lik lik. LUCAS FREITAS: Perfect. Så n. Og legg merke til at jeg gjør et mellomrom, lik, lik, plass, sant. Og nå hva skal jeg gjøre? Noe som er veldig viktig for stil. Klammeparentes. Og så kommer jeg til å skrive ut. Hvordan skriver jeg ut? printf. PUBLIKUM: Kan det bli store bokstaver? LUCAS FREITAS: Nei. Det er ment å være alle små bokstaver. Så det er riktig. Vil dette være nok for printf uttalelse, eller jeg mangler noe? PUBLIKUM: Ny linje. LUCAS FREITAS: Ny linje, ja. Og nå annet. PUBLIKUM: Er det en plass etter printf, eller nei? LAUREN CARVALHO: Vi bør Sjekk stilen guide. PUBLIKUM: Det bør ikke være. LUCAS FREITAS: Bør ikke være, OK. Så annet, printf, "Det er feil." LAUREN CARVALHO: Oops, dine sitater. LUCAS FREITAS: OK. Noe mer? Ser det bra ut? LAUREN CARVALHO: Skal vi prøve det? LUCAS FREITAS: Ja, la oss kjøre den. Så det er kompilering, og det synes at det fungerer. La oss prøve to barn. Det er riktig. Og nå la oss kjøre igjen, men nå i stedet av å sette to barn, la oss si at jeg kommer til å sette som fem. Det er feil. Så det virker som det fungerer. LAUREN CARVALHO: Hvorfor ikke vise dem hva skjer hvis du putter noe rart, som noen bokstaver. LUCAS FREITAS: Å, ja. La oss også sjekke det. Hva om brukeren prøver å rote med programmet, og de bare skrive, vet jeg ikke to. Det kommer til å si retry. LAUREN CARVALHO: Så GetInt ber dem om å prøve på nytt. Vi trengte ikke å ta vare av det selv. LUCAS FREITAS: Yeah. Så med mindre jeg faktisk sette et tall, er det kommer til å fortsette å spørre meg om å prøve på nytt. PUBLIKUM: Hvordan fikk du kjøre den? LUCAS FREITAS: Bare klikk denne stjernen knappen. LAUREN CARVALHO: Du bør gå opp. Der du går. LUCAS FREITAS: Stjernen knappen til høyre der. Yeah? PUBLIKUM: Betyr det be [uhørbart] med desimaltall også? LAUREN CARVALHO: Jeg tror det vil. LUCAS FREITAS: Hvis den gjør det? LAUREN CARVALHO: Hvis de skriver i et desimaltall, tror jeg det kommer til å be. LUCAS FREITAS: La oss se. LAUREN CARVALHO: Fordi det er ikke en int. LUCAS FREITAS: Yeah. LAUREN CARVALHO: Så det er det ikke en int, Få Int vil be deg om å prøve på nytt. PUBLIKUM: Så hvor i den koden ville være desimalplassen som ber bruker som de har til å gå inn et heltall spesifikt? LAUREN CARVALHO: GetInt er faktisk gjøre det for oss. PUBLIKUM: Nei, jeg mener hvis vi ønsket å gå inn [uhørbart] LUCAS FREITAS: Du kan si som gjennomsnittlig antall barn i USA. Jeg vet ikke. Vi kan si, for eksempel, "Vennligst inngangs et heltall. " LAUREN CARVALHO: Et heltall lik til det gjennomsnittlige antall. Jeg mener, det er bare hvordan du ordet det, ikke sant? LUCAS FREITAS: Yeah. Dette er ikke en del av faktisk koding. Det er mer av som hva du kommer til å ønske å skriver i programmet. PUBLIKUM: Hvordan ville vi har kjørt den hvis det var faktisk i gedit [uhørbart]. I stedet for å trykke på play? LUCAS FREITAS: Vi vil første kompilere den. Vi kan gjøre det ved å gjøre make og navnet på filen. Og deretter å kjøre den, vil vi gjøre dot slash og navnet på programmet. PUBLIKUM: Jeg antar det jeg mente var om vi ønsket at programmet skal svare på deres feil, ugyldig oppføring, du bør ikke sette i - LUCAS FREITAS: Vi vil ikke være i stand til å gjøre det fordi koden dette sier prøv på nytt kommer fra Get Int som er en funksjon som allerede er iverksatt for oss via CS50-biblioteket, og siden det er allerede implementert det, vi kan ikke bare [uhørbart]. LAUREN CARVALHO: Hvis du ikke bruker GetInt, så kan du gjøre det. LUCAS FREITAS: Yeah. Men hvis du bruker GetInt, kan du ikke. Eventuelle andre spørsmål? PUBLIKUM: Kunne du ha gått med lignende GetFloat og da kunne sette den i en desimal? LUCAS FREITAS: Yeah. PUBLIKUM: OK. Da har du bare kunne inngang flyte en likemenn - LAUREN CARVALHO: Yeah. Nøyaktig den samme bortsett fra en flyte i stedet for en int. LUCAS FREITAS: Bare legg den her og deretter GetFloat der. PUBLIKUM: Som du vil se eller har sett - LAUREN CARVALHO: vi har ikke fått det ennå. PUBLIKUM: - gjør ulikhet med flyter ikke [uhørbart] PUBLIKUM: Hva betyr de semikolon? LAUREN CARVALHO: Semikolon bare betyr at denne setningen er fullstendig, og vi kommer til å gå til neste lysbilde. PUBLIKUM: Så det er nødvendig hver gang? LAUREN CARVALHO: Yeah. Vel, OK, så ikke for disse forholdene, fordi de er innkapsle noe. Så i utgangspunktet hvis det er noe som forårsaker du deretter opprette en klammeparentes blokk, ikke sette et semikolon ved enden. LUCAS FREITAS: Men alt annet, ja. Når du er ferdig med en uttalelse, sette semikolon. Og hvis du glemmer semikolon, den kompilatoren kommer til å bli sint på deg, og du kommer til å ha å prøve å fikse det. LAUREN CARVALHO: Hvis jeg sette et semikolon her, som ville stoppe dette, og jeg aldri ville komme til å utføre det som er innsiden, for øvrig. Så det er en av de vanligste feilene. PUBLIKUM: Alltid utføring. LAUREN CARVALHO: Yeah. I dette tilfellet, ville vi alltid utføre hva som er inni. PUBLIKUM: Din stil [uhørbart] feste det for deg, tenkte. LAUREN CARVALHO: Åh, det er sant. PUBLIKUM: [uhørbart] singel linje ting [uhørbart] PUBLIKUM: Ja? PUBLIKUM: Kan du ha flere innganger i en linje? Så som du kan spørre brukerne å skrive ut to ting? LAUREN CARVALHO: Bruker ikke - LUCAS FREITAS: Nei. La oss si at jeg også vil ha å få denne heltall m. Jeg må gjøre det på en annen linje. PUBLIKUM: Hvis du skulle kjøre det, hvordan [uhørbart]? Det ville skrive meldingen det [uhørbart] og da vil du angi ett og - LAUREN CARVALHO: Vel, kjøre den. Jeg mener, det er ingenting som hindrer oss fra bare kjører det og se hva ville skje. LUCAS FREITAS: Jeg tror det er kommer til å klager på oss fordi vi ikke bruker - LAUREN CARVALHO: Oops. LUCAS FREITAS: Det klaget på oss riktig nå fordi vi ikke bruker denne variabel, men hvis jeg f.eks n er lik lik, og m er lik lik, så hva vil skje i dette tilfellet? Hva ville dette programmet gjøre? PUBLIKUM: Jeg bare lurer hvordan det ville - LAUREN CARVALHO: Hun vil bare å vite hvordan den ser ut liker, tror jeg, ikke sant? Slik at det tok en av dem, og deretter det tok den andre. Jeg tror vi bør gå videre, fordi vi har ett mer lysbildefremvisning å gå før - har du lyst til å trekke opp matte? LUCAS FREITAS: Ja, matte. LAUREN CARVALHO: Gi meg bare ett sekund. Det er noen forskjellige numerisk variabler i C. Tall data i C kan deles inn i ulike typer, og disse er de du vil se oftest. Og int er et helt tall. Du kan ikke ha noen desimaler. I Appliance, tar det 32 bits å lagre en int. En flottør kan ha desimaler. Det tar også 32 bits for å lagre en flottør i Appliance. En dobbel er et tall med en desimal punkt som tar 64 bits for å lagre den, noe som betyr at du kan bare ha større presisjon fordi du kan ha mer - hva kaller du det? LUCAS FREITAS: Ja, det er mer. LAUREN Carvalho: Flere steder etter desimaltegnet. Og en lang lang er et helt tall som tar 64 bits til sår det i Appliance. LUCAS FREITAS: Så det kan være større enn ints kan være. LAUREN CARVALHO: Saken om data typer i C er at de forteller deg hva type data du kan lagre i variabelen. De forteller deg hvordan du kan bruke denne variabel i programmet. Det er veldig viktig å bare holde styr av hva datatype du bruker, og hvis du trenger ikke å kaste fra en datatype til en annen, må du kontrollere at du vet nøyaktig hva som skjer når det støping finner sted. Og du vil se et eksempel senere på i disse lysbilder av en feil som kan oppstå. La oss ta en titt på litt matematikk i C og tror virkelig nøye, antar jeg, om hva som skjer når dette matematikk foregår. I den aller første linje, hva er skjer når jeg erklærer x? PUBLIKUM: Dere tillater x å være noe? LAUREN CARVALHO: Yeah. Vel, jeg egentlig spør drifts system for 32 biter av minne, ikke sant? Der jeg kan lagre en int, og Jeg kommer til å kalle det int x. LUCAS FREITAS: I utgangspunktet går i minnet og finne et sted som har 32 biter og ordtak, hei, jeg vil ha denne plassen, og det kommer til å bli kalt x. Så du er bare ganske mye funn en boks i hukommelsen for å lagre verdier for x. LAUREN CARVALHO: Og da jeg initial x, hvilket betyr at jeg bare lagre verdien av to på det stedet, som blings minne, som vi spurte drifts Systemet for. Og her nede hva vi holder på med er vi faktisk erklære og initialisering y på én linje i stedet for i to linjer som vi gjorde her oppe, som også er et helt greit, er vi legger en til x, og vi lagrer at verdi i y. LUCAS FREITAS: Så i utgangspunktet hva dette linjen gjør det, den finner nå en boks for y, og deretter sin verdi, det som du kommer til å sette inne i boksen, er kommer til å være verdien av x pluss en. Så det har denne boksen for y. Det blir verdien av x, ser her, og se at det er to. Sett det der, pluss en, så det setter et tre der. Betyr det fornuftig? Så y vil være to i dette tilfellet. LAUREN CARVALHO: Ok, kult. Vi så noen tillegg, så la oss nå tenke om divisjon i C. Her er jeg erklære og initialisere en dupp kalt svar og dele en med 10, og da skal jeg skrive ut svaret til to desimaler. Og legg merke til her, i mitt printf uttalelse, når jeg ønsker å skrive ut noe til to desimaler, er% .2 f hva jeg ønsker å bruke. Så poenget to er bare å si Jeg trenger to steder etter desimal skrives ut. Nå, hva kommer til å skje hvis jeg kjører denne koden? Er det noen som har en idé? Hva ville skrive ut? LUCAS FREITAS: Hva er vi forventer å få. LAUREN CARVALHO: Hva gjør vi ønsker, først av alt? LUCAS FREITAS: [uhørbart] LAUREN CARVALHO: 0.1, ja. Men hva vil skrive ut? PUBLIKUM: [uhørbart] LAUREN CARVALHO: Vel, nei, faktisk. Dette er hva jeg snakket om hvorfor du trenger for å holde svært forsiktig styr på dine datatyper. Så, hva datatype er dette? Er en int, ikke sant? Det er ingen desimal. 10 er også en int. Det er ingen desimal. Hvis jeg deler en int med en int, får jeg en int, som ikke er 0.1, fordi ints kan ikke ha desimaler, men bare 0. Fordi en int bare avkorter off de desimaler. LUCAS FREITAS: Så når du gjør operasjoner med ints, du kommer til å få en int som svaret. Så i utgangspunktet, hva maskinen gjør, det skiller en by 10, og det blir 0,1. Men så er det som å, vent, dette er ment å være et heltall, slik at du bare ignorere 0,1, så det er nå bare 0. LAUREN CARVALHO: Så når jeg skriver dette ut, får jeg 0,00 i stedet for 0,10. LUCAS FREITAS: Betyr det fornuftig? LAUREN CARVALHO: Det er en slags av uheldig, ikke sant? LUCAS FREITAS: Så hvordan kan vi løse dette? LAUREN Carvalho: La oss prøve og fikse det. Her er et eksempel på hvor jeg er faktisk avstøpning en og 10 til flyter. Så nå, er en ikke lenger en int. 1 er en flottør. Forresten, er dette bare syntaksen for når du ønsker å kaste fra en datatype til en annen. Du kan bare sette datatypen i parenteser og har som bare forut verdien som du kaster. Så her er jeg dele en flåte av en flottør for å få en flyte svar. Og ja, dette ville i Faktisk skrive ut 0.10. Betyr det fornuftig? LUCAS FREITAS: Så type casting er bare konvertere fra en type til en annen. Så flyter en er faktisk 1.000. Ikke akkurat dette, men det er noe med desimaler det er faktisk en. Betyr det fornuftig? Yeah? PUBLIKUM: Hva om du gjorde float svar er lik 1,0 delt på 10? LAUREN CARVALHO: Du blir faktisk kommer å se at i neste lysbilde. Det er faktisk vår neste lysbilde. Dette er faktisk en hyggeligere enn skriver casting, tror jeg. Så disse to er flyter bare ved arten av det faktum at de har desimaler. Ja? PUBLIKUM: Hva om du gjorde [uhørbart] delt på 10? LAUREN CARVALHO: Egentlig en dupp delt på en int faktisk gir deg en flyte, så det ville fungere fint. Vent, ikke alle forstår dette? Fordi dette kommer til å bli en virkelig big deal i Pset1, faktisk. Ja? PUBLIKUM: Kan du bare raskt gå over den røde delen? LAUREN CARVALHO: Den røde delen, ja. Lucas, vil du? LUCAS FREITAS: OK. Så husk at prosent er en plassholder. Det er som en tom plass. Så la oss prøve å forstå alt som skjer her. Prosent betyr at det er en plassholder. Da har du f, noe som betyr at denne plassholderen er for en dupp. Den siste tingen som vi har her er en 0,2, som betyr at jeg ønsker å ha to desimaler for flottøren. Hvis jeg bare hadde% f, de vil sette en haug med desimaler. Så jeg kan bare sette 0,2 eller 0,1 eller 0,5, eller uansett, og det kommer til å sette det antall desimaler. Det eneste er at hvis du legger ut .100 Eller .1,000, er det faktisk ikke kommer til å sette alle disse desimaler fordi den ikke har nok minne å ha det presisjon. Eventuelle andre spørsmål? Yeah? PUBLIKUM: Så flyte bare tillater du å gå utover heltall? LUCAS FREITAS: Ja. LAUREN CARVALHO: Vel, en dupp bare gjør at du kan ha desimaler. LUCAS FREITAS: Det betyr bare at du nå kan ha desimaltall. PUBLIKUM: Hvorfor skulle vi noen gang bruke heltall? LUCAS FREITAS: Hvorfor skulle du bruke heltall? Kanskje hvis du teller fra 0 til 10., du ønsker å bruke faktisk et heltall. Du trenger ikke å bruke en dupp. I noen situasjoner, gjør du ikke må faktisk - LAUREN CARVALHO: Kanskje du ønsker ikke desimaler. LUCAS FREITAS: Kanskje du ikke ønsker å bruke en dupp. LAUREN CARVALHO: Den andre tingen er, husk, begge satt en dupp og en int ta 32 bits til å lagre dem, og kanskje om du ikke ønsker å kaste bort biter på desimaler. LUCAS FREITAS: Yeah. Så ut som, bare tenke på dette. Du har 32 bits for både en int og en flåte. For en int, alle disse 32 bits gå til heltall del. Hvis du bruker en flåte med 32 bits, du har en del av dette minnet blir brukt etter nummeret, for hele tall, og den andre delen blir brukt for desimaler. Så det betyr at du ikke kan komme til svært store tall med flottører fordi flottøren er allerede bruker mye minnet for desimaler. Yeah? PUBLIKUM: Det første svaret, hva er det du gjør? Er det å sette verdien av float lik til at plassholderen til at du kan husker det i neste linje? Det sier flyte svaret. LUCAS FREITAS: Yeah. Så betyr float svaret du får nå en liten bøtte i minnet som innehar en dupp, og det kommer å bli kalt svaret. Så det er hva float svaret gjør. Og så sier du at innsiden av dette, kommer du til å sette resultatet av dette. Så du kommer til å gjøre 1,0 delt på 10,0, får du 0,1, og deretter sette at innsiden av svaret. LAUREN CARVALHO: Så i en linje, er vi erklære og initialisering denne flyte kalt svaret. LUCAS FREITAS: Interessant, selv om Dette er bare én linje, det gjør flere operasjoner. Det er bare en måte å C utleie du bruker mindre kode. Det er det samme som trefoldig operatør, hvordan du kan bare gjøre en [Uhørbart] i én linje. Det er faktisk å gjøre det samme som gjør float svar, semikolon, og så svaret er lik denne, men i stedet for gjør du gjøre to linjer for det, det er som en snarvei. Yeah? PUBLIKUM: Så hvis du kjørte dette, det ville være 0,10? LUCAS FREITAS: Ja. Yeah? PUBLIKUM: Er svarer faktisk kode, eller er det bare navnet? LAUREN CARVALHO: Dette er faktisk kode. Dette er hva vi skal for å nevne vår variabel. PUBLIKUM: Så det er bare et navn [uhørbart]. LAUREN CARVALHO: Yeah. Jeg kunne ha sagt float x lik 1,0. LUCAS FREITAS: Saken er at navnet på den variabelen er noe som du bruker. Det er viktig for deg. For selve programmet, det eneste at saker er den verdien som du har inne i bøtta. Grunnen til at du har variabler og navn på variabler er slik at du vil vite hva du arbeider med, som hva slags data du er tilgang til på en gang. Men for selve koden, hvis du ringer det besvarer eller spørsmål eller noe, ganske mye, spiller det ingen rolle. Det spiller ingen rolle. Så lenge du er konsekvent i hver forekomst det og så kaller du det noe annet. Yeah? PUBLIKUM: Gjør variablene gå utover funksjonen? Som hvis du skulle lage en brakett [Uhørbart], kan du bare [Uhørbart] svare igjen? LAUREN CARVALHO: Nei. PUBLIKUM: [uhørbart] LAUREN CARVALHO: Nei. Det ville være utenfor rammen av denne variabel. Og faktisk, det er slags interessant, fordi når vi har ting som sløyfer eller disse hvis forhold, hvis du deklarerer en variabel innenfor et annet sett med klammeparentes, det egentlig bare finnes innenfor disse klammeparentes. PUBLIKUM: En siste merknad om de [uhørbart] flyter. Hvorfor skulle du ønske å bruke ints? Dette er mer av en side note enn noe, men datamaskinen er betydelig bedre til å håndtere ints enn det er ved håndtering flyter. Det er som en bestilling av ordener raskere. Så hvis vi bare håndteres bare flyter, ting ville være mye tregere. LAUREN CARVALHO: Egentlig, det synes å være et problem med flottører. LUCAS FREITAS: Kind av grunnen til at du kan tenke, er hvordan i binær du kan representere heltall ved å sette 0-er og 1-tallet. LAUREN CARVALHO: Det er neste ting. LUCAS FREITAS: OK. Awesome. LAUREN CARVALHO: Just Hold den tanken. LUCAS FREITAS: OK, jeg skal fortelle deg senere. LAUREN CARVALHO: Før vi kommer til hva Lucas var bare si, operatør forrang. Dette er sunn fornuft. Dere har gjort dette nok. Så, bare hvis noe er i parentes, det vil skje først. Det er multiplikasjon forrang over addisjon, subtraksjon, sånne ting. Så egentlig, bare det noen som ønsker å fortelle meg hvilket nummer man faktisk evalueres til? PUBLIKUM: 27. LAUREN CARVALHO: 27? Yeah. LUCAS FREITAS: La meg gi godteri til folk. LAUREN CARVALHO: Greit. Hva med nummer to? Hva med nummer to? PUBLIKUM: 22. LAUREN CARVALHO: 22, ja. Jeg vet ikke hvem som fikk det. Nummer tre? PUBLIKUM: 10. LAUREN CARVALHO: 10, ja. Cool. Så modulo. Lucas, har du lyst til å forklare modulo? LUCAS FREITAS: Modulo er denne aktøren som faktisk er meget nyttig for en haug med problemer. Hvis jeg gjør 55 modulo 10, hva den gjør dette la oss si at jeg ønsker å dele 55 av 10. Hva får jeg? Det føles akkurat som om jeg er faktisk bare gjør divisjonen, hva er det første gang at jeg fikk heltall? PUBLIKUM: 5. LUCAS FREITAS: 5. Og så resten er fem, ikke sant? Så det er som 5 ganger 10 pluss fem. Innerst inne, hva modulo gjør, forsøker den å dividere dette tallet med denne ene, og det ser hva som er den gjenværende av divisjonen. LAUREN CARVALHO: Så det bare Returnerer resten. Så nummer én er hva? 5. Nummer to? PUBLIKUM: tre. LAUREN CARVALHO: tre. Nummer tre? 0. Og fire er en. Nettopp. LUCAS FREITAS: Enkelt, ikke sant? LAUREN CARVALHO: Hvorfor kan ikke vi hoppe over dette bare fordi vi egentlig ikke har tid, og folk ser ut til å forstå. Så her er hva Lucas var bare snakker om. LUCAS FREITAS: En annen grunn til at jeg ville bruke ints i stedet for flåter er som flyter er svært upresise. Og hvorfor er de upresise? David sa at for å representere et heltall, for eksempel, bruker vi 0 og En sin, ikke sant? Og så er du i utgangspunktet gjøre det multiplikasjon, gjør alt de operasjoner for å vite hva desimaltall du har i stedet for det binære. Hva skjer nå hvis jeg prøver å sette desimaler? Egentlig, for eksempel, hvis jeg har antall som 3,33333? Det føles som 10 over tre. Hvordan skal jeg lagre all 3 er at jeg har etter det? Det er virkelig vanskelig, ikke sant? Du kan ikke bare fortelle datamaskinen, hei, jeg har en 3, og så gjør du det for alltid. Egentlig datamaskinen er ikke smart nok for dette. Så i utgangspunktet alle datamaskinen gjør er at den prøver å sette så mange sifre som det kan opp til minnet du har. Så la oss si at det kommer til å si 3,3333, og det er det. Så det er ikke i stand til å faktisk uttrykke nøyaktig hva som flyter er. LAUREN CARVALHO: Vi har et endelig antall biter, noe som betyr at ikke hver desimaltall kommer til å være i stand til å bli representert nøyaktig. Og så i dette eksempelet, hvis vi er skrive ut 0.1, er vi nå utskrift ut 20 steder. LUCAS FREITAS: Akkurat som jeg var å fortelle dere, kan du sette noen tall. Men hvis du bare gjorde de to stedene, du vil få 0,10, men hvis du setter 20 steder, det kommer til å vise deg en haug av 's fordi dette er hva du kan putte i minnet, ikke sant? Men akkurat her, opp til 0, og da er bare sette det en haug av tilfeldige tall. Dette er typen som noen - LAUREN CARVALHO: Dette er fordi vi er ikke i stand til å representere dette desimal nettopp med antallet biter har vi. LUCAS FREITAS: Og så Datamaskinen er i utgangspunktet noe som gir deg en søppel nummer. Dette er egentlig ikke en Verdien av tallet. PUBLIKUM: Det er så nær som det kan få [uhørbart] ved hjelp av [uhørbart]. LAUREN CARVALHO: Så implikasjonen av dette er at la oss si at i stedet for være 0.100014, uansett, hva hvis det var 0,0999 - vel, OK. La oss late som om den faktiske svar til dette var 0,9999999. Det er svært nær en, men det er ikke akkurat en. Det er 0,99999. Det betyr at hvis jeg tar det 0.999, og jeg kastet det til en int, får jeg 0. Jeg får ikke en. LUCAS FREITAS: Fordi husk, støping fra float til int, du bare ignorere alle desimalene. Du bare ignorere dem. Det finnes ikke noe slikt som avrunding opp eller kjører ned når du typecast. Egentlig er dette funksjon som gjør avrunding, noe som er svært viktig, men du må bare tenke at når du gjør typecasting, det er bare kommer til å slette alt. Så selv om du har 0,99999, det kommer å bare gi 0 hvis du typecast [Uhørbart] et heltall. LAUREN CARVALHO: Så bare være veldig klar av flyttall i presisjon, spesielt når du starter å bruke flyter i Pset1. Men turen gjennom bør advare deg om det også. LUCAS FREITAS: Og faktisk er det egentlig hard, for eksempel hvis jeg float svaret 1 tilsvarer 1,0 løpet 10, og deretter flyte svar 2 tilsvarer 10,0 enn 100,0. De er det samme tallet, ikke sant? 0,1, ikke sant? En over 10 eller 10 over 100. Men nå hvis jeg prøver å se på likestilling, som hvis svaret 1 er lik svare 2, kanskje det ikke er faktisk kommer å være det samme. Så flyter er litt sånn. De er som gjør likestilling.