[Music kucheza] DOUG LLOYD: zote haki. Aina ya mada ajabu, sawa? Idadi uchawi. Nini Doe yeye maana wakati yeye ni kuzungumza juu ya idadi uchawi? Naam, baadhi ya mipango kwamba tumekuwa yaliyoandikwa katika CS50 hadi sasa wamekuwa na baadhi weird idadi aina ya kutupwa ndani yao. Labda kwa sababu za hatufanyi kabisa kuelewa hivi sasa. Kwa mfano, katika Mario tatizo, sisi ulimalizika urefu wa piramidi katika 23. Sisi waziwazi alisema wewe hawezi kwenda juu kuliko 23. Lakini ni nini 23 ina maana gani? Naam, kama wewe kusoma spec kwa makini, aliyoiona kwamba sababu sisi ulimalizika ni katika 23 ni kwa sababu urefu kiwango cha ya dirisha terminal ni 24. Na hivyo kama tuna piramidi kuwa mrefu kuliko kwamba, inaweza kufanya jambo hili weird ambapo ni anaendesha mbali screen. Na unajua, ni nini Hiyo ina maana katika mazingira, haki? Ndio maana ya 23 mara moja dhahiri kwa mtu ambaye anaangalia mpango wako na labda ina tofauti ukubwa terminal dirisha? Pengine si. Inaonekana kama, Sawa. Naam, kwa nini ni tu chini ya 23? Kwa ujumla, ni aina ya tabia mbaya kweli kuandika constants katika kanuni yako. Kwa kufanya hivyo, wakati wewe kweli kufanya kuandika mara kwa mara katika kanuni yako, ni wakati mwingine hujulikana kama kutumia idadi uchawi, ambayo ni kitu sisi ujumla wanataka kujaribu na kuepuka. Kwa mfano, hebu tuangalie katika hafla hii rahisi hapa. Ni wazi hakuna data aina katika C aitwaye kadi au staha. Hivyo tu kuzaa na mimi. Ni kidogo ya pseudocode mchanganyiko katika hapa. Hii ni kazi kuitwa kukabiliana kadi ambayo inaonekana inachukua staha kama parameter yake, na mapenzi pato kwangu kadi moja. Na mimi nina kufanya kitu hapa ambapo mimi na kitanzi kwamba anaendesha 0-52, na mimi kukabiliana kadi. Naam, sisi tumepewa uchawi idadi katika hapa, hivi. Je, unaweza kuona nini idadi uchawi ni? Au muhimu zaidi, je, kuona tatizo ni nini hapa? Hasa kama hii ni kazi moja tu katika faili yake mwenyewe katika folder kwamba ina rundo la tofauti mafaili, ambayo kila mmoja anafanya jambo lingine karata. Labda ni shuffles yao, au inahusika mkono kadi tano badala ya kadi moja. Je, unaweza kuona nini tatizo inaweza kuwa hapa? Je, unaweza kuona idadi uchawi Nimekuwa hudungwa katika kanuni? Ni 52, haki. Kama, shirikishi pengine kujua, sawa. Kama staha kiwango cha kadi ina kadi 52. Lakini katika mpango wetu, ni tu aina ya yaliyo karibu katika huko. Ni kama kwa ghafla kuna 52. Moja ya njia ya kutatua hili Tatizo ni kufanya hivyo. Tuko wazi sana sasa wito nje ukubwa staha kama 52. Ni anatoa ni Intuitive zaidi kidogo maana wakati katika kwa kitanzi baadaye sisi basi sema, i ni chini ya staha ukubwa. Ni tu inaonekana bora kuliko kusema 52. Sasa hii haina kweli kurekebisha tatizo. Haina kutoa baadhi ya ishara maana kwa mara kwa mara. Lakini haina aina ya kweli kuanzisha tatizo jingine kwamba wanaweza kuwa mara moja dhahiri. Hata kama kutofautiana hii ni alitangaza globally-- Je, unakumbuka kile ina maana wakati sisi kutangaza kutofautiana kimataifa dhidi ya ndani ya nchi? Hata kama sisi kutangaza kutofautiana kimataifa, kile kama kuna kazi nyingine katika Suite yetu ya kazi kuwa mpango huo na kadi kudanganywa kuwa inadvertently mabadiliko staha ukubwa, au ni ongezeko hilo kwa 1 au hupunguza na 1. Ambayo inaweza Spell shida, sawa? Hasa kama sisi ni kushughulika na seti kadi ambapo shuffling staha kamili inahitajika. Kama staha ukubwa hupungua kwa 1, kwa mfano, 51, sisi siyo kweli shuffling kadi zote uwezekano. Sisi ni kuacha moja ya yao nje. Na thamani kwamba pengine zinaweza kuwa alikadiria au kunyonywa na muigizaji mbaya. C hutoa kile kinachoitwa preprocessor agizo, ambayo Pia inaitwa uchumi mkuu kwa kujenga constants ya mfano. Na kwa kweli, wameweza tayari kuonekana preprocessor agizo, hata kama wewe si habari hiyo aitwaye kwamba kwa pamoja na #. Ni mfano mwingine wa uchumi mkuu au preprocessor agizo. Njia ya kujenga constants ya mfano, au kutoa jina kwa mara kwa mara hivyo kwamba ina zaidi maana, ni kama ifuatavyo. #define, jina, uingizwaji. Kweli ni muhimu kando hapa kweli haraka. Je, si kuweka semicolon katika Mwishoni mwa # amefafanua yako. Hivyo ni # define, jina, uingizwaji. Wakati mpango wako ni ulioandaliwa, nini hasa kinatokea ni mkusanyaji kama kwenda kupitia kanuni yako na badala kila mfano wa neno "jina" na chochote kuweka kama badala. Kama mfano, ikiwa ni pamoja na # ni aina ya sawa na kuiga na pasting, kisha # define ni aina ya sawa na kupata na kuchukua nafasi, kama wameweza milele kutumika kipengele kwamba katika neno usindikaji mpango, kwa mfano. Hivyo kwa mfano, kama mimi #define pi kama 3.14159265, kama wewe ni bora hesabu kutega na ghafla ona 3.14159265 kuruka kuzunguka katika kanuni yako, pengine kujua ni kuzungumza juu pi. Lakini labda tunaweza kuwapa kidogo zaidi ya mfano maana. Na tunaweza badala kusema # define pi kama kuwa Mouthful ya namba kwamba mimi si kwenda kuweka kusoma tena na tena. Na nini kitatokea basi katika kukusanya wakati ni wakati mpango huo ni ulioandaliwa, Jambo la kwanza kwamba kitatokea ni itakuwa kupitia na itakuwa nafasi kila wakati anaona mji mkuu P, mji mkuu mimi, kutakuwa na halisi badala yake pamoja na 3.14 na kadhalika, ili uweze huna aina yake kila muda wakati mpango wako bado ina utendaji kwamba kutarajia, kwa sababu wewe ni kufanya kazi na manipulating, kuzidisha, kugawa, chochote ni na pi. Wewe si mdogo kwa hii badala ya namba tu. Kwa mfano, mimi naweza # define Bila shaka kama kamba CS50. Katika kesi hiyo, wakati mpango ni ulioandaliwa, #define watapitia kanuni, kuchukua nafasi ya kila wakati anaona "bila shaka" kwa kamba CS50. Utagundua hapa pia kwamba mimi mara nyingi #define wangu wote inavyoelezwa ishara constants, hivyo kusema, ni siku zote katika mechi zote. Ni mkataba. Ni si required. Sababu kwa ujumla watu watatumia miji mikuu yote wakati wao ni #defining ni tu kufanya ni kweli wazi kuwa kipengele fulani ya kanuni yangu ni mara kwa mara defined. Kama ilikuwa ndogo, inawezekana kwamba inaweza kuwa na kuchanganyikiwa na kutofautiana. Na kwamba pengine si jambo zuri la kufanya. Hivyo hii hasa ufumbuzi ni bora zaidi kuliko aidha ya zile za nyuma. Kama mimi #define kwanza staha ukubwa 52, kisha sasa matumizi yangu ya 52, au staha ukubwa hapa, ni mengi zaidi Intuitive na mengi salama. Huwezi kuendesha mara kwa mara. Huwezi kusema 52 pamoja pamoja. Hiyo si kwenda kubadilisha kwa 53. Huwezi kubadili 52 na kitu. Unaweza kubadilisha kutofautiana ambao thamani ni 52, ambayo ilikuwa kurekebisha kwanza tulikuwa na kabla. Na unaweza kuongeza kwamba kutofautiana kwa 53. Lakini huwezi kusema 52 pamoja pamoja na na kwamba ghafla kugeuka 52 katika 53. 52 ni siku zote 52. Na hivyo huwezi kubadili inadvertently staha ukubwa hapa kwa kufanyia hayo, Mwingine upande mzuri athari za ingawa hii ni ambazo ni wewe na ufahamu kwamba si nchi zote duniani kutumia karata ya ukubwa 52? Kwa mfano, ni kweli ya kawaida katika Ujerumani kutumia ukubwa staha ya 32, ambako strip nje baadhi ya chini thamani kadi. Na katika kesi hii, mimi alitaka bandari Suite yangu ya kazi ambayo kukabiliana na kadi kudanganywa kwa Ujerumani. Mimi naweza kwa mara ya kwanza sisi ilionyesha, una kwenda na badala matukio yote ya 52 katika kanuni wangu na 32. Lakini hapa, kama mimi #define staha ukubwa kama 32 katika sana juu ya kanuni yangu, kama mimi haja ya mabadiliko hayo, siwezi tu kwenda na mabadiliko hayo jambo moja. Recompile kificho wangu, na yote ya ghafla ni kueneza kupitia. Kwa kweli, tunaweza kubadili staha ukubwa kwa thamani yoyote tunataka. Naweza maslahi yenu katika mchezo wa staha ukubwa Pickup? Mimi nina Doug Lloyd. Na hii ni CS50.