1 00:00:00,000 --> 00:00:02,270 [Powered by Google Translate] [Wiki 2, Inaendelea] 2 00:00:02,270 --> 00:00:04,220 [David J. Malan, Chuo Kikuu cha Harvard] 3 00:00:04,220 --> 00:00:06,880 [Hii ni CS50. - CS50.TV] 4 00:00:06,880 --> 00:00:10,990 Wote haki. Hii ni CS50, na hii ni mwisho wa wiki 2. 5 00:00:10,990 --> 00:00:14,410 Kama wewe wanatarajia kuwa na njaa kote wakati huu kesho, 6 00:00:14,410 --> 00:00:18,620 tunajua kwamba sisi ni kwenda kuitisha kama kesho kikundi kidogo, Alhamisi, 13:15. 7 00:00:18,620 --> 00:00:21,360 Kuna URL hii hapa kama wewe Ningependa RSVP. 8 00:00:21,360 --> 00:00:26,740 Nafasi ni mdogo, hivyo tafadhali kusamehe ikiwa fomu ya kujaa kwa muda kujaza hii nje. 9 00:00:26,740 --> 00:00:29,300 Mwingine URL, ingawa, ambayo inaweza kuwa ya riba ni hii. 10 00:00:29,300 --> 00:00:32,369 Katika tu kuhusu muda wa mwezi mmoja, bila shaka ni kwenda kuwa inapatikana 11 00:00:32,369 --> 00:00:36,890 wote kwa mapana zaidi kupitia edX, via ambayo folks kwenye mtandao itakuwa na uwezo wa kufuata pamoja, 12 00:00:36,890 --> 00:00:39,380 kushiriki katika kozi kabisa kikamilifu, kwa kweli. 13 00:00:39,380 --> 00:00:42,270 Wao utakuwa kutumia Appliance CS50 na CS50 Jadili 14 00:00:42,270 --> 00:00:45,490 na zaidi ya zana mbalimbali programu kwamba sisi tayari wamekuwa wakitumia huu muhula. 15 00:00:45,490 --> 00:00:48,710 Na moja ya mipango tunatarajia kuchukua kama majaribio mwaka huu 16 00:00:48,710 --> 00:00:51,930 ni kuona tu kiasi gani maudhui tunaweza kutafsiri 17 00:00:51,930 --> 00:00:53,960 katika lugha nyingine zinazozungumzwa na kuandikwa. 18 00:00:53,960 --> 00:00:57,500 Hivyo kama unaweza kuwa na maslahi katika kushiriki katika mradi huu 19 00:00:57,500 --> 00:01:02,270 ambapo sisi kutoa nakala ya Kiingereza na subtitles kwa mihadhara kozi ya 20 00:01:02,270 --> 00:01:05,450 na kaptula na semina na sehemu na kama, 21 00:01:05,450 --> 00:01:08,200 kama wewe kusema fluently au kuandika fluently baadhi lugha nyingine, 22 00:01:08,200 --> 00:01:12,290 tunataka upendo kushiriki kwa mradi huu ambapo wewe kuchukua moja au zaidi ya video, 23 00:01:12,290 --> 00:01:15,200 kutafsiri yao katika lugha ya wewe kujua vizuri kabisa. 24 00:01:15,200 --> 00:01:18,700 >> Ili kukupa hisia ya interface, kuna hii ya mtandao msingi user interface 25 00:01:18,700 --> 00:01:22,090 kwamba tutaweza kutumia ambayo kujenga kimsingi UI kama hii. 26 00:01:22,090 --> 00:01:24,290 Hii ilikuwa yangu kufundisha baadhi Halloween iliyopita, 27 00:01:24,290 --> 00:01:27,390 na upande wa kulia kuna katika nyeusi karibu na mihuri wakati hizi, 28 00:01:27,390 --> 00:01:31,210 utaona mambo mbalimbali waliotoka kinywa yangu kwamba siku, 29 00:01:31,210 --> 00:01:34,850 na kisha chini yake wewe utakuwa na uwezo wa kutafsiri katika lugha nyingine 30 00:01:34,850 --> 00:01:38,690 hasa nini ramani ni kati ya, katika kesi hii, Kiingereza na, kusema, Kihispania. 31 00:01:38,690 --> 00:01:40,440 Hivyo ni kweli sana user-kirafiki chombo. 32 00:01:40,440 --> 00:01:43,370 Unaweza Rewind na kufunga-mbele sana kwa urahisi na keyboard shortcuts. 33 00:01:43,370 --> 00:01:47,490 Hivyo kama ungependa kushiriki katika jaribio hili na kuwa na maneno yako kuonekana na kusoma 34 00:01:47,490 --> 00:01:51,850 na maelfu uwezekano wa folks huko nje, tafadhali jisikie huru kushiriki. 35 00:01:51,850 --> 00:01:54,350 Neno moja kuhusu kitten kutoka Jumatatu. 36 00:01:54,350 --> 00:02:00,350 Isije tumetuma ujumbe overly inatisha, kufanya kutambua kwamba, kama ofisi masaa zinaonyesha 37 00:02:00,350 --> 00:02:03,300 na kama sehemu kupendekeza, kubuni bila shaka ni mengi sana 38 00:02:03,300 --> 00:02:07,360 kuwa wanafunzi kushirikiana na kuzungumza na kazi kupitia seti tatizo 39 00:02:07,360 --> 00:02:11,260 na matatizo kwa pamoja, na kwa kweli mstari tu inakuja chini, 40 00:02:11,260 --> 00:02:16,010 tena, kazi wewe hatimaye kuwasilisha lazima yako mwenyewe. 41 00:02:16,010 --> 00:02:18,860 Na hivyo kabisa kwa uaminifu, katika masaa ya ofisi ni kabisa ya kawaida, 42 00:02:18,860 --> 00:02:22,240 ni kabisa kutarajiwa hata, kuwa kuzungumza na baadhi ya rafiki karibu na wewe. 43 00:02:22,240 --> 00:02:24,370 >> Kama yeye au yeye ni ikikabiliwa na mada baadhi na wewe ni kama, 44 00:02:24,370 --> 00:02:27,940 "Oh, vizuri, nikupe glimpse ya baadhi mstari wa kanuni kwamba mimi aliandika," hiyo ni nzuri, 45 00:02:27,940 --> 00:02:31,250 kinachotokea, na kwamba ni mazuri sana, nadhani, na mchakato wa kujifunza. 46 00:02:31,250 --> 00:02:36,750 Ambapo line anapata walivuka ni wakati kichwa ni aina ya tilted zaidi ya hapa kwa sekunde nyingi mno 47 00:02:36,750 --> 00:02:41,160 au dakika kwa kuwa kweli kuwa tu imekuwa nafasi kumfungulia kwa rafiki yako, 48 00:02:41,160 --> 00:02:44,160 na kwa hakika wakati mambo kupata kubadilishana kupitia barua pepe na Dropbox na kama, 49 00:02:44,160 --> 00:02:45,640 kuna pia ni mstari. 50 00:02:45,640 --> 00:02:48,620 Hivyo kwa njia zote kujisikia vizuri na kujisikia moyo wa kuzungumza na marafiki 51 00:02:48,620 --> 00:02:52,810 na wanafunzi kuhusu psets na zaidi na tu kutambua kwamba yale hatimaye kuwasilisha 52 00:02:52,810 --> 00:02:57,340 lazima kweli kuwa bidhaa ya uumbaji wako na si mtu mwingine. 53 00:02:57,340 --> 00:03:00,490 Na hivyo moja ya matatizo ya uwanja maalum kwa pset2, 54 00:03:00,490 --> 00:03:04,740 ambayo atakuja nje marehemu kesho usiku, ni kupiga mbizi katika ulimwengu wa cryptography, 55 00:03:04,740 --> 00:03:08,970 ambayo ni sanaa ya encrypting au scrambling habari, 56 00:03:08,970 --> 00:03:12,600 na hii inahusiana na hatimaye dunia ya usalama. 57 00:03:12,600 --> 00:03:16,560 Sasa, usalama kwa ajili ya wengi wetu huja katika namna ya taratibu uungwana mundane. 58 00:03:16,560 --> 00:03:19,050 Sisi sote tuna usernames na password, 59 00:03:19,050 --> 00:03:23,450 na sisi wote kuwa na majina ya watumiaji mbaya sana na nywila, uwezekano mkubwa. 60 00:03:23,450 --> 00:03:28,240 >> Kama nywila yako ni sawa kwenye tovuti nyingi, kwamba pengine si wazo bora, 61 00:03:28,240 --> 00:03:30,070 kama tutaweza kujadili kuelekea mwisho wa muhula. 62 00:03:30,070 --> 00:03:34,720 Kama nywila yako imeandikwa katika kumbuka nata - hakuna utani - juu ya kufuatilia yenu, 63 00:03:34,720 --> 00:03:38,350 kwamba pia ni si lazima kubuni bora kabisa lakini hali ya kawaida. 64 00:03:38,350 --> 00:03:42,470 Na kama wewe si kutumia cryptography encrypt nywila yako, 65 00:03:42,470 --> 00:03:44,210 wao ni hasa katika mazingira magumu. 66 00:03:44,210 --> 00:03:47,270 Hivyo kama unafikiri wewe kuwa super wajanja kwa kuwa na siri Neno hati 67 00:03:47,270 --> 00:03:49,910 mahali fulani kwenye gari yako ngumu ambayo ina yote ya nywila yako 68 00:03:49,910 --> 00:03:53,670 lakini ni katika folder kwamba hakuna mtu kwenda kuangalia katika, kwamba pia ni si utaratibu salama sana. 69 00:03:53,670 --> 00:03:56,990 Na hivyo kile pset2 itaanzisha ni sanaa hii ya cryptography 70 00:03:56,990 --> 00:04:02,010 na scrambling habari ili mambo kama nywila wote ni salama zaidi. 71 00:04:02,010 --> 00:04:05,790 muktadha hapa ni kwamba pamoja na data zenye shida 72 00:04:05,790 --> 00:04:07,930 inakuja fursa encrypt yake na kwa kinyang'anyiro yake. 73 00:04:07,930 --> 00:04:11,470 Na hivyo hii, kwa mfano, ni mfano wa ujumbe ambao umefungiwa. 74 00:04:11,470 --> 00:04:14,700 Hii kwa kweli anasema kitu katika Kiingereza, lakini ni wazi kabisa kabisa ni dhahiri. 75 00:04:14,700 --> 00:04:18,279 Na tutaweza kuja duara kamili leo tease mbali nini ujumbe huu ni siri hapa. 76 00:04:18,279 --> 00:04:23,490 Lakini katika ulimwengu halisi ya kompyuta, mambo si hata kuangalia kama wanaweza kuwa Kiingereza misemo. 77 00:04:23,490 --> 00:04:28,430 Kwa mfano, hii ni nini unaweza kupata kwenye Linux kiwango au Mac au UNIX kompyuta 78 00:04:28,430 --> 00:04:32,070 katika faili kwamba mara kwa mara juu ya muda kuitwa faili password. 79 00:04:32,070 --> 00:04:34,200 >> Siku hizi imekuwa ni wakiongozwa na maeneo mengine. 80 00:04:34,200 --> 00:04:39,210 Lakini kama wewe kuangalia katika mahali sahihi juu ya mfumo, utaona si tu jina lako 81 00:04:39,210 --> 00:04:43,400 au ile ya watu wengine juu ya mfumo, lakini utaona version encrypted ya password yao. 82 00:04:43,400 --> 00:04:47,980 Hakika, kuna neno crypt unaonyesha kwamba mambo yafuatayo ni encrypted, 83 00:04:47,980 --> 00:04:52,680 na mfululizo huu wa barua inaonekana random na wahusika na idadi na kadhalika 84 00:04:52,680 --> 00:04:56,480 inaweza decrypted tu kwa ujumla kujua baadhi ya siri - 85 00:04:56,480 --> 00:04:58,840 neno siri, idadi siri - 86 00:04:58,840 --> 00:05:03,160 na hivyo kweli kweli, sanaa ya cryptography majipu hatimaye chini kwa uaminifu wa aina fulani 87 00:05:03,160 --> 00:05:05,650 na kujua kitu ambacho mtu mwingine hana. 88 00:05:05,650 --> 00:05:10,090 Hivyo tutaweza kuchunguza hili kwa undani zaidi kidogo leo na katika pset kuja. 89 00:05:10,090 --> 00:05:12,200 Na sasa neno juu ya kupita haitaisha /. 90 00:05:12,200 --> 00:05:15,360 Hasa kama baadhi yenu dived katika pset1, Appliance, 91 00:05:15,360 --> 00:05:19,080 na dunia mpya sana kwa ajili yako mwenyewe, kutambua kwamba frustrations na machafuko 92 00:05:19,080 --> 00:05:21,700 na tu matatizo ya kiufundi ni kabisa kutarajiwa, 93 00:05:21,700 --> 00:05:24,180 hasa kwa pset kwanza, ambapo kuna kiasi tu mpya, 94 00:05:24,180 --> 00:05:27,730 kupata tu ukoo na ls na cd na amri hizi zote arcane 95 00:05:27,730 --> 00:05:33,050 na mazingira mapya, na kwamba ni tofauti na nyenzo halisi na programu yenyewe. 96 00:05:33,050 --> 00:05:36,940 Hivyo kutambua pia kwamba kuna shaka ni masaa ya ofisi ambazo zipo kama muundo msaada. 97 00:05:36,940 --> 00:05:38,880 >> Sehemu hii kuanza Jumapili ijayo. 98 00:05:38,880 --> 00:05:42,960 Lakini muhimu zaidi, kama wewe ni hisia tu kuwa hii si dunia kwa ajili yenu, 99 00:05:42,960 --> 00:05:44,710 kutambua kwamba ni kweli haina kuchukua muda tu. 100 00:05:44,710 --> 00:05:48,600 Na lau kuwa si kwa ajili ya nafasi hii miaka iliyopita kwa ajili yangu ya kuchukua pasi darasa / kushindwa, 101 00:05:48,600 --> 00:05:50,990 uaminifu, mimi kamwe ingekuwa hata kuweka mguu katika darasa. 102 00:05:50,990 --> 00:05:53,690 Na unaweza kubadilisha hili hadi, kusema, Jumatatu ya tano ya shaka, 103 00:05:53,690 --> 00:05:58,280 hivyo kama wewe ni makali ya sasa, kutambua kwamba badala ya kichwa katika baadhi ya maji nyingine kabisa, 104 00:05:58,280 --> 00:06:01,260 je, hakika kufikiria tu kubadilisha kupita / kushindwa. 105 00:06:01,260 --> 00:06:04,570 Tena, kuna si kweli utamaduni huu hapa katika Harvard ya kuchukua mambo kupita / kushindwa 106 00:06:04,570 --> 00:06:08,670 tangu kila mtu kweli anataka kufikia au overachieve, 107 00:06:08,670 --> 00:06:11,130 lakini kusema ukweli, hii ni njia ya ajabu ya kujaribu kitu nje 108 00:06:11,130 --> 00:06:16,720 kwamba wanaweza kuwa familiar na wewe, na kuishia kufanya, katika hali nyingi, kabisa faini, 109 00:06:16,720 --> 00:06:18,210 labda sana kwa mshangao wako. 110 00:06:18,210 --> 00:06:20,980 Na katika suala thabiti zaidi, nini nadhani kupita / kushindwa ujumla gani, 111 00:06:20,980 --> 00:06:22,940 hasa kama unaweza kuwa na uzoefu na pset0, 112 00:06:22,940 --> 00:06:26,560 kama wewe kuweka katika masaa 10, masaa 15, masaa 25 katika baadhi pset 113 00:06:26,560 --> 00:06:29,920 na wewe tu banging kichwa yako dhidi ya ukuta na ni kupata super marehemu wakati wa usiku 114 00:06:29,920 --> 00:06:33,950 lakini umechukua pset 90% ya njia na wewe tu hawezi kufikiri jambo moja, 115 00:06:33,950 --> 00:06:36,520 kupita / kushindwa kweli inachukua makali mbali ya darasa kama hii, 116 00:06:36,520 --> 00:06:39,100 ambapo unaweza aina ya furaha kusema, "Sawa, Najua ni si kamili, 117 00:06:39,100 --> 00:06:42,350 lakini mimi kazi punda wangu mbali juu ya hili, nina pretty furaha na ambapo ni kuishia, " 118 00:06:42,350 --> 00:06:44,850 na kwamba watakutana na matarajio kwa kupita / kushindwa. 119 00:06:44,850 --> 00:06:47,540 Hivyo kufanya kuendelea kuwa katika akili. Wote haki. 120 00:06:47,540 --> 00:06:50,520 >> Hivyo wale ambao Jihadi kwa kutumia Chuo Kikuu cha Harvard Wi-Fi, 121 00:06:50,520 --> 00:06:54,780 kujua kwamba kuna SSID CS50, uhusiano Wi-Fi, yaliyo karibu 122 00:06:54,780 --> 00:06:56,490 kwamba unaweza kuwa bora zaidi kwa bahati. 123 00:06:56,490 --> 00:07:00,130 Ni kejeli kidogo kwamba nywila kwa ajili ya hii, kama ungependa kujaribu kuunganisha na hii 124 00:07:00,130 --> 00:07:08,350 kwa kasi bora - na hebu kujua kama ni hakuna bora - ni 12,345, njia yote hadi 8 125 00:07:08,350 --> 00:07:10,910 kwa sababu 8 ni salama zaidi kuliko 5. 126 00:07:10,910 --> 00:07:16,910 Hivyo kama unahitaji password Wi-Fi, kuungana na CS50 wirelessly hapa, 12345678, 127 00:07:16,910 --> 00:07:20,380 na baada ya juu CS50 Jadili kama bado una masuala kuunganishwa vipindi 128 00:07:20,380 --> 00:07:25,420 na tutaweza basi mamlaka zilizopo kujua kwa nafasi hii. Wote haki. 129 00:07:25,420 --> 00:07:32,230 Hivyo teaser haraka, hasa kwa wale ambao ni shabiki wavulana na wasichana au ya yote Apple mambo. 130 00:07:32,230 --> 00:07:37,460 Nini mimi kuchimbwa kutoka miaka michache nyuma ilikuwa faili hii hapa, iUnlock.c, 131 00:07:37,460 --> 00:07:39,930 tu kwa aina ya kufanya zaidi ya saruji na ngumu zaidi 132 00:07:39,930 --> 00:07:42,560 baadhi ya mipango ya msingi zaidi C sisi tumekuwa kuandika. 133 00:07:42,560 --> 00:07:46,910 Basi, mimi kufunguliwa faili hii, iUnlock.c. Ni inapatikana kwenye ukurasa Mihadhara kwa leo. 134 00:07:46,910 --> 00:07:49,810 Kwa upande wa mkono wa kushoto, unaweza kuona orodha ndefu ya kazi. 135 00:07:49,810 --> 00:07:53,230 Hivyo wenzao ambao aliandika hii aliandika juu sana ya utendaji, zaidi kuliko tu kuu. 136 00:07:53,230 --> 00:07:57,340 Alitumia rundo zima la maktaba hapa, na kama tunaanza scrolling kupitia, 137 00:07:57,340 --> 00:08:04,890 nini hii kwa kweli ni ni ya kwanza kabisa, naamini, ufa kwa iPhone ya awali. 138 00:08:04,890 --> 00:08:09,830 >> Wakati alitaka jailbreak iPhone ya awali, ambayo ina maana untether ni kutoka AT & T 139 00:08:09,830 --> 00:08:13,710 na kweli kufunga programu maalum juu yake na kufanya mambo ambayo Apple hakutaka watu kufanya, 140 00:08:13,710 --> 00:08:18,480 mtu alichukua muda wa kufikiri hasa jinsi gani wanaweza kutumia madhaifu programu, 141 00:08:18,480 --> 00:08:22,690 makosa, mende, katika programu ya Apple, na hivyo alizaliwa iUnlock.c-- 142 00:08:22,690 --> 00:08:26,760 kwamba kama wewe ni compiled kwenye kompyuta yako na imewekwa kwenye iPhone 143 00:08:26,760 --> 00:08:29,430 kwamba alikuwa kushikamana na kompyuta yako kupitia, kusema, USB cable, 144 00:08:29,430 --> 00:08:32,450 hii ingekuwa kukupa marupurupu ya utawala au mizizi ya iPhone yako 145 00:08:32,450 --> 00:08:34,620 na basi wewe kufanya pretty much chochote unataka. 146 00:08:34,620 --> 00:08:36,400 Na hivyo kuna kuwa hii paka kuvutia na mchezo wa panya 147 00:08:36,400 --> 00:08:39,340 kati ya Apple na wengine wa dunia hasa kama wao, kama makampuni mengi, 148 00:08:39,340 --> 00:08:43,350 kujaribu lock mambo yao chini hivyo kwamba unaweza tu kufanya na ni nini wanataka. 149 00:08:43,350 --> 00:08:47,360 Lakini, shukrani kwa watu kama hii na ufahamu wa maelezo ya ngazi ya chini - 150 00:08:47,360 --> 00:08:50,830 na katika kesi hii C programu - na mengi ya constructs familiar 151 00:08:50,830 --> 00:08:55,280 kwamba tumekuwa walianza kucheza na, wewe ni uwezo wa kweli kujiinua vifaa 152 00:08:55,280 --> 00:08:59,250 katika namna unaweza kuona inafaa na si lazima baadhi chombo ushirika. 153 00:08:59,250 --> 00:09:01,600 Hivyo kwa mfano, mimi sielewi nini yote haya ni kufanya, 154 00:09:01,600 --> 00:09:03,580 lakini GetVersion sauti pretty moja kwa moja, 155 00:09:03,580 --> 00:09:05,710 na inaonekana kama hii ni kazi ambayo mtu huyu aliandika. 156 00:09:05,710 --> 00:09:09,250 Inachukua baadhi ya aina ya integer kama hoja, haina kurudi kitu chochote, 157 00:09:09,250 --> 00:09:13,710 lakini inaonekana kitanzi na kwa kitanzi hapa na kama hali, kama mapumziko hali, 158 00:09:13,710 --> 00:09:16,770 na kwa namna fulani inahusiana na idadi version kama sisi kitabu chini, 159 00:09:16,770 --> 00:09:19,650 ingawa mengi ya maneno haya ni kwenda kuwa mpya. 160 00:09:19,650 --> 00:09:22,590 Na kuna mengi yote ya utendaji katika hapa sisi sijawahi kuona na wanaweza milele kuona 161 00:09:22,590 --> 00:09:24,350 juu ya kozi ya muhula. 162 00:09:24,350 --> 00:09:29,160 >> Wakati wa mwisho wa siku, ni sawa ifuatavyo sheria na mantiki kwamba sisi tumekuwa kucheza kwa hivi sasa. 163 00:09:29,160 --> 00:09:34,340 Hivyo hii ni mbali mzee sana ufa yako 3s iPhone au 4s au hivi karibuni 5s siku hizi, 164 00:09:34,340 --> 00:09:38,830 lakini najua kwamba yote hayo sana inayotokana na dunia hii ambayo tumekuwa dived katika. 165 00:09:38,830 --> 00:09:42,280 Hebu tuangalie mfano kidogo zaidi rahisi: 166 00:09:42,280 --> 00:09:46,260 moja hii, ili tu kupata moto juu na baadhi ya kisintaksia na pia baadhi ya wengine data aina 167 00:09:46,260 --> 00:09:48,910 kwamba tumekuwa kuongelea lakini si kweli kuonekana katika C. 168 00:09:48,910 --> 00:09:53,670 Hii ni faili inayoitwa positive1.c, na kwa maoni juu, 169 00:09:53,670 --> 00:09:56,070 hii tu madai kwamba mtumiaji kutoa idadi chanya. 170 00:09:56,070 --> 00:09:59,910 Hivyo ni mfano wa kitanzi do-wakati, ambayo ni nzuri kwa ajili ya mipango ya mtumiaji maingiliano 171 00:09:59,910 --> 00:10:02,070 ambapo unahitaji kuwaambia user kufanya kitu fulani, 172 00:10:02,070 --> 00:10:05,530 na kama hawana kushirikiana wewe yell saa yao au kukataa mchango wao. 173 00:10:05,530 --> 00:10:10,480 Uchunguzi katika kumweka: Mimi nitaenda kufanya mistari 19 kupitia 24 174 00:10:10,480 --> 00:10:14,620 hivyo muda mrefu kama user kwamba hakunipa idadi chanya. 175 00:10:14,620 --> 00:10:21,340 Hii undani hapa kwenye mstari 18, kwa nini mimi kutangaza n juu looping hii nzima kujenga 176 00:10:21,340 --> 00:10:26,870 kinyume na haki ya karibu na mstari 22 ambapo mimi kwa kweli huduma ya kupata n? Yeah. 177 00:10:26,870 --> 00:10:29,330 [Mwanafunzi] Scope. >> Yeah, hivyo suala hili la wigo. 178 00:10:29,330 --> 00:10:31,770 Na katika suala layman, nini wigo rejea? 179 00:10:34,880 --> 00:10:41,560 Yeah. >> [Inaudible mwanafunzi majibu] >> Je, unaweza kusema kidogo nguvu zaidi? 180 00:10:41,560 --> 00:10:45,440 [Mwanafunzi] wapi unaweza kupata kwamba kutofautiana. >> Perfect. 181 00:10:45,440 --> 00:10:47,610 Ambapo unaweza kupata variable fulani. 182 00:10:47,610 --> 00:10:50,990 Na kwa ujumla, utawala wa thumb hivi sasa imekuwa kwamba wigo wa baadhi variable 183 00:10:50,990 --> 00:10:56,140 hufafanuliwa kwa braces hivi karibuni curly kwamba ve kuonekana. 184 00:10:56,140 --> 00:11:03,070 >> Na hivyo katika kesi hii, kama mimi alifanya makosa ya kutangaza n kwenye mstari 22, mstari kwamba ingekuwa kazi. 185 00:11:03,070 --> 00:11:10,840 Ningependa kupata int, na napenda kuiweka katika n kwamba kutofautiana katika mstari 22, 186 00:11:10,840 --> 00:11:17,060 lakini ambayo mstari wa kanuni ingekuwa sasa sielewi nini mimi kuzungumza kuhusu? >> [Mwanafunzi] 25. 187 00:11:17,060 --> 00:11:23,840 [Malan] 25, na zinageuka 24 kama vizuri kwa sababu katika kesi hii ni falls nje ya braces curly. 188 00:11:23,840 --> 00:11:28,550 Hivyo tu kidogo ya kero lakini kwa urahisi sana kutatuliwa kwa kifupi kutangaza variable 189 00:11:28,550 --> 00:11:30,700 nje ya kazi yenyewe. 190 00:11:30,700 --> 00:11:32,760 Tutaweza kuona baadaye leo unaweza kwenda hatua moja zaidi 191 00:11:32,760 --> 00:11:34,940 na unaweza hata kupata kidogo wavivu. 192 00:11:34,940 --> 00:11:39,660 Na hii si kwa kuwa ilipendekeza kwa ujumla, lakini unaweza hata kupata wavivu 193 00:11:39,660 --> 00:11:44,150 na kuweka variable kimataifa, ili kuzungumza, si ndani ya kazi, si ndani ya kitanzi, 194 00:11:44,150 --> 00:11:49,800 lakini katika faili yenyewe, nje ya yote ya kazi ve imeandikwa, kama mimi hapa kwenye mstari 15. 195 00:11:49,800 --> 00:11:55,220 Hii ni kwa ujumla kipaji juu, lakini kutambua hili ni suluhisho wakati mwingine matatizo mengine, 196 00:11:55,220 --> 00:11:56,910 kama tutaweza hatimaye kuona. 197 00:11:56,910 --> 00:11:59,500 Hivyo kwa sasa tutaweza kuondoka ni kama hii, lakini hebu tuone kama tunaweza rewrite hii 198 00:11:59,500 --> 00:12:02,360 tu ya kuanza kuonyesha wenyewe tofauti kidogo. 199 00:12:02,360 --> 00:12:05,550 Mpango huu, tu kuwa wazi, ni positive1. 200 00:12:05,550 --> 00:12:11,980 Hebu kwenda mbele hapa na katika terminal dirisha yangu kufanya positive1, Ingiza. 201 00:12:11,980 --> 00:12:15,080 Inaandaa sawa. Mimi nina kwenda kukimbia positive1, hit Enter. 202 00:12:15,080 --> 00:12:19,250 Mimi kudai kwamba wewe nipe sifuri. Nitasema -1. Kwamba hawakuwa na kazi. 203 00:12:19,250 --> 00:12:22,340 0, 99. Hiyo inaonekana kazi. 204 00:12:22,340 --> 00:12:25,310 Labda si mtihani ukali zaidi, lakini angalau ni nzuri sanity hundi 205 00:12:25,310 --> 00:12:27,100 kuwa tuko katika njia sahihi. 206 00:12:27,100 --> 00:12:29,570 >> Hivyo sasa napenda kwenda mbele na kufungua toleo 2 ya hili, 207 00:12:29,570 --> 00:12:32,800 na nini ni tofauti tayari? 208 00:12:32,800 --> 00:12:39,030 Ni kutekeleza jambo hilo, lakini kile kuruka nje kama wakati wazi tofauti hii? 209 00:12:40,790 --> 00:12:47,090 Hii bool katika kijani. Ni ni yalionyesha katika kijani, hii Keyword inayojulikana kama bool, ambayo ni aina data. 210 00:12:47,090 --> 00:12:50,510 Haina kuja kujengwa katika yote ya matoleo ya C. 211 00:12:50,510 --> 00:12:52,650 Unahitaji ni pamoja na maktaba maalum. 212 00:12:52,650 --> 00:12:56,460 Katika kesi yetu, mimi ni pamoja maktaba CS50 ili sisi kupata bool. 213 00:12:56,460 --> 00:12:59,860 Lakini katika mstari 18, sisi tunaonekana kuwa na thamani Boolean hapa aitwaye kushukuru. 214 00:12:59,860 --> 00:13:02,190 Ningeweza kuitwa hii kitu chochote, lakini mimi kuitwa ni kushukuru 215 00:13:02,190 --> 00:13:04,750 tu aina ya kufikisha baadhi maana semantic. 216 00:13:04,750 --> 00:13:07,700 Hivyo awali kwenye mstari 18, mimi nina inaonekana si kushukuru 217 00:13:07,700 --> 00:13:12,230 kwa sababu thamani Boolean kushukuru ni initialized na uongo katika mstari 18. 218 00:13:12,230 --> 00:13:16,500 Na basi inaonekana kile nimepata kufanyika hapa katika mistari 21 kupitia 23 219 00:13:16,500 --> 00:13:19,200 Nimekuwa ni aina tu ya rewritten mantiki yangu. 220 00:13:19,200 --> 00:13:26,100 Hivyo hakuna functionally tofauti, lakini katika mstari 22 sasa mimi kuangalia kama int mtumiaji imetoa 221 00:13:26,100 --> 00:13:31,360 ni mkubwa kuliko 0, basi mimi kubadili tu thamani ya kushukuru kwa kweli. 222 00:13:31,360 --> 00:13:35,590 Na kwa nini mimi kufanya hivyo? Kwa sababu katika mstari 25, inaonekana mimi nina kwenda kuangalia hali. 223 00:13:35,590 --> 00:13:39,760 Je, hii kitanzi wakati kushukuru ni uongo. 224 00:13:39,760 --> 00:13:42,960 Basi, mimi mapendekezo hii kama njia mbadala ya toleo 1 225 00:13:42,960 --> 00:13:47,050 sababu ni angalau kidogo Intuitive zaidi labda, ni zaidi kidogo msingi katika Kiingereza. 226 00:13:47,050 --> 00:13:51,980 Hivyo kufanya yafuatayo wakati wewe si kushukuru, au wakati kushukuru ni uongo. 227 00:13:51,980 --> 00:13:56,220 Na wakati huu pia mimi inaonekana hawajali kukumbuka kile mtumiaji typed katika 228 00:13:56,220 --> 00:14:00,050 kwa sababu hakuna taarifa n variable, hivyo kweli, nyeupe kidogo uongo huko. 229 00:14:00,050 --> 00:14:03,290 >> Functionally, mpango huo ni tofauti kidogo mara moja sisi kupata chini yake 230 00:14:03,290 --> 00:14:04,960 kwa sababu mimi si kukumbuka kile n ni. 231 00:14:04,960 --> 00:14:09,120 Lakini nilitaka kuonyesha hapa pia kwamba hata kama tumeona GetInt 232 00:14:09,120 --> 00:14:13,780 na GetString kuwa kutumika upande wa kulia wa alama ya usawa hivi sasa 233 00:14:13,780 --> 00:14:17,310 ili sisi kukumbuka thamani, kitaalam, kwamba si madhubuti muhimu. 234 00:14:17,310 --> 00:14:20,290 Kama kwa sababu yoyote wewe tu hawajali kuokoa thamani, 235 00:14:20,290 --> 00:14:25,540 wewe tu unataka kuangalia thamani, taarifa kwamba tunaweza tu kuandika hii kama GetInt, 236 00:14:25,540 --> 00:14:27,320 wazi Paren, karibu Paren. 237 00:14:27,320 --> 00:14:30,570 Kwamba kazi ni kwenda na kurudi thamani, kama tumekuwa akisema. 238 00:14:30,570 --> 00:14:32,220 Ni kwenda kukupa nyuma int. 239 00:14:32,220 --> 00:14:34,460 Na hivyo kama wewe kiakili kufikiri ya kinachotokea hii, 240 00:14:34,460 --> 00:14:38,190 wakati ninapoandika katika 99, GetInt anarudi idadi 99, 241 00:14:38,190 --> 00:14:41,840 na hivyo conceptually, ni kama ingawa code yangu walikuwa kweli hii. 242 00:14:41,840 --> 00:14:45,950 Hivyo kama kweli ni 99 zaidi kuliko 0, basi inakuwa kweli kushukuru, 243 00:14:45,950 --> 00:14:50,810 kisha mstari 25 anatambua ooh, sisi ni kosa kwa sababu mimi nina kushukuru sasa, 244 00:14:50,810 --> 00:14:53,970 na katika mstari 26, sisi tu kusema, "Asante kwa integer chanya!" 245 00:14:53,970 --> 00:14:55,960 chochote kilichotokea kuwa. 246 00:14:55,960 --> 00:14:59,140 Sasa hebu kufanya kidogo kisintaksia sukari hapa, hivyo kusema. 247 00:14:59,140 --> 00:15:04,670 Hebu tuone kama tunaweza kusafisha line hii ya 25 na lahaja hii tatu na ya mwisho katika positive3. 248 00:15:04,670 --> 00:15:13,600 >> Taarifa tofauti tu sasa ni nini mstari wa kanuni? >> [Mwanafunzi] 25. >> [Malan] Yeah, 25. 249 00:15:13,600 --> 00:15:17,680 Na tumekuwa si kweli kuonekana hila hii bado tu, lakini hatukuwa kuona uhakika Moderators Jumatatu, 250 00:15:17,680 --> 00:15:21,070 ambayo inaashiria nini? >> [Mwanafunzi] Si. Si >> au kukanusha. 251 00:15:21,070 --> 00:15:23,510 Hivyo kuchukua thamani Boolean na flip thamani yake. 252 00:15:23,510 --> 00:15:25,810 Kweli inakuwa uongo, uongo inakuwa kweli. 253 00:15:25,810 --> 00:15:30,420 Hivyo hii, napenda kupendekeza, ni hata kidogo Intuitive zaidi njia ya kuandika code 254 00:15:30,420 --> 00:15:33,430 kwa sababu mimi bado initialize kushukuru kwa uongo, mimi bado kufanya yafuatayo, 255 00:15:33,430 --> 00:15:36,010 Mimi kuweka kushukuru kwa kweli wakati unakuja, 256 00:15:36,010 --> 00:15:40,880 lakini sasa kweli unaweza tu kutafsiri kanuni hii kwa maneno kushoto na kulia, 257 00:15:40,880 --> 00:15:45,630 wakati (kushukuru!); kwa sababu bang au Moderators kumweka inaashiria dhana ya si, 258 00:15:45,630 --> 00:15:47,580 hivyo wakati si kushukuru. 259 00:15:47,580 --> 00:15:49,900 Hivyo tena, hatuna ilianzisha dhana yoyote mpya per se. 260 00:15:49,900 --> 00:15:53,730 Kuongelea Booleans nyuma wakati sisi alicheza na Scratch, 261 00:15:53,730 --> 00:15:56,720 lakini kutambua sasa tunaweza kuanza tu kuandika code yetu katika njia nyingi tofauti. 262 00:15:56,720 --> 00:16:01,060 Hivyo hasa katika pset1 kama wewe ni aina ya wanajitahidi kufikiri njia ya kuandika baadhi ya mpango, 263 00:16:01,060 --> 00:16:04,340 tabia mbaya ni wewe ni katika bahati kwa sababu kuna kuwa na idadi yoyote ya ufumbuzi 264 00:16:04,340 --> 00:16:06,110 kwamba unaweza kutokea juu. 265 00:16:06,110 --> 00:16:10,500 Kwa mfano, hii ni 3 tu maana hata rahisi ya mipango. Wote haki. 266 00:16:10,500 --> 00:16:14,200 Na sasa wanakumbuka juu ya Jumatatu sisi kushoto juu ya kumbuka hii na maadili kurudi. 267 00:16:14,200 --> 00:16:18,450 Hivyo kwa mara ya kwanza sisi aliandika mpango kwamba si tu kuwa na kuu; 268 00:16:18,450 --> 00:16:22,550 pia ina desturi yake mwenyewe kazi kwamba mimi aliandika hapa. 269 00:16:22,550 --> 00:16:26,810 Hivyo katika mstari 31 kupitia 34 Nimekuwa kutekelezwa kazi mchemraba. 270 00:16:26,810 --> 00:16:30,240 Ni si ngumu. Ni tu * a * a katika kesi hii. 271 00:16:30,240 --> 00:16:34,750 Lakini jambo muhimu juu yake ni kwamba mimi nina kuchukua pembejeo katika fomu ya 272 00:16:34,750 --> 00:16:39,180 na mimi nina kurudi pato katika fomu ya * a * a. 273 00:16:39,180 --> 00:16:43,560 Hivyo sasa nina uwezo, kiasi kama mimi kutumika kwa prinf peke yake, 274 00:16:43,560 --> 00:16:47,240 kuwaita kazi hii kwa wito kazi mchemraba. 275 00:16:47,240 --> 00:16:51,970 >> Na kazi mchemraba inachukua baadhi ya pembejeo, na kazi ya mchemraba anarudi baadhi pato. 276 00:16:51,970 --> 00:16:56,960 Kwa kulinganisha, printf tu alifanya kitu. 277 00:16:56,960 --> 00:17:00,840 Ni hakurudi chochote kwamba sisi kumjali kuhusu, ingawa kama kando haina kurudi thamani; 278 00:17:00,840 --> 00:17:03,110 wewe kwa ujumla tu kupuuza. 279 00:17:03,110 --> 00:17:06,510 Printf tu alifanya kitu. Ni alikuwa na athari upande wa uchapishaji kwa screen. 280 00:17:06,510 --> 00:17:11,770 Kwa kulinganisha hapa, tuna kazi mchemraba, ambayo kwa kweli anarudi kitu. 281 00:17:11,770 --> 00:17:15,520 Hivyo kwa wale jamaa na hii, ni wazo haki moja kwa moja. 282 00:17:15,520 --> 00:17:19,640 Lakini kwa wale chini ya ukoo na hili wazo la kupita katika pembejeo na kupata nyuma matokeo, 283 00:17:19,640 --> 00:17:21,950 hebu jaribu tu kitu super rahisi. 284 00:17:21,950 --> 00:17:25,490 Kuna mtu yeyote starehe kuja juu ya hatua kwa ufupi? 285 00:17:25,490 --> 00:17:28,040 Wewe kuwa starehe na kamera juu yenu pia. Yeah? Sawa. 286 00:17:28,040 --> 00:17:31,240 Nini jina lako? >> [Mwanafunzi] Ken. >> Ken. Wote haki. Ken, kuja juu juu. 287 00:17:31,240 --> 00:17:35,050 Ken ni kwenda kuwa kazi ya aina hapa. 288 00:17:35,050 --> 00:17:38,720 Hebu kwenda mbele na kufanya hili. Hebu kupata dhana kidogo. 289 00:17:38,720 --> 00:17:42,260 Nice kukutana na wewe. Karibu hatua katikati. Wote haki. 290 00:17:42,260 --> 00:17:46,640 Hebu hit button hii hapa. Wote haki. 291 00:17:46,640 --> 00:17:49,820 Hivyo hapa una ubao wa kisasa, 292 00:17:49,820 --> 00:17:53,470 na kile Mimi ni kazi kuu, kwa mfano, 293 00:17:53,470 --> 00:17:56,460 na mimi si kuwa na iPad katika mkono wangu. 294 00:17:56,460 --> 00:17:59,710 >> Mimi si kweli kumbuka jinsi - Naam, mimi siwezi kusema kwamba. 295 00:17:59,710 --> 00:18:02,480 Mimi si kweli kuwa mwandiko mzuri, 296 00:18:02,480 --> 00:18:05,520 na hivyo mimi nataka wewe magazeti kitu kwenye screen kwa ajili yangu. 297 00:18:05,520 --> 00:18:12,040 Mimi kuwa mpango kuu, na mimi naenda kuwa wewe kusema hili 298 00:18:12,040 --> 00:18:16,720 kwa kuandika katika kuku scratch yangu na kisha kupita wewe pembejeo. 299 00:18:16,720 --> 00:18:20,400 Hivyo silly ingawa zoezi hili ni, dhana ya kazi na wito kazi 300 00:18:20,400 --> 00:18:22,400 na kurudi kazi kweli majipu chini hii. 301 00:18:22,400 --> 00:18:26,260 Mimi ni kuu, mimi tu imeandikwa printf, quote-unquote kitu kwenye screen, 302 00:18:26,260 --> 00:18:29,110 Mimi mbio mpango huu, na kwa haraka kama printf anapata walioitwa, 303 00:18:29,110 --> 00:18:32,880 inachukua moja au hoja moja parameter wakati mwingine kati ya quotes mbili. 304 00:18:32,880 --> 00:18:35,880 Hapa ni hoja kuwa. Mimi nina kupita kwa Ken. 305 00:18:35,880 --> 00:18:39,020 Yeye ni sanduku jeusi imeandikwa baadhi idadi ya miaka iliyopita 306 00:18:39,020 --> 00:18:41,510 kwamba inaonekana tu anajua jinsi ya magazeti mambo kwenye screen. 307 00:18:41,510 --> 00:18:43,150 Hivyo nitafanya. 308 00:18:49,280 --> 00:18:51,280 Hiyo si mbaya. Nzuri sana. 309 00:18:51,280 --> 00:18:55,510 Hivyo sasa Ken inafanywa utekelezaji. Je, yeye haja ya kumsaliti mimi kitu nyuma? 310 00:18:55,510 --> 00:18:57,470 Si kwamba tumekuwa kuonekana hivi sasa. 311 00:18:57,470 --> 00:19:00,460 Tena, printf haina kweli kurudi idadi, lakini tunakwenda kupuuza kwamba kwa sasa 312 00:19:00,460 --> 00:19:03,470 kwa sababu tumekuwa kamwe kutumika. Basi hiyo ni kwa ajili ya Ken. 313 00:19:03,470 --> 00:19:08,580 Na hivyo sasa kuu inachukua zaidi ya udhibiti wa mpango tena 314 00:19:08,580 --> 00:19:11,060 kwa sababu ya kuwa mstari wa kanuni, printf, ni kosa utekelezaji. 315 00:19:11,060 --> 00:19:14,050 Na sisi kwenda juu ya njia zetu, utekelezaji chochote mistari nyingine ni pale. 316 00:19:14,050 --> 00:19:17,320 Hivyo sasa hebu jaribu mfano tofauti kidogo. 317 00:19:17,320 --> 00:19:24,940 Wakati huu hapa hebu kwanza wazi screen, na wakati huu tutaweza kufanya kazi cubing, 318 00:19:24,940 --> 00:19:27,080 lakini wakati huu, mimi kutarajia thamani ya pato. 319 00:19:27,080 --> 00:19:29,180 >> Basi hebu kwenda mbele na kufanya hili. 320 00:19:29,180 --> 00:19:35,790 Sasa nina mstari wa kanuni kwamba anasema x anapata mchemraba wa x. 321 00:19:41,370 --> 00:19:46,370 mstari wa kanuni, wanakumbuka, inaonekana kama hii: x = mchemraba (x); 322 00:19:46,370 --> 00:19:50,930 Hivyo ni jinsi gani hii kwenda kufanya kazi? Hebu kwenda mbele na kukupa screen nyeupe tena. 323 00:19:50,930 --> 00:19:54,070 Mimi naenda kuandika sasa thamani ya x, 324 00:19:54,070 --> 00:20:01,400 ambayo katika wakati huu katika muda hutokea kwa kuwa, hebu sema, 2 kwa kuitunza rahisi. 325 00:20:01,400 --> 00:20:06,150 Nimeandika kwenye kipande cha karatasi thamani ya 2, ambayo ni thamani yangu x. 326 00:20:06,150 --> 00:20:10,920 Mimi mkono kwa Ken. >> Na mimi tu kuandika jibu? >> Yeah, hebu tu kuandika jibu. 327 00:20:12,760 --> 00:20:18,940 Sawa. Na sasa yeye ana kurudi mimi kitu. Perfect. Nice segue. 328 00:20:18,940 --> 00:20:23,120 Hivyo sasa hukabidhi mimi nyuma thamani ya 8 katika kesi hii, na nini mimi kufanya na hayo? 329 00:20:23,120 --> 00:20:28,250 Kweli - hebu angalia, kupata haki hii. Je, Mimi naenda kufanya na hayo? 330 00:20:28,250 --> 00:20:33,440 Sasa mimi naenda kuchukua thamani hii na kwa kweli kuhifadhi katika bits wale sawa katika kumbukumbu. 331 00:20:33,440 --> 00:20:35,170 Lakini taarifa mimi nina aina ya wanajitahidi hapa. 332 00:20:35,170 --> 00:20:38,210 Mimi nina kuchanganyikiwa kidogo kwa sababu ambapo mimi kweli kuandika thamani ya x, 333 00:20:38,210 --> 00:20:43,150 sababu kile nimekuwa tu kufanyika ni kimwili mkono Ken kipande cha karatasi ya kuwa alikuwa thamani 2, 334 00:20:43,150 --> 00:20:46,590 ambayo ilikuwa x, na kwa kweli, hilo ni just nini kilichotokea. 335 00:20:46,590 --> 00:20:50,210 Hivyo ni zinageuka kuwa wakati wewe piga kazi na wewe kupita katika hoja 336 00:20:50,210 --> 00:20:53,290 kama hello, dunia au kupita katika hoja kama 2, 337 00:20:53,290 --> 00:20:57,110 ujumla, wewe ni kupita katika nakala ya hoja hiyo. 338 00:20:57,110 --> 00:21:00,730 Na hivyo tu kama mimi aliandika chini ya idadi 2 hapa na kukabidhiwa kwa Ken, 339 00:21:00,730 --> 00:21:04,720 kwamba lazima maana kwamba mimi bado kuwa na nakala ya thamani 2 mahali fulani 340 00:21:04,720 --> 00:21:08,890 kwa sababu kwa kweli, sasa kwamba nimepata wamezipata nyuma thamani 8, mimi haja ya kwenda nyuma katika RAM 341 00:21:08,890 --> 00:21:12,130 na kweli kuandika 8 ambapo mimi mara moja alikuwa na idadi 2. 342 00:21:12,130 --> 00:21:16,950 Hivyo kuibua, kumbuka wazo hili la kupita katika, literally, nakala ya thamani. 343 00:21:16,950 --> 00:21:20,780 >> Ken haina kitu wake, hukabidhi mimi nyuma kitu - katika kesi hii thamani kama 8 - 344 00:21:20,780 --> 00:21:24,980 na kisha mimi kufanya kitu na thamani ya kwamba kama nataka kuweka ni kuzunguka. 345 00:21:24,980 --> 00:21:29,650 Basi wote wa hii kuja nyuma kwa kuwa wote pia familiar kabla ya muda mrefu. 346 00:21:29,650 --> 00:21:34,920 Asante sana kwa demo hii hapa, Ken. [Applause] 347 00:21:34,920 --> 00:21:36,920 Vizuri sana kufanyika. 348 00:21:36,920 --> 00:21:42,690 Hebu angalia jinsi ya kuwa hatimaye inahusiana na baadhi ya kazi wito kwamba sisi tumekuwa kufanya hapa. 349 00:21:42,690 --> 00:21:47,910 Hebu kwenda mbele na kutuleta kwa mfano cubing hapa. 350 00:21:47,910 --> 00:21:53,300 Ona kwamba kama tunataka kweli kuanza kuchukua hii zaidi, 351 00:21:53,300 --> 00:21:57,570 sisi itawabidi kukumbuka ukweli kwamba x idadi hiyo ni kuwa alipita katika hapa 352 00:21:57,570 --> 00:22:01,530 ni tofauti na yale ya kweli kuwa alipita katika kufanya kazi. 353 00:22:01,530 --> 00:22:05,880 Hivyo tena, hii wapitao nakala inaenda kuwa kabisa germane katika muda tu. 354 00:22:05,880 --> 00:22:09,580 Hebu tuangalie kitu ambacho haina kabisa kazi ya haki bado. 355 00:22:09,580 --> 00:22:13,250 Mimi nina kwenda mbele na kufungua tatu Buggy mfano, ambayo ni kiujanja kwa asili, 356 00:22:13,250 --> 00:22:18,550 na ni kuitwa buggy3 na ni kutekeleza kazi swapping. 357 00:22:18,550 --> 00:22:25,110 Hapa tuna kazi kuu ambayo ina x na y kiholela initialized kwa 1 na 2, kwa mtiririko huo. 358 00:22:25,110 --> 00:22:27,700 Tunaweza kutumia GetInt, lakini sisi tu haja ya zoezi rahisi, 359 00:22:27,700 --> 00:22:30,170 hivyo ni vigumu-coded kama 1 na 2. 360 00:22:30,170 --> 00:22:35,340 Katika mistari ya 21 na 22, sisi inaonekana magazeti nje x na y, 1 kwa kila mstari. 361 00:22:35,340 --> 00:22:39,720 Kisha kwenye mstari 23, mimi kudai Mimi swapping maadili haya, dot, dot, dot. 362 00:22:39,720 --> 00:22:44,170 Mimi inaonekana piga kazi katika mstari 24 walioitwa byta kwamba inachukua hoja 2. 363 00:22:44,170 --> 00:22:48,300 Ni kabisa legit kwa ajili ya kazi ya kuchukua hoja 2. Tumeona printf kufanya hivyo tayari. 364 00:22:48,300 --> 00:22:51,830 >> Hivyo byta inaonekana inachukua x na y, na kama jina lake anapendekeza, 365 00:22:51,830 --> 00:22:54,670 Napenda matumaini kwamba ni kwenda wabadilishane maadili haya 2. 366 00:22:54,670 --> 00:23:00,090 Hivyo basi mimi kudai kwenye mstari 25 "swapped!" na mimi kikachapishwa x na y 367 00:23:00,090 --> 00:23:03,070 chini ya dhana kwamba wameweza kweli imekuwa swapped. 368 00:23:03,070 --> 00:23:06,080 Lakini kama mimi kwa kweli kuendesha programu hii - basi mimi kufungua dirisha terminal, 369 00:23:06,080 --> 00:23:09,860 basi mimi kufanya buggy3 - kama jina linavyosema, hii si kwenda mwisho vizuri 370 00:23:09,860 --> 00:23:15,770 sababu wakati mimi hit Enter, taarifa kwamba ni x 1, y ni 2, 371 00:23:15,770 --> 00:23:19,420 na bado mwisho wa mpango, bado, kwa kweli, sawa. 372 00:23:19,420 --> 00:23:22,960 Hivyo kwa kuzingatia maandamano tu sasa na Ken, nini hasa kinachoendelea? 373 00:23:22,960 --> 00:23:28,710 Hebu tuzame ndani ya kazi hii byta. Ni super mfupi. Ni tu mistari michache ya maadili ya muda mrefu. 374 00:23:28,710 --> 00:23:34,520 Lakini nini tatizo la msingi kuzingatia hadithi rahisi aliiambia hapa juu na Ken? 375 00:23:34,520 --> 00:23:36,670 Kwa nini byta kuvunjwa? 376 00:23:36,670 --> 00:23:39,660 [Mwanafunzi] Wewe hifadhi kwa nakala, hazibadiliki. 377 00:23:39,660 --> 00:23:43,980 Hasa. Sisi ni hifadhi kwa nakala, hazibadiliki yenyewe. 378 00:23:43,980 --> 00:23:47,170 Kwa maneno mengine, byta inaonekana inachukua hoja 2, int, 379 00:23:47,170 --> 00:23:49,370 na ni kiholela kuitwa b na, 380 00:23:49,370 --> 00:23:54,420 na hapa nimepata kupita katika x na y, ambayo ni mtiririko 1 na 2, 381 00:23:54,420 --> 00:23:58,770 lakini nina si halisi kupita katika x, mimi si halisi kupita katika y, 382 00:23:58,770 --> 00:24:01,450 Mimi nina kupita nakala ya x na nakala ya y. 383 00:24:01,450 --> 00:24:04,510 Ni karibu kama wewe ingawa kunakiliwa na pasted katika byta 384 00:24:04,510 --> 00:24:07,810 maadili ambayo unataka kwa kweli kuendesha. 385 00:24:07,810 --> 00:24:14,480 Hivyo kama hiyo kesi, wakati mimi kuanza mpango wa utekelezaji mstari 35 kisha 36, 386 00:24:14,480 --> 00:24:18,650 wakati mimi kupata mstari 37, katika hatua hii ya hadithi, ni nini thamani ya? 387 00:24:21,040 --> 00:24:25,050 Katika hatua hii ya hadithi, line 37, ni nini thamani ya wakati huu? >> [Mwanafunzi] 1. 388 00:24:25,050 --> 00:24:29,280 [Malan] Ni lazima tu kuwa 1, haki, kwa sababu x ilipitishwa katika kama hoja ya kwanza, 389 00:24:29,280 --> 00:24:33,080 na kazi hii tu kiholela ni wito hoja yake ya kwanza. 390 00:24:33,080 --> 00:24:38,200 Vile vile ni y hoja ya pili, na ni tu kiholela wito pili hoja b. 391 00:24:38,200 --> 00:24:40,990 >> Dichotomy Hii ni kweli kwa haki tu alielezea. Fikiria kuhusu hilo. 392 00:24:40,990 --> 00:24:43,320 Hakuna kati yetu na alikutana mtu ambaye aliandika printf, 393 00:24:43,320 --> 00:24:50,770 hivyo hakika, yeye au yeye hana wazo nini vigezo wetu miaka 30 baadaye wanaenda kuitwa. 394 00:24:50,770 --> 00:24:56,650 Hivyo inabidi kuwe na tofauti kati ya nini wito vigezo katika kazi wewe kuandika 395 00:24:56,650 --> 00:25:02,080 na nini wito vigezo katika kazi wewe ni wito au kutumia. 396 00:25:02,080 --> 00:25:05,340 Hivyo kwa maneno mengine, nimeandika vigezo wangu kama x na y, 397 00:25:05,340 --> 00:25:08,890 lakini kama mtu mwingine ameandika kazi byta, yeye au yeye bila shaka hawezi kujua 398 00:25:08,890 --> 00:25:10,690 nini vigezo yangu ni kwenda kuitwa, 399 00:25:10,690 --> 00:25:13,830 hivyo kutambua kwamba hii ni kwa nini una hii pande mbili za majina. 400 00:25:13,830 --> 00:25:16,750 Kitaalam, mimi naweza kufanya hivyo kwa bahati mbaya, 401 00:25:16,750 --> 00:25:20,080 lakini bado wataendelea kuwa kupita katika kama nakala. 402 00:25:20,080 --> 00:25:23,650 Itakuwa bahati mbaya tu kuwa safi aesthetically ikiwa mtu huyo ambaye aliandika byta 403 00:25:23,650 --> 00:25:26,150 walitumia majina sawa. 404 00:25:26,150 --> 00:25:32,370 Hivyo katika hatua hii ya hadithi, line 37, ni 1, b ni 2, na sasa mimi kuendelea wabadilishane yao. 405 00:25:32,370 --> 00:25:34,900 Awali ya yote, napenda kwa kweli kufanya hili zaidi tu. 406 00:25:34,900 --> 00:25:36,690 Sijui nini wale mistari 3 ya maadili walikuwa wakifanya. 407 00:25:36,690 --> 00:25:41,210 Hebu tu kufanya hivyo: b = a; a = b; kufanyika. 408 00:25:41,210 --> 00:25:44,690 Kwa nini hii ni kuvunjwa, mantiki? 409 00:25:46,490 --> 00:25:48,900 Ni aina ya kitu Intuitive, haki? 410 00:25:48,900 --> 00:25:52,560 Hivyo b inakuwa na b inakuwa, 411 00:25:52,560 --> 00:25:57,730 lakini tatizo ni kwamba haraka kama mstari 37 executes, nini thamani ya b na? 412 00:25:57,730 --> 00:26:03,410 huo, 1, kwa sababu wewe clobbered, hivyo kusema, ve iliyopita b sawa. 413 00:26:03,410 --> 00:26:08,890 Hivyo mara mstari 37 ina kunyongwa, kwamba ni kubwa, sasa una 2 nakala ya namba 1 414 00:26:08,890 --> 00:26:13,350 ndani ya kazi hii, hivyo basi wakati wewe kusema katika mstari 38 a = b, 415 00:26:13,350 --> 00:26:17,640 wewe ni aina ya Star sababu wewe tu assigning 1-1. 416 00:26:17,640 --> 00:26:20,580 Umefanikiwa aina ya kupoteza thamani wewe kumjali kuhusu. 417 00:26:20,580 --> 00:26:23,220 Hivyo katika toleo asili ya hili, taarifa nilivyopatenda. 418 00:26:23,220 --> 00:26:26,850 Mimi badala yake alikuwa mstari wa tatu wa kificho kwamba inaonekana kama hii. 419 00:26:26,850 --> 00:26:28,580 Mimi kutangaza variable muda. 420 00:26:28,580 --> 00:26:32,170 >> TMP ni jina la kawaida kabisa kwa variable muda, na ni int 421 00:26:32,170 --> 00:26:34,580 kwa sababu ina mechi nini nataka kufanya nakala ya. 422 00:26:34,580 --> 00:26:39,770 Mimi kuhifadhi nakala ya ndani ya TMP, hivyo mara moja line 37 ina kunyongwa, 423 00:26:39,770 --> 00:26:45,860 thamani ya ni - haraka sanity hundi - 1, thamani ya b ni 2, 424 00:26:45,860 --> 00:26:48,970 na thamani ya TMP pia ni 1. 425 00:26:48,970 --> 00:26:52,060 Hivyo sasa mimi nitafanya line 38. 426 00:26:52,060 --> 00:27:00,540 Mara mstari 38 executes, inachukua juu ya thamani ya b. Na b ilikuwa 2, hivyo ni sasa 2. 427 00:27:00,540 --> 00:27:05,210 Hivyo katika hatua hii ya hadithi, ni 2, b ni 2, na TMP ni 1, 428 00:27:05,210 --> 00:27:11,060 hivyo sasa kimantiki, tunaweza thamani tu plop TMP wa ndani ya b na sisi ni kosa. 429 00:27:11,060 --> 00:27:12,800 Hivyo tumekuwa kutatuliwa kuwa tatizo. 430 00:27:12,800 --> 00:27:17,720 Bahati mbaya, wakati mimi kukimbia programu hii katika fomu hii, haina kweli wabadilishane maadili yoyote. 431 00:27:17,720 --> 00:27:20,100 Lakini kwa kuwa wazi, kwa nini? 432 00:27:23,660 --> 00:27:26,450 Mimi fasta tatizo mantiki kutoka muda tu iliyopita, 433 00:27:26,450 --> 00:27:31,020 lakini tena, kama mimi kukimbia katika mpango huu, x na y haitabadilishwa 434 00:27:31,020 --> 00:27:33,310 na mwisho wa utekelezaji wa programu hiyo. 435 00:27:33,310 --> 00:27:37,220 [Inaudible mwanafunzi maoni] >> Sisi si kurudi kitu chochote, hivyo hiyo ni kweli. 436 00:27:37,220 --> 00:27:39,670 Lakini zinageuka kuna kidogo ya tatizo hapa kwa sababu hivi sasa, 437 00:27:39,670 --> 00:27:44,170 Kitu tu tumekuwa na uwezo wa kurudi ni jambo moja, na hii ni kizuizi cha C. 438 00:27:44,170 --> 00:27:49,070 Unaweza tu kurudi kwa kweli moja ya thamani, katika kesi ambayo mimi nina aina ya kukwama hapa 439 00:27:49,070 --> 00:27:53,310 kwa sababu mimi naweza kurudi thamani mpya ya x au mimi naweza kurudi thamani mpya ya y, 440 00:27:53,310 --> 00:27:55,190 lakini nataka wote nyuma. 441 00:27:55,190 --> 00:27:58,650 Hivyo kurudi si ufumbuzi rahisi hapa. 442 00:27:58,650 --> 00:28:01,710 Lakini tatizo la msingi ni kwa nini? Nini sisi kweli swapped? 443 00:28:01,710 --> 00:28:04,190 [Mwanafunzi] a na b. >> A na b. 444 00:28:04,190 --> 00:28:08,230 Lakini na b ni nakala za x na y, ambayo ina maana sisi tu alifanya yote wa kazi hii, 445 00:28:08,230 --> 00:28:11,650 sisi tu alitumia dakika 3 kuzungumza juu ya kazi byta na wote 3 ya vigezo hivi, 446 00:28:11,650 --> 00:28:15,420 na kwamba ni kubwa, kikamilifu sahihi katika upweke, 447 00:28:15,420 --> 00:28:20,740 lakini na upeo b tu ni katika mistari haya hapa. 448 00:28:20,740 --> 00:28:24,790 >> Hivyo tu kama kwa kitanzi, kama wewe kutangaza integer i ndani kwa kitanzi, 449 00:28:24,790 --> 00:28:28,760 vile vile, kama wewe ni kutangaza na b ndani ya kazi ambayo umefanya imeandikwa, 450 00:28:28,760 --> 00:28:33,320 wao uko halali tu ndani ya kazi kwamba, ambayo ina maana kama haraka kama byta inafanywa utekelezaji 451 00:28:33,320 --> 00:28:38,470 na sisi kwenda kutoka mstari 24 kwa mstari 25, x na y haijabadilishwa wakati wote. 452 00:28:38,470 --> 00:28:42,790 Wewe tu kupita mengi yote ya wakati swapping nakala ya variables. 453 00:28:42,790 --> 00:28:47,010 Hivyo ni zinageuka kuwa ufumbuzi wa hili ni kweli zisizo dhahiri. 454 00:28:47,010 --> 00:28:50,670 Ni kabisa kutosha kurudi maadili kwa sababu tunaweza tu kurudi 1 thamani, 455 00:28:50,670 --> 00:28:53,470 na kwa kweli mimi nataka wabadilishane wote x na y wakati huo huo, 456 00:28:53,470 --> 00:28:55,210 hivyo sisi ni kwenda na kurudi huu. 457 00:28:55,210 --> 00:29:01,020 Lakini kwa sasa, kutambua kwamba suala kimsingi umetokana na ukweli kwamba ni nakala na b 458 00:29:01,020 --> 00:29:03,630 na wao ni katika upeo wao wenyewe. 459 00:29:03,630 --> 00:29:05,050 Hebu jaribu kutatua hili katika baadhi ya njia. 460 00:29:05,050 --> 00:29:11,250 Hebu kweli kitabu nyuma hapa na kufungua, hebu sema, lahaja ya nne ya hili, buggy4. 461 00:29:11,250 --> 00:29:13,370 Nini kuhusu hili? 462 00:29:13,370 --> 00:29:17,810 Hili ni tatizo sawa lakini rahisi kuangalia kabla ya sisi kuchukua kumchoma katika kulitatua. 463 00:29:17,810 --> 00:29:24,190 Mpango huu huitwa increment, na inaonekana initializes integer x kwa 1 katika mstari 18. 464 00:29:24,190 --> 00:29:28,150 Mimi kisha kudai x ni 1, mimi kisha kudai "Incrementing ..." 465 00:29:28,150 --> 00:29:33,730 Mimi kisha piga increment, lakini basi katika mistari 22 na 23, mimi kudai ni kuwa incremented, 466 00:29:33,730 --> 00:29:40,220 Mimi kudai x ni sasa chochote ni - 2, labda - lakini mpango huu ni Buggy. 467 00:29:40,220 --> 00:29:42,610 Nini tatizo? 468 00:29:43,440 --> 00:29:50,160 Yeah. >> [Inaudible mwanafunzi majibu] >> Hasa. 469 00:29:50,160 --> 00:29:52,490 Hivyo x ametangazwa, ni wazi, kwenye mstari 18. 470 00:29:52,490 --> 00:29:54,700 Hiyo ni ndani ya braces kuu ya curly. 471 00:29:54,700 --> 00:29:58,440 Hivyo jibu rahisi hapa ni kwamba wakati x lipo hapa, 472 00:29:58,440 --> 00:30:03,930 haipo katika mstari 32, hivyo mpango huu kwa kweli si hata kukusanya. 473 00:30:03,930 --> 00:30:07,940 compiler wakati mimi kujaribu kuandaa kanuni hii ni kwenda yell saa yangu 474 00:30:07,940 --> 00:30:14,100 kuhusu baadhi kitambulisho Undeclared au kitu na athari hiyo. Kwa kweli, hebu jaribu. 475 00:30:14,100 --> 00:30:18,470 Hii ni kufanya buggy4. Kuna ni. 476 00:30:18,470 --> 00:30:22,110 Matumizi ya 'x' Undeclared kitambulisho katika mstari 32. 477 00:30:22,110 --> 00:30:25,580 Na kweli, hebu kuwa wazi zaidi hapa leo ili kwamba hii ni muhimu 478 00:30:25,580 --> 00:30:27,580 katika masaa ya ofisi na nyumbani. 479 00:30:27,580 --> 00:30:29,300 >> Ona kwamba ni kidogo isiyoeleweka kirahisi imeandikwa. 480 00:30:29,300 --> 00:30:37,270 Lakini ukweli kwamba Clang ina yelled saa yetu, akisema buggy4.c: 32:5, ni kweli muhimu. 481 00:30:37,270 --> 00:30:42,050 Ina maana kwamba kosa ni juu ya mstari 32 katika tabia nafasi 5. 482 00:30:42,050 --> 00:30:46,700 Hivyo 1, 2, 3, 4, 5. Hiyo, kwa kweli, ambapo tatizo ni. 483 00:30:46,700 --> 00:30:49,790 Na pia, pia, kumbuka katika masaa ya ofisi na nyumbani, mimi nina bahati hapa. 484 00:30:49,790 --> 00:30:52,990 Nina moja kosa. Ni kwenda kuwa rahisi kurekebisha. 485 00:30:52,990 --> 00:30:55,990 Lakini kama wewe kupata screen nzima kamili ya ujumbe balaa kosa, 486 00:30:55,990 --> 00:31:00,330 tena kutambua kwamba moja bottommost ili tu kuwa dalili ya moja topmost. 487 00:31:00,330 --> 00:31:03,450 Hivyo baada ya daima chini mende wako kutoka juu kwenda chini 488 00:31:03,450 --> 00:31:05,820 kwa sababu kuna inaweza tu kuwa mnyororo daisy athari 489 00:31:05,820 --> 00:31:09,240 kwamba ni kupendekeza una matatizo njia zaidi ya wewe kweli kufanya. 490 00:31:09,240 --> 00:31:15,150 Hivyo ni jinsi gani tunaweza kurekebisha hii ikiwa lengo langu ni increment x? >> [Mwanafunzi] Matokeo x kimataifa. 491 00:31:15,150 --> 00:31:17,060 Sawa, hivyo tunaweza kufanya x kimataifa. 492 00:31:17,060 --> 00:31:20,480 Hebu kuchukua njia ya mkato kwamba mimi alionya kuhusu mapema, lakini heck, sisi tu haja ya kurekebisha haraka, 493 00:31:20,480 --> 00:31:25,730 hivyo hebu sema tu x int hapa juu. Kwamba inafanya x kimataifa. 494 00:31:25,730 --> 00:31:31,800 Hivyo sasa kuu ina huduma hiyo na increment ina upatikanaji wake, 495 00:31:31,800 --> 00:31:34,110 na hivyo basi mimi kwenda mbele na kukusanya hii sasa. 496 00:31:34,110 --> 00:31:37,630 Matokeo buggy4, Ingiza. Inaonekana kukusanya sasa. 497 00:31:37,630 --> 00:31:41,230 Hebu kukimbia buggy4. Na inaonekana kwa kweli kazi. 498 00:31:41,230 --> 00:31:45,150 Hii ni moja ya mambo haya hiyo ni kufanya kama mimi kusema, si kama mimi, 499 00:31:45,150 --> 00:31:47,010 kama nimekuwa tu kufanyika hapa, kwa sababu kwa ujumla, 500 00:31:47,010 --> 00:31:50,440 mipango yetu ni kwenda kupata zaidi ya kuvutia na muda mrefu zaidi kuliko huu, 501 00:31:50,440 --> 00:31:56,390 na kama ufumbuzi yako ya matatizo ya maisha ni tu kuweka vigezo vyote katika juu ya faili yako, 502 00:31:56,390 --> 00:31:59,690 haraka sana kufanya mipango kupata horrifically vigumu kusimamia. 503 00:31:59,690 --> 00:32:02,190 Ni anapata vigumu kufikiria juu majina mapya variable, 504 00:32:02,190 --> 00:32:05,240 anapata vigumu kuelewa nini variable ni kufanya nini, 505 00:32:05,240 --> 00:32:08,460 na hivyo katika ujumla, hii si ufumbuzi mzuri. 506 00:32:08,460 --> 00:32:10,030 Basi hebu kufanya hili vizuri. 507 00:32:10,030 --> 00:32:12,160 Hatutaki kutumia variable kimataifa hapa. 508 00:32:12,160 --> 00:32:16,240 >> Mimi nataka increment x, hivyo mimi nilikuwa wazi - 509 00:32:16,240 --> 00:32:18,670 mwisho wa siku, hii ni aina ya hadithi silly sababu sisi tu kufanya hivyo - 510 00:32:18,670 --> 00:32:24,450 lakini kama sikujua kuhusu operator kwamba au mimi sikuruhusiwa mabadiliko hayo katika kuu yenyewe, 511 00:32:24,450 --> 00:32:30,730 jinsi mwingine inaweza mimi kutekeleza Ken juu hapa wakati huu si kwa mchemraba lakini kwa nyongeza ya? 512 00:32:31,380 --> 00:32:33,190 Ninawezaje kubadilisha jambo hili hapa? Yeah. 513 00:32:33,190 --> 00:32:38,480 [Mwanafunzi] Pass katika x na kisha kurudi [inaudible] >> Okay, nzuri. 514 00:32:38,480 --> 00:32:41,900 Sasa kwa nini basi si mimi kupita katika x na kisha badala ya kurudi, 515 00:32:41,900 --> 00:32:44,870 nini si mimi tu wala kurudi x + 1. 516 00:32:44,870 --> 00:32:47,710 wanandoa zaidi mambo kuwa na mabadiliko ya hapa. Mimi nina juu ya kufuatilia haki. 517 00:32:47,710 --> 00:32:49,770 Ni kitu gani zaidi nahitaji tweak? Mtu mwingine. Yeah. 518 00:32:49,770 --> 00:32:51,740 [Inaudible mwanafunzi majibu] 519 00:32:51,740 --> 00:32:54,730 Mimi haja ya kubadili aina ya kurudi increment sababu ni si tupu. 520 00:32:54,730 --> 00:32:57,780 Tupu chochote njia ni kuwa walirudi, lakini ni wazi sasa ni, 521 00:32:57,780 --> 00:32:59,830 hivyo hii mahitaji na mabadiliko ya - >> [mwanafunzi] int. 522 00:32:59,830 --> 00:33:02,740 int kuwa thabiti na chochote mimi nina kweli kurudi. 523 00:33:02,740 --> 00:33:05,180 Sasa kitu kingine ni bado Buggy hapa. Yeah. 524 00:33:05,180 --> 00:33:08,400 [Inaudible mwanafunzi majibu] >> [Malan] Basi nahitaji increment x? 525 00:33:08,400 --> 00:33:12,080 [Inaudible mwanafunzi majibu] >> [Malan] Ah, hivyo mimi haja ya kupita x. 526 00:33:12,080 --> 00:33:16,660 Kwa hiyo mimi haja ya kufanya hivyo hapa. >> [Inaudible mwanafunzi maoni] 527 00:33:16,660 --> 00:33:20,050 [Malan] Basi mfano, mimi kuwa na mabadiliko ya hii hapa. 528 00:33:20,050 --> 00:33:22,930 Hivyo hii ina kuwa int, hii ina kuwa - 529 00:33:22,930 --> 00:33:25,620 hmm, mimi kwa kweli kuwa na mdudu chini hapa. Hebu kurekebisha hii moja kwanza. 530 00:33:25,620 --> 00:33:29,590 Nini hii kweli kuwa? Ni got kuwa ni kitu int. 531 00:33:29,590 --> 00:33:32,700 Ni inaweza kuwa x, lakini kusema ukweli, kama wewe kuanza wito yote ya x yako vigezo, 532 00:33:32,700 --> 00:33:35,390 ni kwenda kupata chini na chini ya wazi ambayo ni ambayo. 533 00:33:35,390 --> 00:33:39,560 >> Basi hebu tu kiholela kuchagua tofauti kumtaja mkataba kwa ajili ya kazi yangu msaidizi, 534 00:33:39,560 --> 00:33:41,940 kazi mimi nina maandishi. Tutaweza simu yake, au tunaweza kuiita - 535 00:33:41,940 --> 00:33:45,010 Hebu kuiita idadi kuwa hata zaidi ya wazi. 536 00:33:45,010 --> 00:33:47,560 Hivyo basi nina kurudi chochote idadi ni pamoja na 1, 537 00:33:47,560 --> 00:33:50,740 na sasa mimi kuwa na mabadiliko mengine 1 kitu hapa juu na nyingine moja kitu hapa. 538 00:33:50,740 --> 00:33:54,350 Nifanye kuwa na mabadiliko kwenye mstari 21 ya kwanza? >> [Inaudible mwanafunzi majibu] 539 00:33:54,350 --> 00:33:57,610 [Malan] nina hawawajui kwa x. Siwezi kuwaita tu increment (x). 540 00:33:57,610 --> 00:34:01,960 Mimi haja ya kukumbuka jibu kwa kubadilisha thamani ya x upande wa mkono wa kushoto. 541 00:34:01,960 --> 00:34:04,680 Na hata kama x ni sasa juu ya kushoto na kulia, hiyo ni kabisa faini 542 00:34:04,680 --> 00:34:08,860 kwa sababu upande wa kulia anapata kwanza kunyongwa kisha anapata plopped katika jambo mkono wa kushoto - 543 00:34:08,860 --> 00:34:10,600 x katika kesi hii. 544 00:34:10,600 --> 00:34:12,159 Na kisha mwisho, hii ni fix rahisi sasa. 545 00:34:12,159 --> 00:34:17,230 Hii lazima tu mechi nini chini chini, idadi int. 546 00:34:17,230 --> 00:34:20,570 Hivyo rundo zima la mabadiliko kwa ajili ya kazi kweli wajinga 547 00:34:20,570 --> 00:34:24,420 lakini mwakilishi wa mambo kwamba tutaweza inazidi wanataka kufanya. 548 00:34:24,420 --> 00:34:27,090 Hivyo kufanya buggy4. Nimekuwa Star up mahali fulani. 549 00:34:27,090 --> 00:34:30,139 Oh, Mungu wangu. Tano makosa katika mpango 6-line. 550 00:34:30,139 --> 00:34:35,690 Basi nini vibaya juu ya mstari 18, tabia ya 5? 551 00:34:35,690 --> 00:34:39,610 Hivyo nina kutangaza hii int. 552 00:34:39,610 --> 00:34:41,920 Hebu angalia. Kuna rundo zima la makosa mengine. 553 00:34:41,920 --> 00:34:47,010 Oh, Mungu wangu - 19, 18, 21 - lakini tena, hebu tu wazi screen, Udhibiti L hapa, 554 00:34:47,010 --> 00:34:49,380 na rerun Clang. 555 00:34:49,380 --> 00:34:51,340 Hivyo 5 matatizo ni kweli tu kwamba 1. 556 00:34:51,340 --> 00:34:57,520 Hivyo sasa hebu kukimbia buggy4, Ingiza. Whew, x imekuwa incremented usahihi. 557 00:34:57,520 --> 00:35:02,720 Wote haki. Maswali yoyote juu ya jinsi ya increment namba? Yeah. 558 00:35:02,720 --> 00:35:09,870 [Inaudible mwanafunzi swali] >> Bora swali. 559 00:35:09,870 --> 00:35:14,220 Jinsi ni kwamba naweza kubadili tu x kwa idadi na mpango kujua mara moja? 560 00:35:14,220 --> 00:35:16,200 >> Tena, unafikiri kama abstraction hii. 561 00:35:16,200 --> 00:35:21,600 Hivyo kama mimi ni kuu na Ken ni increment, kusema ukweli, mimi sijali nini Ken wito iPad wake. 562 00:35:21,600 --> 00:35:26,570 Mimi sijali kile anachokiita chochote kwamba ina nini na utekelezaji wake wa utendaji huu. 563 00:35:26,570 --> 00:35:33,340 Hii ni undani utekelezaji kuwa mimi, kuu, hawana huduma ya juu. 564 00:35:33,340 --> 00:35:38,250 Na hivyo tu kubadilisha mara kwa mara ndani ya kazi - idadi hapa na idadi hapa - 565 00:35:38,250 --> 00:35:40,960 ni yote inachukua muda mrefu kama mimi recompile. 566 00:35:40,960 --> 00:35:44,180 Ni aina ya kama kama unafikiri juu ya wengi wetu, wale wa wewe na leseni ya dereva 567 00:35:44,180 --> 00:35:46,770 ambao inaendeshwa au kama wameweza hata inaendeshwa katika gari, 568 00:35:46,770 --> 00:35:50,950 wengi wetu hawana wazo jinsi ya gari inafanya kazi chini ya Hood. 569 00:35:50,950 --> 00:35:54,970 Na literally, kama wewe kufungua Hood, wengi wetu - mimi mwenyewe pamoja - 570 00:35:54,970 --> 00:35:56,940 hawataenda kweli kujua nini sisi tunataka, 571 00:35:56,940 --> 00:35:59,220 aina ya kama unaweza kuhisi pamoja na mambo kama haki hii sasa. 572 00:35:59,220 --> 00:36:01,480 Lakini sisi si kweli kuwa na huduma jinsi gari inafanya kazi, 573 00:36:01,480 --> 00:36:05,970 hatuwezi kuwa na huduma zote za kile viboko na pistons na nyaya ndani ya gari 574 00:36:05,970 --> 00:36:08,160 ni kweli kufanya. 575 00:36:08,160 --> 00:36:12,770 Hivyo kitu kama nini wito piston Haijalishi hapa katika kesi hii. Same wazo. 576 00:36:12,770 --> 00:36:25,300 Yeah. >> [Inaudible mwanafunzi swali] 577 00:36:25,300 --> 00:36:29,180 Kama kuna matumizi zaidi ya dakika variable XA iliyopita, 578 00:36:29,180 --> 00:36:32,150 wewe, programu, unachoweza kubadilisha kila mahali. 579 00:36:32,150 --> 00:36:36,600 Au unaweza literally kufanya Picha, Menyu, na kisha Find, Replace - kitu kama hicho - 580 00:36:36,600 --> 00:36:39,170 lakini wewe ni kwenda na kufanya wale mabadiliko mwenyewe. 581 00:36:39,170 --> 00:36:47,450 Wewe kuwa thabiti. >> [Mwanafunzi] Kama kuna vigezo mbalimbali [inaudible] 582 00:36:47,450 --> 00:36:53,100 utaratibu maalum kama hapa, kama hii ilikuwa int mwingine namba? >> [Mwanafunzi] Sahihi. 583 00:36:53,100 --> 00:36:56,590 [Malan] Yeah. Ili mambo wakati wewe ni wito kazi. 584 00:36:56,590 --> 00:37:00,050 >> Hivyo kama mimi walikuwa wito increment hapa na kitu kitu comma, 585 00:37:00,050 --> 00:37:01,680 kuna ramani ya moja kwa moja. 586 00:37:01,680 --> 00:37:05,690 variable kwanza, chochote ni kuitwa, ni kufanywa nakala ya hoja ya kwanza zaidi ya hapa. 587 00:37:05,690 --> 00:37:07,760 Sorry. Hii haipaswi kuwa mabano. 588 00:37:07,760 --> 00:37:11,490 pili hoja yanaendana na la pili. Hivyo ili, ndiyo, mambo. Wote haki. 589 00:37:11,490 --> 00:37:17,020 Sorry. Nilitumia muda mrefu njia ya kufika huko. Maswali mengine? Wote haki. 590 00:37:17,020 --> 00:37:20,610 Basi hebu angalia kama hatuwezi kuchora picha ya nini kweli kinachoendelea hapa 591 00:37:20,610 --> 00:37:23,090 chini ya Hood, hivyo kusema. 592 00:37:23,090 --> 00:37:26,640 Hii ni mstatili kwamba wanaweza kuwakilisha kumbukumbu ya kompyuta yako. 593 00:37:26,640 --> 00:37:30,970 Hata kama una wazo jinsi kumbukumbu kazi au jinsi RAM matendo, 594 00:37:30,970 --> 00:37:33,940 angalau kudhani kwamba una mashada ya hiyo siku hizi. 595 00:37:33,940 --> 00:37:36,280 Nimepata megabaiti yake, nimepata gigabytes yake, 596 00:37:36,280 --> 00:37:40,870 na tunajua kutoka wiki 0 Byte kwamba ni kile tu? >> [Mwanafunzi] 8 bits. 597 00:37:40,870 --> 00:37:42,950 8 bits, haki? Hivyo 8 zeroes na 1. 598 00:37:42,950 --> 00:37:45,880 Hivyo kama kompyuta yako ina GIG ya RAM, 2 gigs ya RAM siku hizi, 599 00:37:45,880 --> 00:37:55,030 una bilioni au bilioni 2 ka ya kumbukumbu au bits takribani bilioni 8 au 16 bilioni 600 00:37:55,030 --> 00:37:56,890 ndani ya kompyuta yako. 601 00:37:56,890 --> 00:38:00,590 Tofauti na mfano kidogo sufu Willy, siyo magnetic chembe kawaida tena. 602 00:38:00,590 --> 00:38:04,450 Kuongezeka - katika Laptops angalau - ni hali mango anatoa, SSDs, 603 00:38:04,450 --> 00:38:08,580 kwamba tu kuwa na sehemu hakuna kusonga mbele. Ni wote elektroniki. Ni wote umeme-msingi. 604 00:38:08,580 --> 00:38:14,060 Hivyo kufikiri ya Mstatili hii kama tu anayewakilisha gigabytes 1 au 2 ya kumbukumbu kwamba wewe. 605 00:38:14,060 --> 00:38:16,020 >> Hivyo ni chunk ya kumbukumbu. 606 00:38:16,020 --> 00:38:19,830 ulimwengu wa sayansi ya kompyuta ina aina ya partitioned mbali 607 00:38:19,830 --> 00:38:22,950 bonge la kumbukumbu ya kufanya mambo tofauti. 608 00:38:22,950 --> 00:38:27,190 Kwa mfano, kama hii ni RAM kompyuta yako, kama ilivyopendekezwa na Mstatili huko, 609 00:38:27,190 --> 00:38:31,130 zinageuka kuwa na mkataba, juu ya RAM yako, ili kuzungumza, 610 00:38:31,130 --> 00:38:33,660 ujumla ni nini wito sehemu asilia. 611 00:38:33,660 --> 00:38:36,740 Wale ni sekunde 0 na 1s kwa kuwa compiled. 612 00:38:36,740 --> 00:38:39,020 Hivyo wakati tumekuwa inaonekana chini ya kofia katika kile a.out ni, 613 00:38:39,020 --> 00:38:41,980 yote haya sekunde 0 na 1s, wakati kukimbia mpango, 614 00:38:41,980 --> 00:38:46,290 sekunde 0 wale na 1s ni kubeba kutoka gari yako ngumu katika kitu kinachoitwa RAM, 615 00:38:46,290 --> 00:38:49,320 na katika RAM wao ni kuweka saa ya juu. 616 00:38:49,320 --> 00:38:52,770 Wakati huo huo, una mambo mengine: initialize data, uninitialize data. 617 00:38:52,770 --> 00:38:57,510 Wale 2 swaths ya kumbukumbu rejea vigezo kimataifa, ambayo huna mara nyingi matumizi ya 618 00:38:57,510 --> 00:39:00,760 lakini wakati mwingine kama wewe, wao kuishia huko pia. 619 00:39:00,760 --> 00:39:04,260 Kisha kuna baadhi ya mambo mengine: mazingira vigezo, ambayo sisi si kutumia muda mwingi juu ya, 620 00:39:04,260 --> 00:39:06,860 lakini kisha 2 mambo muhimu kwamba atakuja tena katika muhula, 621 00:39:06,860 --> 00:39:08,550 stack na lundo. 622 00:39:08,550 --> 00:39:12,210 Kwa hiyo wengi kumbukumbu ya kompyuta yako ni akiba wakati wa mbio mpango 623 00:39:12,210 --> 00:39:15,370 kwa kitu kinachoitwa stack na kitu kinachoitwa lundo. 624 00:39:15,370 --> 00:39:18,840 Sisi siyo kwenda kuzungumza kuhusu lundo leo, lakini tutaongea kuhusu stack. 625 00:39:18,840 --> 00:39:24,600 stack ni maana ya conjure up Visual ya dining trays mlo ukumbi katika Mather House 626 00:39:24,600 --> 00:39:28,110 au popote kutokea kwa kuwa ambapo ukumbi dining wafanyakazi safi yao ya kila siku, 627 00:39:28,110 --> 00:39:30,180 wao stack yao juu kutoka ghorofa ya juu juu, 628 00:39:30,180 --> 00:39:34,550 na vile vile, katika kumbukumbu, kuna hili wazo la kuweka kitu juu ya stack, 629 00:39:34,550 --> 00:39:36,860 kuweka kitu juu ya stack, kuweka kitu juu ya stack. 630 00:39:36,860 --> 00:39:38,240 Na nini sisi maana kwa mfano huu? 631 00:39:38,240 --> 00:39:41,860 >> Hebu zoom katika juu ya nusu tu ya chini ya picha hii, RAM kompyuta yako, 632 00:39:41,860 --> 00:39:44,330 kupendekeza yafuatayo. 633 00:39:44,330 --> 00:39:48,170 Ni zinageuka kuwa wakati kukimbia mpango kama a.out au hujambo - 634 00:39:48,170 --> 00:39:50,100 chochote mpango ni kwamba ve yameandikwa - 635 00:39:50,100 --> 00:39:54,020 tena, wale sekunde 0 na 1s ni kubeba kutoka gari yako ngumu, ambayo ni ya muda mrefu ya uhifadhi, 636 00:39:54,020 --> 00:39:57,230 anakaa huko hata wakati wewe vuta kuziba, kubeba katika RAM. 637 00:39:57,230 --> 00:40:00,610 RAM ni kasi kuliko anatoa ngumu - ni ndogo kuliko anatoa ngumu - 638 00:40:00,610 --> 00:40:03,300 lakini ni mipango ya kuishi ambapo wakati wewe mbio yao. 639 00:40:03,300 --> 00:40:08,230 Hivyo bonyeza mara mbili juu ya mpango Mac au PC, ni kubeba kutoka ndani ya gari ngumu RAM. 640 00:40:08,230 --> 00:40:11,520 Haraka kama ni kubeba katika RAM, go sekunde 0 na 1s kwa juu ya njia, 641 00:40:11,520 --> 00:40:16,610 kinachojulikana Nakala sehemu, lakini basi haraka kama mpango wako kweli kuanza kukimbia, 642 00:40:16,610 --> 00:40:21,360 Kazi kuu inaitwa, na kuu, kama tumeona, mara nyingi ina vigezo mitaa, 643 00:40:21,360 --> 00:40:24,870 na ina ints masharti na na chars na kama. 644 00:40:24,870 --> 00:40:29,180 Hivyo kama mpango wako kwamba umeandika au mpango kwamba una mbili clicked 645 00:40:29,180 --> 00:40:32,970 kutumika baadhi ya vigezo ndani ya kuu, 646 00:40:32,970 --> 00:40:37,240 wao kuishia chini ya stack yako ya kumbukumbu, hivyo kusema. 647 00:40:37,240 --> 00:40:39,410 Zaidi concretely, nini hii kwa kweli ina maana gani? 648 00:40:39,410 --> 00:40:48,450 Hii ina maana kwamba kama sisi walikuwa wanakwenda idadi bytes ya RAM katika kompyuta yako, 649 00:40:48,450 --> 00:40:55,750 taarifa kwamba hii inaweza kuwa Byte idadi 0, hii inaweza kuwa Byte namba 1, 2, 3, 4, 5, 6, 650 00:40:55,750 --> 00:41:01,480 njia yote hadi bilioni 2 itakuwa njia yote hadi pale saa ya juu. 651 00:41:01,480 --> 00:41:05,880 Hivyo kwa maneno mengine, wakati sisi majadiliano kuhusu RAM au kumbukumbu katika suala la ka, 652 00:41:05,880 --> 00:41:11,500 ni njia tu kwamba mtu imeamua nini kuzihesabu kila chunks wale wa kumbukumbu. 653 00:41:11,500 --> 00:41:16,650 Hivyo wakati unahitaji 32 bits kwa int au unahitaji 8 bits kwa Char, 654 00:41:16,650 --> 00:41:18,840 wapi wanaishia katika kumbukumbu? 655 00:41:18,840 --> 00:41:22,350 >> Conceptually, wao tu kuishia chini ya jambo hili aitwaye stack. 656 00:41:22,350 --> 00:41:25,870 Lakini nini kuvutia sasa ni wakati kuu wito kazi - 657 00:41:25,870 --> 00:41:28,750 kudhani kazi kuitwa foo, tu jina holela - 658 00:41:28,750 --> 00:41:32,330 kile kinachotokea ni kuu ni chini ya hii stack ya kumbukumbu; 659 00:41:32,330 --> 00:41:35,680 foo sasa ni kuweka juu ya kuu katika kumbukumbu. 660 00:41:35,680 --> 00:41:40,990 Hivyo yoyote vigezo vya ndani kuwa foo ina kuishia aina ya conceptually juu ya wale katika kuu. 661 00:41:40,990 --> 00:41:47,070 Kama foo wito kazi nyingine iitwayo bar, wale vigezo kuishia hapa. 662 00:41:47,070 --> 00:41:50,120 Kama bar wito kitu kingine, hapa, hapa, hapa. 663 00:41:50,120 --> 00:41:53,830 Basi nini kuvutia kuhusu mbio mpango ni kwamba kama wewe piga kazi 664 00:41:53,830 --> 00:41:57,750 na kama wale utendaji kazi na kuwaita kama wale majukumu piga kazi, 665 00:41:57,750 --> 00:42:01,470 wewe kujenga hii stack ya utendaji katika kumbukumbu. 666 00:42:01,470 --> 00:42:06,890 Na mara moja tu anarudi kazi gani unaweza kuanza kupata kwamba kumbukumbu nyuma. 667 00:42:06,890 --> 00:42:10,860 Hivyo moja ya njia rahisi ya kukimbia nje ya kumbukumbu katika programu ya kompyuta 668 00:42:10,860 --> 00:42:14,360 ni kuandika kazi ambayo kamwe kurudi. 669 00:42:14,360 --> 00:42:18,900 Hivyo kwa mfano, hebu kuonyesha kama kiasi na mpango kukusudia Buggy. 670 00:42:18,900 --> 00:42:22,230 Hebu kwenda mbele na kufanya # pamoja , 671 00:42:22,230 --> 00:42:25,000 int kuu (utupu), 672 00:42:25,000 --> 00:42:32,940 na mimi naenda kufanya wakati (2> 1), ambayo pengine haitabadilika juu yetu, 673 00:42:32,940 --> 00:42:37,560 na napenda kwenda mbele sasa na kufanya printf. 674 00:42:37,560 --> 00:42:40,700 Kwa kweli, kwamba kinaendelea kuwa chini ya kuibua kuvutia. Hebu kufanya hili. 675 00:42:40,700 --> 00:42:50,240 Kwa int i = 0; i> 0 - wacha kufanya kosa hili - i + +. 676 00:42:50,240 --> 00:42:52,720 Na hebu printf hapa. Hebu mazoezi nini nilikuwa akihubiri. 677 00:42:52,720 --> 00:43:00,190 Hebu kuwa na mbinu hapa, utupu chorus, na tutaweza kusema int i, 678 00:43:00,190 --> 00:43:06,830 na kisha mimi nina kwenda kusema printf - hapana, wacha kufanya hii ya kuvutia zaidi. 679 00:43:06,830 --> 00:43:15,790 Hebu kweli si magazeti chochote wakati wote. Hebu tu kufanya hivyo: chorus (i). 680 00:43:15,790 --> 00:43:20,390 Wote haki. Hivyo hii ni kwa sababu Buggy kwa nini? 681 00:43:20,390 --> 00:43:23,380 Mimi nina kufanya hili kama mimi kwenda kwa sababu haina mpango kwa kweli kufanya kitu chochote cha riba. 682 00:43:23,380 --> 00:43:25,320 >> Lakini hilo sio lengo. 683 00:43:25,320 --> 00:43:29,630 Lengo ni kuandika mpango ambao kuu kazi anafanya nini, inaonekana? 684 00:43:30,720 --> 00:43:32,860 Wito yenyewe. Na kweli, hatuna haja ya kitanzi. 685 00:43:32,860 --> 00:43:37,200 Hebu hata kurahisisha hii tu ili kama si kupoteza mbele ya mdudu kweli ya msingi. 686 00:43:37,200 --> 00:43:39,640 Wito Kuu chorus kuimba baadhi chorus, 687 00:43:39,640 --> 00:43:41,440 basi mimi alifanya kitu kijinga na mimi alikuwa na chorus wito chorus 688 00:43:41,440 --> 00:43:43,760 kwa sababu mimi kudhani mtu mwingine alikuwa anaenda kutekeleza hilo labda, 689 00:43:43,760 --> 00:43:47,210 na sasa hii si kwenda kukusanya bado. Mimi haja ya kufanya nini? 690 00:43:47,210 --> 00:43:49,970 Nahitaji mfano, kumbuka. 691 00:43:49,970 --> 00:43:56,110 Kwa hiyo mimi haja ya kuwa juu hapa utupu chorus (int i); 692 00:43:56,110 --> 00:43:59,210 Hivyo sasa kama mimi kwenda chini hapa - kwa kweli, hebu kutumia dirisha kubwa. 693 00:43:59,210 --> 00:44:01,980 Hebu kwenda mbele na kufanya chorus. 694 00:44:01,980 --> 00:44:06,490 Hebu kwenda mbele na kufanya chorus. 695 00:44:06,490 --> 00:44:08,370 Matumizi ya kitambulisho Undeclared i. 696 00:44:08,370 --> 00:44:12,500 Oh, kwamba ilikuwa ya kijinga. Hatuna haja ya hoja. Hebu tu kufanya hili. 697 00:44:12,500 --> 00:44:16,370 Natamani tungeanza njia hii. Ingekuwa mpango rahisi sana kuandika. 698 00:44:16,370 --> 00:44:25,590 Kuna. Sasa hebu kwenda juu kwa terminal dirisha yangu, rerun Clang, na hapa sisi kwenda. 699 00:44:25,590 --> 00:44:28,460 Hiyo ilikuwa kweli kasi. 700 00:44:28,460 --> 00:44:31,150 Ni nini hasa ilitokea tu, ingawa? 701 00:44:31,150 --> 00:44:33,730 Naam, sasa mimi itabidi kuongeza line magazeti ili tuweze kuona. 702 00:44:33,730 --> 00:44:43,490 Ngoja niseme printf ("mimi niko katika hapa") - hakuna vigezo. Tutaweza kuondoka ni kama hiyo. 703 00:44:43,490 --> 00:44:47,480 Hebu rerun kufanya. Hebu rerun chorus. 704 00:44:47,480 --> 00:44:57,380 Na ... kuja juu. Kuendelea. 705 00:44:57,380 --> 00:44:59,930 Kama kando, kwa nini kuwa si kugonga bado? 706 00:44:59,930 --> 00:45:02,080 kosa segmentation kilichotokea super kufunga kabla. 707 00:45:02,080 --> 00:45:06,570 [Inaudible mwanafunzi majibu] >> Hasa. Hivyo inachukua muda na magazeti, haki? 708 00:45:06,570 --> 00:45:08,610 Ni tu inachukua zaidi ya kazi juu ya sehemu ya kompyuta. 709 00:45:08,610 --> 00:45:10,620 Na huko ni: Mkato kosa. 710 00:45:10,620 --> 00:45:12,340 >> Hivyo taarifa tu jinsi mipango haraka kukimbia. 711 00:45:12,340 --> 00:45:14,130 Kama wewe si kuchapa chochote, super haraka. 712 00:45:14,130 --> 00:45:18,770 Lakini sisi bado got hii kosa segmentation kwa sababu kile kinachotokea? 713 00:45:18,770 --> 00:45:21,210 Kama unafikiri kuhusu jinsi ya kumbukumbu ya kompyuta yako ni kuweka nje, 714 00:45:21,210 --> 00:45:28,740 hii hutokea kwa kuwa kuu, lakini hapa hebu piga tu hii chorus, na hebu piga hii chorus. 715 00:45:28,740 --> 00:45:34,550 Na sasa kama mimi kufanya aesthetics wangu wa kulia, hii ni kwenda tu kusema chorus, chorus, chorus, 716 00:45:34,550 --> 00:45:40,550 chorus, chorus, chorus, chorus, ad nauseum, na hatimaye, nini kitatokea? 717 00:45:40,550 --> 00:45:45,630 Kama picha kubwa, literally, ni hili, ni nini hutokea tu conceptually? 718 00:45:46,520 --> 00:45:48,630 kuongezeka stack lundo. 719 00:45:48,630 --> 00:45:51,940 Au, mbaya, wewe tu overrun kila kitu, ikiwa ni pamoja na sehemu ya maandishi, 720 00:45:51,940 --> 00:45:54,590 ambayo ni sekunde 0 na 1s kwamba kuwakilisha programu yako. 721 00:45:54,590 --> 00:45:57,080 Kwa kifupi, hii ni super, super mbaya. 722 00:45:57,080 --> 00:45:58,830 Mpango wako kuzidi kuwa mbaya nje ya kudhibiti. 723 00:45:58,830 --> 00:46:01,220 Unatumia zaidi njia kumbukumbu kuliko wewe lengo 724 00:46:01,220 --> 00:46:03,960 wote kwa sababu ya makosa ya kijinga katika kesi hii, 725 00:46:03,960 --> 00:46:08,040 au katika kesi hii kazi sana kwa makusudi kufanyika linalojiita. 726 00:46:08,040 --> 00:46:09,500 Sasa, hii si wote mbaya. 727 00:46:09,500 --> 00:46:13,800 Kazi wito wenyewe kweli ina nguvu kubwa wakati matumizi kwa usahihi. 728 00:46:13,800 --> 00:46:15,800 Mimi si kutumika kwa usahihi hapa. 729 00:46:15,800 --> 00:46:19,780 Hivyo hii si wote mbaya, lakini ukweli kwamba mimi kweli kamwe kuacha wito mwenyewe 730 00:46:19,780 --> 00:46:23,520 ni udhaifu msingi hapa ya mpango huu. 731 00:46:23,520 --> 00:46:26,400 Hivyo ambapo ni sisi kwenda kwa yote haya? Nini kinatokea kweli? 732 00:46:26,400 --> 00:46:30,340 Wakati mimi piga kazi increment kama sisi walikuwa wakifanya katika mifano hizo, 733 00:46:30,340 --> 00:46:33,420 Nina thamani kama 1 kwamba mimi kupita in 734 00:46:33,420 --> 00:46:37,570 Mimi kupita katika nakala ya namba 1, hivyo zifuatazo kinachotokea. 735 00:46:37,570 --> 00:46:44,240 Hebu kwenda katika mfano increment, hii guy haki zaidi ya hapa. 736 00:46:44,240 --> 00:46:46,870 Hapa ni nini ni kweli yanatokea. 737 00:46:46,870 --> 00:46:53,400 Wakati mimi kuwaita increment na mimi kupita katika x, pictorially, nini kinaendelea hapa ni hii. 738 00:46:53,400 --> 00:46:59,520 >> Kama mimi na thamani ya 1 kuhifadhiwa hapa na mimi kwa kweli kuwaita increment, 739 00:46:59,520 --> 00:47:04,330 ambayo sasa inaitwa chorus - iPad ni kutupa mimi mbali hapa. 740 00:47:04,330 --> 00:47:09,760 Hebu piga hii increment, na sisi hawajui nini kazi hii ya pili ni kwenda kuwa. 741 00:47:09,760 --> 00:47:14,840 Basi nini hasa kinachotokea ni hapa mahali fulani katika kuu nina chunk ya kumbukumbu 742 00:47:14,840 --> 00:47:17,000 kwamba ni hifadhi ya namba 1. 743 00:47:17,000 --> 00:47:19,380 Wakati mimi kuwaita increment, mimi nina kutumia mwingine chunk ya kumbukumbu, 744 00:47:19,380 --> 00:47:21,230 lakini sasa nina nakala ya 1. 745 00:47:21,230 --> 00:47:26,660 Wakati mimi increment kwamba thamani, hii inakuwa 2, 746 00:47:26,660 --> 00:47:30,560 lakini basi kile kinachotokea kwa haraka kama anarudi increment? 747 00:47:30,560 --> 00:47:33,630 Kumbukumbu hii tu anapata mitupu nyuma mfumo wa uendeshaji, 748 00:47:33,630 --> 00:47:37,450 ambayo ina maana wote umefanya kosa ni kitu muhimu. 749 00:47:37,450 --> 00:47:43,120 1 kuwa awali ilikuwa zilizomo katika kuu ni kweli bado kuna. 750 00:47:43,120 --> 00:47:44,890 Hivyo ambapo ni sisi kwenda na hili? 751 00:47:44,890 --> 00:47:49,770 Ni zinageuka kuwa katika kumbukumbu una mlolongo huu nyuma kwa nyuma ya ka 752 00:47:49,770 --> 00:47:53,050 kuwa unaweza kuweka mambo katika, na ni zinageuka kuwa tumekuwa tayari kuona kitu 753 00:47:53,050 --> 00:47:55,390 ambayo inahusisha kuweka mambo nyuma kwa nyuma kwa nyuma kwa nyuma. 754 00:47:55,390 --> 00:47:59,860 Je, ni kamba msingi wiki 1 na sasa wiki 2? 755 00:48:00,020 --> 00:48:01,980 Ni tu mkusanyiko wa wahusika. 756 00:48:01,980 --> 00:48:04,310 Hivyo zinageuka tu kama unaweza kuweka namba katika kumbukumbu, 757 00:48:04,310 --> 00:48:06,990 vile vile unaweza kuweka wahusika katika kumbukumbu. 758 00:48:06,990 --> 00:48:10,530 Na mara moja tunaanza wahusika kuweka katika kumbukumbu nyuma kwa nyuma kwa nyuma kwa nyuma, 759 00:48:10,530 --> 00:48:13,620 zinageuka kuwa kutumia rahisi ya mambo kama kwa kitanzi au kitanzi wakati, 760 00:48:13,620 --> 00:48:17,170 tunaweza iterate kutoka kushoto kwenda kulia juu ya wahusika katika string 761 00:48:17,170 --> 00:48:20,600 na kuanza massaging yao ndani ya wahusika tofauti kabisa - 762 00:48:20,600 --> 00:48:23,370 inaweza kuwa b, b inaweza kuwa c - 763 00:48:23,370 --> 00:48:27,780 ili hatimaye, tunaweza kuchukua sentensi Kiingereza kwamba kweli hufanya akili 764 00:48:27,780 --> 00:48:30,310 na kubadilisha kila barua hizo moja kwa wakati mmoja 765 00:48:30,310 --> 00:48:34,400 kutembea kupitia kumbukumbu ya kompyuta wetu wa kushoto na haki ya kweli encrypt. 766 00:48:34,400 --> 00:48:35,810 Basi hebu kuchukua yetu dakika tano mapumziko hapa, 767 00:48:35,810 --> 00:48:40,730 na wakati sisi kuja nyuma, tutaweza kuanza mchakato huu wa scrambling habari. 768 00:48:42,020 --> 00:48:43,520 >> Wote haki. 769 00:48:43,520 --> 00:48:48,070 Kabla ya sisi kupiga mbizi katika baadhi crypto na mambo haya kuitwa arrays, 770 00:48:48,070 --> 00:48:51,470 basi mimi pause kwa maswali yoyote kwa sababu mimi najisikia kama kweli aina ya msonge 771 00:48:51,470 --> 00:48:54,080 baadhi ya mada hizo. Basi hebu kurekebisha sasa kama tunaweza. 772 00:48:54,080 --> 00:48:58,700 Sisi tu kuongelea maadili kurudi, sisi aliyesema kuhusu hoja, 773 00:48:58,700 --> 00:49:03,250 na kuongelea wazo hili, ambayo tutaweza kurudi katika wiki ijayo, 774 00:49:03,250 --> 00:49:08,720 ya kuangalia kumbukumbu kama rundo zima la trays haya sifa, ili kuzungumza, 775 00:49:08,720 --> 00:49:12,660 kutoka chini juu juu, vile kwamba kila tray kwamba anapata kuweka kwenye stack 776 00:49:12,660 --> 00:49:16,530 inawakilisha kazi hiyo kwa sasa kuitwa. 777 00:49:17,900 --> 00:49:20,260 Maswali yoyote? 778 00:49:20,260 --> 00:49:22,640 Napenda kuuliza swali hapa. 779 00:49:22,640 --> 00:49:27,890 Hebu kurahisisha hii nyuma ilikuwa ni nini kabla ya baadhi ya Q & A. yetu mapema 780 00:49:27,890 --> 00:49:35,570 ukweli kwamba increment ina mabano wazi, int idadi, imefungwa mabano - 781 00:49:35,570 --> 00:49:39,110 nini idadi int kuwakilisha? 782 00:49:39,110 --> 00:49:42,790 [Mwanafunzi] hoja. >> Hoja. Sawa. Lakini nini hoja? 783 00:49:42,790 --> 00:49:46,370 [Inaudible mwanafunzi majibu] >> gani hiyo? >> [Mwanafunzi] Kitu ambacho wewe kupita in 784 00:49:46,370 --> 00:49:49,940 Okay, kwa hivyo kitu ambacho wewe kupita in Na zaidi kwa ujumla, ni tu pembejeo. 785 00:49:49,940 --> 00:49:52,450 Kama ungekuwa kuandika kazi na madhumuni kwamba kazi katika maisha 786 00:49:52,450 --> 00:49:55,770 ni kufanya kitu tofauti kidogo kila wakati matumizi yake, 787 00:49:55,770 --> 00:50:00,110 basi njia pekee kwa kuwa kutokea kwa kweli inaweza kuonekana kuwa kutoa ni pamoja na pembejeo 788 00:50:00,110 --> 00:50:03,510 hivyo kwamba wanaweza kufanya kitu tofauti na pembejeo kwamba kila wakati. 789 00:50:03,510 --> 00:50:06,650 >> Hivyo haja ya kutaja mambo mawili wakati kazi inachukua pembejeo. 790 00:50:06,650 --> 00:50:09,590 Unahitaji kubainisha jina kwamba unataka kutoa mchango kwamba 791 00:50:09,590 --> 00:50:12,700 rena kwa urahisi wako mwenyewe ili uweze rejea ni 792 00:50:12,700 --> 00:50:16,540 katika kazi na kwamba wewe binafsi ni kuandika, kama mimi hapa katika mstari 32. 793 00:50:16,540 --> 00:50:20,800 Lakini pia unahitaji kwa kutaja aina yake kwa sababu C ni lugha ya programu 794 00:50:20,800 --> 00:50:25,940 kwamba tu inahitaji kwamba kama unataka variable, mniambie kompyuta nini data aina hiyo ni, 795 00:50:25,940 --> 00:50:30,200 katika sehemu kubwa hivyo kwamba anajua jinsi wengi bits kutenga kwa variable kwamba 796 00:50:30,200 --> 00:50:33,020 kwa sababu inaweza kuwa 6 - sorry, itakuwa si 6. 797 00:50:33,020 --> 00:50:37,080 Inaweza kuwa 16, inaweza kuwa 8, inaweza kuwa 32, hata 64, 798 00:50:37,080 --> 00:50:39,130 lakini kompyuta mahitaji ya kujua. 799 00:50:39,130 --> 00:50:43,180 Sasa, int upande wa mkono wa kushoto inawakilisha nini, kwa kulinganisha? 800 00:50:46,350 --> 00:50:48,850 [Inaudible mwanafunzi majibu] >> gani hiyo? >> [Mwanafunzi] Aina ya kazi. 801 00:50:48,850 --> 00:50:53,610 aina ya kazi na, zaidi hasa, aina ya matokeo yake. Haki. 802 00:50:53,610 --> 00:50:57,380 Hivyo wakati kitu katika mabano inawakilisha mchango wake, kama wapo, 803 00:50:57,380 --> 00:50:59,660 kitu kwa upande wa kushoto inawakilisha matokeo yake. 804 00:50:59,660 --> 00:51:03,530 Na katika kesi hii, inaonekana increment anarudi int, 805 00:51:03,530 --> 00:51:07,690 na hivyo int ni aina ya kurudi kwa kazi hii. 806 00:51:07,690 --> 00:51:09,340 Nini maana ya kurudi? 807 00:51:09,340 --> 00:51:15,090 Literally, wewe kutumia kurudi Keyword na kisha kama nini wewe ni kurudi 808 00:51:15,090 --> 00:51:18,600 na haki ya Keyword ni integer, 809 00:51:18,600 --> 00:51:21,660 basi hakika hivyo ni sambamba na kile sisi ahadi. 810 00:51:21,660 --> 00:51:26,410 Unaweza si kufanya kitu kama hii - hello, ulimwengu - kwa sababu ni kamba. 811 00:51:26,410 --> 00:51:28,860 >> Ni dhahiri kuwa, si integer. 812 00:51:28,860 --> 00:51:33,140 Hivyo katika muda mfupi, ni mzigo kweli juu yetu, programu, kwa kuwa maalum 813 00:51:33,140 --> 00:51:37,770 kama kwa nini tuko kurudi na kisha kweli kwenda kuhusu kurudi yake. 814 00:51:37,770 --> 00:51:43,440 muktadha hapa sasa ni kwamba kumbukumbu ya kompyuta yako ni gigabyte, gigabytes 2 - 815 00:51:43,440 --> 00:51:45,920 chochote - labda ni zaidi, labda ni kidogo, 816 00:51:45,920 --> 00:51:49,050 lakini kompyuta maoni yake kama kuwa na sehemu mbalimbali. 817 00:51:49,050 --> 00:51:51,200 Kitu huenda chini pale, kitu kingine huenda juu huko, 818 00:51:51,200 --> 00:51:54,290 mambo mbalimbali huenda katika katikati, na leo sisi tu kuanza kusimulia hadithi, 819 00:51:54,290 --> 00:51:56,340 lakini tutaweza kuja nyuma wakati huu zaidi. 820 00:51:56,340 --> 00:51:59,980 Kwa sasa, kipande tu ya kumbukumbu sisi kweli huduma kuhusu ni sehemu asilia 821 00:51:59,980 --> 00:52:03,360 kwa sababu tu kwamba inawakilisha sekunde 0 na 1s kwamba Clang ina outputted. 822 00:52:03,360 --> 00:52:06,050 Hivyo wakati wewe kukimbia amri katika keyboard kama a.out 823 00:52:06,050 --> 00:52:09,110 au wewe bonyeza mara mbili icon kwenye Mac OS au Windows, 824 00:52:09,110 --> 00:52:11,880 programu yako ni kubeba kutoka gari yako ngumu katika RAM 825 00:52:11,880 --> 00:52:16,330 na ni plopped wakati juu ya RAM ya kompyuta yako, hivyo kusema. 826 00:52:16,330 --> 00:52:20,450 Wakati huo huo, kama mpango wako na kuanza mbio kuu anapata kuitwa 827 00:52:20,450 --> 00:52:23,640 katika mpango aliandika au Microsoft mpango au Apple aliandika, 828 00:52:23,640 --> 00:52:27,860 yoyote ya vigezo yake mitaa kuishia chini huko chini ya kumbukumbu ya kompyuta yako. 829 00:52:27,860 --> 00:52:33,230 Lakini kama kazi wito kuu mwingine kwamba yenyewe ina vigezo au hoja, wanaishia hapo juu. 830 00:52:33,230 --> 00:52:36,680 Na kama kazi kwamba wito kitu, wanaishia hapo juu, juu ya hayo, juu yake. 831 00:52:36,680 --> 00:52:41,460 >> Na mara moja tu kazi inafanywa utekelezaji haina stack ya sania, ili kuzungumza, 832 00:52:41,460 --> 00:52:43,240 kuanza kupata chini na chini. 833 00:52:43,240 --> 00:52:48,250 Na hii ni nini basi, kwa kifupi, anaelezea kwa nini wakati wewe piga mchemraba 834 00:52:48,250 --> 00:52:51,550 au wewe piga increment, wewe ni kupita katika nakala ya thamani. 835 00:52:51,550 --> 00:52:55,520 Na nini maana ya pictorially ni kwamba wewe ni literally kuandika namba 1 836 00:52:55,520 --> 00:53:00,460 katika sehemu nyingine ya kumbukumbu, kubadilisha kwamba 1-2 katika kesi ya increment 837 00:53:00,460 --> 00:53:04,820 au 8 katika kesi ya mchemraba na kisha kutupa kwamba kumbukumbu mbali 838 00:53:04,820 --> 00:53:09,140 haraka kama increment au anarudi mchemraba kazi. Swali. 839 00:53:09,140 --> 00:53:12,900 [Mwanafunzi] wapi vigezo kimataifa kuhifadhiwa? 840 00:53:12,900 --> 00:53:18,100 Vigezo Global ni kuhifadhiwa katika nini sasa inaitwa data initialized au data uninitialized, 841 00:53:18,100 --> 00:53:21,920 tofauti kuwa kama una variable kimataifa na wewe hawawajui ni mara moja thamani 842 00:53:21,920 --> 00:53:24,640 na alama ya usawa, inaishia kwa juu pale, 843 00:53:24,640 --> 00:53:29,200 na kama wewe tu kusema x int; na thamani hakuna, ni mwisho juu chini kidogo katika RAM 844 00:53:29,200 --> 00:53:31,710 tu kwa mkataba. 845 00:53:31,710 --> 00:53:34,940 Maswali mengine? Wote haki. 846 00:53:34,940 --> 00:53:37,340 Hivyo picha hii kuja nyuma kama sisi kupata nguvu zaidi 847 00:53:37,340 --> 00:53:39,170 kwa nini tunaweza kufanya kwa kompyuta, 848 00:53:39,170 --> 00:53:42,720 lakini kwa sasa, hebu kuwa intro mafupi kwa cryptography, 849 00:53:42,720 --> 00:53:46,080 aina maalum ya cryptography kwamba haina kutatua matatizo yote ya dunia 850 00:53:46,080 --> 00:53:47,720 lakini haina kutatua baadhi yao. 851 00:53:47,720 --> 00:53:51,700 Katika kesi hii hapa, tuna kitu kinachoitwa siri-ufunguo cryptography. 852 00:53:51,700 --> 00:53:56,410 Siri-key cryptography, kama jina linavyosema, hupata usalama wake kutoka siri. 853 00:53:56,410 --> 00:54:00,690 >> Kwa mfano, kama wewe walikuwa nyuma katika shule ya daraja na wewe walikuwa kupita kidogo siri upendo barua 854 00:54:00,690 --> 00:54:04,850 kwa mvulana au msichana wewe walikuwa kusagwa juu, kama alitaka kupita kwamba kumbuka kupitia watazamaji, 855 00:54:04,850 --> 00:54:08,380 wewe pengine bila kuandika kumbuka vile katika Kiingereza au lugha yoyote yako ya asili ni. 856 00:54:08,380 --> 00:54:13,340 Badala yake, unaweza encrypt au unaweza tu kutuma ujumbe wa maandishi yao siku hizi. 857 00:54:13,340 --> 00:54:15,460 Lakini wewe ili kweli kupita yao note katika darasa. 858 00:54:15,460 --> 00:54:18,700 Na kwa kufanya hivyo salama katika namna kwamba rafiki yako na mwalimu 859 00:54:18,700 --> 00:54:22,650 sijui nini wewe kuandika, unaweza kuja na algorithm haki rahisi, 860 00:54:22,650 --> 00:54:25,920 vijana ingawa unaweza kuwa, ili tu kinyang'anyiro maneno. 861 00:54:25,920 --> 00:54:28,130 Hivyo badala ya kuandika unaweza kuandika b, 862 00:54:28,130 --> 00:54:30,220 badala ya b unaweza kuandika c, 863 00:54:30,220 --> 00:54:32,140 badala ya c unaweza kuandika d, na kadhalika. 864 00:54:32,140 --> 00:54:34,360 Au unaweza kuja na tafsiri ya kisasa zaidi 865 00:54:34,360 --> 00:54:36,720 wa barua ya barua tofauti. 866 00:54:36,720 --> 00:54:39,740 Lakini catch ni mvulana au msichana ambaye wewe ni kutuma kumbuka hii 867 00:54:39,740 --> 00:54:45,020 mahitaji kujua kitu, ambayo ni nini, ni wazi? >> [Mwanafunzi] Nini wewe kutuma. 868 00:54:45,020 --> 00:54:49,720 Nini siri yako, kama kile ni kwamba kati ya ramani na b na c na d's. 869 00:54:49,720 --> 00:54:54,650 Je, ni kuongeza tu 1 kwa kila moja ya barua kwenda kwa kutoka b, b c? 870 00:54:54,650 --> 00:54:56,670 Je, ni ngumu zaidi kuliko hiyo? 871 00:54:56,670 --> 00:55:01,540 >> Hivyo wewe na kuponda yako haja ya kuwa na habari hii siri, 872 00:55:01,540 --> 00:55:03,190 lakini kuna aina ya samaki wanaovuliwa-22 hapa. 873 00:55:03,190 --> 00:55:06,830 Kama hii ni mara ya kwanza wewe ni kutuma barua hii upendo kwa njia ya darasa, 874 00:55:06,830 --> 00:55:10,720 jinsi ni kwamba kijana au msichana kwenda kujua nini siri hata ni? 875 00:55:10,720 --> 00:55:13,930 Hivyo siri-ufunguo crypto haina kutatua matatizo yote ya dunia, 876 00:55:13,930 --> 00:55:16,320 na kuna uhusiano kweli hapa kwamba tutaweza kurudi kuelekea mwisho wa muhula. 877 00:55:16,320 --> 00:55:25,110 Vile vile kufanya wengi wetu si kujua kwamba mtu anafanya kazi, kwa mfano, saa Amazon.com, 878 00:55:25,110 --> 00:55:28,190 na bado wengi wetu pengine kununuliwa stuff saa Amazon.com, 879 00:55:28,190 --> 00:55:31,990 na tumekuwa kufundishwa kwa kudhani kwamba haya mashirikiano ya e-commerce ni salama. 880 00:55:31,990 --> 00:55:36,470 URL pengine anasema https, kuna labda kidogo silly kufuli icon mahali fulani, 881 00:55:36,470 --> 00:55:39,930 kuna baadhi ya aina ya cryptography kupata kadi yako ya habari 882 00:55:39,930 --> 00:55:42,160 kati ya wewe na Amazon.com. 883 00:55:42,160 --> 00:55:45,430 Na bado kama cryptography inahusisha kujua baadhi ya siri 884 00:55:45,430 --> 00:55:48,620 na bado sijui mtu yeyote katika Amazon na nimekuwa hakika si mpangilio wa aina yoyote ya siri 885 00:55:48,620 --> 00:55:52,710 na mtu katika Amazon, jinsi ni kompyuta yangu au browser yangu kufanya hili? 886 00:55:52,710 --> 00:55:55,720 Ni zinageuka kuna aina nyingine ya cryptography kabisa kwamba kutatua tatizo. 887 00:55:55,720 --> 00:55:57,670 Lakini kwa leo, tutaweza kuzingatia moja rahisi 888 00:55:57,670 --> 00:56:00,290 ambapo unaweza kupanga mapema ili kujua baadhi ya siri 889 00:56:00,290 --> 00:56:03,760 kama 1 au baadhi ya ramani kati na b ya. 890 00:56:03,760 --> 00:56:05,840 Na mchakato wa cryptography ujumla unahusisha hii. 891 00:56:05,840 --> 00:56:08,620 Una baadhi Nakala wazi, taswira ya hapa kushoto, 892 00:56:08,620 --> 00:56:12,930 wewe kukimbia kupitia baadhi ya aina ya algorithm au utaratibu kwa ajili ya encrypting ni - 893 00:56:12,930 --> 00:56:15,100 labda kwamba tu inakuwa b, b inakuwa c - 894 00:56:15,100 --> 00:56:17,490 na kisha wewe kuishia na nakala ya siri. 895 00:56:17,490 --> 00:56:20,380 Wakati huo huo, mara kuponda yako inapata kumbuka hii siri, 896 00:56:20,380 --> 00:56:24,200 yeye au yeye ana kisha kuisimbua kwa ujumla kupunguza kwamba algorithm 897 00:56:24,200 --> 00:56:27,190 ili kupata nyuma Nakala wazi. 898 00:56:27,190 --> 00:56:28,960 Kuna incarnations ya kimwili ya hili. 899 00:56:28,960 --> 00:56:31,680 >> Kwa mfano, hii ni kidogo siri avkodare pete, 900 00:56:31,680 --> 00:56:35,110 na hii ni pete katika maana ya kwamba kuna wawili dials hapa. 901 00:56:35,110 --> 00:56:38,490 On pembezoni nje ya jambo hili, kuna barua kupitia Z, 902 00:56:38,490 --> 00:56:40,340 ingawa wao ni ili random, 903 00:56:40,340 --> 00:56:42,880 na juu ya ndani, kuna baadhi ya kweli idadi 904 00:56:42,880 --> 00:56:46,620 vile kwamba pamoja na pete hii unaweza aina ya kugeuka nje lakini si ndani ya 905 00:56:46,620 --> 00:56:49,140 ili yaendane idadi na barua. 906 00:56:49,140 --> 00:56:53,020 Kutoka movie inayoitwa Story Krismasi, utaona kwamba Ralphie kidogo 907 00:56:53,020 --> 00:56:58,000 alikuwa na shauku kubwa kufikiri nini Little Yatima Annie ujumbe wa siri ilikuwa kwake 908 00:56:58,000 --> 00:57:02,570 ambayo yamekuwa aliwasiliana, nadhani, katika mfumo wa ujumbe numeric juu ya sanduku nafaka 909 00:57:02,570 --> 00:57:07,220 na wewe alikuwa na kujilimbikiza kadi zote kidogo kwamba alikuja katika sanduku ya nafaka, 910 00:57:07,220 --> 00:57:09,770 alikuwa na barua yao katika, alikuwa na kupata nyuma siri avkodare pete 911 00:57:09,770 --> 00:57:13,910 hivyo kwamba unaweza hatimaye kufikiri nini ramani ni kati ya herufi na namba 912 00:57:13,910 --> 00:57:15,550 au barua na barua. 913 00:57:15,550 --> 00:57:19,520 Jinsi katika kompyuta tunaweza kwenda kuhusu kutekeleza au anayewakilisha mambo kama haya? 914 00:57:19,520 --> 00:57:22,560 Tunahitaji njia ya kuonyesha wenyewe zaidi kidogo smidigt 915 00:57:22,560 --> 00:57:25,080 kuliko vigezo yetu hivi sasa na kuruhusiwa. 916 00:57:25,080 --> 00:57:29,000 Tulikuwa ints, tumekuwa alikuwa chars, tumekuwa alikuwa ikifungwa DOUBLES na na wengine wachache, 917 00:57:29,000 --> 00:57:34,200 lakini wale ni vipande binafsi ya kumbukumbu kwamba si kweli kuruhusu sisi kueleza mambo 918 00:57:34,200 --> 00:57:36,440 kama maneno na sentensi na misemo. 919 00:57:36,440 --> 00:57:38,630 Hakika, tumekuwa aitwaye mambo kama hayo masharti, 920 00:57:38,630 --> 00:57:42,660 lakini sisi ahadi kwamba hii ni kweli tu kurahisisha katika maktaba CS50 921 00:57:42,660 --> 00:57:45,540 kwamba sisi ni wanaotaka peel nyuma. 922 00:57:45,540 --> 00:57:47,500 Na hivyo hebu kuanza kufanya hivyo hapa. 923 00:57:47,500 --> 00:57:49,840 Hebu kwenda mbele na kufungua faili - 924 00:57:49,840 --> 00:57:54,100 wote wa files hizi zinapatikana, kama kawaida, online - inayoitwa array.c 925 00:57:54,100 --> 00:57:58,960 kutatua tatizo lisilohusiana na masharti lakini kwamba inajenga picha hapa 926 00:57:58,960 --> 00:58:01,520 wa jinsi sisi inaweza kutumia kitu kinachoitwa safu. 927 00:58:01,520 --> 00:58:04,050 >> safu ni aina data. 928 00:58:04,050 --> 00:58:10,730 Ni aina ya kutofautiana wa aina yake kuwa ina aina nyingi data ndogo ndani yake 929 00:58:10,730 --> 00:58:12,680 nyuma kwa nyuma kwa nyuma kwa nyuma. 930 00:58:12,680 --> 00:58:16,980 Hivyo kwa mfano, kama sisi alitaka kuandika mpango kidogo kwamba anatoa Jaribio yako wastani 931 00:58:16,980 --> 00:58:19,780 kwa ajili ya kozi kama 50 ambayo ina 2 Quizzes, 932 00:58:19,780 --> 00:58:23,450 unaweza kwa urahisi sana kuandika mpango huu msingi hata kwenye baadhi ya nyenzo ya wiki iliyopita 933 00:58:23,450 --> 00:58:28,830 kwa kutumia GetInt na wanandoa wa vigezo: int quiz1, int quiz2. 934 00:58:28,830 --> 00:58:30,550 Na ni pretty moja kwa moja. 935 00:58:30,550 --> 00:58:33,500 Ni labda 10, 20 mstari wa kanuni max ya kutekeleza mpango wa 936 00:58:33,500 --> 00:58:38,940 kwamba anauliza mtumiaji kwa alama Jaribio 2 na kisha computes wastani yao 937 00:58:38,940 --> 00:58:42,020 na kuongeza yao pamoja, kugawa na 2, na kisha kuchapisha matokeo. 938 00:58:42,020 --> 00:58:46,400 Sisi inaweza pengine kufanya hivyo pretty urahisi sasa baada ya baadhi ya idadi ya dakika. 939 00:58:46,400 --> 00:58:49,450 Lakini tatizo ni kwamba tuseme kwamba alikuwa na 50 3 Quizzes au 4. 940 00:58:49,450 --> 00:58:52,830 Tuseme kwamba ulitaka kutumia mpango huo kwa ajili ya darasa kwamba alikuwa na kila wiki Quizzes. 941 00:58:52,830 --> 00:58:55,100 Fikiria juu ya darasa kwamba ina kila wiki Quizzes. 942 00:58:55,100 --> 00:58:58,840 Kama kuna 16 au hivyo wiki katika muhula, sasa una vigezo 16: 943 00:58:58,840 --> 00:59:03,030 int quiz1, int quiz2, int quiz3, int quiz4. 944 00:59:03,030 --> 00:59:06,870 Haraka kama wewe kuanza kuona hii redundancy, hii kuiga na pasting ya kificho, 945 00:59:06,870 --> 00:59:09,810 ni lazima kuanza kufanya unataka kulikuwa njia bora zaidi. 946 00:59:09,810 --> 00:59:13,610 Na nashiriki, kwa sababu ya arrays kuna. Basi hebu kufanya hili. 947 00:59:13,610 --> 00:59:16,700 Kwanza, napenda kuanzisha kitu rahisi sana kwamba tumekuwa si kutumika hivi sasa, 948 00:59:16,700 --> 00:59:18,820 lakini utaona ni mara kwa mara katika code. 949 00:59:18,820 --> 00:59:21,270 >> Hii ni nini ujumla huitwa mara kwa mara. 950 00:59:21,270 --> 00:59:24,410 Hivyo ni mara kwa mara katika maana ya kwamba thamani hii kamwe mabadiliko. 951 00:59:24,410 --> 00:59:26,450 mkataba wa binadamu wakati wa kujenga mara kwa mara 952 00:59:26,450 --> 00:59:30,420 ni kutumia barua zote mtaji ili tu kwamba ni kweli anasimama nje katika code yako, 953 00:59:30,420 --> 00:59:34,270 na Keyword maalum kwamba matumizi katika C ni # define. 954 00:59:34,270 --> 00:59:39,970 Hivyo tunasema # define, basi nafasi, basi neno kwamba unataka kutumia kwa ajili ya jina mara kwa mara ya 955 00:59:39,970 --> 00:59:41,730 na kisha thamani ya mara kwa mara. 956 00:59:41,730 --> 00:59:44,710 Taarifa hii ni tofauti na assigning kitu kutofautiana. 957 00:59:44,710 --> 00:59:46,430 Hakuna sawa saini, kuna semicolon hakuna. 958 00:59:46,430 --> 00:59:49,140 Hii ni nini ujumla inayojulikana kama agizo preprocessor, 959 00:59:49,140 --> 00:59:50,840 lakini zaidi juu ya kwamba wakati mwingine. 960 00:59:50,840 --> 00:59:56,350 Kwa sasa, hii inajenga thamani isiyobadilika kuitwa Quizzes 961 00:59:56,350 --> 00:59:58,290 ambaye halisi thamani numeric ni 2. 962 00:59:58,290 --> 01:00:02,180 Hivyo unaweza kuona mahali popote Quizzes, Quizzes, Quizzes katika faili hili, 963 01:00:02,180 --> 01:00:04,230 kwamba tu idadi 2. 964 01:00:04,230 --> 01:00:06,550 Kama mimi kuangalia kuu sasa, hebu angalia jinsi hii matendo. 965 01:00:06,550 --> 01:00:09,770 Kwanza inaonekana kidogo cryptic, lakini ni mambo yote kutoka wiki 1. 966 01:00:09,770 --> 01:00:12,210 Uliza mtumiaji kwa ajili ya darasa. Tutafanyaje hili? 967 01:00:12,210 --> 01:00:17,350 Katika mstari 22 - hii ni kweli sehemu Juicy - mimi kutangaza kuelea 968 01:00:17,350 --> 01:00:23,240 lakini si tu kuelea moja. Mimi kutangaza, badala yake, safu ya maadili yaliyo-uhakika. 969 01:00:23,240 --> 01:00:27,700 Hiyo variable ni kwenda kuitwa darasa, kama alisema hapa, 970 01:00:27,700 --> 01:00:31,420 lakini kipande tu ya syntax mpya basi ni haya mabano mraba. 971 01:00:31,420 --> 01:00:37,280 ukweli kwamba nilivyosema darasa kuelea na kisha bracket wazi na kisha idadi - 972 01:00:37,280 --> 01:00:40,980 taarifa kama hii ni mara kwa mara hii tu kama sisi gani huu - 973 01:00:40,980 --> 01:00:46,840 hii ina maana, "Hey kompyuta, nipe ikifungwa 2 na hebu pamoja kuwaita darasa." 974 01:00:46,840 --> 01:00:51,780 >> Hii ni tofauti na mchakato mengi zaidi tedious kama hii: kuelea grade1; 975 01:00:51,780 --> 01:00:54,580 kuelea grade2; na kadhalika. 976 01:00:54,580 --> 01:00:58,310 Hivyo safu inaruhusu sisi kutekeleza wazo hili lakini kiasi kidogo messily, 977 01:00:58,310 --> 01:01:04,560 katika namna ambayo tunaweza kuandika 1 mstari wa kanuni badala ya, kusema, 16 kwa muhula 16-wiki. 978 01:01:04,560 --> 01:01:09,060 Mimi sitaki ngumu-code 2 kwa sababu kama wewe kufikiri juu ya hili sasa mantiki, 979 01:01:09,060 --> 01:01:12,560 tuseme mwaka ujao CS50 mabadiliko ya 3 Quizzes badala 980 01:01:12,560 --> 01:01:15,010 na mimi alikuwa na idadi 2 hapa, mimi alikuwa na idadi 2 hapa, 981 01:01:15,010 --> 01:01:17,210 Mimi nilikuwa na idadi 2 hapa, idadi 2 hapa. 982 01:01:17,210 --> 01:01:19,890 Inakuwa tedious sana na rahisi sana screw up 983 01:01:19,890 --> 01:01:26,550 na kwa ajali kubadilisha 1 thamani kwa 3 na miss baadhi thamani nyingine ya 2. 984 01:01:26,550 --> 01:01:30,660 Hivyo nina kwenda kwa badala abstract hii mbali na kutumia hii mara kwa mara kwamba, 985 01:01:30,660 --> 01:01:32,520 kama jina lake anapendekeza, kamwe mabadiliko. 986 01:01:32,520 --> 01:01:35,870 Na sasa bila kujali kama tuna tofauti Quizzes mwaka huu au ujao, 987 01:01:35,870 --> 01:01:39,380 Mimi tu mabadiliko hayo katika sehemu moja hadi hapa juu. 988 01:01:39,380 --> 01:01:41,230 Basi hiyo ni ya mara kwa mara zote ni. 989 01:01:41,230 --> 01:01:47,100 Wakati huo huo, kipengele mpya conceptual ni ile ya safu. 990 01:01:47,100 --> 01:01:55,030 Hivyo mabano mraba nipe ikifungwa hii wengi na lets mimi pamoja kuwaita darasa hapa. 991 01:01:55,030 --> 01:01:56,720 Hivyo sasa hebu angalia nini mimi kwenda kufanya. 992 01:01:56,720 --> 01:01:59,220 Hapa katika mstari 24 ni mwanzo wa kwa kitanzi. 993 01:01:59,220 --> 01:02:03,380 >> Hii ni kitu kweli dhana. Ni tu kwa kutumia Quizzes badala ya idadi ngumu-coded. 994 01:02:03,380 --> 01:02:06,740 Lakini kuna kitu kielimu tofauti huko kutoka wiki iliyopita. 995 01:02:06,740 --> 01:02:11,650 Hii ni printf, hivyo printf ("Quiz #% d ya% d:") 996 01:02:11,650 --> 01:02:16,670 kwa sababu mimi nataka tu magazeti nje nipe Quiz namba 1 ya 2 na kisha 2 ya 2. 997 01:02:16,670 --> 01:02:18,480 Hivyo hii ni kitu rena estetiska. 998 01:02:18,480 --> 01:02:21,000 Lakini sehemu ya kuvutia sasa ni katika mstari wa 27. 999 01:02:21,000 --> 01:02:27,840 Ili kujaza katika moja ya placeholders mbili na thamani yaliyo-uhakika, 1000 01:02:27,840 --> 01:02:29,640 wewe tena kutumia mabano mraba. 1001 01:02:29,640 --> 01:02:35,170 Katika kesi hiyo, mimi nina kutumia i kwa sababu hii kwa kitanzi imeanza na i sawa na thamani gani, inaonekana? 1002 01:02:35,170 --> 01:02:36,670 [Mwanafunzi] 0. >> [Malan] 0. 1003 01:02:36,670 --> 01:02:40,990 Kadhalika iteration kwanza ya kitanzi hii, ni kama ingawa niliandika hii katika kanuni, 1004 01:02:40,990 --> 01:02:46,310 lakini juu ya iteration pili ya kitanzi hii, ni kama ingawa niliandika hii katika code yangu. 1005 01:02:46,310 --> 01:02:49,970 Lakini ukweli kwamba mimi nina kutumia kutofautiana ni kamili kwa sababu, kama jina linavyosema, 1006 01:02:49,970 --> 01:02:52,600 ni tofauti na thamani yake juu ya kila iteration, 1007 01:02:52,600 --> 01:02:55,900 hivyo mimi nina kujaza hii safu moja doa kwa wakati. 1008 01:02:55,900 --> 01:02:57,380 Je safu hii kuangalia kama? 1009 01:02:57,380 --> 01:03:01,570 sababu nilitoa super rahisi Mstatili juu ya screen hapa kabla ilikuwa kwa sababu hiyo. 1010 01:03:01,570 --> 01:03:05,590 safu ni tu chunk ya kumbukumbu na kufuatiwa na mwingine chunk ya kumbukumbu 1011 01:03:05,590 --> 01:03:08,570 kufuatiwa na mwingine chunk ya kumbukumbu na kadhalika. 1012 01:03:08,570 --> 01:03:13,120 Hivyo kama safu yangu ni ya kawaida 2 katika kesi hii hapa, wote mimi itakuwa kufanya 1013 01:03:13,120 --> 01:03:20,200 na kuandika katika alama yangu Jaribio kama hapa - I got 100 juu ya hili na kisha mimi got 99 juu ya hili - 1014 01:03:20,200 --> 01:03:24,970 kisha kumbukumbu hii inaweza hata kutumika kwa sababu nimekuwa tu aliuliza kompyuta 1015 01:03:24,970 --> 01:03:26,840 kwa safu ya ukubwa 2. 1016 01:03:26,840 --> 01:03:28,600 Wale mraba bado kuna, haki? 1017 01:03:28,600 --> 01:03:32,670 Bado una 2 gigabytes ya RAM hata kama wewe ni tu kuuliza kwa ikifungwa 2. 1018 01:03:32,670 --> 01:03:36,840 Hivyo wazo nyuma ya arrays ni kwamba kompyuta tu huchukua chunk ya kumbukumbu 1019 01:03:36,840 --> 01:03:41,340 na kisha apportions vipande vidogo nyuma kwa nyuma kwa nyuma kwa nyuma. 1020 01:03:41,340 --> 01:03:43,310 Na hivyo ndiyo safu yote ni. 1021 01:03:43,310 --> 01:03:47,350 >> Ni chunk contiguous ya ndani ya kumbukumbu ya ambayo unaweza kuweka mambo. 1022 01:03:47,350 --> 01:03:50,700 Hii hufanyika kisha kufanya baadhi tu arithmetic boring. 1023 01:03:50,700 --> 01:03:54,640 Kama mimi kitabu chini hapa, hii ni pale ambapo mimi basi iterate juu ya safu. 1024 01:03:54,640 --> 01:03:58,020 Mimi kuja na summation ya yote ya maadili katika safu, 1025 01:03:58,020 --> 01:04:02,470 na kisha mimi kutumia kazi pande zote hapa kwa kweli kufanya Jumla kugawanywa na Quizzes. 1026 01:04:02,470 --> 01:04:06,320 Lakini ngoja kupitisha mkono wangu kwamba kama aina ya hesabu za kutosha kwa sasa. 1027 01:04:06,320 --> 01:04:08,370 Lakini yote anafanya kwa ajili yangu hatimaye ni kompyuta wastani. 1028 01:04:08,370 --> 01:04:13,580 Hivyo kwanza Jaribio plus Jaribio pili kugawanywa na 2 na kisha kuchapisha nje kama int. 1029 01:04:13,580 --> 01:04:17,280 Lakini hebu sasa ya mpito kwa mfano tofauti inayoitwa string1, 1030 01:04:17,280 --> 01:04:20,700 ambayo inajenga picha sawa lakini masharti ya kutumia. 1031 01:04:20,700 --> 01:04:23,940 Hebu kwenda mbele na kurahisisha hii kwa muda tu. 1032 01:04:23,940 --> 01:04:27,090 Tughufirie indentation kwa sasa. 1033 01:04:27,090 --> 01:04:30,870 Tangazo katika mstari 19 ya mfano huu, mimi kupata kamba kutoka kwa mtumiaji. 1034 01:04:30,870 --> 01:04:34,640 Lakini taarifa nini mimi ijayo kufanya katika mistari 22 na kuendelea. 1035 01:04:34,640 --> 01:04:41,250 Mimi kwa kweli iterating kutoka i hadi - na hii ni hila mpya - strlen, kamba urefu. 1036 01:04:41,250 --> 01:04:44,880 Hii ni kazi ambayo inakuja na C kwamba kama wewe kupita kamba, 1037 01:04:44,880 --> 01:04:47,730 ni anaelezea jinsi wengi wahusika ni katika kamba hiyo. Hayo ni yote. 1038 01:04:47,730 --> 01:04:51,550 Na ukweli kwamba ni strlen badala ya urefu wa kamba ni kwa sababu tu ni zaidi succinct. 1039 01:04:51,550 --> 01:04:55,100 Miaka thelathini iliyopita, watu walipenda kuandika mambo kama succinctly kama inawezekana, 1040 01:04:55,100 --> 01:04:57,630 hivyo tumekuwa agizo hilo mkataba hapa. 1041 01:04:57,630 --> 01:05:00,660 i + + tu ina maana increment i katika kila iteration. 1042 01:05:00,660 --> 01:05:02,990 Na sasa taarifa hii, ambayo ni kweli kuvutia. 1043 01:05:02,990 --> 01:05:09,180 Katika mstari 24, nasema, "Kompyuta, nipe tabia, bits 8, na simu yake c." 1044 01:05:09,180 --> 01:05:12,630 Lakini ni nini hii upande wa kulia akisema? 1045 01:05:13,490 --> 01:05:16,530 Kwa Kiingereza, ni nini kwamba kuwakilisha? 1046 01:05:16,530 --> 01:05:18,730 [Mwanafunzi] tabia ya kwanza katika safu. 1047 01:05:18,730 --> 01:05:20,790 Hasa. Nipe tabia ya kwanza katika safu. 1048 01:05:20,790 --> 01:05:24,090 Au, kwa ujumla zaidi, nipe tabia idh katika safu. 1049 01:05:24,090 --> 01:05:26,100 Na kutambua ni muhimu sasa kwamba kama kompyuta wanasayansi, 1050 01:05:26,100 --> 01:05:27,890 sisi ni kweli kuhesabu toka 0. 1051 01:05:27,890 --> 01:05:29,720 >> Huna busara sasa kuanza kufanya hili. 1052 01:05:29,720 --> 01:05:34,160 Sasa una kuishi kwa mujibu wa matarajio ya kompyuta na kuhesabu kutoka 0 1053 01:05:34,160 --> 01:05:38,180 kwa sababu [0] ni kwenda kuwa tabia ya kwanza katika kamba, 1054 01:05:38,180 --> 01:05:42,150 [1] ni kwenda kuwa ya pili, [2] ni kwenda kuwa ya tatu, na kadhalika. 1055 01:05:42,150 --> 01:05:49,720 Hivyo mpango huu, ikiwa mimi kukusanya kuwa, hii ni tena string1, hivyo kufanya string1, 1056 01:05:49,720 --> 01:05:54,670 na sasa nimekuwa kukimbia string1 katika terminal dirisha yangu. 1057 01:05:54,670 --> 01:05:58,330 Ni kusubiri kwa ajili ya pembejeo, hivyo mimi nina kwenda aina katika Daudi, Ingieni, 1058 01:05:58,330 --> 01:06:02,540 na sasa Prints Daudi wote juu ya mistari tofauti kwa sababu taarifa nini mimi kufanya. 1059 01:06:02,540 --> 01:06:05,820 Mimi nina uchapishaji moja tabia kwa wakati. 1060 01:06:05,820 --> 01:06:10,100 Sisi si kuingia kwa undani juu ya leo hii, lakini mimi ilifutwa wakati iliyopita hundi hii hapa. 1061 01:06:10,100 --> 01:06:15,480 Ni zinageuka kuwa kama mtumiaji ni misbehaving, adversarial, au kuchanganyikiwa tu, 1062 01:06:15,480 --> 01:06:20,210 unaweza kweli kushindwa kutoa kamba ya urefu fulani. 1063 01:06:20,210 --> 01:06:22,860 Kama hit muhimu vibaya kwenye keyboard, unaweza kutoa hakuna kamba wakati wote, 1064 01:06:22,860 --> 01:06:26,950 au kama wewe ni malicious, unaweza kujaribu kuweka katika thamani ya gigabyte ya insha 1065 01:06:26,950 --> 01:06:29,290 kujaza hii kamba, na kama kompyuta anaendesha nje ya kumbukumbu, 1066 01:06:29,290 --> 01:06:32,710 zinageuka kuwa sisi ni kwenda kupata nyuma thamani hii maalum iitwayo null. 1067 01:06:32,710 --> 01:06:35,580 Hivyo kwa sasa, tu kujua kwamba kuna thamani hii maalum iitwayo null 1068 01:06:35,580 --> 01:06:39,580 ambayo itaruhusu sisi kuangalia wakati tuko nje ya kumbukumbu, miongoni mwa mambo mengine. 1069 01:06:39,580 --> 01:06:45,630 Lakini kama mimi kufungua sasa string2, taarifa moja tofauti hapa. 1070 01:06:45,630 --> 01:06:48,210 Notice moja tofauti hapa na string2. 1071 01:06:48,210 --> 01:06:51,340 Kwa string2, hii kwa kitanzi ni tofauti kidogo. 1072 01:06:51,340 --> 01:06:55,010 >> Hebu kufuta NULLs ili tuweze kuzungumza kuhusu wale wakati mwingine. 1073 01:06:55,010 --> 01:06:57,800 Nini tofauti kuhusu kwa kitanzi wakati huu? 1074 01:06:59,620 --> 01:07:01,670 Siwezi kurudi mfano uliopita. 1075 01:07:01,670 --> 01:07:08,580 Basi hiyo ni toleo 2, hili ni toleo 1. 1, 2. 1076 01:07:08,580 --> 01:07:11,980 1, 2. 1077 01:07:13,520 --> 01:07:16,660 wito strlen ni wapi? 1078 01:07:16,660 --> 01:07:18,860 Ni katika sehemu ya kwanza ya kwa kitanzi. 1079 01:07:18,860 --> 01:07:21,830 Mawazo yoyote kama kwa nini mimi kufanya hili? Yeah. 1080 01:07:21,830 --> 01:07:24,560 [Mwanafunzi] Hivyo huna piga kazi kila wakati. 1081 01:07:24,560 --> 01:07:26,440 [Malan] Basi sisi wala kuwaita kazi kila wakati. Hasa. 1082 01:07:26,440 --> 01:07:28,300 Kumbuka kutoka kwa matanzi kwamba wao ni super rahisi 1083 01:07:28,300 --> 01:07:31,770 mara moja aina ya kuelewa kwamba hii ni initialization, hali, na update. 1084 01:07:31,770 --> 01:07:34,750 Tatizo ni kwamba hali hufanyika kwenye kila iteration ya kitanzi. 1085 01:07:34,750 --> 01:07:40,010 Na hivyo katika mfano huu hapa, ni nini mbaya kuhusu ukweli kwamba huu ni hali yangu? 1086 01:07:40,010 --> 01:07:41,830 [Mwanafunzi] Wewe wito strlen. 1087 01:07:41,830 --> 01:07:44,340 [Malan] Wewe wito strlen tena na tena na tena. 1088 01:07:44,340 --> 01:07:47,410 Lakini mara nimekuwa typed katika Daudi, urefu wa kamba kwamba ni 5, 1089 01:07:47,410 --> 01:07:49,650 na si kwenda na mabadiliko juu ya kila iteration ya kitanzi 1090 01:07:49,650 --> 01:07:51,670 kwa sababu kamba bado ni D-a-v-i-d. 1091 01:07:51,670 --> 01:07:55,320 Hivyo hii ni ladha katika nini kinaendelea kuwa wazo la muhimu 1092 01:07:55,320 --> 01:08:00,410 inayojulikana kama uamuzi kubuni ambapo si tu kufanya kompyuta kufanya kazi ya lazima. 1093 01:08:00,410 --> 01:08:03,920 >> Tu kama sneak preview ya pset2, pset2 katika toleo la kawaida 1094 01:08:03,920 --> 01:08:07,030 ni kwenda changamoto kweli kutekeleza baadhi ya idadi ya ciphers, 1095 01:08:07,030 --> 01:08:10,410 baadhi ya idadi ya algorithms kuficha, ili unaweza wote encrypt 1096 01:08:10,410 --> 01:08:13,840 na ujumbe siri decrypt kiasi kama Ralphie moja huko Decoded. 1097 01:08:13,840 --> 01:08:16,810 Katika toleo la hacker ya pset2, tunakwenda kwenda kidogo zaidi. 1098 01:08:16,810 --> 01:08:19,649 Sisi ni kwenda mkono wewe faili kutoka mfumo halisi wa kompyuta 1099 01:08:19,649 --> 01:08:23,479 kwamba ina rundo zima la usernames na halisi nywila encrypted, 1100 01:08:23,479 --> 01:08:26,939 na changamoto kwa ajili ya toleo hacker ni kwenda kuwa kwa kuvunja nywila wale 1101 01:08:26,939 --> 01:08:33,200 na kufikiri nini cryptography au nini siri ilitumika kweli kuzalisha nywila hizo. 1102 01:08:33,200 --> 01:08:36,109 Na sisi ni kwenda kufanya hivyo kwa kutumia kipengele mpya hapa ya C 1103 01:08:36,109 --> 01:08:40,630 kwamba mimi nitakupa tu demo ya inajulikana kama hoja amri-line. 1104 01:08:40,630 --> 01:08:44,229 Ni zinageuka, kama baadhi ya unaweza tumeona katika sehemu au katika vitabu, 1105 01:08:44,229 --> 01:08:48,260 kuu haina daima kuwa utupu katika mabano. 1106 01:08:48,260 --> 01:08:52,430 Ni zinageuka kuwa kuu pia inaweza kuandikwa kama hii, kwa hoja mbili, 1107 01:08:52,430 --> 01:08:56,870 argc na argv, ambapo argc ni idadi ya maneno 1108 01:08:56,870 --> 01:09:00,020 kwamba unapoandika jina baada ya mpango juu ya mstari amri yako 1109 01:09:00,020 --> 01:09:03,420 na argv ni maneno halisi. 1110 01:09:03,420 --> 01:09:07,540 Na kama mabano mraba kuna kupendekeza, argv ni inaonekana safu. 1111 01:09:07,540 --> 01:09:12,210 Ni kwenda kuwa string baada ya kamba baada ya kamba katika kumbukumbu. 1112 01:09:12,210 --> 01:09:16,010 >> Basi nini tunakwenda kuwa na uwezo wa kufanya kwa kuanzia na pset 2 ni kitu kama hiki. 1113 01:09:16,010 --> 01:09:21,350 Kama mimi kufanya argv1, ambayo ni mfano tutaweza kurudi Jumatatu, na kukimbia, 1114 01:09:21,350 --> 01:09:23,370 taarifa kwamba haionekani kufanya chochote bado. 1115 01:09:23,370 --> 01:09:25,490 Ni tu Prints nje ya jina lake mwenyewe. 1116 01:09:25,490 --> 01:09:31,479 Lakini kama mimi kusema kwaheri darasa, taarifa kwamba mpango huu inaonekana iterates 1117 01:09:31,479 --> 01:09:35,479 juu ya kila moja ya maneno kwamba walikuwa typed katika haraka. 1118 01:09:35,479 --> 01:09:41,630 Na njia ambayo sisi kupata maneno ya kwamba mtumiaji typed katika kuchochea 1119 01:09:41,630 --> 01:09:49,160 ni kwa kubadilisha kuu kuanzia mwishoni mwa wiki hii kutoka int kuu (utupu) kwa int kuu (argc, argv) 1120 01:09:49,160 --> 01:09:52,050 na hivyo kuzaliwa hoja amri-line. 1121 01:09:52,050 --> 01:09:57,100 Na mara moja kupata kweli kisasa katika hili, wewe utakuwa na uwezo wa kuandika mipango kweli trippy 1122 01:09:57,100 --> 01:09:59,610 kama hii moja hapa, ambayo inakwenda juu na zaidi ya 1123 01:09:59,610 --> 01:10:03,940 baadhi ya utendaji tumefanya hivi sasa lakini yote kabisa nguvu. 1124 01:10:03,940 --> 01:10:08,950 >> Hivyo tutaweza kuondoka na hii kwenye screen, na sisi kuona juu ya Jumatatu. 1125 01:10:17,570 --> 01:10:20,000 >> [CS50.TV]