1 00:00:00,000 --> 00:00:03,000 [Powered by Google Translate] [Seksyon 3] [Mas kaunti kumportableng] 2 00:00:03,000 --> 00:00:05,000 >> [Nate Hardison] [Harvard University] 3 00:00:05,000 --> 00:00:08,000 >> [Ito ay CS50.] [CS50.TV] 4 00:00:08,000 --> 00:00:10,000 >> Lahat ng karapatan, sabihin makapagsimula. 5 00:00:10,000 --> 00:00:13,000 Maligayang pagdating sa Linggo 4 ng CS50. 6 00:00:13,000 --> 00:00:19,000 Kung ikaw guys buksan up ng isang web browser at buksan up pset 3, 7 00:00:19,000 --> 00:00:23,000 Mang-uayabit may CS50, kami ay pagpunta upang simulan ang pagpunta 8 00:00:23,000 --> 00:00:26,000 sa pamamagitan ng seksyon ng mga katanungan doon. 9 00:00:26,000 --> 00:00:32,000 Tulad lamang noong nakaraang linggo, gagawa kami sa CS50 puwang, 10 00:00:32,000 --> 00:00:35,000 kung makikita mo ring hilahin na up pati na rin, 11 00:00:35,000 --> 00:00:43,000 at kung pumunta ka magpatuloy at bisitahin ang link na ito na Mayroon akong dito sa tuktok. 12 00:00:43,000 --> 00:00:45,000 Ito ay oras na upang makapagsimula. 13 00:00:45,000 --> 00:00:51,000 Mayroon namin ang aming maliit na programa hi dito. Walang mabaliw. 14 00:00:51,000 --> 00:00:55,000 Isa ng ang unang bagay na gusto kong gawin sa iyo guys ngayon ay pumunta sa paglipas ng ilang mga solusyon 15 00:00:55,000 --> 00:00:58,000 Problema Set 1, uri ng mga solusyon sa halimbawa, 16 00:00:58,000 --> 00:01:03,000 lamang sa gayon ay maaari kang makakuha ng isang pakiramdam para sa kung ano ang mga uri ng kawani ng code pagsusulat, 17 00:01:03,000 --> 00:01:07,000 kung ano ang mga uri ng code sa iba pang mga mag-aaral ay sumusulat, 18 00:01:07,000 --> 00:01:10,000 at mayroon kang tingnan ito dahil alam ko na ito ay kakaiba 19 00:01:10,000 --> 00:01:14,000 kapag isinumite mo ang isang solusyon sa isang hanay ng problema at makakuha ng mga komento 20 00:01:14,000 --> 00:01:18,000 sa iyong sariling bersyon, ngunit kung minsan ito ay kapaki-pakinabang upang makita kung paano ginawa ito ng ibang tao, 21 00:01:18,000 --> 00:01:22,000 lalo na mga na magaling hinahanap. 22 00:01:22,000 --> 00:01:27,000 Para sa nakararaming bahagi, talagang ako ay impressed na may mga solusyon na iyong guys gumawa. 23 00:01:27,000 --> 00:01:31,000 Hindi pa ako makapagsimula ng pagtingin sa iyong mga Problema Itakda 2s, ngunit kung sila ay anumang bagay tulad ng sa unang, 24 00:01:31,000 --> 00:01:34,000 ito ay nangangahulugan na ang walang anuman kundi mabuting bagay. 25 00:01:34,000 --> 00:01:40,000 >> Kung tumingin ka sa aking mga pagbabago, sabihin simulan ang lahat ng mga paraan sa Rebisyon 1, 26 00:01:40,000 --> 00:01:47,000 at kami ay pagpunta sa tumagal ng isang mabilis na pagtingin sa isang solusyon ng Mario. 27 00:01:47,000 --> 00:01:54,000 Kung hilahin mo up na ito, ang mga programang ito na kami ay pagpunta sa ipakita tama. 28 00:01:54,000 --> 00:01:56,000 May mga hindi kawastuhan ng mga isyu na may mga problemang ito, ngunit sa halip, 29 00:01:56,000 --> 00:01:59,000 gusto naming makipag-usap ng kaunti tungkol sa iba't ibang mga isyu ng disenyo 30 00:01:59,000 --> 00:02:03,000 na ginagamit dito. 31 00:02:03,000 --> 00:02:08,000 Isa ng mga bagay na kawili-wili tungkol sa solusyon 32 00:02:08,000 --> 00:02:11,000 ay na ginamit ang bagong bumuo tinatawag na pound tukuyin, 33 00:02:11,000 --> 00:02:15,000 minsan din-refer ng hash ng tukuyin. 34 00:02:15,000 --> 00:02:18,000 Hayaan akong mag-zoom in dito dito. 35 00:02:18,000 --> 00:02:24,000 A # tukuyin ay nagbibigay-daan sa iyo upang bigyan ang mga pangalan sa mga numerong ito sa iyong programa. 36 00:02:24,000 --> 00:02:28,000 Sa kasong ito, ang maximum na taas ng isang pyramid sa Mario 37 00:02:28,000 --> 00:02:34,000 ay 23 at sa halip na paglalagay ng 23 sa aking code- 38 00:02:34,000 --> 00:02:37,000 nais naming sumangguni sa bilang mahirap coding 23 - 39 00:02:37,000 --> 00:02:43,000 sa halip, ito ay nagbibigay sa ang pangalan MAX_HEIGHT sa numerong iyon, 40 00:02:43,000 --> 00:02:48,000 kaya na down na dito sa aking do-habang loop 41 00:02:48,000 --> 00:02:51,000 maaari mong aktwal na sumangguni sa MAX_HEIGHT 42 00:02:51,000 --> 00:02:55,000 sa halip ng paglalagay ng bilang 23. 43 00:02:55,000 --> 00:02:57,000 [Mag-aaral] Ano ang bentahe ng paggawa na? 44 00:02:57,000 --> 00:02:59,000 Iyon ay isang mahusay na tanong. 45 00:02:59,000 --> 00:03:03,000 Isa ay sa pagiging madaling mabasa. 46 00:03:03,000 --> 00:03:08,000 Isang bentahe ng gamit ang # tukuyin ang pagiging madaling mabasa. 47 00:03:08,000 --> 00:03:11,000 Kapag ako binabasa ang code na ito, maaari ba akong makita kung ano ang nangyayari sa. 48 00:03:11,000 --> 00:03:15,000 >> Ang maaari kong makita sa ang kundisyong ito dito na sinusubukan namin 49 00:03:15,000 --> 00:03:19,000 para sa taas pagiging <0, na maaaring rin namin natukoy 50 00:03:19,000 --> 00:03:22,000 sa isang minimum na taas o taas ng min. 51 00:03:22,000 --> 00:03:25,000 Ang iba pang bentahe ko pagkatapos basahin ang iba ng linya upang makita 52 00:03:25,000 --> 00:03:30,000 na rin namin check upang matiyak na ang taas ay hindi mas malaki kaysa sa taas ng max, 53 00:03:30,000 --> 00:03:35,000 dahil kami ay pagpunta upang magpatuloy habang taas ay mas mataas kaysa sa taas ng max. 54 00:03:35,000 --> 00:03:40,000 Ang iba pang bentahe kung ako mag-zoom out ng kaunti dito- 55 00:03:40,000 --> 00:03:49,000 kung nagpatakbo ako sa programang ito at nagpatakbo ako ng, sabihin nating, may 23 ngayon, 56 00:03:49,000 --> 00:03:52,000 ito ay i-print ang lahat ng 23 mga hilera tulad na. 57 00:03:52,000 --> 00:03:54,000 Ngunit sasabihin Nais kong baguhin ang max na taas, 58 00:03:54,000 --> 00:03:57,000 at ngayon ay nais ko upang limitahan ang maximum na taas ng pyramids 59 00:03:57,000 --> 00:04:06,000 lamang sabihin-tao, na funky. 60 00:04:06,000 --> 00:04:14,000 # Include , tukuyin # MAX_HEIGHT, 61 00:04:14,000 --> 00:04:18,000 at sabihin nating gusto naming i-set ito katumbas sa 10. 62 00:04:18,000 --> 00:04:22,000 Ngayon sa puntong ito, ang lahat ng Mayroon akong gawin ay baguhin ito sa isang lokasyon. 63 00:04:22,000 --> 00:04:27,000 Maaari kong mag-recompile ang code, at ngayon kung ako subukan at i-type sa 12, 64 00:04:27,000 --> 00:04:30,000 ito ay prompt sa akin muli. 65 00:04:30,000 --> 00:04:33,000 Sa kasong ito, lamang namin ginagamit MAX_HEIGHT sabay-sabay. 66 00:04:33,000 --> 00:04:37,000 Ito ay hindi na malaki ng isang abala upang pumunta sa 67 00:04:37,000 --> 00:04:40,000 at baguhin ang mga ito sa loop habang kung kailangan mo. 68 00:04:40,000 --> 00:04:44,000 Ngunit sa mga programa na kung saan ka na tumutukoy sa ang parehong bilang ng magic 69 00:04:44,000 --> 00:04:47,000 nang paulit-ulit, ito # tukuyin ang mekanismo ay talagang madaling gamiting 70 00:04:47,000 --> 00:04:52,000 dahil mo lamang baguhin ang mga ito isang beses sa tuktok ng file na ito ay karaniwang kung saan mo ilagay ang mga ito- 71 00:04:52,000 --> 00:04:57,000 at pagbabago percolates sa pamamagitan ng iba pang mga bahagi ng file. 72 00:04:57,000 --> 00:05:02,000 >> Iba pang mga bagay Nais kong tandaan sa pagtatalaga na ito na naisip ko na mukhang talagang magaling, 73 00:05:02,000 --> 00:05:05,000 ay isa sa pagpapangalan ng mga variable. 74 00:05:05,000 --> 00:05:14,000 Nakikita dito na kami nakakuha ng integer variable na tinatawag na hilera at tinatawag taas. 75 00:05:14,000 --> 00:05:20,000 Puwang, hashes, tumutulong sa mga code ng kaunti pa nababasa, 76 00:05:20,000 --> 00:05:25,000 ginagawang ito ng kaunti pa naiintindihan kung ano ang aktwal na pagpunta sa. 77 00:05:25,000 --> 00:05:31,000 Ito ay sa kaibahan sa paggamit ng, sabihin nating, random na titik 78 00:05:31,000 --> 00:05:35,000 o gobbledygook kabuuan. 79 00:05:35,000 --> 00:05:39,000 Ang isang pangwakas na bagay na makikita ko ituro ang para sa loop, 80 00:05:39,000 --> 00:05:45,000 madalas mga iterator variable, mga counter na gamitin mo sa iyong para sa loop, 81 00:05:45,000 --> 00:05:51,000 standard at maginoo upang simulan ang mga ito sa alinman sa i at pagkatapos j at pagkatapos k 82 00:05:51,000 --> 00:05:54,000 at pagpunta sa mula doon kung kailangan mo ng karagdagang variable, 83 00:05:54,000 --> 00:05:56,000 at ito lamang ang convention. 84 00:05:56,000 --> 00:05:58,000 Mayroong maraming mga convention. 85 00:05:58,000 --> 00:06:00,000 Depende sa programming language na ginagamit mo. 86 00:06:00,000 --> 00:06:04,000 Ngunit sa C, namin karaniwang magsimula sa i. 87 00:06:04,000 --> 00:06:08,000 Hindi ito magkaroon ng kahulugan upang gamitin, sabihin nating, o b 88 00:06:08,000 --> 00:06:13,000 depende sa sitwasyon. 89 00:06:13,000 --> 00:06:15,000 Iyon ay para sa. 90 00:06:15,000 --> 00:06:25,000 Kung ikaw ngayon makuha ang Rebisyon 2, makikita mo ang isa pang Mario, 91 00:06:25,000 --> 00:06:29,000 at ang isang ito ay katulad sa iba pang isa na lamang namin nakita, 92 00:06:29,000 --> 00:06:32,000 ngunit ang isang bagay na uri ng mga cool. 93 00:06:32,000 --> 00:06:38,000 Kung titingnan namin sa seksyong ito dito mismo sa loob ng inner loop, 94 00:06:38,000 --> 00:06:44,000 ginagamit nila ang ilang mga nakatutuwang naghahanap syntax dito sa linya na ito. 95 00:06:44,000 --> 00:06:47,000 Ito ay tinatawag na isang tatluhan operator. 96 00:06:47,000 --> 00:06:53,000 Ay isang kung pang tao pahayag na condensed sa isang linya. 97 00:06:53,000 --> 00:06:57,000 Kondisyon ay ang bahaging ito sa loob ng mga panaklong. 98 00:06:57,000 --> 00:07:05,000 Katumbas sa sinasabi kung j 00:07:10,000 At pagkatapos ay kung ano ang mga nilalaman na kung block ay ang mga espasyo 100 00:07:10,000 --> 00:07:16,000 at pagkatapos ay ang mga nilalaman ng ano pa ay ito #. 101 00:07:16,000 --> 00:07:20,000 Mahalagang ito ay nagtatalaga ng isang puwang na ito variable. 102 00:07:20,000 --> 00:07:24,000 Ito ng paglalagay ng espasyo sa mga nilalaman ng variable bloke, 103 00:07:24,000 --> 00:07:29,000 kung ang kondisyon na ito ay nakamit, at kung ang kalagayan ay hindi pa nakikilala, 104 00:07:29,000 --> 00:07:32,000 pagkatapos block variable ay nakakakuha ito #. 105 00:07:32,000 --> 00:07:37,000 At pagkatapos, siyempre, sa halip ng pagbuo ng isang buong string 106 00:07:37,000 --> 00:07:43,000 at pag-print ng lahat sa dulo solusyong ito ng mga Kopya ito isang character sa isang pagkakataon. 107 00:07:43,000 --> 00:07:48,000 Medyo cool. 108 00:07:48,000 --> 00:07:53,000 >> Isa pang dalawang mga bagay upang tumingin sa. Susubukan naming lumipat sa matakaw. 109 00:07:53,000 --> 00:07:58,000 Ngayon kung tinitingnan namin ang matakaw, ang unang solusyon 110 00:07:58,000 --> 00:08:00,000 ginagamit ang mga # tumutukoy medyo ng kaunti. 111 00:08:00,000 --> 00:08:06,000 Mayroon kaming isang pare-pareho na tinukoy para sa bawat isa ng iba't ibang mga numero sa programang ito. 112 00:08:06,000 --> 00:08:12,000 Mayroon kaming isa para sa mga cents kada dolyar, isa para sa mga quarters, dimes, nickels, at pennies, 113 00:08:12,000 --> 00:08:15,000 at ngayon kung mag-scroll namin down at basahin ang code, 114 00:08:15,000 --> 00:08:22,000 maaari naming makita ang isang karaniwang gawin-habang loop sa pagpi-print ng lahat. 115 00:08:22,000 --> 00:08:25,000 Uri ng suliranin sa problemang ito ay napagtatanto na 116 00:08:25,000 --> 00:08:29,000 kailangan mo i-convert ang Float na iyong basahin mula sa user sa isang integer 117 00:08:29,000 --> 00:08:32,000 tumpak na gawin ang matematika, at ito ay dahil 118 00:08:32,000 --> 00:08:36,000 may lumulutang point numero, tulad ng usapan natin ang tungkol sa panayam sa maikling, 119 00:08:36,000 --> 00:08:41,000 ito ay hindi posible sa tumpak na kumakatawan sa bawat solong halaga sa linya ng numero 120 00:08:41,000 --> 00:08:47,000 dahil may walang hanggan maraming mga halaga sa pagitan ng 3 at, sabihin nating, 3.1 kahit. 121 00:08:47,000 --> 00:08:54,000 Maaari kang magkaroon ng 3.01 at 3.001 at 3.0001, at maaari mong panatilihin ang pagpunta. 122 00:08:54,000 --> 00:09:00,000 Ito lumiliko out tuwing nakikipagtulungan ka sa pera, madalas kang gustong i-convert ito 123 00:09:00,000 --> 00:09:05,000 sa integer format upang hindi ka mawala ang pennies at ang uri ng mga bagay-bagay. 124 00:09:05,000 --> 00:09:09,000 Paggawa na at rounding ay key. 125 00:09:09,000 --> 00:09:14,000 Solusyon na ito ay gumamit ng isang perpektong tuwiran, mahusay na algorithm, 126 00:09:14,000 --> 00:09:17,000 kung saan decremented ang bilang ng mga sentimo na natitira, una sa pamamagitan ng quarters, 127 00:09:17,000 --> 00:09:19,000 pagkatapos ay sa pamamagitan ng dimes, pagkatapos ng mga nickels, pagkatapos ay sa pamamagitan ng pennies, 128 00:09:19,000 --> 00:09:24,000 at pagdaragdag sa ang bilang ng mga barya sa bawat oras. 129 00:09:24,000 --> 00:09:31,000 >> Ang isa pang solusyon na namin makita, bilang ako mag-zoom out at pumunta sa Pagbabago 4, 130 00:09:31,000 --> 00:09:40,000 may katulad na simula ngunit sa halip ginamit div at mod 131 00:09:40,000 --> 00:09:44,000 karapatan sa paglipas dito upang kalkulahin ang bilang ng mga sentimo. 132 00:09:44,000 --> 00:09:50,000 Na ito, ang bilang ng mga quarters ay katumbas ng bilang ng mga sentimo na hinati sa pamamagitan ng 25, 133 00:09:50,000 --> 00:09:53,000 at ang dahilan ito gumagana ay dahil ginagawa namin integer division, 134 00:09:53,000 --> 00:09:58,000 kaya discarding anumang natitira. 135 00:09:58,000 --> 00:10:02,000 [Mag-aaral] ba naming magkomento sa paghahanap? 136 00:10:02,000 --> 00:10:05,000 Ito ay talagang dumedepende. 137 00:10:05,000 --> 00:10:08,000 [Mag-aaral] ka pagkomento higit sa code sa dito. 138 00:10:08,000 --> 00:10:16,000 Oo, at kaya ng grupo ng mga iba't ibang mga philosophies sa. 139 00:10:16,000 --> 00:10:21,000 Ang aking personal na pilosopiya ay na ang iyong code ay talagang ang katotohanan, 140 00:10:21,000 --> 00:10:24,000 tulad ng iyong code ay kung ano ang aktwal na execute sa computer, 141 00:10:24,000 --> 00:10:29,000 at sa gayon ang iyong code ay dapat na bilang nababasa hangga't maaari hindi mangailangan ng maraming mga komento. 142 00:10:29,000 --> 00:10:33,000 Na sinabi, kapag gumagawa ka ng mga bagay na uri ng nakakalito mathematically 143 00:10:33,000 --> 00:10:38,000 o algorithm, ito ay handa na upang magkomento doon sa gayon ay maaari mong 144 00:10:38,000 --> 00:10:43,000 magdagdag ng dagdag na dimensyon, isang dagdag na layer sa sinumang nagbabasa ng iyong code. 145 00:10:43,000 --> 00:10:49,000 Sa mga solusyon na ito, ay madalas na sila ay nagkomento mas mabigat dahil lang 146 00:10:49,000 --> 00:10:52,000 nais namin upang ipamahagi ang mga ito at may tao pick up ang mga ito 147 00:10:52,000 --> 00:10:56,000 at basahin ang mga ito nang medyo madali. 148 00:10:56,000 --> 00:11:05,000 Ngunit tiyak, Gusto ko sumang-ayon na ito ay mabigat. 149 00:11:05,000 --> 00:11:07,000 [Mag-aaral] Ngunit kapag may pagdududa, pumunta mas mabibigat na? 150 00:11:07,000 --> 00:11:10,000 Kapag may pagdududa, pumunta mas mabibigat na. 151 00:11:10,000 --> 00:11:17,000 Ang ilang mga tao ay minsan sabihin ng return 0 o isang bagay tulad na. 152 00:11:17,000 --> 00:11:20,000 Tingin ko na ang isang katawa-tawa komento. 153 00:11:20,000 --> 00:11:22,000 Malinaw na kung ano ang nangyayari. 154 00:11:22,000 --> 00:11:25,000 Hindi ko kailangan ang Ingles sa sabihin sa akin na. 155 00:11:25,000 --> 00:11:28,000 Minsan mga tao ay sumulat ng mga bagay-bagay tulad ng "kthxbai!" 156 00:11:28,000 --> 00:11:32,000 Na uri ng nakatutuwa ngunit Hindi rin- 157 00:11:32,000 --> 00:11:35,000 na hindi gumagawa ng pagkakaiba sa pagitan ng pagkomento sa mga puntos o hindi. 158 00:11:35,000 --> 00:11:41,000 Yaong mga uri ng mga komento ay ha, ha. 159 00:11:41,000 --> 00:11:43,000 Cool. 160 00:11:43,000 --> 00:11:48,000 >> Sa puntong ito, sabihin simulan ang nagtatrabaho sa Problema Set 3 seksyon ng mga tanong. 161 00:11:48,000 --> 00:11:52,000 Kung ikaw guys hilahin ito up muli, 162 00:11:52,000 --> 00:11:55,000 tulad ng sa nakaraang linggo, hindi namin ay pagpunta upang panoorin ang mga shorts sa seksyon na ito. 163 00:11:55,000 --> 00:12:00,000 Ipapaalam namin ka guys gawin iyon sa iyong sariling oras at makipag-usap tungkol sa mga tanong. 164 00:12:00,000 --> 00:12:05,000 Ngunit ngayon sa seksyon na ito kami ay pagpunta sa gastusin ng konting oras 165 00:12:05,000 --> 00:12:11,000 pinag-uusapan wala ng coding mga pangunahing kaalaman 166 00:12:11,000 --> 00:12:15,000 tulad ng ginawa namin noong nakaraang linggo, at sa halip, kami ay pagpunta upang tumuon sa higit pa sa 167 00:12:15,000 --> 00:12:22,000 kaunti higit pa ng teorya, kaya pakikipag-usap tungkol sa binary paghahanap at pagkatapos ay pag-uuri-uri. 168 00:12:22,000 --> 00:12:27,000 Mula sa mga mo na sumusunod na kasama ang panayam, 169 00:12:27,000 --> 00:12:30,000 Maaari isang tao ninyo akong bigyan ng pagbabalik-tanaw ng kung ano ang pagkakaiba sa 170 00:12:30,000 --> 00:12:35,000 sa pagitan ng binary paghahanap at linear paghahanap? 171 00:12:35,000 --> 00:12:37,000 Ano kaya ang nangyari? Sigurado. 172 00:12:37,000 --> 00:12:42,000 Linear paghahanap ng paghahanap sa pamamagitan ng bawat elemento sa ang pinagsunod-sunod na listahan 173 00:12:42,000 --> 00:12:45,000 ng isa sa pamamagitan ng isa sa pamamagitan ng isa sa pamamagitan ng isa-isa, 174 00:12:45,000 --> 00:12:50,000 at binary paghahanap divides sa listahan sa 2 group, 175 00:12:50,000 --> 00:12:57,000 tseke kung ang halaga ng key na naghahanap ka para sa higit pa o mas mababa kaysa sa halaga ng Gitnang 176 00:12:57,000 --> 00:13:00,000 na iyong nakita, at kung ito ay mas mababa sa, pupunta na may mas mababang listahan 177 00:13:00,000 --> 00:13:03,000 at pagkatapos ay divides na muli, ang parehong function na 178 00:13:03,000 --> 00:13:07,000 ang lahat ng mga paraan pababa hanggang nahahanap nito sa Gitnang katumbas ng ang halaga mismo. 179 00:13:07,000 --> 00:13:10,000 Kanan. 180 00:13:10,000 --> 00:13:12,000 >> Bakit kami pakialam? 181 00:13:12,000 --> 00:13:20,000 Bakit namin makipag-usap tungkol sa binary paghahanap kumpara sa linear paghahanap? 182 00:13:20,000 --> 00:13:22,000 Oo. 183 00:13:22,000 --> 00:13:24,000 Binary ng maraming mas mabilis, kaya kung double ang laki ng problema 184 00:13:24,000 --> 00:13:27,000 ito ay tumatagal ng isa pang hakbang kaysa sa dalawang beses ng maraming mga. 185 00:13:27,000 --> 00:13:29,000 Eksakto. 186 00:13:29,000 --> 00:13:31,000 Iyon ay isang mahusay na sagot. 187 00:13:31,000 --> 00:13:36,000 Linear paghahanap napaka-check ang isang elemento sa isang pagkakataon, 188 00:13:36,000 --> 00:13:39,000 at tulad ng nakita natin sa unang araw ng panayam 189 00:13:39,000 --> 00:13:42,000 kapag nagpunta David sa pamamagitan ng kanyang phone book halimbawa 190 00:13:42,000 --> 00:13:45,000 at natastas ang isang pahina ng libro ng telepono sa isang pagkakataon 191 00:13:45,000 --> 00:13:47,000 at iningatan paggawa na muli nang paulit-ulit at mahigit, 192 00:13:47,000 --> 00:13:51,000 ito na kumuha sa kanya talagang mahabang panahon upang mahanap ang sinuman sa aklat ng telepono, 193 00:13:51,000 --> 00:13:55,000 maliban kung, siyempre, siya ay naghahanap para sa isang tao sa pinakadulo simula ng alpabeto. 194 00:13:55,000 --> 00:14:00,000 Sa binary paghahanap, maaari kang pumunta ng maraming mas mabilis, 195 00:14:00,000 --> 00:14:05,000 at hindi lamang nang dalawang beses bilang mabilis o 3 beses na mas mabilis o 4 na beses na mas mabilis. 196 00:14:05,000 --> 00:14:13,000 Ngunit ang problema ay nakakakuha ng mas maliit at mas maliit at mas maliit mas mabilis. 197 00:14:13,000 --> 00:14:17,000 Upang ilarawan ito, sisimulan namin ang pakikipag-usap tungkol sa kung anong nangyayari sa 198 00:14:17,000 --> 00:14:21,000 kapag isulat namin ang binary paghahanap. 199 00:14:21,000 --> 00:14:27,000 Ang problema sa kamay ay na kung mayroon akong isang array ng mga numero, 200 00:14:27,000 --> 00:14:40,000 sabihin, 1, 2, 3, 5, 7, 23, 45, 78, 12,323, 201 00:14:40,000 --> 00:14:47,000 at pagkatapos ay 9 na may isang tonelada ng 0s matapos na ito, 202 00:14:47,000 --> 00:14:52,000 nais namin upang malaman kung talagang mabilis kung ano ang sa 203 00:14:52,000 --> 00:14:57,000 ito array ng mga numero. 204 00:14:57,000 --> 00:15:00,000 Alam ko ito tila isang maliit na ulok at ng kaunti contrived, 205 00:15:00,000 --> 00:15:02,000 dahil ngayon ito ay. 206 00:15:02,000 --> 00:15:05,000 Mayroon kaming isang array na ay hindi napaka maraming elemento sa loob nito, 207 00:15:05,000 --> 00:15:08,000 at kung hinihiling ko ang isa mo upang malaman kung o hindi 208 00:15:08,000 --> 00:15:11,000 23 sa array, maaari mong gawin na medyo mabilis 209 00:15:11,000 --> 00:15:16,000 sa pamamagitan lamang ng glancing sa at nagsasabi sa akin oo o hindi. 210 00:15:16,000 --> 00:15:20,000 Ang analog na isaalang-alang isipin kung ito ay, sabihin nating, 211 00:15:20,000 --> 00:15:27,000 isang Excel spreadsheet na may 10,000 na mga hilera, 20,000 hilera. 212 00:15:27,000 --> 00:15:31,000 Siyempre, maaari mong gawin ang command F o ang control F at tumingin ng isang bagay up. 213 00:15:31,000 --> 00:15:33,000 Maaari mo ring gamitin ang mga filter at ang paghahanap ng mga bagay-bagay, 214 00:15:33,000 --> 00:15:37,000 ngunit kung mayroon kang upang tumingin sa pamamagitan ng na linya ng file sa pamamagitan ng linya sa pamamagitan ng linya, 215 00:15:37,000 --> 00:15:40,000 tumagal ng isang mahabang panahon upang hanapin ito. 216 00:15:40,000 --> 00:15:42,000 Ito ay uri ng tulad ng sa halimbawa ng phone book, masyadong, kung saan 217 00:15:42,000 --> 00:15:44,000 walang sinuman tumingin sa pamamagitan ng pahina ng libro ng telepono isa sa isang pagkakataon. 218 00:15:44,000 --> 00:15:47,000 Karaniwan, sila buksan ito sa gitna, 219 00:15:47,000 --> 00:15:50,000 o sa kaso ng isang maraming ng mga libro ng telepono at diksyunaryo kung saan 220 00:15:50,000 --> 00:15:54,000 iyong aktwal na ito isinara sa pamamagitan ng susi sa unang titik, 221 00:15:54,000 --> 00:16:01,000 mong i-flip na unang titik at buksan at simulan ang pagpunta sa pamamagitan ng doon. 222 00:16:01,000 --> 00:16:03,000 >> Ipaalala sa akin muli ng iyong pangalan. >> Sam. 223 00:16:03,000 --> 00:16:05,000 Sam. 224 00:16:05,000 --> 00:16:11,000 Tulad ng sinabi Sam, na linear na proseso ng paghahanap ay talagang mabagal, 225 00:16:11,000 --> 00:16:15,000 at sa halip na may binary paghahanap, ang paraan kung paano ito gumagana ay na 226 00:16:15,000 --> 00:16:21,000 sa bawat oras na pumunta kami sa pamamagitan ng pag-ulit ng aming algorithm sa paghahanap, 227 00:16:21,000 --> 00:16:27,000 kami ay pagpunta sa hatiin ang listahan sa kalahati, mahalagang, 228 00:16:27,000 --> 00:16:33,000 sa dalawang mas maliit na listahan. 229 00:16:33,000 --> 00:16:39,000 At pagkatapos ay sa susunod na pag-ulit ng loop, makikita namin hatiin itong muli 230 00:16:39,000 --> 00:16:44,000 sa iba pang mga mas maliit na listahan. 231 00:16:44,000 --> 00:16:48,000 Tulad ng iyong nakikita, ang problema ay patuloy na pagkuha ng mas maliit at mas maliit 232 00:16:48,000 --> 00:16:55,000 dahil panatilihin namin discarding kalahati ng listahan ng bawat solong oras. 233 00:16:55,000 --> 00:16:59,000 Paano ito Itapon trabaho? 234 00:16:59,000 --> 00:17:05,000 Lamang bilang isang paalala, ano kami ay pagpunta sa gawin kung kami ay isang computer 235 00:17:05,000 --> 00:17:11,000 at kami ay, halimbawa, ang paghahanap para sa numero 5 sa listahang ito 236 00:17:11,000 --> 00:17:15,000 na namin pumili ng isang numero sa gitna. 237 00:17:15,000 --> 00:17:26,000 Sa gitna ng listahang ito, dahil may 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 mga numero, 238 00:17:26,000 --> 00:17:32,000 nais naming piliin ang numero sa alinman sa ika-4 na posisyon o sa ika-5 na posisyon, 239 00:17:32,000 --> 00:17:38,000 at gusto naming tumawag na ang gitna ng aming listahan. 240 00:17:38,000 --> 00:17:42,000 Pumili ng numero sa gitna. 241 00:17:42,000 --> 00:17:51,000 Pagkatapos, tulad ng Sam sinabi, makikita namin subukan ang upang makita kung ang numero na ay katumbas 242 00:17:51,000 --> 00:17:59,000 ang bilang na gusto namin upang makakuha ng o sa aming nais na numero. 243 00:17:59,000 --> 00:18:06,000 Kung ito ang katumbas, pagkatapos namin natagpuan ito. Manalo kami. 244 00:18:06,000 --> 00:18:12,000 Kung ito ay hindi katumbas, pagkatapos ay may ilang mga kaso. 245 00:18:12,000 --> 00:18:15,000 Ang dalawang mga kaso ay maaaring numero na mas malaki kaysa sa bilang namin ang pagtingin sa, 246 00:18:15,000 --> 00:18:19,000 o mas mababa. 247 00:18:19,000 --> 00:18:25,000 Kung ito ay mas malaki, aming ilipat sa kanan. 248 00:18:25,000 --> 00:18:33,000 At kung ito ay mas mababa, ilipat namin sa kaliwa. 249 00:18:33,000 --> 00:18:41,000 At pagkatapos namin ulitin ang buong proseso muli 250 00:18:41,000 --> 00:18:48,000 sa alinman sa kanang kalahati o kaliwang kalahati ng listahan. 251 00:18:48,000 --> 00:18:51,000 >> Ang unang problema sa seksyon ngayon upang malaman kung 252 00:18:51,000 --> 00:18:55,000 kung paano namin maaaring aktwal na simulan upang ipahayag ito sa C code. 253 00:18:55,000 --> 00:18:58,000 Mayroon kaming dito ang pseudocode. 254 00:18:58,000 --> 00:19:04,000 Ano ang magsisimula kaming ginagawa ay kukunin ko na makuha ang isang tatak-bagong espasyo, 255 00:19:04,000 --> 00:19:09,000 i-save ang pagbabago na ito upang mayroon kaming mga tala para sa mamaya, 256 00:19:09,000 --> 00:19:20,000 ipapakita namin tanggalin ang lahat ng ito, at pagkatapos ay kopyahin at i-paste mula sa hanay ng problema 257 00:19:20,000 --> 00:19:26,000 ang impormasyong ito sa aming mga puwang, at sana ay ito ay hindi masira. 258 00:19:26,000 --> 00:19:28,000 Perpekto. 259 00:19:28,000 --> 00:19:33,000 Kung ikaw guys lahat gawin na, kopyahin at i-paste ang code na ito sa iyong bagong espasyo, 260 00:19:33,000 --> 00:19:43,000 sa isang blangko isa. 261 00:19:43,000 --> 00:19:47,000 Subukan nating Daniel. Kung ikaw makatipon at patakbuhin ang program na ito, ito gumagana? 262 00:19:47,000 --> 00:19:49,000 No. >> Ano ang sinasabi? 263 00:19:49,000 --> 00:19:53,000 Sabi ang control na ay umabot sa dulo ng non-void function na. 264 00:19:53,000 --> 00:19:55,000 Oo, kaya hayaan mo akong subukang patakbuhin ito. 265 00:19:55,000 --> 00:19:59,000 Mo ba ang guys nakita ito bago? Alam mo ba kung ano ang ibig sabihin nito ay? 266 00:19:59,000 --> 00:20:01,000 Okay, sabihin lapain ito ng kaunti. 267 00:20:01,000 --> 00:20:10,000 Ito sinasabi sa file.c sa linya 9, haligi 1 mayroon kaming isang error, tulad ng sinabi mo, 268 00:20:10,000 --> 00:20:16,000 at sinasabi nito na ito stemming mula sa error babala at ang babala ng uri ng return. 269 00:20:16,000 --> 00:20:18,000 Mukhang isang bagay ay pagpunta sa may return uri, na saysay. 270 00:20:18,000 --> 00:20:21,000 Mayroon kaming isang non-void function na, na nangangahulugan na Mayroon namin ang isang function 271 00:20:21,000 --> 00:20:24,000 na hindi nagbabalik walang bisa. 272 00:20:24,000 --> 00:20:27,000 Isang walang bisa function na ay isa na ganito ang hitsura: 273 00:20:27,000 --> 00:20:35,000 walang bisa foo (), at ito ay walang bisa dahil ang uri ng return ay walang bisa, 274 00:20:35,000 --> 00:20:38,000 na nangangahulugan na kung nagkaroon kami ng isang bagay in dito 275 00:20:38,000 --> 00:20:45,000 tulad ng return 1, gusto namin makakuha ng isang tagatala error para sa. 276 00:20:45,000 --> 00:20:49,000 Gayunpaman, mayroon kaming isang non-void function na. 277 00:20:49,000 --> 00:20:51,000 Aming non-void function na sa kasong ito ay ang aming paghahanap na paggana 278 00:20:51,000 --> 00:20:56,000 dahil ito ay may return uri ng bool. 279 00:20:56,000 --> 00:20:59,000 Kapag ito ay nagsasabi na ang control ang umabot sa dulo ng isang non-void function na, 280 00:20:59,000 --> 00:21:02,000 ito ay dahil ang paghahanap ay hindi magkaroon ng return statement. 281 00:21:02,000 --> 00:21:04,000 Hindi ito nagbabalik ng anumang bagay ng uri bool. 282 00:21:04,000 --> 00:21:09,000 >> Maaari naming ayusin na, at ano ang gagawin mo guys sa tingin 283 00:21:09,000 --> 00:21:13,000 sa paghahanap ay dapat na bumalik sa pamamagitan ng default? 284 00:21:13,000 --> 00:21:16,000 Ano ang dapat ang default na halaga ng pagbabalik ng paghahanap? 285 00:21:16,000 --> 00:21:19,000 Dahil na kung ano ang maaari naming ilagay sa dulo. 286 00:21:19,000 --> 00:21:21,000 Charlotte, mayroon kang anumang-? 287 00:21:21,000 --> 00:21:23,000 Totoo o hindi? >> True o false. 288 00:21:23,000 --> 00:21:26,000 Aling isa? 289 00:21:26,000 --> 00:21:28,000 Hindi. Hindi ko alam. 290 00:21:28,000 --> 00:21:30,000 Maling? Hayaan ang subukan ito. 291 00:21:30,000 --> 00:21:32,000 Bakit gusto mong sabihin return false? Mabuti iyan Swersey. 292 00:21:32,000 --> 00:21:35,000 [Charlotte] Hindi ko alam. 293 00:21:35,000 --> 00:21:39,000 Kami ay pagpunta sa bumalik maling sa kasong ito dahil ito ay ang aming default 294 00:21:39,000 --> 00:21:44,000 kung para sa ilang kadahilanan ang listahan ay walang laman o ang karayom 295 00:21:44,000 --> 00:21:46,000 na namin iyong hinahanap ay hindi umiiral. 296 00:21:46,000 --> 00:21:50,000 Pagkatapos ay sa pinakadulo, kung hindi kami nagbabalik ng tunay na mas maaga sa andar, 297 00:21:50,000 --> 00:21:55,000 lagi naming alam na ang function na ito ay sabihin nope, hindi sa array. 298 00:21:55,000 --> 00:21:58,000 Hindi sa mandala ng dayami. 299 00:21:58,000 --> 00:22:03,000 Ngayon kung namin makatipon at patakbuhin ito hayaan mo akong i-save ito upang maaari naming hilahin ito. 300 00:22:03,000 --> 00:22:08,000 Ngayon kung makatipon namin at patakbuhin ang aming programa, Bumubuo. 301 00:22:08,000 --> 00:22:12,000 Namin ang aming maliit na prompt. 302 00:22:12,000 --> 00:22:20,000 Kung pindutin ko 4-uh-oh. 303 00:22:20,000 --> 00:22:25,000 Hindi ito i-print ang anumang. Mukhang natapos na okay ang lahat. 304 00:22:25,000 --> 00:22:35,000 Mayroon kaming upang punan ito. 305 00:22:35,000 --> 00:22:39,000 Usapan natin ang tungkol sa mga algorithm sa pseudocode ilang sandali ang nakalipas. 306 00:22:39,000 --> 00:22:44,000 Hayaan akong makita, i-save ito, 307 00:22:44,000 --> 00:22:49,000 at kukunin ko na pull na algorithm-back up muli. 308 00:22:49,000 --> 00:22:51,000 Pindutin natin ito tao. Nope. 309 00:22:51,000 --> 00:22:58,000 May ito ay. 310 00:22:58,000 --> 00:23:03,000 Paano namin gawin ito? 311 00:23:03,000 --> 00:23:11,000 Ano ang isang mahusay na diskarte para sa pagsisimula ng off ang code na ito? 312 00:23:11,000 --> 00:23:16,000 Mayroon kang pumili ng bilang sa gitna. 313 00:23:16,000 --> 00:23:23,000 Paano namin pumili ng isang numero sa gitna ng isang array? 314 00:23:23,000 --> 00:23:25,000 Anumang mga mungkahi? 315 00:23:25,000 --> 00:23:27,000 [Mag-aaral] Strlen na hinati sa pamamagitan ng 2. 316 00:23:27,000 --> 00:23:32,000 Strlen hinati sa pamamagitan ng 2. Iyon ay isang mahusay na. 317 00:23:32,000 --> 00:23:35,000 Strlen gawa na may mga espesyal na uri ng array. 318 00:23:35,000 --> 00:23:38,000 Anong mga uri ng array? 319 00:23:38,000 --> 00:23:44,000 String array, na character array. 320 00:23:44,000 --> 00:23:48,000 Ito na parehong uri ng konsepto na gusto naming mag-aplay, 321 00:23:48,000 --> 00:23:52,000 ngunit hindi namin maaaring gamitin ang strlen dahil hindi namin magkaroon ng isang hanay ng mga character. 322 00:23:52,000 --> 00:23:55,000 Mayroon kaming isang array ng ints. 323 00:23:55,000 --> 00:23:58,000 Ngunit kung ano ang strlen para sa amin? 324 00:23:58,000 --> 00:24:01,000 Alam mo ba kung ano ang nakakakuha ng para sa amin? 325 00:24:01,000 --> 00:24:03,000 [Mag-aaral] Strlen ay nakakakuha sa amin ang haba. 326 00:24:03,000 --> 00:24:05,000 Eksakto, ay nakakakuha sa amin ang haba. 327 00:24:05,000 --> 00:24:09,000 Strlen nakakakuha ang haba ng array para sa amin. 328 00:24:09,000 --> 00:24:14,000 >> Paano kami makakuha ng na sa aming programa ng paghahanap ng binary? 329 00:24:14,000 --> 00:24:18,000 Paano mo makuha ang haba ng array? 330 00:24:18,000 --> 00:24:20,000 [Mag-aaral] Strlen? 331 00:24:20,000 --> 00:24:25,000 Maaari mong makuha ang haba ng isang maayos na format C string array na may strlen. 332 00:24:25,000 --> 00:24:31,000 Ang problema, bagaman, na hindi namin magkaroon ng isang array ng string. 333 00:24:31,000 --> 00:24:36,000 Kung titingnan namin pabalik sa ang code na ito, mayroon kaming ito integer array. 334 00:24:36,000 --> 00:24:38,000 Paano namin malalaman kung gaano ito kahaba? 335 00:24:38,000 --> 00:24:44,000 [Mag-aaral] Mayroon bang isang katumbas endpoint, tulad ng int l o isang bagay? 336 00:24:44,000 --> 00:24:49,000 Ito ay lumiliko out doon ay hindi aktwal na, at iba pa sa isang paraan, ito ay 337 00:24:49,000 --> 00:24:52,000 isa sa mga bagay na lang magandang malaman tungkol sa C, 338 00:24:52,000 --> 00:24:57,000 na walang paraan upang makuha ang haba ng array 339 00:24:57,000 --> 00:24:59,000 kung ang lahat bigyan ko sa iyo ay ang array. 340 00:24:59,000 --> 00:25:02,000 Ang dahilan kung bakit ito gumagana sa mga string, ang dahilan strlen gawa, 341 00:25:02,000 --> 00:25:06,000 ay dahil sa kung ang isang string ay maayos na na-format, 342 00:25:06,000 --> 00:25:12,000 ito na espesyal \ 0 character sa pinakadulo. 343 00:25:12,000 --> 00:25:16,000 >> Maaari mo ring isipin kung mayroon kang isang wastong nai-format na string 344 00:25:16,000 --> 00:25:20,000 at walang \ 0 karakter doon, pagkatapos ay ang buong bagay ay hindi gumagana. 345 00:25:20,000 --> 00:25:22,000 [Mag-aaral] Maaari mong idagdag ang \ 0? 346 00:25:22,000 --> 00:25:24,000 Maaari namin sa kasong ito. 347 00:25:24,000 --> 00:25:29,000 Maaari naming magdagdag ng ilang uri ng \ 0 348 00:25:29,000 --> 00:25:33,000 o ilang uri ng signifying character at pagkatapos ay gamitin iyon. 349 00:25:33,000 --> 00:25:36,000 Ngunit na hindi pa upang gumana 350 00:25:36,000 --> 00:25:40,000 dahil ang \ 0 ay para sa uri ng pansamantalang trabaho, 351 00:25:40,000 --> 00:25:43,000 at dito namin Mayroon ints. 352 00:25:43,000 --> 00:25:46,000 Ang iba pang bagay ay kung kami ay upang gumamit ng isang espesyal na halaga 353 00:25:46,000 --> 00:25:49,000 tulad ng -1 upang markahan ang mga dulo ng isang array 354 00:25:49,000 --> 00:25:54,000 pagkatapos ay hindi namin ma-imbak ng -1 sa aming mga integer array. 355 00:25:54,000 --> 00:25:56,000 Gusto naming natigil. 356 00:25:56,000 --> 00:26:00,000 Ito ay lumiliko out na ang tanging paraan upang makakuha ang haba 357 00:26:00,000 --> 00:26:03,000 ng isang array sa C ay aktwal na tandaan ang mga ito 358 00:26:03,000 --> 00:26:08,000 kapag ikaw ay set up ito at pagkatapos ay pumasa ito sa paligid na may array 359 00:26:08,000 --> 00:26:14,000 kaya na kapag mayroon akong isang function na pagpunta sa gawin ang ilang mga trabaho 360 00:26:14,000 --> 00:26:18,000 sa isang hanay ng mga integer o sa kamay o doubles o kung ano ang mayroon ka, 361 00:26:18,000 --> 00:26:22,000 Kailangan ko rin upang magbigay ng pag-andar haba ang array, 362 00:26:22,000 --> 00:26:26,000 at na eksakto kung ano ang ginawa namin dito sa pag-andar ng paghahanap. 363 00:26:26,000 --> 00:26:30,000 Kung titingnan mo, kung ano ang ginawa namin kapag pumasa kami sa aming array dito, 364 00:26:30,000 --> 00:26:36,000 din namin pumasa sa haba, ang laki. 365 00:26:36,000 --> 00:26:41,000 Ito lamang ang mangyayari na namin tinatawag na variable na ito dito, 366 00:26:41,000 --> 00:26:43,000 ang parameter na ito o argumento. 367 00:26:43,000 --> 00:26:46,000 Ito ay tinatawag na argumento ng listahan ng isang function o listahan ng parameter, 368 00:26:46,000 --> 00:26:51,000 at ang mga ito ay tinatawag din na mga argumento o mga parameter. 369 00:26:51,000 --> 00:26:53,000 Ginagamit ng mga tao ng iba't ibang mga tuntunin sa iba't ibang oras. 370 00:26:53,000 --> 00:26:55,000 Ako minsan Interchange sa kanila ang aking sarili. 371 00:26:55,000 --> 00:27:00,000 Lang kaya ang mangyayari na ito variable dito ay katulad na pinangalanang 372 00:27:00,000 --> 00:27:03,000 ito # tukuyin ang hanggang dito. 373 00:27:03,000 --> 00:27:06,000 Ngunit hindi sila ang parehong bagay. 374 00:27:06,000 --> 00:27:11,000 Capitalization ang ginagawa ng bagay na ito. 375 00:27:11,000 --> 00:27:14,000 >> Kung tumingin ka sa kung ano ang mangyayari dito, idedeklara namin 376 00:27:14,000 --> 00:27:18,000 aming int array, na namin ang tinatawag na numero. 377 00:27:18,000 --> 00:27:23,000 Nagbigay kami sa aming laki, na tumutugon sa aming # tukuyin ang hanggang sa tuktok. 378 00:27:23,000 --> 00:27:27,000 Ito ay pagpunta sa 8. 379 00:27:27,000 --> 00:27:35,000 At pagkatapos ay kapag kami pagkatapos tawagan ang aming paghahanap function na pababa sa ibaba, 380 00:27:35,000 --> 00:27:40,000 pumasa namin sa bilang gusto naming upang maghanap para sa, na namin ang prompt, 381 00:27:40,000 --> 00:27:43,000 nakuha mula sa user. 382 00:27:43,000 --> 00:27:46,000 Pumasa kami sa array, ang numero na ito, 383 00:27:46,000 --> 00:27:51,000 at pagkatapos namin ay mayroon ding upang pumasa sa laki ng array, 384 00:27:51,000 --> 00:27:57,000 at pagkatapos ay ang halaga ng laki 8 ay makakakuha ng naka-imbak 385 00:27:57,000 --> 00:28:01,000 o ang pumasa sa ito integer variable na tinatawag na laki. 386 00:28:01,000 --> 00:28:08,000 Mayroon kaming ang laki ng array. 387 00:28:08,000 --> 00:28:11,000 Ngayon kung pumunta namin pabalik sa kung ano ang namin ang pakikipag-usap tungkol sa mas maaga, 388 00:28:11,000 --> 00:28:14,000 Tingin ko Missy nagdala sa punto na kung ano ang kailangan naming gawin ay ang haba ng array 389 00:28:14,000 --> 00:28:20,000 at hatiin ang mga ito sa pamamagitan ng 2, at na ay magbibigay sa amin ang Gitnang. 390 00:28:20,000 --> 00:28:22,000 Natin makita. 391 00:28:22,000 --> 00:28:25,000 Maaari ba akong magkaroon ng isang tao na magsulat ito at i-save ang mga ito sa kanilang mga espasyo? 392 00:28:25,000 --> 00:28:27,000 Paano tungkol Leila? 393 00:28:27,000 --> 00:28:31,000 Maaari ba akong magkaroon sa iyo na isulat ito sa? 394 00:28:31,000 --> 00:28:35,000 Isulat ang unang linya kung saan mo ang haba ng array at makakuha ng Gitnang 395 00:28:35,000 --> 00:28:41,000 at mag-imbak ito sa isang bagong variable. 396 00:28:41,000 --> 00:28:44,000 Bibigyan kita ng isang segundo ilang. Handa ka na ba? 397 00:28:44,000 --> 00:28:46,000 [Hindi marinig na Estudyante] 398 00:28:46,000 --> 00:28:50,000 Sigurado, maaaring ko kayo na kalkulahin ang Gitnang 399 00:28:50,000 --> 00:28:55,000 ng mandala ng dayami array sa loob ng katangian ng paghahanap 400 00:28:55,000 --> 00:29:03,000 gamit ang haba ng array mandala ng dayami, na ang laki variable? 401 00:29:03,000 --> 00:29:08,000 Walang nakakalito dito. 402 00:29:08,000 --> 00:29:12,000 [Leila] lang laki / 2 at- 403 00:29:12,000 --> 00:29:17,000 At i-save ito, at pindutin ang pindutang I-save hanggang dito sa tuktok, 404 00:29:17,000 --> 00:29:19,000 at kami na hilahin ito. 405 00:29:19,000 --> 00:29:22,000 Perpekto. 406 00:29:22,000 --> 00:29:28,000 Doon kami. Kahanga-hanga. 407 00:29:28,000 --> 00:29:30,000 >> Tulad ng, ito makatipon? 408 00:29:30,000 --> 00:29:32,000 [Leila] Hindi, kailangan nito upang maging mas mataas. 409 00:29:32,000 --> 00:29:34,000 [Nate] Oo, kaya kung ano ang kailangan namin upang gawin? 410 00:29:34,000 --> 00:29:36,000 [Leila] Tulad int Gitnang o isang bagay. 411 00:29:36,000 --> 00:29:41,000 Kahanga-hanga. Oo, sabihin na, int ang Gitnang = laki. 412 00:29:41,000 --> 00:29:44,000 Ay ito makatipon? 413 00:29:44,000 --> 00:29:47,000 Natin tanggalin ang komentong ito at kumuha ng mga ito ng paraan. 414 00:29:47,000 --> 00:29:50,000 Ano ang hindi ipunin ang tungkol dito? 415 00:29:50,000 --> 00:29:52,000 Hindi namin ginagawa anumang bagay na may integer, 416 00:29:52,000 --> 00:29:55,000 kaya kailangan namin upang i-print ito o ang isang bagay tulad na. 417 00:29:55,000 --> 00:29:58,000 Oo, eksakto. 418 00:29:58,000 --> 00:30:00,000 Kami makakuha ng isang hindi nagamit na variable. 419 00:30:00,000 --> 00:30:02,000 Ano pa ay hindi tungkol sa? 420 00:30:02,000 --> 00:30:06,000 Tingin ko na sinabi mo ang isang bagay, Sam. Semicolons. 421 00:30:06,000 --> 00:30:08,000 Oo, ako ang nawawalang mga semicolons iyon. 422 00:30:08,000 --> 00:30:14,000 Ito ay pagpunta sa isang pare-pareho ang bagay sa buong kurso ng termino. 423 00:30:14,000 --> 00:30:17,000 Ang huling bagay ko ay makikita ko bang ilagay ang ilang mga puting espasyo sa magkabilang panig 424 00:30:17,000 --> 00:30:23,000 ng ang operator na ito dito, dahil na karaniwang kung paano namin ito gawin 425 00:30:23,000 --> 00:30:26,000 ayon sa aming gabay sa estilo. 426 00:30:26,000 --> 00:30:29,000 Mayroon namin sa Gitnang ng aming mga array. 427 00:30:29,000 --> 00:30:32,000 Ngayon kung tandaan namin pabalik sa aming algorithm, 428 00:30:32,000 --> 00:30:37,000 kung ano ay ang ikalawang hakbang na nagkaroon kami na gawin sa sandaling kami ay may sa Gitnang? 429 00:30:37,000 --> 00:30:42,000 [Mag-aaral] Kung ito ay mas malaki [hindi marinig]. 430 00:30:42,000 --> 00:30:48,000 Oo, kaya kami ay may sa gawin ang ilang mga uri ng paghahambing, at kung ano ang kami ng paghahambing dito? 431 00:30:48,000 --> 00:30:53,000 Sinabi mo kung ito ay mas mataas kaysa. Ano ang sa na pangungusap na tumutukoy sa? 432 00:30:53,000 --> 00:30:57,000 Ang bilang ay up, kung na mas malaki kaysa sa Gitnang, pagkatapos ay pumunta sa array? 433 00:30:57,000 --> 00:31:05,000 Eksakto, kaya ang bilang ay kapag kami- 434 00:31:05,000 --> 00:31:10,000 Karayom, kaya kami ay naghahambing sa karayom, 435 00:31:10,000 --> 00:31:12,000 at kung ano ang kami ng paghahambing laban sa karayom? 436 00:31:12,000 --> 00:31:15,000 Dahil karayom ​​ay kung ano ang iyong hinahanap namin. 437 00:31:15,000 --> 00:31:18,000 Kami ng paghahambing nito upang makakuha ng sa Gitnang. 438 00:31:18,000 --> 00:31:21,000 >> Ngunit hindi ito gumawa ng kahulugan upang suriin upang makita 439 00:31:21,000 --> 00:31:27,000 kung karayom ​​= Gitnang? 440 00:31:27,000 --> 00:31:32,000 Ba na magkaroon ng kahulugan? 441 00:31:32,000 --> 00:31:35,000 Ba ang sinuman hindi sumasang-ayon? 442 00:31:35,000 --> 00:31:40,000 Natin subukan na ito, kung (karayom ​​== Gitnang). 443 00:31:40,000 --> 00:31:42,000 [Mag-aaral] Huwag printf na iyong natagpuan ito. 444 00:31:42,000 --> 00:31:51,000 [Nate] Printf ("Natagpuan namin ito \ n!"); 445 00:31:51,000 --> 00:31:56,000 Kung hindi-I'm pagpunta upang simulan ang paggawa ng isang bagay ibang dito. 446 00:31:56,000 --> 00:32:00,000 Ako pagpunta sa magsimula ng paglalagay ng mga tirante sa paligid ng kung pahayag sa lahat ng oras 447 00:32:00,000 --> 00:32:05,000 dahil lang sa kung namin magdagdag ng higit pang mga bagay-bagay, at pagkatapos 448 00:32:05,000 --> 00:32:07,000 hindi namin makuha ang mga compiler. 449 00:32:07,000 --> 00:32:09,000 Oo, Sam. Mayroon kang isang punto. 450 00:32:09,000 --> 00:32:12,000 Ang problema ay na ang Gitnang kumakatawan sa isang posisyon sa array, 451 00:32:12,000 --> 00:32:15,000 ngunit maaari kang makakuha ng ito ay kumakatawan sa mga halaga sa na posisyon ng array. 452 00:32:15,000 --> 00:32:17,000 Iyon ay isang mahusay na punto. 453 00:32:17,000 --> 00:32:19,000 Ba lahat marinig kung ano ang Sam sinabi? 454 00:32:19,000 --> 00:32:22,000 Sinabi niya Gitnang na bilang ay 455 00:32:22,000 --> 00:32:28,000 kumakatawan lamang ng isang posisyon sa array, ngunit ito ay hindi ang aktwal na elemento sa array. 456 00:32:28,000 --> 00:32:30,000 Kung sa tingin mo tungkol sa code bilang nakasulat na ngayon, 457 00:32:30,000 --> 00:32:35,000 kung tiningnan namin sa array pababa dito, na may 8 mga elemento sa loob nito, 458 00:32:35,000 --> 00:32:39,000 kung ano ang halaga ng Gitnang na sa function na ito? 459 00:32:39,000 --> 00:32:41,000 [Mag-aaral] 4. 460 00:32:41,000 --> 00:32:45,000 [Nate] 4. 461 00:32:45,000 --> 00:32:51,000 Kung titingnan namin para sa numero 4 - 462 00:32:51,000 --> 00:32:54,000 at maaari lamang namin patakbuhin ang code na ito at maglagay ng maliit na malungkot na mukha in dito 463 00:32:54,000 --> 00:32:58,000 dahil hindi kami nakahanap ng ito-kung nagpapatakbo namin ang code na ito 464 00:32:58,000 --> 00:33:04,000 bilang ngayon, i-upload itong, gusali, ipaalam sa akin na mag-scroll pababa, 465 00:33:04,000 --> 00:33:09,000 at kung tiningnan namin para sa numero 4, 466 00:33:09,000 --> 00:33:18,000 nakita namin ito, ngunit hindi namin makuha ang printf oo. 467 00:33:18,000 --> 00:33:23,000 Isang kadahilanan na hindi namin nagbabalik ng tunay, 468 00:33:23,000 --> 00:33:26,000 ngunit namin talagang makita ang bilang 4? 469 00:33:26,000 --> 00:33:28,000 At Sam ay sinasabi ng walang. 470 00:33:28,000 --> 00:33:31,000 Ano ang naming makita? 471 00:33:31,000 --> 00:33:35,000 Talaga namin natagpuan ang Gitnang, na kung tiningnan namin sa array pababa dito, 472 00:33:35,000 --> 00:33:38,000 ito ay pagpunta sa elemento sa index 4 na kaming naghahanap sa, 473 00:33:38,000 --> 00:33:42,000 na 23. 474 00:33:42,000 --> 00:33:46,000 >> Paano kami makakuha ng aktwal na elemento sa Gitnang 475 00:33:46,000 --> 00:33:48,000 at hindi lamang sa Gitnang mismo? 476 00:33:48,000 --> 00:33:52,000 [Mag-aaral] ay namin ipasok ang pansamantalang trabaho o isang bagay? 477 00:33:52,000 --> 00:33:55,000 Ano ang gusto na, lamang sa labas ng pagkausyoso? 478 00:33:55,000 --> 00:33:57,000 Maaari mong dagdagan ng mga paliwanag ng kaunti pa? 479 00:33:57,000 --> 00:34:02,000 Mayroon kang na baguhin ang posisyon sa numero, 480 00:34:02,000 --> 00:34:05,000 kaya na kailangan mong gumawa ng ilang mga koneksyon-tingin ko ito ay pansamantalang trabaho, ngunit maaaring hindi ito. 481 00:34:05,000 --> 00:34:07,000 Oo, na isang magandang punto. 482 00:34:07,000 --> 00:34:12,000 Namin ang paggawa ng maraming ng mga ito nagko-convert na mga posisyon sa mga karakter, ang mga character na ito, 483 00:34:12,000 --> 00:34:14,000 sa unang dalawang set ng problema. 484 00:34:14,000 --> 00:34:18,000 Ito lumiliko out na dito, ito ay halos katulad sa 485 00:34:18,000 --> 00:34:24,000 access sa ith karakter sa loob ng isang string, kung na saysay. 486 00:34:24,000 --> 00:34:30,000 Narito nais naming upang ma-access ang Gitnang elemento. 487 00:34:30,000 --> 00:34:34,000 Paano namin gawin iyon? 488 00:34:34,000 --> 00:34:39,000 Kevin, mayroon kang anumang mga mungkahi kung paano namin gawin iyon? 489 00:34:39,000 --> 00:34:44,000 Maaari mong gawin mandala ng dayami, bukas bracket, mid, sarado bracket. 490 00:34:44,000 --> 00:34:46,000 Maaari mong isulat ang mga iyon para sa amin? 491 00:34:46,000 --> 00:34:51,000 I-save ang mga ito in dito, at makikita namin hilahin na up. 492 00:34:51,000 --> 00:34:56,000 Kaming naghahanap sa linya 9 na ito, 493 00:34:56,000 --> 00:34:59,000 at kami ay napagtatanto na hindi namin nais upang ihambing ang karayom ​​sa Gitnang, 494 00:34:59,000 --> 00:35:03,000 ngunit sa halip, nais namin upang ihambing ang karayom 495 00:35:03,000 --> 00:35:07,000 sa elemento sa Gitnang posisyon sa loob ng aming mandala ng dayami array. 496 00:35:07,000 --> 00:35:10,000 Cool. 497 00:35:10,000 --> 00:35:12,000 Doon kami. 498 00:35:12,000 --> 00:35:15,000 Oo, na mukhang medyo magandang, kung (karayom ​​== mandala ng dayami [Gitnang]). 499 00:35:15,000 --> 00:35:18,000 Natagpuan namin ito. 500 00:35:18,000 --> 00:35:22,000 Ngayon kung patatakbuhin namin ang code na we'll back up ng kaunti- 501 00:35:22,000 --> 00:35:26,000 ito compiles, ito tumatakbo, at ngayon kung tiningnan namin para sa 4, 502 00:35:26,000 --> 00:35:30,000 hindi namin mahanap ang mga ito dahil ngayon aktwal na kami ay pagkuha ng bilang 23. 503 00:35:30,000 --> 00:35:33,000 Kami ay nakakakuha ng ang halaga 23, at na kung ano ang kami ay naghahambing sa aming karayom. 504 00:35:33,000 --> 00:35:35,000 Ngunit iyon lamang ang mabuti. Na ang isang hakbang sa tamang direksyon. 505 00:35:35,000 --> 00:35:37,000 >> Iyon ay kung ano ang sinusubukan naming gawin. 506 00:35:37,000 --> 00:35:40,000 Hindi namin sinusubukan upang ihambing ang karayom ​​laban sa mga posisyon sa array 507 00:35:40,000 --> 00:35:44,000 kundi laban sa mga aktwal na mga elemento sa array. 508 00:35:44,000 --> 00:35:49,000 Kung titingnan namin muli ngayon sa susunod na hakbang sa aming algorithm, 509 00:35:49,000 --> 00:35:51,000 kung ano ang susunod na hakbang? 510 00:35:51,000 --> 00:35:57,000 Leila na binanggit ito maikling. 511 00:35:57,000 --> 00:36:00,000 [Mag-aaral] Suriin upang makita kung ito ay mas malaki kaysa sa o mas mababa at pagkatapos ay magpasya kung aling paraan upang ilipat. 512 00:36:00,000 --> 00:36:03,000 [Nate] Oo, kaya kung paano namin ang gawin iyon? 513 00:36:03,000 --> 00:36:07,000 Maaari mong ilagay sa ilang I'll i-save ang pagbabago na ito, 514 00:36:07,000 --> 00:36:13,000 at pagkatapos ay kung inilagay mo sa ilang mga linya na gawin iyon. 515 00:36:13,000 --> 00:36:15,000 Oo, Charlotte. >> Mayroon akong tanong. 516 00:36:15,000 --> 00:36:19,000 Hindi dapat Gitnang - 1 dahil ang unang bagay ay 517 00:36:19,000 --> 00:36:26,000 0-index, kaya kung inilalagay namin ang 4, na hindi tunay ang mga character na kaming naghahanap ng mga? 518 00:36:26,000 --> 00:36:30,000 Oo, at ang iba pang mga problema sa na- 519 00:36:30,000 --> 00:36:35,000 na ang isang mahusay na catch, dahil kung ano ang pagpunta sa nangyayari posibleng 520 00:36:35,000 --> 00:36:42,000 kung panatilihin namin ang paglipat at hindi namin kailanman ayusin simula? 521 00:36:42,000 --> 00:36:46,000 Hulaan ko kung ano ang maaari naming up paggawa ay sinusubukang i-access 522 00:36:46,000 --> 00:36:49,000 elemento sa ika-8 na posisyon ng array, 523 00:36:49,000 --> 00:36:53,000 na sa kasong ito ay hindi umiiral. 524 00:36:53,000 --> 00:36:56,000 Kami ay nais na gawin ang ilang mga uri ng accounting para sa katotohanan 525 00:36:56,000 --> 00:36:59,000 mayroon kaming ilang zero na pag-i-index. 526 00:36:59,000 --> 00:37:05,000 [Charlotte] Paumanhin, nilalayong ko Gitnang - 1 sa mga square bracket. 527 00:37:05,000 --> 00:37:08,000 Maaari naming gawin iyon. 528 00:37:08,000 --> 00:37:10,000 Susubukan naming bumalik sa ang isyu na ito sa loob lamang ng kaunti. 529 00:37:10,000 --> 00:37:13,000 Sa sandaling simulan namin upang makakuha ng sa aktwal na looping, 530 00:37:13,000 --> 00:37:16,000 na kapag namin talagang makita ito ay sa pag-play. 531 00:37:16,000 --> 00:37:21,000 Sa ngayon, maaari naming gawin ito, ngunit hindi ka lubos na karapatan. 532 00:37:21,000 --> 00:37:28,000 Na zero ang pag-i-index ay magkaroon ng epekto na kailangan namin upang account para sa. 533 00:37:28,000 --> 00:37:30,000 Natin makita. 534 00:37:30,000 --> 00:37:34,000 >> Paano ang mas mataas kaysa at mas mababa sa-? 535 00:37:34,000 --> 00:37:36,000 [Mag-aaral] nakukuha ko kung paano gawin ang mas mataas kaysa at mas mababa sa bahagi. 536 00:37:36,000 --> 00:37:41,000 Ko lang ay hindi sigurado kung ano upang i-print kung nakita mo na ito ay mas mababa kaysa sa Gitnang mandala ng dayami o mas mataas kaysa. 537 00:37:41,000 --> 00:37:43,000 Narito ang maaari kong i-save ang kung ano ang I've- 538 00:37:43,000 --> 00:37:47,000 [Nate] Oo, kung ikaw ay i-save ang kung ano ang mayroon ka, at makikita namin hilahin ito. 539 00:37:47,000 --> 00:37:49,000 Doon kami. 540 00:37:49,000 --> 00:37:51,000 [Mag-aaral] At ko bang ilagay ang mga marka ng tanong para sa kung ano ang hindi ko alam. 541 00:37:51,000 --> 00:37:54,000 [Nate] Iyon ay mukhang mahusay. 542 00:37:54,000 --> 00:37:58,000 Narito namin na nakuha ng mga marka ng tanong dahil hindi pa rin namin alam 543 00:37:58,000 --> 00:38:06,000 kung ano ang kami ay pagpunta sa medyo gawin pa. 544 00:38:06,000 --> 00:38:12,000 Ano ang gusto namin nais na gawin-oops, Mayroon namin ang ilang mga tirante lahat ng funky sa amin. 545 00:38:12,000 --> 00:38:15,000 Susubukan naming iwasto ang mga tirante na ito. 546 00:38:15,000 --> 00:38:19,000 Doon kami. 547 00:38:19,000 --> 00:38:22,000 At kaya kung ano ang gusto naming gawin, ayon sa aming algorithm, 548 00:38:22,000 --> 00:38:27,000 kung hindi namin mahanap ang karayom? 549 00:38:27,000 --> 00:38:32,000 Sabihing sa kaso na karayom ​​ay mas mababa kaysa sa kung ano ang iyong hinahanap namin sa. Kevin. 550 00:38:32,000 --> 00:38:34,000 Lamang tumingin sa kaliwang kalahati. 551 00:38:34,000 --> 00:38:40,000 Karapatan, kaya ipapakita namin maglagay ng komento dito na nagsasabing "tumingin sa kaliwang kalahati." 552 00:38:40,000 --> 00:38:46,000 At kung ang karayom ​​ay mas malaki kaysa sa mandala ng dayami sa Gitnang, ano ang gusto naming gawin? 553 00:38:46,000 --> 00:38:48,000 [Mag-aaral] Pagkatapos kang tumingin sa kanang kalahati. 554 00:38:48,000 --> 00:38:53,000 Hanapin sa kanang kalahati, "tumingin sa kanang kalahati." 555 00:38:53,000 --> 00:38:58,000 Hindi na masama. 556 00:38:58,000 --> 00:39:05,000 Okay, kaya sa puntong ito, bagay hinahanap medyo magandang. 557 00:39:05,000 --> 00:39:13,000 Ang problema sa code bilang nakasulat kung ano? 558 00:39:13,000 --> 00:39:15,000 [Mag-aaral] Hindi mo endpoints para sa halves. 559 00:39:15,000 --> 00:39:18,000 Karapatan, hindi namin endpoints para sa halves. 560 00:39:18,000 --> 00:39:20,000 Lamang din kami pagpunta sa pumunta sa pamamagitan ng sabay-sabay. 561 00:39:20,000 --> 00:39:23,000 Lamang namin ay pagpunta sa tumingin sa isang Gitnang. 562 00:39:23,000 --> 00:39:27,000 Alinman elemento ay doon, o hindi. 563 00:39:27,000 --> 00:39:34,000 Upang makumpleto ito, kakailanganin naming gawin ang ilang mga uri ng pag-uulit. 564 00:39:34,000 --> 00:39:39,000 Kailangan namin upang panatilihin ang paulit-ulit hanggang sa mahanap namin na 565 00:39:39,000 --> 00:39:43,000 alinman elemento doon dahil kami narrowed down at sa wakas nahanap na ito, 566 00:39:43,000 --> 00:39:46,000 o hindi ito sa doon dahil kami ay tumingin sa pamamagitan ng lahat ng mga bagay 567 00:39:46,000 --> 00:39:52,000 sa naaangkop na mga halves ng array at natagpuan na wala doon. 568 00:39:52,000 --> 00:39:56,000 >> Tuwing Mayroon namin ang pag-uulit na ito pagpunta sa, kung ano ang kami pagpunta sa gamitin? 569 00:39:56,000 --> 00:39:58,000 [Mag-aaral] Ang isang loop. 570 00:39:58,000 --> 00:40:00,000 Ang ilang mga uri ng loop. Oo. 571 00:40:00,000 --> 00:40:03,000 [Mag-aaral] Maaari ba kaming do-habang loop at may gawin ito at pagkatapos habang 572 00:40:03,000 --> 00:40:10,000 karayom ​​hindi katumbas-I'm hindi sigurado kung saan ako pagpunta na iyon. 573 00:40:10,000 --> 00:40:18,000 Ngunit uri ng tulad ng ginagawa na hangga't ito ay hindi katumbas ng ang halaga na ang input ng user. 574 00:40:18,000 --> 00:40:21,000 Oo, kaya sabihin makita, kung paano ito sumulat mismo? 575 00:40:21,000 --> 00:40:23,000 Sinabi mong gamitin natin ang do-habang loop. 576 00:40:23,000 --> 00:40:26,000 Kung saan ay ang gawin ang simula? 577 00:40:26,000 --> 00:40:33,000 [Mag-aaral] Kanan matapos ang laki / 2. 578 00:40:33,000 --> 00:40:42,000 [Nate] Okay, at kung ano ang namin gawin? 579 00:40:42,000 --> 00:40:44,000 Susubukan naming punan sa habang mamaya. 580 00:40:44,000 --> 00:40:46,000 Ano kami gawin? 581 00:40:46,000 --> 00:40:49,000 [Mag-aaral] Huwag gusto naming gawin ang lahat ng mga bagay-bagay na mayroon kami sa kung bahagi? 582 00:40:49,000 --> 00:40:52,000 [Nate] ba ang lahat ng ito bagay-bagay, mahusay. 583 00:40:52,000 --> 00:40:55,000 Kopyahin at i-paste. 584 00:40:55,000 --> 00:40:59,000 Oh, tao. 585 00:40:59,000 --> 00:41:03,000 Natin makita kung ito gumagana, kung maaari namin ang tab na ito sa paglipas ng. 586 00:41:03,000 --> 00:41:08,000 Magandang. 587 00:41:08,000 --> 00:41:16,000 Okay, at i-save namin ito upang guys na mayroon ito. 588 00:41:16,000 --> 00:41:21,000 Lahat ng karapatan, at kami ay pagpunta sa gawin ito habang- 589 00:41:21,000 --> 00:41:25,000 kung ano ang mga kondisyon ng habang ikaw ay matapos? 590 00:41:25,000 --> 00:41:31,000 [Mag-aaral] Habang hindi katumbas ang karayom, kaya tulad ng exclamation point. 591 00:41:31,000 --> 00:41:37,000 Ngunit hindi ako sigurado kung ano mismo ang na ay pa. 592 00:41:37,000 --> 00:41:39,000 [Nate] Oo, ito ay isang paraan upang gawin ito. 593 00:41:39,000 --> 00:41:41,000 Sam, mayroon kang isang komento? 594 00:41:41,000 --> 00:41:43,000 [Sam] remembered ko kapag ako ay tumingin sa video, 595 00:41:43,000 --> 00:41:48,000 Kinuha ko ng isang screenshot ng isa ng tulad ng kapag ginawa namin ang pseudocode para dito, 596 00:41:48,000 --> 00:41:52,000 nagkaroon ng ilang mga ugnayan sa pagitan ng max at min. 597 00:41:52,000 --> 00:41:58,000 Tingin ko ito ay isang bagay tulad ng kung max ay kailanman mas mababa kaysa sa min. 598 00:41:58,000 --> 00:42:00,000 Nakuha ko. 599 00:42:00,000 --> 00:42:04,000 [Sam] O gusto kung ang max ay hindi mas mababa kaysa sa min o isang bagay tulad na, 600 00:42:04,000 --> 00:42:06,000 dahil na nangangahulugan na hinanap mo ang lahat. 601 00:42:06,000 --> 00:42:13,000 >> Oo, kaya kung ano ang tunog tulad ng max at min ay tumutukoy sa? 602 00:42:13,000 --> 00:42:16,000 [Sam] Halaga ng na-integer na upang baguhin 603 00:42:16,000 --> 00:42:18,000 na may kaugnayan sa kung saan inilalagay namin ang Gitnang. 604 00:42:18,000 --> 00:42:20,000 Eksakto. 605 00:42:20,000 --> 00:42:24,000 [Sam] Sa puntong iyon, ito pagpunta sa [hindi marinig] makalkula ang max at min. 606 00:42:24,000 --> 00:42:29,000 Gitnang ang max at min ideya. 607 00:42:29,000 --> 00:42:35,000 Ba na gumawa ng pakiramdam sa mga tao? 608 00:42:35,000 --> 00:42:39,000 Kung kami ay upang simulan ang pagtingin sa kung paano namin ay pagpunta sa gawin ito ulit, 609 00:42:39,000 --> 00:42:43,000 hindi ka lubos na karapatan na gusto naming gamitin ang ilang mga uri ng gawin-habang loop. 610 00:42:43,000 --> 00:42:49,000 Ngunit hulaan ko kung tandaan namin kung ano ang nangyayari sa lugar ng array na ito 611 00:42:49,000 --> 00:42:53,000 at kung ano ang talagang nangyayari-I'm pagpunta sa sumulat sa paglipas dito- 612 00:42:53,000 --> 00:42:58,000 sa unang pag-ulit ng binary paghahanap, mayroon-namin 613 00:42:58,000 --> 00:43:05,000 Ako pagpunta upang gamitin ang b at e upang tukuyin ang simula. 614 00:43:05,000 --> 00:43:10,000 At pagkatapos ay ang dulo ng aming array. 615 00:43:10,000 --> 00:43:14,000 Alam namin na ang simula ay sa 4 karapatan sa paglipas dito, 616 00:43:14,000 --> 00:43:18,000 at alam namin na nagtatapos sa 108. 617 00:43:18,000 --> 00:43:23,000 Sabihing kami ay naghahanap para sa bilang 15. 618 00:43:23,000 --> 00:43:27,000 Ang unang pagkakataon na gawin namin ito, tulad ng nakita natin mas maaga, 619 00:43:27,000 --> 00:43:30,000 Gitnang ang alinman sa 16 o 23 620 00:43:30,000 --> 00:43:34,000 depende sa kung paano namin kinakalkula ang mga bagay ang. 621 00:43:34,000 --> 00:43:37,000 Dahil pantay-pantay na paghahati sa gitna ay bigyan kami ng puwang na ito 622 00:43:37,000 --> 00:43:42,000 sa pagitan ng 16 at 23, hindi pantay-pantay namin maaaring hatiin ito 623 00:43:42,000 --> 00:43:47,000 o hatiin ito at makakuha ng sa isang tunay na Gitnang. 624 00:43:47,000 --> 00:43:49,000 Titingnan namin sa 16. 625 00:43:49,000 --> 00:43:55,000 Susubukan naming mapagtanto ang "Uy, 16> 15 na kaming naghahanap ng para sa." 626 00:43:55,000 --> 00:43:59,000 Upang pagkatapos ay tumingin sa kaliwang kalahati ng array 627 00:43:59,000 --> 00:44:03,000 kung ano ang makikita namin hanggang paggawa discarding 628 00:44:03,000 --> 00:44:07,000 ang buong itaas na bahagi 629 00:44:07,000 --> 00:44:16,000 at sinasabi, "Okay, ngayon aming Dulo ng pagpunta sa dito." 630 00:44:16,000 --> 00:44:22,000 Ang susunod na pag-ulit ng aming loop, na namin ngayon ang iyong hinahanap sa array, 631 00:44:22,000 --> 00:44:25,000 epektibong pag-itinapon bahagi na ito dahil ngayon 632 00:44:25,000 --> 00:44:30,000 kung namin ang paglalaan ng Gitnang ang pagkakaiba sa pagitan ng simula at sa katapusan, 633 00:44:30,000 --> 00:44:34,000 nakita namin na ang aming Gitnang na 8, 634 00:44:34,000 --> 00:44:40,000 kung saan maaari naming pagkatapos ay subukan ang 8 upang makita kung saan ito ay na may kaugnayan sa numero kaming naghahanap ng mga, 635 00:44:40,000 --> 00:44:44,000 15, hanapin na 15 ay mas malaki, 636 00:44:44,000 --> 00:44:49,000 kaya kami ay may upang lumipat sa kanang bahagi ng listahan, 637 00:44:49,000 --> 00:44:51,000 kung saan alam namin dahil hindi namin ang mga tao, at maaari naming makita ito. 638 00:44:51,000 --> 00:44:54,000 Alam namin na ang kanang bahagi ay magiging kung saan nakita namin ito, 639 00:44:54,000 --> 00:45:01,000 ngunit ang computer ay hindi alam na, kaya kung ano ang gagawin namin ay bibigyan namin ng aktwal 640 00:45:01,000 --> 00:45:04,000 na ito pumunta up, at ngayon ang simula at sa katapusan 641 00:45:04,000 --> 00:45:11,000 sa parehong lugar, kaya Gitnang ang nagiging lamang ang numero sa listahan sa puntong iyon, 642 00:45:11,000 --> 00:45:16,000 na 15, at nalaman namin ito. 643 00:45:16,000 --> 00:45:21,000 Ba na malaglag sa ilang ilaw sa kung saan ang buong max at min pagtatanda pagpunta, 644 00:45:21,000 --> 00:45:24,000 pinapanatili ng track ng endpoints ng array upang malaman kung 645 00:45:24,000 --> 00:45:35,000 kung paano upang paliitin ang mga bagay down? 646 00:45:35,000 --> 00:45:42,000 >> Kung ano ang mangyayari kung ito ay hindi katumbas sa 15 ngayon? 647 00:45:42,000 --> 00:45:52,000 Ano kung kami ay naghahanap para sa 15 at, sa halip, ang bilang na ito ay din 16? 648 00:45:52,000 --> 00:45:54,000 Gusto naming sabihin, "Oh, ito ay mas malaki. 649 00:45:54,000 --> 00:45:57,000 Gusto naming upang bumalik sa kaliwa. " 650 00:45:57,000 --> 00:46:01,000 At nais naming ilipat ang aming e sa kanan, 651 00:46:01,000 --> 00:46:06,000 sa puntong mayroon kaming isang endpoint na nagko-conflict. 652 00:46:06,000 --> 00:46:09,000 Hindi ito upang maghanap para sa anumang higit pang mga elemento 653 00:46:09,000 --> 00:46:13,000 dahil ngayon mayroon kaming aming Dulo ng at sa aming punto ng simula, 654 00:46:13,000 --> 00:46:16,000 aming max at ang aming min, na ngayon Binaligtad. 655 00:46:16,000 --> 00:46:23,000 Kami ay maghanap sa pamamagitan ng buong array. Hindi namin mahanap ang anumang bagay. 656 00:46:23,000 --> 00:46:27,000 Na ang punto sa kung saan namin gusto mong sabihing, "Okay, kami ay pagpunta sa itigil ang algorithm. 657 00:46:27,000 --> 00:46:34,000 Hindi namin nahanap ang anumang. Alam namin na ito ay hindi in dito. " 658 00:46:34,000 --> 00:46:36,000 Paano ay ito dumalo? 659 00:46:36,000 --> 00:46:40,000 [Mag-aaral] Paano eksaktong ang computer lumipat sa dulo? 660 00:46:40,000 --> 00:46:45,000 Paano ang pagtatapos magtapos up bago ang simula? 661 00:46:45,000 --> 00:46:48,000 Pagtatapos Nagtatapos ang bago sa simula 662 00:46:48,000 --> 00:46:54,000 dahil sa matematika na kami ay pagpunta sa gawin sa bawat oras na gawin namin ito. 663 00:46:54,000 --> 00:47:00,000 Ang paraan na aming swap kung titingnan mo sa unang pagkakataon namin ito makipagpalitan ng 664 00:47:00,000 --> 00:47:03,000 kung saan mayroon kaming simula sa 4 at sa katapusan 665 00:47:03,000 --> 00:47:13,000 ang lahat ng mga paraan pababa sa 108 at ang aming Gitnang, sabihin, sa 16 - 666 00:47:13,000 --> 00:47:20,000 Pupunta ako upang i-reset ito pabalik sa 15-kung kaming naghahanap ng para sa 15, 667 00:47:20,000 --> 00:47:25,000 alam namin na kung ano ang ginawa namin kapag naka-check namin ang 16 at nakita na ito ay mas malaki 668 00:47:25,000 --> 00:47:28,000 at gusto mong itapon ang buong kanang bahagi ng listahan, 669 00:47:28,000 --> 00:47:36,000 Nakita namin na kung ano ang gusto naming gawin ay ilipat ang e dito mismo. 670 00:47:36,000 --> 00:47:44,000 Epektibo, e Nakakuha inilipat sa isa bago ang Gitnang. 671 00:47:44,000 --> 00:47:48,000 Gayundin, kapag ginawa namin ito ulit ng algorithm 672 00:47:48,000 --> 00:47:51,000 at Gitnang sa 8, 673 00:47:51,000 --> 00:47:55,000 nakita namin na 8 <15, kaya gusto naming ilipat ang b 674 00:47:55,000 --> 00:48:00,000 isang nakaraang ang Gitnang. 675 00:48:00,000 --> 00:48:07,000 Ngayon, sa simula at sa katapusan ay parehong kasama sa 15. 676 00:48:07,000 --> 00:48:10,000 >> Kung nais namin na nangyayari upang tumingin para sa ilang iba pang mga halaga, hindi 15, 677 00:48:10,000 --> 00:48:14,000 o kung ito ay sa halip ay ang 15 16, 678 00:48:14,000 --> 00:48:20,000 ay nalaman naming e ang gusto naming ilipat ang isa bago ang Gitnang. 679 00:48:20,000 --> 00:48:33,000 Ngayon e ay may Binaligtad nang mas mababa kaysa sa b. 680 00:48:33,000 --> 00:48:39,000 Lakad natin sa pamamagitan ng kung paano namin aktwal na coding ito algorithm. 681 00:48:39,000 --> 00:48:44,000 Alam namin na gusto naming magkaroon ng Gitnang pagkalkula na ito. 682 00:48:44,000 --> 00:48:48,000 Alam din namin na gusto naming subaybayan ang simula at dulo ng array 683 00:48:48,000 --> 00:48:51,000 ng aming kasalukuyang array upang maaari naming malaman kung 684 00:48:51,000 --> 00:48:56,000 kung saan ang kaliwang kalahati ng listahan ay at kung saan ang kanang kalahati ng listahan ay. 685 00:48:56,000 --> 00:49:03,000 Ginagawa namin na na may alinman sa nagsisimula at nagtatapos, 686 00:49:03,000 --> 00:49:07,000 o maaari naming tumawag sa kanila min at max. 687 00:49:07,000 --> 00:49:10,000 Kailangan ko bang gamitin ang nagsisimula at nagtatapos ang oras na ito. 688 00:49:10,000 --> 00:49:15,000 Kapag sinimulan namin, kung tiningnan namin pabalik sa aming halimbawa dito, 689 00:49:15,000 --> 00:49:20,000 aming simula ay nakatakda sa pinakadulo simula ng array, bilang natural. 690 00:49:20,000 --> 00:49:25,000 Ano ang index ay ito? Ano ang dapat aming magsimula na? 691 00:49:25,000 --> 00:49:27,000 Daniel. 692 00:49:27,000 --> 00:49:30,000 [Daniel] mandala ng dayami [0]. 693 00:49:30,000 --> 00:49:37,000 [Nate] Oo, kaya kami itakda ito katumbas ng mandala ng dayami [0]. 694 00:49:37,000 --> 00:49:40,000 Ang problema, bagaman, ay na ito ay nagbibigay sa amin hindi ang posisyon ng unang elemento. 695 00:49:40,000 --> 00:49:45,000 Ito ay nagbibigay sa amin ang index ng unang elemento o ang aktwal na halaga na unang posisyon. 696 00:49:45,000 --> 00:49:47,000 [Mag-aaral] Iyon ay convert sa .20? 697 00:49:47,000 --> 00:49:52,000 [Nate] Ano ito ay gawin ay-mabuti, hindi ito gawin ang anumang nagko-convert. 698 00:49:52,000 --> 00:49:56,000 Ano ito ay ang pag-imbak ng 4 sa magsimula, 699 00:49:56,000 --> 00:49:59,000 at pagkatapos ay ito ay mahirap upang gumawa ng mga paghahambing laban magsimula 700 00:49:59,000 --> 00:50:03,000 dahil BEGIN ay hinahawakan ang halaga ng 4, 701 00:50:03,000 --> 00:50:06,000 na ang simula ng aming array, 702 00:50:06,000 --> 00:50:08,000 ngunit nais naming upang subaybayan ang mga indeks ng sa array 703 00:50:08,000 --> 00:50:11,000 kumpara sa halaga. 704 00:50:11,000 --> 00:50:17,000 Namin ang aktwal na gumamit ng 0, tulad na. 705 00:50:17,000 --> 00:50:20,000 Para sa dulo ng array-Charlotte dinala ito up ng kaunti mas maaga. 706 00:50:20,000 --> 00:50:23,000 Ito ay kung saan isasaalang-alang namin patungo sa account na zero ang pag-i-index. 707 00:50:23,000 --> 00:50:25,000 >> Charlotte, kung ano ang dulo ng array? 708 00:50:25,000 --> 00:50:28,000 Ano ang index ng pagtatapos? 709 00:50:28,000 --> 00:50:30,000 [Charlotte] Laki - 1. 710 00:50:30,000 --> 00:50:32,000 Oo, at kung aling laki ang dapat naming gamitin? 711 00:50:32,000 --> 00:50:35,000 Dapat naming gamitin ang kabisera ng laki o lowercase laki? 712 00:50:35,000 --> 00:50:37,000 Capital laki. 713 00:50:37,000 --> 00:50:42,000 Sa kasong ito, maaari naming gamitin ang kabisera laki. 714 00:50:42,000 --> 00:50:45,000 Kung gusto namin ang function na ito upang maging portable 715 00:50:45,000 --> 00:50:48,000 at gamitin ang function na ito sa iba pang mga programa, 716 00:50:48,000 --> 00:50:50,000 maaari naming aktwal na gumamit ng lowercase na laki. 717 00:50:50,000 --> 00:50:52,000 Ito ay fine masyadong. 718 00:50:52,000 --> 00:51:01,000 Ngunit Charlotte ay lubos na karapatan na gusto naming magkaroon ng laki - 1. 719 00:51:01,000 --> 00:51:03,000 Sa puntong ito- 720 00:51:03,000 --> 00:51:05,000 [Mag-aaral] Paano ay ito na maaari mong gamitin ang mga uppercase laki? 721 00:51:05,000 --> 00:51:07,000 Paano ay ito na maaari kaming gumamit ng uppercase laki? 722 00:51:07,000 --> 00:51:13,000 Ito lumiliko out na ang mga # tumutukoy talaga, 723 00:51:13,000 --> 00:51:19,000 sa ilalim ng hood, ang teksto tulad ng mahanap at palitan, kung na saysay. 724 00:51:19,000 --> 00:51:24,000 Kapag mong ipunin ang iyong code, ang phase ng preprocessing 725 00:51:24,000 --> 00:51:27,000 ng tagatala napupunta sa pamamagitan ng file, 726 00:51:27,000 --> 00:51:31,000 at hitsura para sa lahat ng dako na iyong nakasulat na kabisera laki, 727 00:51:31,000 --> 00:51:39,000 at pumapalit na teksto literal na may 8, katulad nito. 728 00:51:39,000 --> 00:51:42,000 Sa na kahulugan, ito ay lubos na naiiba mula sa isang variable. 729 00:51:42,000 --> 00:51:45,000 Hindi ito tumagal ng hanggang ang anumang puwang sa memorya. 730 00:51:45,000 --> 00:51:52,000 Ito ay isang simpleng nanlilinlang Palitan ang teksto. 731 00:51:52,000 --> 00:51:57,000 Sa kasong ito, kami ay pagpunta sa gamitin ang laki. 732 00:51:57,000 --> 00:52:01,000 Mula dito namin nais na gawin ang ilang mga uri ng pag-uulit, 733 00:52:01,000 --> 00:52:03,000 at hindi namin sa kanan track sa aming Do-habang loop. 734 00:52:03,000 --> 00:52:08,000 Gusto naming gawin ang isang bagay hanggang ang isang kondisyon ay hindi hold ang ito, 735 00:52:08,000 --> 00:52:12,000 at tulad ng nakita natin mas maaga, nakita namin na kondisyon 736 00:52:12,000 --> 00:52:19,000 ay katunayan na hindi namin nais sa dulo 737 00:52:19,000 --> 00:52:24,000 upang maging mas mababa kaysa sa magsimula. 738 00:52:24,000 --> 00:52:26,000 >> Ito ay aming pagtigil kondisyon. 739 00:52:26,000 --> 00:52:35,000 Kung nangyari ito, gusto naming upang ihinto at ipinapahayag tulad ng, "Uy, hindi namin natagpuan ang anumang." 740 00:52:35,000 --> 00:52:43,000 Na ipahayag ito, namin nais na gamitin ang ilang mga uri ng loop. 741 00:52:43,000 --> 00:52:49,000 Sa kasong ito, ito ay isang Do-habang loop, loop, habang loop? 742 00:52:49,000 --> 00:52:51,000 Mayroon kaming Do-habang loop dito. 743 00:52:51,000 --> 00:52:53,000 Gusto mo guys tulad na diskarte? 744 00:52:53,000 --> 00:52:59,000 Sa tingin ba ninyo dapat naming subukan ang isang iba't ibang mga diskarte? 745 00:52:59,000 --> 00:53:01,000 Kevin, anumang saloobin? 746 00:53:01,000 --> 00:53:06,000 Maaari naming magkaroon ng isang habang loop dahil alam namin ang maximum na 747 00:53:06,000 --> 00:53:11,000 ay mas malaki kaysa sa min sa anyways simula. 748 00:53:11,000 --> 00:53:14,000 Oo, kaya walang Pinasimulan na kailangang mangyari. 749 00:53:14,000 --> 00:53:17,000 Yaong gawin-habang loop ay mahusay na kapag mayroon kang simulan ang isang bagay 750 00:53:17,000 --> 00:53:21,000 bago at pagkatapos ng pagsubok, kung saan dito 751 00:53:21,000 --> 00:53:26,000 alam namin na hindi namin upang panatilihin ang reinitializing parehong nagsisimula at nagtatapos 752 00:53:26,000 --> 00:53:28,000 bawat ikot ng loop. 753 00:53:28,000 --> 00:53:32,000 Alam namin na gusto naming simulan ang mga ito, at pagkatapos ay tingnan ang aming kalagayan. 754 00:53:32,000 --> 00:53:38,000 Sa kasong ito, makikita ko aktwal na may isang simpleng habang loop. 755 00:53:38,000 --> 00:53:44,000 Ito lumiliko out na gawin-habang loop ay ginagamit medyo madalang. 756 00:53:44,000 --> 00:53:49,000 Isang maraming ng mga lugar ay hindi maturuan ang habang loop. 757 00:53:49,000 --> 00:53:53,000 Ito ay mabuti para sa paghawak ng input ng user, kaya nakakita kami ng maraming ng mga ito nang sa gayon ay malayo. 758 00:53:53,000 --> 00:53:59,000 Ngunit normal para sa at habang loop ng maraming mas karaniwang. 759 00:53:59,000 --> 00:54:03,000 Ito lumiliko out na ang kondisyon na ito ay tulad ng nakasulat 760 00:54:03,000 --> 00:54:09,000 ay hindi talagang gawin sa amin mas mahusay, at bakit iyon? 761 00:54:09,000 --> 00:54:11,000 Ikinalulungkot ko, hindi ko alam ang iyong pangalan. 762 00:54:11,000 --> 00:54:13,000 Ako Jerry. >> Paumanhin? 763 00:54:13,000 --> 00:54:15,000 B-O-R-U-ko. 764 00:54:15,000 --> 00:54:18,000 Oh, okay. 765 00:54:18,000 --> 00:54:23,000 Hindi ko nakikita sa aking listahan. 766 00:54:23,000 --> 00:54:26,000 Oh, ito ay dahil-oh, na saysay. 767 00:54:26,000 --> 00:54:31,000 Mayroon ba kayong ng ideya ng kung bakit ito habang loop ay hindi maaaring gumana tulad ng nilalayon, 768 00:54:31,000 --> 00:54:38,000 tulad ng nakasulat sa mga kondisyon? 769 00:54:38,000 --> 00:54:43,000 [Jerry] ibig sabihin mo tulad ng gusto mo ang lahat ng mga bagay-bagay matapos na ito sa ng? 770 00:54:43,000 --> 00:54:46,000 Oo, kaya na ang isa. 771 00:54:46,000 --> 00:54:49,000 Maaaring namin upang ilagay ang lahat ng ito bagay sa habang loop, kung saan ay lubos na totoo. 772 00:54:49,000 --> 00:54:55,000 Ang iba pang mga bagay na ng kaunti pa sa problemang, bagaman, ay na ang kondisyon na ito ay hindi gumagana. 773 00:54:55,000 --> 00:54:57,000 [Mag-aaral] kailangan mo upang i-flip ito. 774 00:54:57,000 --> 00:55:04,000 Kanan, kaya't ang kondisyon na ito ay hindi kailanman totoo paunang paraan na usapan natin ang tungkol dito. 775 00:55:04,000 --> 00:55:08,000 Gusto naming gawin ang isang bagay hanggang sa pagtatapos 00:55:13,000 ngunit nais naming upang gawin ang isang bagay habang 777 00:55:13,000 --> 00:55:21,000 simulan ang ≤ pagtatapos. 778 00:55:21,000 --> 00:55:24,000 >> Mayroon na pagkabaligtad ng logic doon. 779 00:55:24,000 --> 00:55:27,000 Ako na nagkasala ng paggawa ng mga pagkakamali sa lahat ng oras. 780 00:55:27,000 --> 00:55:31,000 [Mag-aaral] Bakit ang ito sa mas mababa sa o katumbas ng? 781 00:55:31,000 --> 00:55:33,000 Dahil mo matandaan ang kaso na nakuha namin sa 782 00:55:33,000 --> 00:55:36,000 kung saan nagkaroon ng isang elemento lamang, at kami ay pababa, 783 00:55:36,000 --> 00:55:43,000 at kami ay naghahanap sa lamang sa 15 sa aming array? 784 00:55:43,000 --> 00:55:47,000 At ang aming simula at ang aming pagtatapos ay ang parehong mga elemento. 785 00:55:47,000 --> 00:55:50,000 Gusto naming tiyakin na namin panghahawakan ang kasong iyon. 786 00:55:50,000 --> 00:55:54,000 Kung ginawa namin isang tuwid na mas mababa kaysa sa, 787 00:55:54,000 --> 00:55:58,000 nais lamang namin upang makakuha ng pababa sa 2-elemento array. 788 00:55:58,000 --> 00:56:06,000 Sa sandaling nakuha namin down na huling elemento, kung na aming elemento, hindi namin nais na makita ito. 789 00:56:06,000 --> 00:56:10,000 Ngayon dito, maaari naming gawin nang eksakto tulad ng ikaw ay sinasabi. 790 00:56:10,000 --> 00:56:15,000 Maaari naming simulan plopping bagay pakanan papunta sa kalagitnaan ng aming habang loop. 791 00:56:15,000 --> 00:56:20,000 Aming makakaya magsabuwatan sa aming Gitnang. 792 00:56:20,000 --> 00:56:24,000 Namin ang lahat ng mga ito kung pahayag, 793 00:56:24,000 --> 00:56:30,000 hilahin ang mga ito ng ito do-habang loop, 794 00:56:30,000 --> 00:56:34,000 magsabuwatan ito sa, 795 00:56:34,000 --> 00:56:39,000 linisin ang mga bagay up ng kaunti, 796 00:56:39,000 --> 00:56:48,000 at makikita ko sige at i-save ang pagbabago na ito. 797 00:56:48,000 --> 00:56:53,000 At sa puntong ito, kami ay nakakakuha ng medyo malapit. 798 00:56:53,000 --> 00:56:55,000 Sam. 799 00:56:55,000 --> 00:56:58,000 Tingin ko mayroon ka ring int Gitnang = laki - 1/2. 800 00:56:58,000 --> 00:57:01,000 Nakuha ko, laki - 1/2. 801 00:57:01,000 --> 00:57:05,000 Mayroon bang anumang bagay na kailangan namin upang baguhin ang tungkol sa na linya? 802 00:57:05,000 --> 00:57:10,000 Iyon ay isang mahusay na catch. 803 00:57:10,000 --> 00:57:14,000 >> Ano ang laki gawin? Ay namin kailanman pagbabago ng laki? 804 00:57:14,000 --> 00:57:17,000 Upang panatilihin ang mga linya tulad nito, mayroon kaming upang baguhin ang laki. 805 00:57:17,000 --> 00:57:21,000 Mayroon kaming upang baguhin ang laki sa bawat oras na pumunta kami sa paligid ng para sa loop. 806 00:57:21,000 --> 00:57:25,000 Ngunit tandaan kapag kami ay pagpunta sa pamamagitan ng aming halimbawa lamang ng kaunti mas maaga, 807 00:57:25,000 --> 00:57:30,000 at nagkaroon kami simula sa 4 808 00:57:30,000 --> 00:57:33,000 at sa katapusan ang lahat ng mga paraan sa paglipas ng sa 108? 809 00:57:33,000 --> 00:57:35,000 Paano kinakalkula namin ang ang Gitnang? 810 00:57:35,000 --> 00:57:38,000 Ay namin ang paggamit sa laki? 811 00:57:38,000 --> 00:57:40,000 O namin ay ginagamit nagsisimula at nagtatapos sa halip? 812 00:57:40,000 --> 00:57:42,000 Ito ay ang pagkakaiba sa pagitan ng pagtatapos at simula. 813 00:57:42,000 --> 00:57:50,000 Eksakto, at kung paano eksaktong dapat kong isulat iyon, Charlotte? 814 00:57:50,000 --> 00:57:52,000 Lamang magtapos - magsimula. 815 00:57:52,000 --> 00:57:55,000 Hindi mo kailangang gawin ang - 1 816 00:57:55,000 --> 00:57:58,000 dahil ang - 1 ay kasama sa pagtatapos at magsisimula na. 817 00:57:58,000 --> 00:58:00,000 [Nate] Mahusay, ikaw ay lubos na karapatan. 818 00:58:00,000 --> 00:58:03,000 Hindi namin na gawin ang - 1 dahil iyon - 1 ay kasama 819 00:58:03,000 --> 00:58:08,000 at alang kapag namin initialize ang katapusan variable. 820 00:58:08,000 --> 00:58:11,000 >> Mayroon bang anumang bagay kailangan kong gawin syntactically linya na ito may kabuluhan ang? 821 00:58:11,000 --> 00:58:13,000 [Mag-aaral] Plus magsimula. >> Plus magsimula? 822 00:58:13,000 --> 00:58:15,000 [Mag-aaral] Sa dulo. 823 00:58:15,000 --> 00:58:20,000 Dahil lamang ito ay kinakalkula sa kalahati ng haba. 824 00:58:20,000 --> 00:58:26,000 Kailangan mong idagdag ang magsimula. 825 00:58:26,000 --> 00:58:31,000 [Nate] Ano ang gusto ito kalkulahin para sa amin? 826 00:58:31,000 --> 00:58:35,000 Kung sa tingin namin tungkol sa pagtatapos sa unang pag-ulit ng loop, 827 00:58:35,000 --> 00:58:40,000 pagtatapos ay pagpunta sa posisyon index 7. 828 00:58:40,000 --> 00:58:43,000 Simulan sa posisyon 0. 829 00:58:43,000 --> 00:58:47,000 Tandaan, kami ay naghahanap para sa alinman sa 830 00:58:47,000 --> 00:58:52,000 posisyon 3 o posisyon 4. 831 00:58:52,000 --> 00:58:56,000 Kung titingnan namin sa matematika, upang gumawa ng mga ito ng kaunti pa tiyak, 832 00:58:56,000 --> 00:59:02,000 ilagay ang ilang mga numero sa dito, mayroon kaming 7, 0, 833 00:59:02,000 --> 00:59:10,000 kaya 7 - 0, at pagkatapos ay / 2 834 00:59:10,000 --> 00:59:19,000 3 sa integer division, na. 835 00:59:19,000 --> 00:59:26,000 Pagkatapos ay kailangan naming pagkatapos ay idagdag muli ang aming magsimula? 836 00:59:26,000 --> 00:59:28,000 Ginagawa namin hindi sa kasong ito. 837 00:59:28,000 --> 00:59:31,000 Sa unang pag-ulit, ito ay pinong dahil BEGIN ay 0. 838 00:59:31,000 --> 00:59:36,000 Ngunit bilang namin progreso, gawin namin talagang lahat kailangan lang 839 00:59:36,000 --> 00:59:42,000 pagtatapos - simulan / 2. 840 00:59:42,000 --> 00:59:46,000 May isa pang nanlilinlang dito, at lalo na isa sa mangingibabaw. 841 00:59:46,000 --> 00:59:49,000 [Mag-aaral] ba namin kailangan ang mga panaklong? 842 00:59:49,000 --> 00:59:53,000 [Nate] Mismong, at na dahil kung hindi namin ilagay ang mga ito ng mga panaklong, 843 00:59:53,000 --> 00:59:58,000 linya na ito ay kahulugan sa halip 844 00:59:58,000 --> 01:00:09,000 ng (wakas) - (simulan / 2), na hindi namin talagang gusto. 845 01:00:09,000 --> 01:00:11,000 Panoorin ang para sa mga panuntunan mangingibabaw. 846 01:00:11,000 --> 01:00:15,000 [Mag-aaral] Bakit hindi ito magtapos + magsimula? 847 01:00:15,000 --> 01:00:17,000 Bakit hindi ito magtapos + magsimula? 848 01:00:17,000 --> 01:00:19,000 [Mag-aaral] Bakit hindi? 849 01:00:19,000 --> 01:00:24,000 Bakit ito ay +? 850 01:00:24,000 --> 01:00:26,000 Tingin ko ikaw ay kanan. 851 01:00:26,000 --> 01:00:28,000 [Mag-aaral] Dahil ito ang average? 852 01:00:28,000 --> 01:00:31,000 [Nate] End + magsimula, ikaw ay lubos na karapatan. 853 01:00:31,000 --> 01:00:34,000 Wow, lubos ko goofed. Tama ka. 854 01:00:34,000 --> 01:00:39,000 Kung tayo ay ginagawa sa minus, gusto namin nais upang idagdag ang magsimulang muli. 855 01:00:39,000 --> 01:00:43,000 Sa kasong ito, hindi ka maka-kanan na gusto naming gawin ang average ng dalawang, 856 01:00:43,000 --> 01:00:45,000 kaya namin nais na idagdag ang mga ito, bilang kabaligtaran sa ibawas ang mga ito. 857 01:00:45,000 --> 01:00:49,000 [Mag-aaral] din ito gumana kung ginawa mo ang pagtatapos - simulan / 2 + magsimula. 858 01:00:49,000 --> 01:00:55,000 Gagawin ito kung namin gawin-ako naniniwala kaya. 859 01:00:55,000 --> 01:01:00,000 >> Halimbawa, kung tayo ay tumitingin sa magsimula, 860 01:01:00,000 --> 01:01:04,000 at Paglipat namin ito sa paglipas dito 861 01:01:04,000 --> 01:01:08,000 sa 15. 862 01:01:08,000 --> 01:01:12,000 Ngayon simulan sa posisyon 2. 863 01:01:12,000 --> 01:01:15,000 End ay sa posisyon 7. 864 01:01:15,000 --> 01:01:21,000 Kung ibabawas namin ang mga ito, makuha namin 5. 865 01:01:21,000 --> 01:01:24,000 Hatiin na sa pamamagitan ng 2, makuha namin 2. 866 01:01:24,000 --> 01:01:27,000 At pagkatapos namin magdagdag ng 2 pabalik sa, 867 01:01:27,000 --> 01:01:30,000 at na hindi nakakaabala sa amin sa ika-4 na posisyon, 868 01:01:30,000 --> 01:01:33,000 na dito mismo, na ang Gitnang. 869 01:01:33,000 --> 01:01:36,000 [Mag-aaral] ba namin kailangang alagaan ng wrapping? 870 01:01:36,000 --> 01:01:39,000 Sa anong kahulugan namin kailangang pangangalaga ng pambalot? 871 01:01:39,000 --> 01:01:43,000 Kung ang kabuuan o ang pagkakaiba sa pagitan ng 872 01:01:43,000 --> 01:01:45,000 depende sa kung paano gawin namin ito ay hindi isang kahit na bilang. 873 01:01:45,000 --> 01:01:49,000 Pagkatapos ang computer ay makakakuha ng nalilito kung kapag ito ay 2.5; 874 01:01:49,000 --> 01:01:52,000 mong ilipat sa kaliwa o sa kanan upang matukoy kung aling ang Gitnang? 875 01:01:52,000 --> 01:01:54,000 Nakuha ko. 876 01:01:54,000 --> 01:01:56,000 Ito lumiliko out na may integer division, 877 01:01:56,000 --> 01:01:59,000 hindi namin kailanman makakuha ng mga lumulutang point numero. 878 01:01:59,000 --> 01:02:01,000 Namin kailanman makakuha ng decimal. 879 01:02:01,000 --> 01:02:04,000 Lubos Ito ay iwinaksi. 880 01:02:04,000 --> 01:02:08,000 Kung mayroon kang computer ng isang hatiin sa dalawang int variable, 881 01:02:08,000 --> 01:02:11,000 at ang isa ay 7, at ang isa ay 2, 882 01:02:11,000 --> 01:02:13,000 hindi ka makakakuha ng 3.5 bilang isang resulta. 883 01:02:13,000 --> 01:02:16,000 Ito ay 3. 884 01:02:16,000 --> 01:02:19,000 Natitira Itatapon, kaya ito ang epektibong rounding- 885 01:02:19,000 --> 01:02:24,000 hindi isang ikot kundi isang palapag, kung ikaw guys ay pamilyar sa sa matematika, 886 01:02:24,000 --> 01:02:27,000 kung saan ganap na itapon ang mga decimal, 887 01:02:27,000 --> 01:02:31,000 at kaya mahalagang ka Pinuputol ito sa pinakamalapit na 888 01:02:31,000 --> 01:02:33,000 buo posisyon, sa pinakamalapit na buong numero. 889 01:02:33,000 --> 01:02:38,000 [Mag-aaral] Ngunit pagkatapos na ang problemang dahil kung mayroon kang isang hanay ng mga 7 elemento 890 01:02:38,000 --> 01:02:43,000 pagkatapos na awtomatikong tumatagal 3rd elemento ng Gitnang sa halip ng ika-4. 891 01:02:43,000 --> 01:02:46,000 Paano namin haharapin ang mga iyon? 892 01:02:46,000 --> 01:02:49,000 Ang problemang ito dahil kung kami ay may isang array ng 7, 893 01:02:49,000 --> 01:02:54,000 piliin ang 3rd sa halip ng ika-4. 894 01:02:54,000 --> 01:02:56,000 Maaari mong ipaliwanag ng kaunti pa? 895 01:02:56,000 --> 01:02:59,000 [Mag-aaral] Dahil kung mayroon kang 7 elemento pagkatapos ay ang ika-4 na elemento 896 01:02:59,000 --> 01:03:04,000 ang Gitnang, i-right? 897 01:03:04,000 --> 01:03:07,000 Matandaan ang iyong komento tungkol sa pagiging zero-index, bagaman. 898 01:03:07,000 --> 01:03:10,000 [Mag-aaral] Oo, kaya sa posisyon 3. Na ang Gitnang. 899 01:03:10,000 --> 01:03:12,000 Oo. 900 01:03:12,000 --> 01:03:16,000 Oh, okay. Nakikita ko kung ano ang ibig mong sabihin. 901 01:03:16,000 --> 01:03:19,000 Ito ay uri ng kakaiba, bilang namin masanay sa buong paniwala ng 902 01:03:19,000 --> 01:03:22,000 inaalis ng decimal. 903 01:03:22,000 --> 01:03:26,000 Iyon ay isang mahusay na punto. 904 01:03:26,000 --> 01:03:30,000 Tapusin natin ito up. 905 01:03:30,000 --> 01:03:32,000 Kinakalkula namin ang aming Gitnang. 906 01:03:32,000 --> 01:03:37,000 >> Naming sinusubukan upang makita kung ang aming karayom ​​ay katumbas sa gitna halaga. 907 01:03:37,000 --> 01:03:41,000 Kami ng pag-print na nakita namin ito, ngunit talaga, kung ano ang gusto naming gawin sa sitwasyong ito? 908 01:03:41,000 --> 01:03:46,000 Napag-alaman namin ito, kaya gusto naming ipaalam tumatawag ang malaman na nakita namin ito. 909 01:03:46,000 --> 01:03:49,000 Mayroon kaming isang function na ang isang boolean function na-type. 910 01:03:49,000 --> 01:03:54,000 Ang paraan na magsenyas namin ang tumatawag sa aming mga function na na handa na kami upang pumunta 911 01:03:54,000 --> 01:03:58,000 ay sinasabi namin, "Hey, ito ay totoo." 912 01:03:58,000 --> 01:04:00,000 Paano namin gawin iyon, Kevin? 913 01:04:00,000 --> 01:04:02,000 Ka nodding iyong ulo. >> [Kevin] Idagdag ang return totoo. 914 01:04:02,000 --> 01:04:06,000 [Nate] Mismong, nagbabalik ng tunay. 915 01:04:06,000 --> 01:04:12,000 Ngayon, kung ito ay hindi katumbas, kung paano namin tumingin sa kaliwang kalahati? 916 01:04:12,000 --> 01:04:16,000 Anumang mga ideya? 917 01:04:16,000 --> 01:04:18,000 Stella, ang anumang mga ideya? 918 01:04:18,000 --> 01:04:21,000 Kailangan mong magtakda ng isang bagong posisyon para sa mga end. 919 01:04:21,000 --> 01:04:23,000 Oo. 920 01:04:23,000 --> 01:04:29,000 Kaya naming gawin ang posisyon ng Gitnang - sa dulo. 921 01:04:29,000 --> 01:04:33,000 Mahusay. 922 01:04:33,000 --> 01:04:36,000 Kailangan namin upang magtakda ng isang bagong posisyon para sa dulo 923 01:04:36,000 --> 01:04:38,000 tumingin sa kaliwang kalahati. 924 01:04:38,000 --> 01:04:41,000 Ito ay kung ano ang usapan natin ang tungkol bago kung saan 925 01:04:41,000 --> 01:04:44,000 Panatilihing ako pagpunta sa halimbawang ito. 926 01:04:44,000 --> 01:04:50,000 Ako magsisimula dito, at pagkatapos ay mayroon akong sa katapusan ang lahat ng mga paraan sa paglipas dito. 927 01:04:50,000 --> 01:04:53,000 >> Muli, kung kaming naghahanap ng para sa 15, at ang aming Gitnang sa 16, 928 01:04:53,000 --> 01:04:56,000 at Napagtanto namin, "Oops, 16 ay mas malaki. 929 01:04:56,000 --> 01:04:59,000 Gusto naming upang ilipat sa kaliwa kalahati. " 930 01:04:59,000 --> 01:05:02,000 Nais naming ilipat ang pagtatapos sa 15, 931 01:05:02,000 --> 01:05:06,000 at ginagawa namin na sa pamamagitan ng pagsasagawa ng isa ang layo mula sa Gitnang 932 01:05:06,000 --> 01:05:09,000 at pag-set na bilang aming bagong pagtatapos. 933 01:05:09,000 --> 01:05:12,000 Gayundin, kung gusto namin upang tumingin sa kanang kalahati, kung paano namin gawin iyon? 934 01:05:12,000 --> 01:05:14,000 Mayroon ba kayong ng ideya? 935 01:05:14,000 --> 01:05:22,000 [Mag-aaral]-set mo lang magsimula sa Gitnang + 1. 936 01:05:22,000 --> 01:05:24,000 [Nate] Mahusay. 937 01:05:24,000 --> 01:05:29,000 At ngayon sa kaso na hindi namin mahanap ang anumang bagay, 938 01:05:29,000 --> 01:05:32,000 ay na kinuha pag-aalaga ng para sa amin? 939 01:05:32,000 --> 01:05:36,000 Daniel, ay na makapag kinuha pangangalaga ng para sa amin? 940 01:05:36,000 --> 01:05:38,000 [Daniel] No. 941 01:05:38,000 --> 01:05:40,000 [Nate] Kung gagawin namin ito sa pamamagitan ng buong array at hindi namin mahanap ang anumang bagay, 942 01:05:40,000 --> 01:05:42,000 kung saan na dadalhin pag-aalaga ng, o dapat namin pag-aasikaso nito? 943 01:05:42,000 --> 01:05:44,000 [Daniel] Ang habang kundisyon. 944 01:05:44,000 --> 01:05:48,000 [Nate] Oo, habang kundisyon, eksakto. 945 01:05:48,000 --> 01:05:51,000 Tumagal ng pangangalaga ng pagpunta sa pamamagitan ng buong array kung hindi namin mahanap ang anumang bagay. 946 01:05:51,000 --> 01:05:53,000 Ang habang loop ay magtapos. 947 01:05:53,000 --> 01:05:56,000 Hindi namin ay nagkaroon ng kondisyon na ito, 948 01:05:56,000 --> 01:06:03,000 at maaari naming bumalik false. 949 01:06:03,000 --> 01:06:10,000 Maaari din namin iwanan ito kung in dito tulad nito 950 01:06:10,000 --> 01:06:14,000 dahil kung ito kung ang pahayag ay totoo, 951 01:06:14,000 --> 01:06:16,000 at ang aming function na ay magbabalik, 952 01:06:16,000 --> 01:06:21,000 at kaya bibigyan namin ng mahalagang i-abort ang function na sa puntong ito 953 01:06:21,000 --> 01:06:24,000 kapag bumalik kami totoo. 954 01:06:24,000 --> 01:06:28,000 Ngunit ano ang mangyayari may istrakturang ito dito? 955 01:06:28,000 --> 01:06:34,000 Ay ito gumana ganap, o mayroong ilang mga lohikal na basag doon? 956 01:06:34,000 --> 01:06:37,000 >> May ilang mga lohikal na basag doon, gamit ang paraan na ito set up. 957 01:06:37,000 --> 01:06:40,000 Ano ang maaari itong maging? 958 01:06:40,000 --> 01:06:43,000 [Mag-aaral] Bakit kailangan ang - at + 1s? 959 01:06:43,000 --> 01:06:47,000 Na nagtatakda sa aming array up sa aming bagong kaliwang kalahati at kanang kalahati. 960 01:06:47,000 --> 01:06:51,000 [Mag-aaral] Ngunit kung bakit hindi maaari mong gawin ito nang walang - 1s at + 1s? 961 01:06:51,000 --> 01:06:53,000 [Nate] Itinakda namin ito katumbas sa Gitnang? 962 01:06:53,000 --> 01:07:04,000 Ano ang maaaring problemang tungkol doon? 963 01:07:04,000 --> 01:07:08,000 [Mag-aaral] hulaan ko ito ay hindi mabisa dahil naka-check sa isang halaga na na-check. 964 01:07:08,000 --> 01:07:11,000 [Nate] Mismong, kaya Sam ay lubos na karapatan. 965 01:07:11,000 --> 01:07:15,000 Kung itinakda mo ang pagtatapos at magsimula ang katumbas sa Gitnang 966 01:07:15,000 --> 01:07:18,000 sa halip na - 1 at + 1 reflectively, 967 01:07:18,000 --> 01:07:22,000 sa ilang mga punto sa hinaharap, gagamitin namin pagsuri muli ang Gitnang. 968 01:07:22,000 --> 01:07:26,000 [Mag-aaral] ko nagsimula ang pset, at pagkatapos ko ay may isang bagay tulad na 969 01:07:26,000 --> 01:07:30,000 kung saan Nakalimutan ko ang + 1, at Nakakuha natigil sa isang walang-katapusang loop. 970 01:07:30,000 --> 01:07:34,000 Karapatan, dahil sa isang punto ay hindi ka pagpunta upang magsimula at magtapos 971 01:07:34,000 --> 01:07:39,000 upang aktwal na nagsasapawan. 972 01:07:39,000 --> 01:07:41,000 Cool. 973 01:07:41,000 --> 01:07:44,000 Mayroong isa pang lohikal kapintasan, at na ay na ito ay dapat talagang maging 974 01:07:44,000 --> 01:07:48,000 isang pang tao kung. 975 01:07:48,000 --> 01:07:55,000 Bakit maaaring na maging? 976 01:07:55,000 --> 01:07:59,000 >> Ang dahilan dito ay kung ito ay hindi isang pang tao kung mo makita ang mga ito, Kevin? 977 01:07:59,000 --> 01:08:02,000 [Kevin] Oo, dahil iyong binabago ang end point. 978 01:08:02,000 --> 01:08:05,000 [Nate] Mismong. 979 01:08:05,000 --> 01:08:07,000 Binabago namin ang endpoint, 980 01:08:07,000 --> 01:08:12,000 at kung ito ay nakasulat tulad nito we'll gumawa ng mga puwang sa pagitan ng- 981 01:08:12,000 --> 01:08:14,000 ito ang kasong ito. 982 01:08:14,000 --> 01:08:18,000 Ang kasong ito, kung ito ay magtagumpay, Ititigil ng pag-andar. 983 01:08:18,000 --> 01:08:21,000 Pagkatapos ay suriin ito sa tabi kaso, 984 01:08:21,000 --> 01:08:24,000 at kung magtagumpay ito, ito ay ayusin ang endpoint, 985 01:08:24,000 --> 01:08:28,000 at pagkatapos ito ay magpatuloy sa at suriin ang kasong ito. 986 01:08:28,000 --> 01:08:31,000 Ngunit sa puntong ito, hindi namin nais ito upang magpatuloy check. 987 01:08:31,000 --> 01:08:35,000 Kabutihang palad, hindi namin i-reset ang Gitnang dito, 988 01:08:35,000 --> 01:08:39,000 at alam namin na ang kaso na ito ay hindi magtagumpay. 989 01:08:39,000 --> 01:08:44,000 Ngunit namin talagang nais upang ilagay ang pang tao kung doon 990 01:08:44,000 --> 01:08:48,000 kahit na kapangyarihan-sa kasong ito 991 01:08:48,000 --> 01:08:52,000 dahil hindi namin ang pag-aayos ng Gitnang, na gumagawa ng isang pagkakaiba? 992 01:08:52,000 --> 01:08:54,000 Hindi, dahil sa mga kasong ito ay ang lahat ng eksklusibo. 993 01:08:54,000 --> 01:08:58,000 Muli, ang aking masama. 994 01:08:58,000 --> 01:09:01,000 Hindi namin, sa tingin ko, kailangan pang tao na ito kung. 995 01:09:01,000 --> 01:09:05,000 Maaari naming bigyan ito ng isang subukan at patakbuhin ito at makita kung ano ang mangyayari. 996 01:09:05,000 --> 01:09:08,000 Gusali, may naganap na error. 997 01:09:08,000 --> 01:09:12,000 Marahil ito ay dahil ako pakaliwa mga b at e in dito. 998 01:09:12,000 --> 01:09:14,000 Mayroon akong anumang higit pa sa mga up sa tuktok? 999 01:09:14,000 --> 01:09:16,000 Hindi ito hitsura ito. 1000 01:09:16,000 --> 01:09:20,000 Namin mag-zoom out, bumuo, 1001 01:09:20,000 --> 01:09:24,000 may ito napupunta, kaya ngayon kung kami maghanap para sa 15, 1002 01:09:24,000 --> 01:09:28,000 Oo. 1003 01:09:28,000 --> 01:09:30,000 Hayaan akong mag-zoom in. 1004 01:09:30,000 --> 01:09:33,000 15, oo. Maaari naming patakbuhin itong muli. 1005 01:09:33,000 --> 01:09:36,000 Nag-a-upload ng source code, pagbuo, pagtakbo. 1006 01:09:36,000 --> 01:09:41,000 Maaari naming maghanap para sa isang bagay tulad ng 13, 1007 01:09:41,000 --> 01:09:45,000 at hindi kami makakuha ng anumang pag-print out, nang sa gayon ay hindi ito paghahanap na para sa amin. 1008 01:09:45,000 --> 01:09:51,000 Mabuti iyan, dahil hindi ito sa aming listahan. 1009 01:09:51,000 --> 01:09:53,000 >> Na kami ngayon ng panahon. 1010 01:09:53,000 --> 01:09:55,000 Na pagpunta sa ito para sa linggong ito. 1011 01:09:55,000 --> 01:10:00,000 Salamat para sa pagsali, at nakikita mo sa ibang pagkakataon. 1012 01:10:00,000 --> 01:10:02,000 >> [CS50.TV]