1 00:00:00,000 --> 00:00:09,572 2 00:00:09,572 --> 00:00:12,030 Rob BOWDEN: Hi, mimi nina Rob Bowden, na hebu majadiliano juu ya quiz0. 3 00:00:12,030 --> 00:00:13,280 4 00:00:13,280 --> 00:00:14,545 >> Hivyo, swali la kwanza. 5 00:00:14,545 --> 00:00:17,750 Hili ni swali ambapo unahitajika kwa kificho simu 6 00:00:17,750 --> 00:00:21,270 127 katika balbu binary. 7 00:00:21,270 --> 00:00:23,550 Kama alitaka, unaweza kufanya uongofu mara kwa mara 8 00:00:23,550 --> 00:00:25,950 kutoka bi-- au, kutoka alisema kwa binary. 9 00:00:25,950 --> 00:00:28,300 Lakini kwamba pengine ni kwenda kuchukua muda mwingi. 10 00:00:28,300 --> 00:00:31,750 I mean, unaweza kufikiri kwamba, OK, 1 ni huko, 2 ni katika huko, 11 00:00:31,750 --> 00:00:33,650 4 ni katika huko, 8 ni katika huko. 12 00:00:33,650 --> 00:00:39,280 Njia rahisi, 127 ni 128 minus moja. 13 00:00:39,280 --> 00:00:42,013 Kwamba leftmost mwanga bulb ni 128-bit. 14 00:00:42,013 --> 00:00:43,490 15 00:00:43,490 --> 00:00:47,860 Hivyo 127 ni kweli tu wote nyingine balbu mwanga, 16 00:00:47,860 --> 00:00:51,420 tangu kwamba ni leftmost mwanga bulb minus 1. 17 00:00:51,420 --> 00:00:52,800 Hiyo ni kwa swali hilo. 18 00:00:52,800 --> 00:00:54,060 >> Swali moja. 19 00:00:54,060 --> 00:00:56,710 Hivyo, pamoja na 3 bits unaweza kuwakilisha maadili ya 8 tofauti. 20 00:00:56,710 --> 00:01:01,000 Kwa nini, basi, ni 7 kubwa zisizo hasi integer alisema unaweza kuwakilisha? 21 00:01:01,000 --> 00:01:04,050 Naam, kama tunaweza tu kuwakilisha maadili ya 8 tofauti, 22 00:01:04,050 --> 00:01:07,430 basi nini tunakwenda kuwa anayewakilisha ni 0 kupitia 7. 23 00:01:07,430 --> 00:01:08,745 0 inachukua hadi moja ya maadili. 24 00:01:08,745 --> 00:01:09,980 25 00:01:09,980 --> 00:01:11,190 >> Swali mbili. 26 00:01:11,190 --> 00:01:14,610 Na bits n, jinsi wengi tofauti maadili unaweza kuwakilisha? 27 00:01:14,610 --> 00:01:19,080 Hivyo, pamoja na bits n, una 2 maadili inawezekana kwa kila kidogo. 28 00:01:19,080 --> 00:01:22,300 Hivyo tuna 2 iwezekanavyo maadili kwa kidogo kwanza, maadili ya 2 iwezekanavyo 29 00:01:22,300 --> 00:01:24,450 kwa ajili ya pili, 2 inawezekana kwa tatu. 30 00:01:24,450 --> 00:01:28,730 Na hivyo hiyo ni mara 2 2 mara 2, na hatimaye jibu ni 2 kwa n. 31 00:01:28,730 --> 00:01:30,010 32 00:01:30,010 --> 00:01:31,100 >> Swali tatu. 33 00:01:31,100 --> 00:01:33,450 Nini 0x50 katika binary? 34 00:01:33,450 --> 00:01:39,490 Hivyo kukumbuka kwamba hexadecimal ina sana uongofu moja kwa moja kwa binary. 35 00:01:39,490 --> 00:01:43,180 Hivyo hapa, sisi tu haja ya kuangalia 5 na 0 kujitegemea. 36 00:01:43,180 --> 00:01:45,110 Basi nini 5 katika binary? 37 00:01:45,110 --> 00:01:48,400 0101, kwamba ni kidogo 1 na 4 kidogo. 38 00:01:48,400 --> 00:01:49,900 Nini 0 katika binary? 39 00:01:49,900 --> 00:01:50,520 Si gumu. 40 00:01:50,520 --> 00:01:52,180 0000. 41 00:01:52,180 --> 00:01:54,970 Hivyo tu kuziweka pamoja, na hiyo ni idadi kamili katika binary. 42 00:01:54,970 --> 00:01:57,640 01,010,000. 43 00:01:57,640 --> 00:02:00,439 Na kama alitaka unaweza kuchukua mbali kwamba sifuri leftmost. 44 00:02:00,439 --> 00:02:01,105 Ni lisilo na maana. 45 00:02:01,105 --> 00:02:02,920 46 00:02:02,920 --> 00:02:05,733 >> Hivyo basi matumizi mengine, kile ni 0x50 katika alisema? 47 00:02:05,733 --> 00:02:08,649 Kama alitaka, wewe could-- kama wewe ni vizuri zaidi kwa binary, 48 00:02:08,649 --> 00:02:11,340 unaweza kuchukua jibu kwamba binary na kubadilisha kwamba katika alisema. 49 00:02:11,340 --> 00:02:13,870 Au tunaweza kumbuka tu kwamba hexadesimoli. 50 00:02:13,870 --> 00:02:21,140 Hivyo kwamba 0 ni mahali pa 0-th, na 5 ni katika 16 kwa nafasi ya kwanza. 51 00:02:21,140 --> 00:02:25,990 Hivyo hapa, tuna 5 mara 16 kwa kwanza, pamoja 0 mara 16 na sifuri, 52 00:02:25,990 --> 00:02:27,520 ni 80. 53 00:02:27,520 --> 00:02:29,710 Na kama wewe inaonekana katika cheo swali, 54 00:02:29,710 --> 00:02:32,920 ilikuwa CS 80, ambayo ilikuwa ni aina ya ladha kwa jibu la tatizo hili. 55 00:02:32,920 --> 00:02:34,460 56 00:02:34,460 --> 00:02:35,420 >> Swali tano. 57 00:02:35,420 --> 00:02:40,320 Sisi tuna hii script Scratch, ambayo ni kurudia mara 4 siagi jelly. 58 00:02:40,320 --> 00:02:42,800 Hivyo ni jinsi gani sisi sasa kificho kwamba katika C? 59 00:02:42,800 --> 00:02:47,730 Naam, tuna here-- sehemu katika ujasiri ni sehemu tu alikuwa na kutekeleza. 60 00:02:47,730 --> 00:02:51,950 Hivyo tuna kitanzi 4 hiyo looping 4 mara kwa mara, printf-ing siagi ya karanga jelly, 61 00:02:51,950 --> 00:02:53,910 na line mpya kama tatizo anauliza kwa. 62 00:02:53,910 --> 00:02:55,250 63 00:02:55,250 --> 00:02:57,490 >> Swali sita, tatizo jingine Scratch. 64 00:02:57,490 --> 00:03:00,210 Tunaona kwamba sisi ni katika milele kitanzi. 65 00:03:00,210 --> 00:03:05,000 Sisi ni kusema i kutofautiana na kisha incrementing i na 1. 66 00:03:05,000 --> 00:03:09,580 Sasa tunataka kufanya kwamba katika C. Kuna njia nyingi sisi wangefanya hii. 67 00:03:09,580 --> 00:03:12,840 Hapa sisi kilichotokea na kanuni milele kitanzi kama wakati (wa kweli). 68 00:03:12,840 --> 00:03:16,600 Hivyo sisi kutangaza variable i, tu kama tulikuwa na kutofautiana i katika Scratch. 69 00:03:16,600 --> 00:03:21,950 Kutangaza i variable, na hata milele wakati (wa kweli), tunasema kutofautiana i. 70 00:03:21,950 --> 00:03:25,260 Hivyo printf% i-- au unaweza wameweza kutumika% d. 71 00:03:25,260 --> 00:03:27,985 Sisi tunasema kwamba kutofautiana, na basi nyongeza hiyo, i ++. 72 00:03:27,985 --> 00:03:29,560 73 00:03:29,560 --> 00:03:30,830 >> Swali saba. 74 00:03:30,830 --> 00:03:35,560 Sasa tunataka kufanya kitu sawa sana kwa Mario dot c kutokana na tatizo kuweka moja. 75 00:03:35,560 --> 00:03:39,110 Tunataka magazeti hashtags haya, tunataka magazeti tano 76 00:03:39,110 --> 00:03:40,700 na tatu Mstatili wa hashes haya. 77 00:03:40,700 --> 00:03:41,770 78 00:03:41,770 --> 00:03:43,162 Hivyo ni jinsi gani sisi kwenda kufanya hivyo? 79 00:03:43,162 --> 00:03:45,370 Naam, sisi kukupa yote rundo la kificho, na wewe tu 80 00:03:45,370 --> 00:03:47,560 kujaza katika kazi ya magazeti gridi ya taifa. 81 00:03:47,560 --> 00:03:49,540 >> Basi ni nini PrintGrid kuangalia kama? 82 00:03:49,540 --> 00:03:51,480 Vizuri wewe ni zamani upana na urefu. 83 00:03:51,480 --> 00:03:53,520 Hivyo tuna nje 4 kitanzi, kwamba looping 84 00:03:53,520 --> 00:03:57,650 zaidi ya yote ya safu hii gridi ya taifa kwamba tunataka magazeti nje. 85 00:03:57,650 --> 00:04:01,250 Basi tuna baina ya Furushi 4 kitanzi, hiyo ni uchapishaji juu ya kila safu. 86 00:04:01,250 --> 00:04:06,210 Hivyo kwa kila mstari, sisi magazeti kwa kila safu, hash moja. 87 00:04:06,210 --> 00:04:10,045 Kisha mwisho wa safu sisi magazeti single mpya line kwenda kwa mstari inayofuata. 88 00:04:10,045 --> 00:04:11,420 Na kwamba ni kwa ajili ya gridi ya taifa zima. 89 00:04:11,420 --> 00:04:12,810 90 00:04:12,810 --> 00:04:13,675 >> Swali nane. 91 00:04:13,675 --> 00:04:17,170 kazi kama PrintGrid alisema kuwa na athari upande, lakini si kurudi 92 00:04:17,170 --> 00:04:17,670 thamani. 93 00:04:17,670 --> 00:04:19,209 Kueleza tofauti. 94 00:04:19,209 --> 00:04:23,080 Hivyo hii hutegemea you kukumbuka nini athari upande ni. 95 00:04:23,080 --> 00:04:25,180 Vizuri, kurudi value-- tunajua PrintGrid haina 96 00:04:25,180 --> 00:04:28,180 kuwa na thamani ya kurudi, tangu haki hapa inasema utupu. 97 00:04:28,180 --> 00:04:31,150 Hivyo chochote kwamba anarudi utupu haina kweli kurudi kitu chochote. 98 00:04:31,150 --> 00:04:32,200 99 00:04:32,200 --> 00:04:33,620 Hivyo ni nini athari upande? 100 00:04:33,620 --> 00:04:36,620 Vizuri, athari upande ni chochote kwamba aina ya likiendelea 101 00:04:36,620 --> 00:04:39,500 baada ya mwisho ya kazi kwamba ilikuwa si tu akarudi, 102 00:04:39,500 --> 00:04:41,340 na ilikuwa si tu kutoka pembejeo. 103 00:04:41,340 --> 00:04:44,970 >> Hivyo, kwa mfano, tupate kubadili variable kimataifa. 104 00:04:44,970 --> 00:04:46,590 Hiyo itakuwa athari upande. 105 00:04:46,590 --> 00:04:49,000 Katika kesi hii, a upande athari muhimu sana 106 00:04:49,000 --> 00:04:51,070 ni uchapishaji kwa screen. 107 00:04:51,070 --> 00:04:53,110 Hivyo kwamba ni athari upande kwamba PrintGrid ina. 108 00:04:53,110 --> 00:04:54,980 Sisi magazeti hayo kwa screen. 109 00:04:54,980 --> 00:04:56,370 Na unaweza kufikiria kwamba kama athari upande, 110 00:04:56,370 --> 00:04:58,690 tangu kwamba ni kitu ambacho likiendelea baada ya kazi hii ya mwisho. 111 00:04:58,690 --> 00:05:01,481 Hiyo ni kitu nje ya wigo ya kazi hii kwamba hatimaye 112 00:05:01,481 --> 00:05:03,380 ni kuwa iliyopita, yaliyomo ya screen. 113 00:05:03,380 --> 00:05:05,200 114 00:05:05,200 --> 00:05:05,839 >> Swali tisa. 115 00:05:05,839 --> 00:05:07,880 Fikiria mpango chini, ambayo namba line 116 00:05:07,880 --> 00:05:09,740 wamekuwa aliongeza kwa ajili ya majadiliano. 117 00:05:09,740 --> 00:05:13,480 Hivyo katika mpango huu sisi ni tu wito GetString, hifadhi hiyo 118 00:05:13,480 --> 00:05:16,220 katika hii s kutofautiana, na kisha uchapishaji kwamba kutofautiana s. 119 00:05:16,220 --> 00:05:16,720 OK. 120 00:05:16,720 --> 00:05:19,090 Hivyo kueleza kwa nini mstari mmoja ni sasa. 121 00:05:19,090 --> 00:05:20,920 #include CS50 dot h. 122 00:05:20,920 --> 00:05:23,820 Kwa nini tunahitaji kwa #include CS50 dot h? 123 00:05:23,820 --> 00:05:26,180 Vizuri sisi ni wito GetString kazi, 124 00:05:26,180 --> 00:05:28,840 na GetString inaelezwa katika maktaba CS50. 125 00:05:28,840 --> 00:05:31,600 Hivyo kama hatukuwa na #include CS50 dot h, 126 00:05:31,600 --> 00:05:35,760 tunataka kupata kwamba tamko thabiti ya GetString kazi makosa 127 00:05:35,760 --> 00:05:36,840 kutoka compiler. 128 00:05:36,840 --> 00:05:40,110 Hivyo tunahitaji ni pamoja library-- tunahitaji ni pamoja na header faili, 129 00:05:40,110 --> 00:05:42,870 au mwingine compiler si kutambua kwamba GetString lipo. 130 00:05:42,870 --> 00:05:44,380 131 00:05:44,380 --> 00:05:46,140 >> Kueleza kwa nini line mbili ni sasa. 132 00:05:46,140 --> 00:05:47,890 Hivyo kiwango io dot h. 133 00:05:47,890 --> 00:05:50,430 Ni sawa kama tatizo uliopita, 134 00:05:50,430 --> 00:05:53,310 isipokuwa badala ya kushughulika na GetString, sisi ni kuzungumza juu ya printf. 135 00:05:53,310 --> 00:05:56,654 Hivyo kama sisi hakusema tunahitaji ni pamoja na kiwango io dot h, 136 00:05:56,654 --> 00:05:58,820 kisha sisi bila kuwa na uwezo kutumia printf kazi, 137 00:05:58,820 --> 00:06:00,653 kwa sababu compiler bila kujua kuhusu hilo. 138 00:06:00,653 --> 00:06:01,750 139 00:06:01,750 --> 00:06:05,260 >> Why-- nini umuhimu ya utupu katika mstari nne? 140 00:06:05,260 --> 00:06:08,010 Hivyo hapa tuna int kuu (utupu). 141 00:06:08,010 --> 00:06:10,600 Hiyo tu kusema kwamba sisi hawapati line yoyote ya amri 142 00:06:10,600 --> 00:06:12,280 hoja kwa kuu. 143 00:06:12,280 --> 00:06:17,390 Kukumbuka kwamba tunaweza kusema int kuu int argc kamba argv mabano. 144 00:06:17,390 --> 00:06:20,400 Hivyo hapa sisi tu kusema utupu kusema sisi ni kupuuza hoja mstari amri. 145 00:06:20,400 --> 00:06:21,840 146 00:06:21,840 --> 00:06:25,225 >> Kueleza, kwa heshima na kumbukumbu, hasa nini GetString katika mstari anarudi sita. 147 00:06:25,225 --> 00:06:27,040 148 00:06:27,040 --> 00:06:31,640 GetString ni kurudi kuzuia ya kumbukumbu, safu ya wahusika. 149 00:06:31,640 --> 00:06:34,870 Ni kweli kurudi pointer tabia ya kwanza. 150 00:06:34,870 --> 00:06:37,170 Kumbuka kwamba kamba ni nyota Char. 151 00:06:37,170 --> 00:06:41,360 Hivyo s ni pointer kwanza tabia katika chochote kamba ni 152 00:06:41,360 --> 00:06:43,510 kwamba mtumiaji aliingia katika keyboard. 153 00:06:43,510 --> 00:06:47,070 Na kwamba kumbukumbu hutokea kwa kuwa malloced, hivyo kwamba kumbukumbu ni katika lundo. 154 00:06:47,070 --> 00:06:49,080 155 00:06:49,080 --> 00:06:50,450 >> Swali 13. 156 00:06:50,450 --> 00:06:51,960 Fikiria mpango hapa chini. 157 00:06:51,960 --> 00:06:55,579 Hivyo mpango huu wote ni kufanya ni printf-ing 1 kugawanywa na 10. 158 00:06:55,579 --> 00:06:57,370 Hivyo wakati ulioandaliwa na kunyongwa, mpango huu 159 00:06:57,370 --> 00:07:01,170 matokeo 0.0, ingawa 1 kugawanywa na 10 ni 0.1. 160 00:07:01,170 --> 00:07:02,970 Hivyo ni kwa nini 0.0? 161 00:07:02,970 --> 00:07:05,510 Naam, hii ni kwa sababu ya integer mgawanyiko. 162 00:07:05,510 --> 00:07:08,580 Hivyo 1 ni integer, 10 ni integer. 163 00:07:08,580 --> 00:07:11,980 Hivyo 1 kugawanywa na 10, kila kitu ni kutibiwa kama integers, 164 00:07:11,980 --> 00:07:16,380 na katika C, wakati sisi kufanya integer mgawanyiko, sisi butu hatua yoyote alisema. 165 00:07:16,380 --> 00:07:19,590 Hivyo 1 kugawanywa na 10 ni 0, na kisha sisi ni kujaribu 166 00:07:19,590 --> 00:07:24,410 magazeti kwamba kama kuelea, hivyo sifuri kuchapishwa kama kuelea ni 0.0. 167 00:07:24,410 --> 00:07:27,400 Na kwamba ni kwa nini sisi kupata 0.0. 168 00:07:27,400 --> 00:07:28,940 >> Fikiria mpango hapa chini. 169 00:07:28,940 --> 00:07:31,280 Sasa sisi ni uchapishaji 0.1. 170 00:07:31,280 --> 00:07:34,280 Hivyo hakuna mgawanyo integer, tuko tu uchapishaji 0.1, 171 00:07:34,280 --> 00:07:37,100 lakini sisi ni uchapishaji ni 28 maeneo alisema. 172 00:07:37,100 --> 00:07:41,810 Na sisi kupata hii 0.1000, rundo zima ya zeros, 5 5 5, blah blah blah. 173 00:07:41,810 --> 00:07:45,495 Hivyo swali hapa ni kwa nini anafanya hivyo magazeti kwamba, badala ya hasa 0.1? 174 00:07:45,495 --> 00:07:46,620 175 00:07:46,620 --> 00:07:49,640 >> Hivyo sababu hapa ni sasa floating uhakika kutokuwa sahihi. 176 00:07:49,640 --> 00:07:53,410 Kumbuka kwamba kuelea ni bits 32 tu. 177 00:07:53,410 --> 00:07:57,540 Hivyo tunaweza tu ya kuwakilisha idadi finite ya yaliyo maadili uhakika na wale 32 178 00:07:57,540 --> 00:07:58,560 bits. 179 00:07:58,560 --> 00:08:01,760 Vizuri kuna hatimaye kubwa wengi yaliyo maadili uhakika, 180 00:08:01,760 --> 00:08:04,940 na kuna kubwa wengi yaliyo maadili kumweka katika kati ya 0 na 1, 181 00:08:04,940 --> 00:08:07,860 na sisi ni wazi na uwezo wa kuwakilisha maadili hata zaidi. 182 00:08:07,860 --> 00:08:13,230 Hivyo tuna kutoa kafara kwa kuwa na uwezo wa kuwakilisha maadili zaidi. 183 00:08:13,230 --> 00:08:16,960 >> Hivyo thamani kama 0.1, inaonekana hatuwezi kuwakilisha kwamba hasa. 184 00:08:16,960 --> 00:08:22,500 Hivyo badala ya 0.1 anayewakilisha sisi kufanya bora tunaweza kuwakilisha hii 0.100000 5 5 185 00:08:22,500 --> 00:08:23,260 5. 186 00:08:23,260 --> 00:08:26,306 Na kwamba ni pretty karibu, lakini kwa mengi ya maombi 187 00:08:26,306 --> 00:08:28,430 wewe kuwa na wasiwasi kuhusu floating uhakika kutokuwa sahihi, 188 00:08:28,430 --> 00:08:30,930 kwa sababu sisi tu hawezi kuwakilisha pointi zote yaliyo sawa. 189 00:08:30,930 --> 00:08:32,500 190 00:08:32,500 --> 00:08:33,380 >> Swali 15. 191 00:08:33,380 --> 00:08:34,679 Fikiria kificho chini. 192 00:08:34,679 --> 00:08:36,630 Tuko tu kuchapisha 1 plus 1. 193 00:08:36,630 --> 00:08:38,289 Hivyo hakuna hila hapa. 194 00:08:38,289 --> 00:08:41,780 1 plus 1 kutathmini kwa 2, na kisha sisi ni uchapishaji kwamba. 195 00:08:41,780 --> 00:08:42,789 Hii tu Prints 2. 196 00:08:42,789 --> 00:08:43,850 197 00:08:43,850 --> 00:08:44,700 >> Swali 16. 198 00:08:44,700 --> 00:08:49,450 Sasa sisi ni uchapishaji tabia 1 plus tabia 1. 199 00:08:49,450 --> 00:08:52,110 Hivyo kwa nini anafanya hivyo si magazeti kitu kimoja? 200 00:08:52,110 --> 00:08:57,680 Vizuri tabia 1 plus tabia 1, tabia ya 1 ina thamani ASCII 49. 201 00:08:57,680 --> 00:09:04,840 Hivyo hii ni kweli akisema 49 pamoja 49, na hatimaye hii ni kwenda magazeti 98. 202 00:09:04,840 --> 00:09:06,130 Hivyo hii haina magazeti 2. 203 00:09:06,130 --> 00:09:08,070 204 00:09:08,070 --> 00:09:09,271 >> Swali 17. 205 00:09:09,271 --> 00:09:11,520 Kukamilisha utekelezaji ya isiyo ya kawaida chini katika namna 206 00:09:11,520 --> 00:09:14,615 kwamba kazi anarudi kweli kama n ni isiyo ya kawaida na uongo kama n ni hata. 207 00:09:14,615 --> 00:09:16,710 208 00:09:16,710 --> 00:09:19,330 Hii ni lengo kubwa kwa operator Mod. 209 00:09:19,330 --> 00:09:24,530 Hivyo sisi kuchukua hoja yetu n, kama n Mod 2 sawa na 1, vizuri 210 00:09:24,530 --> 00:09:28,030 hiyo ina maana kwamba n kugawanywa na 2 alikuwa salio. 211 00:09:28,030 --> 00:09:33,270 Kama n kugawanywa na 2 alikuwa salio, kwamba ina maana kwamba ni n isiyo ya kawaida, hivyo sisi kurudi kweli. 212 00:09:33,270 --> 00:09:34,910 Mwingine sisi kurudi uongo. 213 00:09:34,910 --> 00:09:39,070 Unaweza pia wangefanya n Mod 2 sawa sifuri, kurudi uongo, mwingine kurudi kweli. 214 00:09:39,070 --> 00:09:41,600 215 00:09:41,600 --> 00:09:43,640 >> Fikiria kazi ya kujirudia hapa chini. 216 00:09:43,640 --> 00:09:46,920 Hivyo kama n ni chini ya au sawa na 1, kurudi 1, 217 00:09:46,920 --> 00:09:50,430 mwingine kurudi n mara f ya n minus 1. 218 00:09:50,430 --> 00:09:52,556 Hivyo ni kazi huu nini? 219 00:09:52,556 --> 00:09:54,305 Naam, hii ni tu factorial kazi. 220 00:09:54,305 --> 00:09:55,410 221 00:09:55,410 --> 00:09:57,405 Hii ni nicely kuwakilishwa kama n factorial. 222 00:09:57,405 --> 00:09:58,720 223 00:09:58,720 --> 00:10:02,310 >> Hivyo swali 19 sasa, tunataka kuchukua kazi hii ya kujirudia. 224 00:10:02,310 --> 00:10:04,530 Tunataka kufanya hivyo iterative. 225 00:10:04,530 --> 00:10:05,874 Hivyo ni jinsi gani sisi kufanya hivyo? 226 00:10:05,874 --> 00:10:07,790 Vizuri kwa wafanyakazi ufumbuzi, na tena kuna 227 00:10:07,790 --> 00:10:11,090 njia nyingi unaweza wamefanya kwamba, sisi kuanza na bidhaa hii int 228 00:10:11,090 --> 00:10:11,812 sawa 1. 229 00:10:11,812 --> 00:10:13,520 Na katika hii kwa kitanzi, tunakwenda 230 00:10:13,520 --> 00:10:17,590 kuwa kuzidisha bidhaa na hatimaye kuishia na factorial kamili. 231 00:10:17,590 --> 00:10:21,870 Hivyo kwa int i sawa 2, i ni chini ya au sawa na n, i ++. 232 00:10:21,870 --> 00:10:24,130 >> Unaweza kuwa anashangaa kwa nini i sawa 2. 233 00:10:24,130 --> 00:10:28,380 Vizuri, kumbuka kwamba hapa tuna kuhakikisha kesi yetu ya msingi ni sahihi. 234 00:10:28,380 --> 00:10:32,180 Hivyo kama n ni chini ya au sawa 1, tuko tu kurudi 1. 235 00:10:32,180 --> 00:10:34,830 Hivyo zaidi ya hapa, sisi kuanza saa i sawa 2. 236 00:10:34,830 --> 00:10:39,090 Vizuri kama i walikuwa 1, basi the-- au kama n walikuwa 1, basi kwa kitanzi 237 00:10:39,090 --> 00:10:40,600 bila nitafanya wakati wote. 238 00:10:40,600 --> 00:10:43,190 Na hivyo sisi ingekuwa tu bidhaa kurudi, ambayo ni 1. 239 00:10:43,190 --> 00:10:45,920 Vile vile, kama n walikuwa chochote chini ya 1-- 240 00:10:45,920 --> 00:10:49,290 ikiwa ni 0, hasi 1, whatever-- tunatarajia bado kuwa kurudi 1, 241 00:10:49,290 --> 00:10:52,260 ambayo ni nini hasa kujirudia toleo ni kufanya. 242 00:10:52,260 --> 00:10:54,660 >> Sasa, kama n ni mkubwa ya 1, kisha tunakwenda 243 00:10:54,660 --> 00:10:56,550 kufanya angalau moja iteration ya kitanzi hii. 244 00:10:56,550 --> 00:11:00,630 Basi hebu kusema n ni 5, basi tuko kwenda kufanya mara bidhaa ni sawa na 2. 245 00:11:00,630 --> 00:11:02,165 Hivyo sasa bidhaa ni 2. 246 00:11:02,165 --> 00:11:04,040 Sasa sisi ni kwenda kufanya mara bidhaa ni sawa na 3. 247 00:11:04,040 --> 00:11:04,690 Sasa ni 6. 248 00:11:04,690 --> 00:11:07,500 Mara bidhaa ni sawa na 4, sasa ni 24. 249 00:11:07,500 --> 00:11:10,420 Mara bidhaa ni sawa na 5, sasa ni 120. 250 00:11:10,420 --> 00:11:16,730 Hivyo basi hatimaye, sisi ni kurudi 120, ambayo ni kwa usahihi 5 factorial. 251 00:11:16,730 --> 00:11:17,510 >> Swali 20. 252 00:11:17,510 --> 00:11:22,480 Hii ni moja ambapo una kujaza katika meza hii na algorithm wowote, 253 00:11:22,480 --> 00:11:25,735 chochote ambacho tumeona, kwamba inafaa hizi kukimbia algorithmic 254 00:11:25,735 --> 00:11:28,060 mara nyakati hizi asymptotic kukimbia. 255 00:11:28,060 --> 00:11:33,270 Hivyo ni nini algorithm kwamba ni omega ya 1, lakini O kubwa ya n? 256 00:11:33,270 --> 00:11:35,970 Hivyo kuna inaweza kuwa kubwa majibu mengi hapa. 257 00:11:35,970 --> 00:11:39,790 moja kwamba tumeona pengine mara nyingi ni tu search linear. 258 00:11:39,790 --> 00:11:42,050 >> Hivyo katika kesi bora mazingira, bidhaa tuko 259 00:11:42,050 --> 00:11:44,050 kuangalia kwa ni katika mwanzo wa orodha 260 00:11:44,050 --> 00:11:47,400 na hivyo katika omega ya 1 hatua, Jambo la kwanza sisi kuangalia, 261 00:11:47,400 --> 00:11:49,740 sisi tu mara moja kurudi kwamba sisi kupatikana item. 262 00:11:49,740 --> 00:11:52,189 Katika mazingira ya kesi mbaya, bidhaa ni mwishoni, 263 00:11:52,189 --> 00:11:53,730 au bidhaa si katika orodha wakati wote. 264 00:11:53,730 --> 00:11:56,700 Hivyo tuna kutafuta orodha nzima, kila n 265 00:11:56,700 --> 00:11:58,480 vipengele, na kwamba ni kwa nini ni o ya n. 266 00:11:58,480 --> 00:11:59,670 267 00:11:59,670 --> 00:12:04,880 >> Hivyo sasa ni kitu ambacho ni wote omega ya n logi n, na O kubwa ya n logi n. 268 00:12:04,880 --> 00:12:08,650 Vizuri jambo muhimu zaidi tumeona hapa ni kuunganisha aina. 269 00:12:08,650 --> 00:12:12,950 Hivyo kuunganisha aina, kumbuka, ni hatimaye Theta 270 00:12:12,950 --> 00:12:16,920 ya n logi n, ambapo theta inaelezwa kama wote wawili omega na kubwa O ni sawa. 271 00:12:16,920 --> 00:12:17,580 Wote n logi n. 272 00:12:17,580 --> 00:12:18,690 273 00:12:18,690 --> 00:12:21,970 >> Nini kitu ambacho ni omega ya n, na O ya n mraba? 274 00:12:21,970 --> 00:12:23,990 Naam, tena kuna Inawezekana majibu nyingi. 275 00:12:23,990 --> 00:12:26,440 Hapa sisi kutokea kwa kusema Bubble aina. 276 00:12:26,440 --> 00:12:28,840 Insertion aina pia kazi hapa. 277 00:12:28,840 --> 00:12:31,400 Kumbuka kwamba aina Bubble ina kuwa optimization ambapo, 278 00:12:31,400 --> 00:12:34,630 kama wewe ni uwezo wa kupata kupitia orodha nzima 279 00:12:34,630 --> 00:12:37,402 bila wanaohitaji kufanya swaps yoyote, basi, vizuri, 280 00:12:37,402 --> 00:12:40,110 tunaweza mara moja kurudi kwamba orodha alikuwa sorted kwa kuanzia. 281 00:12:40,110 --> 00:12:43,185 Hivyo katika bora kesi, ni tu omega ya n. 282 00:12:43,185 --> 00:12:45,960 Kama siyo tu nicely yamepangwa orodha kuanza na, 283 00:12:45,960 --> 00:12:48,270 basi tuna O ya n mraba swaps. 284 00:12:48,270 --> 00:12:49,330 285 00:12:49,330 --> 00:12:55,610 Na hatimaye, tuna uteuzi aina kwa n mraba, wote omega na kubwa O. 286 00:12:55,610 --> 00:12:56,850 >> Swali 21. 287 00:12:56,850 --> 00:12:58,870 Nini integer kufurika? 288 00:12:58,870 --> 00:13:02,160 Vizuri tena, sawa na ya awali, sisi tu bits finitely wengi 289 00:13:02,160 --> 00:13:04,255 kuwakilisha integer, hivyo labda 32 bits. 290 00:13:04,255 --> 00:13:06,300 291 00:13:06,300 --> 00:13:09,180 Hebu kusema tuna integer saini. 292 00:13:09,180 --> 00:13:12,800 Kisha hatimaye juu idadi chanya tunaweza kuwakilisha 293 00:13:12,800 --> 00:13:15,910 ni 2-31 minus 1. 294 00:13:15,910 --> 00:13:19,370 Hivyo kile kinachotokea kama sisi kujaribu basi nyongeza kwamba integer? 295 00:13:19,370 --> 00:13:25,320 Naam, sisi ni kwenda 2-31 bala 1, njia yote chini ya 2 hasi 296 00:13:25,320 --> 00:13:26,490 31. 297 00:13:26,490 --> 00:13:29,470 Hivyo hii kufurika integer ni wakati wewe kushika incrementing, 298 00:13:29,470 --> 00:13:32,330 na hatimaye huwezi kupata yoyote ya juu na ni tu 299 00:13:32,330 --> 00:13:34,520 Wraps njia yote nyuma karibu na thamani hasi. 300 00:13:34,520 --> 00:13:35,850 301 00:13:35,850 --> 00:13:37,779 >> Nini kuhusu kufurika buffer? 302 00:13:37,779 --> 00:13:39,820 Hivyo buffer overflow-- kumbuka kile buffer ni. 303 00:13:39,820 --> 00:13:41,000 Ni tu chunk ya kumbukumbu. 304 00:13:41,000 --> 00:13:43,350 Kitu kama safu ni buffer. 305 00:13:43,350 --> 00:13:46,120 Hivyo kufurika buffer ni wakati wewe kujaribu kupata kumbukumbu 306 00:13:46,120 --> 00:13:47,880 zaidi ya mwisho wa safu. 307 00:13:47,880 --> 00:13:50,410 Hivyo kama una safu ya ukubwa 5 na wewe 308 00:13:50,410 --> 00:13:53,700 kujaribu kupata safu bracket 5 au mabano 6 au mabano 7, 309 00:13:53,700 --> 00:13:56,610 au kitu chochote zaidi mwisho, au hata kitu chochote 310 00:13:56,610 --> 00:14:00,790 below-- safu bracket hasi 1-- wale wote ni kufurika buffer. 311 00:14:00,790 --> 00:14:02,810 Wewe ni kugusa kumbukumbu katika njia mbaya. 312 00:14:02,810 --> 00:14:04,090 313 00:14:04,090 --> 00:14:04,730 >> Swali 23. 314 00:14:04,730 --> 00:14:05,760 315 00:14:05,760 --> 00:14:09,100 Hivyo katika hii moja unahitaji kutekeleza strlen. 316 00:14:09,100 --> 00:14:11,630 Na sisi kukuambia kwamba unaweza kudhani s itakuwa si null, 317 00:14:11,630 --> 00:14:13,790 hivyo hawana kufanya kuangalia yoyote kwa null. 318 00:14:13,790 --> 00:14:16,190 Na kuna njia nyingi unaweza kuwa amefanya. 319 00:14:16,190 --> 00:14:18,440 Hapa sisi tu kuchukua moja kwa moja. 320 00:14:18,440 --> 00:14:21,780 Sisi kuanza na kukabiliana, n. n ni kuhesabu jinsi wahusika wengi kuna. 321 00:14:21,780 --> 00:14:25,560 Hivyo sisi kuanza saa 0, na kisha sisi iterate juu ya orodha nzima. 322 00:14:25,560 --> 00:14:29,092 >> Ni s mabano 0 sawa na null Terminator tabia? 323 00:14:29,092 --> 00:14:31,425 Kumbuka sisi ni kuangalia kwa null Terminator tabia 324 00:14:31,425 --> 00:14:33,360 kuamua jinsi ya muda mrefu kamba yetu ni. 325 00:14:33,360 --> 00:14:35,890 Kwamba ni kwenda kusitisha yoyote husika kamba. 326 00:14:35,890 --> 00:14:39,400 Hivyo ni s mabano 0 sawa kwa null Terminator? 327 00:14:39,400 --> 00:14:42,850 Kama siyo, basi tunakwenda kuangalia s mabano 1, s mabano 2. 328 00:14:42,850 --> 00:14:45,050 Sisi kuendelea kwenda mpaka sisi kupata null Terminator. 329 00:14:45,050 --> 00:14:48,580 Mara tumekuwa kupatikana, basi n ina urefu wa jumla ya kamba, 330 00:14:48,580 --> 00:14:49,942 na tunaweza tu kurudi kwamba. 331 00:14:49,942 --> 00:14:51,180 332 00:14:51,180 --> 00:14:51,865 >> Swali 24. 333 00:14:51,865 --> 00:14:53,010 334 00:14:53,010 --> 00:14:56,050 Hivyo hii ni moja ambapo kufanya biashara mbali. 335 00:14:56,050 --> 00:14:59,810 Hivyo jambo moja ni nzuri katika moja njia, lakini katika njia ni nini mbaya? 336 00:14:59,810 --> 00:15:02,980 Hivyo hapa, kuunganisha aina inaelekea kuwa kasi zaidi kuliko Bubble aina. 337 00:15:02,980 --> 00:15:06,530 Baada ya kusema that-- vizuri, kuna ni majibu nyingi hapa. 338 00:15:06,530 --> 00:15:12,930 Lakini moja kubwa ni kwamba aina Bubble ni omega ya n kwa orodha Iliyopangwa. 339 00:15:12,930 --> 00:15:14,950 >> Kumbuka kwamba meza sisi tu kuona mapema. 340 00:15:14,950 --> 00:15:17,600 Hivyo Bubble aina omega ya n, bora kesi 341 00:15:17,600 --> 00:15:20,010 ni ni uwezo wa tu kwenda juu ya orodha mara moja, kuamua 342 00:15:20,010 --> 00:15:22,270 hey jambo hili ni tayari yamepangwa, na kurudi. 343 00:15:22,270 --> 00:15:25,960 Kuunganisha aina, bila kujali kufanya, ni omega ya n logi n. 344 00:15:25,960 --> 00:15:29,200 Hivyo kwa orodha Iliyopangwa, Bubble aina kinaendelea kuwa kasi zaidi. 345 00:15:29,200 --> 00:15:30,870 346 00:15:30,870 --> 00:15:32,430 >> Sasa nini kuhusu wanaohusishwa orodha? 347 00:15:32,430 --> 00:15:36,070 Hivyo orodha wanaohusishwa inaweza kukua na kuogopa fit mambo mengi kama inahitajika. 348 00:15:36,070 --> 00:15:38,489 Baada ya kusema hivyo that-- kawaida kulinganisha moja kwa moja 349 00:15:38,489 --> 00:15:40,280 ni kwenda kuwa na uhusiano wa karibu orodha na safu. 350 00:15:40,280 --> 00:15:41,600 351 00:15:41,600 --> 00:15:44,050 Hivyo hata kama arrays unaweza urahisi kukua na kuogopa 352 00:15:44,050 --> 00:15:47,130 fit mambo kama wengi kama inahitajika, wanaohusishwa orodha 353 00:15:47,130 --> 00:15:49,600 ikilinganishwa na array-- An safu ina upatikanaji random. 354 00:15:49,600 --> 00:15:52,960 Tunaweza index ndani yoyote kipengele maalum ya safu. 355 00:15:52,960 --> 00:15:56,430 >> Hivyo kwa orodha wanaohusishwa, hatuwezi tu kwenda kipengele tano, 356 00:15:56,430 --> 00:16:00,260 tuna traverse tangu mwanzo mpaka sisi kupata kipengele tano. 357 00:16:00,260 --> 00:16:03,990 Na kwamba kinaendelea kuzuia sisi kutoka kufanya kitu kama tafuta binary. 358 00:16:03,990 --> 00:16:08,150 Akizungumza ya utafutaji binary, binary tafuta huelekea kuwa kasi zaidi kuliko search linear. 359 00:16:08,150 --> 00:16:11,120 Baada ya kusema that-- hivyo, jambo moja iwezekanavyo 360 00:16:11,120 --> 00:16:13,380 ni kwamba huwezi kufanya binary kutafuta kwenye orodha wanaohusishwa, 361 00:16:13,380 --> 00:16:14,730 unaweza tu kufanya hivyo kwa arrays. 362 00:16:14,730 --> 00:16:18,030 Lakini pengine ni muhimu zaidi, huwezi kufanya search binary 363 00:16:18,030 --> 00:16:20,690 juu ya safu ambayo si vyema. 364 00:16:20,690 --> 00:16:23,990 Upfront unaweza haja ya kutatua safu, na kisha tu unaweza 365 00:16:23,990 --> 00:16:25,370 kufanya search binary. 366 00:16:25,370 --> 00:16:27,660 Hivyo kama kitu yako ni si Iliyopangwa kwa kuanzia, 367 00:16:27,660 --> 00:16:29,250 basi tafuta linear inaweza kuwa kwa kasi zaidi. 368 00:16:29,250 --> 00:16:30,620 369 00:16:30,620 --> 00:16:31,740 >> Swali 27. 370 00:16:31,740 --> 00:16:34,770 Hivyo kufikiria mpango chini, ambayo itakuwa katika slide ijayo. 371 00:16:34,770 --> 00:16:37,790 Na hii ni moja ambapo tuko atataka wazi wazi hali 372 00:16:37,790 --> 00:16:39,980 maadili kwa vigezo mbalimbali. 373 00:16:39,980 --> 00:16:41,990 Hivyo hebu tuangalie kwamba. 374 00:16:41,990 --> 00:16:43,160 >> Hivyo mstari mmoja. 375 00:16:43,160 --> 00:16:45,457 Tuna int x ni sawa na 1. 376 00:16:45,457 --> 00:16:47,040 Hiyo ni jambo tu kwamba kilichotokea. 377 00:16:47,040 --> 00:16:50,440 Hivyo katika mstari mmoja, tunaona katika yetu meza, kwamba y, a, b, na TMP ni wote 378 00:16:50,440 --> 00:16:51,540 sioni. 379 00:16:51,540 --> 00:16:52,280 Hivyo ni nini x? 380 00:16:52,280 --> 00:16:53,860 Vizuri sisi tu kuweka sawa na 1. 381 00:16:53,860 --> 00:16:55,020 382 00:16:55,020 --> 00:16:58,770 Na kisha mstari mbili, vizuri, tunaona kwamba y ni kuweka 2, 383 00:16:58,770 --> 00:17:00,550 na meza tayari kujazwa katika kwa ajili yetu. 384 00:17:00,550 --> 00:17:03,040 Hivyo x ni 1 na y ni 2. 385 00:17:03,040 --> 00:17:05,890 >> Sasa, line tatu, sisi ni sasa ndani ya wabadilishane kazi. 386 00:17:05,890 --> 00:17:07,560 Nini sisi kupita wabadilishane? 387 00:17:07,560 --> 00:17:11,609 Sisi kupita ampersand x kwa a, na ampersand y kwa b. 388 00:17:11,609 --> 00:17:15,160 Ambapo tatizo mapema alisema kuwa pepe ya x 389 00:17:15,160 --> 00:17:17,520 ni 0x10, na anwani ya y ni 0x14. 390 00:17:17,520 --> 00:17:18,970 391 00:17:18,970 --> 00:17:21,909 Hivyo na b ni sawa na 0x10 na 0x14, mtawalia. 392 00:17:21,909 --> 00:17:23,670 393 00:17:23,670 --> 00:17:26,250 >> Sasa katika mstari tatu, ni x na y? 394 00:17:26,250 --> 00:17:28,554 Vizuri, hakuna kitu imebadilika kuhusu x na y katika hatua hii. 395 00:17:28,554 --> 00:17:30,470 Ingawa wao ni ndani ya stack frame kuu, 396 00:17:30,470 --> 00:17:32,469 bado wana sawa maadili walivyofanya kabla. 397 00:17:32,469 --> 00:17:34,030 Sisi si iliyopita kumbukumbu yoyote. 398 00:17:34,030 --> 00:17:35,710 Hivyo x ni 1, y ni 2. 399 00:17:35,710 --> 00:17:36,550 400 00:17:36,550 --> 00:17:37,050 Wote haki. 401 00:17:37,050 --> 00:17:40,300 Hivyo sasa sisi alisema int TMP sawa na nyota. 402 00:17:40,300 --> 00:17:44,410 Hivyo katika mstari nne, kila kitu ni sawa isipokuwa kwa TMP. 403 00:17:44,410 --> 00:17:47,130 Sisi si iliyopita maadili yoyote chochote isipokuwa kwa TMP. 404 00:17:47,130 --> 00:17:49,230 Sisi ni kuweka TMP sawa na nyota. 405 00:17:49,230 --> 00:17:50,620 Nyota a ni nini? 406 00:17:50,620 --> 00:17:56,240 Naam, pointi kwa x, Hivyo nyota ni kwenda sawa x, ambayo ni 1. 407 00:17:56,240 --> 00:18:00,080 Hivyo kila kitu ni kunakiliwa chini, na TMP ni kuweka 1. 408 00:18:00,080 --> 00:18:01,110 >> Sasa line ijayo. 409 00:18:01,110 --> 00:18:03,380 Star a sawa nyota b. 410 00:18:03,380 --> 00:18:10,000 Hivyo kwa line five-- vizuri tena, kila kitu ni sawa isipokuwa chochote nyota a ni. 411 00:18:10,000 --> 00:18:10,830 Nyota a ni nini? 412 00:18:10,830 --> 00:18:13,720 Naam, sisi tu alisema nyota a ni x. 413 00:18:13,720 --> 00:18:16,400 Hivyo sisi ni kubadilisha x kwa nyota sawa b. 414 00:18:16,400 --> 00:18:18,960 Nyota b ni nini? y. pointi b y. 415 00:18:18,960 --> 00:18:21,030 Hivyo nyota b ni y. 416 00:18:21,030 --> 00:18:25,140 Hivyo sisi ni kuweka x sawa na y, na kila kitu kingine ni sawa. 417 00:18:25,140 --> 00:18:29,130 Hivyo tunaona katika mstari unaofuata kuwa x ni sasa 2, na wengine ni tu kunakiliwa chini. 418 00:18:29,130 --> 00:18:31,120 >> Sasa katika mstari wa pili, nyota b sawa TMP. 419 00:18:31,120 --> 00:18:34,740 Naam, sisi tu alisema nyota b ni y, hivyo sisi ni kuweka y sawa na TMP. 420 00:18:34,740 --> 00:18:37,450 Kila kitu kingine ni sawa, hivyo kila kitu anapata kunakiliwa chini. 421 00:18:37,450 --> 00:18:42,050 Sisi ni kuweka y sawa na TMP, ambayo ni moja, na kila kitu kingine ni sawa. 422 00:18:42,050 --> 00:18:43,210 >> Sasa hatimaye, line saba. 423 00:18:43,210 --> 00:18:44,700 Tuko nyuma katika kazi kubwa. 424 00:18:44,700 --> 00:18:46,350 Sisi ni baada ya wabadilishane ni kumaliza. 425 00:18:46,350 --> 00:18:48,972 Tumepoteza, b, na TMP, lakini hatimaye sisi 426 00:18:48,972 --> 00:18:51,180 si kubadilisha maadili yoyote chochote katika hatua hii, 427 00:18:51,180 --> 00:18:52,800 sisi tu nakala x na y chini. 428 00:18:52,800 --> 00:18:56,490 Na tunaona kwamba x na y ni sasa 2 na 1 badala ya 1 na 2. 429 00:18:56,490 --> 00:18:58,160 wabadilishane amefanikiwa kunyongwa. 430 00:18:58,160 --> 00:18:59,500 431 00:18:59,500 --> 00:19:00,105 >> Swali 28. 432 00:19:00,105 --> 00:19:01,226 433 00:19:01,226 --> 00:19:03,100 Tuseme kwamba wewe kukutana ujumbe wa makosa 434 00:19:03,100 --> 00:19:06,790 chini wakati wa masaa ya ofisi mwaka ujao kama CA au TF. 435 00:19:06,790 --> 00:19:08,930 Kushauri jinsi ya kurekebisha kila mmoja wa makosa hayo. 436 00:19:08,930 --> 00:19:11,160 Kumbukumbu hivyo kisichojulikana kwa GetString. 437 00:19:11,160 --> 00:19:12,540 Kwa nini huenda unaweza kuona hili? 438 00:19:12,540 --> 00:19:15,380 Naam, kama mwanafunzi ni kutumia GetString katika kanuni zao, 439 00:19:15,380 --> 00:19:20,310 wao vizuri hash pamoja CS50 dot h kwa pamoja maktaba CS50. 440 00:19:20,310 --> 00:19:22,380 >> Vizuri, je, wao haja ya kurekebisha kosa hili? 441 00:19:22,380 --> 00:19:26,810 Wanahitaji kufanya dash lcs50 katika mstari amri wakati wao ni kuandaa. 442 00:19:26,810 --> 00:19:29,501 Hivyo kama hawana kupita Clang dash lcs50, wao ni 443 00:19:29,501 --> 00:19:32,000 si kwenda kuwa halisi kificho kwamba zana GetString. 444 00:19:32,000 --> 00:19:33,190 445 00:19:33,190 --> 00:19:34,170 >> Swali 29. 446 00:19:34,170 --> 00:19:36,190 Inamuunga kutangaza kazi maktaba strlen. 447 00:19:36,190 --> 00:19:37,550 448 00:19:37,550 --> 00:19:40,360 Naam hii sasa, wana si amefanya hash sahihi ni pamoja. 449 00:19:40,360 --> 00:19:41,440 450 00:19:41,440 --> 00:19:45,410 Katika kesi hii, header faili wanahitaji ni pamoja na ni kamba dot h, 451 00:19:45,410 --> 00:19:48,710 na ikiwa ni pamoja na kamba dot h, sasa student-- sasa compiler 452 00:19:48,710 --> 00:19:51,750 ina kupata maazimio ya strlen, 453 00:19:51,750 --> 00:19:54,120 na anajua kwamba kanuni yako ni kutumia strlen usahihi. 454 00:19:54,120 --> 00:19:55,380 455 00:19:55,380 --> 00:19:56,580 >> Swali 30. 456 00:19:56,580 --> 00:20:00,240 Zaidi ya asilimia wongofu kuliko data hoja. 457 00:20:00,240 --> 00:20:01,540 Hivyo ni nini hii? 458 00:20:01,540 --> 00:20:06,470 Vizuri kukumbuka kwamba asilimia hizi signs-- jinsi wao ni muhimu kwa printf. 459 00:20:06,470 --> 00:20:08,890 Hivyo katika printf tupate percent-- tupate magazeti kitu 460 00:20:08,890 --> 00:20:11,380 kama asilimia i backslash n. 461 00:20:11,380 --> 00:20:15,310 Au tupate magazeti kama asilimia i, nafasi, asilimia i, nafasi, asilimia i. 462 00:20:15,310 --> 00:20:18,950 Hivyo kwa kila ya wale ishara asilimia, tunahitaji 463 00:20:18,950 --> 00:20:21,560 kupita variable mwishoni mwa printf. 464 00:20:21,560 --> 00:20:26,980 >> Hivyo kama sisi kusema asilimia printf Paren i Backslash Paren n karibu, 465 00:20:26,980 --> 00:20:30,270 vizuri, tunasema kwamba sisi ni kwenda magazeti integer, 466 00:20:30,270 --> 00:20:33,970 lakini basi hatuna kupita printf integer kwa kweli magazeti. 467 00:20:33,970 --> 00:20:37,182 Asilimia hivyo hapa zaidi wongofu kuliko data hoja? 468 00:20:37,182 --> 00:20:39,390 Hiyo ni kusema kwamba tuna rundo zima la percents, 469 00:20:39,390 --> 00:20:42,445 na hatuna vigezo vya kutosha kwa kweli kujaza percents hizo. 470 00:20:42,445 --> 00:20:44,850 471 00:20:44,850 --> 00:20:50,010 >> Na kisha dhahiri, kwa swali 31, dhahiri waliopotea 40 ka katika moja ya vitalu. 472 00:20:50,010 --> 00:20:52,350 Hivyo hii ni Valgrind makosa. 473 00:20:52,350 --> 00:20:54,720 Hii ni kusema kwamba mahali fulani katika kanuni yako, 474 00:20:54,720 --> 00:20:59,010 una mgao kwamba ni 40 ka kubwa hivyo malloced 40 ka, 475 00:20:59,010 --> 00:21:00,515 na kamwe huru yake. 476 00:21:00,515 --> 00:21:02,480 477 00:21:02,480 --> 00:21:05,140 Zaidi uwezekano haja tu kupata baadhi ya uvujaji wa kumbukumbu, 478 00:21:05,140 --> 00:21:07,650 na kupata ambapo unahitaji bure hii ya kuzuia wa kumbukumbu. 479 00:21:07,650 --> 00:21:08,780 480 00:21:08,780 --> 00:21:11,910 >> Na kuhoji 32, batili kuandika ukubwa 4. 481 00:21:11,910 --> 00:21:13,250 Tena hii ni Valgrind makosa. 482 00:21:13,250 --> 00:21:15,440 Hii haina kufanya na kumbukumbu uvujaji sasa. 483 00:21:15,440 --> 00:21:20,750 Hii ni, wengi likely-- I mean, ni aina fulani ya haki za kumbukumbu batili. 484 00:21:20,750 --> 00:21:23,270 Na uwezekano mkubwa hii ni baadhi ya aina ya buffer kufurika. 485 00:21:23,270 --> 00:21:26,560 Ambapo una safu, labda integer safu, na hebu 486 00:21:26,560 --> 00:21:30,115 kusema ni ya kawaida 5, na wewe kujaribu kugusa safu bracket 5. 487 00:21:30,115 --> 00:21:34,150 Hivyo kama wewe kujaribu kuandika kwamba thamani, si kwamba kipande cha kumbukumbu 488 00:21:34,150 --> 00:21:37,440 kwamba kweli kupata, na hivyo wewe ni kwenda kupata kosa hili, 489 00:21:37,440 --> 00:21:39,272 akisema batili kuandika ukubwa 4. 490 00:21:39,272 --> 00:21:42,480 Valgrind ni kwenda kutambua wewe ni kujaribu kugusa kumbukumbu inappropriately. 491 00:21:42,480 --> 00:21:43,980 >> Na kwamba ni kwa ajili ya quiz0. 492 00:21:43,980 --> 00:21:47,065 Mimi nina Rob Bowden, na hii ni CS50. 493 00:21:47,065 --> 00:21:51,104