>> [Muziek]
SPEAKER: Oké.
Dus laten we praten over een ander ding dat is een soort van unieke naar C,
die gegevenstypen en variabelen.
Als ik zeg dat uniek is voor C, ik werkelijk alleen maar betekenen in de context van,
als je een programmeur bent geweest voor een hele lange tijd,
U hebt waarschijnlijk niet gewerkt met data types
als je moderne hebt gebruikt programmeertalen.
Moderne talen zoals PHP en JavaScript,
die we ook zullen zien een beetje later in de cursus,
je eigenlijk niet hoeft te specificeren het datatype van een variabele
wanneer je het gebruikt.
>> Verklaart u het gewoon en gaan gebruiken.
Als het een integer, dan weet dat het een integer.
Als het een karakter is het weet dat het een teken.
Als het een woord, het weet Het is een string, zogenaamde.
>> Maar in C, wat een oudere taal, moeten we
om de gegevens te specificeren soort van elke variabele
die we creëren de eerste keer dat we die variabele.
Dus C wordt geleverd met een aantal ingebouwde gegevenstypen.
En laten we bekend enkele van deze.
En dan daarna gaan we ook praten beetje over sommige van de data types
die we hebben geschreven voor u, zodat u ze kunt gebruiken in CS50.
>> De eerste is int.
Het type int gegevens worden gebruikt voor variabelen die integer waarden opslaan.
Dus 1, 2, 3, negatief 1, 2, 3, enzovoort.
Getallen, dat is iets wat je moeten in gedachten houden voor de quiz,
neem altijd vier bytes geheugen, dat is 32 bits.
Er zijn acht bits een byte.
>> Dus dit betekent dat het bereik van Waarden die een integer kan opslaan
wordt beperkt door wat binnen kan passen 32-bits waarde van informatie.
Nu zo blijkt, Het was lang geleden besloten
dat we zouden verdelen die variëren van 32-bits
in negatieve getallen en positieve gehele getallen,
elk krijgt de helft van het assortiment.
Zodat het bereik van de waarden die wij vertegenwoordigen met een integer bereik van negatieve 2
het 31 vermogen om 2 tot de 31ste macht minus 1,
ertoe leiden dat u ook behoefte aan een plek voor 0.
>> Dus in principe de helft van de mogelijke waarden U kunt passen in een int zijn negatief,
en de helft van zijn positief.
En ongeveer hier, dit is ongeveer negatief 2 miljard tot ongeveer positief 2 miljard.
Geven of nemen een paar honderd miljoen.
Dus dat is wat je kan passen een integer variabele.
Nu hebben we ook iets riep een unsigned integer.
Nu unsigned ints zijn niet apart type variabele.
Integendeel, is unsigned wat heet een qualifier.
Het wijzigt de gegevens type integer iets.
>> En in dit geval, wat unsigned means-- en kunt u ook
Gebruik unsigned andere soorten data, integer is niet de enige.
Wat het daadwerkelijk doet is dubbelspel het positieve bereik van de waarden
die een geheel getal kan aannemen op koste van niet meer toestaan
u op negatieve waarden over te nemen.
Dus als je nummers die je kent hoger zal zijn dan 2 miljard, maar minder krijgen
dan 4 miljard, voor example-- die 2 de 32 power--
je zou willen gebruiken een unsigned int als je
weet je waarde zal nooit negatief zijn.
>> Je zult af en toe voor unsigned variabelen
in CS50, dat is de reden waarom ik noem het hier.
Maar nogmaals, het waardebereik u kan vertegenwoordigen met een unsigned integer
als regelmatig integer t, zijn 0 2 tot de macht 32 min 1,
of ongeveer 0 naar 4 miljard.
Dus je hebt effectief verdubbelde de positieve bereik dat u past,
maar je hebt alles opgegeven de negatieve waarden.
>> Nu als een terzijde, unsigned is niet de enige kwalificatie
opdat wij zouden zien variabele data types.
Er zijn ook dingen genoemd korte en lange en Const.
Const zien we wel een beetje Wat later in de cursus.
Korte en lange, zullen we waarschijnlijk niet.
>> Maar weet gewoon dat er zijn andere qualifiers.
Unsigned is niet de enige.
Maar het is de enige die we zijn gaan praten over nu.
Dus alles goed.
Dus we hebben bedekt getallen.
Wat is het volgende?
>> Chars.
Dus tekens worden gebruikt voor variabelen dat zal enkele personages slaan.
Char is de afkorting van karakter.
En soms moet je kunnen horen mensen spreken het als auto.
>> Dus tekens nemen een steeds byte van het geheugen, dat is slechts 8 bits.
Dus dit betekent dat ze alleen kunnen passen waarden in de reeks van negatieve 2
tot de zevende macht, of negatief 128, 2 tot de macht 7 min 1 of 127.
>> Dankzij ASCII, was lang geleden besloot een manier
om die positieve getallen kaart van 0 tot 127 verschillende karakters
die al bestaan ​​op onze toetsenbord.
Zo zullen we later in te zien de cursus, en je zult waarschijnlijk
komen te onthouden op een bepaald punt, hoofdletter A, voor example--
het karakter hoofdstad A-- kaarten om het nummer 65.
De reden daarvoor is want dat is wat het is
toegewezen door de ASCII standaard.
>> Kleine letters A 97.
Het karakter 0 voor als je eigenlijk typ het karakter, niet
vertegenwoordigt het getal nul, is 48.
Je hebt een paar leren van deze als je gaat.
En zult u zeker komen naar behoefte ze een beetje later in CS50.
>> De volgende belangrijke data type is floating point getallen.
Dus floating point getallen zijn ook bekend als reële getallen.
Ze zijn in principe nummers die een komma in hen.
Floating point waarden zoals integers zijn ook
vervat in 4 bytes geheugen.
Nu is er geen grafiek hier.
Er is geen nummer lijn, omdat beschrijft het bereik van een vlotter
is niet precies duidelijk of intuïtief.
>> Het volstaat om je zegt hebben 32 bits werken.
En als je een nummer zoals pi, die heeft
een integer deel 3, en een drijvende punt deel of decimale deel 0,14159,
en ga zo maar door, moet je in staat om alle het-- vertegenwoordigen
het gehele deel en de decimale gedeelte.
>> Dus wat denk je dat zou kunnen betekenen?
Een is dat als de decimale deel krijgt langer en langer,
als ik een zeer groot integer deel, zou ik niet
kunnen zo precies te zijn met het decimale gedeelte.
En dat is echt de beperking van een vlotter.
>> Praalwagens hebben een precisie probleem.
We hebben slechts 32 bits mee te werken, zodat we kunnen alleen
zo precies met onze decimale gedeelte.
We kunnen niet noodzakelijk een decimaal deel nauwkeurig tot 100 of 200 cijfers,
want we hebben maar 32 bits werken.
Dus dat is een beperking van een vlotter.
>> Nu gelukkig is er ander datatype genaamd
dubbel, die enigszins behandelt dit probleem.
Dubbel, zoals drijvers, worden ook gebruikt om slaan reële getallen of floating point
waarden.
Het verschil is dat tweepersoonskamers zijn dubbele precisie.
Zij kunnen passen 64 bits data, of acht bytes.
Wat betekent dat?
Nou, het betekent dat we veel meer nauwkeurig met de komma.
In plaats van zeven pi plaatsen misschien, met een vlotter,
kunnen we het misschien hebben tot 30 plaatsen.
Als dat belangrijk is, wilt u misschien een dubbel gebruiken in plaats van een vlotter.
Kortom, als je werken aan iets waar de
het hebben van een heel lange decimaal en veel precisie belangrijk,
wilt u waarschijnlijk gebruik maken van een dubbele overfloat.
Nu het grootste deel van uw werk in CS50, een vlotter moeten volstaan.
Maar weet wel dat tweepersoonskamers bestaan ​​als een manier enigszins gaan met de precisie
probleem door het geven u een extra 32 bits werken voor getallen.
>> Nu is dit niet een soort data.
Dit is een soort.
En het is leegte genoemd.
En ik heb het over is hier omdat we hebben waarschijnlijk
al een paar keer in CS50 gezien.
En u vraagt ​​zich misschien af waar het allemaal over gaat.
>> Dus nietig is een type.
Het bestaat.
Maar het is niet een soort van gegevens.
>> We kunnen een variabele van het type niet te creëren ongeldig maken en toewijzen van een waarde aan.
Maar functies, bijvoorbeeld, kan een soort leegte return hebben.
Kortom, als je een functie te zien dat heeft een soort leegte return,
betekent het geen waarde retourneren.
Kun je denken aan een gemeenschappelijke functie die we tot nu toe hebben gebruikt
in CS50 dat betekent een waarde niet terug?
>> Printf is één.
Printf doet eigenlijk niet alles om je terug.
Hij drukt iets aan de scherm, en het is eigenlijk
een neveneffect van wat printf doet.
Maar het geeft je niet een waarde terug.
Je hoeft niet het resultaat vast te leggen en op te slaan het in een variabele om het later te gebruiken.
Hij drukt gewoon iets aan het scherm en je bent klaar.
>> Dus we zeggen dat printf is een leegte functie.
Het geeft niets.
>> De omtrek van een lijst functie kan ook ongeldig.
En je hebt ook gezien dat wel een beetje in CS50 ook.
Int main leegte.
Is dat een belletje rinkelen?
Eigenlijk wat dat betekent is dat main geen parameters nemen.
Er is geen argument dat krijgen doorgegeven in de belangrijkste.
Nu later zullen we zien dat er sprake is een manier om argumenten door te geven in de belangrijkste,
maar tot nu toe wat we hebben gezien is int main nietig.
Hoofd gewoon geen argumenten nemen.
En dus hebben we aangeven dat door te zeggen leegte.
We zijn gewoon erg expliciet over het feit
dat het geen argumenten neemt.
>> Dus voor nu, volstaat het om zeggen dat de leegte in principe
moet gewoon dienen als een placeholder voor u zo denken als niets.
Het is niet echt iets te doen.
Er is geen return waarde hier.
Er is geen parameters hier.
Het is leegte.
Het is een beetje ingewikkelder dan dat.
Maar dit moeten volstaan ​​voor het grootste deel van de cursus.
En hopelijk nu heb je een beetje hebt beetje meer van een concept van wat leegte is.
>> Dus dat zijn de vijf soorten u zult ontmoeting die zijn ingebouwd in C.
Maar in CS50 hebben we ook een bibliotheek.
CS50.h, die u kunt nemen.
En dat zal u met twee extra types
dat je waarschijnlijk zult kunnen te gebruiken op uw opdrachten,
of gewoon aan het werk in het algemeen programmeren.
>> De eerste is bool.
Dus de Boolean data type, bool wordt gebruikt voor variabelen
die een Booleaanse waarde op te slaan.
Als je ooit hebt gehoord deze term voor u
zouden weten, dat een Booleaanse waarde kan slechts
die twee verschillende verschillende waarden.
Waar en onwaar.
Nu lijkt dit vrij fundamenteel, toch?
Het is een beetje een verrassing dat dit bestaat niet in C zoals het is ingebouwd.
En in veel moderne talen, Natuurlijk Booleans
zijn een standaard type standaard data.
Maar in C, ze zijn eigenlijk niet.
Maar we hebben het voor u gemaakt.
Dus als je ooit nodig hebt om te creëren een variabele waarvan het type is Bool,
gewoon zeker #include CS50.h aan het begin van je programma,
en je zult in staat zijn om te creëren variabelen van het type Bool.
>> Als u vergeet om #include CS50.h en je begint met Boolean-type variabelen,
je zou een aantal problemen tegenkomen als je het samenstellen van uw programma.
Dus gewoon op de uitkijk voor.
En misschien kun je gewoon vaststellen van de problemen door pond inclusief CS50.h.
>> De andere belangrijke data type dat we voor u in de CS50 bibliotheek
is string.
Dus wat is een string?
Strings zijn eigenlijk alleen maar woorden.
Ze zijn verzamelingen van karakters.
Ze zijn woorden.
Ze zijn zinnen.
Ze zijn paragrafen.
Misschien hele boeken, zelfs.
>> Zeer korte tot zeer lange tekenreeks.
Als u strings gebruiken, bijvoorbeeld een woord opslaan
gewoon zeker te CS50.h omvatten aan het begin van het programma
dus je kunt het type string.
En dan kun je variabelen waarvan het type data is string.
Nu later in de cursus, zullen we ook zien dat dat is
niet het hele verhaal niet.
We zullen dingen tegenkomen genoemd structuren,
die u toelaten om de groep wat er kan zijn een integer en een string in één eenheid.
En we kunnen gebruiken voor een doel, dat zou kunnen
pas komen later in de cursus.
>> En we zullen ook leren over bepaalde soorten,
waarmee u te maken je eigen data types.
We hebben geen zorgen te maken over dat voor nu.
Maar weet dat dat iets aan de horizon,
dat er veel meer aan deze hele soort dingen dan ik zeg je gewoon
nu.
Dus nu dat we hebben geleerd beetje over de basisgegevens
soorten en de CS50 data types, laten we praten over hoe te werken met variabelen
en ze maken gebruik van deze types data in onze programma's.
Als u een variabele wilt maken, alles wat je hoeft te doen is twee dingen.
>> Eerst moet je om het een type.
Het tweede wat je nodig hebt te doen is geef het een naam.
Zodra je dat gedaan hebt en sloeg een puntkomma aan het einde vormt,
u een variabele hebt gemaakt.
>> Dus hier zijn twee voorbeelden.
Int nummer; char letter ;.
Wat heb ik hier gedaan?
Ik heb twee variabelen gecreëerd.
>> De eerste, de variabele naam is nummer.
En nummer kan voor integer Typ waarden, omdat het type int.
Brief is een andere variabele die kunnen tekens vasthouden
omdat de data type is char.
>> Vrij eenvoudig, toch?
Als je jezelf in een situatie waarin
u meerdere creëren variabelen van hetzelfde type,
je hoeft alleen maar aan te geven de typenaam keer.
Dan gewoon een lijst van zoveel variabelen van dat type als u nodig heeft.
>> Zo kon ik bijvoorbeeld hier In deze derde regel code,
zeggen int hoogte ;, nieuwe regel.
Int breedte ;.
En dat zou ook werken.
Ik zou nog steeds krijg twee variabelen genoemd hoogte en breedte, die elk
een geheel getal.
Maar ik mag, dingen C syntax, consolideren in een enkele lijn.
Int hoogte, breedte; Het is hetzelfde.
Ik heb twee variabelen, een zogenaamde gecreëerd hoogte een zogenaamde breedte, beide
in staat zijn van het bedrijf integer soort waarden.
>> Op dezelfde manier, kan ik drie creëren floating point waarden in een keer.
Ik kan misschien het creëren van een variabele genaamd vierkantswortel van 2--
die vermoedelijk zal uiteindelijk Houd de drijvende point--
dat de vertegenwoordiging van het plein wortel van 2-- vierkantswortel van 3 en pi.
Ik zou dit hebben gedaan op drie verschillende lijnen.
Vlotter, vierkantswortel 2; Zweven vierkantswortel 3; drijven pi; en dat zou te werken.
>> Maar nogmaals, ik kan alleen maar te consolideren dit in een enkele regel code.
Maakt de dingen een beetje kortere, niet zo onhandig.
>> Nu in het algemeen, het is een goed ontwerp om alleen verklaren een variabele wanneer u het nodig hebt.
En we zullen een beetje praten wat meer over dat
later in de cursus wanneer we bespreken omvang.
Dus niet per se nodig om maken van al uw variabelen
aan het begin van het programma, dat sommige mensen kunnen het verleden hebben gedaan,
of was zeker een veel voorkomende codering praktijk vele jaren geleden
bij het werken met C. Je zou net wil een variabele gelijk toen creëren
je hebt het nodig.
Prima.
Dus we hebben gemaakt variabelen.
Hoe kunnen we ze gebruiken?
Nadat we verklaren een variabele, hebben we niet nodig
om het type gegevens opgeven van die variabele meer.
In feite, als u dat doet, zou je eindigen met een aantal rare gevolgen
dat we soort glans over voor nu.
Maar het volstaat om te zeggen, rare dingen gaan
om te beginnen met het gebeuren als je per ongeluk opnieuw te verklaren variabelen met dezelfde naam
opnieuw en opnieuw.
>> Dus hier Ik heb vier regels code.
En ik heb een paar Commentaren er gewoon aangeeft
wat er gebeurt op elke lijn alleen maar om te helpen
je krijgt gelegen in wat er gaande is.
Zo int nummer ;.
Je zag die eerder.
Dat is een variabele verklaring.
>> Ik heb nu gemaakt van een variabele opgeroepen nummer dat is
kunnen houden integer-type waarden.
Ik heb verklaard.
>> De volgende regel ik het toewijzen een waarde naar nummer.
Nummer 17 is gelijk.
Wat gebeurt er?
Ik zet het nummer 17 binnenzijde van die variabele.
>> Dus als ik ooit vervolgens uitprinten wat de inhoud van getal zijn later
ze me vertellen dat het 17.
Dus ik heb een variabele gedeclareerd, en dan heb ik het toegewezen.
>> We kunnen het proces herhalen opnieuw met char letter ;.
Dat is een verklaring.
Letter gelijk hoofdstad H. Dat is een opdracht.
Vrij eenvoudig, ook.
>> Nu dit proces zou lijkt soort dom.
Waarom doen we dit in twee lijnen van de code?
Is er een betere manier om het te doen?
In feite is er.
Soms heb je zou kunnen zien dit heet initialisatie.
Het is wanneer je een variabele declareert en wijst een waarde tegelijk.
Dit is eigenlijk een vrij gemeenschappelijk ding te doen.
Wanneer u een variabele, je meestal te maken wil dat het aantal fundamentele waarde.
Zelfs als het 0 of zoiets.
Je gewoon je het een waarde.
>> U kunt een variabele initialiseren.
Int getal gelijk 17 is gelijk aan de eerste twee regels code boven.
Char letter h gelijk is gelijk aan de derde en vierde regels code hierboven.
De belangrijkste afhaalrestaurant hier als we verklaren en het toewijzen
variabelen is nadat we verklaarde het, bericht
Ik ben niet meer met behulp van de data type.
Ik zeg niet dat int aantal is gelijk aan 17 op de tweede regel van de code, bijvoorbeeld.
Ik zeg alleen maar dat aantal is gelijk aan 17.
>> Nogmaals, opnieuw waarbij een variabele na je hebt al verklaard het kan leiden
wat raar gevolg.
Dus wees voorzichtig met dat.
>> Ik ben Doug Lloyd.
En dit is CS50.