[MUSIC SPILLE] SPEAKER: All right. Så la oss snakke om en annen Det som er litt unikt for C, som er datatyper og variabler. Når jeg sier unik for C, jeg virkelig bare bety i sammenheng med, hvis du har vært en programmerer for en veldig lang tid, du har sannsynligvis ikke jobbet med datatyper hvis du har brukt moderne programmeringsspråk. Moderne språk som PHP og Javascript, som vi vil også se litt senere i kurset, du trenger faktisk ikke å spesifisere datatypen til en variabel når du bruker den. Du bare erklære den og begynne å bruke den. Hvis det er et heltall, det vet det er et heltall. Hvis det er en karakter, er det vet at det er et tegn. Hvis det er et ord, det vet det er en streng, såkalte. Men i C, som er en eldre språk, trenger vi å spesifisere data type hver variabel at vi skaper første gang at vi bruker den variabelen. Så C kommer med noen innebygde datatyper. Og la oss bli kjent med noen av dem. Og så etterpå skal vi også snakke litt om noen av de datatyper som vi har skrevet for deg, slik at du kan bruke dem i CS50. Den første er int. Int datatype brukes for variabler som vil lagre heltallsverdier. So 1, 2, 3, negativ 1, 2, 3, og så videre. Heltall, som er noe du bør huske på for quiz, alltid ta opp fire bytes av minne, som er 32 biter. Det er åtte bits i en byte. Så dette betyr at omfanget av verdier som et heltall kan lagre er begrenset av hva som kan passe inn i 32 biter igjen av informasjon. Nå som det viser seg, det var lenge siden bestemte at vi skulle splittes opp dette området av 32 biter inn negativheltall og positive heltall, hver får halvparten av området. Så verdiområdet som vi representerer med et tall varierer fra negative 2 til den 31 kraft til to til 31. makt minus 1, føre til at du trenger også et sted for 0. Så i utgangspunktet halvparten av de mulige verdier du får plass til i en int er negative, og halvparten er positive. Og omtrent her, dette handler om negative 2 milliarder til om positiv 2 milliarder. Gi eller ta et par hundre millioner kroner. Så det er hva du kan passe i et heltall variabel. Nå har vi også noe kalt en usignert heltall. Nå usignerte ints er ikke en egen type variabel. Snarere er usignert det som kalles en kvalifiseringskamp. Det endrer data type heltall litt. Og i dette tilfelle, hva usignert means-- og du kan også bruke usignerte andre datatyper, heltall er ikke den eneste. Hva det effektivt gjør er dobles den positive verdiområde som et heltall kan ta på i det bekostning av ikke lenger å tillate deg å ta på negative verdier. Så hvis du har tall som du vet vil få høyere enn 2 milliarder, men mindre enn 4 milliarder kroner, for example-- som er 2 til den 32. power-- kan det være lurt å bruke en usignert int hvis du vet at verdien vil aldri bli negativ. Du vil tidvis ha brukes for usignerte variabler i CS50, og det er derfor jeg nevner det her. Men igjen, verdiområdet som du kan representere med en usignert heltall som til t vanlig heltall, er 0 til 2 til den 32. makt minus 1, eller ca 0-4 milliarder. Så du har effektivt doblet positiv utvalg som du kan passe, men du har gitt opp alt negative verdier. Nå som en side, usignert er ikke den eneste kvalifiseringskamp at vi kan se for variable datatyper. Det er også ting som kalles kort og lang og konst. Konst vi får se litt litt senere i kurset. Kort og lang, vi vil sannsynligvis ikke. Men bare vet at det er andre kvalifiseringskamper. Usignert er ikke den eneste. Men det er den eneste vi er kommer til å snakke om akkurat nå. Så all right. Så vi har dekket heltall. Hva blir det neste? Chars. Så tegn benyttes for variable som vil lagre enkelt tegn. Røye er en forkortelse for karakter. Og noen ganger du kan høre folk uttale det som bilen. Så tegnene alltid ta opp ett byte minne, som er bare 8 bits. Så dette betyr at de bare kan passe verdier i området fra 2 negative til den sjuende strøm, eller negativ 128, til 2 til syvende makt minus 1, eller 127. Takket være ASCII, det var lenge siden bestemte en måte å kartlegge de positive tallene fra 0-127 til ulike tegn som alle finnes på våre tastatur. Så som vi skal se senere i kurset, og du vil sannsynligvis kommer til å huske på noen punkt, kapital A, for example-- tegnet kapital A-- kart til nummer 65. Og grunnen til det er fordi det er det som det er blitt tildelt av ASCII-standarden. Små bokstaver A er 97. Tegnet 0 for når du faktisk tegnet, ikke representerer tallet null, er 48. Du vil lære et par av disse som du går. Og du vil sikkert komme til å trenge dem litt senere i CS50. Den neste store datatype er flyttall. Så flyttall er også kjent som reelle tall. De er i utgangspunktet tall som har desimaltegn i dem. Flyt verdier som heltall er også inneholdt innen 4 byte minne. Nå er det ingen kart her. Det finnes ingen tall linje, fordi beskrive omfanget av en flottør er ikke helt klart, eller intuitivt. Det er nok å si at du har 32 bits å jobbe med. Og hvis du har en rekke som pi, som har et heltall del 3, og en flytende punktet del, eller desimal del 0,14159, og så videre, må du være i stand til å representere alle it-- heltallsdelen og desimal del. Så hva tror du det kan bety? En ting er at hvis desimal del blir lengre og lengre, hvis jeg har en veldig stor heltall del, kanskje jeg ikke være i stand til å være så presis med desimal del. Og det er egentlig det begrensning av en flottør. Flyter har en presisjon problem. Vi har bare 32 bits til jobbe med, så vi kan bare være så presis med vår desimal del. Vi kan ikke nødvendigvis har en desimal del presis til 100 eller 200 sifre, fordi vi bare har 32 biter å jobbe med. Så det er en begrensning av en flåte. Nå heldigvis er det en annen datatype kalt dobbel, som noe omhandler dette problemet. Dobler, som flyter, blir også brukt til å lagre reelle tall eller flyttall verdier. Forskjellen er at dobles er dobbel presisjon. De kan passe 64 biter av data, eller åtte bytes. Hva betyr det? Vel, betyr det at vi kan være mye mer presis med komma. I stedet for å pi til syv steder kanskje, med en dupp, vi kan kanskje få den til 30 plasser. Hvis det er viktig, kan det være lurt å bruke en dobbel i stedet for en flottør. I utgangspunktet, hvis du er jobber med noe der å ha en veldig lang desimal og mye presisjon er viktig, du sannsynligvis vil ta en dobbelt overfloat. Nå for det meste av arbeidet i CS50, bør en dupp nok. Men vet at dobler eksistere som en måte å håndtere noe med presisjonen problemet ved å gi deg en ekstra 32 bits å jobbe med for dine tall. Nå er ikke dette en datatype. Dette er en type. Og det heter ugyldig. Og jeg snakker om det her fordi vi har sannsynligvis sett den et par ganger allerede i CS50. Og lurer du kanskje på hva det handler om. Så void er en type. Det eksisterer. Men det er ikke en datatype. Vi kan ikke lage en variabel av type ugyldig og tilordne en verdi til det. Men funksjoner, f.eks kan ha et tomrom returtype. I utgangspunktet, hvis du ser en funksjon som har et tomrom returtype, det betyr at det ikke returnerer en verdi. Kan du tenke på en felles funksjon som vi har brukt så langt i CS50 som ikke returnerer en verdi? Printf er ett. Printf faktisk ikke tilbake noe til deg. Den skriver noe til skjermen, og det er i utgangspunktet en bivirkning av hva printf gjør. Men det trenger ikke gi deg en verdi tilbake. Du trenger ikke ta resultatet og butikk det i noen variabel for å bruke det senere. Den skriver bare noe å skjermen og du er ferdig. Så vi sier at printf er et tomrom funksjon. Den returnerer ingenting. Omkretsen liste over en Funksjonen kan også være ugyldige. Og du har også sett at mye i CS50 også. Int main ugyldig. Betyr det ringe en bjelle? I utgangspunktet hva det betyr er at Hoved ikke tar noen parametere. Det er ingen argument at få gått inn hoved. Nå senere skal vi se at det er en måte å passere argumenter inn i main, men så langt har det vi har sett er int main ugyldig. Hoved bare ikke tar noen argumenter. Og så vi spesifisere at ved å si annullert. Vi er bare å være veldig eksplisitt om det faktum at det ikke tar noen argumenter. Så for nå, er nok å si at tomrommet i utgangspunktet skal bare tjene som en plassholder for deg som tenker på som ingenting. Det er egentlig ikke gjør noe. Det er ingen returverdi her. Det finnes ingen parametere her. Det er ugyldig. Det er litt mer komplisert enn som så. Men dette bør være tilstrekkelig for den bedre delen av kurset. Og forhåpentligvis nå du har en liten litt mer av et begrep om hva tomrommet er. Så de er de fem typene du vil møte som er innebygd i C. Men i CS50 vi har også et bibliotek. CS50.h, som du kan inkludere. Og som vil gi deg med ytterligere to typene at du vil sannsynligvis kunne å bruke på oppdrag, eller bare jobbe generelt programmering. Den første av disse er bool. Så boolsk datatype, bool, blir brukt for variabler som vil lagre en boolsk verdi. Hvis du noen gang har hørt dette begrepet før, du kunne vite at en boolsk verdien er i stand til bare holde to forskjellige distinkte verdier. Sant og usant. Nå virker ganske fundamental, ikke sant? Det er litt av en overraskelse at dette ikke eksisterer i C som det er innebygd. Og i mange moderne språk, Selvfølgelig Booleans er en standard standard datatype. Men i C, er de faktisk ikke. Men vi har laget det for deg. Så hvis du noen gang trenger for å lage en variabel med type er bool, bare sørg for å #include CS50.h i begynnelsen av programmet, og du vil være i stand til å skape variabler av bool type. Hvis du glemmer å #include CS50.h, og du begynner å bruke boolsk-type variabler, du kan støte på noen problemer når du kompilere programmet. Så bare være på utkikk etter det. Og kanskje kan du bare fikse problemer ved pund inkludert CS50.h. Den andre store datatype som vi forsørge deg i CS50 biblioteket er streng. Så hva er en streng? Strenger er egentlig bare ord. De er samlinger av tegn. De er ord. De er setninger. De er avsnitt. Kan være hele bøker, selv. Svært kort til veldig lenge serie tegn. Hvis du trenger å bruke strenger, for eksempel, for å lagre et ord, bare sørg for å inkludere CS50.h i begynnelsen av programmet slik at du kan bruke streng type. Og så kan du lage variabler med datatype er streng. Nå senere i kurset, Vi vil også se at det er ikke hele historien, heller. Vi vil støte ting kalt strukturer, som lar deg gruppere hva som kan være et helt tall og en streng til en enhet. Og vi kan bruke det for noen formål, noe som kanskje komme godt med senere i kurset. Og vi vil også lære om definerte typer, som lar deg lage dine egne datatyper. Vi trenger ikke å bekymre deg om det for nå. Men bare vet at det er noe i horisonten, at det er mye mer til dette hele type ting enn jeg forteller deg bare nå. Så nå som vi har lært litt om grunnleggende data typer og de CS50 datatyper, la oss snakke om hvordan du arbeider med variabler og lage dem ved hjelp av disse datatyper i våre programmer. Hvis du ønsker å opprette en variabel, alt du trenger å gjøre er to ting. Først må du gi den en type. Den andre tingen du trenger å gjøre er å gi den et navn. Når du har gjort det, og slo en semikolon ved enden av linjen, du har opprettet en variabel. Så her er to eksempler. Int nummer, røye brev ;. Hva har jeg gjort her? Jeg har laget to variabler. Den første, variabelens Navnet er nummer. Og antall er i stand til å holde heltall skriv verdier, fordi denne typen er int. Letter er en annen variabel som kan holde tegn fordi datatypen er røye. Ganske grei, ikke sant? Hvis du finner deg selv i en situasjon der du trenger for å lage flere variabler av samme type, du trenger bare å spesifisere typenavnet en gang. Så bare liste så mange variabler av den typen som du trenger. Så jeg kunne for eksempel, her i denne tredje linje med kode, si int høyde ;, ny linje. Int bredde ;. Og det ville fungere også. Jeg vil fortsatt få to variabler kalt høyde og bredde, som hvert er et helt tall. Men jeg har lov til, ting til C syntaks, konsolidere den inn i en enkelt linje. Int høyde, bredde; Det er det samme. Jeg har laget to variabler, en som heter en høyde kalt bredde, som begge er i stand til holde heltallstype verdier. Tilsvar her, kan jeg lage tre flyt verdier på en gang. Jeg kan kanskje lage en variabel kalles kvadratroten av 2-- som antagelig vil til slutt holde den flytende point-- som representasjon av plassen roten av 2-- kvadratroten av tre, og pi. Jeg kunne ha gjort dette på tre separate linjer. Float, kvadratrot 2; Flyte kvadratrot 3; flyte pi; og som ville fungere også. Men igjen, jeg kan bare konsolidere dette til en eneste linje med kode. Gjør ting litt kortere, ikke så klumpete. Nå generelt, er det godt design for å bare erklære en variabel når du trenger det. Og vi skal snakke litt litt mer om det senere i kurset når vi diskuterer omfang. Så ikke nødvendigvis trenger å skape alle dine variabler ved begynnelsen av programmet, hvilken noen mennesker kan ha gjort tidligere, eller var sikkert en veldig vanlig koding praksis for mange år siden når du arbeider med C. Du kan bare ønsker å opprette en variabel rett når du trenger det. Greit. Så vi har laget variabler. Hvordan bruker vi dem? Etter at vi erklære en variabel, trenger vi ikke å spesifisere datatypen av den variabelen lenger. Faktisk, hvis du gjør det, kan du ende opp med noen rare konsekvenser at vi vil slags glans over for denne gang. Men nok det å si, rare ting går å begynner å skje hvis du ved en feiltakelse re-erklære variabler med samme navn igjen og igjen. Så her har jeg fire linjer med kode. Og jeg har et par kommentarer der bare indikerer hva som skjer på hver linje bare for å hjelpe du få ligger i hva som skjer. Så int nummer ;. Du så at tidligere. Det er en variabeldeklarasjon. Jeg har nå opprettet en variabel ringte nummeret som er stand til å holde heltall-type verdier. Jeg har erklært den. Den neste linjen jeg tildele en verdi til nummer. Antall tilsvarer 17. Hva skjer der? Jeg setter nummer 17 Innsiden av den variable. Så hvis jeg noen gang deretter skrive ut hva innholdet i antallet er senere, de vil si at det er 17. Så jeg har erklært en variabel, og da har jeg tildelt den. Vi kan gjenta prosessen igjen med røye brev ;. Det er en erklæring. Letter tilsvarer kapital H. Det er et oppdrag. Ganske grei, også. Nå er denne prosessen kan virke litt dum. Hvorfor gjør vi dette i to linjer med kode? Finnes det en bedre måte å gjøre det? Faktisk er det. Noen ganger kan du se dette kalles initialisering. Det er når du deklarerer en variabel og å tilordne en verdi på samme tid. Dette er faktisk en ganske vanlig ting å gjøre. Når du oppretter en variabel, du vanligvis vil at det skal ha noen grunnleggende verdi. Selv om det er 0 eller noe. Du bare du gir det en verdi. Du kan initialisere en variabel. Int tall tilsvarer 17 er den samme som de første to linjer med kode opp ovenfor. Char bokstav er lik h er den samme som den tredje og fjerde linjer med kode ovenfor. Det viktigste takeaway her når vi erklære og tilordne variablene er etter at vi har erklærte den, varsel Jeg bruker ikke datatypen igjen. Jeg sier ikke int antall tilsvarer 17 på den andre linjen med kode, for eksempel. Jeg sier bare nummer tilsvarer 17. Igjen, re-erklære en variabel etter du allerede har erklært det kan føre til noen rare konsekvens. Så bare være forsiktig med det. Jeg er Doug Lloyd. Og dette er CS50.