1 00:00:00,000 --> 00:00:02,350 >> [Music kucheza] 2 00:00:02,350 --> 00:00:05,444 3 00:00:05,444 --> 00:00:06,360 DOUG LLOYD: zote haki. 4 00:00:06,360 --> 00:00:07,770 Aina ya mada ajabu, sawa? 5 00:00:07,770 --> 00:00:09,050 Idadi uchawi. 6 00:00:09,050 --> 00:00:12,012 Nini Doe yeye maana wakati yeye ni kuzungumza juu ya idadi uchawi? 7 00:00:12,012 --> 00:00:14,220 Naam, baadhi ya mipango kwamba tumekuwa yaliyoandikwa katika CS50 8 00:00:14,220 --> 00:00:16,660 hadi sasa wamekuwa na baadhi weird idadi aina ya kutupwa ndani yao. 9 00:00:16,660 --> 00:00:19,680 Labda kwa sababu za hatufanyi kabisa kuelewa hivi sasa. 10 00:00:19,680 --> 00:00:23,950 Kwa mfano, katika Mario tatizo, sisi ulimalizika urefu wa piramidi katika 23. 11 00:00:23,950 --> 00:00:26,880 Sisi waziwazi alisema wewe hawezi kwenda juu kuliko 23. 12 00:00:26,880 --> 00:00:28,702 >> Lakini ni nini 23 ina maana gani? 13 00:00:28,702 --> 00:00:30,410 Naam, kama wewe kusoma spec kwa makini, 14 00:00:30,410 --> 00:00:32,493 aliyoiona kwamba sababu sisi ulimalizika ni katika 23 15 00:00:32,493 --> 00:00:36,160 ni kwa sababu urefu kiwango cha ya dirisha terminal ni 24. 16 00:00:36,160 --> 00:00:38,860 Na hivyo kama tuna piramidi kuwa mrefu kuliko kwamba, 17 00:00:38,860 --> 00:00:41,290 inaweza kufanya jambo hili weird ambapo ni anaendesha mbali screen. 18 00:00:41,290 --> 00:00:45,140 Na unajua, ni nini Hiyo ina maana katika mazingira, haki? 19 00:00:45,140 --> 00:00:48,880 >> Ndio maana ya 23 mara moja dhahiri kwa mtu ambaye anaangalia mpango wako 20 00:00:48,880 --> 00:00:51,550 na labda ina tofauti ukubwa terminal dirisha? 21 00:00:51,550 --> 00:00:52,330 Pengine si. 22 00:00:52,330 --> 00:00:53,080 Inaonekana kama, Sawa. 23 00:00:53,080 --> 00:00:55,005 Naam, kwa nini ni tu chini ya 23? 24 00:00:55,005 --> 00:00:56,880 Kwa ujumla, ni aina ya tabia mbaya kweli 25 00:00:56,880 --> 00:00:58,940 kuandika constants katika kanuni yako. 26 00:00:58,940 --> 00:01:02,190 Kwa kufanya hivyo, wakati wewe kweli kufanya kuandika mara kwa mara katika kanuni yako, 27 00:01:02,190 --> 00:01:05,630 ni wakati mwingine hujulikana kama kutumia idadi uchawi, ambayo ni kitu 28 00:01:05,630 --> 00:01:08,030 sisi ujumla wanataka kujaribu na kuepuka. 29 00:01:08,030 --> 00:01:12,830 >> Kwa mfano, hebu tuangalie katika hafla hii rahisi hapa. 30 00:01:12,830 --> 00:01:15,726 Ni wazi hakuna data aina katika C aitwaye kadi au staha. 31 00:01:15,726 --> 00:01:16,600 Hivyo tu kuzaa na mimi. 32 00:01:16,600 --> 00:01:18,910 Ni kidogo ya pseudocode mchanganyiko katika hapa. 33 00:01:18,910 --> 00:01:21,050 Hii ni kazi kuitwa kukabiliana kadi ambayo inaonekana 34 00:01:21,050 --> 00:01:26,570 inachukua staha kama parameter yake, na mapenzi pato kwangu kadi moja. 35 00:01:26,570 --> 00:01:30,990 >> Na mimi nina kufanya kitu hapa ambapo mimi na kitanzi kwamba anaendesha 0-52, 36 00:01:30,990 --> 00:01:33,394 na mimi kukabiliana kadi. 37 00:01:33,394 --> 00:01:35,310 Naam, sisi tumepewa uchawi idadi katika hapa, hivi. 38 00:01:35,310 --> 00:01:38,790 Je, unaweza kuona nini idadi uchawi ni? 39 00:01:38,790 --> 00:01:42,280 Au muhimu zaidi, je, kuona tatizo ni nini hapa? 40 00:01:42,280 --> 00:01:44,310 Hasa kama hii ni kazi moja tu 41 00:01:44,310 --> 00:01:48,030 katika faili yake mwenyewe katika folder kwamba ina 42 00:01:48,030 --> 00:01:49,970 rundo la tofauti mafaili, ambayo kila mmoja 43 00:01:49,970 --> 00:01:51,670 anafanya jambo lingine karata. 44 00:01:51,670 --> 00:01:57,310 Labda ni shuffles yao, au inahusika mkono kadi tano badala ya kadi moja. 45 00:01:57,310 --> 00:01:59,420 >> Je, unaweza kuona nini tatizo inaweza kuwa hapa? 46 00:01:59,420 --> 00:02:03,220 Je, unaweza kuona idadi uchawi Nimekuwa hudungwa katika kanuni? 47 00:02:03,220 --> 00:02:04,390 Ni 52, haki. 48 00:02:04,390 --> 00:02:06,440 >> Kama, shirikishi pengine kujua, sawa. 49 00:02:06,440 --> 00:02:09,740 Kama staha kiwango cha kadi ina kadi 52. 50 00:02:09,740 --> 00:02:12,570 Lakini katika mpango wetu, ni tu aina ya yaliyo karibu katika huko. 51 00:02:12,570 --> 00:02:15,280 Ni kama kwa ghafla kuna 52. 52 00:02:15,280 --> 00:02:18,290 >> Moja ya njia ya kutatua hili Tatizo ni kufanya hivyo. 53 00:02:18,290 --> 00:02:22,724 Tuko wazi sana sasa wito nje ukubwa staha kama 52. 54 00:02:22,724 --> 00:02:25,390 Ni anatoa ni Intuitive zaidi kidogo maana wakati katika kwa kitanzi 55 00:02:25,390 --> 00:02:28,650 baadaye sisi basi sema, i ni chini ya staha ukubwa. 56 00:02:28,650 --> 00:02:32,666 Ni tu inaonekana bora kuliko kusema 52. 57 00:02:32,666 --> 00:02:34,290 Sasa hii haina kweli kurekebisha tatizo. 58 00:02:34,290 --> 00:02:38,460 Haina kutoa baadhi ya ishara maana kwa mara kwa mara. 59 00:02:38,460 --> 00:02:40,820 Lakini haina aina ya kweli kuanzisha tatizo jingine 60 00:02:40,820 --> 00:02:43,770 kwamba wanaweza kuwa mara moja dhahiri. 61 00:02:43,770 --> 00:02:45,859 Hata kama kutofautiana hii ni alitangaza globally-- 62 00:02:45,859 --> 00:02:47,650 Je, unakumbuka kile ina maana wakati sisi kutangaza 63 00:02:47,650 --> 00:02:50,500 kutofautiana kimataifa dhidi ya ndani ya nchi? 64 00:02:50,500 --> 00:02:53,340 Hata kama sisi kutangaza kutofautiana kimataifa, kile kama kuna 65 00:02:53,340 --> 00:02:55,500 kazi nyingine katika Suite yetu ya kazi 66 00:02:55,500 --> 00:02:59,750 kuwa mpango huo na kadi kudanganywa kuwa inadvertently mabadiliko staha ukubwa, 67 00:02:59,750 --> 00:03:02,727 au ni ongezeko hilo kwa 1 au hupunguza na 1. 68 00:03:02,727 --> 00:03:04,060 Ambayo inaweza Spell shida, sawa? 69 00:03:04,060 --> 00:03:08,261 Hasa kama sisi ni kushughulika na seti kadi ambapo shuffling staha kamili 70 00:03:08,261 --> 00:03:08,760 inahitajika. 71 00:03:08,760 --> 00:03:12,804 Kama staha ukubwa hupungua kwa 1, kwa mfano, 51, 72 00:03:12,804 --> 00:03:14,970 sisi siyo kweli shuffling kadi zote uwezekano. 73 00:03:14,970 --> 00:03:16,500 Sisi ni kuacha moja ya yao nje. 74 00:03:16,500 --> 00:03:21,680 Na thamani kwamba pengine zinaweza kuwa alikadiria au kunyonywa na muigizaji mbaya. 75 00:03:21,680 --> 00:03:24,920 >> C hutoa kile kinachoitwa preprocessor agizo, ambayo 76 00:03:24,920 --> 00:03:27,764 Pia inaitwa uchumi mkuu kwa kujenga constants ya mfano. 77 00:03:27,764 --> 00:03:30,180 Na kwa kweli, wameweza tayari kuonekana preprocessor agizo, 78 00:03:30,180 --> 00:03:32,916 hata kama wewe si habari hiyo aitwaye kwamba kwa pamoja na #. 79 00:03:32,916 --> 00:03:37,150 Ni mfano mwingine wa uchumi mkuu au preprocessor agizo. 80 00:03:37,150 --> 00:03:41,290 >> Njia ya kujenga constants ya mfano, au kutoa jina kwa mara kwa mara 81 00:03:41,290 --> 00:03:43,740 hivyo kwamba ina zaidi maana, ni kama ifuatavyo. 82 00:03:43,740 --> 00:03:47,030 #define, jina, uingizwaji. 83 00:03:47,030 --> 00:03:49,140 Kweli ni muhimu kando hapa kweli haraka. 84 00:03:49,140 --> 00:03:54,180 Je, si kuweka semicolon katika Mwishoni mwa # amefafanua yako. 85 00:03:54,180 --> 00:03:57,310 Hivyo ni # define, jina, uingizwaji. 86 00:03:57,310 --> 00:03:59,540 >> Wakati mpango wako ni ulioandaliwa, nini hasa kinatokea 87 00:03:59,540 --> 00:04:01,740 ni mkusanyaji kama kwenda kupitia kanuni yako 88 00:04:01,740 --> 00:04:06,770 na badala kila mfano wa neno "jina" na chochote 89 00:04:06,770 --> 00:04:08,860 kuweka kama badala. 90 00:04:08,860 --> 00:04:13,060 Kama mfano, ikiwa ni pamoja na # ni aina ya sawa na kuiga na pasting, 91 00:04:13,060 --> 00:04:15,700 kisha # define ni aina ya sawa na kupata na kuchukua nafasi, 92 00:04:15,700 --> 00:04:19,180 kama wameweza milele kutumika kipengele kwamba katika neno usindikaji mpango, kwa mfano. 93 00:04:19,180 --> 00:04:26,345 >> Hivyo kwa mfano, kama mimi #define pi kama 3.14159265, 94 00:04:26,345 --> 00:04:28,720 kama wewe ni bora hesabu kutega na ghafla 95 00:04:28,720 --> 00:04:31,640 ona 3.14159265 kuruka kuzunguka katika kanuni yako, 96 00:04:31,640 --> 00:04:33,517 pengine kujua ni kuzungumza juu pi. 97 00:04:33,517 --> 00:04:35,850 Lakini labda tunaweza kuwapa kidogo zaidi ya mfano maana. 98 00:04:35,850 --> 00:04:39,850 Na tunaweza badala kusema # define pi kama kuwa Mouthful ya namba 99 00:04:39,850 --> 00:04:42,110 kwamba mimi si kwenda kuweka kusoma tena na tena. 100 00:04:42,110 --> 00:04:45,560 >> Na nini kitatokea basi katika kukusanya wakati ni wakati mpango huo ni 101 00:04:45,560 --> 00:04:48,530 ulioandaliwa, Jambo la kwanza kwamba kitatokea ni itakuwa kupitia 102 00:04:48,530 --> 00:04:51,520 na itakuwa nafasi kila wakati anaona mji mkuu P, mji mkuu mimi, 103 00:04:51,520 --> 00:04:55,610 kutakuwa na halisi badala yake pamoja na 3.14 na kadhalika, ili uweze 104 00:04:55,610 --> 00:04:58,090 huna aina yake kila muda wakati mpango wako bado 105 00:04:58,090 --> 00:05:00,631 ina utendaji kwamba kutarajia, kwa sababu wewe ni kufanya kazi 106 00:05:00,631 --> 00:05:05,090 na manipulating, kuzidisha, kugawa, chochote ni na pi. 107 00:05:05,090 --> 00:05:08,230 >> Wewe si mdogo kwa hii badala ya namba tu. 108 00:05:08,230 --> 00:05:12,279 Kwa mfano, mimi naweza # define Bila shaka kama kamba CS50. 109 00:05:12,279 --> 00:05:14,070 Katika kesi hiyo, wakati mpango ni ulioandaliwa, 110 00:05:14,070 --> 00:05:16,236 #define watapitia kanuni, kuchukua nafasi ya kila wakati 111 00:05:16,236 --> 00:05:19,900 anaona "bila shaka" kwa kamba CS50. 112 00:05:19,900 --> 00:05:21,720 >> Utagundua hapa pia kwamba mimi mara nyingi 113 00:05:21,720 --> 00:05:26,090 #define wangu wote inavyoelezwa ishara constants, hivyo kusema, 114 00:05:26,090 --> 00:05:28,130 ni siku zote katika mechi zote. 115 00:05:28,130 --> 00:05:28,960 Ni mkataba. 116 00:05:28,960 --> 00:05:30,170 Ni si required. 117 00:05:30,170 --> 00:05:33,900 Sababu kwa ujumla watu watatumia miji mikuu yote wakati wao ni #defining 118 00:05:33,900 --> 00:05:37,590 ni tu kufanya ni kweli wazi kuwa kipengele fulani ya kanuni yangu 119 00:05:37,590 --> 00:05:38,820 ni mara kwa mara defined. 120 00:05:38,820 --> 00:05:43,730 Kama ilikuwa ndogo, inawezekana kwamba inaweza kuwa na kuchanganyikiwa na kutofautiana. 121 00:05:43,730 --> 00:05:46,120 Na kwamba pengine si jambo zuri la kufanya. 122 00:05:46,120 --> 00:05:48,910 >> Hivyo hii hasa ufumbuzi ni bora zaidi 123 00:05:48,910 --> 00:05:50,550 kuliko aidha ya zile za nyuma. 124 00:05:50,550 --> 00:05:59,950 Kama mimi #define kwanza staha ukubwa 52, kisha sasa matumizi yangu ya 52, au staha ukubwa hapa, 125 00:05:59,950 --> 00:06:01,850 ni mengi zaidi Intuitive na mengi salama. 126 00:06:01,850 --> 00:06:03,280 Huwezi kuendesha mara kwa mara. 127 00:06:03,280 --> 00:06:05,259 Huwezi kusema 52 pamoja pamoja. 128 00:06:05,259 --> 00:06:06,800 Hiyo si kwenda kubadilisha kwa 53. 129 00:06:06,800 --> 00:06:09,390 Huwezi kubadili 52 na kitu. 130 00:06:09,390 --> 00:06:12,470 >> Unaweza kubadilisha kutofautiana ambao thamani ni 52, 131 00:06:12,470 --> 00:06:14,870 ambayo ilikuwa kurekebisha kwanza tulikuwa na kabla. 132 00:06:14,870 --> 00:06:17,000 Na unaweza kuongeza kwamba kutofautiana kwa 53. 133 00:06:17,000 --> 00:06:21,100 Lakini huwezi kusema 52 pamoja pamoja na na kwamba ghafla kugeuka 52 katika 53. 134 00:06:21,100 --> 00:06:23,350 52 ni siku zote 52. 135 00:06:23,350 --> 00:06:28,860 Na hivyo huwezi kubadili inadvertently staha ukubwa hapa kwa kufanyia hayo, 136 00:06:28,860 --> 00:06:29,940 137 00:06:29,940 --> 00:06:32,390 >> Mwingine upande mzuri athari za ingawa hii ni 138 00:06:32,390 --> 00:06:38,310 ambazo ni wewe na ufahamu kwamba si nchi zote duniani 139 00:06:38,310 --> 00:06:40,690 kutumia karata ya ukubwa 52? 140 00:06:40,690 --> 00:06:45,630 Kwa mfano, ni kweli ya kawaida katika Ujerumani kutumia ukubwa staha ya 32, 141 00:06:45,630 --> 00:06:48,020 ambako strip nje baadhi ya chini thamani kadi. 142 00:06:48,020 --> 00:06:50,960 Na katika kesi hii, mimi alitaka bandari Suite yangu 143 00:06:50,960 --> 00:06:55,390 ya kazi ambayo kukabiliana na kadi kudanganywa kwa Ujerumani. 144 00:06:55,390 --> 00:06:59,440 Mimi naweza kwa mara ya kwanza sisi ilionyesha, una kwenda na badala 145 00:06:59,440 --> 00:07:03,570 matukio yote ya 52 katika kanuni wangu na 32. 146 00:07:03,570 --> 00:07:07,940 >> Lakini hapa, kama mimi #define staha ukubwa kama 32 katika sana juu ya kanuni yangu, 147 00:07:07,940 --> 00:07:11,730 kama mimi haja ya mabadiliko hayo, siwezi tu kwenda na mabadiliko hayo jambo moja. 148 00:07:11,730 --> 00:07:15,010 Recompile kificho wangu, na yote ya ghafla ni kueneza kupitia. 149 00:07:15,010 --> 00:07:18,850 Kwa kweli, tunaweza kubadili staha ukubwa kwa thamani yoyote tunataka. 150 00:07:18,850 --> 00:07:22,500 >> Naweza maslahi yenu katika mchezo wa staha ukubwa Pickup? 151 00:07:22,500 --> 00:07:23,430 >> Mimi nina Doug Lloyd. 152 00:07:23,430 --> 00:07:25,840 Na hii ni CS50. 153 00:07:25,840 --> 00:07:27,772