[MUSIK SPELA] Speak: Okej. Så låt oss tala om en annan sak som är ganska unikt för C, vilket är datatyper och variabler. När jag säger unika för C, jag verkligen bara betyda i samband med, Om du har varit en programmerare för en riktigt lång tid, du har antagligen inte arbetat med datatyper Om du har använt modern programmeringsspråk. Moderna språk som PHP och JavaScript, som vi också kan se en liten senare i kursen, du egentligen inte behöver ange datatyp en variabel när du använder den. Du förklara den bara och börja använda den. Om det är ett heltal, det vet att det är ett heltal. Om det är ett tecken, det är vet att det är ett tecken. Om det är ett ord, vet det Det är en sträng, så kallade. Men i C, vilket är en äldre språk, vi behöver att ange vilka uppgifter typ av varje variabel att vi skapar för första gången att vi använder den variabeln. Så C kommer med några inbyggda datatyper. Och låt oss bekanta med några av dem. Och sedan efteråt kommer vi också prata lite om några av de datatyper att vi har skrivit för dig, så du kan använda dem i CS50. Den första är int. Typen int data används för variabler som kommer att lagra heltalsvärden. So 1, 2, 3, -1, 2, 3, och så vidare. Heltal, vilket är något du bör ha i åtanke för testet, alltid ta upp fyra byte minne, som är 32 bitar. Det finns åtta bitar i en byte. Så detta innebär att utbudet av Värden som ett heltal kan lagra är begränsad av vad som kan passa inuti 32 bitar värde av informationen. Nu visar det sig, Det var länge sedan bestämde att vi skulle dela upp detta intervall av 32 bitar till negativa heltal och positiva heltal, varje få hälften av intervallet. Så de värden som vi representerar med ett heltal, från negativ 2 till den 31 kraft till 2 31 makt minus 1, orsaka behöver du också en plats för 0. Så i princip hälften av de möjliga värdena du kan passa in i en int är negativa, och hälften är positiva. Och ungefär här handlar det om negativa 2000000000 till en positiv 2 miljarder. Ge eller ta ett par hundra miljoner. Så det är vad du kan passa i en heltalsvariabel. Nu har vi också något kallas ett osignerat heltal. Nu osignerade ints är inte en separat typ av variabel. Snarare är osignerad vad som kallas en kvalmatch. Det ändrar data typ av heltal något. Och i detta fall, vad unsigned means-- och du kan också använda osignerade andra datatyper, heltal är inte den enda. Vad det effektivt gör är dubbel det positiva området av värden att ett heltal kan ta på bekostnad av att inte längre tillåta dig att ta på negativa värden. Så om du har siffror som du vet kommer att få mer än 2 miljarder men mindre än 4 miljarder, för example-- vilket är två till 32:e Power-- kanske du vill använda en osignerad int om du vet ditt värde kommer aldrig att bli negativ. Du kommer då att ha används för osignerade variabler i CS50, vilket är anledningen till att jag nämner det här. Men återigen, de olika värden som du kan representera med ett osignerat heltal som att t regelbunden heltal är 0 2 till 32: a makten minus 1, eller ca 0-4000000000. Så du har faktiskt fördubblat positiv område som du kan passa, men du har gett upp alla de negativa värden. Nu som en sidoreplik, osignerad är inte den enda kvalificerare att vi kan se variabeldatatyper. Det finns också saker som kallas kort och lång och konst. Const vi får se lite Lite senare i kursen. Kort och lång, vi förmodligen inte. Men vet bara att det är andra kvalet. Unsigned är inte den enda. Men det är det enda vi är kommer att prata om just nu. Så okej. Så vi har täckt heltal. Vad händer härnäst? Tecken. Så tecken används för variabler som kommer att lagra enstaka tecken. Char är en förkortning av karaktär. Och ibland du kan höra folk uttalas som bil. Så tecken alltid ta upp ett byte av minne, som ligger bara 8 bitar. Så detta innebär att de endast kan passa värden i området negativt 2 till sjunde makten, eller negativt 128, 2 till den 7: e makten minus 1, eller 127. Tack vare ASCII, var det länge sedan bestämde ett sätt att kartlägga de positiva tal från 0 till 127 olika tecken att allt finns på våra tangentbord. Så när vi får se senare i kursen och du kommer förmodligen komma att memorera någon punkten, kapital A, för example-- tecken huvudstaden A-- kartor till antalet 65. Och anledningen till det är eftersom det är vad det är fått i uppdrag av ASCII-standarden. Gement A är 97. Tecknet 0 när du faktiskt skriver karaktär, inte representerar antalet noll, är 48. Du får lära dig ett par av dessa som du går. Och du kommer säkerligen komma att behöva dem lite senare i CS50. Nästa stora datatyp är flyttal. Så flyttal är även känd som reella tal. De är i stort sett siffror som har ett decimalkomma i dem. Flyttalsvärden liknande heltal är också finns inom 4 byte minne. Nu finns det ingen diagrammet här. Det finns inget nummer linje, eftersom beskriver intervallet en flottör är inte exakt klart eller intuitiv. Det räcker med att säga att du har 32 bitar att arbeta med. Och om du har ett antal som pi, som har ett heltal del 3, och en flytande punkt del, eller decimal del 0,14159, och så vidare, måste du vara kunna representera alla det-- heltalsdelen och decimaldelen. Så vad tror du det kan innebära? En sak är att om decimaltecknet del blir längre och längre, om jag har en mycket stor heltal del, jag kanske inte kunna vara så exakt med decimaldelen. Och det är verkligen begränsning av en flottör. Flyter ha en noggrannhet problem. Vi har bara 32 bitar till arbeta med, så vi bara kan vara så noggrann med vår decimaldelen. Vi kan inte nödvändigtvis har en decimal del exakt 100 eller 200 siffror, eftersom vi bara har 32 bitar att arbeta med. Så det är en begränsning av en flottör. Nu lyckligtvis finns det annan datatyp kallas dubbel, som något behandlar detta problem. Dubbel, som flottar, används också för att lagra reella tal, eller flyttal värden. Skillnaden är att dubbel är dubbel precision. De kan passa 64 bitar uppgifter, eller åtta byte. Vad betyder det? Tja, innebär det att vi kan vara mycket mer exakt med decimalkommat. Istället för att ha pi till sju platser kanske, med en flottör, Vi kan kanske ha det till 30 platser. Om det är viktigt, kanske du vill att använda en dubbel i stället för en flottör. I grund och botten, om du är arbetar med något där med en riktigt lång decimal och en hel del precisionen är viktig, du förmodligen vill Använd en dubbel overfloat. Nu för de flesta av ditt arbete i CS50, bör en flottör räcka. Men vet att dubbel existera som en sätt att något itu med precision problem genom att ge dig en extra 32 bitar att arbeta med för dina nummer. Nu är detta inte en datatyp. Detta är en typ. Och det kallas ogiltig. Och jag talar om det här eftersom vi har förmodligen sett det några gånger redan i CS50. Och kanske du undrar vad det handlar om. Så void är en typ. Det existerar. Men det är inte en datatyp. Vi kan inte skapa en variabel av typen ogiltig och tilldela ett värde till den. Men funktioner, till exempel, kan ha en typ void avkastning. I grund och botten, om du ser en funktion som har en typ void avkastning, Det betyder att det inte returnera ett värde. Kan du tänka på ett gemensamt funktion som vi har använt hittills i CS50 som inte återgår ett värde? Printf är en. Printf faktiskt inte tillbaka något för dig. Det skriver något till skärmen, och det är i princip en bieffekt av vad printf gör. Men det inte ger dig ett värde tillbaka. Du behöver inte fånga resultatet och lagra det i vissa variabel för att använda den senare. Den skriver bara något att skärmen och du är klar. Så vi säger att printf är ett tomrum funktion. Den returnerar ingenting. Omkrets förteckning över en Funktionen kan också vara ogiltiga. Och du har också sett att en hel del i CS50 alltför. Int main tomrum. Betyder det ringer en klocka? I grund och botten vad det betyder är att Huvud tar inga parametrar. Det finns inget argument som få passerat in i main. Nu senare kommer vi att se att det finns ett sätt att passera argument till main, men hittills vad vi har sett är int main tomrum. Huvud bara inte tar några argument. Och så vi anger att genom att säga ogiltigt. Vi bara vara mycket explicit om det faktum att det inte tar några argument. Så nu räcker det att säger detta tomrum i grunden ska bara fungera som en platshållare för dig som funderar på som ingenting. Det är egentligen inte göra någonting. Det finns ingen återvändo värde här. Det finns inga parametrar här. Det är ogiltiga. Det är lite mer komplicerat än så. Men detta borde räcka för den bättre delen av kursen. Och förhoppningsvis nu du har lite lite mer av en uppfattning om vad void är. Så de är de fem typer du kommer möte som är inbyggt i C. Men i CS50 vi har också ett bibliotek. CS50.h, som du kan inkludera. Och som kommer att ge dig med ytterligare två typer att du förmodligen kommer att kunna att använda på dina uppdrag, eller bara arbetar generellt programmering. Den första av dessa är bool. Så Boolean datatyp bool, används för variabler som kommer att lagra ett booleskt värde. Om du någonsin har hört denna term innan du kanske vet att en Boolean värde är i stånd att endast håller två olika distinkta värden. Sant och falskt. Nu verkar ganska grundläggande, eller hur? Det är lite av en överraskning att denna existerar inte i C som det är inbyggt. Och i många moderna språk, naturligtvis, Booleans är en standard standarddatatypen. Men i C, de är faktiskt inte. Men vi har skapat det för dig. Så om du någonsin behöver för att skapa en variabel vars typ är bool, bara vara säker på att #include CS50.h i början av programmet, och du kommer att kunna skapa variabler av typ bool. Om du har glömt att #include CS50.h, och du börjar använda Boolean-typ variabler, du kan stöta på vissa problem när du sammanställa ditt program. Så bara vara på jakt efter det. Och kanske kan du bara fixa problem genom pund inklusive CS50.h. Den andra stora datatyp som vi ge dig i CS50 biblioteket är sträng. Så vad är en sträng? Strängar är egentligen bara ord. De är samlingar av tecken. De är ord. De är meningar. De är stycken. Kan vara hela böcker, även. Mycket kort till mycket lång serie tecken. Om du behöver använda strängar, till exempel för att lagra ett ord, bara se till att inkludera CS50.h i början av ditt program så att du kan använda den typ strängen. Och då kan du skapa variabler vars datatyp är sträng. Nu senare i kursen, Vi kommer också att se att det är inte hela historien, heller. Vi kommer att stöta på saker kallade strukturer, vilket gör att du gruppera vad som kan vara ett heltal och en sträng till en enhet. Och vi kan använda det för något ändamål, som kanske komma väl till pass senare i kursen. Och vi kommer också lära om vissa typer, som låter dig skapa egna datatyper. Vi behöver inte oroa dig om det nu. Men vet bara att det är något vid horisonten, att det finns mycket mer att hela denna typ sak än jag säger bara nu. Så nu när vi har lärt oss lite om grundläggande uppgifter typer och typer CS50 data, låt oss prata om hur man arbetar med variabler och skapa dem med dessa datatyper i våra program. Om du vill skapa en variabel, allt du behöver göra är två saker. Först måste du ge det en typ. Den andra saken du behöver göra är att ge den ett namn. När du har gjort det och slog en semikolon i slutet av den linjen, du har skapat en variabel. Så här är två exempel. Int antal; char bokstav ;. Vad har jag gjort här? Jag har skapat två variabler. Den första, variabelns namn är nummer. Och antalet kan hålla heltal skriver värden, eftersom dess typ är int. Letter är en annan variabel som kan hålla tecken eftersom dess datatyp är röding. Ganska enkelt, eller hur? Om du befinner dig i en situation där du behöver för att skapa flera variabler av samma typ, du behöver bara ange typnamnet gång. Sedan är det bara lista så många variabler av den typ som du behöver. Så jag kunde till exempel, här i denna tredje raden av kod, säger int höjd ;, ny rad. Int bredd ;. Och det skulle fungera också. Jag skulle fortfarande få två variabler som heter höjd och bredd, som var och en är ett heltal. Men jag får saker till C syntax, konsolidera det till en enda rad. Int höjd, bredd; Det är samma sak. Jag har skapat två variabler, som kallas höjd en kallas bredd, vilka båda är kapabla att innehav heltal typ värden. På samma sätt här, kan jag skapa tre flyttal värden samtidigt. Jag kan kanske skapa en variabel kallas kvadratroten av 2-- vilket förmodligen kommer så småningom hålla den flytande point-- som representation av torget roten av 2-- kvadratroten av tre, och pi. Jag kunde ha gjort det här vid tre olika linjer. Float, kvadratroten 2; Float kvadratroten 3; flyta pi; och det skulle fungera också. Men återigen, kan jag bara konsolidera detta i en enda rad kod. Gör saker lite kortare, inte lika otymplig. Nu i allmänhet, är det bra design till endast deklarera en variabel när du behöver det. Och vi kommer att prata lite lite mer om det senare under loppet när vi diskuterar omfattning. Så inte nödvändigtvis skapa alla dina variabler i början av programmet, som vissa människor kanske har gjort tidigare, eller var verkligen en mycket vanlig kodning praxis många år sedan när man arbetar med C. Du kanske bara vill skapa en variabel rätt när du behöver det. Okej. Så vi har skapat variabler. Hur använder vi dem? När vi förklarar en variabel, behöver vi inte att ange datatyp av denna variabel längre. I själva verket, om du gör det, kanske du sluta med några konstiga konsekvenser att vi kommer typen av skyla över nu. Men det räcker att säga, konstiga saker går att börja hända om du av misstag åter deklarera variabler med samma namn om och om. Så här har jag fyra rader kod. Och jag har ett par kommentarer där bara anger vad som händer på varje rad bara för att hjälpa du får ligger i vad som händer. Så int antal ;. Du såg det tidigare. Det är en variabeldeklaration. Jag har nu skapat en variabel uppringt nummer som är med förmåga att hålla heltal-typ-värden. Jag har förklarat det. Nästa rad jag tilldela ett värde till nummer. Nummer är lika med 17. Vad händer där? Jag sätter siffran 17 insidan av denna variabel. Så om jag någonsin sedan skriva ut vad innehållet i nummer är senare, de ska berätta för mig att det är 17. Så jag har deklarerat en variabel, och sedan har jag tilldelat den. Vi kan upprepa processen igen med röding brev ;. Det är en förklaring. Brev lika kapitalet H. Det är ett uppdrag. Ganska enkelt, alltför. Nu denna process kanske verkar slags dumt. Varför gör vi det här i två rader kod? Finns det ett bättre sätt att göra det? I själva verket finns det. Ibland kan du se detta kallas initiering. Det är när du deklarerar en variabel och tilldela ett värde på samma gång. Detta är faktiskt en ganska gemensam sak att göra. När du skapar en variabel, du vanligtvis vill att det ska ha vissa grundläggande värde. Även om det är 0 eller något. Du kan bara du ger det ett värde. Du kan initiera en variabel. Int nummer är lika med 17 är densamma som de första två rader kod upp ovan. Char bokstav motsvarar h är densamma som den tredje och fjärde rader kod ovan. Den viktigaste takeaway här när vi förklara och tilldela variabler är när vi har förklarade det, meddelande Jag använder inte datatyp igen. Jag säger inte att int nummer är lika med 17 på den andra raden av kod, till exempel. Jag säger bara nummer är lika med 17. Återigen, åter förklara en variabel efter du redan har förklarat det kan leda till någon konstig konsekvens. Så bara vara försiktig med det. Jag är Doug Lloyd. Och detta är CS50.