[TÓNLIST spila] Ræðumaður: Allt í lagi. Svo skulum við tala um annað hlutur sem er góður af einstakt að C, sem er gagnatög og breytur. Þegar ég segi einstakt að C, ég virkilega aðeins þýða í samhengi við, ef þú hefur verið forritari fyrir mjög langan tíma, þú hefur sennilega ekki unnið með gagnatög ef þú hefur notað nútíma forritunarmál. Nútíma tungumál eins PHP og JavaScript, sem við munum einnig sjá smá síðar í námskeiðinu, þú ert ekki í raun að tilgreina gögn tegund breytu þegar þú notar það. Þú lýsa bara það og byrja að nota það. Ef það er heiltala, það veit að það er heiltala. Ef það er eðli, það er veit það er eðli. Ef það er orð, veit það það er band, svokölluð. En í C, sem er eldri tungumál, þurfum við að tilgreina þau gögn gerð öllum breytu sem við búum í fyrsta skipti sem við notum þá breytu. Svo C koma með sumir innbyggður-í gögn gerðum. Og við skulum fá kunnuglegur með nokkrum af þeim. Og þá síðan við munum einnig tala a svolítið um tiltekin gagnatög sem við höfum skrifað fyrir þig, svo þú getur notað þau í CS50. Í fyrsta lagi er INT. Int gögn tegund er notuð fyrir breytur sem mun geyma heiltölugildi. Svo 1, 2, 3, neikvæð 1, 2, 3, og svo framvegis. Heiltölur, sem er eitthvað sem þú ættu að hafa í huga fyrir próf, alltaf að taka upp fjórar bæti minni, sem er 32 bita. Það eru átta bitar í bæti. Þannig að þetta þýðir að á bilinu gildi sem heiltala getur geymt takmarkast við það sem passar innan 32 bita virði af upplýsingum. Nú eins og það kemur í ljós, það var löngu ákveðið að við myndum skipta upp sem svið af 32 bita í neikvæðar heiltölur og jákvæðar heiltölur, hvert getting helmingur af svið. Svo bilinu gildum sem við hönd með heiltölu á bilinu neikvætt 2 til 31. vald til 2 til 31. máttur mínus 1, valda því að þú þarft líka stað fyrir 0. Svo í rauninni helmingur af gildunum þú passar í int eru neikvæðar og helmingur eru jákvæð. Og u.þ.b. hér, þetta er um neikvæð 2 milljarða til um jákvæða 2 milljarða króna. Gefa eða taka nokkra hundrað milljónir. Svo er það sem þú getur passa að í heiltölu breytu. Nú höfum við líka eitthvað kallað óundirritaður heiltölu. Nú óundirritaður ints eru ekki sérstaka tegund af breytu. Frekar, óundirritaður er það sem er kallað undankeppni. Það breytir gögnum gerð heiltölu lítillega. Og í þessu tilfelli, það undirritunar means-- og þú getur líka nota óundirritaður aðrar gerðir gögn, heiltala er ekki sú eina. Hvað það gerir í raun er tvöfaldar jákvæð bil sem heiltala getur tekið á á kostnað ekki lengur að leyfa þú að taka á neikvæðum gildum. Svo ef þú ert með tölur sem þú veist vilja fá hærri en 2 milljarðar en minna en 4 milljarða, fyrir example-- sem er 2 til 32. power-- þú might vilja til að nota óundirritaður INT ef þú veit gildi mun aldrei vera neikvæð. Þú munt stundum hafa notað fyrir óundirritaður breytur í CS50, sem er ástæða þess að ég nefni það hér. En aftur, bil sem þú getur táknað með óskráðum heiltölu eins og t reglulega heiltölu eru 0 2 til 32. krafti mínus 1, eða um 0 til 4 milljarða króna. Svo þú hefur í raun tvöfaldast á jákvætt svið sem þú getur passa, en þú hefur gefið upp alla neikvæð gildi. Nú sem innskot, óundirritaður er ekki eina undankeppni að við gætum séð fyrir breytilegum gagnatög. Það eru líka hlutir sem kallast stutt og löng og const. Const við munum sjá smá aðeins seinna í námskeiðinu. Skemmri og lengri, munum við sennilega ekki. En bara veit að það eru aðrar undankeppnir. Óundirritaður er ekki sú eina. En það er sú eina sem við erum að fara að tala um núna. Svo allt í lagi. Þannig að við höfum fjallað heiltölur. Hvað er næst? Stafir. Svo stafir eru notuð fyrir breytur sem mun geyma einn stafi. Char er stutt fyrir staf. Og stundum þú gætir heyra fólk dæma það sem bíl. Svo stafir taka alltaf upp einn bæti af minni, sem er bara 8 bitar. Þannig að þetta þýðir að þeir geta passa bara gildi á bilinu neikvæð 2 til sjöunda vald, eða neikvæð 128, 2 til 7. krafti mínus 1, eða 127. Þökk sé ASCII, það var löngu síðan ákvað leið að kortleggja þær jákvæðar tölur frá 0-127 ýmsum stafi að allir eru á lyklaborðinu okkar. Svo eins og við munum sjá síðar í Námskeiðið, og þú munt sennilega koma til að leggja á minnið á sumir lið, höfuðborg A, fyrir example-- eðli fjármagns A-- kort til fjölda 65. Og ástæðan fyrir því er því það er það sem er að það er falin af ASCII staðall. Lágstafir A er 97. Persónan 0 þegar þér raunverulega gerð staf, ekki alþingismaður fjölda núll, er 48. Þú munt læra nokkra af þessum sem þú ferð. Og þú munt örugglega koma að þurfa þá svolítið seinna í CS50. Næsta meiriháttar gögn tegund er fljótandi tölur benda. Svo fleytitölur eru einnig þekktur sem rauntölur. Þeir eru í grundvallaratriðum tölur sem hafa Komma í þeim. Fleytitölugildi eins heiltölur eru einnig sem innan 4 bæti af minni. Nú er engin graf hér. Það er engin tala lína, því lýsa á bilinu flotholt er ekki nákvæmlega ljóst eða innsæi. Látum nægja að segja þér höfum 32 bita til að vinna með. Og ef þú ert að tala eins og PI, sem hefur heiltala hluti 3, og fljótandi lið að hluta eða aukastaf hluti 0,14159, og svo framvegis, þú þarft að vera fær að tákna allar it-- heiltölu hluti og aukastaf hluti. Svo hvað finnst þér að gæti þýtt? Eitt er að ef við aukastaf hluti fær lengur og lengur, ef ég hef mjög stór heiltala hluti, gæti ég ekki vera fær um að vera eins nákvæm með aukastaf hluta. Og það er í raun takmörkun að festa flotholt. Fljóta með nákvæmni vandamál. Við höfum aðeins 32 bita til vinna með, svo við getum aðeins vera svo nákvæm við aukastaf okkar hálfu. Við getum ekki endilega að hafa aukastaf hluti nákvæmar til 100 eða 200 tölustöfum, vegna þess að við höfum aðeins 32 bita til að vinna með. Svo er það takmörkun fljóta. Nú sem betur fer er það annars gögn tegund kölluð tvöfaldur, sem nokkuð fjallar þetta vandamál. Doubles, eins fljóta, eru einnig notuð til að geyma rauntölur eða fleytitölu gildi. Munurinn er sá að tvöfaldar eru tvöfaldur nákvæmni. Þeir geta passa 64 bita af gögn, eða átta bytes. Hvað þýðir það? Jæja, það þýðir að við getum verið miklu meira nákvæm við kommu. Í stað þess að þurfa pi til sjö stöðum kannski, með fljóta, við getum kannski hafa það að 30 stöðum. Ef það er mikilvægt, þú might vilja að nota dobl í stað þess að fljóta. Í grundvallaratriðum, ef þú ert vinna á neitt hvar hafa mjög lengi aukastaf stað og a einhver fjöldi af nákvæmni er mikilvæg, þú vilt sennilega að nota tvöfaldan overfloat. Nú fyrir mest af vinnu þinni í CS50, fljóta ætti að nægja. En veit að tvöfaldar til sem a leið til að nokkuð takast á við nákvæmni Vandamálið með því að gefa þér auka 32 bita að vinna með fyrir tölur þínar. Nú er þetta ekki gögn tegund. Þetta er tegund. Og það er kallað ógilt. Og ég er að tala um það hér vegna þess að við höfum sennilega séð það nokkrum sinnum nú þegar í CS50. Og þú gætir verið að spá hvað það er allur óður í. Svo ógilt er gerð. Það er til staðar. En það er ekki gögn tegund. Við getum ekki búið til breytu af tegund ógilt og úthluta gildi til þess. En aðgerðir, til dæmis, Hægt er að hafa ógilt aftur gerð. Í grundvallaratriðum, ef þú sérð aðgerð sem hefur ógilt aftur gerð, það þýðir að það er ekki að skila gildi. Getur þú hugsa um sameiginlegt fall sem við höfum notað hingað til í CS50 sem ekki skila gildi? Printf er einn. Printf er í raun ekki aftur eitthvað fyrir þig. Það prentar eitthvað til skjár, og það er í rauninni aukaverkun af því printf gerir. En það þýðir ekki að gefa þér gildi aftur. Þú handtaka ekki niðurstöðu og geyma það í sumum breytu til að nota það síðar. Það prentar bara eitthvað við skjár og þú ert búinn. Svo við segjum að printf er ógilt virka. Það skilar engu. Ummál listi af a aðgerð getur einnig verið ógilt. Og þú hefur einnig séð að töluvert í CS50 líka. Int main ógilt. Er að hringja bjöllu? Í grundvallaratriðum hvað það þýðir að Helstu taki ekki breytur. Það er engin rök að fá liðið í main. Nú síðar munum við sjá að það er leið til að fara framhjá rök í main, en svo langt sem við höfum séð er int helstu ógilt. Main bara ekki taka nein rök. Og svo við að tilgreina að með því að segja ógilt. Við erum bara að vera mjög skýr um þá staðreynd að það tekur ekki nein rök. Svo nú, nægja að segja það tóm grundvallaratriðum ætti bara að þjóna sem tákn fyrir þig sem hugsa um sem ekkert. Það er í raun ekki að gera neitt. Það er ekki aftur snúið gildi hér. Það er engin breytur hér. Það er ógilt. Það er svolítið flóknara en það. En þetta ætti að nægja fyrir betra hluti af námskeiðinu. Og vonandi nú þú hafa a lítill aðeins meira um hugmyndina um hvað ógilt er. Svo þeir eru fimm tegundir sem þú munt fundur sem eru innbyggð í að C. En í CS50 við höfum einnig bókasafn. CS50.h, sem þú getur falið. Og sem mun veita þér með tvær viðbótar tegundir að þú munt sennilega vera fær að nota á verkefnum þínum, eða bara að vinna almennt forritun. The fyrstur af þessir er bool. Svo Boolean gögn tegund, bool, er notað fyrir breytur sem mun geyma Boolean gildi. Ef þú hefur einhvern tíma heyrt Hugtakið áður, þér gætir vita að á Boolean gildi er fær um að aðeins halda tvær mismunandi mismunandi gildi. Satt og ósatt. Nú virðist þetta nokkuð grundvallaratriði, ekki satt? Það er góður af a óvart að þetta er ekki til í C eins og það er innbyggt í. Og í mörgum nútíma tungumálum, auðvitað, Booleans eru staðalbúnaður sjálfgefið gögn tegund. En í C, þeir eru í raun ekki. En við höfum búið hana fyrir þig. Svo ef þú þarft alltaf að búa til breytu sem gerð er bool, bara vera viss um að #include CS50.h í upphafi program, og þú munt vera fær til að búa til Breytur bool gerð. Ef þú gleymir að #include CS50.h og þú byrjar að nota Boolean gerð breytur, þú gætir lendir í einhverjum vandræðum þegar þú ert að setja saman program. Svo bara að vera á the útlit fyrir það. Og kannski þú getur bara festa vandamál með pund á meðal cs50.h. Önnur helstu gögn tegund sem við veita þér í CS50 bókasafn er band. Svo er það band? Strengir eru í raun bara orð. Þeir eru söfn af stöfum. Þeir eru orð. Þeir eru setningar. Þeir eru málsgreinar. Gæti verið heilar bækur, jafnvel. Mjög stutt til mjög lengi röð af stöfum. Ef þú þarft að nota strengi, til dæmis, til að geyma orð, bara vera viss um að fela CS50.h í upphafi program svo þú getur notað band tegund. Og þá er hægt að búa til breytur sem gögn tegund er band. Nú síðar í námskeiðinu, við munum einnig sjá að það er ekki öll sagan heldur. Við munum lenda í hlutina kallast mannvirki, sem gera þér kleift að það getur verið heiltala og band í einni einingu. Og við getum notað það fyrir sumir tilgangur, sem gæti koma sér vel síðar í námskeiðinu. Og við munum einnig læra um skilgreindar tegundir, sem leyfa þér að búa til eigin gögn gerðum. Við þurfum ekki að hafa áhyggjur um það í bili. En bara veit að það er eitthvað á sjóndeildarhringnum, að það er mikið meira til að þetta allt tegund hlutur en ég ætla að segja þér bara núna. Svo nú er að við höfum lært svolítið um helstu gögn tegundir og CS50 gagnatög, við skulum tala um hvernig á að vinna með breytur og búa þá að nota þetta gagnatög í áætlunum okkar. Ef þú vilt að búa til breytu, allt sem þú þarft að gera er tvennt. Fyrst, þú þarft að gefa það a tegund. Annað sem þú þarft að gera er að gefa honum nafn. Þegar þú hefur gert það og löðrungur a semíkomma í lok þess línu, þú hefur búið til breytu. Svo hér er tvö dæmi. Int númer; bleikju bréf ;. Hvað hef ég gert hér? Ég hef búið til tvær breytur. Sú fyrsta, breytan er Nafnið er númer. Og fjöldi er fær um að halda heiltala tegund gildi, vegna þess að gerð þess er INT. Bréf er annar breyta sem getur haldið stafi vegna þess að gögn gerð hennar er bleikju. Mjög einfalt, ekki satt? Ef þú finna sjálfur í aðstæðum þar þú þarft að búa til margar breytur af sömu gerð, þú þarft aðeins að tilgreina gerð nafn einu sinni. Þá bara að telja upp eins margar breytur af þeirri tegund sem þú þarft. Svo ég gat til dæmis, hér í þessari þriðju línu af kóða, segir INT hæð ;, nýja línu. Int breidd ;. Og sem myndi vinna líka. Ég myndi samt fá tvær breytur sem heitir hæð og breidd, sem hver um sig er heiltala. En ég er leyft að, hlutir að C setningafræði, styrkja það í einni línu. Int hæð, breidd; Það er það sama. Ég hef búið til tvær breytur, er einn hét Hæð einn hét breidd, bæði sem eru fær um að halda heiltala tegund gildi. Á sama hátt hér, get ég búið til þrjú fleytitölum í einu. Ég get kannski búa til breytu kallað kvaðratrót 2-- sem væntanlega mun að lokum halda fljótandi point-- að framsetning af the Square rót 2-- kvaðratrót af 3, og pi. Ég hefði getað gert þetta á þremur aðskildum línum. Fljóta, kvaðratrót 2; Fljóta kvaðratrót 3; fljóta pi; og sem myndi vinna líka. En aftur, ég get bara treysta þetta í einni línu af kóða. Gerir hlutina svolítið styttri, ekki eins clunky. Nú almennt, það er góð hönnun að aðeins lýsa breytu þegar þú þarft hana. Og við munum tala svolítið aðeins meira um það síðar í námskeiðinu þegar við ræðum umfang. Svo þarf ekki endilega að búa allar breytur þínar í upphafi áætlunarinnar, sem sumir gætu hafa gert í fortíðinni, eða var vissulega mjög algengt erfðaskrá æfa fyrir mörgum árum þegar unnið er með C Þú gætir bara langar að búa til breytu rétt þegar þú þarft hana. Allt í lagi. Þannig að við höfum búið breytur. Hvernig eigum við að nota þá? Eftir að við lýsa yfir breyta, við þurfum ekki að tilgreina gögn tegund af breytunni lengur. Í staðreynd, ef þú gerir það, þú gætir endað með einhverju skrýtnu afleiðingum sem við munum konar gljái yfir nú. En nægja að segja, undarlegir atburðir eru að fara að byrja að gerast ef þú óvart aftur lýsa breytur með sama nafni aftur og aftur. Svo hér er ég með fjórar línur af kóða. Og ég er með par af athugasemdir þar bara til kynna hvað er að gerast á hver lína bara til að hjálpa þú færð í hvað er að gerast. Svo INT númer ;. Þú sást að áður. Það er breytilegt yfirlýsing. Ég hef nú búið til breytu kallað tala sem er fær um að halda heiltala gerð gildi. Ég hef lýst því. Næsta lína ég framselja gildi til fjölda. Fjöldi jafngildir 17. Hvað er að gerast þarna? Ég er að setja á númer 17 inni breytunni. Þannig að ef ég alltaf þá prenta út hvað innihald númer eru síðar, þeir segja mér að það er 17. Svo ég hef lýst breytu, og þá hef ég falið það. Við getum endurtaka ferlið aftur með bleikju bréfi ;. Það er yfirlýsing. Letter jafngildir fjármagn H. Það er framsal. Nokkuð augljóst, líka. Nú gæti þetta ferli virðast konar kjánalegt. Hvers vegna erum við að gera þetta í tveimur línum af kóða? Er til betri leið til að gera það? Í staðreynd, there er. Stundum þú gætir séð þetta heitir frumstilling. Það er þegar þú lýsa breytu og að úthluta gildi á sama tíma. Þetta er í raun nokkuð sameiginlegur hlutur til gera. Þegar þú býrð til breytu, þú venjulega vilja það að hafa sumir undirstöðu gildi. Jafnvel ef það er 0 eða eitthvað. Þú bara þú gefa það a gildi. Þú getur frumstilla breytu. Int númer jafngildir 17 er það sama og fyrstu tvær línur af kóða upp hér að ofan. Char bréf jafngildir h er það sama og Þriðja og fjórða línur af kóða fyrir ofan. Mikilvægasta takeaway hér þegar við erum að lýsa og framselja breytur er eftir að við höfum lýsti það, tilkynning Ég er ekki að nota gögn tegund aftur. Ég er ekki að segja INT tala jafngildir 17 á í annarri línu af kóða, til dæmis. Ég ætla bara að segja tala jafngildir 17. Aftur, aftur lýsa breytu eftir þú hefur nú þegar lýst yfir að það getur leitt að einhverju skrýtnu afleiðing. Svo bara vera varkár um það. Ég er Doug Lloyd. Og þetta er CS50.