[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.