1 00:00:00,000 --> 00:00:10,550 2 00:00:10,550 --> 00:00:14,050 >> DAVID J. Malan: Hii ni CS50 na huu ni mwanzo wa wiki nne. 3 00:00:14,050 --> 00:00:18,630 Na, kijana, ni Volkswagen katika matatizo yote kwa sababu ya programu. 4 00:00:18,630 --> 00:00:20,264 Hebu tuangalie. 5 00:00:20,264 --> 00:00:20,930 [VIDEO avspelning] 6 00:00:20,930 --> 00:00:25,560 -Cars, Wahusika smartest katika haraka na hasira sinema. 7 00:00:25,560 --> 00:00:29,100 Wiki hii German automaker Volkswagen kupatikana yenyewe 8 00:00:29,100 --> 00:00:32,490 katikati ya kashfa ya idadi uwezekano jinai. 9 00:00:32,490 --> 00:00:36,060 >> -Volkswagen Ni bracing kwa mabilioni katika faini, inawezekana mashtaka ya jinai 10 00:00:36,060 --> 00:00:38,560 kwa watendaji wake, kama kampuni msamaha 11 00:00:38,560 --> 00:00:41,840 kwa wizi wa magari milioni 11 kwa kusaidia kuwapiga vipimo uzalishaji. 12 00:00:41,840 --> 00:00:44,950 >> Mifano -Certain dizeli walikuwa iliyoundwa na programu ya kisasa 13 00:00:44,950 --> 00:00:48,440 kwamba taarifa used ikiwa ni pamoja na msimamo wa uendeshaji na gari 14 00:00:48,440 --> 00:00:51,870 kasi ya kuamua gari ilikuwa wanaendelea na uzalishaji wa kupima. 15 00:00:51,870 --> 00:00:55,650 Chini ya hali hiyo, injini ingekuwa kupunguza uzalishaji sumu. 16 00:00:55,650 --> 00:00:59,070 Lakini gari ilikuwa wizi wa kura kwa bypass kwamba wakati ilikuwa inaendeshwa. 17 00:00:59,070 --> 00:01:03,320 Uzalishaji kuongezeka 10-40 mara juu kukubalika ngazi EPA. 18 00:01:03,320 --> 00:01:04,280 >> [Mwisho avspelning] 19 00:01:04,280 --> 00:01:05,220 >> DAVID J. Malan: Hivyo hebu tuangalie hii 20 00:01:05,220 --> 00:01:07,250 na kuona jinsi gani hii inaweza kutekelezwa 21 00:01:07,250 --> 00:01:09,680 na jinsi hii inaweza kuathiri magari mengi kama hii. 22 00:01:09,680 --> 00:01:12,840 Hivyo katika mkono wangu hapa ni vyombo vya habari kutolewa kwamba ilitolewa na EPA-- 23 00:01:12,840 --> 00:01:14,620 Mazingira Shirika la Kulinda ambayo 24 00:01:14,620 --> 00:01:18,032 ni Marekani udhibiti elimu kwamba kinafanya masuala ya mazingira, 25 00:01:18,032 --> 00:01:19,740 na kisha halisi ilani ya kisheria ambayo ilikuwa 26 00:01:19,740 --> 00:01:22,420 kutuma kwa Volkswagen siku chache tu zilizopita. 27 00:01:22,420 --> 00:01:26,530 >> Hivyo EPA anaandika, na discloses sasa hadharani, programu ya kisasa 28 00:01:26,530 --> 00:01:29,390 algorithm juu ya baadhi ya Magari Volkswagen hutambua 29 00:01:29,390 --> 00:01:32,630 wakati gari ni ya kufanyiwa uzalishaji rasmi kupima 30 00:01:32,630 --> 00:01:36,505 na anarudi uzalishaji kamili udhibiti juu ya tu wakati wa mtihani. 31 00:01:36,505 --> 00:01:38,380 Ufanisi wa magari hayo uchafuzi 32 00:01:38,380 --> 00:01:43,260 vifaa kudhibiti uzalishaji ni kiasi kikubwa kupunguzwa wakati wa kuendesha gari zote kawaida 33 00:01:43,260 --> 00:01:44,320 hali. 34 00:01:44,320 --> 00:01:48,190 Hii matokeo katika magari ambayo kukidhi viwango katika maabara au kupima 35 00:01:48,190 --> 00:01:52,790 kituo, lakini wakati wa operesheni ya kawaida emit nitrojeni oxides-- au NOx-- 36 00:01:52,790 --> 00:01:54,950 mara hadi 40 ya kiwango. 37 00:01:54,950 --> 00:01:58,220 Programu zinazozalishwa na Volkswagen ni kifaa quote unquote, kushindwa, 38 00:01:58,220 --> 00:02:00,650 kama inavyoelezwa na Safi Air Sheria nchini Marekani. 39 00:02:00,650 --> 00:02:03,410 >> Wao kwenda kusema kwamba EPA na wakala mwingine 40 00:02:03,410 --> 00:02:07,020 wazi kifaa kushindwa programu baada ya uchambuzi huru 41 00:02:07,020 --> 00:02:09,660 na watafiti katika West Virginia Chuo Kikuu. 42 00:02:09,660 --> 00:02:14,160 Nox uchafuzi inachangia oksidi kaboni, ngazi ya chini ozoni, 43 00:02:14,160 --> 00:02:15,700 na faini chembechembe jambo. 44 00:02:15,700 --> 00:02:18,090 Yatokanayo na hayo uchafuzi amekuwa akihusishwa 45 00:02:18,090 --> 00:02:20,870 na mbalimbali ya madhara makubwa ya afya, 46 00:02:20,870 --> 00:02:23,637 ikiwa ni pamoja na kuongezeka kwa pumu mashambulizi na kupumua mengine 47 00:02:23,637 --> 00:02:26,470 magonjwa ambayo inaweza kuwa kubwa ya kutosha kupeleka watu kwenda hospitali. 48 00:02:26,470 --> 00:02:28,660 Yatokanayo na ozoni na chembechembe jambo ina pia 49 00:02:28,660 --> 00:02:31,960 wamekuwa yanayohusiana na mapema kifo kutokana na kupumua kuhusiana na 50 00:02:31,960 --> 00:02:35,690 au moyo kuhusiana na madhara. 51 00:02:35,690 --> 00:02:38,940 Watoto, wazee, watu wenye ugonjwa preexisting kupumua 52 00:02:38,940 --> 00:02:42,840 ni hasa katika hatari kwa madhara ya afya ya uchafuzi haya. 53 00:02:42,840 --> 00:02:45,056 >> Inatosha ni kusema, ni kubwa kabisa. 54 00:02:45,056 --> 00:02:46,930 Na twende juu ya kusoma moja tu zaidi Excerpt 55 00:02:46,930 --> 00:02:49,370 na kisha tutaweza kuchukua kuangalia athari za msingi 56 00:02:49,370 --> 00:02:50,920 haya katika mazingira ya gari. 57 00:02:50,920 --> 00:02:53,730 Hasa, Volkswagen viwandani na imewekwa 58 00:02:53,730 --> 00:02:56,210 programu katika kile kinachoitwa udhibiti wa umeme 59 00:02:56,210 --> 00:02:59,320 module-- au ECM-- ya magari hayo kuwa nilihisi 60 00:02:59,320 --> 00:03:03,580 wakati gari mara kuwa kupimwa kwa kufuata viwango vya EPA chafu. 61 00:03:03,580 --> 00:03:07,510 Kulingana na pembejeo mbalimbali ikiwa ni pamoja msimamo wa usukani, gari 62 00:03:07,510 --> 00:03:11,280 kasi, muda wa injini ya operesheni, na shinikizo barometric, 63 00:03:11,280 --> 00:03:13,720 pembejeo hizi kwa usahihi kupatikana vigezo 64 00:03:13,720 --> 00:03:17,600 ya shirikisho mtihani utaratibu kutumika kwa ajili ya kupima chafu kwa vyeti EPA 65 00:03:17,600 --> 00:03:18,400 makusudi. 66 00:03:18,400 --> 00:03:21,850 >> Wakati chafu kupima EPA, programu magari ECM 67 00:03:21,850 --> 00:03:25,060 mbio programu ambayo zinazozalishwa kulaumu uzalishaji matokeo. 68 00:03:25,060 --> 00:03:28,340 Wakati mwingine wote, gari ECM programu 69 00:03:28,340 --> 00:03:31,090 mbio barabara tofauti calibration hivyo kupunguza 70 00:03:31,090 --> 00:03:34,360 ufanisi wa ujumla mfumo wa kudhibiti chafu, 71 00:03:34,360 --> 00:03:37,864 hasa kichocheo kuwachagua kupunguza Nox Lean trap-- 72 00:03:37,864 --> 00:03:39,280 ambayo tutaweza kuona kuhusu katika wakati huu. 73 00:03:39,280 --> 00:03:43,040 Matokeo yake, uzalishaji wa Nox iliongezeka kwa sababu ya nyakati 10-40 74 00:03:43,040 --> 00:03:47,450 juu ya viwango vya EPA inavyotakikana kulingana na aina ya gari mzunguko. 75 00:03:47,450 --> 00:03:50,800 >> Kwa hiyo kile kweli hii ina maana, na chanzo kanuni kwa programu mbio 76 00:03:50,800 --> 00:03:53,190 juu ya Volkswagen ina si bado wazi kwa umma, 77 00:03:53,190 --> 00:03:56,460 ni kwamba, kwa ufanisi, hii sawa ni pale mahali fulani ndani 78 00:03:56,460 --> 00:03:57,830 ya Volkswagen ya kificho. 79 00:03:57,830 --> 00:04:02,200 Kama wewe ni kuwa majaribio, na kama gari hutambua mambo fulani ya mazingira 80 00:04:02,200 --> 00:04:04,330 kama usukani msimamo au harakati 81 00:04:04,330 --> 00:04:06,710 au ukosefu wake wa gari au idadi yoyote ya mambo mengine 82 00:04:06,710 --> 00:04:09,940 ambayo kwa sasa kinadharia kuwa sehemu ya utaratibu huu, 83 00:04:09,940 --> 00:04:12,370 wao tu kurejea kwenye uzalishaji kamili kudhibiti. 84 00:04:12,370 --> 00:04:15,670 Kwa maneno mengine, wao kuanza kutotoa chini ya uchafuzi wa mazingira. 85 00:04:15,670 --> 00:04:18,769 >> Kingine, katika kila hali wengine wakati ni si wanaona kama kuwa 86 00:04:18,769 --> 00:04:20,790 katika maabara, wao tu hawana. 87 00:04:20,790 --> 00:04:24,320 Na hivyo unaweza kurahisisha hii katika zaidi pseudocode thabiti na kitu 88 00:04:24,320 --> 00:04:24,820 kama hii. 89 00:04:24,820 --> 00:04:27,810 Kama magurudumu ni kugeuka lakini usukani si, kukisia 90 00:04:27,810 --> 00:04:30,060 kwamba gari ni juu ya baadhi aina ya kupokezana silinda 91 00:04:30,060 --> 00:04:32,550 lakini katika baadhi ya aina ya ghala kupimwa, 92 00:04:32,550 --> 00:04:36,070 kisha kuishi kama EPA ingekuwa kama wewe. 93 00:04:36,070 --> 00:04:37,960 Vinginevyo hawana. 94 00:04:37,960 --> 00:04:40,420 Hivyo hebu tuangalie katika video short kwamba 95 00:04:40,420 --> 00:04:45,391 inachukua kuangalia nini maana ni ya kweli hii mechanically. 96 00:04:45,391 --> 00:04:48,620 >> [VIDEO avspelning] 97 00:04:48,620 --> 00:04:52,800 >> -Last Ijumaa EPA alitangaza kuwa baadhi Volkswagen Audi magari yaliyotolewa kati ya mwaka 2009 98 00:04:52,800 --> 00:04:55,840 na mwaka huu walikuwa wakitumia kinachojulikana kushindwa kifaa 99 00:04:55,840 --> 00:04:59,060 kupata kote sheria uzalishaji imeundwa ili kuweka hewa safi. 100 00:04:59,060 --> 00:05:01,700 Lakini hiyo ina maana gani hasa? 101 00:05:01,700 --> 00:05:04,666 >> Naam, magari ya kisasa na kadhaa ya kompyuta ndani yao. 102 00:05:04,666 --> 00:05:07,040 Na baadhi ya wale kompyuta kusaidia kuratibu kazi 103 00:05:07,040 --> 00:05:09,590 ya injini kwa optimum utendaji wakati kuhakikisha 104 00:05:09,590 --> 00:05:12,340 kuwa kuna si takataka sana kuja nje ya kutolea nje filimbi. 105 00:05:12,340 --> 00:05:15,170 Wameweza kweli ikifanya kazi njia hii kwa miongo kadhaa sasa. 106 00:05:15,170 --> 00:05:17,380 Kimsingi, kila sehemu ya injini ya kisasa ya gari 107 00:05:17,380 --> 00:05:20,080 ina chombo hicho au mtawala juu yake, na kompyuta hizi 108 00:05:20,080 --> 00:05:23,460 wanasoma katika data maelfu ya mara kwa pili maamuzi marekebisho 109 00:05:23,460 --> 00:05:26,220 kama uwiano wa mafuta kwa hewa ambayo inaenda ndani ya mitungi. 110 00:05:26,220 --> 00:05:28,730 >> Hizi Volkswagen udanganyifu na mifano Audi ni diesels, 111 00:05:28,730 --> 00:05:30,890 na diesels na moja zaidi kompyuta kweli ni muhimu 112 00:05:30,890 --> 00:05:34,030 vigezo kudhibitiwa, ambayo ni kiasi cha unburned mafuta kwenda 113 00:05:34,030 --> 00:05:35,200 ndani ya kutolea nje. 114 00:05:35,200 --> 00:05:36,310 Sasa kwa kuwa sauti mbaya. 115 00:05:36,310 --> 00:05:39,642 Haina sauti kama wewe unataka mafuta unburned kwenda katika kutolea nje. 116 00:05:39,642 --> 00:05:41,600 Lakini katika kesi ya dizeli, una kitu 117 00:05:41,600 --> 00:05:46,110 aitwaye Nox mtego ambao ni kifaa kwamba inachukua na mitego kwa vile oksidi za nitrojeni 118 00:05:46,110 --> 00:05:48,880 ambazo ni uchafuzi kwamba ingekuwa vinginevyo kwenda katika anga. 119 00:05:48,880 --> 00:05:53,040 Na athari za kuwa Nox mtego ni kuimarishwa na unburned mafuta. 120 00:05:53,040 --> 00:05:56,650 Hivyo kifaa kushindwa ni mpango maalum ndani ya kompyuta hizi kwamba wanaweza kufanya hivyo 121 00:05:56,650 --> 00:05:59,527 kuangalia kama gari hukutana chafu viwango hata wakati haina. 122 00:05:59,527 --> 00:06:01,110 Volkswagen alikuwa na tatizo kwenye mikono yake. 123 00:06:01,110 --> 00:06:04,050 Dizeli injini yake walijulikana kwa ajili ya kupata kubwa mafuta ya uchumi, 124 00:06:04,050 --> 00:06:07,510 lakini Nox mtego tu kazi vizuri wakati zaidi ya mafuta ni kuwa kutumika. 125 00:06:07,510 --> 00:06:10,460 Hivyo gari bila kuchunguza, kutumia kifaa hiki kushindwa, 126 00:06:10,460 --> 00:06:13,870 wakati ilikuwa kupata uzalishaji mtihani, ingekuwa kutumia zaidi ya mafuta, 127 00:06:13,870 --> 00:06:16,830 kufanya Nox mtego kazi vizuri, uzalishaji itakuwa nzuri. 128 00:06:16,830 --> 00:06:21,130 Lakini kisha kupata juu ya barabara, kifaa anarudi mbali, wewe ni kuungua chini ya mafuta 129 00:06:21,130 --> 00:06:24,256 lakini wewe ni kuweka mara kama vile 40 uchafuzi zaidi katika anga. 130 00:06:24,256 --> 00:06:26,130 Lakini jinsi heck alivyofanya gari kujua kwamba ilikuwa 131 00:06:26,130 --> 00:06:27,720 kupimwa kwa uzalishaji wa kufuata? 132 00:06:27,720 --> 00:06:30,590 EPA anasema ilikuwa kisasa mfumo kuwa kuchunguzwa mambo 133 00:06:30,590 --> 00:06:34,090 kama usukani msimamo, kasi, kwa muda gani injini ilikuwa juu, 134 00:06:34,090 --> 00:06:35,507 na hata shinikizo la anga. 135 00:06:35,507 --> 00:06:37,673 Kwa maneno mengine, kulikuwa na hakuna njia hii ilikuwa ajali 136 00:06:37,673 --> 00:06:40,260 kwa sababu programu ni iliyoundwa kwa makini sana kuchunguza 137 00:06:40,260 --> 00:06:41,630 rasmi uzalishaji mtihani. 138 00:06:41,630 --> 00:06:43,588 Hiyo ni baadhi pretty kubwa udanganyifu na kwamba 139 00:06:43,588 --> 00:06:45,420 kwa nini Volkswagen ni katika hayo makubwa shida. 140 00:06:45,420 --> 00:06:48,600 Kwa kweli, Mkurugenzi Mtendaji wao, Martin Winterkorn, tu kupitiwa chini. 141 00:06:48,600 --> 00:06:49,820 >> Hivyo kile kinachotokea baada ya hapo? 142 00:06:49,820 --> 00:06:53,900 Naam, kama wewe ni mmoja wa nusu milioni dizeli Jettas, Beatles, Golfs, Passats, 143 00:06:53,900 --> 00:06:56,220 au Audi A3s iliyosababisha, habari njema ni ni 144 00:06:56,220 --> 00:06:57,886 kwamba gari yako ni salama bado kuendesha gari. 145 00:06:57,886 --> 00:07:00,510 Huwezi kuwa na kuiweka mbali mpaka Volkswagen masuala kukumbuka. 146 00:07:00,510 --> 00:07:02,509 Lakini wakati fulani wao uko pengine ni kwenda kuwa 147 00:07:02,509 --> 00:07:04,230 update programu ndani ya gari. 148 00:07:04,230 --> 00:07:06,927 Inapotokea waweza kupata maili wachache kwa tank. 149 00:07:06,927 --> 00:07:09,260 Wanasheria tayari gearing hadi kwa kesi za kisheria darasa hatua 150 00:07:09,260 --> 00:07:12,500 hivyo wamiliki ili kupata fidia wakati fulani katika siku zijazo. 151 00:07:12,500 --> 00:07:15,832 Lakini hiyo si kwenda kutokea wakati wowote hivi karibuni. 152 00:07:15,832 --> 00:07:16,711 >> [Mwisho avspelning] 153 00:07:16,711 --> 00:07:19,960 DAVID J. Malan: Hivyo hii kweli huwafufua kuvutia kubwa picha swali 154 00:07:19,960 --> 00:07:20,660 kama kwa uaminifu. 155 00:07:20,660 --> 00:07:21,160 Sawa? 156 00:07:21,160 --> 00:07:24,300 Sisi sote tuna iphone au Androids au kitu katika mifuko yetu na uwezo mkubwa 157 00:07:24,300 --> 00:07:26,500 siku hizi, au Laptops juu ya laps wetu kwamba ni 158 00:07:26,500 --> 00:07:28,510 kuendesha programu alifanya na Apple na Microsoft 159 00:07:28,510 --> 00:07:30,710 na mashada ya makampuni mengine. 160 00:07:30,710 --> 00:07:34,240 Lakini ni jinsi gani tunajua kwamba kile bidhaa za programu hizi ni kufanya 161 00:07:34,240 --> 00:07:37,680 ni kweli nini hawa makampuni ya kusema wanafanya? 162 00:07:37,680 --> 00:07:39,610 >> Kwa mfano, ambaye kwa kusema kwamba kila wakati 163 00:07:39,610 --> 00:07:42,200 kupiga simu kwenye iPhone yako au Android simu au kama, 164 00:07:42,200 --> 00:07:45,650 kuwa kwamba namba ya simu pia ni si kuwa kupakiwa kwenye server baadhi ya kampuni hiyo 165 00:07:45,650 --> 00:07:48,399 kwa sababu ya mpango baadhi wameweza Imeandikwa, kama ni uendeshaji 166 00:07:48,399 --> 00:07:51,070 mfumo yenyewe kama iOS au Android, au kwa sababu umefanya kupakuliwa 167 00:07:51,070 --> 00:07:53,880 baadhi ya programu tatu kwamba kwa namna fulani ni kusikiliza 168 00:07:53,880 --> 00:07:57,120 kwa kila kitu wewe ni kuandika katika au kila kitu wewe ni kweli akisema. 169 00:07:57,120 --> 00:07:59,500 Je, unajua kwamba, wakati nyie ni mbio Clang 170 00:07:59,500 --> 00:08:02,590 au Tengeneza kukusanya yako programu mwenyewe katika CS50, jinsi 171 00:08:02,590 --> 00:08:06,080 je kuwa CS50 wafanyakazi wenyewe, kwa njia ya maktaba CS50, 172 00:08:06,080 --> 00:08:08,690 haijawahi magogo kila kamba wameweza milele wamezipata 173 00:08:08,690 --> 00:08:10,276 au kila inchi wameweza milele wamezipata? 174 00:08:10,276 --> 00:08:12,900 Naam, unaweza hakika kuangalia katika kanuni chanzo kwa ajili ya kitu 175 00:08:12,900 --> 00:08:15,233 kama maktaba CS50, wewe wangeweza kuangalia chanzo kanuni 176 00:08:15,233 --> 00:08:18,170 kwa Linux mfumo wa uendeshaji mbio juu ya CS50 IDE. 177 00:08:18,170 --> 00:08:23,090 Lakini kuwasilisha ajabu Alipewa nyuma mwaka 1984 178 00:08:23,090 --> 00:08:26,730 katika ofisi ya tuzo Turing na maarufu sana mwanasayansi kompyuta inayojulikana 179 00:08:26,730 --> 00:08:29,750 as-- aitwaye Ken Thompson ambao alipokea tuzo Turing ambayo 180 00:08:29,750 --> 00:08:33,500 ni aina ya sayansi ya kompyuta Nobel, kama wewe, 181 00:08:33,500 --> 00:08:35,309 kwa kazi yake juu ya mfumo wa uendeshaji kuitwa 182 00:08:35,309 --> 00:08:39,039 Unix, ambayo ni sawa katika roho kwa nini tunatumia ambayo ni Linux. 183 00:08:39,039 --> 00:08:41,960 Na swali aliuliza katika wake kukubalika hotuba, kimsingi 184 00:08:41,960 --> 00:08:44,910 kuweka chini ya mfumo kwa miaka na miaka ya mjadala 185 00:08:44,910 --> 00:08:46,970 kuhusu imani na usalama, ilikuwa hii. 186 00:08:46,970 --> 00:08:50,410 Ni kwa kiasi gani lazima uaminifu moja a taarifa kwamba program-- kipande 187 00:08:50,410 --> 00:08:53,010 ya software-- ni bure ya farasi Trojan? 188 00:08:53,010 --> 00:08:56,500 Pengine ni muhimu zaidi kwa uaminifu watu ambao aliandika programu. 189 00:08:56,500 --> 00:08:58,650 >> Na kwa kweli, tumekuwa wanaohusishwa kwa majadiliano kwamba yeye 190 00:08:58,650 --> 00:09:02,400 alitoa wakati wa kupokea tuzo hii katika '80s kwenye tovuti CS50 191 00:09:02,400 --> 00:09:04,030 chini ya Mihadhara ukurasa kwa leo. 192 00:09:04,030 --> 00:09:06,071 Kwa sababu nini utaona ni kwamba kwa kweli inatoa 193 00:09:06,071 --> 00:09:09,430 mfano haki rahisi wa jinsi hata compiler kama Clang au chochote 194 00:09:09,430 --> 00:09:13,950 compilers wengine wametumia huko nyuma, nini kama iliyoingia katika compiler sisi 195 00:09:13,950 --> 00:09:18,190 sisi wenyewe ni kutumia ni kidogo kama masharti kwamba kimsingi anasema, 196 00:09:18,190 --> 00:09:22,360 kama taarifa kwamba kanuni hii ni kwa kutumia GetString kazi au GetInt 197 00:09:22,360 --> 00:09:26,600 kazi, kwenda mbele na kuingiza mlango wa nyuma au Trojan farasi 198 00:09:26,600 --> 00:09:29,340 kiasi kwamba mpango huo sasa ina baadhi ya zeros 199 00:09:29,340 --> 00:09:30,930 na wale ambao kufanya kitu kwa makusudi. 200 00:09:30,930 --> 00:09:33,080 Magogo yote ya yako keystrokes, kuweka takwimu ambazo 201 00:09:33,080 --> 00:09:35,100 kwa baadhi kompyuta, au kweli chochote. 202 00:09:35,100 --> 00:09:37,290 >> Na nini Ken Thompson anaendelea kufanya katika majadiliano yake 203 00:09:37,290 --> 00:09:40,580 ni kuonyesha kwamba hata kama una upatikanaji wa chanzo 204 00:09:40,580 --> 00:09:43,794 kanuni za compiler kwamba kwa nia mbaya ili kuwa kufanya hivyo, 205 00:09:43,794 --> 00:09:46,210 haijalishi kwa sababu kuna kuku huu na mayai 206 00:09:46,210 --> 00:09:49,500 ukweli wa wengi wa zamani Miaka ambapo compilers 207 00:09:49,500 --> 00:09:51,960 hutumiwa kukusanya wenyewe. 208 00:09:51,960 --> 00:09:55,440 Kwa maneno mengine, njia ya nyuma wakati mtu alikuwa na wameandika compiler kwanza. 209 00:09:55,440 --> 00:09:59,060 Na baada ya hapo, wakati wowote wameweza updated compiler kwa kubadilisha kanuni zake chanzo, 210 00:09:59,060 --> 00:10:02,020 kuongeza makala na recompiling ni kwa watu kama sisi kutumia, vizuri, 211 00:10:02,020 --> 00:10:04,270 wao ni kutumia umri wa toleo la compiler 212 00:10:04,270 --> 00:10:06,370 kukusanya mpya toleo la mkusanyaji. 213 00:10:06,370 --> 00:10:08,370 Na kama wewe kuchukua kuangalia katika majadiliano kwamba akatoa, 214 00:10:08,370 --> 00:10:10,970 utaona kwamba kwa sababu ya kwamba circularity, 215 00:10:10,970 --> 00:10:14,330 unaweza kweli kuwa mende au Trojan farasi iliyoingia katika programu 216 00:10:14,330 --> 00:10:14,990 sisi ni kutumia. 217 00:10:14,990 --> 00:10:18,010 Na hata kama ukiangalia chanzo kanuni kwa programu hizo, 218 00:10:18,010 --> 00:10:21,550 inaweza hata kuwa dhahiri kwa sababu hila ni kweli 219 00:10:21,550 --> 00:10:24,710 katika baadhi toleo la wazee wa compiler kwamba tangu wakati huo imekuwa 220 00:10:24,710 --> 00:10:27,340 sindano tishio katika programu yetu. 221 00:10:27,340 --> 00:10:29,740 >> Ambayo ni tu kusema, sisi kweli hawezi na hawapaswi 222 00:10:29,740 --> 00:10:32,939 uaminifu programu mbio juu ya Laptops wetu au simu za au idadi yoyote ya maeneo. 223 00:10:32,939 --> 00:10:36,230 Na kwa kweli, baadaye katika muhula huu wakati sisi kuanza kuzungumza juu ya programu ya mtandao 224 00:10:36,230 --> 00:10:38,521 na kwa kweli kuanza kujenga maombi ya mtandao wenyewe, 225 00:10:38,521 --> 00:10:40,285 tutaweza majadiliano juu ya haya vitisho na wengine. 226 00:10:40,285 --> 00:10:43,410 Sasa, unaweza kuwa na kujiuliza na niliona kuwa kulikuwa na kidogo kidogo Darth 227 00:10:43,410 --> 00:10:45,842 Vader katika sehemu kwamba Hatihati alikuwa akionyesha huko 228 00:10:45,842 --> 00:10:47,550 kuhusu Volkswagen. Kama wewe sijawahi kuona, mimi 229 00:10:47,550 --> 00:10:49,190 walidhani tunapaswa uzito hisia kwa sababu hii yote ni 230 00:10:49,190 --> 00:10:50,780 inakatisha tamaa na ya kutisha. 231 00:10:50,780 --> 00:10:52,910 Mimi nina kwenda kuangalia nyuma katika bakuli Super 2011 232 00:10:52,910 --> 00:10:55,300 wakati kibiashara na Volkswagen-- na hii 233 00:10:55,300 --> 00:10:59,620 karibu inawafanya likable again-- kurushwa hewani kwa mara ya kwanza kwenye TV. 234 00:10:59,620 --> 00:11:04,039 Ni 60 pili kipande cha nadhani utasikia kufurahia. 235 00:11:04,039 --> 00:11:04,705 [VIDEO avspelning] 236 00:11:04,705 --> 00:11:08,198 [Music - THEME KUTOKA "nyota vita"] 237 00:11:08,198 --> 00:11:35,643 238 00:11:35,643 --> 00:11:38,138 [Ikibweka] 239 00:11:38,138 --> 00:11:50,114 240 00:11:50,114 --> 00:11:53,607 [CAR huanza] 241 00:11:53,607 --> 00:12:04,086 242 00:12:04,086 --> 00:12:05,955 [Mwisho avspelning] 243 00:12:05,955 --> 00:12:06,830 DAVID J. Malan: Yeah. 244 00:12:06,830 --> 00:12:07,663 Nilikuwa tu kuangalia. 245 00:12:07,663 --> 00:12:11,360 Gari kuwa ni katika orodha ya ukiukaji. 246 00:12:11,360 --> 00:12:12,000 Sawa. 247 00:12:12,000 --> 00:12:14,040 Hivyo sisi kuangalia baadhi pseudocode wakati iliyopita. 248 00:12:14,040 --> 00:12:15,380 Na hapa ni kubwa snippet ya pseudocode kificho 249 00:12:15,380 --> 00:12:16,921 kwamba tumeona mara kadhaa hivi sasa. 250 00:12:16,921 --> 00:12:19,970 Na hebu kutumia hii ni fursa sasa kuanzisha programu mpya 251 00:12:19,970 --> 00:12:23,776 mbinu ambayo tulivyofanya ona algorithmically 252 00:12:23,776 --> 00:12:25,400 wiki iliyopita wakati sisi inaonekana katika kuunganisha aina. 253 00:12:25,400 --> 00:12:28,270 Lakini hebu kurasimisha na kuona jinsi tupate kuitumia katika kanuni halisi, 254 00:12:28,270 --> 00:12:30,350 na kisha tunakwenda kutumia hii mbinu chini ya barabara nyingi 255 00:12:30,350 --> 00:12:32,000 uwezekano wa kutatua baadhi ya matatizo mengine. 256 00:12:32,000 --> 00:12:35,790 >> Hivyo hii ilikuwa moja ya mipango ya kwanza sisi milele aliandika, angalau katika pseudocode kanuni. 257 00:12:35,790 --> 00:12:37,790 Na mpango gani hii kuruhusiwa tufanye shaka 258 00:12:37,790 --> 00:12:41,510 ilikuwa kupata Mike Smith katika kitabu cha simu. 259 00:12:41,510 --> 00:12:46,216 Na taarifa katika mistari fulani nane na 11 ambazo alikuwa na haya kauli Go To. 260 00:12:46,216 --> 00:12:48,090 Na kwa kweli, baadhi ya lugha, C miongoni mwao, 261 00:12:48,090 --> 00:12:50,006 kweli kufanya kuwa Kauli kwamba ni halisi 262 00:12:50,006 --> 00:12:52,710 kwenda kwamba utapata Rukia line maalum. 263 00:12:52,710 --> 00:12:55,470 Ni kwa ujumla kipaji juu kwa sababu inaweza kwa urahisi sana vibaya 264 00:12:55,470 --> 00:12:58,490 na unaweza kuanza kuruka yako Mpango kila mahali kinyume 265 00:12:58,490 --> 00:13:00,690 kwa kutumia aina ya mantiki na mtiririko wa kudhibiti 266 00:13:00,690 --> 00:13:04,000 kwamba tumekuwa kutumika hivi sasa na tu mizunguko na hali na kadhalika. 267 00:13:04,000 --> 00:13:08,660 >> Lakini tunaweza kurahisisha algorithm hii katika pseudocode kificho kama ifuatavyo. 268 00:13:08,660 --> 00:13:11,250 Badala ya hii iterative au looping mbinu 269 00:13:11,250 --> 00:13:14,160 ambapo sisi kuendelea kurejea na nyuma na nyuma kujipanga tatu, 270 00:13:14,160 --> 00:13:18,300 kwa nini sio sisi tu aina ya Punt na zaidi ujumla kusema katika mstari saba na 10, 271 00:13:18,300 --> 00:13:20,570 tu kuchukua nafasi hizo mbili jozi ya mistari na, 272 00:13:20,570 --> 00:13:22,810 mwingine kama Smith ni mapema katika kitabu tutaweza 273 00:13:22,810 --> 00:13:25,110 kutafuta Mike katika kushoto nusu ya kitabu. 274 00:13:25,110 --> 00:13:28,560 Mwingine kama Smith ni baadaye katika kitabu, kutafuta Mike katika haki 275 00:13:28,560 --> 00:13:29,540 nusu kitabu. 276 00:13:29,540 --> 00:13:31,180 Na taarifa tayari circularity. 277 00:13:31,180 --> 00:13:31,680 Sawa? 278 00:13:31,680 --> 00:13:34,250 Mimi kwa ajili ya kutafuta Mike katika kitabu cha simu na kisha 279 00:13:34,250 --> 00:13:37,090 Mimi hatimaye kugonga labda mstari saba au labda mstari 10 280 00:13:37,090 --> 00:13:41,089 na mafundisho yangu mwenyewe ni la kwa Mike katika nusu ya kitabu cha simu. 281 00:13:41,089 --> 00:13:42,380 Vizuri, jinsi gani mimi kutafuta Mike? 282 00:13:42,380 --> 00:13:44,213 Mimi nina katikati ya kwa ajili ya kutafuta Mike, kwa nini 283 00:13:44,213 --> 00:13:45,860 Unataka aina ya kutuma mimi katika mzunguko? 284 00:13:45,860 --> 00:13:49,590 Lakini hiyo ni sawa kwa sababu kile ni kinachotokea kwa ukubwa wa tatizo, 285 00:13:49,590 --> 00:13:52,630 kama yaliyoandikwa katika mstari 7 na 10? 286 00:13:52,630 --> 00:13:54,989 Sisi siyo tu kusema la kwa Mike, kutafuta Mike. 287 00:13:54,989 --> 00:13:56,280 Sisi ni hasa kusema nini? 288 00:13:56,280 --> 00:13:58,694 289 00:13:58,694 --> 00:14:01,610 Kutafuta kwa ajili yake katika nusu ya kushoto ya nusu haki ambayo ni kwa ufanisi 290 00:14:01,610 --> 00:14:03,440 nusu ya ukubwa wa tatizo. 291 00:14:03,440 --> 00:14:07,170 Hivyo ni sawa kwamba sisi ni aina ya walioshiriki katika circularity hii, 292 00:14:07,170 --> 00:14:09,180 huu mduara hoja, kwa sababu angalau tuko 293 00:14:09,180 --> 00:14:11,090 kufanya tatizo na ndogo ndogo. 294 00:14:11,090 --> 00:14:14,220 Na hatimaye tunakwenda kufikia kwamba kinachojulikana msingi kesi ambapo 295 00:14:14,220 --> 00:14:16,780 tuna ukurasa mmoja tu left-- kama kujitolea yetu wiki iliyopita 296 00:14:16,780 --> 00:14:18,684 did-- tulikuwa ukurasa mmoja kushoto na kisha hatufanyi 297 00:14:18,684 --> 00:14:21,600 una kuweka kwa ajili ya kutafuta Mike Smith kwa sababu yeye ni aidha kwenye ukurasa kwamba 298 00:14:21,600 --> 00:14:23,080 au yeye si. 299 00:14:23,080 --> 00:14:27,480 >> Hivyo ni jinsi gani sisi kutekeleza wazo hili, hii aina ya circularity katika kanuni halisi? 300 00:14:27,480 --> 00:14:31,030 Naam, tunaweza kujiinua mbinu hiyo ni ujumla inayojulikana kama kujirudia. 301 00:14:31,030 --> 00:14:33,960 Na tumeona hii katika pseudocode kwa kuunganisha aina wiki iliyopita. 302 00:14:33,960 --> 00:14:37,190 Kumbuka kuwa hii ilikuwa pseudocode kwa kuunganisha aina. 303 00:14:37,190 --> 00:14:40,560 Ni arguably hata rahisi kuliko Bubble au uteuzi au kuingizwa aina 304 00:14:40,560 --> 00:14:43,310 tu katika suala la unyenyekevu na ambayo unaweza kueleza hayo. 305 00:14:43,310 --> 00:14:46,750 >> Lakini hiyo ni kwa sababu tuko aina ya circularly 306 00:14:46,750 --> 00:14:51,350 akisema, kutafuta kitu kwa ajili ya kutafuta tena. 307 00:14:51,350 --> 00:14:53,960 Lakini sisi ni kutafuta ama kwenye nusu ya kushoto au kulia nusu 308 00:14:53,960 --> 00:14:56,070 na kisha hatimaye tuko kuunganisha katika kesi hii. 309 00:14:56,070 --> 00:14:58,520 Lakini hapa, pia, pamoja na wale mistari miwili aina, 310 00:14:58,520 --> 00:15:01,320 hatukufanya tena na hii wazo la kujirudia. 311 00:15:01,320 --> 00:15:05,350 Na uthabiti nini maana ya hii, katika mazingira ya algorithm, 312 00:15:05,350 --> 00:15:10,880 ni kwamba algorithm ni kujirudia kama anatumia au wito yenyewe. 313 00:15:10,880 --> 00:15:14,330 >> Au katika suala la C, kazi ni recursive-- kazi kuitwa 314 00:15:14,330 --> 00:15:18,510 foo ni kujirudia kama foo, mahali fulani katika kanuni zake chanzo, 315 00:15:18,510 --> 00:15:21,250 wito kazi foo yenyewe. 316 00:15:21,250 --> 00:15:25,790 Na hiyo ndiyo mbaya kama wote foo milele gani ni kujiita tena na tena. 317 00:15:25,790 --> 00:15:30,600 Ni sawa kama foo hatimaye ataacha, kama ilivyo kwa kuunganisha aina, kwa kusema, kusubiri dakika, 318 00:15:30,600 --> 00:15:32,980 kama tatizo hili ni super dogo, kwa mfano, 319 00:15:32,980 --> 00:15:35,840 au nimeona yule mimi nina kutafuta, kurudi tu. 320 00:15:35,840 --> 00:15:41,000 Je, si recursively, hawana cyclically kuwaita mwenyewe tena. 321 00:15:41,000 --> 00:15:44,200 >> Na hivyo hebu tuangalie jinsi hii ili kweli kazi. 322 00:15:44,200 --> 00:15:48,430 Hivyo mimi nina kwenda mbele na wazi up miwili chanzo kanuni mifano hapa. 323 00:15:48,430 --> 00:15:50,321 Mmoja wa uitwao sigma 0. 324 00:15:50,321 --> 00:15:52,320 Na hii si wakati wote kujirudia, lakini hebu kuchukua 325 00:15:52,320 --> 00:15:53,694 a kuangalia nini mpango huu gani. 326 00:15:53,694 --> 00:15:55,737 Nimekuwa kuvuliwa nje wote maoni kutoka humo lakini wote 327 00:15:55,737 --> 00:15:58,070 ya chanzo kanuni juu ya CS50 tovuti ina maoni kama wewe 328 00:15:58,070 --> 00:15:59,570 wanataka kusoma kwa njia hiyo tena baadaye. 329 00:15:59,570 --> 00:16:02,010 Na hebu kufanya michache ya sanity hundi hapa. 330 00:16:02,010 --> 00:16:06,640 >> Hivyo juu ya kanuni hii, tuna pamoja CS50.h. 331 00:16:06,640 --> 00:16:07,650 Je, hii nini? 332 00:16:07,650 --> 00:16:08,990 Kwa nini ni hapa? 333 00:16:08,990 --> 00:16:11,740 Katika masharti nafuu layman. 334 00:16:11,740 --> 00:16:12,424 Je, ni nini? 335 00:16:12,424 --> 00:16:12,858 Naam. 336 00:16:12,858 --> 00:16:14,160 >> Watazamaji: Hivyo kwamba GetInt kazi kazi. 337 00:16:14,160 --> 00:16:16,243 >> DAVID J. Malan: Hivyo kwamba kazi GetInt kazi. 338 00:16:16,243 --> 00:16:18,115 Kwa sababu ndani ya hii file, CS50.h, ambayo 339 00:16:18,115 --> 00:16:20,950 tutaweza kuona kabla ya muda mrefu katika suala la kanuni zake chanzo, 340 00:16:20,950 --> 00:16:23,270 ina rundo la kazi declared-- GetInt, GetString, 341 00:16:23,270 --> 00:16:26,950 na kundi la others-- na isipokuwa sisi kweli kuwa kwamba pamoja na line, 342 00:16:26,950 --> 00:16:29,320 compiler Clang ni si kwenda kujua kwamba ipo. 343 00:16:29,320 --> 00:16:32,400 Na hiyo inakwenda kwa mstari mbili ambapo int inaelezwa 344 00:16:32,400 --> 00:16:35,101 printf, ambayo ni kazi sisi kuendelea kutumia kidogo kabisa. 345 00:16:35,101 --> 00:16:37,850 Sasa, mstari nne inaonekana funky kidogo kwa sababu ni tu mjengo moja. 346 00:16:37,850 --> 00:16:41,570 Ni got semicolon, hakuna curly braces, hakuna kificho ndani yake. 347 00:16:41,570 --> 00:16:44,640 Lakini nini alifanya tunatoa wito jambo hili katika kipindi cha wiki? 348 00:16:44,640 --> 00:16:45,140 Naam. 349 00:16:45,140 --> 00:16:46,060 Hivyo mfano. 350 00:16:46,060 --> 00:16:48,390 Na kwa nini tuna mfano ambayo inaonekana 351 00:16:48,390 --> 00:16:51,050 kuwa redundant kidogo kawaida kwa sababu sisi kwa kawaida 352 00:16:51,050 --> 00:16:53,474 ona kazi tena baadaye katika faili, sawa? 353 00:16:53,474 --> 00:16:56,390 Hivyo kwa nini sisi have-- uko tu scratching kichwa yako lakini mimi itabidi kuchukua hiyo. 354 00:16:56,390 --> 00:16:57,302 Naam. 355 00:16:57,302 --> 00:17:00,000 >> Watazamaji: [inaudible] kazi baada kuu. 356 00:17:00,000 --> 00:17:01,000 DAVID J. Malan: Hasa. 357 00:17:01,000 --> 00:17:04,089 Hivyo kwamba compiler anajua wewe hatimaye kufafanua au kutekeleza 358 00:17:04,089 --> 00:17:06,579 kwamba kazi baada kuu, labda. 359 00:17:06,579 --> 00:17:08,462 Hivyo Clang na zaidi compilers ni aina ya bubu 360 00:17:08,462 --> 00:17:10,510 na wao itabidi tu kujua nini kuwaambia. 361 00:17:10,510 --> 00:17:12,569 Na kama unataka kutumia kazi kuitwa sigma, 362 00:17:12,569 --> 00:17:15,710 wewe bora kufundisha compiler kwamba ipo mapema. 363 00:17:15,710 --> 00:17:17,970 >> Sasa, yenyewe kuu, hata ingawa ni kundi la mistari, 364 00:17:17,970 --> 00:17:19,839 ni pretty ukoo hopefully kwa sasa. 365 00:17:19,839 --> 00:17:21,942 Ni got kufanya wakati kitanzi kusudi lake katika maisha 366 00:17:21,942 --> 00:17:24,400 hapa inaonekana ni kupata sifuri kutoka kwa mtumiaji. 367 00:17:24,400 --> 00:17:27,349 Na kuweka tu kuwalazimisha yake au wake mpaka wao kushirikiana. 368 00:17:27,349 --> 00:17:30,670 Kisha katika mstari 16 nina wito kuvutia. 369 00:17:30,670 --> 00:17:31,570 IntAnswer. 370 00:17:31,570 --> 00:17:33,710 Ambayo upande wa kushoto upande anitiaye Int 371 00:17:33,710 --> 00:17:36,650 ambayo inaweza store-- aitwaye Answer-- ambayo ni kwenda kuhifadhi, inaonekana, 372 00:17:36,650 --> 00:17:39,090 thamani ya kurudi kwa assassin. 373 00:17:39,090 --> 00:17:41,840 Hivyo sigma ni holela lakini maana jina 374 00:17:41,840 --> 00:17:44,500 kwamba nimepata aliyopewa kazi kusudi lake katika maisha 375 00:17:44,500 --> 00:17:47,680 ni kuchukua argument-- moja tutaweza simu yake ya N katika kesi hii 376 00:17:47,680 --> 00:17:52,280 na tu kuchukua jumla ya hesabu kwamba pamoja na kila idadi chanya hiyo ni 377 00:17:52,280 --> 00:17:53,200 ndogo kuliko hiyo. 378 00:17:53,200 --> 00:17:58,140 >> Hivyo kama mimi kupita katika namba 2 kwa sigma, Nataka kuongeza 2 plus 1 379 00:17:58,140 --> 00:18:00,240 pamoja na 0-- si 0-- ili anitiaye 3. 380 00:18:00,240 --> 00:18:05,320 Kama mimi kupita katika 3 kwa sigma, nataka 3 plus 2 pamoja na 1, ambayo inatoa mimi 6. 381 00:18:05,320 --> 00:18:05,900 Na kadhalika. 382 00:18:05,900 --> 00:18:09,750 Hivyo tu zinafikia zote nambari chini ya au sawa na hiyo. 383 00:18:09,750 --> 00:18:12,040 >> Sasa, chini hapa mimi nina kwenda tu magazeti nje jibu. 384 00:18:12,040 --> 00:18:17,330 Hivyo kama haraka sanity hundi, hebu kufanya sigma 0-- dot slash sigma 0-- 385 00:18:17,330 --> 00:18:18,690 na napenda aina katika 2. 386 00:18:18,690 --> 00:18:19,960 Na mimi kwa hakika kupata 3. 387 00:18:19,960 --> 00:18:21,240 Napenda aina katika 3. 388 00:18:21,240 --> 00:18:22,860 Mimi kweli kupata 6. 389 00:18:22,860 --> 00:18:27,636 Na kama mtu yeyote anaweza kufanya hesabu za haraka, kama mimi kufanya 50 nini mimi kwenda kupata? 390 00:18:27,636 --> 00:18:29,839 >> Watazamaji: [inaudible]. 391 00:18:29,839 --> 00:18:30,880 DAVID J. Malan: Sawa, hakuna. 392 00:18:30,880 --> 00:18:33,340 Lakini 1275 ambayo ni pretty karibu. 393 00:18:33,340 --> 00:18:38,850 Hivyo hii ni matokeo ya kufanya 50 pamoja na 49 pamoja 48 pamoja 47 pamoja 46 394 00:18:38,850 --> 00:18:40,349 njia yote chini ya 1. 395 00:18:40,349 --> 00:18:41,390 Hivyo hiyo ni wote sigma gani. 396 00:18:41,390 --> 00:18:43,350 Lakini hebu angalia jinsi tumekuwa kutekelezwa sasa. 397 00:18:43,350 --> 00:18:45,790 Hivyo hapa chini ni kazi yenyewe. 398 00:18:45,790 --> 00:18:49,000 Na hii haina wanaonekana kuwa na kitu cha kufanya na kujirudia bado. 399 00:18:49,000 --> 00:18:51,070 Kwa kweli, sisi ni kutumia umri wa mbinu shule. 400 00:18:51,070 --> 00:18:56,680 Mimi initializing kutofautiana kuitwa kiasi na sifuri, basi nina foreloop hapa, 401 00:18:56,680 --> 00:19:00,790 na mimi nina kutangaza Int aitwaye Mimi, kuiandaa sawa na 1-- 402 00:19:00,790 --> 00:19:04,080 ingawa mimi naweza kuweka sawa na sifuri, lakini tangu mimi nina kufanya Aidha, 403 00:19:04,080 --> 00:19:05,340 anayejali kama ni zero au moja. 404 00:19:05,340 --> 00:19:06,660 Ni kwenda kuwa na athari. 405 00:19:06,660 --> 00:19:10,110 >> Hivyo mimi nina iterating kwa muda mrefu kama mimi ni chini ya au sawa na m, ambayo 406 00:19:10,110 --> 00:19:11,671 ni hoja kuwa ilipitishwa katika. 407 00:19:11,671 --> 00:19:13,670 Na kisha mimi tu kuweka incrementing I. Na ufahamu 408 00:19:13,670 --> 00:19:20,010 ya kitanzi zote mimi nina kufanya ni kufanya kiasi pamoja na ni sawa na mimi Na hiyo ndiyo makusudi. 409 00:19:20,010 --> 00:19:22,326 Sitaki kufanya, katika hii kesi, kama kiasi pamoja pamoja. 410 00:19:22,326 --> 00:19:24,790 Nataka kweli kuongeza thamani ya sasa ya mimi 411 00:19:24,790 --> 00:19:28,190 ambayo anaendelea kupata makubwa na kubwa na kubwa zaidi kwa mbio Tally. 412 00:19:28,190 --> 00:19:30,210 >> Na kisha mimi kurudi jibu. 413 00:19:30,210 --> 00:19:33,850 Na hivyo jibu anapata thamani jibu. 414 00:19:33,850 --> 00:19:35,282 Na kisha mimi magazeti ya nje. 415 00:19:35,282 --> 00:19:37,740 Hivyo kuna nafasi hapa, ingawa, kwa namna ya kurahisisha 416 00:19:37,740 --> 00:19:41,260 kanuni hii conceptually na aina ya pigo moja ni 417 00:19:41,260 --> 00:19:43,250 akili katika suala la unyenyekevu hata kama 418 00:19:43,250 --> 00:19:45,700 inachukua muda kutatua ya kufahamu nini hii 419 00:19:45,700 --> 00:19:47,330 ni nguvu katika mifano hii ndogo. 420 00:19:47,330 --> 00:19:50,380 Hapa ni sigma one-- hivyo toleo la pili la kanuni hii. 421 00:19:50,380 --> 00:19:55,290 Kila kitu juu juu ni kufanana hivyo kuwa hadithi hiyo inatumika kama kabla. 422 00:19:55,290 --> 00:19:59,220 Lakini sasa hebu tuangalie utekelezaji wa sigma ambayo 423 00:19:59,220 --> 00:20:05,040 Nimekuwa yameshuka na kufikia haya lines-- mistari minne ya kificho, kwa kweli, 424 00:20:05,040 --> 00:20:06,980 pamoja na baadhi ya braces curly na nafasi nyeupe. 425 00:20:06,980 --> 00:20:07,930 >> Lakini je, Mimi kufanya? 426 00:20:07,930 --> 00:20:11,050 Kama m ni chini ya au sawa na sifuri, nahitaji aina ya kushughulikia 427 00:20:11,050 --> 00:20:12,490 kwamba kesi super rahisi. 428 00:20:12,490 --> 00:20:15,450 Na kama wewe mkono mimi sifuri au kitu chochote hasi ambayo ni haki weird, 429 00:20:15,450 --> 00:20:17,909 Mimi nina kwenda tu kiholela lakini mara kwa mara kurudi sifuri. 430 00:20:17,909 --> 00:20:20,200 Sitaki jambo hili kwa kupata katika baadhi usio weird 431 00:20:20,200 --> 00:20:21,810 kitanzi kwa sababu ya thamani hasi. 432 00:20:21,810 --> 00:20:25,070 Hivyo Mimi tu kusema, kama wewe nipe sifuri au chini, mimi nina kurudi sifuri. 433 00:20:25,070 --> 00:20:28,220 >> Lakini hiyo ni nzuri kwa sababu hiyo ni kuwa moja ukurasa wa kitabu cha simu 434 00:20:28,220 --> 00:20:28,790 wa kushoto. 435 00:20:28,790 --> 00:20:32,660 Mimi kuuma mbali tatizo maalum sana na si kupiga kitu recursively. 436 00:20:32,660 --> 00:20:36,580 Lakini katika mstari 31, nini Je, mimi wanaonekana kuwa kufanya? 437 00:20:36,580 --> 00:20:39,780 Mabano ni kutunza tu mambo, hopefully, wazi kidogo. 438 00:20:39,780 --> 00:20:42,110 Lakini wote mimi nina kufanya ni mimi nina kurudi m-- chochote 439 00:20:42,110 --> 00:20:45,790 wewe mkono ME pamoja thamani ya m-- pole, 440 00:20:45,790 --> 00:20:49,052 pamoja na thamani ya sigma ya m bala 1. 441 00:20:49,052 --> 00:20:50,010 Hivyo hii ina maana gani? 442 00:20:50,010 --> 00:20:53,965 Kama wewe nipe namba 3 kama pembejeo, jibu Nataka kupata hatimaye 443 00:20:53,965 --> 00:20:57,307 ni 6 kwa sababu 3 plus 2 pamoja na 1 anitiaye 6. 444 00:20:57,307 --> 00:20:59,390 Lakini jinsi gani nadhani kuhusu jinsi kanuni hii ni mbio? 445 00:20:59,390 --> 00:21:03,070 Mara ya kwanza mimi wito sigma na mimi kupita katika thamani 3, 446 00:21:03,070 --> 00:21:07,960 hiyo ni kama kusema juu ya kipande cha karatasi, hapa ni thamani ya 3 447 00:21:07,960 --> 00:21:09,920 na nimekuwa kupita hii kama assassin. 448 00:21:09,920 --> 00:21:13,090 3 ni wazi si chini ya 0 hivyo Kama hali haina kuomba. 449 00:21:13,090 --> 00:21:14,020 Kingine gani. 450 00:21:14,020 --> 00:21:14,990 Hivyo nini mimi? 451 00:21:14,990 --> 00:21:19,902 Nataka kurudi m, ambayo ni 3, pamoja na sigma ya m bala 1. 452 00:21:19,902 --> 00:21:21,110 Hivyo basi mimi kuweka wimbo wa hii. 453 00:21:21,110 --> 00:21:22,710 Mimi naenda kuweka hii kipande cha karatasi chini. 454 00:21:22,710 --> 00:21:24,668 Na nini thamani, kuwa wazi, Mimi ni kwenda kupita 455 00:21:24,668 --> 00:21:26,540 ndani ya sigma katika hatua hii katika hadithi? 456 00:21:26,540 --> 00:21:28,080 Nini namba? 457 00:21:28,080 --> 00:21:28,610 2, sawa? 458 00:21:28,610 --> 00:21:29,670 3 bala 1 ni 2. 459 00:21:29,670 --> 00:21:32,000 Hivyo mimi tu haja kidogo chakavu ya karatasi hapa. 460 00:21:32,000 --> 00:21:33,931 Hivyo sasa sigma ni kupata kuitwa tena. 461 00:21:33,931 --> 00:21:35,930 Na nimekuwa makusudi kuweka huu chini kwa sababu ni 462 00:21:35,930 --> 00:21:38,070 aina ya kama pausing kwamba toleo la hadithi 463 00:21:38,070 --> 00:21:40,720 kwa sababu sasa mimi nina ililenga juu ya ishara ya m bala 1. 464 00:21:40,720 --> 00:21:42,660 Hivyo m ilikuwa 3, m bala 1 ni 2. 465 00:21:42,660 --> 00:21:45,110 Hivyo hapa ni 2 kwamba nimekuwa kupita. 466 00:21:45,110 --> 00:21:48,510 2 ni wazi si chini ya 0 hivyo kesi hiyo haina kuomba. 467 00:21:48,510 --> 00:21:53,445 Mwingine mimi kurudi m, ambayo ni hii Jambo, pamoja na sigma ya thamani gani? 468 00:21:53,445 --> 00:21:56,160 469 00:21:56,160 --> 00:21:59,650 Hivyo kama sigma ya 1-- kwa sababu m ni sasa hivi 2 hivyo 2 bala 1 ni 1. 470 00:21:59,650 --> 00:22:01,950 Hivyo sasa nina tu thamani 1. 471 00:22:01,950 --> 00:22:04,810 Mimi nina kupita tu idadi 1 kwa kazi sigma-- 472 00:22:04,810 --> 00:22:09,120 au mimi mwenyewe here-- hivyo 1 ni wazi si chini ya sifuri, bado haina kuomba. 473 00:22:09,120 --> 00:22:12,970 >> Mwingine kurudi 1 pamoja na sigma wa nini? 474 00:22:12,970 --> 00:22:13,470 0. 475 00:22:13,470 --> 00:22:14,678 Hivyo basi mimi kumbuka tu kwamba. 476 00:22:14,678 --> 00:22:15,920 Mimi itabidi kupata nyuma na kwamba baadaye. 477 00:22:15,920 --> 00:22:18,060 Sasa mimi nina kwenda mbele na hata nukta chini ya idadi 0 kwa sababu hiyo ni 478 00:22:18,060 --> 00:22:19,470 hoja yangu au parameter. 479 00:22:19,470 --> 00:22:22,400 Mimi kupita idadi 0 na hatimaye mchakato huu 480 00:22:22,400 --> 00:22:25,760 ya kurudia tu mwenyewe tangazo nauseum haina kusitisha kwa sababu gani 481 00:22:25,760 --> 00:22:28,820 Je, mimi mara moja kufanya mara moja naona hii 0? 482 00:22:28,820 --> 00:22:29,790 Mimi kurudi sifuri. 483 00:22:29,790 --> 00:22:31,790 Hivyo sasa una rewind hadithi. 484 00:22:31,790 --> 00:22:34,430 >> Kama mimi sasa kurudi nyuma katika wakati, kitu gani hivi karibuni alikuwa 485 00:22:34,430 --> 00:22:36,670 Nilifanya kama ungekuwa literally rewinding video? 486 00:22:36,670 --> 00:22:41,630 Mimi nina kwenda kuchukua hivi karibuni 1 na kwamba anitiaye 1 pamoja na 0 ni 1. 487 00:22:41,630 --> 00:22:44,100 Kama mimi kuweka rewinding hadithi, ambayo inaenda nipe 488 00:22:44,100 --> 00:22:46,880 2 pamoja na hii mbio thamani, ambayo ni 1. 489 00:22:46,880 --> 00:22:47,789 Hivyo hiyo ni 3. 490 00:22:47,789 --> 00:22:49,330 Na kisha mimi nina kwenda kuweka rewinding. 491 00:22:49,330 --> 00:22:54,220 Wakati mimi kwanza kuweka chini idadi 3-- hivyo 3 pamoja na 3 anitiaye 6. 492 00:22:54,220 --> 00:22:57,272 >> Na sasa, kama wameweza rewound video hadi hatua hii, 493 00:22:57,272 --> 00:22:58,980 hii ilikuwa sana swali la kwanza mimi aliuliza. 494 00:22:58,980 --> 00:23:01,450 Wakati kupita 3, ni nini sigma ya 3? 495 00:23:01,450 --> 00:23:04,204 Hakika ni 6, jumla ya vipande hayo yote ya karatasi. 496 00:23:04,204 --> 00:23:07,120 Hivyo kama kwamba inachukua muda kidogo kwa wrap akili yako karibu, hiyo ni nzuri. 497 00:23:07,120 --> 00:23:10,700 Lakini fikiria ilikuwa little-- ni ilikuwa makusudi kabisa kwamba mimi sifa 498 00:23:10,700 --> 00:23:12,990 nambari hizi juu ya kila mmoja. 499 00:23:12,990 --> 00:23:17,440 Ni aina ya kama kuwa memory-- rekodi kwa wakati, 500 00:23:17,440 --> 00:23:19,940 kama scrubber katika video, niweze kweli rewind katika. 501 00:23:19,940 --> 00:23:24,350 Na tunakwenda kurudi kuwa mfano katika kidogo tu. 502 00:23:24,350 --> 00:23:28,240 >> Lakini kwanza, zinageuka kuwa kuna mengi ya geeks na watu funny, 503 00:23:28,240 --> 00:23:29,614 Mimi nadhani, katika Google. 504 00:23:29,614 --> 00:23:31,530 Je, mtu ambaye sana vizuri katika googling akili 505 00:23:31,530 --> 00:23:34,270 kuja juu kwa muda tu na nisaidie kutafuta kitu? 506 00:23:34,270 --> 00:23:35,650 Sana, chini sana ufunguo. 507 00:23:35,650 --> 00:23:37,870 Mtu ambaye kamwe kuja kabla, labda. 508 00:23:37,870 --> 00:23:38,370 SAWA. 509 00:23:38,370 --> 00:23:39,030 Yeah? 510 00:23:39,030 --> 00:23:39,530 Kuja juu. 511 00:23:39,530 --> 00:23:41,410 Kuja juu chini. 512 00:23:41,410 --> 00:23:42,183 Jina lako ni nini? 513 00:23:42,183 --> 00:23:42,870 >> SAM: Sam. 514 00:23:42,870 --> 00:23:44,290 >> DAVID J. Malan: Sam, kuja juu chini. 515 00:23:44,290 --> 00:23:45,320 Hii ni Same. 516 00:23:45,320 --> 00:23:46,280 Vyema kukutana na wewe. 517 00:23:46,280 --> 00:23:46,780 Hey. 518 00:23:46,780 --> 00:23:47,580 Kuja juu juu. 519 00:23:47,580 --> 00:23:51,290 Hivyo wote nahitaji wewe kufanya, kama unaweza, Sam, hapa Google. 520 00:23:51,290 --> 00:23:53,240 Je, unaweza kutafuta mrefu kujirudia? 521 00:23:53,240 --> 00:23:55,770 522 00:23:55,770 --> 00:23:56,270 Je, si nyara. 523 00:23:56,270 --> 00:23:59,940 524 00:23:59,940 --> 00:24:00,970 >> Na sasa let's-- yeah. 525 00:24:00,970 --> 00:24:03,380 OK Bofya hiyo. 526 00:24:03,380 --> 00:24:04,315 Bora bonyeza hapo. 527 00:24:04,315 --> 00:24:07,020 528 00:24:07,020 --> 00:24:08,020 Ahh, kupata huduma hiyo. 529 00:24:08,020 --> 00:24:08,520 Hakuna? 530 00:24:08,520 --> 00:24:09,050 SAWA. 531 00:24:09,050 --> 00:24:10,430 Basi hebu kufanya wengine kadhaa. 532 00:24:10,430 --> 00:24:12,830 Sio sana kuhusiana na kimasomo hapa, bali awe na wewe 533 00:24:12,830 --> 00:24:14,520 milele searched Google kwa anagram? 534 00:24:14,520 --> 00:24:15,280 >> SAM: Hapana 535 00:24:15,280 --> 00:24:15,520 >> DAVID J. Malan: Sawa. 536 00:24:15,520 --> 00:24:17,186 Tafuta kwa anagram badala ya kujirudia. 537 00:24:17,186 --> 00:24:22,540 538 00:24:22,540 --> 00:24:23,790 Vipi kuhusu potovu. 539 00:24:23,790 --> 00:24:25,515 Je, umewahi msako potovu? 540 00:24:25,515 --> 00:24:29,260 541 00:24:29,260 --> 00:24:32,692 Sasa, hii moja ngumu kidogo ona lakini hopefully everything's-- sawa. 542 00:24:32,692 --> 00:24:34,150 Ni tu wewe na mimi kufurahia hii. 543 00:24:34,150 --> 00:24:34,690 SAWA. 544 00:24:34,690 --> 00:24:38,950 >> Hivyo hatimaye, hii one's-- ni potovu kidogo. 545 00:24:38,950 --> 00:24:40,810 Sasa kufanya pipa roll. 546 00:24:40,810 --> 00:24:44,460 547 00:24:44,460 --> 00:24:45,310 Ajabu. 548 00:24:45,310 --> 00:24:45,910 Sawa. 549 00:24:45,910 --> 00:24:47,110 Kubwa asante kwa Sam. 550 00:24:47,110 --> 00:24:49,416 Hapa kwenda. 551 00:24:49,416 --> 00:24:50,400 Shukrani. 552 00:24:50,400 --> 00:24:52,807 >> Hivyo nini kinaendelea katika yote ya mifano hii silly? 553 00:24:52,807 --> 00:24:55,640 Hivyo kweli, chini ya Hood ya Mamilioni ya mstari wa kanuni Google 554 00:24:55,640 --> 00:24:58,860 inaonekana ni chache silly IF hali ya kuwa ni kimsingi 555 00:24:58,860 --> 00:25:01,160 kuangalia kama mtumiaji ana typed katika maneno haya, 556 00:25:01,160 --> 00:25:03,760 kufanya kitu ambacho pengine alichukua Kiasi nontrivial ya muda 557 00:25:03,760 --> 00:25:06,080 kutekeleza tu kuwa amusing kwa njia hii. 558 00:25:06,080 --> 00:25:08,430 Lakini hiyo yote majipu chini ya chini ya Hood. 559 00:25:08,430 --> 00:25:11,570 Lakini, bila shaka, kujirudia ni zaidi ya geekier 560 00:25:11,570 --> 00:25:13,880 mfano miongoni mwa mbinu hizo maalum. 561 00:25:13,880 --> 00:25:16,880 Na hakika kuna watu wengine huko nje pamoja kwamba sisi labda na hata 562 00:25:16,880 --> 00:25:18,230 aligundua bado tu. 563 00:25:18,230 --> 00:25:22,830 >> Hivyo kuchukua kuangalia, au kufikiria sasa mpango yafuatayo, 564 00:25:22,830 --> 00:25:24,830 na kwa hakika kunyakua yoyote ya hizi njia yako nje. 565 00:25:24,830 --> 00:25:28,820 Mimi nina kwenda kwenda mbele na kufungua mpango hiyo ni 566 00:25:28,820 --> 00:25:30,920 kwenda kujaribu wabadilishane maadili miwili. 567 00:25:30,920 --> 00:25:33,210 Lakini kabla ya kwenda huko, hebu kufanya hivyo. 568 00:25:33,210 --> 00:25:38,500 Je, tunaweza kupata moja zaidi kujitolea, nadhani? 569 00:25:38,500 --> 00:25:40,480 Je, wewe kama kujitolea? 570 00:25:40,480 --> 00:25:40,980 Hakuna? 571 00:25:40,980 --> 00:25:41,890 Kuja juu juu. 572 00:25:41,890 --> 00:25:42,390 Kuja juu juu. 573 00:25:42,390 --> 00:25:42,890 Sawa. 574 00:25:42,890 --> 00:25:44,136 Hivyo jina lako ni lipi? 575 00:25:44,136 --> 00:25:44,810 >> LAUREN: Lauren. 576 00:25:44,810 --> 00:25:45,768 >> DAVID J. Malan: Lauren. 577 00:25:45,768 --> 00:25:46,890 Kuja juu juu, Lauren. 578 00:25:46,890 --> 00:25:50,140 Hivyo Lauren ni kuwa changamoto hapa kama ifuatavyo. 579 00:25:50,140 --> 00:25:52,310 Vyema kukutana na wewe. 580 00:25:52,310 --> 00:25:55,730 Hivyo Lauren hapa ina mbele vikombe yake tupu miwili. 581 00:25:55,730 --> 00:25:57,570 Na tuna baadhi ya machungwa juisi na baadhi ya maziwa 582 00:25:57,570 --> 00:26:00,301 na tunakwenda kwenda mbele na kufanya yafuatayo. 583 00:26:00,301 --> 00:26:01,550 Sisi ni kwenda tu kujaza hii. 584 00:26:01,550 --> 00:26:07,840 Ounces chache ya maziwa hapa na hebu kujaza kidogo maji ya machungwa zaidi ya hapa. 585 00:26:07,840 --> 00:26:11,475 >> Na mbele ya yote ya wanachama hao watazamaji, 586 00:26:11,475 --> 00:26:13,550 wabadilishane maadili wawili wa vikombe haya. 587 00:26:13,550 --> 00:26:16,970 Kuweka maji ya machungwa katika kikombe maziwa na maziwa katika maji ya machungwa kikombe. 588 00:26:16,970 --> 00:26:22,380 589 00:26:22,380 --> 00:26:26,150 Jinsi gani unaweza kufanya hivyo kama wewe walikuwa katika nyumbani na alikuwa na upatikanaji wa vifaa vingine? 590 00:26:26,150 --> 00:26:27,400 LAUREN: Weka ndani ya kikombe mwingine. 591 00:26:27,400 --> 00:26:28,191 DAVID J. Malan: Sawa. 592 00:26:28,191 --> 00:26:31,940 Basi hebu na muda kutofautiana, ikiwa sisi. 593 00:26:31,940 --> 00:26:35,871 Na kwenda mbele sasa na kutekeleza hiyo swapping utaratibu. 594 00:26:35,871 --> 00:26:36,370 Hivyo, nzuri. 595 00:26:36,370 --> 00:26:41,490 Tumekuwa kuweka OJ katika muda kutofautiana, maziwa katika OJ kutofautiana, 596 00:26:41,490 --> 00:26:44,481 na sasa kutofautiana muda ndani ya kutofautiana maziwa. 597 00:26:44,481 --> 00:26:44,980 SAWA. 598 00:26:44,980 --> 00:26:48,740 Hivyo vizuri sana kufanyika hadi sasa. 599 00:26:48,740 --> 00:26:50,990 Hivyo ni zamu nje kushikilia kwamba wazo kwa muda tu. 600 00:26:50,990 --> 00:26:54,479 Hapa, tu geek ni juu kidogo, hii itakuwa sambamba C kificho 601 00:26:54,479 --> 00:26:55,520 kwamba sisi tu kutekelezwa. 602 00:26:55,520 --> 00:26:58,650 Tulikuwa na pembejeo mbili, a na b, wote wawili wa ambayo tutaweza kusema tu kwa unyenyekevu ni 603 00:26:58,650 --> 00:26:59,260 int ya. 604 00:26:59,260 --> 00:27:02,780 Na taarifa hapa, kama nataka wabadilishane maadili ya vigezo mbili, a na b, 605 00:27:02,780 --> 00:27:06,890 sisi kweli haja middleman, kutofautiana kwa muda, kikombe muda, 606 00:27:06,890 --> 00:27:10,830 ndani ambayo the kumwaga moja ya maadili hivyo kwamba tuna placeholder kwa ajili yake. 607 00:27:10,830 --> 00:27:13,480 Lakini basi ni sawa kabisa kificho kama Lauren hapa kutekelezwa. 608 00:27:13,480 --> 00:27:15,500 >> Sasa, tu kupata crazier kidogo, zinageuka 609 00:27:15,500 --> 00:27:20,930 kwamba unaweza kufanya hivyo bila kutofautiana kwa muda. 610 00:27:20,930 --> 00:27:24,870 Kwa kufanya hivyo vizuri, ingawa, tunakwenda kuwa na kudanganya kwa baadhi kemia. 611 00:27:24,870 --> 00:27:26,380 Tuna baadhi ya vikombe ziada hapa. 612 00:27:26,380 --> 00:27:29,600 Hivyo jambo karibu kwamba inaonekana kama maziwa na maji perhaps-- 613 00:27:29,600 --> 00:27:34,090 au maziwa na OJ-- ni tuna baadhi maji, hivyo tutaweza kujaza hii moja up 614 00:27:34,090 --> 00:27:36,486 kwa ounces chache ya maji safi. 615 00:27:36,486 --> 00:27:38,332 Kwamba pengine kupita kiasi. 616 00:27:38,332 --> 00:27:38,832 Naam. 617 00:27:38,832 --> 00:27:39,934 Hiyo ni dhahiri sana. 618 00:27:39,934 --> 00:27:40,600 Kushikilia sec moja. 619 00:27:40,600 --> 00:27:43,520 620 00:27:43,520 --> 00:27:48,420 >> Na sasa tuna mafuta, ambayo, kama mimi kukumbuka kutoka katikati shule kemia darasani, 621 00:27:48,420 --> 00:27:49,990 hopefully haina kuchanganya na maji. 622 00:27:49,990 --> 00:27:53,650 Lakini aina ya aina ya Inaonekana kama maziwa na OJ. 623 00:27:53,650 --> 00:27:55,760 Hivyo sasa, bila ya kutumia kutofautiana kwa muda, 624 00:27:55,760 --> 00:27:59,260 Unaweza wabadilishane maadili hayo mawili? 625 00:27:59,260 --> 00:28:03,884 Hivyo mafuta huenda katika kikombe maji, maji huenda katika kikombe mafuta. 626 00:28:03,884 --> 00:28:04,800 LAUREN: Hakuna vikombe vingine? 627 00:28:04,800 --> 00:28:05,940 DAVID J. Malan: Hakuna vikombe vingine. 628 00:28:05,940 --> 00:28:07,860 Na nimekuwa si kweli kupimwa huu kabla ya mwaka huu 629 00:28:07,860 --> 00:28:10,110 hivyo mimi sijui kama hii mapenzi kweli kazi kemikali. 630 00:28:10,110 --> 00:28:16,130 631 00:28:16,130 --> 00:28:18,650 Kwamba hakuwa walidhani kutokea. 632 00:28:18,650 --> 00:28:19,761 Je, ni kazi? 633 00:28:19,761 --> 00:28:20,260 Sawa. 634 00:28:20,260 --> 00:28:20,990 Hivyo kutenganisha? 635 00:28:20,990 --> 00:28:21,490 Nzuri. 636 00:28:21,490 --> 00:28:24,714 Sasa sisi got kupata maji, katika kikombe mengine. 637 00:28:24,714 --> 00:28:27,630 Nadhifu kemia concentrators naweza pengine kufanya hivyo bora kuliko mimi. 638 00:28:27,630 --> 00:28:28,510 >> LAUREN: maji ni juu ya chini. 639 00:28:28,510 --> 00:28:31,910 >> DAVID J. Malan: water-- iliyokuwa nini msingi mara ya mwisho sisi alifanya hivyo. 640 00:28:31,910 --> 00:28:33,950 Una kufanya hivyo ili haki. 641 00:28:33,950 --> 00:28:34,450 Naam. 642 00:28:34,450 --> 00:28:35,270 Hiyo ni sawa. 643 00:28:35,270 --> 00:28:37,290 Hivyo basi, tuna vikombe viwili vya mafuta. 644 00:28:37,290 --> 00:28:37,790 SAWA. 645 00:28:37,790 --> 00:28:38,510 Hiyo ni sawa. 646 00:28:38,510 --> 00:28:40,110 Lakini kemikali kama hii kazi ya I-- 647 00:28:40,110 --> 00:28:41,200 >> LAUREN: Hii ni maji. 648 00:28:41,200 --> 00:28:41,930 >> DAVID J. Malan: Hiyo ni hasa maji. 649 00:28:41,930 --> 00:28:42,430 Sawa. 650 00:28:42,430 --> 00:28:44,210 Lakini hiyo ni bado kikombe sawa mbele. 651 00:28:44,210 --> 00:28:47,570 Hivyo kumwaga it-- kujaribu zaidi ya hapo. 652 00:28:47,570 --> 00:28:49,300 SAWA. 653 00:28:49,300 --> 00:28:51,010 Hii ni matumizi mazuri ya muda darasani leo. 654 00:28:51,010 --> 00:28:51,510 SAWA. 655 00:28:51,510 --> 00:28:53,890 Hivyo sasa we-- nzuri. 656 00:28:53,890 --> 00:28:55,460 Aina ya. 657 00:28:55,460 --> 00:28:55,960 Sawa. 658 00:28:55,960 --> 00:28:56,690 Nzuri sana. 659 00:28:56,690 --> 00:29:00,006 Asante kwa Lauren. 660 00:29:00,006 --> 00:29:01,950 Vizuri sana kufanyika. 661 00:29:01,950 --> 00:29:04,570 >> Hivyo tu kwa pigo akili yako, na hii ni labda kitu 662 00:29:04,570 --> 00:29:08,660 kucheza na kama wewe kama katika CS50 ID, unaweza, kwa kweli, wabadilishane vigezo mbili 663 00:29:08,660 --> 00:29:11,470 bila kutumia integer muda. 664 00:29:11,470 --> 00:29:13,060 Na hii ni sambamba C kanuni. 665 00:29:13,060 --> 00:29:16,110 Na kama unakumbuka kutoka mwisho Jumatano, sisi kuletwa, ikiwa ufupi, 666 00:29:16,110 --> 00:29:19,720 baadhi ya kampuni mpya katika C. Na anafanya mtu yeyote kukumbuka yale karoti kidogo 667 00:29:19,720 --> 00:29:23,660 ishara ni kwamba pembe kidogo ishara kutoka keyboard inawakilisha? 668 00:29:23,660 --> 00:29:26,003 Nini bitwise operator? 669 00:29:26,003 --> 00:29:26,770 >> Watazamaji: EXOR. 670 00:29:26,770 --> 00:29:27,645 >> DAVID J. Malan: EXOR. 671 00:29:27,645 --> 00:29:28,560 Au kipekee. 672 00:29:28,560 --> 00:29:32,920 Hivyo kama unataka, kwa ajili ya kujifurahisha katika nyumbani, awape na b mbili holela 673 00:29:32,920 --> 00:29:36,072 maadili kama yoyote eight-- na mimi bila kuchagua thamani bit nane. 674 00:29:36,072 --> 00:29:38,530 Kama wewe kufanya hili kwa bits 32, itabidi haraka sana kupata kuchoka. 675 00:29:38,530 --> 00:29:42,150 Lakini tu kutoa kidogo nane thamani hiyo ni chochote, moja au mbili, 676 00:29:42,150 --> 00:29:43,790 na kutoa b thamani sawa. 677 00:29:43,790 --> 00:29:46,810 Na kisha kwa kutumia ufafanuzi ya XOR kutoka Jumatano iliyopita, 678 00:29:46,810 --> 00:29:52,560 kuomba kwamba kidogo kidogo, kila mmoja wale bits nane katika kila moja ya na b, 679 00:29:52,560 --> 00:29:54,980 na kisha kufanya hivyo hasa kwa kanuni hii. 680 00:29:54,980 --> 00:29:58,170 Na si sahihi kile unaweza kuona hapa kwenye screen. 681 00:29:58,170 --> 00:30:02,100 Ni kweli majipu chini tatu shughuli XOR 682 00:30:02,100 --> 00:30:05,910 na kwa namna fulani magically na b atawabadilishia vyeo 683 00:30:05,910 --> 00:30:08,010 bila ya kupoteza taarifa yoyote. 684 00:30:08,010 --> 00:30:11,580 >> Hivyo mafuta na maji hila ni karibu halisi dunia mwili 685 00:30:11,580 --> 00:30:12,980 Mimi naweza kufikiria kuiga jambo hilo. 686 00:30:12,980 --> 00:30:15,950 Lakini ni hakika rahisi kutumia variable muda, 687 00:30:15,950 --> 00:30:16,920 kama katika kesi hii hapa. 688 00:30:16,920 --> 00:30:21,190 Na hii pia ni fursa kusema, pia, aina hii ya optimization ndogo, 689 00:30:21,190 --> 00:30:23,590 kama kompyuta mwanasayansi kusema, wakati aina ya furaha 690 00:30:23,590 --> 00:30:27,060 BRAG kuhusu jinsi alifanya hivyo bila kama swapping na kutofautiana ziada, 691 00:30:27,060 --> 00:30:28,640 si wote kwamba kulazimisha. 692 00:30:28,640 --> 00:30:31,619 Kwa sababu kuokoa bits 32, kama katika kesi ya int halisi, 693 00:30:31,619 --> 00:30:33,410 si yote ya kulazimisha juu ya mfumo ambapo 694 00:30:33,410 --> 00:30:36,722 unaweza kuwa na kutumia mamia ya megabytes au hata zaidi kumbukumbu hizo siku hizi. 695 00:30:36,722 --> 00:30:38,680 Na kwa kweli, wakati tunapata kwa baadaye tatizo seti 696 00:30:38,680 --> 00:30:41,010 na wewe kutekeleza Spell kusahihisha na utasikia 697 00:30:41,010 --> 00:30:43,550 kuwa changamoto ya kufanya hivyo kwa hii RAM kidogo na kidogo 698 00:30:43,550 --> 00:30:46,820 wakati iwezekanavyo juu ya computer-- wewe bado 699 00:30:46,820 --> 00:30:50,160 na wiki kutekeleza it-- utasikia have-- wewe utakuwa na 700 00:30:50,160 --> 00:30:51,799 changamoto za kupunguza rasilimali hizo. 701 00:30:51,799 --> 00:30:53,840 Na kwamba ni kweli tu tukio muhula huu 702 00:30:53,840 --> 00:30:57,940 ambapo utasikia kuwa na moyo kunyoa mbali hata utendaji bora 703 00:30:57,940 --> 00:30:59,340 gharama vinginevyo. 704 00:30:59,340 --> 00:31:02,200 >> Hivyo what-- jinsi gani tunaweza kuona hii katika kanuni halisi? 705 00:31:02,200 --> 00:31:04,530 Hebu kwenda mbele sasa na kufungua mfano 706 00:31:04,530 --> 00:31:07,700 kwamba kwa makusudi inaitwa Hakuna Swap kwa sababu hana 707 00:31:07,700 --> 00:31:10,670 kwa kweli wabadilishane vigezo kama wewe kweli kutarajia. 708 00:31:10,670 --> 00:31:12,260 Hivyo hebu tuangalie. 709 00:31:12,260 --> 00:31:17,050 Hapa ni mpango kwamba hana CS50 maktaba kinachoendelea, tu kiwango I / O. 710 00:31:17,050 --> 00:31:19,560 Sasa tuna mfano kwa wabadilishane juu juu ambayo tu 711 00:31:19,560 --> 00:31:21,540 ina maana ni got kuelezwa baadaye. 712 00:31:21,540 --> 00:31:22,550 Na hapa ni kuu. 713 00:31:22,550 --> 00:31:26,000 >> Mimi kiholela kupewa x na y, mtiririko huo, maadili moja na mbili 714 00:31:26,000 --> 00:31:28,590 sababu tu wao ni mdogo na rahisi kufikiria. 715 00:31:28,590 --> 00:31:32,280 Na kisha mimi tu na kundi la printfs ambapo nina sanity hundi. x ni 1 716 00:31:32,280 --> 00:31:35,110 na y ni 2 ni labda nini printfs wale watasema. 717 00:31:35,110 --> 00:31:36,530 Hivyo hakuna uchawi hivi sasa. 718 00:31:36,530 --> 00:31:40,100 >> Kisha mimi nina kwenda kudai kwa magazeti def, swapping nukta nukta nukta. 719 00:31:40,100 --> 00:31:43,730 Mimi nina kwenda kuwaita wabadilishane kazi, kupita katika x na y. 720 00:31:43,730 --> 00:31:47,350 Na hebu kudhani kwa sasa kwamba wabadilishane unatekelezwa hasa 721 00:31:47,350 --> 00:31:49,930 kama ilivyokuwa wakati iliyopita kwa variable muda. 722 00:31:49,930 --> 00:31:52,670 Na hivyo mimi kudai kwa ujasiri, walibadilishana. 723 00:31:52,670 --> 00:31:55,429 x ni sasa hii na y ni sasa huo. 724 00:31:55,429 --> 00:31:57,220 Lakini faili, bila shaka, inaitwa Hakuna Swap. 725 00:31:57,220 --> 00:31:58,678 Basi hebu kweli kuona nini kinatokea. 726 00:31:58,678 --> 00:32:04,450 Kama mimi kukusanya hakuna wabadilishane na kisha kufanya ./noswap, x ni 1, y ni 2. 727 00:32:04,450 --> 00:32:05,770 Swapping swapped. 728 00:32:05,770 --> 00:32:07,200 x ni 1, y ni 2. 729 00:32:07,200 --> 00:32:11,980 Hivyo ni kweli inaonekana kuwa kiujanja hata ingawa swap-- hebu kitabu chini now-- 730 00:32:11,980 --> 00:32:16,542 unatekelezwa hasa kwa kificho mimi mapendekezo wakati iliyopita. 731 00:32:16,542 --> 00:32:19,000 Hivyo sisi siyo kwenda kupata dhana na mambo XOR kwa sasa. 732 00:32:19,000 --> 00:32:21,890 Hii pia, wanapaswa kufanya kazi tu kama maziwa na OJ, 733 00:32:21,890 --> 00:32:25,820 lakini haina wanaonekana kuwa kazi. 734 00:32:25,820 --> 00:32:27,180 >> Basi hebu kufanya hivyo tena. 735 00:32:27,180 --> 00:32:29,310 Labda mimi tu hakuwa mbio haki. 736 00:32:29,310 --> 00:32:32,010 Basi hebu kukimbia Hakuna Swap tena. 737 00:32:32,010 --> 00:32:32,900 Labda I-- hakuna. 738 00:32:32,900 --> 00:32:34,400 Hivyo si tu kufanya kazi. 739 00:32:34,400 --> 00:32:36,060 Basi hebu kufanya kidogo sanity hundi. 740 00:32:36,060 --> 00:32:39,690 Hebu kwenda mbele hapa katika Swap na kuongeza tu, kusubiri dakika, 741 00:32:39,690 --> 00:32:43,856 a ni% i / n na hebu kuziba-katika thamani ya. 742 00:32:43,856 --> 00:32:45,730 Kwa sababu mimi kwa kweli wanataka kuona nini kinaendelea. 743 00:32:45,730 --> 00:32:47,570 Na hakika, huu ni debugging mbinu 744 00:32:47,570 --> 00:32:50,028 kwamba unaweza kuwa na kutumia katika masaa ya ofisi au nyumbani tayari, 745 00:32:50,028 --> 00:32:53,560 sawa na nusu ya kwanza ya Dan Video Armendáriz katika PSET3 746 00:32:53,560 --> 00:32:56,870 eti sisi ilianzisha magazeti def kama mbinu ilipendekeza, angalau 747 00:32:56,870 --> 00:32:58,080 kwa ajili ya kesi rahisi. 748 00:32:58,080 --> 00:33:01,720 Hebu kwenda mbele na kukimbia kufanya hakuna wabadilishane tena, ./noswap. 749 00:33:01,720 --> 00:33:04,370 750 00:33:04,370 --> 00:33:05,840 >> Kuvutia. 751 00:33:05,840 --> 00:33:11,670 Hivyo taarifa kile inaonekana kuwa kweli. x ni 1, y ni 2, lakini ni 2 wakati b ni 1. 752 00:33:11,670 --> 00:33:16,790 Hivyo wale wawili namna fulani got walibadilishana lakini x na y si kupata swapped. 753 00:33:16,790 --> 00:33:21,090 Hivyo kuwa wazi, nini kinatokea yaani, huku nina x na y 754 00:33:21,090 --> 00:33:25,380 na wale ni vigezo mitaa katika wigo wa kuu, mimi nina kupita katika x na y 755 00:33:25,380 --> 00:33:26,170 wabadilishane. 756 00:33:26,170 --> 00:33:29,080 Sasa, wabadilishane, kama kazi tofauti, ni huru na simu hoja yake 757 00:33:29,080 --> 00:33:30,590 au vigezo wake chochote anataka. 758 00:33:30,590 --> 00:33:33,280 Foo au bar au x au y au au b. 759 00:33:33,280 --> 00:33:36,870 Tu kufanya wazi kwamba wao ni si sawa na x na y per se, 760 00:33:36,870 --> 00:33:38,020 Nilivyosema a na b. 761 00:33:38,020 --> 00:33:40,040 Lakini tunaweza kuwaita chochote tunataka. 762 00:33:40,040 --> 00:33:43,960 >> Na hivyo inaonekana kama wabadilishane ni kuwa alipita 763 00:33:43,960 --> 00:33:48,980 x-- AKA a-- na ni kuwa alipita y-- AKA b. 764 00:33:48,980 --> 00:33:51,900 Kwa namna fulani mistari watatu hawa ni swapping maadili hayo hasa 765 00:33:51,900 --> 00:33:53,510 kama Lauren alifanya na maziwa na OJ. 766 00:33:53,510 --> 00:33:56,010 Lakini wakati sisi magazeti nje maadili, a na b 767 00:33:56,010 --> 00:34:01,340 ni kweli wabadilishane lakini x na y hawana mabadiliko kwao. 768 00:34:01,340 --> 00:34:03,150 Kumbuka kwamba x na y ni hapa. 769 00:34:03,150 --> 00:34:05,320 >> Ili tuweze kuona hii kupitia mbinu nyingine pia. 770 00:34:05,320 --> 00:34:08,110 Na hii pia ni mbinu iliyoingia katika tatizo kuweka tatu. 771 00:34:08,110 --> 00:34:10,780 Hebu kwenda mbele na kufanya hili katika CS50 ID ikiwa wewe si tayari. 772 00:34:10,780 --> 00:34:13,730 Upande wa kulia upande sisi na hii tabo Debugger. 773 00:34:13,730 --> 00:34:16,159 Na kama wewe kufungua hili, kuna baadhi ya taarifa arcane 774 00:34:16,159 --> 00:34:17,530 hiyo ni kutupwa katika wewe awali. 775 00:34:17,530 --> 00:34:19,310 Lakini hebu tease hii mbali kweli haraka. 776 00:34:19,310 --> 00:34:21,620 >> Hivyo moja, unaweza kuona vigezo mitaa. 777 00:34:21,620 --> 00:34:26,230 Zinageuka kuwa kujenga katika CS50 IDE, na mengi ya mazingira ya programu zaidi 778 00:34:26,230 --> 00:34:28,060 ujumla, ni HatiJava. 779 00:34:28,060 --> 00:34:31,340 Chombo kwamba utapata kuibua kuona nini kinaendelea ndani ya mpango wako 780 00:34:31,340 --> 00:34:34,380 bila ya kuwa na mapumziko kwa kuongeza printfs na kuandaa na kuendesha 781 00:34:34,380 --> 00:34:37,588 na kuongeza printf na kuandaa na mbio, ambayo tayari, katika masaa ya ofisi 782 00:34:37,588 --> 00:34:40,070 au nyumbani, pengine kupata pretty nyeti. 783 00:34:40,070 --> 00:34:43,090 >> Hivyo hapa, katika muda tu, tuko kwenda kuona katika muda halisi 784 00:34:43,090 --> 00:34:44,760 maadili ya vigezo yetu ya ndani. 785 00:34:44,760 --> 00:34:47,880 Sisi ni pia kwenda kuwa na uwezo wa kuweka kile kinachojulikana breakpoints ambayo 786 00:34:47,880 --> 00:34:52,570 fursa katika mpango wangu kutulia utekelezaji katika mstari maalum ya kificho 787 00:34:52,570 --> 00:34:53,710 kwamba mimi nina curious kuhusu. 788 00:34:53,710 --> 00:34:54,210 Sawa? 789 00:34:54,210 --> 00:34:55,969 Programu hizi kukimbia katika mgawanyiko wa pili. 790 00:34:55,969 --> 00:35:00,450 Ni aina ya nzuri kwa sisi binadamu polepole kuwa na uwezo wa kutulia, kuchukua muda, angalia 791 00:35:00,450 --> 00:35:02,380 nini kinaendelea karibu mstari fulani ya kificho 792 00:35:02,380 --> 00:35:05,050 bila mpango kulima kwa njia hiyo na kumaliza kabisa. 793 00:35:05,050 --> 00:35:08,510 Hivyo breakpoints kwenda kuruhusu sisi kuvunja na kutulia katika hatua fulani. 794 00:35:08,510 --> 00:35:12,990 >> Wito stack ni njia dhana ya kusema nini kazi kwa sasa 795 00:35:12,990 --> 00:35:14,140 kuitwa kwa sasa. 796 00:35:14,140 --> 00:35:15,370 Kuu daima wito kwanza. 797 00:35:15,370 --> 00:35:17,230 Lakini kama Kuu wito kazi kuitwa Swap, 798 00:35:17,230 --> 00:35:20,470 sisi ni kweli kwenda kuona hii mnara wa kazi ambayo yamekuwa 799 00:35:20,470 --> 00:35:22,400 kuitwa katika reverse chronological ili. 800 00:35:22,400 --> 00:35:23,310 Basi hebu angalia hiyo. 801 00:35:23,310 --> 00:35:24,327 >> Mimi nina kwenda kuvuta nje. 802 00:35:24,327 --> 00:35:25,660 Mimi nina kwenda nyuma kificho wangu. 803 00:35:25,660 --> 00:35:27,540 Na tu kwa sababu nataka kuwa pedantic hapa, 804 00:35:27,540 --> 00:35:31,100 Mimi nina kwenda mbele na bonyeza tu upande wa kushoto wa mstari tano. 805 00:35:31,100 --> 00:35:32,830 Na kwamba inajenga dot nyekundu. 806 00:35:32,830 --> 00:35:36,200 Na taarifa kwenye upande wa kulia kwamba HatiJava anajua, hey, 807 00:35:36,200 --> 00:35:41,020 I just alisema breakpoint katika mstari noswap.c tano, hasa 808 00:35:41,020 --> 00:35:42,480 katika mstari wa kanuni. 809 00:35:42,480 --> 00:35:45,090 Hivyo HatiJava anajua kwamba mimi kuwa ameomba kwamba wakati mwingine 810 00:35:45,090 --> 00:35:48,530 Mimi kuendesha mpango ni yangu pause utekelezaji huko badala ya 811 00:35:48,530 --> 00:35:50,390 mbio jambo zima super haraka. 812 00:35:50,390 --> 00:35:53,889 >> Hivyo sasa mimi nina kwenda bonyeza Debug kifungo juu sana ya IDE 813 00:35:53,889 --> 00:35:55,430 na kwamba itakuja kufanya yafuatayo. 814 00:35:55,430 --> 00:36:00,680 Ni kwenda kufungua awali kiasi fulani inatisha kuangalia wastaafu pili window-- 815 00:36:00,680 --> 00:36:02,679 debugging kijijini kutoka mwenyeji hizo na such-- 816 00:36:02,679 --> 00:36:04,970 na tutaweza kurudi kwa nini zote kwamba maana kabla ya muda mrefu. 817 00:36:04,970 --> 00:36:09,020 Lakini jambo muhimu kwa sasa ni kwamba kwamba dot nyekundu ilikumbwa, 818 00:36:09,020 --> 00:36:11,735 HatiJava ina makusudi paused execution-- 819 00:36:11,735 --> 00:36:15,560 si juu ya mstari huo per se lakini juu ya kwanza mstari wa kanuni halisi katika kazi hiyo. 820 00:36:15,560 --> 00:36:18,040 Na hii ndiyo maana mstari saba ni sasa yalionyesha katika njano. 821 00:36:18,040 --> 00:36:20,550 >> Na sasa hebu tuangalie katika upande wa kulia. 822 00:36:20,550 --> 00:36:27,300 Inaonekana kama, kwa default, vizuri kutosha, x ina thamani gani? 823 00:36:27,300 --> 00:36:27,860 0. 824 00:36:27,860 --> 00:36:29,750 Na y ina thamani gani? 825 00:36:29,750 --> 00:36:30,410 Sifuri. 826 00:36:30,410 --> 00:36:35,540 Na hiyo ndiyo kutarajiwa kwa maana ya kwamba x na y-- kwamba njano line-- ina 827 00:36:35,540 --> 00:36:36,770 haitekelezwi bado. 828 00:36:36,770 --> 00:36:38,510 Hivyo x haipaswi kuwa thamani 1. 829 00:36:38,510 --> 00:36:41,470 Ni inaweza kuwa thamani nyingine yoyote, kinachojulikana takataka thamani. 830 00:36:41,470 --> 00:36:44,320 Na tulipata bahati kwa kuwa ni sifuri katika hatua hii, kimsingi. 831 00:36:44,320 --> 00:36:46,400 >> Hivyo sasa kuna wachache tu vifungo tunahitaji huduma 832 00:36:46,400 --> 00:36:48,100 kuhusu wakati debugging kwa njia hii. 833 00:36:48,100 --> 00:36:49,970 Taarifa hapa, tuna kifungo Play. 834 00:36:49,970 --> 00:36:51,877 Na kama sisi kucheza au kugongwa kuendelea, kwamba tu 835 00:36:51,877 --> 00:36:53,710 kwenda kukimbia kupitia wengine wa mpango 836 00:36:53,710 --> 00:36:55,300 au mpaka hits breakpoint mwingine. 837 00:36:55,300 --> 00:36:56,910 Lakini nimepata si kuweka yoyote nyingine breakpoints hivyo ni tu 838 00:36:56,910 --> 00:36:58,118 kwenda kukimbia kwa njia ya mwisho. 839 00:36:58,118 --> 00:37:00,280 Kwamba aina ya kushindwa Madhumuni ya poking kuzunguka. 840 00:37:00,280 --> 00:37:03,290 >> Hivyo badala yake, mimi huduma ya juu alama hizi na haki. 841 00:37:03,290 --> 00:37:05,360 Na kama mimi hover juu yao, kama ni lazima pia, 842 00:37:05,360 --> 00:37:07,450 utaona kidogo tips-- chombo tips. 843 00:37:07,450 --> 00:37:09,020 Hii ni moja ya hatua ya juu. 844 00:37:09,020 --> 00:37:11,290 Sasa kwa kuwa haina maana ruka mstari kufuatia wa kanuni. 845 00:37:11,290 --> 00:37:14,840 Hiyo ina maana tu nitafanya hivyo na hoja ya pili, hoja ya pili, 846 00:37:14,840 --> 00:37:15,580 hoja ya pili. 847 00:37:15,580 --> 00:37:17,610 Kwa maneno mengine, kupitia kuwa kifungo, naweza kutembea 848 00:37:17,610 --> 00:37:20,390 kupitia wangu hatua kificho moja kwa wakati mmoja. 849 00:37:20,390 --> 00:37:21,914 Mstari kwa mstari, literally. 850 00:37:21,914 --> 00:37:23,830 Sasa, na haki ya kwamba, kuna mtu mwingine 851 00:37:23,830 --> 00:37:25,163 kwamba tutaweza kuona katika muda tu. 852 00:37:25,163 --> 00:37:27,820 Hii ni kile kinachoitwa Hatua Katika icon hiyo ni 853 00:37:27,820 --> 00:37:30,300 inaenda naomba kupiga mbizi ndani ya kazi nyingine. 854 00:37:30,300 --> 00:37:31,800 Lakini hebu angalia hii katika muda tu. 855 00:37:31,800 --> 00:37:33,280 Hivyo nina kwenda click hatua ya juu. 856 00:37:33,280 --> 00:37:35,820 Na sasa taarifa kama mimi bonyeza kifungo hii kulia juu, 857 00:37:35,820 --> 00:37:41,260 macho yako takribani chini ya Mitaa Vigezo na kuona nini kinatokea kwa x. 858 00:37:41,260 --> 00:37:44,115 x ni sasa 1 kwa sababu njano mstari sasa kunyongwa 859 00:37:44,115 --> 00:37:45,840 na tumekuwa wakiongozwa juu ya mstari 8. 860 00:37:45,840 --> 00:37:49,840 Na katika muda tu y lazima hopefully kuwa 2. 861 00:37:49,840 --> 00:37:52,330 >> Sasa, kitu ambacho kuvutia hutokea kwa kidogo. 862 00:37:52,330 --> 00:37:53,390 Haya yote ni ni printf. 863 00:37:53,390 --> 00:37:58,010 Na taarifa, katika terminal yangu sekondari dirisha, naona pato la magazeti def. 864 00:37:58,010 --> 00:38:01,080 Na sasa nina kufanya uamuzi kama programu. 865 00:38:01,080 --> 00:38:04,360 Siwezi hatua ya juu ya mstari huu wa kanuni, utekelezaji yake lakini si 866 00:38:04,360 --> 00:38:06,220 kupata curious kuhusu nini ndani. 867 00:38:06,220 --> 00:38:11,130 Au mimi kweli anaweza hatua ndani yake na kuingia ndani ya Swap yenyewe. 868 00:38:11,130 --> 00:38:12,340 Basi hebu kufanya mwisho. 869 00:38:12,340 --> 00:38:15,550 >> Hebu kwenda mbele na bonyeza si Vuka lakini Hatua Ndani. 870 00:38:15,550 --> 00:38:17,300 Ilani, kwa ghafla mabadiliko dirisha 871 00:38:17,300 --> 00:38:19,330 kuonyesha kwanza mstari wa kanuni katika Swap. 872 00:38:19,330 --> 00:38:20,710 Hiyo ni mstari 21. 873 00:38:20,710 --> 00:38:25,220 Na sasa, nini aina ya funky ni kwamba, kama ukiangalia zaidi ya hapa, kama ilivyotarajiwa, 874 00:38:25,220 --> 00:38:29,720 comma b ni 1 na 2, kwa mtiririko huo. 875 00:38:29,720 --> 00:38:33,840 Kwa nini ni temp 32767? 876 00:38:33,840 --> 00:38:36,560 Kukumbuka kwamba temp, kiasi kama kikombe tupu wakati iliyopita, 877 00:38:36,560 --> 00:38:38,980 ni alitangaza hapa kwenye mstari 21. 878 00:38:38,980 --> 00:38:43,390 Kwa nini 32,000- I mean, kwa nini ni ni baadhi tu ya thamani weird? 879 00:38:43,390 --> 00:38:43,890 Yeah? 880 00:38:43,890 --> 00:38:45,190 >> Watazamaji: Ni si initialized. 881 00:38:45,190 --> 00:38:46,940 >> DAVID J. Malan: Ni si initialized. 882 00:38:46,940 --> 00:38:49,370 Hivyo kompyuta yetu siku zote ina kumbukumbu ya kimwili. 883 00:38:49,370 --> 00:38:50,544 Daima ina RAM kimwili. 884 00:38:50,544 --> 00:38:52,710 Na kuna siku zote sifuri ya na moja ni katika huko, sawa? 885 00:38:52,710 --> 00:38:54,626 Kwa sababu sisi ni kutumia wetu kompyuta mchana kutwa, 886 00:38:54,626 --> 00:38:57,210 unatumia CS50 IDE au watumishi mchana kutwa. 887 00:38:57,210 --> 00:39:01,159 Hivyo kwamba RAM ama ina baadhi zeros au baadhi ya mtu au baadhi zeros na ndio. 888 00:39:01,159 --> 00:39:02,950 Hakuna jambo kama au si unatumia yao. 889 00:39:02,950 --> 00:39:05,270 Huwezi tu na tupu nafasi ambapo unataka vipande. 890 00:39:05,270 --> 00:39:06,850 Wao ni ama zeros na ndio. 891 00:39:06,850 --> 00:39:09,610 >> Hivyo zinageuka kuwa temp, kwa sababu tumekuwa si initialized bado, 892 00:39:09,610 --> 00:39:14,580 tuna wale bits 32 lakini wameweza si wamekuwa initialized na maadili yoyote inayojulikana. 893 00:39:14,580 --> 00:39:18,110 Kwa hiyo chochote wao walikuwa wengi hivi karibuni kutumika for-- wale 32 bits-- 894 00:39:18,110 --> 00:39:23,000 sisi ni kuona mabaki ya baadhi tu ya matumizi ya awali ya wale hasa 32 895 00:39:23,000 --> 00:39:23,500 bits. 896 00:39:23,500 --> 00:39:27,780 Haraka kama mimi bonyeza Vuka ingawa, phew, temp ni kwenda kupata thamani 1. 897 00:39:27,780 --> 00:39:31,600 Na kama mimi kufanya hivyo tena, a ni kwenda kuwa kutokana na thamani 2 898 00:39:31,600 --> 00:39:33,830 na kisha b ni kwenda wapewe thamani 1. 899 00:39:33,830 --> 00:39:36,390 >> Na hivyo nini ni nzuri sasa katika hatua hii ya hadithi 900 00:39:36,390 --> 00:39:39,750 ni kwamba HatiJava ni kunionyeshea, super polepole 901 00:39:39,750 --> 00:39:42,640 kwa kasi yangu mwenyewe, nini hali ya Swap ni. 902 00:39:42,640 --> 00:39:47,490 Lakini taarifa juu hapa, taarifa kwamba wito stack kweli 903 00:39:47,490 --> 00:39:49,180 ina tabaka mbili na hiyo. 904 00:39:49,180 --> 00:39:53,240 Sasa moja hiyo yalionyesha kama Wabadilishane, ikiwa mimi bonyeza Kuu badala yake, 905 00:39:53,240 --> 00:39:57,100 taarifa jinsi vigezo mitaa mabadiliko kwa sababu developer unaweza tu hop 906 00:39:57,100 --> 00:39:59,740 karibu na kwenda katika wigo yoyote tofauti. 907 00:39:59,740 --> 00:40:04,070 Hivyo hata kama sisi ni kufanya yote haya kazi na usahihi swapping na b, 908 00:40:04,070 --> 00:40:09,080 kama mimi kwenda na kurudi kati ya Swap ambapo ni 2 na b ni 1 na Kuu, 909 00:40:09,080 --> 00:40:11,851 ina Kuu wameathirika wakati wote? 910 00:40:11,851 --> 00:40:12,350 Hakuna 911 00:40:12,350 --> 00:40:13,930 Basi nini takeaway hapa? 912 00:40:13,930 --> 00:40:18,200 Naam, ni zamu nje kwamba wakati wowote wewe piga kazi kama Swap, 913 00:40:18,200 --> 00:40:21,600 na kupita hoja yake, ni nini wewe ni kupita kwa Swap kazi 914 00:40:21,600 --> 00:40:24,730 katika kesi hii ni nakala ya hoja hizo. 915 00:40:24,730 --> 00:40:28,620 Hivyo kama x na y ni kila mtiririko 32 bits, nini Swap ni kupata 916 00:40:28,620 --> 00:40:30,760 ni mbili mpya za mitaa vigezo, au hoja, 917 00:40:30,760 --> 00:40:34,380 kuitwa na b-- lakini hayo ni holela names-- lakini mfano wa zeros 918 00:40:34,380 --> 00:40:39,520 na ndio ndani ya b na lined up kwa kuwa kufanana na x na y 919 00:40:39,520 --> 00:40:42,610 lakini siyo kitu kimoja kama x na y. 920 00:40:42,610 --> 00:40:46,880 >> Ni kana kwamba Kuu ina juu ya kipande wake wa karatasi namba 1 na 2 kwa x na y, 921 00:40:46,880 --> 00:40:49,260 na kisha wakati ni mikono kwamba kipande cha karatasi kwa Byta, 922 00:40:49,260 --> 00:40:51,970 Wabadilishane haraka sana anapata kalamu yake mwenyewe, anaandika chini 923 00:40:51,970 --> 00:40:56,240 1 na 2 juu ya mwenyewe karatasi yake ya karatasi, mikono nyuma ya awali xy kwa Kuu 924 00:40:56,240 --> 00:40:58,790 na kisha anafanya yake mwenyewe Jambo kwa a na b. 925 00:40:58,790 --> 00:41:01,940 Na hii ni sasa super muhimu kwa sababu hii ina maana nontrivial 926 00:41:01,940 --> 00:41:06,260 kwa kweli kuandika kanuni sahihi kwa sababu inaweza kuonekana hatuwezi wabadilishane 927 00:41:06,260 --> 00:41:07,500 vigezo mbili. 928 00:41:07,500 --> 00:41:09,150 >> Nimeandika sahihi Swap kazi. 929 00:41:09,150 --> 00:41:12,770 Tumekuwa kutekelezwa kwa Lauren kama sahihi wabadilishane kazi katika hali halisi, 930 00:41:12,770 --> 00:41:16,700 lakini inaonekana hakuna hata mmoja kwamba masuala kama unaweza si kweli 931 00:41:16,700 --> 00:41:19,530 wabadilishane maadili mbili kwa moja. 932 00:41:19,530 --> 00:41:21,970 Hivyo tunahitaji njia nyingine kwa kweli kupata katika hili, 933 00:41:21,970 --> 00:41:24,472 na tunatakiwa kuwa na uwezo wa kweli kutatua tatizo hili. 934 00:41:24,472 --> 00:41:27,180 Na ni zamu nje na tutaweza kuja nyuma ya picha hii hasa 935 00:41:27,180 --> 00:41:30,500 kabla long-- hii ni njia moja ambayo unaweza kuteka kumbukumbu ya kompyuta yako. 936 00:41:30,500 --> 00:41:31,460 Ni tu mstatili. 937 00:41:31,460 --> 00:41:32,960 Unaweza kuteka ni yoyote idadi ya njia lakini ni 938 00:41:32,960 --> 00:41:35,740 rahisi kuteka ni kama mstatili kwa sababu zifuatazo. 939 00:41:35,740 --> 00:41:40,040 >> Sisi ni kwenda kuanza leo na zaidi ya kuzungumza juu ya kile kinachoitwa stack. 940 00:41:40,040 --> 00:41:43,870 Na stack ni tu chunk ya RAM-- chunk ya memory-- 941 00:41:43,870 --> 00:41:47,100 kwamba kazi wanapata kwa wakati wao ni kuitwa. 942 00:41:47,100 --> 00:41:49,800 Na hivyo zinageuka kuwa katika chini kabisa ya mkusanyiko huu 943 00:41:49,800 --> 00:41:53,590 Hapa ndipo wote wa Kuu ya vigezo mitaa na org C na org V na mambo ambayo yote 944 00:41:53,590 --> 00:41:56,950 ni kwenda na msingi. Na kama Kuu wito baadhi ya kazi nyingine kama Swap, 945 00:41:56,950 --> 00:42:00,330 vizuri, Swap ni kwenda kupata mwingine safu ya kumbukumbu up juu yake. 946 00:42:00,330 --> 00:42:04,490 >> Na hivyo tu kukupa haraka haraka haraka picha ya hii, kama mimi kwenda juu hapa 947 00:42:04,490 --> 00:42:09,450 na napenda kioo huu juu ya uendeshaji kama well-- nini kweli nina, 948 00:42:09,450 --> 00:42:12,100 kama sisi huduma tu kuhusu Chini ya picha hii kwa sasa, 949 00:42:12,100 --> 00:42:15,070 ni kwamba wakati mimi kuendesha programu na Kuu anapata kuitwa, 950 00:42:15,070 --> 00:42:18,330 Kuu ni kutolewa chunk ya RAM katika kompyuta yangu kuwa ni 951 00:42:18,330 --> 00:42:20,060 chini ya hii stack kinachojulikana. 952 00:42:20,060 --> 00:42:22,143 Na mimi nina kwenda kuteka ni makusudi kama mraba. 953 00:42:22,143 --> 00:42:24,540 Hivyo ni kama vipande 32 au ka nne. 954 00:42:24,540 --> 00:42:28,790 Na kama kazi hii kuu ina kutofautiana kuitwa x na thamani ya 1 955 00:42:28,790 --> 00:42:32,626 na ina kutofautiana kuitwa y na thamani ya 2, hiyo ni 956 00:42:32,626 --> 00:42:35,750 kama kuchukua ikilinganishwa na kiasi hiki cha kumbukumbu kwamba Kuu amepewa na uendeshaji 957 00:42:35,750 --> 00:42:38,850 mfumo na kugawa it up ili kwanza kutofautiana ndani unaendelea hapa, 958 00:42:38,850 --> 00:42:40,930 moja ya pili inakwenda hapa, na hiyo ni yake. 959 00:42:40,930 --> 00:42:45,590 >> Wakati Kuu wito Swap, Swap anapata kipande yake mwenyewe ya kumbukumbu 960 00:42:45,590 --> 00:42:48,280 kwamba tutaweza kuteka kama hii kutoka mfumo wa uendeshaji, 961 00:42:48,280 --> 00:42:50,820 na ni kwenda kuwa na wake vigezo mwenyewe ndani kwa kuzingatia 962 00:42:50,820 --> 00:42:53,825 juu ya utekelezaji wetu wa awali kwa vigezo mitaa 963 00:42:53,825 --> 00:42:58,010 na b ambayo awali kupata maadili ya 1 na 2. 964 00:42:58,010 --> 00:43:00,450 Lakini basi, kwa haraka kama Swap kificho executes, 965 00:43:00,450 --> 00:43:03,760 na Lauren kweli swaps OJ na maziwa, nini kinatokea? 966 00:43:03,760 --> 00:43:09,030 Naam, hii 2 ni kuwa 1, hii 1 ni kuwa na 2, na, kwa njia, 967 00:43:09,030 --> 00:43:13,360 kuna temp kutofautiana hiyo kuwa Wakati huo zima kutumika kwamba hatimaye 968 00:43:13,360 --> 00:43:14,470 huenda zake. 969 00:43:14,470 --> 00:43:16,720 Lakini haijalishi ni kiasi gani kazi ya kufanya 970 00:43:16,720 --> 00:43:22,160 katika mstari huu of-- katika nafasi hii ya kumbukumbu, x na y ni bila kuguswa kabisa. 971 00:43:22,160 --> 00:43:26,320 >> Hivyo tunahitaji baadhi ya njia ya kutoa Wabadilishane na kazi kama hiyo 972 00:43:26,320 --> 00:43:32,640 upatikanaji wa siri, kama wewe, kwa kazi like-- kwa kumbukumbu kama x na y. 973 00:43:32,640 --> 00:43:35,110 Basi hebu tuangalie mfano ambayo husaidia 974 00:43:35,110 --> 00:43:38,220 tuone nini hasa imekuwa ni kinachoendelea wakati huu mzima. 975 00:43:38,220 --> 00:43:40,284 Mimi kwenda mbele na kufungua Linganisha sifuri. 976 00:43:40,284 --> 00:43:42,200 Na mimi nina kwenda kuifunga HatiJava yetu, mimi nina kwenda 977 00:43:42,200 --> 00:43:44,360 kuifunga hii inatisha kuangalia ujumbe tu anasema, kusubiri dakika, 978 00:43:44,360 --> 00:43:45,800 uko katika debugging katikati. 979 00:43:45,800 --> 00:43:48,383 Mimi nina kwenda kujificha tabo hii hapa tu kurudi unyenyekevu. 980 00:43:48,383 --> 00:43:50,160 Hivyo msiwe na wasiwasi kama GDB ni kuuawa. 981 00:43:50,160 --> 00:43:53,910 Hiyo ina maana tu kwamba mpango ina wamekuwa kujiondoa, kwa makusudi katika kesi hiyo, 982 00:43:53,910 --> 00:43:54,820 na mimi. 983 00:43:54,820 --> 00:43:57,700 >> Na sasa kulinganisha sifuri gani hii. 984 00:43:57,700 --> 00:44:00,110 Mimi nina kutumia CS50 maktaba katika kiwango I / O. 985 00:44:00,110 --> 00:44:04,319 Mimi nimepata kazi kuu kwamba kwanza anasema, kusema kitu, na anapata kamba. 986 00:44:04,319 --> 00:44:06,110 Kisha anasema tena na anapata kamba nyingine. 987 00:44:06,110 --> 00:44:09,910 Na taarifa kwamba masharti hayo mawili zinaitwa s na t, kwa mtiririko huo. 988 00:44:09,910 --> 00:44:12,910 Na sasa mpango huu, kulinganisha Sifuri, madhumuni yake katika maisha, 989 00:44:12,910 --> 00:44:15,470 ni walidhani kuniambia, Je, mimi aina kitu kimoja? 990 00:44:15,470 --> 00:44:16,910 Na hivyo mimi nina kwenda nyuma wiki moja. 991 00:44:16,910 --> 00:44:19,950 Mimi nina kutumia alama yangu sawa sawa ambayo ni alama ya ubora. 992 00:44:19,950 --> 00:44:22,220 Si operator zoezi, usawa operator. 993 00:44:22,220 --> 00:44:23,890 Mimi kulinganisha tu s na t. 994 00:44:23,890 --> 00:44:27,470 >> Basi hebu kweli kwenda mbele na kufanya hili. 995 00:44:27,470 --> 00:44:32,680 Na mimi nina kwenda mbele na kufanya kulinganisha sifuri. 996 00:44:32,680 --> 00:44:35,110 Mimi nina kwenda kufanya ./comparezero. 997 00:44:35,110 --> 00:44:37,150 Na mimi nina kwenda mbele na kusema kitu 998 00:44:37,150 --> 00:44:43,450 kama, hebu kufanya mama katika lowercase na vipi kuhusu mama katika uppercase. 999 00:44:43,450 --> 00:44:45,034 Na bila shaka mimi aina ya mambo mbalimbali. 1000 00:44:45,034 --> 00:44:45,533 Sawa. 1001 00:44:45,533 --> 00:44:46,570 Hiyo ni kutarajiwa. 1002 00:44:46,570 --> 00:44:47,640 >> Hebu kukimbia tena. 1003 00:44:47,640 --> 00:44:49,740 Mara zote mbili kufanya ndogo, ndogo. 1004 00:44:49,740 --> 00:44:51,490 Kwamba inaonekana super kufanana na mimi. 1005 00:44:51,490 --> 00:44:52,930 Kuingia. 1006 00:44:52,930 --> 00:44:53,430 SAWA. 1007 00:44:53,430 --> 00:44:55,804 Labda ni tu weird kwa sababu siyo liking sarufi yangu. 1008 00:44:55,804 --> 00:44:59,930 Basi hebu kufanya mtaji Mama, mji mkuu Mama, kufanana. 1009 00:44:59,930 --> 00:45:01,490 Mambo mbalimbali. 1010 00:45:01,490 --> 00:45:03,907 >> Hivyo kwa nini ni kwamba? 1011 00:45:03,907 --> 00:45:06,240 Naam, nini hasa kinachoendelea chini ya Hood hapa? 1012 00:45:06,240 --> 00:45:08,180 Basi hebu kwenda nyuma zaidi hapa kwa muda tu 1013 00:45:08,180 --> 00:45:10,910 na kufikiria nini GetString ni kweli kufanya. 1014 00:45:10,910 --> 00:45:13,385 Wakati wewe piga GetString, hiyo ni kazi sisi 1015 00:45:13,385 --> 00:45:16,510 sisi wenyewe aliandika na kwa namna fulani anapata mlolongo wa wahusika kutoka kwa mtumiaji. 1016 00:45:16,510 --> 00:45:20,280 Na hebu kudhani kuwa kwanza wakati mimi wito GetString, kwamba anatoa mimi 1017 00:45:20,280 --> 00:45:21,930 chunk ya kumbukumbu kwamba inaonekana kama hii. 1018 00:45:21,930 --> 00:45:26,990 Na kama mimi niliandika katika yote lowercase m-o-m-- na yale yanayoendelea baada yake? 1019 00:45:26,990 --> 00:45:28,840 Tu haraka sanity hundi. 1020 00:45:28,840 --> 00:45:29,780 >> Backslash sifuri. 1021 00:45:29,780 --> 00:45:30,510 Tunajua kwamba. 1022 00:45:30,510 --> 00:45:32,784 Na kukumbuka kuwa sisi alicheza karibu na jina Zamila ya 1023 00:45:32,784 --> 00:45:34,950 na kundi la majina mengine wakati Rob alikuwa hapa kuangalia 1024 00:45:34,950 --> 00:45:36,280 katika nini kinaendelea ndani ya kumbukumbu. 1025 00:45:36,280 --> 00:45:37,780 Hivyo hadithi hiyo ni sawa. 1026 00:45:37,780 --> 00:45:40,160 Hii ni nini GetString ni kurudi kwangu. 1027 00:45:40,160 --> 00:45:44,780 Sasa, kanuni wangu wakati iliyopita kuhifadhiwa thamani ya kurudi kwa GetString 1028 00:45:44,780 --> 00:45:47,510 katika variable kuitwa s. 1029 00:45:47,510 --> 00:45:51,390 Na kisha mara ya pili mimi kuitwa kuwa, ni kuhifadhiwa katika variable kuitwa t. 1030 00:45:51,390 --> 00:45:55,070 >> Hivyo kama mimi kwenda juu hapa, nahitaji kuteka kutofautiana hii mitaa 1031 00:45:55,070 --> 00:45:59,610 na mimi nina kwa ujumla kwenda kuteka kamba kama just-- tutaweza 1032 00:45:59,610 --> 00:46:02,360 kuiita s-- kama mraba kidogo hapa. 1033 00:46:02,360 --> 00:46:09,760 Na sasa, somehow-- jinsi gani mama kwenda ndani ya s hii kutofautiana? 1034 00:46:09,760 --> 00:46:12,010 Naam, tunahitaji kurudi nyuma na kanuni ya kwanza hapa. 1035 00:46:12,010 --> 00:46:15,660 Kile ni GetString kweli kurudi? 1036 00:46:15,660 --> 00:46:19,030 >> Hivyo zinageuka kuwa M-O-M backslash sifuri, na idadi yoyote 1037 00:46:19,030 --> 00:46:22,364 ya masharti mengine katika kumbukumbu kama Zamila na Rob au Andy au watu wengine wowote, 1038 00:46:22,364 --> 00:46:24,280 ni mwendo katika yetu RAM ya kompyuta au kumbukumbu. 1039 00:46:24,280 --> 00:46:27,760 Na RAM yako ina like-- una GIG ya RAM, gigs mbili ya RAM, 1040 00:46:27,760 --> 00:46:30,860 au bilioni moja au mbili bilioni ka, au labda hata zaidi siku hizi. 1041 00:46:30,860 --> 00:46:34,070 Basi hebu kudhani, kwa madhumuni ya leo, kwamba haijalishi jinsi sisi kuhesabu 1042 00:46:34,070 --> 00:46:36,640 yao, lakini tunaweza kuhesabu kila wale bilioni au bilioni mbili 1043 00:46:36,640 --> 00:46:37,880 au ka bilioni nne. 1044 00:46:37,880 --> 00:46:42,240 >> Na hebu tu kiholela kusema kwamba hii ni kuumwa kwanza, kuumwa pili, 1045 00:46:42,240 --> 00:46:43,380 tatu, nne. 1046 00:46:43,380 --> 00:46:46,570 Mimi makusudi si kwa kutumia sifuri kwa leo lakini tutaweza kuja nyuma na kwamba. 1047 00:46:46,570 --> 00:46:49,570 Hivyo kwa maneno mengine, kama hii ni mara ya kwanza mimi nina kutumia mpango, 1048 00:46:49,570 --> 00:46:52,715 Mimi nina kupata tu bahati na kwanza kidonda ni katika eneo moja kisha wawili 1049 00:46:52,715 --> 00:46:53,590 kisha tatu ya nne. 1050 00:46:53,590 --> 00:46:57,430 Na kama mimi naendelea kuchora, sanduku bilioni mbili itakuwa ni njia zaidi ya hapa. 1051 00:46:57,430 --> 00:47:02,200 >> Hivyo unafikiri nini, basi, GetString kweli anarudi? 1052 00:47:02,200 --> 00:47:06,010 Ni si kurudi M-O-M backslash sifuri per se sababu kwamba kwa uwazi 1053 00:47:06,010 --> 00:47:08,180 si fit katika sanduku kwamba nimekuwa inayotolewa. 1054 00:47:08,180 --> 00:47:11,210 Hivyo kile kingine inaweza GetString kweli kuwa kurudi wiki haya yote? 1055 00:47:11,210 --> 00:47:14,410 1056 00:47:14,410 --> 00:47:16,820 Jibu ni juu ya ubao hapa mahali fulani. 1057 00:47:16,820 --> 00:47:20,390 Huwezi fit M-O-M backslash sifuri, hivyo nini kinaweza kufanya maana badala yake? 1058 00:47:20,390 --> 00:47:23,424 Kama alikuwa na kuwa super wajanja, kuweka juu ya kile kinachoitwa uhandisi kofia, 1059 00:47:23,424 --> 00:47:24,340 nini inaweza kurudi? 1060 00:47:24,340 --> 00:47:27,340 Nini kiasi mdogo wa habari ungeweza kurudi kwamba ingekuwa bado 1061 00:47:27,340 --> 00:47:30,610 basi wewe kupata M-O-M katika kumbukumbu? 1062 00:47:30,610 --> 00:47:31,270 Yeah? 1063 00:47:31,270 --> 00:47:31,950 >> Watazamaji: Moja. 1064 00:47:31,950 --> 00:47:32,200 >> DAVID J. Malan: Moja. 1065 00:47:32,200 --> 00:47:33,021 Na kwa nini moja? 1066 00:47:33,021 --> 00:47:35,520 Watazamaji: Kwa sababu waliniambia wewe wapi pa kwenda [inaudible]. 1067 00:47:35,520 --> 00:47:38,391 1068 00:47:38,391 --> 00:47:39,390 DAVID J. Malan: Hasa. 1069 00:47:39,390 --> 00:47:44,300 I am just kwenda na kurudi anuani ya kamba kwamba Nimepata mtoto. 1070 00:47:44,300 --> 00:47:46,570 Anwani katika hii kesi ni eneo moja. 1071 00:47:46,570 --> 00:47:51,280 Kwa hiyo kile kweli ni kuwa kuhifadhiwa katika s-- na kila kamba kutofautiana hivyo far-- 1072 00:47:51,280 --> 00:47:53,430 Imekuwa tu pepe ya kamba hiyo. 1073 00:47:53,430 --> 00:47:57,840 >> Wakati huo huo, ikiwa mimi wito GetString mara ya pili na mimi 1074 00:47:57,840 --> 00:48:03,300 aina katika halisi thing-- sawa M-O-M na lowercase-- M-O-M 1075 00:48:03,300 --> 00:48:06,200 na mwingine sifuri backslash, na sasa labda mpango wangu 1076 00:48:06,200 --> 00:48:09,820 imekuwa mbio kwa muda fulani hivyo labda hii ni 10, hii ni eneo 11, hii ni 12, 1077 00:48:09,820 --> 00:48:10,700 hii ni 13. 1078 00:48:10,700 --> 00:48:13,590 Kompyuta kwa kutumia baadhi ya wengine kumbukumbu kwa sababu yoyote. 1079 00:48:13,590 --> 00:48:18,172 Nini sasa inakwenda katika pili yangu kutofautiana katika mpango wangu t? 1080 00:48:18,172 --> 00:48:19,390 10. 1081 00:48:19,390 --> 00:48:20,050 Hasa. 1082 00:48:20,050 --> 00:48:23,910 >> Na hivyo wakati sisi kuangalia chanzo kanuni za mpango huu 1083 00:48:23,910 --> 00:48:26,550 ambapo mimi nina tu kujaribu kulinganisha maadili mbili, 1084 00:48:26,550 --> 00:48:32,180 ni s sawa sawa na t, nini dhahiri jibu binadamu? 1085 00:48:32,180 --> 00:48:34,890 Tu hakuna sababu 1 haina sawa 10. 1086 00:48:34,890 --> 00:48:36,861 Na hivyo humu uongo fursa kwa sisi kweli 1087 00:48:36,861 --> 00:48:39,610 tu kwenda nyuma, tena, kwanza kanuni na kufikiri juu ya, vizuri, 1088 00:48:39,610 --> 00:48:41,110 nini kinaendelea chini ya Hood? 1089 00:48:41,110 --> 00:48:43,240 Sisi tumekuwa kuzungumza kuhusu bits na ka na kumbukumbu, 1090 00:48:43,240 --> 00:48:46,820 lakini ni kweli manufaa kwa kuelewa kwa sababu wakati wewe piga GetString, 1091 00:48:46,820 --> 00:48:50,280 hata kama sisi kufikiria ni kurudi M-O-M au kamba mama 1092 00:48:50,280 --> 00:48:53,120 au Andy au Zamila au kama, kitaalam 1093 00:48:53,120 --> 00:48:55,510 ni kurudi tu anuani ya kwamba chunk ya kumbukumbu. 1094 00:48:55,510 --> 00:48:56,910 >> Lakini hiyo ni sawa. 1095 00:48:56,910 --> 00:49:00,570 Kwa sababu jinsi gani mimi kujua ambapo kamba mwisho? 1096 00:49:00,570 --> 00:49:03,840 Kama mimi nina tu kutokana na mwanzo? 1097 00:49:03,840 --> 00:49:05,380 Naam, sifuri backslash, sawa? 1098 00:49:05,380 --> 00:49:08,800 Muda tu linear naweza magazeti nje na magazeti def M-O-M. 1099 00:49:08,800 --> 00:49:11,820 Na haraka kama Mimi naona backslash sifuri, Sijali ambapo mimi kuanza, 1100 00:49:11,820 --> 00:49:14,950 Tayari najua inamuunga ambapo mimi haja ya kumaliza. 1101 00:49:14,950 --> 00:49:18,700 >> Na hivyo leo alama beginning-- na napenda kufanya hivyo kwa kasi kwa sababu sisi 1102 00:49:18,700 --> 00:49:21,800 safari kwa kupitia matatizo mengi kwa kupata hizi hapa mafunzo wheels-- 1103 00:49:21,800 --> 00:49:29,840 hivyo leo magurudumu mafunzo kuanza kufika mbali na sisi yatangaza katika least-- 1104 00:49:29,840 --> 00:49:31,373 >> [Makofi] 1105 00:49:31,373 --> 00:49:33,220 1106 00:49:33,220 --> 00:49:36,160 >> Hiyo ilikuwa ni pamoja na thamani ya safari na Uchumi leo asubuhi, ndiyo? 1107 00:49:36,160 --> 00:49:39,600 Hivyo now-- kuna, ni zamu nje, hakuna kitu kama kamba. 1108 00:49:39,600 --> 00:49:41,140 Kamba haipo. 1109 00:49:41,140 --> 00:49:43,760 Ni kisawe kwamba tulikuwa na ndani ya maktaba CS50. 1110 00:49:43,760 --> 00:49:48,660 Tangu sasa, tunakwenda kuanza wito s na t si masharti lakini nyota Char. 1111 00:49:48,660 --> 00:49:51,180 Na nyota Char tutaweza tease mbali kabla ya muda mrefu. 1112 00:49:51,180 --> 00:49:53,510 Lakini hii ni kusema, kwamba hata kama tunaendelea 1113 00:49:53,510 --> 00:49:56,180 kutumia GetString kwa sasa, kitaalam mimi lazima 1114 00:49:56,180 --> 00:49:59,010 kuwa akisema char nyota na nyota Char. 1115 00:49:59,010 --> 00:50:01,720 >> Na zinageuka nini kwamba nyota ni kwenda kuashiria kitu 1116 00:50:01,720 --> 00:50:04,340 aitwaye pointer au mahali. 1117 00:50:04,340 --> 00:50:06,110 Na kwa kweli, teaser kwa nini uongo mbele 1118 00:50:06,110 --> 00:50:09,760 ni hii 20 kipande cha pili kutoka wetu rafiki Nick Parlante katika Stanford 1119 00:50:09,760 --> 00:50:12,927 ambao, kabisa baadhi ya wakati uliopita, kutumia kiasi ujinga wa muda, 1120 00:50:12,927 --> 00:50:15,010 kama bora naweza kukuambia katika wake jikoni au basement yake, 1121 00:50:15,010 --> 00:50:17,140 kufanya claymation kuanzisha kwa dunia 1122 00:50:17,140 --> 00:50:20,010 tabia aitwaye Binky ambaye sisi 1123 00:50:20,010 --> 00:50:22,010 kuletwa wakati mwingine kwa kuyatumia. 1124 00:50:22,010 --> 00:50:24,588 Hivyo hapa ni hakikisho ya nini kuja. 1125 00:50:24,588 --> 00:50:26,370 >> [VIDEO avspelning] 1126 00:50:26,370 --> 00:50:27,510 >> -Hey, Binky. 1127 00:50:27,510 --> 00:50:28,260 Amka. 1128 00:50:28,260 --> 00:50:30,672 Ni wakati wa pointer na furaha. 1129 00:50:30,672 --> 00:50:31,616 >> -Nini Hiyo? 1130 00:50:31,616 --> 00:50:33,032 Kujifunza kuhusu kuyatumia? 1131 00:50:33,032 --> 00:50:34,450 Loo, goody. 1132 00:50:34,450 --> 00:50:35,431 >> [Mwisho avspelning] 1133 00:50:35,431 --> 00:50:38,055 DAVID J. Malan: Na kumbuka kwamba, sisi kuona juu ya Jumatano. 1134 00:50:38,055 --> 00:50:47,590 1135 00:50:47,590 --> 00:50:48,090 Sawa. 1136 00:50:48,090 --> 00:50:48,740 Nani kucheza? 1137 00:50:48,740 --> 00:50:49,240 Kuja juu. 1138 00:50:49,240 --> 00:50:50,330 Nani kucheza? 1139 00:50:50,330 --> 00:50:51,820 Unataka mimi kupata ilianza? 1140 00:50:51,820 --> 00:50:53,770 Mimi itabidi kupata ilianza. 1141 00:50:53,770 --> 00:50:54,270 Woooo! 1142 00:50:54,270 --> 00:51:04,070 1143 00:51:04,070 --> 00:51:07,580 >> LAUREN: tamu dhana Musa.