LUCAS FREITAS: OK, antar jag Nu är vi live. Välkommen till CS50 Supersection. Vi är mindre bekväm. Mitt namn är Lucas Freitas. Jag är en CS50 Head TF. Det här är Lauren. LAUREN CARVALHO: Hej, jag är Lauren. Jag är också chef TF för CS50. LUCAS FREITAS: Idag ska vi bara gå för att ge en översikt över vad du Killarna har lärt sig i veckan en, förhoppningsvis för att ge er en bra känsla till vad du bör veta för problem ställa in en. Bara ett par meddelanden. Först av allt, kontorstid. Öppettider sker från måndag till torsdagen i olika hus i Annenberg varje dag. De är en mycket bra resurs för dig killar att komma och ställa frågor, och prata med TF, och till och med utbyte idéer med andra studenter. Så se till att använda den resurs till din fördel. Det andra är det CS50 Appliance. För sista [OHÖRBAR] ni behövde inte faktiskt har en apparat. Du gjorde precis allt i din dator. Men för det här problemet, du faktiskt har att ha en virtuell maskin, så var Glöm inte att ladda ner CS50 Appliance och ställa upp. Och den tredje saken är att se till att starta problemet satt ASAP bara eftersom det är mycket lättare att hitta hjälpa till när du är i början av veckan. Eftersom människor tenderar att vänta tills sista sekund för att starta problemet set, och sedan går du till kontorstid, och det finns en massa människor. Där om du går på måndag, du kommer för att se till att du kan prata med TF ganska mycket för hela natten, och de kommer att vara mer än gärna hjälpa dig. LAUREN CARVALHO: Kan jag sluta bara du för bara en sekund? Har alla kunnat ladda ner den CS50 Appliance? Har folk försökt? LUCAS FREITAS: För att ladda ner, med sätt kan du få instruktioner på cs50.net/appliance. LAUREN CARVALHO: Höger. Och det tar en liten stund för vår systemadministratörer för att få dig en licens nyckel, så registrera dig för fri rättegång först. Så att du får det i 30 dagar, och sedan vänta på din licensnyckel vilket borde ge det till dig för ett år. LUCAS FREITAS: Först av allt, låt oss prata lite om CS50 Appliance. Den CS50 Appliance är faktiskt en virtuell maskin som du kommer att köra i din egen dator som är i grund och botten kör en annan dator i din egen dator. Vilket är ganska coolt. Och faktiskt den används överallt. Människor som till tech skulle veta att detta används hela tiden. du? Kan ha flera datorer i en enhet. Låt oss verkligen ta en titt vid Appliance. När du går till Appliance efter registrering, du kommer att behöva sätta ditt namn och logga in på Harvard så att vi kan få er alla registrerade. Du kommer att få se i princip bara en tapeter, och sedan hem och papperskorgen, och sedan dessa små ikoner. Dessa tre ikoner är faktiskt den mest viktiga saker som du kan ha i din apparat. Den första är gedit, som är en text redaktör, precis som Anteckningar eller liknande någon form av textredigerare. Det är bara något som vi använder för att skriva kod och sedan göra saker med det. Det andra som vi har här är Chrome. Så om du behöver för att använda internet i Appliance, det är vad du kan använda. Och den tredje saken är terminalen, vilket faktiskt är mycket söt. Folk brukar slags rädd för terminalen eftersom det är just denna gammaldags program där du bara i princip skriva allt med tangentbordet. Det finns inte en hel del interaktion med musen. Men egentligen terminalen gör mycket bra saker. Först av allt, låt oss bara gå igenom några kommandon som du kan användas i terminalen. LAUREN CARVALHO: Och tveka inte att stoppa oss om du har några frågor. LUCAS FREITAS: Ja. Så det första kommandot som vi har för terminalen är ls. ls princip innebär lista allting, allt filerna och alla direktörer, som jag har på den plats som jag är på. Så om jag gör ls här, kommer jag att se att jag har några kataloger. Jag har på skrivbordet, nedladdning, loggarna samt vhosts. De som är i blått eftersom de är alla kataloger. Då har du några andra filer. Du har som hej och hej.c, vilket är bara filer, och de är i olika färger. Så detta är ett mycket viktigt kommando bara Du kan se vad som är filerna och kataloger som du har i katalogen som du är på i terminalen. När du ser jharvard @ apparat och då den lilla symbolen där, tilde, det betyder bara att det är den katalog som du är just nu. LAUREN CARVALHO: Så skriver ls är nästan som att klicka på mappen som är noterat just där, i det program du allt innehåll som är inom den mappen. PUBLIK: Finns det text efter hej.c? LAUREN CARVALHO: Åh, kan du inte se det, eftersom det är blått. LUCAS FREITAS: Den säger loggar och vhosts. LAUREN CARVALHO: De är bara andra mappar. Jag är ledsen, det är verkligen svårt att se. Kanske om vi släckte ljuset? Colton, vill du försöka hitta strömbrytaren? Ledsen för det. Jag tänkte inte på det. LUCAS FREITAS: Men det är i grund och botten - ja, om du kunde - LAUREN CARVALHO: Zooma in på skärmen. LUCAS FREITAS: Jag gör inte har den funktionen. LAUREN CARVALHOS: [OHÖRBAR]. OK. Tja, det finns bara en massa natur ljus i detta rum också. LUCAS FREITAS: Låt oss bara anta att Det finns två andra kataloger där. LAUREN CARVALHO: Bara bära med oss. Detta är den enda del som du kommer att titta på terminalen. LUCAS FREITAS: Nästa kommando är i grund och botten kanske du vill organisera dina filer - till exempel, alla C-filer i en katalog-men du har inte en katalog bara för C-filer ännu. Du kan i princip skapa en katalog användning av terminalen också, vilket är samma sak som att högerklicka och säger Ny mapp. Kommandot gör katalog, som är mkdir, så i princip "göra" och "Katalog." Och då kan du lägga till namnet på katalogen. Låt oss säga att jag ville bli kallad, Jag vet inte, låt oss säga pset1 Göra detta, jag bara skapat en katalog. Låt oss bara kontrollera att den är där. Så om jag gör ls, nu ser jag loggar, och då pset1, och sedan vhosts. Så jag har den nya katalogen där. Och sedan efter att du har en ny katalog, kanske du vill navigera in i det, så nästa kommando denna cd, vilket bara i princip innebär att gå till en specifik katalog. Så om jag vill gå till pset1, Jag kan bara göra cd pset1. LAUREN CARVALHO: cd står för förändring katalog, [OHÖRBAR] kunna kom ihåg att. LUCAS FREITAS: Och nu ser du att istället för att bara ha jharvard apparat, jag har jharvard apparat, och sedan pset1, eftersom det visar mig där jag är i den här datorn. Nu om jag vill gå tillbaka till katalog som var innan den här, jag kan göra en cd dot dot, vilket bara innebär att gå till den katalog som jag var innan, som förälder till detta katalog, i grund och botten. Och nu ser jag att jag är tillbaka till jharvard. Nästa sak som jag kan göra det är rm, vilket är att ta bort en fil. Till exempel, låt oss först göra ls för att se vad jag har här. Jag har hej och hej.c. Låt oss säga att jag vill ta bort dem. Jag kan göra rm hej. Det kommer att säga "ta bort vanlig fil hej? "Och jag säger" ja. "Och nu, om jag gör ls, jag ser att det är inte där längre. Om jag försöker använda rm för en katalog, Men det kommer inte att låta dig göra något. Det kommer att säga, hej, du kan inte ta bort en katalog. Så vi har det andra kommit kallas rmdir, vilket bara i princip innebär ta bort katalogen. Jag kan till exempel ta bort pset1. Och om jag gör ls, det gör jag inte ha det längre. Eventuella frågor om detta? Nej? Yeah? PUBLIK: Är det viktigt att du lämnar ett mellanslag efter - när du Börja skriva någonting på? LUCAS FREITAS: Ja. Om jag gillar cd och katalogen, Jag måste sätta ett mellanslag. Vad utrymme pratar du om? LAUREN CARVALHOS: Utrymmet mellan cd och [OHÖRBAR]. LUCAS FREITAS: Ja, måste du sätta utrymmena eftersom cd är det kommando, och sedan nästa sträng som du typ är i grunden katalogen. Så det är som ett argument. Yeah? PUBLIK: När du lista, alla de är olika kataloger, eller hur? LUCAS FREITAS: Ja, de finns i katalogen. PUBLIK: Vad är skillnaderna bland katalogerna? LUCAS FREITAS: De är bara olika mappar. Directory är en mapp på din dator. PUBLIK: Öppna mappen. LUCAS FREITAS: Ja, det är bara en öppen mapp. LAUREN Carvalho: Över här, de som som finns i blått är faktiska kataloger som du kan komma in och sedan se en massa saker som är inom denna, vilket är olyckligt eftersom du faktiskt inte kan läsa artiklar i blått. Och de i vitt är bara filer som ligger inom den aktuella katalogen. LUCAS Freitas: Så kataloger är mappar. De andra är filer. PUBLIK: Vad är kommandot att återställa det eller radera det? LUCAS FREITAS: För att rensa? LAUREN CARVALHO: För att rensa? LUCAS FREITAS: Jag tror det är "klart". Yeah. Så du bara skriva klart om skärmen är för rörigt. Fler frågor? Och du kommer att lära dig en massa andra kommandon bara naturligt under termin för att de är mycket användbara. Så nu ska vi prata om att sammanställa. Vi pratade om pseudokod och källkod och objektkod. Och det finns en massa koder, och kanske ni är förvirrade över det. Låt oss tala lite om vad händer när du skriver ett program, och du kompilera det, och det blir en körbar fil. De är alla ord som du killar förmodligen hört, och kanske du inte riktigt säker på vad som händer. Låt oss säga, till exempel, som jag vill skriva ett program som säger "hej". Den första som kommer i ditt sinne är du slags försök att tänka på hur du är kommer att göra det i ditt sinne, och du förmodligen tänker på engelska eller något annat språk, som naturliga språk, förmodligen. Och då tänker du, ja, om jag vill, till exempel skriva ett program som säger "Hej," jag skulle starta ett program, Jag kommer att skriva hej, och sedan kommer jag avsluta programmet. Detta är pseudokod. Detta är bara i princip du försöker komma med en sekvens av händelser att du kommer att göra för att vara kunna skriva ett program. Då har du källkoden, och källkoden inte behöver specifikt vara i C. Vi pratar om källkoden i C eftersom det är det språk vi lär oss, men naturligtvis kod kan vara ganska mycket någon programmeringsspråk som du har. Senare under terminen, du kommer att lära sig andra språk. Det är också källkoden. Till exempel här, det här är min källa kod, och då jag bland annat en bibliotek, och sedan börjar jag huvud, och sedan skriva ut jag. Och Laura kommer att prata lite lite om allt detta. Så det här är källkoden. Och vad är objektkoden? Objektet är ett gäng nollor och sådana, i grund och botten. Vad som händer är att du från början har pseudokod, som är allt på engelska. Och jag menar, förstår du det. Förmodligen dina vänner förstår det, och de flesta människor skulle förstå idén. Men datorer är verkligen dumma, och de förstår inte engelska, så du har översätta det till något, brukar översättas till något programmeringsspråk. Och du kan tänka på ett programmerings språk som ungefär som ett språk att du berättar för din dator hur att tala och förstå. Du är i princip skriva något i ett språk som både du och din dator förstår. Det är källkoden. Så gå formulär pseudokod till källan kod, det är upp till dig. Det är i grund och botten gör du ditt program. Men problemet är att dator inte ens förstå programmeringsspråk. Det förstår inte källkoden alls. Det egentligen bara förstår nollor och ettor. Så vi har det mycket magisk sak som kallas en kompilator, som i princip är kommer att få källan kallas att du skrev på ett språk som både du och din dator tala och nu är du kommer att förändra det i nollor och ettor. Så i princip vad kompilatorn gör är det blir källkod, i det här fallet C, det kommer att omvandla det till nollor och de som datorn förstår och kan göra en körbar fil av det. Låter det vettigt? Du kan bara tänka på den kompilator som någon form av översättare som är hjälpa dig förklara för datorn exakt vad den ska göra. Men hur gör jag kompilerar. Låt oss gå tillbaka till Appliance, och låt oss säga att jag gör det programmet. Först ska jag skapa en katalog här, och jag kommer att kalla det "Praxis." Nu ska jag för att navigera till katalogen, så cd praktiken. Nu är jag inne i praktiken. Nu vill jag börja gedit, så hur gör jag det? Jag kan antingen klicka här, eller jag kan bara bokstavligen skriver "gedit", och det kommer att öppna för mig. Nu ska jag skriva mitt program, så exakt vad jag skrev i bilden. Jag förklarar ett bibliotek. Jag gör int main, tomrum. Och nu gör jag printf, hej. Nu ska jag spara. Låt mig uttrycka det i praktiken, och Jag kommer att kalla denna hej.c. Så nu utan resultat. Om jag vill kompilera det, jag faktiskt kan göra det på två olika ställen. Jag kan antingen göra det i ett terminalfönster, så här stor en, eller så kan använder gedit som faktiskt har en terminalfönster här. Så du kan mycket bekvämt bara göra din kod, och då kan du bara skriva allt här, och försöker kompilera det. Så hur gör jag kompilera koden? Det enklaste sättet att vi har är att använda märke, som är en funktion som är i grunden kommer att kompilera din kod. Du måste bara säga att hej, så "Göra" och namnet på programmet. Oj. Detta är besvärligt. LAUREN CARVALHO: Kan du [OHÖRBAR]? LUCAS FREITAS: Förlåt. Jag ville inte spara det i rätt katalog. Kom till praktiken, och nu spara den som hej.c. Jag är ledsen. Nu är det sparas. Låt mig bara göra ls och vara Se till att den är här. OK, nu är det här. Så nu om jag gör hej, spottar en massa saker, men det ger bara mig en annan linje för terminalen, vilket innebär att det inte var framgångsrik. Så nu om jag gör en ls igen, jag faktiskt se denna fil i grönt, vilket är den körbar fil. Och sedan om jag vill driva det, allt det Jag behöver göra är att punkt snedstreck hej. Det kommer att säga hej just här, så det är exakt vad jag ber den till. Det är ytterligare ett sätt att sammanställa, vilken använder klang. Klang är bara en kompilator som vi har, och det är lite mer mångordig till kompilera det. Men det fungerar lika bra. Så om jag gör klang, och då-o, och sedan det namn som jag vill ge till den körbara filen, så låt oss säga "Hej." Och sedan den fil som jag vill ha att sammanställa, hej.c. Det kommer också att sammanställa. Och du har filen här, och Jag kan bara köra det också. Så båda av dem fungerar. Låter det vettigt? Några frågor? PUBLIK: Kan du zooma i en liten bit? LUCAS FREITAS: Förlåt? PUBLIK: Zooma in? LAUREN CARVALHO: Jag tror att du kan bara kommandot plus. LUCAS FREITAS: Kommando vad? LAUREN CARVALHO: Command plus. LUCAS FREITAS: Nej. LAUREN CARVALHO: Åh, det är inte kommer att fungera eftersom - det är för att vi ställer in upplösningen för denna sak. LUCAS FREITAS: Jag gör inte tror att vi kan zooma in Ja, vi kan inte zooma. Har du någon annan fråga? Ursäkta. PUBLIK: Kan du upprepa klang? LUCAS FREITAS: Den klang? Klang är samma sak som gör, men det Skillnaden är att jag först tänker att skriva klang, som är det kommando, då jag ska göra -0, allt, vilket är precis vad vi ska lära sig senare som en flagga. Så tänk på att du alltid måste sätta-o. Och då först, du kommer att sätta namnet på den körbara filen, i grund och botten den fil som du är kommer att skapa. Så jag kan säga, till exempel, hello2 och sedan filen som jag vill kompilera, vilket är den. c-fil. Så det är hej.c. Låter det vettigt? PUBLIK: Hej vad? Vad är det? LUCAS FREITAS: hej.c. Och om jag kompilera det, och om Jag ls, har jag också en hello2 att jag just sammanställt. Och om jag försöker köra den, det kommer att gör exakt samma sak som hej, bara skriva hej. PUBLIK: Hur kommer det för märke du kan sätta hej.c efter? LUCAS FREITAS: I make, du behöver inte sätta. c.. I göra, du bara säga det namnet på programmet. Du behöver inte säga. C.. Men för klang, bör du. PUBLIK: Med klang gör du också måste lägga till [OHÖRBAR] LAUREN CARVALHO: Ja. Så du måste också biblioteket. LUCAS FREITAS: Ja, det är något Vi kommer att använda senare. Det kallas länkning, och jag tror att vi är kommer att prata om det senare. En annan fråga? PUBLIK: Har du lagt en prick snedstreck klang? LUCAS FREITAS: Nej. Pricken snedstreck är bara att öppna den körbara filen. Så klang, du bara skriva "klang", och då den om du vill öppna körbar fil som du just sammanställt, då du dot snedstreck och namnet. Låter det vettigt? PUBLIK: Om du skulle bara förändring [OHÖRBAR] till hallå världen, gör du behöva kompilera om det? LUCAS FREITAS: Ja. om jag vill säga, till exempel, "Hej det, "Jag kan bara spara den nu, och jag bara kompilera det igen. Så låt mig göra en make hej. Och om jag gör hej, det kommer att säga "hej där." Vettigt? Fler frågor? PUBLIK: ni måste ha med standard I / O för att samordna arbetet? LUCAS FREITAS: Ja. Den standard I / O är i grunden biblioteket som har en genomförande för printf. Så det där rätt på topp innefattar stdio. Det är bland annat ett bibliotek som i grund och botten har en massa olika verktyg som du kan använda. en? Av dem är printf som är en funktion som i grund och botten skriver meddelanden till skärmen. Fler frågor? Nej? OK. Så nu ska vi prata om - LAUREN CARVALHO: Låt oss bara gå till stilguide. Vill du bara hitta det i här? LUCAS FREITAS: Så ska vi att prata om stil. LAUREN CARVALHO: Åh, David avslutade inte. OK. Varför vi inte komma tillbaka till stil i slutet? Det är faktiskt uppdaterats medan vi pratar. LUCAS FREITAS: Ja. Låt oss väg för David att avsluta det. LAUREN CARVALHO: Can vi byter egentligen? Så jag hoppas att alla har varit njuter Scratch. Tyvärr, är det dags att flytta bort från detta - tyvärr är det dags att flytta bort från dessa vackra programmeringsblock om till C. Men som tur, alla av programmering konstruktioner som du har arbetat med i Scratch är direkt överföra till C, och vi är kommer att börja att lära sig om några av dem just nu. Låt oss först tala om villkor i booleska uttryck. Detta körs på reserv batteriet. LUCAS FREITAS: Hur är som inte fungerar? OK. Du går dit, jag kommer att få - LAUREN CARVALHOS: Så villkor är viktiga eftersom de tillåter oss att införa logik i våra program. Här är ett exempel på ett villkor inom ett C-program. Låt oss notera hur detta - Så detta tillstånd blocket just här, detta printf uttalande kommer inte köra såvida inte villkoret inom parentes, n som är större än 0, utvärderas till true. Nu är samtliga villkor inom f uttalanden är booleska uttryck, vilket innebär att det finns endast två alternativ. De kan antingen utvärderas till sant, eller de kan utvärderas till false. Så här, så det är vettigt, eller hur? n som är större än 0, innebär att det är ett positivt antal, vilket innebär att det kommer att skrivas ut ut "du valde ett positivt tal." Det finns massor av booleska uttryck som kan ligga till tillstånd med en init uttalande. Vi har mindre än. Detta är mindre än eller lika med. Detta är bara en rolig [OHÖRBAR]. Om du vill att printf att ske om det är större än eller lika med 0, så du skulle välja detta. Så det lika bara lägger rätt efter större än-tecken. Lika lika, vilket skiljer sig från bara ett likhetstecken, lika lika egentligen innebär att oavsett är på vänstra sidan av denna är den samma som vad som finns på den högra sidan av denna där en likhetstecknet är vad? Vad är bara ett likhetstecken? Överlåtelse. LUCAS FREITAS: Vem sa det? Är det godis? Åh, nej. Ursäkta. Ursäkta. Ni båda får godis. Åh, OK! Tre personer får godis! LAUREN CARVALHO: Så här en här är det bang operatören föregår likhetstecknet, så det är inte är lika med. Så om detta var i mitt tillstånd, kroppen av tillståndet skulle köra om allt är i vänster är inte det samma som vad som finns till höger. Jag kan också ha bara utropstecken. Egentligen får vi se i en funktion glida på hur detta skulle kunna användas. LUCAS FREITAS: Några frågor? Nej? LAUREN CARVALHO: Vi kan kombinera dessa Booleska uttryck för att konstruera mer intrikata villkorssatser. Så här, om allt är till vänster sidan i de dubbla streck eller allt som är på höger sida av de dubbla streck utvärderas till true då ska vi skriva ut ogiltigt. Och sedan ner här, om allt vad s på den vänstra sidan av två et-tecken och det vi lägger på höger sidan av de två et-tecken utvärderas till sant, då vi ska skriva ut giltiga. De dubbla streck kallas den logiska OR operatör de dubbla et-tecken är kallas den logiska AND operatören. Ja? PUBLIK: Är de bara gemener l's? LAUREN CARVALHO: Nej. De är faktiskt - du vet motreaktion, som ovanför returtangenten? Ser du det där? LUCAS FREITAS: Det är faktiskt en bar. LAUREN CARVALHO: Det är faktiskt bara två barer. PUBLIK: Kan du använda lika lika för strängar? LUCAS FREITAS: Nej. Vi kommer att lära sig senare något om det. LAUREN CARVALHO: Det finns en funktion som du kan använda. Men du behöver inte oroar sig för att ännu. Vad händer om jag ger det här programmet nummer 5? Vad kommer att skriva ut? PUBLIK: [OHÖRBAR] giltig. LAUREN CARVALHO: Giltig? Yeah. Jag vet inte vem som fick den. [LAUGHTER] LAUREN CARVALHO: Det är typ skrämmande [OHÖRBAR]. PUBLIK: Så det dubbla och, som bara betyder och? LAUREN CARVALHO: Ja. Så nummer 5 är både större än 0 och mindre än 100. PUBLIK: Varför skulle det vara en? LAUREN CARVALHO: En et-tecken är faktiskt något annat, och det är en bitvis operatör, där du lär dig mer om senare. Men det är något som faktiskt fungerar med bitarna hos ett givet tal. LUCAS FREITAS: Bara tror att de inte oroa dig för det för nu. LAUREN CARVALHO: Jag tycker det är nog kommer upp nästa vecka. LUCAS FREITAS: Fler frågor? Nej? LAUREN CARVALHO: Så vi har sett att en det blockerar kan stå ensam, men det kan också kopplas ihop med och annat block. Så i det här fallet, är om n är större än 0, ska vi skriva ut "Du plockade ett positivt tal. "annars, vilket betyder om den är 0 eller om det är mindre än 0, vi kommer att skriva ut, "Du valde ett negativt tal." Det intressanta här är att dessa är exklusive varandra. Det kommer aldrig att bli ett fall i vilka detta och detta kan både skriva ut. Jag är säker på att du arbetat med om / annat rutan i Scratch, så det borde vara ganska bekant. Ja? PUBLIK: Behöver vi utrymmet mellan int n är lika getInt då utrymmet i if-sats? Som vi använder en linje [OHÖRBAR] LAUREN CARVALHO: Åh, det utrymme här? PUBLIK: Gillar det, men du dubbla utrymme. Nej, gå upp. Gå upp. LUCAS FREITAS: Bara linjen? PUBLIK: Ja. LUCAS FREITAS: Bara den tomma raden? PUBLIK: Ja. LAUREN CARVALHO: Tom rad? Nej. Det är bara en stilistisk sak. LUCAS FREITAS: Det är precis som ibland du bara hoppa över några rader så att koden inte ser ut som ett stort block av text. LAUREN CARVALHO: Jag tror att det som hände var att vi hade en kommentar här, men jag tog ut det så att ni skulle få att tänka på koden snarare än bara läsa min kommentar. I allmänhet är avståndet kommer inte riktigt påverka hur ditt program körs. Det är mer av en stilistisk sak. Och när vi har Handboken uppdateras och redo att gå i slutet av supersection, vi pratar om det mer. Det är något fel med detta program, eller hur? Eftersom 0 är inte riktigt ett negativt tal. Så låt oss se om vi kan fixa det. Du kan säkert föreställa er med detta säger, eller hur? Om n är större än 0, ut vi, "Du plockade ett positivt tal. "Då annanstans om n är mindre än 0, "Du valde en negativt tal. "annars," Du valde 0. " Nu det intressanta är att detta skulle kunna fortsätta för evigt. Du kan ha en om blocket, en annan om kvarter, en annan annars om blocket, annars om, else if, else if, annars, i princip så länge du vill. Och när konstruerade så här, Dessa kommer alla att vara exkl. varandra. Ja? PUBLIK: Så varför kan inte du bara använda en annan om istället för [OHÖRBAR]? LAUREN CARVALHO: I det här fallet, ja jag skulle kunna använda en annan om, och det skulle vara helt OK eftersom villkor själva är exkl. varandra. Men om villkoren inte var exklusivt av varandra, skulle detta tvinga dem att aldrig båda utvärdera, om det är vettigt. PUBLIK: I så fall skulle vi bo den andra om i den första om? LAUREN CARVALHO: Om - vad menar du? PUBLIK: Om de två villkor utesluter inte varandra? LAUREN CARVALHOS: Om villkoren utesluter inte varandra? Men du vill bara en av dem att köra? PUBLIK: Du vill bara om istället för annat. LAUREN CARVALHO: Ja. Det kommer alltid att finnas massor olika sätt som du kan göra här. Du kan definitivt kapsla dem. Och du kommer att se i en framtida bild som du kan ha flera ifs, bara en efter den andra. Men detta är ett sätt att logiskt organisera flödet av ditt program. LUCAS FREITAS: Och det finns ytterligare en sak, är att du frågade om att sätta om och sedan en annan om. Det skulle fungera perfekt, men det är dåligt design eftersom i princip om du Kontrollera först om, och du märker att antalet är större än 0, du kan bara avsluta programmet. Du behöver inte kontrollera om det är mindre än 0, eller hur? Men om du om om, det kommer att kontrollera båda, men om jag gör om det annars är, det kommer att kontrollera om det är större än 0. Om det är, det kommer inte att ens titta på andra linjer i koden. Så du i princip kontrollera det som två gånger i onödan, så det är därför vi göra om annat om det. Fler frågor? PUBLIK: Så funktionaliteten av else if är samma som om det bara var om? LAUREN CARVALHO: Nej. Du faktiskt kommer att se i min nästa Skjut ett exempel där det kan vara olika. I detta fall, det är nästan samma. Så här har vi ett exempel på flera om uttalanden och den funktionaliteten är inte samma sak som om jag just hade sagt om annars, om annat, om annat. Låt oss bara tänka på vad som skulle skriva ut om jag ange numret 95 in i detta program. PUBLIK: [OHÖRBAR] LAUREN CARVALHO: Och sedan? PUBLIK: [OHÖRBAR] LAUREN CARVALHO: Ja. Så i detta fall, är dessa villkor är inte utesluter varandra. Och eftersom det finns ingenting som hindrar detta tillstånd från bedömning av om detta man redan har, de är bara allt går att skriva ut. Så hur kan jag åtgärda detta? PUBLIK: annars ifs? LAUREN CARVALHO: Du kan använda annans ifs. Jag kunde ändra ordningen av dessa, eller hur? Om jag gjorde det här först? Jo, faktiskt, nej. Det skulle inte fungera för 95. LUCAS FREITAS: Nej, bara de annars ifs. LAUREN CARVALHO: else ifs skulle ha fast det. Innebär att reda ut förvirringen mellan IFS och annars ifs? PUBLIK: Jag ville bara fråga dig, om du använde annars om, skulle det sluta? LAUREN CARVALHO: Höger. Så bara det första. Om jag kom in i nummer 95, bara detta skulle ha skrivits ut, och det aldrig skulle ha gått till annat. LUCAS FREITAS: Just slags tänka på det som om det händer, gör det här. Den andra är som om inte, check för detta, och sedan göra det. Så som de är alla ömsesidigt exklusiva. Du kan inte komma in i två över dem. PUBLIK: Kan du använda en logisk OCH för den situationen? LAUREN CARVALHO: Ja. Det är ett annat sätt som vi kunde har åtgärdat problemet. Vi kunde ha definierat varierar, eller hur? Så jag kunde ha sagt om n är större än 90 och mindre än - Tja, jag antar att detta inte riktigt roll, men här kunde jag ha sagt om n är större än 80 och mindre än 90. Större än 70, mindre än 80. Det hade också fungerat. [LAUGHTER] LUCAS FREITAS: Hon är rädd. LAUREN CARVALHO: Var inte rädd. LUCAS FREITAS: Det är inte att det kommer att vara fel. Det är bara det att det är onödigt mångordig. Liksom i datavetenskap, bör man vara så enkelt som möjligt så länge som du har funktionaliteten. Vill du ha godis? PUBLIK: Inte behöver det. LAUREN CARVALHO: Du skrämmer alla, Lucas. LUCAS FREITAS: Förlåt. LAUREN CARVALHO: David nämnde också dessa växlar uttalande i klassen. I grund och botten vad som händer är switchen uttalande tar en variabel. I det här fallet, vi tar ett heltal. Om tal är 1, kommer vi att skriva ut, "Du valde en liten nummer. "Om heltal är 1," Du plockade ett medium nummer. "Om heltal är 3, "Du valde en hög nummer. "Och jag hade också en standard fall här nere, men det är inte visar upp, vilket är synd. I grund och botten är detta bara en annan syntax. Vi kunde ha genomfört detta exakt Samma sak med om och annars om uttalanden. Men när det finns massor av olika villkor och massor av olika varianter på vad du vill göra för varje ingång, är detta ett alternativ. Så det är bara en bra syntax för att veta. Ja? PUBLIK: Varför finns det inte ett omvänt snedstreck n på den första? LAUREN CARVALHO: För där uppe? Det finns ingen backslash n uppe eftersom getInt - Om du prova det här, det ska ge dig denna prompt. Ge mig ett heltal mellan 1 och 3. Och om jag sätter den motreaktion n, skulle det ta mig till nästa rad, men jag bara ville att de skulle skriva heltal direkt efter kolon. Du kunde ha lagt motreaktionen n. Det är inte en stor sak. Yeah? Publik: För denna kod, är detta fall ett, är att eftersom det är det första fallet? Därför att - LAUREN CARVALHO: Nej, nej, nej. Så detta ger mig ett heltal mellan 1 och 3. Om n är 1, jag skriver ut det här. Om jag hade bett om brev, skulle jag ha sa ge mig en bokstav mellan A och C. Då detta skulle vara fallet A. PUBLIK: [OHÖRBAR]. Fallet skulle bara [OHÖRBAR] LAUREN CARVALHO: Ja, just det. Yeah? PUBLIK: Vad händer om du ville ha mer av en relationsuttryck? Så istället för att säga n är lika med 1, [OHÖRBAR] n är större än 1 i det första fallet? LAUREN CARVALHO: Faktiskt, om jag inte definiera en del av dessa fall, skulle detta att bära ner. Så egentligen, det är kanske inte vad du frågar. LUCAS FREITAS: Jag tror att hon frågar om fallet var n är större än 0, fall mindre än 0. LAUREN CARVALHO: Kanske omkopplaren påstående är inte riktigt vad du vill att använda i det fallet. LUCAS FREITAS: Växeln uttalande är bara för värde, så du kollar på värdet är som det eller det. Så kan du inte faktiskt sätta betingelser. PUBLIK: Vad händer om den personen typer med [OHÖRBAR]? LAUREN CARVALHO: Det skulle ha varit min standard fall, som tyvärr du kan inte se. LUCAS FREITAS: [OHÖRBAR] få dem att se. LAUREN CARVALHO: Faktiskt, vet du vad? Låt oss bara gå att studera 50, och jag kommer bara zooma in på glasen på studie 50, eftersom det är bara irriterande. Så låt mig faktiskt gå till tillstånd. Det är bara att ta en liten stund. Okej. Så, jag är ledsen. Åtminstone nu vi kommer att kunna se allt utan att skära av. Okej. Så om de sätter i en 10, skulle vi standard här till min standard fall, och jag skulle bara skriva ut ogiltiga eftersom jag bad dem att skriva in ett heltal mellan 1 och 3. Fler frågor? Yeah? PUBLIK: Låt oss säga för fall ett, fall tre, säger att du ville att det skulle bli allt samma sak, så du valde ett nummer det är inte ett medium nummer. I så fall skulle det vara överflödig? Vill du bara ändra texten på både av dem, eller skulle det inte finnas några redundans? Finns det något sätt att kombinera [OHÖRBAR]? LAUREN CARVALHO: Det finns sätt att kombinera dem, men jag tror att du kan bara kombinera intilliggande. Så om jag inte definiera något för fall två, skulle detta gäller för båda fallen. Åh, om jag inte lägga något till fall en, skulle detta gälla både fall ett och två. Om det är vettigt. PUBLIK: Kan du upprepa det en? LUCAS FREITAS: OK. Om du gjorde i princip, liksom, du har samma sak, men du inte lägger något här, skulle du vara antingen för fall en eller fall två, gör detta. Rätt? Och denna rast innebär att om du får i det här fallet, bara lämna. Så det är vad bromsen betyder. Så om jag bara gjorde det, du ser, det är fall en, och du skulle bara göra det. Om det var fallet två, skulle det också bara komma hit och göra det. PUBLIK: Men du kan göra det? Om det finns något för fall två [OHÖRBAR] LAUREN CARVALHO: Jag tror inte du kan göra det. Jag tror inte att du kan hoppa runt. Kan du göra det, Rob? Jag tror inte det. PUBLIK: Så bara ett nummer kan gå efter ett fall, eller hur? Det kan inte vara fallet ett, kommatecken, två? LUCAS FREITAS: Nej, det kan du inte. Du kan definitivt inte. LAUREN CARVALHO: Jag menar, är den punkt det här är ett alternativ, och det kanske inte passar ditt användningsfall, så då du skulle använda om förhållandena. PUBLIK: Så varför skulle du göra det här? Switchen? LAUREN CARVALHO: Jag skulle använda detta om du har mycket definierat - faktiskt, Lucas, är du blockerar. LUCAS FREITAS: Åh, förlåt. LAUREN CARVALHO: Om du har mycket definierade beteenden som du vill använda för varje ingång, kan detta vara ett lite mer kortfattad än att skriva ut en if-sats för var och en. PUBLIK: Vad gör bryta detta igen? LAUREN CARVALHOS: Avbrottet betyder stopp. Kom ihåg att om jag inte hade denna rast Här skulle vi ha just fallit ner in i nästa fall. LUCAS FREITAS: Break innebär att få ur switch-satsen. För om det är 1, jag vill ha för att skriva ut detta och lämna. Jag vill inte se något annat. PUBLIK: Du vill inte för att skriva ut något annat. LUCAS FREITAS: Ja. För att det är ömsesidigt uteslutande. PUBLIK: Och gör det bara fortsätter till nästa fallet om det första fallet är inte sant? Eller betyder testa alla fall på samma gång? LUCAS FREITAS: Nej, det checkar sekventiellt. Jämfört med föregående kvartal, ja. Ytterligare en fråga, då vi måste gå vidare så att vi kan täcka allt. Yeah? PUBLIK: Så för fallet, kan ha gjort någonting förutom just den? Kan du ge det en rad? LUCAS FREITAS: Nej. LAUREN CARVALHO: Jag tror inte att du kan ge det en rad. LUCAS FREITAS: Du kan inte du kan inte ge det en rad. PUBLIK: Fallet är specifik [OHÖRBAR]. LUCAS FREITAS: Switch är typ av värden. Du gör olika saker beroende på ett värde, ett visst värde. Du kan inte göra intervall, kan du inte göra något annat. Det är bara ytterligare ett verktyg för att se. LAUREN CARVALHO: De flesta människor inte använder byta uttalanden mycket i CS50, men det finns där. Okej. Så nästa sak vi ska prata om är den ternära operatören. Detta är bara en annan typ av villkorad. I grund och botten vad som händer här är jag ber om ett heltal, och, om n är större än 100, kommer jag att skriva ut "Hög". Om det inte, jag ska skriva ut "låg". Vad den gör är villkoret här i parentesen, och du kan slags tänka på frågan som jag ber om detta är sant eller inte. Om det är sant, jag ska göra det här först sak, och om det inte är sant, jag är kommer att göra denna andra sak. Eventuella frågor om ternära operatör? LUCAS FREITAS: Vill bara notera från David är att när du har ett skick - LAUREN CARVALHO: Jag antar att Davids tittar via live stream. LUCAS FREITAS: Han gör liv ström just nu. Så när du har ett tillstånd, du tänkt att sätta klammerparenteser, precis som vi har i en växel uttalande här. Vi har krullparenteser här. För oavsett förutsättningar, du ska också sätta det. LAUREN CARVALHO: Du ser detta i stilguide. Vi behöver faktiskt inte ha det stilguide just nu. Jag tror Davids fortfarande arbetar. LUCAS FREITAS: Han sade att det bara fungerar nu. LAUREN CARVALHO: Åh, är det fungerar nu? OK. Så tydligen i år i stil vägleda, även om du bara har en rad, du har att sätta dem klammerparenteserna i. Du behöver inte nödvändigtvis behöver för funktionalitet av programmet. Och kanske vi ska bara ta en paus efter de villkor och gå rakt till den stilguide för att rensa upp några av dessa saker? LUCAS FREITAS: Ja. Har du en fråga? PUBLIK: Nej, jag ska bara vänta tills stilguide. PUBLIK: Kan du gå tillbaka till den ternära operatören? LAUREN CARVALHO: Ternär, ja. LUCAS FREITAS: Ternary operatören är i grund och botten en om annat uttalande, men istället för att ha de två raderna att kontrollera en om och sedan annat, har du bara en rad. Så i princip om jag vill ge en sträng ett värde av hög eller låg, och jag vill göra en hög om n är större än 100 eller låg, om den är mindre, vad jag kan göra är detta [OHÖRBAR] strängen kommer att bli, och då jag frågar programmet är n större än 100? Så det är därför jag har detta uttryck inom parentes och sedan frågetecknet. Jag frågar är det större än 100? Om det är, det kommer att vara hög. Om det inte, det kommer att vara låg. Så i princip vad du tror att du frågar en fråga, så du sätter inom parentes tillståndet. Då du sätter frågetecken eftersom du frågar det. Och om detta är sant, det kommer att bli i det första värdet [OHÖRBAR] här. Om det inte, jag ska sätta värde som är efter kolon. Är det vettigt? Det är också något som är som en verktyg i C, men du behöver inte specifikt använda den. Men CS människor brukar vilja att eftersom det sparar bara linjer. LAUREN CARVALHO: Det är mycket elegant. Det gör en hel del på bara ett uttalande. PUBLIK: Så procenttecken är precis vad resultaten på den tidigare linjen? LAUREN CARVALHO: Åh, jag är ledsen. Denna procenttecken är faktiskt en platshållare för det här är. I en printf uttalande, har du fått detta sträng här, vilket är vad som kommer att skriva ut, men du kan inte bara sätta detta är där. Annars skulle skriva ut ut s bokstavligen. Så vi satte en procent här för att hålla denna plats som innehas av någon kommer efter kommatecknet. Så efter en sträng, har du procent s.. För ett heltal, procent i.. För en flottör, procent f.. Du ser dem som vi se fler exempel. Men kanske borde man tala om stilguide för en liten stund, nu att det är upp. LUCAS FREITAS: Om du går till cs50.net/style, du kommer att se den stilguide. För problemsamlingar, dina poäng för problem som består av omfattning, vilket i princip innebär att om du gjorde allt de delar av problem som eller om du försök till något. Det andra är korrekthet, som medel är ditt program gör vad det var tänkt att göra, eller gör det har fel, eller är det inte gör vad den ska göra. Den tredje saken är design, vilket innebär ni genomför detta väl, eller är du använder onödiga påståenden? Så till exempel om du vill upprepa ett antal 10 gånger, skriver du ett för slinga eller är du bara göra 10 gånger samma uttalande, bara göra kopiera och klistra in. Så design är för det. Och slutligen, du har stil. Style är precis som att döma Om din kod ser ut lättläst och typ av söt. Det betyder bara i princip är din kod läsbart? Skulle någon annan som var ute är din kod kunna förstå vad det gör? Har den kommentarer och liknande? Låt oss tala om den stil som du ska använda. Det första är kommentarer. Kommentarer är mycket viktigt för din kod för ibland du gör ditt program, och du vet exakt vad du vill göra så att du bara börja kodning, skriv bara upp en massa C. Men om någon annan ser är att du är kod, kommer de inte att kunna förstår det eftersom de inte vet de saker som finns i ditt huvud, som den pesudocode, så kanske de kommer har svårt att förstå vad koden gör. Så kommentarer verkligen är användbara för att förklara till någon som tittar på din kod vad det gör, och faktiskt även för dig, de är mycket användbara. När du går till hårdare och hårda Psets, du kommer att se att koden blir längre, och då kommentarer är egentligen viktigt så att du kommer ihåg vad varje del av ditt program gör. För att lägga en kommentar, kan du bara göra en snedstreck snedstreck och sedan skriva en kommentar. Och hela linjen är en del av en kommentar, och vad du skriver ner, det kommer inte att bli används för din kod. Det är i princip som kompilatorn kommer att ignorera det. Låter det vettigt? PUBLIK: Vad gör du igen för att skriva en kommentar? LUCAS FREITAS: Detta? Snedstrecket slash? Varje gång du skriver slash slash, oavsett är i den linjen kommer inte som skall anses vara C. Ja? PUBLIK: Så efter den kommentaren, du bara in och starta en ny linje? LUCAS FREITAS: Ja, exakt. LAUREN CARVALHO: Det snedstreck snedstreck är för enda rad kommentarer. LUCAS FREITAS: Till exempel, Här har vi - Låt mig zooma in - till exempel, här jag förklara en flottör, men kanske om du bara sätta detta i koden, som du har ingen aning vad det gör, som faktiskt någon som tittar på den här koden kommer att bli, liksom, vad fan är det som händer? Om du lägger en kommentar som säger "konvertera Fahrenheit till Celsius, gör det mycket vettigare. Du är, liksom, OK, du är gör en omvandling. Låter det vettigt? Så det är bara något som hjälper människor redo din kod och även göra du kunna organisera koden bättre. Det andra är att du kan göra flera linjer kommentarer, så har en kommentera för ett gäng linjer. Istället för att behöva sätta snedstreck snedstreck, Den första raden kommentarer, snedstreck snedstreck, den andra raden, och så vidare, du kan använda snedstreck stjärnan. Det sätt som du gör det är det för det första raden i kommentaren, du är kommer att göra ett snedstreck stjärna stjärna, så bara så där. Precis som här har vi i början av ett program, som du brukar sätta vem du är, vad programmet gör, och sånt. Det är ungefär som en rubrik för programmet. Återigen, det är inte något som en kompilatorn kommer att bry sig om, men det är viktigt för dig att veta vad detta Programmet gör eller för andra människor att veta vad ditt program gör. Så du slash stjärna stjärna, och sedan sista raden du ska göra stjärna snedstreck för att kunna stänga den kommentaren. Så i princip för alla andra linjer, du kan bara skriva vad som helst, och detta är alla kommer att ignoreras. Och också, precis som stil, ser du att var och en av de linjer som har en stjärna, och alla stjärnorna är justerade. Detta är viktiga saker så att din kod ser ganska. Låter bra? Nu, förhållanden. Vad David sa att vi borde faktiskt sätta in dessa bilder, är att när du har någon form av om uttalanden eller någon form av villkor, du bör använda klammerparenteserna för att visa att detta är vad som kommer att hända när du har sjukdomen. Tekniskt sett, när du har ett tillstånd och sedan nästa rad är bara en linje, behöver du inte tekniskt har att sätta klammerparenteserna. I grund och botten kompilatorn skulle förstå det ändå som implicit. Men för CS50, ber vi er att sätta klammerparenteserna bara så att din kod är mer organiserat och mer lättläst. Därför att koden blir längre om du har inte klammerparenteserna och sådant. Det blir verkligen rörigt. LAUREN CARVALHOS: Detta är exakt vad David just påpekade i mina tidigare bilder. Det fungerar definitivt utan lockigt hängslen, men av stilistiska skäl vi kommer att begära att du sätter dem i. Och när du börjar köra style50, som är typ av kontroll 50 för stil, kommer det att påminna dig om att göra detta. LUCAS FREITAS: Och en annan sak är kom ihåg att sätta klammerparenteserna längs i varje rad. Så du gör, till exempel, l's. Gå till nästa rad genom att öppna lockigt stag, sedan går du till nästa rad. Indrag, vilket är fyra platser. Då du skriver vad som helst, sedan en annan linje, och stäng klammerparentes. Så se till att både de lockigt hängslen är på olika linjer. PUBLIK: Så om denna kod hade som 10 annans ifs, bör detta vara 10 uppsättningar av konsoler? LUCAS FREITAS: Ja, för var och en av dem. Yeah. Så om, annars om, och så vidare. PUBLIK: Kan du inte Tryck Tab för att dra in? LUCAS FREITAS: Vi ber dig killar att använda fyra platser. Vissa textredigerare översätta fliken som fyra platser automatiskt. gedit inte, så du måste göra space space space space. Detta är också något som en del programmerare bara göra flikar, en del programmerare bara göra fyra platser, och några andra människor även gör två eller tre platser. Det är just det här vi ber er att göra fyra platser. PUBLIK: Det är nästan definitivt måste finnas ett sätt för gedit till automatiskt [OHÖRBAR]. Som ingen [OHÖRBAR] gör det. LUCAS FREITAS: Ja. Jag tror att du kan gå till Inställningar. PUBLIK: Det gör redan allt detta. LUCAS FREITAS: Det redan gör? OK. Så bara vara säker på att du har fyra platser. PUBLIK: Måste vi sätta lockigt fästen i för slingor också? LUCAS FREITAS: Ja. LAUREN CARVALHO: När din kapsla in ett block av kod, precis använd klammerparenteserna. Och innan du tror att vi bara vara pedanter om det här för någon bra Därför, om ni går vidare för att få tech praktikplatser på stora företag, de kommer att ge dig en stilguide, och de kommer att säga att detta är vad din kod måste se ut. Och även om du lärt sig att kod som detta, kanske i din praktik du måste göra något helt annorlunda. De förväntar du dig att följa till deras stil. LUCAS FREITAS: Och en sak är som ni märker hur jag har som x, utrymme, mindre, utrymme, 0? När du har en operatör - det kan vara som plus, minus, gånger, mindre, större, oavsett operatör - du måste lägga ett utrymme på vänster och höger om föraren. LAUREN CARVALHO: De är kallas binära operander. Se bara till att du alltid utrymme ut din binära operander. LUCAS FREITAS: Detta är inte en binär operanden. LAUREN CARVALHOS: Det är eftersom det tar två. LUCAS FREITAS: Oh, ja. OK, omkopplarna. Först måste du se till att precis som i en if annars uttalande, har du att sätta den lockiga stag på en egen rad och under den lockiga stag här. Lägg märke till att det finns en enda plats efter switch, precis som in om och annat Vi hade en enda utrymme mellan det och parenteserna. Så du måste säga det. Och det finns inget utrymme direkt efter varje av parenteser eller före slutet av parentesen. Så du ser att det är alla tillsammans, och också här uppe. Yeah? LAUREN CARVALHO: Jag tror vi måste gå vidare. LUCAS FREITAS: Så det här är en del av stilguide som du har för CS50. Glöm inte att gå till cs50.net/style och ta en titt på detta. Dessa är alla mycket viktiga för din stil poäng. Låt mig gå tillbaka till meddelandet. LAUREN CARVALHO: Helst bara använda style50. Vi ska bara gå direkt till loopar. Okej. Så låt oss gå tillbaka till innehållet, nu att vi har gått över stilguide. Loopar, har du sett dem i Scratch, och Vi kommer att prata om dem i C. I en for-slinga, det finns tre portioner till deklaration om detta för slinga. Du har din initiering i där du anger dina variabler. Du har fått ditt tillstånd, som är kontroll för att se om något är sant eller falskt och huruvida loop bör fortsätta. Och du har fått din uppdatering, vilket uppdaterar dina variabler. Låt oss bara ta en snabb titt på några C-kod för denna för slinga i handling. Vad som händer är här i initiering, vi ställer jag till 0. I det tillstånd som vi kollar om k är mindre än 10. Och i uppdateringen är vi inkrementering i.. Så vad kommer att leda till detta för loop? LUCAS FREITAS: Faktiskt, först och främst, vet ni vad jag + + är? PUBLIK: Ökade med 1. LUCAS FREITAS: Ökade med 1, ja. Så det här är samma sak som gör jag lika i plus 1. Och märker att vi inte har en plats mellan den i: och + +. Så vet ni vad det här kommer att göra? Kan någon berätta för mig? Och kanske få lite godis på grund av detta? PUBLIK: [OHÖRBAR] LUCAS FREITAS: OK. [OHÖRBAR] visa alla senare [OHÖRBAR]. Ja, det kommer att visa "här är CS50 "10 gånger. LAUREN CARVALHO: Jag antar att det var i rubriken till objektglaset. LUCAS FREITAS: Oh, ja. [LAUGHTER] LUCAS FREITAS: Det hjälper. LAUREN CARVALHO: Så de är för slingor. Vi kommer att se fler exempel av loopar senare. Men låt oss verkligen ta en titt på den andra typen av loop du möter i C, och det kallas while-slingan. I en while-slinga, du har precis fått ett villkor. Villkoret är markerat i början, och om detta villkor utvärderas till true, sedan koden inom kropp medan blocket kommer att utföra. Och koden kommer att fortsätta att köra så länge som det villkoret är sant. Här är ett exempel på en while-slinga i C. Vi kommer att ställa räkna till 10 till börja med. Så länge som antalet är större än 0, vi kommer att fortsätta att skriva ut detta variabel här. Vi ska dekrementera antal och sedan kontrollera tillståndet igen. Skriv ut, minskning, check tillståndet igen. Här har vi ett exempel som avser på din fråga tidigare. Vi hade procent s när vi var att skriva ut en sträng, och nu när vi skriver ut en int, vi har en procent i som vår placeholder istället. Bokstäverna bör alla vara ganska intuitivt, är för sträng, i för int. Så om den här koden körs, bör du nedräkning från 10 till 0, skrivs ut varje heltal. LUCAS FREITAS: Och du kan tänka på procent eftersom det känns som ett tomt utrymme, och då du lägger detta variabel här i det tomma utrymmet. Så till exempel, här kommer jag att bara en tomt, och sedan sätter jag den räkna rätt där, det Värdet av räkningen. Låter det vettigt? Kan jag bara göra som printf och sedan citerar, räkna? Skulle det fungera? PUBLIK: Nej. LUCAS FREITAS: Nej, eftersom det kommer att faktiskt skriva ut ordet "count" stället för att skriva in värdet. Detta är hur du gör det skriver ut de värden mot variabel i stället för bara namnet på variabeln. Några frågor? PUBLIK: Varför använder ni för som en motsats till samtidigt? LAUREN CARVALHO: Jag skulle använda en för loop om jag vet exakt hur många iterationer Jag vill att min slinga att köra. I detta fall spelar det ingen roll eftersom, Jag menar, jag försökte bara tänka på en riktigt enkel exempel för denna bild. Men låt oss säga att du vill ha något att hålla igång samtidigt - LUCAS FREITAS: Till exempel, du ber om inmatning till dess att personen ger dig rätt ingång. Så som när ingången inte OK, hålla ber om det. Eller som när du är föräldrarna inte ger pengar, hålla ber om det. [LAUGHTER] LAUREN CARVALHO: Du vet inte hur många gånger måste du göra det. LUCAS FREITAS: Eftersom du inte hur många gånger som är kommer att fortsätta. LAUREN CARVALHO: Men i en for-slinga, du behöver veta hur många gånger. Yeah? PUBLIK: Bara för att klargöra, att procent säger att det är något om att hända, jagets för heltal, och omvänt snedstreck n - LAUREN Carvalho: Medel? Vem vet vad det omvända sned n betyder? Ny rad, ja. Exakt. LUCAS FREITAS: Du kan tänka n som ny rad. LAUREN CARVALHO: Nice. PUBLIK: Vad är det som räknas instrumentbrädan [OHÖRBAR]? LUCAS FREITAS: Count minus minus är samma sak som plus plus, men istället för att öka, det minskar med 1. LAUREN CARVALHO: Någon mer medan sling frågor? Nej? Åh, vi skulle har hoppat över det. Detta är en do while-slinga. Mycket liknar en while-slinga, förutom i detta fall kontrollerar vi tillståndet efter koden i kroppen av loop körs en gång. Så vi köra koden först oavsett vad. Sedan kollar vi tillståndet, utför det igen om villkoret är sant. Du hittar dig själv med detta när du ber om användarens input. Eftersom du alltid kommer att behöva frågar en gång, och sedan beroende på vad användarens input är, du kan behöva Fråga igen och frågar om och om igen om ingången var inte vad du trodde att den skulle vara. PUBLIK: Så det är som en form för folk att fylla ut. LAUREN CARVALHO: Ja, exakt. Du hittar, tror jag, i första Pset, du kommer att behöva använda en gör väl slinga för att samla in inmatning från användaren. PUBLIK: Beroende på situationen, mödan loopar tenderar att köra mer ofta än medan slingor, som av en eller något? LAUREN CARVALHO: Om det är exakt - LUCAS FREITAS: De ska alltid köras den exakta mängden gånger du vill att den ska köras. Som vi använder gör tag eftersom vi verkligen ville få input minst en gång. I medan loopar, ibland du inte vill att köra det alls om det inte är målet att utföra. Så det beror på designen. Jag menar, kan du antingen använda göra när eller samtidigt så länge som din kod gör att den ska göra. LAUREN CARVALHO: Men jag tror att svaret på din Frågan är förmodligen ja. Låt oss säga att villkoret var falsk. I ett fall skulle det köras en gång, och ett annat fall skulle det köras noll gånger. Så, ja. Fler frågor? Ja? PUBLIK: Kan slingan tillståndet vara ett för slinga i form av en rörlig andra än [OHÖRBAR]. LAUREN CARVALHO: Ja, Det kan vara vad som helst. Förmodligen för början Psets, du kommer inte att behöva stöta på det fallet, men definitivt det kan vara vad som helst. LUCAS FREITAS: Jag tror vi är klara här. LAUREN CARVALHO: Är vi? Nej? LUCAS FREITAS: Loops? Yeah. LAUREN CARVALHO: Vi borde inte vara. Åh, är vi klar med öglor. OK. Faktiskt, för vi har pratat så mycket, låt oss faktiskt alla navigera över till study.cs50.net/conditions. Och du kommer att navigera ner på problemen widget. Jo, faktiskt, samtidigt som människor blir detta inrättas, är CS50 Study kommer att bli ett verktyg som dina TF kommer använda för att förbereda sig för avsnitt och att ni kan använda om du missar sektioner. Det kommer att innehålla ett gäng bilder, några tips och tricks för varje ämne, och vissa övningsproblem med lösningar. Varför visas inte alla bara ta en titt på detta problem här. Jag är ledsen, jag borde ha påmint människor att få bärbara datorer idag. Men om du inte har en bärbar dator, det är OK. Du kan bara skriva ner detta på ett papper eller se över grannens axel. Låt oss försöka skriva ett program som uppmanar användaren att ta en gissning, det Genomsnittligt antal barn per familj enhet i USA. Det antalet är 2, förresten, när du kan se från dessa exempel. Vi vill skriva ut genomsnittliga antalet barn per familj i USA, då vi vill vad? Vi vill samla input från användaren. Och sedan beroende på vilken användarens ingången är, du kommer att skriva ut antingen detta är korrekt eller detta är felaktigt. Och det allra första som du kommer se, om du klickar på den lilla pilen på botten av problemet widget är ett plats att skriva ned lite pseudokod. Så du inte programmera ännu. Du bara få din idéer i ordning. Finns det någon som vill hjälpa Lucas komma med rätt pseudokod för det här problemet? LUCAS FREITAS: Vad är det första att vi förmodligen bör göra här? Vad tycker ni? PUBLIK: [OHÖRBAR] LUCAS FREITAS: Ja, OK. Så, skriv ut. Säg bara skriv ut genomsnittet antal personer? OK. Skriv ut frågan, låt oss säga. När jag skriver ut den här frågan, vad ska jag göra? PUBLIK: Få ingång. LUCAS FREITAS: Få ingång. Något annat? PUBLIK: skick. LUCAS FREITAS: skick. LAUREN CARVALHO: Vad är det villkor kommer att bli? PUBLIK: Antalet [OHÖRBAR]. LAUREN CARVALHO: Höger. LUCAS FREITAS: Så vad ska jag att kontrollera i skick? PUBLIK: Om det är lika med 2. LAUREN CARVALHO: Om det är lika med 2. Exakt. LUCAS FREITAS: Är det något annat som jag ska göra? PUBLIK: Räkna. LUCAS FREITAS: Så om det är lika med 2, låt oss säga - låt mig bara skriva om ingången är lika med till 2, vad jag ska göra är att skriva ut korrekt. Och då annars kommer jag för att skriva ut felaktiga. Något annat? Nej? LAUREN CARVALHO: Så du kan klicka på - Har alla här nere? LUCAS FREITAS: Är det vettigt? Så nu ska vi försöka att koda detta. LAUREN CARVALHO: Om du klickar på den lilla arrow, faktiskt sparar din pseudokod, vilket är riktigt spännande. Och du kan göra dem i kommentarer om du vill bara påminna dig om vad de ska göra. LUCAS FREITAS: Så till exempel, först Jag kommer att skriva ut frågan, så hur ska jag göra det, egentligen? printf. Så printf, och frågan är genomsnittliga antalet barn per familj i USA. Då kommer jag att få inmatning från användaren. Så hur kan jag göra det? PUBLIK: Get Int. LAUREN CARVALHOS: getInt. LUCAS FREITAS: OK. Så först förklara, eller hur? int, låt oss kalla det n lika getInt. Och nu tillståndet. Så låt mig säga att jag ska till här kryss svar. Så först, om ingången, vilket är n, är lika med till - hur ska jag skriva det? PUBLIK: Lika lika. LUCAS FREITAS: Perfect. Så n. Och märker att jag gör ett mellanslag, lika, lika, utrymme, sant. Och nu vad ska jag göra? Något mycket viktigt för stil. Klammerparenteserna. Och då kommer jag att skriva ut. Hur skriver jag ut? printf. PUBLIK: Kan det aktiveras? LUCAS FREITAS: Nej. Det ska skrivas med gemener. Så det är korrekt. Skulle det räcka för printf uttalande, eller jag saknar något? PUBLIK: Ny linje. LUCAS FREITAS: Ny linje, ja. Och nu annanstans. PUBLIK: Finns det ett utrymme efter printf, eller nej? LAUREN CARVALHO: Vi bör Kontrollera stilguide. Publik: Det bör inte vara. LUCAS FREITAS: Borde inte vara, OK. Så annanstans, printf, "Det är fel." LAUREN CARVALHO: Oj, dina citat. LUCAS FREITAS: OK. Något annat? Ser det bra ut? LAUREN CARVALHO: Ska vi försöka? LUCAS FREITAS: Ja, låt oss köra den. Så det är att sammanställa, och det verkar som att det fungerar. Låt oss prova två barn. Det stämmer. Och nu ska vi köra igen, men nu i stället att sätta två barn, låt oss säga att jag ska lägga ut fem. Det är fel. Så det verkar som det fungerar. LAUREN CARVALHO: Varför inte du visa dem vad händer om du sätter något konstig, liksom några bokstäver. LUCAS FREITAS: Oh, ja. Låt oss också kontrollera att. Vad händer om användaren försöker att röra med ditt program, och de bara skriva, jag vet inte två. Det kommer att säga kan försöka igen. LAUREN CARVALHO: Så getInt ber dem att försöka igen. Vi behövde inte ta hand för att oss själva. LUCAS FREITAS: Ja. Så om jag faktiskt sätta ett nummer, det är kommer att hålla ber mig att försöka igen. PUBLIK: Hur fick du köra den? LUCAS FREITAS: Klicka bara på denna stjärna knappen. LAUREN CARVALHO: Du borde gå upp. Varsågod. LUCAS FREITAS: Stjärnan höger där. Yeah? PUBLIK: Betyder det att fråga [OHÖRBAR] med decimaltal också? LAUREN CARVALHO: Jag tror att det kommer. LUCAS FREITAS: Om den gör vad? LAUREN CARVALHO: Om de skriver i ett decimaltal, tror jag det kommer att föranleda. LUCAS FREITAS: Låt oss se. LAUREN CARVALHO: Eftersom det är inte en int. LUCAS FREITAS: Ja. LAUREN CARVALHO: Så det är det inte en int, Få Int kommer att be dig att försöka igen. PUBLIK: Så var för numret skulle vara den decimal som uppmanar användaren att de måste ange ett heltal specifikt? LAUREN CARVALHOS: getInt är faktiskt göra det för oss. PUBLIK: Nej, jag menar om vi ville att komma in [OHÖRBAR] LUCAS FREITAS: Du kan säga som genomsnittet Antalet barn i USA. Jag vet inte. Vi kan säga, till exempel, "Vänligen ange ett heltal. " LAUREN CARVALHOS: ett heltal lika att det genomsnittliga antalet. Jag menar, det är bara hur du ord det, eller hur? LUCAS FREITAS: Ja. Detta är inte en del av faktiskt kodning. Det är mer som att vad som helst du kommer att vilja skriver i ditt program. PUBLIK: Hur skulle vi köra den om den var faktiskt i gedit [OHÖRBAR]. Istället för att trycka på play? LUCAS FREITAS: Vi kommer först kompilera det. Vi kan göra det genom att göra make och namnet på filen. Och sedan för att köra den, vi gör punkt snedstreck och namnet på programmet. PUBLIK: Jag antar att det jag menade var om vi ville att programmet för att svara på deras felaktiga, ogiltiga posten, du ska inte lägga in - LUCAS FREITAS Vi kommer inte att kunna göra det eftersom koden här säger nytt försök kommer från Get Int vilket är en funktion som redan är implementerad för oss via CS50 bibliotek och sedan det är redan genomfört det, vi kan inte bara [OHÖRBAR]. LAUREN CARVALHO: Om du inte använder GetInt, då kan du göra det. LUCAS FREITAS: Ja. Men om du använder getInt, det kan du inte. Fler frågor? PUBLIK: Skulle du ha gått med liknande GetFloat och sedan kunna sätta den i en decimal? LUCAS FREITAS: Ja. PUBLIK: OK. Sedan kan du bara kunde ingång flyta a jämlikar - LAUREN CARVALHO: Ja. Exakt samma utom en flyta i stället för en int. LUCAS FREITAS: Bara sätta det här och sedan getFloat där. PUBLIK: När du kommer ser eller har sett - LAUREN CARVALHOS: vi har inte fått det ännu. PUBLIK: - göra ojämlikhet med flyter inte [OHÖRBAR] PUBLIK: Vad semikolonen detta? LAUREN CARVALHOS: Semikolon bara innebär att detta uttalande är klar, och vi kommer att gå på nästa bild. PUBLIK: Så det är nödvändigt varje gång? LAUREN CARVALHO: Ja. Tja, OK, så inte för dessa förhållanden, eftersom de är kapsla in något. Så i grund och botten om något orsakar du sedan skapa en klammer blocket, inte sätta ett semikolon i slutet. LUCAS FREITAS: Men allt annars, ja. När du är klar med ett uttalande, sätta semikolon. Och om du glömmer semikolon, det kompilatorn kommer att bli arg på dig, och du kommer att ha för att försöka fixa det. LAUREN CARVALHO: Om jag sätter ett semikolon Här skulle det hindra detta, och jag skulle aldrig få för att utföra vad som är inne, förresten. Så det är en av de vanliga fel. PUBLIK: Alltid köra. LAUREN CARVALHO: Ja. I det här fallet skulle vi alltid utföra vad som finns inuti. PUBLIK: Din stil [OHÖRBAR] bifoga det till dig, trodde. LAUREN CARVALHO: Åh, det är sant. PUBLIK: [OHÖRBAR] singel linje sak [OHÖRBAR] PUBLIK: Ja? PUBLIK: Kan man ha flera ingångar i en rad? Så som du kan be användarna för att skriva ut två saker? LAUREN CARVALHO: Använder ej - LUCAS FREITAS: Nej. Låt oss säga att jag vill också att få detta heltal m.. Jag måste göra det på en annan linje. PUBLIK: Om du skulle köra det, hur [OHÖRBAR]? Det skulle skriva ut prompten det [OHÖRBAR] och då du skulle skriva in en och - LAUREN CARVALHO: Tja, kör den. Jag menar, det finns ingenting som hindrar oss från bara köra den och se vad skulle hända. LUCAS FREITAS: Jag tycker det är kommer att klagar på oss eftersom vi inte använder - LAUREN CARVALHO: Oj. LUCAS FREITAS: Det klagade på oss rätt nu eftersom vi inte använder det här variabel, men om jag gjorde det, till exempel, n är lika lika med, och m är lika lika med, vad ska hända i det här fallet? Vad skulle det här programmet göra? PUBLIK: Jag undrar bara hur det skulle - LAUREN CARVALHO: Hon vill bara att veta hur det ser ut som, tror jag, eller hur? Så det tog en av dem, och sedan Det tog den andra en. Jag tycker vi ska gå vidare, eftersom vi har en mer bildspel kvar innan - vill du dra upp matte? LUCAS FREITAS: Ja, matte. LAUREN CARVALHO: Ge mig bara en sekund. Det finns några olika numerisk variabler i C. Sifferuppgifter inom C kan klassificeras i olika typer, och dessa är de som du kommer se de oftast. Och int är ett heltal. Du kan inte ha några decimaler. I Appliance, tar det 32 bitar för att lagra en int. En flottör kan ha decimaler. Det tar också 32 bitar för att lagra en flottör i Appliance. En dubbel är ett tal med en decimal punkt som tar 64 bitar för att lagra det, vilket innebär att du bara kan ha större precision eftersom du kan ha mer - Vad kallar du det? LUCAS FREITAS: Ja, det är mer. LAUREN Carvalho: Fler platser efter decimalkommat. Och en lång lång är ett heltal som tar 64 bitar för att öm det i Appliance. LUCAS FREITAS: Så det kan vara större än ints kan vara. LAUREN CARVALHO: Men saken uppgifter typer i C är att de berätta vad typ av data du kan lagra i variabeln. De talar om hur du kan använda den här variabel i ditt program. Det är väldigt viktigt att bara hålla reda av vilken datatyp du använder, och om du behöver för att kasta från en datatyp till en annan, se till att du vet exakt vad som händer när det gjutning äger rum. Och du kommer att se ett exempel senare på i dessa bilder av en misstag som kan uppstå. Låt oss ta en titt på några matte i C och tycker verkligen noga, gissar jag, om vad som händer när detta math sker. I den allra första raden, vad är händer när jag förklarar x? PUBLIK: Du tillåter x att vara något? LAUREN CARVALHO: Ja. Tja, jag verkligen ber drift system för 32 bitar av minnet, eller hur? I vilka kan jag lagra en int, och Jag kommer att kalla det int x. LUCAS FREITAS: I grund och botten går i minnet och att hitta en plats som har 32 bitar och säga, hej, jag vill ha detta utrymme, och det kommer att kallas x. Så du är bara ganska mycket fynd en ruta i ditt minne för att lagra värden för x. LAUREN CARVALHO: Och sedan initiera jag x, vilket betyder att jag bara lagra värde på 2 på den platsen, som bit minne, att vi frågade drifts system för. Och här nere vad vi gör är vi faktiskt förklara och initierar y på en rad istället för i två rader som vi gjorde här uppe, som också är en mycket bra, är vi addera 1 till x, och vi lagrar det värde i y. LUCAS FREITAS: Så i princip vad detta linje gör, den hittar nu en låda för y, och sedan dess värde, det som du kommer att sätta i rutan, är kommer att vara värdet på x plus 1. Så det har den här rutan för y. Det blir värdet för x, ser här, och se att det är 2. Sätt det där, plus 1, så det sätter en 3 där. Låter det vettigt? Så y skulle vara 2 i det här fallet. LAUREN CARVALHO: Okej, coolt. Vi såg några tillägg, så låt oss nu tänka om uppdelning i C. Här är jag förklara och initierar en flottör heter svar och dividera 1 med 10, och sedan ska jag skriva ut svaret till två decimaler. Och notera här, i min printf uttalande, när jag vill skriva ut något till två decimaler, är% .2 f vad jag vill använda. Så poängen 2 är att bara säga Jag behöver två platser efter decimal skrivs ut. Nu, vad som kommer att hända Om jag kör den här koden? Har någon en idé? Vad skulle skriva ut? LUCAS FREITAS: Vilka är Vi räknar med att få. LAUREN CARVALHO: Vad gör Vi vill först och främst? LUCAS FREITAS: [OHÖRBAR] LAUREN CARVALHOS: 0,1, ja. Men vad kommer att skriva ut? PUBLIK: [OHÖRBAR] LAUREN CARVALHO: Tja, nej, faktiskt. Detta är vad jag pratade om varför du måste hålla mycket noga koll på dina datatyper. Så, vilken datatyp är det här? Är en int, eller hur? Det finns ingen decimal. 10 är också en int. Det finns ingen decimal. Om jag delar en int med en int, får jag en int vilket inte är 0,1, eftersom ints kan inte ha decimaler, men bara 0. Eftersom en int bara trunkerar bort decimaler. LUCAS FREITAS: Så när du gör verksamhet med Ints, du kommer att få en int som svaret. Så i princip, vad datorn gör, det är klyftor 1 av 10, och det blir 0,1. Men då är det som att, vänta, det är tänkt att vara ett heltal, så att du bara ignorera 0,1, så det är nu bara 0. LAUREN CARVALHO: Så när jag skriver ut detta ut, jag får 0,00 i stället för 0,10. LUCAS FREITAS: Låter det vettigt? LAUREN CARVALHO: Det är typ av olycklig, eller hur? LUCAS FREITAS: Så hur kan vi fixa detta? LAUREN Carvalho: Låt oss försöka fixa det. Här är ett exempel på där jag är faktiskt gjutning av 1 och 10 att flyta. Så nu, 1 är inte längre en int. 1 är ett flöte. Förresten, är detta bara syntaxen för när du vill kasta från en datatyp till en annan. Du kan bara sätta datatypen i parenteser och har det bara föregå det värde som du gjutning. Så här kommer jag att dela en flottör av en flottör för att få en flottör svar. Och ja, skulle detta i Faktum är att skriva ut 0.10. Låter det vettigt? LUCAS FREITAS: Så typ gjutning är bara konvertera från en typ till en annan. Så flyter 1 är faktiskt 1.000. Inte precis det här, men det är något med decimaler det är faktiskt 1. Låter det vettigt? Yeah? PUBLIK: Vad händer om du gjorde float svar lika med 1,0 delat med 10? LAUREN CARVALHO: Du är faktiskt går att se att i nästa bild. Det är faktiskt vår nästa bild. Detta är faktiskt en trevligare än typ gjutning, tror jag. Så dessa två är flyter bara med arten av det faktum att de har decimaler. Ja? PUBLIK: Vad händer om du gjorde [OHÖRBAR] dividerat med 10? LAUREN CARVALHO: Faktiskt en flottör dividerat med en int faktiskt ger dig en flyta, så det skulle fungera bra. Vänta, inte alla förstå detta? Eftersom detta kommer att bli en riktigt stor sak i Pset1, faktiskt. Ja? PUBLIK: Kan du bara snabbt gå över den röda delen? LAUREN CARVALHO: Den röda delen, ja. Lucas, vill du? LUCAS FREITAS: OK. Så kom ihåg att den procentuella är en platshållare. Det är som ett tomt utrymme. Så låt oss försöka förstå allt som pågår här. Procent betyder att det är en platshållare. Då har du f, vilket innebär att denna platshållare är en flottör. Det sista som vi har här är en 0,2, vilket betyder att jag vill ha två decimaler för flottören. Om jag bara hade% f, de kommer att sätta en massa decimaler. Så jag kan bara sätta 0,2 eller 0,1 eller 0,5, eller vad som helst, och det kommer att sätta det antal decimaler. Det enda är att om du lägger ut .100 Eller .1,000, det är faktiskt inte kommer att sätta alla dessa decimaler eftersom den inte har tillräckligt med minne att ha den precision. Fler frågor? Yeah? PUBLIK: Så flyter bara tillåter du att gå längre än heltal? LUCAS FREITAS: Ja. LAUREN CARVALHO: Tja, en flottör bara gör att du kan ha decimaler. LUCAS FREITAS: Det betyder bara att du nu kan ha decimaltal. PUBLIK: Varför skulle vi någonsin använda heltal? LUCAS FREITAS: Varför skulle du använder heltal? Kanske om du räknar från 0 till 10, du vill använda faktiskt ett heltal. Du behöver inte använda en flottör. I vissa situationer behöver du inte måste faktiskt - LAUREN CARVALHO: Kanske du vill inte decimaler. LUCAS FREITAS: Kanske behöver du inte vill använda ett flöte. LAUREN CARVALHO: Den andra saken är, minns, både sätta en float och en int ta 32 bitar för att lagra dem, och kanske du vill inte slösa bitar på decimaler. LUCAS FREITAS: Ja. Så liksom, bara tänka på detta. Du har 32 bitar för både en int och float. För en int, alla dessa 32 bitar gå till heltalsdelen. Om du använder en flottör med 32 bitar, du har en del av detta minne som används för det antal, för hela antalet, och den andra delen används för decimaler. Så det betyder att du inte kan komma till mycket stort antal med flöten eftersom flottören är redan med mycket minne för decimaler. Yeah? PUBLIK: Det första svaret, vad exakt gör det? Är det att sätta värdet på flyt lika till den platshållare för att du kan återkalla den i nästa rad? Den säger flyta svar. LUCAS FREITAS: Ja. Så, betyder flyta svar du får nu en liten hink i minnet att innehar en flottör, och det kommer att kallas svar. Så det är vad float svar gör. Och då du säger att insidan av detta, du kommer att sätta resultatet av detta. Så du ska göra 1,0 dividerat med 10.0, får du 0,1, och sedan du sätter att insidan av svaret. LAUREN CARVALHO: Så i en rad, vi är förklara och initierar denna flottör kallas svar. LUCAS FREITAS: Intressant, även detta är bara en rad, det gör flera operationer. Det är bara ett sätt att C uthyrning du använder mindre kod. Det är samma sak som den ternära operatören, hur man bara kan göra en [OHÖRBAR] i en rad. Det är faktiskt gör samma sak som gör float svar, semikolon, och då svaret är lika med denna, men i stället för vilket gör att du gör två rader för det, det är som en genväg. Yeah? PUBLIK: Så om du körde det, det skulle vara 0.10? LUCAS FREITAS: Ja. Yeah? PUBLIK: Är svarar faktiskt kod, eller är det bara namnet? LAUREN CARVALHO: Detta är faktiskt kod. Det här är vad vi ska för att nämna vår variabel. PUBLIK: Så det är bara ett namn [OHÖRBAR]. LAUREN CARVALHO: Ja. Jag kunde ha sagt float x är lika med 1,0. LUCAS FREITAS: Saken är den att namnet på variabeln är något som du använder. Det är viktigt för dig. För det aktuella programmet, det enda att frågor är det värde som du har inne i hinken. Anledningen till att du har variabler och namn på variabler är så att du skulle veta vad du arbetar med, liksom vilken typ av data du är åtkomst åt gången. Men för själva koden, om du ringer det svara eller fråga eller något, ganska mycket, det spelar ingen roll. Det spelar ingen roll. Så länge du är konsekvent i varje förekomst det och så du kallar det något annat. Yeah? PUBLIK: Gör variablerna utöver den funktionen? Som om du skulle skapa en konsol [OHÖRBAR], kan du bara [OHÖRBAR] svara igen? LAUREN CARVALHO: Nej. PUBLIK: [OHÖRBAR] LAUREN CARVALHO: Nej. Det skulle vara utanför räckvidden av denna speciella variabel. Och faktiskt, det är den typen av intressant, för när vi har saker som öglor eller dessa om förhållanden, om du deklarerar en variabel inom en annan uppsättning av klammerparenteser, det egentligen bara existerar inom dessa klammerparenteser. PUBLIK: En sista anteckning om de [OHÖRBAR] flottar. Varför skulle du någonsin vilja använda ints? Detta är mer av en sida noterar än vad som helst, men datorn är betydligt bättre på att hantera ints än det är vid hantering flyter. Det är som en beställning av magnitud snabbare. Så om vi bara hanteras bara flyter, saker skulle vara mycket långsammare. LAUREN CARVALHO: Faktiskt, det verkar att vara ett problem med flöten. LUCAS FREITAS: Typ av orsaken till att du kan tänka, är hur i binär du kan representera heltal genom att sätta 0 s och 1 s. LAUREN CARVALHOS: Det är nästa sak. LUCAS FREITAS: OK. Awesome. LAUREN CARVALHO: Bara Håll den tanken. LUCAS FREITAS: OK, jag ska berättar sen. LAUREN CARVALHO: Innan vi kommer till vad Lucas sa just, operatör företräde. Det är sunt förnuft. Ni har gjort det tillräckligt. Så, bara om något är inom parentes, det kommer att hända först. Det är multiplikation har företräde över Dessutom subtraktion, sådana saker. Så egentligen, bara någon som vill berätta vad nummer ett faktiskt utvärderas till? Publik: 27. LAUREN CARVALHOS: 27? Yeah. LUCAS FREITAS: Låt mig ge godis till människor. LAUREN CARVALHO: Okej. Hur är nummer två? Hur är nummer två? Publik: 22. LAUREN CARVALHO: 22, ja. Jag vet inte vem som fick den. Nummer tre? Publik: 10. LAUREN CARVALHO: 10, ja. Cool. Så modulo. Lucas, vill du förklara modulo? LUCAS FREITAS: Modulo är denna operatör som faktiskt är mycket användbart för en gäng problem. Om jag gör 55 modulo 10, vad den gör denna låt oss säga att jag vill dividera 55 med 10. Vad får jag? Det känns precis som om jag är faktiskt bara gör delningen, vilken är den första gången som jag fick heltal? PUBLIK: 5. LUCAS FREITAS: 5. Och sedan resten är 5, eller hur? Så det är som 5 gånger 10 plus 5. I grund och botten, vad modulo gör, försöker den dividera detta tal med den här, och den ser vad är resten av indelningen. LAUREN CARVALHO: Så det bara returnerar resten. Så nummer ett är vad? 5. Nummer två? PUBLIK: 3. LAUREN CARVALHOS: 3. Nummer tre? 0. Och fyra är 1. Exakt. LUCAS FREITAS: Enkelt, eller hur? LAUREN CARVALHO: Varför inte vi hoppa över det här bara för att vi har egentligen inte tiden, och folk verkar förstå. Så här är vad Lucas var bara talar om. LUCAS FREITAS: En annan anledning till att jag skulle använda ints istället för flottörer är som flyter är mycket oprecisa. Och varför är de preciserad? David sade att representera ett heltal, till exempel, använder vi 0 s och 1: s, eller hur? Och då du i princip göra multiplikation, göra alla de verksamheten att veta vad decimaltal du har istället för binär. Vad händer nu om jag försöker att sätta decimal? Faktiskt, till exempel, om jag har Antalet som 3,33333? Det känns som 10 över 3. Hur ska jag förvara alla 3 är att jag efter det? Det är verkligen svårt, eller hur? Du kan inte bara tala om för datorn, hej, jag har en 3, och då du gör det alltid. Egentligen datorn inte smart nog för detta. Så i princip hela datorn gör är att den försöker sätta så många siffror som det kan upp till minnet som du har. Så låt oss säga att det kommer att säger 3.3333, och det är det. Så det är inte kunde faktiskt uttrycka exakt vad som float är. LAUREN CARVALHOS: Vi har ett ändligt antal bitar, vilket innebär att inte varje decimaltal kommer att bli kunna representeras exakt. Och så i det här exemplet, om vi skriva ut 0.1, är vi nu utskrift ut 20 platser. LUCAS FREITAS: Precis som jag berättade ni, kan ni sätta någon siffra. Men om du bara gjorde de två platser, du skulle få 0,10, men om du sätter 20 ställen, det kommer att visa dig en massa av beror på att detta är vad du kan sätta i minnet, eller hur? Men just här, upp till 0, och sedan bara lägga den en gäng slumptal. Det är ungefär som en del - LAUREN CARVALHO: Det beror på att vi är inte kunna representera denna decimal exakt med antalet bitar som vi har. LUCAS FREITAS: Och sedan Datorn är i grunden vilket ger dig en papperskorg nummer. Detta är faktiskt inte värdet av antalet. PUBLIK: Det är så nära som det kan få [OHÖRBAR] med hjälp av [OHÖRBAR]. LAUREN CARVALHO: Så innebörden av detta är att låt oss säga att i stället för vara 0.100014, vad som helst, tänk om det var 0,0999 - bra, OK. Låt oss låtsas att det faktiska svaret till detta var 0,9999999. Det är väldigt nära 1, men det är inte precis 1. Det är 0,99999. Detta innebär att om jag tar det 0,999, och jag kastade den till en int, jag får 0. Jag får inte 1. LUCAS FREITAS: Därför kom ihåg, gjutning från float till int, du bara ignorera alla decimaler. Du ignorera bara dem. Det finns inget sådant som avrundning eller kör ner när du typecast. Faktiskt, det är denna funktion som gör avrundning, vilket är mycket viktigt, men du tror bara att när du gör type-casting, det är bara kommer att radera allt. Så även om du har 0,99999, det kommer att bara ge 0 om du typecast [OHÖRBAR] ett heltal. LAUREN CARVALHO: Så bara vara riktigt medvetna för flyttal i precision, speciellt när du börjar använda flottar i Pset1. Men promenad genom bör varna dig om det också. LUCAS FREITAS: Och egentligen är det verkligen hårt, till exempel, om jag gjorde float svar en motsvarande 1,0 över 10, och sedan flyta svar två lika med 10,0 över 100,0. De är lika många, eller hur? 0.1, eller hur? 1 över 10 eller 10 över 100. Men nu om jag försöker se jämlikhet, som om svaret 1 är lika med svar 2, kanske det inte faktiskt kommer vara samma sak. Så flyter är ungefär som det. De är som att göra jämställdheten.