[Musik spiller] SPEAKER: Okay. Så lad os tale om en anden ting, der er lidt unikt til C, som er datatyper og variabler. Når jeg siger unikt til C, jeg virkelig kun betyde i forbindelse med, hvis du har været en programmør for en virkelig lang tid, du har nok ikke arbejdet med datatyper Hvis du har brugt moderne programmeringssprog. Moderne sprog som PHP og JavaScript, som vi også vil se lidt senere i kurset, du behøver faktisk ikke at angive datatypen af ​​en variabel når du bruger den. Du skal bare erklære den og begynde at bruge det. Hvis det er et heltal, det ved, det er et heltal. Hvis det er et tegn, er det ved at det er et tegn. Hvis det er et ord, det kender det er en streng, såkaldte. Men i C, som er en ældre sprog, vi har brug for at angive de data, type hver variabel at vi skaber for første gang at vi bruger denne variabel. Så C kommer med nogle indbygget datatyper. Og lad os blive fortrolig med nogle af dem. Og så bagefter vil vi også snakke lidt om nogle af de datatyper at vi har skrevet til dig, så du kan bruge dem i CS50. Den første er int. Int datatype anvendes til variabler der vil gemme heltalsværdier. Så 1, 2, 3, negative 1, 2, 3 og så videre. Heltal, der er noget, du skal huske på, for quizzen, altid tage op fire bytes hukommelse, som er 32 bits. Der er otte bits i en byte. Så det betyder, at intervallet værdier, et heltal kan gemme er begrænset af, hvad der kan passe ind i 32 bits værd af oplysninger. Nu da det viser sig, Det var længe siden besluttede at vi vil opdele at intervallet 32 ​​bit i negative heltal og positive heltal, hver få halvdelen af ​​intervallet. Så rækken af ​​værdier, som vi repræsenterer med et heltal området fra negativ 2 til den 31. magt til 2 til 31. magt minus 1, medføre, at du også har brug for en plads til 0. Så dybest set halvdelen af ​​de mulige værdier du kan passe ind i en int er negative, og halvdelen er positive. Og omtrent her, det handler om negativ 2 milliarder til omkring positiv 2 mia. Give eller tage et par hundrede millioner. Så det er, hvad du kan passe i en heltalsvariabel. Nu har vi også noget kaldes en heltal uden fortegn. Nu ints usignerede er ikke en separat type variabel. Snarere, usigneret er hvad der kaldes en kvalifikationskamp. Det ændrer dataene type heltal lidt. Og i dette tilfælde, hvad usigneret means-- og du kan også bruge unsigned andre datatyper, heltal er ikke den eneste. Hvad det effektivt gør, er double den positive værdiområde at et heltal kan tage på i bekostning af ikke længere at tillade dig til at tage på negative værdier. Så hvis du har numre, som du kender vil få højere end 2 milliarder, men mindre end 4 milliarder, for example-- der er 2 til den 32. Power-- du måske ønsker at bruge en unsigned int, hvis du kender din værdi vil aldrig være negativ. Du vil lejlighedsvis have for variabler usignerede i CS50, hvilket er grunden til jeg nævner det her. Men igen, det område af værdier, som du kan repræsentere med en usigneret heltal som til t regelmæssig heltal, er 0 til 2 til den 32. magt minus 1, eller cirka 0-4000000000. Så du har faktisk fordoblet positiv interval, som du kan passe, men du har opgivet alle De negative værdier. Nu som en sidebemærkning, usigneret er ikke den eneste kvalifikator at vi måske se variable datatyper. Der er også ting kaldet kort og lang og konst. Const vi vil se lidt lidt senere i løbet. Kort og lang, vil vi sandsynligvis ikke. Men bare vide, at der er andre kvalifikationsturneringer. Unsigned er ikke den eneste. Men det er det eneste, vi er vil tale om lige nu. Så okay. Så vi har dækket heltal. Hvad bliver det næste? Chars. Så chars anvendes til variabler som vil gemme enkelte tegn. Char er en forkortelse for karakter. Og nogle gange er du måske høre folk udtale det som bil. Så tegn altid tage op en byte hukommelse, som ligger kun 8 bit. Det betyder altså, at de kun kan passe værdier i området fra 2 negative til den syvende magt, eller negativ 128, til 2 til 7. magt minus 1, eller 127. Takket være ASCII, var det længe siden besluttede en måde at kortlægge de positive tal fra 0 til 127 forskellige tegn at alle findes på vores tastatur. Så som vi vil se senere i kurset, og du vil sandsynligvis kommer til at huske på nogle punkt, kapital A, for example-- tegnet kapital en-- kort til antallet 65. Og grunden til det er fordi det er hvad er det er blevet tildelt af ASCII standard. Små bogstaver A er 97. Tegnet 0 til når du faktisk skrive tegnet, ikke repræsenterer tallet nul, er 48. Du vil lære et par af disse som du går. Og du vil helt sikkert komme til at brug dem lidt senere i CS50. Den næste store datatype er flydende tal. Så flydende komma tal er også kendt som reelle tal. De er stort set tal, har en decimal i dem. Floating point-værdier Ligesom heltal er også indeholdt inden for 4 bytes hukommelse. Nu er der ingen diagram her. Der er ingen tal linje, fordi beskriver området af et float er ikke ligefrem klar eller intuitivt. Er det tilstrækkeligt at sige, at du have 32 bit til at arbejde med. Og hvis du har en række ligesom pi, som har et heltal del 3, og en flydende punkt del, eller decimal del 0,14159, og så videre, skal du være stand til at repræsentere alle it-- heltalsdelen og decimal del. Så hvad tror du, der kunne betyde? En ting er, at hvis decimal del bliver længere og længere, hvis jeg har en meget stor heltal del, jeg måske ikke kunne være så præcis med decimal del. Og det er virkelig begrænsning af en svømmer. Flydere en præcision problem. Vi har kun 32 bit til arbejde med, så vi kan kun være så præcis med vores decimal del. Vi kan ikke nødvendigvis have en decimal del præcis til 100 eller 200 cifre, fordi vi kun har 32 bit til at arbejde med. Så det er en begrænsning af en flyder. Nu heldigvis er der en anden datatype kaldet dobbelt, hvilket i nogen grad omhandler dette problem. Doubler, ligesom flåd, anvendes også til at gemme reelle tal eller decimaltal værdier. Forskellen er, at Double er dobbelt præcision. De kan passe 64 bits data, eller otte bytes. Hvad betyder det? Tja, det betyder at vi kan være meget mere præcis med kommaet. I stedet for at have pi til syv steder måske, med en svømmer, Vi kan måske få det til 30 steder. Hvis det er vigtigt, kan du at anvende en dobbelt i stedet for en svømmer. Dybest set, hvis du er arbejder på noget, hvor at have en virkelig lang decimal og en masse præcision er vigtigt, du sandsynligvis ønsker at bruge en dobbelt overfloat. Nu for de fleste af dit arbejde i CS50, bør en flyder tilstrækkeligt. Men ved, at fordobler eksistere som måde at noget beskæftige sig med præcision Problemet ved at give dig en ekstra 32 bits til at arbejde med for dine numre. Nu er dette ikke en datatype. Dette er en type. Og det hedder ugyldig. Og jeg taler om det her, fordi vi har sikkert set det et par gange allerede i CS50. Og du kan være undrende hvad det hele handler om. Så tomrum er en type. Den findes. Men det er ikke en datatype. Vi kan ikke skabe en variabel af typen ugyldig og tildele en værdi til den. Men funktioner, for eksempel kan have en void returtype. Dybest set, hvis du ser en funktion der har en void returtype, Det betyder at den ikke returnerer en værdi. Kan du tænke på en fælles funktion, som vi har brugt hidtil i CS50, der ikke returnerer en værdi? Printf er én. Printf faktisk ikke returnere noget for dig. Den udskriver noget til skærmen, og det er dybest set en bivirkning af hvad printf gør. Men det giver dig ikke en værdi tilbage. Du behøver ikke fange resultat og butik det i visse variable til at bruge det senere. Det bare udskriver noget til skærmen, og du er færdig. Så vi siger, at printf er et tomrum funktion. Den returnerer ingenting. Perimeteren liste over en Funktionen kan også være ugyldige. Og du har også set, at ganske lidt i CS50 også. Int main tomrum. Er der ringer en klokke? Dybest set, hvad det betyder, er, at vigtigste tager ikke nogen parametre. Der er ingen argument, få bestået i main. Nu senere vil vi se, at der er en måde at videregive argumenter ind i main, men indtil videre, hvad vi har set er int main ugyldig. Main bare ikke tage nogen argumenter. Og så vi specificere, at ved at sige ugyldige. Vi er bare at være meget eksplicit om det faktum, at det ikke tager nogen argumenter. Så for nu, er det tilstrækkeligt at sige, at ugyldige grundlæggende skal bare fungere som en pladsholder for dig som tænker som ingenting. Det er ikke rigtig gøre noget. Der er ingen returværdien her. Der er ingen parametre her. Det er ugyldige. Det er lidt mere kompliceret end som så. Men det bør være tilstrækkeligt for den bedre del af kurset. Og forhåbentlig nu du har lidt lidt mere af en opfattelse af, hvad tomrum er. Så det er de fem typer, du vil møde, der er indbygget i C. Men i CS50 har vi også et bibliotek. CS50.h, som du kan medtage. Og som vil give dig med yderligere to typer at du sandsynligvis vil være i stand at bruge på dine opgaver, eller bare arbejder generelt programmering. Den første af disse er bool. Så den boolesk datatype, bool, anvendes til variabler der vil gemme en boolesk værdi. Hvis du nogensinde har hørt dette udtryk før, du kunne vide, at en boolesk værdien er i stand til kun holder to forskellige adskilte værdier. Sandt og falsk. Nu er dette synes temmelig grundlæggende, ikke? Det er lidt af en overraskelse, at dette findes ikke i C, som det er indbygget. Og i mange moderne sprog, selvfølgelig, Booleans er en standard standard datatype. Men i C, de er faktisk ikke. Men vi har oprettet det for dig. Så hvis du nogensinde har brug for at skabe en variabel, hvis type er bool, bare være sikker på at # include CS50.h i starten af ​​dit program, og du vil være i stand til at skabe variable af bool type. Hvis du glemmer at # include CS50.h, og du begynder at bruge booleske-type variabler, du kan støde på nogle problemer når du kompilere dit program. Så bare være på udkig efter det. Og måske du kan bare lave den problemer ved pund herunder CS50.h. Den anden store datatype, som vi sørge for dig i CS50 biblioteket er streng. Så hvad er en streng? Strenge er virkelig bare ord. De er samlinger af tegn. De er ord. De er sætninger. De er stykker. Kan være hele bøger, selv. Meget kort til meget lang række tegn. Hvis du har brug for at bruge strenge, for eksempel til at gemme et ord, bare være sikker på at medtage CS50.h i starten af ​​dit program så du kan bruge strengen type. Og så kan du oprette variabler hvis datatype er streng. Nu senere i kurset, vil vi også se, at det er ikke hele historien, enten. Vi vil støde ting kaldet strukturer, som giver dig mulighed for at gruppere hvad der kan være et heltal og en streng i en enhed. Og vi kan bruge det til nogle formål, som kan komme i handy senere i kurset. Og vi vil også lære om nærmere bestemte typer, som giver dig mulighed for at oprette dine egne datatyper. Vi behøver ikke at bekymre sig om det for nu. Men bare vide, at det er noget i horisonten, at der er meget mere til hele denne type ting, end jeg fortæller dig bare nu. Så nu, at vi har lært en lidt om de grundlæggende data typer og typerne CS50 data, lad os tale om, hvordan man arbejder med variabler og oprette dem ved hjælp af disse datatyper i vores programmer. Hvis du vil oprette en variabel, alt hvad du skal gøre, er to ting. Først skal du nødt til at give det en type. Den anden ting du har brug for at gøre, er at give den et navn. Når du har gjort det, og slog en semikolon i slutningen af ​​denne linje, du har oprettet en variabel. Så her er to eksempler. Int nummer; char brev ;. Hvad har jeg gjort her? Jeg har oprettet to variable. Den første, variablens navn er nummer. Og antallet er i stand til at holde heltal skriv værdier, fordi dens type er int. Letter er en anden variabel der kan holde tegn fordi dens datatype er char. Temmelig ligetil, ikke? Hvis du finder dig selv i en situation, hvor skal du oprette flere variabler af samme type, behøver du kun at angive typen navn én gang. Så bare liste så mange variabler af denne type, som du har brug for. Så jeg kunne for eksempel her i denne tredje linje kode, siger int højde ;, ny linje. Int bredde ;. Og det ville arbejde for. Jeg vil stadig få to variabler kaldet højde og bredde, som hver er et helt tal. Men jeg lov til, ting til C syntaks, konsolidere den i en enkelt linje. Int højde, bredde; Det er det samme. Jeg har oprettet to variabler, en kaldet højde: en kaldet bredde, som begge er i stand til bedriften heltal typen værdier. Ligeledes her, kan jeg oprette tre kommeværdier på én gang. Jeg kan måske oprette en variabel kaldes kvadratroden af ​​2-- som formentlig vil i sidste ende holde den flydende point-- at repræsentationen af ​​pladsen roden af ​​2-- kvadratroden af ​​3, og PI. Jeg kunne have gjort det på tre forskellige linjer. Float, kvadratrod 2; Float kvadratroden 3; flyde pi; og det ville arbejde for. Men igen, jeg kan bare konsolidere dette i en enkelt linje kode. Gør tingene en lille smule kortere, ikke så klodset. Nu i almindelighed, det er godt design til kun erklære en variabel, når du har brug for det. Og vi vil tale lidt lidt mere om det senere i løbet når vi diskuterer rækkevidde. Så behøver ikke nødvendigvis at oprette alle dine variabler ved begyndelsen af ​​programmet, som nogle mennesker måske har gjort tidligere, eller var bestemt en meget almindelig kodning praksis for mange år siden når du arbejder med C. Du kan bare ønsker at skabe en variabel ret, når du har brug for det. Okay. Så vi har oprettet variabler. Hvordan bruger vi dem? Efter at vi erklære en variabel, har vi ikke brug at angive datatypen af denne variabel længere. I virkeligheden, hvis du gør det, kan du ender med nogle underlige konsekvenser at vi vil slags tilsløre for nu. Men er det tilstrækkeligt at sige, underlige ting går at begynde at ske, hvis du uforvarende re-erklære variabler med samme navn igen og igen. Så her har jeg fire linjer kode. Og jeg har et par kommentarer der bare indikerer hvad der sker på hver linje bare for at hjælpe du får beliggende i, hvad der foregår. Så int antal ;. Du så, at tidligere. Det er en variabel erklæring. Jeg har nu oprettet en variabel kaldte nummer, der er stand til at holde heltalsregning værdier. Jeg har erklæret det. Den næste linje jeg tildele en værdi til nummer. Antal lig 17. Hvad sker der? Jeg sætte nummer 17 indersiden af ​​denne variabel. Så hvis jeg nogensinde så udskrive hvad indholdet af antallet er senere, de vil fortælle mig er det 17. Så jeg har erklæret en variabel, og så har jeg tildelt den. Vi kan gentage processen igen med char bogstav ;. Det er en erklæring. Brev lig kapital H. Det er en opgave. Temmelig ligetil, også. Nu er denne proces måske synes slags fjollet. Hvorfor gør vi det i to linjer kode? Findes der en bedre måde at gøre det? I virkeligheden er der. Nogle gange vil du måske se dette kaldes initialisering. Det er, når du erklærer en variabel og tildele en værdi på samme tid. Dette er faktisk en temmelig fælles ting at gøre. Når du opretter en variabel, du normalt ønsker, at den skal have nogle grundlæggende værdi. Selv om det er 0 eller noget. Du skal bare du give det en værdi. Du kan initialisere en variabel. Int antal lig 17 er det samme som de to første linjer kode op ovenfor. Char skrivelse lig h er den samme som tredje og fjerde linjer kode ovenfor. Den vigtigste takeaway her når vi erklære og tildele variabler er efter vi har erklærede det, varsel Jeg er ikke en gang ved hjælp af datatype. Jeg siger ikke int nummer lig 17 på den anden linje i kode, f.eks. Jeg siger bare nummer lig 17. Igen, igen at erklære en variabel efter du allerede har erklæret det kan føre til nogle underlig konsekvens. Så bare være forsigtig med det. Jeg er Doug Lloyd. Og det er CS50.