1 00:00:00,000 --> 00:00:02,000 [Powered by Google Translate] [Seksyon 4] [Mas kaunti kumportableng] 2 00:00:02,000 --> 00:00:04,000 [Nate Hardison] [Harvard University] 3 00:00:04,000 --> 00:00:07,000 [Ito ay CS50.] [CS50.TV] 4 00:00:07,000 --> 00:00:10,000 >> Lahat ng karapatan, maligayang pagdating pabalik sa seksyon. 5 00:00:10,000 --> 00:00:13,000 Sa seksyon na ito linggo kami ay pagpunta sa gawin ang ilang mga bagay. 6 00:00:13,000 --> 00:00:17,000 Kami ay pagpunta sa unang Problema ng pagbabalik-tanaw ng Set 2, 7 00:00:17,000 --> 00:00:20,000 na ang Caesar at Vigenère set problema. 8 00:00:20,000 --> 00:00:23,000 At pagkatapos kami ay pagpunta sa sumisid sa Quiz 0 pagsusuri 9 00:00:23,000 --> 00:00:26,000 at gastusin ng kaunting oras na recapping kung ano ang namin ang uusapang tungkol sa 10 00:00:26,000 --> 00:00:30,000 sa bawat isa ng aralin sa ngayon, at makikita din namin gawin ang ilang mga problema 11 00:00:30,000 --> 00:00:32,000 mula sa pagsusulit ng nakaraang taon. 12 00:00:32,000 --> 00:00:36,000 Na paraan ka guys ay may isang mahusay na paraan upang maghanda para sa. 13 00:00:36,000 --> 00:00:40,000 >> Upang magsimula, ko na booted ng ilang mga mahusay na solusyon 14 00:00:40,000 --> 00:00:45,000 para sa nakaraang hanay ng problema, Problema Set 2, sa puwang na ito. 15 00:00:45,000 --> 00:00:48,000 Kung ikaw guys lahat pindutin ang link na ito, 16 00:00:48,000 --> 00:00:53,000 at kung ikaw ay i-click ang aking pangalan at mag-click sa aking unang rebisyon 17 00:00:53,000 --> 00:00:56,000 makikita mo ang caesar.c, na eksakto kung ano ang Naghahanap ako sa. 18 00:00:56,000 --> 00:01:00,000 Natin makipag-usap tungkol sa talagang mabilis. 19 00:01:00,000 --> 00:01:02,000 Ito ay isang sample na solusyon. 20 00:01:02,000 --> 00:01:05,000 Na ito ay hindi nangangahulugang ang perpektong solusyon. 21 00:01:05,000 --> 00:01:08,000 Mayroong maraming iba't ibang mga paraan upang isulat ito, 22 00:01:08,000 --> 00:01:10,000 ngunit may ilang mga bagay na Nais kong upang i-highlight 23 00:01:10,000 --> 00:01:13,000 Nakita ko bilang ako ay grading, karaniwang pagkakamali na sa tingin ko 24 00:01:13,000 --> 00:01:18,000 solusyon na ito ay ang isang magandang trabaho ng handling. 25 00:01:18,000 --> 00:01:22,000 >> Ang una ay pagkakaroon ng ilang mga uri ng mga komento ng header sa tuktok. 26 00:01:22,000 --> 00:01:25,000 Sa linya 1 sa pamamagitan ng 7 mong makita ang mga detalye, 27 00:01:25,000 --> 00:01:28,000 kung ano ang eksaktong Ang program na ito ay ginagawa. 28 00:01:28,000 --> 00:01:32,000 Isang magandang karaniwang kasanayan kapag sumusulat ka C code 29 00:01:32,000 --> 00:01:35,000 hindi alintana kung ang iyong programa ay nilalaman sa loob ng isang solong file o 30 00:01:35,000 --> 00:01:38,000 kung ito ay nahati sa maramihang mga file ay upang magkaroon ng ilang mga uri ng 31 00:01:38,000 --> 00:01:40,000 orienting komento sa tuktok. 32 00:01:40,000 --> 00:01:43,000 Din ito para sa mga tao na pumunta at isulat ang code sa tunay na mundo. 33 00:01:43,000 --> 00:01:47,000 Ito ay kung saan makikita nila ilagay ang impormasyon ng copyright. 34 00:01:47,000 --> 00:01:50,000 Sa ibaba ay ang # Kabilang. 35 00:01:50,000 --> 00:01:55,000 Sa linya 16 ito # tukuyin, na magpapadala kami bumalik sa loob lamang ng kaunti. 36 00:01:55,000 --> 00:01:59,000 At pagkatapos ay sa sandaling ang function ay nagsisimula, sabay-sabay pangunahing pagsisimula, 37 00:01:59,000 --> 00:02:03,000 dahil ang programang ito ay nakapaloob sa isang solong function na 38 00:02:03,000 --> 00:02:09,000 ang unang bagay na mangyayari at ito ay napaka pansalitain at tipikal ng isang programa sa C 39 00:02:09,000 --> 00:02:14,000 na kinakailangan sa linya ng command argumento-ay na ito agad sumusuri 40 00:02:14,000 --> 00:02:18,000 >> para sa bilang ng argument, argc. 41 00:02:18,000 --> 00:02:24,000 Dito mismo namin makita ang programang ito ay umaasa 2 argumento eksakto. 42 00:02:24,000 --> 00:02:27,000 Tandaan may na unang argumento na ang espesyal na 43 00:02:27,000 --> 00:02:29,000 na laging ang pangalan ng programa na magpatakbo ng, 44 00:02:29,000 --> 00:02:31,000 ang pangalan ng file ng executable. 45 00:02:31,000 --> 00:02:36,000 At kaya kung ano ang ginagawa ay pinipigilan ang mga user mula sa pagtakbo sa programa 46 00:02:36,000 --> 00:02:42,000 may mas marami o mas kaunting mga argumento. 47 00:02:42,000 --> 00:02:44,000 Ang dahilan na gusto naming mag-check para sa karapatang ito ang layo ay dahil 48 00:02:44,000 --> 00:02:52,000 hindi tunay na namin ma-access ito argv array dito mismo mapagkakatiwlaan 49 00:02:52,000 --> 00:02:55,000 hanggang nasuri namin upang makita kung paano malaki ito ay. 50 00:02:55,000 --> 00:02:58,000 >> Isa ng mga karaniwang mga error na nakita ko ay mga tao ay agad pumunta sa 51 00:02:58,000 --> 00:03:01,000 at grab argv [1]. 52 00:03:01,000 --> 00:03:06,000 Gusto nila grab ang susi argumento ng array at ang isang i-check sa dito, 53 00:03:06,000 --> 00:03:11,000 at pagkatapos ay gusto nilang gawin ang mga pagsubok para sa argc pati na rin sa susunod na pagsubok, 54 00:03:11,000 --> 00:03:16,000 man o hindi ang unang argumento ay sa katunayan ng isang integer sa parehong panahon, 55 00:03:16,000 --> 00:03:20,000 at na hindi gumagana dahil sa kaso na walang mga argumento ibinigay 56 00:03:20,000 --> 00:03:26,000 makikita mo ang daklot ng isang argumento na ay hindi doon o sinusubukang i-grab ang isa na ay hindi doon. 57 00:03:26,000 --> 00:03:29,000 >> Ang iba pang mga malaking bagay na dapat mong mapansin ay ang 58 00:03:29,000 --> 00:03:32,000 palagi mong nais na i-print ang ilang mga uri ng mga kapaki-pakinabang na mensahe ng error 59 00:03:32,000 --> 00:03:34,000 sa ang user sa orient sa kanila. 60 00:03:34,000 --> 00:03:37,000 Ako ba na ikaw ay ang lahat ng run programa kung saan ang lahat ng isang biglaang ito nagka-crash, 61 00:03:37,000 --> 00:03:41,000 at kumuha ng mga ito katawa-tawa na maliit na dialog na nagpa-pop up at sabi 62 00:03:41,000 --> 00:03:44,000 isang bagay na horribly misteriyoso at siguro ay nagbibigay sa iyo ng isang error code o isang bagay tulad na 63 00:03:44,000 --> 00:03:47,000 na ginagawang walang kahulugan. 64 00:03:47,000 --> 00:03:50,000 Ito ay kung saan gusto mo talagang upang magbigay ng isang bagay na kapaki-pakinabang 65 00:03:50,000 --> 00:03:54,000 at naka-target sa gumagamit sa gayon ay kapag nagpatakbo sila sila pumunta "Oh," mukha palm. 66 00:03:54,000 --> 00:03:58,000 "Alam ko nang eksakto kung ano ang gagawin. Kong malaman kung paano ayusin ito." 67 00:03:58,000 --> 00:04:01,000 >> Kung hindi mo i-print ang isang mensahe, pagkatapos mong magtapos sa aktwal 68 00:04:01,000 --> 00:04:04,000 umaalis ang user upang pumunta suriin ang iyong source code 69 00:04:04,000 --> 00:04:07,000 upang malaman kung anong nangyaring mali. 70 00:04:07,000 --> 00:04:11,000 Mayroon ding ilang beses na kailangan mong gamitin ang iba't ibang mga code ng error. 71 00:04:11,000 --> 00:04:14,000 Dito lang namin ginagamit upang sabihin nagkaroon ng isang error, 72 00:04:14,000 --> 00:04:16,000 nagkaroon ng error, nagkaroon ng isang error. 73 00:04:16,000 --> 00:04:20,000 Mas malaking programa, madalas ang mga programa na tinatawag na sa pamamagitan ng iba pang mga programa, 74 00:04:20,000 --> 00:04:25,000 ay magbabalik ng ilang uri ng mga espesyal na mga code ng error sa iba't ibang mga sitwasyon 75 00:04:25,000 --> 00:04:28,000 sa programa na makipag-usap kung ano ang gagawin mo kung hindi man 76 00:04:28,000 --> 00:04:32,000 lamang gumamit ng isang magaling Ingles na mensahe para sa. 77 00:04:32,000 --> 00:04:35,000 Cool. 78 00:04:35,000 --> 00:04:37,000 Habang nagtatrabaho kami pababa, maaari mong makita ang namin hilahin ang key out. 79 00:04:37,000 --> 00:04:40,000 Subukan ang namin upang makita kung ang mga key na umaangkop. 80 00:04:40,000 --> 00:04:42,000 Makuha namin ang isang mensahe mula sa user. 81 00:04:42,000 --> 00:04:46,000 Ang dahilan na gawin namin ito sa habang loop-at ito ay isang bagay na namin masaklawan 82 00:04:46,000 --> 00:04:50,000 sa ilang sandali ngunit ito lumiliko out na kung nag-type ka kontrol D 83 00:04:50,000 --> 00:04:54,000 kapag kang makakuha ng GetString na prompt sa terminal 84 00:04:54,000 --> 00:04:59,000 kung ano na aktwal na ginagawa ito ay nagpapadala ng isang espesyal na character 85 00:04:59,000 --> 00:05:01,000 sa programa. 86 00:05:01,000 --> 00:05:05,000 Ito ay tinatawag na ang maliit o sa dulo ng file na character. 87 00:05:05,000 --> 00:05:08,000 At sa kasong iyon, ang aming mensahe string null, 88 00:05:08,000 --> 00:05:14,000 kaya ito ay hindi isang bagay na namin naka-check para sa problema ang mismong. 89 00:05:14,000 --> 00:05:17,000 >> Ngunit bilang pumunta kami sa, ngayon na kami nagsimula upang makipag-usap tungkol sa mga payo 90 00:05:17,000 --> 00:05:21,000 at dynamic na paglalaan ng memory sa magbunton, 91 00:05:21,000 --> 00:05:25,000 check para sa null kapag mayroon kang isang function na maaari 92 00:05:25,000 --> 00:05:30,000 bumalik null ng isang halaga na ay isang bagay na makikita mo gusto upang makakuha ng sa ugali ng paggawa. 93 00:05:30,000 --> 00:05:33,000 Ito ay dito lalo na para sa paglalarawan. 94 00:05:33,000 --> 00:05:36,000 Ngunit kapag mong makita ang GetString sa hinaharap, 95 00:05:36,000 --> 00:05:41,000 ito mula sa Problema Itakda 4 sa, makikita mo nais upang panatilihin ito sa isip. 96 00:05:41,000 --> 00:05:44,000 Muli, ito ay hindi isang isyu para sa Problema Set 3 alinman dahil hindi namin ay sakop pa ito. 97 00:05:44,000 --> 00:05:53,000 Panghuli, makuha namin ang bahaging ito kung saan nakukuha namin sa pangunahing loop ng pag-encrypt, 98 00:05:53,000 --> 00:05:57,000 at may ilang mga bagay na nangyayari sa dito. 99 00:05:57,000 --> 00:06:02,000 Una, kami ay umulit sa ibabaw ng buong string ng mensahe mismo. 100 00:06:02,000 --> 00:06:07,000 Narito namin iningatan ang strlen tawag sa kundisyon, 101 00:06:07,000 --> 00:06:12,000 kung saan ang isang bilang ng mga tulis ang ay hindi isang mahusay na paraan upang pumunta. 102 00:06:12,000 --> 00:06:15,000 Ito lumiliko out sa kasong ito ring hindi mahusay, 103 00:06:15,000 --> 00:06:20,000 bahagyang dahil namin ang pagbabago ng nilalaman ng mensahe mismo 104 00:06:20,000 --> 00:06:27,000 sa loob ng loop, kaya kung kami ay may isang mensahe na 10 character ang haba, 105 00:06:27,000 --> 00:06:32,000 sa unang pagkakataon na sisimulan namin na para sa loop strlen ay magbabalik kung ano? 106 00:06:32,000 --> 00:06:35,000 10. 107 00:06:35,000 --> 00:06:40,000 >> Ngunit kung namin pagkatapos ay baguhin ang mensahe, sinasabi naming baguhin ang ika-5 ng character nito, 108 00:06:40,000 --> 00:06:46,000 at magtapon namin sa isang character \ 0 sa ika-5 na posisyon, 109 00:06:46,000 --> 00:06:49,000 sa isang kasunod na pag-ulit strlen (mensahe) ay hindi bumalik kung ano ang ginawa 110 00:06:49,000 --> 00:06:52,000 ang unang pagkakataon namin iterated, 111 00:06:52,000 --> 00:06:56,000 ngunit ito ay sa halip bumalik ng 5 dahil threw namin sa Terminator na null, 112 00:06:56,000 --> 00:06:59,000 at ang haba ng string ay tinukoy 113 00:06:59,000 --> 00:07:03,000 ng posisyon na \ 0. 114 00:07:03,000 --> 00:07:09,000 Sa kasong ito, ito ay isang mahusay na paraan upang pumunta dahil kami ay pagbabago ito sa lugar. 115 00:07:09,000 --> 00:07:13,000 Ngunit napansin mo na ito ay talagang nakakagulat na simpleng upang i-encrypt 116 00:07:13,000 --> 00:07:16,000 kung maaari kang makakuha ng matematika ang tamang. 117 00:07:16,000 --> 00:07:19,000 Ang tanging kinakailangan ay upang suriin kung o hindi ang sulat na tumitingin ka sa 118 00:07:19,000 --> 00:07:21,000 ay uppercase o lowercase. 119 00:07:21,000 --> 00:07:24,000 >> Ang dahilan lamang namin upang suriin para sa at hindi namin upang tingnan ang mga 120 00:07:24,000 --> 00:07:27,000 ang kaso alpha ay dahil 121 00:07:27,000 --> 00:07:30,000 kung ang isang character na uppercase o kung ito ay lowercase 122 00:07:30,000 --> 00:07:33,000 pagkatapos ito ay talagang isang alpabetiko character, 123 00:07:33,000 --> 00:07:38,000 dahil hindi namin uppercase at lowercase na digit. 124 00:07:38,000 --> 00:07:41,000 Ang iba pang bagay na gawin-at kami na ito ay isang maliit na nakakalito 125 00:07:41,000 --> 00:07:45,000 ay namin na-modify ang standard Caesar cipher formula 126 00:07:45,000 --> 00:07:49,000 na aming ibinigay sa detalye ng hanay ng problema. 127 00:07:49,000 --> 00:07:52,000 Ano ang iba dito na namin bawas 128 00:07:52,000 --> 00:07:58,000 sa uppercase na kabisera ng kaso sa A, at pagkatapos idinagdag namin ang kabisera A 129 00:07:58,000 --> 00:08:02,000 -back sa sa dulo. 130 00:08:02,000 --> 00:08:05,000 >> Alam ko ng ilang mo ginawa ito sa iyong code. 131 00:08:05,000 --> 00:08:09,000 Ibig mo gawin ito sa iyong mga pagsusumite? 132 00:08:09,000 --> 00:08:13,000 Ginawa mo ito. Maaari mong ipaliwanag kung ano ito, ang Sahb? 133 00:08:13,000 --> 00:08:18,000 Sa pamamagitan ng pagbabawas ito, dahil ginawa mo ng mod tama matapos itong, 134 00:08:18,000 --> 00:08:21,000 mayroon kang upang dalhin ito, upang ang mga paraan kung paano ka [ubo] posisyon. 135 00:08:21,000 --> 00:08:25,000 At pagkatapos ay sa pamamagitan ng pagdagdag nito muli mamaya Paglipat sa ibabaw ng isa na nais. 136 00:08:25,000 --> 00:08:27,000 Oo, eksakto. 137 00:08:27,000 --> 00:08:32,000 Ano Sahb sinabi ay na kapag gusto naming upang magdagdag ng 138 00:08:32,000 --> 00:08:36,000 ang aming mga mensahe at ang aming key sama-sama 139 00:08:36,000 --> 00:08:42,000 at pagkatapos mod, mod na ng mga NUM_LETTERS, 140 00:08:42,000 --> 00:08:50,000 kung hindi namin masukat ang aming mensahe sa naaangkop 0 sa 25 hanay una, 141 00:08:50,000 --> 00:08:54,000 maaari naming ng isang talagang kakaiba numero 142 00:08:54,000 --> 00:08:59,000 dahil ang mga halaga na kaming naghahanap sa kapag tinitingnan namin ang mensahe [i], 143 00:08:59,000 --> 00:09:03,000 kapag tinitingnan namin sa ith character ng aming mga plain-text message, 144 00:09:03,000 --> 00:09:08,000 ang halaga ng isang lugar sa 65-122 hanay 145 00:09:08,000 --> 00:09:13,000 batay sa ASCII halaga para sa uppercase A sa pamamagitan ng lowercase z. 146 00:09:13,000 --> 00:09:18,000 At kaya kapag mod namin ang mga ito sa pamamagitan ng 26 o sa pamamagitan ng mga NUM_LETTERS, 147 00:09:18,000 --> 00:09:23,000 dahil na aming # tukuyin sa kanang tuktok hanggang dito, 148 00:09:23,000 --> 00:09:28,000 na upang bigyan kami ng isang halaga na sa 0 sa 25 hanay, 149 00:09:28,000 --> 00:09:30,000 at kailangan namin ng paraan pagkatapos masukat na-back up 150 00:09:30,000 --> 00:09:32,000 at kumuha ng mga ito sa naaangkop na hanay ng ASCII. 151 00:09:32,000 --> 00:09:36,000 Ang pinakamadaling paraan upang gawin na lamang masukat ang lahat ng pababa 152 00:09:36,000 --> 00:09:39,000 sa 0 sa 25 hanay upang magsimula sa, 153 00:09:39,000 --> 00:09:43,000 at pagkatapos shift ang lahat ng bumalik sa dulo. 154 00:09:43,000 --> 00:09:46,000 >> Isa pang karaniwang mga error na nakita ko mga tao na makatagpo ng mga na 155 00:09:46,000 --> 00:09:50,000 kung hindi mo aktwal na gawin ito scaling kaagad 156 00:09:50,000 --> 00:09:53,000 at idinagdag mo mensahe at key at idagdag mo ang mga ito, sabihin nating, 157 00:09:53,000 --> 00:09:58,000 sa isang pansamantalang trabaho na variable, ang problema sa na 158 00:09:58,000 --> 00:10:01,000 dahil mensahe [i] ay may malaking bilang upang magsimula sa- 159 00:10:01,000 --> 00:10:05,000 tandaan ito ay hindi bababa sa 65 kung ang isang uppercase character na- 160 00:10:05,000 --> 00:10:09,000 kung mayroon kang isang malaking key, sabihin nating, isang bagay tulad ng 100, 161 00:10:09,000 --> 00:10:13,000 at magdagdag ng mga 2 kasama sa isang sign na magpasinda ka pagpunta upang makakuha ng isang overflow. 162 00:10:13,000 --> 00:10:17,000 Ka pagpunta upang makakuha ng isang halaga na mas malaki kaysa sa 127, 163 00:10:17,000 --> 00:10:22,000 kung saan ay ang pinakamalaking halaga na ang isang pansamantalang trabaho variable ay maaaring magkaroon. 164 00:10:22,000 --> 00:10:26,000 Muli, na ang dahilan kung bakit gusto mo gusto gawin na uri ng bagay upang magsimula sa. 165 00:10:26,000 --> 00:10:29,000 Ang ilang mga tao ay nakuha sa buong kasong iyon sa pamamagitan ng paggawa ng kung tao at sa pagsubok 166 00:10:29,000 --> 00:10:33,000 upang makita kung gagawin ito overflow bago gawin na, 167 00:10:33,000 --> 00:10:36,000 ngunit sa ganitong paraan ay nakakakuha ng buong. 168 00:10:36,000 --> 00:10:40,000 At pagkatapos ito solusyon namin print mo ang buong string sa pinakadulo. 169 00:10:40,000 --> 00:10:45,000 Ibang tao naka-print ang isang karakter sa isang pagkakataon. Parehong mga kahanga-hangang. 170 00:10:45,000 --> 00:10:51,000 Sa puntong ito, gawin ka guys ay may anumang mga katanungan, anumang mga komento tungkol dito? 171 00:10:51,000 --> 00:10:56,000 Bagay na gusto mo, ang mga bagay na hindi mo gusto? 172 00:10:56,000 --> 00:10:58,000 >> Mayroon akong isang tanong. 173 00:10:58,000 --> 00:11:01,000 Siguro Naiwan ako ito sa panahon ng iyong paliwanag, ngunit kung paano ang program na ito 174 00:11:01,000 --> 00:11:07,000 laktawan ang mga puwang para sa pagkonekta ng susi sa ang haba ng teksto? 175 00:11:07,000 --> 00:11:10,000 Ito lamang ang Caesar cipher. >> Oh, paumanhin, oo. 176 00:11:10,000 --> 00:11:13,000 Oo, makikita namin makita na. 177 00:11:13,000 --> 00:11:16,000 Sa cipher Caesar nakuha namin sa paligid na dahil 178 00:11:16,000 --> 00:11:18,000 lamang namin Binaligtad nang character. 179 00:11:18,000 --> 00:11:27,000 Lamang kami Pinaikot mga ito kung sila ay uppercase o lowercase. 180 00:11:27,000 --> 00:11:32,000 Mong guys pakiramdam medyo magandang tungkol sa? 181 00:11:32,000 --> 00:11:34,000 Huwag mag-atubiling upang kopyahin ito sa bahay, dalhin ito, 182 00:11:34,000 --> 00:11:37,000 ihambing ito sa kung ano ang iyong guys sinulat ni. 183 00:11:37,000 --> 00:11:42,000 Talagang huwag mag-atubiling upang magpadala ng mga katanungan tungkol dito masyadong. 184 00:11:42,000 --> 00:11:46,000 At muli, Napagtanto na nagtatakda ng layunin sa dito sa iyong problema 185 00:11:46,000 --> 00:11:50,000 ay hindi upang makakuha ka guys sumulat ng perpektong code para sa iyong mga set ng problema. 186 00:11:50,000 --> 00:11:57,000 Ang isang pag-aaral na karanasan. Oo. 187 00:11:57,000 --> 00:12:01,000 >> Bumalik sa Do habang loop, kung ito ay katumbas null, 188 00:12:01,000 --> 00:12:06,000 kaya null lamang ay nangangahulugan ng walang, lang nila pindutin ang enter? 189 00:12:06,000 --> 00:12:12,000 Null ay isang espesyal na halaga ng pointer, 190 00:12:12,000 --> 00:12:17,000 at ginagamit namin null kapag gusto naming sabihin 191 00:12:17,000 --> 00:12:23,000 mayroon kaming isang pointer variable na tumuturo sa walang. 192 00:12:23,000 --> 00:12:28,000 At kaya karaniwang ito ay nangangahulugan na ito variable, ang mensaheng ito variable 193 00:12:28,000 --> 00:12:35,000 ay walang laman, at dito, dahil ginagamit namin ang CS50 mga espesyal na uri ng string, 194 00:12:35,000 --> 00:12:37,000 ano ang CS50 uri ng string? 195 00:12:37,000 --> 00:12:42,000 Nakita mo ba kung ano ang ito ay kapag nakuha ng David pabalik ng hood sa panayam? 196 00:12:42,000 --> 00:12:44,000 Ito ay isang funky-isang pointer, i-right? 197 00:12:44,000 --> 00:12:48,000 Okay, oo. >> Ito ang isang pansamantalang trabaho *. 198 00:12:48,000 --> 00:12:52,000 At kaya talagang maaari naming palitan ang 199 00:12:52,000 --> 00:12:56,000 dito mismo sa magpasinda * mensahe, 200 00:12:56,000 --> 00:13:04,000 at kaya ang GetString function na, kung hindi ito matagumpay na makakuha ng isang string mula sa gumagamit, 201 00:13:04,000 --> 00:13:08,000 hindi ito ma-parse ang isang string, at isang kaso kung saan hindi ito ma-parse ang isang string 202 00:13:08,000 --> 00:13:11,000 kung gumagamit ang mga uri ng dulo ng file na character, ang kontrol D, 203 00:13:11,000 --> 00:13:17,000 na hindi isang bagay na karaniwan mong gawin, ngunit kung iyon ang mangyayari 204 00:13:17,000 --> 00:13:20,000 pagkatapos ay ang function ay ibalik ang null halaga bilang isang paraan ng pagsabi 205 00:13:20,000 --> 00:13:23,000 "Uy, hindi ko makakuha ng isang string." 206 00:13:23,000 --> 00:13:27,000 Kung ano ang mangyayari kung hindi namin ilagay ang mensahe = null, 207 00:13:27,000 --> 00:13:30,000 kung saan ay isang bagay na hindi namin ay ginagawa pa? 208 00:13:30,000 --> 00:13:32,000 Bakit na may problema dito? 209 00:13:32,000 --> 00:13:38,000 Dahil alam ko na usapan natin ng kaunti sa panayam tungkol sa mga paglabas ng memorya. 210 00:13:38,000 --> 00:13:42,000 Oo, sabihin gawin iyon, at sabihin makita kung ano ang mangyayari. 211 00:13:42,000 --> 00:13:44,000 >> Ng tanong Basil ay ano ang mangyayari kung hindi namin aktwal mayroon 212 00:13:44,000 --> 00:13:48,000 mensaheng ito = null test? 213 00:13:48,000 --> 00:13:51,000 Sabihin mag-scroll pataas sa tuktok. 214 00:13:51,000 --> 00:13:53,000 Mong guys ay maaaring magkomento ito. 215 00:13:53,000 --> 00:13:55,000 Aktwal na, makikita ko bang i-save ang mga ito sa isang rebisyon. 216 00:13:55,000 --> 00:13:58,000 Rebisyon 3. 217 00:13:58,000 --> 00:14:02,000 Ano ang mong gawin upang patakbuhin ang program na ito ay magkakaroon ka ng i-click ang icon na gear up dito, 218 00:14:02,000 --> 00:14:04,000 at magkakaroon ka upang magdagdag ng isang argumento dito. 219 00:14:04,000 --> 00:14:10,000 Magkakaroon ka upang bigyan ito ang susi argumento dahil gusto naming upang pumasa sa isang argument ng linya ng command. 220 00:14:10,000 --> 00:14:13,000 Narito ako pagpunta upang bigyan ito ang bilang 3. Gusto ko 3. 221 00:14:13,000 --> 00:14:19,000 Ngayon-zoom bumalik out, ang pagpapatakbo ng programa. 222 00:14:19,000 --> 00:14:24,000 Ito ay tumatakbo, kino-compile, pagbuo. 223 00:14:24,000 --> 00:14:27,000 Narito kami. Ito ay naghihintay na ma-prompt. 224 00:14:27,000 --> 00:14:33,000 Kung type ko sa isang bagay tulad ng halo-kung saan ay na pumunta? 225 00:14:33,000 --> 00:14:38,000 Oh, ang aking programa Masyadong matagal na tumakbo. Ako jawing para sa masyadong mahaba. 226 00:14:38,000 --> 00:14:40,000 Dito napupunta ito. 227 00:14:40,000 --> 00:14:43,000 Ngayon type ko sa halo. 228 00:14:43,000 --> 00:14:46,000 Nakita namin na ito ine-encrypt naaangkop. 229 00:14:46,000 --> 00:14:52,000 Ngayon kung ano ang mangyayari kung gagawin namin prompt GetString upang bumalik null? 230 00:14:52,000 --> 00:14:57,000 Tandaan, sinabi ko na ginawa namin na sa pamamagitan ng pagpindot ng kontrol ng D sa parehong oras. 231 00:14:57,000 --> 00:14:59,000 Kukunin ko na mag-scroll dito. Susubukan naming patakbuhin itong muli. 232 00:14:59,000 --> 00:15:01,000 Gusali. May napupunta ito. 233 00:15:01,000 --> 00:15:04,000 Ngayon kapag ako ay pindutin ang kontrol D 234 00:15:04,000 --> 00:15:12,000 Nakatanggap ako ang linya na nagsasabing opt/sandbox50/bin/run.sh, Segmentation fault. 235 00:15:12,000 --> 00:15:15,000 Mo ba ang guys nakita na bago? 236 00:15:15,000 --> 00:15:17,000 >> [Mag-aaral] Bakit mayroong walang->> Paumanhin? 237 00:15:17,000 --> 00:15:20,000 [Mag-aaral] Bakit mayroong walang core dump sa kasong ito? 238 00:15:20,000 --> 00:15:26,000 Ang core dump ay ang tanong ay kung bakit may walang core dump dito? 239 00:15:26,000 --> 00:15:29,000 Ang tanong ay na maaaring may, ngunit ang core dump ay isang file 240 00:15:29,000 --> 00:15:31,000 na ay makakakuha ng naka-imbak sa hard drive. 241 00:15:31,000 --> 00:15:34,000 Sa kasong ito hindi namin pinagana ang lungkot core 242 00:15:34,000 --> 00:15:37,000 sa server run upang hindi namin na tao seg faulting 243 00:15:37,000 --> 00:15:40,000 at pagbuo tonelada ng mga lungkot ng core. 244 00:15:40,000 --> 00:15:46,000 Ngunit maaari kang makakuha ng isa. 245 00:15:46,000 --> 00:15:48,000 Core lungkot ang uri ng bagay na maaari madalas mong huwag paganahin, 246 00:15:48,000 --> 00:15:52,000 at kung minsan gawin mo. 247 00:15:52,000 --> 00:15:55,000 Ang segmentation fault, upang sagutin ang iyong tanong, Basil, 248 00:15:55,000 --> 00:16:00,000 ay nagsasabi na sinubukan naming i-access ng pointer 249 00:16:00,000 --> 00:16:05,000 na hindi nakatakda upang tumuro sa anumang bagay. 250 00:16:05,000 --> 00:16:09,000 Tandaan Binky sa video kapag Binky sinusubukan upang 251 00:16:09,000 --> 00:16:12,000 pumunta-access ng pointer na hindi na tumuturo sa anumang? 252 00:16:12,000 --> 00:16:16,000 Sa kasong ito hulaan ko technically pointer ay tumuturo sa isang bagay. 253 00:16:16,000 --> 00:16:20,000 Ito ay pagturo sa null, kung saan ay technically 0, 254 00:16:20,000 --> 00:16:25,000 ngunit ay tinukoy sa isang segment na hindi naa-access 255 00:16:25,000 --> 00:16:28,000 sa pamamagitan ng iyong programa, kaya mo makakuha ng segmentation fault 256 00:16:28,000 --> 00:16:31,000 dahil hindi mo ina-access memory na sa isang wastong segment 257 00:16:31,000 --> 00:16:38,000 tulad ng magbunton na segment o ang stack segment o ang data segment. 258 00:16:38,000 --> 00:16:40,000 Cool. 259 00:16:40,000 --> 00:16:48,000 Anumang higit pang mga katanungan tungkol sa Caesar? 260 00:16:48,000 --> 00:16:51,000 >> Natin lumipat sa. Tingnan natin sa Pagbabago 2 talagang mabilis. 261 00:16:51,000 --> 00:17:00,000 Na ang Vigenère. 262 00:17:00,000 --> 00:17:04,000 Dito sa Vigenère 263 00:17:04,000 --> 00:17:06,000 babagtasin namin ang isang ito medyo mabilis dahil, muli, 264 00:17:06,000 --> 00:17:10,000 Ay lubos na katulad ang Vigenère at Caesar. 265 00:17:10,000 --> 00:17:12,000 Header komento ay bago, 266 00:17:12,000 --> 00:17:17,000 # Tukuyin ay bago upang iwasan ang paggamit ng mga magic numero. 267 00:17:17,000 --> 00:17:21,000 Ang magaling na bagay ay sinasabi namin nais upang lumipat sa 268 00:17:21,000 --> 00:17:23,000 ng ibang alpabeto o isang bagay tulad na. 269 00:17:23,000 --> 00:17:26,000 Sa halip ng pagkakaroon upang pumunta nang manu-mano baguhin ang lahat ng mga 26 sa code 270 00:17:26,000 --> 00:17:30,000 maaari naming baguhin ito sa 27 o drop ito 271 00:17:30,000 --> 00:17:34,000 kung tayo ay gumagamit ng iba't ibang mga titik, iba't-ibang mga wika. 272 00:17:34,000 --> 00:17:38,000 Muli, hindi namin Mayroon ito check ang bilang ng argument, 273 00:17:38,000 --> 00:17:42,000 at talagang halos tumagal ito bilang isang template. 274 00:17:42,000 --> 00:17:46,000 Medyo magkano ang bawat programa na magsulat dapat magkaroon ng 275 00:17:46,000 --> 00:17:50,000 kung ito ay tumatagal ng linya ng command argumento ilang pagkakasunud-sunod ng mga linya 276 00:17:50,000 --> 00:17:55,000 na bumabasa ng tulad nito sa pinakadulo simula. 277 00:17:55,000 --> 00:17:59,000 Iyon ay isa ng ang unang pagsubok na katinuan na gusto mong gawin. 278 00:17:59,000 --> 00:18:03,000 >> Narito kung ano ang namin ginawa ay ginawa namin siguraduhin na 279 00:18:03,000 --> 00:18:06,000 keyword ay wasto, at na ang pangalawang tseke na ginawa namin. 280 00:18:06,000 --> 00:18:11,000 Pansinin muli na pinaghiwalay namin ito mula argc at 2. 281 00:18:11,000 --> 00:18:14,000 Tandaan na sa kasong ito ang isang bagay na nagkaroon kami gawin sa halip 282 00:18:14,000 --> 00:18:18,000 ng paggamit ng upang i gusto naming patunayan ang buong string, 283 00:18:18,000 --> 00:18:21,000 at upang gawin na iyong aktwal na upang pumunta ng character sa pamamagitan ng karakter 284 00:18:21,000 --> 00:18:23,000 sa ibabaw ng string. 285 00:18:23,000 --> 00:18:29,000 Walang mahusay na paraan upang tawagan ang isang bagay dito 286 00:18:29,000 --> 00:18:31,000 dahil kahit, halimbawa, ay i bumalik 0 287 00:18:31,000 --> 00:18:37,000 kung hindi ito ma-parse ang isang integer, kaya na ay hindi gumana kahit. 288 00:18:37,000 --> 00:18:42,000 Muli, magaling mensahe na nagsasabi sa user kung ano ang nangyari. 289 00:18:42,000 --> 00:18:45,000 Pagkatapos dito, muli, kami ring pangasiwaan ang ang kaso kung saan 290 00:18:45,000 --> 00:18:50,000 ang mga uri ng user sa isang control D random na character. 291 00:18:50,000 --> 00:18:54,000 >> At pagkatapos Charlotte ay isang tanong mas maaga tungkol sa kung paano pamahalaan namin upang laktawan ang mga puwang 292 00:18:54,000 --> 00:18:57,000 dito sa aming string. 293 00:18:57,000 --> 00:19:00,000 Ito ay uri ng katulad sa kung ano ang ginawa namin sa mga programang Myspace 294 00:19:00,000 --> 00:19:04,000 na ginawa namin sa seksyon, at ang paraan na ito nagtrabaho 295 00:19:04,000 --> 00:19:08,000 ay na sinusubaybayan namin ang bilang ng mga titik na gusto namin nakikita. 296 00:19:08,000 --> 00:19:13,000 Bilang namin lumakad sa ibabaw ng string ng mensahe, bilang namin lumakad sa paglipas ng character sa pamamagitan ng character, 297 00:19:13,000 --> 00:19:16,000 sinusubaybayan namin ang index bilang bahagi ng aming para sa loop, at pagkatapos ay sinusubaybayan din namin 298 00:19:16,000 --> 00:19:21,000 ang bilang ng mga titik, kaya walang mga espesyal na character, non-digit, ang di-puting espasyo 299 00:19:21,000 --> 00:19:27,000 na gusto namin nakikita sa hiwalay na variable. 300 00:19:27,000 --> 00:19:33,000 At pagkatapos ay ang solusyong ito binabago ang susi 301 00:19:33,000 --> 00:19:41,000 upang makakuha ng isang aktwal na key integer, at ginagawa nito sa mabilisang, 302 00:19:41,000 --> 00:19:47,000 kanan bago ito pagkatapos ay napupunta upang i-encrypt ang aktwal na character na mensahe. 303 00:19:47,000 --> 00:19:50,000 Mayroong ilang mga solusyon na ay perpektong mahusay na masyadong 304 00:19:50,000 --> 00:19:58,000 na baguhin ang key kapag ng pagsubok para sa bisa ang susi. 305 00:19:58,000 --> 00:20:01,000 Bilang karagdagan sa tinitiyak na ang character at ang keyword 306 00:20:01,000 --> 00:20:05,000 ay isang pang-abakada character na ito din ay naka-on na sa isang integer 307 00:20:05,000 --> 00:20:13,000 sa 0 sa 25 hanay upang pagkatapos ay laktawan ang hindi upang gawin iyon sa paglaon sa ito para sa loop. 308 00:20:13,000 --> 00:20:18,000 Muli, makikita mo dito talaga ito ang eksaktong parehong code 309 00:20:18,000 --> 00:20:22,000 na ginamit namin sa Caesar sa puntong ito. 310 00:20:22,000 --> 00:20:25,000 Ginagawa mo ang eksaktong parehong bagay, kaya ang tunay na nanlilinlang ay ang pag-uunawa 311 00:20:25,000 --> 00:20:30,000 kung paano i-on ang keyword sa isang integer. 312 00:20:30,000 --> 00:20:35,000 >> Isang bagay na ginawa namin dito na ng kaunti siksik 313 00:20:35,000 --> 00:20:39,000 ay paulit-ulit na namin ito parirala, hulaan ko maaari kang tumawag ito, 314 00:20:39,000 --> 00:20:45,000 3 magkakahiwalay na beses sa linya 58, 59, at 61. 315 00:20:45,000 --> 00:20:52,000 Maaari isang tao ipaliwanag kung ano ang eksaktong parirala na ito ay hindi? 316 00:20:52,000 --> 00:20:55,000 Ito ay access sa isang character, tulad ng sinabi mo. 317 00:20:55,000 --> 00:20:59,000 Oo, [hindi marinig] isang character sa keyword, 318 00:20:59,000 --> 00:21:04,000 at kaya ang bilang ng mga titik na nakikita dahil lamang nagpapalipat-lipat ka sa kahabaan ng 319 00:21:04,000 --> 00:21:06,000 keyword kapag nakita mo ang sulat, 320 00:21:06,000 --> 00:21:10,000 kaya na pagpunta upang epektibong laktawan ang mga mga puwang at bagay-bagay tulad na. 321 00:21:10,000 --> 00:21:12,000 Oo, eksakto. 322 00:21:12,000 --> 00:21:16,000 At pagkatapos ay sa sandaling iyong nakita blangko ang keyword mo lang mod upang ilipat pabalik sa paligid. 323 00:21:16,000 --> 00:21:18,000 Eksakto. Iyon ay isang perpektong paliwanag. 324 00:21:18,000 --> 00:21:23,000 Ano Kevin sinabi na gusto naming i-index sa keyword. 325 00:21:23,000 --> 00:21:28,000 Gusto naming makuha ang num_letters_seen karakter, kung kalooban mo, 326 00:21:28,000 --> 00:21:32,000 ngunit kung num_letters_seen lumampas sa haba ng keyword, 327 00:21:32,000 --> 00:21:37,000 ang paraan na makuha namin pabalik sa ang naaangkop na hanay naming gamitin ang operator ng mod 328 00:21:37,000 --> 00:21:40,000 upang epektibong I-wrap sa paligid. 329 00:21:40,000 --> 00:21:43,000 Halimbawa, tulad ng sa maikling, ang aming keyword bacon, 330 00:21:43,000 --> 00:21:46,000 at 5 na titik ang haba. 331 00:21:46,000 --> 00:21:50,000 Ngunit nakakita kami ng 6 na mga titik sa aming plain text sa puntong ito 332 00:21:50,000 --> 00:21:52,000 at naka-encrypt 6. 333 00:21:52,000 --> 00:21:57,000 Kami ay humantong access sa num_letters_seen, 334 00:21:57,000 --> 00:22:00,000 na 6, mod ang haba ng keyword, 5, 335 00:22:00,000 --> 00:22:04,000 at sa gayon makuha namin ang 1, at kaya kung ano ang gagawin namin ay bibigyan namin 336 00:22:04,000 --> 00:22:14,000 ma-access ang unang karakter sa loob ng aming mga keyword sa puntong iyon. 337 00:22:14,000 --> 00:22:21,000 >> Lahat ng karapatan, anumang mga katanungan sa Vigenère 338 00:22:21,000 --> 00:22:26,000 bago namin ilipat sa? 339 00:22:26,000 --> 00:22:31,000 Mong guys pakiramdam medyo magandang tungkol sa? 340 00:22:31,000 --> 00:22:35,000 Mahusay, mahusay. 341 00:22:35,000 --> 00:22:38,000 Gusto kong tiyakin na iyong guys ay pagkuha ng pagkakataon upang makita ang code 342 00:22:38,000 --> 00:22:48,000 na sa tingin namin mukhang mabuti at magkakaroon ng pagkakataon upang matuto mula dito. 343 00:22:48,000 --> 00:22:53,000 Ito ay pagpunta sa huling namin ang paggamit ng mga puwang para sa oras, 344 00:22:53,000 --> 00:22:59,000 at kami ay pagpunta sa transition ngayon, at ako pagpunta sa pumunta sa cs50.net/lectures 345 00:22:59,000 --> 00:23:06,000 upang maaari naming gawin ng kaunting pagsusulit pagsusuri. 346 00:23:06,000 --> 00:23:10,000 Ang pinakamahusay na paraan tingin ko upang simulan ang paggawa ng pagsusulit pagsusuri 347 00:23:10,000 --> 00:23:15,000 ay darating sa pahinang ito ng aralin, mga cs50.net/lectures, 348 00:23:15,000 --> 00:23:20,000 at sa ilalim ng bawat isa ng ang mga heading ng linggo, kaya kung tiningnan ko dito sa Linggo 0, 349 00:23:20,000 --> 00:23:27,000 Nakikita ko na mayroon kami ng isang listahan ng mga paksa na aming sakop sa Linggo 0. 350 00:23:27,000 --> 00:23:31,000 >> Kung ang alinman sa mga paksang ito mukhang pamilyar sa iyo 351 00:23:31,000 --> 00:23:34,000 makikita mo talagang nais upang bumalik at saliksikinn ang mga tala panayam at posibleng 352 00:23:34,000 --> 00:23:39,000 kahit sagap sa pamamagitan ng aralin, panoorin muli ang mga ito kung nais mong 353 00:23:39,000 --> 00:23:44,000 upang makakuha ng isang pakiramdam para sa kung ano ang nangyayari sa bawat isa sa mga paksang iyon. 354 00:23:44,000 --> 00:23:49,000 Ako sabihin Bilang karagdagan sa taong ito sa mga cool na mga mapagkukunan namin Mayroon 355 00:23:49,000 --> 00:23:55,000 mga shorts na nilikha namin, at kung titingnan mo sa Linggo 0, 356 00:23:55,000 --> 00:24:00,000 hindi namin ang lahat ng mga paksa sakop, ngunit hindi namin Mayroon pa ilan sa mga ito, 357 00:24:00,000 --> 00:24:03,000 ang ilan sa mga trickier mga, kaya nanonood ng mga shorts na ito muli 358 00:24:03,000 --> 00:24:08,000 ay isang mahusay na paraan upang makakuha ng sa iyo upang mapabilis. 359 00:24:08,000 --> 00:24:15,000 Sa partikular, ako pagpunta sa ilagay sa isang plug para sa 3 sa ibaba, dahil ginawa ko ang mga. 360 00:24:15,000 --> 00:24:20,000 Ngunit kung ikaw ay struggling na may binary, bits, hex, na uri ng mga bagay-bagay, 361 00:24:20,000 --> 00:24:22,000 binary ay isang mahusay na lugar upang magsimula. 362 00:24:22,000 --> 00:24:25,000 ASCII ay isa pa na handa na upang tingnan masyadong. 363 00:24:25,000 --> 00:24:31,000 Maaari mo ring panoorin sa akin sa 1.5x speed kung ako pagpunta masyadong mabagal para sa iyo. 364 00:24:31,000 --> 00:24:35,000 Dahil ito ay pagsusuri, huwag mag-atubiling upang gawin iyon. 365 00:24:35,000 --> 00:24:40,000 >> Lamang upang simulan talagang mabilis, kami ay pagpunta sa pumunta sa pamamagitan ng ilang mga problema pagsusulit 366 00:24:40,000 --> 00:24:44,000 lang upang mabilis na pambati sa pamamagitan ng mga. 367 00:24:44,000 --> 00:24:50,000 Halimbawa, tingnan natin sa problema 16 Mayroon akong karapatan hanggang dito sa board. 368 00:24:50,000 --> 00:24:54,000 Mayroon kaming ang sumusunod na pagkalkula sa binary, 369 00:24:54,000 --> 00:24:56,000 at gusto naming upang ipakita ang anumang trabaho. 370 00:24:56,000 --> 00:24:59,000 Okay, ako pagpunta upang bigyan ito ng isang shot. 371 00:24:59,000 --> 00:25:01,000 Mong guys ay dapat sundin kasama ng papel, 372 00:25:01,000 --> 00:25:04,000 at gagawin namin ito talagang mabilis. 373 00:25:04,000 --> 00:25:06,000 Gusto naming gawin ang mga sumusunod na kalkulasyon sa binary. 374 00:25:06,000 --> 00:25:16,000 Mayroon akong 00,110,010. 375 00:25:16,000 --> 00:25:27,000 At ako pagpunta sa idagdag dito 00,110,010. 376 00:25:27,000 --> 00:25:30,000 Para sa matematika mga henyo sumusunod na kasama sa bahay, 377 00:25:30,000 --> 00:25:35,000 ito ay epektibong multiply sa pamamagitan ng 2. 378 00:25:35,000 --> 00:25:37,000 Magsimula tayo. 379 00:25:37,000 --> 00:25:39,000 Kami ay pagpunta sa sundin ang mga parehong algorithm ng karagdagan na ginagawa namin 380 00:25:39,000 --> 00:25:43,000 kapag nagdagdag kami ng mga decimal na numero nang sama-sama. 381 00:25:43,000 --> 00:25:46,000 Talagang pagkakaiba lamang dito ay na aming loop pabalik sa paligid 382 00:25:46,000 --> 00:25:51,000 sa sandaling kami ay may 1 + 1 sa halip na sa sandaling makuha namin sa 10. 383 00:25:51,000 --> 00:25:53,000 >> Kung simulan namin mula sa kanan, talagang mabilis, kung ano ang unang digit? 384 00:25:53,000 --> 00:25:55,000 [Mag-aaral] 0. >> [Nate H.] 0. 385 00:25:55,000 --> 00:25:58,000 Mahusay, ang ikalawang digit? 386 00:25:58,000 --> 00:26:00,000 [Mag-aaral] 1. 387 00:26:00,000 --> 00:26:02,000 [Nate H.] ba ito ng 1? 1 + 1 ay? 388 00:26:02,000 --> 00:26:04,000 [Mag-aaral] 10. 389 00:26:04,000 --> 00:26:08,000 [Nate H.] Mismong, kaya kung ano ang digit na isulat ko sa ilalim ng 2 mga pinagsama-sama? 390 00:26:08,000 --> 00:26:11,000 [Mag-aaral] 1, 0, o 0 at pagkatapos ay magtataglay ng 1. 391 00:26:11,000 --> 00:26:15,000 [Nate H.] 0 at magdala ng 1, eksakto. 392 00:26:15,000 --> 00:26:18,000 Susunod up ng isa, Basil, ikaw. 393 00:26:18,000 --> 00:26:20,000 Ano ang ikatlong? >> [Basil] 1. 394 00:26:20,000 --> 00:26:23,000 [Nate H.] 1, perpekto. Kevin? 395 00:26:23,000 --> 00:26:27,000 [Kevin] 0. >> [Nate H.] 0, Charlotte? 396 00:26:27,000 --> 00:26:30,000 [Charlotte] 0. >> [Nate H.] Oo, at ano ang gagawin ko? 397 00:26:30,000 --> 00:26:32,000 [Mag-aaral] Ang 1. 398 00:26:32,000 --> 00:26:34,000 [Nate H.] At ano ang gagawin ko? At pagkatapos ay dalhin ako sa 1. 399 00:26:34,000 --> 00:26:36,000 Perpekto, Sahb? >> [Sahb] Ngayon mayroon kang 1. 400 00:26:36,000 --> 00:26:40,000 [Nate H.] At ang gagawin ko kahit ano dito? 401 00:26:40,000 --> 00:26:43,000 [Sahb] Pagkatapos para sa susunod na mayroon kang 1 dahil ikaw madadala sa 1. 402 00:26:43,000 --> 00:26:49,000 [Nate H.] Mahusay, kaya dito maaari naming tapusin ito. 403 00:26:49,000 --> 00:26:51,000 Cool. 404 00:26:51,000 --> 00:26:54,000 [Mag-aaral] Sinusuportahan ba ng 0 + 0 = 0? 405 00:26:54,000 --> 00:26:56,000 0 + 0 = 0. 406 00:26:56,000 --> 00:27:01,000 1 + 1, tulad ng sinabi mo, ay 10, o 1, 0, sa halip. 407 00:27:01,000 --> 00:27:07,000 10 ay isang maling tawag dahil sa akin 10 ay nangangahulugan na ang bilang 10, 408 00:27:07,000 --> 00:27:12,000 at ang biro ng kung paano namin kumakatawan sa ito kapag kami ay sumusulat ito. 409 00:27:12,000 --> 00:27:20,000 Kumakatawan namin ang bilang 2 ng 1, 0, at ang bilang 10 ay bahagyang naiiba. 410 00:27:20,000 --> 00:27:23,000 >> Ano ang uri ng magaling tungkol sa binary na may talagang ay hindi na maraming 411 00:27:23,000 --> 00:27:25,000 kaso na kailangan mo upang matuto. 412 00:27:25,000 --> 00:27:30,000 Mayroong 0 + 0 = 0, 0 + 1 = 1, 413 00:27:30,000 --> 00:27:34,000 1 + 1 ay 0, at pagkatapos ay magdala ng 1, 414 00:27:34,000 --> 00:27:37,000 at pagkatapos ay maaari mong makita dito sa ikatlong haligi mula sa kanan 415 00:27:37,000 --> 00:27:40,000 nagkaroon kami ito 1, 1, at 1. 416 00:27:40,000 --> 00:27:43,000 At 1 + 1 + 1 ay isang 1, 417 00:27:43,000 --> 00:27:45,000 at dalhin mo sa isa pang 1. 418 00:27:45,000 --> 00:27:48,000 Kapag ikaw ay gumagawa ng binary karagdagan, medyo simple. 419 00:27:48,000 --> 00:27:51,000 Gusto ko ng ilang higit pa sa mga katinuan check sa sarili 420 00:27:51,000 --> 00:27:54,000 bago pumunta ka sa dahil ito ay 421 00:27:54,000 --> 00:28:00,000 marahil ng isang bagay na kailangan namin makita sa pagsusulit. 422 00:28:00,000 --> 00:28:03,000 Ngayon sabihin gawin ito sa tabi ng isa pati na rin. 423 00:28:03,000 --> 00:28:06,000 Natin ang problema 17. 424 00:28:06,000 --> 00:28:12,000 Kami ay pagpunta sa convert ang mga sumusunod na bilang ng binary sa decimal. 425 00:28:12,000 --> 00:28:28,000 Mayroon akong 10100111001. 426 00:28:28,000 --> 00:28:33,000 Tandaan sa binary video na ginawa ko 427 00:28:33,000 --> 00:28:36,000 Ako lumakad sa pamamagitan ng ilang mga halimbawa, at ako ay nagpakita kung paano 428 00:28:36,000 --> 00:28:41,000 lahat ay gumagana kapag ginagawa mo ito sa decimal. 429 00:28:41,000 --> 00:28:45,000 Kapag nagtatrabaho ka sa decimal representasyon tingin ko hindi namin 430 00:28:45,000 --> 00:28:48,000 sa puntong ito sa ating buhay upang matatas sa ito na 431 00:28:48,000 --> 00:28:53,000 medyo madali upang pagtakpan ang mga mekanika kung paano ito aktwal na gumagana. 432 00:28:53,000 --> 00:28:59,000 >> Ngunit upang gawin ang isang mabilis na pagbabalik-tanaw, kung mayroon akong ang bilang 137 433 00:28:59,000 --> 00:29:06,000 ito talaga ay nangangahulugan at muli, ito ay sa decimal representasyon- 434 00:29:06,000 --> 00:29:19,000 ang numero 137 sa decimal ay nangangahulugan na mayroon akong 1 x 100 + 3 x 10 + 7 x 1. 435 00:29:19,000 --> 00:29:22,000 Ito ay lahat ng mga naglalagi sa screen. 436 00:29:22,000 --> 00:29:29,000 At pagkatapos ay kung tiningnan mo ang mga numerong ito dito mismo, 437 00:29:29,000 --> 00:29:34,000 100, 10 at 1, makikita mo na hindi sila aktwal na ang lahat ng mga kapangyarihan ng 10. 438 00:29:34,000 --> 00:29:43,000 Mayroon akong 10 ², 10 ¹, at 10 sa zero. 439 00:29:43,000 --> 00:29:48,000 Mayroon kaming isang katulad na uri ng bagay sa binary, 440 00:29:48,000 --> 00:29:55,000 maliban na ang aming base, na tinatawag naming, ay 2 sa halip ng 10. 441 00:29:55,000 --> 00:29:58,000 Mga 10s na sinulat ni ko pababa dito sa ibaba, 442 00:29:58,000 --> 00:30:02,000 ito 10 ², 10 ¹, 10 sa zero, 10 ang aming base, 443 00:30:02,000 --> 00:30:08,000 at ang exponent, 0, 1, o 2, 444 00:30:08,000 --> 00:30:14,000 ay ipinahiwatig sa pamamagitan ng ang posisyon ng digit sa numero na isulat namin. 445 00:30:14,000 --> 00:30:21,000 1, kung tiningnan namin ito, ang 1 ay sa ika-2 na posisyon. 446 00:30:21,000 --> 00:30:27,000 3 sa 1st posisyon, at 7 sa 0 na posisyon. 447 00:30:27,000 --> 00:30:35,000 Kung paano makuha namin ang iba't ibang mga exponents sa ibaba para sa aming mga base. 448 00:30:35,000 --> 00:30:40,000 >> Ang pagsunod sa lahat ng mga ito we'll-aktwal na, alam mo kung ano? 449 00:30:40,000 --> 00:30:43,000 Gagawin namin na kung saan ay ang aking undo ang pindutan pumunta? 450 00:30:43,000 --> 00:30:45,000 May napupunta ito. 451 00:30:45,000 --> 00:30:47,000 Gustung-gusto ko ito i-undo bagay. 452 00:30:47,000 --> 00:30:51,000 Pagsunod sa tingin ko para sa akin ng hindi bababa sa 453 00:30:51,000 --> 00:30:54,000 ang pinakamadaling paraan upang simulan ang nagko-convert ng binary number 454 00:30:54,000 --> 00:30:57,000 o hexadecimal numero kung saan ang base sa 16 455 00:30:57,000 --> 00:31:02,000 at hindi 10 o 2 upang magpatuloy at isulat 456 00:31:02,000 --> 00:31:09,000 ang base at exponents para sa lahat ng mga numero sa aking binary bilang sa itaas. 457 00:31:09,000 --> 00:31:14,000 Kung simulan namin mula kaliwa papuntang kanan muli, 458 00:31:14,000 --> 00:31:17,000 na uri ng counterintuitive, 459 00:31:17,000 --> 00:31:23,000 Ko bang baguhin pabalik sa itim dito, mayroon kaming ang 2 sa 0 posisyon, 460 00:31:23,000 --> 00:31:27,000 at pagkatapos ay mayroon kaming 2 ¹, 2 ², 461 00:31:27,000 --> 00:31:33,000 at pagkatapos ay 2 sa 3, 2 sa 4, 2 sa 5, 6, 462 00:31:33,000 --> 00:31:39,000 7, 8, 9, at 10. 463 00:31:39,000 --> 00:31:41,000 Ang mga numerong ito ko na nakasulat ang lahat ng mga exponents. 464 00:31:41,000 --> 00:31:48,000 Ko lamang sinulat ni ang mga base dito sa unang 3 para lamang sa espasyo. 465 00:31:48,000 --> 00:31:50,000 >> Sa puntong ito ako pagpunta upang magpatuloy at aktwal na ako upang burahin 466 00:31:50,000 --> 00:31:53,000 ang mga bagay na ginawa namin sa decimal, kung okay lang. 467 00:31:53,000 --> 00:31:57,000 Lahat Mayroon kayong na. 468 00:31:57,000 --> 00:32:05,000 Mga mo ang panonood online ako ba rewind sa akin kung nais mong. 469 00:32:05,000 --> 00:32:07,000 Lumilipat ng pabalik sa panulat. 470 00:32:07,000 --> 00:32:12,000 Ngayon, kung ano ang maaari naming gawin-kung ikaw guys ay hindi lubos na mapabilis sa iyong mga kapangyarihan ng 2, 471 00:32:12,000 --> 00:32:15,000 na lubos na cool na. 472 00:32:15,000 --> 00:32:18,000 Ito ay nangyayari. Nauunawaan ko. 473 00:32:18,000 --> 00:32:23,000 Ko isang beses ay nagkaroon ng isang pakikipanayam sa trabaho kung saan ako nasabihan dapat kong malaman ng lahat ng kapangyarihan ng 2 474 00:32:23,000 --> 00:32:26,000 up sa pamamagitan ng 2 sa ika-30. 475 00:32:26,000 --> 00:32:29,000 Ito ay hindi isang trabaho Nakatanggap ako. 476 00:32:29,000 --> 00:32:32,000 Pa rin, ikaw guys ay maaaring magpatuloy at gawin ang matematika dito, 477 00:32:32,000 --> 00:32:35,000 ngunit may binary na hindi ito talagang kabuluhan, 478 00:32:35,000 --> 00:32:38,000 at ni ang kabuluhan may decimal o hexadecimal alinman, 479 00:32:38,000 --> 00:32:43,000 upang gawin ang matematika kung saan mayroon kang zero. 480 00:32:43,000 --> 00:32:49,000 Maaari mong makita ang mayroon akong 0 na dito, 0 dito, 0 dito, 0 dito, 0 dito, 0 dito. 481 00:32:49,000 --> 00:32:52,000 Bakit hindi maaaring magkaroon ng kahulugan upang gawin ang mga aktwal na matematika 482 00:32:52,000 --> 00:32:56,000 upang makalkula ang naaangkop na lakas ng 2 para sa posisyong iyon? 483 00:32:56,000 --> 00:32:59,000 Eksakto, tulad ng Charlotte sinabi, ito ay 0. 484 00:32:59,000 --> 00:33:05,000 Maaaring pati na rin i-save ang iyong sarili ang oras kung pagkalkula kapangyarihan ng 2 ay hindi ang iyong malakas na suit. 485 00:33:05,000 --> 00:33:10,000 Sa kasong ito kailangan lamang namin upang makalkula ang mga ito para sa 2 sa 0 na-? 486 00:33:10,000 --> 00:33:12,000 [Mag-aaral] 1. 487 00:33:12,000 --> 00:33:14,000 [Nate H.] 1, 2 sa 3 na-? 488 00:33:14,000 --> 00:33:16,000 [Mag-aaral] 8. >> [Nate H.] 8. 489 00:33:16,000 --> 00:33:18,000 2 sa 4? 490 00:33:18,000 --> 00:33:21,000 [Mag-aaral] 2. Ikinalulungkot ko, 1. 491 00:33:21,000 --> 00:33:26,000 [Nate H.] 2 sa 4 16, eksakto. 492 00:33:26,000 --> 00:33:28,000 2 sa 5, Kevin? >> 32. 493 00:33:28,000 --> 00:33:32,000 [Nate H.] 32, 2 sa 8? 494 00:33:32,000 --> 00:33:38,000 [Mag-aaral] 32 x 8, 256. 495 00:33:38,000 --> 00:33:41,000 [Nate H.] Perpekto. 496 00:33:41,000 --> 00:33:43,000 At 2 sa 10? 497 00:33:43,000 --> 00:33:45,000 [Mag-aaral] 1024. 498 00:33:45,000 --> 00:33:49,000 [Nate H.] Oo, 1024. 499 00:33:49,000 --> 00:33:57,000 >> Kapag Mayroon namin ang mga bilang na ito maaari naming sabihin sa ilang ang lahat ng mga ito hanggang. 500 00:33:57,000 --> 00:34:01,000 At ito ay kung saan ito ay talagang mahalaga upang gawin ang ilang mga bagay. 501 00:34:01,000 --> 00:34:07,000 Isa ay pumunta pabagalin at suriin ang iyong trabaho. 502 00:34:07,000 --> 00:34:10,000 Maaari mong sabihin na may 1 sa dulo ng ang numerong ito, 503 00:34:10,000 --> 00:34:15,000 kaya dapat ko talagang makakuha ng isang kakaibang numero tulad ng aking mga resulta, 504 00:34:15,000 --> 00:34:18,000 dahil ang lahat ng iba pang mga pagpunta sa kahit numero 505 00:34:18,000 --> 00:34:21,000 ibinigay na ang isang binary numero. 506 00:34:21,000 --> 00:34:24,000 Ang iba pang mga bagay na gawin ay kung ikaw ay makakuha sa puntong ito sa pagsubok 507 00:34:24,000 --> 00:34:27,000 at nakasulat ito ito malayo 508 00:34:27,000 --> 00:34:30,000 at nagpapatakbo ka ng oras 509 00:34:30,000 --> 00:34:33,000 tumingin sa bilang ng mga puntos na ang problemang ito ay nagkakahalaga ng. 510 00:34:33,000 --> 00:34:40,000 Ang problemang ito, tulad ng maaari mong makita kung i-flip ko pabalik sa aking laptop talagang mabilis 511 00:34:40,000 --> 00:34:44,000 ang problemang ito ay nagkakahalaga ng 2 puntos, kaya ito ay hindi ang uri ng karagdagan 512 00:34:44,000 --> 00:34:47,000 dapat mong pagpunta sa pamamagitan ng kung ikaw talaga ay pinindot para sa oras. 513 00:34:47,000 --> 00:34:52,000 Ngunit magkakaroon kami lumipat pabalik sa iPad, at kami sa pamamagitan nito ay talagang mabilis. 514 00:34:52,000 --> 00:34:54,000 >> Gusto ko ng paggawa ng maliit na numero sa unang 515 00:34:54,000 --> 00:34:56,000 dahil nakita ko na mas madali. 516 00:34:56,000 --> 00:35:00,000 Gusto ko ng 32 at 8 dahil pumunta sila nang magkasama medyo madali, at makuha namin 50. 517 00:35:00,000 --> 00:35:03,000 16 at 1 ay nakakakuha ng 17. 518 00:35:03,000 --> 00:35:05,000 May nakukuha namin 57, 519 00:35:05,000 --> 00:35:14,000 at pagkatapos ay maaari naming gawin ang lahat ng ito, kaya namin maaaring gawin 57, 156. 520 00:35:14,000 --> 00:35:16,000 Halika sa. 521 00:35:16,000 --> 00:35:19,000 Tao, mahusay, sabihin makita. 522 00:35:19,000 --> 00:35:27,000 Nagkaroon kami ng 57, 256, at 1024. 523 00:35:27,000 --> 00:35:31,000 Sa puntong ito, gusto ko sa halip pumunta lamang sa pamamagitan ng. 524 00:35:31,000 --> 00:35:35,000 Wala akong bakas. Malinaw ko kailangan upang basahin sa. 525 00:35:35,000 --> 00:35:40,000 7, 6, at 4, makakakuha ka ng 17. 526 00:35:40,000 --> 00:35:42,000 1, 5, 5, 2, 13. 527 00:35:42,000 --> 00:35:45,000 Pagkatapos namin makakuha ng 3, at pagkatapos namin makakuha ng 1. 528 00:35:45,000 --> 00:35:52,000 1337. 529 00:35:52,000 --> 00:35:55,000 Easter itlog, sinuman? 530 00:35:55,000 --> 00:35:59,000 Sinuman ay nakikilala ang numero? 531 00:35:59,000 --> 00:36:02,000 Chris kinikilala ang numero. Ano ang ibig sabihin, Chris? 532 00:36:02,000 --> 00:36:04,000 [Chris] Leet. 533 00:36:04,000 --> 00:36:11,000 Leet, kaya kung titingnan mo ito, mukhang leet. 534 00:36:11,000 --> 00:36:15,000 Hacker bagay. Panoorin ang para sa na uri ng mga bagay-bagay sa midterm o ang pagsusulit, sa halip. 535 00:36:15,000 --> 00:36:19,000 Kung nakikita mo na ang uri ng mga bagay-bagay at ikaw ay nagtataka "Huh," 536 00:36:19,000 --> 00:36:22,000 na maaaring aktwal na ibig sabihin ng isang bagay. 537 00:36:22,000 --> 00:36:24,000 Hindi ko alam. David ang may gusto ng paglalagay ito. 538 00:36:24,000 --> 00:36:26,000 Ito ay isang mahusay na paraan upang katinuan suriin ito. 539 00:36:26,000 --> 00:36:30,000 Tulad okay, ang maaari kong makita kung anong nangyayari sa. 540 00:36:30,000 --> 00:36:34,000 >> Na Linggo 0/Week 1 bagay. 541 00:36:34,000 --> 00:36:39,000 Kung lumipat kami pabalik sa aming laptop ngayon, 542 00:36:39,000 --> 00:36:46,000 mag-zoom out, at ilang iba pang mga bagay. 543 00:36:46,000 --> 00:36:50,000 Mayroong ASCII, na namin ang paggawa ng maraming may ang set ng problema. 544 00:36:50,000 --> 00:36:55,000 Ito paniwala ng kabisera A. Ano na talagang? 545 00:36:55,000 --> 00:36:57,000 Alam ito ang decimal integer. 546 00:36:57,000 --> 00:37:00,000 65 ay kung ano ang nai-map sa ASCII table, 547 00:37:00,000 --> 00:37:03,000 at na samakatuwid kung paano ang computer nagsusulat ito, 548 00:37:03,000 --> 00:37:06,000 at na kung paano namin ang pagkuha ang layo mula sa aktwal na pagsusulat 549 00:37:06,000 --> 00:37:09,000 ng character kabisera A at ng character lowercase ng 550 00:37:09,000 --> 00:37:14,000 sa ilan sa mga solusyon at problema sa set na ginagawa. 551 00:37:14,000 --> 00:37:16,000 Ang ilang mga iba pang mga bagay. 552 00:37:16,000 --> 00:37:25,000 Mayroon namin ang pahayag, boolean expression, kundisyon, loop, variable at thread. 553 00:37:25,000 --> 00:37:29,000 >> Yaong lahat mukhang may kabuluhan para sa pinaka-bahagi? 554 00:37:29,000 --> 00:37:35,000 Ang ilan sa mga ito terminolohiya ay isang maliit na funky sa beses. 555 00:37:35,000 --> 00:37:46,000 Gusto ko sa tingin ng isang pahayag para sa pinaka-bahagi ng isang bagay na nagtatapos na may semicolon. 556 00:37:46,000 --> 00:37:51,000 Pahayag tulad ng x = 7, na nagtatakda ng isang variable, 557 00:37:51,000 --> 00:37:54,000 baka tinatawag x = 7. 558 00:37:54,000 --> 00:38:01,000 Baka x ding uri na maaaring iimbak ang bilang 7, 559 00:38:01,000 --> 00:38:05,000 kaya isang int o posibleng Float o maikling o isang pansamantalang trabaho, 560 00:38:05,000 --> 00:38:07,000 isang bagay tulad na. 561 00:38:07,000 --> 00:38:12,000 Isang boolean expression ay gumagamit ng mga double katumbas 562 00:38:12,000 --> 00:38:17,000 at putok ang katumbas o hindi katumbas, mas mababa sa, mas malaki kaysa sa, 563 00:38:17,000 --> 00:38:22,000 mas mababa sa o katumbas ng, ang lahat na uri ng mga bagay-bagay. 564 00:38:22,000 --> 00:38:28,000 Kundisyon pagkatapos ay kung pang tao pahayag. 565 00:38:28,000 --> 00:38:32,000 Gusto ko tandaan na hindi ka maaaring magkaroon ng isang pang tao nang walang kaukulang kung. 566 00:38:32,000 --> 00:38:37,000 Gayundin, hindi ka maaaring magkaroon ng isang pang tao kung walang kaukulang kung. 567 00:38:37,000 --> 00:38:40,000 Loop, isipin ang ang 3 uri ng loop namin ang pagmamartilyo sa iyo 568 00:38:40,000 --> 00:38:43,000 para sa huling dalawang mga seksyon at mga problema set. 569 00:38:43,000 --> 00:38:46,000 Paggamit ay habang kapag nakakakuha ka ng user input, 570 00:38:46,000 --> 00:38:51,000 gamit habang loop hanggang sa isang partikular na kondisyon ay totoo, 571 00:38:51,000 --> 00:38:56,000 at pagkatapos gamit ang mga para sa mga loop kung kailangan mo 572 00:38:56,000 --> 00:39:01,000 malaman kung aling pag-ulit ng loop ikaw ay kasalukuyang sa kung paano tingin ko ang tungkol dito. 573 00:39:01,000 --> 00:39:07,000 O kung gumawa ka ng isang para sa bawat karakter sa isang string na gusto kong gawin ang isang bagay, 574 00:39:07,000 --> 00:39:15,000 para sa bawat elemento sa isang array na gusto kong gawin ang isang bagay sa na elemento. 575 00:39:15,000 --> 00:39:18,000 >> Thread at mga kaganapan. 576 00:39:18,000 --> 00:39:21,000 Mga namin hindi sakop tahasang sa C, 577 00:39:21,000 --> 00:39:23,000 ngunit tandaan na ito mula sa simula. 578 00:39:23,000 --> 00:39:26,000 Ito ang paniwala ng pagkakaroon ng iba't-ibang mga script. 579 00:39:26,000 --> 00:39:32,000 Ito rin ang paniwala na ito ng pagsasahimpapawid ng isang kaganapan. 580 00:39:32,000 --> 00:39:37,000 Ang ilang mga tao ay hindi gamitin ang nagbo-broadcast sa kanilang mga proyekto sa una, 581 00:39:37,000 --> 00:39:40,000 na ay lubos na cool na, 582 00:39:40,000 --> 00:39:46,000 ngunit ito ay 2 iba't ibang mga paraan ng paghawak ito mas malaking isyu na tinatawag concurrency, 583 00:39:46,000 --> 00:39:49,000 na kung paano mo makakuha ng mga programa upang maisagawa 584 00:39:49,000 --> 00:39:54,000 o tila execute sa parehong oras? 585 00:39:54,000 --> 00:39:59,000 Iba't ibang gawain na tumatakbo habang iba pang mga gawain ay tumatakbo. 586 00:39:59,000 --> 00:40:01,000 Ito ay kung paano ang iyong operating system ay tila upang gumana. 587 00:40:01,000 --> 00:40:04,000 Ito ang dahilan kung bakit kahit na, halimbawa, 588 00:40:04,000 --> 00:40:10,000 Mayroon akong aking browser ay tumatakbo, maaari ko ring i-on Spotify at i-play ang isang kanta. 589 00:40:10,000 --> 00:40:14,000 Iyon ay higit pa sa pangkonseptong bagay upang maunawaan. 590 00:40:14,000 --> 00:40:17,000 Gusto kong kumuha ng hitsura sa thread maikling 591 00:40:17,000 --> 00:40:21,000 kung nais mong upang matuto nang higit pa tungkol sa na. 592 00:40:21,000 --> 00:40:26,000 >> Natin makita, Naniniwala akong maaaring naging 593 00:40:26,000 --> 00:40:31,000 isang problema sa ito sa isa sa mga. 594 00:40:31,000 --> 00:40:35,000 Muli, tingin ko mga thread at kaganapan ay hindi isang bagay na naming masaklawan sa C 595 00:40:35,000 --> 00:40:41,000 dahil lang sa ito ay makabuluhang mas mahirap kaysa sa scratch. 596 00:40:41,000 --> 00:40:44,000 Hindi ka dapat mag-alala tungkol dito doon, ngunit tiyak na maunawaan ang mga konsepto, 597 00:40:44,000 --> 00:40:47,000 maunawaan kung ano ang nangyayari sa. 598 00:40:47,000 --> 00:40:52,000 Bago ilipat namin sa, anumang mga katanungan sa Linggo 0 materyal? 599 00:40:52,000 --> 00:40:55,000 Lahat pakiramdam medyo magandang? 600 00:40:55,000 --> 00:41:03,000 -Unawa sa mga variable at kung ano ang isang variable? 601 00:41:03,000 --> 00:41:08,000 >> Paglipat sa. Linggo 1. 602 00:41:08,000 --> 00:41:12,000 Ang ilang mga bagay dito na hindi partikular na saklaw 603 00:41:12,000 --> 00:41:21,000 sa pagsusuri ng pagsusulit ay kinakailangan at din mas haka-haka na mga bagay upang isipin ang tungkol. 604 00:41:21,000 --> 00:41:30,000 Ang una ay ang paniwala ng kung ano ang source code, mga compiler at code ng bagay. 605 00:41:30,000 --> 00:41:32,000 Sinuman? Basil. 606 00:41:32,000 --> 00:41:37,000 Ay code ng bagay-ibig sabihin ko source code kung ano ang inilagay mo sa kumalatong, 607 00:41:37,000 --> 00:41:42,000 at code ng bagay ay kung ano kumalatong Inilalagay ng ang sa gayon na ang iyong computer ay maaaring basahin ang program. 608 00:41:42,000 --> 00:41:44,000 Eksakto. 609 00:41:44,000 --> 00:41:47,000 Source code ang C code na iyong aktwal na type up. 610 00:41:47,000 --> 00:41:50,000 Bagay code ay kung ano ang makakakuha ka ng kumalatong. 611 00:41:50,000 --> 00:41:54,000 0s at 1s sa binary na format. 612 00:41:54,000 --> 00:41:59,000 Pagkatapos, anong mangyayari kapag mayroon kang isang grupo ng mga file ng bagay, 613 00:41:59,000 --> 00:42:04,000 sabihin ka kino-compile ang isang proyekto o programa na gumagamit ng maramihang mga file ng code ng pinagmulan, 614 00:42:04,000 --> 00:42:09,000 na sa pamamagitan ng convention ay ibinigay sa. c file extension. 615 00:42:09,000 --> 00:42:13,000 Iyon ay kung bakit mayroon kaming caesar.c, vigenère.c. 616 00:42:13,000 --> 00:42:18,000 Kung ikaw ay sumusulat ng mga programa ng Java magbibigay sa iyo ang mga ito sa extension. Java. 617 00:42:18,000 --> 00:42:24,000 Python programa ay ang extension. Py madalas. 618 00:42:24,000 --> 00:42:26,000 >> Kapag mayroon kang maramihang mga. File c, ipunin ang mga ito. 619 00:42:26,000 --> 00:42:29,000 Kumalatong spits ang lahat ng ito binary junk. 620 00:42:29,000 --> 00:42:33,000 Pagkatapos ay dahil gusto mo lamang ng 1 programa 621 00:42:33,000 --> 00:42:37,000 mayroon kang linker link lahat ng mga bagay file nang magkasama 622 00:42:37,000 --> 00:42:40,000 sa 1 executable file. 623 00:42:40,000 --> 00:42:45,000 Ito ay din kung ano ang mangyayari kapag ginamit mo ang CS50 library, halimbawa. 624 00:42:45,000 --> 00:42:50,000 Ang CS50 library ay parehong na file na. H header 625 00:42:50,000 --> 00:42:53,000 na magbasa ka, na # includecs50.h. 626 00:42:53,000 --> 00:42:58,000 At pagkatapos ito ay din ng isang espesyal na file na library ng binary 627 00:42:58,000 --> 00:43:02,000 na inipon na 0s at 1s, 628 00:43:02,000 --> 00:43:08,000 at na-l flag, kaya kung pumunta namin pabalik sa aming mga puwang at masaya naming talagang mabilis 629 00:43:08,000 --> 00:43:11,000 sa kung anong nangyayari sa dito kapag tinitingnan namin ang aming kumalatong utos, 630 00:43:11,000 --> 00:43:15,000 kung ano ang namin ang nakuha ay ito ang aming file sa source code dito mismo. 631 00:43:15,000 --> 00:43:18,000 Ito ay isang grupo ng mga flag ng tagatala. 632 00:43:18,000 --> 00:43:22,000 At pagkatapos ay sa pinakadulo, mga-l flag ng link sa 633 00:43:22,000 --> 00:43:30,000 ang aktwal na file binary para sa mga 2 aklatan, CS50 library at pagkatapos ay ang matematika library. 634 00:43:30,000 --> 00:43:35,000 >> Unawa sa bawat uri ng mga file na 'layunin 635 00:43:35,000 --> 00:43:38,000 sa proseso ng compilation ay isang bagay na makikita mo gusto upang makapag- 636 00:43:38,000 --> 00:43:43,000 magbigay ng hindi bababa sa isang mataas na antas ng pangkalahatang-ideya ng. 637 00:43:43,000 --> 00:43:46,000 Ang source code ay. Bagay code na ito ay. 638 00:43:46,000 --> 00:43:53,000 Bagay code file pagkabitin, at makakakuha ka ng isang magandang, executable file. 639 00:43:53,000 --> 00:43:55,000 Cool. 640 00:43:55,000 --> 00:43:58,000 Ito ay kung saan maaari kang makakuha ng mga error sa maraming punto 641 00:43:58,000 --> 00:44:00,000 sa compilation proseso. 642 00:44:00,000 --> 00:44:04,000 Ito ay kung saan, halimbawa, kung mong gawin ang pag-link bandila, 643 00:44:04,000 --> 00:44:10,000 CS50 bandila, at ligtaan mo ito sa puwang o kapag nagpapatakbo ka ng iyong code, 644 00:44:10,000 --> 00:44:13,000 ito ay kung saan makakakuha ka ng isang error sa phase ang pag-link, 645 00:44:13,000 --> 00:44:18,000 at ang linker ang sabihing, "Uy, na tinatawag na isang function GetString 646 00:44:18,000 --> 00:44:20,000 na sa CS50 library. " 647 00:44:20,000 --> 00:44:25,000 "Ikaw Sinabi sa akin na ito ay sa CS50 library, at hindi ko mahanap ang code para dito." 648 00:44:25,000 --> 00:44:28,000 Na kung saan mayroon kang i-link ito sa, at na hiwalay na 649 00:44:28,000 --> 00:44:33,000 mula tagatala ng error dahil ang tagatala ay naghahanap ng sa syntax at na uri ng mga bagay-bagay. 650 00:44:33,000 --> 00:44:38,000 Magandang malaman kung anong nangyayari sa kapag. 651 00:44:38,000 --> 00:44:42,000 >> Iba pang mga bagay na dapat malaman tungkol sa. 652 00:44:42,000 --> 00:44:49,000 Gusto ko sabihin mo talagang nais kumuha ng hitsura sa maikling sa typecasting ginawa ng Jordan 653 00:44:49,000 --> 00:44:55,000 upang maunawaan kung ano ang mga ints sa ilalim ng hood, 654 00:44:55,000 --> 00:44:58,000 ano char ay sa ilalim ng hood. 655 00:44:58,000 --> 00:45:02,000 Kapag makipag-usap namin tungkol sa ASCII at namin ang aktwal na tumitingin sa ASCII table, 656 00:45:02,000 --> 00:45:07,000 kung ano na ginagawa ang nagbibigay sa amin ng isang ilalim ng hood ang hitsura 657 00:45:07,000 --> 00:45:13,000 sa kung paano ang computer aktwal na kumakatawan sa kabisera A at ang digit 7 658 00:45:13,000 --> 00:45:17,000 at ng kuwit at tandang pananong. 659 00:45:17,000 --> 00:45:20,000 Ang computer ay mayroon ding mga espesyal na paraan upang kumatawan 660 00:45:20,000 --> 00:45:23,000 ang bilang 7 bilang isang integer. 661 00:45:23,000 --> 00:45:27,000 Ito ay isang espesyal na paraan upang kumakatawan sa bilang 7 bilang isang lumulutang bilang punto, 662 00:45:27,000 --> 00:45:29,000 at mga ay ibang-iba. 663 00:45:29,000 --> 00:45:32,000 Typecasting ay kung paano sabihin sa iyo ang computer "Uy, gusto kong mong i-convert 664 00:45:32,000 --> 00:45:37,000 mula sa isang representasyon sa isa pang representasyon. " 665 00:45:37,000 --> 00:45:40,000 Bakit hindi namin kumuha ng isang pagtingin sa na. 666 00:45:40,000 --> 00:45:44,000 >> Gusto ko ring tingnan sa maikling sa mga aklatan at ang maikling sa compiler. 667 00:45:44,000 --> 00:45:47,000 Yaong talk tungkol sa proseso ng compilation, 668 00:45:47,000 --> 00:45:53,000 kung ano ang library ng, at pumunta sa ilan sa mga tanong na ito na maaari kang makapag-tanungin. 669 00:45:53,000 --> 00:45:55,000 Tanong sa Linggo 1 materyal? 670 00:45:55,000 --> 00:46:03,000 Mayroon bang anumang mga paksa in dito na mukhang daunting gusto mo upang masakop ang? 671 00:46:03,000 --> 00:46:07,000 Sinusubukan ko ang pumutok sa pamamagitan ng karamihan ng mga mas maaga na paksa upang maaari naming makuha 672 00:46:07,000 --> 00:46:13,000 mga payo at gawin ng kaunting recursion. 673 00:46:13,000 --> 00:46:15,000 Saloobin? 674 00:46:15,000 --> 00:46:19,000 Anumang bagay upang masakop ang? 675 00:46:19,000 --> 00:46:21,000 Oras para sa ilang mga tsokolate siguro? 676 00:46:21,000 --> 00:46:23,000 Mong guys ay nagtatrabaho sa pamamagitan nito. 677 00:46:23,000 --> 00:46:26,000 Ako pagpunta upang panatilihin ang hithit sa aking kape. 678 00:46:26,000 --> 00:46:31,000 Linggo 2. 679 00:46:31,000 --> 00:46:34,000 Magandang tawag, magandang tawag. 680 00:46:34,000 --> 00:46:38,000 Sa Linggo 2 usapan natin ng kaunti higit pa tungkol sa mga function. 681 00:46:38,000 --> 00:46:43,000 >> Sa unang ilang problema sa set hindi namin ay talagang magsulat ng anumang mga function sa lahat 682 00:46:43,000 --> 00:46:45,000 bukod sa kung saan ang function? 683 00:46:45,000 --> 00:46:47,000 [Mag-aaral] Main. >> Main, eksakto. 684 00:46:47,000 --> 00:46:51,000 At kaya nasaksihan namin ang iba't ibang mga costume na pangunahing may kanya-kanyang. 685 00:46:51,000 --> 00:46:54,000 May ang isa kung saan ito ay tumatagal ng walang argumento, 686 00:46:54,000 --> 00:46:58,000 at sabihin lang namin void in sa pagitan ng mga panaklong, 687 00:46:58,000 --> 00:47:01,000 at pagkatapos ay ang iba pang mga na kung saan namin nais na tumagal ng mga argumento sa command line, 688 00:47:01,000 --> 00:47:08,000 at bilang namin nakita, na kung saan mayroon kang int argc at string argv array 689 00:47:08,000 --> 00:47:13,000 o ngayon na aktwal na namin ang nakalantad na string sa magpasinda * na ito ay 690 00:47:13,000 --> 00:47:20,000 kami ay pagpunta upang simulan ang pagsulat ito bilang magpasinda * argv at pagkatapos bracket. 691 00:47:20,000 --> 00:47:22,000 Sa Problema Set 3, guys nakita ng grupo ng mga function, 692 00:47:22,000 --> 00:47:27,000 at ipinatupad mo isang bungkos ng mga function, gumuhit, tumingin up, mang-uayabit. 693 00:47:27,000 --> 00:47:31,000 Ang mga modelo ay ang lahat ng nakasulat doon para sa iyo. 694 00:47:31,000 --> 00:47:33,000 >> Ano Nais kong makipag-usap tungkol dito sa function talagang mabilis 695 00:47:33,000 --> 00:47:38,000 na may 3 bahagi sa kanila kapag sumulat ka ng isang function. 696 00:47:38,000 --> 00:47:43,000 Mayroon kang upang tukuyin ang return uri ng pag-andar. 697 00:47:43,000 --> 00:47:46,000 Mayroon kang tumukoy ng isang pangalan para sa function na, at pagkatapos ay mayroon kang upang tukuyin 698 00:47:46,000 --> 00:47:51,000 ang listahan ng argumento o ang parameter na listahan. 699 00:47:51,000 --> 00:47:57,000 Halimbawa, kung ako ay upang magsulat ng isang function upang magbuo ng isang bungkos ng mga integer 700 00:47:57,000 --> 00:48:03,000 at pagkatapos ay bumalik sa akin ang kabuuan kung ano ang uri ng aking kita 701 00:48:03,000 --> 00:48:06,000 kung Nais kong sabihin sa ilang integer at pagkatapos ay ibalik ang kabuuan? 702 00:48:06,000 --> 00:48:12,000 Pagkatapos ang pangalan ng function na. 703 00:48:12,000 --> 00:48:27,000 Kung ako magpatuloy at isulat sa berde, ang bahagi na ito ay ang return type. 704 00:48:27,000 --> 00:48:34,000 Ang bahagi na ito ay ang pangalan. 705 00:48:34,000 --> 00:48:40,000 At pagkatapos ay sa pagitan ng mga panaklong 706 00:48:40,000 --> 00:48:46,000 kung saan bigyan ko ang mga argumento, 707 00:48:46,000 --> 00:48:56,000 madalas dinaglat na bilang args, minsan tinatawag na param para sa mga parameter. 708 00:48:56,000 --> 00:49:00,000 At kung mayroon kang isa, mo lamang tukuyin ang isa. 709 00:49:00,000 --> 00:49:06,000 Kung mayroon kang maramihang paghiwalayin ang bawat isa gamit ang isang kuwit. 710 00:49:06,000 --> 00:49:13,000 At para sa bawat argumento magbibigay sa iyo ng 2 bagay na-Kevin? 711 00:49:13,000 --> 00:49:18,000 [Kevin] Mayroon kang upang bigyan ang uri at pagkatapos ay ang pangalan. 712 00:49:18,000 --> 00:49:21,000 At pagkatapos ay ang pangalan, at ang pangalan ay ang pangalan na kayo ay pagpunta sa gamitin 713 00:49:21,000 --> 00:49:25,000 sumangguni sa argument na sa loob ng function na kabuuan, 714 00:49:25,000 --> 00:49:27,000 sa loob ng function na kasalukuyang sumusulat ka. 715 00:49:27,000 --> 00:49:32,000 >> Hindi mo na kailangang mag-halimbawa, kung ako pagpunta sa sabihin sa ilang pananalita, 716 00:49:32,000 --> 00:49:41,000 sabihin, ang isang array ng integer-we'll int array, 717 00:49:41,000 --> 00:49:46,000 at Bibigyan kita ng aking sarili ilang mga kulot tirante doon- 718 00:49:46,000 --> 00:49:51,000 pagkatapos kapag pumasa ako ng isang array sa function na kabuuan 719 00:49:51,000 --> 00:49:55,000 Pumasa ko ito sa unang posisyon ng listahan ng argumento. 720 00:49:55,000 --> 00:49:59,000 Ngunit ang array na dumadaan ako sa hindi ang pangalan arr. 721 00:49:59,000 --> 00:50:07,000 Arr ay pagpunta sa kung paano mag-refer ko na argumento sa loob ng katawan ng function na. 722 00:50:07,000 --> 00:50:10,000 Ang iba pang mga bagay na kailangan namin isinasaalang-alang, 723 00:50:10,000 --> 00:50:14,000 at ito ay bahagyang naiiba mula sa mga function, ngunit tingin ko ito ay isang mahalagang punto, 724 00:50:14,000 --> 00:50:20,000 na sa C kapag Sumulat ako ng isang function tulad nito 725 00:50:20,000 --> 00:50:29,000 paano ko malalaman kung gaano karaming mga elemento sa array? 726 00:50:29,000 --> 00:50:31,000 Ito ay medyo ng isang nanlilinlang tanong. 727 00:50:31,000 --> 00:50:35,000 Usapan natin ang tungkol sa ilang sandali sa seksyon ng nakaraang linggo. 728 00:50:35,000 --> 00:50:40,000 Paano ko malalaman kung ang bilang ng mga elemento sa loob ng isang array sa C? 729 00:50:40,000 --> 00:50:44,000 Mayroon bang paraan? 730 00:50:44,000 --> 00:50:49,000 >> Ito lumiliko out na walang paraan upang malaman. 731 00:50:49,000 --> 00:50:52,000 Mayroon kang upang pumasa ito sa hiwalay. 732 00:50:52,000 --> 00:50:55,000 May ay isang nanlilinlang na maaari mong gawin 733 00:50:55,000 --> 00:51:00,000 kung ikaw ay sa parehong function na kung saan array ay ipinahayag, 734 00:51:00,000 --> 00:51:04,000 at nagtatrabaho ka na may isang array ng stack. 735 00:51:04,000 --> 00:51:06,000 Ngunit Gumagana lamang kung ikaw ay sa ang parehong function na. 736 00:51:06,000 --> 00:51:09,000 Sandaling pumasa ka ng isang array sa isa pang function na o kung ikaw ipinahayag isang array 737 00:51:09,000 --> 00:51:12,000 at inilagay mo na array sa magbunton, ginamit mo ang malloc 738 00:51:12,000 --> 00:51:15,000  at na uri ng mga bagay-bagay, at pagkatapos ang lahat ng mga taya ay off. 739 00:51:15,000 --> 00:51:18,000 Pagkatapos iyong aktwal na ilibot 740 00:51:18,000 --> 00:51:21,000 isang espesyal na argumento o isa pang parameter 741 00:51:21,000 --> 00:51:23,000 na nagsasabi sa iyo kung gaano kalaki ang array. 742 00:51:23,000 --> 00:51:28,000 Sa kasong ito, Gusto ko nais na gumamit ng comma-I'm Paumanhin, ito ay pagpunta off ang screen dito- 743 00:51:28,000 --> 00:51:32,000 at gusto kong pumasa sa isa pang argument 744 00:51:32,000 --> 00:51:40,000  at tawagan ito int Len para sa haba. 745 00:51:40,000 --> 00:51:44,000 >> Isang bagay na maaaring manggaling sa pagsusulit 746 00:51:44,000 --> 00:51:49,000 ay humihiling sa iyo na magsulat o ipatupad ang isang partikular na function na tinatawag na isang bagay. 747 00:51:49,000 --> 00:51:54,000 Kung hindi kami magbibigay sa iyo ng prototype, kaya ito buong bagay dito, 748 00:51:54,000 --> 00:51:58,000 buong gulo na ito ay tinatawag na ang deklarasyon ng function na o ang function na prototype, 749 00:51:58,000 --> 00:52:01,000 ito ay isa sa mga unang bagay na makikita mo gusto upang magpaganap ng pangako kung hindi ito ibinigay 750 00:52:01,000 --> 00:52:03,000 sa iyo kaagad sa pagsusulit. 751 00:52:03,000 --> 00:52:06,000 Ang iba pang nanlilinlang na natutunan ko ay na 752 00:52:06,000 --> 00:52:11,000 nating gawin namin magbibigay sa iyo ng prototype para sa isang function, at sabihin namin, "Uy, na kailangan mong isulat ito." 753 00:52:11,000 --> 00:52:16,000 Sa loob ng kulot tirante na mayroon ka sa pagsusulit 754 00:52:16,000 --> 00:52:20,000 kung napansin mo na may uri ng pagbalik at napansin mo na ang uri ng return 755 00:52:20,000 --> 00:52:25,000 ay isang bagay na iba kaysa sa walang silbi, na nangangahulugan na ang function ay hindi bumalik sa anumang, 756 00:52:25,000 --> 00:52:28,000 pagkatapos ay isang bagay na talagang nais na gawin ay sumulat 757 00:52:28,000 --> 00:52:33,000 ang ilang mga uri ng return statement sa pinakadulo ng function na. 758 00:52:33,000 --> 00:52:40,000 Return, at sa kasong ito, gagamitin namin maglagay ng blangkong dahil gusto naming punan ang blangko. 759 00:52:40,000 --> 00:52:44,000 Ngunit ito ay nakakakuha ka iniisip sa tamang paraan tungkol sa kung paano ako pagpunta sa lapitan ang problemang ito? 760 00:52:44,000 --> 00:52:49,000 At ito reminds ka nagbabalik ng halaga 761 00:52:49,000 --> 00:52:51,000 sa tumatawag ng pag-andar. 762 00:52:51,000 --> 00:52:54,000 >> Oo. >> [Mag-aaral] Malalagay ba style kapag sumusulat kami ng code sa ang pagsusulit? 763 00:52:54,000 --> 00:52:58,000 Tulad ng indentation at na uri ng mga bagay-bagay? >> [Mag-aaral] Oo. 764 00:52:58,000 --> 00:53:00,000 Hindi, hindi ng mas maraming. 765 00:53:00,000 --> 00:53:09,000 Tingin ko ng maraming ng ito ay isang bagay na makikita namin linawin sa pagsusulit sa araw ng, 766 00:53:09,000 --> 00:53:15,000 ngunit karaniwang nababahala tungkol sa # Kabilang at na uri ng mga bagay-bagay, uri ng labas. 767 00:53:15,000 --> 00:53:17,000 [Mag-aaral] kailangan mong magkomento ang iyong sulat-kamay na code? 768 00:53:17,000 --> 00:53:19,000 Kailangan mong magkomento ang iyong sulat-kamay na code? 769 00:53:19,000 --> 00:53:24,000 Pagkomento ay palaging magandang kung ikaw ay nag-aalala tungkol sa bahagyang credit 770 00:53:24,000 --> 00:53:29,000 o gusto mong makipag-usap ang iyong layunin sa greyder. 771 00:53:29,000 --> 00:53:33,000 Ngunit ako, muli, ay linawin sa pagsusulit mismo at sa pagsusulit araw, 772 00:53:33,000 --> 00:53:39,000 ngunit hindi ako naniniwala na kayo ay kinakailangan na magsulat ng mga komento, walang. 773 00:53:39,000 --> 00:53:42,000 Karaniwang hindi, ngunit ito ay tiyak ang uri ng bagay na kung saan 774 00:53:42,000 --> 00:53:45,000 maaari kang makipag-usap ang iyong layunin, bang "Hey, ito ay kung saan ako pupunta dito." 775 00:53:45,000 --> 00:53:49,000 At minsan na maaaring makatulong na may bahagyang credit. 776 00:53:49,000 --> 00:53:51,000 Cool. 777 00:53:51,000 --> 00:53:53,000 >> Basil. 778 00:53:53,000 --> 00:53:56,000 [Basil] Ano ang pagkakaiba sa pagitan ng deklarasyon, sabihin, int lang 779 00:53:56,000 --> 00:54:03,000 sa argumento o mga parameter kumpara sa deklarasyon ng variable sa loob ng andar? 780 00:54:03,000 --> 00:54:05,000 Wow, kape nagpunta ang tatagukan. 781 00:54:05,000 --> 00:54:07,000 [Basil] Tulad ng kung aling mga bagay na gusto naming upang ilagay sa mga argumento. 782 00:54:07,000 --> 00:54:09,000 Oo, na isang mahusay na tanong. 783 00:54:09,000 --> 00:54:11,000 Paano ka pumili ng kung ano ang mga bagay na gusto mong ilagay sa argumento 784 00:54:11,000 --> 00:54:17,000 kumpara sa kung anong mga bagay na dapat mong gawin sa loob ng pag-andar? 785 00:54:17,000 --> 00:54:24,000 Sa kasong ito kasama namin parehong sa mga ito bilang argumento 786 00:54:24,000 --> 00:54:29,000 dahil sila ng isang bagay na sinumang pagpunta sa gamitin ang function na sa kabuuan 787 00:54:29,000 --> 00:54:32,000 kailangang tukuyin ang mga bagay. 788 00:54:32,000 --> 00:54:35,000 >> Ang kabuuan function, tulad ng usapan natin ang tungkol ay walang paraan ng alam 789 00:54:35,000 --> 00:54:40,000 kung gaano kalaki ang array ay nakakakuha ng mula sa tumatawag o sinumang gamit ang function na sa kabuuan. 790 00:54:40,000 --> 00:54:44,000 Ay walang paraan ng pag-alam kung gaano kalaki ang array na. 791 00:54:44,000 --> 00:54:48,000 Ang dahilan na pumasa kami sa haba karapatan dito bilang isang argument 792 00:54:48,000 --> 00:54:51,000 ay dahil na ang isang bagay na talaga namin sinasabi mo ang tumatawag ng function na, 793 00:54:51,000 --> 00:54:55,000 sinumang pagpunta sa gamitin ang function na sa kabuuan, "Uy, hindi lamang ang mayroon mong bigyan kami ng isang array 794 00:54:55,000 --> 00:54:59,000 ng mga ints, mayroon ka ring upang sabihin sa amin kung paano malaki ang array na iyong ibinigay sa amin ay. " 795 00:54:59,000 --> 00:55:03,000 [Basil] Yaong ay parehong na command argumento line? 796 00:55:03,000 --> 00:55:06,000 Hindi, ito ay aktwal na argumento na gusto mong pumasa sa pag-andar. 797 00:55:06,000 --> 00:55:10,000 >> Hayaan akong gawin ang isang bagong pahina dito. 798 00:55:10,000 --> 00:55:13,000 [Basil] Tulad pangalan ay pumasa- 799 00:55:13,000 --> 00:55:24,000 [Nate H.] Kung mayroon akong int pangunahing (walang bisa), 800 00:55:24,000 --> 00:55:27,000 at ako pagpunta sa ilagay sa aking return 0 down na dito sa ibaba, 801 00:55:27,000 --> 00:55:31,000 at sabihin Gusto kong tumawag sa kabuuan function na. 802 00:55:31,000 --> 00:55:42,000 Gusto ko sasabihin int x = sum (); 803 00:55:42,000 --> 00:55:46,000 Upang gamitin ang function na sa kabuuan, mayroon akong upang pumasa sa parehong array na gusto kong sabihin sa ilang pananalita 804 00:55:46,000 --> 00:55:51,000 at ang haba ng array, kaya ito ay kung saan 805 00:55:51,000 --> 00:55:54,000 ipagpalagay ko ay may isang array ng ints, 806 00:55:54,000 --> 00:56:12,000 sinasabi ko ay may int numbaz [] = 1, 2, 3, 807 00:56:12,000 --> 00:56:16,000 uri ng paggamit na-hack up syntax doon, 808 00:56:16,000 --> 00:56:21,000 pagkatapos ay kung ano ang nais kong gawin sa kabuuan Gusto ko nais upang pumasa sa 809 00:56:21,000 --> 00:56:27,000 parehong numbaz at ang bilang 3 810 00:56:27,000 --> 00:56:30,000 upang sabihin sa kabuuan function na "Okay, narito ang array na gusto kong mong sabihin sa ilang." 811 00:56:30,000 --> 00:56:34,000 "Narito ang laki nito." 812 00:56:34,000 --> 00:56:39,000 Ba na magkaroon ng kahulugan? Ba na sagutin ang iyong tanong? 813 00:56:39,000 --> 00:56:42,000 >> Sa maraming mga paraan ginagawa nito parallel kung ano ang aming ginagawa sa pangunahing 814 00:56:42,000 --> 00:56:44,000 kapag mayroon kaming command argumento line. 815 00:56:44,000 --> 00:56:47,000 Ang isang programa tulad ng Caesar cipher, halimbawa, na kailangan 816 00:56:47,000 --> 00:56:53,000 utos mga argumento ng linya sa hindi gawin. 817 00:56:53,000 --> 00:56:57,000 Hindi ito alam kung paano upang i-encrypt kung hindi mo sabihin dito kung ano ang key upang magamit ang 818 00:56:57,000 --> 00:57:03,000 o kung hindi mo sabihin dito kung ano ang string na gusto mo upang i-encrypt. 819 00:57:03,000 --> 00:57:08,000 Pagdikta para sa input, ito ay kung saan kami ay nakakuha ng 2 magkaibang mga mekanismo 820 00:57:08,000 --> 00:57:14,000 para sa pagkuha ng input mula sa user, para sa pagkuha ng impormasyon mula sa user. 821 00:57:14,000 --> 00:57:19,000 Para sa Itakda ang Problema 1 Nakita namin ang GetInt na ito, GetString, GetFloat paraan 822 00:57:19,000 --> 00:57:26,000 ng pagdikta para sa input, at na tinatawag gamit ang karaniwang input stream. 823 00:57:26,000 --> 00:57:28,000 Ito ay bahagyang naiiba. 824 00:57:28,000 --> 00:57:31,000 Ito ay isang bagay na maaari mong gawin sa isang pagkakataon na iba sa 825 00:57:31,000 --> 00:57:35,000 kapag ikaw ay tumawag sa diyos sa programa, kapag sinimulan mo ang programa sa pagtakbo. 826 00:57:35,000 --> 00:57:41,000 Ang linya ng command argumento lahat ay tinukoy kapag simulan mo ang programa na tumatakbo. 827 00:57:41,000 --> 00:57:47,000 Namin ang paghahalo ng dalawang ng mga. 828 00:57:47,000 --> 00:57:52,000 Kapag ginagamit namin ng mga argumento sa isang function, tulad ng mga argumento command line sa main. 829 00:57:52,000 --> 00:57:56,000 Ito ay kapag ikaw ay tumawag sa diyos ang pag-andar na kailangan mo upang sabihin dito 830 00:57:56,000 --> 00:58:05,000 kung ano ang eksaktong kailangan nito upang upang isagawa ang mga gawain. 831 00:58:05,000 --> 00:58:08,000 Isa pang magandang bagay upang tumingin sa at Ipapaalam ko mong tingnan ito sa iyong bakanteng oras, 832 00:58:08,000 --> 00:58:11,000 at ito ay sakop sa pagsusulit na ito paniwala ng saklaw 833 00:58:11,000 --> 00:58:15,000 at mga lokal na variable kumpara sa pangkalahatang variable. 834 00:58:15,000 --> 00:58:18,000 Gawin bigyang-pansin na. 835 00:58:18,000 --> 00:58:23,000 >> Ngayon na kami ay nakakakuha sa sa iba pang mga bagay-bagay na ito, 836 00:58:23,000 --> 00:58:27,000 sa Linggo 3 na sinimulan namin ang pakikipag-usap tungkol sa paghahanap at pag-uuri-uri. 837 00:58:27,000 --> 00:58:32,000 Naghahanap at pag-uuri-uri, ng hindi bababa sa CS50, 838 00:58:32,000 --> 00:58:39,000 napaka isang panimula sa ilan sa mga mas panteorya bahagi ng computer science. 839 00:58:39,000 --> 00:58:42,000 Ang problema ng paghahanap, ang problema ng pag-uuri-uri 840 00:58:42,000 --> 00:58:46,000 ay malaki, canonical problema. 841 00:58:46,000 --> 00:58:52,000 Paano mo mahanap ang isang partikular na numero sa isang array ng mga bilyun-bilyong ng mga integer? 842 00:58:52,000 --> 00:58:55,000 Paano mo mahanap ang isang partikular na pangalan sa loob ng isang libro ng telepono 843 00:58:55,000 --> 00:58:59,000 na naka-imbak sa iyong laptop? 844 00:58:59,000 --> 00:59:04,000 At kaya namin ipakilala ang paniwala na ito ng asymptotic run beses 845 00:59:04,000 --> 00:59:11,000 sa talagang tumyak ng dami kung gaano katagal, kung paano mahirap problema sa mga ito ay, 846 00:59:11,000 --> 00:59:14,000 kung gaano katagal tumagal upang malutas. 847 00:59:14,000 --> 00:59:20,000 Sa, naniniwala ako, 2011 sa pagsusulit ng problema na sa tingin ko ang mga merito 848 00:59:20,000 --> 00:59:27,000 sumasaklaw sa masyadong mabilis, na kung saan ay ang isang ito, problema 12. 849 00:59:27,000 --> 00:59:32,000 O hindi, Omega. 850 00:59:32,000 --> 00:59:41,000 >> Narito kami ay pakikipag-usap tungkol sa pinakamabilis na posibleng run oras 851 00:59:41,000 --> 00:59:46,000 para sa isang partikular na algorithm at pagkatapos ay ang pinakamabagal na posibleng run oras. 852 00:59:46,000 --> 00:59:52,000 Ito Omega at O ​​talaga lang shortcut. 853 00:59:52,000 --> 00:59:55,000 Hindi nila notational mga shortcut para sa sinasabi 854 00:59:55,000 --> 00:59:59,000 kung mabilis sa posibleng pinakamahusay na kaso ay aming algorithm run, 855 00:59:59,000 --> 01:00:06,000 at kung mabagal sa ang pinakamasama posibleng kaso ang aming algorithm na patakbuhin? 856 01:00:06,000 --> 01:00:10,000 Natin ang ilang sa mga ito, at ang mga ito ay nasasaklawan rin 857 01:00:10,000 --> 01:00:13,000 sa maikling sa asymptotic notation, na kung saan ko lubos na inirerekomenda. 858 01:00:13,000 --> 01:00:17,000 Jackson ginawa talagang magandang trabaho. 859 01:00:17,000 --> 01:00:23,000 Sa binary paghahanap, makipag-usap namin tungkol sa binary paghahanap bilang isang algorithm, 860 01:00:23,000 --> 01:00:28,000 at karaniwang namin makipag-usap tungkol dito sa mga tuntunin ng malaki O. nito 861 01:00:28,000 --> 01:00:30,000 Ano ang malaking O? 862 01:00:30,000 --> 01:00:34,000 Ano ang pinakamabagal na posibleng run oras ng binary paghahanap? 863 01:00:34,000 --> 01:00:36,000 [Mag-aaral] N ²? 864 01:00:36,000 --> 01:00:41,000 Isara, hulaan ko na katulad na. 865 01:00:41,000 --> 01:00:43,000 Ng maraming mas mabilis kaysa sa. 866 01:00:43,000 --> 01:00:45,000 [Mag-aaral] binary? >> Oo, binary paghahanap. 867 01:00:45,000 --> 01:00:47,000 [Mag-aaral] Ito ay log n. 868 01:00:47,000 --> 01:00:49,000 Mag-log n, kaya kung ano ang mag-log n ibig sabihin? 869 01:00:49,000 --> 01:00:51,000 Halves ito sa bawat pag-ulit. 870 01:00:51,000 --> 01:00:56,000 Eksakto, ito ang pinakamabagal na posibleng kaso, 871 01:00:56,000 --> 01:01:00,000 sabihin kung mayroon ka ng isang pinagsunod-sunod array 872 01:01:00,000 --> 01:01:08,000 ng isang milyong integer at ang numero na iyong hinahanap para sa 873 01:01:08,000 --> 01:01:14,000 ay alinman sa unang elemento sa array o ang huling elemento sa array. 874 01:01:14,000 --> 01:01:18,000 Tandaan, ang binary search algorithm ay gumagana sa pamamagitan ng pagtingin sa gitna elemento, 875 01:01:18,000 --> 01:01:21,000 nakikita kung na ang tugma na naghahanap ka ng. 876 01:01:21,000 --> 01:01:23,000 Kung ito ay, pagkatapos ay mahusay, na iyong natagpuan ito. 877 01:01:23,000 --> 01:01:27,000 >> Sa posibleng pinakamahusay na kaso, kung gaano kabilis ang run binary paghahanap? 878 01:01:27,000 --> 01:01:29,000 [Mag-aaral] 1. 879 01:01:29,000 --> 01:01:32,000 1, pare-pareho ang oras, malaking O ng 1. Oo. 880 01:01:32,000 --> 01:01:36,000 [Mag-aaral] Mayroon akong tanong. Kapag sinabi mong mag-log ng n, ibig sabihin may paggalang sa base 2, i-right? 881 01:01:36,000 --> 01:01:40,000 Oo, kaya na ang iba pang mga bagay. 882 01:01:40,000 --> 01:01:44,000 Sabihin namin ang mga n ng log, at hulaan ko kapag ako ay nasa high school 883 01:01:44,000 --> 01:01:48,000 Ko laging ipinapalagay na ang log ay base 10. 884 01:01:48,000 --> 01:01:57,000 Oo, kaya oo, log karaniwang base 2 ay kung ano ang ginagamit namin. 885 01:01:57,000 --> 01:02:02,000 Muli, ang pagpunta pabalik sa binary paghahanap, kung naghahanap ka para sa alinman sa 886 01:02:02,000 --> 01:02:05,000 ang mga elemento sa pinakadulo o elemento sa pinakadulo simula, 887 01:02:05,000 --> 01:02:08,000 dahil simulan mo sa gitna at pagkatapos mo itapon 888 01:02:08,000 --> 01:02:13,000 alinman kalahati ay hindi matugunan ang pamantayan na hinahanap mo para sa, 889 01:02:13,000 --> 01:02:15,000 at pumunta ka sa susunod na kalahati at sa susunod na kalahati at sa susunod na kalahati. 890 01:02:15,000 --> 01:02:19,000 Kapag ako ay naghahanap para sa pinakamalaking elemento sa milyong integer array 891 01:02:19,000 --> 01:02:25,000 Ako pagpunta upang maghati ang mga ito sa karamihan ng log ng 1 milyong beses 892 01:02:25,000 --> 01:02:28,000 bago ako sa wakas subukan at makita na elemento Naghahanap ako 893 01:02:28,000 --> 01:02:33,000 sa pinakamalaking o sa pinakamataas na index ng array, 894 01:02:33,000 --> 01:02:38,000 at iyon ay magdadala sa log ng n, mag-log ng 1 milyong beses. 895 01:02:38,000 --> 01:02:40,000 >> Bubble-uuri. 896 01:02:40,000 --> 01:02:43,000 Ka ba guys tandaan ang bubble-uuri algorithm? 897 01:02:43,000 --> 01:02:47,000 Kevin, maaari ba ninyo akong bigyan ng isang mabilis na pagbabalik-tanaw ng kung ano ang nangyari sa bubble-uuri algorithm? 898 01:02:47,000 --> 01:02:50,000 [Kevin] talaga ito napupunta sa pamamagitan ng lahat sa listahan. 899 01:02:50,000 --> 01:02:52,000 Mukhang sa unang dalawang. 900 01:02:52,000 --> 01:02:55,000 Kung ang unang isa ay mas malaki kaysa sa ikalawang isa ito swaps kanila. 901 01:02:55,000 --> 01:02:58,000 At ihahambing nito pangalawa at pangatlong, parehong bagay, swaps, 902 01:02:58,000 --> 01:03:00,000 ikatlo at ikaapat, ang lahat ng mga paraan pababa. 903 01:03:00,000 --> 01:03:03,000 Mas malaking numero ay follow up sa dulo. 904 01:03:03,000 --> 01:03:07,000 At pagkatapos gayunpaman maraming loop tapos ka na. 905 01:03:07,000 --> 01:03:11,000 Eksakto, kaya kung ano ang Kevin sinabi na namin manood ng mga mas malaking numero 906 01:03:11,000 --> 01:03:15,000 bubble hanggang sa dulo ng array. 907 01:03:15,000 --> 01:03:19,000 Halimbawa, tututol ba kayo sa paglalakad sa amin sa pamamagitan ng halimbawa na ito kung ito ang aming array? 908 01:03:19,000 --> 01:03:21,000 [Kevin] Makikita mo na aabot ng 2 at 3. 909 01:03:21,000 --> 01:03:23,000 3 ay mas malaki kaysa sa 2, kaya swap mo sa kanila. 910 01:03:23,000 --> 01:03:29,000 [Nate H.] Kanan, kaya namin magpalitan mga ito, at kaya nakukuha namin 2, 3, 6, 4, at 9. 911 01:03:29,000 --> 01:03:31,000 [Kevin] Pagkatapos mong ihambing ang 3 at 6. 912 01:03:31,000 --> 01:03:33,000 3 ay mas maliit sa 6, kaya mong iwanan ang mga ito, 913 01:03:33,000 --> 01:03:37,000 at 6 at 4, na nais mong swap sa kanila dahil 4 mas maliit kaysa sa 6. 914 01:03:37,000 --> 01:03:42,000 [Nate H.] Kanan, kaya nakukuha ko 2, 3, 4, 6, 9. 915 01:03:42,000 --> 01:03:46,000 [Kevin] At 9 ay mas malaki kaysa sa 6, kaya mong iwanan ito. 916 01:03:46,000 --> 01:03:48,000 At nais mong bumalik muli sa pamamagitan nito. 917 01:03:48,000 --> 01:03:50,000 >> [Nate H.] ba ako gawin sa puntong ito? >> [Kevin] No. 918 01:03:50,000 --> 01:03:52,000 At bakit ako hindi tapos na sa puntong ito? 919 01:03:52,000 --> 01:03:54,000 Dahil mukhang ang aking array ay pinagsunod-sunod. Naghahanap ako sa ito. 920 01:03:54,000 --> 01:03:57,000 [Kevin] Pumunta sa pamamagitan nito muli at tiyakin na wala nang swaps 921 01:03:57,000 --> 01:04:00,000 bago maaari mong ganap na itigil. 922 01:04:00,000 --> 01:04:04,000 Eksakto, kaya kailangan mo upang mapanatili ang pagpunta sa pamamagitan at tiyakin na walang mga swaps 923 01:04:04,000 --> 01:04:06,000 na maaari mong sa puntong ito. 924 01:04:06,000 --> 01:04:08,000 Ito ay talagang lamang masuwerteng, tulad ng sinabi mo, na natapos na namin hanggang 925 01:04:08,000 --> 01:04:12,000 lamang kinakailangang 1 pass sa pamamagitan ng at kami ay pinagsunod-sunod. 926 01:04:12,000 --> 01:04:16,000 Ngunit upang gawin ito sa pangkalahatang kaso makikita namin ang aktwal na upang gawin ito nang paulit-ulit. 927 01:04:16,000 --> 01:04:20,000 At sa katunayan, ito ay isang halimbawa ng ang pinakamahusay na posibleng kaso, 928 01:04:20,000 --> 01:04:24,000 tulad ng nakita natin sa problema. 929 01:04:24,000 --> 01:04:28,000 Nakita namin na ang pinakamahusay na posibleng kaso ay n. 930 01:04:28,000 --> 01:04:32,000 Nagpunta kami sa pamamagitan ng oras array 1. 931 01:04:32,000 --> 01:04:35,000 Ano ang pinakamasama posibleng kaso para sa algorithm na ito? 932 01:04:35,000 --> 01:04:37,000 [Kevin] N ². 933 01:04:37,000 --> 01:04:41,000 At kung ano ang hitsura na gusto? Ano ang isang array itsura na tumagal ng n ² oras? 934 01:04:41,000 --> 01:04:43,000 [Kevin] [hindi marinig] pinagsunod-sunod. 935 01:04:43,000 --> 01:04:51,000 Eksakto, kaya kung ako ay ang array 9, 7, 6, 5, 2, 936 01:04:51,000 --> 01:04:54,000 muna sa 9 na gagawin bubble ang lahat ng mga paraan. 937 01:04:54,000 --> 01:04:59,000 Pagkatapos ng 1-ulit, nais naming 7, 6, 5, 2, 9. 938 01:04:59,000 --> 01:05:07,000 Pagkatapos 7 gagawin bubble up, 6, 5, 2, 7, 9, at iba pa at iba pa. 939 01:05:07,000 --> 01:05:13,000 >> Gusto namin upang pumunta sa pamamagitan ng buong array n beses, 940 01:05:13,000 --> 01:05:16,000 at maaari mong aktwal na makakuha ng bahagyang mas tumpak na kaysa ito 941 01:05:16,000 --> 01:05:23,000 dahil sa sandaling kami ay inilipat sa 9 na ang lahat ng mga paraan sa nito huling posibleng posisyon 942 01:05:23,000 --> 01:05:26,000 Alam namin na hindi namin upang ihambing laban sa na elemento muli. 943 01:05:26,000 --> 01:05:29,000 Sa sandaling simulan namin bulubok ng 7 hanggang 944 01:05:29,000 --> 01:05:35,000 alam namin na maaari naming ihinto sa sandaling ang 7 bago ang 9 945 01:05:35,000 --> 01:05:37,000 dahil kami kumpara sa 9 dito. 946 01:05:37,000 --> 01:05:46,000 Kung gagawin mo ito sa isang smart paraan hindi tunay, hulaan ko, na karaming oras. 947 01:05:46,000 --> 01:05:49,000 Hindi ka upang ihambing ang lahat ng mga posibleng [hindi marinig] kumbinasyon 948 01:05:49,000 --> 01:05:55,000 bawat solong oras na pumunta ka sa pamamagitan ng bawat pag-ulit. 949 01:05:55,000 --> 01:05:59,000 Ngunit pa rin, kapag makipag-usap namin tungkol sa itaas bound sabihin namin na 950 01:05:59,000 --> 01:06:04,000 tumitingin ka sa n ² paghahambing sa lahat ng mga paraan sa pamamagitan ng. 951 01:06:04,000 --> 01:06:12,000 >> Natin bumalik, at dahil kami ay nagsisimula upang makakuha ng kaunti maikling sa oras 952 01:06:12,000 --> 01:06:15,000 Gusto ko sabihin dapat mo talagang pumunta sa pamamagitan ng iba pang mga bahagi ng talahanayan na ito, 953 01:06:15,000 --> 01:06:17,000 punan ang lahat ng ito out. 954 01:06:17,000 --> 01:06:20,000 Isip ng mga halimbawa. Isipin ng kongkreto halimbawa. 955 01:06:20,000 --> 01:06:22,000 Iyon ay talagang madaling gamiting at kapaki-pakinabang na gawin. 956 01:06:22,000 --> 01:06:25,000 Gumuhit ito. 957 01:06:25,000 --> 01:06:28,000 Ito ang uri ng talahanayan na bilang pumunta ka sa pamamagitan ng sa computer science 958 01:06:28,000 --> 01:06:32,000 Dapat mo ba talagang simulan upang malaman ito sa pamamagitan ng puso. 959 01:06:32,000 --> 01:06:34,000 Ito ay ang mga uri ng mga katanungan na nakukuha mo sa interbyu. 960 01:06:34,000 --> 01:06:36,000 Ito ang mga uri ng mga bagay na ang mga mahusay na malaman, 961 01:06:36,000 --> 01:06:41,000 at isipin ang tungkol sa mga kaso ng gilid, talagang pag-uunawa kung paano mag-isip tungkol sa 962 01:06:41,000 --> 01:06:45,000 alam na para sa bubble ayusin ang pinakamasama posibleng array 963 01:06:45,000 --> 01:06:52,000 upang pag-uri-uriin na iyon ay isa na sa reverse pagkakasunud-sunod. 964 01:06:52,000 --> 01:06:58,000 >> Payo. Natin makipag-usap ng kaunti tungkol sa mga payo. 965 01:06:58,000 --> 01:07:03,000 Sa huling ilang minuto na mayroon kami dito 966 01:07:03,000 --> 01:07:11,000 Alam ko na ito ay isang bagay kasama ang file I / O na sa halip bagong. 967 01:07:11,000 --> 01:07:19,000 Kapag makipag-usap namin tungkol sa mga payo sa ang dahilan na gusto naming makipag-usap tungkol sa mga payo 968 01:07:19,000 --> 01:07:24,000 ay dahil, isa, kapag kami ay nagtatrabaho sa C 969 01:07:24,000 --> 01:07:33,000 kami ay talagang sa isang medyo mababa antas kumpara sa mga pinaka-modernong mga wika programming. 970 01:07:33,000 --> 01:07:38,000 Humihingi kami ng aktwal na magagawang upang manipulahin ang mga variable sa memorya, 971 01:07:38,000 --> 01:07:43,000 malaman kung saan aktwal na ito ay matatagpuan sa loob ng aming RAM. 972 01:07:43,000 --> 01:07:46,000 Sa sandaling na-nawala sa tumagal ang mga klase ng operating system makikita mo 973 01:07:46,000 --> 01:07:48,000 na, muli, ang uri ng isang abstraction. 974 01:07:48,000 --> 01:07:50,000 Iyon ay hindi aktwal na ang kaso. 975 01:07:50,000 --> 01:07:52,000 Mayroon kaming virtual memory na itinatago ang mga detalye mula sa amin. 976 01:07:52,000 --> 01:07:58,000 >> Ngunit sa ngayon, maaari mong ipagpalagay na kapag mayroon kang isang programa, 977 01:07:58,000 --> 01:08:02,000 halimbawa, kapag simulan mo ang pagpapatakbo ng iyong programa sa Caesar cipher- 978 01:08:02,000 --> 01:08:06,000 Kukunin ko na bumalik sa aking iPad talagang mabilis- 979 01:08:06,000 --> 01:08:12,000 na sa napaka-simula sa programa ng iyong, kung mayroon kang, sabihin nating, 980 01:08:12,000 --> 01:08:15,000 4 gigabytes ng RAM sa iyong laptop, 981 01:08:15,000 --> 01:08:21,000 na makukuha mo magtabi tigkal na ito, at kami na tumawag ito RAM. 982 01:08:21,000 --> 01:08:25,000 At ito ay nagsisimula sa isang lugar na kami ay pagpunta sa tumawag sa 0, 983 01:08:25,000 --> 01:08:30,000 at ito ay nagtatapos sa isang lugar na kami tatawag sa 4 gigabytes. 984 01:08:30,000 --> 01:08:37,000 Ko talagang hindi maaaring sumulat. Tao, na-hack. 985 01:08:37,000 --> 01:08:40,000 Kapag ang iyong programa executes 986 01:08:40,000 --> 01:08:44,000 carves ang operating system RAM, 987 01:08:44,000 --> 01:08:51,000 at tinutukoy ito ng iba't ibang mga segment para sa mga iba't ibang mga bahagi ng iyong programa upang mabuhay. 988 01:08:51,000 --> 01:08:58,000 Down dito ang lugar na ito ay uri ng lupa walang tao. 989 01:08:58,000 --> 01:09:02,000 Kapag kang pumunta ng kaunti mas malayo dito 990 01:09:02,000 --> 01:09:05,000 Mayroon aktwal na lugar kung saan 991 01:09:05,000 --> 01:09:09,000 ang code para sa iyong buhay sa programa. 992 01:09:09,000 --> 01:09:13,000 Na aktwal na binary code, ang aktwal na executable file ay makakakuha ng load sa memory 993 01:09:13,000 --> 01:09:17,000 kapag nagpatakbo ka ng programa, at naninirahan sa segment ng code. 994 01:09:17,000 --> 01:09:22,000 At ng iyong programa executes processor tumitingin sa segment na ito ng code 995 01:09:22,000 --> 01:09:24,000 upang malaman kung ano ang susunod na pagtuturo? 996 01:09:24,000 --> 01:09:27,000 Ano ang susunod na linya ng code na kailangan ko upang maisagawa? 997 01:09:27,000 --> 01:09:31,000 >> Mayroon ding isang segment ng data, at ito ay kung saan ang mga string constants 998 01:09:31,000 --> 01:09:34,000 makakuha ng naka-imbak na na ginagamit mo. 999 01:09:34,000 --> 01:09:42,000 At pagkatapos ay mas malayo hanggang sa lugar na ito na tinatawag na magbunton. 1000 01:09:42,000 --> 01:09:46,000 Namin ma-access ang memory sa doon sa pamamagitan ng paggamit ng malloc, 1001 01:09:46,000 --> 01:09:49,000 at pagkatapos ay patungo sa pinakatuktok ng iyong programa 1002 01:09:49,000 --> 01:09:52,000 may stack ang, 1003 01:09:52,000 --> 01:09:57,000 at na kung saan kami ay nagpe-play para sa karamihan ng simula. 1004 01:09:57,000 --> 01:09:59,000 Na ito ay hindi sa scale o anumang. 1005 01:09:59,000 --> 01:10:03,000 Isang maraming ng ito ay napaka machine nakasalalay, 1006 01:10:03,000 --> 01:10:10,000 operating system nakasalalay, ngunit ito ay medyo kung paano ang mga bagay ay makapag-chunked up. 1007 01:10:10,000 --> 01:10:17,000 Kapag nagpatakbo ka ng isang programa at ipinapahayag isang variable na tinatawag na x- 1008 01:10:17,000 --> 01:10:27,000 Pupunta ako upang gumuhit ng isa pang kahon pababa sa ibaba, at ito ay pagpunta sa RAM pati na rin. 1009 01:10:27,000 --> 01:10:29,000 At ako pagpunta sa hitsura. 1010 01:10:29,000 --> 01:10:34,000 Namin gumuhit ng mga tulis-tulis na linya upang ipahiwatig ito ay lamang ng isang maliit na seksyon ng RAM 1011 01:10:34,000 --> 01:10:38,000 at hindi lahat ng ito bilang gumuhit namin sa tuktok. 1012 01:10:38,000 --> 01:10:43,000 >> Kung idedeklara ko ang isang integer variable na tinatawag na x, 1013 01:10:43,000 --> 01:10:49,000 pagkatapos sa aking aktwal na makakuha ng pagma-map 1014 01:10:49,000 --> 01:10:54,000 na naka-imbak sa simbolo talahanayan ng aking mga programa 1015 01:10:54,000 --> 01:11:00,000 na nag-uugnay ang pangalan x sa rehiyon na ito ng memory ko ang iginuhit 1016 01:11:00,000 --> 01:11:03,000 dito mismo sa pagitan ng vertical bar. 1017 01:11:03,000 --> 01:11:08,000 Kung mayroon akong isang linya ng code sa aking programa na nagsasabing x = 7 1018 01:11:08,000 --> 01:11:15,000 processor alam ng "Oh, okay, alam ko na x buhay sa lokasyong ito sa memory." 1019 01:11:15,000 --> 01:11:25,000 "Ako pagpunta upang magpatuloy at magsulat ng 7 doon." 1020 01:11:25,000 --> 01:11:28,000 Paano gumagana ang alam kung ano ang lokasyon na ito sa memory? 1021 01:11:28,000 --> 01:11:30,000 Well, na ang lahat tapos sa makatipon oras. 1022 01:11:30,000 --> 01:11:34,000 Tagatala ay tumatagal ng pag-aalaga ng paglaan ng kung saan ang bawat isa sa mga variable upang pumunta 1023 01:11:34,000 --> 01:11:40,000 at paglikha ng isang espesyal na pagma-map o sa halip na sa pagkonekta sa mga tuldok 1024 01:11:40,000 --> 01:11:43,000 sa pagitan ng isang simbolo at kung saan ito ang nangyayari, pangalan ng variable 1025 01:11:43,000 --> 01:11:46,000 at kung saan ito upang mabuhay sa memorya. 1026 01:11:46,000 --> 01:11:50,000 Ngunit ito lumiliko namin aktwal na ma-access ito sa aming mga programa pati na rin. 1027 01:11:50,000 --> 01:11:55,000 Ito ay nakakakuha ng mahalagang kapag sinimulan namin ang pakikipag-usap tungkol sa ilang ng ang istraktura ng data, 1028 01:11:55,000 --> 01:11:58,000 kung saan ay isang konsepto na kami ay pagpunta sa ipakilala sa paglaon. 1029 01:11:58,000 --> 01:12:09,000 >> Ngunit sa ngayon, kung ano ang maaari mong malaman ay na maaari ba akong lumikha ng isang pointer sa lokasyon na ito, x. 1030 01:12:09,000 --> 01:12:12,000 Halimbawa, maaari ba akong lumikha ng isang variable ng pointer. 1031 01:12:12,000 --> 01:12:16,000 Kapag lumikha kami ng pointer variable ginagamit namin ang star pagtatanda. 1032 01:12:16,000 --> 01:12:21,000 Sa kasong ito, ito sabi ako pagpunta upang lumikha ng isang pointer sa isang int. 1033 01:12:21,000 --> 01:12:24,000 Ito ay isang uri ng tulad ng anumang iba pang. 1034 01:12:24,000 --> 01:12:27,000 Namin bigyan ito ng isang variable tulad ng y, 1035 01:12:27,000 --> 01:12:32,000 at pagkatapos namin-set katumbas ng address, sa isang address. 1036 01:12:32,000 --> 01:12:38,000 Sa kasong ito, maaari naming itakda ang y upang tumuro sa x 1037 01:12:38,000 --> 01:12:43,000 sa pamamagitan ng paglalaan ng address ng x, na aming ginagawa na may ganitong ampersand, 1038 01:12:43,000 --> 01:12:55,000 at pagkatapos namin-set y upang ituro dito. 1039 01:12:55,000 --> 01:12:59,000 Ano ito ay mahalagang kung tinitingnan namin ang aming RAM 1040 01:12:59,000 --> 01:13:02,000 ito ay lumilikha ng isang hiwalay na variable. 1041 01:13:02,000 --> 01:13:04,000 Ito ay pagpunta sa tumawag ito y, 1042 01:13:04,000 --> 01:13:06,000 at kapag ang linya ng code executes 1043 01:13:06,000 --> 01:13:13,000 aktwal na ito upang lumikha ng isang maliit na pointer kung saan namin karaniwang gumuhit bilang isang arrow, 1044 01:13:13,000 --> 01:13:15,000 at nagtatakda y upang tumuro sa x. 1045 01:13:15,000 --> 01:13:17,000 Oo. 1046 01:13:17,000 --> 01:13:19,000 [Mag-aaral] Kung x ay isang pointer, nais mong lang gawin 1047 01:13:19,000 --> 01:13:22,000 int * y = x sa halip ng pagkakaroon ng ampersand? 1048 01:13:22,000 --> 01:13:24,000 Oo. 1049 01:13:24,000 --> 01:13:27,000 Kung ang x ay isang pointer, maaari mong itakda sa 2 pointer katumbas sa bawat isa, 1050 01:13:27,000 --> 01:13:30,000 kung saan ay hindi y ay tumuturo sa x, 1051 01:13:30,000 --> 01:13:34,000 ngunit tumuturo sa anumang x ay tumuturo sa. 1052 01:13:34,000 --> 01:13:37,000 Sa kasamaang-palad, hindi namin ng oras. 1053 01:13:37,000 --> 01:13:44,000 >> Ano ang gusto kong sabihin sa puntong ito, maaari naming makipag-usap tungkol sa offline, 1054 01:13:44,000 --> 01:13:49,000 ngunit Gusto ko sabihin simulan ang nagtatrabaho sa pamamagitan ng ang problemang ito, # 14. 1055 01:13:49,000 --> 01:13:53,000 Maaari mong makita may nang kaunti napunan na para sa iyo dito. 1056 01:13:53,000 --> 01:13:57,000 Maaari mong makita na kapag idedeklara namin ang 2 pointer, int * x at * y, 1057 01:13:57,000 --> 01:14:01,000 at tandaan na pagturo ng ang * sa tabi variable ay isang bagay na nagawa noong nakaraang taon. 1058 01:14:01,000 --> 01:14:05,000 Ito lumiliko out na ito ay katulad sa kung anong ginagawa namin sa taong ito. 1059 01:14:05,000 --> 01:14:11,000 Hindi mahalaga kung saan mo isulat ang * kapag ikaw ay deklarasyon ang pointer. 1060 01:14:11,000 --> 01:14:17,000 Ngunit namin nakasulat * sa tabi ang uri 1061 01:14:17,000 --> 01:14:24,000 dahil na ginagawang napakalinaw ka deklarasyon ng variable ng pointer. 1062 01:14:24,000 --> 01:14:27,000 Maaari mong makita na ang deklarasyon sa 2 pointer ay nagbibigay sa amin ng 2 kahon. 1063 01:14:27,000 --> 01:14:31,000 Dito kapag kami ng x katumbas sa malloc 1064 01:14:31,000 --> 01:14:34,000 kung ano ito ay sinasabi-set muna memory sa magbunton. 1065 01:14:34,000 --> 01:14:41,000 Ito maliit na kahon dito mismo, ang lupon na ito, ay matatagpuan sa magbunton. 1066 01:14:41,000 --> 01:14:43,000 X ay nakaturo dito. 1067 01:14:43,000 --> 01:14:46,000 Tandaan na ang y ay hindi pa rin na tumuturo sa anumang. 1068 01:14:46,000 --> 01:14:50,000 Upang makakuha ng memorya upang mag-imbak ang numero 42 sa x 1069 01:14:50,000 --> 01:14:55,000 Gusto naming gamitin kung ano ang pagtatanda? 1070 01:14:55,000 --> 01:14:59,000 [Mag-aaral] * x = 42. 1071 01:14:59,000 --> 01:15:01,000 Eksakto, * x = 42. 1072 01:15:01,000 --> 01:15:06,000 Nangangahulugan iyon na sundin ang mga arrow at magtapon 42 sa doon. 1073 01:15:06,000 --> 01:15:09,000 Narito kung saan namin-set ang y at x y namin na tumuturo sa x. 1074 01:15:09,000 --> 01:15:13,000 Muli, ito ay tulad lamang ng kung ano ang sinabi ng Kevin kung saan namin-set y katumbas ng x. 1075 01:15:13,000 --> 01:15:15,000 Y ay hindi na tumuturo sa x. 1076 01:15:15,000 --> 01:15:19,000 Sa halip, ito ay nagtuturo sa kung ano ang x ay tumuturo sa pati na rin. 1077 01:15:19,000 --> 01:15:24,000 >> At pagkatapos ay sa wakas sa huling box may 2 posibleng bagay na maaari naming gawin. 1078 01:15:24,000 --> 01:15:28,000 Isa ay maaaring namin sabihin * x = 13. 1079 01:15:28,000 --> 01:15:33,000 Ang iba pang bagay ay namin sabihin Alex, alam mo ano ang maaari naming gawin dito? 1080 01:15:33,000 --> 01:15:37,000 Maaari mong sabihin * x = 13 o- 1081 01:15:37,000 --> 01:15:41,000 [Mag-aaral] Maaari mong sabihin na ang int anumang. 1082 01:15:41,000 --> 01:15:45,000 [Nate H.] Kung ito ay tinutukoy bilang isang int variable maaari naming gawin iyon. 1083 01:15:45,000 --> 01:15:49,000 Din namin sabihin * y = 13 dahil sila ay parehong na tumuturo sa parehong lugar, 1084 01:15:49,000 --> 01:15:51,000 upang maaari naming gamitin ang alinman sa variable upang makakuha ng doon. 1085 01:15:51,000 --> 01:15:56,000 Oo. >> [Mag-aaral] Ano ang hitsura nito ay magiging tulad ng kung lamang namin sabihin int x 13? 1086 01:15:56,000 --> 01:16:00,000 Na deklarasyon ng isang bagong variable na tinatawag na x, na hindi gagana. 1087 01:16:00,000 --> 01:16:04,000 Gusto naming magkaroon ng isang banggaan dahil ipinahayag namin x isang pointer dito. 1088 01:16:04,000 --> 01:16:10,000 [Mag-aaral] Kung lamang namin ay na pahayag sa pamamagitan ng mismo kung ano ang hitsura nito ay magiging tulad ng sa mga tuntunin ng bilog? 1089 01:16:10,000 --> 01:16:14,000 Kung nagkaroon kami x = 13 pagkatapos nais naming magkaroon ng isang kahon, at sa halip ng pagkakaroon ng isang arrow 1090 01:16:14,000 --> 01:16:16,000 darating ng kahon gusto namin gumuhit ang mga ito bilang lamang 13. 1091 01:16:16,000 --> 01:16:19,000 [Mag-aaral] Sa kahon. Okay. 1092 01:16:19,000 --> 01:16:24,000 >> Salamat sa iyo para sa panonood, at good luck sa Quiz 0. 1093 01:16:24,000 --> 01:16:28,000 [CS50.TV]