1 00:00:00,000 --> 00:00:06,370 2 00:00:06,370 --> 00:00:08,150 >> Jason HIRSCHHORN: Maligayang Pagdating sa linggo tatlo, sa lahat. 3 00:00:08,150 --> 00:00:11,650 Mayroon kaming abala ngunit kapana-panabik na seksyon na nauna sa atin. 4 00:00:11,650 --> 00:00:17,010 Kaya una, dahil ginawa namin ang ilan usad sa mga kurso ngunit kami pa rin 5 00:00:17,010 --> 00:00:20,570 na may maraming mga pag-aaral ang natitira upang gawin, ako ay pagpunta upang ipakita sa iyo guys ilang mga mapagkukunan 6 00:00:20,570 --> 00:00:24,160 na dapat patunayan upang maging hindi mapaniniwalaan o kapani-paniwala kapaki-pakinabang bilang ikaw lapitan hindi lamang ang iyong mga 7 00:00:24,160 --> 00:00:28,130 Nagtatakda problema, ngunit din digest lahat ng ang materyal bigyan ka namin ng guys sa 8 00:00:28,130 --> 00:00:30,800 aralin at shorts at seksyon. 9 00:00:30,800 --> 00:00:34,790 >> Pagkatapos kami ay pagpunta sa gastusin ang unang 20 sa 25 minuto ng seksyon ng pagpunta sa paglipas ng 10 00:00:34,790 --> 00:00:38,630 GDB, na maaari o hindi maaaring magkaroon ng ginamit sa puntong ito, ngunit ito ay isang 11 00:00:38,630 --> 00:00:42,570 hindi mapaniniwalaan o kapani-paniwala kapaki-pakinabang na tool na habilin makatulong sa iyo na i-debug ang iyong mga program. 12 00:00:42,570 --> 00:00:46,060 Ang isang pulutong ng sa iyo ay maaaring ginamit printf sa gitna ng iyong programa upang malaman 13 00:00:46,060 --> 00:00:47,430 kung ano equaled isang variable. 14 00:00:47,430 --> 00:00:52,060 GDB ay mas mahusay kaysa sa printf at ay hindi magtaas ng iyong code dahil ikaw 15 00:00:52,060 --> 00:00:53,320 patakbuhin ito sa isang executable file. 16 00:00:53,320 --> 00:00:56,500 Kaya ipagpapatuloy namin sa ibabaw ng 10 pinaka-kapaki-pakinabang mga utos na kailangan mo para sa GDB, at kami ay 17 00:00:56,500 --> 00:01:00,540 pagpunta sa pumunta sa isang exercise magkasama kaya sa problema itakda ang tatlo at higit pa, mo 18 00:01:00,540 --> 00:01:03,320 Maaaring gamitin ng GDB upang matulungan ang debug ang iyong mga program. 19 00:01:03,320 --> 00:01:06,420 At sa wakas, kami ay pagpunta sa pumunta sa paglipas ng ilang pag-uuri at paghahanap ng mga algorithm 20 00:01:06,420 --> 00:01:10,590 na nakita mo sa lecture, at kami ay pagpunta sa aktwal na code, hindi lang 21 00:01:10,590 --> 00:01:17,360 pseudocode, ngunit code binary paghahanap, uri ng bubble, at uri pagpili. 22 00:01:17,360 --> 00:01:20,090 >> Kaya una sa lahat, gusto kong pumunta sa ibabaw ng mga mapagkukunan. 23 00:01:20,090 --> 00:01:23,530 Ito ay isang malawak na listahan, at ito ay mas maliit na font dahil nagkaroon ako ng maraming upang 24 00:01:23,530 --> 00:01:24,390 magkasya sa dito. 25 00:01:24,390 --> 00:01:26,950 Ngunit ang mga ito ay makatulong hindi lamang sa iyo, muli, na may mga hanay ng problema at 26 00:01:26,950 --> 00:01:30,760 impormasyon digesting mo natutunan, ngunit Talagang, dumating oras pagsusulit, ang mga ito ay 27 00:01:30,760 --> 00:01:32,130 maging hindi mapaniniwalaan o kapani-paniwala kapaki-pakinabang. 28 00:01:32,130 --> 00:01:34,700 Kaya unang, isinaad ang panayam. 29 00:01:34,700 --> 00:01:39,480 Kung pupunta ka sa cs50.net/lectures at mag-scroll sa mga tukoy na linggo at araw, 30 00:01:39,480 --> 00:01:43,120 makikita mo na may mga tala para sa bawat magbigay ng panayam, na kung saan ay hindi lamang isang 31 00:01:43,120 --> 00:01:47,250 transcript, ngunit isang edit na bersyon ng ano ang saklaw sa lecture na may code 32 00:01:47,250 --> 00:01:49,610 mga snippet at iba pang mga kapaki-pakinabang na kakanin. 33 00:01:49,610 --> 00:01:52,220 Masidhing kong inirerekumendang ng pagpunta sa paglipas ng mga. 34 00:01:52,220 --> 00:01:55,340 At pagkatapos pati na rin, may source code makukuha mula sa bawat panayam. 35 00:01:55,340 --> 00:02:00,050 At muli, ang mga slide ay magkakaroon din maging magagamit online sa cs50.net/sections 36 00:02:00,050 --> 00:02:01,480 ngayong gabi. 37 00:02:01,480 --> 00:02:06,860 >> Kaya pangalawang ay ang mga shorts bawat linggo na mga paksa na takip, karaniwang 5-15 38 00:02:06,860 --> 00:02:08,090 minuto ang haba. 39 00:02:08,090 --> 00:02:12,310 At yaong sana ay magbibigay sa iyo ng isang mahusay na panimulang aklat sa pagbasa sa iba't ibang mga paksa. 40 00:02:12,310 --> 00:02:12,870 Third - 41 00:02:12,870 --> 00:02:16,370 at ito ay bagong-bagong ito taon - ay study.cs50.net. 42 00:02:16,370 --> 00:02:20,110 Kung hindi ka pa naka-check out ito, ako lubos na inirerekomenda na gagawin mo ito. 43 00:02:20,110 --> 00:02:21,100 Makakuha sa iyo upang pumili ng isang paksa. 44 00:02:21,100 --> 00:02:23,040 Mayroon kaming dose-dosenang mga paksa sa doon. 45 00:02:23,040 --> 00:02:24,770 Kaya halimbawa, kinuha mo ang Mga Pag-andar. 46 00:02:24,770 --> 00:02:27,270 Nagbibigay ito sa iyo ng ilang mga slide at mga tala sa mga pag-andar. 47 00:02:27,270 --> 00:02:31,190 Iyon ang aktwal na ang mga slide na TFs ay hinihikayat na gamitin sa panahon ng aming 48 00:02:31,190 --> 00:02:32,710 mga presentasyon sa seksyon. 49 00:02:32,710 --> 00:02:35,040 Mayroong mga tip at trick para sa pagharap rin may mga pag-andar, at mayroong 50 00:02:35,040 --> 00:02:37,290 mga problema na kasanayan na tutulong sa nagtatrabaho ka sa mga pag-andar. 51 00:02:37,290 --> 00:02:41,500 Bigyan din kami sa iyo ng mga link sa mga maikling sa mga pag-andar at ang mga oras na pag-andar 52 00:02:41,500 --> 00:02:42,750 na makabuo sa panayam. 53 00:02:42,750 --> 00:02:46,550 Bagong ito Kaya study.cs50.net, tatak taon, ang isang hindi kapani-paniwala mapagkukunan. 54 00:02:46,550 --> 00:02:52,180 >> Susunod, mayroon akong tao, na kung saan ay manu-manong ang utos na maaari mong patakbuhin sa 55 00:02:52,180 --> 00:02:52,770 linya ng command. 56 00:02:52,770 --> 00:02:57,880 Kaya kung mayroon kang anumang mga katanungan tungkol sa isang utos, halimbawa, ribete, na namin 57 00:02:57,880 --> 00:03:00,900 Nakaranas huling linggo sa panahon ng seksyon at malamang iyong nakaharap sa 58 00:03:00,900 --> 00:03:05,380 itakda ang iyong problema kapag pagpunta sa pamamagitan ng buuin ang code, ngunit kung nagta-type ka ng tao 59 00:03:05,380 --> 00:03:09,980 ribete, makakakuha ka ng mga pahinang iyon ay nagsasabi sa iyo ang lahat ng tungkol sa ribete. 60 00:03:09,980 --> 00:03:14,040 Binibigyan ka Nag ano na aabutin, ang mga parameter na aabutin, pati na rin ang balik 61 00:03:14,040 --> 00:03:16,530 uri at isang maikling paglalarawan ng na function. 62 00:03:16,530 --> 00:03:17,500 >> Kaya tingnan ang ribete. 63 00:03:17,500 --> 00:03:22,270 Maaari itong maging isang maliit na labis sa mga salita at nakakalito, kaya kung minsan mahanap ko na 64 00:03:22,270 --> 00:03:26,150 lang sa Pag-Google kung ano ang nais kong malaman ay ang pinakamahusay na paraan upang mahanap ang kasagutan. 65 00:03:26,150 --> 00:03:27,940 Kaya pagsasanay sa Google. 66 00:03:27,940 --> 00:03:28,600 Kumuha ng magandang sa Google. 67 00:03:28,600 --> 00:03:30,600 Ito ay ang iyong magiging matalik na kaibigan. 68 00:03:30,600 --> 00:03:34,300 >> Pati na rin ang Google, kung hindi ka maaaring mahanap ito sa Google, cs50.net/discuss, ito ay 69 00:03:34,300 --> 00:03:35,550 ang forum ng talakayan. 70 00:03:35,550 --> 00:03:39,390 Malamang kung may tanong ka, isa ng iyong 700 + mga kapantay din itong na 71 00:03:39,390 --> 00:03:42,110 pinag-uusapan at maaaring nagtanong ito nasa talakayin 72 00:03:42,110 --> 00:03:43,540 mga forum at ito sinasagot. 73 00:03:43,540 --> 00:03:48,130 Kaya kung mayroon kang isang karaniwang tanong o may tanong ka na sa tingin mo 74 00:03:48,130 --> 00:03:52,300 siguro iba pang mga tao ay maaaring magkaroon ng, tingnan ang cs50.net/discuss. 75 00:03:52,300 --> 00:03:55,450 >> Sa wakas, ang huling dalawang, kung nais mong makipag-usap sa isang tunay na tao, opisina 76 00:03:55,450 --> 00:03:57,770 oras Lunes hanggang Biyernes. 77 00:03:57,770 --> 00:04:00,850 Mayroong oras online office din para sa mga mag-aaral extension. 78 00:04:00,850 --> 00:04:04,370 At huling ngunit tiyak na hindi bababa sa, sa akin, exclamation point. 79 00:04:04,370 --> 00:04:05,960 Ikaw ang lahat ng mayroon ang aking impormasyon sa pakikipag-ugnay. 80 00:04:05,960 --> 00:04:11,940 Kung kailangan mo ng anumang bagay, mangyaring hindi kailanman mag-atubiling makipag-ugnay sa akin. 81 00:04:11,940 --> 00:04:14,020 Laging mag-atubili na gawin ito. 82 00:04:14,020 --> 00:04:17,490 Napakaluwag ilan sa ikaw ay nagdagdag sa akin sa Gchat, nang sa gayon ay naging disappointing, 83 00:04:17,490 --> 00:04:20,410 ngunit sana ay na kailangan baguhin sa pagitan ng ito at mga susunod na seksyon. 84 00:04:20,410 --> 00:04:22,105 Ang anumang mga katanungan sa ngayon sa mga mapagkukunan? 85 00:04:22,105 --> 00:04:25,670 86 00:04:25,670 --> 00:04:27,450 Mahusay. 87 00:04:27,450 --> 00:04:34,280 >> Sa wakas, isa pang plug para sa feedback, sayat.me/cs50. 88 00:04:34,280 --> 00:04:37,050 Maaari mong ibigay sa akin ang hindi kilalang feedback sa kung paano ako paggawa. 89 00:04:37,050 --> 00:04:38,320 Iyon ay talagang kapaki-pakinabang na noong nakaraang linggo. 90 00:04:38,320 --> 00:04:41,890 Nakakuha ako ng ilang mga komento mula sa iyo guys karapatan pagkatapos seksyon, plus mula sa 91 00:04:41,890 --> 00:04:44,750 iba pang mga mag-aaral na napanood na ito sa panahon ng linggo, at ito 92 00:04:44,750 --> 00:04:46,830 ay hindi mapaniniwalaan o kapani-paniwala kapaki-pakinabang. 93 00:04:46,830 --> 00:04:50,250 Ako ay pagpunta sa subukan at limitahan ang aking paggamit ng ang salitang "matamis," ngunit ipapakita ko sa aking 94 00:04:50,250 --> 00:04:52,410 sigasig at kaguluhan sa ibang mga paraan. 95 00:04:52,410 --> 00:04:56,550 Ngunit mayroong iba pang mga karagdagang pangngalan feedbacks, 96 00:04:56,550 --> 00:04:57,600 parehong mga plus at delta. 97 00:04:57,600 --> 00:05:00,480 Kaya mangyaring, bigyan ako mo guys feedback sa iyong mga hanay ng problema. 98 00:05:00,480 --> 00:05:01,790 Huwag mag-atubiling magbigay sa akin ng feedback sa aking pagtuturo. 99 00:05:01,790 --> 00:05:04,010 Ako dito para sa iyo guys. 100 00:05:04,010 --> 00:05:05,270 >> Mahusay. 101 00:05:05,270 --> 00:05:07,020 Iyon ay ang lahat ng mayroon ako para sa ang unang seksyon. 102 00:05:07,020 --> 00:05:08,565 Kahit sinong mayroon ba anumang mga tanong sa ngayon? 103 00:05:08,565 --> 00:05:12,370 104 00:05:12,370 --> 00:05:14,640 At mayroon akong isang tala para sa ang control center. 105 00:05:14,640 --> 00:05:21,200 Mga mag-aaral ng Extension na messaged sa akin sinasabi na hindi sila nakakakuha ng anumang mga audio, 106 00:05:21,200 --> 00:05:23,870 ngunit iyon ay wala na sa aking kapangyarihan upang ayusin. 107 00:05:23,870 --> 00:05:25,280 Kaya sana, na hindi nakakaabala nalutas sa ilang sandali. 108 00:05:25,280 --> 00:05:28,850 Kung na pinapanood mo sa online, hi, ngunit hindi ka maaaring marinig sa akin. 109 00:05:28,850 --> 00:05:33,860 >> Kaya unang, kami ay pagpunta upang pumunta sa pamamagitan ng GDB. 110 00:05:33,860 --> 00:05:37,100 GDB, bilang hinted ako sa mas maaga, ay isang tool sa pag-debug 111 00:05:37,100 --> 00:05:39,040 magkano ang mas mahusay kaysa sa printf. 112 00:05:39,040 --> 00:05:44,700 Kaya upang makapagsimula sa GDB, mo guys, kung gusto mong buksan up ang iyong appliance 113 00:05:44,700 --> 00:05:49,070 at gawin ang mga file na in-email ako sa iyo mas maaga - ang file na ito ay magkakaroon din maging 114 00:05:49,070 --> 00:05:51,940 magagamit sa online sa isang bit - 115 00:05:51,940 --> 00:05:55,700 at magpatakbo ng GDB. / ang pangalan ng file. 116 00:05:55,700 --> 00:05:58,580 Una, siyempre, kailangan mong mag-compile maghain dahil GDB gumagana lamang sa 117 00:05:58,580 --> 00:05:59,890 mga maipapatupad na file. 118 00:05:59,890 --> 00:06:02,300 >> Ngunit kung gusto mo mang magsimulang GDB, ang unang bagay na ginawa mo, 119 00:06:02,300 --> 00:06:04,550 patakbuhin mo ang GDB. / Caesar. 120 00:06:04,550 --> 00:06:08,340 Kaya iyon ang pangalan ng programa kami pagpunta sa pumunta sa mga ito sa ngayon. 121 00:06:08,340 --> 00:06:12,810 Kaya pupuntahan ko magsulat gumawa Caesar, na ay magbibigay sa akin ng isang executable file 122 00:06:12,810 --> 00:06:14,100 dito-highlight sa berde. 123 00:06:14,100 --> 00:06:19,250 At pagkatapos ay ako pagpunta sa magpatakbo ng GDB. / Cesar. 124 00:06:19,250 --> 00:06:19,810 >> At doon ka pumunta. 125 00:06:19,810 --> 00:06:24,540 Ang makikita mo na mayroon kami ng ilang mga teksto na nagsasabi sa akin tungkol sa mga bersyon ng GDB, na nagbibigay sa akin 126 00:06:24,540 --> 00:06:27,570 ilang impormasyon warranty, at pagkatapos namin magkaroon ng GDP prompt, na kamukha uri 127 00:06:27,570 --> 00:06:29,350 ng tulad ng ating linya prompt na utos, ngunit nakikita mo ito ay bukas 128 00:06:29,350 --> 00:06:32,510 paren, GDB, malapit paren. 129 00:06:32,510 --> 00:06:36,520 Bago kami magpatuloy at i-debug ang file na ito na ipinadala ko sa iyo ang lahat, tingnan natin hayaan 130 00:06:36,520 --> 00:06:40,220 ang ilang mga kapaki-pakinabang na mga utos sa gayon kami ay may isang katuturan ng kung ano kami ay pagpunta upang masakop. 131 00:06:40,220 --> 00:06:45,060 >> Ang mga utos ay nakalista dito sa pagkakasunud-sunod na sa pangkalahatan ay ko bang gamitin ang mga ito. 132 00:06:45,060 --> 00:06:50,230 Kaya ko sisimulan ang aking programa sa pamamagitan ng pagpapatakbo GBD. / Pangalan ng programa, 133 00:06:50,230 --> 00:06:51,360 sa kasong ito, Caesar. 134 00:06:51,360 --> 00:06:57,430 At pagkatapos ay ang unang bagay na gagawin ko 99.9% ng oras ay nangangahulugan na ang uri ng break. 135 00:06:57,430 --> 00:06:59,070 Na nagtatakda ng pahinga punto sa pangunahing. 136 00:06:59,070 --> 00:07:03,260 Mahalaga, kung ano ang ginagawa mo doon ay ang programa ay pagpunta sa itigil sa 137 00:07:03,260 --> 00:07:06,100 pangunahing sa gayon maaari mong simulan ang pagsusuri ng mga ito linya sa pamamagitan ng linya, sa halip na sa pagtakbo ang lahat 138 00:07:06,100 --> 00:07:07,040 ang paraan sa pamamagitan ng. 139 00:07:07,040 --> 00:07:09,730 Maaari mong hatiin sa iba't ibang mga punto sa ang iyong code, ngunit pangunahing ay karaniwang isang 140 00:07:09,730 --> 00:07:11,870 magandang lugar upang magsimula. 141 00:07:11,870 --> 00:07:14,840 >> Ang susunod na command ba akong magpatakbo ay run. 142 00:07:14,840 --> 00:07:17,400 Nagsisimula na ang pagtakbo ng programa, at kung kailangan mong ipasok ang command line 143 00:07:17,400 --> 00:07:19,090 mga argument, patakbuhin ito sa command na. 144 00:07:19,090 --> 00:07:20,500 Patakbuhin sa mga argumento. 145 00:07:20,500 --> 00:07:25,000 Kaya dahil pupunta kami sa isang bersyon ng C, na ang mo guys programa 146 00:07:25,000 --> 00:07:26,160 Sinulat ni para pset dalawang - 147 00:07:26,160 --> 00:07:29,880 ang isang ito, siyempre, ay may ilang mga bug sa loob nito na sana ay gagamitin namin mahanap ang - 148 00:07:29,880 --> 00:07:32,810 kami ay pagpunta upang tumakbo sa run na may ilang mga utos argumento linya dahil Caesar, 149 00:07:32,810 --> 00:07:34,860 bilang alam mo guys sa bawat ang problema itakda ang spec, tumatagal ng ilang 150 00:07:34,860 --> 00:07:36,380 utos argumento linya. 151 00:07:36,380 --> 00:07:40,000 >> Ang susunod na ilang mga command, ang susunod na isa ay aktwal na tinatawag na susunod. 152 00:07:40,000 --> 00:07:42,470 Isa na dadalhin ka linya sa pamamagitan ng linya sa pamamagitan ng iyong programa. 153 00:07:42,470 --> 00:07:45,800 Kaya pagpindot n pagkatapos Enter dadalhin ka sa susunod na linya, e-execute 154 00:07:45,800 --> 00:07:46,880 ang nakaraang mga line. 155 00:07:46,880 --> 00:07:49,440 Tumatagal ng hindi lamang sa iyo Hakbang sa sa susunod na linya, ngunit ito 156 00:07:49,440 --> 00:07:51,070 dadalhin ka sa loob ng function. 157 00:07:51,070 --> 00:07:54,310 Kaya kung kayo ay nagsulat ng isang function na sa ang iyong code o kung nais mong tuklasin ang isang 158 00:07:54,310 --> 00:07:57,820 upang i, halimbawa, maaari mong pindutin s, at sa halip ng pagpunta sa susunod na linya ng 159 00:07:57,820 --> 00:08:02,390 ang file na kayo ay pagpunta sa pamamagitan ng karapatan ngayon, magkakaroon ka talaga lusukin 160 00:08:02,390 --> 00:08:04,670 ito function at makita ang code nito. 161 00:08:04,670 --> 00:08:12,300 >> Ipinapakita sa iyo ng Listahan, sa mga lubhang user friendly na format, mga 10 o kaya mga linya sa paligid 162 00:08:12,300 --> 00:08:14,940 kung saan ka kasalukuyang nasa iyong code sa gayon maaari mong talagang makita ang file 163 00:08:14,940 --> 00:08:17,810 sa halip ng pagkakaroon upang magpalit pabalik at balik sa pagitan ng iba't ibang mga view. 164 00:08:17,810 --> 00:08:21,890 I-print ay tulad ng printf, nagpapahiwatig ng bilang ng pangalan nito. 165 00:08:21,890 --> 00:08:24,020 Iyon ay nagpapakita sa iyo kung ano ang katumbas ng isang variable. 166 00:08:24,020 --> 00:08:25,870 >> Lokal Impormasyon ay talagang kapaki-pakinabang. 167 00:08:25,870 --> 00:08:27,740 Ito ay isang espesyal na bersyon ng naka-print na. 168 00:08:27,740 --> 00:08:31,770 Ipinapakita sa iyo ng mga lokal Impormasyon ng lahat ng mga lokal variable, prints out ang mga ito sa lahat para sa iyo 169 00:08:31,770 --> 00:08:33,380 na magagamit sa kasalukuyan. 170 00:08:33,380 --> 00:08:36,360 Kaya ako sa pangkalahatan, sa halip ng pagkakaroon i-print ang apat na variable na ako 171 00:08:36,360 --> 00:08:39,929 malaman ang tungkol sa kung ako sa isang para sa loop, para sa Halimbawa, isulat ko lang ang mga lokal na impormasyon, 172 00:08:39,929 --> 00:08:43,470 at sasabihin nito ipakita sa akin kung ano ang aking counter i katumbas, pati na rin ang array na ako 173 00:08:43,470 --> 00:08:45,130 nagtatrabaho sa Kapantay. 174 00:08:45,130 --> 00:08:47,530 >> Sa wakas, magpatuloy. 175 00:08:47,530 --> 00:08:49,300 Ang pag-type ng break tumitigil mo sa break na punto. 176 00:08:49,300 --> 00:08:51,380 Pwede kang maglakad sa pamamagitan ng linya sa pamamagitan ng linya sa susunod at hakbang. 177 00:08:51,380 --> 00:08:55,640 Magpatuloy nagpapatakbo ng mga programa sa iyong susunod na masira punto o hanggang sa pagkumpleto ng kung 178 00:08:55,640 --> 00:08:57,180 wala nang mga puntos break. 179 00:08:57,180 --> 00:09:00,060 Huwag paganahin ang nag-aalis ng break sa mga puntos kung ikaw nagpasya ang bakasyon sa pangunahing noon ay 180 00:09:00,060 --> 00:09:01,890 hindi naaangkop, na nais mong itakda ito sa ibang lugar. 181 00:09:01,890 --> 00:09:05,090 At sa wakas q, quit, hindi nakakaabala GDB. 182 00:09:05,090 --> 00:09:10,784 >> Kaya ang program na ito,. / Caesar, kami ay pagpunta upang tumingin sa pamamagitan ng ngayon at kami 183 00:09:10,784 --> 00:09:13,490 pupunta na gamitin GDB upang mahanap ang mga bug sa programang ito. 184 00:09:13,490 --> 00:09:18,110 Pinatatakbo ko ang program na ito nang mas maaga sa Suriin 50, at Nakakuha ako ng isa pagsimangot. 185 00:09:18,110 --> 00:09:22,310 Lahat ito umiral, ito pinagsama-sama, ito pumasa sa isang pulutong ng mga pagsubok, ngunit para sa 186 00:09:22,310 --> 00:09:27,950 sa ilang kadahilanan, hindi ito pumasa sa ikalimang pagsubok, pag-on BARFOO, ang lahat ng caps, sa 187 00:09:27,950 --> 00:09:33,350 E-D-U-ko-R-R, ang lahat ng mga pag-cap, gamit ang tatlong bilang isang susi. 188 00:09:33,350 --> 00:09:34,090 Nakatanggap ako malapit sa katangian. 189 00:09:34,090 --> 00:09:35,410 Nakatanggap ako off sa pamamagitan ng isang liham. 190 00:09:35,410 --> 00:09:37,340 Kaya mayroong ilang maliliit na pagkakamali in dito. 191 00:09:37,340 --> 00:09:38,070 Ako ay tumingin sa pamamagitan ng aking code. 192 00:09:38,070 --> 00:09:38,850 Hindi ko maisip ito. 193 00:09:38,850 --> 00:09:41,740 Sana, ka guys ay maaaring makatulong sa akin malaman kung ano ang bug na ito ay. 194 00:09:41,740 --> 00:09:44,610 >> Kaya iyon ang error Ikinalulungkot namin naghahanap para sa. 195 00:09:44,610 --> 00:09:46,090 Ng ilipat sa GDB Hayaan. 196 00:09:46,090 --> 00:09:51,100 Muli, patakbuhin ko ang GDB. / Caesar, kaya ngayon kami sa GDB. 197 00:09:51,100 --> 00:09:54,290 At kung ano ay ang unang bagay na dapat kong gawin? 198 00:09:54,290 --> 00:09:56,680 Lamang na naipasok ko GDB. 199 00:09:56,680 --> 00:10:00,316 Isang tao ninyo ako ng magandang command upang ipasok. 200 00:10:00,316 --> 00:10:01,140 >> AARAL: Hatiin pangunahing. 201 00:10:01,140 --> 00:10:01,800 >> Jason HIRSCHHORN: Hatiin pangunahing. 202 00:10:01,800 --> 00:10:02,900 Hindi kapani-paniwala. 203 00:10:02,900 --> 00:10:03,560 Ni-type na in Hayaan 204 00:10:03,560 --> 00:10:06,390 Ikaw guys Pwedeng manood hanggang dito o sundin kasama sa iyong mga computer. 205 00:10:06,390 --> 00:10:09,410 Hatiin pangunahing, at makikita mo ang isang break na punto ay naitakda sa - 206 00:10:09,410 --> 00:10:12,340 nagbibigay ito sa akin ang ilang kakaiba memory address, at nagbibigay din ito sa akin ang numero ng linya. 207 00:10:12,340 --> 00:10:15,310 Kung ako ay upang lingunin ang file na ito, Gusto ko mapagtanto na pangunahing 208 00:10:15,310 --> 00:10:17,700 nangyari sa 21 linya. 209 00:10:17,700 --> 00:10:18,950 Ano ang dapat kong patakbuhin ang susunod? 210 00:10:18,950 --> 00:10:22,970 211 00:10:22,970 --> 00:10:25,060 Tumatakbo ba ang aking programa? 212 00:10:25,060 --> 00:10:25,650 Hindi. 213 00:10:25,650 --> 00:10:27,175 Kaya ano ang dapat kong patakbuhin ang susunod? 214 00:10:27,175 --> 00:10:27,520 >> AARAL: Magpatakbo. 215 00:10:27,520 --> 00:10:28,050 >> Jason HIRSCHHORN: Magpatakbo. 216 00:10:28,050 --> 00:10:30,760 Dapat ba akong magpatakbo lamang run, o dapat Nagdagdag ako ng ilang iba pang mga bagay sa? 217 00:10:30,760 --> 00:10:31,960 >> AARAL: Patakbuhin sa mga argumento. 218 00:10:31,960 --> 00:10:33,320 >> Jason HIRSCHHORN: Patakbuhin sa ang mga argumento command. 219 00:10:33,320 --> 00:10:36,420 At dahil ako debugging isang napaka-tukoy na kaso, ang dapat kong ipasok na 220 00:10:36,420 --> 00:10:37,120 argumento command line. 221 00:10:37,120 --> 00:10:42,290 Kaya ko makikita pinatatakbo ng tatlong, na kung saan ay, muli, ang output ang nakuha ko mula sa Suriin ang 50. 222 00:10:42,290 --> 00:10:44,240 Simula sa programa. 223 00:10:44,240 --> 00:10:45,420 Pumunta kami sa pamamagitan ng isang pares ng mga linya. 224 00:10:45,420 --> 00:10:47,700 Makikita mo na ngayong makita na kami sa 21 linya. 225 00:10:47,700 --> 00:10:49,200 Paano ko malalaman na kami sa 21 linya? 226 00:10:49,200 --> 00:10:52,170 Dahil kung tiningnan mo sa kaliwa ng aking mga terminal na window, doon 227 00:10:52,170 --> 00:10:53,120 ito sabi ni 21 linya. 228 00:10:53,120 --> 00:10:57,010 At na nagbibigay sa akin, talaga, ang code na sa 21 linya. 229 00:10:57,010 --> 00:10:58,440 Kaya misspoke ako nang mas maaga. 230 00:10:58,440 --> 00:10:59,770 Main ay hindi tunay na sa 21 linya. 231 00:10:59,770 --> 00:11:02,000 Main ay isang pares ng mga linya sa itaas 21. 232 00:11:02,000 --> 00:11:04,300 Ngunit sa 21 linya, na kung saan kami naka-breaking. 233 00:11:04,300 --> 00:11:06,280 Ang linya ng code ay hindi pa pinaandar. 234 00:11:06,280 --> 00:11:06,890 Iyan ay mahalaga. 235 00:11:06,890 --> 00:11:09,120 Ang linya ng nakikita mo ay hindi pa pinaandar. 236 00:11:09,120 --> 00:11:12,650 Iyan ang susunod na linya ng code ikaw ay tungkol sa upang isakatuparan. 237 00:11:12,650 --> 00:11:15,860 >> Kaya sa susunod na linya, bilang ka guys ay marahil pamilyar sa, ay ito 238 00:11:15,860 --> 00:11:20,070 kondisyon ng pagsuri upang makita kung mayroon akong ipinasok isang argumento command line. 239 00:11:20,070 --> 00:11:22,140 At isang upang i, ano ay ang pangalawang bahagi ng na ginagawa? 240 00:11:22,140 --> 00:11:23,457 Ano ang isang upang i? 241 00:11:23,457 --> 00:11:24,950 >> AARAL: Ang pagbabago ng ito sa isang integer. 242 00:11:24,950 --> 00:11:25,450 >> Jason HIRSCHHORN: Paumanhin? 243 00:11:25,450 --> 00:11:27,400 >> AARAL: Ito ay ang pagbabago ng argumento sa isang integer. 244 00:11:27,400 --> 00:11:30,890 >> Jason HIRSCHHORN: Kaya isang upang i nagbabago ARG v1 mula sa isang string sa isang integer. 245 00:11:30,890 --> 00:11:32,140 At pagkatapos ay kung ano ang ito check? 246 00:11:32,140 --> 00:11:35,414 247 00:11:35,414 --> 00:11:37,112 >> AARAL: Kung mayroong pangalawang linya ng command argumento, bukod 248 00:11:37,112 --> 00:11:38,100 mula sa pagtakbo sa programa. 249 00:11:38,100 --> 00:11:39,460 >> Jason HIRSCHHORN: At ano ang ang ikalawang kalahati ng ito 250 00:11:39,460 --> 00:11:41,220 Check ng Boolean expression? 251 00:11:41,220 --> 00:11:42,540 Ito bahagi sa ibabaw dito, isang upang i? 252 00:11:42,540 --> 00:11:44,080 >> AARAL: Kung ito ay negatibo. 253 00:11:44,080 --> 00:11:45,380 >> Jason HIRSCHHORN: Paggawa ng mga sigurado kung ano? 254 00:11:45,380 --> 00:11:47,120 >> AARAL: Pagtiyak ito ay, sa katunayan, positibo. 255 00:11:47,120 --> 00:11:47,650 >> Jason HIRSCHHORN: Mismong. 256 00:11:47,650 --> 00:11:50,600 Ito ay pagsuri upang makita kung ito ay negatibo, at kung ito ay negatibo, ako 257 00:11:50,600 --> 00:11:53,220 magkaroon ng isang pakiramdam ng susunod na linya baka ay sa akin yelling sa user. 258 00:11:53,220 --> 00:11:55,930 Kaya pindutin ng pagtatapos upang isakatuparan ang line ipaalam. 259 00:11:55,930 --> 00:11:59,925 Hindi namin makita na linya na guys siguro inaasahan upang makita ang yelling sa 260 00:11:59,925 --> 00:12:03,030 ng gumagamit at pagkatapos ay bumabalik, dahil ang linyang ito ay hindi nagsagawa. 261 00:12:03,030 --> 00:12:03,840 Naipasok ko 3. 262 00:12:03,840 --> 00:12:06,860 Kaya ko, sa katunayan, ipasok ang dalawang utos mga argument ng linya, at 3 ay 263 00:12:06,860 --> 00:12:07,610 mas mataas sa zero. 264 00:12:07,610 --> 00:12:09,950 Kaya nakita namin na linya, ipinatupad namin, ngunit hindi namin ginawa hakbang 265 00:12:09,950 --> 00:12:11,300 sa loob ng kung kondisyon. 266 00:12:11,300 --> 00:12:17,060 >> Kaya ngayon, susunod, nakikita ko ako pagtatakda int key ay katumbas ng isang upang ARG i v1. 267 00:12:17,060 --> 00:12:18,840 Kaya na sa akin ang paglikha ng isang variable na key. 268 00:12:18,840 --> 00:12:22,450 Kaya kung i-print ko out key ngayon, dahil na nagbibigay-daan sa iyo upang makita ang 269 00:12:22,450 --> 00:12:26,040 halaga sa loob ng variable, key ay katumbas ng 47. 270 00:12:26,040 --> 00:12:28,810 Iyan ay kakaiba, ngunit siyempre, na dahil mayroon akong hindi 271 00:12:28,810 --> 00:12:30,490 pinaandar na linya pa. 272 00:12:30,490 --> 00:12:35,880 Kaya ngayon kung pindutin ko n, gawin na linya, at gawin sa pag-print sa key, key ay magiging katumbas 3, 273 00:12:35,880 --> 00:12:37,740 na kung saan ay kung ano ang inaasahan namin ito upang pumatas. 274 00:12:37,740 --> 00:12:41,170 >> Kaya muli, sa GDB, ang linya mo tingnan hindi mo pa pinaandar. 275 00:12:41,170 --> 00:12:44,850 Mayroon kang i-hit n o s o isang numero ng iba pang mga command upang aktwal na 276 00:12:44,850 --> 00:12:46,610 isakatuparan na linya. 277 00:12:46,610 --> 00:12:47,380 I-print key. 278 00:12:47,380 --> 00:12:48,280 Key ng sa 3. 279 00:12:48,280 --> 00:12:49,750 Sa ngayon, kaya magandang. 280 00:12:49,750 --> 00:12:51,000 String ay plain text. 281 00:12:51,000 --> 00:12:52,270 Isakatuparan na linya Hayaan. 282 00:12:52,270 --> 00:12:53,970 Nakakuha ako ng isang string mula sa gumagamit. 283 00:12:53,970 --> 00:12:58,690 >> Tingnan sa aking Check 50 Hayaan, ako ipasok BARFOO lahat ng caps, kaya 284 00:12:58,690 --> 00:13:01,330 na kung ano ang makikita kong ipasok. 285 00:13:01,330 --> 00:13:07,300 Kung ngayong mag-print ko plain text. 286 00:13:07,300 --> 00:13:08,610 Makikita mo ito ay katumbas ng isang string. 287 00:13:08,610 --> 00:13:11,100 Nagbibigay ito sa akin ang ilang iba pang mga kakaiba hexadecimal numero, ngunit ginagawa nito sa 288 00:13:11,100 --> 00:13:13,620 katotohanang sinasabi na ang aking string ay BARFOO. 289 00:13:13,620 --> 00:13:19,308 Kung Nais kong makita kung ano ang key equaled sa puntong ito, paano ko ma-check key? 290 00:13:19,308 --> 00:13:20,710 >> AARAL: I-print ang key. 291 00:13:20,710 --> 00:13:22,010 >> Jason HIRSCHHORN: I-print ang key, eksakto. 292 00:13:22,010 --> 00:13:23,260 At talagang, mayroong isang shortcut. 293 00:13:23,260 --> 00:13:25,910 Kung makakuha ka ng pagod ng pag-type ng naka-print, Maaari mo lamang i-type p. 294 00:13:25,910 --> 00:13:28,340 Kaya p key gumagana ang parehong eksaktong bagay. 295 00:13:28,340 --> 00:13:29,730 At muli, makita ko ito ay katumbas ng 3. 296 00:13:29,730 --> 00:13:34,760 >> Kung Nais kong malaman kung ano ang parehong key at BARFOO equaled sa parehong oras 297 00:13:34,760 --> 00:13:37,215 ngunit ako ay pagod ng pag-type ng bawat isa out isa-isa, ako 298 00:13:37,215 --> 00:13:38,590 ma-type lokal na impormasyon. 299 00:13:38,590 --> 00:13:41,170 Iyon ay nagbibigay sa akin ang key ay katumbas ng 3. 300 00:13:41,170 --> 00:13:42,500 Plain text ay katumbas ng BARFOO. 301 00:13:42,500 --> 00:13:45,265 Ay nagbibigay sa akin din ito ng dalawang mga bagay na kakaiba sa tuktok, ito variable i at 302 00:13:45,265 --> 00:13:46,590 variable n ito. 303 00:13:46,590 --> 00:13:48,460 >> Yaong ay talagang umiiral sa aking pangunahing programa. 304 00:13:48,460 --> 00:13:51,280 Hindi pa namin nakatagpo ang mga ito, ngunit bilang isang preview, mga 305 00:13:51,280 --> 00:13:52,880 umiiral sa aking para sa loop. 306 00:13:52,880 --> 00:13:55,360 Kaya ngayon, kasing-halaga ng mga ito ng ilang kakaiba mga numero dahil hindi sila naging 307 00:13:55,360 --> 00:13:58,300 pa nasimulan, ngunit umiiral pa rin sila sa memory, sa gayon ito ay naka-set lamang 308 00:13:58,300 --> 00:14:00,220 sa ilang mga halaga ng basura. 309 00:14:00,220 --> 00:14:02,890 Ngunit namin makita susi sa plain text doon. 310 00:14:02,890 --> 00:14:06,390 >> Kaya pupuntahan ko maisagawa ang linyang ito, 34 linya, ang para sa loop. 311 00:14:06,390 --> 00:14:08,220 Kami ay pagpunta sa tumalon papunta sa para sa loop sa pamamagitan ng pagpindot n. 312 00:14:08,220 --> 00:14:10,050 At kami ay sa loob ng para sa loop. 313 00:14:10,050 --> 00:14:11,360 Humihingi kami sa aming unang tseke. 314 00:14:11,360 --> 00:14:14,300 At muli, ang mga ito ay dapat na uri ng hitsura pamilyar sa iyo dahil ito ay isang 315 00:14:14,300 --> 00:14:18,080 Caesar programa na ay isinulat, ngunit muli, ay may ilang uri ng mga bug. 316 00:14:18,080 --> 00:14:21,940 >> At ngayon kung gagawin ko lokal na impormasyon, dahil ako sa loob na para sa loop, makikita mo ang 317 00:14:21,940 --> 00:14:23,900 na katumbas i zero, bilang inaasahan namin. 318 00:14:23,900 --> 00:14:26,820 Iyon ay kung ano set namin ito sa at nasimulan ito sa sa para sa loop. 319 00:14:26,820 --> 00:14:27,560 n ay katumbas ng 6. 320 00:14:27,560 --> 00:14:30,700 Iyon din saysay dahil itinakda namin ito sa strlen ng plain text. 321 00:14:30,700 --> 00:14:34,270 Kaya gusto kong gawin lokal impormasyon o i-print upang variable madalas upang tiyakin na 322 00:14:34,270 --> 00:14:36,370 lahat ng bagay ay palaging kung ano Inaasahan ko ito upang pumatas. 323 00:14:36,370 --> 00:14:39,800 Sa kasong ito, lahat ng bagay ay kung ano ang aking inaasahan ito upang pumatas. 324 00:14:39,800 --> 00:14:41,850 >> Kaya ni magsimulang umusad sa pamamagitan ipaalam ito para sa loop. 325 00:14:41,850 --> 00:14:45,715 Ang linya ako sa 36 linya, kung plain teksto i ay mas malaki sa isang at plain 326 00:14:45,715 --> 00:14:48,540 teksto i mas mababa sa o katumbas ng z. 327 00:14:48,540 --> 00:14:51,880 Alam ko ang aking problema ay hindi kasama ang aking unang sulat, ito ay sa ikalawang sulat. 328 00:14:51,880 --> 00:14:56,290 Kung titingnan namin pabalik sa Check 50, B ang papunta sa E fine. 329 00:14:56,290 --> 00:14:59,010 Ako paglalaan ng A at nag-iiwan ito bilang isang A, hindi ang pagbabago nito sa D. Kaya 330 00:14:59,010 --> 00:15:00,200 isang bagay ang mali sa ang ikalawang sulat. 331 00:15:00,200 --> 00:15:01,640 Kaya ako pupunta upang ilipat doon sa isang segundo. 332 00:15:01,640 --> 00:15:06,030 >> Ngunit kung ko nais upang suriin kung anong plain teksto equaled ako sa ang partikular na 333 00:15:06,030 --> 00:15:07,760 kaso, sa tingin ko dapat itong maging ano? 334 00:15:07,760 --> 00:15:10,980 Ano ang dapat plain text na kasing-halaga ko sa ito unang pag-ikot sa pamamagitan ng para sa loop? 335 00:15:10,980 --> 00:15:14,046 336 00:15:14,046 --> 00:15:15,110 >> AARAL: Zero? 337 00:15:15,110 --> 00:15:16,510 >> Jason HIRSCHHORN: Plain text ng ko? 338 00:15:16,510 --> 00:15:21,180 Kaya dapat itong maging capital B. ko, siyempre, ay katumbas ng zero, ngunit plain text 339 00:15:21,180 --> 00:15:25,600 bracket zero closed bracket ay katumbas ng B dahil string, bilang nakita natin noong nakaraang linggo, 340 00:15:25,600 --> 00:15:28,650 ay array, kaya namin nakukuha ang unang character mula iyon. 341 00:15:28,650 --> 00:15:34,960 Kaya muli, kung na-print ko out plain text ng Ako, ko, sa katunayan, kumuha ng character 342 00:15:34,960 --> 00:15:36,560 B. At na kapong baka, tama? 343 00:15:36,560 --> 00:15:40,380 Hindi ko talagang magkaroon ng plain text I. Iyon ay hindi isa sa mga variable ba akong magtakda 344 00:15:40,380 --> 00:15:42,950 o nasimulan, ngunit maaari kang mag-print ang isang buong host ng mga bagay 345 00:15:42,950 --> 00:15:45,640 kung nais mong. 346 00:15:45,640 --> 00:15:47,340 >> Ngunit ng ilipat sa pamamagitan ipaalam. 347 00:15:47,340 --> 00:15:50,050 Kung plain text ko ay mas malaki sa A at plain text ko ay mas mababa sa o katumbas ng 348 00:15:50,050 --> 00:15:53,290 Z, na malinaw na ay totoo dahil mayroon kaming may malaking titik B. Pupunta ako upang mapatakbo 349 00:15:53,290 --> 00:15:54,230 ilang mga command na ito. 350 00:15:54,230 --> 00:15:58,530 Nakita namin na ang math noong nakaraang linggo, kaya kami ay dalhin ito para sa ipinagkaloob na ito gumagana 351 00:15:58,530 --> 00:16:00,900 karapatan ayon sa Suriin ang 50. 352 00:16:00,900 --> 00:16:03,720 >> Ang mga kulot tirante, ang unang isa Nagpakita na ako ay exiting ang kung 353 00:16:03,720 --> 00:16:07,030 kondisyon, nagpakita ang pangalawang isa na ako sa paglabas ang para sa loop. 354 00:16:07,030 --> 00:16:10,400 At kaya ngayon kapag pindutin ko Susunod, namin makikita Ikinalulungkot namin pabalik sa para sa loop muli. 355 00:16:10,400 --> 00:16:11,970 Kami ay pagpunta sa pamamagitan ng para sa muli loop. 356 00:16:11,970 --> 00:16:18,110 Ni aktwal lusukin ang pangalawang Hayaan pag-ulit ng para sa loop at uri 357 00:16:18,110 --> 00:16:20,520 info lokal. 358 00:16:20,520 --> 00:16:22,190 >> Kaya kami sa pangalawang pag-ulit sa aming para sa loop. 359 00:16:22,190 --> 00:16:24,530 Ay katumbas ng 1 ko, na inaasahan namin. 360 00:16:24,530 --> 00:16:26,650 N ay katumbas ng 6, na inaasahan namin. 361 00:16:26,650 --> 00:16:28,810 Key ay katumbas ng 3, na inaasahan namin. 362 00:16:28,810 --> 00:16:32,625 At plain text, makikita mo, ay katumbas ng EARFOO ngayon, hindi BARFOO ngayon dahil 363 00:16:32,625 --> 00:16:37,930 sa aming nakaraang iteration, ang B ay pinalitan sa isang kabisera E. Kaya kami tungkol sa 364 00:16:37,930 --> 00:16:40,040 upang makaharap ang problema, kaya ito ay kung saan kami ay pagpunta sa 365 00:16:40,040 --> 00:16:41,130 sumisid sa pag-debug. 366 00:16:41,130 --> 00:16:43,365 Ngunit ang sinuman ay may anumang mga katanungan tungkol sa kung ano ang iyong nagawa namin sa ngayon? 367 00:16:43,365 --> 00:16:46,770 368 00:16:46,770 --> 00:16:47,910 Hindi kapani-paniwala. 369 00:16:47,910 --> 00:16:52,710 >> Kaya hindi namin tungkol sa upang maisagawa ito kung kondisyon, plain text bracket ko sarado 370 00:16:52,710 --> 00:16:57,500 bracket mas malaki kaysa sa A at plain text ko mas mababa sa o katumbas ng Z. Ngunit bago 371 00:16:57,500 --> 00:17:00,450 Pumunta ako sa na, dahil ito ay kung saan Alam ko ang aking error na ito ay, gusto kong ituro 372 00:17:00,450 --> 00:17:06,859 out plain text ng I. Kaya maglagay ng print out ipaalam. 373 00:17:06,859 --> 00:17:12,020 Ito ang kasing-halaga ng character na A, kaya na Mukhang sa ngayon, ang lahat ay mahusay at magandang. 374 00:17:12,020 --> 00:17:14,740 >> Kaya inaasahan ko line na ito per aking logic, Dapat na totoo sa linyang ito. 375 00:17:14,740 --> 00:17:16,099 Ito ay isang malaking titik. 376 00:17:16,099 --> 00:17:20,599 Ngunit kung pindutin ko n, kami mapagtanto na ito linya, sa katunayan, ay hindi nagsagawa. 377 00:17:20,599 --> 00:17:22,609 Ako jumped down sa iba kung. 378 00:17:22,609 --> 00:17:25,460 Bakit mo na mangyayari? 379 00:17:25,460 --> 00:17:27,480 >> AARAL: Dahil mayroon kang ang iyong mga kondisyon ng plain text ay mas malaki 380 00:17:27,480 --> 00:17:29,130 kaysa A, hindi katumbas ng o mas mataas kaysa. 381 00:17:29,130 --> 00:17:32,260 >> Jason HIRSCHHORN: Kaya nagkaroon ko ang aking plain text Ko ay mas malaki sa A, hindi mas malaki 382 00:17:32,260 --> 00:17:32,850 mababa sa o patas sa. 383 00:17:32,850 --> 00:17:38,130 Kaya malinaw, ang kabisera A ginawang hindi magpalitaw ito kung kondisyon, at ginawa namin 384 00:17:38,130 --> 00:17:40,520 hindi lusukin ito, at ginawa namin hindi gawin ang mga kinakailangang shift. 385 00:17:40,520 --> 00:17:41,360 Kaya na ito, talagang. 386 00:17:41,360 --> 00:17:42,920 Naisip ko ang aking bug. 387 00:17:42,920 --> 00:17:46,775 Kaya kong bumalik sa aking source file, baguhin ito, at i-update ito at 388 00:17:46,775 --> 00:17:47,855 patakbuhin ang Suriin 50 ulit. 389 00:17:47,855 --> 00:17:52,590 >> Ngunit masisiyahan kaming makita, para lamang sa sining ng pagtuturo ni alang-alang, kung panatilihing ako pagpunta. 390 00:17:52,590 --> 00:17:59,580 Ang iba kung hindi nagsasagawa ng alinman sa, ngunit ano sa halip ay katumbas ay ang command na 391 00:17:59,580 --> 00:18:00,500 na ay hindi nagbabago. 392 00:18:00,500 --> 00:18:04,840 Kaya ito ay hindi nagbago sa lahat, at kung ako i-print dito plain text, ipapakita namin makita ng pagpunta 393 00:18:04,840 --> 00:18:08,250 sa pamamagitan ng na para sa loop ay hindi, sa katunayan, baguhin na pangalawa ng character sa lahat. 394 00:18:08,250 --> 00:18:09,600 Ito ay pa rin ng isang kabisera A. 395 00:18:09,600 --> 00:18:12,690 >> Kaya muli, debugged namin ang aming error. 396 00:18:12,690 --> 00:18:17,380 Namin natanto na nagkaroon Nawawala ang ilan logic. 397 00:18:17,380 --> 00:18:20,590 At debugged namin ito maagang ng panahon bago talagang e-execute na linya, 398 00:18:20,590 --> 00:18:24,320 ngunit sana ay napansin mo nagkaroon kami lamang pindutin ang Susunod at tumalon sa ibang tao na kung, 399 00:18:24,320 --> 00:18:26,710 Ibig sabihin nito na iyon na kung kundisyon ay hindi totoo. 400 00:18:26,710 --> 00:18:29,550 Kami ay hindi, sa katunayan, kumuha ng ang resulta sa inaasahan namin. 401 00:18:29,550 --> 00:18:33,240 Kaya pagkatapos ay maaari kaming na-prompt, nagkaroon hindi namin naging kaya matalas, upang tumingin sa 402 00:18:33,240 --> 00:18:38,510 na kung kondisyon at suriin kung, sa katunayan, ang aming mga kondisyon ay dapat suriin upang 403 00:18:38,510 --> 00:18:41,150 totoo sa kasalukuyang konteksto. 404 00:18:41,150 --> 00:18:42,880 >> Iyon lang ang pag-debug para sa programang ito. 405 00:18:42,880 --> 00:18:45,340 Kahit sino ay may anumang mga katanungan ba? 406 00:18:45,340 --> 00:18:50,486 Ano command na maaari kong pindutin na umalis GDB? 407 00:18:50,486 --> 00:18:53,900 Q. At pagkatapos ay makikita prompt ko, huminto pa rin? 408 00:18:53,900 --> 00:18:54,390 Oo o hindi. 409 00:18:54,390 --> 00:18:58,440 Makikita pindutin ko oo, at makikita na isinara ko ang GDB. 410 00:18:58,440 --> 00:19:00,860 >> Kaya na noon ay isang mabilis panimulang aklat sa pagbasa sa GDB. 411 00:19:00,860 --> 00:19:03,430 Talaga, sa isang tunay na sitwasyon, Ginawa ko ito sa oras ng opisina. 412 00:19:03,430 --> 00:19:06,710 GDBed ko ito eksaktong programa sa oras ng opisina sa isang mag-aaral. 413 00:19:06,710 --> 00:19:12,410 At kung pumunta kami pabalik sa mga utos Nakita namin bago, ginamit namin break na main, una 414 00:19:12,410 --> 00:19:13,190 bagay ginawa namin. 415 00:19:13,190 --> 00:19:16,060 Ginamit namin run may mga argumento command line, ikalawang bagay ginawa namin. 416 00:19:16,060 --> 00:19:18,520 Ginamit namin sa tabi ng maraming upang ilipat amin sa pamamagitan ng mga linya. 417 00:19:18,520 --> 00:19:20,310 At muli, ang maikling bersyon ng susunod ay n. 418 00:19:20,310 --> 00:19:22,920 Iyan ay sa mga panaklong sa kulay abong sa slide. 419 00:19:22,920 --> 00:19:28,590 >> Hindi namin gamitin ang hakbang na ito, ngunit kami ay hindi kinakailangang kailangang para sa kasong ito. 420 00:19:28,590 --> 00:19:32,150 Ngunit maaari naming gamitin ito sa isang bit mamaya sa ngayon kung dine-debug namin, para sa 421 00:19:32,150 --> 00:19:36,500 kapag binary Halimbawa, binary paghahanap paghahanap ay tinatawag na sa isang hiwalay na 422 00:19:36,500 --> 00:19:38,200 pag-andar ngunit mayroong ang ilang mga error sa mga ito. 423 00:19:38,200 --> 00:19:40,440 Kami ay pagpunta sa nais na lusukin ang tawag sa binary paghahanap at 424 00:19:40,440 --> 00:19:41,840 talagang i-debug ito. 425 00:19:41,840 --> 00:19:45,130 Ilista hindi namin ginawa gamitin ang alinman dahil nagkaroon kami ng mahusay na pakiramdam ng aming code, ngunit kung ako 426 00:19:45,130 --> 00:19:48,420 ay nais na magkaroon ng ideya ng kung ano ang code ko noon ay sa paligid, kaya kong gamitin na lamang ang listahan. 427 00:19:48,420 --> 00:19:50,310 >> I-print namin ginamit, mga lokal info namin gagamitin. 428 00:19:50,310 --> 00:19:53,260 Magpatuloy hindi namin ginawa kailangang gamitin sa na ito kaso, ni ay kailangan naming gamitin 429 00:19:53,260 --> 00:19:55,060 huwag paganahin, ngunit ginawa namin ang paggamit quit. 430 00:19:55,060 --> 00:19:57,850 Muli, ang mga 10 command, pagsasanay sa kanila. 431 00:19:57,850 --> 00:20:00,770 Kung nauunawaan mo ang mga 10 command, dapat kang magtakda para sa pag-debug sa anumang 432 00:20:00,770 --> 00:20:02,525 maglalabas may GDB. 433 00:20:02,525 --> 00:20:05,230 434 00:20:05,230 --> 00:20:08,420 >> Kaya hindi namin tungkol sa upang pumunta sa, muli, upang ang pinakabuod ng seksyon ngayon, pagpunta sa ibabaw 435 00:20:08,420 --> 00:20:09,720 mga pag-uuri at paghahanap algorithm. 436 00:20:09,720 --> 00:20:14,075 Bago namin gawin ito, muli, anumang mga katanungan, mga komento, mga alalahanin para sa GDB? 437 00:20:14,075 --> 00:20:16,750 438 00:20:16,750 --> 00:20:20,960 Kaya Pupunta lahat ng tao upang gamitin ang GDB sa halip na printf? 439 00:20:20,960 --> 00:20:24,550 Kaya lahat ng tao, alang-alang sa habang-buhay ni, lahat ng tao ay nodding kanilang ulo pakanan 440 00:20:24,550 --> 00:20:27,400 ngayon, kaya ako makakakita ka sa oras ng opisina at ang lahat ng mga TFs ay nakikita at 441 00:20:27,400 --> 00:20:29,460 Makikita nila sabihin, ipakita ninyo sa akin kung paano gamitin GDB, at magagawa mong 442 00:20:29,460 --> 00:20:31,240 upang ipakita ang mga ito, i-right? 443 00:20:31,240 --> 00:20:31,760 Uri ng? 444 00:20:31,760 --> 00:20:32,640 Siguro sana. 445 00:20:32,640 --> 00:20:33,670 Cool. 446 00:20:33,670 --> 00:20:35,790 >> Kaya kami ay pagpunta sa ilipat sa pag-uuri at paghahanap. 447 00:20:35,790 --> 00:20:40,710 Makikita mo ang mayroon akong isang listahan na pinagsunod-sunod para sa atin, ngunit iyon ay hindi papunta sa 448 00:20:40,710 --> 00:20:42,220 upang maging palagi ang kaso. 449 00:20:42,220 --> 00:20:49,170 Kaya sa mga problema set pagtutukoy para sa itakda ang problemang tatlong, mayroon kang shorts 450 00:20:49,170 --> 00:20:51,410 na maaari mong panoorin, at ito talaga humihiling sa iyo upang mapanood ang mga shorts. 451 00:20:51,410 --> 00:20:55,090 Gayundin sa panayam noong nakaraang linggo, nagpunta kami sa ibabaw ng maraming mga algorithm, sa gayon ako ay 452 00:20:55,090 --> 00:20:59,150 hindi pagpunta upang patagalin sa klase ng pagpunta higit sa muli mga algorithm o guhit 453 00:20:59,150 --> 00:21:01,130 mga larawan para sa kung paano ang mga algorithm gumagana. 454 00:21:01,130 --> 00:21:04,030 Muli, ang impormasyon na iyon maaari mong muling sa panonood magbigay ng panayam, o na impormasyon 455 00:21:04,030 --> 00:21:08,570 ay nakunan outstandingly sa shorts para sa mga paghahanap na ito, lahat ng 456 00:21:08,570 --> 00:21:10,920 na kung saan ay available sa cs50.net. 457 00:21:10,920 --> 00:21:14,200 >> Kaya sa halip, kung ano kami ay pagpunta sa gawin ay isulat ang mga programang ito. 458 00:21:14,200 --> 00:21:18,190 Mayroon kaming isang katuturan, isang sakit sa modelo, kung paano gumagana ang mga iyon, at kung ano ang kaya namin pagpunta 459 00:21:18,190 --> 00:21:20,210 upang gawin ay ang code ang mga ito para sa real. 460 00:21:20,210 --> 00:21:23,430 Kami ay pagpunta sa i-mental modelo na, na larawan, kung nasain mo, papunta sa 461 00:21:23,430 --> 00:21:24,960 aktwal na code. 462 00:21:24,960 --> 00:21:28,460 At kung ikaw ay isang maliit na nalilito o maaso sa mental modelo, ako lahat-lahat 463 00:21:28,460 --> 00:21:28,770 Nauunawaan. 464 00:21:28,770 --> 00:21:30,540 >> Hindi kami talaga ng pagpunta sa tumalon sa code kagayat. 465 00:21:30,540 --> 00:21:36,030 Kaya habang ang pagsenyas na ito sa slide na ito ay humihingi ng mo sa code ng binary paghahanap, at 466 00:21:36,030 --> 00:21:39,470 talaga, isang umuulit na bersyon ng binary paghahanap, ang unang bagay na ako 467 00:21:39,470 --> 00:21:42,370 gusto talaga mo lang gawin ay sumulat ng ilang pseudocode. 468 00:21:42,370 --> 00:21:47,020 Kaya ikaw ay may sakit sa modelo na ito ng kung paano gumagana ang binary paghahanap. 469 00:21:47,020 --> 00:21:50,060 Ilabas isang sheet ng papel kung mayroon kang isa maluwag sa loob magagamit, o magbukas ng isang 470 00:21:50,060 --> 00:21:52,520 text editor, at Gusto ko lahat ng tao na magsulat. 471 00:21:52,520 --> 00:21:57,470 Dalhin apat na minuto upang isulat ang pseudocode para sa binary paghahanap. 472 00:21:57,470 --> 00:21:58,990 >> Muli, isipin ang tungkol sa sakit sa modelo na iyon. 473 00:21:58,990 --> 00:22:01,980 Kukunin ko dumating sa paligid kung mayroon kang mga katanungan at maaari naming gumuhit ng larawan out. 474 00:22:01,980 --> 00:22:06,220 Ngunit una, bago namin simulan ang programming, Gusto kong isulat ang 475 00:22:06,220 --> 00:22:09,920 pseudocode para sa binary paghahanap kaya kung kailan namin makisalamuha, mayroon kaming ilang mga direksyon tulad 476 00:22:09,920 --> 00:22:12,110 upang kung saan dapat kami magtungo. 477 00:22:12,110 --> 00:22:15,330 >> AARAL: Maari naming ipagpalagay ang hanay ng mga mga halaga makuha namin ay naka-pinagsunod-sunod? 478 00:22:15,330 --> 00:22:17,960 >> Jason HIRSCHHORN: Kaya para sa binary paghahanap upang gumana - mahusay na tanong - sa iyo 479 00:22:17,960 --> 00:22:20,970 kailangang kumuha sa isang pinagsunod-sunod array ng mga halaga. 480 00:22:20,970 --> 00:22:22,290 Kaya ipinapalagay ay ito ay gagana. 481 00:22:22,290 --> 00:22:23,480 Susubukan naming bumalik sa slide na ito. 482 00:22:23,480 --> 00:22:27,220 Makikita mo sa mga lilang ang pag-andar pagpapahayag ay bool binary_search int 483 00:22:27,220 --> 00:22:29,230 halaga, int value, int n. 484 00:22:29,230 --> 00:22:32,910 Ito ay dapat magmukhang pamilyar kung ikaw ay na lumalapit o nakuha ang iyong 485 00:22:32,910 --> 00:22:34,580 mga kamay marumi gamit ang hanay ng problema. 486 00:22:34,580 --> 00:22:35,910 >> Ngunit iyon lamang ang iyong mga pag-andar na pagpapahayag. 487 00:22:35,910 --> 00:22:39,080 Muli, hindi dapat kailangang mag-alala tungkol sa na magkano sa panahon na ito. 488 00:22:39,080 --> 00:22:43,660 Ano gusto ko talagang gawin ay tumagal apat na minuto upang pseudocode binary 489 00:22:43,660 --> 00:22:46,380 maghanap, at pagkatapos ay gagamitin namin pumunta sa ibabaw na bilang isang grupo. 490 00:22:46,380 --> 00:22:47,500 At ako ay dumating sa paligid. 491 00:22:47,500 --> 00:22:49,590 Kung mayroon kang mga katanungan, huwag mag- libreng upang taasan ang iyong kamay. 492 00:22:49,590 --> 00:25:07,110 493 00:25:07,110 --> 00:25:09,680 >> Bakit hindi magdadala sa iyo ng dalawang minuto nang higit pa upang tapusin na ang pseudocode? 494 00:25:09,680 --> 00:25:13,690 495 00:25:13,690 --> 00:25:15,820 Alam ko na ito ay maaaring mukhang katawa-tawa na kami ay gumagastos nang sa gayon karaming oras sa 496 00:25:15,820 --> 00:25:20,350 isang bagay na hindi talaga kahit sa C, ngunit lalo na para sa mga nang higit pa 497 00:25:20,350 --> 00:25:24,030 mapaghamong mga algorithm at problema sets na mayroon kami upang malaman kung, 498 00:25:24,030 --> 00:25:27,210 nagsisimula sa hindi nag-aalala pseudocode tungkol sa syntax, nag-aalala lamang tungkol sa 499 00:25:27,210 --> 00:25:29,150 ang logic, ay hindi mapaniniwalaan o kapani-paniwala kapaki-pakinabang. 500 00:25:29,150 --> 00:25:32,720 At na paraan, hindi ka naka-solve ng dalawang hindi mapaniniwalaan o kapani-paniwala na problema nang sabay-sabay. 501 00:25:32,720 --> 00:25:35,390 Lamang tumutuon ka sa logic, at pagkatapos ay ilipat mo sa syntax. 502 00:25:35,390 --> 00:25:59,960 503 00:25:59,960 --> 00:26:01,385 >> OK. 504 00:26:01,385 --> 00:26:03,680 Ni magsimula ng pagpunta sa pamamagitan ng Hayaan ang pseudocode. 505 00:26:03,680 --> 00:26:05,380 Ko na nakasulat up dito, binary paghahanap pseudocode. 506 00:26:05,380 --> 00:26:07,360 Susubukan naming isulat ito sa sasakay magkasama. 507 00:26:07,360 --> 00:26:10,040 O kaya makakakita isulat ko ito at bibigyan mo sa akin ang mga senyas na kailangan ko. 508 00:26:10,040 --> 00:26:15,010 Kaya maaari kahit sino bigyan ang unang akin linya ng pseudocode mo 509 00:26:15,010 --> 00:26:18,350 Sinulat ni para sa binary paghahanap? 510 00:26:18,350 --> 00:26:20,258 Oo, Annie? 511 00:26:20,258 --> 00:26:22,698 >> AARAL: Habang ang haba ng listahan ay mas mataas sa zero. 512 00:26:22,698 --> 00:26:26,114 513 00:26:26,114 --> 00:26:34,880 >> Jason HIRSCHHORN: Habang haba ng ilista mas mataas sa zero. 514 00:26:34,880 --> 00:26:38,810 At muli, makita namin ang ilang C-naghahanap syntactical bagay sa dito. 515 00:26:38,810 --> 00:26:41,550 Ngunit karamihan sa mga ito ay nasa wikang Ingles. 516 00:26:41,550 --> 00:26:43,980 Ba ang sinuman magkaroon ng anumang mga line nila ilagay bago ito sa kanilang palsipikado-code? 517 00:26:43,980 --> 00:26:47,280 518 00:26:47,280 --> 00:26:50,210 >> AARAL: Kumuha ng isang array ng pinagsunod-sunod ng mga numero. 519 00:26:50,210 --> 00:26:53,600 >> Jason HIRSCHHORN: Isinulat ni Ikaw "makakuha ng isang array ng pinagsunod-sunod ng mga numero. "Ayun sa 520 00:26:53,600 --> 00:26:56,140 function na deklarasyon, magpapadala kami ay pagpasa isang array ng pinagsunod-sunod ng mga numero. 521 00:26:56,140 --> 00:26:57,280 >> AARAL: [hindi marinig]. 522 00:26:57,280 --> 00:26:59,030 >> Jason HIRSCHHORN: Kaya magkakaroon kami ng iyon. 523 00:26:59,030 --> 00:27:01,820 Ngunit oo, kung kami ay hindi mayroon na, kami kakailanganin upang pagbukud-bukurin ang aming hanay ng mga 524 00:27:01,820 --> 00:27:04,850 mga numero, dahil binary paghahanap Gumagana lamang sa pinagsunod-sunod array. 525 00:27:04,850 --> 00:27:11,300 Kaya habang haba ng listahan ay katumbas ng zero, ako pagpunta sa ilagay sa ilang mga kulot tirante 526 00:27:11,300 --> 00:27:15,420 upang gawin itong hitsura ng kaunti mas katulad C. Ngunit habang, tila upang i-map sa isang 527 00:27:15,420 --> 00:27:19,550 habang loop, kaya sa loob ito habang loop kung ano ang kailangan namin upang 528 00:27:19,550 --> 00:27:22,000 gawin para sa binary paghahanap? 529 00:27:22,000 --> 00:27:25,530 >> May ibang na hindi sa akin ibinigay na isang sagutin pa ngunit sino ay sumulat na ito? 530 00:27:25,530 --> 00:27:31,750 531 00:27:31,750 --> 00:27:33,320 >> AARAL: Pumunta sa gitna ng listahan. 532 00:27:33,320 --> 00:27:33,980 >> Jason HIRSCHHORN: Tom. 533 00:27:33,980 --> 00:27:35,230 Pumunta sa gitna ng listahan. 534 00:27:35,230 --> 00:27:43,290 535 00:27:43,290 --> 00:27:45,530 At ang tanong follow-up, kung ano ang gagawin namin sa sandaling kami ay sa 536 00:27:45,530 --> 00:27:46,870 gitna ng listahan? 537 00:27:46,870 --> 00:27:49,310 >> AARAL: Gagawin ng isang tseke kung na ang numero na iyong hinahanap. 538 00:27:49,310 --> 00:27:50,120 >> Jason HIRSCHHORN: Mahusay. 539 00:27:50,120 --> 00:28:05,500 Pumunta sa gitna ng listahan at suriin kung ang aming halaga ay doon - 540 00:28:05,500 --> 00:28:06,515 hindi kapani-paniwala. 541 00:28:06,515 --> 00:28:10,460 Kahit sinong mayroon ba ng ano pa man na noon ay iba kaysa ito? 542 00:28:10,460 --> 00:28:11,210 Iyan ay akmang-akma. 543 00:28:11,210 --> 00:28:13,800 >> Ang unang bagay na aming ginagawa sa binary paghahanap ay pumunta sa gitna ng listahan at 544 00:28:13,800 --> 00:28:15,870 suriin upang makita kung ang aming halaga ay doon. 545 00:28:15,870 --> 00:28:19,682 Kaya ipinapalagay ko kung ang aming halaga ay doon, anong gagawin namin? 546 00:28:19,682 --> 00:28:21,610 >> AARAL: bumalik kami ng zero [hindi marinig]. 547 00:28:21,610 --> 00:28:23,400 >> Jason HIRSCHHORN: Oo, kung ang aming halaga ay doon, natuklasan namin na ito. 548 00:28:23,400 --> 00:28:27,950 Kaya maaari naming sabihin sa ilang mga paraan, gayunpaman ito function ay tinukoy, sabihin namin ang user 549 00:28:27,950 --> 00:28:28,520 natuklasan namin na ito. 550 00:28:28,520 --> 00:28:30,950 Kung ito ay hindi doon, bagaman, na kung saan nakakalito ito ay nakakakuha. 551 00:28:30,950 --> 00:28:35,120 Kaya kung ito ay hindi doon, ibang tao na nag- ay nagtatrabaho sa binary paghahanap o 552 00:28:35,120 --> 00:28:36,830 ay isang ideya na ngayon, anong gagawin namin? 553 00:28:36,830 --> 00:28:37,830 >> AARAL: Tanong. 554 00:28:37,830 --> 00:28:38,100 >> Jason HIRSCHHORN: Oo? 555 00:28:38,100 --> 00:28:39,920 >> AARAL: Ay ang array na pinagsunod-sunod? 556 00:28:39,920 --> 00:28:42,200 >> Jason HIRSCHHORN: Oo, ipinapadala namin sa pag-aakala ang array ay naka-pinagsunod-sunod. 557 00:28:42,200 --> 00:28:46,480 >> AARAL: Kaya pagkatapos ay mayroon kang upang suriin kung ang halaga na iyong nakikita ay mas malaki sa 558 00:28:46,480 --> 00:28:51,745 ang halaga na nais mo, maaari mong ilipat ang sa gitna ng iba pang kalahati. 559 00:28:51,745 --> 00:28:54,110 >> Jason HIRSCHHORN: Kaya kung sa gitna ng ang listahan ay mas malaki kaysa sa kung ano kami ay 560 00:28:54,110 --> 00:28:57,440 hinahanap, pagkatapos ko namin kung ano? 561 00:28:57,440 --> 00:28:58,320 Ilipat namin saan? 562 00:28:58,320 --> 00:29:01,400 >> AARAL: Gusto mong ilipat sa ang kalahati ng listahan na may 563 00:29:01,400 --> 00:29:02,780 mga numero ng mas mababa kaysa sa na. 564 00:29:02,780 --> 00:29:04,460 >> Jason HIRSCHHORN: Kaya kami ay tumawag na sa kaliwa. 565 00:29:04,460 --> 00:29:15,435 Kaya kung gitna ay mas malaki, maaari naming maghanap ang natitira kalahati ng listahan. 566 00:29:15,435 --> 00:29:20,620 567 00:29:20,620 --> 00:29:22,980 At pagkatapos ay sa pamamagitan ng paghahanap, kung ano ang ibig sabihin ko sa pamamagitan ng paghahanap? 568 00:29:22,980 --> 00:29:24,010 >> AARAL: [hindi marinig]. 569 00:29:24,010 --> 00:29:24,410 >> Jason HIRSCHHORN: pumunta kami sa gitna. 570 00:29:24,410 --> 00:29:25,740 Talaga namin ulitin ang bagay na ito. 571 00:29:25,740 --> 00:29:29,210 Pumunta namin pabalik sa pamamagitan ng aming habang loop. 572 00:29:29,210 --> 00:29:31,480 Bibigyan kita ng ang huli - 573 00:29:31,480 --> 00:29:39,047 pa man, kung, gitna ay mas mababa sa kung ano ang namin, ano ang gagawin namin dito? 574 00:29:39,047 --> 00:29:40,360 >> AARAL: Pumunta sa kanan. 575 00:29:40,360 --> 00:29:41,610 >> Jason HIRSCHHORN: Paghahanap sa kanan. 576 00:29:41,610 --> 00:29:47,440 577 00:29:47,440 --> 00:29:51,710 Mukhang ito ay mabuti, ngunit mayroon ang kahit sino anumang bagay na maaari naming nawawala o 578 00:29:51,710 --> 00:29:53,200 anumang bagay na inilagay mo sa iyong palsipikado-code? 579 00:29:53,200 --> 00:29:57,080 580 00:29:57,080 --> 00:29:58,410 Kaya ito ay kung ano ang mayroon kami sa ngayon. 581 00:29:58,410 --> 00:30:00,960 Habang ang haba ng listahan ay mas malaki sa zero, kami ay pagpunta sa pumunta 582 00:30:00,960 --> 00:30:03,220 sa gitna ng listahan at suriin kung ang aming halaga ay doon. 583 00:30:03,220 --> 00:30:06,970 >> Kung gitna ay mas malaki, kami ay pagpunta sa maghanap kaliwa, iba kung ang gitna ay 584 00:30:06,970 --> 00:30:09,230 mas kaunti, kami ay pagpunta upang maghanap sa kanan. 585 00:30:09,230 --> 00:30:14,430 Kaya ang lahat ng mayroon kaming ilang lubos na pagkikilala sa ang mga tuntunin na ginagamit namin sa computer science 586 00:30:14,430 --> 00:30:15,550 at ang mga tool na mayroon kami. 587 00:30:15,550 --> 00:30:18,300 Ngunit masisiyahan na napansin mo kami ay nagsasalita sa Ingles, ngunit natagpuan namin ang isang 588 00:30:18,300 --> 00:30:24,790 maraming mga bagay na tila upang i-map sa sa mga tool na mayroon kami sa aming coding tool kit. 589 00:30:24,790 --> 00:30:27,210 Kaya karapatan off ang bat, hindi kami pagpunta sa aktwal pa code. 590 00:30:27,210 --> 00:30:33,300 >> Ano ang nakikita namin dito sa Ingles na mga mapa on sa mga bagay na maaari naming magsulat sa C? 591 00:30:33,300 --> 00:30:34,560 >> AARAL: Habang. 592 00:30:34,560 --> 00:30:35,320 >> Jason HIRSCHHORN: Habang. 593 00:30:35,320 --> 00:30:40,610 Kaya dito mismo ito habang mga mapa sa sa kung ano? 594 00:30:40,610 --> 00:30:42,630 >> AARAL: Ang isang habang loop. 595 00:30:42,630 --> 00:30:43,200 >> Jason HIRSCHHORN: Ang isang habang loop? 596 00:30:43,200 --> 00:30:44,540 O marahil, higit pa sa pangkalahatan, isang loop. 597 00:30:44,540 --> 00:30:46,260 Gusto naming gawin ang isang bagay nang paulit-ulit. 598 00:30:46,260 --> 00:30:49,050 Kaya kami ay pagpunta sa code ng loop. 599 00:30:49,050 --> 00:30:51,640 At namin alam, dahil nagawa mo na kami ito ng ilang beses at hindi na namin 600 00:30:51,640 --> 00:30:54,180 magkaroon ng maraming mga halimbawa out doon, kung paano talaga magsulat ng 601 00:30:54,180 --> 00:30:55,310 ito index para sa isang loop. 602 00:30:55,310 --> 00:30:56,160 Kaya na ay dapat na medyo madali. 603 00:30:56,160 --> 00:30:58,070 Dapat nating magagawang upang makakuha ng na Sinimulan medyo mabilis. 604 00:30:58,070 --> 00:31:01,830 >> Ano pa ang nakikita namin in dito? 605 00:31:01,830 --> 00:31:06,820 Ano ang iba pang mga istraktura syntaxes, mga bagay na kami ay pamilyar sa sa C, ang ginagawa namin 606 00:31:06,820 --> 00:31:09,790 ay mayroon ng isang pakiramdam ng pagkakaroon ng Batay off sa mga salita na ginamit namin? 607 00:31:09,790 --> 00:31:10,830 Oo, Anna? 608 00:31:10,830 --> 00:31:11,360 [Hindi marinig] 609 00:31:11,360 --> 00:31:12,990 lamang kidding. 610 00:31:12,990 --> 00:31:13,540 Anna, sige. 611 00:31:13,540 --> 00:31:14,530 >> AARAL: Kung at iba pa. 612 00:31:14,530 --> 00:31:16,260 >> Jason HIRSCHHORN: Kung at iba pa - dito mismo. 613 00:31:16,260 --> 00:31:18,840 Kaya ano ang mga hitsura? 614 00:31:18,840 --> 00:31:20,420 >> AARAL: Ang isang kung iba statement. 615 00:31:20,420 --> 00:31:21,560 >> Jason HIRSCHHORN: Oo, kundisyon, tama? 616 00:31:21,560 --> 00:31:24,650 Kaya makikita marahil na kailangan namin upang sumulat ng ilang mga kundisyon. 617 00:31:24,650 --> 00:31:31,185 At muli, kahit na siguro ay nakalilito sa una, sa pangkalahatan namin ay mayroon na ngayong isang katuturan 618 00:31:31,185 --> 00:31:34,010 ng kung paano sumulat ng mga kundisyon at ang syntax para sa mga kundisyon. 619 00:31:34,010 --> 00:31:36,850 At kung hindi namin, tingnan lamang namin ang hanggang sa syntax para sa mga kondisyon, cut at i-paste ang 620 00:31:36,850 --> 00:31:39,950 na, dahil alam namin namin kailangan kundisyon dito. 621 00:31:39,950 --> 00:31:44,910 Anumang iba pang mga bagay na nakikita namin na mapa papunta sa mga bagay na maaari kailangan naming gawin sa C? 622 00:31:44,910 --> 00:31:48,312 623 00:31:48,312 --> 00:31:48,960 Oo, Aleha? 624 00:31:48,960 --> 00:31:50,370 >> AARAL: maaaring ito halata, sa pamamagitan lamang ng pagsuri kung ang isang 625 00:31:50,370 --> 00:31:51,990 halaga ay katumbas ng isang bagay. 626 00:31:51,990 --> 00:31:54,578 >> Jason HIRSCHHORN: Kaya paano suriin namin at - upang pumunta sa gitna ng listahan 627 00:31:54,578 --> 00:31:55,610 at suriin kung ang aming halaga ay doon? 628 00:31:55,610 --> 00:31:56,570 Paano ang gagawin namin na sa C? 629 00:31:56,570 --> 00:31:58,450 Ano ang syntax para sa iyon? 630 00:31:58,450 --> 00:31:59,235 >> AARAL: Kapantay, katumbas. 631 00:31:59,235 --> 00:32:00,650 >> Jason HIRSCHHORN: Kapantay, katumbas. 632 00:32:00,650 --> 00:32:03,540 Kaya ang pagsusuring ito ay marahil pagpunta upang maging isang katumbas, ay katumbas ng. 633 00:32:03,540 --> 00:32:04,510 Kaya makikita natin alam kailangan namin na sa isang lugar. 634 00:32:04,510 --> 00:32:07,510 At talagang, lamang sa pagsusulat ng mga ito, nakikita namin ang mga iba pang mga bagay. 635 00:32:07,510 --> 00:32:11,400 Kami ay pagpunta sa may upang gumawa ng ilang operator paghahambing sa doon - 636 00:32:11,400 --> 00:32:12,010 hindi kapani-paniwala. 637 00:32:12,010 --> 00:32:14,980 Kaya talaga ito kamukha, sa pamamagitan ng at malaki, hindi pa namin nagsulat ng isang 638 00:32:14,980 --> 00:32:16,390 salita ng C code pa. 639 00:32:16,390 --> 00:32:20,610 Ngunit nakuha namin ang sakit sa modelo pababa sa pamamagitan ng mga aralin at mga shorts. 640 00:32:20,610 --> 00:32:22,350 >> Sinulat ni namin palsipikado-code bilang isang grupo. 641 00:32:22,350 --> 00:32:27,110 At mayroon, mayroon kaming 80% kung hindi 90% ng kung ano ang kailangan naming gawin. 642 00:32:27,110 --> 00:32:28,550 Ngayon, kailangan lang namin sa code ito, na muli, ay isang 643 00:32:28,550 --> 00:32:30,110 non-walang halaga problema sa paglutas. 644 00:32:30,110 --> 00:32:31,890 Ngunit hindi bababa sa kami ay natigil sa mga logic. 645 00:32:31,890 --> 00:32:38,040 Hindi bababa sa ngayon kapag pumunta kami sa oras ng opisina, Maaari kong sabihin, alam ko kung ano ang kailangan ko 646 00:32:38,040 --> 00:32:40,160 upang gawin, ngunit maaari kang ipaalala sa akin ng syntax? 647 00:32:40,160 --> 00:32:42,940 O kaya kahit na oras ng opisina ay matao, mo Kaya ba ng Google para sa syntax, sa halip 648 00:32:42,940 --> 00:32:45,040 kaysa ini natigil sa logic. 649 00:32:45,040 --> 00:32:48,570 >> At muli, sa halip na sinusubukan mong i-solve ang logic at ang syntax problema lahat 650 00:32:48,570 --> 00:32:51,900 nang sabay-sabay, ito ay madalas na mas mas mahusay na masira ang dalawang matapang na mga problema sa off 651 00:32:51,900 --> 00:32:58,280 dalawang higit na mapapamahalaan mga bago at gawin ang hindi tunay na code muna at pagkatapos ay code sa C. 652 00:32:58,280 --> 00:33:00,620 Kaya sabihin makita kung ano ang aking ginawa para sa hindi tunay na code maagang ng panahon. 653 00:33:00,620 --> 00:33:04,060 >> Habang ang haba ng listahan ay mas malaki sa zero, tingnan sa gitna 654 00:33:04,060 --> 00:33:05,090 ng listahan. 655 00:33:05,090 --> 00:33:09,610 Kung nahanap numero ibinalik totoo, iba kung mas mataas ang numero, paghahanap kaliwa. 656 00:33:09,610 --> 00:33:13,200 Iba Pa kung numero ng mas mababa, paghahanap kanan, bumalik hindi totoo. 657 00:33:13,200 --> 00:33:18,710 Kaya mukhang halos magkapareho kung hindi na halos katulad sa kung ano ang sinulat ni namin. 658 00:33:18,710 --> 00:33:23,030 Talaga, Tom, kung ano ang iyong unang sinabi, breaking sa gitna ng listahan at kung 659 00:33:23,030 --> 00:33:24,880 numero natagpuan sa dalawang mga pahayag ay ang tunay kong ginawa. 660 00:33:24,880 --> 00:33:25,507 >> Pinagsama ko ang mga ito doon. 661 00:33:25,507 --> 00:33:27,100 Dapat ko pa nakinig sa mo sa unang pagkakataon. 662 00:33:27,100 --> 00:33:30,640 Kaya na ay ang palsipikado-code na mayroon kami. 663 00:33:30,640 --> 00:33:35,060 Kung nais mong ngayon, paumanhin, pumunta i-back sa aming paunang problema. 664 00:33:35,060 --> 00:33:37,780 Ni code binary.c Hayaan. 665 00:33:37,780 --> 00:33:40,870 Kaya ipatupad ang isang umuulit na bersyon ng binary paghahanap gamit ang mga sumusunod 666 00:33:40,870 --> 00:33:42,420 function na deklarasyon. 667 00:33:42,420 --> 00:33:44,550 >> At hindi mo kailangang kopyahin ito pababa pa lamang. 668 00:33:44,550 --> 00:33:49,470 Talagang pupuntahan ko buksan up dito mismo binary.c. 669 00:33:49,470 --> 00:33:52,880 Kaya doon ay ang function na pagpapahayag sa gitna ng screen. 670 00:33:52,880 --> 00:33:57,570 At makikita mo kinuha ko ang mga hindi tunay na code mula sa aking mga gilid, ngunit halos magkapareho 671 00:33:57,570 --> 00:33:59,740 sa kung ano ang namin ay sumulat, at ilagay na sa para sa iyo. 672 00:33:59,740 --> 00:34:06,010 Kaya ngayon, sabihin tumagal ng limang minuto sa code na ito function. 673 00:34:06,010 --> 00:34:08,199 >> At muli, kung mayroon kang anumang mga katanungan, itaas ang iyong mga kamay, ipaalam sa akin, idedetalye ko 674 00:34:08,199 --> 00:34:08,710 dumating sa paligid. 675 00:34:08,710 --> 00:34:09,800 >> AARAL: [hindi marinig]. 676 00:34:09,800 --> 00:34:12,380 >> Jason HIRSCHHORN: Kaya kinuha ko ang mga binary Kahulugan ng paghahanap sa 677 00:34:12,380 --> 00:34:14,429 tuktok, sa 12 linya. 678 00:34:14,429 --> 00:34:16,429 Iyon ay kung ano Nakatanggap ako para sa aking mga slide. 679 00:34:16,429 --> 00:34:20,940 At pagkatapos ang lahat ng ito palsipikado-code ko lang kopyahin at ilagay sa slide, 680 00:34:20,940 --> 00:34:22,190 hindi tunay na code slide. 681 00:34:22,190 --> 00:35:22,830 682 00:35:22,830 --> 00:35:26,786 Pa rin ako hindi pandinig [hindi marinig]. 683 00:35:26,786 --> 00:37:13,010 684 00:37:13,010 --> 00:37:15,820 >> Kaya kung natapos mo na ang iyong pagpapatupad, gusto kong suriin ito. 685 00:37:15,820 --> 00:37:19,410 Nag-email ako sa iyo ang helpers.h file mas maaga sa class na ito. 686 00:37:19,410 --> 00:37:22,360 At ito ang magiging online na magagamit pati na rin para sa pag-download para sa mga taong nanonood 687 00:37:22,360 --> 00:37:24,750 sa pagkakataong ito seksyon maantala. 688 00:37:24,750 --> 00:37:29,350 At ako ginamit lamang ang generic na pamamahagi code mula pset3. 689 00:37:29,350 --> 00:37:34,590 Kaya kinuha ko find.C, gamitin ang aking helpers.h file sa halip na ang helpers.h file 690 00:37:34,590 --> 00:37:36,280 na ibinigay sa code ng pamamahagi. 691 00:37:36,280 --> 00:37:39,310 >> At nagkaroon kong gumawa ng isa sa iba pang mga pagbabago sa find.C sa halip na sa pagtawag nang simple lamang 692 00:37:39,310 --> 00:37:42,770 paghahanap, tumawag binary_search. 693 00:37:42,770 --> 00:37:49,080 Kaya kung nais mong subukan ang iyong code, alam na iyon ay kung paano ito gawin. 694 00:37:49,080 --> 00:37:52,530 Sa katunayan, kapag magpapadala kami ay tumatakbo ang code na ito sa ngayon, kamakailan lamang ako ng isang kopya ng 695 00:37:52,530 --> 00:37:59,820 aking direktoryo pset3, muli, swapped out ang Katulong file at pagkatapos ay ginawa na 696 00:37:59,820 --> 00:38:04,695 baguhin sa find.C na tumawag binary_search sa halip na lamang sa paghahanap. 697 00:38:04,695 --> 00:40:08,620 698 00:40:08,620 --> 00:40:09,120 >> Jason HIRSCHHORN: Oo. 699 00:40:09,120 --> 00:40:11,258 Mayroon kang isang katanungan? 700 00:40:11,258 --> 00:40:12,150 >> AARAL: Hindi bale na. 701 00:40:12,150 --> 00:40:12,600 >> Jason HIRSCHHORN: Huwag mag-alala. 702 00:40:12,600 --> 00:40:13,370 Well, sabihin makapagsimula. 703 00:40:13,370 --> 00:40:15,090 Gagamitin namin ang code na ito bilang isang grupo. 704 00:40:15,090 --> 00:40:16,050 Isa iba pang mga tala. 705 00:40:16,050 --> 00:40:20,600 Muli, ito ay, maaari madaling swapped in para sa Problema Set Tatlong. 706 00:40:20,600 --> 00:40:25,530 Mayroon akong aking helpers.h file na kung saan, sa halip kaysa sa helpers.h kami ay ibinigay, 707 00:40:25,530 --> 00:40:28,560 declares binary paghahanap, bubble -uri-uriin, at uri pagpili. 708 00:40:28,560 --> 00:40:37,400 At sa find.c mapapansin mo sa linya, ano ang na, 68 linya, tinatawag naming binary 709 00:40:37,400 --> 00:40:39,160 maghanap sa halip na paghahanap. 710 00:40:39,160 --> 00:40:42,930 Kaya muli, ang code na magagamit online o ang code na ikaw ay 711 00:40:42,930 --> 00:40:46,590 paglikha ngayon ay madaling swapped in para sa set p 3 upang suriin ito. 712 00:40:46,590 --> 00:40:50,620 >> Ngunit una, code ng binary paghahanap ipaalam. 713 00:40:50,620 --> 00:40:53,690 Ang aming mga pag-andar na pagpapahayag, bumalik kami ng isang bool. 714 00:40:53,690 --> 00:40:55,810 Tumagal kami ng isang integer value na tinatawag. 715 00:40:55,810 --> 00:40:59,285 Isinasaalang-alang namin ang isang hanay ng mga integer na tinatawag na mga halaga, at lubos naming n maging 716 00:40:59,285 --> 00:41:00,850 ang laki ng array. 717 00:41:00,850 --> 00:41:05,640 Sa linya 10, dito mismo, mayroon akong matalim isama stdbool.h. 718 00:41:05,640 --> 00:41:07,360 Kahit sino Alam ba kung bakit iyon doon? 719 00:41:07,360 --> 00:41:12,180 720 00:41:12,180 --> 00:41:16,600 Kaya kung ano ang na linya ng code? 721 00:41:16,600 --> 00:41:19,880 >> AARAL: Pinapayagan ka nitong gumamit ng isang uri bool return. 722 00:41:19,880 --> 00:41:20,350 >> Jason HIRSCHHORN: Mismong. 723 00:41:20,350 --> 00:41:22,300 >> AARAL: O ito ay isang library na nagbibigay-daan gumamit ng isang uri bool return. 724 00:41:22,300 --> 00:41:27,590 >> Jason HIRSCHHORN: Kaya ang matalim isama Binibigyan ako stdbool.h linya ilan 725 00:41:27,590 --> 00:41:31,340 mga kahulugan at mga deklarasyon para sa mga bagay na ako ay pinapayagan na gamitin sa 726 00:41:31,340 --> 00:41:32,400 ito library. 727 00:41:32,400 --> 00:41:36,570 Kaya bukod sa mga ito ay nagsasabi na mayroong ganitong uri na tinatawag na bool, at maaari itong maging 728 00:41:36,570 --> 00:41:37,750 totoo o hindi. 729 00:41:37,750 --> 00:41:39,010 Kaya na kung ano ang ginagawa na linya. 730 00:41:39,010 --> 00:41:41,680 At kung hindi ko kinailangang na linya, nais ko kumuha sa problema para sa pagsusulat ng mga ito 731 00:41:41,680 --> 00:41:43,520 salita dito mismo, bool, mula doon. 732 00:41:43,520 --> 00:41:44,140 Akmang-akma. 733 00:41:44,140 --> 00:41:46,430 Kaya kailangan ko na sa code na ito. 734 00:41:46,430 --> 00:41:47,690 OK. 735 00:41:47,690 --> 00:41:51,860 Kaya ito, muli, ay isang umuulit bersyon, hindi isang isa recursive. 736 00:41:51,860 --> 00:41:53,820 Kaya ipaalam sa amin magsimula. 737 00:41:53,820 --> 00:41:56,200 >> Magsimula tayo sa unang ito Hayaan linya ng palsipikado code. 738 00:41:56,200 --> 00:41:58,770 At sana, kami ay - o hindi sana. 739 00:41:58,770 --> 00:42:00,530 Kami ay pagpunta sa pumunta sa paligid ng kuwarto. 740 00:42:00,530 --> 00:42:05,110 Susubukan naming pumunta linya sa pamamagitan ng linya, at ako ay tulungan mong malaman kung ang linya na kailangan namin 741 00:42:05,110 --> 00:42:06,310 sa unang magsulat. 742 00:42:06,310 --> 00:42:10,550 Kaya habang haba ng listahan ay mas mataas sa zero. 743 00:42:10,550 --> 00:42:12,680 Magsimula tayo sa harap Hayaan. 744 00:42:12,680 --> 00:42:15,190 Ano linya ang dapat kong isulat dito, sa code? 745 00:42:15,190 --> 00:42:19,470 >> AARAL: Habang panaklong n ay mas malaki kaysa sa 0. 746 00:42:19,470 --> 00:42:21,900 >> Jason HIRSCHHORN: Habang n ay mahusay kaysa sa 0. 747 00:42:21,900 --> 00:42:26,550 Kaya n ay ang laki ng isang listahan, at kami ay pagsusuri kung - 748 00:42:26,550 --> 00:42:26,800 >> [INTERPOSING tinig] 749 00:42:26,800 --> 00:42:27,660 >> Jason HIRSCHHORN: - paumanhin? 750 00:42:27,660 --> 00:42:29,360 >> AARAL: Paano ko malalaman namin na n ay ang laki ng mga listahan? 751 00:42:29,360 --> 00:42:29,690 >> Jason HIRSCHHORN: Paumanhin. 752 00:42:29,690 --> 00:42:34,690 Ayun sa pagtutukoy pset, ang paghahanap at uri mga pag-andar na kailangan mo upang sumulat, 753 00:42:34,690 --> 00:42:36,230 n ay ang laki ng mga listahan. 754 00:42:36,230 --> 00:42:37,710 Nakalimutan ko ang upang ipaliwanag na dito. 755 00:42:37,710 --> 00:42:41,310 Ngunit oo. n ay ang laki ng ang listahan, sa kasong ito. 756 00:42:41,310 --> 00:42:44,740 Kaya habang n ay mas malaki kaysa sa 0. 757 00:42:44,740 --> 00:42:45,580 OK. 758 00:42:45,580 --> 00:42:50,090 Na maaaring mapatunayan na medyo may problemang bagaman, kung bagay pumunta sa. 759 00:42:50,090 --> 00:42:54,510 Dahil patuloy naming malaman ang laki ng mga listahan sa buong ito 760 00:42:54,510 --> 00:43:06,640 function, ngunit sinasabi simulan namin off may isang hanay ng mga 5 integer. 761 00:43:06,640 --> 00:43:08,950 At pumunta kami sa pamamagitan ng at hindi namin ngayon narrowed ito pababa sa 762 00:43:08,950 --> 00:43:10,310 isang array ng 2 integer. 763 00:43:10,310 --> 00:43:12,160 Aling 2 integer ay na? 764 00:43:12,160 --> 00:43:15,895 Ang laki ay 2 ngayon na gusto naming tumingin sa, ngunit kung saan 2 ay na? 765 00:43:15,895 --> 00:43:17,720 Ba na magkaroon ng kahulugan, na katanungan? 766 00:43:17,720 --> 00:43:18,020 >> OK. 767 00:43:18,020 --> 00:43:19,120 Kukunin ko hilingin itong muli. 768 00:43:19,120 --> 00:43:26,640 Kaya simulan-off kami na may ganitong array ng 5 integer, at n ay katumbas ng 5, tama? 769 00:43:26,640 --> 00:43:28,050 Susubukan naming patakbuhin sa pamamagitan dito. 770 00:43:28,050 --> 00:43:31,560 ipapakita namin marahil baguhin ang laki, karapatan, bilang mga bagay na pumunta sa. 771 00:43:31,560 --> 00:43:32,700 Alin ang kung ano ang sinasabi namin na gusto naming gawin. 772 00:43:32,700 --> 00:43:34,150 Hindi namin gusto upang maghanap ang buong bagay muli. 773 00:43:34,150 --> 00:43:35,480 Kaya nating palitan namin ito sa 2. 774 00:43:35,480 --> 00:43:36,970 Isinasaalang-alang namin ang kalahati ng mga listahan na kakaiba. 775 00:43:36,970 --> 00:43:38,800 Kaya't piliin ang 2 lamang. 776 00:43:38,800 --> 00:43:40,590 Kaya ngayon n ay katumbas ng 2. 777 00:43:40,590 --> 00:43:42,780 Humihingi ako ng paumanhin para sa mahihirap dry Burahin marker. 778 00:43:42,780 --> 00:43:43,080 Mag-right? 779 00:43:43,080 --> 00:43:45,670 At kami ay naghahanap sa listahan muli gamit ang isang listahan ng mga sukat 2. 780 00:43:45,670 --> 00:43:48,580 Well, ang aming array ay ng laki 5 pa rin. 781 00:43:48,580 --> 00:43:51,920 Sasabihin namin na gusto lamang naming maghanap 2 spot sa loob nito. 782 00:43:51,920 --> 00:43:53,590 Kaya kung aling 2 spot ay ang mga? 783 00:43:53,590 --> 00:43:57,640 784 00:43:57,640 --> 00:43:58,815 >> Ba na magkaroon ng kahulugan? 785 00:43:58,815 --> 00:44:00,290 Sigurado sila sa kaliwa 2 spot? 786 00:44:00,290 --> 00:44:01,940 Sigurado sila karapatan 2 spot? 787 00:44:01,940 --> 00:44:03,540 Sigurado nila sa gitna ng 2 spot? 788 00:44:03,540 --> 00:44:06,350 Sinuway namin ang problema down, ngunit namin talagang hindi alam kung aling mga bahagi ng 789 00:44:06,350 --> 00:44:11,600 ang problema kaming naghahanap pa rin sa, lamang sa pamamagitan ng pagkakaroon ng mga 2 mga variable. 790 00:44:11,600 --> 00:44:16,450 Kaya kailangan namin ng kaunti ang nalalaman pagkatapos, habang n ay mas malaki kaysa sa 0. 791 00:44:16,450 --> 00:44:21,410 Kailangan naming malaman kung saan na n ay nasa aming mga aktwal na array. 792 00:44:21,410 --> 00:44:26,660 >> Kaya ang kahit sino ay may isang baguhin upang ang linyang ito? 793 00:44:26,660 --> 00:44:27,970 Karamihan sa mga linyang ito ay ganap na ganap tama. 794 00:44:27,970 --> 00:44:29,170 Mayroon bang isa pang karagdagan? 795 00:44:29,170 --> 00:44:32,510 Puwede ba kaming magpalit ng isang bagay out para sa n gumawa ng linyang ito ng kaunti mas mahusay? 796 00:44:32,510 --> 00:44:32,865 Mm-Hm? 797 00:44:32,865 --> 00:44:38,040 >> AARAL: Maaari mong simulan ang isang variable tulad ng haba sa n na makikita pagkatapos gamitin 798 00:44:38,040 --> 00:44:39,600 sa ibang pagkakataon sa pag-andar? 799 00:44:39,600 --> 00:44:42,060 >> Jason HIRSCHHORN: Kaya initialize isang variable na haba sa n, 800 00:44:42,060 --> 00:44:42,900 at ginagamit namin na sa ibang pagkakataon? 801 00:44:42,900 --> 00:44:47,070 Ngunit pagkatapos ay i-update lang namin haba at kami tumakbo pa rin sa problemang ito kung saan kami 802 00:44:47,070 --> 00:44:51,180 cut down na ang haba ng aming mga problema, ngunit hindi namin alam kung saan, talaga, 803 00:44:51,180 --> 00:44:52,510 na haba maps papunta. 804 00:44:52,510 --> 00:44:54,790 >> AARAL: Ay hindi na mangyayari mamaya kapag tapos ka na nagsasabi, maghanap kaliwa, 805 00:44:54,790 --> 00:44:55,746 maghanap tama? 806 00:44:55,746 --> 00:44:57,640 Ikaw ay pagpunta sa pumunta sa isang iba't ibang mga lugar ng iyong - 807 00:44:57,640 --> 00:44:59,110 >> Jason HIRSCHHORN: Kami ay pagpunta sa pumunta sa isang lugar, ngunit kung paano ang kilala namin 808 00:44:59,110 --> 00:45:01,150 na kung saan ay upang pumunta sa? 809 00:45:01,150 --> 00:45:03,800 Kung kami ay may array at ito lamang n, paano ko malalaman namin kung saan upang 810 00:45:03,800 --> 00:45:05,050 pumunta sa sa array. 811 00:45:05,050 --> 00:45:05,900 Sa likod, yes? 812 00:45:05,900 --> 00:45:07,507 >> AARAL: Mayroon ka bang, tulad ng, ang isang mas mababang tumalbog at isang pang-itaas nakatali variable o 813 00:45:07,507 --> 00:45:08,586 ang isang bagay tulad na? 814 00:45:08,586 --> 00:45:09,060 >> Jason HIRSCHHORN: OK. 815 00:45:09,060 --> 00:45:10,780 Kaya ito ay isa pang ideya. 816 00:45:10,780 --> 00:45:13,490 Kaysa sa pagpapanatiling lamang track ng laki, panatilihin namin ang track ng mas mababa at 817 00:45:13,490 --> 00:45:14,770 itaas na nakatali variable. 818 00:45:14,770 --> 00:45:17,840 Kaya paano kinakalkula namin ang laki mula sa isang mas mababang nakatali at itaas na may balat? 819 00:45:17,840 --> 00:45:18,520 >> [INTERPOSING tinig] 820 00:45:18,520 --> 00:45:19,710 >> Jason HIRSCHHORN: palabawasan. 821 00:45:19,710 --> 00:45:23,650 At din pagpapanatiling track ng mas mababang nakatali at itaas na nakatali sa ipaalam sa amin, 822 00:45:23,650 --> 00:45:26,215 ay namin ang paghahanap sa dalawang? 823 00:45:26,215 --> 00:45:28,220 Sigurado namin ang paghahanap sa dalawang sa paglipas dito? 824 00:45:28,220 --> 00:45:29,540 Sigurado namin ang paghahanap sa dalawang gitna? 825 00:45:29,540 --> 00:45:32,810 Marahil hindi ito ang dalawang gitnang, dahil ito, sa katunayan, ay binary paghahanap. 826 00:45:32,810 --> 00:45:37,320 Ngunit ngayon magagawa naming upang makuha ang laki, kundi pati na rin ang mga limitasyon ng array. 827 00:45:37,320 --> 00:45:40,020 Sa kakanyahan, kung mayroon kaming ang aming higanteng phone book, rip namin ito sa kalahati. 828 00:45:40,020 --> 00:45:42,990 Namin ngayon alam kung saan na mas maliit libro ng telepono ay. 829 00:45:42,990 --> 00:45:45,260 Ngunit kami ay hindi talagang sa nakagugulat sa aklat ng telepono sa kalahati. 830 00:45:45,260 --> 00:45:48,570 Kailangan pa rin naming malaman kung saan ang bagong hanggahan ng aming mga problema ay. 831 00:45:48,570 --> 00:45:51,645 Kahit sinong mayroon ba kayong mga katanungan tungkol iyon? 832 00:45:51,645 --> 00:45:52,440 Oo? 833 00:45:52,440 --> 00:45:56,020 >> AARAL: Gusto ito gumagana sa pamamagitan ng paglikha ng isang variable, i, na sa iyo pagkatapos lamang shift 834 00:45:56,020 --> 00:46:00,770 ang posisyon ng i kamag-anak sa kanyang kasalukuyang posisyon, at ang haba, n? 835 00:46:00,770 --> 00:46:01,710 >> Jason HIRSCHHORN: At kung ano ay i? 836 00:46:01,710 --> 00:46:04,110 >> AARAL: Tulad ng tulad ng isang uri ng pagiging i - 837 00:46:04,110 --> 00:46:08,040 Tulad ng nais mong i initialize upang maging gitna posisyon ng array. 838 00:46:08,040 --> 00:46:12,540 At pagkatapos ay, kung ang halaga sa posisyon na i in sa gitna ng array sa alamang 839 00:46:12,540 --> 00:46:17,870 mas kaunti kaysa sa halaga na kailangan mo, i ngayon nagiging ang haba ng array, plus 840 00:46:17,870 --> 00:46:19,215 ang halaga ng i hinati sa 2. 841 00:46:19,215 --> 00:46:20,270 Tulad ng, makita, shift mo i - 842 00:46:20,270 --> 00:46:20,770 >> Jason HIRSCHHORN: Mag-right. 843 00:46:20,770 --> 00:46:21,165 >> AARAL: - hanggang sa ang - 844 00:46:21,165 --> 00:46:24,010 >> Jason HIRSCHHORN: Kaya ako ay halos positive na gagana. 845 00:46:24,010 --> 00:46:26,800 Ngunit ang pagkatao punto, kailangan mo ng dalawang piraso ng impormasyon dito. 846 00:46:26,800 --> 00:46:30,050 Maaari mo itong gawin sa simula at dulo, o maaari mo itong gawin sa laki, at pagkatapos ay 847 00:46:30,050 --> 00:46:31,060 ilang marker. 848 00:46:31,060 --> 00:46:32,630 Ngunit mo kailangang dalawang piraso ng impormasyon dito. 849 00:46:32,630 --> 00:46:34,160 Hindi ka maaaring makakuha sa pamamagitan ng gamit ang isa lamang. 850 00:46:34,160 --> 00:46:35,830 Ba na ang may katuturan? 851 00:46:35,830 --> 00:46:39,560 >> Kaya kami ay pagpunta sa pumunta sa pamamagitan ng, at kami ay pagpunta sa gawin [hindi marinig] 852 00:46:39,560 --> 00:46:41,330 at lumikha ng ilang mga marker. 853 00:46:41,330 --> 00:46:42,690 Kaya what'd isulat mo sa iyong code? 854 00:46:42,690 --> 00:46:46,190 >> AARAL: int ko sinabi lang tumalbog isa ay katumbas ng 0. 855 00:46:46,190 --> 00:46:47,790 >> Jason HIRSCHHORN: Sabihin tumawag na int, simula. 856 00:46:47,790 --> 00:46:49,140 >> AARAL: OK. 857 00:46:49,140 --> 00:46:50,590 >> Jason HIRSCHHORN: Tinitiyak Iyon higit pang mga kahulugan para sa akin. 858 00:46:50,590 --> 00:46:51,670 At? 859 00:46:51,670 --> 00:46:54,340 >> AARAL: Sinabi ko, hulaan ko, int nagtatapos. 860 00:46:54,340 --> 00:46:55,870 >> Jason HIRSCHHORN: int nagtatapos. 861 00:46:55,870 --> 00:46:57,640 >> AARAL: hulaan ko, n minus 1, o ang isang bagay tulad na. 862 00:46:57,640 --> 00:46:59,100 Tulad ng, ang huling elemento. 863 00:46:59,100 --> 00:47:02,310 >> Jason HIRSCHHORN: Kaya mo na sinulat, int simula ay katumbas ng 0, tuldok-kuwit, at int 864 00:47:02,310 --> 00:47:04,320 Magtatapos ang katumbas n minus 1, tuldok-kuwit. 865 00:47:04,320 --> 00:47:06,850 Kaya't mahalagang, kung anong ginagawa namin dito, 0 ang unang posisyon. 866 00:47:06,850 --> 00:47:09,570 At bilang alam namin sa array, hindi sila pumunta hanggang sa n, pumunta sila hanggang sa n minus 1. 867 00:47:09,570 --> 00:47:11,110 Kaya mayroon kaming ilang mga hanggahan ng aming array. 868 00:47:11,110 --> 00:47:15,730 At ang mga paunang hangganan mangyari upang maging ang paunang hanggahan ng aming mga problema. 869 00:47:15,730 --> 00:47:16,640 OK. 870 00:47:16,640 --> 00:47:19,200 Kaya na Maganda iyan. 871 00:47:19,200 --> 00:47:22,380 Pagkatapos kung pumunta namin pabalik sa linyang ito, habang haba ng listahan ay mas malaki kaysa sa 0, 872 00:47:22,380 --> 00:47:24,752 ano, sa halip na n, dapat naming ilagay in dito? 873 00:47:24,752 --> 00:47:28,820 >> AARAL: Sumulat na nagtatapos minus simula. 874 00:47:28,820 --> 00:47:34,780 >> Jason HIRSCHHORN: Habang nagtatapos minus nagsisimula ay mas malaki kaysa sa 0? 875 00:47:34,780 --> 00:47:35,480 OK. 876 00:47:35,480 --> 00:47:37,730 At maaari naming, kung gusto naming gumawa na ng kaunti nicer, kung ano 877 00:47:37,730 --> 00:47:38,980 iba pa naming gawin? 878 00:47:38,980 --> 00:47:41,650 879 00:47:41,650 --> 00:47:43,412 Kung gusto naming upang linisin ang code na ito up ng isang bit? 880 00:47:43,412 --> 00:47:46,716 881 00:47:46,716 --> 00:47:48,180 Paano natin mapupuksa ang mga 0? 882 00:47:48,180 --> 00:47:51,560 883 00:47:51,560 --> 00:47:52,690 Ito ay lamang ng isang katanungan ng estilo. 884 00:47:52,690 --> 00:47:53,690 Ito ay tama ngayon. 885 00:47:53,690 --> 00:47:54,870 >> AARAL: Pagtatapos ng hindi katumbas simula? 886 00:47:54,870 --> 00:47:55,740 >> Jason HIRSCHHORN: Maaari naming gawin kung ano? 887 00:47:55,740 --> 00:47:56,730 >> [INTERPOSING tinig] 888 00:47:56,730 --> 00:47:57,330 >> AARAL: Nagtatapos ay mas malaki? 889 00:47:57,330 --> 00:47:57,720 >> Jason HIRSCHHORN: Oo. 890 00:47:57,720 --> 00:48:01,110 Maaari lang namin gawin habang nagtatapos ay mas malaki sa simula. 891 00:48:01,110 --> 00:48:03,580 Mag-right. 892 00:48:03,580 --> 00:48:06,240 Nagdagdag kami na nagsisimula sa kabilang bahagi ng na, at Mayroon kaming mapupuksa ng 0. 893 00:48:06,240 --> 00:48:08,000 Kaya ito lang ang itsura ng Medyo mas malinis. 894 00:48:08,000 --> 00:48:08,990 OK. 895 00:48:08,990 --> 00:48:11,460 Kaya, habang haba ng listahan ay 0, isinulat namin na, habang nagtatapos ay mas malaki 896 00:48:11,460 --> 00:48:12,240 kaysa sa simula. 897 00:48:12,240 --> 00:48:19,840 Kami ay pagpunta sa ilagay sa aming mga kinakailangan kulot tirante, at pagkatapos ay ang unang bagay na 898 00:48:19,840 --> 00:48:22,090 gusto naming gawin ay tumingin sa mga ito sa isang maliit na listahan. 899 00:48:22,090 --> 00:48:22,510 Ikaw? 900 00:48:22,510 --> 00:48:23,320 Maaaring magbigay sa iyo sa akin ang - 901 00:48:23,320 --> 00:48:26,460 >> AARAL: Kung panaklong halaga square bracket - 902 00:48:26,460 --> 00:48:30,450 >> Jason HIRSCHHORN: Kung panaklong halaga square bracket. 903 00:48:30,450 --> 00:48:33,210 >> AARAL: Nagtatapos nang hinati sa 2. 904 00:48:33,210 --> 00:48:33,952 >> Jason HIRSCHHORN: Nagtatapos? 905 00:48:33,952 --> 00:48:35,280 >> AARAL: nakakakita ako ng isang problema sa iyong - 906 00:48:35,280 --> 00:48:35,750 >> Jason HIRSCHHORN: OK. 907 00:48:35,750 --> 00:48:39,150 Well, tingnan sa gitna. 908 00:48:39,150 --> 00:48:41,226 Paano ko malalaman namin kung ano ang gitna ay? 909 00:48:41,226 --> 00:48:42,450 Oo. 910 00:48:42,450 --> 00:48:43,070 Kaya ipaalam sa akin tanggalin ang code na iyon. 911 00:48:43,070 --> 00:48:46,360 Paano ko malalaman namin kung ano ang gitna ay? 912 00:48:46,360 --> 00:48:48,003 Sa anumang bagay, kapag mayroon kang ang simula at sa dulo, paano mo mahanap 913 00:48:48,003 --> 00:48:48,876 sa gitna? 914 00:48:48,876 --> 00:48:49,590 >> AARAL:-average mo. 915 00:48:49,590 --> 00:48:51,820 >> AARAL: idagdag mo ang mga ito sama-sama at pagkatapos - 916 00:48:51,820 --> 00:48:53,150 >> Jason HIRSCHHORN: Idagdag ang mga ito sama-sama at pagkatapos? 917 00:48:53,150 --> 00:48:54,090 >> AARAL: At-average mo. 918 00:48:54,090 --> 00:48:55,050 Hatiin ito sa pamamagitan ng 2. 919 00:48:55,050 --> 00:48:56,500 >> Jason HIRSCHHORN: Idagdag ang mga ito sama-sama at hatiin sa pamamagitan ng 2. 920 00:48:56,500 --> 00:48:59,400 Kaya int gitna katumbas? 921 00:48:59,400 --> 00:49:01,120 Tom, maaari mong ibigay ito sa akin? 922 00:49:01,120 --> 00:49:03,550 >> AARAL: Simula plus na nagtatapos - 923 00:49:03,550 --> 00:49:04,950 >> Jason HIRSCHHORN: Simula plus nagtatapos. 924 00:49:04,950 --> 00:49:06,880 >> AARAL: Lahat, bracket, na hinati sa 2. 925 00:49:06,880 --> 00:49:10,940 >> Jason HIRSCHHORN: Lahat, sa mga panaklong, hinati sa 2. 926 00:49:10,940 --> 00:49:16,300 Kaya na nagbibigay sa akin ang gitna ng anumang bagay, itama? 927 00:49:16,300 --> 00:49:18,980 >> AARAL: Kailangan mo ring tipunin ito. 928 00:49:18,980 --> 00:49:19,990 >> Jason HIRSCHHORN: Ano ang ginagawa mo ibig sabihin, kailangan ko upang tipunin ito? 929 00:49:19,990 --> 00:49:20,400 >> [INTERPOSING tinig] 930 00:49:20,400 --> 00:49:24,520 >> AARAL: Dahil kung Ito ay isang kakaiba numero, pagkatapos ito ay tulad ng - 931 00:49:24,520 --> 00:49:25,440 >> Jason HIRSCHHORN: Well, OK. 932 00:49:25,440 --> 00:49:26,360 Kaya ko ito paglilikom. 933 00:49:26,360 --> 00:49:33,350 Ngunit kung ito ay isang kakaiba numero, 5, maaari ko paglalaan 1 ang layo mula sa gitna. 934 00:49:33,350 --> 00:49:35,665 O kung ito ay isang kahit na numero, sa halip, na ang isang mas mahusay na kaso. 935 00:49:35,665 --> 00:49:39,600 Kung ito ay 4, mayroon lamang namin 4, maaari ba akong kumuha ang unang "gitna", quote, magpanipi o 936 00:49:39,600 --> 00:49:41,760 ang pangalawang "gitna" ng isa. 937 00:49:41,760 --> 00:49:46,390 Alinman gagana para sa isang binary paghahanap, kaya hindi ko talagang kailangan upang isalin ito. 938 00:49:46,390 --> 00:49:48,640 Subalit mayroong isa iba pang mga bagay ako kailangan upang tumingin sa linyang ito. 939 00:49:48,640 --> 00:49:50,530 Maaaring hindi namin ito pa mapagtanto, ngunit gagamitin namin bumalik dito. 940 00:49:50,530 --> 00:49:53,200 Dahil sa linyang ito talaga pa rin Kailangan ng isa sa iba pang mga bagay. 941 00:49:53,200 --> 00:49:55,990 >> Ngunit sa ngayon, na naisulat namin apat na linya ng code. 942 00:49:55,990 --> 00:49:58,120 Mayroon din kaming ang aming simula at pangwakas na mga marker. 943 00:49:58,120 --> 00:50:01,320 Mayroon kaming ang aming habang loop, na maps sa direkta sa aming mga pseudocode. 944 00:50:01,320 --> 00:50:05,790 Naghahanap kami sa gitna na maps direkta papunta sa aming pseudocode. 945 00:50:05,790 --> 00:50:09,070 Gusto ko sabihin na ito ang papunta sa gitna ng listahan, ito linya ng code. 946 00:50:09,070 --> 00:50:11,560 At pagkatapos, sa sandaling pumunta kami sa gitna ng ang listahan, ang susunod na bagay na kailangan namin upang gawin 947 00:50:11,560 --> 00:50:14,880 ay suriin kung ang aming halaga ay doon para sa ang pseudocode na sinulat namin ng mas maaga. 948 00:50:14,880 --> 00:50:17,100 >> Kaya paano ko tingnan namin kung ang aming halaga ay nasa gitna ng listahan? 949 00:50:17,100 --> 00:50:17,300 Ikaw. 950 00:50:17,300 --> 00:50:18,511 Bakit hindi gawin mo ito? 951 00:50:18,511 --> 00:50:23,070 >> AARAL: Kung ang aming halaga ay sa gitna ng ay katumbas sa 952 00:50:23,070 --> 00:50:24,592 kahit anong itinakda namin ang - 953 00:50:24,592 --> 00:50:26,190 Ibig kong sabihin pantay pantay sa - 954 00:50:26,190 --> 00:50:26,690 >> Jason HIRSCHHORN: Nag - 955 00:50:26,690 --> 00:50:27,940 OK. 956 00:50:27,940 --> 00:50:30,080 957 00:50:30,080 --> 00:50:32,170 >> AARAL: Hindi ako sigurado kung ano ang variable na kaming naghahanap ng 958 00:50:32,170 --> 00:50:32,850 para sa bagaman, ay dahil - 959 00:50:32,850 --> 00:50:33,330 >> [INTERPOSING tinig] 960 00:50:33,330 --> 00:50:34,520 >> AARAL: [hindi marinig]. 961 00:50:34,520 --> 00:50:35,060 >> Jason HIRSCHHORN: Mismong. 962 00:50:35,060 --> 00:50:37,260 Per ang function ng deklarasyon, kaming naghahanap para sa isang halaga. 963 00:50:37,260 --> 00:50:39,760 Kaya kami ay naghahanap para sa isang halaga sa isang array ng mga halaga. 964 00:50:39,760 --> 00:50:41,080 Kaya ikaw ay akmang-akma sa iyo. 965 00:50:41,080 --> 00:50:45,040 Ikaw ay gagawin, kung halaga bukas paren bracket gitna sarado bracket ay katumbas ng 966 00:50:45,040 --> 00:50:49,930 ay katumbas ng halaga, at sa loob doon ano ang kailangan naming gawin? 967 00:50:49,930 --> 00:50:51,230 Kung ang aming halaga ng doon, kung ano kailangan naming gawin? 968 00:50:51,230 --> 00:50:51,420 >> [INTERPOSING tinig] 969 00:50:51,420 --> 00:50:52,160 >> AARAL: Bumalik sa zero. 970 00:50:52,160 --> 00:50:53,070 >> Jason HIRSCHHORN: Bumalik totoo. 971 00:50:53,070 --> 00:50:54,790 >> AARAL: Bumalik totoo. 972 00:50:54,790 --> 00:50:57,856 >> Jason HIRSCHHORN: Michael, ano ang linyang ito gawin? 973 00:50:57,856 --> 00:51:01,105 >> AARAL: [hindi marinig] ay tumakbo sa programa Siyempre nito, at iyon ay higit sa, at 974 00:51:01,105 --> 00:51:01,920 ikaw ay kung ano ang kailangan mong gawin? 975 00:51:01,920 --> 00:51:03,030 >> Jason HIRSCHHORN: Ang programa o kung ano? 976 00:51:03,030 --> 00:51:03,700 Sa kasong ito? 977 00:51:03,700 --> 00:51:04,210 >> AARAL: Ang pag-andar. 978 00:51:04,210 --> 00:51:05,170 >> Jason HIRSCHHORN: function na ang. 979 00:51:05,170 --> 00:51:08,420 At kaya, upang bumalik sa kahit anong tinatawag na ito at bigyan ito ang halaga, totoo. 980 00:51:08,420 --> 00:51:09,890 Akmang-akma. 981 00:51:09,890 --> 00:51:10,170 Main. 982 00:51:10,170 --> 00:51:12,035 Ano ang uri ng return ng pangunahing, Michael? 983 00:51:12,035 --> 00:51:16,480 984 00:51:16,480 --> 00:51:17,150 >> AARAL: int, integer? 985 00:51:17,150 --> 00:51:18,080 >> Jason HIRSCHHORN: int, eksakto. 986 00:51:18,080 --> 00:51:18,680 Ang isang integer. 987 00:51:18,680 --> 00:51:20,980 Iyon ay isang katanungan lamang upang matiyak na ka guys ay naging sa tuktok ng ito. 988 00:51:20,980 --> 00:51:24,250 Ano ang karaniwang ibalik ito, kung lahat ng bagay ay mahusay na gumagana? 989 00:51:24,250 --> 00:51:24,520 >> AARAL: Zero. 990 00:51:24,520 --> 00:51:24,820 >> Jason HIRSCHHORN: Zero. 991 00:51:24,820 --> 00:51:25,430 Akmang-akma. 992 00:51:25,430 --> 00:51:28,790 >> AARAL: Kung ito lamang ay nagbabalik totoo, walang impormasyon na ibinigay 993 00:51:28,790 --> 00:51:30,675 tungkol sa kung ano ang - 994 00:51:30,675 --> 00:51:34,040 Oh, ito ay lamang na nagsasabi na iyon halaga ang nasa loob ng array. 995 00:51:34,040 --> 00:51:35,350 >> Jason HIRSCHHORN: Mismong. 996 00:51:35,350 --> 00:51:38,080 Ang program na ito ay hindi pagbibigay ng impormasyon ng kung saan eksakto ang halaga ay. 997 00:51:38,080 --> 00:51:41,850 Ang sinasabi lamang nito, oo, nakita namin ito, o hindi, hindi kami nakahanap ito. 998 00:51:41,850 --> 00:51:42,990 Kaya kung nahanap numero, nagbabalik ng tunay. 999 00:51:42,990 --> 00:51:45,500 Well, talagang ginawa namin lamang na talaga mabilis na may isang linya ng code. 1000 00:51:45,500 --> 00:51:47,500 Kaya makikita ilipat ko na linya ng pseudocode. 1001 00:51:47,500 --> 00:51:50,045 >> AARAL: Huwag kailangan namin upang baguhin ang array? 1002 00:51:50,045 --> 00:51:52,830 Dapat itong mga halaga, hindi na halaga, tama? 1003 00:51:52,830 --> 00:51:53,430 >> Jason HIRSCHHORN: Paumanhin. 1004 00:51:53,430 --> 00:51:54,010 Salamat sa inyo. 1005 00:51:54,010 --> 00:51:54,800 >> AARAL: Oo. 1006 00:51:54,800 --> 00:51:55,850 >> Jason HIRSCHHORN: linyang ito Dapat na halaga. 1007 00:51:55,850 --> 00:51:57,150 Akmang-akma. 1008 00:51:57,150 --> 00:51:57,920 OK. 1009 00:51:57,920 --> 00:51:59,170 Kaya nagbigay kami ay tumingin sa gitna listahan. 1010 00:51:59,170 --> 00:52:00,790 Kung numero nahanap return totoo. 1011 00:52:00,790 --> 00:52:04,470 Ang pagpapatuloy sa sa aming pseudocode, kung gitna ay mas malaki, ang natitira paghahanap. 1012 00:52:04,470 --> 00:52:09,640 Kaya nagkaroon ako in dito, kung numero mas mataas, ang natitira paghahanap. 1013 00:52:09,640 --> 00:52:12,700 1014 00:52:12,700 --> 00:52:14,462 Constantine, maaari mong ibigay sa akin ito linya ng code? 1015 00:52:14,462 --> 00:52:17,240 1016 00:52:17,240 --> 00:52:23,520 >> AARAL: Kung halaga ng gitnang - 1017 00:52:23,520 --> 00:52:24,890 >> Jason HIRSCHHORN: Kaya kung halaga - 1018 00:52:24,890 --> 00:52:28,890 kung mga halaga bukas paren bracket gitna malapit bracket - 1019 00:52:28,890 --> 00:52:31,500 >> AARAL: Ay mas maliit kaysa sa halaga? 1020 00:52:31,500 --> 00:52:32,760 >> Jason HIRSCHHORN: Ay mas maliit. 1021 00:52:32,760 --> 00:52:33,800 >> AARAL: Mas mababa sa halaga. 1022 00:52:33,800 --> 00:52:34,060 >> Jason HIRSCHHORN: Halaga. 1023 00:52:34,060 --> 00:52:35,310 Well, talaga, na nais mong suriin kung ang numero ng - 1024 00:52:35,310 --> 00:52:38,310 1025 00:52:38,310 --> 00:52:38,490 Sorry. 1026 00:52:38,490 --> 00:52:39,140 Ito ay isang maliit na nakalilito. 1027 00:52:39,140 --> 00:52:43,920 Ngunit iba kung ang numero sa gitna ng listahan ang mas mataas. 1028 00:52:43,920 --> 00:52:45,170 >> AARAL: Oh, OK. 1029 00:52:45,170 --> 00:52:49,800 1030 00:52:49,800 --> 00:52:50,410 >> Jason HIRSCHHORN: ako makakakita baguhin iyon. 1031 00:52:50,410 --> 00:52:55,060 Iba Pa kung gitna ay mas mataas, namin gusto upang maghanap kaliwa, OK? 1032 00:52:55,060 --> 00:52:57,310 At kung ano ang gagawin sa loob namin ito kung kondisyon? 1033 00:52:57,310 --> 00:53:03,660 1034 00:53:03,660 --> 00:53:07,510 >> AARAL: Maaari ba akong gumawa ng maliit na pagbabago sa ang kundisyon, baguhin ito sa ibang tao kung? 1035 00:53:07,510 --> 00:53:08,380 >> Jason HIRSCHHORN: Iba Pa kung? 1036 00:53:08,380 --> 00:53:09,270 OK. 1037 00:53:09,270 --> 00:53:12,840 Kaya ay isakatuparan ang code na ito tungkol sa pareho. 1038 00:53:12,840 --> 00:53:18,620 Ngunit ang magandang bagay tungkol sa paggamit ng kung, iba kung, iba kung o kung, iba kung, iba 1039 00:53:18,620 --> 00:53:22,320 ay nangangahulugan na ang isa lamang sa mga ito ay pagpunta sa naka-check, hindi lahat ng tatlong ng mga ito, 1040 00:53:22,320 --> 00:53:23,290 potensyal na. 1041 00:53:23,290 --> 00:53:25,530 At na ginagawang mas kaunti nicer sa computer na 1042 00:53:25,530 --> 00:53:26,670 tumatakbo ang iyong mga programa. 1043 00:53:26,670 --> 00:53:27,620 >> Kaya [? Constantine,?] 1044 00:53:27,620 --> 00:53:31,330 Ikinalulungkot namin sa loob linyang ito, iba kung halaga, bracket gitna malapit bracket 1045 00:53:31,330 --> 00:53:32,260 ay mas malaki sa halaga. 1046 00:53:32,260 --> 00:53:33,150 Ano ang kailangan naming gawin? 1047 00:53:33,150 --> 00:53:33,970 Kailangan namin upang maghanap sa kaliwa. 1048 00:53:33,970 --> 00:53:35,220 Paano ginagawa namin iyon? 1049 00:53:35,220 --> 00:53:46,960 1050 00:53:46,960 --> 00:53:48,720 Pupunta ako upang mabigyan ka ng isang panimula. 1051 00:53:48,720 --> 00:53:52,210 >> Mayroon kaming dalawang mga bagay na tinatawag na nagsisimula at nagtatapos. 1052 00:53:52,210 --> 00:53:57,340 Kaya kung ano ang kailangang mangyari sa simula? 1053 00:53:57,340 --> 00:53:59,640 Kung nais mong hanapin sa kaliwa ng listahan, makuha namin ang aming kasalukuyang simula. 1054 00:53:59,640 --> 00:54:01,080 Ano ang kailangan naming gawin ito? 1055 00:54:01,080 --> 00:54:04,220 >> AARAL: Itinakda namin ang simula sa gitna plus 1. 1056 00:54:04,220 --> 00:54:05,120 >> Jason HIRSCHHORN: Kaya, kung hindi kami naghahanap sa kaliwa? 1057 00:54:05,120 --> 00:54:06,250 >> AARAL: Paumanhin, gitnang minus - 1058 00:54:06,250 --> 00:54:11,310 kaya ang Magtatapos ang magiging gitnang minus 1 at simula - 1059 00:54:11,310 --> 00:54:12,450 >> Jason HIRSCHHORN: At kung ano ang mangyayari sa umpisa? 1060 00:54:12,450 --> 00:54:13,210 >> AARAL: Ito ay nananatiling pareho. 1061 00:54:13,210 --> 00:54:14,120 >> Jason HIRSCHHORN: Kaya ang kahulugan ang nanatiling pareho. 1062 00:54:14,120 --> 00:54:16,040 Kung kami ay naghahanap sa kaliwa, kami ay gamit ang parehong simula - 1063 00:54:16,040 --> 00:54:16,860 akmang-akma. 1064 00:54:16,860 --> 00:54:17,870 At ang nagtatapos? 1065 00:54:17,870 --> 00:54:19,390 Paumanhin, ano ang ginagawa ng nagtatapos katumbas muli? 1066 00:54:19,390 --> 00:54:20,750 >> AARAL: Gitnang minus 1. 1067 00:54:20,750 --> 00:54:21,620 >> Jason HIRSCHHORN: Gitnang minus 1. 1068 00:54:21,620 --> 00:54:23,470 Ngayon, bakit minus 1, gitna hindi lang? 1069 00:54:23,470 --> 00:54:32,870 1070 00:54:32,870 --> 00:54:35,570 >> AARAL: gitna ay wala na sa ang Picture na, dahil nagkaroon kami 1071 00:54:35,570 --> 00:54:36,700 naka-check na ito ay out? 1072 00:54:36,700 --> 00:54:37,630 >> Jason HIRSCHHORN: Iyon akmang-akma. 1073 00:54:37,630 --> 00:54:38,580 Gitna ay wala na sa mga larawan. 1074 00:54:38,580 --> 00:54:39,800 Namin na naka-check sa gitna. 1075 00:54:39,800 --> 00:54:44,730 Kaya hindi kami gusto "sa gitna," quote magpanipi, upang patuloy na maging sa 1076 00:54:44,730 --> 00:54:46,110 array na kaming naghahanap. 1077 00:54:46,110 --> 00:54:47,670 Kaya ito ay hindi kapani-paniwala. 1078 00:54:47,670 --> 00:54:50,670 >> Iba Pa kung halaga bracket gitna ay mas malaki kaysa sa halaga na nagtatapos Kapantay 1079 00:54:50,670 --> 00:54:51,920 gitna minus 1. 1080 00:54:51,920 --> 00:54:55,060 1081 00:54:55,060 --> 00:54:57,340 Jeff, ano ang tungkol sa huling linya? 1082 00:54:57,340 --> 00:54:58,590 >> AARAL: Iba Pa. 1083 00:54:58,590 --> 00:55:02,486 1084 00:55:02,486 --> 00:55:06,000 Halaga gitna ay mas mababa sa halaga? 1085 00:55:06,000 --> 00:55:07,570 >> Jason HIRSCHHORN: idedetalye namin ka pagbibigay sa akin ng iba pa. 1086 00:55:07,570 --> 00:55:09,310 Kaya kung hindi mo akong bigyan - 1087 00:55:09,310 --> 00:55:12,270 >> AARAL: Kaya pagkatapos ay nagsisimula magiging gitnang plus 1. 1088 00:55:12,270 --> 00:55:16,100 1089 00:55:16,100 --> 00:55:19,070 >> Jason HIRSCHHORN: Simula Kapantay gitna plus 1, muli, para sa parehong 1090 00:55:19,070 --> 00:55:20,820 dahilan na Constantine Ibinigay sa amin ng mas maaga. 1091 00:55:20,820 --> 00:55:24,280 At sa dulo, na hindi pa naibigay sa akin ng isang linya ng code pa? 1092 00:55:24,280 --> 00:55:26,600 Bumalik false, Aleha, kung ano huwag isulat namin dito? 1093 00:55:26,600 --> 00:55:28,590 >> AARAL: Bumalik false. 1094 00:55:28,590 --> 00:55:29,320 >> Jason HIRSCHHORN: Bumalik false. 1095 00:55:29,320 --> 00:55:33,340 At kailangan namin upang gawin iyon, dahil kung namin huwag mahanap ito, kailangan naming sabihin namin 1096 00:55:33,340 --> 00:55:34,080 ay hindi mahanap ito. 1097 00:55:34,080 --> 00:55:36,270 At sinabi namin kami ay pagpunta upang magbalik ng bool, kaya siguradong mayroon kaming upang bumalik 1098 00:55:36,270 --> 00:55:38,150 isang bool sa isang lugar. 1099 00:55:38,150 --> 00:55:42,590 >> Magpatakbo ng ang code na ito Kaya ipaalam. 1100 00:55:42,590 --> 00:55:44,520 Talagang pupuntahan ko - 1101 00:55:44,520 --> 00:55:45,930 kaya kami sa terminal. 1102 00:55:45,930 --> 00:55:47,230 Susubukan naming i-clear ang aming window. 1103 00:55:47,230 --> 00:55:49,270 Ni Gawing Ang lahat ng Hayaan. 1104 00:55:49,270 --> 00:55:50,340 Natagpuan namin mayroong isang error. 1105 00:55:50,340 --> 00:55:54,280 Mayroong isang error sa 15 linya, inaasahan tuldok-kuwit sa dulo ng 1106 00:55:54,280 --> 00:55:54,890 deklarasyon. 1107 00:55:54,890 --> 00:55:56,454 Kaya kung ano nakalimutan ko? 1108 00:55:56,454 --> 00:55:57,230 >> AARAL: tuldok-kuwit. 1109 00:55:57,230 --> 00:56:00,200 >> Jason HIRSCHHORN: tuldok-kuwit karapatan up dito. 1110 00:56:00,200 --> 00:56:00,950 Sa tingin ko na code kay Pedro. 1111 00:56:00,950 --> 00:56:01,870 Kaya Tom, [hindi marinig]. 1112 00:56:01,870 --> 00:56:03,120 Kidding lang. 1113 00:56:03,120 --> 00:56:05,010 1114 00:56:05,010 --> 00:56:07,310 Ni huwag Gawing Lahat muli Hayaan. 1115 00:56:07,310 --> 00:56:10,180 >> AARAL: Ano direktoryo Dropbox dapat naming maging in para sa ito? 1116 00:56:10,180 --> 00:56:11,345 >> Jason HIRSCHHORN: Kaya maaari mong panoorin para lamang sa mga ito bit. 1117 00:56:11,345 --> 00:56:16,380 Ngunit muli, kung nais mong ilipat ito code sa inyong direktoryo pset3 upang subukan 1118 00:56:16,380 --> 00:56:17,050 ito, na kung ano ang aking ginawa. 1119 00:56:17,050 --> 00:56:18,600 Kung mapapansin mo dito - Paumanhin, ang mahusay na tanong. 1120 00:56:18,600 --> 00:56:19,460 >> [? LS,?] 1121 00:56:19,460 --> 00:56:24,700 Mayroon akong in dito ang find.c code mula sa distro code na ito linggong ito. 1122 00:56:24,700 --> 00:56:26,300 Mayroon akong helpers.h. 1123 00:56:26,300 --> 00:56:30,010 Mayroon akong Magsagawa ng file na ko talaga na-edit nang kaunti upang isama ang mga bagong 1124 00:56:30,010 --> 00:56:30,710 mga file kami ay sumusulat. 1125 00:56:30,710 --> 00:56:34,120 Lahat ng na code ay magagamit, hindi code ng pamamahagi, ngunit ang bagong 1126 00:56:34,120 --> 00:56:39,510 Gumawa ng file, ang mga bagong helpers.h file habilin magiging available online para sa pag-download. 1127 00:56:39,510 --> 00:56:41,800 Muli, kaya doon sa mga dagdag na mga code na mayroon kami. 1128 00:56:41,800 --> 00:56:46,130 >> Kaya gawin ang lahat, bawat linyang ito, ginagawang mahanap, binary, pagpili ng bubble - Ginagawang 1129 00:56:46,130 --> 00:56:50,930 lahat ng tatlong ng mga ito at compiles sa ito executable code find. 1130 00:56:50,930 --> 00:56:54,090 Kaya sa pangkalahatan, hindi namin nais upang diretso sa check50. 1131 00:56:54,090 --> 00:56:57,580 Gusto naming tumakbo ang ilang mga pagsubok sa aming sariling. 1132 00:56:57,580 --> 00:57:11,750 Ngunit kaya lang maaari naming mapabilis ito ng kaunti, check50 2013 pset3.find ay pumasa 1133 00:57:11,750 --> 00:57:14,630 sa helpers.c-- aking masama. 1134 00:57:14,630 --> 00:57:16,050 >> Wala akong na ngayon. 1135 00:57:16,050 --> 00:57:20,670 Kaya kami ay talagang pagpunta sa patakbuhin ang code para sa real. 1136 00:57:20,670 --> 00:57:23,570 Usage.find /, alam mo kung ano ang ibig sabihin nito ay? 1137 00:57:23,570 --> 00:57:25,970 >> AARAL: Kailangan mo ng pangalawang command line dito. 1138 00:57:25,970 --> 00:57:26,980 >> Jason HIRSCHHORN: Kailangan ko isang pangalawang linya ng command. 1139 00:57:26,980 --> 00:57:30,640 At alinsunod sa mga pagtutukoy, Kailangan ko upang ipasok ang kung ano ang aming hinahanap. 1140 00:57:30,640 --> 00:57:33,750 Kaya tumingin para sa 42 ipaalam. 1141 00:57:33,750 --> 00:57:37,030 Susubukan naming panatilihin ito sa pinagsunod-sunod, dahil kami hindi pa nagsulat ng isang function ng uri - 1142 00:57:37,030 --> 00:57:41,830 42, 43, 44. 1143 00:57:41,830 --> 00:57:46,240 >> At Control D hindi makatagpo ng karayom ​​sa mandala ng dayami. 1144 00:57:46,240 --> 00:57:46,505 Iyan ay masama. 1145 00:57:46,505 --> 00:57:47,200 Ito ay talagang doon. 1146 00:57:47,200 --> 00:57:48,090 Subukan ang ibang bagay Hayaan. 1147 00:57:48,090 --> 00:57:49,860 Siguro ito ay dahil ko bang ilagay ito sa simula. 1148 00:57:49,860 --> 00:57:54,490 >> Ni gawin 41, 42, 43 Hayaan. 1149 00:57:54,490 --> 00:57:55,012 May pumunta namin. 1150 00:57:55,012 --> 00:57:56,400 Napag-alaman na ito. 1151 00:57:56,400 --> 00:58:00,040 Maglagay ng ito sa dulo ngayon, lang Hayaan upang maaari naming maging maingat - 1152 00:58:00,040 --> 00:58:03,580 40, 41, 42. 1153 00:58:03,580 --> 00:58:05,760 Hindi mo nakita ang karayom. 1154 00:58:05,760 --> 00:58:07,550 Kaya ko nabanggit ito nang mas maaga. 1155 00:58:07,550 --> 00:58:08,980 Sa kasamaang palad, alam ko na ito ay mangyayari. 1156 00:58:08,980 --> 00:58:11,490 >> Ngunit para sa mga layuning pang-pedagohiko, ito ay handa na upang galugarin ito. 1157 00:58:11,490 --> 00:58:12,990 Hindi ito gumagana. 1158 00:58:12,990 --> 00:58:16,020 Para sa ilang mga dahilan, hindi ito maaaring mahanap ito. 1159 00:58:16,020 --> 00:58:18,970 Alam namin kung ano ang sa doon, ngunit kami ay hindi sa paghahanap ng mga ito. 1160 00:58:18,970 --> 00:58:24,140 Kaya ang isang bagay na maaari kaming gawin ay pumunta sa pamamagitan ng GDB upang hanapin ito, ngunit ang kahit sino, 1161 00:58:24,140 --> 00:58:27,850 nang walang pagpunta sa pamamagitan ng GDB, magkaroon ng isang kahulugan ng kung saan screwed namin up? 1162 00:58:27,850 --> 00:58:28,480 [? Madu? ?] 1163 00:58:28,480 --> 00:58:30,960 >> AARAL: Sa tingin ko ito ay maaaring kapag nagtatapos ay katumbas sa simula, at ito ay 1164 00:58:30,960 --> 00:58:33,090 lamang ng isang listahan ng isa-element. 1165 00:58:33,090 --> 00:58:35,560 Pagkatapos ay binabalewala lamang ito sa halip ito ng tunay na pag-check nito. 1166 00:58:35,560 --> 00:58:36,940 >> Jason HIRSCHHORN: Iyon akmang-akma. 1167 00:58:36,940 --> 00:58:41,110 Kapag nagtatapos ay katumbas ng simula, ang ginagawa namin mayroon pa ring isang elemento sa aming listahan? 1168 00:58:41,110 --> 00:58:42,480 >> AARAL: Oo. 1169 00:58:42,480 --> 00:58:45,450 >> Jason HIRSCHHORN: Oo, sa katunayan, namin magkaroon ng isa at sangkap lamang ng isa. 1170 00:58:45,450 --> 00:58:50,500 At iyon ay pinaka-malamang na mangyari kapag, alinsunod sa mga code sinuri namin, hindi namin sa 1171 00:58:50,500 --> 00:58:54,640 harap ng mandala ng dayami o sa sa dulo ng mandala ng dayami. 1172 00:58:54,640 --> 00:58:56,000 Iyon ay kung saan simula at Magtatapos ay pagpunta sa pantay na 1173 00:58:56,000 --> 00:58:57,820 isa, na may mga binary paghahanap. 1174 00:58:57,820 --> 00:59:01,440 Kaya sa dalawang mga kaso ng mga hindi ito gumana, dahil nagtatapos noon ay katumbas ng simula. 1175 00:59:01,440 --> 00:59:06,030 >> Ngunit kung nagtatapos ay katumbas sa simula, ay isakatuparan ito habang loop? 1176 00:59:06,030 --> 00:59:06,390 Ito ay hindi. 1177 00:59:06,390 --> 00:59:08,660 At maaari kaming Sinuri na muli sa pamamagitan ng GDB. 1178 00:59:08,660 --> 00:59:14,000 Kaya kung paano maaari naming ayusin ang code na ito, dahil kapag habang nagtatapos ay katumbas ng 1179 00:59:14,000 --> 00:59:16,070 simula, nais din namin ito habang loop upang tumakbo. 1180 00:59:16,070 --> 00:59:18,620 >> Kaya kung ano fix maaari naming gawin sa line 18? 1181 00:59:18,620 --> 00:59:21,060 >> AARAL: [hindi marinig] ay mas malaki mababa sa o patas sa. 1182 00:59:21,060 --> 00:59:21,700 >> Jason HIRSCHHORN: Eksaktong karapatan. 1183 00:59:21,700 --> 00:59:24,600 Habang nagtatapos ay mas malaki sa o patas sa simula. 1184 00:59:24,600 --> 00:59:27,300 Kaya ngayon, tiyaking upang makakuha ng na namin sulok kaso sa dulo. 1185 00:59:27,300 --> 00:59:27,870 At ni makita ipaalam. 1186 00:59:27,870 --> 00:59:29,560 Magpatakbo ng ito nang isa pang beses Hayaan. 1187 00:59:29,560 --> 00:59:31,266 >> Ni gawin ang lahat ng Hayaan. 1188 00:59:31,266 --> 00:59:33,910 Muli, magkakaroon ka upang lamang sundin kasama dito. 1189 00:59:33,910 --> 00:59:36,280 Maghanap ng 41 oras na ito. 1190 00:59:36,280 --> 00:59:37,360 Panatilihin lamang ito pare-pareho. 1191 00:59:37,360 --> 00:59:38,210 >> Maghanap ng mga 42. 1192 00:59:38,210 --> 00:59:38,930 Ilagay ni ito sa simula Hayaan - 1193 00:59:38,930 --> 00:59:41,630 42, 43, 44. 1194 00:59:41,630 --> 00:59:42,860 Natagpuan namin ito. 1195 00:59:42,860 --> 00:59:47,710 Kaya na noon ay sa katunayan ang pagbabago namin na kailangan upang gumawa. 1196 00:59:47,710 --> 00:59:51,090 >> Iyon ay isang pulutong ng coding namin May ginawang lamang, binary paghahanap. 1197 00:59:51,090 --> 00:59:55,760 Kahit sinong mayroon ba kayong mga katanungan bago Ilipat ko sa sa mga linya namin ay sumulat sa 1198 00:59:55,760 --> 00:59:58,750 binary paghahanap o sa kung paano namin may korte kung ano maisip namin ginawa out? 1199 00:59:58,750 --> 01:00:01,900 1200 01:00:01,900 --> 01:00:06,270 Bago ilipat namin sa, gusto ko rin upang ituro out na sa pamamagitan ng at malalaking, nama-map namin 1201 01:00:06,270 --> 01:00:09,300 ang aming hindi tunay na code ng isa upang isa sa aming mga code. 1202 01:00:09,300 --> 01:00:11,550 >> Ay namin mayroon na nakakalito bagay para malaman kung may 1203 01:00:11,550 --> 01:00:12,890 nagsisimula at nagtatapos. 1204 01:00:12,890 --> 01:00:17,380 Ngunit hindi ka si may korte na out, mo sana ay nakasulat halos ang 1205 01:00:17,380 --> 01:00:20,740 magkamukha code, i-save para sa ang dalawang nangungunang mga linya. 1206 01:00:20,740 --> 01:00:23,380 At pagkatapos sana ay natanto mo kapag na ginawa mo ito sa mga pagsusuri at mga kaso na 1207 01:00:23,380 --> 01:00:24,840 kailangan mo ng ibang bagay. 1208 01:00:24,840 --> 01:00:28,510 Kaya kahit na pinili mo ay sumunod sa aming linya palsipikado-code sa linya, makikita mo na nai 1209 01:00:28,510 --> 01:00:31,130 nakuha lahat maliban sa dalawang linya ng code na iyong kailangan upang magsulat. 1210 01:00:31,130 --> 01:00:33,900 >> At gusto ko ay payag kang Taya na kayo guys sana ay lahat may korte na out 1211 01:00:33,900 --> 01:00:37,940 medyo mabilis, na iyong kailangan upang ilagay isang uri ng marker sa doon upang malaman 1212 01:00:37,940 --> 01:00:39,190 kung saan ikaw ay. 1213 01:00:39,190 --> 01:00:41,540 1214 01:00:41,540 --> 01:00:44,550 Muli iyon, ay ang kapangyarihan ng paggawa hindi tunay na code maagang ng panahon. 1215 01:00:44,550 --> 01:00:47,310 Kaya namin unang gawin ang logic, at pagkatapos ay maaari naming mag-alala tungkol sa syntax. 1216 01:00:47,310 --> 01:00:51,470 >> Ay namin nai-lito tungkol sa logic habang sinusubukang isulat ang code na ito sa C, 1217 01:00:51,470 --> 01:00:53,110 Gusto namin nakuha ang lahat ng messed up. 1218 01:00:53,110 --> 01:00:56,340 At pagkatapos ay nais na nagtatanong namin tanong tungkol sa logic at syntax at meshing 1219 01:00:56,340 --> 01:00:57,320 ang lahat ng ito nang sama-sama. 1220 01:00:57,320 --> 01:01:02,170 At gusto namin nakuha nawalang sa kung ano ang maaaring mabilis na naging isang 1221 01:01:02,170 --> 01:01:04,000 Napakahirap ng problema. 1222 01:01:04,000 --> 01:01:08,680 Kaya sabihin ilipat sa ngayon sa uri pagpili. 1223 01:01:08,680 --> 01:01:10,760 >> Mayroon kaming 20 minuto ang natitira. 1224 01:01:10,760 --> 01:01:14,130 Kaya Mayroon akong isang pakiramdam hindi namin magagawang upang makakuha ng sa pamamagitan ng lahat ng uri seleksyon 1225 01:01:14,130 --> 01:01:15,940 at bubble sort. 1226 01:01:15,940 --> 01:01:20,670 Ngunit ipaalam sa amin ng hindi bababa sa pagtatangka upang tapusin ang uri pagpili. 1227 01:01:20,670 --> 01:01:23,540 Kaya ipatupad ang seleksyon-uri gamit ang sumusunod na pag-andar na pagpapahayag. 1228 01:01:23,540 --> 01:01:27,530 >> Muli, ito ay nakuha mula sa set ng detalye ng problema. 1229 01:01:27,530 --> 01:01:31,560 Int mga halaga ay bracket, ay isang array ng integer. 1230 01:01:31,560 --> 01:01:33,490 At int.n ay ang laki ng na array. 1231 01:01:33,490 --> 01:01:36,840 -Uri-uriin ang Pinili ay pagpunta upang ayusin ito ng array. 1232 01:01:36,840 --> 01:01:43,580 >> Kaya alinsunod sa aming modelo ng pagpili ng kaisipan -uri-uriin, hilahin namin ang - 1233 01:01:43,580 --> 01:01:47,720 una, pumunta kami sa listahan ang unang oras, hanapin ang pinakamaliit na numero, 1234 01:01:47,720 --> 01:01:52,860 ilagay ito sa simula, hanapin ang pangalawang pinakamaliliit na numero, ilagay ito sa ang 1235 01:01:52,860 --> 01:01:56,380 pangalawang posisyon kung gusto naming -uri-uriin sa pataas na pagkakasunod-sunod. 1236 01:01:56,380 --> 01:01:58,440 Hindi ako ng pagpilit mong magsulat hindi tunay na code sa ngayon. 1237 01:01:58,440 --> 01:02:01,350 >> Ngunit bago namin gawin ang code bilang isang klase sa limang minuto, kami ay pagpunta sa magsulat 1238 01:02:01,350 --> 01:02:03,550 hindi tunay na code sa gayon mayroon kaming ilang mga kahulugan ng kung saan kami ay pagpunta. 1239 01:02:03,550 --> 01:02:05,630 Kaya subukan na isulat hindi tunay na code sa inyong sarili. 1240 01:02:05,630 --> 01:02:08,610 At pagkatapos ay subukan na i-na hindi tunay na code sa code. 1241 01:02:08,610 --> 01:02:10,740 Gagawin namin na bilang isang grupo sa loob ng limang minuto. 1242 01:02:10,740 --> 01:02:32,560 1243 01:02:32,560 --> 01:02:33,895 >> At syempre, ipaalam sa akin kung mayroon kang anumang mga katanungan. 1244 01:02:33,895 --> 01:03:56,738 1245 01:03:56,738 --> 01:03:58,230 >> AARAL: Iyon ito? 1246 01:03:58,230 --> 01:04:00,280 >> Jason HIRSCHHORN: Tingnan kung gaano kalayo sa iyo maaaring makipag-dalawang higit pang mga minuto. 1247 01:04:00,280 --> 01:04:01,790 Nauunawaan kong hindi mo magagawang upang matapos. 1248 01:04:01,790 --> 01:04:03,050 Ngunit magpapatuloy kami sa paglipas ng ito bilang isang grupo. 1249 01:04:03,050 --> 01:04:57,830 1250 01:04:57,830 --> 01:05:00,630 >> Lahat ka sa coding kaya [hindi marinig], kaya ako ay paumanhin i-pause kung ano ang iyong ginagawa. 1251 01:05:00,630 --> 01:05:02,530 Ngunit ng pumunta sa pamamagitan ng ito bilang isang pangkat ipaalam. 1252 01:05:02,530 --> 01:05:07,590 At muli, binary paghahanap, mo ang lahat ng ibigay sa akin ng isa kung hindi higit pang mga linya ng code. 1253 01:05:07,590 --> 01:05:08,530 Salamat sa iyo para sa na. 1254 01:05:08,530 --> 01:05:11,730 Kami ay pagpunta sa gawin ang parehong bagay dito, code nang magkasama bilang isang grupo. 1255 01:05:11,730 --> 01:05:15,170 >> Kaya uri seleksyon - ni sumulat ipaalam ilang mabilis na palsipikado-code. 1256 01:05:15,170 --> 01:05:20,380 Bawat sakit sa modelo, maaari isang tao bigyan ako ang unang linya ng palsipikado-code, mangyaring? 1257 01:05:20,380 --> 01:05:23,000 1258 01:05:23,000 --> 01:05:24,270 Ano ang gusto kong gawin? 1259 01:05:24,270 --> 01:05:27,070 >> AARAL: Habang ang listahan ay wala na sa order. 1260 01:05:27,070 --> 01:05:30,630 >> Jason HIRSCHHORN: OK, habang ang listahan ay wala sa pagkakasunod-sunod. 1261 01:05:30,630 --> 01:05:33,540 At kung ano ang ibig sabihin sa iyo "out ng order?" 1262 01:05:33,540 --> 01:05:34,960 >> AARAL: Habang [hindi marinig] 1263 01:05:34,960 --> 01:05:36,210 ay hindi pa nakaayos. 1264 01:05:36,210 --> 01:05:38,460 1265 01:05:38,460 --> 01:05:40,290 >> Jason HIRSCHHORN: Habang ang listahan Wala na sa pagkakasunud-sunod, ano ang gagawin namin gawin? 1266 01:05:40,290 --> 01:05:44,200 Bigyan mo ako ng pangalawang linya, mangyaring, Marcus. 1267 01:05:44,200 --> 01:05:47,186 >> AARAL: Kaya mahanap ang susunod na pinakamaliliit na numero. 1268 01:05:47,186 --> 01:05:49,000 Na ito ay naka-indent. 1269 01:05:49,000 --> 01:05:55,140 >> Jason HIRSCHHORN: Kaya mahanap ang susunod pinakamaliliit na numero. 1270 01:05:55,140 --> 01:05:56,460 At pagkatapos ay ibang tao? 1271 01:05:56,460 --> 01:06:01,030 Sa sandaling matagpuan namin ang susunod pinakamaliliit numero, anong gagawin namin? 1272 01:06:01,030 --> 01:06:03,010 Pupunta ako sa sinasabi mahanap sa pinakamaliliit na numero. 1273 01:06:03,010 --> 01:06:04,820 Iyon ay kung ano ang gusto naming gawin. 1274 01:06:04,820 --> 01:06:06,210 >> Kaya mahanap ang pinakamaliit na numero. 1275 01:06:06,210 --> 01:06:08,061 Pagkatapos, anong gagawin namin? 1276 01:06:08,061 --> 01:06:09,480 >> AARAL: [hindi marinig] sa simula. 1277 01:06:09,480 --> 01:06:10,680 >> Jason HIRSCHHORN: Paumanhin? 1278 01:06:10,680 --> 01:06:12,700 >> AARAL: Ilagay ito sa simula ng listahan. 1279 01:06:12,700 --> 01:06:18,540 >> Jason HIRSCHHORN: Kaya ilagay ito sa sa simula ng listahan. 1280 01:06:18,540 --> 01:06:20,140 At kung ano ang gagawin namin sa mga bagay na noon ay sa simula 1281 01:06:20,140 --> 01:06:20,830 ng listahan, tama? 1282 01:06:20,830 --> 01:06:21,910 Kami ay patungan ang isang bagay. 1283 01:06:21,910 --> 01:06:23,130 Kaya kung saan ko ilalagay namin iyon? 1284 01:06:23,130 --> 01:06:24,120 Oo, Anna? 1285 01:06:24,120 --> 01:06:25,520 >> AARAL: Saan na ang pinakamaliit na number ay? 1286 01:06:25,520 --> 01:06:32,530 >> Jason HIRSHHORN: Kaya ilagay ang simula ng mga listahan kung saan ang 1287 01:06:32,530 --> 01:06:35,180 pinakamaliliit na numero ay. 1288 01:06:35,180 --> 01:06:38,510 Kaya habang ang listahan ay wala sa pagkakasunod-sunod, hanapin sa pinakamaliliit na numero, ilagay ito sa 1289 01:06:38,510 --> 01:06:40,630 sa simula ng listahan, ilagay ang simula ng listahan kung saan ang 1290 01:06:40,630 --> 01:06:42,900 pinakamaliliit na numero ay. 1291 01:06:42,900 --> 01:06:45,780 Marcus, maaari mong rephrase ang linyang ito habang ang listahan ay wala na sa order? 1292 01:06:45,780 --> 01:06:51,160 1293 01:06:51,160 --> 01:06:53,900 >> AARAL: Habang ang mga numero Hindi pa nai-pinagsunod-sunod? 1294 01:06:53,900 --> 01:06:55,920 >> Jason HIRSHHORN: OK, kaya upang malaman na ang mga numero ay hindi naging 1295 01:06:55,920 --> 01:06:58,670 pinagsunod-sunod, ano ang kailangan namin upang gawin? 1296 01:06:58,670 --> 01:07:00,640 Magkano ang kailangan naming i- pumunta sa pamamagitan ng listahan na ito? 1297 01:07:00,640 --> 01:07:09,650 >> AARAL: Kaya hulaan ko ang isang para sa loop, o habang, habang ang mga numero ng check Mababa 1298 01:07:09,650 --> 01:07:11,900 kaysa sa haba ng listahan? 1299 01:07:11,900 --> 01:07:13,160 >> Jason HIRSHHORN: OK, na maganda. 1300 01:07:13,160 --> 01:07:15,000 Sa tingin ko misphrased ko aking tanong na hindi maganda. 1301 01:07:15,000 --> 01:07:15,990 Lamang ako ay sinusubukan upang makakuha ng sa kami ay pagpunta sa may upang pumunta 1302 01:07:15,990 --> 01:07:17,580 sa pamamagitan ng buong listahan. 1303 01:07:17,580 --> 01:07:20,490 Kaya habang ang listahan ay wala sa pagkakasunod-sunod, para sa akin, mahirap i-map sa. 1304 01:07:20,490 --> 01:07:24,940 Ngunit isa lamang, na kung paano Sa tingin ko ang tungkol dito. 1305 01:07:24,940 --> 01:07:28,880 Pumunta sa pamamagitan ng buong listahan, hanapin ang pinakamaliliit na numero, ilagay ito sa 1306 01:07:28,880 --> 01:07:30,130 nagsisimula - talaga, handa kanan mo. 1307 01:07:30,130 --> 01:07:31,380 Maglagay ng parehong mga ito Hayaan. 1308 01:07:31,380 --> 01:07:33,470 1309 01:07:33,470 --> 01:07:39,050 >> Kaya habang ang listahan ay wala na sa order, namin kailangan upang pumunta sa pamamagitan ng buong listahan 1310 01:07:39,050 --> 01:07:42,250 isang beses, hanapin ang pinakamaliit na numero, lugar ito sa simula ng listahan, ilagay 1311 01:07:42,250 --> 01:07:45,430 sa simula ng listahan kung saan ang pinakamaliliit na numero ay, at pagkatapos ay kung ang 1312 01:07:45,430 --> 01:07:47,460 listahan ay sira pa rin, hindi namin Nakakuha upang pumunta sa pamamagitan na ito 1313 01:07:47,460 --> 01:07:48,620 proseso muli, tama? 1314 01:07:48,620 --> 01:07:51,610 Iyon ang dahilan kung bakit uriin seleksyon, Big-O runtime ng uri seleksyon, kahit na sino? 1315 01:07:51,610 --> 01:07:52,830 >> AARAL: n nakalapat. 1316 01:07:52,830 --> 01:07:53,590 >> Jason HIRSHHORN: n nakalapat. 1317 01:07:53,590 --> 01:07:57,040 Dahil tulad lamang natanto Marcus at ako dito, kami ay pagpunta sa may upang 1318 01:07:57,040 --> 01:08:00,310 pumunta sa pamamagitan ng listahan listahan bilang ng beses. 1319 01:08:00,310 --> 01:08:03,420 Kaya pagpunta sa pamamagitan ng isang bagay ng haba n n dami ng beses 1320 01:08:03,420 --> 01:08:04,990 ay sa katunayan n nakalapat. 1321 01:08:04,990 --> 01:08:08,100 >> Kaya ito ay ang aming pseudocode. 1322 01:08:08,100 --> 01:08:09,360 Mukhang ito napakabuti. 1323 01:08:09,360 --> 01:08:11,870 Kahit sinong mayroon ba kayong mga katanungan tungkol sa pseudocode? 1324 01:08:11,870 --> 01:08:14,440 Dahil talagang uri seleksyon dapat marahil ay 12:59, code mula sa 1325 01:08:14,440 --> 01:08:14,980 pseudocode. 1326 01:08:14,980 --> 01:08:17,569 Kaya ang anumang mga katanungan tungkol sa logic ng pseudocode? 1327 01:08:17,569 --> 01:08:18,819 Mangyaring hilingin ito ngayon. 1328 01:08:18,819 --> 01:08:22,609 1329 01:08:22,609 --> 01:08:25,379 >> -Uri-uriin ang Pinili - habang ang listahan ay out ng order, kami ay pagpunta sa pumunta sa pamamagitan nito 1330 01:08:25,379 --> 01:08:27,529 at hanapin ang pinakamaliit sa bawat oras at ilagay ito sa harap. 1331 01:08:27,529 --> 01:08:33,470 Kaya habang ang listahan ay wala sa pagkakasunod-sunod, maaari isang tao ninyo akong bigyan na linya ng code na nag- 1332 01:08:33,470 --> 01:08:39,689 Hindi kayo binigyan ako ng isang linya ng code pa, mangyaring? 1333 01:08:39,689 --> 01:08:40,939 Ito tunog tulad ng isang ano? 1334 01:08:40,939 --> 01:08:43,669 1335 01:08:43,669 --> 01:08:44,649 >> AARAL: Iyan ay isang para sa loop. 1336 01:08:44,649 --> 01:08:45,830 >> Jason HIRSHHORN: Ito tunog nais ang isang para sa loop. 1337 01:08:45,830 --> 01:08:47,653 OK, maaari mong ibigay sa akin ang para sa loop? 1338 01:08:47,653 --> 01:08:48,925 Para sa - 1339 01:08:48,925 --> 01:08:50,219 >> AARAL: i Kapantay 0. 1340 01:08:50,219 --> 01:08:52,705 >> Jason HIRSHHORN: i o - 1341 01:08:52,705 --> 01:08:55,111 ano ay ang mga nawawalang namin? 1342 01:08:55,111 --> 01:08:56,819 Ano pumupunta dito mismo? 1343 01:08:56,819 --> 01:08:57,550 >> AARAL: int. 1344 01:08:57,550 --> 01:08:59,270 >> Jason HIRSHHORN: Mismong. 1345 01:08:59,270 --> 01:09:02,590 (Int i = 0; - 1346 01:09:02,590 --> 01:09:07,843 >> AARAL: i 01:09:09,319 >> Jason HIRSHHORN: ipinako ito, si Jeff. 1348 01:09:09,319 --> 01:09:10,660 Kami ay pagpunta sa listahan, i-right? 1349 01:09:10,660 --> 01:09:11,880 Nakita namin na ang code bago. 1350 01:09:11,880 --> 01:09:12,850 Perpekto. 1351 01:09:12,850 --> 01:09:14,790 Kaya maglagay ng aming mga kulot tirante dito ipaalam. 1352 01:09:14,790 --> 01:09:17,859 Pupunta ako upang ilagay ang ilang mga kulot tirante dito. 1353 01:09:17,859 --> 01:09:21,660 >> Kaya habang ito ay 0, kailangan namin upang pumunta sa pamamagitan ng buong listahan. 1354 01:09:21,660 --> 01:09:26,612 Kaya sa bawat oras na pumunta kami sa pamamagitan ng mga listahan, ano ang gusto naming subaybayan ang mga? 1355 01:09:26,612 --> 01:09:28,260 >> AARAL: Kung anumang swaps ay ginawa. 1356 01:09:28,260 --> 01:09:29,069 >> Jason HIRSHHORN: Hanapin sa pinakamaliliit na numero. 1357 01:09:29,069 --> 01:09:31,479 Kaya dapat naming marahil susubaybay sa mga ang pinakamaliit na bilang sa bawat oras. 1358 01:09:31,479 --> 01:09:34,590 Kaya linya ko maaaring gawin upang subaybayan ang ng na ang pinakamaliit na numero? 1359 01:09:34,590 --> 01:09:37,720 Aleha, paano ko panatilihing track ng isang bagay? 1360 01:09:37,720 --> 01:09:38,460 >> AARAL: Magsimula ng isang bagong variable. 1361 01:09:38,460 --> 01:09:39,390 >> Jason HIRSHHORN: Magsimula ng isang bagong variable. 1362 01:09:39,390 --> 01:09:40,069 Kaya hayaan lumikha ng isang variable. 1363 01:09:40,069 --> 01:09:41,830 Anong uri? 1364 01:09:41,830 --> 01:09:42,930 >> AARAL: int. 1365 01:09:42,930 --> 01:09:43,710 >> Jason HIRSHHORN: int. 1366 01:09:43,710 --> 01:09:44,939 Tawagan ng ito sa mga pinakamaliliit na Hayaan. 1367 01:09:44,939 --> 01:09:47,600 At ano ang ginagawa nito katumbas kapag lang kami nagsisimula out? 1368 01:09:47,600 --> 01:09:48,910 Hindi pa namin nawala sa listahan. 1369 01:09:48,910 --> 01:09:50,540 Kami ay sa unang bahagi ng ilista ang aming unang pagkakataon sa pamamagitan ng. 1370 01:09:50,540 --> 01:09:51,930 Ano gagawin nito sa pantay, ang pinakamaliliit na numero? 1371 01:09:51,930 --> 01:09:54,140 >> AARAL: Halaga i. 1372 01:09:54,140 --> 01:09:54,900 >> Jason HIRSHHORN: Halaga i. 1373 01:09:54,900 --> 01:09:56,980 Iyan akmang-akma, tama? 1374 01:09:56,980 --> 01:09:59,590 Ang pinakamaliit na bilang sa simula ay kung saan tayo. 1375 01:09:59,590 --> 01:10:01,960 Kaya ngayon ay mayroon kaming ang aming pinakamaliit, at kailangan namin upang pumunta sa pamamagitan ng buong listahan at 1376 01:10:01,960 --> 01:10:05,080 ihambing ito pinakamaliliit sa lahat ng iba pa. 1377 01:10:05,080 --> 01:10:08,150 Kaya huwag pumunta kami sa listahan muli? 1378 01:10:08,150 --> 01:10:08,630 Michael? 1379 01:10:08,630 --> 01:10:10,000 >> AARAL: Kailangan mong gumawa isa pa para sa loop. 1380 01:10:10,000 --> 01:10:10,383 >> Jason HIRSHHORN: Isa pang para sa loop. 1381 01:10:10,383 --> 01:10:11,276 Gawin ni ito Hayaan. 1382 01:10:11,276 --> 01:10:12,540 Bigyan mo ako ng ilang mga code. 1383 01:10:12,540 --> 01:10:13,790 >> AARAL: Para sa loop - 1384 01:10:13,790 --> 01:10:16,750 1385 01:10:16,750 --> 01:10:19,470 para sa pinakamaliliit - 1386 01:10:19,470 --> 01:10:23,040 1387 01:10:23,040 --> 01:10:25,770 int lang j, maaari mong sabihin? 1388 01:10:25,770 --> 01:10:31,150 = 0; tulad na - 1389 01:10:31,150 --> 01:10:34,014 1390 01:10:34,014 --> 01:10:35,710 >> Jason HIRSHHORN: Well, kung gusto naming upang pumunta sa pamamagitan ng buong listahan - 1391 01:10:35,710 --> 01:10:37,847 >> AARAL: j 01:10:42,140 1393 01:10:42,140 --> 01:10:42,405 >> Jason HIRSHHORN: hindi kapani-paniwala. 1394 01:10:42,405 --> 01:10:46,100 Kami ay pagpunta sa pumunta sa pamamagitan ng ang para sa loop sa sandaling muli. 1395 01:10:46,100 --> 01:10:51,380 At paano ko mahahanap namin ang pinakamaliliit na numero? 1396 01:10:51,380 --> 01:10:52,630 Tom? 1397 01:10:52,630 --> 01:10:54,570 1398 01:10:54,570 --> 01:11:00,520 Mayroon kaming ang kasalukuyang pinakamaliit na numero, kaya paano ko mahahanap namin ang bagong pinakamaliit? 1399 01:11:00,520 --> 01:11:07,200 >> AARAL: Maaari naming suriin kung ang pinakamaliit na numero na mayroon kami ay mas malaki sa 1400 01:11:07,200 --> 01:11:09,040 mga halaga, values ​​bracket j. 1401 01:11:09,040 --> 01:11:14,740 >> Jason HIRSHHORN: Kaya kung pinakamaliliit ay mas malaki kaysa sa halaga bracket j. 1402 01:11:14,740 --> 01:11:19,350 Kaya kung ang aming kasalukuyang mga pinakamaliliit ay mas malaki sa - 1403 01:11:19,350 --> 01:11:21,770 Pupunta ako sa ilipat ang mga dalawang linya ng code na magagamit para sa isang segundo. 1404 01:11:21,770 --> 01:11:26,010 Dahil bago namin gawin ang anumang pagpapalit, kami kailangan upang pumunta sa pamamagitan ng buong listahan. 1405 01:11:26,010 --> 01:11:28,880 Kaya ito pseudocode dapat talaga nasa labas na panloob para sa loop. 1406 01:11:28,880 --> 01:11:30,390 Kaya pumunta sa pamamagitan ng buong listahan. 1407 01:11:30,390 --> 01:11:34,520 Kung pinakamaliit ay mas malaki sa mga halaga j pagkatapos ano? 1408 01:11:34,520 --> 01:11:37,830 >> AARAL: Pagkatapos pinakamaliliit ay katumbas ng halaga j. 1409 01:11:37,830 --> 01:11:41,190 1410 01:11:41,190 --> 01:11:42,600 >> Jason HIRSHHORN: hindi kapani-paniwala. 1411 01:11:42,600 --> 01:11:44,580 Isang mabilis na tanong - 1412 01:11:44,580 --> 01:11:47,236 ang unang pagkakataon na pumunta kami sa pamamagitan ng loop, i pupuntahan kasing-halaga ng 0, j pupuntahan 1413 01:11:47,236 --> 01:11:50,710 upang pumatas 0 sa sandaling makuha namin in dito. 1414 01:11:50,710 --> 01:11:52,410 Kaya kami ay pagpunta sa ay naghahambing isang numero sa sarili nito. 1415 01:11:52,410 --> 01:11:53,660 Mahusay na ba iyon? 1416 01:11:53,660 --> 01:11:57,260 1417 01:11:57,260 --> 01:11:58,390 Hindi, hindi ito talagang mahusay. 1418 01:11:58,390 --> 01:12:02,915 Kaya ang kailangang aming j upang pumunta mula 0 hanggang n bawat panahon? 1419 01:12:02,915 --> 01:12:06,310 Huwag kami laging kailangan upang suriin sa pamamagitan ng buong listahan? 1420 01:12:06,310 --> 01:12:06,520 [Hindi marinig]? 1421 01:12:06,520 --> 01:12:07,564 >> AARAL: sa halip Magsimula sa i. 1422 01:12:07,564 --> 01:12:09,405 >> Jason HIRSHHORN: j lata magsimula sa kung ano? 1423 01:12:09,405 --> 01:12:09,990 >> AARAL: i. 1424 01:12:09,990 --> 01:12:13,040 >> Jason HIRSHHORN: j maaaring magsimula sa i. 1425 01:12:13,040 --> 01:12:18,840 Kaya ngayon namin ihambing nagsisimula may isa kami sa. 1426 01:12:18,840 --> 01:12:21,020 Ngunit kahit na pagkatapos, ay ang bilang mahusay hangga't maaari? 1427 01:12:21,020 --> 01:12:22,320 >> AARAL: i + 1. 1428 01:12:22,320 --> 01:12:25,420 >> Jason HIRSHHORN: i + 1 Mukhang ang pinaka-mahusay, dahil kami 1429 01:12:25,420 --> 01:12:26,120 Mayroon na i. 1430 01:12:26,120 --> 01:12:28,100 Kami ay nagsasabi na bilang pinakamaliit sa 15 linya. 1431 01:12:28,100 --> 01:12:29,350 Kami ay pagpunta sa magsimula sa Awtomatikong susunod na isa. 1432 01:12:29,350 --> 01:12:34,470 1433 01:12:34,470 --> 01:12:38,540 Kaya pumunta kami sa pamamagitan ng para sa loop. 1434 01:12:38,540 --> 01:12:39,620 Susubukan naming dumaan sa bawat oras. 1435 01:12:39,620 --> 01:12:40,860 Susubukan naming pumunta sa pamamagitan ng isang bilang ng beses. 1436 01:12:40,860 --> 01:12:42,860 Ngayon ay na nakuha namin sa pamamagitan ng ito panloob para sa loop. 1437 01:12:42,860 --> 01:12:44,350 Mayroon kaming sine-save ng pinakamaliit na halaga. 1438 01:12:44,350 --> 01:12:46,045 Kailangan namin upang ilagay ito sa simula ng listahan. 1439 01:12:46,045 --> 01:12:48,390 Kaya paano ko ilalagay ito sa simula ng listahan? 1440 01:12:48,390 --> 01:12:51,290 1441 01:12:51,290 --> 01:12:55,926 Ano ang variable na tumutukoy sa simula ng listahan? 1442 01:12:55,926 --> 01:13:00,500 Kami ay sa ito sa labas para sa loop, kaya kung ano ay tumutukoy sa 1443 01:13:00,500 --> 01:13:01,280 simula ng listahan? 1444 01:13:01,280 --> 01:13:02,880 >> AARAL: Halaga i. 1445 01:13:02,880 --> 01:13:03,510 >> Jason HIRSHHORN: Eksaktong karapatan. 1446 01:13:03,510 --> 01:13:04,650 Halaga i ay ang simula ng - 1447 01:13:04,650 --> 01:13:06,320 o ng paumanhin, hindi sa simula. 1448 01:13:06,320 --> 01:13:07,090 Iyon ay nakalilito. 1449 01:13:07,090 --> 01:13:11,620 Ito ay kung saan kami ay sa simula ng ang unsorted bahagi ng listahan. 1450 01:13:11,620 --> 01:13:12,800 Kaya mga halaga i. 1451 01:13:12,800 --> 01:13:14,050 At ano ang ginagawa na katumbas? 1452 01:13:14,050 --> 01:13:15,925 1453 01:13:15,925 --> 01:13:17,326 >> AARAL: Pinakamaliit na. 1454 01:13:17,326 --> 01:13:18,862 >> Jason HIRSHHORN: Halaga i katumbas ng kung ano? 1455 01:13:18,862 --> 01:13:19,310 >> AARAL: Pinakamaliit na. 1456 01:13:19,310 --> 01:13:20,030 >> Jason HIRSHHORN: Pinakamaliit na. 1457 01:13:20,030 --> 01:13:20,980 Akmang-akma. 1458 01:13:20,980 --> 01:13:23,510 Kaya ka ng paglalagay namin ito sa simula ng listahan, at ngayon ay kailangan naming upang ilagay 1459 01:13:23,510 --> 01:13:25,710 sa simula ng listahan kung saan sa pinakamaliliit na numero ay. 1460 01:13:25,710 --> 01:13:29,700 Kaya paano ako susulat kung saan ang pinakamaliliit number ay? 1461 01:13:29,700 --> 01:13:31,670 Mga Halaga ng kung ano? 1462 01:13:31,670 --> 01:13:33,170 >> AARAL: 0. 1463 01:13:33,170 --> 01:13:34,090 >> Jason HIRSHHORN: Ang maliit numero Nasa 0? 1464 01:13:34,090 --> 01:13:35,340 >> AARAL: Oo. 1465 01:13:35,340 --> 01:13:38,680 1466 01:13:38,680 --> 01:13:39,910 >> Jason HIRSHHORN: Paano kung ang pinakamaliit na number ay sa dulo ng 1467 01:13:39,910 --> 01:13:40,860 ito unsorted listahan? 1468 01:13:40,860 --> 01:13:42,460 >> AARAL: Paumanhin, kung ano ang mga katanungan? 1469 01:13:42,460 --> 01:13:44,020 >> Jason HIRSHHORN: Saan sa pinakamaliliit na numero? 1470 01:13:44,020 --> 01:13:46,940 Kinuha namin ang pinakamaliit at ilagay ito sa simula, may ganitong linya dito mismo. 1471 01:13:46,940 --> 01:13:48,987 >> AARAL: Dapat itong magkaroon nai-imbak sa ilang - 1472 01:13:48,987 --> 01:13:50,510 >> AARAL: Halaga j. 1473 01:13:50,510 --> 01:13:51,520 >> Jason HIRSHHORN: Well, ito ay hindi kinakailangang mga halaga j. 1474 01:13:51,520 --> 01:13:54,100 Hindi umiiral kahit na ito sa puntong ito. 1475 01:13:54,100 --> 01:13:55,960 >> AARAL: Mayroon kang idedeklara isang variable na mas maaga at 1476 01:13:55,960 --> 01:13:58,230 pagkatapos ay italaga ito upang - 1477 01:13:58,230 --> 01:14:01,150 kapag nakita ka sa pinakamaliliit na numero, magtalaga sa index ng numerong iyon sa 1478 01:14:01,150 --> 01:14:02,480 ilang mga variable o isang bagay tulad na. 1479 01:14:02,480 --> 01:14:04,790 >> Jason HIRSHHORN: Kaya maaari sasabihin mo na muli? 1480 01:14:04,790 --> 01:14:08,390 >> AARAL: Kaya kung saan mo ipinahayag int pinakamaliliit na, dapat mo ring magpahayag int 1481 01:14:08,390 --> 01:14:10,750 pinakamaliliit na index = i, o ang isang bagay tulad na. 1482 01:14:10,750 --> 01:14:13,280 >> Jason HIRSHHORN: Kaya kung saan ko int pinakamaliliit na, hindi lamang dapat kong subaybayan ang 1483 01:14:13,280 --> 01:14:16,150 ng halaga ngunit ang lokasyon. 1484 01:14:16,150 --> 01:14:20,850 int smallest_location = in na ito kaso, bibigyan namin lamang gawin i. 1485 01:14:20,850 --> 01:14:22,390 Kailangan naming malaman kung saan ito. 1486 01:14:22,390 --> 01:14:26,820 Nakakuha kami sa dulo ng code, at kami napagtanto namin ay may walang ideya kung saan ito ay. 1487 01:14:26,820 --> 01:14:29,810 At kaya muli, kami ay pagmamapa ito sa 00:59. 1488 01:14:29,810 --> 01:14:32,890 Ikaw guys coding na ito sa iyong sariling kalooban marahil makakuha ng sa parehong problema. 1489 01:14:32,890 --> 01:14:34,130 Paano ang ano ba ko mahahanap ito? 1490 01:14:34,130 --> 01:14:36,720 At pagkatapos ay natanto, maghintay, ako kailangan upang subaybayan ang mga iyon. 1491 01:14:36,720 --> 01:14:38,500 >> Kaya kung pinakamaliliit ay mas malaki kaysa halaga j. 1492 01:14:38,500 --> 01:14:39,740 Itinakda namin pinakamaliliit na katumbas sa halaga j. 1493 01:14:39,740 --> 01:14:42,090 Ano pa ang kailangan namin upang baguhin? 1494 01:14:42,090 --> 01:14:43,710 Constantin, ano pa gawin kailangan namin upang baguhin? 1495 01:14:43,710 --> 01:14:44,560 >> AARAL: Ang lokasyon. 1496 01:14:44,560 --> 01:14:45,270 >> Jason HIRSHHORN: Mismong. 1497 01:14:45,270 --> 01:14:46,925 Kaya ninyo ako na linya sa code. 1498 01:14:46,925 --> 01:14:53,310 >> AARAL: smallest_location = j. 1499 01:14:53,310 --> 01:14:54,790 >> Jason HIRSHHORN: Mismong. 1500 01:14:54,790 --> 01:14:58,210 At pagkatapos ay pababa sa dulo, kung gusto naming ilagay sa unahan ng listahan kung saan 1501 01:14:58,210 --> 01:15:00,790 ang pinakamaliit na number ay, kung paano huwag mag-refer namin sa kung saan ang 1502 01:15:00,790 --> 01:15:02,200 pinakamaliliit number ay? 1503 01:15:02,200 --> 01:15:03,580 Marcus? 1504 01:15:03,580 --> 01:15:08,530 >> AARAL: Ang pinakamaliit na number ay Matatagpuan sa pinakamaliliit na lokasyon. 1505 01:15:08,530 --> 01:15:12,230 >> Jason HIRSHHORN: Kaya sa mga halaga smallest_location. 1506 01:15:12,230 --> 01:15:14,700 At ano ang ilalagay namin doon? 1507 01:15:14,700 --> 01:15:17,600 Ang simula ng listahan, ano ang na? 1508 01:15:17,600 --> 01:15:19,710 >> AARAL: Well, hindi kami talaga alam ngayon dahil sinulatan papatong namin. 1509 01:15:19,710 --> 01:15:23,250 Kaya ito ay isang swapped mga lokasyon ng mga dalawang linya? 1510 01:15:23,250 --> 01:15:26,110 Kung lumipat ka sa mga dalawang linya sa paligid. 1511 01:15:26,110 --> 01:15:30,740 >> Jason HIRSHHORN: OK, kaya hindi namin ngayon, dahil reset na namin ang linya 1512 01:15:30,740 --> 01:15:31,960 bago i mga halaga sa pinakamaliit. 1513 01:15:31,960 --> 01:15:33,810 Kaya nawala namin na paunang halaga. 1514 01:15:33,810 --> 01:15:37,350 Kaya't sinabi mong swap ang mga dalawang linya. 1515 01:15:37,350 --> 01:15:41,780 Kaya ngayon ilagay sa unahan ng listahan kung saan na ang pinakamaliit na numero ay. 1516 01:15:41,780 --> 01:15:47,060 Kaya smallest_location ay katumbas ng halaga i. 1517 01:15:47,060 --> 01:15:51,310 Iyon gumagalaw ang simula ng ito unsorted bahagi ng listahan sa 1518 01:15:51,310 --> 01:15:52,090 pinakamaliliit na lokasyon. 1519 01:15:52,090 --> 01:15:54,860 At pagkatapos ay sa mga halaga i ka namin gumagalaw na pinakamaliliit na numero. 1520 01:15:54,860 --> 01:15:57,450 >> Gumagana ba na make kahulugan kung bakit namin Nagkaroon upang gumawa magpalitan na? 1521 01:15:57,450 --> 01:15:59,650 Gusto namin ang mapapatungan halaga na - isa pang bagay marahil ay magkakaroon 1522 01:15:59,650 --> 01:16:02,740 may korte out at natagpuan sa GDP. 1523 01:16:02,740 --> 01:16:05,310 Kaya nagsagawa kami ng pag-aalaga ng lahat ng pseudocode. 1524 01:16:05,310 --> 01:16:10,935 Mayroon bang anumang bagay kami kailangang isulat dito? 1525 01:16:10,935 --> 01:16:14,911 Maaari kahit sino sa tingin ng anumang bagay? 1526 01:16:14,911 --> 01:16:16,180 >> AARAL: Paano ko malalaman mo kapag tapos ka na? 1527 01:16:16,180 --> 01:16:17,680 >> Jason HIRSHHORN: Paano ginagawa namin alam kapag tapos na kami? 1528 01:16:17,680 --> 01:16:18,890 Mahusay na tanong. 1529 01:16:18,890 --> 01:16:21,684 Kaya paano ko malalaman namin kapag tapos na kami. 1530 01:16:21,684 --> 01:16:24,720 >> AARAL: Lumikha ng isang variable na panatilihin ang bilang ng ng kung mayroong isang magpalitan ginawa o hindi 1531 01:16:24,720 --> 01:16:27,810 at pumunta sa pamamagitan ng pass. 1532 01:16:27,810 --> 01:16:30,180 >> Jason HIRSHHORN: OK. 1533 01:16:30,180 --> 01:16:31,800 Ito ay gumagana sa bubble sort. 1534 01:16:31,800 --> 01:16:35,210 Ngunit para sa uri pagpili, kung hindi namin gumawa ng swap, na maaaring lamang maging 1535 01:16:35,210 --> 01:16:38,670 dahil sa pinakamaliliit na halaga ay sa ito ng tama ang lokasyon nito. 1536 01:16:38,670 --> 01:16:41,240 Maaaring mayroon kami ng isang listahan 1, 2, 4, 3. 1537 01:16:41,240 --> 01:16:42,830 Ang ikalawang oras sa pamamagitan ng namin ay hindi magsagawa ng anumang mga swaps. 1538 01:16:42,830 --> 01:16:47,260 Babalik kami sa bilang 2, ngunit kami ay kailangan pa rin upang panatilihin ang pagpunta. 1539 01:16:47,260 --> 01:16:49,390 Kaya kailangan namin upang masubaybayan kapag tapos na kami, o nais lang namin upang pumunta 1540 01:16:49,390 --> 01:16:50,640 hanggang sa ito ay tapos? 1541 01:16:50,640 --> 01:16:54,098 1542 01:16:54,098 --> 01:16:56,740 >> AARAL: Maaari lang namin pumunta hanggang sa natapos. 1543 01:16:56,740 --> 01:16:58,090 >> Jason HIRSHHORN: maaari lang namin pumunta hanggang sa ito ay tapos na. 1544 01:16:58,090 --> 01:17:01,720 Sa bubble sort, handa akmang-akma sa iyo, Jeff at Aleha, gamit ang iyong solusyon - 1545 01:17:01,720 --> 01:17:04,990 ito ay mahusay na upang masubaybayan kung gaano karaming swaps na ginawa mo, dahil sa bubble 1546 01:17:04,990 --> 01:17:07,920 -uri-uriin, kung gagawin mo sa katunayan gumawa walang swaps, tapos ka na at maaari mong i-cut siguro iyong 1547 01:17:07,920 --> 01:17:09,000 problema pababa sa isang bit. 1548 01:17:09,000 --> 01:17:11,440 Ngunit para sa uri seleksyon, ikaw talaga Nakakuha upang pumunta sa pamamagitan ng sa dulo ng 1549 01:17:11,440 --> 01:17:14,940 ilista ang bawat oras sa paligid. 1550 01:17:14,940 --> 01:17:16,200 >> Kaya ito ay na iyon. 1551 01:17:16,200 --> 01:17:18,530 Mayroon kaming dalawang minuto ang natitira. 1552 01:17:18,530 --> 01:17:21,560 Ni gawin ang lahat ng Hayaan. 1553 01:17:21,560 --> 01:17:24,340 Hayaan akong lamang bukas Hanapin dito at gumawa ng mga sigurado ako sa katunayan pagtawag up - 1554 01:17:24,340 --> 01:17:25,610 Hindi ako pagtawag bubble sort. 1555 01:17:25,610 --> 01:17:29,230 Ni baguhin ito upang uriin seleksyon Hayaan. 1556 01:17:29,230 --> 01:17:31,060 gumawa ng lahat. / mahanap. 1557 01:17:31,060 --> 01:17:32,360 Ng makahanap ng 42 Hayaan. 1558 01:17:32,360 --> 01:17:38,110 Ito oras kami ay pagpunta sa pumasa sa isang unsorted listahan, dahil dapat itong uri-uriin 1559 01:17:38,110 --> 01:17:43,790 unang, alinsunod sa mga code find - dapat pagbukud-bukurin unang paggamit ng aming function na-uri-uriin at pagkatapos ay 1560 01:17:43,790 --> 01:17:44,995 tumingin para sa isang bagay. 1561 01:17:44,995 --> 01:17:46,245 Daliri ng matang sa lahat. 1562 01:17:46,245 --> 01:17:48,530 1563 01:17:48,530 --> 01:17:49,370 >> Oh aking kabutihan. 1564 01:17:49,370 --> 01:17:50,800 Whoa, ang aking puso ay matalo. 1565 01:17:50,800 --> 01:17:52,320 Kaya na ay tama. 1566 01:17:52,320 --> 01:17:57,270 Sa katunayan, kung tumakbo namin ito nang higit pa malawakan, ang code, kasing layo ng makakaya ko 1567 01:17:57,270 --> 01:17:59,280 sabihin, ay ganap na ganap tama. 1568 01:17:59,280 --> 01:18:02,150 Mayroong ilang mga mungkahi Gusto ko magkaroon ng para sa iyo. 1569 01:18:02,150 --> 01:18:06,215 Halimbawa, 15 at 16 na tila medyo kalabisan. 1570 01:18:06,215 --> 01:18:09,450 Mukhang tulad ng gagawin mo ay hindi kinakailangang kailangan upang i-save ang parehong mga. 1571 01:18:09,450 --> 01:18:12,790 Kung mayroon kang mga pinakamaliliit na lokasyon, mo Maaaring madaling mahanap ang pinakamaliit na halaga sa pamamagitan ng 1572 01:18:12,790 --> 01:18:14,750 lamang ng pag-type ang mga halaga ng i. 1573 01:18:14,750 --> 01:18:18,100 >> Kaya kung ako ay ma-grading ang iyong code, na ako ay sa katunayan maging, nais ko 1574 01:18:18,100 --> 01:18:21,160 marahil tumagal-off ang isang punto kung ikaw Kasama ang parehong mga pag, dahil ikaw 1575 01:18:21,160 --> 01:18:22,670 hindi na kailangan ng parehong mga. 1576 01:18:22,670 --> 01:18:25,400 Kung mayroon kang mga lokasyon, maaari kang napaka madaling makuha ang halaga. 1577 01:18:25,400 --> 01:18:27,520 At ito ay tila medyo kakaiba upang i-imbak ang dalawang iyan. 1578 01:18:27,520 --> 01:18:31,070 Siguro hindi kahit na tumagal ng isang punto, ngunit tiyak magkomento na iyon ay siguro 1579 01:18:31,070 --> 01:18:32,670 hindi isang pangkakanyahan choice kailangan mong gawin. 1580 01:18:32,670 --> 01:18:35,290 Siyempre pa, ang code pa rin ay nagpapatakbo ng ganap na ganap na rin. 1581 01:18:35,290 --> 01:18:36,860 >> Kaya sa kasamaang-palad namin ay hindi makapunta sa bubble sort. 1582 01:18:36,860 --> 01:18:37,940 Ikinalulungkot kong tungkol iyon. 1583 01:18:37,940 --> 01:18:39,135 Ginawa namin ang uri seleksyon tapusin. 1584 01:18:39,135 --> 01:18:41,450 Kahit sinong mayroon ba anumang panghuling tanong tungkol sa uri seleksyon? 1585 01:18:41,450 --> 01:18:44,320 1586 01:18:44,320 --> 01:18:47,690 >> OK, bago magtungo ang out namin, gusto ko sa iyo upang buksan ang iyong browser Chrome. 1587 01:18:47,690 --> 01:18:54,340 Paumanhin, na noon ay lamang ng isang maingay plug para sa isang uri ng internet browser. 1588 01:18:54,340 --> 01:18:57,770 Maaari mong buksan up ang anumang uri ng browser, ngunit magkakaroon ito marahil maging Chrome. 1589 01:18:57,770 --> 01:19:01,250 At pumunta sa sumusunod ito website - 1590 01:19:01,250 --> 01:19:06,410 sayat.me/cs50. 1591 01:19:06,410 --> 01:19:07,685 Kung hindi ka mag-type sa iyong computer sa ngayon, ikaw ay malinaw na 1592 01:19:07,685 --> 01:19:10,210 Hindi ito ginagawa, Tom. 1593 01:19:10,210 --> 01:19:12,870 >> At mangyaring gawin ito alinman sa kanan ngayon o sa susunod na oras - 1594 01:19:12,870 --> 01:19:14,260 bigyan ako ng ilang puna. 1595 01:19:14,260 --> 01:19:15,660 Ito ay para lamang sa dalawang seksyon. 1596 01:19:15,660 --> 01:19:18,060 Mayroon kaming maraming iba pang mga magkasama, kaya ko magkaroon ng maraming kuwarto upang mapabuti. 1597 01:19:18,060 --> 01:19:19,620 Sana ako ginawa din ang ilang mga bagay na rin. 1598 01:19:19,620 --> 01:19:22,160 Kaya maaari mong gawin sa akin pakiramdam sa lahat ng masama, ngunit kung gusto mo ba rin na ninyo ako ng SMILEY 1599 01:19:22,160 --> 01:19:24,250 mukha, Gusto ko Pinahahalagahan din iyon. 1600 01:19:24,250 --> 01:19:25,330 Punan na in 1601 01:19:25,330 --> 01:19:28,210 >> At sa isang minuto ang natitira, na noon ay linggo tatlo. 1602 01:19:28,210 --> 01:19:30,750 Magtatagal ako tumayo sa labas para sa isang bit kung mayroon kang anumang mga katanungan. 1603 01:19:30,750 --> 01:19:32,220 Ay ko bang makita ka guys sa magbigay ng panayam bukas. 1604 01:19:32,220 --> 01:19:34,742