[Muzika] SPEAKER: Në rregull. Pra, le të flasim për një tjetër gjë që është lloj i veçantë në C, e cila është e lloje të të dhënave dhe ndryshoret. Kur them unike për C, unë me të vërtetë vetëm do të thotë në kontekstin e, në qoftë se ju keni qenë një programues për një kohë vërtet të gjatë, ju ndoshta nuk keni ka punuar me lloje të të dhënave në qoftë se ju keni përdorur moderne gjuhë programimi. Gjuhë moderne si PHP dhe JavaScript, të cilat ne do të shohim pak më vonë në kurs, ju në fakt nuk duhet të specifikojë llojin e të dhënave të një variable kur ju përdorni atë. Ju vetëm shpallin atë dhe të fillojnë duke e përdorur atë. Në qoftë se kjo është një numër i plotë, atë e di se është një numër të plotë. Në qoftë se kjo është një karakter, kjo është e di se kjo është një karakter. Në qoftë se kjo është një fjalë, ajo e di kjo është një varg, ashtu-quajtur. Por në C, e cila është një Gjuha e vjetër, ne kemi nevojë të specifikojë të dhënat llojin e çdo variable që kemi krijuar për herë të parë që ne përdorim këtë ndryshore. Pra C vjen me disa ndërtuar në lloje të të dhënave. Dhe le të merrni të njohur me disa prej tyre. Dhe pastaj më pas ne do të flasim një pak për disa nga llojet e të dhënave që ne kemi shkruar për ju, kështu që ju mund t'i përdorë ato në CS50. I pari është int. Lloji dhënat int është përdorur për variablat që do të ruajë vlerat integer. Kështu që ka 1, 2, 3, negative 1, 2, 3, dhe në mënyrë të. Integers, e cila është diçka që ju duhet të mbani në mend për quiz, gjithmonë të marrë katër bytes e kujtesës, e cila është 32 bit. Ka tetë BITS në një byte. Pra, kjo do të thotë se rangun e vlerëson se një numër të plotë mund të ruajë është i kufizuar nga ajo që mund të përshtatet brenda 32 bit vlerë të informacionit. Tani siç rezulton, ajo ishte shumë kohë më parë vendosi se ne do të ndahet se gama e 32 bit në integers negative dhe integers pozitive, çdo gjysmë marrjen e varg. Kështu gamën e vlerave që ne përfaqësojmë me një gamë të plotë nga negativ 2 fuqisë 31 në 2 deri në fuqia 31 minus 1, shkaktojë ju gjithashtu nevojë për një vend për 0. Pra, në thelb gjysma e vlerave të mundshme ju mund të përshtatet në një int janë negative, dhe gjysma janë pozitive. Dhe afërsisht këtu, kjo është në lidhje me negative 2 miliard në rreth 2 miliardë pozitive. Japë ose të marrë një çift qindra milionë. Pra, kjo është ajo që ju mund të përshtatet në një variabël integer. Tani ne gjithashtu kemi diçka quajtur një numër të plotë panënshkruar. Tani Ints panënshkruara nuk janë një lloj i veçantë i ndryshore. Përkundrazi, është e panënshkruar atë që quhet një kualifikuese. Ajo modifikon të dhënat e lloji i integer pak. Dhe në këtë rast, ajo që unsigned means-- dhe ju gjithashtu mund të përdorni panënshkruara lloje të tjera të të dhënave, numër i plotë nuk është i vetmi. Çfarë ajo nuk është efektive dyshe varg pozitiv i vlerave se një numër të plotë mund të marrë në shpenzimet e nuk lejon ju të marrë në vlera negative. Pra, nëse ju keni numrat që ju të dini do të merrni më e lartë se 2 miliardë por më pak se 4 miliardë, për example-- e cila është 2 deri në 32-power-- ju mund të dëshironi të përdorni një int panënshkruar në qoftë se ju e di vlerën juaj kurrë nuk do të jetë negativ. Ju herë pas here do të keni përdoret për variablat panënshkruar në CS50, e cila është arsyeja pse unë përmend këtu. Por përsëri, gama e vlerave që ju mund të përfaqësojë me një numër të plotë unsigned si t numër i plotë rregullt, janë 0 2 në fuqinë 32 minus 1, ose rreth 0 to 4 miliardë. Pra, ju keni dyfishuar në mënyrë efektive varg pozitiv që ju mund të përshtatet, por ju keni dhënë të gjithë vlerat negative. Tani si një mënjanë, panënshkruar nuk është i vetmi kualifikueset që ne mund të shohim për Llojet e të dhënave ndryshueshme. Ka edhe gjëra të quajtur shkurtër dhe të gjatë dhe const. Const ne do të shohim pak pak më vonë në kurs. Shkurtër dhe të gjatë, ne ndoshta nuk do të. Por vetëm e di se ka janë kualifikueset tjera. Panënshkruar nuk është i vetmi. Por kjo është e vetmja ne jemi do të flasim për tani. Pra, të gjithë të drejtë. Pra, ne kemi mbuluar integers. Ç'pritet më tej? Chars. Pra chars janë përdorur për variablat që do të ruajë karaktere të vetme. Char është e shkurtër për karakterin. Dhe ndonjëherë ju mund të dëgjoni njerëzit e shpallë atë si makinë. Pra, personazhet gjithmonë të marrë një të tillë bajt memorie, e cila është vetëm 8 bit. Pra, kjo do të thotë se ata mund të përshtatet vetëm vlerat në rangun e negativ 2 në fuqinë e shtatë, apo negativ 128, 2 fuqisë 7 minus 1, ose 127. Falë ASCII, ajo ishte kohë më parë ka vendosur një rrugë të të ndajë ato numra pozitive nga 0-127 për karaktere të ndryshme se të gjitha ekzistojnë në tastierën tonë. Pra, siç do të shohim më vonë në sigurisht, dhe ju ndoshta do të vijnë për të mësuar përmendësh në disa pikë, kapitali A, për example-- kryeqyteti karakter A-- hartat me numrin 65. Dhe arsyeja për këtë është sepse kjo është ajo që është është janë caktuar nga standardi ASCII. Vogle Një është 97. Karakteri 0 për kur ju në fakt shkruani karakterin, nuk përfaqësojnë numrin zero, është 48. Ju do të mësoni një çift prej tyre si ju shkoni. Dhe ju do të vijë me siguri në nevojë ata pak më vonë në CS50. I ardhshëm i madh tip të dhënave është lundrues numra pikë. Pra, lundrues numrat pikë janë i njohur edhe si numrat reale. Ata janë në thelb numrat që kanë një pikë dhjetore në to. Floating pikësh si integers janë gjithashtu përmbante brenda 4 byte memorje. Tani nuk ka asnjë tabelë këtu. Nuk ka asnjë linjë numër, sepse përshkruar gamën e një noton nuk është saktësisht e qartë apo intuitiv. Mjafton të them ty 32 bit për të punuar me të. Dhe në qoftë se ju keni një numër si pi, e cila ka nje numer i plote pjesë 3, dhe një pluskuese Pjesa pikë, ose një pjesë decimal 0,14159, dhe kështu me radhë, ju duhet të jetë në gjendje për të përfaqësuar të gjithë it-- pjesë numër i plotë dhe pjesa dhjetore. Pra, çfarë mendoni se mund të thotë? Një gjë është se nëse dhjetore Pjesa e merr më të gjatë dhe më të gjatë, në qoftë se unë kam një shumë të madhe Pjesa numër i plotë, unë mund të mos të jetë në gjendje për të qenë sa më i saktë me pjesën dhjetore. Dhe kjo është me të vërtetë Kufizimi i një noton. Gjithandej kanë një problem saktësi. Ne kemi vetëm 32 bit për punuar me të, kështu që ne mund vetëm të jetë aq i saktë me pjesën tonë dhjetore. Ne nuk mund domosdoshmërisht të ketë një decimal Pjesa e saktë për 100 ose 200 shifra, sepse ne kemi vetëm 32 bit për të punuar me të. Pra, kjo është një kufizim i një noton. Tani për fat të mirë nuk ka një lloj tjetër të dhëna të quajtur të dyfishtë, e cila disi merret me këtë problem. Dyshe, si gjithandej, janë përdorur edhe për të ruajë numrat reale, apo pikë lundrues Vlerat. Dallimi është se dyshe janë saktësi të dyfishtë. Ata mund të përshtatet 64 bit të dhëna, ose tetë bytes. Cfare do te thote ajo? E pra, kjo do të thotë që ne mund të jetë shumë më saktë me presjes dhjetore. Në vend të që pi për shtatë vende ndoshta, me një noton, ne mund ndoshta të ketë atë në 30 vende. Nëse kjo është e rëndësishme, ju mund të dëshironi për të përdorur një të dyfishtë në vend të një noton. Në thelb, në qoftë se ju jeni punojnë në çdo gjë ku të paturit e një vend me të vërtetë të gjatë decimal dhe shumë saktësi është i rëndësishëm, ju ndoshta dëshironi të përdorni një overfloat të dyfishtë. Tani për shumicën e punës tuaj në CS50, një noton duhet të mjaftojë. Por e di që dyshe ekzistojnë si mënyrë për t'u marrë disi me saktësi problemi duke ju dhënë një shtesë 32 bit për të punuar me të për numrat tuaj. Tani kjo nuk është një lloj i të dhënave. Ky është një lloj. Dhe ajo që quhet e pavlefshme. Dhe unë jam duke folur në lidhje me të këtu, sepse ne kemi ndoshta parë atë disa herë tashmë në CS50. Dhe ju mund të pyesin ajo është mbi të gjitha. Pra, është një lloj i pavlefshëm. Ajo ekziston. Por kjo nuk është një lloj i të dhënave. Ne nuk mund të krijojë një ndryshore të tipit të pavlefshme dhe të caktojë një vlerë për të. Por, funksionet, për shembull, mund të ketë një lloj të kthimit pavlefshme. Në thelb, në qoftë se ju shihni një funksion që ka një lloj të kthimit pavlefshëm, kjo do të thotë se nuk ka kthim një vlerë. A mund të mendoni për një të përbashkët funksion që kemi përdorur deri tani në CS50 që nuk kthehet një vlerë? Printf është një. Printf nuk ka të vërtetë ndonjë gjë për ju kthehen. Ajo printon diçka të ekran, dhe kjo është në thelb një efekt anësor i asaj që bën printf. Por kjo nuk do të ju jap një vlerë mbrapa. Ju nuk kapur rezultatin dhe dyqan ajo në disa ndryshore të përdorin atë më vonë. Ajo vetëm shtyp diçka për ekran dhe ju jeni bërë. Pra, ne themi se printf është një funksion i pavlefshëm. Ajo kthen asgjë. Lista rrethues i një funksion mund të jetë i pavlefshëm. Dhe ju kam parë gjithashtu se mjaft në CS50 shumë. Pavlefshëm int main. A do të unazë një zile? Në thelb çka do të thotë është se kryesor nuk ka marrë ndonjë parametrave. Nuk ka asnjë argument që të kaluar në kryesore. Tani më vonë ne do të shohim se nuk ka një mënyrë për të kaluar në argumentet kryesore, por deri tani ajo që ne kemi parë është i pavlefshëm int main. Kryesor thjesht nuk ka marrë ndonjë argumente. Dhe kështu që ne të specifikojë se duke thënë pavlefshëm. Ne jemi vetëm duke qenë shumë i qartë në lidhje me faktin se ajo nuk ka marrë ndonjë argument. Pra tani për tani, mjafton të thonë se zbrazëti në thelb duhet vetëm të shërbejë si një placeholder për ju si të menduarit rreth si asgjë. Kjo nuk është me të vërtetë bërë asgjë. Nuk ka vlera e kthimit këtu. Nuk ka parametra këtu. Është i pavlefshëm. Kjo është një kompleks pak më shumë se kaq. Por kjo duhet të mjaftojë për pjesa më e mirë e kursit. Dhe shpresojmë se tani ju keni një pak pak më shumë një koncept të asaj që është e pavlefshme. Pra, këto janë pesë llojet e ju do të Takimi që janë ndërtuar në të C. Por në CS50 ne gjithashtu kemi një bibliotekë. CS50.h, të cilat ju mund të përfshijnë. Dhe e cila do t'ju ofrojë me dy lloje të tjera që ju ndoshta do të jetë në gjendje për të përdorur në detyrat tuaja, apo vetëm duke punuar në përgjithësi të programimit. E para prej këtyre është bool. Pra Boolean llojin e të dhënave, bool, është përdorur për variablat që do të ruajë një vlerë Boolean. Nëse ju keni dëgjuar ndonjëherë ky term më parë, ju mund të dini se një Boolean vlerë është e aftë të vetëm mbajtur dy vlera të ndryshme të dallueshme. Vërtetë dhe të rreme. Tani kjo duket goxha themelore, e drejtë? Kjo është lloj i një surprizë që ky nuk ekziston në C si ajo e ndërtuar në. Dhe në shumë gjuhë moderne, natyrisht, Booleans janë një lloj të dhënave standarde default. Por në C, ata në të vërtetë nuk janë. Por, ne kemi krijuar atë për ju. Pra, nëse ndonjëherë ju duhet për të krijuar një variabël lloj të cilit është bool, vetëm të jetë i sigurt për të #include CS50.h në fillim të programit tuaj, dhe ju do të jetë në gjendje të krijojë variabla të tipit bool. Nëse ju harroni të #include CS50.h, dhe ju filloni duke përdorur ndryshore Boolean-tipit, ju mund të hasni disa probleme kur ju jeni hartimin programin tuaj. Pra, vetëm të jetë në vëzhgim për këtë. Dhe ndoshta ju mund të rregullojmë vetëm Problemet nga kile përfshirë CS50.h. Tjetri lloj kryesor të dhënat që ne sigurojë për ju në bibliotekë CS50 është string. Pra, çfarë është një varg? Strings janë me të vërtetë vetëm fjalë. Ata janë koleksionet e karaktereve. Ata janë fjalë. Ata janë dënime. Ata janë paragrafë. Mund të jetë libra të tëra, madje. Shumë e shkurtër për të shumë të gjatë seri e karaktereve. Nëse keni nevojë të përdorni vargjet, për shembull, për të ruajtur një fjalë, vetëm të jetë i sigurt për të përfshirë CS50.h në fillim të programit tuaj kështu që ju mund të përdorni llojin string. Dhe pastaj ju mund të krijoni variablave cilit lloj të dhënave është string. Tani më vonë në kurs, ne gjithashtu do të shohim se kjo është jo e gjithë historia, ose. Ne do të hasni gjëra quajtur struktura, të cilat ju lejojnë për grupin se çfarë mund të jetë një numër të plotë dhe një varg në një njësi. Dhe ne mund të përdorni atë për disa qëllim, e cila mund të jetë në dispozicion më vonë në kurs. Dhe ne do të mësojnë në lidhje me llojet e përcaktuara, e cila ju lejon të krijoni vet lloje të të dhënave tuaja. Ne nuk kemi nevojë për t'u shqetësuar në lidhje me atë për tani. Por vetëm e di se kjo është diçka në horizont, se ka shumë më shumë për këtë në tërësi lloj gjë se unë po ju them vetëm tani. Pra, tani që ne kemi mësuar një pak për të dhënat themelore llojet dhe llojet e të dhënave CS50, le të flasim rreth asaj se si të punojnë me variablat dhe për të krijuar ato duke përdorur këto Llojet e të dhënave në programet tona. Nëse ju doni të krijoni një ndryshore, të gjithë ju duhet të bëni është dy gjëra. Së pari, ju duhet të jepni atë një lloj. Gjëja e dytë që ju duhet të bëni është t'i jepte një emër. Pasi të keni bërë këtë dhe shuplaka një pikëpresje në fund të asaj linjë, keni krijuar një ndryshore. Kështu që këtu është dy shembuj. Numri i int; letër Char ;. Çfarë kam bërë këtu? Unë kam krijuar dy variablave. E para, ndryshorja e emri është numër. Dhe numri është i aftë të mbajnë numër i plotë shkruani vlerat, sepse tipi i saj është int. Letër është një tjetër variabël që mund të mbajë karaktere sepse llojin e saj e të dhënave është char. Shumë e drejtpërdrejtë, e drejtë? Nëse e gjeni veten në një situatë ku ju duhet të krijoni shumta Variablat e të njëjtit lloj, ju vetëm duhet të specifikojë emri llojin dikur. Pastaj vetëm lista si shumë variabla e atij lloji sa ju nevojitet. Kështu që unë mund të për shembull, këtu në këtë linjë e tretë të kodit, thonë lartësi int ;, linjë të re. Gjerësia int ;. Dhe se do të punojë shumë. Unë ende do të merrni dy variabla të quajtur lartësi dhe gjerësi, secila prej të cilave eshte nje numer i plote. Por unë jam i lejuar për të, gjëra C sintaksë, konsolidojë atë në një linjë të vetme. Lartësi int, gjerësi; Është e njëjta gjë. Unë kam krijuar dy variabla, e quajtur lartësia një i quajtur gjerësi, dy prej të cilave janë në gjendje të mbajtjes Vlerat integer lloji. Në mënyrë të ngjashme këtu, unë mund të krijojë tre vlerat pikë lundrues në të njëjtën kohë. Unë ndoshta mund të krijojë një ndryshore quajtur rrënja katrore e 2-- e cila me sa duket do të përfundimisht mbajë point-- lundrues se përfaqësimi i sheshit Rrënja e 2-- rrënja katrore e 3, dhe pi. Unë mund të ketë bërë këtë në tre linja të veçanta. Noton, rrënja katrore 2; Float rrënjë katrore 3; noton pi; dhe se do të punojë shumë. Por përsëri, unë vetëm mund të konsoliduar këtë në një linjë të vetme të kodit. Bën gjërat pak shkurtër, jo si clunky. Tani në përgjithësi, është dizajn të mirë për të vetëm të deklarojë një ndryshore kur keni nevojë për atë. Dhe ne do të flasim pak pak më shumë në lidhje me atë më vonë në kurs kur kemi diskutuar qëllimin. Pra, nuk ke nevojë për të të krijojë të gjitha variablave tuaj në fillim të programit, i cili Disa njerëz mund të ketë bërë të kaluarën, ose ishte sigurisht një shumë e zakonshme praktikë coding shumë vite më parë kur punojnë me C. Ju vetëm mund duan të krijojnë një të drejtë të ndryshueshme kur keni nevojë për të. Në rregull. Pra, ne kemi krijuar variablave. Si nuk kemi përdorim ato? Pasi ne të deklarojë një ndryshueshme, ne nuk kemi nevojë të specifikojë llojin e të dhënave e kësaj variable më. Në fakt, në qoftë se ju bëni kështu, ju mund të përfundojnë me disa pasoja të pazakontë se ne do lloj i komentoj mbi për tani. Por mjafton për të thënë, gjëra të çuditshme janë duke shkuar të fillojnë të ndodhin, nëse ju pa dashje ri-deklarojë variablave me të njëjtin emër mbi dhe mbi. Kështu që këtu unë kam katër rreshta të kodit. Dhe unë kam një çift të Komentet nuk ka vetëm të tregojnë çfarë po ndodh në çdo vijë vetëm për të ndihmuar ju merrni vendosur në atë që po ndodh. Numri Pra int ;. Ju pashë se më parë. Kjo është një deklaratë e ndryshueshme. Unë kam krijuar tani një variabël quajtur numër që është aftë për të mbajtur vlerat integer-lloj. Unë e kam shpallur atë. Linja tjetër unë jam caktuar një vlerë të numrit. Numri i barabartë me 17. Çfarë po ndodh atje? Unë jam vënë numrin 17 brenda kësaj variable. Pra, nëse unë ndonjëherë pastaj të shtypura nga çfarë përmbajtja e numrit janë më vonë, ata do të më thonë se është 17. Kështu që unë kam deklaruar një ndryshore, dhe pastaj unë kam caktuar atë. Ne mund të përsëris procesin përsëri me shkronjën char ;. Kjo është një deklaratë. Letër e barabartë me kapitalin H. Kjo është një detyrë. Shumë i thjeshtë, too. Tani ky proces mund të duket lloj i trashë. Pse jemi bërë këtë në dy rreshta të kodit? A ka ndonjë mënyrë më të mirë për të bërë atë? Në fakt, nuk është. Ndonjëherë ju mund të shihni kjo quhet initialization. Kjo është kur ju të deklarojë një ndryshore dhe cakton një vlerë në të njëjtën kohë. Kjo është në fakt një goxha gjë e zakonshme për të bërë. Kur keni krijuar një ndryshore, ju zakonisht duan që ajo të ketë disa vlera themelore. Edhe në qoftë se kjo është 0 ose diçka. Ju vetëm të jepte një vlerë. Ju mund të iniciojnë një ndryshore. Int numri i barabartë me 17 është e njëjtë si dy linja e parë e kodit të lart. Letra char barabartë h është e njëjtë si Linjat e tretë dhe të katërt të kodit mësipërme. Takeaway më e rëndësishme këtu kur ne jemi deklaruar dhe caktimin e variablave është pasi ne kemi shpallur atë, njoftim Unë nuk jam duke përdorur llojin e të dhënave përsëri. Unë nuk jam duke thënë numri int barabartë me 17 për vija e dytë i kodit, per shembull. Unë jam vetëm duke thënë se numri i barabartë me 17. Përsëri, ri-deklaruar një ndryshore pas ju keni deklaruar tashmë ajo mund të çojë në një farë pasojë pazakontë. Pra, vetëm të jetë i kujdesshëm për këtë. Unë jam Doug Lloyd. Dhe kjo është CS50.