1 00:00:00,000 --> 00:00:03,395 >> [Music kucheza] 2 00:00:03,395 --> 00:00:11,031 3 00:00:11,031 --> 00:00:13,280 DAVID J. Malan: Hii ni kama Freshman semina leo. 4 00:00:13,280 --> 00:00:14,060 SAWA. 5 00:00:14,060 --> 00:00:15,024 Hivyo mvua sana nje. 6 00:00:15,024 --> 00:00:17,690 Hii inaelekea kutokea juu ya Jumatano, lakini fursa zote zaidi 7 00:00:17,690 --> 00:00:18,700 kwa maswali leo. 8 00:00:18,700 --> 00:00:22,210 Basi hebu kuanza mbali kwa kweli na filamu katika muda tu. 9 00:00:22,210 --> 00:00:24,560 Lakini tutaweza kuanza grandly kama siku zote. 10 00:00:24,560 --> 00:00:28,000 >> Hii ni CS50, na hii Huu ndio mwisho wa wiki 4. 11 00:00:28,000 --> 00:00:30,820 Hivyo kama wameweza milele watched TV au movie ambayo 12 00:00:30,820 --> 00:00:34,690 kuna baadhi ya wataalam wa kompyuta na polisi, au FBI, au baadhi ya wakala 13 00:00:34,690 --> 00:00:36,930 ni kujaribu kupata baadhi Maana adui, vizuri, wewe wameweza 14 00:00:36,930 --> 00:00:40,850 pengine habari kujieleza "kuongeza," ambapo kwamba fundi fulani 15 00:00:40,850 --> 00:00:44,750 magically zooms katika kubwa mbali kuona wahalifu 16 00:00:44,750 --> 00:00:48,640 utambulisho au idadi sahani leseni katika hata shimmer ya kioo 17 00:00:48,640 --> 00:00:50,390 au glint ya jicho mtu. 18 00:00:50,390 --> 00:00:55,196 Hivyo kweli, hebu tuangalie chache pazia hizo kutoka Hollywood. 19 00:00:55,196 --> 00:00:55,862 [VIDEO avspelning] 20 00:00:55,862 --> 00:00:59,243 -OK, Sasa hebu kupata nzuri kuangalia wewe. 21 00:00:59,243 --> 00:01:06,488 22 00:01:06,488 --> 00:01:07,415 >> -Hold Yake. 23 00:01:07,415 --> 00:01:08,267 Kukimbia nyuma. 24 00:01:08,267 --> 00:01:09,121 >> -Wait Dakika. 25 00:01:09,121 --> 00:01:11,300 Kwenda kulia. 26 00:01:11,300 --> 00:01:12,209 >> -Kuna, Kufungia huo. 27 00:01:12,209 --> 00:01:12,750 -Kamili Screen. 28 00:01:12,750 --> 00:01:13,558 -OK, Kufungia huo. 29 00:01:13,558 --> 00:01:14,820 -Tighten Juu ya kwamba, je? 30 00:01:14,820 --> 00:01:16,530 -Vector Katika juu ya kwamba guy na gurudumu nyuma. 31 00:01:16,530 --> 00:01:19,400 -Zoom Katika haki hapa kwenye doa hili. 32 00:01:19,400 --> 00:01:22,846 -Kwa Vifaa sahihi, picha inaweza kuwa wazi na makali. 33 00:01:22,846 --> 00:01:24,065 -Nini Hiyo? 34 00:01:24,065 --> 00:01:25,600 -Ni Mpango kukuza. 35 00:01:25,600 --> 00:01:26,860 -Je Wewe wazi kuwa up yoyote? 36 00:01:26,860 --> 00:01:27,890 -Sijui. 37 00:01:27,890 --> 00:01:29,050 Hebu kuongeza yake. 38 00:01:29,050 --> 00:01:31,575 >> -Kuongeza Sehemu A6. 39 00:01:31,575 --> 00:01:33,642 >> -I Kuimarishwa kwa undani, and-- nadhani kuna 40 00:01:33,642 --> 00:01:35,433 kutosha ili kuongeza, kutolewa kwa screen yangu. 41 00:01:35,433 --> 00:01:37,080 -I Kuimarishwa kutafakari katika macho yake. 42 00:01:37,080 --> 00:01:38,830 >> -Let Ni kukimbia hii kupitia video kukuza. 43 00:01:38,830 --> 00:01:40,100 -Edgar, Unaweza kuongeza hii? 44 00:01:40,100 --> 00:01:41,875 >> -Hang Juu. 45 00:01:41,875 --> 00:01:44,010 >> I 've ikifanya kazi katika fikra hii. 46 00:01:44,010 --> 00:01:44,995 >> -Someone Ya kutafakari. 47 00:01:44,995 --> 00:01:45,495 -Reflection. 48 00:01:45,495 --> 00:01:47,399 -Kuna Tafakari ya uso wa mtu. 49 00:01:47,399 --> 00:01:48,065 -The Kutafakari. 50 00:01:48,065 --> 00:01:48,981 -Kuna Kutafakari. 51 00:01:48,981 --> 00:01:50,600 -Zoom Katika juu ya kioo. 52 00:01:50,600 --> 00:01:52,712 -Unaweza Kuona reflection. 53 00:01:52,712 --> 00:01:54,350 -Je Wewe kuongeza picha kutoka hapa? 54 00:01:54,350 --> 00:01:55,370 -Je Wewe kuongeza naye hapa hapa? 55 00:01:55,370 --> 00:01:56,210 -Je Wewe kuongeza yake? 56 00:01:56,210 --> 00:01:56,900 Je, unaweza kuongeza yake? 57 00:01:56,900 --> 00:01:57,870 >> -Je Sisi kuongeza hii? 58 00:01:57,870 --> 00:01:58,717 >> -Je Wewe kuongeza yake? 59 00:01:58,717 --> 00:02:00,050 -Hold Juu ya pili, mimi itabidi kuongeza. 60 00:02:00,050 --> 00:02:00,924 -Zoom Katika mlango. 61 00:02:00,924 --> 00:02:01,700 -Times 10. 62 00:02:01,700 --> 00:02:02,586 -Zoom. 63 00:02:02,586 --> 00:02:03,490 -Hoja katika. 64 00:02:03,490 --> 00:02:03,990 -Zaidi. 65 00:02:03,990 --> 00:02:04,690 -Wait, Kuacha. 66 00:02:04,690 --> 00:02:05,190 -Stop. 67 00:02:05,190 --> 00:02:05,970 -Pause Yake. 68 00:02:05,970 --> 00:02:09,460 -Rotate Sisi digrii 75 karibu wima, tafadhali. 69 00:02:09,460 --> 00:02:10,962 -Stop. 70 00:02:10,962 --> 00:02:14,040 Kurudi nyuma na sehemu kuhusu mlango, tena. 71 00:02:14,040 --> 00:02:15,860 >> -Got Picha enhancer kwamba wanaweza bitmap? 72 00:02:15,860 --> 00:02:18,776 >> -Hey, Labda tunaweza kutumia Pradeep Sen njia ya kuona ndani ya madirisha. 73 00:02:18,776 --> 00:02:20,372 -Hii Programu ni hali ya sanaa. 74 00:02:20,372 --> 00:02:21,845 >> -The Eigenvalue ni mbali. 75 00:02:21,845 --> 00:02:24,300 >> -Kwa Haki mchanganyiko wa algorithm 76 00:02:24,300 --> 00:02:26,755 >> Hapo ya kuchukuliwa kuondoa algorithms ngazi ya pili, 77 00:02:26,755 --> 00:02:28,730 na siwezi matumizi yao ya kuongeza picha hii. 78 00:02:28,730 --> 00:02:31,286 >> -Lock Juu na kupanua z-mhimili. 79 00:02:31,286 --> 00:02:32,560 >> -Kuongeza. 80 00:02:32,560 --> 00:02:33,100 >> -Kuongeza. 81 00:02:33,100 --> 00:02:33,600 >> -Kuongeza. 82 00:02:33,600 --> 00:02:34,960 -Freeze Na kuongeza. 83 00:02:34,960 --> 00:02:37,180 >> [Mwisho avspelning] 84 00:02:37,180 --> 00:02:41,160 >> DAVID J. Malan: zote haki, hivyo wote wa wale ni kweli maneno. 85 00:02:41,160 --> 00:02:44,450 Wao ni strung tu pamoja katika njia hiyo ni kweli si busara. 86 00:02:44,450 --> 00:02:48,400 Na, kwa kweli, CS50 na kozi kama ni inaelekea uharibifu mengi ya TV na sinema 87 00:02:48,400 --> 00:02:48,900 kwa ajili yako. 88 00:02:48,900 --> 00:02:52,330 Kwa sababu wakati wale wataalam wa kompyuta yanakereketa mbali sheria na kusema 89 00:02:52,330 --> 00:02:56,860 mambo dhana kama eigenvectors, na z-mhimili, 90 00:02:56,860 --> 00:02:59,572 na idadi yoyote ya wengine kweli suala zaidi ya kiufundi, 91 00:02:59,572 --> 00:03:02,030 wao ni kweli tu stringing Maneno pamoja wote mara nyingi mno. 92 00:03:02,030 --> 00:03:05,020 Ni kwamba mmoja wa matumaini yetu ni kwamba, kama athari upande wa kuchukua kozi 93 00:03:05,020 --> 00:03:08,245 kama hii, je watu zaidi katika dunia kweli kuwa na uwezo wa kupima katika 94 00:03:08,245 --> 00:03:12,040 na tu milele hivyo kidogo kushawishi ubora na usahihi wa filamu hizo? 95 00:03:12,040 --> 00:03:14,350 >> Kwa kweli, hebu tuangalie hali halisi. 96 00:03:14,350 --> 00:03:18,070 Hivyo hapa ni wafanyakazi picha ya Maria, moja ya wenzetu mafundisho. 97 00:03:18,070 --> 00:03:20,050 Na kudhani yeye ni watuhumiwa wa kitu fulani. 98 00:03:20,050 --> 00:03:23,730 Na bado, kuna Glimmer ya baadhi kipande cha ushahidi katika macho yake, 99 00:03:23,730 --> 00:03:25,480 au katika tafakari ya miwani yake. 100 00:03:25,480 --> 00:03:30,760 Naam, kama sisi kufanya hasa kama filamu kupendekeza, eti sisi kuvuta na "kuimarisha", 101 00:03:30,760 --> 00:03:34,080 hii ni taarifa ni kiasi gani ni katika uso wa Maria 102 00:03:34,080 --> 00:03:36,795 wakati kukamata picha na kwamba azimio ya awali. 103 00:03:36,795 --> 00:03:39,120 >> Na, kwa kweli, unaweza kuona dots hizi. 104 00:03:39,120 --> 00:03:41,900 Na haya ndiyo yale ni aitwaye saizi, P-I-X-E-L-S, 105 00:03:41,900 --> 00:03:45,740 ambayo ni haki mraba kawaida kuwa ni nukta kwamba composes picha. 106 00:03:45,740 --> 00:03:49,200 Na nyuma katika siku, na kwa kweli hata leo na baadhi ya leo LED TV 107 00:03:49,200 --> 00:03:51,950 au LCD TV, kama nimepata moja katika chumba yako au nyumbani, 108 00:03:51,950 --> 00:03:55,100 kama wewe kwenda juu super karibu yake, na hasa kama ni TV kiasi fulani wakubwa, 109 00:03:55,100 --> 00:03:58,760 pengine unaweza hata kuona dots hizi na hilo ndilo kutunga picha. 110 00:03:58,760 --> 00:04:00,980 >> Na hakuna zaidi Maelezo zaidi kuliko huu. 111 00:04:00,980 --> 00:04:05,400 Tunaweza "kuimarisha", kwa maana ya Ng'ombe vitu tena na aina ya 112 00:04:05,400 --> 00:04:09,040 inferring aina ya, aina ya nini rangi lazima karibu na jicho la Maria 113 00:04:09,040 --> 00:04:10,910 hivyo kwamba siyo kweli hivyo pixelated. 114 00:04:10,910 --> 00:04:14,510 Lakini kama mimi kuendelea zooming katika, kuna ni mtu mbaya katika macho yake. 115 00:04:14,510 --> 00:04:16,600 Kama kuwa ni wote Maelezo tuna. 116 00:04:16,600 --> 00:04:18,920 Huwezi kujenga Maelezo nje ya kitu chochote. 117 00:04:18,920 --> 00:04:20,790 Kuna finite tu idadi ya vipande huko. 118 00:04:20,790 --> 00:04:22,873 >> Hivyo katika kuweka tatizo 4, ambapo una nafasi 119 00:04:22,873 --> 00:04:24,580 kucheza na aina hii ya dunia. 120 00:04:24,580 --> 00:04:27,610 Katika kuweka tatizo 4, utasikia kuchunguza ulimwengu wa graphics, na forensics, 121 00:04:27,610 --> 00:04:30,870 na kwa kweli kuandika kanuni kwamba recovers waliopotea picha. 122 00:04:30,870 --> 00:04:33,510 Itabidi kuandika kificho kwamba kuyaharibu picha zilizopo 123 00:04:33,510 --> 00:04:36,120 na hatimaye kuelewa nini kinachoendelea chini ya Hood. 124 00:04:36,120 --> 00:04:38,540 >> Na, ni zamu nje, ni kweli si wote kwamba ngumu. 125 00:04:38,540 --> 00:04:41,320 Kwa mfano, kama sisi alitaka kuwakilisha smiley uso ambapo 126 00:04:41,320 --> 00:04:44,160 na saizi hizi nyeusi, au nukta hizi nyeusi, 127 00:04:44,160 --> 00:04:47,230 vizuri, tunaweza tu kuwakilisha wao kama kweli bitmap. 128 00:04:47,230 --> 00:04:50,040 Na kama wewe milele kusikia kwamba alikuwa kujieleza bitmap, labda 129 00:04:50,040 --> 00:04:52,330 sasa kuanza kufanya zaidi kidogo maana leo. 130 00:04:52,330 --> 00:04:53,580 >> Sisi tayari kujua nini kidogo ni. 131 00:04:53,580 --> 00:04:54,160 Ni 0 au 1. 132 00:04:54,160 --> 00:04:56,201 Na ramani ni tu kitu kama kipande cha karatasi 133 00:04:56,201 --> 00:04:59,180 kwamba anatoa maelekezo na ina labda gridi ya x- na y-kuratibu. 134 00:04:59,180 --> 00:05:00,540 Hivyo hapa ni bitmap. 135 00:05:00,540 --> 00:05:03,680 Ni ramani ya bits ambapo 1 ni inaonekana 136 00:05:03,680 --> 00:05:07,857 kwenda kuwakilisha pixel nyeupe, na 0 ni kwenda kuwakilisha pixel nyeusi. 137 00:05:07,857 --> 00:05:09,440 Lakini tunaweza shaka flip ni kuzunguka. 138 00:05:09,440 --> 00:05:11,648 Ni kweli haina jambo hivyo muda mrefu kama sisi ni thabiti. 139 00:05:11,648 --> 00:05:15,570 Na hapa ni jinsi gani, katika binary-- ndani ya ya kumbukumbu ya kompyuta, au hata ndani ya 140 00:05:15,570 --> 00:05:18,160 ya faili kwenye ngumu yako drive-- inaweza kuhifadhi 141 00:05:18,160 --> 00:05:20,240 rahisi ya picha smiley uso. 142 00:05:20,240 --> 00:05:23,990 Lakini sisi ni nini, bila shaka, anakosa picha hii? 143 00:05:23,990 --> 00:05:24,610 Rangi, sawa? 144 00:05:24,610 --> 00:05:28,220 Ni dhahiri hatua inayofuata au kukuza na kuboresha huu kwa rangi. 145 00:05:28,220 --> 00:05:32,230 Hivyo kwa bahati mbaya kwa moja tu kidogo, 0 au 1, tunaweza kuwakilisha rangi. 146 00:05:32,230 --> 00:05:36,100 Hiyo inaweza kuwa nyekundu, au bluu, au nyeusi, nyeupe au, au kijani, au nyekundu, 147 00:05:36,100 --> 00:05:37,420 au jozi yoyote ya rangi. 148 00:05:37,420 --> 00:05:40,860 Lakini kwa ajili ya unyenyekevu wa, tutaweza kudhani tu nyeusi na nyeupe. 149 00:05:40,860 --> 00:05:45,930 >> Kwa hiyo kile kifikra tunahitaji kama sisi wanataka kutekeleza rangi katika picha? 150 00:05:45,930 --> 00:05:49,080 Tufanye nini na wafanye nini? 151 00:05:49,080 --> 00:05:51,900 Kama ikiwa kikwazo hapa ni kwamba pamoja na hata kidogo unaweza tu 152 00:05:51,900 --> 00:05:55,977 kuwakilisha nchi mbili, 0 au 1, nyeupe au nyeusi, unataka nini cha kufanya? 153 00:05:55,977 --> 00:05:56,810 Watazamaji: Zaidi ya data. 154 00:05:56,810 --> 00:05:58,813 DAVID J. Malan: bits Zaidi, yeah zaidi data, bits zaidi. 155 00:05:58,813 --> 00:06:01,440 Na kwa kweli, hiyo ni hasa jinsi picha rangi ni kuwakilishwa. 156 00:06:01,440 --> 00:06:05,120 Badala ya kutumia kidogo moja, 0 au 1 kwa kila pixel, kila nukta, 157 00:06:05,120 --> 00:06:06,170 wewe tu kutumia mbalimbali. 158 00:06:06,170 --> 00:06:09,660 Labda kutumia 8, labda, zaidi ya kawaida kutumia 24, na kwa hakika, katika kuweka tatizo 159 00:06:09,660 --> 00:06:13,300 4, je kucheza na faili muundo ambayo inatumia 24 bits kawaida. 160 00:06:13,300 --> 00:06:15,430 >> Lakini wengi katika nyinyi ni pengine ukoo na JPEGs. 161 00:06:15,430 --> 00:06:17,460 Kama wameweza milele kuchukuliwa picha kwenye simu yako, 162 00:06:17,460 --> 00:06:20,360 au kupakiwa au kuona kitu juu ya Facebook, au Flickr, idadi yoyote 163 00:06:20,360 --> 00:06:24,882 ya Nje picha makao, wameweza pengine kuona JPEG picha kabla. 164 00:06:24,882 --> 00:06:27,840 Na ni zamu nje, hii ni faili muundo tunakwenda kutumia katika pset 4, 165 00:06:27,840 --> 00:06:30,340 ambapo wewe ni kwenda na kupona picha 166 00:06:30,340 --> 00:06:35,160 kwamba nimepata ajali ilifutwa kutoka kupotoshwa kadi ya kumbukumbu katika kamera, 167 00:06:35,160 --> 00:06:35,800 kama wewe. 168 00:06:35,800 --> 00:06:38,490 >> Na zinageuka kuwa hata kama JPEG ni pretty sophisticated-- 169 00:06:38,490 --> 00:06:40,906 ni kiasi kisasa zaidi kuliko nukta nyeusi na nyeupe 170 00:06:40,906 --> 00:06:44,480 tuliona wakati iliyopita, kwa sababu kuna algorithms kweli dhana kwamba 171 00:06:44,480 --> 00:06:47,410 hutumiwa kubana JPEG, hivyo kwamba unaweza kuwa kweli ni nzuri, 172 00:06:47,410 --> 00:06:49,832 ubora picha lakini kwa kutumia wachache bits. 173 00:06:49,832 --> 00:06:51,790 Na tutaweza kurudi kwa compression kabla ya muda mrefu. 174 00:06:51,790 --> 00:06:56,280 Ni zinageuka kuwa kwanza ka tatu katika JPEG image-- 175 00:06:56,280 --> 00:07:02,750 bila kujali wewe umechukua picha of-- ni maadili 255, 216, 255. 176 00:07:02,750 --> 00:07:05,990 >> Kwa maneno mengine, kama wewe tu kuona kwamba mfano wa bits, 177 00:07:05,990 --> 00:07:09,180 kuwakilishwa hapa kama tatu ka, au 24 bits jumla, 178 00:07:09,180 --> 00:07:13,810 na uwezekano mkubwa unaweza kudai kuwa wewe ni kuangalia saa yake hii ya kwanza ya tatu 179 00:07:13,810 --> 00:07:15,230 ka wa JPEG. 180 00:07:15,230 --> 00:07:18,040 Na hii ni nini inayojulikana kama saini ya JPEG. 181 00:07:18,040 --> 00:07:20,540 Mengi ya muundo faili huko nje huwa na kuanza 182 00:07:20,540 --> 00:07:23,735 na mifumo fulani ya sekunde 0 na 1s, ili Madirisha, na Mac OS, na iOS, 183 00:07:23,735 --> 00:07:28,272 na Android kujua ni aina gani ya faili wao ni, pamoja na kile kinachoitwa faili 184 00:07:28,272 --> 00:07:29,730 ugani kwamba mengi ya mafaili nayo. 185 00:07:29,730 --> 00:07:32,590 Kama una Jpg, hiyo ni fununu nyingine ya kompyuta. 186 00:07:32,590 --> 00:07:35,310 >> Basi hebu sasa tuangalie hii zaidi kidogo kitaalam. 187 00:07:35,310 --> 00:07:37,390 Tunajua alisema mfumo ni 0 kupitia 9. 188 00:07:37,390 --> 00:07:38,740 Tunajua mapacha ni 0 na 1. 189 00:07:38,740 --> 00:07:41,842 Na kama unadhani nyuma pset 0, tulikuwa na wewe kushindana na, 190 00:07:41,842 --> 00:07:43,800 kwa muda kidogo, kitu aitwaye hexadecimal, 191 00:07:43,800 --> 00:07:47,320 ambapo una 16 ya tarakimu, badala ya 10 au badala ya 2. 192 00:07:47,320 --> 00:07:50,405 Na tarakimu hizo, na mkataba huo, ni 0 kupitia 9 na kisha 193 00:07:50,405 --> 00:07:55,040 kupitia f, ambapo f inawakilisha nini idadi alisema, kama akili timamu haraka 194 00:07:55,040 --> 00:07:56,640 kuangalia? 195 00:07:56,640 --> 00:07:57,610 Hivyo, 15. 196 00:07:57,610 --> 00:08:01,390 Na lazima kuwakilisha 10, tu kwa asili ya kuagiza kwamba nimepata huo. 197 00:08:01,390 --> 00:08:04,350 Ni tu mkataba holela, lakini ni kabisa ya kiwango. 198 00:08:04,350 --> 00:08:06,870 >> Hivyo kama sisi kuangalia muundo huu ya tatu ka hebu 199 00:08:06,870 --> 00:08:09,620 kuanza tu kuangalia ni katika njia thabiti na jinsi 200 00:08:09,620 --> 00:08:12,450 wanasayansi wa kompyuta kwa ujumla kuangalia na kufikiri juu ya mafaili. 201 00:08:12,450 --> 00:08:15,580 Unaweza shaka kufikiri kuhusu mafaili katika sekunde 0 na 1s, na alisema, 202 00:08:15,580 --> 00:08:19,340 lakini katika hali halisi, sisi huwa na kutumia binary au zaidi kwa kawaida hexadecimal-- 203 00:08:19,340 --> 00:08:20,760 nyuma kutoka pset 0. 204 00:08:20,760 --> 00:08:25,857 Hivyo basi mimi kupendekeza kwamba 255, 216, na 255 ni baadhi tu ya mifumo haya ya sekunde 0 na 1s. 205 00:08:25,857 --> 00:08:28,440 Na unaweza kuangalia hii kama wewe wanataka kufanya hesabu kutoka Wiki 0. 206 00:08:28,440 --> 00:08:30,810 Lakini, kwa sasa, tu kudhani kwamba huyu ndiye kweli sahihi. 207 00:08:30,810 --> 00:08:33,850 Nimekuwa tu kuandikwa upya tatu alisema idadi kama maadili tatu mapacha. 208 00:08:33,850 --> 00:08:36,100 Sasa nini mimi kwenda kufanya ni tu kuongeza baadhi ya nafasi nyeupe, 209 00:08:36,100 --> 00:08:37,266 tu kwa ajili readability ya. 210 00:08:37,266 --> 00:08:39,940 Na taarifa, mimi nina kwenda tu hoja mambo mbali. 211 00:08:39,940 --> 00:08:43,090 Hivyo kabla, baada, kabla, baada ya. 212 00:08:43,090 --> 00:08:46,180 Mimi nina kufanya kitu kuvutia mengine kuliko tu kueneza mambo ya nje ili 213 00:08:46,180 --> 00:08:50,380 kwamba ilani ya kila seti ya nane bits ni sasa seti mbili za bits nne. 214 00:08:50,380 --> 00:08:54,920 Hii ni muhimu kwa sababu hexadecimal ni hasa mtindo 215 00:08:54,920 --> 00:09:00,930 kwa sababu kila tarakimu hexadesimoli 0 kupitia f, au zaidi hasa 0 kupitia 15, 216 00:09:00,930 --> 00:09:03,430 inaweza kuwakilishwa na hasa nne bits. 217 00:09:03,430 --> 00:09:07,960 Kwa maneno mengine, katika hexadesimoli kama wewe wanataka kuwakilisha 0, ni 0000 tu, 218 00:09:07,960 --> 00:09:08,780 nne zeros. 219 00:09:08,780 --> 00:09:13,997 Na kama unataka kuwakilisha 15, ni 1111, ambayo ni vipande vinne. 220 00:09:13,997 --> 00:09:16,080 Na kama wewe kufanya hesabu, kama hii ni wale mahali, 221 00:09:16,080 --> 00:09:18,210 hii ni 16s mahali, hiyo ni kwenda kutoa you-- 222 00:09:18,210 --> 00:09:19,960 badala ambayo inaenda to-- pole, katika binary, 223 00:09:19,960 --> 00:09:23,660 hiyo ni kwenda kukupa 15, ndio mahali, mahali wawili-wawili, kikundi cha watu wane na eights mahali. 224 00:09:23,660 --> 00:09:26,821 Hivyo basi mimi kupendekeza kwamba kuwa seti ya vipande nne upande wa kushoto 225 00:09:26,821 --> 00:09:28,070 ni nini tunakwenda kuwaita f. 226 00:09:28,070 --> 00:09:30,110 Ni idadi kubwa wewe wanaweza kuwakilisha kwa vipande vinne. 227 00:09:30,110 --> 00:09:33,300 Na sisi tayari kujua kutoka hexadecimal, f ni tarakimu kubwa katika hexadesimoli. 228 00:09:33,300 --> 00:09:36,020 Sisi tumepewa f mwingine huko, mbili zaidi zaidi ya hapo. 229 00:09:36,020 --> 00:09:38,980 Na kwa sasa, tu kuchukua juu ya imani kwamba mimi wamefanya math haki 230 00:09:38,980 --> 00:09:41,890 na kwamba nusu ya kushoto ya bits wale, 1101, 231 00:09:41,890 --> 00:09:43,980 ni kitu kimoja kama d katika hexadesimoli. 232 00:09:43,980 --> 00:09:46,490 Na mkono wa kulia, 1000, ni tu 8. 233 00:09:46,490 --> 00:09:48,140 >> Na kwamba moja ya rahisi kuona, sawa? 234 00:09:48,140 --> 00:09:51,670 8 represents-- ni haki chini pale pale eights. 235 00:09:51,670 --> 00:09:56,040 Hivyo tuna moja katika eights safu na chochote katika kikundi cha watu wane, wawili-wawili au ndio. 236 00:09:56,040 --> 00:09:59,830 Hivyo sasa zaidi conventionally, binadamu huwa kuandika hexadecimal tarakimu namna hii, 237 00:09:59,830 --> 00:10:03,000 wewe tu squish yao pamoja, na kisha kiambishi yao na 0x. 238 00:10:03,000 --> 00:10:05,920 Ina maana chochote zaidi fununu Visual human-- 239 00:10:05,920 --> 00:10:10,350 hiyo inakuja hexadecimal value-- kwa sababu huenda ikawa si vinginevyo kuwa dhahiri. 240 00:10:10,350 --> 00:10:13,629 >> Ambayo ni kusema, hatimaye, kwamba mfano wa zeros na ndio, 241 00:10:13,629 --> 00:10:16,170 au mfano wa hexadecimal tarakimu equivalently kwamba wewe ni 242 00:10:16,170 --> 00:10:18,990 kwenda kuanza kuangalia kwa katika kuweka tatizo 4 ni Haya 243 00:10:18,990 --> 00:10:22,120 na kuweka tatizo 4 spec tutakwenda wewe kwa njia hii katika zaidi detail-- 244 00:10:22,120 --> 00:10:25,344 lakini kutambua kama aina ya arcane kama hii ili kuangalia katika mtazamo wa kwanza, 245 00:10:25,344 --> 00:10:27,010 wewe ni kwenda kuanza kuona hii mengi. 246 00:10:27,010 --> 00:10:30,320 Na kwa kweli, hata katika GDB, HatiJava sisi ilianzisha Jumatatu 247 00:10:30,320 --> 00:10:35,440 na Dan utangulizi katika pset 3, ni kwenda kwa mara nyingi kuonyesha maadili hexadecimal 248 00:10:35,440 --> 00:10:39,910 sababu tu wao huwa na kuwa zaidi kawaida kuliko alisema au mapacha 249 00:10:39,910 --> 00:10:41,157 katika ulimwengu wa kompyuta. 250 00:10:41,157 --> 00:10:42,490 Sasa hebu kuweka hii katika mazingira. 251 00:10:42,490 --> 00:10:48,040 Wengi wenu wapate kukumbuka hii picha hapa, ambayo alikuja kutoka kile? 252 00:10:48,040 --> 00:10:51,240 Vista, hivyo hata mapema zaidi kwamba, Windows XP alifanya kwanza hii. 253 00:10:51,240 --> 00:10:52,620 Hivyo hii ni mazingira mazuri. 254 00:10:52,620 --> 00:10:55,940 Na kwa kweli, kama wewe poke kuzunguka online-- Nadhani ni makala Wikipedia, 255 00:10:55,940 --> 00:11:00,110 eti mtu kushangaza sana akatoka kupatikana eneo hili katika dunia kuanzisha 256 00:11:00,110 --> 00:11:02,240 wake au kamera yake katika just place-- haki 257 00:11:02,240 --> 00:11:06,510 na hii leo inaonekana like-- lakini ni hasa kuweka sawa. 258 00:11:06,510 --> 00:11:10,060 Picha hii, ingawa, ni katika faili muundo inayoitwa bitmap, b-m-p. 259 00:11:10,060 --> 00:11:12,910 Na sisi ni kwenda kuchukua super mtazamo wa haraka katika nini maana. 260 00:11:12,910 --> 00:11:17,770 >> Lakini bitmap ni njia tu mbalimbali za anayewakilisha picha bado kutumia piseli 261 00:11:17,770 --> 00:11:19,580 katika sekunde 0 na 1s, hatimaye. 262 00:11:19,580 --> 00:11:23,282 Lakini katika mtazamo wa haraka, ina saini zaidi ya kuvutia 263 00:11:23,282 --> 00:11:24,490 mwanzoni mwa faili. 264 00:11:24,490 --> 00:11:26,670 Siyo tatu tu ka, badala kuna 265 00:11:26,670 --> 00:11:30,770 rundo zima la mifumo ya ka ambazo predetermined maana. 266 00:11:30,770 --> 00:11:34,490 Kwa mfano, mahali fulani katika kwanza ka chache ya picha bitmap 267 00:11:34,490 --> 00:11:37,440 ni kwenda kuwa ukubwa wa picha, upana wa picha, 268 00:11:37,440 --> 00:11:40,390 urefu wa sura, hivyo metadata muhimu, kama wewe. 269 00:11:40,390 --> 00:11:43,940 Taarifa muhimu kwamba Photoshop au graphics yoyote mpango unatumia 270 00:11:43,940 --> 00:11:45,180 ili kweli huduma ya juu. 271 00:11:45,180 --> 00:11:47,170 >> Hivyo zaidi juu ya hili katika Tatizo Kuweka 4, lakini hii 272 00:11:47,170 --> 00:11:49,220 ni tu kusema kwamba mwisho wa siku 273 00:11:49,220 --> 00:11:52,390 zote muundo faili tumekuwa kutumia kwa years-- mafaili Microsoft Word, 274 00:11:52,390 --> 00:11:55,820 Mafaili idadi, files Excel, idadi yoyote ya muundo faili 275 00:11:55,820 --> 00:11:57,770 kwamba wanaweza kuwa na baadhi inayojulikana faili ugani 276 00:11:57,770 --> 00:12:00,130 ni sekunde 0 na 1s tu chini ya Hood. 277 00:12:00,130 --> 00:12:02,970 Na binadamu wameamua nini mikataba ni, 278 00:12:02,970 --> 00:12:08,340 nini mwelekeo wa sekunde 0 na 1s kuwakilisha Neno faili dhidi faili Excel, 279 00:12:08,340 --> 00:12:10,322 dhidi ya idadi yoyote ya format nyingine faili. 280 00:12:10,322 --> 00:12:12,780 Hivyo katika pset 4, itabidi nafasi ya kucheza na kwamba. 281 00:12:12,780 --> 00:12:14,405 >> Lakini ni nini maana ya kuwa na struct. 282 00:12:14,405 --> 00:12:18,012 Hii ni kweli segue nzuri sasa ndani ya C, ambayo ina tu wanandoa 283 00:12:18,012 --> 00:12:20,220 sifa za ziada ambazo sisi si inaonekana katika bado. 284 00:12:20,220 --> 00:12:24,230 Ni lugha pretty ndogo na moja ya sifa nzuri kuhusu C ni struct. 285 00:12:24,230 --> 00:12:27,300 Kwa mfano, kama wewe alitaka represent-- hebu 286 00:12:27,300 --> 00:12:33,690 kusema alitaka kuwa na kutofautiana kwamba inawakilisha mwanafunzi katika mpango fulani. 287 00:12:33,690 --> 00:12:37,330 Labda walikuwa kuandika shaka Mpango wa usajili, au msingi ununuzi 288 00:12:37,330 --> 00:12:38,870 chombo, au kitu kama hicho. 289 00:12:38,870 --> 00:12:42,922 Ni vipande vya data kuhusiana nini kwa mwanafunzi kuwa kuja akili? 290 00:12:42,922 --> 00:12:44,880 Kama mwanafunzi ni kuwakilishwa na kile maadili? 291 00:12:44,880 --> 00:12:45,732 Yeah? 292 00:12:45,732 --> 00:12:46,940 Una jina kama mwanafunzi. 293 00:12:46,940 --> 00:12:48,900 Nini kingine haina mwanafunzi wa kawaida na? 294 00:12:48,900 --> 00:12:49,320 >> Watazamaji: [inaudible] 295 00:12:49,320 --> 00:12:50,200 >> DAVID J. Malan: Hivyo, pole. 296 00:12:50,200 --> 00:12:50,660 >> Watazamaji: Umri. 297 00:12:50,660 --> 00:12:52,980 >> DAVID J. Malan: umri au kuzaliwa equivalently, yep. 298 00:12:52,980 --> 00:12:53,557 Nini kingine? 299 00:12:53,557 --> 00:12:54,390 Watazamaji: ID namba? 300 00:12:54,390 --> 00:12:57,460 DAVID J. Malan: Hivyo ID idadi, labda nambari ya simu, labda Dorm, au nyumba, 301 00:12:57,460 --> 00:12:58,670 au chuo, au kitu kama hicho. 302 00:12:58,670 --> 00:13:01,820 Idadi yoyote ya vipande vya data kwamba unaweza kuwa katika orodha yako 303 00:13:01,820 --> 00:13:03,890 ni nini kinaweza kufafanua mwanafunzi. 304 00:13:03,890 --> 00:13:08,490 Hivyo kama sisi alitaka kufanya hivyo, katika kanuni, tupate kufanya kitu rahisi kama hii. 305 00:13:08,490 --> 00:13:15,670 Tupate kuwa na mpango ili ina hebu sema, int kuu (utupu). 306 00:13:15,670 --> 00:13:18,920 Na kama nataka kuwakilisha mwanafunzi nipate kuwa, kwa mfano, 307 00:13:18,920 --> 00:13:24,330 string kuitwa jina kwa kuwa mwanafunzi, string kuitwa Dorm kwa kuwa mwanafunzi, 308 00:13:24,330 --> 00:13:26,900 labda int kuitwa ID kwa kuwa mwanafunzi. 309 00:13:26,900 --> 00:13:30,840 Na kwa sababu mimi nina kutumia kamba, mimi haja ya kwenda nyuma na kuweka CS50.h. 310 00:13:30,840 --> 00:13:33,300 Labda mimi nina kwenda haja stdio.h. 311 00:13:33,300 --> 00:13:38,190 Hivyo basi mimi preemptively kufanya wale na mimi nina kwenda kuwaita student.c hii kwa sasa 312 00:13:38,190 --> 00:13:40,080 na kuokoa hii. 313 00:13:40,080 --> 00:13:44,206 >> Na sasa siwezi kufanya kitu na vigezo hivi. 314 00:13:44,206 --> 00:13:46,830 Na sisi ni kwenda tu kuandika kwamba kama maoni katika Pseudo kificho, 315 00:13:46,830 --> 00:13:48,829 kwa sababu si kuvutia nini cha kufanya kwa sasa. 316 00:13:48,829 --> 00:13:51,242 OK, hivyo hii ni mpango kwamba namna fulani maduka mwanafunzi. 317 00:13:51,242 --> 00:13:53,450 Je, nataka kufanya kama mimi unataka kuhifadhi wanafunzi wawili? 318 00:13:53,450 --> 00:13:55,991 Hivyo silika yangu ya kwanza ni kwenda kuwa sawa, kusubiri dakika, 319 00:13:55,991 --> 00:14:01,920 kama nina mwanafunzi mwingine kwa nini si mimi tu kufanya kamba jina 2, kamba Dorm 2, 320 00:14:01,920 --> 00:14:04,190 int id2. 321 00:14:04,190 --> 00:14:06,540 Na tumefanya gone chini ya barabara hii kabla 322 00:14:06,540 --> 00:14:10,890 na ilikuwa ni nini ufumbuzi wetu kwa kile inaonekana kuwa aina ya hackish nakala kuweka 323 00:14:10,890 --> 00:14:11,555 kazi hapa? 324 00:14:11,555 --> 00:14:12,346 Watazamaji: safu. 325 00:14:12,346 --> 00:14:13,830 DAVID J. Malan: Yeah, tunaweza kutumia safu. 326 00:14:13,830 --> 00:14:15,620 Haki hii kwa haraka sana inakuwa unwieldy. 327 00:14:15,620 --> 00:14:18,453 Una aina ya kiholela kuanza kumtaja wote wa vigezo hivi. 328 00:14:18,453 --> 00:14:22,190 Na wewe, binadamu, una kuweka kufuatilia kwamba OK NAME2 sambamba 329 00:14:22,190 --> 00:14:25,060 na dorm2 sambamba na id2. 330 00:14:25,060 --> 00:14:26,200 Ni tu anakuwa fujo. 331 00:14:26,200 --> 00:14:29,350 Hivyo ni rahisi sana, kukumbuka kutoka wiki chache zilizopita, 332 00:14:29,350 --> 00:14:34,300 kwa kuwa tu kwa kuitwa majina kamba na labda kutupa tatu ya wale. 333 00:14:34,300 --> 00:14:36,940 Na kisha labda tuna kamba mabweni na kuwa na 334 00:14:36,940 --> 00:14:41,900 tatu ya wale, au kwa mara kwa mara, int Vitambulisho na kuwa na tatu ya wale. 335 00:14:41,900 --> 00:14:45,250 Lakini hata sasa hii anahisi kidogo sloppy, haki. 336 00:14:45,250 --> 00:14:49,440 Tunazungumzia wanafunzi na bado Mimi nina kweli makao juu ya kiwango cha chini 337 00:14:49,440 --> 00:14:50,470 utekelezaji maelezo. 338 00:14:50,470 --> 00:14:52,790 Mwanafunzi jina na mabweni na ID. 339 00:14:52,790 --> 00:14:59,814 >> Kwa nini siwezi tu kutangaza kutofautiana aitwaye mwanafunzi na kuiita s. 340 00:14:59,814 --> 00:15:02,230 Na kama nataka mwanafunzi mwingine, kwa nini sio mimi tu kuiita t. 341 00:15:02,230 --> 00:15:05,260 Au kama nataka rundo zima ya wanafunzi, mbona si mimi tu 342 00:15:05,260 --> 00:15:09,740 kusema nina tabaka zima la wanafunzi, na ni watatu kati yao. 343 00:15:09,740 --> 00:15:12,470 Kwa maneno mengine, kwa nini siwezi kuja na data zangu aina, inayoitwa 344 00:15:12,470 --> 00:15:15,641 Wanafunzi, ndani ya ambayo ni jina, ni ID, ni Dorm, 345 00:15:15,641 --> 00:15:16,890 ni idadi yoyote ya maeneo mengine. 346 00:15:16,890 --> 00:15:19,030 Na zinageuka wewe unaweza kufanya hasa kwamba. 347 00:15:19,030 --> 00:15:21,850 >> Hivyo C ana kipengele hiki kinachoitwa struct. 348 00:15:21,850 --> 00:15:24,700 Hiyo ni hulka lugha hiyo inaruhusu sisi kufanya hasa hili. 349 00:15:24,700 --> 00:15:28,370 Mimi kwenda mbele na kufungua structs.h 350 00:15:28,370 --> 00:15:32,299 ambapo tunakwenda kuona kufuatia ufafanuzi wa mwanafunzi. 351 00:15:32,299 --> 00:15:35,215 Ni zinageuka - na hii moja hata rahisi kuliko moja kuwashirikisha ID 352 00:15:35,215 --> 00:15:36,080 wakati iliyopita. 353 00:15:36,080 --> 00:15:39,120 Kama unataka kuja na data ya aina yako homemade, 354 00:15:39,120 --> 00:15:42,750 na kwa kuongeza int, na char na kuelea na wengine wote hawa ambazo zipo, 355 00:15:42,750 --> 00:15:45,810 unaweza kufanya hivyo kwa literally kuandika typedef struct, 356 00:15:45,810 --> 00:15:47,880 kisha baadhi braces curly, ndani ya ambayo wewe 357 00:15:47,880 --> 00:15:51,460 orodha vigezo unataka kujiunga na hii desturi takwimu mpya 358 00:15:51,460 --> 00:15:55,670 aina kama jina na mabweni, na kisha baada ya braces curly 359 00:15:55,670 --> 00:15:57,860 unaweza kumpa jina kwa aina mpya data. 360 00:15:57,860 --> 00:15:59,220 Hivyo, kwa mfano, mwanafunzi. 361 00:15:59,220 --> 00:16:03,247 >> Na nini ni nzuri kuhusu hili sasa ni kwamba kama sisi kuangalia kificho inayolingana, 362 00:16:03,247 --> 00:16:05,080 mkataba huo, kwanza kabisa, ni kuweka hii 363 00:16:05,080 --> 00:16:08,230 katika faili inayoitwa kitu nukta h, kichwa faili, ambayo sisi si 364 00:16:08,230 --> 00:16:09,780 kuanza kutumia wenyewe kupita kiasi. 365 00:16:09,780 --> 00:16:12,120 Lakini sisi ni kwenda kuanza kutumia kidogo kabisa sasa. 366 00:16:12,120 --> 00:16:18,650 Na nini tunaweza kufanya na hii, hatimaye, katika hizo mistari michache ya kificho 367 00:16:18,650 --> 00:16:22,130 ni kutangaza hasa kwamba Aina ya data, mwanafunzi. 368 00:16:22,130 --> 00:16:23,230 Na sasa hebu kuitumia. 369 00:16:23,230 --> 00:16:27,274 >> Mimi nina kwenda sasa kwenda katika faili inayoitwa structs1.c. 370 00:16:27,274 --> 00:16:29,440 Na hebu tuangalie sifa chache hapa. 371 00:16:29,440 --> 00:16:32,250 Hivyo mambo hapa ni wengi wao wakiwa wa utambuzi, na tutaweza 372 00:16:32,250 --> 00:16:35,040 kurudi kitu ambacho si ukoo katika muda tu. 373 00:16:35,040 --> 00:16:39,880 Hii bila shaka ni pamoja na yangu mwenyewe kichwa faili, ambayo ni mpya pia, 374 00:16:39,880 --> 00:16:42,580 isipokuwa kwa pset 3 wapi, wanakumbuka, tuna helpers.h. 375 00:16:42,580 --> 00:16:45,150 Hivyo unaweza kukumbuka # Pamoja helpers.h. 376 00:16:45,150 --> 00:16:49,381 >> Kwa nini ingawa mimi kutumia quotes badala ya mabano angled? 377 00:16:49,381 --> 00:16:50,630 Wakati gani mimi kuchagua kati yao? 378 00:16:50,630 --> 00:16:52,310 Karibu kila mara mimi wanaonekana kutumia mabano angled. 379 00:16:52,310 --> 00:16:55,040 Na kisha, kwa ghafla juu ya mstari sita mimi nina kutumia quotes mbili. 380 00:16:55,040 --> 00:16:55,860 Kwa nini huenda kuwa ni nani? 381 00:16:55,860 --> 00:16:56,700 Yeah? 382 00:16:56,700 --> 00:16:57,725 >> Watazamaji: [inaudible] 383 00:16:57,725 --> 00:16:59,350 DAVID J. Malan: Hiyo ni halisi, ni nini? 384 00:16:59,350 --> 00:17:00,559 Watazamaji: Hiyo ni katika IDE yako. 385 00:17:00,559 --> 00:17:02,475 DAVID J. Malan: Yeah, hiyo ni katika IDE yangu halisi. 386 00:17:02,475 --> 00:17:05,690 Na hebu kukaa juu IDE, kwa sababu hiyo ni chombo kwamba mimi nina kutumia. 387 00:17:05,690 --> 00:17:08,119 Hiyo ni katika sasa yangu directory, hasa. 388 00:17:08,119 --> 00:17:11,647 Hivyo structs.h ni faili yangu mwenyewe si imewekwa katika IDE, 389 00:17:11,647 --> 00:17:14,480 katika mfumo wa uendeshaji yenyewe, badala ni katika orodha yangu ya sasa. 390 00:17:14,480 --> 00:17:16,910 Hivyo mkataba ni kama unataka ni pamoja na mpira wa kichwa yako mwenyewe faili, 391 00:17:16,910 --> 00:17:18,200 wewe tu kutumia quotes mbili. 392 00:17:18,200 --> 00:17:23,290 >> Tufanye nini kuwaita jambo hili katika mstari 8, kwa ujumla kuzungumza? 393 00:17:23,290 --> 00:17:25,200 Hii ni nini? 394 00:17:25,200 --> 00:17:28,220 #define kitu. 395 00:17:28,220 --> 00:17:31,040 Hii inawakilisha constants, sawa? 396 00:17:31,040 --> 00:17:33,140 Kama unataka kuwa na thamani katika mpango wako 397 00:17:33,140 --> 00:17:35,110 kwamba matumizi yote rundo la nyakati, ni 398 00:17:35,110 --> 00:17:39,330 nzuri mkataba na sababu nje, kuyatangaza, na hash ishara 399 00:17:39,330 --> 00:17:43,340 kufafanua, basi, na mkataba huo, katika yote uppercase word-- ingawa si 400 00:17:43,340 --> 00:17:45,320 madhubuti muhimu, lakini ni mkataba wa binadamu 401 00:17:45,320 --> 00:17:47,210 capitalize constants ili waweze kuruka nje 402 00:17:47,210 --> 00:17:50,380 saa wewe visually-- nafasi na kisha thamani unataka kuwa 403 00:17:50,380 --> 00:17:52,250 sawa na jina kwamba mara kwa mara ya. 404 00:17:52,250 --> 00:17:56,110 Hakuna semicolon, lakini wewe tu kufuata mfano kwamba kuna. 405 00:17:56,110 --> 00:17:57,770 >> Kwa hiyo kile ni mimi kufanya katika kanuni hii halisi. 406 00:17:57,770 --> 00:18:00,660 Basi hebu tuangalie Mpango kuu hapa. 407 00:18:00,660 --> 00:18:04,080 Katika mstari 12 kwa sababu mimi kuwa ni pamoja na structs.h, 408 00:18:04,080 --> 00:18:06,492 Mimi sasa magically katika wangu ovyo mpya aina data. 409 00:18:06,492 --> 00:18:09,200 Mimi si tu kupata int, na Char, na kuelea, na kamba, 410 00:18:09,200 --> 00:18:10,060 na rangi ya bluu na wengine. 411 00:18:10,060 --> 00:18:12,470 Mimi sasa wanapata Aina ya mwanafunzi data. 412 00:18:12,470 --> 00:18:17,740 Hivyo katika mstari 12, mimi nina kuchanganya mbili ideas-- moja data ya aina desturi na mbili, 413 00:18:17,740 --> 00:18:18,940 kutumia safu. 414 00:18:18,940 --> 00:18:21,700 Na hivyo katika mpango huu ikiwa Nataka kweli kusaidia 415 00:18:21,700 --> 00:18:24,320 tatu wanafunzi mbalimbali katika mpango wangu, mimi 416 00:18:24,320 --> 00:18:30,480 unaweza tu kusema nipe kutofautiana aitwaye wanafunzi, kila ambayo 417 00:18:30,480 --> 00:18:32,970 ni ya aina wanafunzi, ambazo ni wangu data aina desturi. 418 00:18:32,970 --> 00:18:35,890 Na, hasa, nipe tatu ya wale katika safu yangu. 419 00:18:35,890 --> 00:18:37,750 >> Hivyo sasa tunafanya nini katika mpango huu? 420 00:18:37,750 --> 00:18:40,670 Hapa ni tu kwa kitanzi iterating 0-3, kwa sababu hiyo 421 00:18:40,670 --> 00:18:42,110 nini thamani ya wanafunzi ni. 422 00:18:42,110 --> 00:18:44,420 Mimi na kusababisha tu user nipe jina mwanafunzi. 423 00:18:44,420 --> 00:18:48,090 Na kisha katika mstari 17, sisi kuwa mstari hasa ukoo. 424 00:18:48,090 --> 00:18:50,370 Tuna rafiki yetu ya zamani GetString juu ya haki. 425 00:18:50,370 --> 00:18:52,345 Na kipande kile cha syntax ni inaonekana mpya, 426 00:18:52,345 --> 00:18:55,130 kama wewe sijawahi iliyowekwa katika C kabla, na kamwe kutumika structs? 427 00:18:55,130 --> 00:18:55,510 Yeah? 428 00:18:55,510 --> 00:18:56,417 >> Watazamaji: .name. 429 00:18:56,417 --> 00:18:57,500 DAVID J. Malan: .name. 430 00:18:57,500 --> 00:19:01,220 Lakini hii si sana ya leap, kwa sababu sasa wanafunzi mabano i 431 00:19:01,220 --> 00:19:02,590 anatoa i-th mwanafunzi. 432 00:19:02,590 --> 00:19:04,730 Na kama unataka kupiga mbizi ndani ya muundo kwamba, 433 00:19:04,730 --> 00:19:09,490 wewe tu kutumia kipindi kimoja na kisha jina la kutofautiana ndani, 434 00:19:09,490 --> 00:19:11,900 au mali ndani ya kwamba unataka kupata. 435 00:19:11,900 --> 00:19:14,816 Vile vile basi, kama mimi basi kuchochea user, nipe mwanafunzi mabweni, 436 00:19:14,816 --> 00:19:18,390 unaweza vile vile kuhifadhi kwamba kamba katika Dorm kutofautiana ndani ya 437 00:19:18,390 --> 00:19:19,940 ya kwamba muundo mwanafunzi. 438 00:19:19,940 --> 00:19:21,410 >> Na sasa mambo kupata dhana kidogo. 439 00:19:21,410 --> 00:19:24,420 Na hii ni kwenda kuangalia katika labda mengi kabisa hivi karibuni. 440 00:19:24,420 --> 00:19:27,970 Lakini utaona hii mbali zaidi katika pset 4, hivyo hebu tu mtazamo saa sasa. 441 00:19:27,970 --> 00:19:33,364 Ni zinageuka kuwa katika mstari 23 kupitia 38, unafikiri nini mimi nina labda kufanya? 442 00:19:33,364 --> 00:19:35,530 Nimekuwa kuondolewa maoni kwa leo, lakini toleo 443 00:19:35,530 --> 00:19:38,660 ya maadili ya online kwa kumbukumbu ina maoni yote. 444 00:19:38,660 --> 00:19:40,171 Je, mimi wanaonekana kuwa kufanya? 445 00:19:40,171 --> 00:19:42,530 >> Watazamaji: Kuokoa faili na kila habari kwamba mtumiaji aliingia. 446 00:19:42,530 --> 00:19:44,530 >> DAVID J. Malan: Yeah, hasa, hii ni njia mpya 447 00:19:44,530 --> 00:19:46,370 kwamba sisi ni kuona miwili, Kipengele kingine cha C, 448 00:19:46,370 --> 00:19:48,700 ambapo naweza kujenga files yangu mwenyewe. 449 00:19:48,700 --> 00:19:51,580 Hivi sasa, karibu kila mpango umefanya imeandikwa ni wasiokuwa na utaifa. 450 00:19:51,580 --> 00:19:53,334 Mara tu ni kosa kukimbia, hiyo ni yake. 451 00:19:53,334 --> 00:19:55,000 Hakuna kumbukumbu au kumbukumbu yake. 452 00:19:55,000 --> 00:19:56,110 Hakuna faili kuokolewa ni. 453 00:19:56,110 --> 00:19:58,120 Lakini kama huna wanataka kuokoa pembejeo ambayo ina 454 00:19:58,120 --> 00:20:02,100 kilichotokea, kama katika mchezo au mpango kama hii, ni zamu nje tunaweza kufanya hivyo. 455 00:20:02,100 --> 00:20:04,360 Na utaona hii zaidi katika pset 4 na katika sehemu. 456 00:20:04,360 --> 00:20:08,661 Lakini mstari huu 23 kimsingi inajenga faili inayoitwa students.csv. 457 00:20:08,661 --> 00:20:10,160 Na unaweza kuwa na kuonekana huu kabla. 458 00:20:10,160 --> 00:20:14,250 Hata kama wewe sijawahi alisoma CS kabla, CSV ni koma vigezo. 459 00:20:14,250 --> 00:20:19,000 Ni kama mtu maskini sana ya toleo la Excel file, 460 00:20:19,000 --> 00:20:22,270 ambayo ina maana kwamba inaweza kufunguliwa katika Excel na katika Apple Hesabu, 461 00:20:22,270 --> 00:20:23,830 na ina safu na nguzo. 462 00:20:23,830 --> 00:20:26,485 Lakini siyo wamiliki muundo kama Microsoft au Apple. 463 00:20:26,485 --> 00:20:29,840 Ni koma tu kutenganisha maadili ambayo tutaweza kuona katika wakati huu. 464 00:20:29,840 --> 00:20:31,010 >> Na tu kuchukua nadhani. 465 00:20:31,010 --> 00:20:33,480 Katika mstari 23, katika sana Mwishoni, hoja ya pili yangu 466 00:20:33,480 --> 00:20:37,700 kwa kazi hii mpya iitwayo f wazi kwa ajili ya faili wazi ni w. 467 00:20:37,700 --> 00:20:39,430 Nini kinaweza kuashiria w? 468 00:20:39,430 --> 00:20:40,022 Yeah? 469 00:20:40,022 --> 00:20:41,260 >> Watazamaji: Ni inakuwezesha kuandika na faili? 470 00:20:41,260 --> 00:20:42,630 >> DAVID J. Malan: Ni inakuwezesha kuandika na faili. 471 00:20:42,630 --> 00:20:44,810 Hivyo kuna michache ya variants tuweze kuziba katika hapa. 472 00:20:44,810 --> 00:20:47,184 Lakini kama wewe tu unataka kusoma file, kwamba ni kuangalia ni 473 00:20:47,184 --> 00:20:50,010 na kusoma katika kumbukumbu, wewe tu kutumia quote unquote "r". 474 00:20:50,010 --> 00:20:53,110 Kama unataka kuandika kwa file, matumizi quote unquote "w". 475 00:20:53,110 --> 00:20:55,190 Kuna pia append na michache ya mambo mengine 476 00:20:55,190 --> 00:20:57,356 kama unataka kurekebisha files zilizopo. 477 00:20:57,356 --> 00:21:00,480 Sasa tunakwenda kuweka kuona hii Jambo, basi tutaweza kurudi kwa kujipanga 24. 478 00:21:00,480 --> 00:21:02,640 NULL, ni zamu nje, ni thamani maalum kwamba 479 00:21:02,640 --> 00:21:06,070 inaweza kurudishwa na baadhi ya kazi kama kitu amekwenda wrong-- 480 00:21:06,070 --> 00:21:08,490 kama faili haipo, kama umefanya kukimbia nje ya kumbukumbu, 481 00:21:08,490 --> 00:21:09,620 au kundi la makosa mengine. 482 00:21:09,620 --> 00:21:13,470 Lakini kwa sasa, hebu tu kudhani kwamba hii ni tu ya kawaida ya kuangalia makosa. 483 00:21:13,470 --> 00:21:17,090 Hapa katika mstari 26, mimi nina iterating 0-3 juu ya wanafunzi yangu yote. 484 00:21:17,090 --> 00:21:20,470 Na hii ni aina ya aina ya kazi mpya, fprintf, 485 00:21:20,470 --> 00:21:21,460 lakini tu kuchukua nadhani. 486 00:21:21,460 --> 00:21:24,370 Kama printf ni magazeti kamba mpangilio 487 00:21:24,370 --> 00:21:26,507 je fprintf pengine ina maana gani? 488 00:21:26,507 --> 00:21:27,590 Watazamaji: Magazeti na faili. 489 00:21:27,590 --> 00:21:29,290 DAVID J. Malan: Magazeti a mpangilio kamba na faili. 490 00:21:29,290 --> 00:21:31,180 Hilo ndilo ziada f njia ni faili. 491 00:21:31,180 --> 00:21:36,420 Na mpya hoja ya kwanza ina kuwa kutofautiana kwamba inawakilisha faili yako. 492 00:21:36,420 --> 00:21:38,866 Kisha sisi tu kuwa na muundo kamba tu kama printf. 493 00:21:38,866 --> 00:21:40,740 Na hata kama hii syntax ni mpya, hii tu 494 00:21:40,740 --> 00:21:44,610 ina maana kuziba katika jina mwanafunzi, kuziba-katika mwanafunzi mabweni, na kisha 495 00:21:44,610 --> 00:21:47,160 na fclose, karibu faili. 496 00:21:47,160 --> 00:21:49,730 Na kisha lastly-- hii ni mpya na tutaweza kurudi huu 497 00:21:49,730 --> 00:21:53,240 kabla long-- mimi nina kumkomboa mwanafunzi kwa sababu za 498 00:21:53,240 --> 00:21:54,860 yaliyotokea juu juu huko. 499 00:21:54,860 --> 00:21:56,820 Lakini tutaweza kurudi kwa kuwa kabla long-- 500 00:21:56,820 --> 00:21:59,820 hiyo ni kwa sababu ya jinsi GetString ni kweli kazi chini ya Hood. 501 00:21:59,820 --> 00:22:01,280 >> Basi hebu tuangalie kwa haraka hapa. 502 00:22:01,280 --> 00:22:04,380 Kama mimi aina ls katika orodha yangu, taarifa kwamba mimi si 503 00:22:04,380 --> 00:22:09,360 na faili inayoitwa students.csv, tu si kuna, haipo. 504 00:22:09,360 --> 00:22:14,965 Hivyo kama mimi sasa kukusanya mpango huu, kufanya structs-1,. / structs-1, 505 00:22:14,965 --> 00:22:20,570 na mimi nina kwenda mbele na aina katika Andi, ambaye anaishi katika Berkeley katika Yale. 506 00:22:20,570 --> 00:22:26,350 Tunakwenda kuwa na Rob ambaye anaishi katika Thayer siku hizi. 507 00:22:26,350 --> 00:22:33,760 Na hebu kuja na ambapo ni, nadhani, Maria ni katika Mather, 508 00:22:33,760 --> 00:22:35,100 kama mimi nimekumbuka usahihi. 509 00:22:35,100 --> 00:22:36,460 >> Hivyo kitu inaonekana kutokea. 510 00:22:36,460 --> 00:22:40,680 Lakini kama mimi aina ls sasa, kuna students.csv. 511 00:22:40,680 --> 00:22:43,080 Hebu kwenda mbele na students.csv wazi. 512 00:22:43,080 --> 00:22:46,050 Hii ni mara ya pili sana nyepesi faili. 513 00:22:46,050 --> 00:22:49,570 Lakini nimepata tu iliyopitishwa mkataba kwamba nina safu mbili na nguzo hapa. 514 00:22:49,570 --> 00:22:52,020 Safu ya kwanza ni watu wa kwanza wa majina. 515 00:22:52,020 --> 00:22:55,740 Safu ya pili ni mwanafunzi Dorm, au chuo, au nyumba, au whatnot. 516 00:22:55,740 --> 00:22:57,900 Na sasa nimekuwa kuokolewa huu kudumu katika faili. 517 00:22:57,900 --> 00:22:59,280 >> Hivyo si yote ya kuvutia. 518 00:22:59,280 --> 00:23:02,980 Lakini hii ni jiwe wanazidi sasa na kuwa na uwezo wa kuendelea maelezo 519 00:23:02,980 --> 00:23:04,040 kudumu. 520 00:23:04,040 --> 00:23:08,340 Basi hebu angalia sasa yale zaidi tunaweza kufanya na haya na mengine makala. 521 00:23:08,340 --> 00:23:10,729 Lakini kwanza, maswali yoyote? 522 00:23:10,729 --> 00:23:12,145 Hiyo ilikuwa ni mengi, na kwamba alikuwa haraka. 523 00:23:12,145 --> 00:23:16,131 Lakini utaona mengi zaidi katika pset 4, pia. 524 00:23:16,131 --> 00:23:16,630 Yeah? 525 00:23:16,630 --> 00:23:19,360 >> Watazamaji: Je, kuna njia ya kuendelea kuongeza majina ya faili hayo? 526 00:23:19,360 --> 00:23:19,880 >> DAVID J. Malan: swali nzuri. 527 00:23:19,880 --> 00:23:21,800 Je, kuna njia ya kuendelea kuongeza majina ya faili hayo? 528 00:23:21,800 --> 00:23:22,340 Ndiyo. 529 00:23:22,340 --> 00:23:24,630 Na, kwa kweli, kama wewe kuishia up re-kufungua faili, 530 00:23:24,630 --> 00:23:26,780 ungependa kutumia kunukuu unquote "" kwa append, 531 00:23:26,780 --> 00:23:31,090 ambayo itakuwa tu kuongeza line mpya, mstari mpya tena na tena, hasa. 532 00:23:31,090 --> 00:23:32,010 Nzuri swali. 533 00:23:32,010 --> 00:23:32,950 Maswali mengine? 534 00:23:32,950 --> 00:23:33,450 Yeah? 535 00:23:33,450 --> 00:23:35,580 Watazamaji: Kama mbio Mpango tena hivi sasa, 536 00:23:35,580 --> 00:23:38,000 itakuwa ni kuendelea kuongeza majina kwa faili au itakuwa ni kufungua faili mpya? 537 00:23:38,000 --> 00:23:38,740 >> DAVID J. Malan: Ah, nzuri swali. 538 00:23:38,740 --> 00:23:41,448 Kama mbio mpango tena haki sasa, labda typed katika majina mapya, 539 00:23:41,448 --> 00:23:44,820 itakuwa ni kuongeza faili au overwrite faili? 540 00:23:44,820 --> 00:23:47,420 Mwisho, kwa sababu mimi nina si kwa kutumia hali ya append. 541 00:23:47,420 --> 00:23:49,930 Na kwa sababu mimi nina tu upofu kufungua faili kwa ajili ya kuandika, 542 00:23:49,930 --> 00:23:51,310 ni tu kwenda overwrite faili. 543 00:23:51,310 --> 00:23:54,570 Hivyo napenda kweli unahitaji kufanya ni append, kama nataka kweli kuwa kwa muda mrefu 544 00:23:54,570 --> 00:23:55,350 database. 545 00:23:55,350 --> 00:23:58,220 >> Sasa CSV ni muhimu, kusema ukweli, hata kwa kama kama wewe ni writing-- 546 00:23:58,220 --> 00:24:00,100 na tutaweza hatimaye kuona hii baadaye katika muhula wakati 547 00:24:00,100 --> 00:24:01,455 tunatumia CSVs kwa madhumuni mengine. 548 00:24:01,455 --> 00:24:04,920 Kama unataka kuhifadhi wote wa watu ambao wamejiandikisha kwa baadhi ya tukio hilo, 549 00:24:04,920 --> 00:24:07,420 au saini kwa ajili ya mwanafunzi wako kundi, au kitu kama hicho, 550 00:24:07,420 --> 00:24:10,330 kuhifadhi data katika aina hii ya muundo ni super rahisi. 551 00:24:10,330 --> 00:24:12,580 Kwa sababu halisi, kama mimi walikuwa kupakua faili hii. 552 00:24:12,580 --> 00:24:14,540 Mimi naweza double-- na hebu kweli kujaribu hii 553 00:24:14,540 --> 00:24:16,720 kama nina Excel au Hesabu hapa. 554 00:24:16,720 --> 00:24:19,130 >> Mimi nina kwenda haki-click au kudhibiti-click faili yangu. 555 00:24:19,130 --> 00:24:20,020 Whoops. 556 00:24:20,020 --> 00:24:21,830 Right-click au kudhibiti-click faili yangu. 557 00:24:21,830 --> 00:24:24,960 Haya, panya yangu si kushirikiana. 558 00:24:24,960 --> 00:24:32,694 Download-- nitakacho download mafaili yote hapa ili 559 00:24:32,694 --> 00:24:33,860 tu ili niweze kunyakua hii moja. 560 00:24:33,860 --> 00:24:37,850 Na hebu angalia kama hii kazi students.csv-- mara ya kwanza 561 00:24:37,850 --> 00:24:39,310 Nimekuwa kuanzishwa. 562 00:24:39,310 --> 00:24:41,360 Sasa wanataka kuona mawasiliano yangu. 563 00:24:41,360 --> 00:24:44,310 Sasa, mimi haja ya kujiandikisha. 564 00:24:44,310 --> 00:24:47,620 Kuona jinsi gani ni rahisi kutumia CSVs? 565 00:24:47,620 --> 00:24:50,840 Ndiyo, kuitunza hadi sasa. 566 00:24:50,840 --> 00:24:52,375 Sawa, sasa tuko tayari kwa ajili ya darasa. 567 00:24:52,375 --> 00:24:58,750 568 00:24:58,750 --> 00:25:00,370 OK, loo, nini mpya? 569 00:25:00,370 --> 00:25:02,920 OK, karibu. 570 00:25:02,920 --> 00:25:04,750 Hiyo ilikuwa ni kichawi. 571 00:25:04,750 --> 00:25:07,280 Sawa, sasa tuna update. 572 00:25:07,280 --> 00:25:10,890 Na sasa, alisahau nini faili Mimi awali kufunguliwa, 573 00:25:10,890 --> 00:25:13,090 lakini kile a-- kuna sisi kwenda. 574 00:25:13,090 --> 00:25:16,341 OK, hivyo kwa sasa tuna Excel file. 575 00:25:16,341 --> 00:25:18,290 Asante. 576 00:25:18,290 --> 00:25:20,764 >> OK, hivyo nini mimi ilikuwa ni sehemu rahisi. 577 00:25:20,764 --> 00:25:23,930 Bila shaka mimi naweza kuwa kabla ya imewekwa Excel, au Hesabu, au chochote mpango. 578 00:25:23,930 --> 00:25:25,846 Lakini hii ni nzuri, kwa sababu sasa siwezi kuendesha 579 00:25:25,846 --> 00:25:28,090 data katika muundo standard. 580 00:25:28,090 --> 00:25:30,294 >> Hivyo sasa hebu mazingira kubadili ambapo sisi kushoto mbali 581 00:25:30,294 --> 00:25:32,710 Mara ya mwisho, ambayo ilikuwa kuanza kuchukua mbali magurudumu mafunzo. 582 00:25:32,710 --> 00:25:34,543 Lakini kwanza, hakuwa kuona hii mapema chakula cha mchana 583 00:25:34,543 --> 00:25:38,150 kwa mara nyingine tena kinachotokea hapa katika Moto na Barafu katika Cambridge, Sitar katika New Haven. 584 00:25:38,150 --> 00:25:43,150 Ishara ya juu kwenye tovuti CS50s ASAP kujiunga CS50 wanafunzi na wafanyakazi. 585 00:25:43,150 --> 00:25:46,090 >> Hivyo sisi alichukua magurudumu mafunzo mbali juu ya Jumatatu kama follows-- 586 00:25:46,090 --> 00:25:49,120 kamba imetangazwa katika CS50s maktaba kwa muda fulani. 587 00:25:49,120 --> 00:25:52,650 Na ni nzuri, kwa sababu inaruhusu sisi kuzungumzia vigezo kama kuwa 588 00:25:52,650 --> 00:25:54,660 Maneno kamili na hukumu na zaidi. 589 00:25:54,660 --> 00:25:56,710 Lakini zinageuka kamba haipo. 590 00:25:56,710 --> 00:26:00,200 Hiyo ni kisawe, au vinginevyo, kwamba tuna umba kwa kitu ambacho 591 00:26:00,200 --> 00:26:03,780 kweli ni kidogo zaidi kiufundi aitwaye * Char. 592 00:26:03,780 --> 00:26:07,900 >> Na hakika, tuliona mfano wa mpango Jumatatu 593 00:26:07,900 --> 00:26:11,200 kwamba hakuwa na kuishi kabisa kama sisi ilivyotarajiwa. 594 00:26:11,200 --> 00:26:13,630 Hii ilikuwa ni faili, kulinganisha-0. 595 00:26:13,630 --> 00:26:17,910 Na kukumbuka kuwa kulinganisha-0, ikiwa Mimi recompile mpango Jumatatu 596 00:26:17,910 --> 00:26:22,670 na kukimbia kulinganisha-0 na aina katika mama katika lowercase, na mama katika lowercase tena. 597 00:26:22,670 --> 00:26:25,320 Mpango alisisitiza mimi aina ya mambo mbalimbali, 598 00:26:25,320 --> 00:26:29,210 hata kama mama, yote katika lowercase, ni sawa kuibua. 599 00:26:29,210 --> 00:26:31,990 Kwa hiyo kile ni jibu fupi kwa nini kompyuta anadhani 600 00:26:31,990 --> 00:26:34,500 wale masharti mawili ni tofauti? 601 00:26:34,500 --> 00:26:35,250 Yeah? 602 00:26:35,250 --> 00:26:36,534 >> Watazamaji: [inaudible] 603 00:26:36,534 --> 00:26:37,450 DAVID J. Malan: Haki. 604 00:26:37,450 --> 00:26:39,600 Kwa hiyo, mama, mara ya kwanza Mimi aina yake katika, ni kuwa 605 00:26:39,600 --> 00:26:42,710 kuhifadhiwa mahali fulani katika kompyuta yangu kumbukumbu lakini katika eneo tofauti 606 00:26:42,710 --> 00:26:44,690 kuliko mara ya pili mimi aina katika mama. 607 00:26:44,690 --> 00:26:46,580 Sasa ni hakika inaweza kuwa optimized. 608 00:26:46,580 --> 00:26:49,205 Kompyuta inaweza kuwa smart na kutambua masharti haya mawili, hey, 609 00:26:49,205 --> 00:26:49,954 wao uko kufanana. 610 00:26:49,954 --> 00:26:51,520 Basi mimi si redundantly kuhifadhi. 611 00:26:51,520 --> 00:26:54,229 Lakini kompyuta kufanya hivyo optimization isipokuwa wewe kuwaambia. 612 00:26:54,229 --> 00:26:56,061 Hivyo, kwa default, wao uko tu kwenda kuishia 613 00:26:56,061 --> 00:26:57,670 katika maeneo mawili tofauti katika kumbukumbu. 614 00:26:57,670 --> 00:27:01,570 Na hivyo kuwa zaidi ya wazi, wakati sisi ikilinganishwa masharti mawili, 615 00:27:01,570 --> 00:27:03,950 kwanza aliitwa s, pili aliitwa 616 00:27:03,950 --> 00:27:08,530 t, ni nini hasa ilikuwa ni mimi kulinganisha hapa kwenye mstari 13? 617 00:27:08,530 --> 00:27:09,494 Naam. 618 00:27:09,494 --> 00:27:12,390 >> Watazamaji: Ni mahali katika kumbukumbu kwamba kutofautiana uhakika na. 619 00:27:12,390 --> 00:27:14,900 >> DAVID J. Malan: Hasa, nilikuwa kulinganisha nafasi katika kumbukumbu 620 00:27:14,900 --> 00:27:16,300 kwamba vigezo wale alisema kwa. 621 00:27:16,300 --> 00:27:20,560 Hivyo hasa, ikiwa mama alikuwa katika Byte namba 1, na 2, na 3, 622 00:27:20,560 --> 00:27:24,020 na 4-- kwa sababu kumbuka backslash 0 haja ya kuwa na njia yote mwishoni. 623 00:27:24,020 --> 00:27:29,420 Na mfano wa pili wa mama, m-o-m, Ilikuwa kwa anwani ya 10, 11, 12, na 13. 624 00:27:29,420 --> 00:27:33,100 Mimi nilikuwa kulinganisha 1, anwani hiyo, kwamba eneo katika kumbukumbu, 625 00:27:33,100 --> 00:27:35,160 dhidi ya 10, ambayo ni wazi si sawa. 626 00:27:35,160 --> 00:27:36,260 1 ni si 10. 627 00:27:36,260 --> 00:27:39,620 >> Hivyo hii ni nzuri kwa kuwa ni pretty moja kwa moja. 628 00:27:39,620 --> 00:27:42,870 Lakini ni tatizo kadiri hatuwezi wanaonekana kulinganisha masharti. 629 00:27:42,870 --> 00:27:44,930 Hivyo fundamentally-- na katika ngazi hii ya chini, 630 00:27:44,930 --> 00:27:47,300 kama alitaka kutekeleza mpango wa kulinganisha 631 00:27:47,300 --> 00:27:50,270 maneno mawili tofauti kwamba mtumiaji typed katika kwa ubora, 632 00:27:50,270 --> 00:27:53,944 je, wao kujipanga char kwa Char, tu katika ujumla, 633 00:27:53,944 --> 00:27:55,360 tunahitaji nini cha kufanya, inaonekana? 634 00:27:55,360 --> 00:27:57,940 Siyo kutosha tu kuangalia wale anwani miwili. 635 00:27:57,940 --> 00:27:58,860 Tufanye nini haja ya kufanya? 636 00:27:58,860 --> 00:27:59,360 Yeah? 637 00:27:59,360 --> 00:28:01,120 >> Watazamaji: Iterate kupitia kamba [inaudible]. 638 00:28:01,120 --> 00:28:02,600 >> DAVID J. Malan: Yeah, hebu iterate kupitia kamba. 639 00:28:02,600 --> 00:28:05,808 Hebu kutumia kwa kitanzi, kitanzi wakati, au chochote wewe ni vizuri zaidi kwa. 640 00:28:05,808 --> 00:28:08,840 Na kama sisi tumepewa masharti mawili mahali fulani katika kumbukumbu, hebu tuangalie kila ya 641 00:28:08,840 --> 00:28:11,770 tabia ya kwanza, basi kila ni wa pili tabia, kisha ya tatu, na nne, 642 00:28:11,770 --> 00:28:15,206 na tano, mpaka sisi hit nini thamani maalum mwangalizi? 643 00:28:15,206 --> 00:28:16,080 Watazamaji: [inaudible] 644 00:28:16,080 --> 00:28:18,800 DAVID J. Malan: Yeah, backslash sifuri, ambapo kiwango katika ama kamba 645 00:28:18,800 --> 00:28:20,100 tunaweza kuamua hiyo ni yake. 646 00:28:20,100 --> 00:28:21,970 Je, sisi kuendana kila tabia moja? 647 00:28:21,970 --> 00:28:22,990 Kama siyo, kurudi uongo. 648 00:28:22,990 --> 00:28:24,770 Kama ni hivyo, kurudi kweli. 649 00:28:24,770 --> 00:28:28,800 Na hivyo hiyo ni nini hasa toleo hili wa mpango kulinganisha-1.c gani. 650 00:28:28,800 --> 00:28:31,677 Ni sawa na kile sisi inaonekana katika Jumatatu ila kwa kuwa nimekuwa 651 00:28:31,677 --> 00:28:34,760 wamezipata kuondoa neno kamba ingawa kwamba hana impact-- kazi zote 652 00:28:34,760 --> 00:28:37,450 Mimi nina kufanya sasa ni kuondoa baadhi ya mafunzo magurudumu Visual, 653 00:28:37,450 --> 00:28:40,880 lakini kuona wazi kwamba s na t ni anwani. 654 00:28:40,880 --> 00:28:43,020 Na kwamba ni nini nyota, kinyota, inawakilisha 655 00:28:43,020 --> 00:28:46,690 ni ya mitaani, inayojulikana kitaalam zaidi kama pointer. 656 00:28:46,690 --> 00:28:49,880 >> Hivyo wakati mimi kutangaza s juu ya mstari wa 9 na kusema Char * s, 657 00:28:49,880 --> 00:28:52,160 hiyo haina maana nipe kamba. 658 00:28:52,160 --> 00:28:56,360 Hiyo ina maana nipe kutofautiana ambao lengo katika maisha ni kuhifadhi mahali. 659 00:28:56,360 --> 00:29:00,400 Kwa sababu mimi ni juu ya kuweka pepe ya kamba ndani yake. 660 00:29:00,400 --> 00:29:03,500 Na hakika, GetString, kwa kuwa wazi, haina kurudi kamba. 661 00:29:03,500 --> 00:29:06,110 Ni haina kurudi mama backslash sifuri, per se. 662 00:29:06,110 --> 00:29:10,005 Je GetString mahsusi na usahihi kurudi? 663 00:29:10,005 --> 00:29:10,880 Watazamaji: [inaudible] 664 00:29:10,880 --> 00:29:14,080 DAVID J. Malan: mitaani, pepe ya tabia ya kwanza 665 00:29:14,080 --> 00:29:16,070 katika baadhi kamba ni imenipatia. 666 00:29:16,070 --> 00:29:19,250 Na hivyo sasa sisi ni kuona keyword maalum tena. 667 00:29:19,250 --> 00:29:20,640 Na, mimi alluded hili mapema. 668 00:29:20,640 --> 00:29:23,620 Hii ni kwenda kuwa mkataba mzuri kwamba tutaweza kuona tena na tena sasa. 669 00:29:23,620 --> 00:29:27,540 Mimi nina kuangalia ili kuhakikisha kuwa s si batili na t sio null. 670 00:29:27,540 --> 00:29:30,100 Kwa sababu kulingana na yangu kweli kutaja haraka awali, 671 00:29:30,100 --> 00:29:35,510 nini kinaweza maana ikiwa GetString anarudi si anuani lakini N-U-L-L, ambayo ni mara ya pili, 672 00:29:35,510 --> 00:29:36,990 baadhi thamani maalum? 673 00:29:36,990 --> 00:29:37,890 >> Watazamaji: Kosa. 674 00:29:37,890 --> 00:29:38,600 >> DAVID J. Malan: Ni kosa. 675 00:29:38,600 --> 00:29:39,550 Kitu potoka. 676 00:29:39,550 --> 00:29:41,341 Na nini kawaida kinaweza kutokea, hasa 677 00:29:41,341 --> 00:29:45,162 na strings-- ambayo inaweza kuwa ya urefu haijulikani katika advance-- 678 00:29:45,162 --> 00:29:46,870 labda kompyuta ' nje ya kumbukumbu, labda 679 00:29:46,870 --> 00:29:49,280 uliyochapa katika hizo a muda mrefu neno au sentensi 680 00:29:49,280 --> 00:29:51,880 au pasted kama insha mkubwa kuna tu si kumbukumbu ya kutosha. 681 00:29:51,880 --> 00:29:55,340 Na hivyo GetString hawezi kurudi pepe ya jambo zima, 682 00:29:55,340 --> 00:29:56,620 hivyo ni tu anarudi kitu. 683 00:29:56,620 --> 00:30:00,580 Na inasema makosa yaliyotokea na kurudi thamani maalum null. 684 00:30:00,580 --> 00:30:02,890 Ni anuani sifuri, hivyo kusema. 685 00:30:02,890 --> 00:30:06,157 >> Sasa ni zamu nje C kuja na kazi ambayo hufanya hivyo iteration. 686 00:30:06,157 --> 00:30:09,240 Hatuna kutekeleza hili kwa a kwa kitanzi au kitanzi wakati sisi wenyewe. 687 00:30:09,240 --> 00:30:11,150 Tunaweza kutumia kazi, aitwaye ufupi, 688 00:30:11,150 --> 00:30:15,400 koroga dira, au kamba kulinganisha, ambaye lengo katika maisha ni kufanya hasa kwamba. 689 00:30:15,400 --> 00:30:19,990 Wewe kuwapa kuyatumia mbili, anwani miwili, na itakuwa kwenda wale anwani 690 00:30:19,990 --> 00:30:23,130 na kisha kulinganisha barua kwa barua kwa barua kwa ubora, 691 00:30:23,130 --> 00:30:26,610 kuacha tu wakati mambo ni kweli? 692 00:30:26,610 --> 00:30:31,540 Wakati shirikishi lazima koroga dira kuacha iterating, tu kuwa wazi? 693 00:30:31,540 --> 00:30:35,400 Wakati hits backslash 0 katika ama kamba, ambapo kiwango inaweza kuamua 694 00:30:35,400 --> 00:30:38,910 ina kila kitu kuendana, au kumekuwa iliyopo? 695 00:30:38,910 --> 00:30:42,740 >> Hivyo, kama sisi kukimbia hii sasa na kujaribu yetu mtaji mchezo kidogo, 696 00:30:42,740 --> 00:30:49,260 hivyo kufanya kulinganisha-1, ./compare-1, na aina mama katika lowercase mara zote mbili. 697 00:30:49,260 --> 00:30:50,560 Sasa ni kitu kimoja. 698 00:30:50,560 --> 00:30:54,080 Na kama mimi kufanya hivyo tena na lowercase na kisha labda herufi kubwa. 699 00:30:54,080 --> 00:30:56,720 Sasa ni kweli tofauti kati ya juu na ndogo. 700 00:30:56,720 --> 00:31:00,440 Hivyo si yote ngumu au kichawi, lakini haina sasa kueleza 701 00:31:00,440 --> 00:31:03,140 nini kinaendelea chini ya Hood. 702 00:31:03,140 --> 00:31:07,640 >> Kwa hiyo kile zaidi tunaweza kutafuta kutokana na aina hii ya somo? 703 00:31:07,640 --> 00:31:08,980 Basi hebu tuangalie hii. 704 00:31:08,980 --> 00:31:15,380 Mimi nina kwenda mbele na kuandika Mpango wa haraka hapa inaitwa nakala-0. 705 00:31:15,380 --> 00:31:21,594 Na sasa hebu kwenda mbele na kwa kweli hebu kufanya Haya na nakala-0, 706 00:31:21,594 --> 00:31:23,010 kuangalia nini mimi nimepata hapa. 707 00:31:23,010 --> 00:31:24,712 Mimi kwanza kuwaambia mtumiaji, kusema kitu. 708 00:31:24,712 --> 00:31:26,420 Kisha mimi kupata kamba na mimi kuhifadhiwa katika s. 709 00:31:26,420 --> 00:31:29,810 Kisha mimi kuangalia kama s ni sawa sawa NULL, tu kurudi 1. 710 00:31:29,810 --> 00:31:31,590 Hivyo hii ni tu kiwango kuangalia makosa. 711 00:31:31,590 --> 00:31:33,112 Hakuna kitu ya kuvutia kilichotokea. 712 00:31:33,112 --> 00:31:36,320 Na kwa kweli, kama sisi kujikwamua makosa cheki, hii inaonekana kama wiki 1 kificho 713 00:31:36,320 --> 00:31:36,985 kwa sasa. 714 00:31:36,985 --> 00:31:39,110 Lakini nimeanza kupata vizuri kidogo juu ya hilo. 715 00:31:39,110 --> 00:31:43,340 >> Sasa katika mstari 16, wiki iliyopita, labda siku hata wanandoa au dakika iliyopita, 716 00:31:43,340 --> 00:31:46,720 unaweza kusema mstari 16 ni kujenga variable kuitwa t 717 00:31:46,720 --> 00:31:48,219 na kuiga s ndani yake. 718 00:31:48,219 --> 00:31:50,010 Na hiyo ndiyo kikamilifu busara takeaway. 719 00:31:50,010 --> 00:31:51,560 Lakini kuwa sahihi zaidi sasa. 720 00:31:51,560 --> 00:31:54,190 Kile kinachotokea katika mstari 16? 721 00:31:54,190 --> 00:31:56,170 Nini ni kupata kunakiliwa kutoka kulia kwenda kushoto? 722 00:31:56,170 --> 00:31:56,669 Yeah? 723 00:31:56,669 --> 00:31:58,490 Watazamaji: Je t kupata pepe ya s? 724 00:31:58,490 --> 00:32:01,220 >> DAVID J. Malan: Hasa, t ni kupata pepe ya s. 725 00:32:01,220 --> 00:32:05,170 Hivyo kuwa wazi sasa, kama mimi kwenda nyuma ya mfano kwamba mapema 726 00:32:05,170 --> 00:32:08,520 na mimi kuteka kitu nimekuwa typed katika. 727 00:32:08,520 --> 00:32:11,640 Na nini nimekuwa typed in-- hapa ni s, na hapa 728 00:32:11,640 --> 00:32:15,830 ni nini nimekuwa typed katika mahali fulani katika kumbukumbu, mama na kisha backslash 729 00:32:15,830 --> 00:32:17,840 0 hiyo aliongeza kwa ajili yangu. 730 00:32:17,840 --> 00:32:23,060 What I kuhifadhiwa katika hapa, kukumbuka, hii ni katika eneo 1, 2, 3, 4, 731 00:32:23,060 --> 00:32:24,655 hii ni nini sasa katika s. 732 00:32:24,655 --> 00:32:29,220 Hivyo kama kwenye mstari 16, nasema nipe mwingine kutofautiana kuitwa t na kuhifadhi 733 00:32:29,220 --> 00:32:33,590 katika katika thamani ya s, nini anapata kuhifadhiwa hapa si mama 734 00:32:33,590 --> 00:32:35,480 bali tu namba 1. 735 00:32:35,480 --> 00:32:38,520 >> Hivyo kama sisi kuangalia mbele katika mpango huu sasa, nini kitatokea? 736 00:32:38,520 --> 00:32:40,690 Hivyo taarifa kwamba kuna kazi hii waweza 737 00:32:40,690 --> 00:32:44,410 wametumia huu baadhi ya wakati uliopita kwa Kaisari, au Vigenere, au labda si wakati wote. 738 00:32:44,410 --> 00:32:48,170 Mimi kudai kwa printf yangu, mimi nina kwenda capitalize nakala t. 739 00:32:48,170 --> 00:32:51,616 Kwanza katika mstari 19, haraka sanity kuangalia, hundi strlen urefu wa t. 740 00:32:51,616 --> 00:32:53,740 Kwa sababu mimi sitaki kujaribu capitalize kitu 741 00:32:53,740 --> 00:32:55,104 kama hakuna kamba huko. 742 00:32:55,104 --> 00:32:57,520 Kama mtumiaji tu hit Enter, kuna kitu capitalize. 743 00:32:57,520 --> 00:33:01,100 Hivyo Sitaki kufanya mstari 21. 744 00:33:01,100 --> 00:33:05,758 Hivyo mstari 21 ni kuyafanyia ambayo barua, inaonekana, katika t? 745 00:33:05,758 --> 00:33:06,514 >> Watazamaji: m? 746 00:33:06,514 --> 00:33:08,722 DAVID J. Malan: Inaonekana kama ni kuiga ambayo moja? 747 00:33:08,722 --> 00:33:09,486 Watazamaji: m. 748 00:33:09,486 --> 00:33:10,450 DAVID J. Malan: Uh, m. 749 00:33:10,450 --> 00:33:12,685 OK, hivyo m kwanza, kwa sababu taarifa kwamba mimi nina 750 00:33:12,685 --> 00:33:14,935 kupita kwa toupper, ambayo kama wewe sijawahi kuiona ni 751 00:33:14,935 --> 00:33:16,980 tu kazi kwa capitalize kama mchango wake. 752 00:33:16,980 --> 00:33:20,240 t mabano sifuri ina maana kutoa mimi tabia sifuri ya t. 753 00:33:20,240 --> 00:33:22,550 Na hivyo ni jinsi gani hii picha mabadiliko, kuwa wazi? 754 00:33:22,550 --> 00:33:25,490 755 00:33:25,490 --> 00:33:29,160 Kinachotakiwa kupata kuandikwa upya au kubadilishwa kwa heshima na s na t na mama 756 00:33:29,160 --> 00:33:30,097 backslash sifuri. 757 00:33:30,097 --> 00:33:31,470 >> Watazamaji: [inaudible] 758 00:33:31,470 --> 00:33:34,030 >> DAVID J. Malan: Yeah, hivyo hii moja hapa tu 759 00:33:34,030 --> 00:33:40,860 mahitaji ya kupata iliyopita to-- kurekebisha Haya mahitaji ya kupata iliyopita katika mji mkuu wa m. 760 00:33:40,860 --> 00:33:44,330 Lakini sasa, angalia baadaye katika mpango, kama mimi magazeti nje 761 00:33:44,330 --> 00:33:49,800 s na t kama mimi safi hapa, kuangalia nini kinaenda kutokea uchapishaji nje s na t. 762 00:33:49,800 --> 00:33:54,310 Hivyo kufanya nakala-0, ./copy-0. 763 00:33:54,310 --> 00:33:57,140 Hebu kwenda mbele na aina katika mama katika lowercase wote. 764 00:33:57,140 --> 00:34:00,140 Taarifa zote mbili awali na nakala wamekuwa mtaji. 765 00:34:00,140 --> 00:34:00,850 Kwa nini? 766 00:34:00,850 --> 00:34:04,431 Naam, s na t ni wawili akizungumzia, kama wewe, chunk kama hicho cha kumbukumbu. 767 00:34:04,431 --> 00:34:06,930 Na kusema ukweli, hii ni kupata kweli uninteresting-- ukweli 768 00:34:06,930 --> 00:34:09,150 kwamba sisi ni kutumia anwani sifuri hapa. 769 00:34:09,150 --> 00:34:11,719 I mean, mimi si kweli huduma ambapo mambo ni katika kumbukumbu. 770 00:34:11,719 --> 00:34:13,550 Pole mimi nina kufutwa kidogo sana. 771 00:34:13,550 --> 00:34:15,674 Lakini mimi si kweli huduma ambapo mambo ni katika kumbukumbu. 772 00:34:15,674 --> 00:34:18,510 Na hivyo, kwa kweli kile programmers huwa na kufikiri kuhusu 773 00:34:18,510 --> 00:34:21,080 ni kwamba wakati majadiliano juu ya pepe, au pointer, 774 00:34:21,080 --> 00:34:22,679 anayejali ambapo ni katika kumbukumbu. 775 00:34:22,679 --> 00:34:24,989 Sijali kama ni katika Byte moja au bilioni moja. 776 00:34:24,989 --> 00:34:27,920 I just huduma ya kwamba hii kutofautiana ni ufanisi 777 00:34:27,920 --> 00:34:29,620 akionyesha kwamba chunk ya kumbukumbu. 778 00:34:29,620 --> 00:34:33,350 Na hivyo, tangu sasa, badala ya quibble zaidi ya anwani kumbukumbu holela, hebu 779 00:34:33,350 --> 00:34:36,710 kuanza tu kuteka kuyatumia kama kuyatumia, kama mishale. 780 00:34:36,710 --> 00:34:39,340 Kwa hiyo kile s na t kweli ni, kwa mujibu wa mpango huu, 781 00:34:39,340 --> 00:34:42,130 kwa sababu ya jinsi mimi umba t, ni vigezo mbili tu tofauti 782 00:34:42,130 --> 00:34:43,840 akionyesha chunk kama hicho cha kumbukumbu. 783 00:34:43,840 --> 00:34:45,215 Na sisi hawajali walipo. 784 00:34:45,215 --> 00:34:47,130 Hivyo tunaweza abstract mbali undani huo. 785 00:34:47,130 --> 00:34:48,780 >> Hivyo ni jinsi gani mimi kurekebisha hili? 786 00:34:48,780 --> 00:34:54,120 Kama nataka kuandika toleo la nakala mpango huo kwa kweli nakala kamba 787 00:34:54,120 --> 00:34:56,840 na herufi tu nakala, tu intuitively, 788 00:34:56,840 --> 00:34:59,766 nini got kuwa kingo kwa ufumbuzi wetu? 789 00:34:59,766 --> 00:35:00,640 Watazamaji: [inaudible] 790 00:35:00,640 --> 00:35:01,420 DAVID J. Malan: Tunahitaji nini? 791 00:35:01,420 --> 00:35:01,820 Watazamaji: Chunk ya kumbukumbu. 792 00:35:01,820 --> 00:35:03,280 DAVID J. Malan: Tunahitaji mwingine chunk ya kumbukumbu, sawa? 793 00:35:03,280 --> 00:35:05,360 Hatujui jinsi ya kufanya hivyo bado, lazima. 794 00:35:05,360 --> 00:35:11,330 Lakini mimi aina ya haja hili kutokea hivyo kwamba mama awali katika kesi ya chini 795 00:35:11,330 --> 00:35:14,170 mwisho juu katika kwamba chunk ya ziada ya kumbukumbu. 796 00:35:14,170 --> 00:35:19,770 Na kisha wakati mimi kubadili nakala, mimi hawataki mabadiliko nakala hii hapa. 797 00:35:19,770 --> 00:35:26,020 Mimi badala wanataka kubadili tu hii nakala ili awali ni kubadilika. 798 00:35:26,020 --> 00:35:27,980 >> Kwa hiyo, hebu angalia jinsi sisi tupate kufanya hivyo. 799 00:35:27,980 --> 00:35:31,800 Katika nakala-1, ambayo tayari wamekuwa kuvuliwa maoni, 800 00:35:31,800 --> 00:35:33,250 lakini ni maoni online. 801 00:35:33,250 --> 00:35:36,710 Sisi badala kufanya following-- hizi mistari ni sawa, kupata nami kamba 802 00:35:36,710 --> 00:35:38,340 na kuiita s. 803 00:35:38,340 --> 00:35:43,500 Lakini sasa hebu tuangalie moja ya yetu tata lakini mwisho wa utata 804 00:35:43,500 --> 00:35:47,340 kwa muda, mstari 16 gani hasa huu. 805 00:35:47,340 --> 00:35:49,400 Hivyo kama comfy yako na picha sisi tu drew-- 806 00:35:49,400 --> 00:35:51,790 nipe chunk mpya ya kumbukumbu, nakala kila kitu ndani yake, 807 00:35:51,790 --> 00:35:53,730 hebu angalia jinsi sisi kutafsiri kwamba kwa kificho. 808 00:35:53,730 --> 00:35:59,400 >> Hivyo mstari 16, upande wa kushoto, char * t anitiaye sanduku hii zaidi ya hapa. 809 00:35:59,400 --> 00:36:00,230 Hayo ni yote ni gani. 810 00:36:00,230 --> 00:36:03,240 Upande wa kulia, m alloc, au malloc, 811 00:36:03,240 --> 00:36:06,480 ni kumbukumbu mgao, super dhana tu, njia cryptic ya kusema tu 812 00:36:06,480 --> 00:36:07,640 nipe chunk ya kumbukumbu. 813 00:36:07,640 --> 00:36:09,290 Kiasi gani kumbukumbu tunahitaji? 814 00:36:09,290 --> 00:36:10,910 Naam, ni aina ya usemi mkubwa. 815 00:36:10,910 --> 00:36:12,570 Lakini hebu angalia nini anasema hapa. 816 00:36:12,570 --> 00:36:15,940 Hivyo hii, bila shaka, ni kutoa mimi kamba urefu wa s. 817 00:36:15,940 --> 00:36:19,094 Kwa hiyo, mama ni lazima kuwa nini? 818 00:36:19,094 --> 00:36:21,010 Hivyo mitatu tu, sawa? mama ni herufi tatu. 819 00:36:21,010 --> 00:36:22,830 Huwezi kuhesabu sifuri backslash wakati 820 00:36:22,830 --> 00:36:25,960 majadiliano juu ya urefu wa kamba ni kweli binadamu inayoonekana barua. 821 00:36:25,960 --> 00:36:28,020 Hivyo mama, hivyo hii inatoa mimi 3. 822 00:36:28,020 --> 00:36:31,170 Lakini kusubiri dakika, mimi nina sasa akiongeza 1. 823 00:36:31,170 --> 00:36:34,861 Kwa nini mimi kweli wanataka kutenga 4 ka na si tu 3? 824 00:36:34,861 --> 00:36:35,360 Yeah? 825 00:36:35,360 --> 00:36:36,910 >> Watazamaji: Kwa thamani mwangalizi? 826 00:36:36,910 --> 00:36:38,951 >> DAVID J. Malan: Hasa, kwa kuwa thamani mwangalizi. 827 00:36:38,951 --> 00:36:40,840 Kwa backslash sifuri, Mimi haja 4 ka jumla. 828 00:36:40,840 --> 00:36:42,870 Kwa hiyo mimi haja urefu ya kamba pamoja na 1. 829 00:36:42,870 --> 00:36:45,400 Na kisha tu kwa measure-- nzuri hata kama juu ya mfumo huu, 830 00:36:45,400 --> 00:36:49,390 ni daima itakuwa 1-- mimi kusema kuzidisha hili kwa ukubwa wa Char. 831 00:36:49,390 --> 00:36:51,552 Zamu nje sizeof ni operator katika C kwamba 832 00:36:51,552 --> 00:36:53,260 tu atakwambia idadi ya ka hiyo ni 833 00:36:53,260 --> 00:36:54,700 inahitajika kwa ajili ya aina fulani data. 834 00:36:54,700 --> 00:36:57,740 Haifanyi kazi kwa arrays, kawaida, wakati mwingine ni gani. 835 00:36:57,740 --> 00:36:59,210 Lakini katika kesi ujumla, hakuna. 836 00:36:59,210 --> 00:37:02,330 Lakini itakuwa kuniambia jinsi wengi ka char ni, ambayo zamu nje daima 1. 837 00:37:02,330 --> 00:37:04,080 Hivyo hii ni kama kuzidisha na 1. 838 00:37:04,080 --> 00:37:05,900 >> Hivyo super cryptic kuangalia mstari wa kanuni. 839 00:37:05,900 --> 00:37:09,320 Lakini wote ni gani ni anatoa mimi chunk ya kumbukumbu. 840 00:37:09,320 --> 00:37:13,590 Lakini je, ni wanaonekana kuwa kuiga chochote katika kumbukumbu? 841 00:37:13,590 --> 00:37:14,560 Bado. 842 00:37:14,560 --> 00:37:22,040 Na hivyo kile mimi kwenye mstari 22, na 23, 24, 25, vizuri, mimi tu kufanya hivyo. 843 00:37:22,040 --> 00:37:23,760 Na hii ni aina ya umri wa mambo shule sasa. 844 00:37:23,760 --> 00:37:26,010 Hii ni kama pset 2, ambapo wewe ni kusonga tu mambo 845 00:37:26,010 --> 00:37:28,620 kuzunguka katika kumbukumbu, au tuseme katika masharti. 846 00:37:28,620 --> 00:37:31,920 >> Hivyo mimi nina iterating kutoka 0 kwa urefu wa kamba s. 847 00:37:31,920 --> 00:37:37,820 Na mimi nina kuiga tabia i-th katika s katika i-th tabia katika t. 848 00:37:37,820 --> 00:37:41,820 Na kwa sababu mimi, programu, alifanya uhakika na kutenga ka hasa kama wengi 849 00:37:41,820 --> 00:37:44,600 kama nahitaji, ni kamili moja kwa moja uhusiano. 850 00:37:44,600 --> 00:37:47,060 Na mimi nakala mama katika Herufi za chini kwa mwezi mmoja. 851 00:37:47,060 --> 00:37:50,170 Na kisha mwisho, mimi kufanya mstari huu. 852 00:37:50,170 --> 00:37:54,637 Na hivyo athari ni tu capitalize t hii hapa. 853 00:37:54,637 --> 00:37:56,470 Hivyo mengi ya kunyonya, lakini kama wewe tu kufikiria 854 00:37:56,470 --> 00:37:58,220 nini kweli kinachoendelea chini ya Hood 855 00:37:58,220 --> 00:38:00,880 ni kusonga tu hizi ka kote, yote 856 00:38:00,880 --> 00:38:06,617 inahitajika ili kutatua tatizo hili ni tu kutupa hii chunk ya kumbukumbu. 857 00:38:06,617 --> 00:38:08,450 Sasa katika hatari ya balaa, napenda kuonyesha 858 00:38:08,450 --> 00:38:13,200 mfano mmoja mwingine hiyo ni karibu kufanana, isipokuwa kwa hii moja 859 00:38:13,200 --> 00:38:14,350 mstari wa kanuni. 860 00:38:14,350 --> 00:38:18,870 Hivyo hii ni hacker toleo la ya mpango huu, kama wewe. 861 00:38:18,870 --> 00:38:21,050 Lakini hebu tu distill ndani nini kinaendelea. 862 00:38:21,050 --> 00:38:28,920 Mstari 24 kutumika kwa kuwa t hii mabano i anapata s mabano i. 863 00:38:28,920 --> 00:38:33,370 Sasa, mimi nina kubadilisha hii kwa mengi zaidi cryptic nyota t 864 00:38:33,370 --> 00:38:36,280 pamoja na 1 ni sawa na nyota s pamoja na 1. 865 00:38:36,280 --> 00:38:38,702 >> Hivyo nini kinatokea na kwa nini tuna tabia nyota? 866 00:38:38,702 --> 00:38:41,410 Tumeona nyota kabla, na ni kuwa kutumika kwa njia tofauti hapa. 867 00:38:41,410 --> 00:38:45,490 Sisi hapo awali aliona * Char, sasa mimi nina kuona a nyota mwanzoni, na hiyo ni sawa. 868 00:38:45,490 --> 00:38:48,190 Kwa sababu ni zamu nje sisi unaweza aina ya infer tu 869 00:38:48,190 --> 00:38:50,280 kutoka kwa wale kwanza kanuni nini kinaendelea. 870 00:38:50,280 --> 00:38:53,860 Hivyo tu kuwa wazi, ni nini s? 871 00:38:53,860 --> 00:38:55,052 Wiki iliyopita, ilikuwa kamba. 872 00:38:55,052 --> 00:38:56,260 Hiyo haina inatosha tena. 873 00:38:56,260 --> 00:38:57,690 S ni kitu gani, hasa? 874 00:38:57,690 --> 00:38:58,590 >> Watazamaji: [inaudible] 875 00:38:58,590 --> 00:38:59,881 >> DAVID J. Malan: Ni pointer. 876 00:38:59,881 --> 00:39:02,610 Ni pepe ya tabia ya kwanza sisi typed katika. 877 00:39:02,610 --> 00:39:04,780 OK, ni nini t? 878 00:39:04,780 --> 00:39:05,660 >> Watazamaji: [inaudible] 879 00:39:05,660 --> 00:39:07,950 >> DAVID J. Malan: anuani ya Byte kwanza 880 00:39:07,950 --> 00:39:10,490 katika t, kwamba chunk ya kumbukumbu reallocated. 881 00:39:10,490 --> 00:39:14,720 Hivyo ni zinageuka kuwa wakati sisi iterate kutoka 0 hadi kwenye kamba 882 00:39:14,720 --> 00:39:17,424 length-- kwanza kabisa, i kuanza mbali katika 0, kwa sababu 883 00:39:17,424 --> 00:39:18,840 ya hii umri wa shule ya kitanzi kitu. 884 00:39:18,840 --> 00:39:22,400 Hivyo tu kwa unyenyekevu, hebu kudhani kuwa mstari wa kwanza wa kanuni 885 00:39:22,400 --> 00:39:23,760 ni kweli tu hii, haki. 886 00:39:23,760 --> 00:39:26,080 Kama i ni sifuri, na kuongeza sifuri na kitu labda 887 00:39:26,080 --> 00:39:27,540 si kwenda kuwa na athari. 888 00:39:27,540 --> 00:39:28,560 >> Kwa hiyo kile ni maneno yako? 889 00:39:28,560 --> 00:39:31,600 Ni zinageuka kuwa nyota operator katika mazingira haya 890 00:39:31,600 --> 00:39:33,700 ni dereference operator, ambayo ni tu 891 00:39:33,700 --> 00:39:37,530 njia dhana ya kusema kwenda kwa anwani ifuatayo. 892 00:39:37,530 --> 00:39:42,080 Hivyo kama s ni ya kwanza anuani tabia katika hii chunk ya kumbukumbu, 893 00:39:42,080 --> 00:39:43,630 * s njia kwenda huko. 894 00:39:43,630 --> 00:39:45,630 Na kwa sababu tumekuwa inayotolewa picha kwa njia hii, 895 00:39:45,630 --> 00:39:47,430 unaweza kupitisha kufuatia mfano wa akili. 896 00:39:47,430 --> 00:39:51,030 Kama hii ni s, na kusema * s, s * aina ya kama chutes na ladders, 897 00:39:51,030 --> 00:39:54,540 kama unakumbuka mchezo kutoka utotoni, ni kama kufuata mshale na kwenda 898 00:39:54,540 --> 00:39:55,570 kwa mahali. 899 00:39:55,570 --> 00:39:57,080 >> * t ni kitu kimoja. 900 00:39:57,080 --> 00:39:59,855 Hivyo kuanza hapa, kwenda chunk wake. 901 00:39:59,855 --> 00:40:03,350 Siwezi tu kuteka juu ya screen hii kwa njia hiyo. 902 00:40:03,350 --> 00:40:05,560 * t maana ya kwenda hapa. 903 00:40:05,560 --> 00:40:08,830 Na kisha, kwa kitanzi ni akisema hoja tabia hii hapa, 904 00:40:08,830 --> 00:40:11,330 hoja tabia hii hapa, hoja tabia hii hapa. 905 00:40:11,330 --> 00:40:12,890 Lakini jinsi gani mimi kufanya hivyo incrementation? 906 00:40:12,890 --> 00:40:15,430 Mimi haja ya kuondoa nini mimi tu kufutwa. 907 00:40:15,430 --> 00:40:18,140 Hii ni nini ujumla aitwaye pointer arithmetic, ambayo 908 00:40:18,140 --> 00:40:20,040 ina maana hesabu na anwani. 909 00:40:20,040 --> 00:40:22,460 >> Kama, katika hii kwa kitanzi, Mimi kuendelea incrementing i, 910 00:40:22,460 --> 00:40:26,880 na s ni anwani na t ni mitaani, kama mimi tu kuendelea kuongeza 1, 911 00:40:26,880 --> 00:40:31,406 kwamba tu ina maana kusonga mbele, na mbele, na mbele katika kumbukumbu. 912 00:40:31,406 --> 00:40:34,030 Ni kama Oxford Street, mitaani kwamba jengo CS ni juu ya. 913 00:40:34,030 --> 00:40:36,490 Majengo CS ni saa 33 Oxford Street. 914 00:40:36,490 --> 00:40:39,870 Hivyo kama ungekuwa kufanya 33 Oxford Street pamoja na 1, 915 00:40:39,870 --> 00:40:42,870 ambayo huleta wewe kwa 34 Oxford Mitaani, basi 35 Oxford Street, 916 00:40:42,870 --> 00:40:46,380 kisha 36 Oxford Street, chochote wale majengo kwa kweli ni - kama zipo. 917 00:40:46,380 --> 00:40:50,540 Na hivyo, kwamba ni yote sisi ni kufanya hapa na pointer hesabu. 918 00:40:50,540 --> 00:40:53,820 >> Hivyo ni njia super arcane ya kuonyesha sisi wenyewe. 919 00:40:53,820 --> 00:40:56,160 Lakini yote yale yanayotokea chini ya Hood 920 00:40:56,160 --> 00:40:59,330 ni kufuatia tu anwani hizi, kama zifuatazo ramani, kama wewe, 921 00:40:59,330 --> 00:41:02,692 au kufuatia mishale kama tumekuwa inayotolewa kwenye screen. 922 00:41:02,692 --> 00:41:04,910 OK, mengi Digest. 923 00:41:04,910 --> 00:41:10,410 Swali lolote juu ya syntax, dhana, kuyatumia, malloc, au kama. 924 00:41:10,410 --> 00:41:11,480 Naam, hapa kwanza. 925 00:41:11,480 --> 00:41:13,755 >> Watazamaji: Hivyo ambapo kwamba anasema * t sawa na toupper * t, 926 00:41:13,755 --> 00:41:15,575 ni kwamba kwenda capitalize zote herufi au just-- 927 00:41:15,575 --> 00:41:17,283 >> DAVID J. Malan: Ah, mzuri swali. 928 00:41:17,283 --> 00:41:19,805 Hivyo katika mstari huu hapa, 31, hii ni kwenda capitalize 929 00:41:19,805 --> 00:41:21,430 barua ya kwanza au yote ya barua. 930 00:41:21,430 --> 00:41:23,460 Basi hebu kujibu kwamba kwa kwenda nyuma ya kanuni kwanza. 931 00:41:23,460 --> 00:41:26,168 Na kanuni za kwanza hapa nina maana tu kwenda ufafanuzi msingi 932 00:41:26,168 --> 00:41:27,000 ya nini wanaohusika. 933 00:41:27,000 --> 00:41:29,770 Hivyo toupper ni kazi kwamba herufi Char. 934 00:41:29,770 --> 00:41:30,530 Hayo ni yote. 935 00:41:30,530 --> 00:41:36,740 * t ina maana kwenda first-- kwenda anuani katika t. 936 00:41:36,740 --> 00:41:40,350 Hivyo, katika picha, kama hii ni chunk ya kumbukumbu sisi zilizotengwa kwa malloc, 937 00:41:40,350 --> 00:41:43,310 na hii ni t, t * ina maana kwenda hapa. 938 00:41:43,310 --> 00:41:46,710 >> Wakati huo huo, wewe ni kupita kwamba thamani, lowercase m 939 00:41:46,710 --> 00:41:50,040 kwa toupper, wewe ni kupata nyuma mji mkuu M, ambapo ni wewe kuweka? 940 00:41:50,040 --> 00:41:52,410 Wewe ni kuweka katika eneo hilo hilo. 941 00:41:52,410 --> 00:41:55,540 Na hivyo kwa kuwa mantiki ya wale ufafanuzi wa msingi ni tu 942 00:41:55,540 --> 00:41:58,792 kuyafanyia barua ya kwanza isipokuwa iterate kwa i au a 943 00:41:58,792 --> 00:42:02,000 kwa kitanzi au kitanzi wakati, si kwenda kufanya kitu chochote zaidi ya kuuliza hilo. 944 00:42:02,000 --> 00:42:02,583 Nzuri swali. 945 00:42:02,583 --> 00:42:03,237 Yeah? 946 00:42:03,237 --> 00:42:05,369 >> Watazamaji: Kwa nini unatumia dereference njia badala ya 947 00:42:05,369 --> 00:42:05,979 safu? 948 00:42:05,979 --> 00:42:07,395 >> DAVID J. Malan: Ah, nzuri swali. 949 00:42:07,395 --> 00:42:10,672 Kwa nini wewe kutumia dereference Njia badala ya mbinu safu? 950 00:42:10,672 --> 00:42:12,130 Hakuna sababu maalum, kuwa waaminifu. 951 00:42:12,130 --> 00:42:15,290 Na, kwa kweli, kwa hili namna ya mfano wa kulia, 952 00:42:15,290 --> 00:42:17,556 Mimi akisema maamuzi tu Mpango ngumu zaidi, 953 00:42:17,556 --> 00:42:19,680 macho zaidi ni glazing juu, Watu kuangalia nje 954 00:42:19,680 --> 00:42:22,830 kwa sababu hii inaonekana super arcane, lakini hata kama ni kufanya kitu kimoja. 955 00:42:22,830 --> 00:42:26,695 Na hivyo, kusema ukweli, hii ni ufumbuzi usiokuwa kuibua tata 956 00:42:26,695 --> 00:42:27,320 tatizo. 957 00:42:27,320 --> 00:42:29,580 >> Bado kubuni nzuri, tano kati ya watano kwa kubuni, 958 00:42:29,580 --> 00:42:33,140 kama ni katika mabano nukuu au pointer nukuu. 959 00:42:33,140 --> 00:42:36,299 But-- hasa wakati tunapata baadaye katika mwendo katika pset 5 960 00:42:36,299 --> 00:42:39,340 wakati sisi kutekeleza kwamba kamusi kwamba Nimekuwa zilizotajwa michache ya times-- 961 00:42:39,340 --> 00:42:42,300 tutaweza kweli huduma ya juu anwani kumbukumbu kiwango cha chini 962 00:42:42,300 --> 00:42:44,140 kwamba sisi kweli kuelewa nini kinaendelea. 963 00:42:44,140 --> 00:42:48,300 >> Lakini, kwa sasa, ni zamu nje kwamba hii mstari wa kanuni mabano mraba hapa 964 00:42:48,300 --> 00:42:49,900 si kweli zipo. 965 00:42:49,900 --> 00:42:52,230 Wao ni kile kinachoitwa sukari kisintaksia, ambayo 966 00:42:52,230 --> 00:42:58,390 ni njia tu weirdly baridi ya kusema compiler waongofu mabano mraba kuwa 967 00:42:58,390 --> 00:43:00,420 kwamba kujieleza hisabati. 968 00:43:00,420 --> 00:43:02,660 Hivyo ni mkataba wa binadamu kuwa na uwezo wa kuandika tu 969 00:43:02,660 --> 00:43:04,220 sana user-kirafiki mabano haya. 970 00:43:04,220 --> 00:43:06,850 Lakini nini compiler, Clang, ni kweli kufanya wakati wowote 971 00:43:06,850 --> 00:43:10,970 kuandika nini yalionyesha katika mstari 24, chini ya Hood ni kweli 972 00:43:10,970 --> 00:43:12,330 kuwageuza kwa hili. 973 00:43:12,330 --> 00:43:16,200 Ni tu zaidi utamu kama binadamu kusoma na kuandika kificho kama mstari 24. 974 00:43:16,200 --> 00:43:18,530 Lakini hatimaye wale magurudumu mafunzo pia kufika mbali 975 00:43:18,530 --> 00:43:21,780 wakati wenyewe faraja ya mtu anapata nguvu. 976 00:43:21,780 --> 00:43:27,240 >> Haki wote, hivyo basi kukumbuka kwamba hii ilikuwa ni aina ya tatizo kubwa 977 00:43:27,240 --> 00:43:27,807 sisi mbio katika. 978 00:43:27,807 --> 00:43:30,640 Na hiyo ndiyo umesababisha zima huu mazungumzo damn kuhusu kuyatumia, 979 00:43:30,640 --> 00:43:32,340 na anwani, na kuiga mambo. 980 00:43:32,340 --> 00:43:35,410 Ilikuwa ni kwa sababu sisi tripped juu kijinga, kijinga suala hili, ambapo 981 00:43:35,410 --> 00:43:38,830 Mimi kutekelezwa logically-- na Lauren hapa kwenye demo na maji ya machungwa 982 00:43:38,830 --> 00:43:43,770 katika milk-- kikamilifu kazi algorithmically sahihi 983 00:43:43,770 --> 00:43:47,010 kwa swapping vigezo mbili ' maadili, lakini jambo damn 984 00:43:47,010 --> 00:43:50,550 hawakuwa na yoyote ya kuendelea, au kudumu, na athari kwenye kanuni yangu. 985 00:43:50,550 --> 00:43:51,820 >> Na kwa nini ilikuwa hivyo? 986 00:43:51,820 --> 00:43:54,650 Kwa kifupi, kwa nini hili utekelezaji wa wabadilishane 987 00:43:54,650 --> 00:43:58,740 mantiki sahihi, lakini ina athari hakuna juu ya vigezo kwamba ni kupita hiyo, 988 00:43:58,740 --> 00:44:01,119 kama x na y kwa kuu? 989 00:44:01,119 --> 00:44:02,410 Ilikuwa kiini cha suala gani? 990 00:44:02,410 --> 00:44:02,909 Yeah? 991 00:44:02,909 --> 00:44:05,532 Watazamaji: Kwa sababu kutofautiana alifanya nakala za kutofautiana katika kupitisha 992 00:44:05,532 --> 00:44:06,240 kupitia kazi. 993 00:44:06,240 --> 00:44:09,060 >> DAVID J. Malan: Hasa, wakati kupita vigezo katika kazi, au hoja 994 00:44:09,060 --> 00:44:11,030 ndani ya kazi, wao uko wanapita nakala, ambayo 995 00:44:11,030 --> 00:44:14,770 ina maana unaweza kupata kufanana kuangalia mfano wa bits kwa wote x na y, 996 00:44:14,770 --> 00:44:15,955 aitwaye hapa a na b. 997 00:44:15,955 --> 00:44:18,080 Na unaweza kufanya kitu chochote unataka na nakala hizo, 998 00:44:18,080 --> 00:44:20,657 lakini wao wanaenda kuwa hakuna athari juu ya wito kazi. 999 00:44:20,657 --> 00:44:22,990 Na, kwa kweli, tulianzisha kwamba picha kwenye screen, kukumbuka 1000 00:44:22,990 --> 00:44:25,520 Mara ya mwisho, ambapo kama wewe kweli wanafikiri kuhusu nini 1001 00:44:25,520 --> 00:44:28,570 kinachoendelea chini hood-- kama hii ni kumbukumbu ya kompyuta yako, 1002 00:44:28,570 --> 00:44:31,650 na chini hapa ni chunk ya kumbukumbu inatumiwa kwa kuu, 1003 00:44:31,650 --> 00:44:34,020 hii ni chunk ya kumbukumbu inatumiwa kwa wabadilishane, 1004 00:44:34,020 --> 00:44:37,090 na hivyo hata kama ana kuu vigezo mbili, x na y, 1005 00:44:37,090 --> 00:44:41,840 wabadilishane wanaweza kuwa kufanana kuangalia maadili, wote wawili ambao ni 1 na 2, 1006 00:44:41,840 --> 00:44:44,520 lakini wao ni kabisa chunks mbalimbali za kumbukumbu. 1007 00:44:44,520 --> 00:44:46,130 >> Kwa hiyo, tunahitaji ufumbuzi wa hili. 1008 00:44:46,130 --> 00:44:51,580 Na kusema ukweli, inaweza kuonekana kwamba sisi sasa na ufumbuzi wa tatizo hili, haki. 1009 00:44:51,580 --> 00:44:55,760 Kama sisi sasa wana uwezo wa kuendesha mambo kwa njia ya anwani 1010 00:44:55,760 --> 00:44:59,310 na, aina ya chutes na ladders style, kufuata mishale hizi 1011 00:44:59,310 --> 00:45:02,820 na kwenda popote tunataka katika kumbukumbu, hawakuweza sisi 1012 00:45:02,820 --> 00:45:06,220 kutatua tatizo hili kwa kupita kutoka kuu wabadilishane 1013 00:45:06,220 --> 00:45:09,650 si maadili tunataka wabadilishane, lakini tu intuitively 1014 00:45:09,650 --> 00:45:11,630 nini inaweza sisi kupita wabadilishane badala yake? 1015 00:45:11,630 --> 00:45:12,620 >> [INTERPOSING SAUTI] 1016 00:45:12,620 --> 00:45:15,244 >> DAVID J. Malan: Kwa nini si sisi tu kuupitisha anwani, sawa? 1017 00:45:15,244 --> 00:45:17,470 Mbona sisi kutoa wabadilishane a hazina ramani, kama wewe, 1018 00:45:17,470 --> 00:45:20,950 ambayo inaongoza kwa maadili halisi x na y. 1019 00:45:20,950 --> 00:45:24,340 Hebu wabadilishane, kweli mabadiliko wale bits awali, badala ya 1020 00:45:24,340 --> 00:45:26,797 tu kupita nakala za vipande. 1021 00:45:26,797 --> 00:45:29,130 Na hivyo, kwa kweli, kwamba ni nini kwenda kuwa ufumbuzi. 1022 00:45:29,130 --> 00:45:31,899 Hii toleo hapa ni wazi mbaya na kiujanja. 1023 00:45:31,899 --> 00:45:35,190 Na sasa, katika mtazamo wa kwanza, ni tu inaonekana kama sisi aliongeza rundo la nyota nasibu 1024 00:45:35,190 --> 00:45:37,106 na shilingi vidole wetu kuwa itakuwa kukusanya. 1025 00:45:37,106 --> 00:45:38,460 Lakini, ingekuwa sasa kukusanya. 1026 00:45:38,460 --> 00:45:40,090 >> Lakini hebu angalia maana ya mambo haya. 1027 00:45:40,090 --> 00:45:43,990 Na, kwa bahati mbaya, waandishi wa C inaweza wamechagua alama nyingine 1028 00:45:43,990 --> 00:45:46,380 kufanya hii ndogo wazi, lakini nyota operator 1029 00:45:46,380 --> 00:45:48,610 ina maana tofauti katika mazingira mawili tofauti. 1030 00:45:48,610 --> 00:45:50,890 Na tumeona zote mbili, lakini hebu kutofautisha. 1031 00:45:50,890 --> 00:45:55,310 >> Hivyo hadi saa juu huko, wakati mimi yamebadilika a na b 1032 00:45:55,310 --> 00:46:00,470 asiwe int katika mbaya toleo int nyota, a na b, 1033 00:46:00,470 --> 00:46:01,740 hapo awali, walikuwa integers. 1034 00:46:01,740 --> 00:46:05,752 Na b ni nini sasa katika nzuri, kijani toleo la? 1035 00:46:05,752 --> 00:46:06,900 Wao ni anwani. 1036 00:46:06,900 --> 00:46:09,610 Anwani ya nini, kuwa wazi? 1037 00:46:09,610 --> 00:46:10,770 Anwani ya integers. 1038 00:46:10,770 --> 00:46:12,520 Hivyo ukweli kwamba mimi nina akisema int nyota njia 1039 00:46:12,520 --> 00:46:15,440 hii ni pepe ya integer, hasa. 1040 00:46:15,440 --> 00:46:19,120 >> Hivyo sasa taarifa katika mstari wa kanuni, kitu kingine imebadilika mno. 1041 00:46:19,120 --> 00:46:22,770 TMP anakaa huo, kwa sababu ni tu integer muda, 1042 00:46:22,770 --> 00:46:24,110 hakuna kumbukumbu uchawi hapo. 1043 00:46:24,110 --> 00:46:26,370 Lakini sasa mahitaji nyota. 1044 00:46:26,370 --> 00:46:28,560 Na, kwa kweli, kila kutaja wengine wa na b, 1045 00:46:28,560 --> 00:46:31,780 taarifa kwamba yote hiyo ni kubadilisha kutoka nyekundu na kijani 1046 00:46:31,780 --> 00:46:34,209 ni kwamba mimi nina prefixing vigezo wale wenye nyota. 1047 00:46:34,209 --> 00:46:35,750 Kwa sababu mimi sitaki nakala na b. 1048 00:46:35,750 --> 00:46:40,350 Kwa sababu kama mimi tu nakala na b na wabadilishane a na b, je, Mimi kwa kweli swapping? 1049 00:46:40,350 --> 00:46:43,760 Anwani Tu, nataka wabadilishane nini katika wale anwani. 1050 00:46:43,760 --> 00:46:44,860 Nataka kwenda huko. 1051 00:46:44,860 --> 00:46:48,000 Na hivyo nyota operator ndani ya kazi yangu, 1052 00:46:48,000 --> 00:46:51,700 si ndani ya orodha parameter, maana wewe kwenda wale anwani 1053 00:46:51,700 --> 00:46:54,490 na kweli mabadiliko maadili hayo. 1054 00:46:54,490 --> 00:46:56,500 >> Kwa hiyo kile anafanya picha sasa kuangalia kama badala yake. 1055 00:46:56,500 --> 00:47:03,250 Naam, kama badala mimi nina kupita katika kwa na b si 1 na 2-- 1056 00:47:03,250 --> 00:47:05,790 Mimi kwa kweli haja ya kuongeza mengine ufafanuzi moja hapa. 1057 00:47:05,790 --> 00:47:09,030 Hivyo kudhani kuwa chunk hii ya kumbukumbu ni katika eneo 10. 1058 00:47:09,030 --> 00:47:12,960 >> Hii ni katika eneo 11, lakini hii ni kidogo ya kurahisisha, 1059 00:47:12,960 --> 00:47:18,900 Mimi sasa una maamuzi mawili kufanya mimi kupita x na y au gani mimi kupita anwani zao? 1060 00:47:18,900 --> 00:47:22,500 Kama mimi kupita anwani zao kama hii, mimi tu 1061 00:47:22,500 --> 00:47:25,390 sasa haja ya kutekeleza wabadilishane kwa kificho kijani 1062 00:47:25,390 --> 00:47:29,080 hivyo kwamba wakati anaona na wakati anaona b, haina nakala tu na b 1063 00:47:29,080 --> 00:47:30,540 na hoja maziwa na maji ya machungwa. 1064 00:47:30,540 --> 00:47:32,664 Maziwa na juisi ya machungwa mfano sasa umekwisha, 1065 00:47:32,664 --> 00:47:35,060 kwa sababu wale ni vikombe ya ramani maji na si. 1066 00:47:35,060 --> 00:47:37,750 Sisi badala haja ya kwenda kushughulikia 10 na sisi 1067 00:47:37,750 --> 00:47:42,420 haja ya kwenda kushughulikia 11, na kisha kufanya kwamba swapping mantiki. 1068 00:47:42,420 --> 00:47:45,580 >> Hivyo mantiki ni sawa, lakini tunahitaji njia tofauti kidogo 1069 00:47:45,580 --> 00:47:47,160 ya kupata vigezo hizo. 1070 00:47:47,160 --> 00:47:52,400 Na hivyo katika mwisho, nini mpango ina kuangalia kama ni hii. 1071 00:47:52,400 --> 00:47:56,610 Katika swap.c literally kunakiliwa na pasted toleo la kijani. 1072 00:47:56,610 --> 00:47:58,450 Lakini mimi haja ya kufanya mabadiliko moja. 1073 00:47:58,450 --> 00:48:00,180 Siyo kutosha tu kubadili wabadilishane. 1074 00:48:00,180 --> 00:48:03,830 Nini mstari mwingine wa kanuni nahitaji kubadilika? 1075 00:48:03,830 --> 00:48:04,330 Yeah? 1076 00:48:04,330 --> 00:48:05,770 >> Watazamaji: wapi inachukua hoja. 1077 00:48:05,770 --> 00:48:07,603 >> DAVID J. Malan: wapi inachukua hoja yake. 1078 00:48:07,603 --> 00:48:09,985 Hivyo kama mimi kitabu juu ya kuu, mimi Huwezi tu kupita katika x na y, 1079 00:48:09,985 --> 00:48:12,820 na, mimi ahadi, jana kipande cha syntax mpya leo. 1080 00:48:12,820 --> 00:48:17,200 Mimi haja ya kupita katika x na si y lakini pepe ya x na y. 1081 00:48:17,200 --> 00:48:20,400 Na zinageuka, alama kwamba waandishi wa C waliamua 1082 00:48:20,400 --> 00:48:23,860 ni kama matumizi ampersand hapa, si kwa kuchanganyikiwa na bitwise ampersand, 1083 00:48:23,860 --> 00:48:27,130 kama matumizi ampersand hapa na ampersand hapa, 1084 00:48:27,130 --> 00:48:29,570 hii takwimu za nje kwa ajili yenu, nini pepe ya x, 1085 00:48:29,570 --> 00:48:31,740 labda ni 10, nini anuani ya y, labda ni 1086 00:48:31,740 --> 00:48:35,400 11, na hupita wale walio katika badala yake. 1087 00:48:35,400 --> 00:48:37,210 >> Hivyo mengi ya kunyonya wote mara moja. 1088 00:48:37,210 --> 00:48:40,190 Lakini hebu angalia sasa haraka katika iliyobaki dakika nne wetu 1089 00:48:40,190 --> 00:48:42,150 ambapo mambo yanaweza kwenda kombo. 1090 00:48:42,150 --> 00:48:45,120 Na kama kando, kwa kweli Mimi alichukua picha hii, 1091 00:48:45,120 --> 00:48:46,920 TF alichukua picha hii mwaka mmoja au miwili iliyopita. 1092 00:48:46,920 --> 00:48:49,190 Hivyo hii ni kona nyuma ya Eliot Dining Hall. 1093 00:48:49,190 --> 00:48:52,310 Kuyatumia ni labda gumu mada hiyo sisi cover katika CS50. 1094 00:48:52,310 --> 00:48:54,810 Hivyo kama wewe kuwa na wasiwasi aina ya mteremko ni kama labda ni 1095 00:48:54,810 --> 00:48:56,770 zaidi ya magongo fimbo kama hii, kutambua 1096 00:48:56,770 --> 00:49:00,160 sisi ni aina ya inakaribia kilele katika suala la utata wa dhana. 1097 00:49:00,160 --> 00:49:02,300 >> Na mimi kuleta hii picha, kwa sababu Naapa 1098 00:49:02,300 --> 00:49:05,920 mungu, katika kuanguka 1996, wakati mimi alichukua CS50 na mafundisho mwenzangu, 1099 00:49:05,920 --> 00:49:09,620 Nishat Mehta, Yesu akakaa yangu chini katika kona ya Eliot D. Hall juu ya chakula cha mchana, 1100 00:49:09,620 --> 00:49:12,330 au cha jioni, au kitu kujaribu kunisaidia kuelewa kuyatumia. 1101 00:49:12,330 --> 00:49:16,520 Na hii ni mahali ambapo mimi nilikuwa wiki baada ya kuletwa katika hotuba wakati 1102 00:49:16,520 --> 00:49:18,170 Mimi hatimaye kueleweka kuyatumia. 1103 00:49:18,170 --> 00:49:20,590 Na mimi nina matumaini kwamba hii mapenzi click mbali mapema kwa ajili yenu. 1104 00:49:20,590 --> 00:49:23,540 Lakini kutambua hili kabisa miongoni mwa mada ya kisasa zaidi 1105 00:49:23,540 --> 00:49:24,420 tumekuwa inaonekana katika. 1106 00:49:24,420 --> 00:49:25,819 Lakini ni miongoni mwa nguvu zaidi. 1107 00:49:25,819 --> 00:49:28,860 Na wakati kupata hilo, ni kweli wote tu kwenda hatimaye kuja pamoja. 1108 00:49:28,860 --> 00:49:31,460 Hivyo mapumziko uhakika hana haja ya kuzama yote katika leo. 1109 00:49:31,460 --> 00:49:32,980 >> Hivyo hapa ni mpango wa mwisho tunakwenda kuangalia. 1110 00:49:32,980 --> 00:49:35,605 Na tunakwenda kuishia na Dakika haraka tatu ya claymation 1111 00:49:35,605 --> 00:49:37,030 yaliyotolewa na rafiki yetu, Nick Parlante. 1112 00:49:37,030 --> 00:49:41,440 Hapa ni mpango, kwamba juu ya mbili juu mistari inatangaza x kutofautiana na y. 1113 00:49:41,440 --> 00:49:44,780 Wote wawili ambao ni anwani za integers, AKA kuyatumia. 1114 00:49:44,780 --> 00:49:48,125 Sisi kisha kutenga kutosha kumbukumbu kuhifadhi int 1115 00:49:48,125 --> 00:49:51,344 na kuhifadhi anwani ya kwamba kumbukumbu katika x. 1116 00:49:51,344 --> 00:49:53,260 Hivyo, ni rahisi hata kuliko mfano kabla. 1117 00:49:53,260 --> 00:49:56,100 Nipe ka nne ya kumbukumbu, hiyo ni ukubwa wa int, 1118 00:49:56,100 --> 00:49:58,000 na kuweka anwani hiyo katika x. 1119 00:49:58,000 --> 00:50:01,070 Hii ina maana hapa mstari kwenda anuani katika x 1120 00:50:01,070 --> 00:50:05,270 na kuweka maana ya maisha, namba 42 hapo. 1121 00:50:05,270 --> 00:50:07,710 Lakini mstari huu wasiwasi mimi. 1122 00:50:07,710 --> 00:50:12,620 Nyota y ina maana kwenda anuani katika y, na kuweka idadi unlucky 13 huko. 1123 00:50:12,620 --> 00:50:15,780 Kwa nini ni hatari, katika hatua hii katika story-- japo kwa kasi aliiambia 1124 00:50:15,780 --> 00:50:17,980 katika dakika wetu waning here-- kwa nini ni mbaya 1125 00:50:17,980 --> 00:50:19,660 kwangu kusema, kwenda anuani katika y? 1126 00:50:19,660 --> 00:50:21,077 >> Watazamaji: Una si [inaudible]. 1127 00:50:21,077 --> 00:50:22,910 DAVID J. Malan: Mimi sina kuweka chochote katika y. 1128 00:50:22,910 --> 00:50:25,520 Kwa hiyo kile ni thamani ya y, katika hatua hii ya hadithi? 1129 00:50:25,520 --> 00:50:26,570 Sisi hatuna wazo. 1130 00:50:26,570 --> 00:50:29,190 Ni baadhi ya thamani ya takataka na wala haina Binky kujua. 1131 00:50:29,190 --> 00:50:32,532 Kama tunaweza kuishia juu ya kumbuka hii. 1132 00:50:32,532 --> 00:50:34,832 >> [VIDEO avspelning] 1133 00:50:34,832 --> 00:50:36,500 >> -Hey, Binky, kuamka. 1134 00:50:36,500 --> 00:50:39,140 Ni wakati wa pointer na furaha. 1135 00:50:39,140 --> 00:50:40,210 >> -Nini Hiyo? 1136 00:50:40,210 --> 00:50:41,690 Kujifunza kuhusu kuyatumia? 1137 00:50:41,690 --> 00:50:43,570 Loo, goody. 1138 00:50:43,570 --> 00:50:46,600 >> -Naam, Kupata kuanza, mimi nadhani tuko kwenda haja ya kuyatumia wanandoa. 1139 00:50:46,600 --> 00:50:47,380 >> -SAWA. 1140 00:50:47,380 --> 00:50:51,120 Kanuni hii inatenga kuyatumia mbili ambayo inaweza kumweka kwa integers. 1141 00:50:51,120 --> 00:50:53,557 >> -OK, Vizuri naona kuyatumia mbili, lakini wao 1142 00:50:53,557 --> 00:50:55,140 hawaonekani kuwa akizungumzia chochote. 1143 00:50:55,140 --> 00:50:55,970 >> -yaani Ni haki. 1144 00:50:55,970 --> 00:50:58,100 Awali kuyatumia hawana uhakika na kitu chochote. 1145 00:50:58,100 --> 00:51:00,950 Mambo wao kumweka kwa watu aitwaye pointees na kuweka yao juu 1146 00:51:00,950 --> 00:51:02,330 ni hatua tofauti. 1147 00:51:02,330 --> 00:51:03,210 >> -Oh, Haki, haki. 1148 00:51:03,210 --> 00:51:03,940 Nilijua kuwa. 1149 00:51:03,940 --> 00:51:05,730 Pointees ni tofauti. 1150 00:51:05,730 --> 00:51:08,310 Hivyo ni jinsi gani kutenga pointee? 1151 00:51:08,310 --> 00:51:11,960 >> -OK, Vizuri hii kutenga kificho mpya integer pointee, 1152 00:51:11,960 --> 00:51:15,050 na seti sehemu hii x kwa uhakika na hilo. 1153 00:51:15,050 --> 00:51:16,240 >> -Hey, Kwamba inaonekana zaidi. 1154 00:51:16,240 --> 00:51:17,743 Hivyo kufanya hivyo kufanya kitu. 1155 00:51:17,743 --> 00:51:23,580 >> -OK, Mimi itabidi dereference pointer x kwa kuhifadhi idadi 42 katika pointee wake. 1156 00:51:23,580 --> 00:51:27,130 Kwa hila hii, mimi itabidi yangu uchawi wand ya dereferencing. 1157 00:51:27,130 --> 00:51:30,200 >> -Wako Uchawi wand ya dereferencing? 1158 00:51:30,200 --> 00:51:32,310 Uh, kwamba, hiyo ni kubwa. 1159 00:51:32,310 --> 00:51:34,270 >> -Hii Ni nini kificho inaonekana kama. 1160 00:51:34,270 --> 00:51:35,970 Mimi itabidi kuanzisha idadi and-- 1161 00:51:35,970 --> 00:51:37,070 >> [POP SOUND] 1162 00:51:37,070 --> 00:51:39,140 >> -Hey, Angalia kuna unaendelea. 1163 00:51:39,140 --> 00:51:43,980 Hivyo, kufanya dereference juu ya x ifuatavyo mshale wa kupata pointee wake. 1164 00:51:43,980 --> 00:51:46,150 Katika kesi hiyo, kuhifadhi 42 katika huko. 1165 00:51:46,150 --> 00:51:50,700 Hey, jaribu kutumia kuhifadhi idadi 13 kupitia pointer mengine, y. 1166 00:51:50,700 --> 00:51:51,840 >> -SAWA. 1167 00:51:51,840 --> 00:51:56,270 Mimi itabidi kwenda juu hapa y, na kupata namba 13 seti up. 1168 00:51:56,270 --> 00:52:00,380 Na kisha kuchukua wand ya dereferencing na just-- 1169 00:52:00,380 --> 00:52:01,646 >> [Buzzer SOUND] 1170 00:52:01,646 --> 00:52:04,080 >> -Oh, Hey kwamba hakuwa na kazi. 1171 00:52:04,080 --> 00:52:06,470 Kusema, uh, Binky, sijui kufikiri dereferencing 1172 00:52:06,470 --> 00:52:10,850 y ni wazo nzuri, kwa sababu kuweka up pointee ni hatua tofauti. 1173 00:52:10,850 --> 00:52:12,480 Na sidhani kama sisi milele alifanya hivyo. 1174 00:52:12,480 --> 00:52:14,620 >> -Hmm, Hatua nzuri. 1175 00:52:14,620 --> 00:52:19,810 >> -Yeah, Sisi zilizotengwa pointer, y, lakini sisi kamwe kuweka kwa uhakika na pointee. 1176 00:52:19,810 --> 00:52:21,590 >> -Hmm, Mwangalifu sana. 1177 00:52:21,590 --> 00:52:23,215 -Hey, Wewe kutafuta nzuri huko, Binky. 1178 00:52:23,215 --> 00:52:26,390 Je, unaweza kurekebisha ili y pointi kwa pointee sawa na x. 1179 00:52:26,390 --> 00:52:29,290 >> -Sure, Mimi kutumia wand uchawi wangu ya pointer zoezi. 1180 00:52:29,290 --> 00:52:31,970 >> -Je Kwamba kwenda kuwa tatizo, kama kabla? 1181 00:52:31,970 --> 00:52:33,790 >> -Hakuna, Hii ​​haina kugusa pointees. 1182 00:52:33,790 --> 00:52:35,840 Ni tu mabadiliko pointer moja kwa uhakika na huo thing-- 1183 00:52:35,840 --> 00:52:36,465 >> [Sauti popping] 1184 00:52:36,465 --> 00:52:37,450 --as mwingine. 1185 00:52:37,450 --> 00:52:38,440 >> -Oh, Naona. 1186 00:52:38,440 --> 00:52:41,200 Sasa y pointi kwenye sehemu moja kama x. 1187 00:52:41,200 --> 00:52:42,950 Hivyo, ngoja, sasa y ni fasta. 1188 00:52:42,950 --> 00:52:44,110 Ina pointee. 1189 00:52:44,110 --> 00:52:47,779 Hivyo unaweza kujaribu wand ya dereferencing tena kwa kutuma 13 juu. 1190 00:52:47,779 --> 00:52:51,110 >> -Oh, Sawa, hapa unaendelea. 1191 00:52:51,110 --> 00:52:52,330 >> -Hey, Kuangalia kwamba. 1192 00:52:52,330 --> 00:52:53,570 Sasa dereferencing kazi juu y. 1193 00:52:53,570 --> 00:52:57,900 Na kwa sababu kuyatumia wanashiriki kwamba pointee moja, wao wote kuona 13. 1194 00:52:57,900 --> 00:52:59,952 >> -Yeah, Kushirikiana, uh, chochote. 1195 00:52:59,952 --> 00:53:01,535 Hivyo, ni sisi kwenda kubadili maeneo sasa? 1196 00:53:01,535 --> 00:53:03,730 >> -Oh, Angalia tuko nje ya muda. 1197 00:53:03,730 --> 00:53:04,660 >> -But-- 1198 00:53:04,660 --> 00:53:06,520 >> -Tu kumbuka tatu sheria pointer. 1199 00:53:06,520 --> 00:53:09,550 Namba 1, muundo wa msingi ni kwamba una pointer, 1200 00:53:09,550 --> 00:53:11,630 na inaelekeza juu ya pointee kwa. 1201 00:53:11,630 --> 00:53:13,740 Lakini pointer na pointee ni tofauti. 1202 00:53:13,740 --> 00:53:15,620 Na makosa ya kawaida ni kuanzisha pointer 1203 00:53:15,620 --> 00:53:18,000 lakini kusahau kuwapa pointee. 1204 00:53:18,000 --> 00:53:21,170 >> Idadi 2, pointer dereferencing kuanza saa pointer 1205 00:53:21,170 --> 00:53:24,020 na ifuatavyo mshale wake juu ya kupata pointee wake. 1206 00:53:24,020 --> 00:53:27,815 Kama sisi wote kujua, hii kazi tu kama kuna ni pointee, ambayo aina ya anapata nyuma 1207 00:53:27,815 --> 00:53:29,260 kutawala namba 1. 1208 00:53:29,260 --> 00:53:31,990 >> Namba 3, pointer zoezi inachukua moja pointer 1209 00:53:31,990 --> 00:53:35,330 na mabadiliko hayo kwa uhakika na pointee sawa kama pointer mwingine. 1210 00:53:35,330 --> 00:53:37,150 Kwa hiyo baada ya zoezi, kuyatumia mbili 1211 00:53:37,150 --> 00:53:40,927 uhakika na pointee huo, wakati mwingine kwamba wito kugawana. 1212 00:53:40,927 --> 00:53:42,510 Na kwamba wote kuna hiyo, kwa kweli. 1213 00:53:42,510 --> 00:53:43,130 Bye-bye sasa. 1214 00:53:43,130 --> 00:53:43,475 >> [Mwisho avspelning] 1215 00:53:43,475 --> 00:53:44,830 >> DAVID J. Malan: Hiyo ni kwa CS50. 1216 00:53:44,830 --> 00:53:46,246 Shukrani kwa Profesa Nick Parlante. 1217 00:53:46,246 --> 00:53:47,730 Tutaweza kuona wewe wiki ijayo. 1218 00:53:47,730 --> 00:53:51,706 1219 00:53:51,706 --> 00:53:56,435 >> [ELECTRONIC Music kucheza] 1220 00:53:56,435 --> 00:57:22,775