[Music kucheza] SPIKA: zote haki. Basi hebu majadiliano juu ya lingine Jambo hiyo ni aina ya pekee ya C, ambayo ni aina data na vigezo. Wakati mimi kusema kipekee kwa C, mimi kwa kweli maana tu katika mazingira ya, kama tumekuwa programu kwa kweli kwa muda mrefu, wameweza pengine si kazi na aina ya data kama umetumia kisasa Programu lugha. Lugha ya kisasa kama PHP na JavaScript, ambayo tutaweza pia kuona kidogo baadaye katika shaka, wewe si kweli kuwa bayana Aina ya data ya kutofautiana wakati matumizi yake. Wewe tu kutangaza yake na kuanza kutumia. Kama ni integer, ni kujua ni integer. Kama ni tabia, ni anajua ni tabia. Kama ni neno, anajua ni kamba, kinachojulikana. Lakini katika C, ambayo ni Lugha wakubwa, tunahitaji bayana data aina ya kila kutofautiana kuwa tunajenga mara ya kwanza kwamba sisi kutumia kwamba kutofautiana. Hivyo C kuja na baadhi ya kujengwa katika aina ya data. Na hebu kupata ukoo na baadhi ya wale. Na kisha baadaye tutaweza pia kuzungumza kidogo kuhusu baadhi ya aina ya data kwamba tumekuwa yameandikwa kwa ajili yenu, hivyo unaweza kuzitumia katika CS50. Kwanza ni int. Int aina data ni kutumika kwa vigezo ambayo kuhifadhi maadili integer. Hivyo 1, 2, 3, hasi 1, 2, 3, na kadhalika. Integers, ambayo ni kitu wewe wanapaswa kukumbuka kwa jaribio, Daima kuchukua ka nne ya kumbukumbu, ambayo ni 32 bits. Kuna vipande nane katika Byte. Hivyo hii ina maana kuwa idadi kubwa ya maadili kwamba integer wanaweza kuhifadhi ni mdogo na kile inaweza kufaa ndani ya 32 bits thamani ya habari. Sasa kama ni zamu nje, ilikuwa muda mrefu uliopita aliamua kwamba tunataka wameigawanya kuwa idadi kubwa ya bits 32 ndani ya integers hasi na integers chanya, kila mmoja alipata nusu ya mbalimbali. Hivyo mbalimbali ya maadili kwamba sisi kuwakilisha na integer mbalimbali kutoka hasi 2 madarakani tarehe 31 hadi 2 kwa nguvu 31 bala 1, kusababisha wewe pia haja doa kwa 0. Hivyo kimsingi nusu ya maadili iwezekanavyo unaweza fit katika int ni hasi, na nusu ni mazuri. Na takribani hapa, hii ni kuhusu hasi Bilioni 2 kwa kuhusu chanya bilioni 2. Kutoa au kuchukua wanandoa milioni mia. Hivyo kwamba ni nini unaweza fit katika integer kutofautiana. Sasa sisi pia awe na kitu aitwaye integer unsigned. Sasa ints unsigned si tofauti aina ya kutofautiana. Badala yake, unsigned ni kile kinachoitwa kufuzu. Ni modifies data aina ya integer kidogo. Na katika kesi hii, ni nini unsigned means-- na unaweza pia kutumia unsigned aina nyingine data, integer si moja tu. Nini ufanisi gani ni mara mbili mbalimbali chanya ya maadili kuwa integer wanaweza kuchukua juu ya saa gharama ya tena kuruhusu wewe kuchukua maadili hasi. Hivyo kama una idadi ambayo unajua kupata juu ya bilioni 2 lakini chini ya bilioni 4, kwa example-- ambayo ni 2 kwa 32 power-- unaweza kutaka kutumia int unsigned kama wewe kujua thamani yako kamwe kuwa hasi. Utasikia mara kwa mara na kutumika kwa ajili ya vigezo unsigned katika CS50, ambayo ni kwa nini mimi kutaja hapa. Lakini tena, mbalimbali ya maadili kwamba wanaweza kuwakilisha kwa integer unsigned kama t integer mara kwa mara, ni 0 kwa 2 hadi 32 nguvu bala 1, au takriban 0 na bilioni 4. Hivyo wameweza ufanisi mara mbili mbalimbali chanya kwamba unaweza fit, lakini wameweza wamekata zote maadili hasi. Sasa kama kando, unsigned si tu kufuzu tuweze kuona kwa data kutofautiana aina. Pia kuna mambo kuitwa muda mfupi na muda na const. Const tutaona kidogo kidogo baadaye katika shaka. Muda mfupi na muda, sisi pengine si. Lakini tu kujua kwamba kuna ni kufuzu mengine. Unsigned si moja tu. Lakini ni moja tu tuko kwenda kuzungumza kuhusu hivi sasa. Hivyo sawa. Hivyo tumekuwa kufunikwa integers. Nini hapo? Chars. Hivyo chars hutumiwa kwa vigezo kwamba mapenzi kuhifadhi wahusika moja. Char ni mfupi kwa tabia. Na wakati mwingine unaweza kusikia Watu kutamka hivyo kama gari. Hivyo wahusika daima kuchukua moja Byte ya kumbukumbu, ambayo ni vipande tu 8. Hivyo hii ina maana kwamba wanaweza tu walionao maadili katika aina mbalimbali ya hasi 2 madarakani saba, au 128 hasi, 2 madarakani 7 bala 1, au 127. Shukrani kwa ASCII, ilikuwa muda mrefu uliopita aliamua njia ramani wale idadi chanya kutoka 0-127 kwa wahusika mbalimbali kwamba yote yapo kwenye keyboard zetu. Hivyo kama tutaweza kuona baadaye katika Bila shaka, na wewe utakuwa pengine kuja kukariri katika baadhi uhakika, mji mkuu wa A, kwa example-- mji mkuu tabia A-- ramani ya idadi 65. Na sababu ya kuwa ni kwa sababu hiyo ni nini ni alipewa na kiwango cha ASCII. Lowercase A ni 97. Tabia 0 kwa wakati kweli aina ya tabia, si anayewakilisha idadi sifuri, ni 48. Itabidi kujifunza wanandoa ya hizi kama wewe kwenda. Na wewe utakuwa shaka kuja haja nao kidogo baadaye katika CS50. Kuu ya pili data aina ni yaliyo idadi uhakika. Hivyo yaliyo idadi hatua ni Pia inajulikana kama idadi halisi. Wao ni kimsingi namba ambazo kuwa alisema hatua ndani yao. Yaliyo maadili uhakika kama integers ni pia zilizomo ndani ya 4 ka ya kumbukumbu. Sasa hakuna chati hapa. Hakuna mstari idadi, kwa sababu kuelezea aina mbalimbali ya kuelea si hasa wazi au Intuitive. Inatosha kusema wewe kuwa 32 bits kufanya kazi pamoja. Na kama una idadi kama pi, ambayo ina integer sehemu 3, na yaliyo hatua sehemu, au sehemu alisema 0.14159, na kadhalika, unahitaji kuwa uwezo wa kuwakilisha zote wa hili integer sehemu na sehemu alisema. Basi je, unafikiri kwamba inaweza kumaanisha? Jambo moja ni kwamba kama alisema sehemu anapata tena na tena, kama nina kubwa sana sehemu integer, nipate si kuwa na uwezo wa kuwa kama sahihi na sehemu alisema. Na kwamba ni kweli kiwango cha juu ya kuelea. Ikifungwa na tatizo usahihi. Sisi tu bits 32 kwa kazi na, ili tuweze tu kuwa hivyo sahihi na decimal yetu sehemu. Hatuwezi inge alisema sehemu sahihi kwa tarakimu 100 au 200, kwa sababu sisi tu 32 bits kufanya kazi pamoja. Hivyo hiyo ni kiwango cha juu ya kuelea. Sasa kwa bahati nzuri kuna aina nyingine inayoitwa data mara mbili, ambayo kwa kiasi fulani inahusika na tatizo hili. Mara mbili, kama ikifungwa, pia kutumika kwa kuhifadhi idadi halisi, au hatua yaliyo maadili. Tofauti ni kwamba DOUBLES ni usahihi mara mbili. Wanaweza fit vipande 64 ya data, au ka nane. Hiyo ina maana gani? Vizuri, ina maana tunaweza kuwa mengi zaidi sahihi na decimal uhakika. Badala ya kuwa na pi hadi saba maeneo labda, kwa kuelea, tunaweza labda wawe nao maeneo 30. Kama hiyo muhimu, unaweza kutaka kutumia mara mbili badala ya kuelea. Kimsingi, kama wewe ni kazi juu ya kitu chochote ambapo kuwa kweli kwa muda mrefu nafasi alisema na mengi ya usahihi ni muhimu, pengine unataka kutumia overfloat mbili. Sasa kwa zaidi ya kazi yako katika CS50, kuelea lazima inatosha. Lakini tunajua kwamba mara mbili zipo kama njia ya kiasi fulani kukabiliana na usahihi Tatizo kwa kutoa ziada 32 bits kufanya kazi na kwa namba yako. Sasa hii si aina data. Hii ni aina. Na ni kuitwa utupu. Na mimi nina kuzungumza kuhusu suala hilo hapa kwa sababu tumekuwa pengine kuonekana ni mara chache tayari katika CS50. Na unaweza kuwa anashangaa nini ni yote juu. Hivyo utupu ni aina. Ni gani zipo. Lakini siyo aina data. Hatuwezi kuunda kutofautiana wa aina utupu na kuwapa thamani yake. Lakini kazi, kwa mfano, unaweza kuwa na aina batili kurudi. Kimsingi, kama unaweza kuona kazi ambayo ina aina batili kurudi, ina maana haina kurudi thamani. Je, unaweza kufikiria kawaida kazi ambayo tumekuwa kutumika hadi sasa katika CS50 kwamba haina kurudi thamani? Printf ni moja. Printf haina kweli kurudi kitu chochote na wewe. Prints kitu cha screen, na ni kimsingi athari upande wa nini printf gani. Lakini haina kukupa thamani ya nyuma. Huwezi kukamata na kuhifadhi matokeo hivyo katika baadhi ya kutofautiana kuitumia baadaye. Ni tu Prints kitu cha screen na wewe ni kosa. Hivyo tunasema kwamba printf ni batili kazi. Kuirudisha chochote. Mzunguko orodha ya kazi inaweza pia kuwa batili. Na umefanya pia kuonekana kwamba kidogo kabisa katika CS50 pia. Int kuu utupu. Je, hiyo kuwapigia kengele? Kimsingi nini maana ni kwamba kuu haina kuchukua vigezo yoyote. Kuna hoja hakuna kwamba kupata kupita katika kuu. Sasa baadaye tutaona kuwa kuna njia ya kupita hoja ndani ya kuu, lakini hadi sasa nini tumekuwa kuonekana ni int kuu utupu. Kuu tu haina kuchukua hoja yoyote. Na hivyo sisi bayana kwamba kwa kusema utupu. Sisi ni kuwa tu sana wazi kuhusu ukweli kuwa haina kuchukua hoja yoyote. Hivyo kwa sasa, inatosha kusema kwamba kimsingi ni batili lazima tu kutumika kama placeholder kwa wewe kama kufikiri kuhusu kama si kitu. Siyo kweli kufanya kitu chochote. Hakuna kurudi thamani hapa. Hakuna vigezo hapa. Ni batili. Ni kidogo ngumu zaidi kuliko hiyo. Lakini hii lazima inatosha kwa sehemu bora ya kozi. Na hopefully sasa una kidogo kidogo zaidi ya dhana ya nini utupu ni. Basi hizo aina tano utasikia kukutana kwamba ni kujengwa katika kwa C. Lakini katika CS50 sisi pia kuwa maktaba. CS50.h, ambayo unaweza ni pamoja na. Na ambayo itatoa na aina mbili za ziada kwamba pengine utasikia kuwa na uwezo kwa matumizi ya kazi yako, au tu kufanya kazi kwa ujumla programu. Ya kwanza ya haya ni bool. Hivyo data Boolean aina, bool, ni kutumika kwa vigezo kwamba mapenzi kuhifadhi thamani Boolean. Kama wameweza milele kusikia muda huu kabla, wewe wapate kujua ya kuwa Boolean thamani ya uwezo wa pekee kuikopesha maadili mawili tofauti tofauti. Kweli na uongo. Sasa hii inaonekana pretty msingi, sawa? Ni aina ya mshangao kwamba hii haipo katika C kama ni kujengwa katika. Na katika lugha nyingi za kisasa, bila shaka, Booleans ni kiwango cha aina data chaguo-msingi. Lakini katika C, wao ni kweli si. Lakini tumeunda ni kwa ajili yenu. Hivyo kama wewe milele haja ya kuunda kutofautiana ambao ni aina bool, tu kuwa na uhakika wa CS50.h # ni pamoja na mwanzoni mwa mpango wako, na wewe utakuwa na uwezo wa kujenga vigezo vya aina bool. Kama kusahau # ni pamoja na CS50.h, na kuanza kutumia Boolean-aina vigezo, unaweza kukutana baadhi ya matatizo wakati wewe ni kuandaa programu yako. Hivyo tu kuwa juu ya Lookout kwa ajili hiyo. Na labda unaweza tu kurekebisha matatizo na chupa ikiwa ni pamoja na CS50.h. Nyingine kubwa data aina kwamba sisi kutoa kwa ajili yenu katika maktaba CS50 ni kamba. Kwa hiyo kile ni kamba? Masharti ni kweli maneno tu. Wao ni makusanyo ya wahusika. Wao ni maneno. Wao ni hukumu. Wao ni aya. Inaweza kuwa vitabu nzima, hata. Mfupi sana kwa muda mrefu sana mfululizo wa wahusika. Kama unahitaji kutumia masharti, Kwa mfano, kuhifadhi neno, tu kuwa na uhakika wa ni pamoja na CS50.h mwanzoni mwa mpango wako hivyo unaweza kutumia aina kamba. Na kisha unaweza kuunda vigezo aina ambao ni data kamba. Sasa baadaye katika shaka, tutaweza pia kuona kwamba hiyo ni si hadithi nzima, aidha. Tutaweza kukutana mambo aitwaye miundo, ambayo itawawezesha kundi gani inaweza kuwa na integer na kamba katika kitengo moja. Na tunaweza kutumia kwamba kwa baadhi lengo, ambayo huenda kuja katika Handy baadaye katika shaka. Na tutaweza pia kujifunza kuhusu aina inavyoelezwa, ambayo itawawezesha kujenga data zako aina mwenyewe. Hatuna haja ya kuwa na wasiwasi juu ya hilo kwa sasa. Lakini tu kujua kwamba hiyo ni kitu juu ya upeo wa macho, kwamba kuna mengi zaidi ya yote hii Aina ya neno kuliko mimi nawaambia tu sasa. Hivyo sasa kwamba tumejifunza kidogo kuhusu data za msingi aina na aina CS50 data, hebu majadiliano kuhusu jinsi ya kufanya kazi na vigezo na kujenga yao kwa kutumia hizi aina ya data katika mipango yetu. Kama unataka kujenga kutofautiana, wote unahitaji kufanya ni mambo mawili. Kwanza, unahitaji kuwapa aina. Jambo la pili unahitaji kufanya ni kuwapa jina. Mara baada ya umefanya kosa hilo na kofi semicolon mwishoni mwa mstari huo, umeunda kutofautiana. Hivyo hapa ni mifano miwili. Int idadi; barua char ;. Nimefanya nini hapa? Nimekuwa kuundwa vigezo mbili. Kwanza, kutofautiana ya jina ni idadi. Na idadi ni uwezo wa kufanya integer aina maadili, kwa sababu aina yake ni int. Barua ni mwingine kutofautiana kwamba wanaweza kushikilia wahusika kwa sababu aina yake data ni char. Pretty moja kwa moja, sawa? Kama wewe mwenyewe kupata katika hali ambapo unahitaji kujenga nyingi vigezo vya aina moja, wewe tu haja ya kutaja Aina ya jina moja. Kisha orodha tu vigezo kama wengi ya aina hiyo kama unahitaji. Hivyo mimi naweza kwa mfano, hapa katika mstari huu wa tatu wa kificho, kusema int urefu ;, mstari mpya. Int upana ;. Na kwamba ingekuwa kazi pia. Ningependa bado kupata vigezo mbili inaitwa urefu na upana, ambayo kila mmoja ni integer. Lakini mimi nina kuruhusiwa, mambo ya C syntax, kuimarisha ndani line moja. Int urefu, upana; Ni kitu kimoja. Nimekuwa kuundwa vigezo mbili, moja inaitwa urefu mtu mmoja aitwaye upana, wote wawili ambao wana uwezo wa kufanya integer aina maadili. Vile vile hapa, siwezi kujenga tatu yaliyo maadili uhakika kwa mara moja. Siwezi labda kuunda kutofautiana aitwaye mraba mzizi wa 2-- ambayo pengine hatimaye kushikilia point-- yaliyo kuwa uwakilishi wa mraba mzizi wa 2-- mraba mizizi ya 3, na pi. Mimi wangefanya hii juu ya mistari tatu tofauti. Kuelea, mraba mzizi 2; Kuelea mraba mizizi 3; kuelea pi; na kwamba ingekuwa kazi pia. Lakini tena, naweza tu kuimarisha huu katika line moja ya kanuni. Hufanya mambo kidogo mfupi, si kama clunky. Sasa kwa ujumla, ni kubuni nzuri ya tu kutangaza kutofautiana wakati unahitaji kuwa. Na tutaweza kuongea kidogo kidogo zaidi kuhusu kwamba baadaye katika shaka wakati sisi kujadili upeo. Hivyo si lazima haja ya kujenga wote wa vigezo yako mwanzoni mwa mpango, ambayo baadhi ya watu wanaweza kuwa amefanya siku za nyuma, au kwa hakika kawaida sana coding mazoezi miaka mingi iliyopita wakati wa kufanya kazi na C. Wewe nguvu tu unataka kujenga kutofautiana haki wakati unahitaji yake. Sawa. Hivyo tumeunda vigezo. Je, sisi matumizi yao? Baada ya sisi kutangaza kutofautiana, hatuna haja kutaja aina data ya kwamba kutofautiana tena. Kwa kweli, kama wewe kufanya hivyo, waweza kuishia na baadhi ya matokeo weird kwamba tutaweza aina ya Gloss juu kwa sasa. Lakini inatosha kusema, mambo weird ni kwenda kuanza kinachotokea kama wewe inadvertently tena kutangaza vigezo kwa jina moja tena na tena. Hivyo hapa nina mistari minne ya kanuni. Na mimi kuwa wanandoa wa maoni huko kuonyesha tu nini kinatokea kwenye kila mstari tu kusaidia kupata uliojengwa katika nini kinaendelea. Hivyo int idadi ;. Ninyi kuona kwamba hapo awali. Hiyo ni tamko kutofautiana. Nimekuwa sasa umba kutofautiana kuitwa idadi hiyo uwezo wa kufanya maadili integer-aina. Nimekuwa amekiri kuwa ni. Mstari unaofuata mimi nina kumshirikisha thamani ya idadi. Idadi sawa na 17. Nini kinatokea huko? Mimi nina kuweka namba 17 ndani ya kwamba kutofautiana. Hivyo kama mimi milele kisha magazeti nje nini yaliyomo ya idadi ni baadaye, wao itabidi kuniambia ni 17. Hivyo nimekuwa alitangaza kutofautiana, na kisha nimekuwa kupewa yake. Tunaweza kurudia utaratibu tena kwa char barua ;. Hiyo ni tamko. Barua ni sawa na mji mkuu H. Hiyo ni kazi. Pretty moja kwa moja, pia. Sasa mchakato huu nguvu wanaonekana aina ya silly. Kwa nini tunafanya hivi katika mistari miwili ya kificho? Je, kuna njia bora ya kufanya hivyo? Kwa kweli, kuna. Wakati mwingine unaweza kuona hii inaitwa initialization. Ni wakati kutangaza kutofautiana na kuwapa thamani kwa wakati mmoja. Hii ni kweli pretty jambo la kawaida kufanya. Wakati kujenga kutofautiana, kwa kawaida nataka kuwa na baadhi ya thamani ya msingi. Hata kama ni 0 au kitu. Wewe tu wewe kuwapa thamani. Unaweza initialize kutofautiana. Int idadi sawa na 17 ni sawa na kwanza mistari miwili ya kificho up hapo juu. Char barua sawa na h ni sawa na tatu na cha nne mstari wa kanuni juu. Takeaway muhimu zaidi hapa wakati sisi ni kutangaza na kumshirikisha vigezo ni baada tumekuwa amekiri kuwa ni, ilani Mimi si kutumia aina data tena. Sisemi int idadi sawa na 17 juu ya mstari wa pili wa kanuni, kwa mfano. Mimi tu kusema idadi ni sawa na 17. Tena, re-kutangaza variable baada ya umefanya tayari alitangaza inaweza kusababisha kwa baadhi matokeo weird. Hivyo tu kuwa makini ya kwamba. Mimi nina Doug Lloyd. Na hii ni CS50.