>> [MUZIKO Ludante]
Parolanto: Bone.
Do ni parolu pri alia afero kiu estas tre unika al C,
kio estas datumtipoj kaj variabloj.
Kiam mi diras unika por C, mi vere nur signifi en la kunteksto de,
Se vi estis programisto por vere longa tempo,
Vi verŝajne ne laboris kun datumtipoj
se vi uzis modernan programlingvoj.
Modernaj lingvoj kiel PHP kaj Javascript,
kiun ni ankaux vidos iom poste en la kurso,
vi ne vere devas specifi la datumtipon de variablo
kiam vi uzas ĝin.
>> Vi nur sciigu kaj ekuzi ĝin.
Se ĝi estas entjero, ĝi scias ke estas entjero.
Se ĝi estas karaktero, estas scias ke estas karaktero.
Se ĝi estas vorto, ĝi konas ĝi estas kordoj, tn.
>> Sed en C, kiu estas malnovaj lingvon, ni bezonas
specifi la datumoj tipo de ĉiu variablo
ke ni kreas la unuan fojon ke ni uzas tiu variablo.
Do C venas kun iuj enkonstruita datumtipoj.
Kaj ni akiras konatan kun iu el tiuj.
Kaj tiam poste ni ankaŭ paroli iomete pri kelkaj el la datumtipoj
ke ni skribis por vi, Do vi povas uzi ilin en CS50.
>> La unua estas int.
La int datumtipo estas uzata por variabloj kiu stoki entjero valorojn.
Do 1, 2, 3, negativa 1, 2, 3, kaj tiel plu.
Entjeroj, kiu estas iu vi devus teni en menso por la kvizo,
Ĉiam levu kvar bajtoj de memoro, kiu estas 32 bitoj.
Estas ok bitojn en bajto.
>> Do tio signifas ke la gamo de valoroj kiu entjero povas stoki
estas limigita de kio povas persvadi ene 32 bitoj valoras de informo.
Nun kiel rezultas, estis antaŭlonge decidis
ke ni disiĝis ke gamo de 32 bitoj
en negativaj entjeroj kaj pozitivaj entjeroj
ĉiu ricevas la duonon de la teritorio.
Do la gamo de valoroj kiuj ni reprezentas kun entjero gamo de negativaj 2
al la 31a povo por 2 al la 31a potenco minus 1,
kaŭzi vi ankaŭ bezonos lokon por 0.
>> Do esence duonon de la eblaj valoroj vi povas havi en int estas negativa,
kaj duono estas pozitivaj.
Kaj malglate tie, tio estas pri negativaj 2 miliardoj pri pozitiva 2 miliardoj.
Donu aŭ preni kelkajn cent milionojn.
Do jen kion vi povas persvadi en entjera variablo.
Nun ni havas ankaŭ ion nomata sensigna entjera.
Nun sensigna ints ne estas aparta tipo de variablo.
Prefere, sensigna estas kio nomiĝas kvalifikiĝinto.
Ĝi modifas la datumoj tipo de entjero iomete.
>> Kaj en ĉi tiu kazo, kion sensigna means-- kaj vi povas ankaŭ
uzi sensigna aliaj datumtipoj, entjero estas ne la sola.
Kio ĝi efike faras estas duobloj la pozitiva atingo de valoroj
ke entjero povas alpreni je la elspezo de ne permesanta
vin preni sur negativaj valoroj.
Do se vi havas numerojn ke vi scias ricevos pli altan ol 2 miliardoj sed malpli
ol 4 miliardoj, por example-- kiu estas 2 al la 32a power--
vi eble deziras uzi sensigna int se vi
scias vian valoro neniam estos negativa.
>> Vi foje havis uzita por sensigna variabloj
en CS50, kio estas kial mi mencias ĝin ĉi tie.
Sed denove, la gamo de valoroj kiuj al vi povas reprezenti kun sensigna entjera
kiel t regulaj entjero, estas 0 al 2 al la 32-a potenco minus 1,
aŭ proksimume 0 al 4 miliardoj.
Do vi efike duobligis la pozitiva atingo ke vi povas persvadi,
sed vi donis ĉiujn la negativaj valoroj.
>> Nun kiel flanken, unsigned ne estas la sola kvalifikiĝinto
ke ni povus vidi pro ŝanĝiĝema datumtipoj.
Ekzistas ankaŭ aĵoj nomata mallongaj kaj longaj kaj const.
Const ni vidos iom iom poste en la kurso.
Mallongaj kaj longaj, ni probable ne.
>> Sed ĝuste scias ke Estas aliaj kvalifikiĝintoj.
Unsigned ne la sola.
Sed estas la sola ni estas tuj parolos pri aktuale.
Do gxuste.
Do ni kovrita entjeroj.
Kio poste?
>> Signoj.
Do signoj estas uzataj por variabloj kiu stoki ununuran karakteroj.
Char estas mallonga por karaktero.
Kaj foje vi auxdu personoj elparoli kiel aŭto.
>> Do karakteroj ĉiam prenu unu bajton de memoro, kiu estas nur 8 bitoj.
Do tio signifas ke ili povas nur konveni valorojn en la gamo de negativaj 2
al la sepa potenco aux negativa 128, al 2 al la 7-a potenco minus 1, aŭ 127.
>> Danke al ASCII, estis antaŭlonge decidis maniero
mapi tiujn pozitivajn numerojn de 0 ĝis 127 diversaj karakteroj
ke ĉiuj ekzistas sur nia klavaro.
Do kiel ni vidos pli poste en la kurso, kaj vi probable
venu parkerigi ĉe iuj punkto, ĉefurbo A, por example--
la karaktero ĉefurbo A-- mapas al la numero 65.
Kaj la kialo estas ĉar tio estas kio estas ĝi estas
estis atribuita de la ASCII normo.
>> Minuskla A estas 97.
La karaktero 0 por kiam vi efektive tajpi la karaktero, ne
reprezentanta la numeron nul, estas 48.
Vi lernos paro de tiuj kiel vi iras.
Kaj nepre vi farigxis bezonantoj ili iomete poste en CS50.
>> La sekva granda datumtipo estas glitpunktaj nombroj.
Do glitpunktaj nombroj estas ankaŭ konata kiel reelaj nombroj.
Ili estas esence nombroj kiuj havas dekuman punkto en ili.
Glitpunktaj valoroj kiel entjeroj estas ankaŭ
enhavis ene 4 bajtoj de memoro.
Nun estas nenia abako tie.
Mankas nombra linio, ĉar priskribante la distancon de kaleŝego
ne ekzakte klaraj aŭ intuicia.
>> Sufiĉas diri vin havas 32 bitojn por labori kun.
Kaj se vi havas kelkajn kiel pi, kiu havas
entjera parto 3, kaj ŝvebanta punkto parto, aŭ dekuma parto 0,14159,
kaj tiel plu, vi devas esti povi reprezenti ĉiujn it--
la entjera parto kaj la decimala parto.
>> Do kion vi pensas ke povus signifi?
Unu afero estas ke se la dekuma parton ricevas pli kaj pli longaj,
se mi havas tre grandan entjera parto, mi ne
povi esti tiel preciza kun la dekuma parto.
Kaj tio estas vere la limigo de kaleŝego.
>> Flosoj havas precizecon problemo.
Ni nur havas 32 bitojn por labori, do ni povas nur
esti tiel preciza kun nia dekuma parto.
Ni ne nepre havas dekuman parton precize 100 aŭ 200 ciferoj,
ĉar ni nur havas 32 bitoj por labori kun.
Do tio estas limigo de kaleŝego.
>> Nun feliĉe ekzistas alia datumtipo nomata
duobla, kiu iom traktas tiun problemon.
Duobloj, kiel flosoj, estas uzataj ankaŭ por stoki reelaj nombroj, aŭ flosanta punkto
valorojn.
La diferenco estas ke duobloj estas duobla precizeco.
Ili povas konveni 64 bitoj de datumoj, aŭ ok bajtoj.
Kion tio signifas?
Nu, tio signifas ke ni povas esti multe pli preciza kun la dekuma punkto.
Anstataŭ havi pi al sep lokoj eble, kun kaleŝego,
Ni povas eble havi ĝin por 30 lokoj.
Se tio estas grava, vi eble volas uzi duoblan anstataŭ kaleŝego.
Esence, se vi estas laboranta sur io kie
havanta vere longajn dekuma loko Kaj multa precizeco estas grava,
vi probable volas uzi duoblan overfloat.
Nun por la plejparto de via laboro en CS50, kaleŝego devus sufiĉi.
Sed scias ke duobloj ekzisti kiel maniero iom pritrakti la precizecon
problemon donante al vi ekstran 32 bitojn por labori kun por viaj nombroj.
>> Nun tio ĉi ne estas datumtipo.
Tiu estas tipo.
Kaj ĝi nomiĝas malplenon.
Kaj mi parolas pri ĝi tie ĉar ni probable
vidis ĝin kelkajn fojojn jam en CS50.
Kaj vi eblas esti scivolanta kio ĝi estas ĉiuj proksimume.
>> Do malplenon estas tipo.
Ĝi ekzistas.
Sed ne estas datumtipo.
>> Ni ne povas krei variablon de tipo neniigas kaj atribui valoron al ĝi.
Sed funkcioj, ekzemple, povas havi malplenon reveno tipo.
Esence, se vi vidas funkcio kiu havas malplenon reveno tipo,
ĝi signifas ne resendas valoro.
Ĉu vi povas pensi pri komuna funkcio kiun ni uzis ĝis nun
en CS50 kiu ne resendas valoro?
>> Printf estas unu.
Printf ne vere redoni ion al vi.
Ĝi presas ion al la kribri, kaj estas esence
kromefikon de kio printf faras.
Sed ĝi ne donos vin valoro dorso.
Vi ne kaptas la rezulto kaj vendejo en iu variablo uzi ĝin poste.
Ĝi simple presas ion la ekrano kaj vi faris.
>> Do ni diru ke printf estas malplena funkcio.
Ĝi redonas nenion.
>> La perimetro listo de funkcio povas ankaŭ esti malplena.
Kaj vi ankaŭ vidis ke tre iom en CS50 tro.
Int main malplenon.
Ĉu tio sonorigi sonorilo?
Esence, kion tio signifas estas ke ĉefa ne prenas ajnan parametroj.
Mankas argumento ke get pasis en ĉefaj.
Nun pli poste ni vidos, ke ne estas manieron pasi argumentojn en ĉefaj,
sed ĝis nun kion ni vidita estas int main malplenon.
Ĉefa ĵus ne prenas neniun argumentoj.
Kaj tiel ni specifi ke dirante malplenon.
Ni nur esti tre eksplicita pri la fakto
ke ĝi ne prenas neniun argumentojn.
>> Do nuntempe, sufiĉas diri ke malplenon esence
devus nur servi kiel lokokupilon por vi kiel pensas pri nenio.
Tio ne vere fari ion.
Mankas reveno valoron tie.
Mankas parametroj tie.
Ĝi estas malplena.
Ĝi estas iom pli kompleksa ol tio.
Sed tio devus sufiĉi por la bona parto de la kurso.
Kaj espereble nun vi havos iom iom pli de koncepto de kion void estas.
>> Do tiuj estas la kvin tipoj vi instruos vin renkontoj kiuj estas korpigita al C.
Sed en CS50 ni ankaŭ havas bibliotekon.
CS50.h, kiun vi povas inkludi.
Kaj kiu provizos vin kun du pliaj tipoj
ke vi probable povos uzi sur viaj taskoj,
aŭ simple laboras ĝenerale programado.
>> La unua de ĉi tiuj estas bool.
Do la Bulea datumtipo, bool, estas uzata por variabloj
kiu stoki Bulea valoro.
Se vi iam aŭdis tiu termino antaŭe, vi
sciu ke Bulea valoro kapablas nur
tenante du malsamaj apartaj valoroj.
Veraj kaj falsaj.
Nun tio ŝajnas belaj fundamenta, ĉu ne?
Estas ia surprizo ke tiu Ne ekzistas en C kiel ĝi estas konstruita-je.
Kaj en multaj modernaj lingvoj, kompreneble, Booleans
estas norma defaŭlta datumtipo.
Sed en C, ili estas efektive ne.
Sed ni kreis ĝin por vi.
Do se vi iam bezonas krei variablon kies tipo estas bool,
Ĝuste certi include CS50.h ĉe la komenco de via programo,
kaj vi povos krei variabloj de la bool tipo.
>> Se vi forgesu include CS50.h, kaj vi ekuzi Buleaj-tipo variabloj,
vi eble renkontos iun problemoj kiam vi kompili vian programon.
Do nur esti sur la gvatanto por tio.
Kaj eble vi povas simple ripari la problemoj por funto inkluzive cs50.h.
>> La alia grava datumtipo ke ni havigi por vi en la CS50 biblioteko
Estas kordoj.
Do kio estas cxeno?
Kordoj estas vere nur vortoj.
Ili estas kolektoj de karakteroj.
Ili estas vortoj.
Ili estas frazoj.
Ili estas alineoj.
Povus esti tutaj libroj, eĉ.
>> Tre mallonga al tre longa serio de karakteroj.
Se vi bezonas uzi kordoj, ekzemple, stoki vorto,
Ĝuste certi inkludas CS50.h ĉe la komenco de via programo
Do vi povas uzi la kordo tipo.
Kaj tiam vi povas krei variabloj kies datumtipo estas ŝnuro.
Nun pli poste en la kurso, ni ankaux vidos, ke tio estas
Ne la tuta rakonto, ĉu.
Ni renkontas aferoj nomita strukturoj,
kiu permesas grupon kio eble entjero kaj kordoj en unu unuo.
Kaj ni povas uzi tion por ia celo, kiun eble
veni en oportuna pli poste en la kurso.
>> Kaj ni ankaŭ lernos pri difinitaj tipoj,
kiu permesas vin krei via propra datumtipoj.
Ni ne bezonas zorgi pri tiu nun.
Sed nur scias ke tio ion sur la horizonto,
ke ekzistas multe pli al tiu tuta tipo afero ol la fakton mi povas nur
nun.
Do nun ke ni lernis iomete pri la bazaj datumoj
tipoj kaj la CS50 datumtipoj, ni paroli pri kiel labori kun variabloj
kaj krei ilin uzante tiujn datumtipoj en niaj programoj.
Se vi volas krei variablon, Ĉiuj vi devas fari estas du aferoj.
>> Unua, vi bezonos doni ĝin tipo.
La dua afero vi devas fari estas doni al li nomon.
Unufoje vi faris tion kaj frapis la punktokomo ĉe la fino de tiu linio,
vi kreis variablon.
>> Do jen du ekzemploj.
Int nombro; char letero ;.
Kion mi faris tie?
Mi kreis du variabloj.
>> La unua, la variablo nomo estas nombro.
Kaj kalkulu kapablas tenante entjero tajpu valoroj, ĉar ĝia tipo estas int.
Letero estas alia variablo kiu povas teni karakteroj
ĉar ĝia datumtipo estas char.
>> Sufiĉe simpla, ĉu ne?
Se vi trovas vin en situacio kie
vi devas krei multoblajn variabloj de la sama tipo,
vi nur bezonos specifi la tipo nomon unufoje.
Tiam simple listo kiel multaj variabloj de tiu tipo kiel vi bezonas.
>> Do mi povis por ekzemplo, ĉi tie en tiu tria linio de kodo,
diru int alteco ;, novan linion.
Mez larĝa ;.
Kaj kiu funkcius ankaŭ.
Mi ankoraŭ akiras du variabloj nomitaj alteco kaj larĝeco, ĉiu el kiuj
estas entjero.
Sed mi permesis al, aferoj C sintakso, solidigi ĝin en unu linion.
Mez alteco, larĝo; Ĝi estas la sama afero.
Mi kreis du variabloj, unu nomita alteco unu nomita larĝa, kiuj ambaŭ
kapablas Holding entjera tipo valoroj.
>> Simile cxi tie, mi povas krei tri glitpunktaj valoroj samtempe.
Mi povas eble krei variablon nomata kvadrata radiko de 2--
kiu supozeble eventuale teni la flosanta point--
ke reprezento de la kvadrato radiko de 2-- kvadrata radiko de 3, kaj pi.
Mi povis fari tiun sur tri apartaj linioj.
Float, kvadrata radiko 2; Flosi kvadrata radiko 3; flosi pi; kaj kiu funkcius ankaŭ.
>> Sed denove, mi povas nur firmigi ĉi en ununuran linion de kodo.
Faras aferojn iomete pli mallonga, ne kiel clunky.
>> Nun ĝenerale, estas bona dezajno por sola deklari variablon kiam vi bezonas ĝin.
Kaj ni parolos iom iom pli pri tiu
poste en la kurso kiam ni diskutos medio.
Do ne nepre bezonas krei ĉiuj viaj variabloj
ĉe la komenco de la programo, kiun iuj personoj povus esti farita la pasinteco,
aŭ estis certe tre komuna kodigo praktiko multaj jaroj
kiam laborante kun C. Vi povus simple volas krei variablon ĝuste kiam
vi bezonas ĝin.
Bone.
Do ni kreis variabloj.
Kiel ni uzu ilin?
Post ni deklari variablo, ni ne bezonas
specifi la datumtipo de tiu variablo anymore.
Fakte, se vi faros tion, vi eble finos kun iuj strangaj konsekvencoj
ke ni specon de gloso super nun.
Sed sufiĉas diri, weird aferoj iras
komenci okazanta se vi distrite re-deklari variablojn kun la sama nomo
super kaj super.
>> Do jen mi havas kvar linioj de kodo.
Kaj mi havas kelkajn Komentoj simple indikante
kio okazas sur ĉiu linio nur por helpi
vi get situanta en kio okazas.
Do int nombro ;.
Vi vidis ke antaŭe.
Tio variablon deklaracio.
>> Mi nun kreis variablon nomita numero tio
kapabla je posedo entjero-tipo valoroj.
Mi deklaris ĝin.
>> La sekva linio mi asignanta valoro kalkuladon.
Nombro egalas 17.
Kio okazas tie?
Mi metas la numero 17 ene de tiu variablo.
>> Do se mi iam poste presi kio la enhavo de la numero estas pli poste,
ili diros al mi ĝi estas 17.
Do mi deklaris variablon, kaj tiam mi atribuis.
>> Ni povas ripeti la procezon denove kun char letero ;.
Tio estas deklaro.
Letero egalas ĉefurbo H. Jen valorizo.
Bela simpla, tro.
>> Nun tiu procezo eble ŝajnas iom stulta.
Kial ni faras ĉi en du linioj de kodo?
Ĉu ekzistas pli bona maniero por fari tion?
Fakte, ekzistas.
Foje vi povus vidi tiu nomita inicialización.
Estas kiam vi deklaras variablon kaj atribui valoron al la sama tempo.
Tiu estas fakte bela komuna afero por fari.
Kiam vi kreas variablo, vi kutime volas havi iun bazan valoron.
Eĉ se ĝi estas 0 aŭ io.
Vi nur vi donos al ĝi valoron.
>> Vi povas pravalorizi variablo.
Int nombro egalas 17 estas la sama kiel la unuaj du linioj de kodo super.
Char letero egalas h estas la sama kiel la tria kaj kvara linioj de kodo supre.
La plej grava takeaway tie kiam ni deklari kaj atribuante
variabloj estas post ni deklaris, avizo
Mi ne uzas la datumtipo denove.
Mi ne diras int nombro egalas 17 sur la dua linio de kodo, ekzemple.
Mi nur diras nombro egalas 17.
>> Denove, re-deklari variablon post vi jam deklaris ĝi povas konduki
al iuj strangaj konsekvenco.
Do simple zorgu pri tio.
>> Mi Doug Lloyd.
Kaj tiu estas CS50.