1 00:00:00,000 --> 00:00:02,742 2 00:00:02,742 --> 00:00:05,680 >> SPIKA 1: Hi kila mtu. 3 00:00:05,680 --> 00:00:07,530 Sisi ni kwenda kupata kuanza. 4 00:00:07,530 --> 00:00:09,330 Nadhani watu bado ni kwenda kuwa kuchuja katika. 5 00:00:09,330 --> 00:00:12,840 Lakini kwa maslahi ya muda, hivyo tunaweza kupata wewe guys nje ya hapa kwa wakati, 6 00:00:12,840 --> 00:00:14,110 sisi ni kwenda kuanza. 7 00:00:14,110 --> 00:00:18,780 Hivyo kuwakaribisha kwa CS50 Quiz 0 mapitio. 8 00:00:18,780 --> 00:00:23,020 Kwa wale wa wewe ambao si barabara hata hivyo, una swali juu ya Jumatano. 9 00:00:23,020 --> 00:00:25,700 Woo-hoo. 10 00:00:25,700 --> 00:00:29,780 >> Kama si kuanza kusoma bado au si waligundua kwamba hii ipo bado, 11 00:00:29,780 --> 00:00:34,070 zamani Quizzes na wote wa habari kuhusu Jaribio yako ni juu ya cs50.net/quizzes. 12 00:00:34,070 --> 00:00:38,090 Kuna baadhi ya mambo nzuri juu ya huko, zamani Quizzes kutoka mwisho 10 13 00:00:38,090 --> 00:00:43,760 miaka kama vile habari kuhusu jaribio hili na mada 14 00:00:43,760 --> 00:00:46,250 ambayo itakuwa kufunikwa. 15 00:00:46,250 --> 00:00:48,980 Basi hebu kupata kuanza. 16 00:00:48,980 --> 00:00:54,240 >> Hivyo guys wanaweza kukumbuka, kwanza siku ya darasa Daudi alikuwa taa wale. 17 00:00:54,240 --> 00:00:59,650 Hivyo kimsingi, kila kitu kwamba huenda juu ya chini ya Hood ya kompyuta ni 18 00:00:59,650 --> 00:01:00,860 kufanyika katika binary. 19 00:01:00,860 --> 00:01:04,080 Binary nini maana ya sauti kama, 0 na 1 ya. 20 00:01:04,080 --> 00:01:09,290 Ina maadili mawili ambayo inaweza kuwakilishwa. 21 00:01:09,290 --> 00:01:14,675 >> Hivyo tu kama katika siku ya kwanza ya sehemu wakati David akageuka juu mwanga 22 00:01:14,675 --> 00:01:21,990 bulb kuwakilisha juu, au 1, kompyuta yetu anaelewa binary kama 0 na 23 00:01:21,990 --> 00:01:24,110 1 ya, juu au mbali. 24 00:01:24,110 --> 00:01:25,360 Misingi ya Binary. 25 00:01:25,360 --> 00:01:29,440 26 00:01:29,440 --> 00:01:32,470 Kila mahali ni kuwakilishwa katika msingi mbili. 27 00:01:32,470 --> 00:01:36,260 Hivyo kuongeza 2-0 kwa 1 to 2 njia yote juu. 28 00:01:36,260 --> 00:01:41,970 >> Kukokotoa kile ambacho binary yako ni decimal, wewe tu kufuata equation hii 29 00:01:41,970 --> 00:01:42,840 aina kitu. 30 00:01:42,840 --> 00:01:49,510 Kama una 1 katika yoyote ya maeneo hayo, wewe kuzidisha ni kwa chochote 31 00:01:49,510 --> 00:01:53,820 msingi ni katika, kuongeza it up, na kupata decimal. 32 00:01:53,820 --> 00:01:57,930 Hivyo hii ni jinsi gani kuhesabu 5 katika binary. 33 00:01:57,930 --> 00:02:01,400 Tu kama nini tunafanya juu ya mwisho slide, hii ni jinsi gani ingekuwa 34 00:02:01,400 --> 00:02:02,650 kuwakilisha 1 kwa 5. 35 00:02:02,650 --> 00:02:05,320 36 00:02:05,320 --> 00:02:09,660 >> Vile vile, tu kama unaweza kuongeza na Ondoa katika decimal au msingi 10, au 37 00:02:09,660 --> 00:02:13,040 kweli msingi wowote, juu ya anaweza kuongeza na Ondoa katika binary. 38 00:02:13,040 --> 00:02:18,400 Hasa nini ungependa kutarajia wakati wewe kuongeza mbili up, ikiwa ni sawa na zaidi 39 00:02:18,400 --> 00:02:24,220 ya 1, kubeba 1, kufanya hivyo 0, na kufanya Aidha njia hiyo, tu 40 00:02:24,220 --> 00:02:29,910 kama ungependa kutarajia kwa mara kwa mara au msingi decimal nyingine yoyote. 41 00:02:29,910 --> 00:02:30,970 Baridi. 42 00:02:30,970 --> 00:02:35,140 >> Hivyo kama nilivyosema hapo kabla, kila kitu unaendelea chini ya Hood ya kompyuta na yetu 43 00:02:35,140 --> 00:02:37,560 ni kufanyika katika 0 na 1, au binary. 44 00:02:37,560 --> 00:02:43,470 Hivyo ni jinsi gani sisi kueleza, kwa mfano, barua, au namba, au wahusika? 45 00:02:43,470 --> 00:02:45,560 Na jibu la kwamba ni ASCII. 46 00:02:45,560 --> 00:02:49,380 >> ASCII ni ramani kati ya wahusika kwamba tunataka kawaida kuona katika 47 00:02:49,380 --> 00:02:53,360 Lugha ya Kiingereza kama A ya, B ya, C ya, kusisitiza, dashes, na 48 00:02:53,360 --> 00:02:54,910 kitu kama hicho. 49 00:02:54,910 --> 00:02:57,260 Na ramani kwamba kwa thamani ASCII. 50 00:02:57,260 --> 00:03:03,080 Thamani ASCII ni idadi tu kwamba inaweza kueleweka na kompyuta yako. 51 00:03:03,080 --> 00:03:07,430 Na kama unaweza kufanya kujumlisha na kutoa na namba, unaweza kufanya 52 00:03:07,430 --> 00:03:10,890 yao na maadili ASCII. 53 00:03:10,890 --> 00:03:14,050 >> Hivyo katika mfano huu, nini itakuwa hii magazeti nje? 54 00:03:14,050 --> 00:03:26,790 55 00:03:26,790 --> 00:03:35,480 Yeah, hivyo tu nafasi B nafasi C nafasi D. wapi panya yangu kwenda? 56 00:03:35,480 --> 00:03:39,200 57 00:03:39,200 --> 00:03:43,380 Taarifa unaweza kufafanua int saa 65. 58 00:03:43,380 --> 00:03:47,080 Na wakati wewe magazeti kwamba nje kwa kutumia asilimia C, kutakuwa na kutafsiri kwamba kama 59 00:03:47,080 --> 00:03:49,330 tabia na magazeti nje A. 60 00:03:49,330 --> 00:03:52,800 >> Vile vile, unaweza kutangaza ni kama char. 61 00:03:52,800 --> 00:03:56,860 Na wakati magazeti ya nje kwa kutumia asilimia C, kutakuwa na kutafsiri kwamba kama 62 00:03:56,860 --> 00:04:05,240 asilimia D. Na kama unaweza kuongeza simu, unaweza kuongeza wahusika ni 63 00:04:05,240 --> 00:04:06,878 Maadili ASCII, katika kesi hii. 64 00:04:06,878 --> 00:04:11,370 65 00:04:11,370 --> 00:04:16,130 >> Hivyo pointer kidogo kwa ajili ya kila mtu. 66 00:04:16,130 --> 00:04:19,610 5, kama kamba, haina kweli sawa 5. 67 00:04:19,610 --> 00:04:26,610 Hivyo jinsi gani sisi kubadilisha kamba 5 kwa integer 5? 68 00:04:26,610 --> 00:04:28,930 Mawazo yoyote? 69 00:04:28,930 --> 00:04:31,630 Yeah. 70 00:04:31,630 --> 00:04:36,720 >> Hivyo kama tuna 5 kama kamba, tunaweza Ondoa 0. 71 00:04:36,720 --> 00:04:37,820 Na kwamba itabidi kutupa 5. 72 00:04:37,820 --> 00:04:41,670 Na vile vile, kama tuna 5 kama integer, kuongeza kwamba kwa kamba 0. 73 00:04:41,670 --> 00:04:43,112 Na kwamba inatupa kamba 5. 74 00:04:43,112 --> 00:04:46,350 75 00:04:46,350 --> 00:04:48,350 Baridi. 76 00:04:48,350 --> 00:04:52,940 >> Sasa, kukumbuka nyuma kwa hotuba moja ambapo kuongelea algorithms. 77 00:04:52,940 --> 00:04:57,260 Hivyo ni jinsi gani sisi kweli wanataka kompyuta kufanya mambo ya kuvutia? 78 00:04:57,260 --> 00:05:00,460 Unajua, kuongeza na subtracting tu namba na uchapishaji mambo ya nje ni si 79 00:05:00,460 --> 00:05:01,730 kwamba kusisimua. 80 00:05:01,730 --> 00:05:04,620 Kwa kawaida, tunataka kompyuta yetu kwa kufanya baadhi ya aina ya algorithm. 81 00:05:04,620 --> 00:05:07,820 Kitu kidogo ngumu zaidi kuliko rahisi tu hesabu. 82 00:05:07,820 --> 00:05:11,930 >> algorithm ni tu hatua kwa hatua kuweka ya maelekezo ya jinsi ya kufanya 83 00:05:11,930 --> 00:05:14,640 task-- fulani 84 00:05:14,640 --> 00:05:15,660 tu kama mapishi. 85 00:05:15,660 --> 00:05:19,990 Unaweza kukumbuka siku ya kwanza ya darasa ambapo Daudi alikuwa us kuhesabu chumba 86 00:05:19,990 --> 00:05:22,550 ya watu na jinsi watu wengi walikuwa katika chumba. 87 00:05:22,550 --> 00:05:24,480 Unaweza kutumika kwa kuhesabu moja kwa moja. 88 00:05:24,480 --> 00:05:25,860 1, 2, 3, 4. 89 00:05:25,860 --> 00:05:28,010 Katika kesi hiyo, linear wakati algorithm. 90 00:05:28,010 --> 00:05:31,710 >> Lakini Daudi ilianzisha algorithm kwa wewe kuhesabu watu katika chumba 91 00:05:31,710 --> 00:05:37,340 ambapo kila mtu anasimama up, unaweza kusema yako simu kwa mtu mwingine, kuongeza kwamba 92 00:05:37,340 --> 00:05:39,200 idadi juu, na mtu mmoja anakaa chini. 93 00:05:39,200 --> 00:05:40,410 Na wewe kurudia kwamba. 94 00:05:40,410 --> 00:05:42,910 Hiyo ni aina moja ya algorithm. 95 00:05:42,910 --> 00:05:47,520 Tunaweza kuchambua jinsi ufanisi an algorithm ni msingi wa ni kukimbia wakati. 96 00:05:47,520 --> 00:05:49,680 Lakini tutaweza kuzungumza kidogo zaidi juu ya kwamba baadaye. 97 00:05:49,680 --> 00:05:52,740 98 00:05:52,740 --> 00:05:57,090 >> Hivyo algorithms wote wanaweza pia kuandikwa katika pseudocode. 99 00:05:57,090 --> 00:06:01,120 Pseudocode ni tu Kiingereza kama syntax kutumika kuwakilisha 100 00:06:01,120 --> 00:06:02,420 lugha ya programu. 101 00:06:02,420 --> 00:06:06,070 Kwa mfano, kama sisi alitaka kuuliza user nadhani namba yangu favorite, sisi 102 00:06:06,070 --> 00:06:08,390 wanaweza kuwa na pseudocode kama vile. 103 00:06:08,390 --> 00:06:09,850 >> Kupata watumiaji nadhani. 104 00:06:09,850 --> 00:06:13,570 Kama nadhani ni sahihi, kuwaambia wao uko sahihi, mwingine kuwaambia 105 00:06:13,570 --> 00:06:15,560 wao siyo sahihi. 106 00:06:15,560 --> 00:06:22,530 Na pseudocode ni njia ya urahisi anayewakilisha wazo au algorithm. 107 00:06:22,530 --> 00:06:26,910 Hivyo sasa sisi kutaka kweli kuandika hii katika lugha ya kwamba kompyuta 108 00:06:26,910 --> 00:06:27,980 nguvu na akili. 109 00:06:27,980 --> 00:06:35,660 Hivyo tunaweza kuandika pseudocode yetu na kutafsiri kwamba katika chanzo code. 110 00:06:35,660 --> 00:06:41,320 >> Hadi sasa, chanzo code ni lazima zifuate kwa syntax baadhi ya 111 00:06:41,320 --> 00:06:42,490 lugha ya programu. 112 00:06:42,490 --> 00:06:45,430 Na hadi sasa, katika CS50, tumekuwa wamekuwa wakitumia zaidi c. 113 00:06:45,430 --> 00:06:48,320 Hivyo hii inaweza kuwa chanzo code kwa c. 114 00:06:48,320 --> 00:06:51,440 Baadaye katika shaka, wewe usiku kuja katika kuwasiliana na programu nyingine 115 00:06:51,440 --> 00:06:52,480 lugha kama PHP. 116 00:06:52,480 --> 00:06:57,540 Au kama wewe hata kuchukua madarasa mengine, wewe anaweza kufanya Java, Python, au hata OCML. 117 00:06:57,540 --> 00:07:01,570 Lakini katika yetu lugha mpango c, hii ni jinsi tupate kuandika chanzo code kwa 118 00:07:01,570 --> 00:07:04,760 pseudocode algorithm kwamba I just ilivyoelezwa hapo awali. 119 00:07:04,760 --> 00:07:08,630 120 00:07:08,630 --> 00:07:11,430 >> Hivyo ni jinsi gani kompyuta yako kweli kuelewa kwamba? 121 00:07:11,430 --> 00:07:14,490 Kama nilivyosema hapo kabla, tu kwa kweli anaelewa zeros na ndio. 122 00:07:14,490 --> 00:07:17,880 Hivyo ni jinsi gani kupata kutoka chanzo code kwa kitu ambacho unaweza kuwa 123 00:07:17,880 --> 00:07:18,960 kueleweka? 124 00:07:18,960 --> 00:07:22,920 Naam, sisi kuwa na kitu kuitwa compiler. 125 00:07:22,920 --> 00:07:28,450 >> Kama unakumbuka nyuma katika zaidi ya yako psets, alikuwa na aina fulani ya mpango 126 00:07:28,450 --> 00:07:30,370 imeandikwa katika dot c file. 127 00:07:30,370 --> 00:07:32,550 Na basi ingekuwa aina ya kufanya. 128 00:07:32,550 --> 00:07:35,970 Hivyo ni nini kufanya kufanya? 129 00:07:35,970 --> 00:07:39,970 >> Unaweza aina ya kufanya kukusanya yako mpango kwa sababu someone-- 130 00:07:39,970 --> 00:07:42,730 mtu aliandika p kuweka yako; pengine David-- 131 00:07:42,730 --> 00:07:44,190 kuundwa kufanya file. 132 00:07:44,190 --> 00:07:51,320 Na kwamba anasema kufanya kujua kuendesha yako compiler, iitwayo Clang, kwamba mapenzi 133 00:07:51,320 --> 00:07:55,560 kisha kukusanya chanzo code yako kwa kitu code, ambayo ni zeros na ndio 134 00:07:55,560 --> 00:07:57,720 kwamba kompyuta yako anaelewa. 135 00:07:57,720 --> 00:08:01,610 Lakini kidogo baadaye, tutakwenda zaidi katika kina kuhusu compilers. 136 00:08:01,610 --> 00:08:05,640 137 00:08:05,640 --> 00:08:10,800 >> Hivyo kukumbuka pset 0, where-- ndiyo, una swali? 138 00:08:10,800 --> 00:08:11,620 >> Watazamaji: [inaudible]? 139 00:08:11,620 --> 00:08:12,490 >> SPIKA 1: Ndiyo. 140 00:08:12,490 --> 00:08:14,960 Nadhani kwa kweli lazima online. 141 00:08:14,960 --> 00:08:15,120 Yeah. 142 00:08:15,120 --> 00:08:16,572 >> Watazamaji: Je, ni kama [inaudible]? 143 00:08:16,572 --> 00:08:19,476 144 00:08:19,476 --> 00:08:20,830 >> SPIKA 1: Ni si. 145 00:08:20,830 --> 00:08:25,810 The ni juu ya cs50.net/quizzes. 146 00:08:25,810 --> 00:08:32,900 >> Watazamaji: Slash Quizzes, kufyeka 2013, kufyeka 0, na click kupitia tu 147 00:08:32,900 --> 00:08:35,956 Quizzes 2013 na jaribio 0, mapitio ya slides sehemu. 148 00:08:35,956 --> 00:08:40,380 >> SPIKA 1: Yeah, hivyo kama wewe guys wanataka kuvuta it up na kuangalia ni juu yako 149 00:08:40,380 --> 00:08:42,740 kompyuta mwenyewe, hiyo ni nzuri pia. 150 00:08:42,740 --> 00:08:43,130 Kusema kwamba tena. 151 00:08:43,130 --> 00:08:44,546 >> Watazamaji: [inaudible]. 152 00:08:44,546 --> 00:08:48,780 >> SPIKA 1: Yeah, [inaudible] ni variable dummy. 153 00:08:48,780 --> 00:08:49,644 Oh, ndiyo? 154 00:08:49,644 --> 00:08:51,372 >> Watazamaji: [inaudible]? 155 00:08:51,372 --> 00:08:54,300 >> SPIKA 1: No, migomo si juu ya mtihani. 156 00:08:54,300 --> 00:08:55,950 Sorry, swali lake lilikuwa, alikuwa mgomo juu ya mtihani. 157 00:08:55,950 --> 00:08:59,530 Na ni si. 158 00:08:59,530 --> 00:09:05,780 Hivyo pset 0, you guys lazima kuwa na kila kutekelezwa kitu kwa kutumia mwanzo. 159 00:09:05,780 --> 00:09:13,100 Na sisi kujifunza baadhi ya programu ya msingi ujenzi wa vitalu kwa kutumia mwanzo. 160 00:09:13,100 --> 00:09:15,590 >> Basi hebu tuangalie baadhi wa vitalu haya jengo 161 00:09:15,590 --> 00:09:18,170 kwamba kufanya juu ya mpango. 162 00:09:18,170 --> 00:09:20,570 Kwanza ni kujieleza Boolean. 163 00:09:20,570 --> 00:09:24,540 Maneno Boolean ni ndio na 0 au kitu chochote 164 00:09:24,540 --> 00:09:25,700 maadili mbili iwezekanavyo. 165 00:09:25,700 --> 00:09:30,320 Katika kesi hiyo, kweli au uongo, juu au mbali, na ndiyo au hapana. 166 00:09:30,320 --> 00:09:35,390 mfano wa rahisi, rahisi sana, mpango kwamba anatumia Boolean 167 00:09:35,390 --> 00:09:39,140 kujieleza hapa. 168 00:09:39,140 --> 00:09:43,220 >> Hivyo ili kwa maneno Boolean kwa kuwa na manufaa, tuna operators Boolean. 169 00:09:43,220 --> 00:09:48,920 Hizi ni watoa huduma ambayo inaweza kutumika kulinganisha maadili fulani. 170 00:09:48,920 --> 00:09:52,820 Hivyo tuna na au si sawa na chini, kuliko au sawa na, kubwa zaidi kuliko au 171 00:09:52,820 --> 00:09:55,130 sawa na, na chini ya au mkuu kuliko mimi. 172 00:09:55,130 --> 00:09:59,060 Lakini waendeshaji wa haya si muhimu sana isipokuwa tunaweza kuchanganya yao katika 173 00:09:59,060 --> 00:10:00,320 masharti. 174 00:10:00,320 --> 00:10:04,370 >> Hivyo guys wapate kukumbuka kutoka mwanzo na kutoka p yako seti kwamba sisi 175 00:10:04,370 --> 00:10:05,400 alikuwa masharti. 176 00:10:05,400 --> 00:10:09,710 Wao ni, kimsingi, kama uma katika mantiki ya mpango wako kwamba 177 00:10:09,710 --> 00:10:12,670 executes kutegemea kama hali ni alikutana. 178 00:10:12,670 --> 00:10:18,150 Hivyo moja ya masharti kwamba tulikuwa kutumika mara nyingi katika kozi hii ni 179 00:10:18,150 --> 00:10:21,470 kama, mwingine, kama, na hali mwingine. 180 00:10:21,470 --> 00:10:24,060 >> Hapa ni mfano wa jinsi unaweza kutumia hiyo. 181 00:10:24,060 --> 00:10:28,430 Je, mtu yeyote kujua tofauti kati ya kutumia tu kama kauli zote 182 00:10:28,430 --> 00:10:32,530 njia ya chini mistari kama, mwingine, kama, na mwingine pamoja? 183 00:10:32,530 --> 00:10:33,013 Ndiyo? 184 00:10:33,013 --> 00:10:34,263 >> Watazamaji: [inaudible]. 185 00:10:34,263 --> 00:10:40,741 186 00:10:40,741 --> 00:10:42,160 >> SPIKA 1: Hasa. 187 00:10:42,160 --> 00:10:50,210 Hivyo kama mimi alikuwa kama njia yote chini hii njia, hata kama hali hii anarudi 188 00:10:50,210 --> 00:10:52,800 kweli, itakuwa bado wanaendelea kupima miwili ijayo. 189 00:10:52,800 --> 00:11:00,120 Wakati ambapo, na-kama mwingine, mwingine taarifa yake, kama moja anarudi kweli, 190 00:11:00,120 --> 00:11:02,640 wengine ni si kupima. 191 00:11:02,640 --> 00:11:05,955 Maswali yoyote kuhusu hilo? 192 00:11:05,955 --> 00:11:06,890 Baridi. 193 00:11:06,890 --> 00:11:12,240 >> Hivyo unaweza kutumia kama-mwingine wa mwingine kauli kama unajua kwamba unaweza tu 194 00:11:12,240 --> 00:11:14,470 kuwa moja ya kesi hizi. 195 00:11:14,470 --> 00:11:21,550 Hivyo sisi kujua kama x ni chini ya 0, ni dhahiri si kwenda kuwa 196 00:11:21,550 --> 00:11:22,890 kubwa kuliko 0. 197 00:11:22,890 --> 00:11:26,940 198 00:11:26,940 --> 00:11:31,480 >> Next, mwingine kuzuia ujenzi kwamba sisi kujifunza ni loops. 199 00:11:31,480 --> 00:11:33,310 Tuna aina tatu za loops. 200 00:11:33,310 --> 00:11:35,830 Kwa loops, wakati tanzi, na kufanya wakati loops. 201 00:11:35,830 --> 00:11:38,730 Na kwa ujumla, wakati wewe kukaa chini kwa kuandika kitu, una kuamua 202 00:11:38,730 --> 00:11:40,060 ambayo ya tatu unataka kutumia. 203 00:11:40,060 --> 00:11:41,900 Hivyo ni jinsi gani sisi kuamua ambayo moja? 204 00:11:41,900 --> 00:11:44,920 205 00:11:44,920 --> 00:11:48,790 >> Sisi kwa ujumla kutumia kwa kitanzi kama sisi kujua mara ngapi tunataka iterate 206 00:11:48,790 --> 00:11:53,650 kwa njia ya kitu au mara ngapi tunataka kufanya kazi. 207 00:11:53,650 --> 00:11:58,830 Sisi kutumia wakati loops kama sisi haja ya baadhi ya hali kuwa ni kweli kuweka mbio. 208 00:11:58,830 --> 00:12:03,730 Na sisi kutumia kufanya wakati sawa na wakati, lakini tunataka kanuni zetu kukimbia katika 209 00:12:03,730 --> 00:12:04,880 angalau mara moja. 210 00:12:04,880 --> 00:12:09,410 >> Hivyo kufanya wakati, chochote ni katika do mapenzi daima kukimbia angalau mara moja. 211 00:12:09,410 --> 00:12:13,120 Wakati ambapo, kwa wakati, inaweza si kukimbia wakati wote kama 212 00:12:13,120 --> 00:12:15,490 hali si ameridhika. 213 00:12:15,490 --> 00:12:16,740 Maswali yoyote kwa hilo? 214 00:12:16,740 --> 00:12:20,480 215 00:12:20,480 --> 00:12:22,860 >> Hivyo muundo wa kwa kitanzi. 216 00:12:22,860 --> 00:12:23,620 You guys kuwa wote kuonekana hii. 217 00:12:23,620 --> 00:12:25,320 You initialize. 218 00:12:25,320 --> 00:12:26,600 Una baadhi ya aina ya hali hiyo. 219 00:12:26,600 --> 00:12:32,340 Hivyo, kwa mfano, tunaweza initialize kama kwa i ni sawa na 0. 220 00:12:32,340 --> 00:12:34,040 i ni chini ya 10. 221 00:12:34,040 --> 00:12:35,442 Na i ++. 222 00:12:35,442 --> 00:12:39,010 Rahisi sana moja kwamba tumefanya. 223 00:12:39,010 --> 00:12:42,210 >> Kwa kitanzi wakati, vile vile, una kuwa na baadhi ya aina ya initialization, 224 00:12:42,210 --> 00:12:44,980 baadhi ya aina ya hali, na baadhi ya aina ya update. 225 00:12:44,980 --> 00:12:51,990 Hivyo tunaweza kutekeleza wetu kwa kitanzi pia kama kitanzi wakati kutumia hii. 226 00:12:51,990 --> 00:12:56,000 Na vile vile kwa do wakati kitanzi, tuweze kuwa na baadhi initialization, 227 00:12:56,000 --> 00:12:58,640 nitafanya kitu, update, na kisha kuangalia hali. 228 00:12:58,640 --> 00:13:03,500 229 00:13:03,500 --> 00:13:05,140 >> Hivyo sasa kazi. 230 00:13:05,140 --> 00:13:06,460 Sisi kuweka kila kitu pamoja. 231 00:13:06,460 --> 00:13:10,140 Sisi kutaka kuandika baadhi aina ya kazi. 232 00:13:10,140 --> 00:13:12,790 Kazi ya kawaida kwamba huenda tumeona tayari ni kuu. 233 00:13:12,790 --> 00:13:13,770 Kuu ni kazi. 234 00:13:13,770 --> 00:13:16,160 Ina aina ya kurudi, int. 235 00:13:16,160 --> 00:13:18,470 Ni ina kazi jina, kuu. 236 00:13:18,470 --> 00:13:20,810 Na ina hoja, argc na argv. 237 00:13:20,810 --> 00:13:24,040 Hivyo kuu ni tu kazi. 238 00:13:24,040 --> 00:13:27,230 >> Kazi nyingine unaweza kuwa na kutumika, printf-- printf ni function-- 239 00:13:27,230 --> 00:13:29,330 GetInt, toupper. 240 00:13:29,330 --> 00:13:32,010 Lakini hizi kutokea kwa kuwa kutekelezwa kwa ajili yetu kwa 241 00:13:32,010 --> 00:13:33,270 baadhi ya aina ya maktaba. 242 00:13:33,270 --> 00:13:37,400 Kama wewe guys kumbuka ikiwa ni pamoja na maktaba hii CS50.h au 243 00:13:37,400 --> 00:13:38,510 standard I / O maktaba. 244 00:13:38,510 --> 00:13:39,200 Ndiyo, swali? 245 00:13:39,200 --> 00:13:41,610 >> Watazamaji: Je, kuu tu asili katika c? 246 00:13:41,610 --> 00:13:44,740 Je, ni aina tu ya [inaudible]? 247 00:13:44,740 --> 00:13:47,370 >> SPIKA 1: swali ni kama kuu ni asili katika c. 248 00:13:47,370 --> 00:13:51,460 Na ndiyo, kazi zote kuwa na kazi kuu. 249 00:13:51,460 --> 00:13:55,290 Ni aina ya muhimu kwa ajili ya kompyuta kujua wapi kuanza 250 00:13:55,290 --> 00:13:55,993 mbio code. 251 00:13:55,993 --> 00:13:58,108 >> Watazamaji: Hivyo wewe ungekuwa si [inaudible]? 252 00:13:58,108 --> 00:13:59,480 >> SPIKA 1: Hapana 253 00:13:59,480 --> 00:14:00,760 Yoyote maswali mengine? 254 00:14:00,760 --> 00:14:03,430 255 00:14:03,430 --> 00:14:04,770 Baridi. 256 00:14:04,770 --> 00:14:08,050 Hivyo kama wewe unaweza kutumia kazi kwamba imeandikwa kwa ajili yenu, unaweza pia 257 00:14:08,050 --> 00:14:10,380 kuandika kazi yako mwenyewe. 258 00:14:10,380 --> 00:14:17,050 Hii ni kazi ambayo mtu anaweza wameandika kwa mahesabu ya kiasi 259 00:14:17,050 --> 00:14:18,395 q ya, kwa mfano. 260 00:14:18,395 --> 00:14:21,300 261 00:14:21,300 --> 00:14:29,500 Kuna aina ya kurudi hapa, katika kesi hii int, yetu jina kazi q na yetu 262 00:14:29,500 --> 00:14:31,360 orodha ya vigezo. 263 00:14:31,360 --> 00:14:34,550 >> Na kumbuka kuwa una kuandika data aina ya parameter unataka 264 00:14:34,550 --> 00:14:38,660 kutumia au mwingine kazi haina kujua ni aina gani ya 265 00:14:38,660 --> 00:14:41,650 parameter anatakiwa kuwa na kukubali. 266 00:14:41,650 --> 00:14:48,110 Hivyo, katika kesi hii, tunataka integer kama pembejeo zetu. 267 00:14:48,110 --> 00:14:50,390 Hivyo kwa nini huenda tunataka kutumia kazi? 268 00:14:50,390 --> 00:14:52,800 >> Awali ya yote, kubwa kwa ajili ya shirika. 269 00:14:52,800 --> 00:14:56,350 Wao kusaidia kuvunja kanuni yako katika zaidi kupangwa chunks na kufanya 270 00:14:56,350 --> 00:14:57,960 ni rahisi kusoma. 271 00:14:57,960 --> 00:14:59,760 Kurahisisha. 272 00:14:59,760 --> 00:15:01,740 Hii ni nzuri kwa ajili ya kubuni. 273 00:15:01,740 --> 00:15:04,570 Wakati wewe ni kusoma kipande cha code na kazi kuu ni kweli, 274 00:15:04,570 --> 00:15:07,750 kweli kwa muda mrefu, inaweza kuwa vigumu kwa sababu kuhusu nini kinaendelea. 275 00:15:07,750 --> 00:15:11,710 Hivyo kama wewe kuvunja chini katika kazi, inaweza kuwa rahisi kusoma. 276 00:15:11,710 --> 00:15:12,750 Na kutumia tena-uwezo. 277 00:15:12,750 --> 00:15:16,940 Kama una chunk ya maadili ya hiyo kuwa kuitwa au kukimbia mara nyingi, 278 00:15:16,940 --> 00:15:20,690 badala ya marudio ya andiko kwamba kanuni mara 10 katika kazi yako kuu, unaweza 279 00:15:20,690 --> 00:15:21,440 wanataka kutumia tena hiyo. 280 00:15:21,440 --> 00:15:25,740 Na kisha kila wakati unahitaji kutumia kwamba kipande cha code, piga kazi. 281 00:15:25,740 --> 00:15:30,550 282 00:15:30,550 --> 00:15:35,380 >> Hivyo sasa kama sisi kumbuka nyuma scratch, sisi pia alizungumzia kuhusu dhana chache, 283 00:15:35,380 --> 00:15:37,680 moja ambayo ni ya threading. 284 00:15:37,680 --> 00:15:41,120 Thread ni dhana ya nyingi Utaratibu wa kanuni 285 00:15:41,120 --> 00:15:43,040 utekelezaji kwa wakati mmoja. 286 00:15:43,040 --> 00:15:47,490 Hivyo kufikiri nyuma kwa siku moja ambapo Daudi alikuwa you guys kuhesabu off ya simu ya 287 00:15:47,490 --> 00:15:48,440 watu katika chumba. 288 00:15:48,440 --> 00:15:50,550 >> Kimsingi, nini kinachoendelea juu ya ni wote wa wewe guys walikuwa 289 00:15:50,550 --> 00:15:52,370 mbio threads tofauti. 290 00:15:52,370 --> 00:15:55,540 Na wale threads walikuwa kuja pamoja kupata baadhi ya aina ya jibu. 291 00:15:55,540 --> 00:15:58,890 Vile vile, katika Scratch, wakati una sprites nyingi, waweza 292 00:15:58,890 --> 00:16:01,070 kuwa na paka na mbwa. 293 00:16:01,070 --> 00:16:08,770 Na wangekuwa wakati huo huo mbio scripts zao wenyewe. 294 00:16:08,770 --> 00:16:10,020 Hiyo ni mfano wa threading. 295 00:16:10,020 --> 00:16:12,860 296 00:16:12,860 --> 00:16:18,000 >> Na dhana nyingine kwamba alikuwa ilianzisha katika mwanzo alikuwa matukio. 297 00:16:18,000 --> 00:16:22,550 Na matukio ni sehemu wakati mbalimbali ya code yako ya kuwasiliana na kila mmoja. 298 00:16:22,550 --> 00:16:26,840 Katika Scratch, hii ilikuwa wakati wewe kutumika matangazo ya kudhibiti na Wakati mimi 299 00:16:26,840 --> 00:16:29,500 Kupokea vitalu. 300 00:16:29,500 --> 00:16:35,170 >> Na pia, katika Tatizo Set 4, tuliona kidogo ya matukio kama vizuri. 301 00:16:35,170 --> 00:16:38,250 You guys wanaweza kuwa na kutumika Maktaba Gevent. 302 00:16:38,250 --> 00:16:42,450 Na kulikuwa na kazi waitForClick katika ambayo wewe walikuwa wakisubiri 303 00:16:42,450 --> 00:16:44,300 kwa mtumiaji click. 304 00:16:44,300 --> 00:16:47,870 Na click yako, katika kesi hii, itakuwa tukio hilo na kusubiri kwa ajili ya click ni yako 305 00:16:47,870 --> 00:16:49,120 tukio handler. 306 00:16:49,120 --> 00:16:53,690 307 00:16:53,690 --> 00:16:58,630 >> Na pia, katika mbio psets yako na kufanya kazi juu ya psets yako, 308 00:16:58,630 --> 00:17:01,920 anaweza kuwa kuja katika kuwasiliana na baadhi ya amri hizi. 309 00:17:01,920 --> 00:17:05,579 Hii ni nini typed ndani yako terminal dirisha au chochote dirisha 310 00:17:05,579 --> 00:17:12,119 kwamba inaonyesha juu ya g yako hariri kwa, kimsingi, navigate kompyuta yako. 311 00:17:12,119 --> 00:17:19,440 >> Hivyo kwa mfano, LS orodha yaliyomo ya directory. 312 00:17:19,440 --> 00:17:22,510 Kufanya directory inajenga folder mpya. 313 00:17:22,510 --> 00:17:24,819 CD, mabadiliko directory. 314 00:17:24,819 --> 00:17:28,400 RM, kuondoa, deletes faili au baadhi ya directory. 315 00:17:28,400 --> 00:17:31,050 Na kisha kuondoa directory kuondosha directory. 316 00:17:31,050 --> 00:17:32,300 >> Watazamaji: [inaudible]? 317 00:17:32,300 --> 00:17:36,978 318 00:17:36,978 --> 00:17:38,370 >> SPIKA 1: Yeah, uhakika. 319 00:17:38,370 --> 00:17:42,530 320 00:17:42,530 --> 00:17:46,040 Sorry, swali lilikuwa kama wewe kupendekeza kuweka hii 321 00:17:46,040 --> 00:17:48,840 kwenye karatasi kudanganya. 322 00:17:48,840 --> 00:17:49,440 Ni inaweza kusaidia. 323 00:17:49,440 --> 00:17:51,490 Kama una chumba, unaweza kuweka juu. 324 00:17:51,490 --> 00:17:56,170 Ni pia kwa ujumla tu nzuri ya kutosha kukumbuka kwa sababu wakati matumizi yake 325 00:17:56,170 --> 00:17:59,060 unaweza kutaka tu kuwa ni kujikumbusha. 326 00:17:59,060 --> 00:18:02,750 Kwamba kutakuwa na kufanya maisha yako rahisi sana. 327 00:18:02,750 --> 00:18:04,000 Je, mimi kujibu swali lako? 328 00:18:04,000 --> 00:18:10,528 329 00:18:10,528 --> 00:18:14,290 >> Hivyo sasa, sisi aliyesema kidogo kwa ufupi kuhusu maktaba. 330 00:18:14,290 --> 00:18:18,570 Lakini wale kuu mbili ambazo tumekuwa kutumia hadi sasa katika shaka ni 331 00:18:18,570 --> 00:18:20,860 standard I / O na cs50. 332 00:18:20,860 --> 00:18:25,410 Ni aina gani ya mambo ni pamoja na katika kiwango I / O maktaba? 333 00:18:25,410 --> 00:18:28,410 >> Yeah, hivyo mbali tumekuwa kutumika printf. 334 00:18:28,410 --> 00:18:31,150 Katika cs50, tumekuwa kutumika GetInt na GetString. 335 00:18:31,150 --> 00:18:37,200 Na kamba ya aina data pia hutokea kutangazwa kuwa katika maktaba hii cs50. 336 00:18:37,200 --> 00:18:40,250 Tutaweza kuongea kidogo zaidi katika kina kuhusu jinsi maktaba kazi na jinsi wao 337 00:18:40,250 --> 00:18:41,870 kuingiliana na wengine wa code yako. 338 00:18:41,870 --> 00:18:46,220 Lakini hao ndio kuu mbili ambazo sisi kuwa kuja katika kuwasiliana na hadi sasa katika 339 00:18:46,220 --> 00:18:48,430 bila shaka. 340 00:18:48,430 --> 00:18:50,050 >> Aina. 341 00:18:50,050 --> 00:18:58,120 Hizi ni nzuri kwa kukumbuka ni kiasi gani kila aina ni inawakilishwa na au jinsi 342 00:18:58,120 --> 00:19:02,840 ka wengi kila aina ya requires-- 343 00:19:02,840 --> 00:19:04,990 int, 4 ka; char, 1 Byte. 344 00:19:04,990 --> 00:19:06,550 Float ni 4 ka. 345 00:19:06,550 --> 00:19:07,782 Nini ni mara mbili? 346 00:19:07,782 --> 00:19:09,032 >> Watazamaji: [inaudible]. 347 00:19:09,032 --> 00:19:11,398 348 00:19:11,398 --> 00:19:16,240 >> SPIKA 1: Yeah, hivyo kuelea lakini mara mbili ya ukubwa. 349 00:19:16,240 --> 00:19:17,150 Nini juu ya muda mrefu? 350 00:19:17,150 --> 00:19:18,400 >> Watazamaji: [inaudible]. 351 00:19:18,400 --> 00:19:21,614 352 00:19:21,614 --> 00:19:24,680 >> SPIKA 1: OK. 353 00:19:24,680 --> 00:19:25,410 Nini ni muda mrefu? 354 00:19:25,410 --> 00:19:26,660 >> Watazamaji: [inaudible]. 355 00:19:26,660 --> 00:19:29,400 356 00:19:29,400 --> 00:19:31,450 >> SPIKA 1: Yeah, mara mbili int. 357 00:19:31,450 --> 00:19:34,240 358 00:19:34,240 --> 00:19:34,705 Ndiyo. 359 00:19:34,705 --> 00:19:36,100 >> Watazamaji: [inaudible]. 360 00:19:36,100 --> 00:19:38,030 >> SPIKA 1: Long [inaudible]. 361 00:19:38,030 --> 00:19:41,860 Na kisha kwa muda mrefu kwa muda mrefu ni mara mbili kwamba. 362 00:19:41,860 --> 00:19:42,814 >> Watazamaji: No, no. 363 00:19:42,814 --> 00:19:47,107 muda mrefu ni tu int. 364 00:19:47,107 --> 00:19:50,910 Ni inategemea usanifu kabla ya [inaudible] 365 00:19:50,910 --> 00:19:52,922 na int na ukubwa huo. 366 00:19:52,922 --> 00:19:54,172 [Inaudible]. 367 00:19:54,172 --> 00:19:58,841 368 00:19:58,841 --> 00:20:00,920 >> SPIKA 1: Kwa hiyo kwa muda mrefu na int ni sawa. 369 00:20:00,920 --> 00:20:02,943 Na kisha kwa muda mrefu kwa muda mrefu ni mara mbili int. 370 00:20:02,943 --> 00:20:03,910 Baridi. 371 00:20:03,910 --> 00:20:05,550 Na kisha, nini ni ya aina mwisho? 372 00:20:05,550 --> 00:20:06,510 >> Watazamaji: Pointer. 373 00:20:06,510 --> 00:20:10,350 >> SPIKA 1: Yeah, hivyo sisi kujifunza kidogo kuhusu kuyatumia. 374 00:20:10,350 --> 00:20:14,015 Na bila kujali nini pointer ni akizungumzia to-- inaweza kuwa nyota char 375 00:20:14,015 --> 00:20:15,880 au int star-- 376 00:20:15,880 --> 00:20:20,530 mara nyingi ni 4 ka kwa pointer. 377 00:20:20,530 --> 00:20:21,633 Maswali kuhusu hilo? 378 00:20:21,633 --> 00:20:22,116 Ndiyo? 379 00:20:22,116 --> 00:20:24,531 >> Watazamaji: [inaudible]? 380 00:20:24,531 --> 00:20:29,530 >> SPIKA 1: Kwa hiyo kwa muda mrefu na int ni huo katika hii appliance CS50. 381 00:20:29,530 --> 00:20:32,302 >> Watazamaji: appliance ni kabisa interchangeable. 382 00:20:32,302 --> 00:20:33,510 >> SPIKA 1: Yeah. 383 00:20:33,510 --> 00:20:36,610 Hivyo basi kwa muda mrefu kwa muda mrefu ni mara mbili int. 384 00:20:36,610 --> 00:20:39,250 >> Watazamaji: Hii ni kidogo 32? 385 00:20:39,250 --> 00:20:40,620 >> SPIKA 1: 32 kidogo, yeah. 386 00:20:40,620 --> 00:20:43,572 >> Watazamaji: Hivyo [inaudible]? 387 00:20:43,572 --> 00:20:46,790 >> SPIKA 1: Ndiyo, kama hana wazi kusema, wewe 388 00:20:46,790 --> 00:20:47,870 lazima kudhani 32 bit. 389 00:20:47,870 --> 00:20:50,040 >> Watazamaji: Ni bila kusema kitu kama kuchukua 390 00:20:50,040 --> 00:20:51,498 usanifu kama appliance. 391 00:20:51,498 --> 00:20:58,800 392 00:20:58,800 --> 00:21:01,710 Kwa 64 kidogo, mambo tu kwamba mabadiliko ni longs na kuyatumia. 393 00:21:01,710 --> 00:21:05,614 Wote wawili [inaudible]. 394 00:21:05,614 --> 00:21:06,590 >> SPIKA 1: Ndiyo? 395 00:21:06,590 --> 00:21:07,566 >> Watazamaji: Swali. 396 00:21:07,566 --> 00:21:10,982 Hivyo kwenye moja ya Quizzes mazoezi, anauliza kuhusu unsigned int. 397 00:21:10,982 --> 00:21:15,374 Hivyo jinsi gani kwamba kuwa amedhamiria kutoka int [inaudible]? 398 00:21:15,374 --> 00:21:18,140 >> SPIKA 1: unsigned katika ni pia 4 ka. 399 00:21:18,140 --> 00:21:21,172 Lakini nini ni tofauti kuhusu saini int na unsigned int? 400 00:21:21,172 --> 00:21:22,422 >> Watazamaji: [inaudible]. 401 00:21:22,422 --> 00:21:24,868 402 00:21:24,868 --> 00:21:25,630 >> SPIKA 1: Haki. 403 00:21:25,630 --> 00:21:27,570 Mtu anaweza kuwakilisha maadili hasi. 404 00:21:27,570 --> 00:21:28,580 Lakini jinsi gani kufanya hivyo? 405 00:21:28,580 --> 00:21:30,536 >> Watazamaji: [inaudible]. 406 00:21:30,536 --> 00:21:36,370 >> SPIKA 1: Yeah, ni anaokoa 1 bit kuwakilisha ishara. 407 00:21:36,370 --> 00:21:40,910 408 00:21:40,910 --> 00:21:45,040 saini ina moja kidogo kwamba inawakilisha ishara. 409 00:21:45,040 --> 00:21:48,886 Na unsigned tu ni chanya wote. 410 00:21:48,886 --> 00:21:50,365 >> Watazamaji: OK. 411 00:21:50,365 --> 00:21:54,230 Hivyo, unaweza kusema kwamba mara mbili ni mara mbili ya ukubwa wa kuelea? 412 00:21:54,230 --> 00:21:58,202 >> SPIKA 1: Double ni mara mbili ukubwa wa kuelea, ndiyo. 413 00:21:58,202 --> 00:22:01,639 >> Watazamaji: Ni jinsi gani pointer kwa muda mrefu muda mrefu [inaudible]? 414 00:22:01,639 --> 00:22:06,058 415 00:22:06,058 --> 00:22:10,870 >> SPIKA 1: Hivyo swali ni jinsi gani pointer kwa muda mrefu long-- 416 00:22:10,870 --> 00:22:13,800 jinsi ni kwamba nne tu ka wakati ya muda mrefu yake 8 bytes. 417 00:22:13,800 --> 00:22:17,310 Hivyo kukumbuka nini ni pointer, kimsingi, katika thamani ya msingi sana. 418 00:22:17,310 --> 00:22:19,046 >> Watazamaji: [inaudible]. 419 00:22:19,046 --> 00:22:22,670 >> SPIKA 1: Yeah, hivyo pointer ni tu eneo la kumbukumbu. 420 00:22:22,670 --> 00:22:28,040 Hivyo haijalishi ni kiasi gani nafasi kwamba pointer ni akizungumzia. 421 00:22:28,040 --> 00:22:32,060 Ni tu mahitaji 4 ka kuweka wimbo ya kwamba eneo la kumbukumbu. 422 00:22:32,060 --> 00:22:34,760 423 00:22:34,760 --> 00:22:36,010 Yoyote maswali mengine? 424 00:22:36,010 --> 00:22:39,800 425 00:22:39,800 --> 00:22:41,050 Baridi. 426 00:22:41,050 --> 00:22:42,920 427 00:22:42,920 --> 00:22:47,460 >> Kwa hivyo jambo la mwisho nina ni pato standard. 428 00:22:47,460 --> 00:22:51,020 Unapaswa kutumia yao mara kwa mara kutosha kwamba unaweza kukumbuka. 429 00:22:51,020 --> 00:22:54,800 Lakini hii ni wakati sisi kutumia printf, kwa mfano. 430 00:22:54,800 --> 00:22:59,260 Na tuna placeholders haya ambayo waliitwa codes format. 431 00:22:59,260 --> 00:23:03,910 >> Hivyo asilimia c char, asilimia i kwa int, na tunaweza pia kutumia asilimia d. 432 00:23:03,910 --> 00:23:05,130 Ni kitu kimoja. 433 00:23:05,130 --> 00:23:08,200 Lakini kwa ujumla, katika CS50 sisi kujaribu kutumia asilimia i. 434 00:23:08,200 --> 00:23:09,860 Asilimia f kwa kuelea. 435 00:23:09,860 --> 00:23:15,620 Asilimia LD kwa muda mrefu kwa muda mrefu na asilimia s kwa kamba. 436 00:23:15,620 --> 00:23:18,550 >> Vile vile, sisi tumekuwa kutumia chache Utaratibu wa haya kutoroka. 437 00:23:18,550 --> 00:23:22,431 Kwa mfano, backslash n kwa mstari mpya. 438 00:23:22,431 --> 00:23:26,910 Hii ni kwa wakati wewe ni formatting code yako kwa ajili ya magazeti f. 439 00:23:26,910 --> 00:23:27,260 Ndiyo? 440 00:23:27,260 --> 00:23:28,906 >> Watazamaji: asilimia d ni kwa nini? 441 00:23:28,906 --> 00:23:31,850 >> SPIKA 1: Hivyo swali ni nini ni asilimia d kwa? 442 00:23:31,850 --> 00:23:33,270 Asilimia d ni kwa ints. 443 00:23:33,270 --> 00:23:37,392 Asilimia d na asilimia i ni sawa. 444 00:23:37,392 --> 00:23:41,130 >> Watazamaji: Nini tofauti kati ya backslash n na backslash r? 445 00:23:41,130 --> 00:23:45,300 >> SPIKA 1: Hivyo swali ni nini tofauti kati ya kuwepo kwa kuzorota n na 446 00:23:45,300 --> 00:23:48,615 kuwepo kwa kuzorota r? 447 00:23:48,615 --> 00:23:50,906 Nadhani backslash r is-- 448 00:23:50,906 --> 00:23:54,340 >> Watazamaji: Hivyo backslash r tu ina maana anarudi mwanzo wa mstari 449 00:23:54,340 --> 00:23:56,670 bila kweli kwenda mstari mpya. 450 00:23:56,670 --> 00:24:01,000 Hivyo kama wewe magazeti backslash r na wewe kwenda nyuma ya mwanzo wa mstari 451 00:24:01,000 --> 00:24:04,005 kisha magazeti mambo zaidi, overwrite mambo ambayo tayari juu ya 452 00:24:04,005 --> 00:24:04,390 [Inaudible]. 453 00:24:04,390 --> 00:24:06,725 Wakati, n kweli inakwenda kwa mpya line na huenda na [inaudible]. 454 00:24:06,725 --> 00:24:10,525 455 00:24:10,525 --> 00:24:13,915 >> SPIKA 1: Naam, maswali mengine yoyote? 456 00:24:13,915 --> 00:24:15,430 Wote haki. 457 00:24:15,430 --> 00:24:18,617 Mimi nina kwenda mkono ni mbali na Dan ambao utaendelea. 458 00:24:18,617 --> 00:24:25,078 >> [Makofi] 459 00:24:25,078 --> 00:25:08,814 460 00:25:08,814 --> 00:25:09,720 >> DAN: righty yote. 461 00:25:09,720 --> 00:25:18,590 Hivyo mimi itabidi kuzungumza juu ya mwingine pana mbalimbali ya mawazo kutoka darasa kwamba ni 462 00:25:18,590 --> 00:25:23,220 takribani wiki mbili mwakilishi wa na mwanzo wa wiki tatu kuanzia mbali 463 00:25:23,220 --> 00:25:28,690 na akitoa, ambayo ni njia tu ya kutibu thamani wa aina fulani kama 464 00:25:28,690 --> 00:25:30,830 thamani ya aina tofauti. 465 00:25:30,830 --> 00:25:34,110 Hivyo tunaweza kufanya huu kwa chars kwa ints, ikifungwa kwa ints, na 466 00:25:34,110 --> 00:25:35,360 longs kwa muda mrefu kwa mara mbili. 467 00:25:35,360 --> 00:25:38,170 468 00:25:38,170 --> 00:25:44,500 >> Mambo yote haya inaweza kutumika kama njia ya kutibu baadhi ya thamani numeric 469 00:25:44,500 --> 00:25:48,370 minus char kama baadhi ya wengine numeric thamani. 470 00:25:48,370 --> 00:25:54,480 Hivyo kuna baadhi ya masuala na hii, Bila shaka, ambayo inakuja wakati kutupwa 471 00:25:54,480 --> 00:25:57,860 mambo kama kuelea kwa ints. 472 00:25:57,860 --> 00:26:00,500 Hivyo hii ni kidogo weird. 473 00:26:00,500 --> 00:26:03,170 Tuna kuelea kwamba ni 1.31. 474 00:26:03,170 --> 00:26:05,220 Sisi kuzidisha ni kwa 10,000. 475 00:26:05,220 --> 00:26:08,380 Na kisha sisi magazeti kama int. 476 00:26:08,380 --> 00:26:09,630 Je pato hili? 477 00:26:09,630 --> 00:26:11,600 478 00:26:11,600 --> 00:26:14,020 Mara 10,000 1.31. 479 00:26:14,020 --> 00:26:18,761 Hivyo 13,000, ni kwamba nadhani? 480 00:26:18,761 --> 00:26:20,685 >> Watazamaji: Nadhani ni 10,000. 481 00:26:20,685 --> 00:26:24,234 >> DAN: Hivyo mimi nina kuzidisha ni kwa 10,000 kabla ya mimi nina akitoa yake. 482 00:26:24,234 --> 00:26:25,202 >> Watazamaji: Oh. 483 00:26:25,202 --> 00:26:27,622 Je, si kuna mmoja 9 na baadhi 0 namba? 484 00:26:27,622 --> 00:26:29,270 >> DAN: Unaweza kuwa baadhi tarakimu weird. 485 00:26:29,270 --> 00:26:32,410 486 00:26:32,410 --> 00:26:37,670 Hivyo kulia, ni 1.3 mara 10,000. 487 00:26:37,670 --> 00:26:40,040 Hivyo hiyo ni 13,000. 488 00:26:40,040 --> 00:26:41,313 Na weird-- hii ya ziada 489 00:26:41,313 --> 00:26:42,160 >> Watazamaji: 13,100. 490 00:26:42,160 --> 00:26:42,650 >> DAN: 13,100. 491 00:26:42,650 --> 00:26:44,910 Asante, Rob. 492 00:26:44,910 --> 00:26:46,610 Na weirdness-- hii ya ziada 493 00:26:46,610 --> 00:26:48,060 hii 9,9-- 494 00:26:48,060 --> 00:26:53,860 ni kwa sababu tu akitoa hii kuishia rounding chini ambapo 495 00:26:53,860 --> 00:26:55,394 ni lazima kuwa. 496 00:26:55,394 --> 00:26:55,871 Yeah. 497 00:26:55,871 --> 00:26:58,256 >> Watazamaji: akitoa hutokea baada ya kitu kingine? 498 00:26:58,256 --> 00:27:03,865 >> DAN: Kwa hiyo kwa sababu mimi kuwa na hii katika magazeti, gani kuzidisha hii kabla 499 00:27:03,865 --> 00:27:05,230 gani akitoa huu. 500 00:27:05,230 --> 00:27:06,140 >> Watazamaji: [inaudible]. 501 00:27:06,140 --> 00:27:11,350 >> DAN: Nadhani itakuwa kutupwa kwanza, yeah, ambayo itakuwa ni 10,000. 502 00:27:11,350 --> 00:27:12,610 Kitu kingine? 503 00:27:12,610 --> 00:27:13,330 Baridi. 504 00:27:13,330 --> 00:27:16,344 Hivyo hii ni 13,099. 505 00:27:16,344 --> 00:27:17,840 Kwa nini hii kutokea? 506 00:27:17,840 --> 00:27:18,900 Kutokuwa sahihi. 507 00:27:18,900 --> 00:27:21,020 >> Ikifungwa ni si kamilifu. 508 00:27:21,020 --> 00:27:27,550 Wanaweza tu kuwakilisha idadi ya baadhi ya idadi ya takwimu muhimu. 509 00:27:27,550 --> 00:27:35,120 Hivyo kama sisi magazeti nje 8 sig tini katika kuelea hii, sisi kupata aina ya 510 00:27:35,120 --> 00:27:36,800 ugly kuangalia idadi. 511 00:27:36,800 --> 00:27:45,580 Na hiyo ni kwa sababu 1.31 hawawezi usahihi kuwakilishwa na rahisi 512 00:27:45,580 --> 00:27:49,000 mamlaka ya mbili katika mashine. 513 00:27:49,000 --> 00:27:53,530 Hivyo ni kuishia kuchukua karibu nadhani, ambayo mwisho juu 514 00:27:53,530 --> 00:27:55,710 kuwa kidogo chini. 515 00:27:55,710 --> 00:27:57,730 Mantiki? 516 00:27:57,730 --> 00:27:59,110 OK. 517 00:27:59,110 --> 00:28:05,840 >> Sasa, switched ni njia tofauti ya kufanya kauli masharti ambapo wote 518 00:28:05,840 --> 00:28:09,900 sisi huduma ya juu ni variable moja. 519 00:28:09,900 --> 00:28:16,570 Hivyo katika mfano huu hasa, sisi ni kupata integer kutoka kwa mtumiaji. 520 00:28:16,570 --> 00:28:21,070 Na kisha sisi ni kuangalia nini kwamba integer ni. 521 00:28:21,070 --> 00:28:23,500 Takribani, ni idadi kati ya mmoja na nne. 522 00:28:23,500 --> 00:28:24,800 Hiyo ni nini sisi ni kuuliza kwa. 523 00:28:24,800 --> 00:28:28,450 >> Hivyo kufanya kubadili ya jina kutofautiana. 524 00:28:28,450 --> 00:28:34,290 Kisha wewe kuanzisha kesi ya uwezekano wa maadili inaweza kuwa. 525 00:28:34,290 --> 00:28:37,730 Hivyo kesi moja, wanasema ni ya chini. 526 00:28:37,730 --> 00:28:41,080 Na kisha kuvunja kupata nje wa hali ya kubadili hivyo 527 00:28:41,080 --> 00:28:43,270 huna kuendelea. 528 00:28:43,270 --> 00:28:44,830 >> Katika case-- ya 529 00:28:44,830 --> 00:28:46,940 hivyo kesi mbili na kesi three-- 530 00:28:46,940 --> 00:28:51,920 kama ni kesi mbili tu matone chini ya mstari wa kwanza wa code anaona kama kwa 531 00:28:51,920 --> 00:28:55,400 Uchunguzi tatu mpaka anaona mapumziko. 532 00:28:55,400 --> 00:29:00,430 Hivyo sababu wewe kupata kesi moja kwa tu magazeti ya chini ni kwa sababu mimi 533 00:29:00,430 --> 00:29:01,890 kuwa na mapumziko hii hapa. 534 00:29:01,890 --> 00:29:05,360 Kama mimi, kusema, kupuuzwa break-- hii kama mimi kurusha breakaway-- hii 535 00:29:05,360 --> 00:29:09,740 ingekuwa magazeti ya chini, na basi ingekuwa magazeti katikati, na basi itakuwa mapumziko. 536 00:29:09,740 --> 00:29:12,200 >> Hivyo mapumziko ni sehemu muhimu ya kubadili hali na 537 00:29:12,200 --> 00:29:14,340 wanapaswa kuwa huko. 538 00:29:14,340 --> 00:29:20,070 Kesi yoyote ambayo si alisema waziwazi ni kubebwa na default 539 00:29:20,070 --> 00:29:26,645 kesi katika kubadili na kutupwa. 540 00:29:26,645 --> 00:29:31,363 >> Watazamaji: Hivyo 1, 2, 3, na 4 itakuwa n? 541 00:29:31,363 --> 00:29:33,310 >> DAN: Maadili n wanaweza kuwa. 542 00:29:33,310 --> 00:29:34,654 Ndiyo. 543 00:29:34,654 --> 00:29:35,146 Yeah? 544 00:29:35,146 --> 00:29:37,606 >> Watazamaji: Hivyo wakati una kwamba [inaudible]? 545 00:29:37,606 --> 00:29:44,002 546 00:29:44,002 --> 00:29:46,830 >> DAN: Wewe ingekuwa magazeti chini, na kisha ingekuwa magazeti katikati, na 547 00:29:46,830 --> 00:29:47,400 basi ingekuwa kuvunja. 548 00:29:47,400 --> 00:29:50,244 >> Watazamaji: Kwa nini ni magazeti katikati kama [inaudible]? 549 00:29:50,244 --> 00:29:54,036 550 00:29:54,036 --> 00:30:00,550 >> DAN: Kwa hiyo kila kitu chini ya kesi kabla ya mapumziko iko chini ya. 551 00:30:00,550 --> 00:30:09,390 Hivyo kesi magazeti moja ni chini ya kesi moja kama ni hii magazeti zifuatazo. 552 00:30:09,390 --> 00:30:09,890 Yeah? 553 00:30:09,890 --> 00:30:11,140 >> Watazamaji: [inaudible]? 554 00:30:11,140 --> 00:30:15,890 555 00:30:15,890 --> 00:30:22,170 >> DAN: Hivyo idadi hii ni fulani tu thamani kwamba variable hii 556 00:30:22,170 --> 00:30:23,420 anaweza kuchukua, haki? 557 00:30:23,420 --> 00:30:26,740 558 00:30:26,740 --> 00:30:28,490 Je, hiyo mantiki? 559 00:30:28,490 --> 00:30:28,990 Yeah. 560 00:30:28,990 --> 00:30:31,490 >> Watazamaji: [inaudible]? 561 00:30:31,490 --> 00:30:34,130 >> DAN: Ndiyo, kesi mbili bila magazeti katikati na kisha kuvunja. 562 00:30:34,130 --> 00:30:35,380 >> Watazamaji: [inaudible]? 563 00:30:35,380 --> 00:30:37,954 564 00:30:37,954 --> 00:30:40,050 >> DAN: Nadhani yoyote? 565 00:30:40,050 --> 00:30:43,855 Ni aina gani nyingine data unaweza kubadili juu? 566 00:30:43,855 --> 00:30:46,320 >> Watazamaji: Unaweza kubadili juu ya aina yoyote data. 567 00:30:46,320 --> 00:30:50,905 Lakini ina maana chochote zaidi ya chars tu na ints na mambo kama hayo, kwa sababu 568 00:30:50,905 --> 00:30:55,600 kama wewe ni byte juu pointer kwamba si kweli mantiki, 569 00:30:55,600 --> 00:30:59,555 byte juu mizigo, ikiwa ni hata hebu unaweza kufanya hivyo, kwa sababu ya hatua floating 570 00:30:59,555 --> 00:31:02,840 katika usahihi, wewe ungekuwa si kweli unataka kufanya hivyo anyway. 571 00:31:02,840 --> 00:31:07,320 Hivyo pretty much, ints tu na chars na mambo kama hayo. 572 00:31:07,320 --> 00:31:12,360 >> DAN: Yeah, ni wakati una wazi maadili ambayo unajua, nadhani, inaweza kuwa 573 00:31:12,360 --> 00:31:14,250 kwamba kubadili ni kweli muhimu. 574 00:31:14,250 --> 00:31:17,094 575 00:31:17,094 --> 00:31:18,990 Nzuri? 576 00:31:18,990 --> 00:31:21,370 OK. 577 00:31:21,370 --> 00:31:26,180 >> Wigo ni mbalimbali kwamba alitangaza variable hadi. 578 00:31:26,180 --> 00:31:32,190 Hivyo katika chunk hii ndogo ya kificho mimi, itakuwa kamili ya makosa. 579 00:31:32,190 --> 00:31:41,450 Na sababu ni mimi alitangaza hii int i ndani ya wigo wa hii kwa kitanzi. 580 00:31:41,450 --> 00:31:46,390 Na kisha mimi nina kujaribu kumbukumbu kwamba i nje ya kwamba kwa kitanzi upeo. 581 00:31:46,390 --> 00:31:50,330 >> Hivyo kimsingi, unaweza kufikiria juu ya wigo kama kitu chochote ambacho wewe kutangaza 582 00:31:50,330 --> 00:31:59,750 na ndani ya seti ya braces curly tu ipo ndani ya braces curly wale. 583 00:31:59,750 --> 00:32:04,990 Na kama wewe kujaribu na kutumia variable nje ya braces curly wale, itabidi 584 00:32:04,990 --> 00:32:08,356 kupata kosa kutoka compiler. 585 00:32:08,356 --> 00:32:08,812 Yeah? 586 00:32:08,812 --> 00:32:09,724 >> Watazamaji: Hivyo hii moja haifanyi kazi? 587 00:32:09,724 --> 00:32:11,790 >> DAN: hii haina kazi, ndiyo. 588 00:32:11,790 --> 00:32:17,190 589 00:32:17,190 --> 00:32:18,660 Strings. 590 00:32:18,660 --> 00:32:19,780 String * Char. 591 00:32:19,780 --> 00:32:22,250 Wao ni sawa. 592 00:32:22,250 --> 00:32:25,540 Wao ni tu kuyatumia kwa wahusika. 593 00:32:25,540 --> 00:32:33,000 Na masharti yoyote kwamba una lazima mwisho na backslash sifuri, ambayo ni tu 594 00:32:33,000 --> 00:32:34,410 c mkataba. 595 00:32:34,410 --> 00:32:36,680 >> Hiyo inaitwa NULL Terminator. 596 00:32:36,680 --> 00:32:39,050 Na NULL-- 597 00:32:39,050 --> 00:32:41,670 mji mkuu wa N, mji mkuu wa U, mji mkuu wa L, mji mkuu wa L-- 598 00:32:41,670 --> 00:32:44,290 si sawa kama NULL Terminator. 599 00:32:44,290 --> 00:32:46,640 Hii ni pointer. 600 00:32:46,640 --> 00:32:48,280 Hii ni tabia. 601 00:32:48,280 --> 00:32:49,530 Wao ni tofauti sana. 602 00:32:49,530 --> 00:32:50,200 Kumbuka yake. 603 00:32:50,200 --> 00:32:52,320 Itakuwa juu ya chemsha bongo, pengine. 604 00:32:52,320 --> 00:32:54,040 Sijaona quiz. 605 00:32:54,040 --> 00:32:57,880 606 00:32:57,880 --> 00:32:58,840 Yeah? 607 00:32:58,840 --> 00:33:01,232 >> Watazamaji: Hivyo NULL ni, kusema, pointer? 608 00:33:01,232 --> 00:33:01,995 >> DAN: Ndiyo. 609 00:33:01,995 --> 00:33:05,170 >> Watazamaji: Je [inaudible]? 610 00:33:05,170 --> 00:33:10,050 >> DAN: Kama, kusema, malloc inaitwa wakati hawana kumbukumbu ya kutosha kupata 611 00:33:10,050 --> 00:33:14,400 kila kawaida wewe ni kuuliza kwa, malloc kurudi null. 612 00:33:14,400 --> 00:33:19,550 Ni, kimsingi, wakati wowote kazi ni wanatakiwa kurudi pointer, wewe 613 00:33:19,550 --> 00:33:22,600 haja ya kuangalia juu ya NULL kwa sababu NULL ni good-- pretty 614 00:33:22,600 --> 00:33:25,260 ni, aina ya, thamani ya takataka. 615 00:33:25,260 --> 00:33:27,050 Ni zero mbali kama kuyatumia kwenda. 616 00:33:27,050 --> 00:33:29,630 617 00:33:29,630 --> 00:33:32,250 >> Wakati wowote wewe piga kazi, kwamba anarudi pointer. 618 00:33:32,250 --> 00:33:35,960 Wewe ni kwenda unataka kuangalia kuwa kuhakikisha kwamba kwamba pointer ni si NULL 619 00:33:35,960 --> 00:33:37,760 kwa sababu NULL ni ya kawaida sana. 620 00:33:37,760 --> 00:33:40,160 Ni aina ya kurudi taka. 621 00:33:40,160 --> 00:33:44,902 Hivyo kama kitu hakwenda haki, tu kurudi NULL badala yake. 622 00:33:44,902 --> 00:33:45,898 >> Watazamaji: [inaudible]? 623 00:33:45,898 --> 00:33:48,922 >> DAN: Ndiyo, na kwamba hii. 624 00:33:48,922 --> 00:33:51,750 >> Watazamaji: [inaudible]? 625 00:33:51,750 --> 00:33:52,800 >> DAN: Spell ni kama hii. 626 00:33:52,800 --> 00:33:54,150 Ni NULL Terminator. 627 00:33:54,150 --> 00:33:56,560 Ni lowercase N-U-L-L kama wewe ni kuzungumzia hilo. 628 00:33:56,560 --> 00:33:59,860 >> Watazamaji: Na mimi tu akaenda nyuma na majaribio yake. 629 00:33:59,860 --> 00:34:03,010 Na kama wewe kujaribu kuweka hatua yaliyo thamani katika kubadili, hivyo itabidi yell saa wewe 630 00:34:03,010 --> 00:34:05,916 akisema, taarifa inahitaji kujieleza ya integer aina. 631 00:34:05,916 --> 00:34:07,166 >> DAN: Kuna kwenda. 632 00:34:07,166 --> 00:34:09,639 633 00:34:09,639 --> 00:34:12,246 Lakini yeah, nini ilikuwa swali tena? 634 00:34:12,246 --> 00:34:13,496 >> Watazamaji: [inaudible]? 635 00:34:13,496 --> 00:34:16,150 636 00:34:16,150 --> 00:34:23,679 >> DAN: Hivyo mji mkuu N, mji mkuu wa U, mji mkuu wa L, mji mkuu wa L ni halisi c kitu. 637 00:34:23,679 --> 00:34:29,719 Ni NULL pointer na mapenzi tu kuwa kutibiwa kama vile. 638 00:34:29,719 --> 00:34:33,530 Huwezi milele kujaribu na Spell NULL tabia na kuona yoyote 639 00:34:33,530 --> 00:34:35,630 njia nyingine zaidi kuliko huu. 640 00:34:35,630 --> 00:34:36,610 Yeah? 641 00:34:36,610 --> 00:34:42,490 >> Watazamaji: Hivyo kurudi kwa Char max au kitu katika maelezo, ingekuwa ni 642 00:34:42,490 --> 00:34:43,960 uliopo kazi moja kama [inaudible]? 643 00:34:43,960 --> 00:34:50,655 644 00:34:50,655 --> 00:34:54,949 >> Watazamaji: Hivyo ni wewe akimaanisha kurudi char max kutoka getchar, au 645 00:34:54,949 --> 00:34:55,444 chochote ni? 646 00:34:55,444 --> 00:34:55,940 >> Watazamaji: Yeah. 647 00:34:55,940 --> 00:34:58,620 >> Watazamaji: Yeah, hivyo kwa ujumla mrefu kwa ajili ya mambo hayo yote 648 00:34:58,620 --> 00:34:59,920 ni sentinel maadili. 649 00:34:59,920 --> 00:35:03,640 Hivyo kama kurudi int max kutoka GetInt na char max kutoka getchar, ni 650 00:35:03,640 --> 00:35:06,010 walidhani kuwa kama, haki ya yote, kama mambo haya ni kurudi kwetu, 651 00:35:06,010 --> 00:35:07,210 kitu potoka. 652 00:35:07,210 --> 00:35:09,950 >> Kwa kuyatumia, sisi tu kutokea kwa kuwa na hii thamani sentinel kwamba kila mtu 653 00:35:09,950 --> 00:35:10,750 anakubaliana juu. 654 00:35:10,750 --> 00:35:13,210 Na hili ni jambo wewe kurudi wakati mambo kwenda vibaya. 655 00:35:13,210 --> 00:35:15,910 Hivyo Char max ni nini sisi ni kutumia kwa kuwakilisha kitu 656 00:35:15,910 --> 00:35:18,100 kama NULL au getchar. 657 00:35:18,100 --> 00:35:23,420 >> Watazamaji: Hivyo kama wewe ni kupima getchar, unaweza tu ya kuweka NULL? 658 00:35:23,420 --> 00:35:23,910 Ingekuwa kwamba kufanya tofauti? 659 00:35:23,910 --> 00:35:25,400 >> DAN: Unaweza si tu kuangalia null. 660 00:35:25,400 --> 00:35:30,130 Wewe d kuwa na kuangalia char max kwa sababu thamani ya kurudi kutoka kazi ni 661 00:35:30,130 --> 00:35:35,416 tabia ya si pointer. 662 00:35:35,416 --> 00:35:35,888 Yeah? 663 00:35:35,888 --> 00:35:38,248 >> Watazamaji: Swali hili anauliza kwa kamba urefu. 664 00:35:38,248 --> 00:35:40,136 Je, hiyo ni pamoja na tabia ya NULL? 665 00:35:40,136 --> 00:35:41,000 >> DAN: Hapana 666 00:35:41,000 --> 00:35:45,930 Na kwamba ni kweli ni jinsi gani string urefu anajua kuacha kwa sababu huenda kwa njia ya 667 00:35:45,930 --> 00:35:49,070 safu yako ya wahusika mpaka anaona NULL tabia. 668 00:35:49,070 --> 00:35:51,030 Na basi ni kama, kila haki, mimi nina kufanyika. 669 00:35:51,030 --> 00:35:52,130 >> Watazamaji: [inaudible] tano? 670 00:35:52,130 --> 00:35:53,990 >> DAN: Hello itakuwa tano. 671 00:35:53,990 --> 00:35:55,240 Yep. 672 00:35:55,240 --> 00:35:59,580 673 00:35:59,580 --> 00:36:02,880 Hivyo arrays ni kuendelea vitalu ya kumbukumbu. 674 00:36:02,880 --> 00:36:08,480 Wao kupata papo kwa kusema jina ya safu na kisha, katika curly 675 00:36:08,480 --> 00:36:16,720 braces, chochote index unataka kwenda kwa, wao ni indexed kutoka sifuri kwa njia ya 676 00:36:16,720 --> 00:36:20,100 urefu wa safu minus 1. 677 00:36:20,100 --> 00:36:23,070 >> Na wao ni alitangaza na aina ya kitu kuwa wewe ni hifadhi katika 678 00:36:23,070 --> 00:36:29,750 safu, jina la safu, na kisha kila kawaida ni ya kwamba safu. 679 00:36:29,750 --> 00:36:36,660 Hivyo hii ni safu ya Char urefu sita ambayo ina maadili haya. 680 00:36:36,660 --> 00:36:42,050 681 00:36:42,050 --> 00:36:42,700 Yeah? 682 00:36:42,700 --> 00:36:43,950 >> Watazamaji: [inaudible]? 683 00:36:43,950 --> 00:36:47,980 684 00:36:47,980 --> 00:36:48,460 >> DAN: Yeah. 685 00:36:48,460 --> 00:36:51,340 >> Watazamaji: [inaudible]? 686 00:36:51,340 --> 00:36:56,700 >> DAN: Kama una nini kinachoendelea katika safu tayari alifanya. 687 00:36:56,700 --> 00:37:02,260 Hivyo unaweza bayana hili badala kama, kusema, char, jina lolote yako 688 00:37:02,260 --> 00:37:12,200 safu ni, mabano tupu sawa na curly wanakabiliwa na H comma E comma L comma L comma 689 00:37:12,200 --> 00:37:16,290 O comma NULL tabia ya na curly brace. 690 00:37:16,290 --> 00:37:18,180 Hiyo itakuwa pia kufanya kazi kama tamko hilo. 691 00:37:18,180 --> 00:37:20,886 >> Watazamaji: [inaudible]? 692 00:37:20,886 --> 00:37:23,110 >> DAN: Kisha unahitaji kuwa na ukubwa tayari alifanya. 693 00:37:23,110 --> 00:37:23,896 >> Watazamaji: [inaudible]? 694 00:37:23,896 --> 00:37:25,146 >> DAN: Ndiyo. 695 00:37:25,146 --> 00:37:30,114 696 00:37:30,114 --> 00:37:32,420 Righty yote. 697 00:37:32,420 --> 00:37:36,430 Hoja mstari amri ni njia ya kupata pembejeo kutoka kwa mtumiaji kama 698 00:37:36,430 --> 00:37:39,380 hoja kwa kuu. 699 00:37:39,380 --> 00:37:40,600 Kuu ya inachukua hoja mbili. 700 00:37:40,600 --> 00:37:47,680 idadi ya hoja kuwa ni kuwa ukaendelea mstari amri na a 701 00:37:47,680 --> 00:37:55,340 kamba au kamba vector safu ya hoja zote. 702 00:37:55,340 --> 00:38:07,840 >> Hivyo kama mimi, kusema, kuitwa kazi kama vile dot nje 1 nafasi, 2 nafasi, tatu, 703 00:38:07,840 --> 00:38:10,110 argc itakuwa 4. 704 00:38:10,110 --> 00:38:17,370 Na argv 0 itakuwa dot nje. 705 00:38:17,370 --> 00:38:19,130 Argv1 itakuwa 1. 706 00:38:19,130 --> 00:38:23,030 argv2 itakuwa 2. argv3 itakuwa 3, katika kesi fulani. 707 00:38:23,030 --> 00:38:23,310 Yeah? 708 00:38:23,310 --> 00:38:25,400 >> Watazamaji: [inaudible]? 709 00:38:25,400 --> 00:38:34,010 >> DAN: kipengele mwisho katika safu kwa sababu safu ni urefu argc pamoja na 710 00:38:34,010 --> 00:38:41,050 moja ya argb, kipengele mwisho ni NULL pointer. 711 00:38:41,050 --> 00:38:42,580 Ni argc plus 1. 712 00:38:42,580 --> 00:38:46,210 713 00:38:46,210 --> 00:38:52,150 Hivyo katika kesi kwamba mimi tu alisema, ni itakuwa argv 0 ni dot nje. 714 00:38:52,150 --> 00:38:56,330 argv ya 1 ni 1. argv2 ni 2. argv 3 ni 3. 715 00:38:56,330 --> 00:39:03,490 argv 4, ambayo ni moja kubwa kuliko argc itakuwa null. 716 00:39:03,490 --> 00:39:04,870 >> Na kwamba ni NULL pointer. 717 00:39:04,870 --> 00:39:06,590 Ndiyo. 718 00:39:06,590 --> 00:39:11,250 Na hiyo ni kwa sababu kamba ni nyota Char ni pointer. 719 00:39:11,250 --> 00:39:14,102 Hivyo ina kuwa aina moja. 720 00:39:14,102 --> 00:39:14,595 Yeah? 721 00:39:14,595 --> 00:39:16,074 >> Watazamaji: maswali Barua. 722 00:39:16,074 --> 00:39:21,004 Hivyo moja, nini tofauti kati ya huu na GetString zaidi ya aina moja 723 00:39:21,004 --> 00:39:22,483 katika injini user? 724 00:39:22,483 --> 00:39:25,934 Na mbili, kwa kuhifadhiwa ndani ya kumbukumbu yako ya hivi karibuni? 725 00:39:25,934 --> 00:39:28,399 Hivyo kama, GetString ingekuwa kuwa [inaudible]? 726 00:39:28,399 --> 00:39:31,357 727 00:39:31,357 --> 00:39:33,650 >> DAN: Ambapo ni kuhifadhiwa? 728 00:39:33,650 --> 00:39:34,905 Sijui ambapo ni kuhifadhiwa. 729 00:39:34,905 --> 00:39:40,000 >> Watazamaji: Hivyo, kwa kweli, unajua jinsi yoyote kazi wewe piga ni hoja 730 00:39:40,000 --> 00:39:42,170 ni kuhifadhiwa katika stack? 731 00:39:42,170 --> 00:39:46,610 Hivyo argc na argv ni hoja ya kuu na wao ni juu ya stack, au kweli 732 00:39:46,610 --> 00:39:49,131 tu juu ya nini unafikiri kama mwanzo wa stack. 733 00:39:49,131 --> 00:39:53,490 Ni sehemu gani ilikuwa nyingine ya swali? 734 00:39:53,490 --> 00:39:56,821 >> Watazamaji: Basi nini [inaudible]? 735 00:39:56,821 --> 00:40:00,990 >> DAN: Yeah, ni tu njia tofauti ya kupata pembejeo kutoka kwa mtumiaji. 736 00:40:00,990 --> 00:40:06,030 Kidogo zaidi ufanisi na hii moja ya ni handier kwa scripts kwa sababu wewe 737 00:40:06,030 --> 00:40:10,070 unaweza tu hoja ya kupitisha kuu yako kazi badala ya kuwa na kusubiri 738 00:40:10,070 --> 00:40:13,400 kwa watumiaji kama huna watumiaji yoyote. 739 00:40:13,400 --> 00:40:16,280 >> Watazamaji: Na yeah, kupata masharti itakuwa [inaudible]. 740 00:40:16,280 --> 00:40:17,922 Ni ingekuwa kuhifadhi mambo unahitaji. 741 00:40:17,922 --> 00:40:18,834 >> DAN: Yeah? 742 00:40:18,834 --> 00:40:21,114 >> Watazamaji: [inaudible]? 743 00:40:21,114 --> 00:40:27,545 >> DAN: Ndiyo, argv 0 daima ni pamoja na dot kufyeka ya kazi simu. 744 00:40:27,545 --> 00:40:28,042 Yeah? 745 00:40:28,042 --> 00:40:29,292 >> Watazamaji: [inaudible]? 746 00:40:29,292 --> 00:40:33,509 747 00:40:33,509 --> 00:40:37,310 >> DAN: Ndiyo, kila mmoja wa hoja ni kumalizika katika NULL tabia ya kwa sababu wao 748 00:40:37,310 --> 00:40:38,310 ni masharti. 749 00:40:38,310 --> 00:40:40,892 >> Watazamaji: [inaudible]? 750 00:40:40,892 --> 00:40:44,116 >> DAN: Ndiyo, argv argc ni NULL pointer. 751 00:40:44,116 --> 00:40:45,112 >> Watazamaji: [inaudible]? 752 00:40:45,112 --> 00:40:47,104 >> DAN: Oh yeah. 753 00:40:47,104 --> 00:40:48,100 Yeah, sorry. 754 00:40:48,100 --> 00:40:49,594 >> Watazamaji: Hivyo [inaudible]? 755 00:40:49,594 --> 00:41:08,518 756 00:41:08,518 --> 00:41:16,340 >> DAN: Hivyo swali ni kama alikuwa mstari amri dot dot kufyeka nje 1, 2, 757 00:41:16,340 --> 00:41:20,410 ingekuwa ya simu ya mstari amri hoja kuwa wawili au itakuwa ni tatu? 758 00:41:20,410 --> 00:41:24,420 759 00:41:24,420 --> 00:41:28,240 >> Watazamaji: Nadhani haina kweli jambo. 760 00:41:28,240 --> 00:41:31,370 Mimi huwa kusema, oh, wewe hawakuwa kupita yoyote hoja mstari amri wakati, 761 00:41:31,370 --> 00:41:32,730 ni wazi, wewe kuitwa kazi. 762 00:41:32,730 --> 00:41:37,950 Kwa hiyo mimi huwa na vocally kuwatenga kazi kutoka mstari amri 763 00:41:37,950 --> 00:41:40,350 hoja hata kama ni pamoja na katika argv. 764 00:41:40,350 --> 00:41:42,600 >> DAN: Lakini kama ilikuwa juu ya test-- 765 00:41:42,600 --> 00:41:46,550 yeah-- na pia kama wewe kusema kitu kama argc ni sawa na 3, 766 00:41:46,550 --> 00:41:48,512 wewe ni katika msimamo salama. 767 00:41:48,512 --> 00:41:49,416 Yeah? 768 00:41:49,416 --> 00:41:50,666 >> Watazamaji: [inaudible]? 769 00:41:50,666 --> 00:42:00,990 770 00:42:00,990 --> 00:42:09,510 >> DAN: Nadhani kama badala ya wito huu katika argc na kamba mabano argv 771 00:42:09,510 --> 00:42:14,350 lakini naendelea aina moja na tu kuitwa yao kitu tofauti kama 772 00:42:14,350 --> 00:42:16,640 na b, itakuwa ni bado kazi? 773 00:42:16,640 --> 00:42:18,790 Na bado ingekuwa kazi, ungependa just-- 774 00:42:18,790 --> 00:42:21,520 badala ya kutumia argc-- wewe d kutumia na b. 775 00:42:21,520 --> 00:42:24,436 776 00:42:24,436 --> 00:42:25,408 Yeah? 777 00:42:25,408 --> 00:42:26,658 >> Watazamaji: [inaudible]? 778 00:42:26,658 --> 00:42:34,642 779 00:42:34,642 --> 00:42:38,850 >> DAN: Hivyo swali ni GetString ni kwenda kuhifadhi kumbukumbu katika lundo 780 00:42:38,850 --> 00:42:42,280 kwa sababu GetString ni * Char. 781 00:42:42,280 --> 00:42:47,530 Ni maduka kumbukumbu katika chungu kwa sababu wito malloc sasa ndani ya halisi 782 00:42:47,530 --> 00:42:49,258 utekelezaji wa GetString. 783 00:42:49,258 --> 00:42:53,210 784 00:42:53,210 --> 00:42:55,090 OK, kuhama. 785 00:42:55,090 --> 00:42:55,950 >> Usalama. 786 00:42:55,950 --> 00:43:01,090 Hivyo kuwa kweli salama, wanategemea hakuna moja na wewe kuruhusu hawana moja kwa mtu yeyote 787 00:43:01,090 --> 00:43:04,540 wa taarifa yako, ambayo ni kwa nini kila mtu hujenga mashine zao wenyewe, 788 00:43:04,540 --> 00:43:09,580 mifumo yao wenyewe uendeshaji, wao wote programu kutoka mwanzo, na ni wazi 789 00:43:09,580 --> 00:43:13,410 si kuungana kwa mashine nyingine yoyote kupitia mtandao. 790 00:43:13,410 --> 00:43:17,350 Hivyo kompyuta ni salama. 791 00:43:17,350 --> 00:43:19,200 Wao kweli ni. 792 00:43:19,200 --> 00:43:20,940 Tuna imani kwa watu wengine. 793 00:43:20,940 --> 00:43:26,500 >> Na wazo la usalama ni kwamba wewe ni kujaribu kuzuia kiasi cha 794 00:43:26,500 --> 00:43:27,540 imani kwamba unahitaji. 795 00:43:27,540 --> 00:43:32,080 Na moja ya njia unaweza kufanya hivyo ni kwa njia ya cryptography. 796 00:43:32,080 --> 00:43:34,950 Cryptography ni, kimsingi, sisi kuwa na siri. 797 00:43:34,950 --> 00:43:38,880 >> Wakati mwingine tuna kupita siri yetu pamoja kupitia, kusema, internet au 798 00:43:38,880 --> 00:43:39,980 mambo mengine. 799 00:43:39,980 --> 00:43:43,180 Na hatutaki watu kujua siri hizi. 800 00:43:43,180 --> 00:43:50,100 Hivyo sisi encrypt siri zetu katika njia kwamba sisi matumaini hakuna mtu anayeweza kufikiri. 801 00:43:50,100 --> 00:43:51,600 >> Hivyo sisi used-- 802 00:43:51,600 --> 00:43:54,340 kupitia kozi ya class-- hii 803 00:43:54,340 --> 00:44:00,750 mambo kama Kaisari cipher na [Inaudible], ambayo ni wawili sana, sana 804 00:44:00,750 --> 00:44:03,200 njia na upungufu wa encrypting mambo. 805 00:44:03,200 --> 00:44:07,930 Wao ni rahisi kufikiri nini wao ni na nini siri yako ni. 806 00:44:07,930 --> 00:44:12,130 ulimwengu wa kweli anatumia zaidi ngumu encryption miradi. 807 00:44:12,130 --> 00:44:13,880 Na sisi si kupata katika zaidi ya hiyo. 808 00:44:13,880 --> 00:44:18,280 809 00:44:18,280 --> 00:44:19,430 >> Debugging. 810 00:44:19,430 --> 00:44:20,785 GDB ni bora. 811 00:44:20,785 --> 00:44:24,014 812 00:44:24,014 --> 00:44:25,810 Mimi nina kwenda kusisitiza hili tena. 813 00:44:25,810 --> 00:44:30,920 Matumizi GDB wakati wote kila wakati una tatizo. 814 00:44:30,920 --> 00:44:36,030 Amri ambayo ni muhimu katika GDB ni kuvunja, ambayo wewe kupita aidha line 815 00:44:36,030 --> 00:44:41,330 simu, jina kazi, kimsingi ambapo katika kanuni yako unataka kuacha, 816 00:44:41,330 --> 00:44:45,600 na kuwa na uwezo wa kuchukua udhibiti. 817 00:44:45,600 --> 00:44:54,140 >> Print inachukua kutofautiana na Prints nje chochote kile variable ni saa kwamba 818 00:44:54,140 --> 00:44:55,990 hatua katika utekelezaji wako. 819 00:44:55,990 --> 00:45:00,130 Next hatua utekelezaji yako pamoja hatua moja. 820 00:45:00,130 --> 00:45:05,050 Na hatua hatua ndani ya kazi katika utekelezaji wako. 821 00:45:05,050 --> 00:45:10,480 >> Mambo mengine ni kukimbia, ambayo ni jinsi wewe kweli kukimbia code yako. 822 00:45:10,480 --> 00:45:16,630 Kuendelea inachukua hatua zote zinazohitajika kupata ijayo mapumziko uhakika. 823 00:45:16,630 --> 00:45:18,300 Na kuna wengi, wengine wengi. 824 00:45:18,300 --> 00:45:19,040 Kuangalia yao juu. 825 00:45:19,040 --> 00:45:19,901 Wao ni kubwa. 826 00:45:19,901 --> 00:45:20,863 Yeah? 827 00:45:20,863 --> 00:45:22,113 >> Watazamaji: [inaudible]? 828 00:45:22,113 --> 00:45:26,635 829 00:45:26,635 --> 00:45:28,200 >> DAN: Ndiyo, ambayo ni HatiJava. 830 00:45:28,200 --> 00:45:34,230 Hivyo HatiJava ni mpango kwamba inakuwezesha Debug programu yako. 831 00:45:34,230 --> 00:45:39,931 Si Ni mpango ambao hupata mende kwa yenu, ingawa kwamba itakuwa kubwa. 832 00:45:39,931 --> 00:45:43,020 833 00:45:43,020 --> 00:45:46,040 >> Na mwisho kwa ajili yangu ni search. 834 00:45:46,040 --> 00:45:51,470 Hivyo aina ya search kwamba sisi aliyesema kuhusu katika darasa hili ni search linear, 835 00:45:51,470 --> 00:45:55,960 ambayo ni tu kwamba ukiangalia kwa njia ya kila kipengele wa nafasi ya utafutaji, moja 836 00:45:55,960 --> 00:46:00,410 kipengele wakati huo, mpaka kupata nini wewe ni kuangalia kwa au mpaka kufikia 837 00:46:00,410 --> 00:46:03,350 mwisho wa kutafuta nafasi yako katika ambayo uhakika unaweza kusema kwamba hakuweza kupata 838 00:46:03,350 --> 00:46:06,360 kipengele kwamba wewe walikuwa wanatafuta. 839 00:46:06,360 --> 00:46:13,450 Na hii inachukua muda saa bora mara kwa mara, ambayo ni 0 la 1 na saa mbaya linear 840 00:46:13,450 --> 00:46:16,070 wakati, ambayo ni 0 la n. 841 00:46:16,070 --> 00:46:19,250 >> Search binary, ambayo inahitaji aibu vipengele. 842 00:46:19,250 --> 00:46:24,230 Unaweza kwenda katikati ya mambo yako, kuona kama kipengele wewe ni kuangalia kwa 843 00:46:24,230 --> 00:46:30,120 ni kubwa au ndogo kuliko kipengele kwamba uko katika katikati. 844 00:46:30,120 --> 00:46:36,510 Ni ni kubwa, unaweza kusema kwamba chini ya kutafuta nafasi yako ni yako 845 00:46:36,510 --> 00:46:41,550 eneo la sasa, kati, na wewe kuanzisha upya mchakato. 846 00:46:41,550 --> 00:46:46,150 Kama ni ndogo, ukiangalia kusema kwamba the-- yeah, nini up? 847 00:46:46,150 --> 00:46:47,400 >> Watazamaji: [inaudible]? 848 00:46:47,400 --> 00:46:51,000 849 00:46:51,000 --> 00:46:54,260 >> DAN: Ndiyo. 850 00:46:54,260 --> 00:46:58,360 Aina yoyote ya aina hiyo imekuwa kufundishwa katika darasa ni haki mchezo kwa mtihani. 851 00:46:58,360 --> 00:47:01,504 852 00:47:01,504 --> 00:47:04,920 >> [Kicheko] 853 00:47:04,920 --> 00:47:10,260 >> DAN: Na ukweli kwamba wewe si alikuwa na kufanya hivyo kwa ajili ya kuweka tatizo, ni haki 854 00:47:10,260 --> 00:47:12,420 mchezo kwa mtihani. 855 00:47:12,420 --> 00:47:15,186 >> Watazamaji: Je, sisi kwenda juu yake jinsi to-- 856 00:47:15,186 --> 00:47:17,052 >> DAN: Ni itakuwa gone juu. 857 00:47:17,052 --> 00:47:20,496 >> SPIKA 2: code halisi kwa ajili ya [Inaudible] ni juu ya study.cs50.net. 858 00:47:20,496 --> 00:47:25,910 859 00:47:25,910 --> 00:47:32,680 Hivyo kama wewe kuangalia tatizo mazoezi katika kuunganisha aina ya ukurasa 860 00:47:32,680 --> 00:47:35,880 study.cs50.net, kuna code kwa ajili ya utekelezaji kuunganisha aina. 861 00:47:35,880 --> 00:47:38,550 Hivyo huna kuwa na kutekeleza ni wewe mwenyewe usiku wa leo. 862 00:47:38,550 --> 00:47:42,090 Lakini kuhakikisha wewe kuelewa ni badala kuliko tu kukariri yake. 863 00:47:42,090 --> 00:47:45,035 >> Watazamaji: [inaudible]? 864 00:47:45,035 --> 00:47:49,720 >> SPIKA 2: ukurasa kuunganisha aina juu ya study.cs50.net, kuna mazoezi 865 00:47:49,720 --> 00:47:53,570 tatizo kwamba, kama wewe click kupitia tatizo, mwishoni sana kuna 866 00:47:53,570 --> 00:47:56,280 ufumbuzi, ambayo ni kuunganisha aina ya utekelezaji. 867 00:47:56,280 --> 00:47:58,510 Lakini hakikisha kuelewa badala ya kukariri ni 868 00:47:58,510 --> 00:47:59,760 au kuiga ni chini. 869 00:47:59,760 --> 00:48:02,870 870 00:48:02,870 --> 00:48:06,340 >> Watazamaji: Na kikamilifu halali tatizo kwa ajili ya mtihani itakuwa 871 00:48:06,340 --> 00:48:07,990 kitu kama hapa ni orodha. 872 00:48:07,990 --> 00:48:12,100 Je, orodha hii kuangalia kama baada ya hatua moja ya uchaguzi namna au 873 00:48:12,100 --> 00:48:13,330 insertion aina au chochote. 874 00:48:13,330 --> 00:48:14,940 Moja iteration kamili ya orodha. 875 00:48:14,940 --> 00:48:18,530 Hivyo hata kama wewe wala kuishia wanaohitaji kanuni kwa ajili ya hayo, unahitaji kuelewa ni 876 00:48:18,530 --> 00:48:20,440 kutosha kujua jinsi ya kwenda kuwa kubadilisha safu hii. 877 00:48:20,440 --> 00:48:24,144 878 00:48:24,144 --> 00:48:25,394 >> DAN: Hiyo ni kwa ajili yangu. 879 00:48:25,394 --> 00:48:30,604 880 00:48:30,604 --> 00:48:32,588 >> [Makofi] 881 00:48:32,588 --> 00:49:06,316 882 00:49:06,316 --> 00:49:07,410 >> LUCAS: Hey kila mtu. 883 00:49:07,410 --> 00:49:08,390 Jina langu ni Lucas. 884 00:49:08,390 --> 00:49:16,840 Mimi nina kwenda kuzungumza kuhusu kujirudia, kila aina tumejifunza, na a 885 00:49:16,840 --> 00:49:18,050 kidogo ya kuyatumia yote. 886 00:49:18,050 --> 00:49:18,740 OK? 887 00:49:18,740 --> 00:49:20,340 Hivyo kwanza ya yote, recursion. 888 00:49:20,340 --> 00:49:22,951 Ina maana gani kusema kwamba kazi ni kujirudia? 889 00:49:22,951 --> 00:49:24,675 >> Watazamaji: Wito yenyewe. 890 00:49:24,675 --> 00:49:26,500 >> LUCAS: OK, wito yenyewe, yeah. 891 00:49:26,500 --> 00:49:27,700 Hivyo kama picha hii, kwa mfano. 892 00:49:27,700 --> 00:49:30,280 Ni kama picha ndani ya wa picha na kadhalika. 893 00:49:30,280 --> 00:49:35,740 Hivyo kwa mfano, unaweza have-- kama Dan kwamba alikuwa anazungumza juu ya search binary. 894 00:49:35,740 --> 00:49:41,840 Njia moja ambayo search binary ni kujirudia ni ukweli kwamba wewe ni 895 00:49:41,840 --> 00:49:43,130 kujaribu kupata idadi. 896 00:49:43,130 --> 00:49:44,250 Hivyo wewe kwenda katikati. 897 00:49:44,250 --> 00:49:47,130 Na kisha kuangalia kama kuna namba katika kushoto na katika haki. 898 00:49:47,130 --> 00:49:49,650 >> Na kisha kama wewe kupata nje ya idadi ni kwenda kuwa upande wa kushoto, ni sawa na 899 00:49:49,650 --> 00:49:53,340 kitu kama kufanya search tena lakini tu upande wa kushoto wa orodha. 900 00:49:53,340 --> 00:49:57,350 Hivyo hiyo ni jinsi inaonekana kama ni kujirudia. 901 00:49:57,350 --> 00:50:01,870 Hivyo ndiyo sababu wewe guys kuwa na kujirudia ufumbuzi kwa ajili ya kuunganisha aina. 902 00:50:01,870 --> 00:50:04,270 >> OK, hivyo hapa ni mfano. 903 00:50:04,270 --> 00:50:07,280 Basi hebu kusema kwamba mimi nataka kuchagua namba zote kutoka 1 kwa n. 904 00:50:07,280 --> 00:50:13,790 Mimi unaweza kutambua kwamba Jumla ya n simu ni n pamoja na n minus 1 hadi 1. 905 00:50:13,790 --> 00:50:17,810 Lakini basi, kama mimi kuangalia n minus 1 plus n minus 2 plus 1, hiyo ni sawa 906 00:50:17,810 --> 00:50:20,680 kitu kama namba summing hadi n minus 1. 907 00:50:20,680 --> 00:50:25,890 Hivyo naweza kusema Jumla ya Jumla sawa sawa na n pamoja na Jumla ya n minus 1. 908 00:50:25,890 --> 00:50:28,010 Je, hiyo mantiki? 909 00:50:28,010 --> 00:50:32,630 >> Na mimi pia ingekuwa kitu kingine kuitwa kesi ya msingi, ambayo ni kwamba 910 00:50:32,630 --> 00:50:37,440 Jumla ya namba up na sifuri itakuwa zero. 911 00:50:37,440 --> 00:50:42,770 Basi kwa haraka kama mimi kupata idadi sifuri, mimi kuacha kuhesabu kura. 912 00:50:42,770 --> 00:50:45,330 Je, hiyo mantiki? 913 00:50:45,330 --> 00:50:48,120 >> Hivyo hapa ni mfano wa jinsi Siwezi kutekeleza hiyo. 914 00:50:48,120 --> 00:50:49,860 Hivyo nina kazi hii katika baadhi. 915 00:50:49,860 --> 00:50:51,700 Kwamba inachukua integer n. 916 00:50:51,700 --> 00:50:56,300 Hivyo hapa mimi kwanza kuangalia kama n ni chini ya au sawa na sifuri. 917 00:50:56,300 --> 00:51:00,310 Hivyo kama ni chini ya au sawa na sifuri, mimi kurudi sifuri, ambayo ni kesi yetu ya msingi. 918 00:51:00,310 --> 00:51:05,690 Vinginevyo, mimi unaweza tu kurudi n pamoja na Jumla ya idadi kutoka 919 00:51:05,690 --> 00:51:07,190 moja kwa moja n minus. 920 00:51:07,190 --> 00:51:09,360 Mantiki? 921 00:51:09,360 --> 00:51:10,100 OK. 922 00:51:10,100 --> 00:51:11,610 >> Hivyo hapa ni nini inaonekana kama. 923 00:51:11,610 --> 00:51:15,260 Una Jumla ya 2 sawa 2 pamoja na Jumla ya 1. 924 00:51:15,260 --> 00:51:18,930 Na baadhi ya 1 ni pamoja na 1 Jumla ya 0, ambayo ni 0. 925 00:51:18,930 --> 00:51:20,216 Mantiki? 926 00:51:20,216 --> 00:51:25,342 Hivyo kama sisi kuangalia mkusanyiko wa yako mpango, hii ni nini inaonekana kama. 927 00:51:25,342 --> 00:51:26,820 >> Kwanza, tuna kazi kuu. 928 00:51:26,820 --> 00:51:30,320 Na kisha kazi kuu kuitwa Jumla 2. 929 00:51:30,320 --> 00:51:36,690 Na kisha Jumla 2 ni kwenda kusema, oh, Jumla 2 ni sawa na 2 pamoja na Jumla ya mmoja. 930 00:51:36,690 --> 00:51:39,460 Kwa hiyo mimi kuongeza Jumla ya 1 kwa stack. 931 00:51:39,460 --> 00:51:43,860 Na jumla ya 1 ni kwenda kuwaita Jumla ya 0, ambayo pia ni kwenda kuongezwa 932 00:51:43,860 --> 00:51:44,630 kwa stack. 933 00:51:44,630 --> 00:51:49,240 Na kisha kila mmoja wa watu hao kuwa ni juu ya nyingine na kurudi 934 00:51:49,240 --> 00:51:52,020 kabla ya wale wengine wanaweza kuendelea. 935 00:51:52,020 --> 00:51:56,240 >> Hivyo kwa mfano, hapa, Jumla ya 0, kwanza, ni kwenda na kurudi 0. 936 00:51:56,240 --> 00:51:58,320 Na kisha kuchagua Jumla ya 1. 937 00:51:58,320 --> 00:52:00,850 Kisha Jumla ya 1 ni kwenda kurudi 1 kwa jumla ya 2. 938 00:52:00,850 --> 00:52:03,900 Na hatimaye, Jumla ya 2 ni kwenda kurudi 3 kwa kuu. 939 00:52:03,900 --> 00:52:05,320 Je, hiyo mantiki? 940 00:52:05,320 --> 00:52:09,496 >> Ni kweli muhimu kuelewa jinsi stack ni kazi na kujaribu 941 00:52:09,496 --> 00:52:11,980 kuona kama inafanya hisia. 942 00:52:11,980 --> 00:52:13,260 OK, hivyo kuchagua. 943 00:52:13,260 --> 00:52:16,170 Hivyo ni kwa nini kuchagua muhimu, kwanza ya yote? 944 00:52:16,170 --> 00:52:18,260 Kwa nini tunapaswa huduma? 945 00:52:18,260 --> 00:52:20,310 Mtu yeyote? 946 00:52:20,310 --> 00:52:20,695 Nipe mfano? 947 00:52:20,695 --> 00:52:21,040 Yeah? 948 00:52:21,040 --> 00:52:22,968 >> Watazamaji: [inaudible]. 949 00:52:22,968 --> 00:52:24,700 >> LUCAS: Yeah, OK. 950 00:52:24,700 --> 00:52:26,090 Hivyo unaweza kutafuta kwa ufanisi zaidi. 951 00:52:26,090 --> 00:52:28,580 Hiyo ndiyo njia nzuri. 952 00:52:28,580 --> 00:52:32,462 Hivyo, kwa mfano, tuna mengi ya mambo, kwa kweli, katika maisha yetu kwamba 953 00:52:32,462 --> 00:52:32,920 ni vyema. 954 00:52:32,920 --> 00:52:34,830 Kwa mfano, Mkwawa. 955 00:52:34,830 --> 00:52:39,210 >> Ni muhimu sana kuwa na wote maneno katika baadhi ya aina ya ili kwamba sisi 956 00:52:39,210 --> 00:52:41,970 wanaweza kupata kwa urahisi. 957 00:52:41,970 --> 00:52:43,280 Hivyo kwamba ni nini alikuwa akisema. 958 00:52:43,280 --> 00:52:45,530 Unaweza kutafuta kwa ufanisi zaidi. 959 00:52:45,530 --> 00:52:48,740 Fikiria jinsi itakuwa vigumu kuwa na kamusi katika maneno ambayo ni katika 960 00:52:48,740 --> 00:52:49,500 random utaratibu. 961 00:52:49,500 --> 00:52:53,120 Itabidi kuangalia, pretty much, kila neno moja mpaka kupata 962 00:52:53,120 --> 00:52:54,720 neno kwamba wewe ni kuangalia kwa. 963 00:52:54,720 --> 00:52:58,710 >> Kama unatumia Facebook pia, wakati wewe ni kuangalia rafiki yako, wewe ni 964 00:52:58,710 --> 00:53:03,540 kwenda kuona kwamba Facebook kuweka yako rafiki wa karibu ni juu ya wale 965 00:53:03,540 --> 00:53:05,470 kwamba huna kuzungumza na kwamba mengi. 966 00:53:05,470 --> 00:53:08,080 Kama wewe kwenda njia yote chini ya rafiki orodha yako, wewe ni kwenda kuona 967 00:53:08,080 --> 00:53:11,250 watu kwamba pengine hawana hata kumbuka kwamba wewe ni marafiki na. 968 00:53:11,250 --> 00:53:14,590 Na hiyo ni kwa sababu aina Facebook rafiki yako kulingana na jinsi 969 00:53:14,590 --> 00:53:16,472 karibu wewe ni kwao. 970 00:53:16,472 --> 00:53:17,930 >> Hivyo kuandaa data. 971 00:53:17,930 --> 00:53:18,450 Pia Pokemon. 972 00:53:18,450 --> 00:53:21,400 Hivyo unaweza kuona kwamba pokemons wote kuwa na idadi. 973 00:53:21,400 --> 00:53:27,210 Na kwamba ni kama rahisi njia ya kupata data. 974 00:53:27,210 --> 00:53:29,050 >> Watazamaji: Kupata Pokemon. 975 00:53:29,050 --> 00:53:29,890 >> LUCAS: Yeah. 976 00:53:29,890 --> 00:53:32,395 >> Watazamaji: [inaudible]. 977 00:53:32,395 --> 00:53:33,460 >> LUCAS: Yep. 978 00:53:33,460 --> 00:53:35,140 OK, hivyo uteuzi aina. 979 00:53:35,140 --> 00:53:41,610 Uteuzi aina ni kwenda kuchagua ndogo zisizochambuliwa thamani ya orodha kila 980 00:53:41,610 --> 00:53:43,300 wakati katika kila iteration. 981 00:53:43,300 --> 00:53:46,800 Ni aina ya kama aina kwamba kufanya katika kichwa yako wakati wewe ni kujaribu 982 00:53:46,800 --> 00:53:48,430 aina orodha mkono. 983 00:53:48,430 --> 00:53:51,990 >> Kimsingi, wote kufanya ni wewe kuangalia kwa idadi ndogo. 984 00:53:51,990 --> 00:53:54,280 Kuiweka katika orodha sorted. 985 00:53:54,280 --> 00:53:56,230 Na kisha ukiangalia kwa ijayo idadi ndogo. 986 00:53:56,230 --> 00:54:00,080 Na kisha kuendelea kufanya kwamba na kadhalika. 987 00:54:00,080 --> 00:54:04,600 >> Hivyo uteuzi aina kimsingi ni wewe kuchagua kila wakati ndogo 988 00:54:04,600 --> 00:54:05,750 zisizochambuliwa thamani. 989 00:54:05,750 --> 00:54:10,840 Kuweka mwishoni mwa yamepangwa sehemu ya orodha. 990 00:54:10,840 --> 00:54:12,370 Na kuendelea kufanya hivyo. 991 00:54:12,370 --> 00:54:15,890 Basi hebu haraka kuona nini hii inaonekana kama. 992 00:54:15,890 --> 00:54:19,340 Hivyo hapa ni namna na zisizochambuliwa orodha. 993 00:54:19,340 --> 00:54:23,350 >> Hivyo kwa namna ya orodha, ni awali tupu. 994 00:54:23,350 --> 00:54:26,760 Na kisha mimi nina kwenda kuchagua idadi ndogo hapa, ambayo ni 2. 995 00:54:26,760 --> 00:54:30,650 Hivyo mimi kupata namba 2 na mimi kuweka mbele ya orodha. 996 00:54:30,650 --> 00:54:34,910 Na kisha mimi kuangalia kwa ndogo ya kipengele, ambayo ni 3. 997 00:54:34,910 --> 00:54:37,050 Hivyo mimi kuiweka mwishoni ya orodha Iliyopangwa. 998 00:54:37,050 --> 00:54:38,140 Na kisha mimi kuweka kufanya hivyo. 999 00:54:38,140 --> 00:54:40,040 Mimi sioni 4 na kuiweka mwishoni. 1000 00:54:40,040 --> 00:54:41,360 Kupata 5 na kuiweka mwishoni. 1001 00:54:41,360 --> 00:54:44,830 >> Na kuangalia jinsi gani wote wa nyakati hizo kwamba Mimi kusema kuiweka mwishoni ni, 1002 00:54:44,830 --> 00:54:46,850 kimsingi, swapping maadili mbili. 1003 00:54:46,850 --> 00:54:48,100 OK? 1004 00:54:48,100 --> 00:54:50,140 1005 00:54:50,140 --> 00:54:52,825 Na kisha moja mwisho, wewe tu na moja zaidi kipengele. 1006 00:54:52,825 --> 00:54:55,870 Hivyo ni tayari Iliyopangwa. 1007 00:54:55,870 --> 00:54:57,800 >> OK, hivyo insertion aina. 1008 00:54:57,800 --> 00:55:03,180 Insertion aina wewe ni kwenda kuwa na pia kwamba jambo ya kuwa na sorted na 1009 00:55:03,180 --> 00:55:04,690 zisizochambuliwa orodha. 1010 00:55:04,690 --> 00:55:14,540 Kitu pekee ni kwamba kila wakati kwamba wewe ni kuongeza kipengele ya namna 1011 00:55:14,540 --> 00:55:18,170 orodha, wewe tu kuchukua kipengele kwamba ni mbele ya orodha zisizochambuliwa. 1012 00:55:18,170 --> 00:55:20,880 Na kisha wewe ni kwenda kupata nini nafasi ni lazima kuwa katika sorted 1013 00:55:20,880 --> 00:55:22,300 sehemu ya orodha. 1014 00:55:22,300 --> 00:55:25,840 >> Hebu kuona nini hii ni hivyo hii hufanya akili zaidi. 1015 00:55:25,840 --> 00:55:29,360 Hivyo awali, kwa mfano, mimi nina kujaribu kuingiza namba tatu katika 1016 00:55:29,360 --> 00:55:30,680 sehemu sorted ya orodha. 1017 00:55:30,680 --> 00:55:31,800 Hivyo orodha hana kitu chochote. 1018 00:55:31,800 --> 00:55:34,160 Hivyo siwezi tu ya kuweka namba 3. 1019 00:55:34,160 --> 00:55:37,480 >> Sasa, nataka kuongeza namba 5 kwa sehemu sorted ya orodha. 1020 00:55:37,480 --> 00:55:38,900 Kwa hiyo mimi kuangalia namba 5. 1021 00:55:38,900 --> 00:55:40,450 Mimi taarifa kwamba ni mkubwa kuliko 3. 1022 00:55:40,450 --> 00:55:41,980 Hivyo najua kwamba ina kuwa baada ya 3. 1023 00:55:41,980 --> 00:55:44,100 Basi, mimi kuweka 3 na 5. 1024 00:55:44,100 --> 00:55:45,940 >> Kisha mimi wanataka kuingiza namba 2. 1025 00:55:45,940 --> 00:55:51,630 Mimi taarifa kwamba idadi 2 ni kweli mwisho ndipo wote wawili, 3 na 5. 1026 00:55:51,630 --> 00:55:54,580 Kwa hiyo mimi kwa kweli kuwa na kuweka yote njia katika mwanzo wa orodha. 1027 00:55:54,580 --> 00:55:59,030 Hivyo nina, aina ya, kuhama wote vipengele katika orodha Iliyopangwa ili niweze 1028 00:55:59,030 --> 00:56:01,970 kufanya chumba kwa idadi 2. 1029 00:56:01,970 --> 00:56:03,160 >> Kisha naona namba 6. 1030 00:56:03,160 --> 00:56:05,450 Mimi naona kwamba ni lazima kuwa baada ya 5. 1031 00:56:05,450 --> 00:56:06,240 Hivyo mimi kuiweka huko. 1032 00:56:06,240 --> 00:56:07,965 Na hatimaye, mimi kuangalia namba 4. 1033 00:56:07,965 --> 00:56:11,030 Na mimi taarifa ni lazima kuwa kati ya 3 na 5. 1034 00:56:11,030 --> 00:56:14,870 Na kisha mimi kuiweka huko na mabadiliko mambo mengine yote. 1035 00:56:14,870 --> 00:56:16,120 Mantiki? 1036 00:56:16,120 --> 00:56:17,880 1037 00:56:17,880 --> 00:56:19,150 >> Bubble Aina. 1038 00:56:19,150 --> 00:56:25,730 Hivyo Bubble aina ni kimsingi nini wewe ni kwenda do-- sisi kuiita Bubble 1039 00:56:25,730 --> 00:56:30,113 aina kwa sababu wewe kwenda kwa njia ya list-- ni kweli bora kama mimi tu kuonyesha 1040 00:56:30,113 --> 00:56:32,300 wewe kama Haya 1041 00:56:32,300 --> 00:56:35,030 na wewe ni kwenda kulinganisha namba karibu. 1042 00:56:35,030 --> 00:56:38,410 Na wewe ni kwenda wabadilishane yao nafasi kama wao siyo 1043 00:56:38,410 --> 00:56:39,190 ili haki. 1044 00:56:39,190 --> 00:56:42,570 >> Hivyo kimsingi, ni nini kinaenda kutokea ni hapa, kwa mfano, 1045 00:56:42,570 --> 00:56:44,160 una 8 na 6. 1046 00:56:44,160 --> 00:56:47,270 Unajua kwamba ili sorted mapenzi kweli kuwa 6 na 5, haki? 1047 00:56:47,270 --> 00:56:49,540 Hivyo wewe ni kwenda wabadilishane amri. 1048 00:56:49,540 --> 00:56:51,370 Kisha naona 8 na 4 hapa. 1049 00:56:51,370 --> 00:56:52,250 Na mimi kufanya kitu kimoja. 1050 00:56:52,250 --> 00:56:53,400 Mimi wabadilishane tena. 1051 00:56:53,400 --> 00:56:55,070 Na hatimaye, 2 na 8. 1052 00:56:55,070 --> 00:56:56,670 Mimi pia wabadilishane yao. 1053 00:56:56,670 --> 00:57:01,690 >> Ni wito Bubble Aina kwa sababu baada ya kila moja ya iterations haya, kwa kweli, 1054 00:57:01,690 --> 00:57:05,910 idadi kubwa katika orodha anapata yote njia ya mwisho wa orodha. 1055 00:57:05,910 --> 00:57:06,940 Je, hiyo mantiki? 1056 00:57:06,940 --> 00:57:11,880 Kwa sababu ni kuvaa swapping ni na kuhamia na haki. 1057 00:57:11,880 --> 00:57:14,440 >> OK, hivyo hii ni iteration pili. 1058 00:57:14,440 --> 00:57:17,200 Itakuwa kitu kimoja. 1059 00:57:17,200 --> 00:57:20,190 Mimi itabidi kufanya wabadilishane moja na kisha moja ya mwisho. 1060 00:57:20,190 --> 00:57:23,290 Mimi kwamba hakuna swaps na orodha ni Iliyopangwa. 1061 00:57:23,290 --> 00:57:27,460 Hivyo katika Bubble Panga, sisi kimsingi kuweka kwenda kupitia orodha na swapping 1062 00:57:27,460 --> 00:57:32,310 mambo mpaka mimi taarifa kwamba mimi si kufanya swaps yoyote ya kufanya hivyo iteration, ambayo 1063 00:57:32,310 --> 00:57:34,270 ina maana kwamba orodha tayari Iliyopangwa. 1064 00:57:34,270 --> 00:57:35,520 Mantiki? 1065 00:57:35,520 --> 00:57:38,400 1066 00:57:38,400 --> 00:57:40,870 >> Hebu majadiliano kidogo kuhusu mbio wakati. 1067 00:57:40,870 --> 00:57:45,165 Hivyo wewe guys kumbuka Big O, Omega, na Theta? 1068 00:57:45,165 --> 00:57:49,290 1069 00:57:49,290 --> 00:57:50,990 Yeah? 1070 00:57:50,990 --> 00:57:53,070 OK, ni nini Big O, kwanza ya yote? 1071 00:57:53,070 --> 00:57:54,315 >> Watazamaji: [inaudible]. 1072 00:57:54,315 --> 00:57:59,070 >> LUCAS: Yeah, ni kuitwa kesi mbaya Runtime, ambayo ina maana ya kwamba ni 1073 00:57:59,070 --> 00:58:03,470 ni kiasi gani unaweza kutarajia mpango kuchukua kukimbia. 1074 00:58:03,470 --> 00:58:04,910 Kama, katika suala of-- 1075 00:58:04,910 --> 00:58:06,660 katika hii n case--. 1076 00:58:06,660 --> 00:58:09,150 idadi ya vipengele katika orodha katika kesi mbaya. 1077 00:58:09,150 --> 00:58:12,520 Kama, katika hali mbaya zaidi iwezekanavyo kesi. 1078 00:58:12,520 --> 00:58:17,100 >> Hivyo kwa Bubble Aina, kwa mfano, tuna Big O ya n mraba. 1079 00:58:17,100 --> 00:58:20,580 Kwa nini tuna hiyo? 1080 00:58:20,580 --> 00:58:24,716 Kwa nini ni Bubble Aina Big O n mraba? 1081 00:58:24,716 --> 00:58:27,614 >> Watazamaji: [inaudible]. 1082 00:58:27,614 --> 00:58:35,670 >> LUCAS: Yeah, hivyo kesi mbaya itakuwa kwamba mimi itabidi kufanya n iterations. 1083 00:58:35,670 --> 00:58:39,260 Hivyo kila mmoja wa iterations ni kwenda kuleta kipengele kubwa kwa mwisho 1084 00:58:39,260 --> 00:58:40,290 ya orodha. 1085 00:58:40,290 --> 00:58:44,230 Hivyo kesi mbaya zaidi ni kwamba nina kufanya jambo n mara kwa mara. 1086 00:58:44,230 --> 00:58:48,550 Na kwa kila moja ya nyakati hizo, nina kufanya n swaps kwa sababu mimi kuwa na kulinganisha 1087 00:58:48,550 --> 00:58:49,870 kila mambo mawili. 1088 00:58:49,870 --> 00:58:53,730 Hivyo kwamba ni kwa nini ni n squared kwa sababu ni n mara n. 1089 00:58:53,730 --> 00:59:00,120 >> Kisha, uteuzi aina ni pia n mraba kwa sababu, kwa kila iteration, nina 1090 00:59:00,120 --> 00:59:02,650 kuangalia kila kipengele moja katika orodha. 1091 00:59:02,650 --> 00:59:04,980 Na kisha kupata ndogo, ambayo ina maana kwamba nina 1092 00:59:04,980 --> 00:59:06,130 kuangalia njia ya mambo n. 1093 00:59:06,130 --> 00:59:11,750 Na mimi kuwa kufanya hivyo mara n kwa sababu Nina kuchagua mambo yote n. 1094 00:59:11,750 --> 00:59:18,273 >> aina insertion ni pia n mraba kwa sababu mazingira ya kesi mbaya mapenzi 1095 00:59:18,273 --> 00:59:20,950 kuwa, moja, nina kuingiza namba n, haki? 1096 00:59:20,950 --> 00:59:22,765 Kwa hiyo mimi tayari kujua kwamba mimi nina kwenda kuwa na n iterations. 1097 00:59:22,765 --> 00:59:25,466 1098 00:59:25,466 --> 00:59:29,840 Lakini kwa kila moja ya namba hizo, kama ningekuwa na kwa kuangalia yote ya namba katika 1099 00:59:29,840 --> 00:59:34,380 orodha sorted na kuiweka njia yote mbele, ambayo itakuwa n mraba 1100 00:59:34,380 --> 00:59:36,230 kwa sababu itakuwa ni n mara n tena. 1101 00:59:36,230 --> 00:59:38,280 Mantiki? 1102 00:59:38,280 --> 00:59:41,512 Nini juu ya omega? 1103 00:59:41,512 --> 00:59:42,886 >> Watazamaji: [inaudible]. 1104 00:59:42,886 --> 00:59:44,620 >> LUCAS: Ni bora kesi. 1105 00:59:44,620 --> 00:59:48,810 Hivyo ni kama, katika mengi ya mara kwa kuchagua, bora kesi ni 1106 00:59:48,810 --> 00:59:50,660 wakati orodha tayari Iliyopangwa. 1107 00:59:50,660 --> 00:59:52,670 Hivyo si kweli kuwa kufanya kitu chochote. 1108 00:59:52,670 --> 00:59:56,290 Bubble Aina ana bora mazingira ya kesi ya n. 1109 00:59:56,290 --> 00:59:58,820 Je, guys kujua kwa nini? 1110 00:59:58,820 --> 01:00:00,620 >> Watazamaji: [inaudible]. 1111 01:00:00,620 --> 01:00:05,640 >> LUCAS: Yeah, kama wewe kuweka wimbo wa kama data ration alikuwa swaps yoyote au 1112 01:00:05,640 --> 01:00:10,533 si, kama una kitu kama kuweka kweli kama kulikuwa na iteration, kama 1113 01:00:10,533 --> 01:00:15,140 orodha ni tayari Iliyopangwa, kimsingi, nini kinaendelea kutokea ni mimi nina kwenda 1114 01:00:15,140 --> 01:00:17,890 kujaribu wabadilishane kila mbili mambo karibu. 1115 01:00:17,890 --> 01:00:19,920 Mimi nina kwenda kuona kwamba hakuna swaps. 1116 01:00:19,920 --> 01:00:21,230 Na mimi tu kurudi haki mbali. 1117 01:00:21,230 --> 01:00:24,240 >> Hivyo ina maana kwamba mimi tu alikuwa na kwenda kwa njia ya orodha wakati mmoja. 1118 01:00:24,240 --> 01:00:28,990 Hivyo ni n kwa sababu mimi kuangalia at n vipengele. 1119 01:00:28,990 --> 01:00:30,930 Kwa nini uteuzi aina n mraba? 1120 01:00:30,930 --> 01:00:35,150 1121 01:00:35,150 --> 01:00:45,520 >> Yeah, hata kama orodha ni Iliyopangwa, kwa kila iteration ya uteuzi aina, mimi 1122 01:00:45,520 --> 01:00:47,590 kuwa na kuchagua kipengele cha chini. 1123 01:00:47,590 --> 01:00:49,980 Hivyo hiyo ina maana kwamba nina kufanyika kwa kuangalia katika mambo yote katika zisizochambuliwa 1124 01:00:49,980 --> 01:00:53,350 kuorodhesha na kupata kima cha chini cha kwa kila iteration. 1125 01:00:53,350 --> 01:00:54,600 Je, hiyo mantiki? 1126 01:00:54,600 --> 01:00:56,880 1127 01:00:56,880 --> 01:01:04,690 >> Na insertion upanga n kwa sababu katika kesi hiyo mimi nina kujaribu kuingiza 1128 01:01:04,690 --> 01:01:09,320 idadi na wote wa idadi ya, wakati mimi kujaribu kuingiza yao, naona ya kuwa wao 1129 01:01:09,320 --> 01:01:10,510 ni katika nafasi ya haki. 1130 01:01:10,510 --> 01:01:15,120 Sina kwenda kuangalia wengine wote idadi katika orodha zisizochambuliwa. 1131 01:01:15,120 --> 01:01:17,170 Hivyo ndiyo sababu itakuwa n. 1132 01:01:17,170 --> 01:01:19,480 Mantiki? 1133 01:01:19,480 --> 01:01:21,035 Na nini theta? 1134 01:01:21,035 --> 01:01:23,410 >> Watazamaji: [inaudible]. 1135 01:01:23,410 --> 01:01:24,380 >> LUCAS: Ni, sorry? 1136 01:01:24,380 --> 01:01:24,960 Sema tena. 1137 01:01:24,960 --> 01:01:25,666 >> Watazamaji: [inaudible]. 1138 01:01:25,666 --> 01:01:26,490 >> LUCAS: Hasa. 1139 01:01:26,490 --> 01:01:31,280 Hivyo unaweza kuona kwamba uteuzi tu kuhifadhiwa katika Unganisha aina na thetas. 1140 01:01:31,280 --> 01:01:39,920 Na hiyo ni kwa sababu wewe tu na theta kama wote wawili Big O na Omega ni sawa. 1141 01:01:39,920 --> 01:01:41,520 OK. 1142 01:01:41,520 --> 01:01:44,210 Na hatimaye, kuunganisha aina yaani katika logi n. 1143 01:01:44,210 --> 01:01:48,910 >> Na kisha, kama Dan alikuwa akisema, Merge aina ni aina ya kama njia sawa kwamba 1144 01:01:48,910 --> 01:01:50,320 kufanya search binary. 1145 01:01:50,320 --> 01:01:53,530 Hivyo kupata orodha. 1146 01:01:53,530 --> 01:01:55,170 Na wewe ni kwenda kata katika nusu. 1147 01:01:55,170 --> 01:02:00,580 Na kisha kata yao katika halves ndogo. 1148 01:02:00,580 --> 01:02:01,730 Na kisha kuunganisha yao. 1149 01:02:01,730 --> 01:02:02,960 You guys kukumbuka kwamba, haki? 1150 01:02:02,960 --> 01:02:04,960 OK, kama alikuwa akisema. 1151 01:02:04,960 --> 01:02:08,330 >> OK, kuyatumia. 1152 01:02:08,330 --> 01:02:11,078 Kwa hiyo kile ni pointer? 1153 01:02:11,078 --> 01:02:12,050 >> Watazamaji: [inaudible]. 1154 01:02:12,050 --> 01:02:12,820 >> LUCAS: mahali. 1155 01:02:12,820 --> 01:02:13,720 OK. 1156 01:02:13,720 --> 01:02:18,530 Mimi najua kuwa David inaonyesha rundo la video ya Binky na mambo akizungumzia 1157 01:02:18,530 --> 01:02:19,080 kila mmoja. 1158 01:02:19,080 --> 01:02:22,960 Lakini Mimi kama kufikiri ya kuyatumia kama tu mahali. 1159 01:02:22,960 --> 01:02:26,110 Hivyo ni variable kwamba ni kwenda kuhifadhi mahali. 1160 01:02:26,110 --> 01:02:31,940 >> Hivyo ni tu hii variable maalum kwamba ni ka nne kwa muda mrefu. 1161 01:02:31,940 --> 01:02:36,550 Kumbuka, kwamba pointer na kitu chochote ni daima nne ka muda mrefu kwa ajili yetu 32-bit 1162 01:02:36,550 --> 01:02:39,370 mashine hivyo kesi kwa appliance. 1163 01:02:39,370 --> 01:02:41,920 1164 01:02:41,920 --> 01:02:47,050 Na ni tu ana eneo ya kutofautiana ndani yake. 1165 01:02:47,050 --> 01:02:50,240 >> OK, hivyo kuna kumbukumbu hii, kimsingi. 1166 01:02:50,240 --> 01:02:57,420 Kwa hiyo, kila block ya kumbukumbu kweli ina studio, ambayo ni pepe ya 1167 01:02:57,420 --> 01:02:58,890 slotty kumbukumbu. 1168 01:02:58,890 --> 01:03:02,370 Hivyo hiyo ina maana kwamba siwezi kuwa pointer akizungumzia 1169 01:03:02,370 --> 01:03:03,380 yoyote ya anwani hizi. 1170 01:03:03,380 --> 01:03:09,930 Hivyo sababu tutaweza kutumia kuyatumia ni kama mimi kukumbuka eneo 1171 01:03:09,930 --> 01:03:12,300 kwamba variable maalum ni kumbukumbu. 1172 01:03:12,300 --> 01:03:16,560 >> Na wewe guys kukumbuka kwamba mmoja wa wale kesi ilikuwa kama mimi kuwa na kazi 1173 01:03:16,560 --> 01:03:20,820 kama nina kweli nataka wewe wabadilishane kwa reals, mimi kwa kweli 1174 01:03:20,820 --> 01:03:22,110 na kutuma pointer. 1175 01:03:22,110 --> 01:03:23,460 Si kutofautiana. 1176 01:03:23,460 --> 01:03:25,200 Je, guys kumbuka kwamba? 1177 01:03:25,200 --> 01:03:26,450 between-- tofauti 1178 01:03:26,450 --> 01:03:33,350 1179 01:03:33,350 --> 01:03:34,120 jina ni nini? 1180 01:03:34,120 --> 01:03:36,010 Wito kwa thamani na wito kwa kumbukumbu, haki? 1181 01:03:36,010 --> 01:03:36,840 >> OK, yeah. 1182 01:03:36,840 --> 01:03:38,330 Hivyo wito kwa thamani. 1183 01:03:38,330 --> 01:03:43,570 Wakati wewe tu kutuma kutofautiana kwa kazi wewe ni kutuma tu thamani. 1184 01:03:43,570 --> 01:03:45,610 Hivyo wewe ni kweli kutuma nakala ya kutofautiana. 1185 01:03:45,610 --> 01:03:49,720 Na programu yako hawakuweza huduma kidogo kuhusu kama variable huo kweli 1186 01:03:49,720 --> 01:03:51,650 hufanya nakala. 1187 01:03:51,650 --> 01:03:56,330 >> Na wito kwa kumbukumbu ina maana kwamba Mimi kwa kweli kutuma nakala ya 1188 01:03:56,330 --> 01:03:57,550 pointer kwa variable kwamba. 1189 01:03:57,550 --> 01:04:00,970 Hivyo ina maana kwamba mimi nina kutuma eneo la kwamba kutofautiana. 1190 01:04:00,970 --> 01:04:04,440 Hivyo kuhisi nina eneo la variable, wakati mimi wito kazi 1191 01:04:04,440 --> 01:04:09,700 na kuyatumia, mimi nina uwezo wa kweli mabadiliko ya data kwamba alikuwa katika kuu. 1192 01:04:09,700 --> 01:04:12,050 Mantiki? 1193 01:04:12,050 --> 01:04:17,560 >> Pamoja na kwamba, pointer ni nakala, pointer bado ina anwani halisi ya 1194 01:04:17,560 --> 01:04:20,090 variable kwamba mimi wanataka mabadiliko. 1195 01:04:20,090 --> 01:04:21,920 Mantiki? 1196 01:04:21,920 --> 01:04:24,290 >> Hivyo kujenga kuyatumia. 1197 01:04:24,290 --> 01:04:28,410 Kumbuka, pointer daima kuwa aina kwamba ni akizungumzia 1198 01:04:28,410 --> 01:04:29,890 kwa na kisha nyota. 1199 01:04:29,890 --> 01:04:31,030 Na kisha wewe kuweka jina. 1200 01:04:31,030 --> 01:04:35,765 Basi kumbuka kwamba wakati wowote una chochote nyota, ni kama pointer kwa 1201 01:04:35,765 --> 01:04:38,990 kwamba chochote variable aina kwamba alikuwa. 1202 01:04:38,990 --> 01:04:42,850 >> Hivyo hapa katika nyota, kwa mfano, ni pointer na integer. 1203 01:04:42,850 --> 01:04:47,680 Na kisha char nyota ni pointer char nyota na kadhalika. 1204 01:04:47,680 --> 01:04:47,960 Yeah? 1205 01:04:47,960 --> 01:04:52,710 >> Watazamaji: Je, kama tuna pointer kwa n nyota x. 1206 01:04:52,710 --> 01:04:55,255 Mimi najua kuwa inajenga pointer kwa x. 1207 01:04:55,255 --> 01:04:59,432 Je, ni pia kutangaza x integer? 1208 01:04:59,432 --> 01:05:05,170 >> LUCAS: OK, hivyo wakati wewe kusema n nyota x, wewe si kujenga pointer kwa 1209 01:05:05,170 --> 01:05:06,000 variable x. 1210 01:05:06,000 --> 01:05:08,170 Wewe ni kujenga pointer aitwaye x. 1211 01:05:08,170 --> 01:05:09,396 >> Watazamaji: [inaudible]. 1212 01:05:09,396 --> 01:05:14,250 >> LUCAS: Hivyo wakati mimi kusema n nyota x, mimi nina akisema, hey, katika kumbukumbu, mimi nina kwenda 1213 01:05:14,250 --> 01:05:16,390 kupata moja ya masanduku hayo matatu. 1214 01:05:16,390 --> 01:05:20,750 Na mimi nina kwenda kusema kwamba ni kwenda kuwa x, ambayo ni 1215 01:05:20,750 --> 01:05:22,000 kwenda kuwa pointer. 1216 01:05:22,000 --> 01:05:26,860 1217 01:05:26,860 --> 01:05:30,640 Na jambo la kuvutia kuhusu kuyatumia ni kuwa sisi tunasema kwamba wana 1218 01:05:30,640 --> 01:05:32,620 4 ka kwa ajili ya 32-bit mashine. 1219 01:05:32,620 --> 01:05:36,320 Na sababu ya kuwa ni kwa sababu 4 ka ni 32-bits. 1220 01:05:36,320 --> 01:05:40,490 >> Na mashine kwamba ni 64 bits kweli na kuyatumia anwani 1221 01:05:40,490 --> 01:05:43,480 kwamba ni 64 bits kwa muda mrefu. 1222 01:05:43,480 --> 01:05:49,820 Hivyo ni tu ina maana kwamba ukubwa wa anwani katika mashine ni tofauti. 1223 01:05:49,820 --> 01:05:52,270 >> Hivyo referencing na Dereferencing. 1224 01:05:52,270 --> 01:05:54,310 Kuna kampuni mbili ambazo nyie lazima kukumbuka. 1225 01:05:54,310 --> 01:05:55,450 kwanza ni Ampersand. 1226 01:05:55,450 --> 01:05:56,810 pili ni nyota. 1227 01:05:56,810 --> 01:06:05,060 Je, si kupata kuchanganyikiwa na kwamba nyota na hii nyota kwa sababu kukumbuka kwamba, katika 1228 01:06:05,060 --> 01:06:06,950 kesi hii, una n nyota. 1229 01:06:06,950 --> 01:06:08,700 >> Ni kama jambo zima pamoja. 1230 01:06:08,700 --> 01:06:10,720 Hakuna nyota n nafasi. 1231 01:06:10,720 --> 01:06:12,070 Hivyo ina maana kwamba ni aina. 1232 01:06:12,070 --> 01:06:14,870 Kumbuka, kwamba wakati una nyota variable, wewe ni 1233 01:06:14,870 --> 01:06:16,230 kuzungumza juu ya aina. 1234 01:06:16,230 --> 01:06:20,540 >> Wakati una tu nyota na kisha jina la kutofautiana, maana yake ni kwamba 1235 01:06:20,540 --> 01:06:24,100 wewe ni dereferencing pointer, ambayo ina maana kwamba wewe ni kuangalia katika 1236 01:06:24,100 --> 01:06:28,290 pointer, kutafuta anwani ni akizungumzia, kwenda kwa anwani hiyo, 1237 01:06:28,290 --> 01:06:30,850 na kuangalia wakati wowote una huko. 1238 01:06:30,850 --> 01:06:34,310 Kwa hiyo mimi kuwaambia wanafunzi wangu kwamba wakati una nyota, unapaswa kufikiria kwamba ni 1239 01:06:34,310 --> 01:06:36,850 abbreviation wa maudhui ya. 1240 01:06:36,850 --> 01:06:39,770 >> Hivyo kama una pointer na wewe kufanya nyota pointer, ni 1241 01:06:39,770 --> 01:06:41,720 maudhui ya pointer. 1242 01:06:41,720 --> 01:06:44,580 Hivyo wewe kwenda chochote ni akizungumzia na kuangalia maudhui mara kwa mara. 1243 01:06:44,580 --> 01:06:47,730 Na Ampersand ni sawa na kitu kama pepe ya. 1244 01:06:47,730 --> 01:06:52,560 >> Hivyo kama mimi kuwa na kutofautiana a-- kama, hebu kusema kwamba mimi int a sawa na 3-- 1245 01:06:52,560 --> 01:06:56,900 kama nataka kupata pepe ya kwamba variable kumbukumbu, siwezi tu kufanya 1246 01:06:56,900 --> 01:06:58,240 Ampersand. 1247 01:06:58,240 --> 01:07:00,280 Hivyo ni pepe ya. 1248 01:07:00,280 --> 01:07:01,530 Mantiki? 1249 01:07:01,530 --> 01:07:03,790 1250 01:07:03,790 --> 01:07:05,040 >> Hivyo hapa ni mfano. 1251 01:07:05,040 --> 01:07:08,370 1252 01:07:08,370 --> 01:07:11,530 Hii ni kukosa int b na int c. 1253 01:07:11,530 --> 01:07:16,520 Hivyo int sawa na 3 ina maana kwamba Mimi nina kwenda kwa kumbukumbu. 1254 01:07:16,520 --> 01:07:19,870 Na mimi nina kwenda kupata yanayopangwa na kuweka namba 3 hapa. 1255 01:07:19,870 --> 01:07:22,200 >> Na kisha int b sawa na 4. 1256 01:07:22,200 --> 01:07:23,100 Mimi nina kwenda kufanya kitu kimoja. 1257 01:07:23,100 --> 01:07:25,840 Kwenda kumbukumbu na kuweka idadi 4 katika moja ya masanduku. 1258 01:07:25,840 --> 01:07:27,100 Na int sawa na 5. 1259 01:07:27,100 --> 01:07:29,740 Kupata sanduku mwingine na kuweka namba 5. 1260 01:07:29,740 --> 01:07:36,160 >> Hivyo ni mstari huu kufanya nini? n nyota pa sawa na Ampersand a. 1261 01:07:36,160 --> 01:07:37,800 Hivyo kwanza ya yote, n nyota pa. 1262 01:07:37,800 --> 01:07:39,050 Je, ni kwa nini? 1263 01:07:39,050 --> 01:07:40,930 1264 01:07:40,930 --> 01:07:42,298 >> Watazamaji: [inaudible]. 1265 01:07:42,298 --> 01:07:47,890 >> LUCAS: Yeah, hivyo n nyota pa, kwanza, anatangaza pointer iitwayo pa. 1266 01:07:47,890 --> 01:07:53,720 Na kisha ni kumshirikisha thamani ya kwamba pointer kuwa pepe ya. 1267 01:07:53,720 --> 01:07:55,790 Hivyo Ampersand. 1268 01:07:55,790 --> 01:07:58,510 Basi, kama mimi kufanya nyota AS, nini ni nyota PB? 1269 01:07:58,510 --> 01:08:02,418 1270 01:08:02,418 --> 01:08:03,150 >> Oh, sorry. 1271 01:08:03,150 --> 01:08:06,330 Hii pia ni kukosa. n nyota PB. 1272 01:08:06,330 --> 01:08:07,905 I mean nyota pc. 1273 01:08:07,905 --> 01:08:11,200 Mimi hivyo sorry. 1274 01:08:11,200 --> 01:08:11,940 Ni kitu kimoja. 1275 01:08:11,940 --> 01:08:16,408 Lakini sasa mimi nina nzuri ar kujenga pointer b na kisha pointer kwa c. 1276 01:08:16,408 --> 01:08:16,886 Yeah? 1277 01:08:16,886 --> 01:08:18,136 >> Watazamaji: [inaudible]? 1278 01:08:18,136 --> 01:08:25,490 1279 01:08:25,490 --> 01:08:26,670 >> LUCAS: Ndiyo. 1280 01:08:26,670 --> 01:08:32,630 Hivyo kama wewe kwenda kumbukumbu na kwenda sanduku kwamba ni designator kwa pa, 1281 01:08:32,630 --> 01:08:37,149 wewe ni kweli kwenda kwa kuona pepe ya. 1282 01:08:37,149 --> 01:08:38,399 OK? 1283 01:08:38,399 --> 01:08:42,970 1284 01:08:42,970 --> 01:08:43,300 Yeah? 1285 01:08:43,300 --> 01:08:45,605 >> Watazamaji: [inaudible]? 1286 01:08:45,605 --> 01:08:49,260 >> LUCAS: Yeah, pointer ni mahali. 1287 01:08:49,260 --> 01:08:50,120 Kamwe kusahau kwamba. 1288 01:08:50,120 --> 01:08:52,800 Ni kama muhimu zaidi sehemu ya juu ya kuyatumia. 1289 01:08:52,800 --> 01:08:56,180 Kuna kuhifadhi na anwani kwa baadhi ya kutofautiana. 1290 01:08:56,180 --> 01:08:56,890 Kitu kingine? 1291 01:08:56,890 --> 01:08:58,370 Yoyote maswali mengine? 1292 01:08:58,370 --> 01:08:59,189 OK. 1293 01:08:59,189 --> 01:09:00,399 >> Hivyo kuyatumia na Arrays. 1294 01:09:00,399 --> 01:09:08,189 Kumbuka kwamba wakati mimi kufanya int safu 3, kimsingi, nini mimi kufanya ni mimi nina, aina 1295 01:09:08,189 --> 01:09:12,779 ya, kutangaza katika pointer. 1296 01:09:12,779 --> 01:09:18,960 Hivyo safu ni aina ya kama pointer kwa mahali maalum katika kumbukumbu katika ambayo mimi 1297 01:09:18,960 --> 01:09:21,999 zilizotengwa inafaa tatu kwa integers. 1298 01:09:21,999 --> 01:09:23,430 Je, hiyo mantiki? 1299 01:09:23,430 --> 01:09:30,250 >> Hivyo wakati mimi kufanya int safu 3, nini mimi nina kufanya, kimsingi, ni kujenga tatu 1300 01:09:30,250 --> 01:09:31,479 inafaa katika kumbukumbu. 1301 01:09:31,479 --> 01:09:33,899 Hivyo mimi tu kupata inafaa tatu katika kumbukumbu. 1302 01:09:33,899 --> 01:09:38,810 Hivyo kama mimi kufanya, basi, nyota safu, ni kimsingi ina maana maudhui ya safu, 1303 01:09:38,810 --> 01:09:46,180 ambayo ina maana mimi kufuta pointer, mimi kwenda kwa nafasi ambayo ni akizungumzia, 1304 01:09:46,180 --> 01:09:47,939 na mimi kuweka namba moja. 1305 01:09:47,939 --> 01:09:53,729 >> Na kisha, kama mimi kufanya nyota safu plus 1, hiyo ni kitu kimoja kama kufanya safu 1306 01:09:53,729 --> 01:09:59,690 mabano moja, ambayo ina maana tu mimi kwenda mahali kwamba ni akizungumzia katika. 1307 01:09:59,690 --> 01:10:03,000 Na kisha plus 1 hufanya mimi kuhama nafasi moja. 1308 01:10:03,000 --> 01:10:06,510 Kwa hiyo mimi kwenda kwa nafasi hii, kwa kweli, na kuweka namba mbili. 1309 01:10:06,510 --> 01:10:10,900 >> Na kisha, hatimaye, wakati mimi kufanya safu plus 2, mimi kwenda ambapo 1310 01:10:10,900 --> 01:10:11,825 akizungumzia safu ya saa. 1311 01:10:11,825 --> 01:10:14,690 Na kisha mimi hoja ya vitalu kumbukumbu. 1312 01:10:14,690 --> 01:10:16,240 Na kisha mimi kuweka namba tatu hapa. 1313 01:10:16,240 --> 01:10:16,600 Yeah? 1314 01:10:16,600 --> 01:10:21,400 >> Watazamaji: Hivyo nyota safu ni tu akisema hatua ya kwanza sana. 1315 01:10:21,400 --> 01:10:25,090 Na unaweza kuongeza 1, kwa sababu tu sisi ni kweli tu 1316 01:10:25,090 --> 01:10:27,295 referencing anwani ule wa kwanza. 1317 01:10:27,295 --> 01:10:28,545 >> LUCAS: Yeah. 1318 01:10:28,545 --> 01:10:32,720 1319 01:10:32,720 --> 01:10:36,020 Kwa nini sisi, kwa mfano, kusema safu 0, safu 1, na safu 2? 1320 01:10:36,020 --> 01:10:38,970 1321 01:10:38,970 --> 01:10:42,790 Mimi kusema, kwa nini wewe kufanya 0, 1, 2, 3 badala ya 1, 2, 3? 1322 01:10:42,790 --> 01:10:46,550 Moja ya sababu ni, moja, kompyuta programmers wanapendelea kuanza 1323 01:10:46,550 --> 01:10:47,750 kuhesabu kutoka 0. 1324 01:10:47,750 --> 01:10:52,370 Barua ni kwa sababu wakati wa kufanya safu 0, ni kitu kimoja kama kufanya safu ni 1325 01:10:52,370 --> 01:10:56,330 pamoja na 0, ambayo ina maana mimi kwenda nafasi hiyo, na mimi si 1326 01:10:56,330 --> 01:10:59,320 ruka vitalu kumbukumbu yoyote. 1327 01:10:59,320 --> 01:11:01,750 Hivyo mimi si hoja vitalu kumbukumbu yoyote. 1328 01:11:01,750 --> 01:11:02,015 Yeah? 1329 01:11:02,015 --> 01:11:03,265 >> Watazamaji: [inaudible]? 1330 01:11:03,265 --> 01:11:05,928 1331 01:11:05,928 --> 01:11:12,670 >> LUCAS: Kwa hiyo yeye ni kuuliza nini ni tofauti kati ya kufanya 1332 01:11:12,670 --> 01:11:14,000 hii au kufanya malloc. 1333 01:11:14,000 --> 01:11:17,550 Moja ya tofauti ni kwamba int safu 3 ni kujenga 1334 01:11:17,550 --> 01:11:19,260 safu juu ya stack. 1335 01:11:19,260 --> 01:11:23,080 Na wakati mimi kufanya malloc, ni inajenga juu ya lundo. 1336 01:11:23,080 --> 01:11:25,250 Je, hiyo mantiki? 1337 01:11:25,250 --> 01:11:28,870 >> Hivyo ni jinsi gani malloc kweli kazi? 1338 01:11:28,870 --> 01:11:32,245 Hivyo kwa nini sisi hata haja ya kutumia malloc? 1339 01:11:32,245 --> 01:11:35,730 1340 01:11:35,730 --> 01:11:39,700 Compiler yako aina ya takwimu nje wote vigezo kwamba wewe alisema. 1341 01:11:39,700 --> 01:11:44,040 Naye inajenga nafasi kwa ajili ya wote wao katika stack. 1342 01:11:44,040 --> 01:11:47,180 Basi wote wa vigezo yako ni kwenda kwa kuwa mahali fulani katika stack. 1343 01:11:47,180 --> 01:11:49,460 Hivyo hapa ni mazingira vigezo. 1344 01:11:49,460 --> 01:11:53,850 >> Hivyo kimsingi, nafasi kwa ajili ya vigezo wale katika kumbukumbu ni zilizotengwa katika 1345 01:11:53,850 --> 01:11:55,080 kukusanya wakati. 1346 01:11:55,080 --> 01:11:58,790 Hivyo ina maana kwamba kompyuta yako ina kujua yote ya vigezo wale 1347 01:11:58,790 --> 01:11:59,790 kabla ya wakati. 1348 01:11:59,790 --> 01:12:02,500 Haina haja ya kujua thamani nini wewe ni kwenda kuweka katika yao. 1349 01:12:02,500 --> 01:12:05,490 Lakini inahitaji kujua jinsi kumbukumbu gani unahitaji. 1350 01:12:05,490 --> 01:12:09,380 >> Lakini sasa hebu kusema kwamba, kwa mfano, wewe ni kujenga safu au kuchukua 1351 01:12:09,380 --> 01:12:13,430 kamba kwamba wewe ni kuchukua kutoka kwa mtumiaji. 1352 01:12:13,430 --> 01:12:17,300 Huwezi kujua jinsi ya muda mrefu kamba ni kwenda kuwa, kwa mfano. 1353 01:12:17,300 --> 01:12:20,600 Hivyo huna kujua hasa jinsi wengi vitalu kumbukumbu kutenga, haki? 1354 01:12:20,600 --> 01:12:24,120 >> Hivyo ni kweli haina mantiki kwa wewe kusema kuweka wahusika 100. 1355 01:12:24,120 --> 01:12:26,420 Na kisha nini kama mtumiaji anaandika 150? 1356 01:12:26,420 --> 01:12:27,670 Wewe ni kwenda kuwa Star. 1357 01:12:27,670 --> 01:12:30,160 1358 01:12:30,160 --> 01:12:34,620 >> Hivyo kimsingi, unaweza kuwa na uhakika wa jinsi kumbukumbu gani unahitaji kutenga 1359 01:12:34,620 --> 01:12:35,960 wakati mpango wa kukusanya. 1360 01:12:35,960 --> 01:12:38,240 Wewe tu kujua kwamba kwa wakati kukimbia. 1361 01:12:38,240 --> 01:12:39,950 Hivyo kwamba ni nini una chungu. 1362 01:12:39,950 --> 01:12:47,610 Hivyo chungu ni kwenda kuwa na kumbukumbu kwamba wewe ni kugawa wakati wa 1363 01:12:47,610 --> 01:12:50,810 muda wa mpango mbio. 1364 01:12:50,810 --> 01:12:55,780 >> Hivyo kimsingi, wakati wa kufanya malloc, nini wewe kufanya ni kugawa kumbukumbu katika 1365 01:12:55,780 --> 01:13:00,160 Runtime, ambayo ina maana kwamba wewe ni kuamua haki wakati huo kuwa wewe 1366 01:13:00,160 --> 01:13:02,670 wanapaswa kuwa na kwamba kumbukumbu. 1367 01:13:02,670 --> 01:13:04,210 Hivyo kwamba wakati wewe ni kugawa yake. 1368 01:13:04,210 --> 01:13:06,430 Je, hiyo mantiki? 1369 01:13:06,430 --> 01:13:11,690 >> Basi kumbuka, stack ina vigezo kwamba ni umba juu ya wakati kukusanya. 1370 01:13:11,690 --> 01:13:14,560 Na kisha lundo ina vigezo kwamba ni umba kama wewe kwenda 1371 01:13:14,560 --> 01:13:15,600 kwa malloc, kwa mfano. 1372 01:13:15,600 --> 01:13:16,850 >> Watazamaji: [inaudible]? 1373 01:13:16,850 --> 01:13:19,179 1374 01:13:19,179 --> 01:13:24,340 >> LUCAS: Hivyo GetString ni kwenda kuwaita malloc. 1375 01:13:24,340 --> 01:13:26,710 Hebu majadiliano juu ya malloc, na Mimi itabidi kueleza GetString. 1376 01:13:26,710 --> 01:13:32,000 Hivyo malloc ni kitu kimoja kama mgao kumbukumbu. 1377 01:13:32,000 --> 01:13:34,600 Hivyo ni kwenda kutenga kumbukumbu juu ya lundo. 1378 01:13:34,600 --> 01:13:40,010 Na ni kwenda na kurudi pointer kwa ambapo kwamba kumbukumbu zilizotengwa katika. 1379 01:13:40,010 --> 01:13:43,090 >> Hivyo wakati wewe do-- 1380 01:13:43,090 --> 01:13:44,910 hapa kwa example-- 1381 01:13:44,910 --> 01:13:45,830 n nyota pointer. 1382 01:13:45,830 --> 01:13:50,520 Na kisha pointer sawa na malloc ukubwa wa inch mara 10. 1383 01:13:50,520 --> 01:13:52,110 Mimi nina kujenga pointer. 1384 01:13:52,110 --> 01:13:59,020 Na kisha mimi nina kumshirikisha kwamba pointer kwa thamani ya pointer kwamba malloc 1385 01:13:59,020 --> 01:13:59,680 akinipa. 1386 01:13:59,680 --> 01:14:04,150 >> Hivyo mimi nina kuuliza malloc unaweza kutenga nafasi kwa ajili ya 10 integers. 1387 01:14:04,150 --> 01:14:05,390 Hiyo ni nini ni kusema. 1388 01:14:05,390 --> 01:14:09,020 Na malloc anitiaye nyuma pointer kwa mahali hapo. 1389 01:14:09,020 --> 01:14:11,460 Mantiki? 1390 01:14:11,460 --> 01:14:12,270 OK. 1391 01:14:12,270 --> 01:14:17,940 Mimi Na GetString ni, kimsingi, kufanya wito kwa malloc hivyo unaweza kutenga 1392 01:14:17,940 --> 01:14:21,680 kumbukumbu wakati wa Runtime. 1393 01:14:21,680 --> 01:14:26,460 >> Daima kumbuka kuangalia kwa null kwa sababu malloc ni kwenda na kurudi null 1394 01:14:26,460 --> 01:14:28,200 kama hawezi kutenga kumbukumbu. 1395 01:14:28,200 --> 01:14:31,660 Hebu kusema kwamba wewe kuuliza kwa ujinga kiasi cha kumbukumbu. 1396 01:14:31,660 --> 01:14:33,950 Kompyuta yako ni si kwenda kuwa uwezo wa kutenga kiasi hicho. 1397 01:14:33,950 --> 01:14:36,410 >> Hivyo malloc ni kwenda tu kurudi null. 1398 01:14:36,410 --> 01:14:42,210 Hivyo daima kumbuka kuangalia kama pointer kwamba got kutoka malloc ni 1399 01:14:42,210 --> 01:14:45,640 null au si kwa sababu, ikiwa ni, unaweza kuwa dereferencing pointer na 1400 01:14:45,640 --> 01:14:48,340 kusababisha makosa upande. 1401 01:14:48,340 --> 01:14:50,930 Na hatimaye, usisahau kumbukumbu yako bure. 1402 01:14:50,930 --> 01:14:57,800 1403 01:14:57,800 --> 01:15:00,560 >> Malloc ni kujenga kumbukumbu katika chungu. 1404 01:15:00,560 --> 01:15:03,436 Na una kumbukumbu bure kabla ya mpango ya mwisho. 1405 01:15:03,436 --> 01:15:05,370 OK, kwamba ni yote kwa ajili yangu. 1406 01:15:05,370 --> 01:15:07,900 Sorry, Rob. 1407 01:15:07,900 --> 01:15:07,950 Shukrani. 1408 01:15:07,950 --> 01:15:09,878 >> [Makofi] 1409 01:15:09,878 --> 01:15:12,679 >> LUCAS: Maswali yoyote mwisho kabla ya Rob inakuja? 1410 01:15:12,679 --> 01:15:13,138 No? 1411 01:15:13,138 --> 01:15:13,597 Yeah? 1412 01:15:13,597 --> 01:15:15,892 >> Watazamaji: Mimi sikuweza kuona hii moja online. 1413 01:15:15,892 --> 01:15:17,269 Je, Uploaded bado? 1414 01:15:17,269 --> 01:15:19,106 >> LUCAS: Nadhani Dave ni kuweka hiyo hivi karibuni. 1415 01:15:19,106 --> 01:15:19,880 >> DAVE: Ni itabidi kuwa posted. 1416 01:15:19,880 --> 01:15:20,310 >> LUCAS: Ni utakuwa online. 1417 01:15:20,310 --> 01:15:21,175 >> Watazamaji: Ni up. 1418 01:15:21,175 --> 01:15:22,090 >> LUCAS: Ni up? 1419 01:15:22,090 --> 01:15:23,157 OK. 1420 01:15:23,157 --> 01:15:23,644 Yeah? 1421 01:15:23,644 --> 01:15:27,053 >> Watazamaji: [inaudible]? 1422 01:15:27,053 --> 01:15:30,285 >> LUCAS: Ndiyo, unapaswa bure wote kumbukumbu kwamba ni kuweka katika chungu. 1423 01:15:30,285 --> 01:15:31,535 >> Watazamaji: [inaudible]? 1424 01:15:31,535 --> 01:15:34,518 1425 01:15:34,518 --> 01:15:36,160 >> LUCAS: Ndiyo. 1426 01:15:36,160 --> 01:15:39,980 Wakati wowote kwamba una malloc utamaduni, unapaswa kuwa na utamaduni bure 1427 01:15:39,980 --> 01:15:42,640 baada ya kuacha kutumia variable kwamba. 1428 01:15:42,640 --> 01:15:44,800 Hivyo malloc na bure ni daima pamoja. 1429 01:15:44,800 --> 01:15:45,410 Marafiki zao bora. 1430 01:15:45,410 --> 01:15:46,720 Yeah. 1431 01:15:46,720 --> 01:15:47,970 Rob? 1432 01:15:47,970 --> 01:15:55,595 1433 01:15:55,595 --> 01:15:56,850 >> Rob: Mimi itabidi kwenda haraka. 1434 01:15:56,850 --> 01:16:00,466 Na pia video itakuwa kuweka up. 1435 01:16:00,466 --> 01:16:01,716 Nina mic juu ya. 1436 01:16:01,716 --> 01:16:24,060 1437 01:16:24,060 --> 01:16:26,230 >> OK, hivyo wiki tano mambo ya ajabu. 1438 01:16:26,230 --> 01:16:27,970 Jambo la kwanza sisi ni stack. 1439 01:16:27,970 --> 01:16:33,390 Basi kumbuka kwamba kuna stack moja tu frame kwa kazi kazi simu. 1440 01:16:33,390 --> 01:16:34,710 Tutaweza kuona kwamba katika pili. 1441 01:16:34,710 --> 01:16:37,850 Na pia kukumbuka kile kweli inakwenda katika sura ya kila stack ni kwenda kuwa 1442 01:16:37,850 --> 01:16:41,880 vigezo mitaa ya kazi yetu, hoja kwamba ni kupita katika yetu 1443 01:16:41,880 --> 01:16:43,880 kazi, pamoja na michache mambo mengine huna kweli 1444 01:16:43,880 --> 01:16:45,260 haja ya kuwa na wasiwasi kuhusu. 1445 01:16:45,260 --> 01:16:50,950 >> Hivyo hapa ni mfano mpango ambapo, ilani, kuu ni printfing kurudi 1446 01:16:50,950 --> 01:16:52,830 thamani ya foo 4. 1447 01:16:52,830 --> 01:16:57,930 foo ni kwenda tu kurudi thamani ya bar 4 comma 6. 1448 01:16:57,930 --> 01:17:02,380 Na bar ni kwenda kuweka baadhi ya mitaa variable n sawa na 4 mara 6. 1449 01:17:02,380 --> 01:17:03,920 Na kisha kurudi n. 1450 01:17:03,920 --> 01:17:09,130 >> Hivyo hebu tuangalie stack katika iteration halisi ya mpango huu. 1451 01:17:09,130 --> 01:17:10,500 Hivyo kuna chini ya stack yetu. 1452 01:17:10,500 --> 01:17:12,620 Kumbuka kwamba stack kukua up. 1453 01:17:12,620 --> 01:17:15,370 Hivyo chini ya stack yetu, sisi na stack frame kwa kuu. 1454 01:17:15,370 --> 01:17:17,000 Wakati mpango kuanza, kuu daima ni kwenda kuwa katika 1455 01:17:17,000 --> 01:17:18,560 chini ya stack yetu. 1456 01:17:18,560 --> 01:17:20,880 >> Na nini ni ndani ya yetu stack frame kwa kuu? 1457 01:17:20,880 --> 01:17:23,810 Hivyo hata ingawa hakuna mitaa vigezo kuu, kama nilivyosema hapo kabla, 1458 01:17:23,810 --> 01:17:29,670 tuna argc na rgv kuchukua nafasi ndani ya stack frame kuu. 1459 01:17:29,670 --> 01:17:33,260 Hivyo kuu sasa ni kwenda wito foo kazi. 1460 01:17:33,260 --> 01:17:35,125 Na hiyo ina maana foo ni kwenda kupata mwenyewe stack frame yake. 1461 01:17:35,125 --> 01:17:36,970 >> Hivyo sasa tuko ndani ya kazi foo. 1462 01:17:36,970 --> 01:17:38,610 Na nini mahitaji ya kwenda katika stack frame foo ya? 1463 01:17:38,610 --> 01:17:41,100 Naam, foo ina hoja n. 1464 01:17:41,100 --> 01:17:45,440 Na n ni sawa na 4 tangu kwamba ni nini kuu ni kupita kama hoja foo ya. 1465 01:17:45,440 --> 01:17:48,490 >> Hivyo sasa foo ni kwenda kuwaita bar. 1466 01:17:48,490 --> 01:17:52,070 Je, ni bar kwenda na ndani ya ya 'sura yake stack? 1467 01:17:52,070 --> 01:17:55,610 Ina x sawa na 4 y sawa na sita. 1468 01:17:55,610 --> 01:17:58,540 Kwamba si wote kwamba sisi ni kwenda kuwa na katika stack frame kwa sababu bar 1469 01:17:58,540 --> 01:18:00,580 pia ina mitaa variable n. 1470 01:18:00,580 --> 01:18:03,370 Na n tunakwenda kuweka sawa na 24. 1471 01:18:03,370 --> 01:18:05,750 >> Hivyo sasa bar ni kwenda na kurudi n. 1472 01:18:05,750 --> 01:18:09,300 Hivyo bar ni kurudi 24 kwa stack frame foo. 1473 01:18:09,300 --> 01:18:12,560 Na kwa sababu bar sasa inarejea, kwamba ina maana sisi ni popping frame stack 1474 01:18:12,560 --> 01:18:14,250 kwa bar mbali ya stack. 1475 01:18:14,250 --> 01:18:18,430 Hivyo kumbukumbu zote kwamba alikuwa bar kutumia ni sasa mbali stack. 1476 01:18:18,430 --> 01:18:21,550 >> Sasa, foo pia ni kwenda kurudi 24 kwa kuu. 1477 01:18:21,550 --> 01:18:25,470 Hivyo sasa kwamba foo ni kurudi, kumbukumbu kwamba foo alikuwa akitumia katika 'yake 1478 01:18:25,470 --> 01:18:27,550 stack frame pia gone. 1479 01:18:27,550 --> 01:18:29,660 Na sasa, kuu ni kwenda kuwaita printf. 1480 01:18:29,660 --> 01:18:31,660 Hivyo printf ni tu kazi nyingine. 1481 01:18:31,660 --> 01:18:35,320 Wakati sisi kuwaita printf, ni kwenda kuwa frame stack mwingine kwa printf 1482 01:18:35,320 --> 01:18:36,470 kazi simu. 1483 01:18:36,470 --> 01:18:37,990 >> Je, ni sisi kupita printf? 1484 01:18:37,990 --> 01:18:40,090 Hiyo ni nini kinaendelea kwenda juu ya sura yake stack. 1485 01:18:40,090 --> 01:18:44,970 Kwa uchache sana, sisi ni kupita asilimia kwamba i Backslash n na 1486 01:18:44,970 --> 01:18:47,180 Hoja 24. 1487 01:18:47,180 --> 01:18:50,370 Ni wanaweza kuwa na zaidi katika stack frame ni kama printf hutokea kwa kuwa kwa kutumia baadhi ya 1488 01:18:50,370 --> 01:18:51,200 vigezo mitaa. 1489 01:18:51,200 --> 01:18:51,920 Sisi hawajui. 1490 01:18:51,920 --> 01:18:53,810 >> Lakini wote kwamba huenda katika printf ya stack frame. 1491 01:18:53,810 --> 01:18:55,740 Ni kwenda kutekeleza printf. 1492 01:18:55,740 --> 01:18:56,830 Kisha printf kosa. 1493 01:18:56,830 --> 01:18:57,820 Ni watarejea. 1494 01:18:57,820 --> 01:18:58,960 Hatimaye, kuu ni kosa. 1495 01:18:58,960 --> 01:18:59,860 Kuu ya watarejea. 1496 01:18:59,860 --> 01:19:02,020 Na kisha mpango wetu ni kosa. 1497 01:19:02,020 --> 01:19:02,480 Yeah? 1498 01:19:02,480 --> 01:19:04,505 >> Watazamaji: Je, wewe kuona [inaudible] 1499 01:19:04,505 --> 01:19:05,900 hoja [inaudible] 1500 01:19:05,900 --> 01:19:06,830 vigezo? 1501 01:19:06,830 --> 01:19:09,970 >> Rob: Hivyo kuna ni tofauti hila kati ya hoja na vigezo. 1502 01:19:09,970 --> 01:19:14,400 Na kwa kweli, katika kawaida kusema, watu huwa tu kuchanganya yao juu wakati wote. 1503 01:19:14,400 --> 01:19:17,550 Lakini vigezo ni rasmi jina ya mambo. 1504 01:19:17,550 --> 01:19:20,180 >> Hivyo argc na argv ni vigezo kuu. 1505 01:19:20,180 --> 01:19:23,440 Hoja ni nini hasa kupita katika kama vigezo wale. 1506 01:19:23,440 --> 01:19:28,340 Kwa hiyo, kuna wakati mimi wito foo ya 4, 4 ni hoja mimi nina kupita katika. 1507 01:19:28,340 --> 01:19:31,460 Na parameter n, ndani ya foo, inachukua juu ya thamani 4 1508 01:19:31,460 --> 01:19:32,880 tangu 4 ilikuwa hoja. 1509 01:19:32,880 --> 01:19:35,826 >> Watazamaji: [inaudible]? 1510 01:19:35,826 --> 01:19:37,880 >> Rob: n ni variable mitaa bar. 1511 01:19:37,880 --> 01:19:41,420 1512 01:19:41,420 --> 01:19:44,960 n bado ni mitaa kwa foo, lakini ni parameter kwa foo. 1513 01:19:44,960 --> 01:19:48,190 Siyo variable mitaa. 1514 01:19:48,190 --> 01:19:48,546 Yeah? 1515 01:19:48,546 --> 01:19:51,180 >> Watazamaji: [inaudible]? 1516 01:19:51,180 --> 01:19:55,400 >> Rob: foo wito tu bar na kurudi chochote bar anarudi. 1517 01:19:55,400 --> 01:19:56,786 >> Watazamaji: [inaudible]? 1518 01:19:56,786 --> 01:19:59,591 >> Rob: Yeah, tu kuona nyingi stack muafaka. 1519 01:19:59,591 --> 01:20:00,082 Yeah? 1520 01:20:00,082 --> 01:20:03,519 >> Watazamaji: Kwa nini foo kuitwa kabla ya printf? 1521 01:20:03,519 --> 01:20:05,920 >> Rob: Kwa nini foo kuitwa mbele ya printf? 1522 01:20:05,920 --> 01:20:10,740 Ili niweze kuwa, badala yake, amefanya kitu kama int x ni sawa na foo ya 4 1523 01:20:10,740 --> 01:20:12,980 na kisha kuchapishwa x. 1524 01:20:12,980 --> 01:20:17,900 Lakini badala yake, mimi pamoja kazi wito katika hoja printf. 1525 01:20:17,900 --> 01:20:23,670 >> Lakini taarifa kwamba tunaweza si kweli kutekeleza wito kwa printf mpaka sisi 1526 01:20:23,670 --> 01:20:25,610 kufikiri nini foo ya 4 ni. 1527 01:20:25,610 --> 01:20:27,480 Hivyo sisi ni kwenda kufanya tathmini ya hii. 1528 01:20:27,480 --> 01:20:32,504 Na mara moja tu hiyo ni kufanyika ni kwenda kurudi na kutathmini hii. 1529 01:20:32,504 --> 01:20:32,990 Yeah? 1530 01:20:32,990 --> 01:20:37,364 >> Watazamaji: Kwa kuwa wote wawili bar [inaudible] 1531 01:20:37,364 --> 01:20:41,738 thamani, kwa nini sisi si kuwa na [inaudible]? 1532 01:20:41,738 --> 01:20:44,400 >> Rob: Wao kabisa lazima int. 1533 01:20:44,400 --> 01:20:46,260 Hiyo ilikuwa si hawakupata juu ya hupita nyingi. 1534 01:20:46,260 --> 01:20:49,010 Hivyo ni lazima int bar na int foo tangu wote wawili wa wale 1535 01:20:49,010 --> 01:20:50,460 wanaorejea integers. 1536 01:20:50,460 --> 01:20:54,214 Utupu ni tu kama wao siyo kwenda kurudi maadili halisi. 1537 01:20:54,214 --> 01:20:54,692 Yeah? 1538 01:20:54,692 --> 01:20:58,038 >> Watazamaji: Kama tungekuwa na juu kurudi, [inaudible]? 1539 01:20:58,038 --> 01:21:01,862 1540 01:21:01,862 --> 01:21:03,730 >> Rob: line juu ya kurudi? 1541 01:21:03,730 --> 01:21:04,410 >> Watazamaji: Yeah. 1542 01:21:04,410 --> 01:21:10,780 Kama kama alivyofanya printf na [inaudible], itakuwa ni magazeti mara mbili? 1543 01:21:10,780 --> 01:21:12,992 >> Rob: Hivyo ndani ya foo? 1544 01:21:12,992 --> 01:21:15,945 Kama tungekuwa na printf hapa hapa? 1545 01:21:15,945 --> 01:21:16,750 >> Watazamaji: Yeah. 1546 01:21:16,750 --> 01:21:19,510 >> Rob: Hivyo kama sisi alikuwa na printf haki hapa, ingekuwa magazeti mara moja. 1547 01:21:19,510 --> 01:21:23,400 Tangu sisi ni wito foo mara moja haki hapa, basi tutaweza hit printf. 1548 01:21:23,400 --> 01:21:24,620 Kisha tutaweza wito bar. 1549 01:21:24,620 --> 01:21:25,710 Na kisha foo watarejea. 1550 01:21:25,710 --> 01:21:26,275 Na hiyo ni yake. 1551 01:21:26,275 --> 01:21:30,985 Sisi tu milele kukutana printf mara moja. 1552 01:21:30,985 --> 01:21:31,482 Yeah? 1553 01:21:31,482 --> 01:21:32,973 >> Watazamaji: [inaudible] 1554 01:21:32,973 --> 01:21:37,950 printf wito foo kwa sababu tuko kwanza wito printf na kisha sisi ni kupita 1555 01:21:37,950 --> 01:21:38,580 hoja. 1556 01:21:38,580 --> 01:21:40,960 >> Rob: Hivyo katika nadharia, ni si printf wito foo? 1557 01:21:40,960 --> 01:21:42,220 Hivyo hakuna. 1558 01:21:42,220 --> 01:21:47,360 Tu ili c ni kwenda kutekeleza mambo haya ni, kabla ya sisi unaweza 1559 01:21:47,360 --> 01:21:49,800 wito kazi, hoja zote kwa kazi na 1560 01:21:49,800 --> 01:21:51,600 kabisa tathmini. 1561 01:21:51,600 --> 01:21:53,540 Hivyo ni hii kabisa tathmini? 1562 01:21:53,540 --> 01:21:54,610 Ndiyo, ni kamba tu. 1563 01:21:54,610 --> 01:21:55,480 Ni tu thamani. 1564 01:21:55,480 --> 01:21:57,200 >> Kisha sisi kuwa na kabisa kutathmini hii. 1565 01:21:57,200 --> 01:21:59,720 Mara hii ni kosa, sasa wote wa hoja yake ni tathmini. 1566 01:21:59,720 --> 01:22:01,982 Na sasa tunaweza kufanya wito kwa printf. 1567 01:22:01,982 --> 01:22:02,478 Yeah? 1568 01:22:02,478 --> 01:22:03,966 >> Watazamaji: Swali moja. 1569 01:22:03,966 --> 01:22:06,942 Kama una utupu kazi, lazima una kurudi semicolon? 1570 01:22:06,942 --> 01:22:09,910 >> Rob: Je, si kurudi semicolon kama una utupu kazi. 1571 01:22:09,910 --> 01:22:13,370 1572 01:22:13,370 --> 01:22:14,780 OK. 1573 01:22:14,780 --> 01:22:15,830 Hivyo sasa baadhi ya mambo chungu. 1574 01:22:15,830 --> 01:22:19,640 Hivyo chungu ni jinsi sisi ni kwenda kukabiliana na usimamizi wa kumbukumbu ya nguvu. 1575 01:22:19,640 --> 01:22:23,100 Na hii moja kwa moja tofauti na stack ambayo sisi kuita moja kwa moja 1576 01:22:23,100 --> 01:22:24,100 kumbukumbu ya usimamizi. 1577 01:22:24,100 --> 01:22:27,140 >> Kadhalika stack, wewe kamwe kweli kuwa kushughulikia jinsi vigezo mitaa 1578 01:22:27,140 --> 01:22:30,400 ni kuwa kusukuma na popped mbali yote muafaka haya stack na mambo ambayo yote. 1579 01:22:30,400 --> 01:22:31,070 Huwezi kuwa na wasiwasi kuhusu hilo. 1580 01:22:31,070 --> 01:22:32,070 Ni moja kwa moja. 1581 01:22:32,070 --> 01:22:36,990 Hivyo chungu ni mwongozo. 1582 01:22:36,990 --> 01:22:38,070 Na [inaudible] 1583 01:22:38,070 --> 01:22:41,260 linatokana na kazi hizi malloc na bure. 1584 01:22:41,260 --> 01:22:43,550 >> Hivyo hapa ni mpango mwingine. 1585 01:22:43,550 --> 01:22:47,145 Wote sisi ni kufanya ni mallocing integer. 1586 01:22:47,145 --> 01:22:49,360 Sisi ni hifadhi hiyo katika nyota x. 1587 01:22:49,360 --> 01:22:52,520 Bila shaka, sisi kuwa na kuangalia kuona kama x ni null. 1588 01:22:52,520 --> 01:22:56,400 Kisha tunakwenda kuweka kile tu x ni akizungumzia kwa 50. 1589 01:22:56,400 --> 01:23:00,350 1590 01:23:00,350 --> 01:23:03,260 Magazeti nini x ni akizungumzia, magazeti x, na kisha bure x. 1591 01:23:03,260 --> 01:23:08,920 >> Hivyo ni jinsi gani hii kwa kweli kwenda kuangalia kama sisi kuangalia stack yetu na lundo? 1592 01:23:08,920 --> 01:23:10,950 Hivyo tutaweza kuanza tena. 1593 01:23:10,950 --> 01:23:12,580 chini ya stack yetu kama kabla. 1594 01:23:12,580 --> 01:23:15,930 Kumbuka kwamba wewe lundo moja kwa moja anapinga stack? 1595 01:23:15,930 --> 01:23:18,850 Hivyo sisi ni kwenda kuwa na juu ya lundo yetu up huko. 1596 01:23:18,850 --> 01:23:22,590 >> Hivyo chini ya stack yetu, tuna stack frame yetu kwa ajili ya kuu. 1597 01:23:22,590 --> 01:23:28,000 Ni ina nafasi kwa argc, argv, na sisi sasa na za mitaa variable x, ambayo 1598 01:23:28,000 --> 01:23:30,030 ni nyota int. 1599 01:23:30,030 --> 01:23:32,240 Hivyo sisi ni kwenda iterate kupitia mpango huu. 1600 01:23:32,240 --> 01:23:34,420 Jambo la kwanza sisi ni wito kwa malloc. 1601 01:23:34,420 --> 01:23:36,250 >> Hivyo sisi ni kufanya wito kwa malloc. 1602 01:23:36,250 --> 01:23:37,100 Malloc ni kazi. 1603 01:23:37,100 --> 01:23:38,770 Ni kwenda kupata sura ya stack. 1604 01:23:38,770 --> 01:23:40,180 Je, ni sisi kupita kwa malloc? 1605 01:23:40,180 --> 01:23:41,610 Hiyo kwenda ndani ya ya sura ya stack. 1606 01:23:41,610 --> 01:23:45,130 Sisi ni kupita ukubwa wa n, ambayo ni 4. 1607 01:23:45,130 --> 01:23:49,700 Hivyo kwamba ni kupita kwa malloc. 1608 01:23:49,700 --> 01:23:50,910 >> Je, malloc nini? 1609 01:23:50,910 --> 01:23:53,820 Ni grabs us baadhi ya nafasi juu ya lundo. 1610 01:23:53,820 --> 01:23:55,320 Hivyo sisi ni kwenda kwenda chungu. 1611 01:23:55,320 --> 01:23:57,990 Na sisi ni kwenda kunyakua 4 ka kutoka lundo. 1612 01:23:57,990 --> 01:24:01,500 Basi hebu tu kutoa kwamba anwani holela. 1613 01:24:01,500 --> 01:24:06,680 0x123 Tu kujifanya kuwa ni anwani kwamba ni juu ya lundo. 1614 01:24:06,680 --> 01:24:12,300 >> Kwa hiyo kile ni kweli ndani ya kwamba mkoa wa kumbukumbu katika eneo Ox123? 1615 01:24:12,300 --> 01:24:13,080 Takataka. 1616 01:24:13,080 --> 01:24:15,270 Hivyo tuna si kuhifadhiwa chochote ndani yake. 1617 01:24:15,270 --> 01:24:18,830 Hivyo kama mbali kama sisi kujua, ni inaweza kuwa kitu chochote. 1618 01:24:18,830 --> 01:24:20,560 Usifikiri ni sifuri. 1619 01:24:20,560 --> 01:24:23,870 Ni zaidi uwezekano si sifuri. 1620 01:24:23,870 --> 01:24:26,260 >> Hivyo sasa malloc anarudi. 1621 01:24:26,260 --> 01:24:28,020 Na nini sisi kufanya wakati malloc kurudi? 1622 01:24:28,020 --> 01:24:29,800 Sisi kuweka nini anarudi. 1623 01:24:29,800 --> 01:24:32,290 Sisi kuweka x sawa na kile ni kurudi. 1624 01:24:32,290 --> 01:24:33,690 Hivyo nini ni kurudi? 1625 01:24:33,690 --> 01:24:38,150 Ni kurudi 0x123 tangu kwamba ni anwani ya block ya kumbukumbu kwamba ni 1626 01:24:38,150 --> 01:24:40,850 tu zilizotengwa katika chungu. 1627 01:24:40,850 --> 01:24:47,160 >> Hivyo kurudi 0x123 x sasa ni kwenda kuwa na kuweka sawa na 0x123 ambayo, pictorially, 1628 01:24:47,160 --> 01:24:52,940 sisi mara nyingi kuteka kama x kuwa halisi arrow akizungumzia kuzuia kwamba. 1629 01:24:52,940 --> 01:24:55,820 Lakini x ni hifadhi ya tu anwani hiyo. 1630 01:24:55,820 --> 01:24:58,670 Hivyo basi, tuna kuangalia kama x ni null. 1631 01:24:58,670 --> 01:24:59,120 Ni si null. 1632 01:24:59,120 --> 01:25:02,170 Sisi kujifanya kuwa kwamba malloc wamefanikiwa. 1633 01:25:02,170 --> 01:25:04,950 >> Hivyo sasa nyota x ni sawa na 50. 1634 01:25:04,950 --> 01:25:08,450 Hivyo nyota anakumbuka ina maana kwenda kwa anwani hiyo. 1635 01:25:08,450 --> 01:25:12,700 Hivyo 0x123 Sisi ni kwenda kwenda kwa anwani hiyo. 1636 01:25:12,700 --> 01:25:14,660 Hivyo kwamba inatuleta hadi pale. 1637 01:25:14,660 --> 01:25:16,310 Tunafanya nini katika anwani hiyo? 1638 01:25:16,310 --> 01:25:19,020 Sisi ni hifadhi 50. 1639 01:25:19,020 --> 01:25:22,500 >> Kwa hiyo baada ya mstari huu, kwamba ni nini mambo ni kwenda kuangalia kama. 1640 01:25:22,500 --> 01:25:24,640 Hivyo sasa ni tena takataka huko up. 1641 01:25:24,640 --> 01:25:28,910 Sasa tunajua kwamba 50 ni katika kwamba anwani hasa kwa sababu 1642 01:25:28,910 --> 01:25:32,410 sisi kuweka kwa hiyo. 1643 01:25:32,410 --> 01:25:32,790 OK? 1644 01:25:32,790 --> 01:25:34,370 Hivyo sasa sisi ni kwenda magazeti f. 1645 01:25:34,370 --> 01:25:38,490 >> Hivyo kwanza tunakwenda magazeti nyota x. 1646 01:25:38,490 --> 01:25:39,640 Hivyo nyota x ni nini? 1647 01:25:39,640 --> 01:25:44,300 Tena, nyota x maana kwenda Jambo kwamba x ni akizungumzia. 1648 01:25:44,300 --> 01:25:47,140 Hivyo x ni hifadhi ya 0x123 Go hiyo. 1649 01:25:47,140 --> 01:25:48,490 Sisi kupata 50. 1650 01:25:48,490 --> 01:25:50,540 Hivyo magazeti f hiyo. 1651 01:25:50,540 --> 01:25:54,900 Na hiyo ina maana ni kwenda magazeti 50. 1652 01:25:54,900 --> 01:25:56,850 Na kisha kwamba anarudi. 1653 01:25:56,850 --> 01:25:58,340 >> Na kisha tuna printf pili. 1654 01:25:58,340 --> 01:25:59,370 Sisi ni sasa asilimia p. 1655 01:25:59,370 --> 01:26:01,680 Kama wewe hawajaona, hiyo ndiyo tu jinsi magazeti pointer. 1656 01:26:01,680 --> 01:26:04,960 Hivyo tuna asilimia i, asilimia f, na wote wa wale ambao tayari. 1657 01:26:04,960 --> 01:26:07,160 Hivyo asilimia p, magazeti pointer. 1658 01:26:07,160 --> 01:26:08,920 >> Hivyo x ni pointer. 1659 01:26:08,920 --> 01:26:13,440 Hivyo kama sisi ni kwenda magazeti x yenyewe, sisi ni uchapishaji nini ni kweli ndani ya 1660 01:26:13,440 --> 01:26:19,220 x, ambayo ni 0x123 Hivyo kwanza magazeti f ni kwenda magazeti 50. 1661 01:26:19,220 --> 01:26:23,620 magazeti pili f ni kwenda na magazeti 0x123 Yeah? 1662 01:26:23,620 --> 01:26:27,460 >> Watazamaji: Je, matumizi ya asilimia x na magazeti pointer? 1663 01:26:27,460 --> 01:26:31,200 >> Rob: Hivyo wewe kutumia asilimia x na magazeti pointer? 1664 01:26:31,200 --> 01:26:38,350 Hivyo unaweza lakini asilimia x ni tu, kwa ujumla, kwa kama kama una baadhi ya 1665 01:26:38,350 --> 01:26:40,325 integer na unataka magazeti ni kama hexadecimal. 1666 01:26:40,325 --> 01:26:43,250 1667 01:26:43,250 --> 01:26:44,880 Hiyo ni jinsi ya kufanya kwamba tu. 1668 01:26:44,880 --> 01:26:47,160 >> Wakati, asilimia d ingekuwa magazeti kama decimal. 1669 01:26:47,160 --> 01:26:50,310 Hiyo ni Sisi ndio kupata asilimia d. i ni tu integer. 1670 01:26:50,310 --> 01:26:52,690 asilimia p ni hasa kwa kuyatumia. 1671 01:26:52,690 --> 01:26:54,060 >> Hivyo x ni pointer. 1672 01:26:54,060 --> 01:26:56,360 Tunataka kutumia asilimia p. 1673 01:26:56,360 --> 01:26:57,937 Lakini asilimia x anaweza kufanya kazi. 1674 01:26:57,937 --> 01:26:58,414 Yeah? 1675 01:26:58,414 --> 01:26:59,664 >> Watazamaji: [inaudible]? 1676 01:26:59,664 --> 01:27:04,138 1677 01:27:04,138 --> 01:27:05,388 >> Rob: Yeah. 1678 01:27:05,388 --> 01:27:07,870 1679 01:27:07,870 --> 01:27:13,440 Angalau kwa hii call-- hivyo mimi hawakuiweka katika hapa. 1680 01:27:13,440 --> 01:27:19,850 Lakini hoja hizi mbili ni lazima ndani ya sura hii stack 1681 01:27:19,850 --> 01:27:23,040 pamoja na vigezo serikali za mitaa printf hutokea kwa kuwa kutumia. 1682 01:27:23,040 --> 01:27:27,020 Na kisha wito karibu na printf sasa ndani ya printf stack frame ni 1683 01:27:27,020 --> 01:27:33,960 asilimia p backslash n na chochote thamani ya x ni, ambayo ni 0x123. 1684 01:27:33,960 --> 01:27:34,425 Yeah? 1685 01:27:34,425 --> 01:27:35,675 >> Watazamaji: [inaudible]? 1686 01:27:35,675 --> 01:27:38,145 1687 01:27:38,145 --> 01:27:40,880 >> Rob: Ni itabidi magazeti kitu kwamba inaonekana kama hii. 1688 01:27:40,880 --> 01:27:41,846 >> Watazamaji: [inaudible]. 1689 01:27:41,846 --> 01:27:44,510 >> Rob: Hivyo ni Prints katika fomu ya mahali. 1690 01:27:44,510 --> 01:27:47,003 Inaonekana kama mahali. 1691 01:27:47,003 --> 01:27:47,494 Yeah? 1692 01:27:47,494 --> 01:27:49,458 >> Watazamaji: [inaudible]? 1693 01:27:49,458 --> 01:27:51,075 >> Rob: Kwa nini ni nini? 1694 01:27:51,075 --> 01:27:52,920 >> Watazamaji: [inaudible]? 1695 01:27:52,920 --> 01:27:55,240 >> Rob: Kwa nini ni pointer hii 4 ka? 1696 01:27:55,240 --> 01:27:58,500 Hivyo kuna rundo zima ya 0 ya mbele ya hii. 1697 01:27:58,500 --> 01:28:03,740 Hivyo ni kweli 0x0000000123. 1698 01:28:03,740 --> 01:28:06,510 Katika mfumo 64-bit, kutakuwa na rundo zima la zeros zaidi. 1699 01:28:06,510 --> 01:28:11,410 1700 01:28:11,410 --> 01:28:11,900 Yeah? 1701 01:28:11,900 --> 01:28:13,150 >> Watazamaji: [inaudible]. 1702 01:28:13,150 --> 01:28:17,290 1703 01:28:17,290 --> 01:28:21,130 >> Rob: Hivyo printf kwanza ni kwenda print-- 1704 01:28:21,130 --> 01:28:21,980 >> Watazamaji: [inaudible]. 1705 01:28:21,980 --> 01:28:24,420 >> Rob: Ndiyo, ni kwenda magazeti nini x ni akizungumzia. 1706 01:28:24,420 --> 01:28:27,030 1707 01:28:27,030 --> 01:28:29,070 Star anasema ni kitu gani kitu akizungumzia. 1708 01:28:29,070 --> 01:28:30,300 Kunyakua hiyo. 1709 01:28:30,300 --> 01:28:31,455 Hivyo nini ni akizungumzia? 1710 01:28:31,455 --> 01:28:31,850 50. 1711 01:28:31,850 --> 01:28:32,410 Kunyakua hiyo. 1712 01:28:32,410 --> 01:28:33,390 Hiyo ni nini sisi ni kwenda magazeti. 1713 01:28:33,390 --> 01:28:37,020 Wakati ambapo, moja ijayo, sisi ni tu uchapishaji x yenyewe. 1714 01:28:37,020 --> 01:28:38,850 Nini ni ndani ya f? 1715 01:28:38,850 --> 01:28:43,710 0x123. 1716 01:28:43,710 --> 01:28:44,500 OK. 1717 01:28:44,500 --> 01:28:46,620 >> Na kisha, hatimaye, tuna bure. 1718 01:28:46,620 --> 01:28:48,040 Je, ni sisi kupita kwa bure? 1719 01:28:48,040 --> 01:28:49,470 Sisi ni kupita x. 1720 01:28:49,470 --> 01:28:52,380 Kwamba wakati mimi kwa kweli kuonyeshwa ni katika sura ya stack. 1721 01:28:52,380 --> 01:28:56,370 >> Hivyo sisi ni kupita thamani 0x123 ya bure. 1722 01:28:56,370 --> 01:28:59,070 Hivyo sasa bure anajua, haki ya wote, Nina kwenda juu ya lundo 1723 01:28:59,070 --> 01:29:00,050 na kwamba bure kumbukumbu. 1724 01:29:00,050 --> 01:29:03,920 Ni tena kwa kutumia kile ni saa anwani 0x123. 1725 01:29:03,920 --> 01:29:07,010 >> Hivyo bure utaachia kwamba kutoka lundo. 1726 01:29:07,010 --> 01:29:09,490 Sasa chungu yetu ni tupu tena. 1727 01:29:09,490 --> 01:29:11,120 Tuna uvujaji kumbukumbu hakuna. 1728 01:29:11,120 --> 01:29:12,940 Sasa bure watarejea. 1729 01:29:12,940 --> 01:29:16,130 Taarifa kwamba x ni bado 0x123. 1730 01:29:16,130 --> 01:29:18,240 Lakini hiyo ni sasa si halali kumbukumbu. 1731 01:29:18,240 --> 01:29:21,220 1732 01:29:21,220 --> 01:29:23,986 Sisi lazima tena dereference x. 1733 01:29:23,986 --> 01:29:24,440 Yeah? 1734 01:29:24,440 --> 01:29:27,240 >> Watazamaji: Je, kurudi 0 redundant? 1735 01:29:27,240 --> 01:29:28,290 >> Rob: Je, returen 0 redundant? 1736 01:29:28,290 --> 01:29:31,110 Ndiyo. 1737 01:29:31,110 --> 01:29:33,950 Sisi tu ya kuweka kwamba kuna sababu sisi kuwa na kurudi moja kwa ajili ya hewa. 1738 01:29:33,950 --> 01:29:36,830 Hivyo ni kama, yeah, lets ni pamoja na kurudi 0. 1739 01:29:36,830 --> 01:29:37,310 Yeah? 1740 01:29:37,310 --> 01:29:38,560 >> Watazamaji: [inaudible]? 1741 01:29:38,560 --> 01:29:42,110 1742 01:29:42,110 --> 01:29:45,580 >> Rob: Hivyo baada ya bure x, kile kinachotokea kama sisi kujaribu dereference pointer? 1743 01:29:45,580 --> 01:29:47,240 Ni inawezekana kwamba hakuna kitu chochote kitaenda vibaya. 1744 01:29:47,240 --> 01:29:49,330 Ni inawezekana kwamba sisi bado itabidi kupata 50. 1745 01:29:49,330 --> 01:29:53,590 >> Ni inawezekana, pia, kwamba kumbukumbu ni sasa ni kuwa kutumika kwa ajili ya kitu kingine. 1746 01:29:53,590 --> 01:29:57,140 Hivyo ni tabia kisichojulikana. 1747 01:29:57,140 --> 01:30:00,772 Na undefined ina maana yoyote yanaweza kutokea. 1748 01:30:00,772 --> 01:30:01,250 Yeah? 1749 01:30:01,250 --> 01:30:02,500 >> Watazamaji: [inaudible]? 1750 01:30:02,500 --> 01:30:07,942 1751 01:30:07,942 --> 01:30:10,830 >> Rob: Hapana, hivyo kama wewe hawawajui x kwa kitu kingine. 1752 01:30:10,830 --> 01:30:15,870 Hivyo kama haki hapa sisi alisema x ni sawa na malloc kitu else-- 1753 01:30:15,870 --> 01:30:17,100 malloc ukubwa event-- 1754 01:30:17,100 --> 01:30:20,180 basi hiyo block awali ya kumbukumbu si huru. 1755 01:30:20,180 --> 01:30:21,490 Na sisi rasmi waliopotea. 1756 01:30:21,490 --> 01:30:23,150 Hiyo ni kumbukumbu leak. 1757 01:30:23,150 --> 01:30:25,090 Tumekuwa waliopotea kumbukumbu zote kwa kuwa block ya kumbukumbu. 1758 01:30:25,090 --> 01:30:26,827 Hivyo hakuna njia tunaweza milele bure yake. 1759 01:30:26,827 --> 01:30:32,074 1760 01:30:32,074 --> 01:30:36,630 OK, hivyo basi kurudi 0 njia kufanyika. 1761 01:30:36,630 --> 01:30:37,900 >> Haki zote, hivyo stack kufurika. 1762 01:30:37,900 --> 01:30:39,320 Nini wazo hapa? 1763 01:30:39,320 --> 01:30:41,210 Basi kumbuka, chungu ni kwenda chini. 1764 01:30:41,210 --> 01:30:43,480 Stack ni kwenda up. 1765 01:30:43,480 --> 01:30:48,000 Hivyo hii ni mfano kutoka hotuba, Nadhani, ambapo kuu ni kwenda tu 1766 01:30:48,000 --> 01:30:51,380 wito huu foo kazi, ambayo ni kwenda kujiita recursively juu na 1767 01:30:51,380 --> 01:30:52,320 tena. 1768 01:30:52,320 --> 01:30:55,370 >> Hivyo stack muafaka ni kwenda kazi sawa. 1769 01:30:55,370 --> 01:30:58,130 Hivyo sisi ni kwenda kuanza na kuu kama chini stack frame. 1770 01:30:58,130 --> 01:31:02,000 Kisha kuu ni kwenda kuwaita foo, ambayo ni kwenda kupata sura ya stack. 1771 01:31:02,000 --> 01:31:04,260 >> Kisha foo ni kwenda kuwaita foo tena, ambayo ni kwenda kupata 1772 01:31:04,260 --> 01:31:05,500 frame mwingine stack. 1773 01:31:05,500 --> 01:31:08,270 Na kisha tena, na tena, na tena, na tena mpaka, hatimaye, sisi kukimbia 1774 01:31:08,270 --> 01:31:09,190 ndani ya chungu. 1775 01:31:09,190 --> 01:31:11,990 Hivyo hii ni jinsi sisi kupata stack kufurika. 1776 01:31:11,990 --> 01:31:14,910 Na katika hatua hii, wewe seg kosa. 1777 01:31:14,910 --> 01:31:17,335 Au wewe d kweli seg kosa kabla ya hatua hii lakini yeah. 1778 01:31:17,335 --> 01:31:19,660 >> Watazamaji: Je msingi dampo sawa na seg kosa? 1779 01:31:19,660 --> 01:31:26,140 >> Rob: Hivyo utaona segmentation kosa msingi kutupwa. 1780 01:31:26,140 --> 01:31:28,760 Unaweza kupata msingi dampo wakati wewe seg kosa. 1781 01:31:28,760 --> 01:31:32,580 Na ni kama dampo ya yote ya yaliyomo ya kumbukumbu yako sasa ili 1782 01:31:32,580 --> 01:31:36,670 kwamba unaweza kujaribu na kutambua nini SEG alipinga viongozi. 1783 01:31:36,670 --> 01:31:37,135 Yeah? 1784 01:31:37,135 --> 01:31:38,385 >> Watazamaji: [inaudible]? 1785 01:31:38,385 --> 01:31:40,855 1786 01:31:40,855 --> 01:31:45,460 >> Rob: Hivyo segmentation kosa njia kuna stack kufurika. 1787 01:31:45,460 --> 01:31:47,060 Hivyo si lazima. 1788 01:31:47,060 --> 01:31:49,880 kosa segmentation ina maana kwamba wewe ni kugusa kumbukumbu katika njia 1789 01:31:49,880 --> 01:31:50,880 unapaswa kuwa. 1790 01:31:50,880 --> 01:31:54,750 Hivyo njia moja ya kwamba kinachotokea ni kwamba, wakati stack kufurika, sisi kuanza kugusa 1791 01:31:54,750 --> 01:31:58,736 kumbukumbu katika njia ya kwamba sisi haipaswi. 1792 01:31:58,736 --> 01:31:59,208 Yeah? 1793 01:31:59,208 --> 01:32:00,458 >> Watazamaji: [inaudible]? 1794 01:32:00,458 --> 01:32:03,456 1795 01:32:03,456 --> 01:32:05,830 >> Rob: Hivyo ndani ya kitanzi usio. 1796 01:32:05,830 --> 01:32:08,770 Kama, hii ni kama usio kujirudia kitanzi na hivyo sisi kupata mwingine 1797 01:32:08,770 --> 01:32:09,770 stack frame kila wakati. 1798 01:32:09,770 --> 01:32:13,540 Lakini tu ndani ya mara kwa mara usio wakati one-- 1799 01:32:13,540 --> 01:32:16,390 vizuri, hebu si hata magazeti f-- 1800 01:32:16,390 --> 01:32:17,040 kufanya kitu fulani. 1801 01:32:17,040 --> 01:32:18,390 Chochote. 1802 01:32:18,390 --> 01:32:20,610 >> Sisi siyo kwenda kuwa kupata frame mwingine stack. 1803 01:32:20,610 --> 01:32:22,530 Sisi ni kwenda tu kuweka looping juu ya maelekezo haya moja. 1804 01:32:22,530 --> 01:32:23,920 stack ni si kukua. 1805 01:32:23,920 --> 01:32:27,290 Ni ukweli kwamba kila kujirudia wito anatupa frame stack. 1806 01:32:27,290 --> 01:32:31,231 Hiyo ni kwa nini sisi kupata stack kufurika. 1807 01:32:31,231 --> 01:32:31,728 Yeah? 1808 01:32:31,728 --> 01:32:38,189 >> Watazamaji: Hivyo kama wewe alisema kupata kitanzi wakati na kisha [inaudible]? 1809 01:32:38,189 --> 01:32:42,000 >> Rob: Hivyo kama ndani ya kitanzi wakati kulikuwa na printf, bado ingekuwa 1810 01:32:42,000 --> 01:32:42,790 si seg kosa. 1811 01:32:42,790 --> 01:32:46,090 Mimi tu hakutaka kuchanganya mambo. 1812 01:32:46,090 --> 01:32:46,610 Ingekuwa kitanzi. 1813 01:32:46,610 --> 01:32:48,225 Wewe Ningependa kupata stack moja sura kwa printf. 1814 01:32:48,225 --> 01:32:49,580 >> Kisha printf atarudi. 1815 01:32:49,580 --> 01:32:50,280 Kisha wewe d kitanzi tena. 1816 01:32:50,280 --> 01:32:51,460 Wewe Ningependa kupata stack moja sura kwa printf. 1817 01:32:51,460 --> 01:32:52,850 Ni atarudi. 1818 01:32:52,850 --> 01:32:54,060 Single stack frame. 1819 01:32:54,060 --> 01:33:00,215 Hivyo wewe si kupata hii usio piling up muafaka stack. 1820 01:33:00,215 --> 01:33:03,185 >> Watazamaji: [inaudible]? 1821 01:33:03,185 --> 01:33:04,040 >> Rob: Ndiyo. 1822 01:33:04,040 --> 01:33:09,360 Hivyo hii kufurika stack hutokea kwa sababu hakuna hata mmoja wa haya 1823 01:33:09,360 --> 01:33:11,600 wito kwa foo wanaorejea. 1824 01:33:11,600 --> 01:33:15,250 Hivyo kama sisi kurudi, basi sisi ingekuwa kuanza kupoteza muafaka stack. 1825 01:33:15,250 --> 01:33:17,870 Na kisha sisi bila stack kufurika. 1826 01:33:17,870 --> 01:33:20,070 Na kwamba ni kwa nini unahitaji kesi ya msingi kwa ajili ya kazi yako binafsi. 1827 01:33:20,070 --> 01:33:22,992 1828 01:33:22,992 --> 01:33:23,479 Yeah? 1829 01:33:23,479 --> 01:33:27,375 >> Watazamaji: Je, ukubwa uwezo na stack kwa chungu huo kwa 1830 01:33:27,375 --> 01:33:29,880 mipango yote? 1831 01:33:29,880 --> 01:33:31,910 >> Rob: Takribani. 1832 01:33:31,910 --> 01:33:35,090 Ni uwezo ukubwa wa stack na lundo sawa kwa programu yote? 1833 01:33:35,090 --> 01:33:37,180 Takribani. 1834 01:33:37,180 --> 01:33:40,080 Kuna baadhi ya Ubahatishaji kwa ambapo stack kuanza na 1835 01:33:40,080 --> 01:33:42,400 ambapo lundo kuanza. 1836 01:33:42,400 --> 01:33:45,870 Kama wewe kutokea kwa kuwa na mengi yote ya vigezo kimataifa na mambo, unaweza 1837 01:33:45,870 --> 01:33:49,520 kuchukua mbali na baadhi ya nafasi kwa chungu yako. 1838 01:33:49,520 --> 01:33:54,060 >> Katika mfumo 64-bit, wewe karibu kuwa na kumbukumbu kubwa. 1839 01:33:54,060 --> 01:33:55,820 Kuna tu sana. 1840 01:33:55,820 --> 01:33:59,250 Kati ya bits 32 na 64 bits, kwamba ni tofauti kubwa. 1841 01:33:59,250 --> 01:34:02,350 >> Wewe ni kwenda kupata mengi zaidi stack na lundo nafasi kwenye 64-bit 1842 01:34:02,350 --> 01:34:05,810 mfumo kwa sababu kuna tu zaidi anwani kwamba wanaweza kutumia. 1843 01:34:05,810 --> 01:34:09,360 Lakini juu ya mfumo wa mtu binafsi, itakuwa kuwa takribani kiasi kama hicho cha stack 1844 01:34:09,360 --> 01:34:10,785 na lundo nafasi. 1845 01:34:10,785 --> 01:34:13,635 1846 01:34:13,635 --> 01:34:15,530 Wote haki. 1847 01:34:15,530 --> 01:34:18,220 >> Kwa hivyo jambo la mwisho ni mkusanyiko. 1848 01:34:18,220 --> 01:34:19,810 Hivyo unapaswa kujua mchakato huu. 1849 01:34:19,810 --> 01:34:22,240 Kuna hatua nne kubwa. 1850 01:34:22,240 --> 01:34:24,400 Hivyo moja kwanza lazima kuwa rahisi kukumbuka. 1851 01:34:24,400 --> 01:34:25,085 Kabla ya usindikaji. 1852 01:34:25,085 --> 01:34:28,390 Ina kiambishi awali kabla ndani yake. 1853 01:34:28,390 --> 01:34:32,080 Hivyo inakuja kabla ya kila kitu kingine. 1854 01:34:32,080 --> 01:34:34,000 >> Jambo kukumbuka ni hash. 1855 01:34:34,000 --> 01:34:37,250 Hivyo hash amefafanua na hash ni pamoja na katika yote ya hayo. 1856 01:34:37,250 --> 01:34:39,560 Yote haya ni kabla ya processor maelekezo. 1857 01:34:39,560 --> 01:34:42,030 Haya ni mambo ambayo kabla ya processor inachukua huduma ya. 1858 01:34:42,030 --> 01:34:43,680 >> Kwa hiyo ni nini kabla ya processor kufanya nini? 1859 01:34:43,680 --> 01:34:44,850 Ni jambo kweli bubu. 1860 01:34:44,850 --> 01:34:49,380 Yote ni uwezo wa ni yote haya nakala, na kata, na kuweka shughuli. 1861 01:34:49,380 --> 01:34:51,790 >> Hivyo hash ni pamoja na kiwango i0 dot h. 1862 01:34:51,790 --> 01:34:52,990 Nini ni kwamba kufanya? 1863 01:34:52,990 --> 01:34:56,610 Ni grabbing standard i0 dot h faili na pasting ndani ya juu 1864 01:34:56,610 --> 01:34:58,960 popote anasema hash ni pamoja na standard i0 dot h. 1865 01:34:58,960 --> 01:35:02,480 >> Na hash yoyote kufafanua kwamba tumekuwa kuonekana, ni nini kwamba kufanya? 1866 01:35:02,480 --> 01:35:06,730 Yake kuiga thamani kwamba hash defined hufafanuliwa kama na pasting kwamba 1867 01:35:06,730 --> 01:35:08,500 popote wewe ni kutumia thamani. 1868 01:35:08,500 --> 01:35:13,400 Hivyo Preprocessor tu haina kweli Nakala rahisi shughuli msingi. 1869 01:35:13,400 --> 01:35:15,870 Ni kitu gani smart. 1870 01:35:15,870 --> 01:35:18,920 Hivyo kila kitu kingine ni ngumu zaidi. 1871 01:35:18,920 --> 01:35:22,970 >> Hivyo sasa kwamba Preprocessor ni done, sisi kweli kukusanya. 1872 01:35:22,970 --> 01:35:24,320 Kwa hiyo ni nini kuandaa maana yake nini? 1873 01:35:24,320 --> 01:35:27,310 Sisi ni sasa kwenda c code kwa mkutano code. 1874 01:35:27,310 --> 01:35:27,570 Yeah? 1875 01:35:27,570 --> 01:35:28,820 >> Watazamaji: [inaudible]? 1876 01:35:28,820 --> 01:35:32,390 1877 01:35:32,390 --> 01:35:34,220 >> Rob: Yeah, sisi hawakupata hiyo. 1878 01:35:34,220 --> 01:35:36,880 1879 01:35:36,880 --> 01:35:38,660 Hivyo kuandaa. 1880 01:35:38,660 --> 01:35:40,310 Sisi ni kwenda kutoka c kwa mkutano. 1881 01:35:40,310 --> 01:35:42,470 Hivyo hii ni halisi mabadiliko ya lugha. 1882 01:35:42,470 --> 01:35:45,240 Kuandaa yenyewe ina maana kwenda kutoka juu ngazi ya lugha 1883 01:35:45,240 --> 01:35:47,340 chini lugha ngazi. 1884 01:35:47,340 --> 01:35:50,720 >> Na c ni high lugha ngazi ikilinganishwa na mkutano. 1885 01:35:50,720 --> 01:35:52,320 Mkutano ni nini? 1886 01:35:52,320 --> 01:35:56,440 Maelekezo yake kwamba ni, pretty sana, kwa ajili ya CPU yako. 1887 01:35:56,440 --> 01:35:59,130 Lakini bado kompyuta yako haina si kuelewa mkutano. 1888 01:35:59,130 --> 01:36:01,570 Ni tu anaelewa ndio na zeros. 1889 01:36:01,570 --> 01:36:06,160 Hivyo hatua ya pili ni kukusanyika, ambayo huleta sisi kutoka maelekezo haya kwamba 1890 01:36:06,160 --> 01:36:08,760 CPU wako anaelewa na kwa kweli tafsiri yao, kwa 1891 01:36:08,760 --> 01:36:10,820 ndio na zeros. 1892 01:36:10,820 --> 01:36:13,570 >> Hivyo C kwa mkutano kwa binary. 1893 01:36:13,570 --> 01:36:15,870 Lakini sina executable bado. 1894 01:36:15,870 --> 01:36:19,550 Hivyo kufikiri ya maktaba cs50. 1895 01:36:19,550 --> 01:36:23,070 Tuna zinazotolewa kwa binary kwa hii maktaba cs50, ambayo ina GetString 1896 01:36:23,070 --> 01:36:24,400 na GetInt na wote. 1897 01:36:24,400 --> 01:36:25,700 >> Lakini cs50 library-- 1898 01:36:25,700 --> 01:36:27,650 katika na itself-- ni si kutekelezwa. 1899 01:36:27,650 --> 01:36:29,570 Haina kuwa na kazi kuu. 1900 01:36:29,570 --> 01:36:32,230 Ni tu rundo la binary kwamba unaweza kutumia. 1901 01:36:32,230 --> 01:36:41,730 Hivyo ni jinsi gani sisi kuunganisha kuleta pamoja wote wa haya files mbalimbali binary 1902 01:36:41,730 --> 01:36:43,110 ndani ya executable halisi. 1903 01:36:43,110 --> 01:36:45,900 Moja kwamba unaweza aina dot dot kufyeka nje. 1904 01:36:45,900 --> 01:36:51,660 >> Hivyo hii ni kama faili kwamba wewe aliandika, - chochote mpango wako is-- 1905 01:36:51,660 --> 01:36:53,620 Ceaser dot c. 1906 01:36:53,620 --> 01:36:55,100 Lakini sasa imekuwa ni compiled chini ya binary. 1907 01:36:55,100 --> 01:36:56,480 Hivyo Ceaser dot o. 1908 01:36:56,480 --> 01:36:59,620 Na hii ni cs50 yetu maktaba binary. 1909 01:36:59,620 --> 01:37:02,284 Na wao ni kuwa pamoja ndani ya executable moja. 1910 01:37:02,284 --> 01:37:02,758 Yeah? 1911 01:37:02,758 --> 01:37:04,008 >> Watazamaji: [inaudible]? 1912 01:37:04,008 --> 01:37:08,800 1913 01:37:08,800 --> 01:37:12,710 >> Rob: Hivyo kwanza ni pamoja na, kumbuka, hash ni pamoja na ni kweli 1914 01:37:12,710 --> 01:37:13,810 kabla ya processor hatua. 1915 01:37:13,810 --> 01:37:14,750 Lakini hiyo ni tofauti. 1916 01:37:14,750 --> 01:37:20,730 Kama wewe si kutumia kazi yoyote kwamba ni nje ya faili yako moja kisha, 1917 01:37:20,730 --> 01:37:26,100 hakuna, huna haja ya kuhusisha kitu chochote tangu una kila kitu. 1918 01:37:26,100 --> 01:37:30,310 >> Alisema kwamba, printf ni kuwa wanaohusishwa katika. 1919 01:37:30,310 --> 01:37:32,820 Kama wewe milele kutumia printf, hiyo ni kitu kwamba mahitaji ya kuwa wanaohusishwa katika 1920 01:37:32,820 --> 01:37:35,740 kwa sababu hakuwa na kuandika kwamba. 1921 01:37:35,740 --> 01:37:39,530 Na, kwa kweli, printf ni moja kwa moja wanaohusishwa katika. 1922 01:37:39,530 --> 01:37:42,760 Unajua jinsi katika mstari amri au wakati wewe aina ya kufanya, unaweza kuona ni na 1923 01:37:42,760 --> 01:37:46,690 dash l cs50, ambayo ina kiungo katika maktaba cs50? 1924 01:37:46,690 --> 01:37:49,070 Printf, na mambo kama hayo, ni kwenda kuwa na mahusiano moja kwa moja. 1925 01:37:49,070 --> 01:37:51,730 1926 01:37:51,730 --> 01:37:53,930 Maswali yoyote nyingine juu ya kitu chochote? 1927 01:37:53,930 --> 01:37:56,280 >> Watazamaji: [inaudible]? 1928 01:37:56,280 --> 01:37:58,300 >> Rob: Kuunganisha? 1929 01:37:58,300 --> 01:38:03,450 Tuna rundo zima la mbalimbali binary files. 1930 01:38:03,450 --> 01:38:06,410 Huu ni mfano kisheria kwamba sisi kutumia ni cs50 maktaba. 1931 01:38:06,410 --> 01:38:09,960 Sisi compiled na aliyopewa na wewe binary kwa ajili ya maktaba hii cs50. 1932 01:38:09,960 --> 01:38:12,410 >> Unataka kutumia GetString katika mpango wako. 1933 01:38:12,410 --> 01:38:14,750 Hivyo kwenda na kutumia GetString. 1934 01:38:14,750 --> 01:38:19,700 Lakini bila kificho wangu binary kwa GetString, wakati wewe kukusanya code yako 1935 01:38:19,700 --> 01:38:23,140 chini, unaweza si kweli kukimbia yako mpango kwa sababu GetString String ni 1936 01:38:23,140 --> 01:38:25,080 bado kabisa defined. 1937 01:38:25,080 --> 01:38:29,220 >> Ni wakati tu kiungo katika binary yangu ambayo ina GetString kwamba sasa, kila 1938 01:38:29,220 --> 01:38:31,130 haki, kweli mimi nitafanya GetString. 1939 01:38:31,130 --> 01:38:32,330 Faili yangu ni kamili. 1940 01:38:32,330 --> 01:38:34,208 Na siwezi kukimbia hii. 1941 01:38:34,208 --> 01:38:34,697 Yeah? 1942 01:38:34,697 --> 01:38:37,631 >> Watazamaji: Je, kuunganisha kubadilisha binary kwa executable? 1943 01:38:37,631 --> 01:38:42,032 Hivyo hata kama huna nyingine maktaba, bila bado kuwa 1944 01:38:42,032 --> 01:38:44,477 muhimu kutafsiri [Inaudible]? 1945 01:38:44,477 --> 01:38:48,640 >> Rob: Hivyo executable ni bado katika binary. 1946 01:38:48,640 --> 01:38:51,750 Ni kuchanganya tu nzima rundo la binaries. 1947 01:38:51,750 --> 01:38:55,124 1948 01:38:55,124 --> 01:38:56,591 >> Watazamaji: Asante sana. 1949 01:38:56,591 --> 01:38:58,560 >> Rob: Hakuna tatizo. 1950 01:38:58,560 --> 01:38:59,540 Yoyote maswali mengine? 1951 01:38:59,540 --> 01:39:02,001 Vinginevyo, sisi ni kuweka wote. 1952 01:39:02,001 --> 01:39:02,690 Wote haki. 1953 01:39:02,690 --> 01:39:02,990 Shukrani. 1954 01:39:02,990 --> 01:39:03,590 >> [Makofi] 1955 01:39:03,590 --> 01:39:04,490 >> Watazamaji: Asante. 1956 01:39:04,490 --> 01:39:05,740 >> Rob: Yeah. 1957 01:39:05,740 --> 01:39:06,582