[Muusika mängib] SPEAKER: Okei. Nii räägime teine asi, mis on omamoodi unikaalne C, mis on andmetüübid ja muutujad. Kui ma ütlen unikaalne C, ma tõesti tähenda ainult kontekstis, kui olete olnud programmeerija jaoks väga palju aega, oled ilmselt ei töötanud andmetüübid Kui oled kasutanud kaasaegseid programmeerimiskeeli. Modern keelte nagu PHP ja JavaScript, mis me ka näha natuke Hiljem käigus, sa tegelikult ei pea täpsustada andmed tüüpi muutuja kui sa seda kasutada. Sa lihtsalt kuulutada ja seda kasutama hakata. Kui see on täisarv, siis tean, et see täisarv. Kui see on märk, et see on teab, et see on märk. Kui see on sõna, see teab see on string, nn. Aga C, mis on vanemate keel, peame täpsustada andmeid tüüpi iga muutuja et me loome esmakordselt et me kasutame, et muutuv. Nii C kaasas mõned Sisseehitatud andmetüüpe. Ja olgem tutvuda mõned neist. Ja siis hiljem me ka rääkida natuke mõningate andmete liigid et me oleme kirjutatud teile, nii et saate neid kasutada CS50. Esimene on int. Int andmetüüpi kasutatakse muutujate mis salvestab täisarve. Nii 1, 2, 3, negatiivne 1, 2, 3, ja nii edasi. Täisarvud, mis on midagi, mida tuleb meeles pidada viktoriini alati alustada nelja baiti mälu, mis on 32 bitti. Seal on kaheksa bitti bait. Nii see tähendab, et valikut väärtustab et täisarv mahutab on piiratud, mida võib mahtuda 32 bitti väärt informatsiooni. Nüüd, kui selgub, see oli ammu otsustanud et meil oleks lahku mis vahemikus 32 bitti negatiivseks täisarvud ja positiivsed täisarvud, Iga saan poole ulatuses. Nii väärtuste vahemik, et me esindame koos täisarv vahemikus negatiivne 2 kuni 31. võimu 2 31. võimu miinus 1, põhjustada pead ka koht, 0. Nii et põhimõtteliselt poole võimalikud väärtused mahub int on negatiivne, ja pool on positiivne. Ja umbes siin, see on umbes negatiivne 2 miljardit positiivseid 2 miljardit. Anda või võtta paar sada miljonit. Nii et mida sa mahub in täisarv muutuja. Nüüd on meil ka midagi nimetatakse täisarv. Nüüd allkirjastamata ints ei ole Eraldi tüüpi muutuja. Pigem allkirjastamata on mida nimetatakse täpsustava. See muudab andmete tüüpi täisarv veidi. Ja sel juhul, mida allkirjastamata means-- ja saate ka kasuta allkirjastamata teisi andmetüüpe täisarv pole ainus. Mida see tegelikult teeb, on kahekordistab Positiivse väärtuste vahemik et täisarv võib võtta aadressil arvelt ei luba enam sa võtta negatiivseid väärtusi. Nii et kui teil on numbrid, et sa tead saavad kõrgemad kui 2 miljardit, kuid vähem kui 4 miljardit eest example-- milleks on 2 kuni 32. power-- võiksite kasutada allkirjastamata int kui te tean oma väärtust ei saa kunagi negatiivne. Sul on vahetevahel kasutatud allkirjastamata muutujad in CS50, mis on põhjus, miks ma mainida siin. Aga jälle, väärtuste vahemik, et sa võib esindada koos täisarv kui t regulaarne täisarv, on 0 2 kuni 32. võimu miinus 1, või umbes 0-4000000000. Nii et olete tõhusalt kahekordistunud positiivne vahemik, mis mahub, aga sa oled loobunud kõik negatiivseid väärtusi. Nüüd kui kõrvale, allkirjastamata ei ole ainus täpsustava et me võiksime näha muutuja tüüpi andmeid. On ka asju, mida nimetatakse lühike ja pikk ja const. Const me näeme vähe natuke hiljem muidugi. Lühike ja pikk, me ilmselt ei ole. Aga tean, et seal on teiste täpsustus. Unsigned ei ole ainus. Aga see on ainult üks me räägime kohe. Nii et kõik õige. Nii oleme kaetud täisarvud. Mis edasi? Chars. Nii tähemärki kasutatakse muutujate mis salvestab ühe tähemärki. Char on lühike iseloomu. Ja mõnikord võib kuulda inimesed hääldada nagu auto. Nii tegelased võtavad alati üks bait mälu, mis on vaid 8 bitti. Nii see tähendab, et neid saab ainult mahtuda väärtuste vahemikku negatiivne 2 seitsmenda võimu, või negatiivse 128, 2 kuni 7. võimu miinus 1 või 127. Tänu ASCII, see oli ammu otsustanud viisil kaardistada need positiivsed numbrid 0-127 erinevate tähtedega et kõik on olemas meie klaviatuuri. Nii nagu me näeme hiljem käigus, ja sa ilmselt tulevad meelde mõned punkti, kapitali A jaoks example-- iseloomu kapitali a-- kaardid numbrile 65. Ja selle põhjuseks on sest see, mida on see on määratud ASCII standard. Väiksed tähed A on 97. Iseloomu 0 kui sa tegelikult kirjutad iseloomu, ei esindavad number null, on 48. Te õpite paar Nende lähete. Ja sa kindlasti tulema vaja neid natuke hiljem CS50. Järgmine suurem andmetüüp on ujukoma numbrid. Nii ujukoma numbrid tuntud ka kui tegelik arv. Nad on põhimõtteliselt numbreid on koma neid. Ujukomaarvutuse väärtused nagu täisarvud ka sisalduvad 4 baiti mälu. Nüüd pole mingit skeem siin. Ei ole number line, sest kirjeldab erinevaid sularahaga ei ole täpselt selge või intuitiivne. Piisab, kui öelda, et sa on 32 bitti töötada. Ja kui teil on number nagu pi, mis on täisarv 3. osa ja ujuva punkti osas, või koma osa 0,14159, ja nii edasi, sa pead olema suudab esindada kõiki see-- täisosa ja koma osa. Mis sa arvad, mis võiks tähendada? Üks asi on see, et kui koma osa läheb kauem ja kauem, kui mul on väga suur täisosa, ma ei pruugi suutma olema nii täpsed koos koma osa. Ja see on tõesti piiramine sularahaga. Ujukid on täpselt probleem. Meil on ainult 32 bitti töötada, nii et saame ainult olla nii täpne meie koma osa. Me ei pea tingimata olema koma osa täpselt 100 või 200 numbrit, sest meil on ainult 32 bitti töötada. Nii et see piirang sularahaga. Nüüd õnneks on teise andmete tüübi nimega double, mis mõnevõrra tegeleb selle probleemiga. Doubles, nagu ujukite, kasutatakse ka salvestada tegelikku arvu, või ujukoma väärtusi. Erinevus on selles, et Paarismängus on kahekordne täpsus. Nad mahub 64 bitti andmete või kaheksa baiti. Mida see tähendab? Noh, see tähendab, et saame olla palju rohkem täpne olla koma. Selle asemel, pi kuni seitsme kohti võibolla koos sularahaga, saame võibolla on see, et 30 kohta. Kui see on oluline, siis võiksite kasutada topelt asemel sularahaga. Põhimõtteliselt, kui sa oled kallal midagi, kus võttes tõesti pikk kümnendkohani ja palju täpsus on oluline, sa ilmselt tahad kasutage kahekordset overfloat. Nüüd enamiku oma tööd CS50, float peaks piisama. Aga ei tea, mis kahekordistab eksisteerida viis mõnevõrra tegeleda täpsus Probleem, mis annab sulle ekstra 32 bitti töötada oma numbrid. Nüüd ei ole see andmetüüp. See on teatud tüüpi. Ja seda nimetatakse tühine. Ja ma räägin seda siin, sest me oleme ilmselt näinud paar korda juba CS50. Ja võite olla mõtlesin, mida see kõik umbes. Nii tühine on teatud tüüpi. On küll. Aga see ei ole andmebaasi tüübist. Me ei saa luua tüüpi muutuja kehtetuks ja väärtustada seda. Aga funktsioone, näiteks võib olla tühine tagastamise tüübist. Põhimõtteliselt, kui sa näed funktsiooni mis on tühine naasmise tüüp see tähendab, et ta ei tagasta väärtust. Kas te arvate, ühise funktsioon, mis meil seni kasutatud in CS50, et ei tagasta väärtust? Printf on üks. Printf ei ole tegelikult tagasi sulle midagi. See prindib midagi, et ekraan ja see on põhimõtteliselt kõrvaltoime, mida printf teeb. Aga see ei anna teile raha tagasi. Sa ei saa lüüa tulemus ja poest seda mingil varieeruv seda kasutada hiljem. See lihtsalt trükib midagi ekraani ja sa oled teinud. Nii me ütleme, et printf on tühine funktsioon. Ta naaseb midagi. Ümbermõõt nimekirjas funktsioon võib olla ka tühine. Ja sa näinud ka, et üsna natuke CS50 liiga. Int main void. Kas see häirekella? Põhimõtteliselt, mida see tähendab, et Peamised ei võta parameetrid. Ei ole argument, et saada läks peamine. Nüüd hiljem näeme, et seal on nii edasi argumendid pea-, kuid seni me oleme näinud on int main void. Main lihtsalt ei võta mingeid argumente. Ja nii me täpsustada, et öeldes tühine. Me lihtsalt on väga selgesõnaline sellest, et see ei võta mingeid argumente. Nii nüüd piisab öelda, et void põhimõtteliselt tuleb lihtsalt olla kohatäide sind mõtlema kui midagi. See ei ole tõesti tee midagi. Ei ole tagastatav väärtus siin. Ei ole parameetreid siin. See on tühine. See on veidi keerulisem kui see. Aga see peaks olema piisav parem osa muidugi. Ja loodetavasti nüüd on vähe natuke rohkem mõiste, mis on tühjus. Nii et need on viit tüüpi saate kohtumine, mis on sisse ehitatud C. Aga CS50 meil on ka raamatukogu. CS50.h, milleks võib olla näiteks. Ja mis annab teile lisaks veel kahte liiki et sa ilmselt oleks võimalik kasutada oma ülesandeid, või lihtsalt töötab üldiselt programmeerimine. Esimene neist on bool. Nii Boole'i ​​tüüpi andmetena bool, kasutatakse muutujat mis salvestab tõeväärtuse. Kui olete kunagi kuulnud Selle aja jooksul enne seda, siis võiksid teada, et Boole'i väärtus on võimeline vaid asetage kaks erinevat erinevad väärtused. Õige ja vale. Nüüd tundub päris põhiline, eks? See on selline üllatus, et see ei eksisteeri C, sest see on sisseehitatud. Ja paljud tänapäeva keeles, Muidugi, tõeväärtused on standard vaikimisi andmete tüübi. Aga C, nad tegelikult ei. Aga me oleme loonud selle eest ise. Nii et kui teil kunagi vaja luua muutuja, mille tüübiks on bool, Lihtsalt olla kindel, # include CS50.h alguses oma programmi, ja sa pead olema võimeline looma muutujate bool tüübist. Kui te unustate # include CS50.h ja hakkad Boole'i ​​tüüpi muutujaid, siis võib tekkida mõningaid probleeme kui sa koostamisel oma programmi. Nii lihtsalt olla valvel, et. Ja äkki saab lihtsalt määrata probleeme nael sealhulgas CS50.h. Teine suurem andmetüüp, et me annavad teile ka CS50 raamatukogu on string. Mis on string? Strings on tõesti ainult sõnad. Nad kogusid tähemärki. Nad sõnu. Nad lauseid. Nad punktid. Võib olla terve raamatuid, isegi. Väga lühikese ja pika sarja tegelased. Kui teil on vaja kasutada stringe, näiteks salvestada sõna, lihtsalt olla kindel, et hõlmata CS50.h alguses oma programmi nii et saate kasutada string tüübist. Ja siis saate luua muutujad kelle andmed tüüp on string. Nüüd hiljem käigus, me ka näha, et see on mitte kogu lugu, kas. Me kohtame asju nimetatakse struktuurid, mis võimaldab teil rühm, mis võib olla täisarv ja string üheks tervikuks. Ja me saame kasutada seda mingil eesmärgil, mis võib käepärane hiljem muidugi. Ja me ka teada umbes määratletud tüüpi, mis võimaldab teil luua andmetüüpe. Me ei pea muretsema sellest nüüd. Aga tean, et see on midagi silmapiiril, et seal on palju rohkem seda kogu tüübist asi, kui ma ütlen sulle lihtsalt nüüd. Nüüd, et me oleme õppinud natuke lähteandmete tüüpi ja CS50 andmetüüpe, olgem rääkida, kuidas töötada muutujad ja luua neile, kasutades neid andmetüübid meie programme. Kui soovite luua muutuja, kõik mida sa pead tegema, on kaks asja. Esiteks, sa pead andma seda tüüpi. Teine asi, mida vaja mida teha, on anda talle nimi. Kui olete teinud seda ja slapped semikooloniga lõpus, et joon, lõite muutuja. Nii et siin on kaks näidet. Int number; char kirja ;. Mida ma olen teinud siin? Olen loonud kaks muutujat. Esimene muutuja nimi on number. Ja number mahub täisarv kirjuta väärtusi, sest selle tüüp on int. Kiri on teise muutuja mis mahub tähemärki sest tema andmete tüüp on char. Päris lihtne, eks? Kui sa leiad ennast olukorras, kus teil on vaja luua mitu muutujad on sama tüüpi, pead ainult täpsustada tüüp nime korraga. Siis lihtsalt loetleda nii palju muutujaid seda tüüpi kui vaja. Nii et ma võiks näiteks siin Selles kolmanda koodirida, öelda int kõrgus ;, uut liini. Int laius ;. Ja mis töötaks ka. Ma ikka kahe muutuja nimega kõrguse ja laiuse, millest igaüks on täisarv. Aga ma olen lubatud, asju C süntaksit, koondada see ühe rea. Int kõrgus, laius; See on sama asi. Olen loonud kaks muutujat, üks nn kõrgus üks nimetatakse laiusega, mis mõlemad on võimeline hoidma täisarvtüübil väärtusi. Samamoodi siin, ma ei saa luua kolm murdarve korraga. Võin olla luua muutuja nimetatakse ruutjuure 2-- mis eeldatavalt lõpuks hoidke ujuvad point-- et esitus ruut Juur 2-- ruutjuur 3 ja pi. Ma oleks seda teinud kolmele eraldi reale. Float, ruutjuur 2; Float ruutjuure 3; float pi; ja mis töötaks ka. Aga jälle, ma ei saa lihtsalt koondada Selle üheks rida koodi. Paneb asju natuke lühem, mitte kohmakad. Nüüd üldiselt see on hea disain ainult kuulutada muutuja, kui seda vajate. Ja me räägime veidi natuke rohkem, et Hiljem käigus kui me räägime ulatus. Nii ei pea luua kõik oma muutujad alguses programmi, mis mõned inimesed võivad teinud minevikus, või oli kindlasti väga sage koodis tava aastaid tagasi töötamisel C. võid lihtsalt tahame luua muutuja õigus, kui seda vajate. Hästi. Nii oleme loonud muutujaid. Kuidas neid kasutada? Pärast me kuulutada varieeruv, me ei pea täpsustada andmete tüübi Selle muutuja enam. Tegelikult, kui te seda teete, võite lõpuks imelikke tagajärjed et me mingi ilustada nüüd. Aga piisab, kui öelda, imelik asjad lähevad alustada juhtub, kui sa kogemata uuesti deklareerida muutujaid sama nime ikka ja jälle. Nii et siin mul on neli rida koodi. Ja mul on paar Kommentaarid on lihtsalt näitab, mis toimub iga rida lihtsalt aidata saad asub, mis toimub. Nii int number ;. Sa nägid, et varem. See muutuja deklaratsiooni. Olen nüüd loonud muutuva nimetatakse arvu, mis on mahub täisarv-tüüpi väärtusi. Olen kuulutanud. Järgmisel real ma määrates väärtus on number. Number võrdub 17. Mis toimub seal? Ma panen arv 17 sees, et muutuja. Nii et kui ma kunagi siis välja printida, mida sisu arv on hiljem siis nad ütlevad mulle see 17. Nii et ma olen kuulutanud muutuja, ja siis ma olen määratud see. Me võime korrata protsessi jälle char kirja ;. See deklaratsioon. Kiri võrdub kapitali H. See loovutamine. Päris lihtne, liiga. Nüüd see protsess võiks tunduda selline rumal. Miks me seda teeme kaks rida koodi? Kas parem viis seda teha? Tegelikult on. Mõnikord võib näha Selle nimega ettekanne. See on siis, kui kuulutada muutuja ja omistada väärtus samal ajal. See on tegelikult päris ühine asi, mida teha. Kui loote muutuja, mida tavaliselt tahan sellega mõned põhilised väärtus. Isegi kui see on 0 või midagi. Sa lihtsalt annad talle raha. Võite initsialiseerida muutuv. Int nr võrdub 17 on sama kaks esimest rida koodi ülevalt. Char kirjas võrdub h on sama Kolmas ja neljas rida koodi eespool. Kõige olulisem Buffee siin kui me deklareerimise ja määramise muutujad on pärast me oleme kuulutas ta, teate Ma ei kasuta andmetüüp uuesti. Ma ei ütle, int nr võrdub 17 teine ​​rida koodi, näiteks. Ma lihtsalt ütlen, nr võrdub 17. Jällegi uuesti kuulutab muutuja pärast olete juba deklareeritud see võib põhjustada mõned imelik tagajärg. Nii lihtsalt olla ettevaatlik, et. Ma olen Doug Lloyd. Ja see on CS50.