1 00:00:00,000 --> 00:00:07,810 2 00:00:07,810 --> 00:00:09,840 >> Jason HIRSCHHORN: Maligayang pagdating, lahat ng tao, sa Linggo 6. 3 00:00:09,840 --> 00:00:14,790 Ikinagagalak kong makita mo ang lahat ng buhay at na rin pagkatapos ng pagsusulit 0, dahil alam ko na 4 00:00:14,790 --> 00:00:15,810 ay isang bit magaspang. 5 00:00:15,810 --> 00:00:18,370 Pero thankfully, mo ang lahat ng May ginawang hindi mapaniniwalaan o kapani-paniwala na rin. 6 00:00:18,370 --> 00:00:21,680 At kaya na ay kahanga-hanga. 7 00:00:21,680 --> 00:00:25,840 Kung ikaw ay nasa aking seksyon, binigyan ko pinaka ng mong i-back ang iyong mga pagsusulit na. 8 00:00:25,840 --> 00:00:28,050 >> Ang isang pares ng mga iyo, ako natutugunan pagkatapos ng klase. 9 00:00:28,050 --> 00:00:32,360 At kung ikaw ay isang mag-aaral ng extension at hindi mo pa natatanggap ang iyong pagsusulit pabalik 10 00:00:32,360 --> 00:00:35,490 pa, ang iyong mga tf marahil ay nagtatrabaho sa ito at grading ito, at makakakuha ng mga ito pabalik 11 00:00:35,490 --> 00:00:36,490 sa iyo sa ilang sandali. 12 00:00:36,490 --> 00:00:39,650 Kaya mag-aaral ang aking extension kung sino nanonood ngayon - sana ay mabuhay - 13 00:00:39,650 --> 00:00:42,880 Ang makukuha ko ang iyong mga pagsusulit sa ilang sandali pati na rin. 14 00:00:42,880 --> 00:00:45,670 >> Ang aming mga agenda para sa araw ay ang mga sumusunod. 15 00:00:45,670 --> 00:00:50,170 Una, kami ay pagpunta sa pumunta sa paglipas ng ilang mga mapagkukunan na nagbibigay ng CS50 sa iyo. 16 00:00:50,170 --> 00:00:54,590 Kami ay pagpunta sa pumunta sa paglipas ng Pagsusulit 0 susunod, at Kukunin ko sagutin ang anumang mga katanungan kahit sino 17 00:00:54,590 --> 00:00:57,360 May tungkol sa partikular na mga problema. 18 00:00:57,360 --> 00:01:02,050 At pagkatapos, ay pagpunta namin sa ibabaw file I / O at problema set 5. 19 00:01:02,050 --> 00:01:07,360 Yaong huling dalawang mga paksa Dadalhin up sa karamihan ng seksyon ngayon. 20 00:01:07,360 --> 00:01:11,680 >> Naglagay ako listahang ito up bawat linggo bilang isang paalala sa iyo ang lahat, ngunit ng core 21 00:01:11,680 --> 00:01:14,650 seksyon, tanging mayroon kaming 90 minuto - namin ay hindi magagawang upang masakop ang lahat ng bagay na ako 22 00:01:14,650 --> 00:01:16,280 Gusto pag-ibig upang masakop ang para sa iyo guys. 23 00:01:16,280 --> 00:01:21,170 Ngunit mayroon kaming isang tonelada ng mga mapagkukunan para sa sa iyo upang gumuhit sa bilang makakuha ng mong malaman 24 00:01:21,170 --> 00:01:24,000 ang materyal at trabaho sa pamamagitan ng Nagtatakda ang iyong problema. 25 00:01:24,000 --> 00:01:30,810 >> Isang paalala na mayroon online ako ng text kahon, i-set up para sa iyo upang punan ang kung 26 00:01:30,810 --> 00:01:33,250 mayroon kang anumang mga puna para sa akin, parehong positibo at 27 00:01:33,250 --> 00:01:35,180 nakapagbibigay-liwanag, tungkol sa seksyon. 28 00:01:35,180 --> 00:01:38,600 URL na matatagpuan kanan pababa dito. 29 00:01:38,600 --> 00:01:43,250 Kaya mangyaring, maglaan ng ilang sandali kung mayroon kang anumang feedback, kung sa panahon ng seksyon, 30 00:01:43,250 --> 00:01:48,030 o pagkatapos, o pagkatapos pinapanood mo ang video online, upang magbigay sa akin ang iyong puna. 31 00:01:48,030 --> 00:01:52,100 Talaga Pinapahalagahan ko ang anuman at lahat ng mga ito. 32 00:01:52,100 --> 00:01:55,730 >> Kaya nagsi-pagkakaroon ko ng maliliit na mga pag-uusap na may maraming mga aking 33 00:01:55,730 --> 00:01:59,350 mga mag-aaral sa buong linggo - bilang ipasa ko mga pagsusulit pabalik, pakikipag-usap tungkol sa 34 00:01:59,350 --> 00:02:01,480 Siyempre, nakakakita ng kung paano mo ginagawa. 35 00:02:01,480 --> 00:02:05,120 At isa tema ay makabuo ng higit sa at sa ibabaw sa pakikipag-usap tungkol sa - sa 36 00:02:05,120 --> 00:02:05,660 partikular - 37 00:02:05,660 --> 00:02:07,710 Nagtatakda problema. 38 00:02:07,710 --> 00:02:13,090 At ako encapsulated tema na sa board ngayon. 39 00:02:13,090 --> 00:02:16,630 >> Mahalaga, mayroong isang pagkakaiba sa pagitan ng pag-on sa isang bagay na 40 00:02:16,630 --> 00:02:19,590 tapos nang tama at isang bagay na magaling. 41 00:02:19,590 --> 00:02:22,920 Karamihan sa mga tao ay na-paggawa hindi kapani-paniwala sa mga tuntunin ng kawastuhan - 42 00:02:22,920 --> 00:02:25,460 5 o 4 sa lahat psets. 43 00:02:25,460 --> 00:02:27,930 Karamihan sa mga tao ay nakakakuha ng mga lahat ng oras. 44 00:02:27,930 --> 00:02:31,150 >> Gayunpaman, dahil lang sa nagawa mo na isang bagay na hindi tamang ibig sabihin ikaw 45 00:02:31,150 --> 00:02:34,450 tapos na isang bagay bilang elegante, o mahusay, o bilang nang malinis bilang ka 46 00:02:34,450 --> 00:02:35,270 sana tapos na ito. 47 00:02:35,270 --> 00:02:36,790 At na kung ano ang disenyo - 48 00:02:36,790 --> 00:02:39,230 at sa isang mas mababang antas, estilo - 49 00:02:39,230 --> 00:02:40,450 axes ay para sa. 50 00:02:40,450 --> 00:02:45,130 Kaya ako ay pagtulak mo ang lahat, at iba pang mga TFs ay pagtulak mo guys, hindi lamang pagliko 51 00:02:45,130 --> 00:02:48,320 sa mga bagay na tama, ngunit i- sa mga bagay na naka-code na rin. 52 00:02:48,320 --> 00:02:53,060 >> Hindi paggawa hindi kinakailangang PARA loop, hindi recalculating variable kung 53 00:02:53,060 --> 00:02:53,800 hindi mo na kailangang. 54 00:02:53,800 --> 00:02:58,520 Halimbawa, naghahanap pabalik sa problema set 4, kapag ang paglalagay ng bricks sa 55 00:02:58,520 --> 00:03:03,070 screen, ang bawat hilera - bawat brick sa isang naibigay na hilera ay may parehong y-coordinate - 56 00:03:03,070 --> 00:03:04,390 coordinate ang parehong taas. 57 00:03:04,390 --> 00:03:07,930 >> Kaya na y-coordinate ay hindi kailangang kakalkulahin sa loob ng interior 58 00:03:07,930 --> 00:03:11,070 nested PARA loop na malamang na ginamit mo upang ilagay ang mga brick sa screen. 59 00:03:11,070 --> 00:03:14,030 Kailangan itong lamang upang kalkulahin ang bawat oras ka lumipat sunud-sunod, o 60 00:03:14,030 --> 00:03:15,200 inilipat pababa sa isang hilera. 61 00:03:15,200 --> 00:03:19,760 Kaya sabihin kung may 10 brick sa isang hilera, bawat brick ay maaaring magkaroon ng parehong 62 00:03:19,760 --> 00:03:22,260 y-coordinate, at na y-coordinate Maaari lamang kakalkulahin 63 00:03:22,260 --> 00:03:23,550 isang beses para sa lahat ng mga iyon. 64 00:03:23,550 --> 00:03:27,810 >> Hindi nito kailangang kalkulahin 10 beses, ni ang na pangangailangan pagkalkula 65 00:03:27,810 --> 00:03:30,220 mangyari sa aktwal na pag-andar ng tawag - 66 00:03:30,220 --> 00:03:33,020 ang bagong gracked function na tawag. 67 00:03:33,020 --> 00:03:37,820 Kaya kung na noon ay medyo nakakalito para sa mo, higit pa generically, mga bagay na 68 00:03:37,820 --> 00:03:40,730 Hindi kailangang mangyari bawat solong oras pumunta ka sa pamamagitan ng isang PARA loop ay hindi dapat 69 00:03:40,730 --> 00:03:42,900 ipaloob ang PARA loop, at dapat hindi mangyari sa bawat oras na pumunta 70 00:03:42,900 --> 00:03:44,080 sa pamamagitan ng PARA loop. 71 00:03:44,080 --> 00:03:49,270 >> Ang isa pang mahusay na disenyo halimbawa nakita natin sa Linggo 3 para sa 15, maaari mong panatilihin 72 00:03:49,270 --> 00:03:50,500 track ng zero. 73 00:03:50,500 --> 00:03:53,600 Kaya kapag initialize mo ang board, mo i-save - sa isang global variable, siguro - 74 00:03:53,600 --> 00:03:56,140 ang x at y-coordinate ng zero. 75 00:03:56,140 --> 00:03:57,520 At pagkatapos kailan mo - 76 00:03:57,520 --> 00:04:00,310 sa iyong paglipat ng function, sa tuwing gagawin mo isang matagumpay na ilipat, i-update mo ang 77 00:04:00,310 --> 00:04:02,040 lokasyon ng zero. 78 00:04:02,040 --> 00:04:06,240 >> Ito ay i-save ka mula sa pagkakaroon upang gawin nested PARA loop upang tumingin sa pamamagitan ng 79 00:04:06,240 --> 00:04:10,700 sasakay bawat oras sa iyong paglipat ng function at hanapin ang zero, o hanapin ang tile, 80 00:04:10,700 --> 00:04:12,460 at pagkatapos ay tingnan kung ano ang sa tabi nito. 81 00:04:12,460 --> 00:04:16,329 Sa halip, mayroon ka ng mga lokasyon ng zero, maaari mo lamang tumingin sa itaas, sa ibaba, 82 00:04:16,329 --> 00:04:21,160 at sa kaliwa at kanan ng ito, upang mahanap ang ang tile na iyong hinahanap. 83 00:04:21,160 --> 00:04:24,970 >> Kaya sa mga tuntunin ng programa kami pagsusulat, ang mga ito ay hindi kailanman sapat na malaki 84 00:04:24,970 --> 00:04:28,580 na ang ilan sa mga pasya sa disenyo ang talagang pagpunta sa abalahin ang iyong 85 00:04:28,580 --> 00:04:31,670 programa, o gawin itong tumakbo ng mas mabagal, o marahil kahit na maubusan ng memorya. 86 00:04:31,670 --> 00:04:35,030 Ngunit kami ay itulak ka pa rin guys upang isulat bilang elegante at 87 00:04:35,030 --> 00:04:36,450 mahusay na code hangga't maaari. 88 00:04:36,450 --> 00:04:39,910 >> Kaya kung gagawin mo napupunta sa pagsusulat ng mga bagay na magkaroon ng isang makabuluhang mas malaki 89 00:04:39,910 --> 00:04:44,660 saklaw, ang mga ito ay nakasulat na may mahusay magdisenyo bilang karagdagan sa pagiging tama. 90 00:04:44,660 --> 00:04:46,300 Kaya isang bilang ng mga mayroon kang nagdala na out. 91 00:04:46,300 --> 00:04:48,560 Iyan ay isang bagay kaming naghahanap ng mga - isang bagay na kami ay pagpunta sa patuloy na 92 00:04:48,560 --> 00:04:49,840 itulak mo guys sa. 93 00:04:49,840 --> 00:04:52,460 >> Kung sakaling may anumang mga katanungan tungkol sa disenyo ng iyong programa, huwag mag-atubiling 94 00:04:52,460 --> 00:04:56,870 upang maabot ang out sa akin, at Ikinagagalak kong maglakad sa pamamagitan ng iyong programa sa iyo, 95 00:04:56,870 --> 00:05:01,320 at ituro ang ilan sa mga disenyo mga pagpapasya na ginawa mo, at magbibigay sa iyo ng ilang mga 96 00:05:01,320 --> 00:05:06,240 mga mungkahi sa kung paano gumawa ng kahit na mas mahusay na pagpapasya disenyo. 97 00:05:06,240 --> 00:05:08,870 >> Kaya kami ay pagpunta sa ilipat sa sa pakikipag-usap tungkol sa Pagsusulit 0. 98 00:05:08,870 --> 00:05:11,300 Bago namin gawin iyon, ang kahit sino mayroon kayong mga katanungan tungkol sa kung ano 99 00:05:11,300 --> 00:05:14,252 Na sakop ko sa ngayon? 100 00:05:14,252 --> 00:05:21,500 >> [RUSTLING ingay] 101 00:05:21,500 --> 00:05:22,750 >> Jason HIRSCHHORN: Pitong segundo. 102 00:05:22,750 --> 00:05:23,250 OK. 103 00:05:23,250 --> 00:05:24,970 Usapan natin ang tungkol sa Pagsusulit 0 para sa isang bit Hayaan. 104 00:05:24,970 --> 00:05:26,700 Karamihan sa kang magkaroon ng iyong Pagsusulit pabalik 0 ni. 105 00:05:26,700 --> 00:05:29,820 Kung wala ka, sana tandaan mo ito nang kaunti. 106 00:05:29,820 --> 00:05:34,770 Ngunit kung kinunan Pagsusulit 0, pagkatapos mo mayroon din access sa mga PDF sa online sa 107 00:05:34,770 --> 00:05:35,890 ang sample na solusyon. 108 00:05:35,890 --> 00:05:39,480 >> Kahit sinong mayroon ba kayong mga katanungan bago namin tumalon sa materyal ang linggong tungkol sa 109 00:05:39,480 --> 00:05:41,520 isang partikular na problema sa Pagsusulit 0 - 110 00:05:41,520 --> 00:05:44,630 bakit ang sagot ay kung ano ito ay? 111 00:05:44,630 --> 00:05:47,255 Naguguluhan tungkol sa anumang bagay ba ang kahit sino? 112 00:05:47,255 --> 00:05:50,230 Kahit na nakuha ko sa iyo ang problema karapatan, ngunit lamang ang gusto sa akin upang ipaliwanag ito nang kaunti 113 00:05:50,230 --> 00:05:52,640 higit pa, Ikinagagalak kong gawin na ito ngayon. 114 00:05:52,640 --> 00:05:57,800 >> Kaya Hiniling ko sa inyo guys sa dumating handa na may ilang mga 115 00:05:57,800 --> 00:05:59,440 mga pananaw tungkol sa Pagsusulit 0. 116 00:05:59,440 --> 00:06:02,660 Kaya na nais na kumuha sa amin Magsimula sa isang tanong o 117 00:06:02,660 --> 00:06:04,655 magkomento tungkol sa Pagsusulit 0? 118 00:06:04,655 --> 00:06:07,435 119 00:06:07,435 --> 00:06:10,410 >> [Papel RUSTLING] 120 00:06:10,410 --> 00:06:11,470 >> Jason HIRSCHHORN: Hindi lahat ng tao May ginawang perpektong. 121 00:06:11,470 --> 00:06:12,720 Kaya alam ko [LAUGHS] 122 00:06:12,720 --> 00:06:15,950 doon na kailangang maging ilang mga katanungan tungkol sa Pagsusulit 0. 123 00:06:15,950 --> 00:06:27,940 124 00:06:27,940 --> 00:06:28,590 OK. 125 00:06:28,590 --> 00:06:29,210 Oo. 126 00:06:29,210 --> 00:06:29,600 Ompica. 127 00:06:29,600 --> 00:06:30,520 >> OMPICA: Bilang 10. 128 00:06:30,520 --> 00:06:33,560 >> Jason HIRSCHHORN: Bilang 10. 129 00:06:33,560 --> 00:06:35,400 Aling isa ay bilang 10? 130 00:06:35,400 --> 00:06:35,840 >> OMPICA: Ang - 131 00:06:35,840 --> 00:06:36,420 >> Jason HIRSCHHORN: haven't ako - 132 00:06:36,420 --> 00:06:37,670 >> OMPICA: Ang magsama - 133 00:06:37,670 --> 00:06:40,060 134 00:06:40,060 --> 00:06:42,180 >> Jason HIRSCHHORN: Bilang 10 noon ay walong upang i - pagsusulat walo upang i? 135 00:06:42,180 --> 00:06:42,980 >> OMPICA: Oo. 136 00:06:42,980 --> 00:06:43,630 >> Jason HIRSCHHORN: OK. 137 00:06:43,630 --> 00:06:47,390 Kaya isa pang tanong maaari kang magkaroon ng nagtanong ay ako natunton na kinabukasan? 138 00:06:47,390 --> 00:06:48,630 Ang sagot ay oo. 139 00:06:48,630 --> 00:06:52,060 Sa seksyon bago ang pagsusulit, tinanong ko ka guys sa code ng kapwa Sterling at 140 00:06:52,060 --> 00:06:52,980 walo upang i. 141 00:06:52,980 --> 00:06:54,770 Pareho sa mga ito ang nangyari sa lumitaw sa pagsusulit. 142 00:06:54,770 --> 00:06:57,510 Kaya sana, na iyong binayaran pansin sa mga iyon. 143 00:06:57,510 --> 00:07:02,520 >> At kung nagkaproblema ka sa, pagkatapos ay mayroon kang marahil tapos na rin sa mga dalawang. 144 00:07:02,520 --> 00:07:06,030 Subalit walo upang i, ginawa namin hindi tunay na code ito sa klase, ngunit ito ay, muli, 145 00:07:06,030 --> 00:07:07,500 tinanong sa pagsusulit. 146 00:07:07,500 --> 00:07:13,270 Kaya dalawang bagay upang tumagal tandaan kapag coding walo upang i. 147 00:07:13,270 --> 00:07:17,320 Ang unang bagay, alinsunod sa mga tanong, noon ay na kailangan mo upang suriin kung ang string 148 00:07:17,320 --> 00:07:20,300 ay katumbas ng null. 149 00:07:20,300 --> 00:07:28,060 >> Ang ilang mga tao sinubukan upang suriin sa ibang pagkakataon sa sa programa kung s bracket i noon ay - 150 00:07:28,060 --> 00:07:30,940 kaya isang tiyak na character sa na string - ay katumbas ng null. 151 00:07:30,940 --> 00:07:35,600 Ngunit tandaan, na null ay totoo - ito ay handa na upang isipin 152 00:07:35,600 --> 00:07:39,100 null bilang zero pointer - isang pointer sa zero - 153 00:07:39,100 --> 00:07:40,920 isang lugar na naa sa memorya kung saan hindi ka makaka-access. 154 00:07:40,920 --> 00:07:44,730 >> Kaya kung ang isang bagay ay katumbas sa null, mo malaman na ito ay hindi pa nasimulan, 155 00:07:44,730 --> 00:07:46,430 o walang mayroong. 156 00:07:46,430 --> 00:07:50,950 Kaya s ay isang pansamantalang trabaho bituin, s bracket i ay isang pansamantalang trabaho. 157 00:07:50,950 --> 00:07:57,410 Kaya ito ang akma upang ihambing s sa null, ngunit hindi s bracket i upang null. 158 00:07:57,410 --> 00:07:59,390 Ngunit muli - sa gayon ay ang unang bagay na ay dapat kang gawin - 159 00:07:59,390 --> 00:08:03,510 suriin upang masiguro na iyong aktwal na Naging isang real string. 160 00:08:03,510 --> 00:08:08,020 >> Susunod, ginusto mong pumunta sa pamamagitan ng bawat character sa string. 161 00:08:08,020 --> 00:08:12,500 At nang sa gayon ay magiging tulad ng isang bracket s i, halimbawa, kung i ay ang iyong iterator. 162 00:08:12,500 --> 00:08:17,250 At tumagal na karakter, at makakuha nito aktwal na halaga. 163 00:08:17,250 --> 00:08:21,800 Ito Ikaw ay naka-imbak bilang isang pansamantalang trabaho, ngunit ang halaga ASCII para sa zero - 164 00:08:21,800 --> 00:08:23,010 zero bilang isang character - 165 00:08:23,010 --> 00:08:25,450 ay hindi tunay na ang integer zero. 166 00:08:25,450 --> 00:08:28,700 Ito ay ilang iba pang mga numero na maaari mong tumingin hanggang sa talahanayan ASCII. 167 00:08:28,700 --> 00:08:30,790 >> Kaya isang paraan upang iwasto para sa na - Marahil ang pinakamahusay na paraan upang itama para sa 168 00:08:30,790 --> 00:08:33,760 na - ay ibabawas mula dito ang halaga ng character - 169 00:08:33,760 --> 00:08:35,140 ZERO bilang isang character. 170 00:08:35,140 --> 00:08:38,490 Kaya minus single quote, zero, isa pang single quote. 171 00:08:38,490 --> 00:08:44,620 Iyon ay magdadala sa anumang bilang mayroon kang bilang isang pansamantalang trabaho, at kumuha ng mga ito katumbas ng 172 00:08:44,620 --> 00:08:46,720 ang numero bilang isang aktwal na integer. 173 00:08:46,720 --> 00:08:50,300 >> At iyon ay halos kapareho sa diskarteng ng maraming mga tao kinuha sa 174 00:08:50,300 --> 00:08:52,800 problema set 2, may Caesar at Viginere - 175 00:08:52,800 --> 00:08:55,160 mga ciphers, kapag nag- ay umiikot sa kanila. 176 00:08:55,160 --> 00:08:59,210 Kaya pagkatapos mong magkaroon ng ito bilang isang numero mula sa zero sa siyam, pagkatapos - depende sa 177 00:08:59,210 --> 00:09:02,750 kung saan ito napupunta sa ultimate numero - kailangan mong i-multiply ito 178 00:09:02,750 --> 00:09:04,120 sa pamamagitan ng kapangyarihan ng 10. 179 00:09:04,120 --> 00:09:07,340 >> Ang ilang mga tao ay inilipat mula sa likod upang ang front, at pinarami ang mga indibidwal na 180 00:09:07,340 --> 00:09:08,940 numero sa pamamagitan ng isang kapangyarihan ng 10. 181 00:09:08,940 --> 00:09:11,160 Ang ilang mga tao ay inilipat mula sa sa harap i-back - 182 00:09:11,160 --> 00:09:14,430 at kaya kinuha ang pinakamataas na bumili ng mga unang numero - 183 00:09:14,430 --> 00:09:18,190 at gusto i-save ang mga nasa isang global counter variable. 184 00:09:18,190 --> 00:09:20,880 At pagkatapos ay sa bawat oras sa pamamagitan ng PARA loop, i-multiply na higanteng global 185 00:09:20,880 --> 00:09:25,640 kontrahin variable sa pamamagitan ng 10, upang magsagawa ng espasyo para sa susunod na pansamantalang trabaho. 186 00:09:25,640 --> 00:09:28,750 >> Kaya na noon ay medyo nakakalito nang walang ako sumusulat ito sa board. 187 00:09:28,750 --> 00:09:31,550 Ngunit ang sample na solusyon Available sa iyo. 188 00:09:31,550 --> 00:09:32,870 Ngunit ang mga ay ang malaking bagay humahanap kami. 189 00:09:32,870 --> 00:09:36,400 Gayundin isang tseke upang matiyak na ang bawat indibidwal na character ay sa katunayan isang 190 00:09:36,400 --> 00:09:39,780 na character sa pagitan ng zero at siyam, at hindi ilang iba pang mga character, tulad ng A, 191 00:09:39,780 --> 00:09:41,160 halimbawa. 192 00:09:41,160 --> 00:09:43,150 >> Yaong ay ang mga bagay na humahanap kami para sa na tanong. 193 00:09:43,150 --> 00:09:46,510 194 00:09:46,510 --> 00:09:47,980 Na sagutin ang iyong tanong? 195 00:09:47,980 --> 00:09:49,320 >> OMPICA: Oo. 196 00:09:49,320 --> 00:09:50,240 >> Jason HIRSCHHORN: OK. 197 00:09:50,240 --> 00:09:53,940 Mayroon bang anumang iba pang mga tanong tungkol sa Pagsusulit 0? 198 00:09:53,940 --> 00:09:55,440 Paano ang tungkol sa kino-compile? 199 00:09:55,440 --> 00:09:56,740 Bawat tao kino-compile ang tama? 200 00:09:56,740 --> 00:09:58,370 Hindi. 201 00:09:58,370 --> 00:09:58,840 Nagkaroon ng isang - 202 00:09:58,840 --> 00:10:01,010 [LAUGHS] 203 00:10:01,010 --> 00:10:03,265 Ang anumang mga katanungan tungkol sa proseso ng compilation? 204 00:10:03,265 --> 00:10:06,050 205 00:10:06,050 --> 00:10:06,966 Wow. 206 00:10:06,966 --> 00:10:11,090 >> [Papel RUSTLING] 207 00:10:11,090 --> 00:10:11,520 >> Jason HIRSCHHORN: Oo. 208 00:10:11,520 --> 00:10:11,700 Michael. 209 00:10:11,700 --> 00:10:14,140 >> Michael: Ay numero 7 - random? 210 00:10:14,140 --> 00:10:16,500 >> Jason HIRSCHHORN: Bilang 7. 211 00:10:16,500 --> 00:10:20,670 Numero ng 7 noon ay makakuha ng isang random na integer. 212 00:10:20,670 --> 00:10:21,110 Magaling. 213 00:10:21,110 --> 00:10:25,630 Kaya binibigyan ka ng isang integer isang at isang integer b, at gusto mo ng random 214 00:10:25,630 --> 00:10:28,710 integer sa pagitan ng isang at b. 215 00:10:28,710 --> 00:10:31,740 Maaari talaga namin isulat ang isang ito sa sa board, dahil ang isang ito 216 00:10:31,740 --> 00:10:33,320 ay isang linya ng code - 217 00:10:33,320 --> 00:10:34,390 isang paraan upang gawin ito. 218 00:10:34,390 --> 00:10:37,810 >> Kaya kami binibigyan ka drand bilang isang function na namin ma-gamitin. 219 00:10:37,810 --> 00:10:38,820 At kung ano ang ibig drand - 220 00:10:38,820 --> 00:10:40,290 sa pag-aakala itong ma-seeded - 221 00:10:40,290 --> 00:10:42,316 kung ano ang ibig bumalik drand? 222 00:10:42,316 --> 00:10:44,840 >> Michael: Isang float sa pagitan ng 0.0 at 1.0. 223 00:10:44,840 --> 00:10:45,530 >> Jason HIRSCHHORN: Isang numero - oo. 224 00:10:45,530 --> 00:10:47,910 Ang numero sa pagitan ng 0 at 1. 225 00:10:47,910 --> 00:10:51,760 At gayon pa b at isang namin. 226 00:10:51,760 --> 00:10:55,480 At pagkatapos ay mayroon kaming ang aming mga random na numero sa pagitan ng 0 at 1 ibinigay sa atin sa pamamagitan ng drand. 227 00:10:55,480 --> 00:11:01,480 228 00:11:01,480 --> 00:11:06,630 Ang ilang mga tao sinubukan upang ilagay b, o b minus a, o isang bagay sa loob mga 229 00:11:06,630 --> 00:11:07,960 panaklong. 230 00:11:07,960 --> 00:11:11,210 Iyon ay nangangahulugan na ang mga ito ay mga argumento upang ito function. 231 00:11:11,210 --> 00:11:13,450 >> drand ay hindi gumawa ng anumang mga argumento - tulad ng getString gumagana 232 00:11:13,450 --> 00:11:14,330 hindi gumawa ng anumang mga argumento. 233 00:11:14,330 --> 00:11:16,600 Kaya bukas paren lamang, malapit paren - at na, mismo, ay 234 00:11:16,600 --> 00:11:17,330 ang pag-andar ng tawag. 235 00:11:17,330 --> 00:11:19,770 At na nagbibigay sa iyo ng isang numero sa pagitan ng 0 at 1. 236 00:11:19,770 --> 00:11:22,820 Siyempre, mayroon kaming isang buong saklaw na ang mga numero ay maaaring maging in 237 00:11:22,820 --> 00:11:28,470 >> Sabihing, kung b ay 10 at isang 5, kami talaga Gusto ng isang numero sa hanay ng mga 5. 238 00:11:28,470 --> 00:11:36,940 Kaya ang susunod na bagay na kailangan namin upang gawin ay multiply ito sa pamamagitan ng saklaw b minus isang. 239 00:11:36,940 --> 00:11:40,380 Kaya sa pag-aakala na na-multiply. 240 00:11:40,380 --> 00:11:42,590 At makikita na bigyan kami ng isang numero sa loob ng isang naibigay na saklaw. 241 00:11:42,590 --> 00:11:46,610 At na tiyak na saklaw ng pagiging pagkakaiba sa pagitan ng b minus isang. 242 00:11:46,610 --> 00:11:50,030 >> At sa wakas, na makikita lamang bigyan ito mula sa - ang sinasabi ng mga saklaw sa pagitan ng b minus isang 243 00:11:50,030 --> 00:11:52,520 ay 5, na kailangan bigyan kami ng isang numero 0-5. 244 00:11:52,520 --> 00:11:56,000 Ngunit kung ang isang ay sa katunayan 5, kailangan namin upang mapalakas sa hanay ng hanggang sa kung saan ito ay 245 00:11:56,000 --> 00:12:01,380 talaga dapat maging, sa pamamagitan ng pagdaragdag ng isang. 246 00:12:01,380 --> 00:12:02,580 Kaya na hindi nakakaabala ang logic karapatan. 247 00:12:02,580 --> 00:12:03,745 At pagkatapos, ay magkakaroon ka isa pang tanong? 248 00:12:03,745 --> 00:12:04,547 >> Michael: Hindi. 249 00:12:04,547 --> 00:12:06,010 Pakiramdam ko lang talaga pipi ngayon. 250 00:12:06,010 --> 00:12:06,405 [LAUGHS] 251 00:12:06,405 --> 00:12:06,730 >> Jason HIRSCHHORN: Hindi. 252 00:12:06,730 --> 00:12:08,640 Huwag pakiramdam talagang pipi. 253 00:12:08,640 --> 00:12:10,560 Ang isang bilang ng mga tao struggled may tanong na ito. 254 00:12:10,560 --> 00:12:13,920 At pagkatapos, ang iba pang mga tanong ay, drand, sinabi mo, nagbibigay sa iyo ng float - 255 00:12:13,920 --> 00:12:14,940 ay nagbabalik ng float. 256 00:12:14,940 --> 00:12:18,020 Ngunit ito function na talagang tinanong para sa isang integer na ibabalik. 257 00:12:18,020 --> 00:12:23,700 >> Hindi mo kailangang i-cast ito tahasan sa isang integer, dahil ang mga 258 00:12:23,700 --> 00:12:29,090 pagpapatakbo ituturing ito bilang isang lahat float - bilang isang lumulutang na numero point. 259 00:12:29,090 --> 00:12:31,570 Tulad ng kalooban na ito - kahit na ito ay isang integer, ang kaloobang ito'y 260 00:12:31,570 --> 00:12:32,890 ay multiply nang tama. 261 00:12:32,890 --> 00:12:34,000 Ang lahat ng pagpaparami ang gagana. 262 00:12:34,000 --> 00:12:35,060 Hindi mo kailangang i-cast ito dito. 263 00:12:35,060 --> 00:12:36,480 Sa katunayan, hindi mo dapat pinalayas ito. 264 00:12:36,480 --> 00:12:37,310 >> Iyon gagawin - 265 00:12:37,310 --> 00:12:40,750 kung gusto mong nagsumite ng isang numero na sa pagitan ng 0 at 1 - 266 00:12:40,750 --> 00:12:42,680 isang random na numero, isang lumulutang point - 267 00:12:42,680 --> 00:12:47,850 gayon ito ay alinman sa 0 lamang o 1, upang makikita mo mawawala ang lahat ng katumpakan na. 268 00:12:47,850 --> 00:12:50,120 Ngunit sa dulo, kapag bumalik ka, ito ay makakakuha ng awtomatikong 269 00:12:50,120 --> 00:12:51,620 Nagpadala pabalik bilang isang integer. 270 00:12:51,620 --> 00:12:56,870 Kaya hindi mo na kailangan na gawin na paghahagis iyong sarili. 271 00:12:56,870 --> 00:13:00,810 >> Kaya ito ay ang kasagutan sa tanong na iyon, numero 7. 272 00:13:00,810 --> 00:13:02,190 Anumang iba pang mga tanong sa Pagsusulit 0? 273 00:13:02,190 --> 00:13:03,300 Oo, Annie. 274 00:13:03,300 --> 00:13:05,050 >> Annie: Kailan ginagamit namin recursive - 275 00:13:05,050 --> 00:13:07,850 kapag ginagamit namin ang umuulit loop? 276 00:13:07,850 --> 00:13:10,210 >> Jason HIRSCHHORN: Kailan ginagamit mo recursive - kaya mas pangkalahatang paraan, ang 277 00:13:10,210 --> 00:13:14,110 pros at cons ng recursion kumpara sa isang umuulit na diskarte. 278 00:13:14,110 --> 00:13:17,110 Pwedeng mag-alok ang sinuman ng isang pro o isang salungat? 279 00:13:17,110 --> 00:13:19,460 Mangyaring? 280 00:13:19,460 --> 00:13:20,140 Hindi maaari ang sinuman. 281 00:13:20,140 --> 00:13:22,526 Sino ang maaaring mag-alok ng isang pro o isang salungat? 282 00:13:22,526 --> 00:13:26,963 >> [Papel RUSTLING] 283 00:13:26,963 --> 00:13:29,730 >> AARAL 1: Recursive Mababa coding - kaunting pagta-type? 284 00:13:29,730 --> 00:13:33,170 >> Jason HIRSCHHORN: Kaya sa pangkalahatan, recursion lalo na, isang function - 285 00:13:33,170 --> 00:13:35,750 o isang algorithm tulad ng pagsanib uri - na lends mismo 286 00:13:35,750 --> 00:13:37,300 sa isang recursive diskarte - 287 00:13:37,300 --> 00:13:40,710 maaaring maging mas tuwiran sa code ng recursively. 288 00:13:40,710 --> 00:13:43,940 At gumawa lang nang higit pa pakiramdam upang gawin ito recursively. 289 00:13:43,940 --> 00:13:46,230 Kaya na ay magiging isang pro sa recursion. 290 00:13:46,230 --> 00:13:46,610 Ang iba? 291 00:13:46,610 --> 00:13:47,467 Oo? 292 00:13:47,467 --> 00:13:49,240 >> AARAL 2: salungat sa recursion - 293 00:13:49,240 --> 00:13:50,940 Gumagamit ito ng higit pang memory. 294 00:13:50,940 --> 00:13:52,200 >> Jason HIRSCHHORN: Kaya akmang-akma. 295 00:13:52,200 --> 00:13:55,720 Ang isang recursive function na ay panatilihin ang pagdaragdag stack frame sa stack. 296 00:13:55,720 --> 00:13:59,690 Kaya't kung ikaw ay tumatakbo sa maraming numero, at mayroon itawag sa 297 00:13:59,690 --> 00:14:02,560 function na ng maraming, pagkatapos ang mo ay tiyak na tumagal ng hanggang higit pang mga memorya, habang 298 00:14:02,560 --> 00:14:05,810 isang umuulit na diskarte ay ilagay ang isa lamang stack frame sa stack, dahil 299 00:14:05,810 --> 00:14:08,420 ang lahat ng ito mangyayari sa loob ng isang function. 300 00:14:08,420 --> 00:14:11,010 >> Anumang iba pang mga pros at cons? 301 00:14:11,010 --> 00:14:11,500 Oo. 302 00:14:11,500 --> 00:14:12,550 >> AARAL 3: pros para sa recursion. 303 00:14:12,550 --> 00:14:15,950 Wala kang upang matukoy sa advance kung gaano karaming beses ang 304 00:14:15,950 --> 00:14:17,660 code ay nagkaroon mo ay naulit. 305 00:14:17,660 --> 00:14:22,810 Maaari kang magkaroon ng isang paunang-natukoy na bilang ng mga beses na ikaw ay may upang umulit, pagkatapos ay 306 00:14:22,810 --> 00:14:26,420 recursion ay mas mahusay, dahil ito ay tumatagal ng resultang iyon. 307 00:14:26,420 --> 00:14:27,780 >> Jason HIRSCHHORN: Sa tingin ko na totoo. 308 00:14:27,780 --> 00:14:30,770 Ngunit tingin ko sa parehong mga sitwasyon gagawin mo kailanman - 309 00:14:30,770 --> 00:14:33,290 Gusto mo marahil makakuha ng ilang input mula sa user. 310 00:14:33,290 --> 00:14:35,990 O kaya ito function na ay magkakaroon ng ilang mga input na matukoy kung gaano karaming beses ito 311 00:14:35,990 --> 00:14:36,730 dapat tumakbo. 312 00:14:36,730 --> 00:14:39,520 Kaya sa pangkalahatan, mong ginagawa Hindi mahirap code - kahit na sa isang umuulit na diskarte - kung paano 313 00:14:39,520 --> 00:14:40,940 dapat na magpatakbo ng maraming beses loop na. 314 00:14:40,940 --> 00:14:46,100 315 00:14:46,100 --> 00:14:48,670 >> Ibig mayroon kang isa pang ikaw ay nag-iisip tungkol sa, Annie? 316 00:14:48,670 --> 00:14:49,330 OK. 317 00:14:49,330 --> 00:14:51,650 Kaya mga ay marahil ang dalawa - 318 00:14:51,650 --> 00:14:54,370 ang pinakamalaking pro at ang pinakamalaking katwirang laban sa isang recursive kumpara sa 319 00:14:54,370 --> 00:14:57,080 isang umuulit na diskarte. 320 00:14:57,080 --> 00:14:57,690 OK. 321 00:14:57,690 --> 00:14:59,465 Ano pa sa Pagsusulit 0? 322 00:14:59,465 --> 00:15:08,940 323 00:15:08,940 --> 00:15:09,920 >> Ng ilipat sa Hayaan. 324 00:15:09,920 --> 00:15:15,260 File ako / O. May kahanga-hangang maikli ngayong linggo sa file I / O na sana 325 00:15:15,260 --> 00:15:19,270 na pinanood mo ang maramihang beses, at admired. 326 00:15:19,270 --> 00:15:22,910 Ang isang pulutong ng trabaho nagpunta sa na, at na hindi ko na Narinig ito ay insanely kapaki-pakinabang. 327 00:15:22,910 --> 00:15:25,740 Isinama ko rin ang link sa slide na ito, kung sakaling hindi mo pa ay may isang 328 00:15:25,740 --> 00:15:29,160 pagkakataon upang panoorin ito 10 ulit. 329 00:15:29,160 --> 00:15:35,280 >> Kaya, kami ay pagpunta sa daglian pumunta sa ibabaw ng mga pangunahing hakbang upang pagbubukas at nagtatrabaho 330 00:15:35,280 --> 00:15:38,400 may mga file, at pagkatapos ay kami ay pagpunta sa sumisid sa isang problema coding bago 331 00:15:38,400 --> 00:15:40,400 pagsusuri sa hanay problema. 332 00:15:40,400 --> 00:15:44,330 Kaya muli, ako pagpunta sa ilagay ito up sa screen, ngunit pupuntahan ko makipag-usap para 333 00:15:44,330 --> 00:15:47,630 lamang ng isang minuto tungkol sa kung ano kami ay paggawa dito sa file I/O-- 334 00:15:47,630 --> 00:15:49,090 kung ano ang ibig sabihin na? 335 00:15:49,090 --> 00:15:55,280 >> Iyon ay nangangahulugan na maaari naming lumikha ng aming mga programa, at pagkatapos ay mayroon ang aming mga programa 336 00:15:55,280 --> 00:16:00,370 exit at hindi nakagawa ng anumang epekto sa ang mundo sa labas ng aming programa. 337 00:16:00,370 --> 00:16:04,630 Ngunit kapag nagsimula kami nagtatrabaho sa mga file - kapwa sila binabasa in at paglikha 338 00:16:04,630 --> 00:16:10,460 ang mga ito - maaari kaming magkaroon ng ilang mga epekto sa mundo sa labas ng aming programa. 339 00:16:10,460 --> 00:16:15,440 >> Tulad ng kung hindi magagawang Microsoft Word ay gumawa ng anumang mga dokumento ng Word, pagkatapos ay 340 00:16:15,440 --> 00:16:18,710 sa sandaling huminto sa Microsoft Word, ang lahat ng iyong trabaho ay nawala, at gagawin ito 341 00:16:18,710 --> 00:16:19,740 talagang maging walang silbi. 342 00:16:19,740 --> 00:16:23,620 Sa huli namin nais na ma- isulat ang mga programa na maaaring makaapekto sa 343 00:16:23,620 --> 00:16:31,350 mundo sa kanilang paligid, parehong sa pamamagitan ng pagsasagawa sa complex input - sa mga tuntunin ng mga file at 344 00:16:31,350 --> 00:16:37,080 sa pamamagitan ng file, at paglikha rin kawili-wiling at nakahihimok na output - 345 00:16:37,080 --> 00:16:39,520 sa mga tuntunin ng iba't ibang uri ng mga file. 346 00:16:39,520 --> 00:16:43,730 >> Kaya na ang dahilan kung bakit kami ay nagsisimula sa malaman kung paano gumagana sa mga file. 347 00:16:43,730 --> 00:16:47,080 Mas partikular, kung ano ginagawa namin ay ang mga sumusunod. 348 00:16:47,080 --> 00:16:47,680 Ito ay napaka-simple. 349 00:16:47,680 --> 00:16:51,530 May lamang ng ilang mga hakbang, at sila ay nakalista dito sa ang code na ito. 350 00:16:51,530 --> 00:16:55,130 Kaya kami ay pagpunta sa pumunta sa pamamagitan ng ang code na ito sa pamamagitan ng linya linya. 351 00:16:55,130 --> 00:16:57,630 >> Una, makikita mo na naka-highlight - 352 00:16:57,630 --> 00:17:01,330 kapag nagtatrabaho ka sa isang file, anuman ang uri ng file na ito ay, 353 00:17:01,330 --> 00:17:02,670 kailangan mo upang buksan ito. 354 00:17:02,670 --> 00:17:05,130 At iyon ay may isang pagtawag sa fopen - 355 00:17:05,130 --> 00:17:05,950 karapatan dito. 356 00:17:05,950 --> 00:17:07,980 Isama mo ang pangalan ng file. 357 00:17:07,980 --> 00:17:11,930 Kung ang file ay wala sa iyong direktoryo, o ang folder kung saan ang program na ito 358 00:17:11,930 --> 00:17:15,910 buhay, pagkatapos ay kailangan mo rin isama isang path sa kung saan ang file ay. 359 00:17:15,910 --> 00:17:19,099 >> Kami ay pagpunta sa ipinapalagay na ito file na tinatawag na "text.txt" - 360 00:17:19,099 --> 00:17:24,220 isang simpleng dokumento teksto - ay nasa parehong folder bilang programang ito ay. 361 00:17:24,220 --> 00:17:26,859 Kaya na ang isa pang bagay na dapat isip - na kung gusto mong buksan ang file 362 00:17:26,859 --> 00:17:30,050 sa ibang lugar, ang talagang kailangan upang isama ang lokasyon nito. 363 00:17:30,050 --> 00:17:33,520 >> Ikalawa, maaari kang pumasa sa isang argumento sa fopen, at iyon ang gusto mong gawin 364 00:17:33,520 --> 00:17:34,620 kasama ang file. 365 00:17:34,620 --> 00:17:38,450 May tatlong pangunahing mga argument na ka pagpunta upang pumasa sa fopen. 366 00:17:38,450 --> 00:17:40,060 Sino ang maaaring magbigay sa akin ng mga tatlong? 367 00:17:40,060 --> 00:17:44,960 368 00:17:44,960 --> 00:17:47,130 Sino ang maaaring magbigay sa akin ang isa sa mga ito? 369 00:17:47,130 --> 00:17:48,130 Oo. 370 00:17:48,130 --> 00:17:50,010 >> AARAL 4: ang pangalan ng file? 371 00:17:50,010 --> 00:17:50,440 >> Jason HIRSCHHORN: Paumanhin. 372 00:17:50,440 --> 00:17:55,490 Tatlong pangunahing mga argumento maaari mong pumasa bilang ikalawang argumento sa fopen. 373 00:17:55,490 --> 00:17:57,060 Tama ka - pangalan ng file ay ang unang argumento. 374 00:17:57,060 --> 00:18:01,620 Ngunit ang pangalawang argumento sa fopen ay sa pangkalahatan tatlong mga string, at - oo. 375 00:18:01,620 --> 00:18:02,210 Aleja. 376 00:18:02,210 --> 00:18:03,490 >> ALEJA: Isang para sa Magkabit. 377 00:18:03,490 --> 00:18:06,840 >> Jason HIRSCHHORN: A, kung nais mong Ikabit sa isang file na ay mayroon na. 378 00:18:06,840 --> 00:18:07,810 >> AARAL 5: R para nabasa na. 379 00:18:07,810 --> 00:18:09,930 >> Jason HIRSCHHORN: R, kung ikaw nais na basahin mula sa isang file. 380 00:18:09,930 --> 00:18:10,670 >> AARAL 6: W para sa pagpapawalang. 381 00:18:10,670 --> 00:18:12,840 >> Jason HIRSCHHORN: At w, kung ikaw nais na magsulat sa isang file. 382 00:18:12,840 --> 00:18:17,570 Kaya sa kasong ito, ipinapadala namin sa pagsusulat sa file, kaya kami ay w. 383 00:18:17,570 --> 00:18:22,360 Buksan mo ito, mayroon din sa iyo upang i-save ang maghain sa isang lugar, at iyon ang may 384 00:18:22,360 --> 00:18:26,000 code sa kaliwang bahagi ng ang pagtatalaga ng operator - 385 00:18:26,000 --> 00:18:31,220 Lumilikha ako ng isang pointer sa isang file tinatawag na, sa ganitong kaso, ang file. 386 00:18:31,220 --> 00:18:36,070 >> Kami ay hindi pagpunta sa mag-alala kung ano ang all caps FILE bagay ay. 387 00:18:36,070 --> 00:18:40,600 Magkasiya ito upang sabihin, ito ay isang mahaba stream ng mga zero at bago. 388 00:18:40,600 --> 00:18:44,970 At na kung paano namin ay pagpunta sa gamitin ito at maunawaan ito. 389 00:18:44,970 --> 00:18:47,300 >> Ang susunod na bagay na kailangan namin upang gawin - at ito ay hindi mapaniniwalaan o kapani-paniwala mahalaga - 390 00:18:47,300 --> 00:18:49,070 tuwing magbubukas ka ng isang file - 391 00:18:49,070 --> 00:18:54,250 sa katunayan, sa tuwing tawagan ka malloc, para sa Halimbawa, at makakuha ng ilang mga memorya at subukan 392 00:18:54,250 --> 00:18:57,980 at i-save ito sa isang pointer, palagi nais na suriin upang masiguro na iyon 393 00:18:57,980 --> 00:19:00,230 function na ay hindi nagbalik null. 394 00:19:00,230 --> 00:19:05,230 >> Kaya sa kasong ito, ay namin pagsuri upang gawing Siguraduhin na talaga naming binuksan ang mga 395 00:19:05,230 --> 00:19:10,230 maghain ng tama, at nagkaroon walang error sa aming programa. 396 00:19:10,230 --> 00:19:15,160 Susunod, sa sandaling nasuri naming matiyak mayroon kaming isang gumaganang file, kaya namin 397 00:19:15,160 --> 00:19:18,520 sumulat sa, o magbasa mula sa, o isama sa file. 398 00:19:18,520 --> 00:19:24,270 Sa kasong ito, kailangan lang ako sa pag-print isang linya sa file na ito. 399 00:19:24,270 --> 00:19:25,450 >> Paano ko malalaman na? 400 00:19:25,450 --> 00:19:27,990 Well, ako gamit ang function na tinatawag fprintf. 401 00:19:27,990 --> 00:19:30,970 Ang lahat ng mga pag-andar ikaw ay gumagamit ng kapag sumusulat upang, o pagbabasa mula sa, o 402 00:19:30,970 --> 00:19:34,950 pagmamanipula ng mga file ay magiging katulad ng mga pag-andar na iyong nakita dati, ngunit 403 00:19:34,950 --> 00:19:38,420 magsimula sa mga titik na F, nakatayo para sa file. 404 00:19:38,420 --> 00:19:43,440 At fprintf, hindi tulad ng aming normal na pag-print app, tumatagal ng isang karagdagang argument, 405 00:19:43,440 --> 00:19:47,800 at iyon ay ang file na kung saan mo nais na i-print ang linyang ito sa. 406 00:19:47,800 --> 00:19:50,640 >> Wala akong anumang bagay sa sa kanan ng ohai. 407 00:19:50,640 --> 00:19:52,860 Wala akong ikatlong argumento sa printf - 408 00:19:52,860 --> 00:19:57,030 o ang pangalawang argumento sa printf, ang ikatlong argumento sa fprintf, dahil ako 409 00:19:57,030 --> 00:19:59,480 Walang anumang mga placeholder dito. 410 00:19:59,480 --> 00:20:01,070 Hindi ako kabilang ang anumang mga variable. 411 00:20:01,070 --> 00:20:06,070 Ngunit muli, fprintf at lahat ng mga file mga function na umaandar sa mga file 412 00:20:06,070 --> 00:20:09,820 ay karaniwang pagpunta sa kailangan ang file kung saan sila naka-operating. 413 00:20:09,820 --> 00:20:15,960 >> Sa wakas, ang huling mahalagang bagay upang gawin ay upang isara ang file, tulad lamang ng 414 00:20:15,960 --> 00:20:19,530 may - sa tuwing malloc kami ng isang bagay, gusto naming palayain ang isang bagay, baka namin 415 00:20:19,530 --> 00:20:22,730 magkaroon ng isang tumagas memory - nais naming upang isara ang aming file. 416 00:20:22,730 --> 00:20:28,180 Kung ang program na ito ay lumabas nang hindi pagsasara ang file, logro ay walang nais pumunta 417 00:20:28,180 --> 00:20:30,050 mali, lalo na kung ito ay isang maliit na file. 418 00:20:30,050 --> 00:20:35,020 >> Ngunit ito ay tiyak na mahusay na estilo coding at pagsasanay upang laging isara ang iyong file 419 00:20:35,020 --> 00:20:38,050 kapag tapos ka na gumagamit nito. 420 00:20:38,050 --> 00:20:43,630 Kaya na ay ang mga pangunahing kaalaman ng file ako / O. Marahil nakita mo na bago, o 421 00:20:43,630 --> 00:20:45,710 napanood na ito sa hindi kapani-paniwala na maikli. 422 00:20:45,710 --> 00:20:48,410 Kahit sinong mayroon ba kayong mga katanungan, bago kami pumunta sa ilang mga kasanayan coding 423 00:20:48,410 --> 00:20:51,800 mga problema, tungkol sa file I / O o ang hakbang ko lang ang nagpunta sa ibabaw? 424 00:20:51,800 --> 00:21:00,198 425 00:21:00,198 --> 00:21:03,162 >> [Pag-type ng tunog] 426 00:21:03,162 --> 00:21:04,150 >> Jason HIRSCHHORN: Gusto mo ba magkaroon ng isang tanong, Avi? 427 00:21:04,150 --> 00:21:04,660 >> AVI: Hindi. 428 00:21:04,660 --> 00:21:04,740 >> Jason HIRSCHHORN: OK. 429 00:21:04,740 --> 00:21:06,746 Pupunta ako sa maghintay ng isa pang pitong segundo. 430 00:21:06,746 --> 00:21:07,590 [LAUGHS] 431 00:21:07,590 --> 00:21:08,620 Iyon ay isang talagang magandang tip. 432 00:21:08,620 --> 00:21:10,750 Ikaw lang guys hindi gusto pagtatanong. 433 00:21:10,750 --> 00:21:11,660 Iyon ay pinong. 434 00:21:11,660 --> 00:21:12,330 OK. 435 00:21:12,330 --> 00:21:17,620 Kaya aming unang problema kasanayan ay, kami ay pagpunta sa doblehin ang pag-andar ng 436 00:21:17,620 --> 00:21:22,330 isang command line tool na marahil ginamit bago - kopya - 437 00:21:22,330 --> 00:21:23,500 ang kopya tool. 438 00:21:23,500 --> 00:21:28,050 Kung nagta-type ka ng CP at pagkatapos ay pumasa ito sa dalawang argumento sa iyong terminal, maaari mong 439 00:21:28,050 --> 00:21:28,980 kopyahin ang isang file. 440 00:21:28,980 --> 00:21:31,220 At iyon ay kung ano ang pagpunta namin na magsulat ngayon. 441 00:21:31,220 --> 00:21:35,830 >> Kaya muli, pagbabasa off ng slide na ito, nais kong mong magsulat ng isang programa na tumatagal 442 00:21:35,830 --> 00:21:38,130 dalawang at lamang dalawang command-line argumento - 443 00:21:38,130 --> 00:21:40,750 isang source file at destination file - 444 00:21:40,750 --> 00:21:44,590 at mga kopya ng mga nilalaman ng pinagmulan maghain sa destination file 445 00:21:44,590 --> 00:21:46,960 isa byte sa isang pagkakataon. 446 00:21:46,960 --> 00:21:48,510 Kaya na ng maraming upang humingi ng. 447 00:21:48,510 --> 00:21:52,200 >> Muli, isang mahusay na diskarte sa ito ay upang hindi pumunta diretso sa C code, ngunit 448 00:21:52,200 --> 00:21:54,280 masira ito down sa ilang mga hakbang. 449 00:21:54,280 --> 00:21:58,400 Una, isipin ang tungkol sa logic - eksaktong ano ako humihiling sa iyo na gawin - 450 00:21:58,400 --> 00:22:00,620 at maunawaan ang lahat ng mga hakbang na ito upang ang problemang ito. 451 00:22:00,620 --> 00:22:04,410 Wala sa C, lamang sa ilang mga pseudocode, o kahit na isang modelo ng kaisipan 452 00:22:04,410 --> 00:22:06,030 ano ang nangyayari sa. 453 00:22:06,030 --> 00:22:10,050 >> Susunod, sa sandaling mayroon kang down na ang pseudocode, malaman kung paano ang pseudocode 454 00:22:10,050 --> 00:22:14,600 mga mapa papunta sa mga tool at mga bagay na hindi namin natutunan upang gamitin sa C. 455 00:22:14,600 --> 00:22:19,070 >> At sa wakas, sa sandaling mayroon ka ng lahat na magkasama, maaari mong code ang problema. 456 00:22:19,070 --> 00:22:23,370 Dalhin 5-10 minuto upang gumana sa problemang ito. 457 00:22:23,370 --> 00:22:25,800 Makikita ko bang ilagay ang mga tagubilin back up sa isang segundo. 458 00:22:25,800 --> 00:22:27,990 At pagkatapos ay kami ay pagpunta sa pumunta sa ibabaw ang pseudocode, at code 459 00:22:27,990 --> 00:22:29,230 ito mabuhay bilang isang grupo. 460 00:22:29,230 --> 00:22:31,640 >> Kung mayroon kang anumang mga tanong habang ikaw ay nagtatrabaho sa ito, huwag mag-atubiling taasan 461 00:22:31,640 --> 00:22:34,260 iyong kamay, at ako ay dumating sa paligid at sagutin ang mga ito. 462 00:22:34,260 --> 00:22:37,020 463 00:22:37,020 --> 00:22:39,330 >> AARAL 7: Maaari ba akong mag-swipe isang piraso ng papel? 464 00:22:39,330 --> 00:22:41,537 >> Jason HIRSCHHORN: Ano ba ang balita? 465 00:22:41,537 --> 00:26:46,047 466 00:26:46,047 --> 00:26:48,043 >> [Pag-type ng tunog] 467 00:26:48,043 --> 00:26:48,730 >> Jason HIRSCHHORN: OK. 468 00:26:48,730 --> 00:26:51,710 Sabihin pumunta sa ibabaw ng pseudocode una, at pagkatapos Bibigyan kita ng ilang higit pa sa iyo 469 00:26:51,710 --> 00:26:52,960 minuto upang matapos sa coding. 470 00:26:52,960 --> 00:26:55,540 471 00:26:55,540 --> 00:26:58,650 >> Sino ang gusto upang simulan akin off sa unang linya ng 472 00:26:58,650 --> 00:27:00,030 pseudocode para sa pag-andar? 473 00:27:00,030 --> 00:27:03,330 474 00:27:03,330 --> 00:27:05,740 >> AARAL 8: Suriin upang matiyak na na kung saan bibigyan ng dalawang mga file. 475 00:27:05,740 --> 00:27:06,990 >> Jason HIRSCHHORN: OK. 476 00:27:06,990 --> 00:27:21,270 477 00:27:21,270 --> 00:27:22,990 At kung hindi kami? 478 00:27:22,990 --> 00:27:25,974 >> AARAL 8: Gusto ko bumalik sa 0. 479 00:27:25,974 --> 00:27:27,872 >> Jason HIRSCHHORN: Dapat ba naming bumalik 0? 480 00:27:27,872 --> 00:27:30,182 >> AARAL 8: Bumalik isang - 481 00:27:30,182 --> 00:27:30,650 blanking. 482 00:27:30,650 --> 00:27:30,850 Sorry. 483 00:27:30,850 --> 00:27:31,210 >> Jason HIRSCHHORN: Oo. 484 00:27:31,210 --> 00:27:32,710 Marahil hindi 0. 485 00:27:32,710 --> 00:27:34,680 Dahil 0 Nangangahulugan ang lahat ng bagay ay mabuti. 486 00:27:34,680 --> 00:27:35,030 OK. 487 00:27:35,030 --> 00:27:36,730 Kaya iyon ang unang linya ng pseudocode. 488 00:27:36,730 --> 00:27:38,715 Sino ang may pangalawang linya ng pseudocode? 489 00:27:38,715 --> 00:27:40,630 >> AARAL 9: Buksan ang parehong mga file? 490 00:27:40,630 --> 00:27:41,880 >> Jason HIRSCHHORN: Buksan ang parehong mga file. 491 00:27:41,880 --> 00:27:49,970 492 00:27:49,970 --> 00:27:50,920 OK? 493 00:27:50,920 --> 00:27:52,850 >> AARAL 10: Suriin upang makita kung ang file ay walang bisa? 494 00:27:52,850 --> 00:28:10,906 495 00:28:10,906 --> 00:28:12,580 >> Jason HIRSCHHORN: Suriin upang sigurado alinma'y hindi ay walang bisa. 496 00:28:12,580 --> 00:28:15,800 Bilang isang-tabi - 497 00:28:15,800 --> 00:28:17,540 iwa 0 - 498 00:28:17,540 --> 00:28:18,887 ay ang null? 499 00:28:18,887 --> 00:28:20,080 >> AARAL 11: Hindi. 500 00:28:20,080 --> 00:28:21,190 >> Jason HIRSCHHORN: Iyan ay hindi null. 501 00:28:21,190 --> 00:28:23,400 Iyon ay tinatawag na null Terminator. 502 00:28:23,400 --> 00:28:25,580 Talaga Ito ay nabaybay nang may lamang ng isang l. 503 00:28:25,580 --> 00:28:28,580 Kaya check ng isang bagay laban sa na - na tunay na isang character na - 504 00:28:28,580 --> 00:28:31,710 kaya check ng isang bagay laban na hindi katulad ng pag-check upang makita kung ito 505 00:28:31,710 --> 00:28:32,690 ay katumbas null. 506 00:28:32,690 --> 00:28:34,100 >> At ang ilang mga tao - 507 00:28:34,100 --> 00:28:36,040 sa kanilang mga pagsusulit at ang kanilang mga problema sets - na nakuha ko ang 508 00:28:36,040 --> 00:28:36,890 dalawa sa mga lito. 509 00:28:36,890 --> 00:28:38,830 Subalit ang dalawa sa mga ito ay sa katunayan naiiba. 510 00:28:38,830 --> 00:28:40,220 Nagtatapos ang isa isang string - 511 00:28:40,220 --> 00:28:43,210 isa ay isang pointer sa 0. 512 00:28:43,210 --> 00:28:46,490 >> AARAL 12: Bakit hindi gusto mong suriin upang tiyakin na ang mga file ay hindi null 513 00:28:46,490 --> 00:28:48,670 bago mo buksan ang mga ito? 514 00:28:48,670 --> 00:28:54,772 >> Jason HIRSCHHORN: Kaya bukas ay nagse-save isang bagay sa file na iyon. 515 00:28:54,772 --> 00:28:57,780 At kung pumunta ka pabalik dito - 516 00:28:57,780 --> 00:28:59,520 kaya ang linyang ito - fopen - 517 00:28:59,520 --> 00:29:05,300 ay magbibigay sa iyo ng isang address at mag-imbak na address sa file kung ito gumagana. 518 00:29:05,300 --> 00:29:07,650 Kung hindi ito gumana, ito mag-iimbak null - 519 00:29:07,650 --> 00:29:08,020 >> AARAL 12: Oh. 520 00:29:08,020 --> 00:29:08,180 OK. 521 00:29:08,180 --> 00:29:08,500 Nakuha mo. 522 00:29:08,500 --> 00:29:09,050 >> Jason HIRSCHHORN: Sa file. 523 00:29:09,050 --> 00:29:11,990 Kaya hindi mo maaaring suriin para sa null bago na iyong binuksan ang mga ito. 524 00:29:11,990 --> 00:29:13,520 Null nangangahulugan ng isang bagay ang hindi gumana nang tama. 525 00:29:13,520 --> 00:29:18,030 526 00:29:18,030 --> 00:29:18,740 OK. 527 00:29:18,740 --> 00:29:22,590 Kaya suriin upang masiguro na wala ay kung? 528 00:29:22,590 --> 00:29:23,200 O kaya naman ay? 529 00:29:23,200 --> 00:29:23,770 Ano ang gagawin namin sa tingin? 530 00:29:23,770 --> 00:29:24,310 Susubukan naming pumunta sa na. 531 00:29:24,310 --> 00:29:24,520 >> AARAL 13: Ay. 532 00:29:24,520 --> 00:29:25,020 >> Jason HIRSCHHORN: Ay? 533 00:29:25,020 --> 00:29:25,930 Wala alinman ay? 534 00:29:25,930 --> 00:29:26,350 >> AARAL 13: Ay. 535 00:29:26,350 --> 00:29:26,390 >> Jason HIRSCHHORN: OK. 536 00:29:26,390 --> 00:29:28,510 Tila namin na magkaroon ng ilang mga pinagkaisahan sa na. 537 00:29:28,510 --> 00:29:30,520 Wala alinman ay walang bisa. 538 00:29:30,520 --> 00:29:32,250 OK, susunod na linya ng pseudocode. 539 00:29:32,250 --> 00:29:33,600 Sino ay hindi pa ibinigay sa akin ng isang line? 540 00:29:33,600 --> 00:29:37,350 541 00:29:37,350 --> 00:29:38,295 Susubukan naming maghintay para sa iyo. 542 00:29:38,295 --> 00:29:39,020 Oo. 543 00:29:39,020 --> 00:29:40,895 >> AARAL 14: Mayroon kang basahin ang mula sa unang file? 544 00:29:40,895 --> 00:29:42,290 >> Jason HIRSCHHORN: OK. 545 00:29:42,290 --> 00:29:46,240 >> AARAL 14: O ginagamit namin fscanf o ang isang bagay tulad na ang unang file? 546 00:29:46,240 --> 00:29:50,650 >> Jason HIRSCHHORN: Kaya gusto naming basahin mula sa unang file at - 547 00:29:50,650 --> 00:29:51,900 ni ilagay na dito mismo ipaalam. 548 00:29:51,900 --> 00:30:00,600 549 00:30:00,600 --> 00:30:01,880 Basahin ang mula sa source file. 550 00:30:01,880 --> 00:30:05,370 At pagkatapos ay, kung ano ang gagawin namin pagkatapos naming basahin mula sa source file? 551 00:30:05,370 --> 00:30:06,620 Ibang tao? 552 00:30:06,620 --> 00:30:09,150 553 00:30:09,150 --> 00:30:12,190 >> AARAL 15: Isulat sa ang destination file? 554 00:30:12,190 --> 00:30:22,080 555 00:30:22,080 --> 00:30:25,620 >> Jason HIRSCHHORN: isulat namin sa ang destination file, at - 556 00:30:25,620 --> 00:30:26,210 OK. 557 00:30:26,210 --> 00:30:30,030 Ano pa ay ang mga nawawalang namin? 558 00:30:30,030 --> 00:30:32,460 Ibang tao na hindi ako bibigyan ng linya ng code pa - ng pseudocode. 559 00:30:32,460 --> 00:30:33,510 Oo. 560 00:30:33,510 --> 00:30:36,540 >> AARAL 16: Siguro maaari mong laging suriin kung mayroong isang bagay na basahin para sa, 561 00:30:36,540 --> 00:30:37,970 tulad ng susunod na linya? 562 00:30:37,970 --> 00:30:39,550 Iyon ay tulad ng sa susunod na linya, makita kung ito ay umiiral na. 563 00:30:39,550 --> 00:30:40,660 >> [Electronic pumugak] 564 00:30:40,660 --> 00:30:41,095 >> Jason HIRSCHHORN: Oops. 565 00:30:41,095 --> 00:30:43,120 Iyan ang aking journaling software. 566 00:30:43,120 --> 00:30:43,580 Oo? 567 00:30:43,580 --> 00:30:44,960 >> AARAL 16: Oo. 568 00:30:44,960 --> 00:30:48,940 >> Jason HIRSCHHORN: Kaya bigyan ito sa akin nang isa pang beses. 569 00:30:48,940 --> 00:30:51,640 >> AARAL 16: Suriin kung mayroong isang susunod pa rin linya mula sa 570 00:30:51,640 --> 00:30:52,920 source file na basahin. 571 00:30:52,920 --> 00:30:53,500 >> Jason HIRSCHHORN: OK. 572 00:30:53,500 --> 00:30:56,060 Kaya kami ay hindi pagbabasa ng mga linya - ay nagbabasa ng bytes dito - 573 00:30:56,060 --> 00:30:57,590 ngunit ikaw ay tama. 574 00:30:57,590 --> 00:31:00,040 Gusto naming basahin at isulat ang hanggang sa wala nang mga bytes. 575 00:31:00,040 --> 00:31:11,430 576 00:31:11,430 --> 00:31:11,735 OK. 577 00:31:11,735 --> 00:31:16,940 At kaya ito ay dapat talagang maging may mga yupi nang kaunti, dahil sila sa ilalim doon. 578 00:31:16,940 --> 00:31:17,470 Mag-right? 579 00:31:17,470 --> 00:31:20,620 Hanggang sa kami ay out sa bytes, kami ay pagpunta sa basahin mula sa source file at sumulat 580 00:31:20,620 --> 00:31:22,160 sa destination file. 581 00:31:22,160 --> 00:31:24,510 >> At pagkatapos ay, kung ano ay ang huling linya ng pseudocode? 582 00:31:24,510 --> 00:31:26,380 May isang tao kung sino ang hindi naibigay sa akin ng isang bagay pa. 583 00:31:26,380 --> 00:31:29,270 584 00:31:29,270 --> 00:31:30,260 >> AARAL 17: Isara ang mga file? 585 00:31:30,260 --> 00:31:31,510 >> Jason HIRSCHHORN: Mismong. 586 00:31:31,510 --> 00:31:36,370 587 00:31:36,370 --> 00:31:37,450 Isara ang mga file. 588 00:31:37,450 --> 00:31:38,400 Kaya mayroong aming pseudocode. 589 00:31:38,400 --> 00:31:41,870 Pupunta ako sa ilagay ang pseudocode sa gedit, at sa loob ng ilang minuto namin 590 00:31:41,870 --> 00:31:44,626 ay ang code na ito nang sama-sama. 591 00:31:44,626 --> 00:33:55,280 592 00:33:55,280 --> 00:33:56,000 >> OK. 593 00:33:56,000 --> 00:33:58,290 Ipaalam sa amin makapagsimula bilang isang grupo. 594 00:33:58,290 --> 00:33:59,940 Nishant, mayroon ko ang aking bagong file. 595 00:33:59,940 --> 00:34:01,130 Lamang iyong binuksan ko ito up. 596 00:34:01,130 --> 00:34:01,880 Walang pamagat na dokumento 1. 597 00:34:01,880 --> 00:34:05,490 Ano ang unang bagay na dapat kong gawin? 598 00:34:05,490 --> 00:34:07,040 >> NISHANT: Isama ang library? 599 00:34:07,040 --> 00:34:08,219 >> Jason HIRSCHHORN: OK. 600 00:34:08,219 --> 00:34:11,070 Ano library? 601 00:34:11,070 --> 00:34:17,570 >> NISHANT: Stdio.h, stdlib.h, naniniwala ako? 602 00:34:17,570 --> 00:34:18,000 >> Jason HIRSCHHORN: OK. 603 00:34:18,000 --> 00:34:21,592 Ano ang stdlib para sa? 604 00:34:21,592 --> 00:34:23,010 >> NISHANT: Nakalimutan ko. 605 00:34:23,010 --> 00:34:23,219 >> Jason HIRSCHHORN: OK. 606 00:34:23,219 --> 00:34:24,179 Kaya isama stdio. 607 00:34:24,179 --> 00:34:28,630 Ano ang dapat kong gawin kahit na bago Sisimulan ko ang coding? 608 00:34:28,630 --> 00:34:29,710 >> NISHANT: Sumulat ng isang header? 609 00:34:29,710 --> 00:34:31,830 >> Jason HIRSCHHORN: Paano ako makakapagsimula ko ito kulay? 610 00:34:31,830 --> 00:34:34,060 >> [INTERPOSING tinig] 611 00:34:34,060 --> 00:34:35,040 >> NISHANT: Paano ako makakakuha mo itong kulay na? 612 00:34:35,040 --> 00:34:38,060 >> Jason HIRSCHHORN: Paano ko kulayan coding? 613 00:34:38,060 --> 00:34:38,570 >> NISHANT: hindi ko alam. 614 00:34:38,570 --> 00:34:38,830 Oh. 615 00:34:38,830 --> 00:34:39,389 I-save. 616 00:34:39,389 --> 00:34:39,929 >> Jason HIRSCHHORN: I-save. 617 00:34:39,929 --> 00:34:40,270 Oo. 618 00:34:40,270 --> 00:34:41,760 Ang dapat kong i-save ito bilang isang. C. 619 00:34:41,760 --> 00:34:46,239 Kaya i-save ito sa desktop bilang cp.c. 620 00:34:46,239 --> 00:34:47,280 Sweet. 621 00:34:47,280 --> 00:34:51,199 At kung gusto ko upang makakuha ng ganap na estilo point, kung ano ang dapat kong 622 00:34:51,199 --> 00:34:53,085 Kasama sa tuktok? 623 00:34:53,085 --> 00:34:58,390 >> NISHANT: Maaari mong isulat ang iyong pangalan, pangalan ng programa, at ang layunin 624 00:34:58,390 --> 00:34:59,640 ng programa pati na rin? 625 00:34:59,640 --> 00:35:08,400 626 00:35:08,400 --> 00:35:10,040 >> Jason HIRSCHHORN: Mukhang magandang. 627 00:35:10,040 --> 00:35:10,470 Magaling. 628 00:35:10,470 --> 00:35:12,940 Kaya sinimulan mo sa amin off ang perpektong. 629 00:35:12,940 --> 00:35:13,720 # Include - 630 00:35:13,720 --> 00:35:15,365 gagamitin din namin isulat - 631 00:35:15,365 --> 00:35:30,050 632 00:35:30,050 --> 00:35:30,870 OK. 633 00:35:30,870 --> 00:35:33,520 Kaya tingin ko ang lahat ng ako nakatakda sa pumunta. 634 00:35:33,520 --> 00:35:38,003 Sino ang may unang linya ng code para sa akin - o ang unang linya ng code na 635 00:35:38,003 --> 00:35:41,280 aabutin upang masiyahan ang aming mga unang magkomento sa pseudocode? 636 00:35:41,280 --> 00:35:41,985 Ikaw. 637 00:35:41,985 --> 00:35:48,780 >> AARAL 18: hindi kailanman dapat itong maging int argc, at pagkatapos ay pansamantalang trabaho * argv? 638 00:35:48,780 --> 00:35:49,490 >> Jason HIRSCHHORN: Sa tingin ko Ikinalulungkot karapatan sa iyo. 639 00:35:49,490 --> 00:35:56,270 Baguhin ni ito sa int main, bukas paren Hayaan, int argc, kuwit, pansamantalang trabaho * argv? 640 00:35:56,270 --> 00:35:57,150 Tulad ng mga iyon? 641 00:35:57,150 --> 00:35:57,410 >> AARAL 18: bracket. 642 00:35:57,410 --> 00:35:58,260 >> Jason HIRSCHHORN: bracket. 643 00:35:58,260 --> 00:35:59,860 Buksan ang bracket, malapit bracket, malapit magulang. 644 00:35:59,860 --> 00:36:00,240 Perpekto. 645 00:36:00,240 --> 00:36:02,160 Ngayon ay maaari akong kumuha ng mga argumento command-line. 646 00:36:02,160 --> 00:36:02,430 OK. 647 00:36:02,430 --> 00:36:04,250 Tiyakin na kami ay ibinigay na dalawang file. 648 00:36:04,250 --> 00:36:07,905 Maaari mo akong bigyan na rin. 649 00:36:07,905 --> 00:36:09,180 >> AARAL 18: Kung argc - 650 00:36:09,180 --> 00:36:11,060 ang isang ito ay hindi kasing-halaga 3. 651 00:36:11,060 --> 00:36:14,360 >> Jason HIRSCHHORN: Kung bukas paren argc ay hindi katumbas ng 3? 652 00:36:14,360 --> 00:36:16,970 >> AARAL 18: Oo, ikaw ay bumalik 1 o kahit ano. 653 00:36:16,970 --> 00:36:17,460 >> Jason HIRSCHHORN: Paumanhin. 654 00:36:17,460 --> 00:36:19,120 >> AARAL 18: Return 1 o kahit ano. 655 00:36:19,120 --> 00:36:20,270 >> Jason HIRSCHHORN: Bumalik 1. 656 00:36:20,270 --> 00:36:22,230 OK? 657 00:36:22,230 --> 00:36:22,970 Mahusay. 658 00:36:22,970 --> 00:36:24,290 Buksan ang parehong mga file. 659 00:36:24,290 --> 00:36:26,160 Sino ang maaaring makatulong sa akin buksan ang parehong mga file? 660 00:36:26,160 --> 00:36:28,125 Sino ay hindi pa naibigay na sa akin code? 661 00:36:28,125 --> 00:36:31,510 662 00:36:31,510 --> 00:36:32,320 Kurt? 663 00:36:32,320 --> 00:36:36,145 >> Kurt: Kaya lahat ng F-ko-L-E star pinagmulan caps. 664 00:36:36,145 --> 00:36:39,390 665 00:36:39,390 --> 00:36:40,920 >> Jason HIRSCHHORN: pupuntahan ko upang kumuha ng vowels. 666 00:36:40,920 --> 00:36:41,570 Iyon ang cool. 667 00:36:41,570 --> 00:36:42,716 Ito ay tulad ng Tumblr. 668 00:36:42,716 --> 00:36:44,610 >> AARAL 18: Kapantay fopen - 669 00:36:44,610 --> 00:36:46,612 >> Jason HIRSCHHORN: Kapantay fopen? 670 00:36:46,612 --> 00:36:49,870 >> AARAL 18: Buksan paren, argv, bukas bracket. 671 00:36:49,870 --> 00:36:50,055 >> Jason HIRSCHHORN: Maghintay. 672 00:36:50,055 --> 00:36:50,240 Sorry. 673 00:36:50,240 --> 00:36:51,050 Buksan paren. 674 00:36:51,050 --> 00:36:51,456 OK. 675 00:36:51,456 --> 00:36:53,080 >> AARAL 18: Oo. 676 00:36:53,080 --> 00:36:55,110 Argv sub 1. 677 00:36:55,110 --> 00:36:55,860 >> Jason HIRSCHHORN: Sub 1? 678 00:36:55,860 --> 00:36:56,140 >> AARAL 18: Oo. 679 00:36:56,140 --> 00:36:58,540 Argv bukas bracket 1 - 680 00:36:58,540 --> 00:36:59,730 Oo. 681 00:36:59,730 --> 00:37:06,470 At pagkatapos kuwit, at pagkatapos ay bukas double quote, r, i-double quote, 682 00:37:06,470 --> 00:37:08,250 malapit paren, tuldok-kuwit. 683 00:37:08,250 --> 00:37:09,450 >> Jason HIRSCHHORN: Sweet. 684 00:37:09,450 --> 00:37:10,950 At kung ano ang tungkol sa iba pang isa? 685 00:37:10,950 --> 00:37:16,030 >> AARAL 18: Bihirang-pareho, ngunit sa halip ay ng S-R-C, gusto mo tumawag ito D-S-T. 686 00:37:16,030 --> 00:37:17,060 >> Jason HIRSCHHORN: Oo! 687 00:37:17,060 --> 00:37:17,772 Gusto ko na. 688 00:37:17,772 --> 00:37:20,010 >> AARAL 18: Tulad ng D-S-T. Oo. 689 00:37:20,010 --> 00:37:23,057 At pagkatapos ay argv, bukas bracket, 2. 690 00:37:23,057 --> 00:37:23,200 Oo. 691 00:37:23,200 --> 00:37:26,720 At pagkatapos ay w sa halip ng r. 692 00:37:26,720 --> 00:37:27,620 Oo. 693 00:37:27,620 --> 00:37:29,630 >> Jason HIRSCHHORN: Mahusay. 694 00:37:29,630 --> 00:37:31,360 Susunod na ilang mga linya. 695 00:37:31,360 --> 00:37:34,040 Gayundin, kung ang sinuman ay may mga bagay na idadagdag sa mga linya na nagawa namin, huwag mag-atubiling 696 00:37:34,040 --> 00:37:35,690 magdagdag ng mga pati na rin. 697 00:37:35,690 --> 00:37:37,520 Suriin upang matiyak alinma'y hindi ay walang bisa. 698 00:37:37,520 --> 00:37:41,450 Sino ang maaaring magbigay sa akin ang code kailangan kong masiyahan na linya ng pseudocode? 699 00:37:41,450 --> 00:37:44,430 700 00:37:44,430 --> 00:37:45,870 Mamamana. 701 00:37:45,870 --> 00:37:58,645 >> Mamamana: Kung SRC ay katumbas Kapantay Null o dst ay katumbas Kapantay 702 00:37:58,645 --> 00:38:04,590 Null, pagkatapos ay bumalik ka - 703 00:38:04,590 --> 00:38:07,130 704 00:38:07,130 --> 00:38:07,976 >> Jason HIRSCHHORN: Ano? 705 00:38:07,976 --> 00:38:08,890 >> Mamamana: Bumalik 2? 706 00:38:08,890 --> 00:38:09,760 >> Jason HIRSCHHORN: Bumalik 2. 707 00:38:09,760 --> 00:38:14,400 Kaya kung bukas paren SRC ay katumbas ng ay katumbas ng null, o - 708 00:38:14,400 --> 00:38:15,590 ano naman na thing's - pipe? 709 00:38:15,590 --> 00:38:16,346 Pipe? 710 00:38:16,346 --> 00:38:17,140 Susubukan naming tumawag ito ng pipe. 711 00:38:17,140 --> 00:38:22,340 Pipe, tubo, dst ay katumbas Kapantay Null, bumalik 2. 712 00:38:22,340 --> 00:38:23,900 OK? 713 00:38:23,900 --> 00:38:26,060 Hanggang sa kami ay out ng mga byte - 714 00:38:26,060 --> 00:38:29,820 uri ng namin nilaktawan sa ibabaw ang hakbang na ito mula sa ang pseudocode bahagi sa pagpunta sa dito. 715 00:38:29,820 --> 00:38:31,970 >> Ngunit hanggang kami ay out ng mga byte - ano ang ginagawa na tunog tulad ng? 716 00:38:31,970 --> 00:38:34,680 Anong uri ng C istraktura - 717 00:38:34,680 --> 00:38:36,160 ngunit hindi ko ginagamit ang salitang kaayusan, dahil kami ay pagpunta sa simulan ang paggamit ng 718 00:38:36,160 --> 00:38:37,350 na sa ibang mga kaso - 719 00:38:37,350 --> 00:38:39,495 ngunit C tool gumagana na tunog tulad ng? 720 00:38:39,495 --> 00:38:39,970 >> AARAL 19: Ang isang loop. 721 00:38:39,970 --> 00:38:40,980 >> Jason HIRSCHHORN: Ang isang loop. 722 00:38:40,980 --> 00:38:43,060 Ikinalulugod tulad ng isang loop. 723 00:38:43,060 --> 00:38:49,670 Kaya kung sino ang maaaring magbigay sa akin ang unang linya ng loop code dito mismo? 724 00:38:49,670 --> 00:38:56,320 725 00:38:56,320 --> 00:39:01,980 Maaari ka ring pumili kung anong uri ng loop na gusto mo, kung bibigyan mo sa akin 726 00:39:01,980 --> 00:39:03,215 ito linya ng code. 727 00:39:03,215 --> 00:39:04,150 May tatlong mga uri. 728 00:39:04,150 --> 00:39:06,530 Makakuha sa iyo upang pumili. 729 00:39:06,530 --> 00:39:08,080 Imumungkahi ko ang isa sa mga iyon. 730 00:39:08,080 --> 00:39:08,410 Avi. 731 00:39:08,410 --> 00:39:09,230 Aling isa ang gusto? 732 00:39:09,230 --> 00:39:09,960 >> AVI: PARA. 733 00:39:09,960 --> 00:39:11,460 >> Jason HIRSCHHORN: PARA. 734 00:39:11,460 --> 00:39:15,180 >> AVI: int i katumbas ng zero. 735 00:39:15,180 --> 00:39:17,360 >> Jason HIRSCHHORN: OK. 736 00:39:17,360 --> 00:39:18,570 >> AVI: Ito bahagi hindi ako sigurado tungkol sa. 737 00:39:18,570 --> 00:39:29,080 Ngunit i Mababa sa laki ng bituin source? 738 00:39:29,080 --> 00:39:31,128 Hindi ako sigurado ng mga iyon. 739 00:39:31,128 --> 00:39:32,580 >> Jason HIRSCHHORN: OK. 740 00:39:32,580 --> 00:39:35,870 >> AVI: Dahil gusto mo na ang laki ng isang file, i-right? 741 00:39:35,870 --> 00:39:41,090 >> Jason HIRSCHHORN: Kaya ito marahil ay hindi bigyan kami ng laki ng mga aktwal na 742 00:39:41,090 --> 00:39:43,010 maghain sa bytes. 743 00:39:43,010 --> 00:39:47,680 Kaya ano pa ang maaari naming gawin? 744 00:39:47,680 --> 00:39:48,810 Ano ang isa pang uri ng loop? 745 00:39:48,810 --> 00:39:50,180 O kaya dapat naming manatili sa PARA loop? 746 00:39:50,180 --> 00:39:55,350 747 00:39:55,350 --> 00:39:57,900 >> AARAL 20: mai-gawin sa iyo ng isang habang loop? 748 00:39:57,900 --> 00:40:01,350 At pagkatapos ay, kung ano ang nais mong gawin ay you'd - 749 00:40:01,350 --> 00:40:03,930 dahil mayroon kaming isang pansamantalang trabaho * para sa file. 750 00:40:03,930 --> 00:40:07,950 Kaya kung patuloy na lang namin incrementing na hanggang sa gusto naming makita ang null character na sa 751 00:40:07,950 --> 00:40:08,500 sa dulo ng ito? 752 00:40:08,500 --> 00:40:11,130 O wala na, ay hindi na kung paano gumagana ang mga file? 753 00:40:11,130 --> 00:40:14,300 >> Jason HIRSCHHORN: Kaya maaari naming panatilihin incrementing ang pansamantalang trabaho * 754 00:40:14,300 --> 00:40:16,340 hanggang sa nakita namin ang null - 755 00:40:16,340 --> 00:40:18,580 >> AARAL 20: Mahalaga panatilihin ang pagpunta ng character sa pamamagitan ng karakter hanggang maabot namin 756 00:40:18,580 --> 00:40:21,250 sa dulo ng file. 757 00:40:21,250 --> 00:40:21,600 >> Jason HIRSCHHORN: Oo. 758 00:40:21,600 --> 00:40:22,560 Kaya na kung ano ang gusto naming gawin. 759 00:40:22,560 --> 00:40:24,545 Gusto naming panatilihin ang pagbabasa, na character sa pamamagitan ng karakter, hanggang sa makuha namin upang 760 00:40:24,545 --> 00:40:25,080 sa dulo ng file. 761 00:40:25,080 --> 00:40:25,375 >> AARAL 20: Oo. 762 00:40:25,375 --> 00:40:25,860 Maghanap ng mga - 763 00:40:25,860 --> 00:40:28,540 kung ano ang dulo o stop sign sa dulo ng isang text file. 764 00:40:28,540 --> 00:40:28,620 >> Jason HIRSCHHORN: OK. 765 00:40:28,620 --> 00:40:30,140 Kaya kapag makuha namin sa dulo ng file - paano ko malalaman namin naabot na namin ang 766 00:40:30,140 --> 00:40:33,200 sa dulo ng isang file? 767 00:40:33,200 --> 00:40:34,710 Kapag ako ay pagtawag - 768 00:40:34,710 --> 00:40:35,910 kaya ni hakbang pabalik ipaalam. 769 00:40:35,910 --> 00:40:37,550 Ano ang isang function? 770 00:40:37,550 --> 00:40:39,360 Sabihin pumunta sa linyang ito dito mismo. 771 00:40:39,360 --> 00:40:40,630 Basahin ang mula sa source file. 772 00:40:40,630 --> 00:40:41,880 Sino ang maaaring magbigay sa akin na linya ng code? 773 00:40:41,880 --> 00:40:45,592 774 00:40:45,592 --> 00:40:47,590 >> AARAL 21: Fscanf? 775 00:40:47,590 --> 00:40:49,110 >> Jason HIRSCHHORN: Fscanf. 776 00:40:49,110 --> 00:40:49,510 OK. 777 00:40:49,510 --> 00:40:52,240 Paano kung gusto kong basahin, napaka partikular, ang isa byte? 778 00:40:52,240 --> 00:40:55,012 779 00:40:55,012 --> 00:40:56,860 >> AARAL 21: Hindi ko alam. 780 00:40:56,860 --> 00:40:57,110 >> Jason HIRSCHHORN: OK. 781 00:40:57,110 --> 00:40:59,380 Kahit na mas simple kaysa fscanf - ano ay isang - 782 00:40:59,380 --> 00:41:01,890 Gusto kong magbasa mula sa isang source file? 783 00:41:01,890 --> 00:41:03,720 Basahin ang mula sa isang source file. 784 00:41:03,720 --> 00:41:04,850 Ano ang isang function - oo. 785 00:41:04,850 --> 00:41:05,380 >> AARAL 22: Ito ay fread? 786 00:41:05,380 --> 00:41:06,070 >> Jason HIRSCHHORN: Fread. 787 00:41:06,070 --> 00:41:07,550 Sa tingin ko ay mananatili sa ipaalam na ang isa para sa ngayon. 788 00:41:07,550 --> 00:41:10,380 789 00:41:10,380 --> 00:41:13,650 Anong uri ng mga argumento ang fread tumagal? 790 00:41:13,650 --> 00:41:17,410 >> AARAL 22: Malamang ang uri ng file, at pagkatapos ng lokasyon sa file? 791 00:41:17,410 --> 00:41:19,550 >> Jason HIRSCHHORN: Ano ang maaari kong isulat dito upang malaman kung anong uri ng argumento 792 00:41:19,550 --> 00:41:20,950 fread tumatagal? 793 00:41:20,950 --> 00:41:23,710 >> Maramihang ESTUDYANTE: Man fread. 794 00:41:23,710 --> 00:41:24,740 >> Jason HIRSCHHORN: Man fread at fwrite. 795 00:41:24,740 --> 00:41:25,980 Mukhang hang out sila nang magkasama. 796 00:41:25,980 --> 00:41:29,589 Kaya fread tumatagal ng kung gaano karaming mga argumento? 797 00:41:29,589 --> 00:41:30,920 >> AARAL 23: Four. 798 00:41:30,920 --> 00:41:32,690 >> Jason HIRSCHHORN: itong tumatagal apat na mga argumento. 799 00:41:32,690 --> 00:41:41,100 Ito ay tumatagal ng isang pointer, isang laki, at na bagay, na kung saan ay kakaiba, at ang ilang mga file. 800 00:41:41,100 --> 00:41:42,000 OK? 801 00:41:42,000 --> 00:41:43,990 Sabihin basahin ang tungkol dito dito mismo. 802 00:41:43,990 --> 00:41:49,370 "Bumabasa ng pagpapaandar fread n memb elemento ng data, ang bawat bytes laki 803 00:41:49,370 --> 00:41:53,840 ang haba, mula sa stream na itinuturo sa pamamagitan ng mag-stream, pag-iimbak ng mga ito sa lokasyon 804 00:41:53,840 --> 00:41:56,170 ibinigay sa pamamagitan ng pointer. " 805 00:41:56,170 --> 00:41:57,960 >> Kaya apat na mga argumento. 806 00:41:57,960 --> 00:42:04,510 Bakit hindi kopyahin ko lang ito, at ilagay ito dito mismo. 807 00:42:04,510 --> 00:42:10,060 808 00:42:10,060 --> 00:42:10,770 OK. 809 00:42:10,770 --> 00:42:13,673 Kaya kung sino ang maaaring magsimula ng pagpuno mga argumento para sa akin? 810 00:42:13,673 --> 00:42:15,840 Avi. 811 00:42:15,840 --> 00:42:17,720 >> AVI: Ilabas ang walang bisa. 812 00:42:17,720 --> 00:42:20,530 Ilagay ang SRC lamang. 813 00:42:20,530 --> 00:42:23,142 Ilabas pointer at ang bituin. 814 00:42:23,142 --> 00:42:26,102 Ilagay ang SRC. 815 00:42:26,102 --> 00:42:27,050 Pagkatapos - 816 00:42:27,050 --> 00:42:28,500 >> Jason HIRSCHHORN: So pupuntahan ko ihinto mo doon, dahil iyan ay hindi tama. 817 00:42:28,500 --> 00:42:32,590 818 00:42:32,590 --> 00:42:34,710 Tama ka sa SRC, ngunit kung saan dapat pumunta SRC? 819 00:42:34,710 --> 00:42:35,960 >> [INTERPOSING tinig] 820 00:42:35,960 --> 00:42:38,976 821 00:42:38,976 --> 00:42:41,610 >> Jason HIRSCHHORN: dapat itong pumunta sa paglipas dito. 822 00:42:41,610 --> 00:42:43,790 Iyan ang SRC - ang aming SRC ay isang uri. 823 00:42:43,790 --> 00:42:44,610 Tignan natin dito Hayaan. 824 00:42:44,610 --> 00:42:49,610 Ito ay humihingi ng isang uri ng FILE *, namin talaga karaniwang makita ang mga ito tulad na. 825 00:42:49,610 --> 00:42:57,630 Kaya ito ay humihingi ng isang argumento ng i-type ang FILE * tinatawag na stream na SRC. 826 00:42:57,630 --> 00:42:58,480 OK? 827 00:42:58,480 --> 00:43:00,410 >> Ano ang sukat ng mga bagay na gawin gusto naming basahin? 828 00:43:00,410 --> 00:43:03,340 Ibinigay ko sa iyo na ito sa paglalarawan problema. 829 00:43:03,340 --> 00:43:04,370 >> AARAL 24: Isa byte sa isang pagkakataon. 830 00:43:04,370 --> 00:43:05,340 >> Jason HIRSCHHORN: Isa byte. 831 00:43:05,340 --> 00:43:08,205 Paano malaki ay isang byte? 832 00:43:08,205 --> 00:43:11,642 Laki nito ay nasa bytes, kaya kung ano Maaari ko bang ilagay doon? 833 00:43:11,642 --> 00:43:12,910 >> AARAL 25: Isa. 834 00:43:12,910 --> 00:43:14,730 >> Jason HIRSCHHORN: Isa. 835 00:43:14,730 --> 00:43:17,020 Mag-right. 836 00:43:17,020 --> 00:43:19,940 Laki nito ay nasa unit byte, kaya 1 ay 1 byte. 837 00:43:19,940 --> 00:43:22,284 Gaano karaming mga nais kong basahin sa isang pagkakataon. 838 00:43:22,284 --> 00:43:23,520 >> AARAL 26: Isa? 839 00:43:23,520 --> 00:43:24,270 >> Jason HIRSCHHORN: Ang isang bagay. 840 00:43:24,270 --> 00:43:28,540 Gusto kong basahin ang isang bagay ng laki 1, isa kagat sa isang pagkakataon. 841 00:43:28,540 --> 00:43:32,110 At kung saan ko ilalagay ito, sa sandaling Nabasa ko ito? 842 00:43:32,110 --> 00:43:35,050 843 00:43:35,050 --> 00:43:36,510 >> AARAL 27: Destination? 844 00:43:36,510 --> 00:43:39,270 >> Jason HIRSCHHORN: Kaya hindi ako maaaring ilagay ito diretso sa patutunguhan. 845 00:43:39,270 --> 00:43:40,800 >> AARAL 28: Ikaw gonna ilagay ito sa isang third pointer? 846 00:43:40,800 --> 00:43:41,780 >> AARAL 27: Upang ang patutunguhan. 847 00:43:41,780 --> 00:43:42,270 >> Jason HIRSCHHORN: OK. 848 00:43:42,270 --> 00:43:42,630 Oo. 849 00:43:42,630 --> 00:43:46,820 >> AARAL 29: Maaari mong magpahayag ng isang bagay sa kumilos bilang mas maaga ng isang pansamantalang imbakan. 850 00:43:46,820 --> 00:43:47,350 >> Jason HIRSCHHORN: OK. 851 00:43:47,350 --> 00:43:50,080 Bigyan mo ako iyon. 852 00:43:50,080 --> 00:43:53,930 >> AARAL 29: Ang isa pang file pointer, siguro? 853 00:43:53,930 --> 00:43:54,220 >> Jason HIRSCHHORN: OK. 854 00:43:54,220 --> 00:43:55,585 Kaya ito ay walang bisa star - 855 00:43:55,585 --> 00:43:57,750 ito ay isang uri ng walang bisa bituin, kaya hindi kailangang maging isang file pointer. 856 00:43:57,750 --> 00:44:02,520 At kung ako sa pagbabasa ng isa byte, kung saan ay magiging isang magandang lugar 857 00:44:02,520 --> 00:44:03,850 mag-imbak ng isa byte? 858 00:44:03,850 --> 00:44:04,660 >> AARAL 29: Ang isang array? 859 00:44:04,660 --> 00:44:05,770 >> Jason HIRSCHHORN: Ang isang array. 860 00:44:05,770 --> 00:44:07,730 OK. 861 00:44:07,730 --> 00:44:14,040 At ano pa ay isang bagay na Sukat ng isa lamang byte? 862 00:44:14,040 --> 00:44:16,980 863 00:44:16,980 --> 00:44:18,060 >> AARAL 30: Ang isang pansamantalang trabaho *? 864 00:44:18,060 --> 00:44:18,530 >> AARAL 29: Oo. 865 00:44:18,530 --> 00:44:19,880 >> Jason HIRSCHHORN: Ang isang pansamantalang trabaho * ay hindi isa byte. 866 00:44:19,880 --> 00:44:20,440 >> AARAL 29: Ang isang pansamantalang trabaho. 867 00:44:20,440 --> 00:44:21,810 >> Jason HIRSCHHORN: Ang isang pansamantalang trabaho ay isa byte. 868 00:44:21,810 --> 00:44:22,920 Mag-right? 869 00:44:22,920 --> 00:44:26,740 Kaya hayaan tawagan ni ito buffer ay isang generic pangalanan na ginagamit para sa mga bagay na ito upang mag-imbak 870 00:44:26,740 --> 00:44:27,910 isang bagay pansamantalang. 871 00:44:27,910 --> 00:44:30,880 Kaya lumikha ako ng buffer. 872 00:44:30,880 --> 00:44:31,150 Mag-right? 873 00:44:31,150 --> 00:44:32,990 Ngunit ito ay tumagal ng isang walang bisa *. 874 00:44:32,990 --> 00:44:38,660 Kaya marahil ay tama ka, na ito ay dapat maging isang buffer ng laki 0. 875 00:44:38,660 --> 00:44:41,070 Kaya nag-iimbak ito ng isa - 876 00:44:41,070 --> 00:44:41,280 karapatan. 877 00:44:41,280 --> 00:44:43,560 >> Dahil sa karapatang ito dito - pansamantalang trabaho nagpapahina ng lakas ay isang karakter, ngunit 878 00:44:43,560 --> 00:44:45,110 ito ay tumatagal ng isang walang bisa * - 879 00:44:45,110 --> 00:44:45,870 isang pointer. 880 00:44:45,870 --> 00:44:50,640 Kaya maaari kong gawin ito at ngayon nagpapahina ng lakas ay isang pointer. 881 00:44:50,640 --> 00:44:53,214 Ano pa ang maaari kong gawin? 882 00:44:53,214 --> 00:44:55,775 >> AARAL 31: Maglagay ng star sa tabi ng pansamantalang trabaho. 883 00:44:55,775 --> 00:44:58,380 >> Jason HIRSCHHORN: magagawa ko nilikha ito pansamantalang trabaho *. 884 00:44:58,380 --> 00:45:00,216 OK. 885 00:45:00,216 --> 00:45:03,131 Ano ang isa pang bagay ay maaaring kong gawin? 886 00:45:03,131 --> 00:45:04,050 O kaya ay pumunta sa isang ito ipaalam. 887 00:45:04,050 --> 00:45:05,740 Pansamantalang trabaho * buffer, kaya kung ano ko ilalagay in dito? 888 00:45:05,740 --> 00:45:08,290 889 00:45:08,290 --> 00:45:09,310 >> AARAL 31: Buffer. 890 00:45:09,310 --> 00:45:10,560 >> Jason HIRSCHHORN: Buffer. 891 00:45:10,560 --> 00:45:12,640 892 00:45:12,640 --> 00:45:14,500 Buffer ay isang pointer sa isang pansamantalang trabaho. 893 00:45:14,500 --> 00:45:19,480 At sa lokasyon na iyon, ipinapadala namin ang paglalagay ng isa byte ng isang bagay na basahin namin ang. 894 00:45:19,480 --> 00:45:19,980 Oo. 895 00:45:19,980 --> 00:45:20,700 Avi. 896 00:45:20,700 --> 00:45:21,230 >> AVI: Tulad ng isang mabilis na tanong. 897 00:45:21,230 --> 00:45:24,440 Gusto mo bang malloc buffer? 898 00:45:24,440 --> 00:45:25,930 >> Jason HIRSCHHORN: Sino ang may kaya sagutin na katanungan? 899 00:45:25,930 --> 00:45:30,210 >> AARAL 32: Well, Ito ang hindi talaga punto sa anumang bagay sa ngayon, kaya - 900 00:45:30,210 --> 00:45:32,610 >> Jason HIRSCHHORN: Ngunit gawin gusto naming malloc ito? 901 00:45:32,610 --> 00:45:35,600 >> AARAL 32: Kung ikaw ay upang gawin ito na paraan, hulaan ko, oo, dahil gusto mo kailangan 902 00:45:35,600 --> 00:45:36,990 ilang mga lugar para dito upang tumuro sa. 903 00:45:36,990 --> 00:45:38,350 >> Jason HIRSCHHORN: Gagawin namin kailangang mag-malloc ito? 904 00:45:38,350 --> 00:45:40,580 >> AARAL 33: Kung naka-pagpunta sa gamitin ito sa labas ng loop. 905 00:45:40,580 --> 00:45:42,524 >> Jason HIRSCHHORN: Sigurado namin ang pagpunta sa gamitin ito sa labas ng loop? 906 00:45:42,524 --> 00:45:44,392 >> AARAL 34: Oo. 907 00:45:44,392 --> 00:45:44,860 >> AARAL 35: Maghintay. 908 00:45:44,860 --> 00:45:46,980 Nais namin na idedeklara ito sa loop upang lampas? 909 00:45:46,980 --> 00:45:50,100 >> Jason HIRSCHHORN: So hulaan ko na mayroon kami ilang palsipikado habang loop dito na kami 910 00:45:50,100 --> 00:45:51,950 sinusubukan upang malaman, na hindi pa kami nakuha sa. 911 00:45:51,950 --> 00:45:54,710 912 00:45:54,710 --> 00:45:56,010 Hindi namin kailangang malloc ito. 913 00:45:56,010 --> 00:45:59,310 Kami ay tumatakbo sa main na itong ibang mapupuntahan lamang na gagamitin sa loob ng loop. 914 00:45:59,310 --> 00:46:00,540 Hindi nito kailangang na umiiral sa labas ito. 915 00:46:00,540 --> 00:46:02,340 >> Kaya maaari itong maging isang lokal na variable. 916 00:46:02,340 --> 00:46:03,925 Mayroon kang isang pointer sa isang lokal na variable. 917 00:46:03,925 --> 00:46:07,984 918 00:46:07,984 --> 00:46:09,590 >> AARAL 36: Ngunit ito ay hindi na tumuturo sa kahit ano. 919 00:46:09,590 --> 00:46:11,540 >> Jason HIRSCHHORN: Hindi, hindi ito nasimulan sa anumang bagay. 920 00:46:11,540 --> 00:46:12,790 Ngunit hindi namin ang pagpunta sa gamitin ito rin. 921 00:46:12,790 --> 00:46:15,300 Kami ay pagpunta sa ilagay ang isang bagay sa ito ang unang pagkakataon na ginagamit namin ito. 922 00:46:15,300 --> 00:46:16,580 Kaya na mukhang OK. 923 00:46:16,580 --> 00:46:17,780 Kaya hindi kami kailangan malloc dito. 924 00:46:17,780 --> 00:46:19,360 At sa tingin ko ito OK lang as is. 925 00:46:19,360 --> 00:46:24,350 926 00:46:24,350 --> 00:46:25,790 OK. 927 00:46:25,790 --> 00:46:27,190 Mayroon kaming mga fread linya. 928 00:46:27,190 --> 00:46:28,490 Gawin ng susunod na linya Hayaan. 929 00:46:28,490 --> 00:46:32,984 >> Kung gusto namin na magsulat sa isang file, kung ano ang isang mahusay na pag-andar upang gamitin upang gawin iyon? 930 00:46:32,984 --> 00:46:33,770 >> AARAL 37: Fwrite? 931 00:46:33,770 --> 00:46:35,140 >> AARAL 38: Fprintf? 932 00:46:35,140 --> 00:46:36,010 >> Jason HIRSCHHORN: Fprintf ay isa. 933 00:46:36,010 --> 00:46:37,260 Ano isa pa? 934 00:46:37,260 --> 00:46:37,680 >> AARAL 39: Fwrite. 935 00:46:37,680 --> 00:46:38,510 >> Jason HIRSCHHORN: Fwrite. 936 00:46:38,510 --> 00:46:41,250 At para sa aming mga layunin, fwrite, na nakita natin dito, ay 937 00:46:41,250 --> 00:46:42,500 marahil ang mas mahusay na pagpipilian. 938 00:46:42,500 --> 00:46:51,970 939 00:46:51,970 --> 00:46:53,950 Tumatagal ng apat na mga argumento pati na rin. 940 00:46:53,950 --> 00:46:57,570 Nishant, maaari mong ibigay sa akin ang mga argumento? 941 00:46:57,570 --> 00:47:00,570 >> NISHANT: pagpunta Ang unang isa ni upang maging lamang buffer. 942 00:47:00,570 --> 00:47:02,210 >> Jason HIRSCHHORN: OK. 943 00:47:02,210 --> 00:47:06,752 >> NISHANT: Ang ikalawang isa ay lamang ng pagpunta sa maging 1. 944 00:47:06,752 --> 00:47:09,510 Ikatlong isa pupuntahan maging 1. 945 00:47:09,510 --> 00:47:11,470 At ang isa pang-apat ay magiging dst. 946 00:47:11,470 --> 00:47:18,010 947 00:47:18,010 --> 00:47:19,550 >> Jason HIRSCHHORN: Mayroon ba kahit sino anumang mga katanungan tungkol sa na linya? 948 00:47:19,550 --> 00:47:28,370 949 00:47:28,370 --> 00:47:29,130 Na mukhang mabuti. 950 00:47:29,130 --> 00:47:29,590 OK. 951 00:47:29,590 --> 00:47:34,250 Kaya ngayon, mukha itong isang bagay na hindi namin Nawawala - ni magsulat talaga, sabihin 952 00:47:34,250 --> 00:47:35,090 ito huling linya. 953 00:47:35,090 --> 00:47:36,300 Isara ang mga file. 954 00:47:36,300 --> 00:47:38,880 Sino ang maaaring tapusin up sa amin pagsulat mga huling dalawang linya? 955 00:47:38,880 --> 00:47:39,120 Oo. 956 00:47:39,120 --> 00:47:39,850 Paumanhin, kung ano ang iyong pangalan? 957 00:47:39,850 --> 00:47:40,580 >> Lucy: Lucy. 958 00:47:40,580 --> 00:47:41,580 >> Jason HIRSCHHORN: Lucy. 959 00:47:41,580 --> 00:47:47,560 >> Lucy: Fclose SRC at pagkatapos ay fclose patutunguhan. 960 00:47:47,560 --> 00:47:52,430 >> Jason HIRSCHHORN: Fclose, bukas paren, SRC, malapit paren, tuldok-kuwit. 961 00:47:52,430 --> 00:47:53,680 At fclose - 962 00:47:53,680 --> 00:47:57,560 963 00:47:57,560 --> 00:47:58,090 oo? 964 00:47:58,090 --> 00:48:01,710 >> Lucy: Buksan ang panaklong, dst at pagkatapos ay tuldok-kuwit. 965 00:48:01,710 --> 00:48:02,520 >> Jason HIRSCHHORN: Mahusay. 966 00:48:02,520 --> 00:48:04,338 At kung ano ang dapat kong isama sa dulo? 967 00:48:04,338 --> 00:48:05,210 >> Lucy: Bumalik 0. 968 00:48:05,210 --> 00:48:05,570 >> Jason HIRSCHHORN: Bumalik 0. 969 00:48:05,570 --> 00:48:06,820 Huwag mag ako? 970 00:48:06,820 --> 00:48:10,560 971 00:48:10,560 --> 00:48:12,590 Lamang ng isang katanungan. 972 00:48:12,590 --> 00:48:14,957 Huwag mayroon kaming upang isama ang return 0? 973 00:48:14,957 --> 00:48:16,240 >> Maramihang ESTUDYANTE: Hindi. 974 00:48:16,240 --> 00:48:16,430 >> Jason HIRSCHHORN: Hindi. 975 00:48:16,430 --> 00:48:18,090 Main awtomatikong ginagawa nito kung ikaw ay makakuha sa dulo. 976 00:48:18,090 --> 00:48:20,580 Ngunit tingin ko ito ay mabait sa isama ito tahasang. 977 00:48:20,580 --> 00:48:23,860 Lalo na kapag kami ay bumabalik iba pang bagay sa buong programa. 978 00:48:23,860 --> 00:48:24,810 OK. 979 00:48:24,810 --> 00:48:26,230 Ito ay kung ano ang nawawala namin - 980 00:48:26,230 --> 00:48:28,520 Habang ano? 981 00:48:28,520 --> 00:48:31,630 Sino ang maaaring sa tingin ng ilang - 982 00:48:31,630 --> 00:48:35,240 ay may ilang mga kahulugan ng kung ano ang bagay maaaring pumunta doon? 983 00:48:35,240 --> 00:48:37,350 Kahit na ito ay para lamang sa ilang mga pseudocode tulad ng wika? 984 00:48:37,350 --> 00:48:41,330 >> Ano ang mga namin talaga - ano nais namin upang pumunta hanggang? 985 00:48:41,330 --> 00:48:41,980 Oo, Lucy. 986 00:48:41,980 --> 00:48:43,240 >> Lucy: Ang pagtatapos ng file. 987 00:48:43,240 --> 00:48:44,990 >> Jason HIRSCHHORN: Ang pagtatapos ng file. 988 00:48:44,990 --> 00:48:49,280 Kaya kung ano ang ibig mong sabihin sa pamamagitan ng pagtatapos ng file? 989 00:48:49,280 --> 00:48:50,955 >> Lucy: Kapag naabot mo ang dulo ng file, ihinto. 990 00:48:50,955 --> 00:48:51,240 >> Jason HIRSCHHORN: OK. 991 00:48:51,240 --> 00:48:53,460 Kaya sa sandaling maabot namin ang dulo ng file. 992 00:48:53,460 --> 00:48:56,893 Paano ko malalaman namin kapag naabot na namin ang sa dulo ng file? 993 00:48:56,893 --> 00:48:59,900 >> AARAL 40: Sa tingin ko ang buffer ay itatakda sa null. 994 00:48:59,900 --> 00:49:01,885 >> AARAL 41: Buffer ay ipinahayag sa loob ng loop. 995 00:49:01,885 --> 00:49:03,670 >> Jason HIRSCHHORN: So sa tingin mo nagpapahina ng lakas ay itatakda sa null. 996 00:49:03,670 --> 00:49:05,850 Bakit buffer itatakda sa null? 997 00:49:05,850 --> 00:49:10,420 >> AARAL 40: Dahil kapag nag- fread, na sinusubukan mong ilagay 998 00:49:10,420 --> 00:49:13,528 walang anuman sa buffer. 999 00:49:13,528 --> 00:49:13,980 >> Jason HIRSCHHORN: OK. 1000 00:49:13,980 --> 00:49:15,550 Nag-iisip ka fread - 1001 00:49:15,550 --> 00:49:19,000 kapag naabot na namin ang katapusan ng file, ano ang fread pagpunta sa gawin? 1002 00:49:19,000 --> 00:49:21,230 Sa tingin ko iyon ang pinag-uusapan mayroon kaming upang malaman kung. 1003 00:49:21,230 --> 00:49:21,960 Ano ang fread gawin? 1004 00:49:21,960 --> 00:49:25,640 Ba ilagay ito null sa buffer, o ang ginagawa ng iba pang dahilan? 1005 00:49:25,640 --> 00:49:27,510 Paano malaman namin kung ano ba ito? 1006 00:49:27,510 --> 00:49:28,190 >> AARAL 42: Man. 1007 00:49:28,190 --> 00:49:28,810 >> Jason HIRSCHHORN: Man. 1008 00:49:28,810 --> 00:49:32,280 Kaya tingnan natin sa paglipas dito ipaalam. 1009 00:49:32,280 --> 00:49:34,000 Bumalik halaga. 1010 00:49:34,000 --> 00:49:39,620 Sa tagumpay, fread at fwrite ibalik ang bilang ng mga item basahin o nakasulat. 1011 00:49:39,620 --> 00:49:43,700 Ang numerong ito ay katumbas ng bilang ng mga byte inilipat lamang kapag laki ay 1. 1012 00:49:43,700 --> 00:49:47,780 Kung nangyayari ng error, o sa dulo ng file ay naabot, ang halaga return ay isang 1013 00:49:47,780 --> 00:49:51,490 maikling count item o 0. 1014 00:49:51,490 --> 00:49:57,860 >> Kaya para sa aming mga layunin, kung fread ay umabot sa sa dulo ng file, at bumabasa ng mula sa 1015 00:49:57,860 --> 00:50:02,100 ang pagtatapos ng file, walang iniwan ang magbasa, kung ano ang ito ng pagpunta sa bumalik? 1016 00:50:02,100 --> 00:50:03,290 >> AARAL 43: Zero? 1017 00:50:03,290 --> 00:50:04,540 >> Jason HIRSCHHORN: Ano? 1018 00:50:04,540 --> 00:50:05,300 >> AARAL 43: Zero? 1019 00:50:05,300 --> 00:50:05,690 >> Jason HIRSCHHORN: Zero. 1020 00:50:05,690 --> 00:50:06,940 Ito ay pagpunta upang bumalik sa zero. 1021 00:50:06,940 --> 00:50:09,360 1022 00:50:09,360 --> 00:50:13,010 Kaya alam namin fread na, kapag hindi namin Naabot ang dulo ng file, ay pagpunta 1023 00:50:13,010 --> 00:50:13,690 upang bumalik sa zero. 1024 00:50:13,690 --> 00:50:17,460 Paano namin maaaring gamitin iyon sa aming kalamangan? 1025 00:50:17,460 --> 00:50:21,733 >> AVI: Maaari mong magpahayag ng isang variable sa labas ng loop na tinatawag na tseke. 1026 00:50:21,733 --> 00:50:27,040 Kung katumbas ng check - 1027 00:50:27,040 --> 00:50:28,190 para sa ngayon - isa. 1028 00:50:28,190 --> 00:50:28,920 >> Jason HIRSCHHORN: OK. 1029 00:50:28,920 --> 00:50:38,050 >> AVI: At pagkatapos ay maaari kang maglagay ng isang KUNG pahayag kanan pagkatapos fread sinasabi kung 1030 00:50:38,050 --> 00:50:42,600 fread ay katumbas ng zero - 1031 00:50:42,600 --> 00:50:43,850 hindi. 1032 00:50:43,850 --> 00:50:46,002 1033 00:50:46,002 --> 00:50:47,252 >> Jason HIRSCHHORN: Sino Maaaring makatulong Avi out? 1034 00:50:47,252 --> 00:50:49,690 1035 00:50:49,690 --> 00:50:52,410 >> AVI: Ano ang halaga ibinalik ng fread? 1036 00:50:52,410 --> 00:50:54,060 >> Jason HIRSCHHORN: lang namin nagpunta sa paglipas na iyon. 1037 00:50:54,060 --> 00:50:55,450 >> AVI: Paano ko kakatawanin mo ito? 1038 00:50:55,450 --> 00:50:57,190 >> Jason HIRSCHHORN: Kaya ito ay nagbabalik - sabihin tumingin hanggang dito - ito ay nagbabalik ng 1039 00:50:57,190 --> 00:50:59,340 size_t, na kung saan ay mahalagang isang integer. 1040 00:50:59,340 --> 00:51:02,240 1041 00:51:02,240 --> 00:51:03,410 Kaya nagbalik ito ng isang integer. 1042 00:51:03,410 --> 00:51:05,160 At sa aming kaso, ay ito bumalik 1 o 0 - 1043 00:51:05,160 --> 00:51:08,760 1 kung ito basahin ang isang bagay - isa byte, at 0 kung Naabot na namin ang dulo. 1044 00:51:08,760 --> 00:51:13,560 1045 00:51:13,560 --> 00:51:16,450 Kaya kung fread - 1046 00:51:16,450 --> 00:51:16,855 oo? 1047 00:51:16,855 --> 00:51:20,330 >> AARAL 45: Hindi ma-ilagay mo lamang ang buong fread (buffer, 1, 1, SRC) sa 1048 00:51:20,330 --> 00:51:21,660 habang loop? 1049 00:51:21,660 --> 00:51:26,510 >> Jason HIRSCHHORN: Kaya ipanukala mo ginagawa ito sa doon? 1050 00:51:26,510 --> 00:51:27,600 >> [INTERPOSING tinig] 1051 00:51:27,600 --> 00:51:29,520 >> Jason HIRSCHHORN: Hold on. 1052 00:51:29,520 --> 00:51:30,885 Kaya kami ridding ng iyon. 1053 00:51:30,885 --> 00:51:33,300 Kaya na inyong minumungkahi paglalagay fread sa doon? 1054 00:51:33,300 --> 00:51:35,457 Ano ang dapat ilipat din namin kung nais mo bang gawin iyon? 1055 00:51:35,457 --> 00:51:36,740 >> AARAL 45: Ang buffer sa labas. 1056 00:51:36,740 --> 00:51:38,110 >> Jason HIRSCHHORN: dapat namin ilipat din ito out dito. 1057 00:51:38,110 --> 00:51:41,700 >> AARAL 45: Pero ginagawa na patuloy ilipat ito pasulong? 1058 00:51:41,700 --> 00:51:42,950 >> [INTERPOSING tinig] 1059 00:51:42,950 --> 00:51:46,540 1060 00:51:46,540 --> 00:51:47,470 >> Jason HIRSCHHORN: OK. 1061 00:51:47,470 --> 00:51:50,570 Kaya ito ay kung ano ang ipinanukalang Okshar. 1062 00:51:50,570 --> 00:51:51,930 Lumikha namin ang aming buffer. 1063 00:51:51,930 --> 00:51:57,020 Kami habang fread, pagkatapos ay i-fwrite namin. 1064 00:51:57,020 --> 00:51:59,760 Saloobin sa ito? 1065 00:51:59,760 --> 00:52:04,050 >> AARAL 46: Aking lamang na tanong ay, gagawin ito talaga execute ang command fread? 1066 00:52:04,050 --> 00:52:06,175 >> Jason HIRSCHHORN: Mahusay pinag-uusapan. 1067 00:52:06,175 --> 00:52:11,050 Kapag naglalagay ka ng isang function ng tawag sa loob ng isang kalagayan, ginagawa na 1068 00:52:11,050 --> 00:52:12,300 execute function ng tawag? 1069 00:52:12,300 --> 00:52:15,760 1070 00:52:15,760 --> 00:52:17,770 Nakita namin ang mga halimbawa ng mga ito bago. 1071 00:52:17,770 --> 00:52:24,900 1072 00:52:24,900 --> 00:52:25,660 Mag-right? 1073 00:52:25,660 --> 00:52:26,125 >> AARAL 46: OK. 1074 00:52:26,125 --> 00:52:26,590 Oo. 1075 00:52:26,590 --> 00:52:30,140 Kaya ginagawa nito execute. 1076 00:52:30,140 --> 00:52:31,790 >> Jason HIRSCHHORN: nakita namin ang mga bagay tulad na bago, kung saan mayroon kaming isang 1077 00:52:31,790 --> 00:52:33,550 function na tawag sa loob ng isang kalagayan. 1078 00:52:33,550 --> 00:52:35,540 Isakatuparan ba na pag-andar ng tawag? 1079 00:52:35,540 --> 00:52:36,350 Oo. 1080 00:52:36,350 --> 00:52:37,410 Kaya ang sagot ay oo. 1081 00:52:37,410 --> 00:52:41,010 Ang pagpapaandar na ito tawag ay isakatuparan. 1082 00:52:41,010 --> 00:52:42,418 Ngunit muli, ay ito kung ano ang gusto namin? 1083 00:52:42,418 --> 00:52:49,250 1084 00:52:49,250 --> 00:52:52,204 >> Ano ang isang paraan na maaari kaming maisip out kung ano ang gusto namin? 1085 00:52:52,204 --> 00:52:53,470 >> Maramihang ESTUDYANTE: Patakbuhin ito? 1086 00:52:53,470 --> 00:52:54,460 >> Jason HIRSCHHORN: maaari naming patakbuhin ito. 1087 00:52:54,460 --> 00:52:57,500 Ngunit bago namin gawin iyon, maaari naming Dahilan din sa pamamagitan ng ito. 1088 00:52:57,500 --> 00:52:57,920 Kung - 1089 00:52:57,920 --> 00:53:01,920 sabihin nating mayroon kami ng isa byte sa aming mag-file, susuriin namin dito, 1090 00:53:01,920 --> 00:53:02,660 susuriin namin ang code na ito. 1091 00:53:02,660 --> 00:53:03,620 Ito ay tatakbo. 1092 00:53:03,620 --> 00:53:07,780 fread ay magbabalik isa byte at mag-imbak ito sa buffer. 1093 00:53:07,780 --> 00:53:11,290 At ito ay magtatasa sa 1, kanan, pagkatapos siya ay nagbalik 1. 1094 00:53:11,290 --> 00:53:12,640 >> Kaya habang 1. 1095 00:53:12,640 --> 00:53:15,325 Ang ibig sabihin na ang code sa loob ang habang loop ay execute? 1096 00:53:15,325 --> 00:53:15,453 >> AARAL 47: Oo. 1097 00:53:15,453 --> 00:53:16,040 Ito ay totoo. 1098 00:53:16,040 --> 00:53:16,290 >> Jason HIRSCHHORN: Oo. 1099 00:53:16,290 --> 00:53:17,490 1 ay totoo. 1100 00:53:17,490 --> 00:53:18,240 Ito ay hindi 0. 1101 00:53:18,240 --> 00:53:20,360 Kaya ang code sa loob dito ay isakatuparan. 1102 00:53:20,360 --> 00:53:22,300 Kaya makikita isulat namin iyon. 1103 00:53:22,300 --> 00:53:25,340 Susubukan naming ilipat pabalik sa ito linya sa sandaling muli. 1104 00:53:25,340 --> 00:53:26,850 Ngayon kami ay may - 1105 00:53:26,850 --> 00:53:28,550 Ikinalulungkot namin sa dulo ng aming mga file. 1106 00:53:28,550 --> 00:53:30,980 Basahin namin mula sa dulo ng aming file, dahil lamang nagkaroon kami ng isang byte sa loob nito. 1107 00:53:30,980 --> 00:53:34,270 >> Nagbabalik Fread 0, tindahan isang bagay sa buffer. 1108 00:53:34,270 --> 00:53:35,890 Ko totoo lang ay hindi alam kung ano nag-iimbak ito sa buffer. 1109 00:53:35,890 --> 00:53:38,380 Maaaring marahil Inaasahan naming up upang makita kung ano ang ginagawa nito. 1110 00:53:38,380 --> 00:53:40,130 Iyon ko totoo lang ay hindi alam. 1111 00:53:40,130 --> 00:53:43,090 Hindi namin alam, na pinahahalagahan ng kung ano nag-iimbak ito sa buffer? 1112 00:53:43,090 --> 00:53:44,010 Ngunit ito ay bumalik sa 0. 1113 00:53:44,010 --> 00:53:45,440 At habang ay 0 execute? 1114 00:53:45,440 --> 00:53:49,950 1115 00:53:49,950 --> 00:53:51,180 >> Habang 0 ay hindi maisagawa. 1116 00:53:51,180 --> 00:53:54,030 Kaya pagkatapos ay gagamitin namin ilipat pababa dito. 1117 00:53:54,030 --> 00:53:58,870 Kaya hayaan ang makakuha ng isang palabas ng mga kamay kung ito ay ang code ay dapat namin tatakbo, o kung kami 1118 00:53:58,870 --> 00:54:00,140 dapat unang gawin ang mga pagbabago. 1119 00:54:00,140 --> 00:54:02,180 Kaya kung sa tingin mo - ikaw ay may upang bumoto. 1120 00:54:02,180 --> 00:54:06,885 Kung sa tingin mo ay dapat naming patakbuhin ang code na ito bilang ay, mangyaring taasan ang iyong kamay. 1121 00:54:06,885 --> 00:54:12,440 1122 00:54:12,440 --> 00:54:13,400 >> OK. 1123 00:54:13,400 --> 00:54:14,315 May isang - 1124 00:54:14,315 --> 00:54:17,260 ang mayroon kang isang katanungan, alalahanin? 1125 00:54:17,260 --> 00:54:18,080 Oo. 1126 00:54:18,080 --> 00:54:21,240 >> AARAL 48: Pagkatapos naming ilipat ang buffer sa labas ng loop, ginagawa namin 1127 00:54:21,240 --> 00:54:22,670 kailangang mag-malloc ito? 1128 00:54:22,670 --> 00:54:23,310 >> Jason HIRSCHHORN: Mahusay pinag-uusapan. 1129 00:54:23,310 --> 00:54:26,670 Pagkatapos naming ilipat buffer sa labas ng loop, huwag na mayroon kami sa malloc ito? 1130 00:54:26,670 --> 00:54:28,400 Ito ay isang saklaw tanong. 1131 00:54:28,400 --> 00:54:32,130 Kung initialize namin buffer sa labas ng loop na ito, ito ay umiiral 1132 00:54:32,130 --> 00:54:33,534 sa loob ng loop? 1133 00:54:33,534 --> 00:54:35,230 >> Maramihang ESTUDYANTE: Oo. 1134 00:54:35,230 --> 00:54:35,580 >> Jason HIRSCHHORN: Oo. 1135 00:54:35,580 --> 00:54:40,100 Nito saklaw ay sumasaklaw sa loob ng loop, at, talaga, kahit ano ito sa ibaba sa loob 1136 00:54:40,100 --> 00:54:42,460 ng code na ito, kabilang ang bagay sa loob dito. 1137 00:54:42,460 --> 00:54:43,930 Kaya hindi namin kailangan upang malloc ito. 1138 00:54:43,930 --> 00:54:47,766 Ito ay isang lokal na variable, at saklaw nito Kasama pa rin ang loop. 1139 00:54:47,766 --> 00:54:49,540 >> AARAL 49: Huwag kailangan namin upang palayain ito? 1140 00:54:49,540 --> 00:54:51,770 >> Jason HIRSCHHORN: Gagawin namin kailangan upang libreng buffer? 1141 00:54:51,770 --> 00:54:53,860 >> AARAL 49: Oo, kung hindi namin malloc. 1142 00:54:53,860 --> 00:54:55,750 >> Jason HIRSCHHORN: Gagawin namin kailangan upang libreng buffer? 1143 00:54:55,750 --> 00:54:57,160 Ginagawa namin ang hindi. 1144 00:54:57,160 --> 00:55:01,280 Muli, ito ay isang lokal na variable, kaya hindi namin kailangan upang palayain ito. 1145 00:55:01,280 --> 00:55:02,170 OK. 1146 00:55:02,170 --> 00:55:03,480 Ni makita kung ano ang mangyayari Hayaan. 1147 00:55:03,480 --> 00:55:17,290 1148 00:55:17,290 --> 00:55:18,220 Kaya ito ay uninitialized. 1149 00:55:18,220 --> 00:55:20,830 Iyon ay kung ano ang isang bagay na Marcus mas maaga iminungkahi. 1150 00:55:20,830 --> 00:55:25,340 Kaya mayroon kaming error na, variable buffer ay uninitialized kapag ginamit dito. 1151 00:55:25,340 --> 00:55:26,590 >> Paano namin maaaring ayusin ito? 1152 00:55:26,590 --> 00:55:29,460 1153 00:55:29,460 --> 00:55:30,960 >> AARAL 50: Malloc ito? 1154 00:55:30,960 --> 00:55:31,770 >> AARAL 51: Kapantay null? 1155 00:55:31,770 --> 00:55:33,000 >> AARAL 52: Sabihing buffer ay katumbas null. 1156 00:55:33,000 --> 00:55:34,250 >> Jason HIRSCHHORN: OK. 1157 00:55:34,250 --> 00:55:40,040 1158 00:55:40,040 --> 00:55:40,770 Mukhang magandang. 1159 00:55:40,770 --> 00:55:42,410 Mayroon kaming ito ngayon. 1160 00:55:42,410 --> 00:55:45,630 Lumikha ng isang bagay upang subukang kopyahin Hayaan. 1161 00:55:45,630 --> 00:56:08,990 1162 00:56:08,990 --> 00:56:10,490 Kaya mayroon kaming ang aming mga tekstong file. 1163 00:56:10,490 --> 00:56:11,740 Paano namin maaaring tumakbo sa programang ito? 1164 00:56:11,740 --> 00:56:14,140 1165 00:56:14,140 --> 00:56:15,472 Oo. 1166 00:56:15,472 --> 00:56:22,230 >> AARAL 53: Maaari mong gawin na tuldok iwa CP, test.txt. 1167 00:56:22,230 --> 00:56:25,140 At pagkatapos ay maaari mong pangalanan ang isa pang file na ito ay mag-imbak sa. 1168 00:56:25,140 --> 00:56:25,510 >> Jason HIRSCHHORN: OK. 1169 00:56:25,510 --> 00:56:27,380 Susubukan naming tumawag ito out.txt. 1170 00:56:27,380 --> 00:56:28,630 Cool? 1171 00:56:28,630 --> 00:56:31,700 1172 00:56:31,700 --> 00:56:34,320 Seg fault. 1173 00:56:34,320 --> 00:56:35,570 Saloobin sa seg fault? 1174 00:56:35,570 --> 00:56:40,900 1175 00:56:40,900 --> 00:56:41,390 Ito ay mahusay na. 1176 00:56:41,390 --> 00:56:45,040 Paano malalaman namin kung saan ang seg fault ay? 1177 00:56:45,040 --> 00:56:45,680 Ano? 1178 00:56:45,680 --> 00:56:45,990 >> AARAL 54: Gdb. 1179 00:56:45,990 --> 00:56:47,240 >> Jason HIRSCHHORN: Gdb. 1180 00:56:47,240 --> 00:56:51,400 1181 00:56:51,400 --> 00:56:55,300 Nagpapatakbo kami ng gdb sa pamamagitan ng pagsusulat gdb tuldok slash, ang pangalan ng aming programa. 1182 00:56:55,300 --> 00:56:57,020 Walang mga argumento command line doon. 1183 00:56:57,020 --> 00:56:59,570 Kami ay pagpunta sa magtakda ng isang breakpoint sa pangunahing. 1184 00:56:59,570 --> 00:57:02,190 Kung gusto ko bang magsimula gdb, ano ang gagawin ko? 1185 00:57:02,190 --> 00:57:02,730 >> AARAL 55: R. 1186 00:57:02,730 --> 00:57:08,910 >> Jason HIRSCHHORN: R. At pagkatapos ay kung ano? 1187 00:57:08,910 --> 00:57:09,400 >> AARAL 55: Ang mga argumento? 1188 00:57:09,400 --> 00:57:10,650 >> Jason HIRSCHHORN: Pagkatapos ng command-line na mga argumento. 1189 00:57:10,650 --> 00:57:15,890 1190 00:57:15,890 --> 00:57:17,120 Ni maglakad sa pamamagitan Hayaan. 1191 00:57:17,120 --> 00:57:19,090 N ay lamang pagkuha sa akin linya sa pamamagitan ng linya. 1192 00:57:19,090 --> 00:57:21,450 Pupunta ako sa pumunta hanggang sa Nakukuha ko ang aking seg fault. 1193 00:57:21,450 --> 00:57:22,700 Mayroong aking seg fault. 1194 00:57:22,700 --> 00:57:24,960 1195 00:57:24,960 --> 00:57:27,875 Mukhang fread sanhi aking seg fault. 1196 00:57:27,875 --> 00:57:30,570 1197 00:57:30,570 --> 00:57:32,770 Alam ko fread dulot aking seg fault, dahil iyon ay ang 1198 00:57:32,770 --> 00:57:34,950 linya pinaandar lang namin. 1199 00:57:34,950 --> 00:57:36,530 >> At ang tanging bagay na noon ay nangyayari sa linya ng - 1200 00:57:36,530 --> 00:57:37,520 dalawang bagay ay nangyayari. 1201 00:57:37,520 --> 00:57:40,610 Fread ay pagpunta, at pagkatapos kami ay ang paggawa ng ilang habang sinusuri. 1202 00:57:40,610 --> 00:57:44,820 Ako ay handang Taya na ang Habang pagsuri ay hindi na nagiging sanhi ng aking seg fault. 1203 00:57:44,820 --> 00:57:46,950 Malamang, fread noon ay nagiging sanhi ng aking seg fault. 1204 00:57:46,950 --> 00:57:49,260 Tingnan ko rin ang isang bagay dito, memcopy. 1205 00:57:49,260 --> 00:57:50,500 >> Kopya Memory. 1206 00:57:50,500 --> 00:57:53,820 Ikinalulugod tulad ng paglipat mula sa memory sa isang lokasyon papunta sa iba pa. 1207 00:57:53,820 --> 00:57:56,890 Ikinalulugod tulad ng isang bagay na mangyayari sa fread, siguro ilang mga memory 1208 00:57:56,890 --> 00:57:58,910 paglipat mula dito upang dito. 1209 00:57:58,910 --> 00:58:01,740 1210 00:58:01,740 --> 00:58:03,860 Sabihin pumunta sa pamamagitan ng ito muli. 1211 00:58:03,860 --> 00:58:06,900 Paano ako magsisimula ito sa paglipas ng at patakbuhin itong muli? 1212 00:58:06,900 --> 00:58:08,092 Oo. 1213 00:58:08,092 --> 00:58:15,140 >> AARAL 56: Huwag kailangan mong ilagay isang ampersand bago buffer? 1214 00:58:15,140 --> 00:58:17,800 >> Jason HIRSCHHORN: Kaya ampersand bago nagpapahina ng lakas ay magbibigay sa akin ang address ng 1215 00:58:17,800 --> 00:58:22,330 buffer, na isang pansamantalang trabaho *. 1216 00:58:22,330 --> 00:58:25,250 Tumakbo sa pamamagitan ng ito nang isa pang beses Hayaan. 1217 00:58:25,250 --> 00:58:28,248 Paano ko mapapatakbo sa pamamagitan nito nang isa pang beses? 1218 00:58:28,248 --> 00:58:29,210 >> AARAL 57: Maari bang ma-mo lamang type patakbuhin muli? 1219 00:58:29,210 --> 00:58:32,050 >> Jason HIRSCHHORN: i-type lamang sa run muli. 1220 00:58:32,050 --> 00:58:33,415 Kaya kami ay hindi pagpunta sa isakatuparan ang linyang ito. 1221 00:58:33,415 --> 00:58:36,250 1222 00:58:36,250 --> 00:58:39,240 Kaya buffer ay isang null pointer. 1223 00:58:39,240 --> 00:58:40,490 Itama? 1224 00:58:40,490 --> 00:58:45,870 1225 00:58:45,870 --> 00:58:47,060 Ito ay tumuturo sa - sabihin makita. 1226 00:58:47,060 --> 00:58:48,500 Kung mayroon namin ang aming - 1227 00:58:48,500 --> 00:58:50,430 gumuhit ng isang mabilis na larawan ng ito. 1228 00:58:50,430 --> 00:58:53,500 Maaari ba lahat ng tao makita kung Sumulat ako sa ibabaw dito? 1229 00:58:53,500 --> 00:59:02,890 >> Kaya sa mga stack, mayroon kaming isang lokal na variable at ito ay tinatawag na buffer, at 1230 00:59:02,890 --> 00:59:08,230 ito ay isang pointer sa isang pansamantalang trabaho. 1231 00:59:08,230 --> 00:59:10,325 Ano address ay pansamantalang trabaho na ito sa? 1232 00:59:10,325 --> 00:59:12,550 >> AARAL 58: 0x0. 1233 00:59:12,550 --> 00:59:13,400 >> Jason HIRSCHHORN: Mag-right. 1234 00:59:13,400 --> 00:59:14,200 Iyon ay kung ano ito ay. 1235 00:59:14,200 --> 00:59:17,600 Sa dito, sa loob ng buffer, ay naka-imbak 0x0. 1236 00:59:17,600 --> 00:59:20,480 Iyon ay kung ano ang mayroon kami - ang setup na mayroon kami sa ngayon. 1237 00:59:20,480 --> 00:59:27,540 Kaya ang linyang ito, fread, naglalagay ng isang bagay mula sa pinagmulan saan? 1238 00:59:27,540 --> 00:59:30,560 Sa ang kahon na ito o sa kahon na ito? 1239 00:59:30,560 --> 00:59:31,060 Aling mga kahon? 1240 00:59:31,060 --> 00:59:33,290 Kahon o pakanan kahon sa kaliwa? 1241 00:59:33,290 --> 00:59:34,750 Ito kanang kahon. 1242 00:59:34,750 --> 00:59:38,440 >> Ito ay sumusunod sa pointer, at naglalagay ito sa dito. 1243 00:59:38,440 --> 00:59:42,620 Kapag sinubukan namin at pindutin ang memorya sa 0 lokasyon, ano ang gagawin makuha namin? 1244 00:59:42,620 --> 00:59:45,050 Isang segmentation fault. 1245 00:59:45,050 --> 00:59:46,550 Iyan ang error na mayroon kami sa ngayon. 1246 00:59:46,550 --> 00:59:46,970 Oo. 1247 00:59:46,970 --> 00:59:48,410 >> AARAL 59: Hindi Mayroon ka bang upang ilagay star buffer? 1248 00:59:48,410 --> 00:59:49,180 O wala? 1249 00:59:49,180 --> 00:59:50,050 Para sa fread? 1250 00:59:50,050 --> 00:59:51,450 >> Jason HIRSCHHORN: Kaya fread tumatagal ng isang pointer. 1251 00:59:51,450 --> 00:59:54,920 1252 00:59:54,920 --> 00:59:55,900 Kaya ito ay ipinapasa sa buffer. 1253 00:59:55,900 --> 00:59:58,980 At pagkatapos ay magkakaroon ito wag-reference ito sa isang lugar sa loob fread. 1254 00:59:58,980 --> 01:00:00,700 Ngunit muli, nakita namin, ito ay tumatagal ng isang pointer. 1255 01:00:00,700 --> 01:00:02,560 Hindi namin kailangan upang pumasa ito star buffer. 1256 01:00:02,560 --> 01:00:05,350 Iyon ay ang pagpasa ito ang kahit anong dito. 1257 01:00:05,350 --> 01:00:07,980 At na marahil ay magbibigay sa amin ng isang error dahil ipinapadala namin wag-na tumutukoy dito. 1258 01:00:07,980 --> 01:00:08,150 >> Mag-right? 1259 01:00:08,150 --> 01:00:10,690 Kapag wag-reference namin ito pointer, kapag subukan naming i-access ang lokasyon na ito, 1260 01:00:10,690 --> 01:00:13,140 kami ay nakakakuha ng isang error - ang aming segmentation fault. 1261 01:00:13,140 --> 01:00:15,800 Kaya - 1262 01:00:15,800 --> 01:00:16,690 oops. 1263 01:00:16,690 --> 01:00:19,090 Kami ay pagpunta sa itigil ang out sa gdb. 1264 01:00:19,090 --> 01:00:20,160 Ang aming mga linya - 1265 01:00:20,160 --> 01:00:22,990 ang aming problema - ang tama dito sa linyang ito. 1266 01:00:22,990 --> 01:00:26,410 At ito ay isang problema dahil ng linyang ito. 1267 01:00:26,410 --> 01:00:31,780 >> Paano namin maaaring lumikha ng isang kahon na ay naa-access sa fread. 1268 01:00:31,780 --> 01:00:31,980 Mag-right? 1269 01:00:31,980 --> 01:00:35,190 Kailangan namin upang lumikha ng isang kahon na isa byte na malaki, ang laki ng isang pansamantalang trabaho. 1270 01:00:35,190 --> 01:00:38,590 Ngunit kailangan namin na kahon upang ma-access kapag executes ito function. 1271 01:00:38,590 --> 01:00:39,390 Kaya kung saan - 1272 01:00:39,390 --> 01:00:39,640 oo. 1273 01:00:39,640 --> 01:00:40,440 Ang anumang mga ideya? 1274 01:00:40,440 --> 01:00:43,615 >> AARAL 60: itakda lamang ito bilang anumang mga random na character. 1275 01:00:43,615 --> 01:00:49,150 1276 01:00:49,150 --> 01:00:51,640 Gawin lamang pansamantalang trabaho buffer Kapantay ang character. 1277 01:00:51,640 --> 01:00:53,795 At pagkatapos ay, kapag iyong na-buffer doon - 1278 01:00:53,795 --> 01:00:54,110 >> Jason HIRSCHHORN: Maghintay. 1279 01:00:54,110 --> 01:00:55,110 Pansamantalang trabaho buffer? 1280 01:00:55,110 --> 01:00:55,880 Kaya walang star? 1281 01:00:55,880 --> 01:00:56,390 >> AARAL 60: Oo. 1282 01:00:56,390 --> 01:00:58,560 Ilabas ang bituin. 1283 01:00:58,560 --> 01:01:00,690 Kapantay ng random na character. 1284 01:01:00,690 --> 01:01:01,460 >> Jason HIRSCHHORN: OK. 1285 01:01:01,460 --> 01:01:02,420 Kaya ninyo ako ng isa. 1286 01:01:02,420 --> 01:01:03,170 >> AARAL 60: Tulad ng isang o isang bagay. 1287 01:01:03,170 --> 01:01:06,160 At pagkatapos ay kapag mayroon kang buffer doon, gumamit ka ng - 1288 01:01:06,160 --> 01:01:06,420 >> AARAL 61: Bituin? 1289 01:01:06,420 --> 01:01:07,650 Ay naku, ang ampersand. 1290 01:01:07,650 --> 01:01:09,000 >> AARAL 60: Gamitin ang ampersand. 1291 01:01:09,000 --> 01:01:09,470 >> Jason HIRSCHHORN: OK. 1292 01:01:09,470 --> 01:01:11,320 At kung ano ang tungkol sa fwrite? 1293 01:01:11,320 --> 01:01:14,150 >> AARAL 60: Gamitin muli ang ampersand. 1294 01:01:14,150 --> 01:01:14,320 >> Jason HIRSCHHORN: Lahat ng karapatan. 1295 01:01:14,320 --> 01:01:20,970 Kaya ang iyong mga ideya ay, lumikha kami ng isang pansamantalang trabaho at ilagay ang isang bagay sa loob nito, at pagkatapos ay 1296 01:01:20,970 --> 01:01:22,612 sumulat sa na pansamantalang trabaho. 1297 01:01:22,612 --> 01:01:23,760 >> AARAL 60: Oo. 1298 01:01:23,760 --> 01:01:25,916 >> Jason HIRSCHHORN: Ano ang lumalabas ang mga tao sa tingin? 1299 01:01:25,916 --> 01:01:27,770 >> AARAL 62: Ito ay convoluted. 1300 01:01:27,770 --> 01:01:28,460 >> Jason HIRSCHHORN: OK. 1301 01:01:28,460 --> 01:01:29,760 Gumuhit ng ito Hayaan. 1302 01:01:29,760 --> 01:01:35,720 Kaya oras na ito, pupuntahan ko upang gumuhit ito sa pula sa stack dito, at pagkatapos ay namin 1303 01:01:35,720 --> 01:01:36,410 Magkakaroon - 1304 01:01:36,410 --> 01:01:36,822 ooh! 1305 01:01:36,822 --> 01:01:38,060 Sorry. 1306 01:01:38,060 --> 01:01:45,930 Kaya oras na ito kami ay may isang bagay na tinatawag na nagpapahina ng lakas, at ito ay sa stack. 1307 01:01:45,930 --> 01:01:48,430 Itama? 1308 01:01:48,430 --> 01:01:51,520 At namin sine-save sa ito ng, sa umpisa. 1309 01:01:51,520 --> 01:01:53,830 >> Pagkatapos ay mayroon namin ang aming tawag sa fread. 1310 01:01:53,830 --> 01:02:01,300 Ano ang ibig fread ay tumatagal ng isang byte mula sa ang aming file at naglalagay ito sa isang lugar. 1311 01:02:01,300 --> 01:02:04,570 Inilalagay nito ang ito sa kung anumang ang bagay ay tumuturo sa. 1312 01:02:04,570 --> 01:02:09,130 Well, bago namin ay may address na ito - 1313 01:02:09,130 --> 01:02:10,250 0x0. 1314 01:02:10,250 --> 01:02:13,349 Ngayon kung ano ang address ko mayroon kaming? 1315 01:02:13,349 --> 01:02:14,650 >> AARAL 63: Anuman address buffer ay. 1316 01:02:14,650 --> 01:02:15,970 >> Jason HIRSCHHORN: Anuman address buffer ay. 1317 01:02:15,970 --> 01:02:22,370 Marahil ito ay pagpunta sa maging ang isang bagay tulad na. 1318 01:02:22,370 --> 01:02:26,950 Marahil pagpunta sa magsimula sa isang b at isang f, at pagkatapos ay mayroon anim na iba pang mga 1319 01:02:26,950 --> 01:02:27,970 hexadecimal digit. 1320 01:02:27,970 --> 01:02:28,480 Hindi ba mahalaga. 1321 01:02:28,480 --> 01:02:29,470 Ang ilang mga address. 1322 01:02:29,470 --> 01:02:31,410 At kami ay pagpasa sa address na iyon in 1323 01:02:31,410 --> 01:02:34,790 >> At kami ay pagpunta sa ilagay ang aming isa byte na bagay sa address na iyon. 1324 01:02:34,790 --> 01:02:38,470 Kaya kami ay pagpunta sa ilagay ang aming isa byte na bagay sa loob dito. 1325 01:02:38,470 --> 01:02:40,800 At pagkatapos ay kami ay pagpunta sa magsulat mula sa kung ano ang kailanman loob dito. 1326 01:02:40,800 --> 01:02:43,425 1327 01:02:43,425 --> 01:02:45,380 Kahit sinong mayroon ba kayong mga katanungan tungkol iyon? 1328 01:02:45,380 --> 01:02:50,990 1329 01:02:50,990 --> 01:02:54,690 Sino sa palagay ang code na ito gagana? 1330 01:02:54,690 --> 01:02:56,020 >> Itaas ang iyong kamay kung sa tingin mo ang code na ito gagana. 1331 01:02:56,020 --> 01:02:57,270 Mayroon kang gumawa ng isang tindig. 1332 01:02:57,270 --> 01:03:00,670 1333 01:03:00,670 --> 01:03:02,500 At sino ang code na ito ay hindi gagana sa palagay? 1334 01:03:02,500 --> 01:03:04,610 Itaas ang iyong kamay. 1335 01:03:04,610 --> 01:03:06,750 Bawat tao iba ay dapat na pagtataas ng kanilang mga kamay. 1336 01:03:06,750 --> 01:03:07,670 OK. 1337 01:03:07,670 --> 01:03:09,390 Michael, kung saan ay nakatayo ka? 1338 01:03:09,390 --> 01:03:10,680 >> Michael: Hindi ko ma-magpasya. 1339 01:03:10,680 --> 01:03:12,070 Uri ng sa gitna. 1340 01:03:12,070 --> 01:03:12,736 >> Jason HIRSCHHORN: Kayo sa gitna. 1341 01:03:12,736 --> 01:03:13,092 Pumili ng isa. 1342 01:03:13,092 --> 01:03:14,400 >> Michael: Kukunin ko ang pananampalataya at sabihin ay ito ay gagana. 1343 01:03:14,400 --> 01:03:14,660 >> Jason HIRSCHHORN: OK. 1344 01:03:14,660 --> 01:03:16,047 Magkakaroon ka ng pananampalataya at sabihin ito gumagana? 1345 01:03:16,047 --> 01:03:26,490 1346 01:03:26,490 --> 01:03:27,020 Ano ang nangyari? 1347 01:03:27,020 --> 01:03:28,270 >> [INTERPOSING tinig] 1348 01:03:28,270 --> 01:03:35,170 1349 01:03:35,170 --> 01:03:35,950 >> Jason HIRSCHHORN: Walang seg fault. 1350 01:03:35,950 --> 01:03:40,320 Paano namin suriin upang makita kung dalawang bagay ay pantay-pantay? 1351 01:03:40,320 --> 01:03:42,060 Dalawang mga file ay pantay-pantay. 1352 01:03:42,060 --> 01:03:43,300 >> AARAL 64: diff. 1353 01:03:43,300 --> 01:03:45,490 >> Jason HIRSCHHORN: diff. 1354 01:03:45,490 --> 01:03:51,630 Diff mga tseke para sa mga pagkakaiba sa pagitan ng dalawang mga file, at kung ito ay nagbabalik 1355 01:03:51,630 --> 01:03:52,890 wala, ang mga ito ay magkapareho. 1356 01:03:52,890 --> 01:03:59,030 At kung buksan namin up, makuha namin ang aming file. 1357 01:03:59,030 --> 01:04:00,490 Kaya na ay ang tamang solusyon. 1358 01:04:00,490 --> 01:04:01,780 Ni lingunin ito nang isa pang beses Hayaan. 1359 01:04:01,780 --> 01:04:04,080 Talaga namin ginawa hindi kahit na kailangan ang pagsisimula ito. 1360 01:04:04,080 --> 01:04:05,520 >> Ito marahil tumingin ng kaunti mas malinis kung hindi mo ilalagay 1361 01:04:05,520 --> 01:04:07,680 isang bagay random sa doon. 1362 01:04:07,680 --> 01:04:13,070 Pagiging punto Ang, kailangan mong lumikha ng ilang espasyo upang i-imbak ang isang bagay mula sa 1363 01:04:13,070 --> 01:04:15,530 fread at gagawa ng isang bagay out sa fwrite. 1364 01:04:15,530 --> 01:04:18,400 At bagay na nagkaroon upang maging alinman sa isang lokal na variable sa stack - mo 1365 01:04:18,400 --> 01:04:19,890 maaaring na-malloc'd ilang espasyo. 1366 01:04:19,890 --> 01:04:23,030 >> Kaya aktwal na maaaring magkaroon kami nakasulat malloc dito, at 1367 01:04:23,030 --> 01:04:25,420 na sana ay nagtrabaho. 1368 01:04:25,420 --> 01:04:28,660 At pagkatapos ay nais namin na-iimbak ng pang lugar sa kimpal aming mga bagay. 1369 01:04:28,660 --> 01:04:31,940 Ngunit ito ay ang tunay, marahil, ang pinaka-eleganteng solusyon. 1370 01:04:31,940 --> 01:04:34,490 Lumikha lamang ng ilang espasyo sa stack para sa mga bagay na ito upang pumunta. 1371 01:04:34,490 --> 01:04:37,690 1372 01:04:37,690 --> 01:04:38,990 >> Gusto ko may dalawang iba pang mga komento. 1373 01:04:38,990 --> 01:04:44,650 Kung ikaw ay gumawa ng pagliko sa ito, at pagkatapos makakuha ng nakapuntos sa ito, ang aking mga komento 1374 01:04:44,650 --> 01:04:47,400 ay magiging tulad ng sumusunod. 1375 01:04:47,400 --> 01:04:54,300 Ang mga 1 meron dito, sa akin, hanapin parang magic numero. 1376 01:04:54,300 --> 01:04:56,860 Ang 1, sa mga tuntunin ng fread, saysay ang. 1377 01:04:56,860 --> 01:04:59,580 Iyan ang bilang ng mga bagay upang basahin o sumulat. 1378 01:04:59,580 --> 01:05:03,740 >> Ngunit ang isang ito dito mismo dapat marahil maging iba pang dahilan. 1379 01:05:03,740 --> 01:05:05,180 Kaya kung ano ay isa solusyon? 1380 01:05:05,180 --> 01:05:06,545 >> AARAL 65: Laki ng byte. 1381 01:05:06,545 --> 01:05:10,100 1382 01:05:10,100 --> 01:05:11,080 >> Jason HIRSCHHORN: Tulad ng mga iyon? 1383 01:05:11,080 --> 01:05:13,130 >> AARAL 65: Laki ng pansamantalang trabaho. 1384 01:05:13,130 --> 01:05:13,820 >> Jason HIRSCHHORN: Laki ng pansamantalang trabaho. 1385 01:05:13,820 --> 01:05:15,290 Oo, byte ay hindi isang uri. 1386 01:05:15,290 --> 01:05:16,320 Kaya laki ng mga gawa pansamantalang trabaho. 1387 01:05:16,320 --> 01:05:30,270 Maaari naming mayroon, sa tuktok ng ang aming code, # natukoy na iyon. 1388 01:05:30,270 --> 01:05:33,410 Tinatawag na isang bagay byte at talaga isang pansamantalang trabaho. 1389 01:05:33,410 --> 01:05:37,675 Talaga, isang mas mahusay na diskarte Maaaring naging ito - 1390 01:05:37,675 --> 01:05:39,391 uint. 1391 01:05:39,391 --> 01:05:40,780 Kahit sino malaman kung ano ang na? 1392 01:05:40,780 --> 01:05:44,388 1393 01:05:44,388 --> 01:05:44,840 >> Sorry. 1394 01:05:44,840 --> 01:05:46,090 Mayroon akong ito paurong. 1395 01:05:46,090 --> 01:05:51,620 1396 01:05:51,620 --> 01:05:52,200 Maghintay, hindi. 1397 01:05:52,200 --> 01:05:53,450 Aling paraan ang mga ito pumunta? 1398 01:05:53,450 --> 01:05:58,071 1399 01:05:58,071 --> 01:05:59,660 Kahit sino malaman kung ano ang na? 1400 01:05:59,660 --> 01:06:00,950 Oo. 1401 01:06:00,950 --> 01:06:05,650 >> AARAL 67: ipagpalagay upang makatulong sa alisunod sa pamantayan sa kabuuan ng sistema ng mga bagay na 1402 01:06:05,650 --> 01:06:08,760 mayroon - tulad ng unsigned integer na mayroong 8 bytes? 1403 01:06:08,760 --> 01:06:11,785 >> Jason HIRSCHHORN: Iyon akmang-akma. 1404 01:06:11,785 --> 01:06:14,310 Sa iba't ibang machine, ang laki ng isang pansamantalang trabaho - 1405 01:06:14,310 --> 01:06:15,180 hindi karaniwan ay isang pansamantalang trabaho. 1406 01:06:15,180 --> 01:06:16,100 Char ay karaniwang isang byte. 1407 01:06:16,100 --> 01:06:19,590 Ngunit sa laki ng iba pang mga uri ng data ay iba't ibang mga laki sa isang 32-bit na machine 1408 01:06:19,590 --> 01:06:21,370 kumpara sa isang 64-bit na machine. 1409 01:06:21,370 --> 01:06:25,180 Isang uint8_t ay laging 8 bits - 1410 01:06:25,180 --> 01:06:27,210 laging isa byte. 1411 01:06:27,210 --> 01:06:29,580 >> At kailangan kong isama na karaniwang int header na file. 1412 01:06:29,580 --> 01:06:35,040 Kaya ngayon, ito sana ay marahil naging ang pinakamahusay na paraan upang isulat ang code na ito. 1413 01:06:35,040 --> 01:06:40,160 1414 01:06:40,160 --> 01:06:41,450 Kaya makakuha ko mapupuksa ang mga magic numero. 1415 01:06:41,450 --> 01:06:44,690 At mayroon din ako ng isang mas lohikal nagta-type para sa buffer. 1416 01:06:44,690 --> 01:06:49,450 Ito ay hindi lamang ng isang pansamantalang trabaho, ito ay isang byte, na kung saan ay kung ano ang inaasahan namin ito upang maging. 1417 01:06:49,450 --> 01:06:53,400 >> At dito, hindi namin talaga naging mas matatag nang kaunti. 1418 01:06:53,400 --> 01:06:55,190 Hindi kami pagtawag ito ng isang pansamantalang trabaho, na - 1419 01:06:55,190 --> 01:06:58,630 siguro, may alam - maaaring maging isang iba't ibang mga laki sa iba't ibang machine. 1420 01:06:58,630 --> 01:07:02,025 Talaga namin sinasabi na ito ay eksaktong isa byte, palaging, kahit na ano. 1421 01:07:02,025 --> 01:07:05,810 At kung tiningnan namin dito, gumawa kami ng CP. 1422 01:07:05,810 --> 01:07:08,340 Uh-oh. 1423 01:07:08,340 --> 01:07:09,590 Ano ang nangyari? 1424 01:07:09,590 --> 01:07:14,470 1425 01:07:14,470 --> 01:07:16,170 >> AARAL 68: Maaaring ilipat. 1426 01:07:16,170 --> 01:07:17,880 >> Jason HIRSCHHORN: Ano? 1427 01:07:17,880 --> 01:07:19,130 >> AARAL 69: ba ito? 1428 01:07:19,130 --> 01:07:21,940 1429 01:07:21,940 --> 01:07:25,080 >> AARAL 70: Ikaw ay hindi tukuyin ito bilang isang uri. 1430 01:07:25,080 --> 01:07:28,684 >> AARAL 71: Ngunit dapat ito ay tinukoy sa standard. 1431 01:07:28,684 --> 01:07:29,934 >> AARAL 72: Ano kaya ang nangyari? 1432 01:07:29,934 --> 01:07:37,660 1433 01:07:37,660 --> 01:07:40,210 >> AARAL 73: Dapat tukuyin ang maging lahat ng cap? 1434 01:07:40,210 --> 01:07:41,370 >> Jason HIRSCHHORN: Kaya ito ay hindi # tukuyin. 1435 01:07:41,370 --> 01:07:45,490 Talaga, sa kasong ito, ako pagpunta sa gamitin typedef. 1436 01:07:45,490 --> 01:07:48,590 Dahil ang aming ginagamit ito bilang isang uri sa isang lokasyon. 1437 01:07:48,590 --> 01:07:51,990 Kaya sa kasong ito, talaga namin nais na typedef tulad namin sa pagpi-print ng isang bagong uri 1438 01:07:51,990 --> 01:07:54,490 byte, at ito ay, mahalagang, ito. 1439 01:07:54,490 --> 01:07:56,590 Ito ay isang bit naiiba kaysa # tukuyin. 1440 01:07:56,590 --> 01:08:02,740 >> At ngayon, ang aming code ay gumagana ganap na ganap. 1441 01:08:02,740 --> 01:08:05,230 Kaya, muli, # tukuyin tumatagal ng isang bagay, Pinapalitan ito sa lahat ng dako 1442 01:08:05,230 --> 01:08:06,780 sa iba pang mga bagay. 1443 01:08:06,780 --> 01:08:07,920 Ito ay isang macro lang - 1444 01:08:07,920 --> 01:08:09,420 shorthand upang mapupuksa ang magic numero. 1445 01:08:09,420 --> 01:08:11,360 Ngunit sa kasong ito, dahil kami gamitin ito bilang isang uri - 1446 01:08:11,360 --> 01:08:12,180 karapatan dito - 1447 01:08:12,180 --> 01:08:19,880 sa pagkakasunud-sunod para sa na upang gumana, kailangan namin sa typedef kahit anong byte ay. 1448 01:08:19,880 --> 01:08:21,840 >> At kami ay pagtukoy ito dito mismo. 1449 01:08:21,840 --> 01:08:24,750 Ito ay hindi isang struct, ito ay aktwal na lamang isang wala pang kontratang integer. 1450 01:08:24,750 --> 01:08:27,680 Ito ay isa byte mahaba. 1451 01:08:27,680 --> 01:08:31,910 Ang code na ito ay makukuha sa online, at dapat mo ang lahat ng mayroon ito ngayon. 1452 01:08:31,910 --> 01:08:33,830 >> Kaya mayroon kaming - 1453 01:08:33,830 --> 01:08:34,250 perpekto - 1454 01:08:34,250 --> 01:08:41,359 13 minuto ang natitira upang pumunta itakda sa paglipas ng problema 5. 1455 01:08:41,359 --> 01:08:44,270 Gusto kong maglakad sa pamamagitan copy.c magkasama, at pagkatapos ay gagamitin namin makipag-usap sa madaling sabi 1456 01:08:44,270 --> 01:08:47,120 tungkol sa iba pang mga bahagi ng problema set. 1457 01:08:47,120 --> 01:08:48,899 Kaya ipaalam sa akin makuha ang copy.c. 1458 01:08:48,899 --> 01:09:03,930 1459 01:09:03,930 --> 01:09:08,810 At ang mga cool na bagay ay, hindi namin talaga na isinulat ng maraming ang code na ito. 1460 01:09:08,810 --> 01:09:11,180 >> Ang code namin na sinulat nang literal lamang ay dumating out sa dito kapag ako ay 1461 01:09:11,180 --> 01:09:13,120 pagsusulat ng mga ito sa aking sarili. 1462 01:09:13,120 --> 01:09:16,990 Ngunit ito ay copy.c, bumubuo ang pundasyon para sa unang dalawang bahagi ng 1463 01:09:16,990 --> 01:09:22,340 ang problema itinakda para sa whodunit.c, na kailangan mo upang sumulat, at resize.c. 1464 01:09:22,340 --> 01:09:27,050 Recover.c, kung saan ay ang ikatlong at huling bahagi ng hanay problema, ay hindi 1465 01:09:27,050 --> 01:09:29,529 batay off ng file na ito. 1466 01:09:29,529 --> 01:09:32,200 >> Ikaw ay pagpunta sa kailangan upang isulat ang file na iyon, bigyan ka namin ng isang template para sa na 1467 01:09:32,200 --> 01:09:34,620 mag-file, ngunit ito ay walang kinalaman ang gagawin sa copy.c. 1468 01:09:34,620 --> 01:09:38,675 Ngunit dahil copy.c ay ang pundasyon para sa ang unang dalawang bahagi, kami ay pagpunta 1469 01:09:38,675 --> 01:09:42,000 upang maglakad sa pamamagitan ito ngayon, sa gayon mayroon kang isang mahusay na pakiramdam kung ano ang ginagawa nito. 1470 01:09:42,000 --> 01:09:43,640 >> At ang mga komento ibigay ang ilan sa mga ito ang layo. 1471 01:09:43,640 --> 01:09:45,120 Na isinulat namin ang ilan sa mga ito. 1472 01:09:45,120 --> 01:09:49,220 Una, ginagawa namin sigurado makakakuha tayo ng tatlong argumento. 1473 01:09:49,220 --> 01:09:50,560 Susunod, kami ay pag-alala sa file name. 1474 01:09:50,560 --> 01:09:52,960 Kaya nilaktawan namin ang hakbang na ito kapag namin ma-code ang aming mga bagay - 1475 01:09:52,960 --> 01:09:54,700 kapag ang aming CP. 1476 01:09:54,700 --> 01:09:56,750 Ngunit dito, ang mga ito ginagawa ito ng kaunti mas malinis. 1477 01:09:56,750 --> 01:09:59,350 >> Sila ay naka-check upang tiyakin ang parehong mga file ang mga magandang, sa 1478 01:09:59,350 --> 01:10:00,450 karagdagan sa pagbubukas ng mga ito. 1479 01:10:00,450 --> 01:10:04,760 Sinulat ni namin ang lahat ng code na ito ngayon lang, kaya ako ay hindi pagpunta sa mangatwiran ang code na ito. 1480 01:10:04,760 --> 01:10:09,670 Susunod ay ang ilang mga bagay-bagay na tiyak para sa ang mga uri ng file na aming ginagamit, na 1481 01:10:09,670 --> 01:10:12,240 ay bitmap file. 1482 01:10:12,240 --> 01:10:15,660 Paghahatid ng mga file kumuha ng metadata nauugnay sa mga ito. 1483 01:10:15,660 --> 01:10:20,190 >> Kaya ang unang ilang mga byte sabihin sa iyo ang tungkol sa ang file. 1484 01:10:20,190 --> 01:10:23,460 Ang mga ito ay hindi ang mga kulay ng ang pixel sa na imahe. 1485 01:10:23,460 --> 01:10:25,120 Sabihin nila sa iyo tungkol sa ang file. 1486 01:10:25,120 --> 01:10:28,220 At kung nabasa mo sa pamamagitan ng hanay problema, magkakaroon ka ng higit pang impormasyon 1487 01:10:28,220 --> 01:10:33,100 sa kung anong uri ng mga istraktura ng metadata Kasama sa bitmaps. 1488 01:10:33,100 --> 01:10:39,350 >> Ngunit iyon ang dahilan kung bakit mayroon muna ito namin set ng - ang code na ito dito mismo. 1489 01:10:39,350 --> 01:10:42,490 Pagbabasa namin ang metadata - 1490 01:10:42,490 --> 01:10:45,800 dalawang piraso ng metadata - ang file header at ang header impormasyon. 1491 01:10:45,800 --> 01:10:51,030 At kami ng pagsuri ay ang ilang mga bahagi ng ito sa tiyakin na ito ay isang tunay na bitmap file 1492 01:10:51,030 --> 01:10:52,420 bago magpatuloy. 1493 01:10:52,420 --> 01:10:55,470 >> At muli, narito ang mga detalye namin hindi na kailangan upang pumunta sa ngayon. 1494 01:10:55,470 --> 01:10:57,720 Kung basahin mo sa pamamagitan ng hanay problema, ay sa iyo na maunawaan ang mga ito. 1495 01:10:57,720 --> 01:11:01,370 Long kuwento maikli, ang mga ito ay nagsasabi lamang, ito ay isang bitmap na file, at 1496 01:11:01,370 --> 01:11:02,810 na nagkukumpirma na. 1497 01:11:02,810 --> 01:11:05,180 >> Susunod, kami ay sumusulat mga sa labas ng file. 1498 01:11:05,180 --> 01:11:05,660 Nakita namin na dito. 1499 01:11:05,660 --> 01:11:06,910 Kami ay sumusulat upang ang out pointer. 1500 01:11:06,910 --> 01:11:09,260 1501 01:11:09,260 --> 01:11:11,320 Susunod, kami ay tinutukoy ang padding. 1502 01:11:11,320 --> 01:11:15,240 Kaya muli, bilang ay partikularidad na may isang bitmap file, may ilang mga linya isama 1503 01:11:15,240 --> 01:11:16,840 padding sa dulo. 1504 01:11:16,840 --> 01:11:19,000 At kung nabasa mo sa pamamagitan ng hanay problema, makikita mo matuto nang higit pa tungkol sa padding. 1505 01:11:19,000 --> 01:11:22,330 Ito ang formula upang mahanap ang padding. 1506 01:11:22,330 --> 01:11:23,610 >> Mahalaga na tandaan - 1507 01:11:23,610 --> 01:11:29,720 kapag binago mo ang laki ng isang bitmap mag-file, ang mga pagbabago padding. 1508 01:11:29,720 --> 01:11:31,970 Kapag binago mo ang laki ng isang mag-file, ang mga pagbabago padding. 1509 01:11:31,970 --> 01:11:34,310 Hindi kailanman Ito ay pagpunta sa maging mas malaki kaysa sa 3 - 1510 01:11:34,310 --> 01:11:36,510 Makikita ito maging sa pamamagitan ng 0 3, inclusive. 1511 01:11:36,510 --> 01:11:38,930 Ngunit kapag binago mo ang laki ng isang bagay, ang mga pagbabago padding. 1512 01:11:38,930 --> 01:11:47,100 >> Kung mayroon akong lamang ng isang pixel sa hilerang iyon, ako kailangan tatlong byte ng padding, dahil 1513 01:11:47,100 --> 01:11:51,190 sa bawat hilera ay dapat na multiple ng apat bytes mahaba sa isang bitmap na file. 1514 01:11:51,190 --> 01:11:56,120 Ngunit kung double ko ito, upang pumunta mula sa isang pixel sa dalawang pixel, ang bawat isa, 1515 01:11:56,120 --> 01:11:59,510 sabihin nating, ay isang byte, pagkatapos kailangan ko dalawang byte ng padding upang gawing 1516 01:11:59,510 --> 01:12:00,970 na katumbas ng apat. 1517 01:12:00,970 --> 01:12:04,200 >> Kaya kapag binago ko ang laki ng isang bagay, Kailangan ko upang baguhin ang halaga 1518 01:12:04,200 --> 01:12:06,551 ng padding Mayroon akong. 1519 01:12:06,551 --> 01:12:08,100 Ba na magkaroon ng kahulugan sa lahat? 1520 01:12:08,100 --> 01:12:12,020 1521 01:12:12,020 --> 01:12:18,720 Susunod, umulit kami sa ibabaw ng bawat hilera, o sa pamamagitan ng lahat ang mga hilera. 1522 01:12:18,720 --> 01:12:21,400 At pagkatapos ay umulit namin sa pamamagitan ng bawat haligi sa bawat hilera. 1523 01:12:21,400 --> 01:12:25,330 Kami ay pagpapagamot ng ito bitmap tulad ng isang grid, tulad ng na-itinuturing namin 1524 01:12:25,330 --> 01:12:26,490 ang board sa 15. 1525 01:12:26,490 --> 01:12:29,200 >> Tulad ng aming ginagamot ang brick kapag kami naka-print ang mga ito sa screen. 1526 01:12:29,200 --> 01:12:31,350 Ang isang grid ng mga hilera at mga hanay. 1527 01:12:31,350 --> 01:12:32,350 Pagkatapos - Nakita namin ito. 1528 01:12:32,350 --> 01:12:33,840 Talaga namin ma-code lang ito. 1529 01:12:33,840 --> 01:12:35,780 Nilikha namin ang ilang pansamantalang imbakan. 1530 01:12:35,780 --> 01:12:38,710 Basahin namin sa doon, at pagkatapos ay isulat namin ito out. 1531 01:12:38,710 --> 01:12:42,680 Ito ay eksakto kung ano ang ginawa namin lamang. 1532 01:12:42,680 --> 01:12:46,760 >> Susunod, dahil sinabi ko bawat linya ay nagtatapos sa ilang mga padding, namin 1533 01:12:46,760 --> 01:12:48,260 laktawan sa ibabaw na padding - 1534 01:12:48,260 --> 01:12:51,000 ang lumang padding. 1535 01:12:51,000 --> 01:12:52,630 At pagkatapos ay idagdag namin ito pabalik. 1536 01:12:52,630 --> 01:12:55,140 Sa kasong ito, kami ay paglikha ang parehong eksaktong file. 1537 01:12:55,140 --> 01:12:56,180 Lang namin kinokopya ito. 1538 01:12:56,180 --> 01:12:57,700 Kaya ang linyang ito ay uri ng ulok. 1539 01:12:57,700 --> 01:12:59,660 Maaari naming literal lamang ilagay ang padding in 1540 01:12:59,660 --> 01:13:04,290 >> Ngunit kung babaguhin mo ang laki ng file, huwag mo pa rin bang ang linyang ito? 1541 01:13:04,290 --> 01:13:08,510 1542 01:13:08,510 --> 01:13:11,560 Kaya kung babaguhin namin ang laki ng file, huwag namin na gusto pa rin upang laktawan 1543 01:13:11,560 --> 01:13:12,810 sa ibabaw ng lumang padding? 1544 01:13:12,810 --> 01:13:15,170 1545 01:13:15,170 --> 01:13:15,970 >> AARAL 74: Oo. 1546 01:13:15,970 --> 01:13:17,090 >> Jason HIRSCHHORN: Kaya ang ginagawa namin. 1547 01:13:17,090 --> 01:13:19,290 Dahil ito, muli, deal may mga source file. 1548 01:13:19,290 --> 01:13:21,570 Hindi namin pakialam tungkol sa padding mula sa source file. 1549 01:13:21,570 --> 01:13:23,410 Gusto naming pumunta sa susunod na linya. 1550 01:13:23,410 --> 01:13:28,850 Ngunit hindi kami maglagay lamang pabalik ang lumang halaga ng padding. 1551 01:13:28,850 --> 01:13:31,540 Kailangan naming ibalik ang bagong halaga ng padding. 1552 01:13:31,540 --> 01:13:35,810 >> Kaya kapag kami Binabago ang laki ng isang file, gusto pa rin namin upang laktawan sa ibabaw ng 1553 01:13:35,810 --> 01:13:38,270 padding sa lumang file - kung ano kami ay pagbabasa sa mula sa. 1554 01:13:38,270 --> 01:13:40,370 Ngunit ano kami ay sumusulat upang, kami ay pagpunta sa kailangan upang ibalik ang ilang iba't ibang 1555 01:13:40,370 --> 01:13:41,890 bilang ng mga padding na Natukoy namin. 1556 01:13:41,890 --> 01:13:42,780 Oo. 1557 01:13:42,780 --> 01:13:44,550 >> AARAL 75: Ang pagkakasunud-sunod ng mga dalawang mga linya ay hindi mahalaga, tama? 1558 01:13:44,550 --> 01:13:46,160 Dahil ka sa paghawak ng mga iba't ibang mga file. 1559 01:13:46,160 --> 01:13:46,620 >> Jason HIRSCHHORN: Mismong. 1560 01:13:46,620 --> 01:13:48,220 Ang pagkakasunud-sunod ng mga dalawang linya ay hindi mahalaga. 1561 01:13:48,220 --> 01:13:49,790 Isulat namin sa linyang ito. 1562 01:13:49,790 --> 01:13:51,430 Ito ay dito para sa file kami ay sumusulat upang. 1563 01:13:51,430 --> 01:13:54,370 Iyan ay mahalaga, kaya makuha namin ang tamang dami ng padding. 1564 01:13:54,370 --> 01:13:57,560 Ito ay haharapin ang mga file sa. 1565 01:13:57,560 --> 01:13:58,560 Gusto naming laktawan karapatan sa ibabaw ng padding. 1566 01:13:58,560 --> 01:13:59,470 >> Hindi namin nais na basahin - 1567 01:13:59,470 --> 01:14:01,500 kung kami ay nagbabasa ng isang byte sa isang pagkakataon, namin huwag na nagmamalasakit sa mga padding bytes. 1568 01:14:01,500 --> 01:14:04,070 Gusto naming lumipat sa susunod na linya. 1569 01:14:04,070 --> 01:14:11,800 Sa wakas tulad ng Lucy nagbigay para sa amin, isara namin ang mga file at ibalik 0. 1570 01:14:11,800 --> 01:14:13,890 Kaya ito ay copy.c. 1571 01:14:13,890 --> 01:14:17,850 At talagang namin na sinulat - namin na ginugol sa karamihan ng seksyon pagsusulat na ito, mahalagang. 1572 01:14:17,850 --> 01:14:18,740 >> Ginawa mo ito. 1573 01:14:18,740 --> 01:14:22,440 Kaya sana ay mayroon kang isang mahusay na pakiramdam ng kung ano ang nangyayari sa dito. 1574 01:14:22,440 --> 01:14:25,890 Ang malaking pagkakaiba, totoo lang, ay lamang ito unang bahagi na deal na may 1575 01:14:25,890 --> 01:14:29,970 peculiarities ng bitmap file. 1576 01:14:29,970 --> 01:14:33,570 Kaya Mayroon akong bilang aking susunod na slide, ano ang kailangan naming gawin? 1577 01:14:33,570 --> 01:14:35,510 Well, sa tingin tungkol sa sinong may kagagawan ipaalam. 1578 01:14:35,510 --> 01:14:38,080 >> At para sa isang tao na basahin sa pamamagitan ng itakda ang problema, ano ang ginagawa namin 1579 01:14:38,080 --> 01:14:41,410 kailangang gawin sa sinong may kagagawan? 1580 01:14:41,410 --> 01:14:42,080 Simpleng. 1581 01:14:42,080 --> 01:14:42,460 Aleja. 1582 01:14:42,460 --> 01:14:48,570 >> ALEJA: Maaari mong gawin ang mga bahagi ng bawat pixel na Tinutukoy ng pula. 1583 01:14:48,570 --> 01:14:49,730 At pagkatapos ay - 1584 01:14:49,730 --> 01:14:50,730 uri ng? 1585 01:14:50,730 --> 01:14:51,860 >> Jason HIRSCHHORN: OK. 1586 01:14:51,860 --> 01:14:54,460 Kaya kumuha ang bahagi ng bawat pixel na Tinutukoy ng pula. 1587 01:14:54,460 --> 01:14:57,234 Iyon ay malapit, ngunit hindi lahat ng mga ito. 1588 01:14:57,234 --> 01:14:59,780 >> AARAL 76: Well, mayroong iba't ibang mga paraan upang magawa ito. 1589 01:14:59,780 --> 01:14:59,870 >> Jason HIRSCHHORN: OK. 1590 01:14:59,870 --> 01:15:03,070 Bigyan ako ng isang paraan. 1591 01:15:03,070 --> 01:15:08,240 >> AARAL 76: Ilabas ang lahat ng pula, at pagkatapos ay bigyan ng diin ang kulay asul at berde. 1592 01:15:08,240 --> 01:15:10,010 >> Jason HIRSCHHORN: OK. 1593 01:15:10,010 --> 01:15:11,830 Kaya ibinigay na parehong mga paraan - 1594 01:15:11,830 --> 01:15:15,210 ito tunog tulad namin ibinigay ito ng pixel, ito May pula, asul, berde at antas. 1595 01:15:15,210 --> 01:15:19,350 Gusto naming baguhin ang mga kamag-anak na antas ng ang pula, asul, berde at, depende 1596 01:15:19,350 --> 01:15:20,740 sa na pixel. 1597 01:15:20,740 --> 01:15:28,380 Saan sa code na ito ay dapat naming baguhin ang kamag-anak pula, asul, berde at 1598 01:15:28,380 --> 01:15:29,720 mga antas ng isang naibigay na pixel. 1599 01:15:29,720 --> 01:15:30,600 Matapos basahin namin ito - 1600 01:15:30,600 --> 01:15:32,520 bago namin isulat ito? 1601 01:15:32,520 --> 01:15:34,564 Bigyan mo ako ng numero ng linya. 1602 01:15:34,564 --> 01:15:35,950 >> Maramihang ESTUDYANTE: 83. 1603 01:15:35,950 --> 01:15:37,320 >> Jason HIRSCHHORN: 83. 1604 01:15:37,320 --> 01:15:38,570 Kaya dito mismo. 1605 01:15:38,570 --> 01:15:40,830 1606 01:15:40,830 --> 01:15:45,710 Para sa sinong may kagagawan, ang code kailangan mong i- pagpapawalang dapat lahat pumunta doon. 1607 01:15:45,710 --> 01:15:47,640 At iyon ang lamang code kailangan mong magsulat. 1608 01:15:47,640 --> 01:15:51,520 Dahil, tulad ng narinig namin, ang kailangan mo upang gawin ay baguhin ang mga kamag-anak bughaw, 1609 01:15:51,520 --> 01:15:54,420 pula, berde at mga antas mula sa bawat pixel. 1610 01:15:54,420 --> 01:15:58,250 >> Nabasa mo na ito sa, at ngayon ikaw pagpunta sa isulat ito. 1611 01:15:58,250 --> 01:16:03,100 Paano ako makakakuha ng - kung mayroon akong bagay na ito tinatawag na triple, dito mismo, at ito ay ng 1612 01:16:03,100 --> 01:16:04,570 type RGBTRIPLE - 1613 01:16:04,570 --> 01:16:08,650 na rin, kapag tiningnan namin sa bmp.h, ano ang RGBTRIPLE? 1614 01:16:08,650 --> 01:16:11,450 1615 01:16:11,450 --> 01:16:12,700 >> AARAL 77: Ito ay isang struct. 1616 01:16:12,700 --> 01:16:17,440 1617 01:16:17,440 --> 01:16:18,900 >> Jason HIRSCHHORN: RGBTRIPLE ay isang struct. 1618 01:16:18,900 --> 01:16:22,330 Nakita namin na kanan pababa dito. 1619 01:16:22,330 --> 01:16:26,600 At kaya kung Nais kong pag-access, sabihin nating, ang pula antas ng struct, paano gagawin ko 1620 01:16:26,600 --> 01:16:30,005 ma-access ang pulang antas ng ito struct? 1621 01:16:30,005 --> 01:16:37,280 >> [Class MURMURS] 1622 01:16:37,280 --> 01:16:38,530 >> AARAL 78: RGBTRIPLE.rgbtred? 1623 01:16:38,530 --> 01:16:47,250 1624 01:16:47,250 --> 01:16:48,856 >> Jason HIRSCHHORN: tama ba iyon? 1625 01:16:48,856 --> 01:16:53,040 >> AARAL 79: Dapat itong maging triple tuldok, sa halip na RGBTRIPLE tuldok? 1626 01:16:53,040 --> 01:16:54,120 >> Jason HIRSCHHORN: Triple. 1627 01:16:54,120 --> 01:16:56,700 Triple ay ang lokal na variable, kaya dito, walang mga payo dito. 1628 01:16:56,700 --> 01:16:58,400 Kaya gamitin na lamang namin ang pagtatanda na tuldok. 1629 01:16:58,400 --> 01:17:00,480 Ito ay magbibigay sa akin ang antas ng pula. 1630 01:17:00,480 --> 01:17:06,180 Kung gusto kong baguhin ito, lamang itinakda ko ito kasing-halaga sa isang bagay na naiiba. 1631 01:17:06,180 --> 01:17:13,190 Kaya muli, ito linya ng code access ito variable sa loob ng struct, at 1632 01:17:13,190 --> 01:17:15,070 maaari naming itakda ito sa isang bagong bagay. 1633 01:17:15,070 --> 01:17:20,040 >> Kaya para sa sinong may kagagawan, muli, ito ay, sa kakanyahan, kung ano ang kailangan naming gawin. 1634 01:17:20,040 --> 01:17:21,170 Napakasimpleng. 1635 01:17:21,170 --> 01:17:25,020 Baguhin lang ang ilang kamag-anak mga antas, at ito ay kung saan napupunta ang code na iyon. 1636 01:17:25,020 --> 01:17:27,720 Baguhin ang laki, sa kabilang banda, ay isang bit trickier. 1637 01:17:27,720 --> 01:17:30,900 Sa katunayan, palitan ang laki ay marahil ang trickiest bahagi ng problema sa set. 1638 01:17:30,900 --> 01:17:32,720 Mayroon kaming tatlong minuto upang pumunta sa paglipas ng ito. 1639 01:17:32,720 --> 01:17:34,910 >> Ngunit muli, na nakasulat na namin ang karamihan ng ang code na ito, kaya kami 1640 01:17:34,910 --> 01:17:36,500 ay dapat na medyo pamilyar. 1641 01:17:36,500 --> 01:17:40,750 Ano ang ilang mga bagay na gusto naming gawin sa baguhin ang laki, kung nabasa mo na sa ibabaw ng 1642 01:17:40,750 --> 01:17:43,470 itakda ang problema? 1643 01:17:43,470 --> 01:17:45,290 Kung magbibigay sa iyo ng mga ito sa akin, namin Maaari makipag-usap tungkol sa mga ito. 1644 01:17:45,290 --> 01:17:47,340 Ano ang ilang mga bagay na gusto naming gawin? 1645 01:17:47,340 --> 01:17:47,970 >> AARAL 80: Patayo - 1646 01:17:47,970 --> 01:17:52,360 kaya wala kayong upang pahalang baguhin ang laki nito, ngunit patayo baguhin ang laki nito pati na rin? 1647 01:17:52,360 --> 01:17:58,475 >> Jason HIRSCHHORN: Kaya kung kami ay bibigyan ng pixel, at gusto naming baguhin ang laki nito sa pamamagitan ng isang 1648 01:17:58,475 --> 01:18:03,460 factor ng dalawa, kailangang ngayon ito upang maging Binabago ang laki ng pahalang at ang sukat 1649 01:18:03,460 --> 01:18:05,220 patayo. 1650 01:18:05,220 --> 01:18:06,640 Ba na magkaroon ng kahulugan? 1651 01:18:06,640 --> 01:18:07,060 Oo. 1652 01:18:07,060 --> 01:18:09,300 Kaya na ay marahil ang pinakamalaking hamon. 1653 01:18:09,300 --> 01:18:10,430 At muli naming makipag-usap tungkol sa na sa isang segundo. 1654 01:18:10,430 --> 01:18:11,065 Oo. 1655 01:18:11,065 --> 01:18:15,270 >> AARAL 81: Ang paraan naisip ko ng ito ay kinakailangan mong i-print ito out - 1656 01:18:15,270 --> 01:18:15,490 >> Jason HIRSCHHORN: Maghintay. 1657 01:18:15,490 --> 01:18:17,580 Huwag sabihin sa amin kung ano ang iyong ginawa. 1658 01:18:17,580 --> 01:18:20,620 Kami ay pagpunta sa makipag-usap sa logic. 1659 01:18:20,620 --> 01:18:21,870 >> AARAL 81: OK. 1660 01:18:21,870 --> 01:18:25,090 1661 01:18:25,090 --> 01:18:27,410 Ano ang tanong? 1662 01:18:27,410 --> 01:18:28,892 >> Jason HIRSCHHORN: Ikaw lamang itinaas ang iyong kamay. 1663 01:18:28,892 --> 01:18:31,600 Walang tanong. 1664 01:18:31,600 --> 01:18:32,520 Hayaan akong ipakita ito. 1665 01:18:32,520 --> 01:18:34,560 Hayaan akong lamang talakayin ito sa madaling sabi. 1666 01:18:34,560 --> 01:18:38,400 Kaya namin ang isa pixel, nais naming ginagaya ito, parehong pahalang at 1667 01:18:38,400 --> 01:18:39,360 patayo. 1668 01:18:39,360 --> 01:18:48,920 Kaya may perpektong ano ang ginagawa namin dito ay, namin basahin sa aming mga pixel, isulat namin ito 1669 01:18:48,920 --> 01:18:51,690 gayunpaman maraming ng beses. 1670 01:18:51,690 --> 01:18:54,720 >> Ngunit pagkatapos ay mayroon kaming ang aming mga kahanga-hangang gawa dito, dahil pagkatapos ay nais naming lumaktaw sa 1671 01:18:54,720 --> 01:18:57,660 susunod na linya at isulat ito sa simula ng susunod na linya. 1672 01:18:57,660 --> 01:19:02,960 Kaya kung gusto naming ginagaya kapwa pahalang at patayo, ano ang 1673 01:19:02,960 --> 01:19:05,050 isa mahusay na paraan upang gawin iyon - 1674 01:19:05,050 --> 01:19:06,780 isa magandang bagaman bang gawin iyon? 1675 01:19:06,780 --> 01:19:11,950 Kaya hindi namin kailangan upang patuloy na humingi ng sa paligid ng aming mga file upang ilagay ang mga bagay. 1676 01:19:11,950 --> 01:19:14,360 >> Tanong na hindi maaaring mayroon ginawa kahulugan, ngunit sa palagay ko isang 1677 01:19:14,360 --> 01:19:15,800 sagutin na ito ay makakatulong sa. 1678 01:19:15,800 --> 01:19:17,210 >> AARAL 82: Lumikha ng isang array? 1679 01:19:17,210 --> 01:19:20,090 >> Jason HIRSCHHORN: Kaya sabihin sa tingin ng bawat file bilang isang hilera. 1680 01:19:20,090 --> 01:19:22,550 Ni sa tingin sa mga tuntunin ng mga hilera Hayaan. 1681 01:19:22,550 --> 01:19:26,670 Kung mayroon namin ang aming mga unang hilera mula sa aming maliit na larawan, maaari kaming magsagawa ng sunud-sunod na 1682 01:19:26,670 --> 01:19:30,640 sa isang malaking hilera mula sa malaking larawan, at pagkatapos ay gumagaya hilera na gayunpaman 1683 01:19:30,640 --> 01:19:34,250 maraming beses na kailangan nito upang ma-Ginagaya, sa halip ng pagpunta pixel sa pamamagitan ng pixel, 1684 01:19:34,250 --> 01:19:37,260 na kung saan ay makakakuha ng nakalilito kapag pagharap sa mga file. 1685 01:19:37,260 --> 01:19:38,730 >> Dahil kung nagkaroon kami - 1686 01:19:38,730 --> 01:19:41,260 Nauubusan na ako ng puwang. 1687 01:19:41,260 --> 01:19:46,490 Kung ito ang aming file, at mayroon kaming na isang pixel doon, at gusto naming ilagay ito 1688 01:19:46,490 --> 01:19:49,840 doon, mayroon pa rin namin ang ilang mga bagay na pangangailangan upang pumunta doon kapag kami ay 1689 01:19:49,840 --> 01:19:51,450 pagsusulat at paglikha ng aming mga bagong file - 1690 01:19:51,450 --> 01:19:53,250 ang aming file na dalawang beses na malaki. 1691 01:19:53,250 --> 01:19:56,820 >> Ngunit ito ay talagang mahirap na may mga pag-andar ng file lumaktaw sa paligid sa mga bagong linya 1692 01:19:56,820 --> 01:20:00,260 tulad na, at pagkatapos ay bumalik dito at ilagay ang mga bagay sa doon. 1693 01:20:00,260 --> 01:20:04,500 Ito ay halos imposible upang gawin ang isang bagay tulad na, kung na saysay. 1694 01:20:04,500 --> 01:20:10,180 Kaya kung sa tingin namin sa mga tuntunin ng mga hilera, na aming makakaya tumagal ang aming mga hilera, at pagkatapos ay ilagay ito - 1695 01:20:10,180 --> 01:20:11,720 ginagaya hilera patayo. 1696 01:20:11,720 --> 01:20:15,860 >> At na kung paano namin haharapin ang mga pagbabago ng laki patayo sa halip na pahalang. 1697 01:20:15,860 --> 01:20:18,810 Iyon ay uri ng mabilis, at medyo nakakalito. 1698 01:20:18,810 --> 01:20:22,375 Sa kasamaang palad ang aming oras ay up. 1699 01:20:22,375 --> 01:20:27,340 Ako ay tumindig sa labas para sa mga ng sa iyo dito na may mga katanungan tungkol sa 1700 01:20:27,340 --> 01:20:30,500 hanay problema, kabilang ang mabawi. 1701 01:20:30,500 --> 01:20:32,320 >> Kaya ni itindig para sa ngayon hayaan. 1702 01:20:32,320 --> 01:20:34,480 At muli, kung mayroon kang anumang mga katanungan, maaari naming makipag-chat sa labas. 1703 01:20:34,480 --> 01:20:38,294