1 00:00:07,420 --> 00:00:08,160 [Powered by Google Translate] David J. MALAN: Lahat ng karapatan. 2 00:00:08,160 --> 00:00:11,170 Ito ay CS50, at ito ay ang katapusan ng linggo dalawang. 3 00:00:11,170 --> 00:00:14,650 Kung inaasahan mo na gutom sa paligid ng oras na ito bukas, alam na namin ang pagpunta 4 00:00:14,650 --> 00:00:18,920 upang magtipun-tipon bilang isang maliit na grupo bukas, Huwebes, 1:15. 5 00:00:18,920 --> 00:00:21,460 Mayroon dito ang URL na ito kung nais mong i-RSVP. 6 00:00:21,460 --> 00:00:25,270 Space ay limitado, kaya mangyaring patawarin kung ang form ay napuno ng oras 7 00:00:25,270 --> 00:00:26,680 punan ito. 8 00:00:26,680 --> 00:00:29,400 Isa pang URL kahit na maaaring maging ng interes ito. 9 00:00:29,400 --> 00:00:32,409 >> Kaya sa loob lamang tungkol sa oras ng isang buwan, ang kurso ang pagpunta sa ginawang magagamit 10 00:00:32,409 --> 00:00:36,090 ang lahat ng mga mas malawak sa pamamagitan ng edX, sa pamamagitan ng kung saan ang mga tao sa Internet ay 11 00:00:36,090 --> 00:00:39,580 sumunod, makisali sa kurso aktibong medyo, sa katunayan. 12 00:00:39,580 --> 00:00:43,070 Makikita nila gamit ang CS50 Appliance at CS50 talakayin at karamihan ng 13 00:00:43,070 --> 00:00:45,840 iba't-ibang mga software tool na aming nai-gamit ito semestre. 14 00:00:45,840 --> 00:00:49,030 At isa sa mga hakbangin sa nais naming gumawa ng bilang isang eksperimento sa taong ito 15 00:00:49,030 --> 00:00:53,120 upang makita lamang kung magkano ang nilalaman maaari naming isalin sa iba pang mga sinasalita at 16 00:00:53,120 --> 00:00:54,110 nakasulat na wika. 17 00:00:54,110 --> 00:00:58,000 Kaya kung maaaring mayroon ka ng interes sa mga kalahok sa proyektong ito, kung saan 18 00:00:58,000 --> 00:01:02,090 magbibigay kami ng Ingles mga transcript at subtitle para sa kurso 19 00:01:02,090 --> 00:01:05,190 aralin at shorts at mga seminar at mga seksyon at ang mga tulad ng - 20 00:01:05,190 --> 00:01:08,700 kung nagsasalita ka matatas o isulat ang ilang iba pang mga wika matatas, gagawin namin 21 00:01:08,700 --> 00:01:12,240 ibigin upang makisali sa proyektong ito, kung saan mong gawin sa isa o higit pa sa mga 22 00:01:12,240 --> 00:01:15,340 video, na-translate ang mga ito sa isang wika na alam mo medyo na rin. 23 00:01:15,340 --> 00:01:19,050 Upang bigyan ka ng isang pakiramdam ng interface, mayroong ang web-based na interface ng gumagamit 24 00:01:19,050 --> 00:01:22,330 na kami gumagamit na lumikha ng mahalagang ng UI tulad nito. 25 00:01:22,330 --> 00:01:24,520 Ito sa akin ang pagtuturo ng ilang Halloween nakalipas. 26 00:01:24,520 --> 00:01:27,710 At sa kanang bahagi doon sa itim na susunod sa mga selyo ng oras, 27 00:01:27,710 --> 00:01:31,300 makikita mo ang iba't-ibang mga bagay na dumating out ng aking bibig sa araw na iyon. 28 00:01:31,300 --> 00:01:34,660 At pagkatapos ay sa ibaba nito, makikita mo magagawang isalin sa ilang iba pang mga wika. 29 00:01:34,660 --> 00:01:37,840 Eksakto kung ano ang pagma-map ay sa pagitan ng, sa kasong ito, Ingles 30 00:01:37,840 --> 00:01:38,660 at, sabihin nating, Espanyol. 31 00:01:38,660 --> 00:01:40,480 Kaya ito ay talagang isang napaka-user-friendly na tool. 32 00:01:40,480 --> 00:01:43,690 Maaari mong i-rewind at fast forward napaka kaagad na may mga shortcut sa keyboard. 33 00:01:43,690 --> 00:01:46,710 Kaya kung nais mong makibahagi sa eksperimentong ito at ang iyong mga salita 34 00:01:46,710 --> 00:01:50,730 nakita at basahin sa pamamagitan ng mga potensyal na libo-libong mga tao out doon, mangyaring huwag pakiramdam 35 00:01:50,730 --> 00:01:51,960 -atubiling upang lumahok. 36 00:01:51,960 --> 00:01:56,940 >> Ngayon isang salita tungkol sa mga kuting mula Lunes, baka nagpadala kami ng isang labis 37 00:01:56,940 --> 00:01:58,120 nakakatakot mensahe. 38 00:01:58,120 --> 00:02:02,130 Gawin Napagtanto na ng mga oras sa opisina iminumungkahi at bilang mga seksyon iminumungkahi, ang 39 00:02:02,130 --> 00:02:05,110 disenyo ng kurso ay napaka na mga mag-aaral pakikipagtulungan at 40 00:02:05,110 --> 00:02:09,250 pakikipag-usap sa pamamagitan ng set ng problema at mga problema sama-sama. 41 00:02:09,250 --> 00:02:13,630 At talagang linya lamang ay down sa, muli, work ka sa huli 42 00:02:13,630 --> 00:02:16,420 dapat isumite ang dapat iyong sariling. 43 00:02:16,420 --> 00:02:19,080 At kaya ito, medyo totoo lang - sa oras ng opisina, lubos na normal - 44 00:02:19,080 --> 00:02:21,560 lubos na ito na inaasahan, kahit na - na pakikipag-chat na may ilang 45 00:02:21,560 --> 00:02:22,370 kaibigan sa tabi mo. 46 00:02:22,370 --> 00:02:25,240 Kung siya ay struggling na may ilang mga paksa, at hindi tulad ng, oh, ipaalam na rin 47 00:02:25,240 --> 00:02:27,750 sa akin magbibigay sa iyo ng isang sulyap ng ilang linya ng code na sinulat ni ko. 48 00:02:27,750 --> 00:02:28,290 Iyon ay pinong. 49 00:02:28,290 --> 00:02:28,700 Nangyari iyon. 50 00:02:28,700 --> 00:02:31,580 At na ay masyadong mas kaaya-aya, tingin ko, sa proseso ng pag-aaral. 51 00:02:31,580 --> 00:02:35,270 Kung saan ang mga linya, muli, ay makakakuha ng tumawid kapag ang ulo ang uri ng tagilid sa paglipas ng 52 00:02:35,270 --> 00:02:38,800 dito para sa malayo masyadong maraming mga segundo o minuto para sa talagang magkaroon ng 53 00:02:38,800 --> 00:02:41,250 isang unblock pagkakataon para sa iyong mga kaibigan. 54 00:02:41,250 --> 00:02:43,870 At tiyak, kapag mga bagay na makapag-palitan sa pamamagitan ng email at Dropbox at 55 00:02:43,870 --> 00:02:45,350 tulad ng, doon ay ang linya. 56 00:02:45,350 --> 00:02:48,940 Kaya ng lahat ng paraan, kumportable at pakiramdam hinihikayat upang makipag-chat sa mga kaibigan 57 00:02:48,940 --> 00:02:51,270 at mga kaklase tungkol sa mga psets at higit pa. 58 00:02:51,270 --> 00:02:54,680 At lamang Napagtanto na kung ano ang huli magsumite dapat talagang maging 59 00:02:54,680 --> 00:02:57,780 produkto ng iyong paglikha at hindi ibang tao. 60 00:02:57,780 --> 00:03:01,010 >> Kaya sa parehong ugat ng cuddly nilalang, maaari mo 61 00:03:01,010 --> 00:03:02,820 alam ng tao na ito dito. 62 00:03:02,820 --> 00:03:06,180 Kaya ito ay isang horrifically cheesy pelikula mula sa taon na ang nakakaraan. 63 00:03:06,180 --> 00:03:08,680 Sinuman dito nakikita Spaceballs? 64 00:03:08,680 --> 00:03:09,120 Ayos lang. 65 00:03:09,120 --> 00:03:10,220 Kaya ang isang mahusay na numero dito. 66 00:03:10,220 --> 00:03:13,840 Kaya ito ay aming kamangha-mangha akademikong paraan ng nagpapakilala ngayon sa huli 67 00:03:13,840 --> 00:03:15,130 ang paniwala ng cryptography. 68 00:03:15,130 --> 00:03:19,010 At kaya isa ng domain partikular na mga problema para sa pset 2, na kung saan ay darating 69 00:03:19,010 --> 00:03:22,770 out late bukas gabi, ay sumisid sa mundo ng cryptography, na 70 00:03:22,770 --> 00:03:26,380 ay ang sining ng pag-encrypt o scrambling ng impormasyon. 71 00:03:26,380 --> 00:03:30,160 At ito huli nauugnay sa mundo ng seguridad. 72 00:03:30,160 --> 00:03:34,440 >> Ngayon seguridad para sa karamihan sa amin ay sa anyo ng mga mekanismo medyo pangmundo. 73 00:03:34,440 --> 00:03:36,920 Lahat sa atin ay may username at password. 74 00:03:36,920 --> 00:03:41,350 At ang lahat ng sa atin ay may napaka-masamang username at password, malamang. 75 00:03:41,350 --> 00:03:45,250 Kung ang iyong password ay ang parehong sa maramihang mga website, na malamang na hindi 76 00:03:45,250 --> 00:03:47,920 ang pinakamahusay na ideya, bilang namin talakayin patungo sa pagtatapos ng semestre. 77 00:03:47,920 --> 00:03:51,680 Kung ang iyong password ay nakasulat sa isang sticky tandaan - walang magsisti - sa iyong 78 00:03:51,680 --> 00:03:55,130 subaybay, na masyadong ay hindi kinakailangan ang pinakamahusay na disenyo ngunit lubos sa isang karaniwang 79 00:03:55,130 --> 00:03:56,140 kababalaghan. 80 00:03:56,140 --> 00:04:00,420 At kung hindi ka gumagamit ng cryptography upang i-encrypt ang iyong mga password, ang mga ito ay 81 00:04:00,420 --> 00:04:01,610 partikular na mahina. 82 00:04:01,610 --> 00:04:04,670 Kaya kung sa tingin mo ay pagiging sobrang matalino sa pamamagitan ng pagkakaroon ng isang nakatagong Salita 83 00:04:04,670 --> 00:04:07,740 idokumento ang isang lugar sa iyong hard drive na may lahat ng iyong mga password ngunit 84 00:04:07,740 --> 00:04:10,550 ito sa isang folder na walang pagpunta sa tumingin sa, na masyadong ay hindi isang napaka- 85 00:04:10,550 --> 00:04:11,540 secure na mekanismo. 86 00:04:11,540 --> 00:04:15,100 At kaya kung ano pset 2 ay ipakilala ito sining ng cryptography at 87 00:04:15,100 --> 00:04:18,300 scrambling impormasyon upang ang mga bagay na tulad ng mga password 88 00:04:18,300 --> 00:04:19,500 ang lahat ng mga mas ligtas. 89 00:04:19,500 --> 00:04:24,500 Upang ganyakin ang napaka-real-mundo na problema sa isang napaka-non-real-mundo 90 00:04:24,500 --> 00:04:28,740 sitwasyon, hayaan mo akong ipakilala ka sa isa sa aming mga paboritong mga clip dito mula sa 91 00:04:28,740 --> 00:04:29,895 pelikula, Spaceballs. 92 00:04:29,895 --> 00:04:30,565 >> [Playback ng video] 93 00:04:30,565 --> 00:04:32,995 -Helmet, halimaw na tao, kung ano ang nangyayari sa? 94 00:04:32,995 --> 00:04:34,730 Ano ang iyong ginagawa sa aking anak na babae? 95 00:04:34,730 --> 00:04:38,960 -Pinahihintulutan sa akin upang ipakilala ang mga makikinang na batang plastic siruhano, Dr Philip 96 00:04:38,960 --> 00:04:43,290 Schlotkin, ang pinakamalaking ilong trabaho tao sa buong 97 00:04:43,290 --> 00:04:45,526 sansinukob at Beverly Hills. 98 00:04:45,526 --> 00:04:46,450 -Ang iyong kamahalan. 99 00:04:46,450 --> 00:04:47,380 -Ilong trabaho? 100 00:04:47,380 --> 00:04:48,035 Hindi ko maintindihan. 101 00:04:48,035 --> 00:04:49,480 Na siya nagkaroon ng ilong trabaho. 102 00:04:49,480 --> 00:04:51,490 Ito ay isang matamis na 16 kasalukuyan. 103 00:04:51,490 --> 00:04:53,090 -Hindi, hindi kung ano ang iyong palagay. 104 00:04:53,090 --> 00:04:55,150 Ito ay magkano, magkano ang mas masahol pa. 105 00:04:55,150 --> 00:04:59,860 Kung hindi mo akong bigyan ang kumbinasyon sa kalasag air, Dr. Schlotkin ay 106 00:04:59,860 --> 00:05:04,135 bigyan ang iyong anak na babae ang kanyang lumang ilong. 107 00:05:04,135 --> 00:05:05,385 -Hindi! 108 00:05:08,202 --> 00:05:10,186 Saan mo makakuha ng na? 109 00:05:10,186 --> 00:05:11,178 -Lahat ng karapatan. 110 00:05:11,178 --> 00:05:11,674 Ko masasabi. 111 00:05:11,674 --> 00:05:12,666 Ko masasabi. 112 00:05:12,666 --> 00:05:14,154 -Hindi, tatay, hindi. 113 00:05:14,154 --> 00:05:15,150 Hindi ka dapat. 114 00:05:15,150 --> 00:05:16,460 -You're karapatan, ang aking mahal. 115 00:05:16,460 --> 00:05:18,450 Kukunin ko na makaligtaan ang iyong bagong ilong. 116 00:05:18,450 --> 00:05:21,550 Ngunit hindi ko sabihin sa kanila ang kumbinasyon ng kahit na ano. 117 00:05:21,550 --> 00:05:23,100 -Napakaluwag na rin. 118 00:05:23,100 --> 00:05:25,510 Dr. Schlotkin, ang iyong pinakamasama. 119 00:05:25,510 --> 00:05:26,760 Aking kasiyahan. 120 00:05:30,560 --> 00:05:31,180 -Hindi! 121 00:05:31,180 --> 00:05:33,450 Maghintay, maghintay. 122 00:05:33,450 --> 00:05:34,770 Ko masasabi. 123 00:05:34,770 --> 00:05:36,400 Ko masasabi. 124 00:05:36,400 --> 00:05:38,630 -Alam ko na ito gumagana. 125 00:05:38,630 --> 00:05:42,040 Lahat ng karapatan, bigyan ito sa akin. 126 00:05:42,040 --> 00:05:46,890 -Ang kumbinasyon ay isa. 127 00:05:46,890 --> 00:05:47,290 -Isa. 128 00:05:47,290 --> 00:05:48,183 -Isa. 129 00:05:48,183 --> 00:05:48,950 -Dalawang. 130 00:05:48,950 --> 00:05:49,370 -Dalawang. 131 00:05:49,370 --> 00:05:50,450 -Dalawang. 132 00:05:50,450 --> 00:05:50,715 -Tatlong 133 00:05:50,715 --> 00:05:51,380 -Tatlong. 134 00:05:51,380 --> 00:05:52,390 -Tatlong. 135 00:05:52,390 --> 00:05:53,200 -Four. 136 00:05:53,200 --> 00:05:53,720 -Four. 137 00:05:53,720 --> 00:05:55,830 -Four. 138 00:05:55,830 --> 00:05:56,580 -Limang 139 00:05:56,580 --> 00:05:57,120 -Limang. 140 00:05:57,120 --> 00:05:58,560 -Limang. 141 00:05:58,560 --> 00:06:03,770 -Kaya ang kumbinasyon ay isa, dalawa, tatlo, apat, limang. 142 00:06:03,770 --> 00:06:06,745 Iyon ay ang stupidest kumbinasyon narinig ko kailanman sa aking buhay. 143 00:06:06,745 --> 00:06:09,290 Na ang uri ng bagay na tulala isang sa kanyang luggage. 144 00:06:09,290 --> 00:06:11,540 Salamat, ang iyong kamahalan. 145 00:06:11,540 --> 00:06:12,940 -Ano ang gagawin mo? 146 00:06:12,940 --> 00:06:14,230 Na naka-off ako sa pader. 147 00:06:14,230 --> 00:06:14,630 -Hindi, hindi. 148 00:06:14,630 --> 00:06:15,430 Mong naka-off ang buong pelikula. 149 00:06:15,430 --> 00:06:16,722 -Dapat ko pinindot maling button. 150 00:06:16,722 --> 00:06:18,078 -Well, ilagay ito pabalik sa. 151 00:06:18,078 --> 00:06:18,805 Maglagay ng pelikula muli. 152 00:06:18,805 --> 00:06:19,080 -Oo, ginoo. 153 00:06:19,080 --> 00:06:19,270 Oo, ginoo. 154 00:06:19,270 --> 00:06:19,830 -Natin pumunta, Erna. 155 00:06:19,830 --> 00:06:20,270 Halika, Gretchen. 156 00:06:20,270 --> 00:06:22,850 Siyempre alam mo Mayroon pa akong upang singilin ka para sa. 157 00:06:27,400 --> 00:06:28,325 -Well, ito gumagana? 158 00:06:28,325 --> 00:06:29,550 Saan ang gate? 159 00:06:29,550 --> 00:06:29,910 -Nagtrabaho ito, ginoo. 160 00:06:29,910 --> 00:06:30,770 Mayroon namin ang kumbinasyon. 161 00:06:30,770 --> 00:06:31,390 -Mahusay. 162 00:06:31,390 --> 00:06:35,630 Ngayon ay maaari namin ang bawat huling hininga ng sariwang hangin mula sa planeta Druidia. 163 00:06:35,630 --> 00:06:36,550 Ano ang kumbinasyon? 164 00:06:36,550 --> 00:06:38,805 -Isa, dalawa, tatlo, apat, limang. 165 00:06:38,805 --> 00:06:40,610 -Isa, dalawa, tatlo, apat, limang? 166 00:06:40,610 --> 00:06:41,070 -Oo. 167 00:06:41,070 --> 00:06:41,760 -Iyon ang mga kamangha-manghang. 168 00:06:41,760 --> 00:06:45,200 Mayroon akong ang parehong kumbinasyon sa aking bagahe. 169 00:06:45,200 --> 00:06:47,800 Maghanda Spaceball 1 para sa agarang pag-alis. 170 00:06:47,800 --> 00:06:48,536 -Oo, ginoo. 171 00:06:48,536 --> 00:06:52,350 -At baguhin ang kumbinasyon sa aking bagahe. 172 00:06:52,350 --> 00:06:53,250 -Kita ang! 173 00:06:53,250 --> 00:06:55,020 [END video playback] 174 00:06:55,020 --> 00:06:57,470 >> David J. MALAN: isang kamangha-manghang pelikula na dapat mong ngayon lahat makita. 175 00:07:00,600 --> 00:07:06,540 Kaya ang konteksto dito na may mga hindi secure na data ay isang pagkakataon upang 176 00:07:06,540 --> 00:07:07,790 -encrypt ang mga ito at upang mang-uayabit ito. 177 00:07:07,790 --> 00:07:11,060 At kaya ito, halimbawa, ay isang halimbawa ng isang naka-encrypt na mensahe. 178 00:07:11,060 --> 00:07:12,980 Ito aktwal na nagsasabing ang isang bagay sa Ingles. 179 00:07:12,980 --> 00:07:14,750 Ngunit ito ay malinaw na hindi ganap na pag halata. 180 00:07:14,750 --> 00:07:17,360 At kami na dumating ang buong lupon ngayon upang manunudyo bukod kung ano ang lihim 181 00:07:17,360 --> 00:07:18,380 mensahe dito ay. 182 00:07:18,380 --> 00:07:22,370 Ngunit sa tunay na mundo ng mga computer, mga bagay ay hindi kahit hitsura maaari sila 183 00:07:22,370 --> 00:07:23,440 na Ingles parirala. 184 00:07:23,440 --> 00:07:27,500 Halimbawa, ito ay kung ano ang maaari mong makita sa isang karaniwang Linux o Mac o 185 00:07:27,500 --> 00:07:32,080 Unix computer sa isang file na minsan ay tinatawag na ang password ng file. 186 00:07:32,080 --> 00:07:34,170 Kasalukuyan, ito ay inilipat sa iba pang mga lugar. 187 00:07:34,170 --> 00:07:38,660 Subalit kung titingnan mo sa tamang lugar sa isang sistema, makikita mo ang hindi lamang ang iyong 188 00:07:38,660 --> 00:07:41,430 username o ng iba pang mga tao sa system, ngunit makikita mo ang isang 189 00:07:41,430 --> 00:07:43,410 -encrypt na bersyon ng kanilang mga password. 190 00:07:43,410 --> 00:07:47,800 Sa katunayan, ang salitang silid sa ilalim ng lupa doon ay nagmumungkahi na ang mga sumusunod na bagay ay naka-encrypt. 191 00:07:47,800 --> 00:07:52,030 At ito serye ng mga tila random na titik at mga character at numero at 192 00:07:52,030 --> 00:07:56,370 iba pa ay maaaring decrypted lamang ng pangkalahatang alam ilang lihim - 193 00:07:56,370 --> 00:07:58,600 ng isang lihim na salita, ng isang lihim na numero. 194 00:07:58,600 --> 00:08:02,760 At kaya katunayan, ang sining ng cryptography sa huli kahulihan babagsak ito upang magtiwala ng ilang 195 00:08:02,760 --> 00:08:05,700 -uri-uriin at alam ng isang bagay na ang ibang tao ay hindi. 196 00:08:05,700 --> 00:08:10,010 Susubukan naming galugarin ito ng kaunti pang detalye ngayon at sa pset sa darating. 197 00:08:10,010 --> 00:08:11,860 >> At ngayon ng isang salita sa pass / mabibigo. 198 00:08:11,860 --> 00:08:15,250 Kaya lalo, bilang ilang mga mo dived sa pset 1, ang appliance, at 199 00:08:15,250 --> 00:08:18,390 isang bagong mundo para sa iyong sarili, natanto na frustrations at 200 00:08:18,390 --> 00:08:21,340 pagkalito at teknikal na paghihirap na inaasahan. 201 00:08:21,340 --> 00:08:24,410 Lalo na ang unang pset, kung saan may lamang kaya magkano bagong, pagkuha 202 00:08:24,410 --> 00:08:28,830 pamilyar sa ls at cd at ang lahat ng mga arcane utos sa isang bagong kapaligiran. 203 00:08:28,830 --> 00:08:32,679 At na hiwalay mula sa aktwal na materyal at mga programa mismo. 204 00:08:32,679 --> 00:08:35,960 Kaya Napagtanto, masyadong, na may mga tiyak na mga oras ng opisina na umiiral bilang 205 00:08:35,960 --> 00:08:36,770 ang istraktura ng suporta. 206 00:08:36,770 --> 00:08:38,620 Mga seksyon simulan ito darating na Linggo. 207 00:08:38,620 --> 00:08:41,990 Ngunit pinaka-mahalaga, kung ikaw ay pakiramdam lamang na ito ay hindi ang 208 00:08:41,990 --> 00:08:44,420 mundo para sa iyo, mapagtanto na ito ay talagang ay lamang tumagal ng oras. 209 00:08:44,420 --> 00:08:47,520 At mga hindi para sa pagkakataon na ito taon na ang nakakaraan para sa akin ng pagkuha ng isang klase 210 00:08:47,520 --> 00:08:50,840 pumasa / mabibigo, totoo lang, hindi ko sana ay kahit nakatakda paa sa silid-aralan. 211 00:08:50,840 --> 00:08:53,520 At maaari mong baguhin ito hanggang, sabihin nating, sa ikalimang Lunes ng kurso. 212 00:08:53,520 --> 00:08:57,110 Kaya kung ikaw ay sa dulo ngayon, nauunawaan natin na kaysa sa ulo sa ilang iba pang mga 213 00:08:57,110 --> 00:09:01,000 tubig sa kabuuan, tiyak na isaalang-alang lamang pagbabago upang pumasa / mabibigo. 214 00:09:01,000 --> 00:09:03,750 Muli, hindi talaga ito kultura dito sa Harvard ng pagkuha ng mga bagay-bagay 215 00:09:03,750 --> 00:09:08,080 pumasa / mabibigo dahil lahat talagang nais upang makamit o overachieve. 216 00:09:08,080 --> 00:09:11,470 Subalit lantaran, ito ay isang magandang paraan ng sinusubukan ng isang bagay out na maaaring hindi 217 00:09:11,470 --> 00:09:13,110 maging pamilyar sa iyo. 218 00:09:13,110 --> 00:09:17,090 At makikita mo magtapos ginagawa sa karamihan ng mga kaso medyo fine, marahil 219 00:09:17,090 --> 00:09:18,040 magkano sa iyong sorpresa. 220 00:09:18,040 --> 00:09:20,850 At sa mas kongkreto mga tuntunin, kung ano ang tingin ko pumasa / mabibigo pangkalahatan ginagawa, 221 00:09:20,850 --> 00:09:23,350 lalo na kung maaari mong naranasan sa pset 0, kung mo inilagay ang 222 00:09:23,350 --> 00:09:27,200 sa 10 oras, 15 oras, 25 oras sa ilang pset - at ka banging 223 00:09:27,200 --> 00:09:28,180 ang iyong ulo laban sa pader, 224 00:09:28,180 --> 00:09:29,850 at nakakakuha ito ng sobrang late sa gabi, 225 00:09:29,850 --> 00:09:31,880 ngunit nagsagawa ang pset tulad ng 90% ng paraan, 226 00:09:31,880 --> 00:09:33,780 alam mo mo lamang ay hindi maaaring malaman kung ang isang bagay - 227 00:09:33,780 --> 00:09:36,830 pumasa / mabibigo talagang tumatagal sa gilid ng isang klase tulad nito, kung saan maaari mong pag-uri-uriin 228 00:09:36,830 --> 00:09:39,150 ng maligaya sabihin okay, alam ko hindi perpekto. 229 00:09:39,150 --> 00:09:40,470 Ngunit nagtrabaho ako sa aking puwit-off ito. 230 00:09:40,470 --> 00:09:42,410 Ako medyo masaya sa kung saan ito napunta. 231 00:09:42,410 --> 00:09:44,780 At iyon ay matugunan ang mga inaasahan para sa pass / mabibigo. 232 00:09:44,780 --> 00:09:46,850 Kaya panatilihin na sa isip. 233 00:09:46,850 --> 00:09:47,140 >> Ayos lang. 234 00:09:47,140 --> 00:09:50,980 Kaya mga mo na struggled gamitin ang Harvard University Wi-Fi alam 235 00:09:50,980 --> 00:09:54,780 na may CS50 SSID, Wi-Fi connection lumulutang sa paligid na 236 00:09:54,780 --> 00:09:56,520 maaaring magkaroon ng mas mahusay na swerte para sa. 237 00:09:56,520 --> 00:09:59,430 Ito ay isang maliit na tumbalik na ang password para sa - kung nais mong upang subukan 238 00:09:59,430 --> 00:10:03,080 sa pagkonekta sa ito para sa mas mahusay na bilis at ipaalam sa amin kung hindi mas mahusay na - 239 00:10:03,080 --> 00:10:09,240 isa, dalawa, tatlo, apat, limang, ang lahat ng mga paraan ng hanggang sa walong dahil walong ay 240 00:10:09,240 --> 00:10:10,270 mas secure sa limang. 241 00:10:10,270 --> 00:10:15,520 Kaya kung kailangan mo ang Wi-Fi password, kumonekta sa CS50 wireless dito. 242 00:10:15,520 --> 00:10:16,950 Isa, dalawa, tatlo, apat, limang, anim, pitong, walong. 243 00:10:16,950 --> 00:10:20,440 At mag-post sa CS50-usapan kung mayroon ka pa ring mga pasulput-sulpot na mga isyu sa pagkakakonekta, 244 00:10:20,440 --> 00:10:24,880 at ipapaalam namin ang mga kapangyarihan na ay malaman para sa puwang na ito. 245 00:10:24,880 --> 00:10:25,180 >> Ayos lang. 246 00:10:25,180 --> 00:10:30,350 Kaya isang mabilis na teaser, lalo na para sa mga mo na fan lalaki o babae 247 00:10:30,350 --> 00:10:31,900 ng lahat ng mga bagay na Apple. 248 00:10:31,900 --> 00:10:37,566 Ano ko utong up mula sa ilang taon na pabalik ang file na ito dito, ilock.c, upang 249 00:10:37,566 --> 00:10:40,930 uri ng mas kongkreto at mas kumplikadong ilan ng mas basic C 250 00:10:40,930 --> 00:10:42,350 programa namin ang pagsusulat. 251 00:10:42,350 --> 00:10:44,360 Kaya ko binuksan ang file na ito, ilock.c. 252 00:10:44,360 --> 00:10:46,830 Magagamit sa pahina ng aralin para sa ngayon. 253 00:10:46,830 --> 00:10:49,470 Sa kaliwang bahagi, makikita mo ang isang mahabang listahan ng mga function. 254 00:10:49,470 --> 00:10:51,860 Kaya ang kapwa na sinulat ni ito sinulat ni ng maraming mga function, 255 00:10:51,860 --> 00:10:53,290 higit pa sa pangunahing. 256 00:10:53,290 --> 00:10:55,490 Siya ay gumamit ng isang buong grupo ng mga aklatan dito. 257 00:10:55,490 --> 00:11:00,450 At kung sisimulan namin ang scroll sa pamamagitan ng, kung ano ang talaga ang napaka 258 00:11:00,450 --> 00:11:04,670 una, tingin ko, magpahaginit para sa orihinal na iPhone. 259 00:11:04,670 --> 00:11:08,000 Kapag nais mong jailbreak ang orihinal na iPhone, na nangangahulugan untether 260 00:11:08,000 --> 00:11:11,800 ito mula sa AT & T at aktwal na-install ng espesyal na software sa ito at gawin ang mga bagay 261 00:11:11,800 --> 00:11:13,510 na Apple ay hindi gusto ng mga tao na gawin - 262 00:11:13,510 --> 00:11:17,020 mahusay, may kinuha ang oras upang malaman kung eksakto kung paano sila ay maaaring samantalahin 263 00:11:17,020 --> 00:11:20,880 flaws ng software, mga pagkakamali, mga bug, sa Apple ng software. 264 00:11:20,880 --> 00:11:22,650 At sa gayon ay ipinanganak ilock.c. 265 00:11:22,650 --> 00:11:26,670 Na kung pinagsama-sama ito sa isang computer at mai-install ito sa isang iPhone na 266 00:11:26,670 --> 00:11:29,810 ay konektado sa iyong computer sa pamamagitan ng, sabihin nating, isang USB cable, ito ay magbibigay sa iyo 267 00:11:29,810 --> 00:11:33,360 -administratibo o ugat na mga pribilehiyo sa iyong iPhone at hayaan ang gawin mo medyo magkano 268 00:11:33,360 --> 00:11:34,170 kahit anong gusto mo. 269 00:11:34,170 --> 00:11:36,740 >> At kaya mayroong nangyaring ito kamangha-manghang cat at mouse laro sa pagitan ng Apple at 270 00:11:36,740 --> 00:11:39,920 ang natitirang bahagi ng mundo sa mga partikular na habang ang mga ito, tulad ng maraming mga kumpanya, subukan upang i-lock 271 00:11:39,920 --> 00:11:43,220 kanilang mga bagay-bagay down sa gayon ay maaari mo lamang gawin sa mga ito kung ano ang iyong nilalayong sila. 272 00:11:43,220 --> 00:11:46,620 Ngunit salamat sa mga taong tulad nito at ang kanilang pang-unawa ng mababang antas 273 00:11:46,620 --> 00:11:50,580 mga detalye at, sa kasong ito, C programming at ng maraming ng pamilyar na constructs 274 00:11:50,580 --> 00:11:54,630 na namin nasimulan ang paglalaro, ikaw ay sa talagang magamit ang 275 00:11:54,630 --> 00:11:59,050 hardware sa paraan na nakikita mong akma at hindi kinakailangan ang ilang corporate entity. 276 00:11:59,050 --> 00:12:01,360 Kaya halimbawa, mayroon akong walang ideya kung ano ang lahat ng ito ay ginagawa. 277 00:12:01,360 --> 00:12:03,220 Ngunit GetVersion tunog medyo direkta. 278 00:12:03,220 --> 00:12:05,480 At Mukhang ito ay isang function na ang taong ito sinulat ni. 279 00:12:05,480 --> 00:12:09,240 Kumuha ng ilang mga uri ng integer bilang isang argument, hindi bumalik anumang, ngunit 280 00:12:09,240 --> 00:12:13,080 Lumilitaw na loop sa isang para sa loop dito at kung kundisyon, kung kondisyon, 281 00:12:13,080 --> 00:12:15,620 masira, at sa paanuman nauugnay sa numero ng bersyon. 282 00:12:15,620 --> 00:12:16,700 Kung mag-scroll pababa namin - 283 00:12:16,700 --> 00:12:19,570 kahit na ng maraming ng mga keyword na ito ay pagpunta sa bagong, at mayroong isang 284 00:12:19,570 --> 00:12:22,590 buong maraming mga function in dito ay hindi kailanman nakakita kami at maaaring hindi kailanman makita sa paglipas ng 285 00:12:22,590 --> 00:12:23,830 kurso ng semestre - 286 00:12:23,830 --> 00:12:27,150 sa pagtatapos ng araw, ito ay sumusunod sa parehong mga alituntunin at logic na kami 287 00:12:27,150 --> 00:12:28,760 nagpe-play na may sa gayon malayo. 288 00:12:28,760 --> 00:12:34,220 Kaya ito ay malayo masyadong luma sa magpahaginit ang iyong iPhone 3s o 4s o madaling 5s, mga araw na ito, 289 00:12:34,220 --> 00:12:37,320 ngunit alam na ito ang lahat ng napaka nakuha mula sa mundo na ito na namin 290 00:12:37,320 --> 00:12:38,430 dived sa. 291 00:12:38,430 --> 00:12:41,900 >> Kaya sabihin tumagal ng isang pagtingin sa isang kaunti pa simpleng halimbawa. 292 00:12:41,900 --> 00:12:46,100 Ang isang ito, lamang upang warmed up na may ilang syntax at ilang iba pang data 293 00:12:46,100 --> 00:12:49,240 uri na uusapang namin ang tungkol sa ngunit hindi talaga nakita sa C. Kaya ito ay isang 294 00:12:49,240 --> 00:12:51,680 file na tinatawag na positive1.c. 295 00:12:51,680 --> 00:12:55,120 At bawat ang mga komento sa itaas, ito lamang hinihingi na ang isang gumagamit ay magbigay ng 296 00:12:55,120 --> 00:12:55,960 positibong numero. 297 00:12:55,960 --> 00:12:59,530 Kaya ito ay isang halimbawa ng do-habang loop, na maganda para sa user interactive 298 00:12:59,530 --> 00:13:01,980 programa kung saan kailangan mong sabihin sa user na gawin ang isang bagay. 299 00:13:01,980 --> 00:13:05,190 At kung hindi sila makikipagtulungan, sumigaw sa kanila o tanggihan ang kanilang mga input. 300 00:13:05,190 --> 00:13:11,610 Kaso sa point, ako pagpunta sa gawin ang mga linya 19 sa pamamagitan ng 24 kaya mahaba ng gumagamit ay 301 00:13:11,610 --> 00:13:14,310 hindi ibinigay sa akin ng isang positibong numero. 302 00:13:14,310 --> 00:13:20,400 Ngayon ito detalye dito sa linya 18, bakit ko idedeklara n itaas ang buong 303 00:13:20,400 --> 00:13:24,490 looping bumuo kumpara sa tabi mismo sa linya 22 kung saan ako 304 00:13:24,490 --> 00:13:26,880 aktwal na pinapahalagahan upang makakuha n? 305 00:13:26,880 --> 00:13:27,330 Oo? 306 00:13:27,330 --> 00:13:27,780 [Hindi marinig] 307 00:13:27,780 --> 00:13:29,040 >> David J. MALAN: Oo, kaya ang isyu na ito ng saklaw. 308 00:13:29,040 --> 00:13:30,850 At sa termino ng karaniwang tao, ano ang saklaw sumangguni sa? 309 00:13:34,690 --> 00:13:36,610 Oo? 310 00:13:36,610 --> 00:13:37,860 [Hindi marinig] 311 00:13:40,040 --> 00:13:41,105 David J. MALAN: Maaari mo bang makipag-usap ng kaunti louder? 312 00:13:41,105 --> 00:13:43,450 Speaker 1: Saan maaari mong ma-access ang isang partikular na variable. 313 00:13:43,450 --> 00:13:45,170 David J. MALAN: Perpekto. 314 00:13:45,170 --> 00:13:47,360 Kung saan maaari mong ma-access ang isang partikular na variable. 315 00:13:47,360 --> 00:13:50,400 At sa pangkalahatan, ang pamantayan sa gayon ay malayo ay na ang mga saklaw ng ilang 316 00:13:50,400 --> 00:13:55,860 variable ay tinukoy sa pamamagitan ng ang pinakabagong kulot tirante na nakita mo. 317 00:13:55,860 --> 00:14:02,010 At kaya sa kasong ito, kung ako ginawa ang pagkakamali ng deklarasyon n sa linya 22, 318 00:14:02,010 --> 00:14:03,010 linya na gumagana. 319 00:14:03,010 --> 00:14:10,990 Gusto ko ng isang int, at ko bang ilagay ang mga ito sa na variable n sa linya 22. 320 00:14:10,990 --> 00:14:16,900 Ngunit kung aling linya ng code na ngayong magkaroon ng walang ideya kung ano ang ako ng pakikipag-usap tungkol sa? 321 00:14:16,900 --> 00:14:22,650 Kaya 25, at ito ay lumiliko out 24, pati na rin, dahil sa kasong ito, Nabibilang ang labas 322 00:14:22,650 --> 00:14:23,610 ng kulot tirante. 323 00:14:23,610 --> 00:14:27,280 Kaya lamang ng kaunti ng isang istorbo ngunit lalong madaling malutas sa pamamagitan ng simpleng deklarasyon 324 00:14:27,280 --> 00:14:30,140 variable sa labas ng function na mismo. 325 00:14:30,140 --> 00:14:32,600 >> Ngayon ay makikita namin makita mamaya ngayon, maaari kang pumunta isang hakbang karagdagang. 326 00:14:32,600 --> 00:14:34,860 At maaari mong kahit na makakuha ng isang maliit na tamad - 327 00:14:34,860 --> 00:14:37,320 at ito ay hindi na inirerekomenda, sa pangkalahatan - 328 00:14:37,320 --> 00:14:42,260 ngunit maaari mong kahit na makakuha ng tamad at maglagay ng isang variable sa buong mundo, kaya na magsalita, hindi 329 00:14:42,260 --> 00:14:46,670 sa loob ng isang function, hindi sa loob ng isang loop, ngunit sa ang file mismo, sa labas 330 00:14:46,670 --> 00:14:49,600 ng lahat ng mga pagpapaandar na naisulat, tulad ng ginawa ko dito sa linya 15. 331 00:14:49,600 --> 00:14:51,160 Ngunit ito ay karaniwang frowned kapag. 332 00:14:51,160 --> 00:14:55,680 Ngunit mapagtanto na ito ay isang solusyon sa minsan sa iba pang mga problema, bibigyan namin ng 333 00:14:55,680 --> 00:14:56,620 ay makakita. 334 00:14:56,620 --> 00:14:58,130 Kaya sa ngayon, ipapakita namin iwanan ito tulad nito. 335 00:14:58,130 --> 00:15:01,030 Ngunit sabihin makita kung maaari naming muling isulat ito lamang upang simulan ang pagpapahayag ng ating sarili sa isang 336 00:15:01,030 --> 00:15:01,990 kaunti naiiba. 337 00:15:01,990 --> 00:15:05,330 >> Kaya programang ito, upang maging malinaw, ay positive1. 338 00:15:05,330 --> 00:15:11,810 Hayaan akong magpatuloy dito at sa aking terminal na window positive1, Ipasok. 339 00:15:11,810 --> 00:15:12,740 Compiles, okay. 340 00:15:12,740 --> 00:15:14,910 Ako pagpunta upang patakbuhin ang positive1, pindutin ang Enter. 341 00:15:14,910 --> 00:15:16,820 Hinihiling ko na ba ninyo akong bigyan ng isang positibong integer. 342 00:15:16,820 --> 00:15:18,260 Sasabihin kong -1. 343 00:15:18,260 --> 00:15:18,910 Na ay hindi gumagana. 344 00:15:18,910 --> 00:15:22,150 0, 99, na tila upang gumana. 345 00:15:22,150 --> 00:15:23,570 Siguro hindi ang pinaka-mahigpit na pagsubok. 346 00:15:23,570 --> 00:15:26,480 Ngunit hindi bababa sa gandang check katinuan na hindi namin sa kanan track. 347 00:15:26,480 --> 00:15:29,240 Kaya ngayon hayaan mo akong sige at buksan ang dalawang bersyon ng ito. 348 00:15:29,240 --> 00:15:32,500 At kung ano ay naiiba na? 349 00:15:32,500 --> 00:15:35,140 Ipinapatupad ang parehong bagay. 350 00:15:35,140 --> 00:15:40,660 Ngunit kung ano ang paglukso bilang malinaw iba't ibang oras na ito? 351 00:15:40,660 --> 00:15:42,560 Oo, kaya ito bool sa berde. 352 00:15:42,560 --> 00:15:45,980 Gedit ay naka-highlight sa berde ang keyword na ito na kilala bilang bool, 353 00:15:45,980 --> 00:15:47,000 kung saan ay isang uri ng data. 354 00:15:47,000 --> 00:15:51,080 Bakit hindi ito built in sa lahat ng mga bersyon ng C. Kailangan mong magsama ng isang 355 00:15:51,080 --> 00:15:52,010 tukoy na library. 356 00:15:52,010 --> 00:15:54,770 Sa aming kaso, kasama ko CS50 library upang namin 357 00:15:54,770 --> 00:15:56,460 magkaroon ng access sa bool. 358 00:15:56,460 --> 00:15:59,810 Ngunit sa ika-18 linya, tila namin upang magkaroon ng isang Boolean halaga dito tinatawag na nagpapasalamat. 359 00:15:59,810 --> 00:16:01,040 Kaya ko tinatawag na anumang ito. 360 00:16:01,040 --> 00:16:04,500 Ngunit ko na tinatawag na ito nagpapasalamat lamang uri ng ihatid ang ilang semantiko kahulugan. 361 00:16:04,500 --> 00:16:07,930 Kaya simula sa linya 18, ako tila hindi nagpapasalamat dahil ang 362 00:16:07,930 --> 00:16:12,150 Boolean halaga nagpapasalamat nasimulan sa False sa linya 18. 363 00:16:12,150 --> 00:16:16,890 At pagkatapos ay tila kung ano ang nagawa ko na dito sa linya 21 sa pamamagitan ng 23 lamang ko na 364 00:16:16,890 --> 00:16:18,610 uri ng rewritten aking logic. 365 00:16:18,610 --> 00:16:21,020 Kaya walang pagtakbo ibang. 366 00:16:21,020 --> 00:16:26,940 Ngunit sa linya 22 ngayon, check ko kung int ang gumagamit ay mas malaki kaysa sa 367 00:16:26,940 --> 00:16:31,120 0, pagkatapos ko lamang baguhin ang halaga ng nagpapasalamat sa true. 368 00:16:31,120 --> 00:16:32,290 At kung bakit ang gagawin ko na? 369 00:16:32,290 --> 00:16:35,600 Dahil sa linya 25, tila, ako pagpunta upang suriin ang isang kalagayan. 370 00:16:35,600 --> 00:16:39,380 Gawin ito sa loop habang nagpapasalamat false. 371 00:16:39,380 --> 00:16:43,610 >> Kaya ko magpanukala na ito bilang isang kahalili sa bersyon isa dahil ito ay hindi bababa sa isang 372 00:16:43,610 --> 00:16:45,130 maliit na mas madaling maunawaan, marahil. 373 00:16:45,130 --> 00:16:46,900 Ito ng kaunti pa grawnded sa Ingles. 374 00:16:46,900 --> 00:16:51,710 Kaya gawin ang mga sumusunod habang ikaw ay hindi nagpapasalamat o habang nagpapasalamat false. 375 00:16:51,710 --> 00:16:55,890 At oras na ito, masyadong, ako tila hindi pakialam sa matandaan kung ano ang user-type 376 00:16:55,890 --> 00:16:57,730 dahil paunawa hindi variable n. 377 00:16:57,730 --> 00:16:58,650 Sa aktwal, ako - 378 00:16:58,650 --> 00:17:00,080 isang maliit na maliit na kasinungalingan doon. 379 00:17:00,080 --> 00:17:02,770 Pagtakbo, ang programa bit naiiba sandaling makuha namin sa ilalim ng 380 00:17:02,770 --> 00:17:04,819 ito dahil hindi ako alala kung ano n ay. 381 00:17:04,819 --> 00:17:09,579 Subalit Nais kong upang ipakita dito masyadong na kahit na nakakita kami ng GetInt at 382 00:17:09,579 --> 00:17:13,920 GetString ginagamit sa kanang bahagi ng isang katumbas sign samakatuwid ay malayo sa gayon ay 383 00:17:13,920 --> 00:17:17,160 tandaan namin ang halaga, technically, na hindi mahigpit na kinakailangan. 384 00:17:17,160 --> 00:17:20,950 Kung para sa anumang dahilan mo lamang ay hindi pakialam sa i-save ang halaga, gusto mo lang 385 00:17:20,950 --> 00:17:25,710 upang suriin ang halaga, mapansin na maaari lamang namin magsulat ito bilang GetInt bukas 386 00:17:25,710 --> 00:17:27,000 paren, malapit paren. 387 00:17:27,000 --> 00:17:30,460 Na function ay nagbabalik ng halaga, bilang namin ang sinasabi. 388 00:17:30,460 --> 00:17:32,010 Ito ay upang bigyan ka ng isang int. 389 00:17:32,010 --> 00:17:36,450 At kaya kung ikaw itak tingin na ito mangyari, kapag ako ay nag-type sa 99, GetInt 390 00:17:36,450 --> 00:17:38,160 nagbabalik ang numero 99. 391 00:17:38,160 --> 00:17:41,330 At kaya conceptually, na parang ang aking code ay aktwal na ito. 392 00:17:41,330 --> 00:17:45,880 Kaya kung 99 ay talagang mas malaki kaysa sa 0, pagkatapos ay nagpapasalamat nagiging totoo. 393 00:17:45,880 --> 00:17:50,420 Pagkatapos linya 25 napagtanto ooh, kami ay tapos na dahil ako ngayon nagpapasalamat. 394 00:17:50,420 --> 00:17:54,590 At sa ika-26 linya, lamang namin sinasabi, Salamat para sa positibong integer, anumang ito 395 00:17:54,590 --> 00:17:55,710 nangyari na. 396 00:17:55,710 --> 00:17:58,900 >> Ngayon sabihin gawin bahagyang sintaktik asukal dito, kaya na magsalita. 397 00:17:58,900 --> 00:18:02,990 Natin makita kung maaari naming linisin ang line 25 na ito ikatlong at huling pag-iiba 398 00:18:02,990 --> 00:18:04,640 sa positive3. 399 00:18:04,640 --> 00:18:08,250 Kaya mapansin ang pagkakaiba lamang ngayon ay kung ano ang linya ng code? 400 00:18:11,930 --> 00:18:13,260 Oo, kaya 25. 401 00:18:13,260 --> 00:18:15,520 At hindi kami talagang nakikita nanlilinlang ito pa. 402 00:18:15,520 --> 00:18:19,510 Ngunit ginawa namin makita ang exclamation point sa Monday, na Nagpapahiwatig ng kung ano? 403 00:18:19,510 --> 00:18:20,970 Kaya hindi, o pagkakaila. 404 00:18:20,970 --> 00:18:23,460 Kaya tumagal ng Boolean halaga at i-flip ang halaga nito. 405 00:18:23,460 --> 00:18:24,390 Totoo nagiging maling. 406 00:18:24,390 --> 00:18:25,500 Maling nagiging totoo. 407 00:18:25,500 --> 00:18:28,910 Kaya ito, nais kong ipanukala, ay kahit isang maliit na mas madaling maunawaan ng isang paraan ng 408 00:18:28,910 --> 00:18:32,200 pagsulat ang code dahil ko pa rin initialize nagpapasalamat sa maling. 409 00:18:32,200 --> 00:18:33,530 Pa rin ba akong gawin ang mga sumusunod. 410 00:18:33,530 --> 00:18:35,700 Ako magse-set nagpapasalamat sa true kapag may oras ang pagdating. 411 00:18:35,700 --> 00:18:40,690 Ngunit ngayon maaari mong talagang lamang isalin ang code na ito pasalita kaliwa hanggang kanang, 412 00:18:40,690 --> 00:18:42,550 habang hindi nagpapasalamat. 413 00:18:42,550 --> 00:18:46,170 Dahil putok, o exclamation point, Nagpapahiwatig ang paniwala ng hindi, kaya habang 414 00:18:46,170 --> 00:18:47,010 hindi nagpapasalamat. 415 00:18:47,010 --> 00:18:49,740 >> Kaya muli, hindi namin ipinakilala ng anumang mga bagong konsepto per se. 416 00:18:49,740 --> 00:18:53,230 Namin ang uusapang tungkol Booleans pabalik kapag naglaro namin na may scratch. 417 00:18:53,230 --> 00:18:55,690 Ngunit ngayon Napagtanto Maaari lang namin simulan ang pagsusulat ang aming code sa 418 00:18:55,690 --> 00:18:56,550 maraming iba't ibang paraan. 419 00:18:56,550 --> 00:19:00,010 Kaya lalo na sa pset1, kung ikaw ay ang uri ng struggling upang malaman kung ang paraan upang 420 00:19:00,010 --> 00:19:03,400 sumulat ng ilang programa, odds ay nasa swerte dahil mayroong pagpunta sa anumang 421 00:19:03,400 --> 00:19:05,780 bilang ng mga solusyon na maaari mong mangyayari kapag. 422 00:19:05,780 --> 00:19:09,850 Halimbawa, ito ay tatlo lamang para sa kahit na ang pinakasimpleng ng mga programa. 423 00:19:09,850 --> 00:19:10,180 Ayos lang. 424 00:19:10,180 --> 00:19:13,860 At ngayon isipin ang sa Lunes, iniwanan namin sa ang tala na ito sa mga halaga ng return. 425 00:19:13,860 --> 00:19:18,280 Kaya para sa unang pagkakataon, kami nagsulat ng programa na hindi lamang magkaroon ng mga pangunahing, 426 00:19:18,280 --> 00:19:22,240 ito din ay may sariling pasadyang function na sinulat ni ko dito. 427 00:19:22,240 --> 00:19:26,640 Kaya sa linya 31 sa pamamagitan ng 34, naipatupad ko na ang isang kubo function na. 428 00:19:26,640 --> 00:19:27,800 Hindi complex. 429 00:19:27,800 --> 00:19:29,830 Lang isang beses sa isang beses sa isang, sa kasong ito. 430 00:19:29,830 --> 00:19:34,920 Ngunit kung ano ang mahalaga tungkol dito na ako pagkuha ng input sa form ng isang at 431 00:19:34,920 --> 00:19:38,910 Ako bumabalik output sa form ng isang beses sa isang beses sa isang. 432 00:19:38,910 --> 00:19:43,940 >> Kaya ngayon mayroon akong kakayahan, na halos tulad na ginamit ko upang may printf nag-iisa, na tumawag sa 433 00:19:43,940 --> 00:19:47,120 ang function na ito sa pamamagitan ng pagtawag sa function na kubo. 434 00:19:47,120 --> 00:19:49,470 At ang kubo function na tumatagal ng ilang mga input. 435 00:19:49,470 --> 00:19:52,030 At ang kubo function na nagbabalik ilang output. 436 00:19:52,030 --> 00:19:56,660 At ito sa pamamagitan ng kaibahan, printf ginawang isang bagay. 437 00:19:56,660 --> 00:19:59,490 Hindi ito ibalik anumang bagay na namin cared tungkol sa - kahit na, bilang isang 438 00:19:59,490 --> 00:20:00,820 bukod, ang nagbabalik ng halaga. 439 00:20:00,820 --> 00:20:02,650 Mo lamang sa pangkalahatan huwag pansinin ito. 440 00:20:02,650 --> 00:20:04,000 Printf ginawang isang bagay. 441 00:20:04,000 --> 00:20:06,220 Ito ay isang bahagi epekto ng pag-print sa screen. 442 00:20:06,220 --> 00:20:09,480 Sa pamamagitan ng kaibahan dito, mayroon kaming ang kubo function, na 443 00:20:09,480 --> 00:20:11,400 aktwal na nagbabalik ng isang bagay. 444 00:20:11,400 --> 00:20:12,960 >> Kaya ito ay sa pangkalahatan - 445 00:20:12,960 --> 00:20:15,260 para sa mga pamilyar na ito, ito ay isang medyo tapat ideya. 446 00:20:15,260 --> 00:20:18,460 Ngunit para sa mga hindi gaanong pamilyar sa ideyang ito ng pagpasa sa mga input at pagkuha 447 00:20:18,460 --> 00:20:21,700 pabalik output, sabihin subukan lamang ng isang bagay na sobrang simple. 448 00:20:21,700 --> 00:20:25,180 Ang sinuman kumportableng paparating na sa entablado maikling? 449 00:20:25,180 --> 00:20:27,460 Mayroon kang upang maging komportable na may camera sa iyo, pati na rin. 450 00:20:27,460 --> 00:20:27,640 Oo. 451 00:20:27,640 --> 00:20:28,610 Okay, kung ano ang iyong pangalan? 452 00:20:28,610 --> 00:20:29,020 Ken: Ken. 453 00:20:29,020 --> 00:20:29,420 David J. MALAN: Ken. 454 00:20:29,420 --> 00:20:29,810 Lahat ng karapatan, Ken. 455 00:20:29,810 --> 00:20:31,060 Halika sa up. 456 00:20:31,060 --> 00:20:34,660 Kaya Ken ay isang function ng mga uri dito. 457 00:20:34,660 --> 00:20:35,760 At hayaan ang magpatuloy at gawin ito. 458 00:20:35,760 --> 00:20:38,790 Natin makakuha ng isang maliit magarbong. 459 00:20:38,790 --> 00:20:39,770 Masaya akong makilala kayo. 460 00:20:39,770 --> 00:20:41,010 Maligayang pagdating sa sentro yugto. 461 00:20:41,010 --> 00:20:41,980 Ayos lang. 462 00:20:41,980 --> 00:20:45,590 Natin pindutin ang pindutang ito dito. 463 00:20:45,590 --> 00:20:46,420 Ayos lang. 464 00:20:46,420 --> 00:20:49,490 Kaya dito mayroon kang modernong Chalkboard. 465 00:20:49,490 --> 00:20:53,050 At kung ano ang Ako ay ang pangunahing function, halimbawa. 466 00:20:53,050 --> 00:20:55,990 At hindi ko magkaroon ng isang iPad sa aking kamay. 467 00:20:55,990 --> 00:20:59,000 Hindi ko talaga matandaan kung paano - maayos, aktwal na, hindi maaaring sabihin na. 468 00:20:59,000 --> 00:21:02,200 Hindi ko talaga may magandang sulat-kamay. 469 00:21:02,200 --> 00:21:05,260 At kaya samakatuwid, gusto kong mong i-print ang isang bagay sa screen para sa akin. 470 00:21:05,260 --> 00:21:07,470 >> Kaya ako bilang pangunahing programa. 471 00:21:07,470 --> 00:21:15,060 At ako pagpunta sa mayroon kang sabihin ito sa pamamagitan ng pagsusulat sa mga ito sa aking manok sa simula at 472 00:21:15,060 --> 00:21:16,600 pagkatapos pagpasa sa iyo ng isang input. 473 00:21:16,600 --> 00:21:20,000 Kaya bilang ulok bagaman ang exercise na ito ay, ang paniwala ng mga function at pagtawag ng 474 00:21:20,000 --> 00:21:22,260 function at nagbabalik ng isang function talagang boils down na ito. 475 00:21:22,260 --> 00:21:23,120 Ako ay pangunahing. 476 00:21:23,120 --> 00:21:26,270 Isinulat ko printf ("isang bagay") sa screen. 477 00:21:26,270 --> 00:21:27,470 Ako nagpapatakbo sa programang ito. 478 00:21:27,470 --> 00:21:30,900 At sa lalong madaling printf ay makakakuha ng tinatawag na, ito ay tumatagal ng isang argumento - o isang parameter, 479 00:21:30,900 --> 00:21:31,660 minsan - 480 00:21:31,660 --> 00:21:32,780 sa pagitan ng mga double quote. 481 00:21:32,780 --> 00:21:33,960 Narito ang argument na. 482 00:21:33,960 --> 00:21:35,740 Ako pagpasa ito sa Ken. 483 00:21:35,740 --> 00:21:39,390 Ngayon siya ay isang itim na kahon na nakasulat sa ilang bilang ng mga taon na nakalipas na tila 484 00:21:39,390 --> 00:21:41,070 lamang alam kung paano upang i-print ang mga bagay sa screen. 485 00:21:41,070 --> 00:21:42,320 >> Kaya, gawin. 486 00:21:48,842 --> 00:21:49,900 Iyon ay hindi masama. 487 00:21:49,900 --> 00:21:50,890 Kaya, napakabuti. 488 00:21:50,890 --> 00:21:52,900 Kaya ngayon Ken ay tapos Isinasagawa. 489 00:21:52,900 --> 00:21:55,810 Ba siya kailangang ipasa sa akin ng anumang pabalik? 490 00:21:55,810 --> 00:21:57,240 Kaya hindi na kami nakikita sa gayon ngayon. 491 00:21:57,240 --> 00:21:59,230 Muli, printf ay aktwal na nagbabalik ng bilang. 492 00:21:59,230 --> 00:22:01,640 Ngunit kami ay pagpunta sa huwag pansinin na sa ngayon dahil hindi namin ito ginamit. 493 00:22:01,640 --> 00:22:03,400 Kaya na ito para sa Ken. 494 00:22:03,400 --> 00:22:06,650 At kaya ngayon pangunahing ay bumalik upang maisagawa - 495 00:22:06,650 --> 00:22:09,630 pangunahing kinakailangan sa paglipas ng kontrol ng programa muli dahil na linya ng code, 496 00:22:09,630 --> 00:22:11,010 printf, tapos na Isinasagawa. 497 00:22:11,010 --> 00:22:13,890 At pumunta kami tungkol sa aming mga paraan Isinasagawa ang anumang iba pang mga linya ay may. 498 00:22:13,890 --> 00:22:14,130 >> Ayos lang. 499 00:22:14,130 --> 00:22:17,080 Kaya ngayon sabihin subukan ang isang bahagyang naiiba halimbawa. 500 00:22:17,080 --> 00:22:22,430 At oras na ito dito, sabihin munang i-clear ang screen dito. 501 00:22:22,430 --> 00:22:24,670 At oras na ito, kami na ang cubing function na. 502 00:22:24,670 --> 00:22:27,350 Ngunit ang oras na ito, inaasahan ko ng output halaga. 503 00:22:27,350 --> 00:22:28,630 Kaya sabihin magpatuloy at gawin ito. 504 00:22:28,630 --> 00:22:35,680 Kaya ngayon Mayroon akong isang linya ng code na nagsasabing x = kubo (x). 505 00:22:35,680 --> 00:22:36,930 Kaya aktwal let's - 506 00:22:41,450 --> 00:22:43,940 linya ng code, manariwa sa diwa, ganito ang hitsura. 507 00:22:43,940 --> 00:22:45,960 x = kubo (x). 508 00:22:45,960 --> 00:22:48,100 Kaya paano ito upang gumana? 509 00:22:48,100 --> 00:22:50,820 Kaya sabihin sige at bigyan ka ng isang puting screen muli. 510 00:22:50,820 --> 00:22:55,000 At ako pagpunta sa magsulat ngayon down na ang halaga ng x, na sa panahon na ito sa 511 00:22:55,000 --> 00:23:01,080 oras mangyayari na, sabihin nating, 2, upang panatilihin ito simpleng. 512 00:23:01,080 --> 00:23:04,890 Kaya isinulat ko sa isang piraso ng papel ang halaga ng 2, 513 00:23:04,890 --> 00:23:06,100 na ang aking halaga x. 514 00:23:06,100 --> 00:23:08,250 Kong ipasa ang mga ito sa Ken. 515 00:23:08,250 --> 00:23:09,200 Ken: At ko lang isulat ang sagot? 516 00:23:09,200 --> 00:23:12,660 David J. MALAN: Oo, sabihin isulat ang sagot. 517 00:23:12,660 --> 00:23:13,030 Okay. 518 00:23:13,030 --> 00:23:16,280 At ngayon siya ay bumalik sa akin ng isang bagay. 519 00:23:16,280 --> 00:23:17,560 Kaya - 520 00:23:17,560 --> 00:23:18,170 perpekto. 521 00:23:18,170 --> 00:23:18,840 Nice segue. 522 00:23:18,840 --> 00:23:21,970 >> Kaya ngayon siya kamay ako pabalik ang halaga ng 8, sa kasong ito. 523 00:23:21,970 --> 00:23:23,220 At kung ano ang gagawin ko ito? 524 00:23:23,220 --> 00:23:26,130 Well, aktwal na, sabihin makita. 525 00:23:26,130 --> 00:23:26,640 Kunin ang karapatang ito. 526 00:23:26,640 --> 00:23:27,880 Ano ako pagpunta sa gawin dito? 527 00:23:27,880 --> 00:23:31,900 Ngayon ako pagpunta sa ang halaga na ito at aktwal na-imbak ang mga ito sa mga 528 00:23:31,900 --> 00:23:33,400 parehong bit sa memorya. 529 00:23:33,400 --> 00:23:35,030 Ngunit paunawa, ako uri ng struggling dito. 530 00:23:35,030 --> 00:23:38,280 Ako ng kaunti nalilito dahil kung saan ko aktwal na isulat ang halaga ng x? 531 00:23:38,280 --> 00:23:41,840 Dahil kung ano lang nagawa ko ang pisikal kamay Ken isang piraso ng papel 532 00:23:41,840 --> 00:23:44,400 ay ang halaga 2, kung saan ay x. 533 00:23:44,400 --> 00:23:46,300 At sa katunayan, na tiyak kung ano ang mangyayari. 534 00:23:46,300 --> 00:23:50,100 Kaya ito lumiliko out na kapag tumawag ka ng isang function, at pumasa ka sa isang argument 535 00:23:50,100 --> 00:23:54,130 gusto ang "kumusta mundo" o pumasa ka sa isang argumento tulad ng 2, sa pangkalahatan, ikaw ay 536 00:23:54,130 --> 00:23:56,720 pagpasa sa isang kopya ng na argumento. 537 00:23:56,720 --> 00:24:01,020 At iba pa tulad ng ko sinulat ni ang bilang 2 dito at ipinasa ito sa Ken; na dapat 538 00:24:01,020 --> 00:24:04,760 nangangahulugan na Mayroon pa akong isang kopya ng 2 halaga sa isang lugar. 539 00:24:04,760 --> 00:24:08,140 Dahil sa katunayan, ngayon na nakuha ko na ang halaga 8, kailangan ko upang bumalik sa 540 00:24:08,140 --> 00:24:12,010 RAM at aktwal na isulat 8 kung saan sabay-sabay ko ay ang bilang 2. 541 00:24:12,010 --> 00:24:15,720 >> Kaya tandaan biswal na ito paniwala ng pagpasa sa literal 542 00:24:15,720 --> 00:24:16,730 isang kopya ng ang halaga. 543 00:24:16,730 --> 00:24:19,570 Ken ang kanyang bagay, kamay ako pabalik ng isang bagay - sa kasong ito, 544 00:24:19,570 --> 00:24:20,820 ng halaga tulad ng 8. 545 00:24:20,820 --> 00:24:22,660 At pagkatapos Mayroon akong na gawin ang isang bagay na may halaga na kung ako 546 00:24:22,660 --> 00:24:24,880 gusto mong panatilihin ang mga ito sa paligid. 547 00:24:24,880 --> 00:24:29,470 Kaya lahat ng ito ay ang lahat ng masyadong pamilyar bago mahaba. 548 00:24:29,470 --> 00:24:33,082 Salamat sa iyo kaya magkano para sa demo dito, Ken. 549 00:24:33,082 --> 00:24:34,820 Ayos lang. 550 00:24:34,820 --> 00:24:36,720 Mahusay na tapos na. 551 00:24:36,720 --> 00:24:40,610 Kaya sabihin makita kung paano na ganap na nauugnay sa ilang mga pag-andar 552 00:24:40,610 --> 00:24:42,270 pagtawag na namin ang paggawa dito. 553 00:24:42,270 --> 00:24:47,610 Kaya hayaan mo akong magpatuloy at dalhin sa amin pabalik sa cubing halimbawa dito. 554 00:24:47,610 --> 00:24:53,080 At mapansin na kung gusto namin upang aktwal na simulan ang pagkuha ito karagdagang, kami ay pagpunta 555 00:24:53,080 --> 00:24:57,050 na maging maingat sa ang katunayan na ang bilang ng x na nakapasa sa 556 00:24:57,050 --> 00:25:01,390 dito ay naiiba mula sa kung ano ang aktwal na naipasa sa pag-andar. 557 00:25:01,390 --> 00:25:03,940 Sa muli, ito pumasa sa pamamagitan ng kopya ay pagpunta sa maging medyo 558 00:25:03,940 --> 00:25:05,620 dyermeyn sa sandali lamang. 559 00:25:05,620 --> 00:25:09,320 >> Kaya sabihin kumuha ng isang pagtingin sa isang bagay na ay hindi pa gumagana kanan pa. 560 00:25:09,320 --> 00:25:11,790 Ako pagpunta sa sige at buksan ang isang third halimbawa ng maraming surot, na 561 00:25:11,790 --> 00:25:13,560 flawed ng kalikasan. 562 00:25:13,560 --> 00:25:18,070 At ito na tinatawag na buggy3, at ito ipinapatupad ng pagpapalit function na. 563 00:25:18,070 --> 00:25:23,500 Kaya dito kami ay may isang pangunahing function na x at y mang nasimulan sa 564 00:25:23,500 --> 00:25:24,720 1 at 2, ayon sa pagkakasunud-sunod. 565 00:25:24,720 --> 00:25:27,590 Maaari naming gamitin ang GetInt, ngunit kailangan lang namin ng isang simpleng ehersisyo. 566 00:25:27,590 --> 00:25:29,680 Kaya ito ay hard-code bilang 1 at 2. 567 00:25:29,680 --> 00:25:35,330 Sa linya 21 at 22, tila namin i-print ang x at y, isa sa bawat linya. 568 00:25:35,330 --> 00:25:39,620 Pagkatapos, sa linya 23, inaangkin ko na ako pagpapalit ng mga halagang ito, tuldok, tuldok, tuldok. 569 00:25:39,620 --> 00:25:43,030 Tila tumawag ako ng isang function sa linya 24 tinatawag makipagpalitan ng 570 00:25:43,030 --> 00:25:44,000 na tumatagal ng dalawang argumento. 571 00:25:44,000 --> 00:25:46,430 Lubos legit para sa mga function sa tumagal ng dalawang argumento. 572 00:25:46,430 --> 00:25:48,220 Nakakita kami printf gawin ito. 573 00:25:48,220 --> 00:25:50,370 Kaya makipagpalitan tila tumatagal x at y. 574 00:25:50,370 --> 00:25:53,010 At bilang ang pangalan nito nagmumungkahi, Umaasa ako na ito ay pagpunta sa 575 00:25:53,010 --> 00:25:54,320 magpalitan ng dalawang mga halaga. 576 00:25:54,320 --> 00:25:57,560 Kaya inaangkin ko sa linya 25, swapped. 577 00:25:57,560 --> 00:26:01,570 At i-print muli ko x at y sa ilalim ng pagkukunwari na 578 00:26:01,570 --> 00:26:02,830 sa katunayan ito ay nai-swapped. 579 00:26:02,830 --> 00:26:04,370 Ngunit kung ako aktwal na patakbuhin ang program na ito - 580 00:26:04,370 --> 00:26:06,060 hayaan mo akong buksan ang isang terminal na window. 581 00:26:06,060 --> 00:26:07,750 Hayaan akong gumawa buggy3. 582 00:26:07,750 --> 00:26:09,970 Habang ang pangalan ay nagmumungkahi, ito ay hindi pagpunta sa magtapos na rin. 583 00:26:09,970 --> 00:26:14,690 Dahil kapag ako pindutin ang Enter, mapapansin na ang x ay 1. 584 00:26:14,690 --> 00:26:15,720 y ay 2. 585 00:26:15,720 --> 00:26:19,160 At pa sa dulo ng programa, hindi pa rin nila, sa katunayan, ang parehong. 586 00:26:19,160 --> 00:26:22,760 >> Kaya batay sa pagpapakita lamang ngayon sa Ken, kung ano ang aktwal na pagpunta sa? 587 00:26:22,760 --> 00:26:24,660 Well, sabihin sumisid sa ito makipagpalitan ng function na. 588 00:26:24,660 --> 00:26:25,800 Sobrang maikling. 589 00:26:25,800 --> 00:26:28,020 Ito ay lamang ng ilang linya ng code katagal. 590 00:26:28,020 --> 00:26:32,810 Ngunit ano ang pangunahing problema batay sa simpleng kuwento na sinabi 591 00:26:32,810 --> 00:26:34,270 hanggang dito sa Ken? 592 00:26:34,270 --> 00:26:36,115 Bakit makipagpalitan pinaghiwa? 593 00:26:36,115 --> 00:26:37,365 [Hindi marinig] 594 00:26:39,840 --> 00:26:40,460 Eksakto. 595 00:26:40,460 --> 00:26:43,610 Kaya kami ay pag-iimbak sa isang kopya, hindi variable mismo. 596 00:26:43,610 --> 00:26:46,810 Sa ibang salita, makipagpalitan ng tila tumatagal ng dalawang argumento, isang int. 597 00:26:46,810 --> 00:26:49,370 At mang ito ay tinatawag na at b. 598 00:26:49,370 --> 00:26:54,430 At hanggang dito, hindi ko na naipasa sa x at y, na ayon sa pagkakasunud-sunod 1 at 2. 599 00:26:54,430 --> 00:26:56,580 Ngunit hindi ako literal pagpasa sa x. 600 00:26:56,580 --> 00:26:58,410 Hindi ako literal pagpasa sa y. 601 00:26:58,410 --> 00:27:01,230 Pagpasa ako ng isang kopya ng x at kopya ng y. 602 00:27:01,230 --> 00:27:05,180 Ito ay tulad ng halos na parang nakopya at nailagay sa swap ang mga halaga na 603 00:27:05,180 --> 00:27:07,440 gusto mong aktwal na ito upang manipulahin. 604 00:27:07,440 --> 00:27:11,970 Kaya kung iyon ang kaso, kapag ako, sa programa, simulan execute 605 00:27:11,970 --> 00:27:14,140 linya 35, pagkatapos 36 - 606 00:27:14,140 --> 00:27:17,740 kapag nakuha ko sa linya 37, sa puntong ito sa kuwento, kung ano ang halaga ng isang? 607 00:27:20,740 --> 00:27:24,850 Sa puntong ito sa kuwento, linya 37, kung ano ang halaga ng isang sa puntong ito? 608 00:27:24,850 --> 00:27:25,980 Kaya dapat ito ay 1. 609 00:27:25,980 --> 00:27:26,170 Tama? 610 00:27:26,170 --> 00:27:29,100 Dahil x ay nakapasa sa bilang ang unang argumento. 611 00:27:29,100 --> 00:27:33,150 At pag-andar na ito lamang mang pagtawag nito unang argument, isang. 612 00:27:33,150 --> 00:27:35,130 Katulad nito y, ang pangalawang argumento. 613 00:27:35,130 --> 00:27:37,930 At lamang ito mang pagtawag sa pangalawang argumento b. 614 00:27:37,930 --> 00:27:40,510 >> Ngayon ang paghihiwalay sa dalawang bahagi na ito ay aktwal na medyo lamang ipinaliwanag. 615 00:27:40,510 --> 00:27:40,880 -Isip tungkol dito. 616 00:27:40,880 --> 00:27:42,980 Wala sa amin ay nakamit ang mga tao na sinulat ni printf. 617 00:27:42,980 --> 00:27:49,880 Kaya tiyak, siya ay walang ideya kung ano ang aming mga variable 30 taon mamaya ay pagpunta 618 00:27:49,880 --> 00:27:50,710 na tinatawag. 619 00:27:50,710 --> 00:27:55,110 Kaya mayroong isang pagkakaiba sa pagitan ng kung ano tawagan ka ng mga variable sa 620 00:27:55,110 --> 00:27:59,960 function na sumusulat ka at kung ano ang tawagan ka ng mga variable sa mga function na hindi mo 621 00:27:59,960 --> 00:28:01,770 pagtawag o paggamit. 622 00:28:01,770 --> 00:28:05,120 Kaya sa ibang salita, ako nakasulat ang aking mga variable bilang ng x at y. 623 00:28:05,120 --> 00:28:08,060 Ngunit kung ang ibang tao ay nakasulat makipagpalitan ng function na, siya tiyak 624 00:28:08,060 --> 00:28:10,480 hindi alam kung ano ang aking mga variable na tinatawag. 625 00:28:10,480 --> 00:28:13,850 Kaya nauunawaan natin na ito ay kung bakit mayroon kang ito duality ng mga pangalan. 626 00:28:13,850 --> 00:28:16,800 Technically, maaari kong gawin ito sa pamamagitan ng pagkakaisa. 627 00:28:16,800 --> 00:28:19,750 Ngunit nais pa rin nila ang naipasa sa bilang kopya. 628 00:28:19,750 --> 00:28:22,940 Ay ito lamang ng purong pagkakataon kung aesthetically na tao na sinulat ni 629 00:28:22,940 --> 00:28:25,590 makipagpalitan ng gumamit ng parehong pangalan. 630 00:28:25,590 --> 00:28:25,930 >> Ayos lang. 631 00:28:25,930 --> 00:28:29,010 Kaya sa puntong ito sa kuwento, linya 37, ay 1. 632 00:28:29,010 --> 00:28:30,410 b ay 2. 633 00:28:30,410 --> 00:28:32,040 At ngayon ko magpatuloy sa swap sa kanila. 634 00:28:32,040 --> 00:28:34,730 Na rin muna sa lahat, ipaalam sa akin aktwal na gawin ito mas lamang. 635 00:28:34,730 --> 00:28:36,500 Hindi ko alam kung ano ang ginagawa ang mga tatlong linya ng code. 636 00:28:36,500 --> 00:28:37,370 Hayaan akong lamang gawin ito. 637 00:28:37,370 --> 00:28:38,850 b nakakakuha ng. 638 00:28:38,850 --> 00:28:40,170 isang nakakakuha ng b. 639 00:28:40,170 --> 00:28:41,450 Tapos na. 640 00:28:41,450 --> 00:28:43,540 Bakit ito sirang, lohikal? 641 00:28:46,980 --> 00:28:48,590 Uri ng intuitive bagay, i-right? 642 00:28:48,590 --> 00:28:50,640 Kaya ang magiging b. 643 00:28:50,640 --> 00:28:52,450 At b nagiging isang. 644 00:28:52,450 --> 00:28:55,410 Ngunit ang problema ay na sa lalong madaling linya 37 executes, kung ano ang 645 00:28:55,410 --> 00:28:58,170 halaga ng isang at b? 646 00:28:58,170 --> 00:28:59,070 Ang parehong, 1. 647 00:28:59,070 --> 00:29:03,460 Dahil clobbered, kaya na magsalita, nabago mo ang b katumbas ng. 648 00:29:03,460 --> 00:29:06,000 Kaya sabay-sabay line 37 ay pinaandar, na mahusay. 649 00:29:06,000 --> 00:29:09,940 Mayroon ka na ngayong dalawang kopya ng numero sa loob 1 ng function na ito. 650 00:29:09,940 --> 00:29:14,720 Kaya pagkatapos kapag sinabi mo sa linya 38, nakakakuha ng b, na rin, ikaw uri ng screwed. 651 00:29:14,720 --> 00:29:17,370 Dahil ka magtatalaga ng 1 sa 1. 652 00:29:17,370 --> 00:29:20,400 Mo na ang uri ng nawala ang halaga na iyong cared tungkol sa. 653 00:29:20,400 --> 00:29:22,910 >> Kaya sa orihinal na bersyon ng mga ito, mapansin ang aking ginawa. 654 00:29:22,910 --> 00:29:26,620 Ko sa halip ay may isang ikatlong linya ng code na mukhang ganito ang. 655 00:29:26,620 --> 00:29:29,910 Dinedeklara ko isang pansamantalang variable - tmp ay isang napaka-karaniwang pangalan 656 00:29:29,910 --> 00:29:31,240 para sa isang pansamantalang variable. 657 00:29:31,240 --> 00:29:34,280 Ito ay isang int dahil ito ay may upang tumugma sa kung ano ang gusto kong gumawa ng isang kopya ng. 658 00:29:34,280 --> 00:29:39,720 Imbak ng ko ng isang kopya ng isang loob ng tmp. Kaya sabay-sabay line 37 ay pinaandar, 659 00:29:39,720 --> 00:29:41,390 ang halaga ng isang ay - 660 00:29:41,390 --> 00:29:42,970 mabilis katinuan suriin - 661 00:29:42,970 --> 00:29:43,460 1. 662 00:29:43,460 --> 00:29:45,780 Ang halaga ng b ay 2. 663 00:29:45,780 --> 00:29:48,470 At ang halaga ng tmp din 1. 664 00:29:48,470 --> 00:29:51,470 Kaya ngayon execute ko linya 38. 665 00:29:51,470 --> 00:29:57,180 Kaya kapag ang linya 38 executes, tumatagal sa halaga ng b. 666 00:29:57,180 --> 00:29:58,510 At b ay 2. 667 00:29:58,510 --> 00:30:00,500 Kaya ngayon ang 2. 668 00:30:00,500 --> 00:30:03,110 Kaya sa puntong ito sa kuwento, 2, b ay 2, 669 00:30:03,110 --> 00:30:05,130 at tmp ay 1. 670 00:30:05,130 --> 00:30:09,330 Kaya ngayon lohikal na, maaari naming halaga lamang magsabuwatan tmp sa b. 671 00:30:09,330 --> 00:30:10,690 At tapos na kami. 672 00:30:10,690 --> 00:30:12,170 >> Kaya namin na malutas ang problema na. 673 00:30:12,170 --> 00:30:16,040 Sa kasamaang palad, kapag nagpatakbo ako ng programang ito sa form na ito, hindi ito aktwal na swap 674 00:30:16,040 --> 00:30:17,700 anumang mga halaga. 675 00:30:17,700 --> 00:30:18,950 Ngunit upang maging malinaw, bakit? 676 00:30:23,420 --> 00:30:26,310 Naayos ko ang lohikal na problema mula sa sandali lamang ang nakalipas. 677 00:30:26,310 --> 00:30:31,150 Ngunit muli, kung nagpatakbo ako ng programang ito, x at y hindi magbabago sa pagtatapos ng 678 00:30:31,150 --> 00:30:33,834 pagpapatupad sa programa. 679 00:30:33,834 --> 00:30:34,760 [Hindi marinig] 680 00:30:34,760 --> 00:30:36,030 David J. MALAN: Kaya hindi namin ibinalik ang anumang. 681 00:30:36,030 --> 00:30:36,960 Sa gayon ay totoo. 682 00:30:36,960 --> 00:30:39,880 Ngunit ito lumiliko out ang isang bit ng isang problema dito dahil sa gayon malayo, 683 00:30:39,880 --> 00:30:42,460 Ang tanging bagay na namin upang bumalik ay isang bagay. 684 00:30:42,460 --> 00:30:46,540 At ito ay isang paghihigpit ng C. Maaari mo lamang talagang bumalik ng isang halaga, 685 00:30:46,540 --> 00:30:48,970 kung saan, ako uri ng natigil dito 686 00:30:48,970 --> 00:30:51,805 dahil maaari kong ibalik ang bagong mga halaga ng x o maaari ko bang ibalik ang 687 00:30:51,805 --> 00:30:53,160 bagong halaga ng y. 688 00:30:53,160 --> 00:30:54,330 Ngunit nais ko parehong likod. 689 00:30:54,330 --> 00:30:58,010 Kaya bumabalik ay hindi ang simpleng solusyon dito. 690 00:30:58,010 --> 00:30:59,770 Ngunit ang problema sa panimula ay kung bakit? 691 00:30:59,770 --> 00:31:03,270 Ano ang aktwal na namin swapped? 692 00:31:03,270 --> 00:31:04,010 isang at b. 693 00:31:04,010 --> 00:31:07,670 Ngunit isang at b kopya ng x at y, na nangangahulugan lang namin ginawa ang lahat ng ito 694 00:31:07,670 --> 00:31:10,080 gumana - lamang namin na ginugol tulad ng tatlong minuto pakikipag-usap tungkol sa mga makipagpalitan ng 695 00:31:10,080 --> 00:31:11,680 function at ang lahat ng tatlong ng mga variable na ito. 696 00:31:11,680 --> 00:31:15,090 At na mahusay, perpektong tama sa paghihiwalay. 697 00:31:15,090 --> 00:31:20,230 Ngunit isang at b ang saklaw lamang sa mga linya sa dito. 698 00:31:20,230 --> 00:31:24,130 Kaya tulad ng isang loop, kung ipinapahayag mo ang isang integer i sa loob ng para sa 699 00:31:24,130 --> 00:31:27,400 loop - katulad, kung ikaw ay deklarasyon ng at b sa loob ng isang function na 700 00:31:27,400 --> 00:31:30,550 mo ang nakasulat, hindi sila bisa lamang sa loob ng na function na. 701 00:31:30,550 --> 00:31:35,020 Na nangangahulugan na sa lalong madaling makipagpalitan ay tapos execute at pumunta namin mula sa linya 24 sa 702 00:31:35,020 --> 00:31:38,380 linya 25, x at y ay hindi nabago sa lahat. 703 00:31:38,380 --> 00:31:42,580 Mo lang nasayang ang isang buong maraming oras sa pagpapalit ng mga kopya ng mga variable. 704 00:31:42,580 --> 00:31:46,490 >> Kaya ito lumiliko out na ang mga solusyon na ito ay aktwal na di-halata. 705 00:31:46,490 --> 00:31:49,210 Hindi pa sapat upang bumalik halaga dahil aming makakaya 706 00:31:49,210 --> 00:31:50,320 bumalik lamang sa isang halaga. 707 00:31:50,320 --> 00:31:53,370 At ko talagang nais na i-swap ang parehong mga x at y sa parehong oras. 708 00:31:53,370 --> 00:31:55,020 Kaya kami ay pagpunta upang bumalik sa. 709 00:31:55,020 --> 00:31:58,770 Ngunit sa ngayon, mapagtanto na ang isyu sa panimula derives mula sa katotohanang 710 00:31:58,770 --> 00:32:00,660 na ang isang at b kopya. 711 00:32:00,660 --> 00:32:03,450 At ang mga ito sa kanilang sariling saklaw. 712 00:32:03,450 --> 00:32:04,980 Well, sabihin subukan upang malutas ito sa ilang mga paraan. 713 00:32:04,980 --> 00:32:09,200 Hayaan akong aktwal na mag-scroll pabalik dito at magbukas ng, sabihin nating, ang isang ika-apat na variant 714 00:32:09,200 --> 00:32:11,170 ito, buggy4. 715 00:32:11,170 --> 00:32:13,230 At kung ano ang tungkol dito? 716 00:32:13,230 --> 00:32:16,690 Ito ay isang katulad ngunit simple problema upang tumingin sa bago kami ng ulos sa 717 00:32:16,690 --> 00:32:17,530 paglutas ito. 718 00:32:17,530 --> 00:32:19,440 Ang program na ito ay tinatawag na pagdagdag. 719 00:32:19,440 --> 00:32:24,320 At tila initializes isang x integer sa 1 sa linya 18. 720 00:32:24,320 --> 00:32:25,950 Pagkatapos ko i-claim x ay 1. 721 00:32:25,950 --> 00:32:28,020 Pagkatapos ko Claim incrementing, tuldok, tuldok, tuldok. 722 00:32:28,020 --> 00:32:29,460 Pagkatapos kong tumawag pagdagdag. 723 00:32:29,460 --> 00:32:33,480 Ngunit sa linya 22 at 23, inaangkin ko ito incremented. 724 00:32:33,480 --> 00:32:37,780 Inaangkin ko ang x na ngayon ang anumang ito ay, 2 siguro. 725 00:32:37,780 --> 00:32:39,770 >> Ngunit ang program na ito ay maraming surot. 726 00:32:39,770 --> 00:32:41,020 Ano ang problema? 727 00:32:43,450 --> 00:32:44,418 Oo? 728 00:32:44,418 --> 00:32:45,668 [Hindi marinig] 729 00:32:49,260 --> 00:32:49,850 David J. MALAN: Eksaktong. 730 00:32:49,850 --> 00:32:52,430 Kaya x malinaw naman ay ipinahayag sa linya 18. 731 00:32:52,430 --> 00:32:54,410 Ito ay sa loob ng pangunahing kulot tirante. 732 00:32:54,410 --> 00:32:58,470 Kaya ang simpleng sagot dito ay na, na rin, ang x umiiral dito. 733 00:32:58,470 --> 00:33:01,510 Ito ay hindi umiiral sa linya 32. 734 00:33:01,510 --> 00:33:03,710 Kaya programang ito na aktwal na ay hindi kahit makatipon. 735 00:33:03,710 --> 00:33:07,910 Tagatala, kapag sinusubukan kong kino-compile ang code na ito, ay sumigaw sa akin 736 00:33:07,910 --> 00:33:13,190 tungkol sa ilang hindi nagbigay-alam identifier o isang bagay na epekto. 737 00:33:13,190 --> 00:33:13,870 Sa katunayan, sabihin subukan. 738 00:33:13,870 --> 00:33:15,235 Ito ay gumawa buggy4. 739 00:33:17,780 --> 00:33:18,190 May ito ay. 740 00:33:18,190 --> 00:33:22,030 Gamitin ng hindi nagbigay-alam identifier x sa linya 32. 741 00:33:22,030 --> 00:33:25,700 At aktwal na, sabihin mas tahasang dito ngayon sa gayon ay ito ay kapaki-pakinabang sa 742 00:33:25,700 --> 00:33:27,140 oras ng opisina at sa bahay. 743 00:33:27,140 --> 00:33:29,000 Pansinin na ito ay isang maliit na cryptically nakasulat. 744 00:33:29,000 --> 00:33:31,560 Ngunit ang katotohanan na kumalatong may yelled sa amin, na sinasabi 745 00:33:31,560 --> 00:33:36,970 buggy4.c: 32:5, ay talagang kapaki-pakinabang. 746 00:33:36,970 --> 00:33:41,970 Nangangahulugan ito na ang error sa linya 32 sa character na posisyon limang. 747 00:33:41,970 --> 00:33:44,670 Kaya isa, dalawa, tatlo, apat, limang. 748 00:33:44,670 --> 00:33:46,640 Iyon ay, sa katunayan, kung saan ang problema ay. 749 00:33:46,640 --> 00:33:49,710 At din na dapat tandaan sa oras ng opisina at sa bahay, ako masuwerteng dito. 750 00:33:49,710 --> 00:33:50,740 Mayroon akong isang pagkakamali. 751 00:33:50,740 --> 00:33:52,660 Ito ay relatibong madaling upang ayusin. 752 00:33:52,660 --> 00:33:56,220 Ngunit kung ikaw ay makakuha ng isang buong screen na puno ng napakaraming mga mensahe ng error, muli, 753 00:33:56,220 --> 00:33:59,240 Napag-alaman na ang pinakamababa isa ay maaaring lamang nagpapakilala ng 754 00:33:59,240 --> 00:34:00,320 ang mga pinakamataas na mga. 755 00:34:00,320 --> 00:34:03,560 Kaya palagi Chase ang iyong mga bug mula sa tuktok pababa. 756 00:34:03,560 --> 00:34:06,720 Dahil maaaring may lamang isang uri ng bulaklak-chain epekto na nagmumungkahi mo 757 00:34:06,720 --> 00:34:09,030 may paraan higit pang mga problema kaysa sa iyong aktwal na gawin. 758 00:34:09,030 --> 00:34:14,989 >> Kaya kung paano namin maaaring ayusin ito kung ang aking mga layunin ay upang dagdagan ang x? 759 00:34:14,989 --> 00:34:15,370 Ano iyon? 760 00:34:15,370 --> 00:34:15,620 Okay. 761 00:34:15,620 --> 00:34:16,679 Upang maaari naming gumawa ng x global. 762 00:34:16,679 --> 00:34:18,860 Natin ang shortcut na ko nagbabala tungkol sa mas maaga. 763 00:34:18,860 --> 00:34:20,550 Ngunit ano ba, kailangan lang namin ng isang mabilis na-aayos. 764 00:34:20,550 --> 00:34:23,949 Kaya sabihin lamang sabihin int x up dito. 765 00:34:23,949 --> 00:34:25,600 Na ginagawang x global. 766 00:34:25,600 --> 00:34:28,460 Kaya ngayon pangunahing ay may access dito. 767 00:34:28,460 --> 00:34:31,780 At pagdagdag may access dito. 768 00:34:31,780 --> 00:34:33,860 At kaya ipaalam sa akin sige at makatipon ito ngayon. 769 00:34:33,860 --> 00:34:36,330 Gawing buggy4, ang Enter. 770 00:34:36,330 --> 00:34:37,440 Tila upang makatipon ngayon. 771 00:34:37,440 --> 00:34:40,949 Natin patakbuhin ang buggy4, at tila upang aktwal na gumana. 772 00:34:40,949 --> 00:34:42,780 Ngayon ito ay isa sa mga bagay na ito - 773 00:34:42,780 --> 00:34:45,870 gawin ang sinasabi ko, hindi tulad ng ginagawa ko, bilang ko na gawin dito. 774 00:34:45,870 --> 00:34:49,239 Dahil sa pangkalahatan, ang aming mga programa ay pagpunta upang makakuha ng mas kawili-wili at 775 00:34:49,239 --> 00:34:50,440 mas matagal kaysa ito. 776 00:34:50,440 --> 00:34:53,199 At kung ang iyong solusyon sa mga problema sa buhay ah, ilagay ang lahat ng mga 777 00:34:53,199 --> 00:34:57,550 variable sa tuktok ng iyong mga file, masyadong mabilis gawin programa makakuha ng 778 00:34:57,550 --> 00:34:59,700 horrifically mahirap upang pamahalaan. 779 00:34:59,700 --> 00:35:02,050 Ito ay nakakakuha ng mas mahirap sa tingin up ng mga bagong variable pangalan. 780 00:35:02,050 --> 00:35:05,240 Ito ay nakakakuha ng mas mahirap upang maunawaan kung ano ang variable ay ginagawa kung ano ang. 781 00:35:05,240 --> 00:35:08,250 >> At kaya sa pangkalahatan, ito ay hindi isang magandang solusyon. 782 00:35:08,250 --> 00:35:09,780 Kaya sabihin gawin ito mas mahusay na. 783 00:35:09,780 --> 00:35:11,920 Hindi namin nais na gumamit ng global variable dito. 784 00:35:11,920 --> 00:35:14,050 Ko nais upang dagdagan x. 785 00:35:14,050 --> 00:35:16,050 Kaya maaari ko malinaw naman - 786 00:35:16,050 --> 00:35:18,450 sa pagtatapos ng araw, ito ay uri ng ulok kuwento dahil lamang namin gawin ito. 787 00:35:18,450 --> 00:35:22,050 Ngunit kung hindi ko malaman tungkol na operator, o hindi ako pinapayagang 788 00:35:22,050 --> 00:35:27,700 baguhin ito sa pangunahing mismo, kung paano tao maaari kong ipatupad Ken sa paglipas dito, ito 789 00:35:27,700 --> 00:35:31,450 oras hindi sa kubo ngunit dagdagan? 790 00:35:31,450 --> 00:35:32,700 Paano ko babaguhin dito ang bagay na ito? 791 00:35:32,700 --> 00:35:33,025 Oo. 792 00:35:33,025 --> 00:35:34,275 [Hindi marinig] 793 00:35:37,430 --> 00:35:38,000 David J. MALAN: Okay, mabuti. 794 00:35:38,000 --> 00:35:40,490 Kaya bakit hindi ko pumasa sa x? 795 00:35:40,490 --> 00:35:44,390 At pagkatapos ay sa halip na ibalik ito, bakit hindi ko lang gawin return x + 1? 796 00:35:44,390 --> 00:35:46,370 Ngayon, ng ilang higit pang mga bagay upang baguhin dito. 797 00:35:46,370 --> 00:35:47,530 Ako sa kanan track. 798 00:35:47,530 --> 00:35:48,910 Ano pa ang kailangan ko upang i-tweak? 799 00:35:48,910 --> 00:35:49,470 Ibang tao. 800 00:35:49,470 --> 00:35:49,882 Oo? 801 00:35:49,882 --> 00:35:51,530 [Hindi marinig] 802 00:35:51,530 --> 00:35:53,520 David J. MALAN: kailangan kong baguhin ang return uri ng pagdagdag 803 00:35:53,520 --> 00:35:54,590 dahil hindi ito ay walang bisa. 804 00:35:54,590 --> 00:35:56,650 Walang bisa ay nangangahulugan na walang ay ibinalik. 805 00:35:56,650 --> 00:35:57,600 Ngunit malinaw, ito ay ngayon. 806 00:35:57,600 --> 00:36:01,280 Kaya ito pangangailangan upang baguhin upang int upang maging pare-pareho sa anumang 807 00:36:01,280 --> 00:36:02,580 Aktwal ako bumabalik. 808 00:36:02,580 --> 00:36:04,580 >> Ngayon pa rin ang iba pa ay maraming surot dito. 809 00:36:04,580 --> 00:36:04,982 Oo? 810 00:36:04,982 --> 00:36:06,590 [Hindi marinig] 811 00:36:06,590 --> 00:36:07,630 David J. MALAN: Kaya kailangan kong dagdagan x? 812 00:36:07,630 --> 00:36:10,336 [Hindi marinig] 813 00:36:10,336 --> 00:36:11,880 David J. MALAN: Ah, kaya kailangan ko upang pumasa x. 814 00:36:11,880 --> 00:36:13,300 Kaya kailangan kong gawin ito dito. 815 00:36:17,590 --> 00:36:19,690 Kaya prototype, mayroon akong upang baguhin ito dito. 816 00:36:19,690 --> 00:36:21,290 Kaya ito ay may upang maging isang int. 817 00:36:21,290 --> 00:36:22,820 Na ito ay upang maging - 818 00:36:22,820 --> 00:36:23,670 Hmm. 819 00:36:23,670 --> 00:36:24,710 Aktwal na ako ay may isang bug pababa dito. 820 00:36:24,710 --> 00:36:25,780 Natin ayusin ang isang unang. 821 00:36:25,780 --> 00:36:27,990 Ano ang dapat ito aktwal na? 822 00:36:27,990 --> 00:36:29,330 Kaya Mayroon sa isang int isang bagay. 823 00:36:29,330 --> 00:36:30,340 Ito ay maaaring maging x. 824 00:36:30,340 --> 00:36:33,120 Subalit lantaran, kung sinimulan mo ang pagtawag ng lahat ng iyong mga variable x, ito upang makakuha ng 825 00:36:33,120 --> 00:36:35,250 mas mababa at mas mababa malinaw na kung saan. 826 00:36:35,250 --> 00:36:38,210 Kaya sabihin lang mang pumili ng ibang pagpapangalan convention para sa aking 827 00:36:38,210 --> 00:36:40,220 lingkod function, ang mga function Sumulat ako. 828 00:36:40,220 --> 00:36:41,100 Susubukan naming tumawag ito ng isang. 829 00:36:41,100 --> 00:36:44,500 O maaari naming tumawag ito - sabihin tumawag even_number ito sa mas tahasang. 830 00:36:44,500 --> 00:36:47,610 Kaya pagkatapos kong bumalik anumang bilang plus 1. 831 00:36:47,610 --> 00:36:49,720 At ngayon ko bang baguhin ang isa sa iba pang mga bagay dito at isa 832 00:36:49,720 --> 00:36:50,700 iba pang mga bagay dito. 833 00:36:50,700 --> 00:36:54,150 Ano ang mayroon ako upang baguhin sa linya 21 sa unang? 834 00:36:54,150 --> 00:36:55,390 Mayroon akong upang italaga ang mga ito sa x. 835 00:36:55,390 --> 00:36:57,480 Kaya hindi lamang ako maaaring tumawag ng x pagdagdag. 836 00:36:57,480 --> 00:37:01,000 Kailangan ko maalala ang sagot sa pamamagitan ng pagbabago ng halaga ng x sa 837 00:37:01,000 --> 00:37:02,020 sa kaliwang bahagi. 838 00:37:02,020 --> 00:37:04,930 At kahit x ngayon ang kaliwa at kanang, na lubos pinong dahil 839 00:37:04,930 --> 00:37:08,370 sa kanang bahagi ay makakakuha ng unang pinaandar pagkatapos ay makakakuha plopped sa kaliwa 840 00:37:08,370 --> 00:37:10,240 bagay sa kamay, x sa kasong ito. 841 00:37:10,240 --> 00:37:11,900 At pagkatapos ay sa wakas, ito ay isang madaling-aayos ngayon. 842 00:37:11,900 --> 00:37:15,080 Ito ay dapat lamang na tumutugma sa kung ano ang pababa sa ibaba. 843 00:37:15,080 --> 00:37:17,120 Int numero. 844 00:37:17,120 --> 00:37:17,320 >> Ayos lang. 845 00:37:17,320 --> 00:37:20,290 Kaya isang buong grupo ng mga pagbabago para sa isang talagang bobo function na. 846 00:37:20,290 --> 00:37:24,250 Ngunit kinatawan ng mga bagay na gusto namin nagiging gawin. 847 00:37:24,250 --> 00:37:25,490 Kaya't buggy4. 848 00:37:25,490 --> 00:37:26,485 Ko na screwed up sa isang lugar. 849 00:37:26,485 --> 00:37:27,520 Oh aking Diyos. 850 00:37:27,520 --> 00:37:29,660 Limang pagkakamali sa, i, anim na linya na programa. 851 00:37:29,660 --> 00:37:36,500 Kaya kung ano ang mali sa linya 18, karakter 5? 852 00:37:36,500 --> 00:37:36,970 Ayos lang. 853 00:37:36,970 --> 00:37:39,330 Kaya Mayroon akong upang idedeklara ito int. 854 00:37:39,330 --> 00:37:39,630 Ayos lang. 855 00:37:39,630 --> 00:37:41,790 Kaya sabihin makita, isang buong grupo ng mga iba pang mga error. 856 00:37:41,790 --> 00:37:42,230 Oh aking diyos. 857 00:37:42,230 --> 00:37:43,880 19, 18, 21. 858 00:37:43,880 --> 00:37:46,020 Ngunit muli, sabihin i-clear ang screen - 859 00:37:46,020 --> 00:37:48,660 Control L dito - at re-run kumalatong. 860 00:37:48,660 --> 00:37:51,340 Kaya limang problema ay talagang lamang na ang isa. 861 00:37:51,340 --> 00:37:53,500 Kaya ngayon sabihin patakbuhin buggy4, ang Enter. 862 00:37:53,500 --> 00:37:54,150 Whew. 863 00:37:54,150 --> 00:37:57,434 x ay incremented tama. 864 00:37:57,434 --> 00:37:58,420 >> Ayos lang. 865 00:37:58,420 --> 00:38:01,700 Anumang mga katanungan sa kung paano dagdagan ang numero? 866 00:38:01,700 --> 00:38:02,896 Oo? 867 00:38:02,896 --> 00:38:06,864 Tagapagsalita 2: Bakit ito na maaari mong baguhin lamang x sa numero sa variable 868 00:38:06,864 --> 00:38:08,860 pangalanan at ito alam kung ano ang iyong ibig sabihin? 869 00:38:08,860 --> 00:38:09,600 David J. MALAN: Magandang katanungan. 870 00:38:09,600 --> 00:38:13,130 Paano ay ito na maaari ko lamang baguhin x sa numero at ang programa ay alam 871 00:38:13,130 --> 00:38:13,990 agad? 872 00:38:13,990 --> 00:38:16,120 Kaya muli, sa tingin ng mga ito bilang ito abstraction. 873 00:38:16,120 --> 00:38:20,110 Kaya kung ako pangunahing at Ken ay incremental, lantaran, hindi ko pakialam 874 00:38:20,110 --> 00:38:21,540 kung ano ang tawag ng Ken ang kanyang iPad. 875 00:38:21,540 --> 00:38:25,350 Wala akong pakialam kung ano siya tawag sa anumang bagay na may sa gawin sa kanyang pagpapatupad 876 00:38:25,350 --> 00:38:26,550 ng ang pag-andar na ito. 877 00:38:26,550 --> 00:38:32,130 Kaya ito ay isang detalye ng pagpapatupad na ako, pangunahing, hindi 878 00:38:32,130 --> 00:38:33,010 pakialam tungkol sa. 879 00:38:33,010 --> 00:38:37,440 At kaya lamang pagbabago nito tuloy-tuloy sa loob ng function na, bilang dito 880 00:38:37,440 --> 00:38:41,340 at bilang dito, ang lahat ng ito ay tumatagal ng hangga't mag-recompile ko. 881 00:38:41,340 --> 00:38:43,820 Ito ay uri ng bang kung sa tingin mo - marami sa atin, ang mga mo sa pagmamaneho 882 00:38:43,820 --> 00:38:46,590 lisensya na iyong nahimok, o kahit na iyong nahimok sa isang kotse - 883 00:38:46,590 --> 00:38:50,710 karamihan sa atin ay walang ideya kung paano gumagana ang kotse ng sa ilalim ng hood. 884 00:38:50,710 --> 00:38:54,710 At literal, kapag binuksan mo ng hood, karamihan sa atin - kasama ang aking sarili - 885 00:38:54,710 --> 00:38:56,580 ay hindi pagpunta sa talagang malaman kung ano ang iyong hinahanap namin sa. 886 00:38:56,580 --> 00:38:58,850 Uri ng tulad ng maaari mong pakiramdam na may mga bagay-bagay tulad ng sa karapatang ito ngayon. 887 00:38:58,850 --> 00:39:01,380 Ngunit hindi namin talagang pakialam kung paano gumagana ang kotse. 888 00:39:01,380 --> 00:39:05,000 Wala kaming sa pakialam kung ano ang lahat ng rods at pistons at cable sa loob ng 889 00:39:05,000 --> 00:39:07,700 kotse ay aktwal na paggawa. 890 00:39:07,700 --> 00:39:11,360 >> Kaya hindi mahalaga ang isang bagay tulad ng kung ano ang tinatawag mo ang piston 891 00:39:11,360 --> 00:39:11,920 dito sa kasong ito. 892 00:39:11,920 --> 00:39:12,490 Parehong ideya. 893 00:39:12,490 --> 00:39:12,670 Oo? 894 00:39:12,670 --> 00:39:13,920 [Hindi marinig] 895 00:39:25,250 --> 00:39:29,530 David J. MALAN: Kung may higit pang mga paggamit ng variable xa sandali ang nakalipas, 896 00:39:29,530 --> 00:39:32,220 , programmer, ay upang baguhin ang mga ito sa lahat ng dako. 897 00:39:32,220 --> 00:39:35,230 O maaari kang literal gawin ng File, Menu, at pagkatapos Hanapin / Palitan, 898 00:39:35,230 --> 00:39:36,270 isang bagay tulad na. 899 00:39:36,270 --> 00:39:40,110 Ngunit ikaw ay pagpunta sa may upang gumawa ng mga pagbabagong iyon sa iyong sarili. 900 00:39:40,110 --> 00:39:41,200 Mayroon kang upang maging pare-pareho. 901 00:39:41,200 --> 00:39:42,450 [Hindi marinig] 902 00:39:47,200 --> 00:39:48,960 David J. MALAN: Isang partikular na pagkakasunud-sunod tulad dito? 903 00:39:48,960 --> 00:39:52,660 Kung ito ay int ibang numero? 904 00:39:52,660 --> 00:39:52,940 Oo. 905 00:39:52,940 --> 00:39:56,430 Kaya order na mahalaga kapag ikaw ay pagtawag sa function na. 906 00:39:56,430 --> 00:40:00,350 Kaya kung ako ay pagtawag pagdagdag dito na may isang bagay na pinaghihiwalay ng isang bagay, 907 00:40:00,350 --> 00:40:01,400 may isang direktang sa pagmamapa. 908 00:40:01,400 --> 00:40:04,490 Ang unang variable, anumang ang tawag dito, ay ginawa ng isang kopya ng unang 909 00:40:04,490 --> 00:40:05,480 argumento sa paglipas dito. 910 00:40:05,480 --> 00:40:07,280 Paumanhin, ito ay hindi dapat maging isang panaklong. 911 00:40:07,280 --> 00:40:09,300 Ang pangalawang linya ng argumento na ang pangalawang. 912 00:40:09,300 --> 00:40:11,220 >> Kaya order, oo, bagay. 913 00:40:11,220 --> 00:40:11,490 Ayos lang. 914 00:40:11,490 --> 00:40:13,360 Paumanhin kinuha ko ng isang mahabang paraan upang makakuha ng doon. 915 00:40:13,360 --> 00:40:14,610 Iba pang mga tanong? 916 00:40:16,460 --> 00:40:16,850 Ayos lang. 917 00:40:16,850 --> 00:40:20,300 Kaya sabihin makita kung hindi namin maaaring pintahan ng isang larawan ng kung ano ang aktwal na pagpunta sa 918 00:40:20,300 --> 00:40:22,160 dito sa ilalim ng hood, kaya na magsalita. 919 00:40:22,160 --> 00:40:26,310 Kaya ito ay isang parihaba na maaaring kumatawan sa memory ng iyong computer. 920 00:40:26,310 --> 00:40:31,240 Kaya kahit na mayroon kang mga ideya kung paano gumagana ang memory o kung paano RAM gawa, hindi bababa sa 921 00:40:31,240 --> 00:40:33,590 ipagpalagay na mayroon kang bunches nito sa mga araw na ito. 922 00:40:33,590 --> 00:40:34,740 Mayroon kang mga megabytes nito. 923 00:40:34,740 --> 00:40:35,760 Mayroon kang gigabytes nito. 924 00:40:35,760 --> 00:40:40,690 At alam namin mula sa linggo zero na ang byte ng kung ano? 925 00:40:40,690 --> 00:40:41,280 8 bit. 926 00:40:41,280 --> 00:40:42,730 Karapatan, kaya 8 zeroes at mga. 927 00:40:42,730 --> 00:40:46,300 Kaya kung ang iyong computer ay may karetela ng RAM, ang dalawang gig ng RAM mga araw na ito, mayroon kang isang 928 00:40:46,300 --> 00:40:54,450 bilyon o 2 bilyong mga byte ng memorya, o halos 8 bilyong o 16 bilyong 929 00:40:54,450 --> 00:40:56,560 bits, sa loob ng iyong computer. 930 00:40:56,560 --> 00:40:59,710 Ngayon hindi katulad ang maliit na makapal na Willy Halimbawa, hindi magnetic particle 931 00:40:59,710 --> 00:41:00,560 karaniwang ito. 932 00:41:00,560 --> 00:41:04,470 Nagiging, sa mga laptop ng hindi bababa sa, ito ay solid drive ng estado, SSDs, na 933 00:41:04,470 --> 00:41:05,560 lamang na walang paglipat ng mga bahagi. 934 00:41:05,560 --> 00:41:06,710 Lahat ng electronic. 935 00:41:06,710 --> 00:41:08,070 Ito ay lahat ng koryente batay. 936 00:41:08,070 --> 00:41:12,360 Kaya sa tingin, bagaman, ng parihaba ito bilang lamang kumakatawan sa isa o dalawang 937 00:41:12,360 --> 00:41:13,930 gigabytes ng memory na mayroon kang. 938 00:41:13,930 --> 00:41:15,500 >> Kaya ito ay isang tipak ng memorya. 939 00:41:15,500 --> 00:41:20,460 Ngayon sa mundo ng computer science ay may uri ng partitioned off ang mga chunks ng 940 00:41:20,460 --> 00:41:22,570 memorya upang gawin ang iba't ibang bagay. 941 00:41:22,570 --> 00:41:25,930 Kaya halimbawa, kung ito ay RAM ng iyong computer - tulad ng iminungkahi ng 942 00:41:25,930 --> 00:41:30,400 parihaba doon - lumiliko out na sa pamamagitan ng convention, sa tuktok ng iyong RAM, kaya 943 00:41:30,400 --> 00:41:33,170 magsalita, ay kung ano ang tinatawag na teksto segment. 944 00:41:33,170 --> 00:41:35,910 Iyon ang mga zeroes at mga na iyong inipon. 945 00:41:35,910 --> 00:41:39,040 Kaya kapag kami ay tumingin sa ilalim ng hood sa kung ano a.out ay, lahat ng 946 00:41:39,040 --> 00:41:40,360 zeroes at mga - 947 00:41:40,360 --> 00:41:44,000 kapag nagpatakbo ka ng isang programa, mga zeroes at mga na-load mula sa iyong hard 948 00:41:44,000 --> 00:41:46,290 biyahe sa isang bagay na tinatawag RAM. 949 00:41:46,290 --> 00:41:48,950 At sa RAM, sila ay inilagay sa itaas. 950 00:41:48,950 --> 00:41:50,330 Ngayon samantala, mayroon kang iba pang mga bagay. 951 00:41:50,330 --> 00:41:53,060 Nasimulan data, uninitialized data. 952 00:41:53,060 --> 00:41:56,440 Yaong dalawang swaths ng memory ay sumangguni sa mga pangkalahatang variable, na 953 00:41:56,440 --> 00:41:57,530 hindi mo madalas gamitin. 954 00:41:57,530 --> 00:42:00,630 Ngunit minsan kung gagawin mo, sila magtapos hanggang doon pati na rin. 955 00:42:00,630 --> 00:42:01,620 Pagkatapos ang ilang iba pang mga bagay-bagay. 956 00:42:01,620 --> 00:42:04,130 Kapaligiran variable, kung saan hindi namin gastusin sa karaming oras sa. 957 00:42:04,130 --> 00:42:06,120 Ngunit ang dalawang mahahalagang bagay na bumalik sa kabuuan ng 958 00:42:06,120 --> 00:42:08,130 semestre, stack at magbunton. 959 00:42:08,130 --> 00:42:12,280 >> Kaya ang karamihan ng memory ng iyong computer ay nakareserba kapag nagpapatakbo ng isang programa para sa 960 00:42:12,280 --> 00:42:14,880 isang bagay na tinatawag stack at isang bagay na tinatawag ang magbunton. 961 00:42:14,880 --> 00:42:16,940 At hindi namin makipag-usap tungkol sa magbunton ngayon, ngunit kami ay 962 00:42:16,940 --> 00:42:18,180 makipag-usap tungkol sa stack. 963 00:42:18,180 --> 00:42:22,910 At stack ay sinadya upang manawagan ang visual ng tulad ng dining hall 964 00:42:22,910 --> 00:42:26,120 pagkain trays sa Mather House, o kung saan man ang mangyari, kung saan ang 965 00:42:26,120 --> 00:42:27,810 dining hall ng kawani ng linisin mga ito araw-araw. 966 00:42:27,810 --> 00:42:30,180 Sila stack ang mga ito mula sahig sa up. 967 00:42:30,180 --> 00:42:33,800 At katulad sa memorya, ang ideya ng paglalagay ng isang bagay sa isang 968 00:42:33,800 --> 00:42:36,740 stack, paglalagay ng isang bagay sa isang stack, paglalagay ng isang bagay sa isang stack. 969 00:42:36,740 --> 00:42:38,000 At kung ano ang namin ibig sabihin sa pamamagitan ng ito? 970 00:42:38,000 --> 00:42:41,430 Well, ipaalam sa mag-zoom in sa lang sa ibabang kalahati ng ang larawang ito, ang iyong computer 971 00:42:41,430 --> 00:42:43,990 RAM, upang ipanukala ang mga sumusunod. 972 00:42:43,990 --> 00:42:48,300 Ito lumiliko out na kapag nagpatakbo ka ng isang programa tulad ng a.out o kumusta, anumang 973 00:42:48,300 --> 00:42:49,920 ang programa mo na ang nakasulat, 974 00:42:49,920 --> 00:42:53,030 muli, ang mga zeroes at mga na-load mula sa iyong hard drive - na kung saan ay 975 00:42:53,030 --> 00:42:56,190 pangmatagalang imbakan, mananatili doon kahit na hilahin ang plug - 976 00:42:56,190 --> 00:42:57,220 load sa RAM. 977 00:42:57,220 --> 00:42:59,020 RAM ay mas mabilis kaysa sa mga na hard drive. 978 00:42:59,020 --> 00:43:00,700 Ito ay mas maliit kaysa sa mga na hard drive. 979 00:43:00,700 --> 00:43:03,490 Subalit kung saan nakatira ang mga programa habang nagpapatakbo ka sa kanila. 980 00:43:03,490 --> 00:43:06,380 >> Kaya mong i-double click ang isang programa sa Mac o PC - ito ay load mula sa 981 00:43:06,380 --> 00:43:07,750 hard drive sa RAM. 982 00:43:07,750 --> 00:43:11,760 Sa lalong madaling ito load sa RAM, ang zeroes at mga pumunta sa tuktok ng paraan, ang 983 00:43:11,760 --> 00:43:13,130 gayon tinatawag na teksto segment. 984 00:43:13,130 --> 00:43:17,040 Ngunit sa lalong madaling panahon ang iyong programa sa aktwal na nagsisimula sa pagtakbo, ang pangunahing 985 00:43:17,040 --> 00:43:18,140 function na ay tinatawag na. 986 00:43:18,140 --> 00:43:21,070 At pangunahing, namin ang iyong nakita, madalas ay may mga lokal na variable. 987 00:43:21,070 --> 00:43:24,560 At ito ay may ints at string at char at katulad. 988 00:43:24,560 --> 00:43:28,300 Kaya kung ang iyong programa na iyong nakasulat o programa na mayroon kang 989 00:43:28,300 --> 00:43:33,680 double click ginagamit ng ilang mga variable sa loob ng pangunahing, magtapos sila sa 990 00:43:33,680 --> 00:43:37,020 ilalim ng iyong stack ng memory, kaya na magsalita. 991 00:43:37,020 --> 00:43:39,160 Ngayon mas concretely, ano ang aktwal ibig sabihin? 992 00:43:39,160 --> 00:43:44,080 Ito ay nangangahulugan lamang na kung tayo ay pagpunta sa NUMBER ang mga bagay - 993 00:43:44,080 --> 00:43:49,380 kung tayo ay pagpunta sa numero ang mga bytes ng RAM sa iyong computer, mapapansin na ang 994 00:43:49,380 --> 00:43:51,650 maaaring ito ay byte numerong zero. 995 00:43:51,650 --> 00:43:56,130 Ito ay maaaring byte numero ng isa, dalawa, tatlo, apat, limang, anim, lahat 996 00:43:56,130 --> 00:43:57,290 ang paraan upang gustuhin - 997 00:43:57,290 --> 00:44:01,520 2 bilyong ay ang lahat ng mga paraan up doon sa itaas. 998 00:44:01,520 --> 00:44:05,960 Kaya sa ibang salita, kapag makipag-usap namin tungkol sa RAM o memory sa mga tuntunin ng mga byte 999 00:44:05,960 --> 00:44:09,680 lamang ay nangangahulugan na ang isang tao na nagpasya kung ano ang numero ng bawat isa sa 1000 00:44:09,680 --> 00:44:11,110 mga chunks ng memorya. 1001 00:44:11,110 --> 00:44:16,950 >> Kaya kapag kailangan mo ang 32 bit para sa isang int, o kailangan mong 8 bit para sa isang pansamantalang trabaho, kung saan 1002 00:44:16,950 --> 00:44:18,320 sila magtapos sa memory? 1003 00:44:18,320 --> 00:44:20,650 Well conceptually, sila lamang magtapos sa ilalim ng ito 1004 00:44:20,650 --> 00:44:21,780 bagay na tinatawag na stack. 1005 00:44:21,780 --> 00:44:25,670 Ngunit kung ano ang kawili-wili ngayon kapag pangunahing tawag ng isang function. 1006 00:44:25,670 --> 00:44:28,830 Ipagpalagay na ang isang function na tinatawag na foo, isang arbitrary na pangalan. 1007 00:44:28,830 --> 00:44:32,480 Ano ang mangyayari ay pangunahing ay sa ilalim ng ito stack ng memorya. 1008 00:44:32,480 --> 00:44:35,630 Foo ngayon ay ilagay sa tuktok ng pangunahing memorya. 1009 00:44:35,630 --> 00:44:40,020 Kaya anumang lokal na mga variable na ang foo ay magtapos uri ng conceptually sa itaas 1010 00:44:40,020 --> 00:44:40,770 sa mga pangunahing. 1011 00:44:40,770 --> 00:44:46,920 Kung foo tawag ng isa pang function na tinatawag na bar, mga variable magtapos dito. 1012 00:44:46,920 --> 00:44:49,790 Kung ang bar tawag ibang bagay, dito, dito, dito. 1013 00:44:49,790 --> 00:44:53,900 Kaya kung ano ang kawili-wiling tungkol sa pagpapatakbo ng isang programa na tawagan ka ng mga function, 1014 00:44:53,900 --> 00:44:57,720 at ng mga function ay tumawag ng mga function, at ng mga function ay tumawag ng mga function, 1015 00:44:57,720 --> 00:45:00,980 bumuo ka ng stack na ito ng mga function sa memory. 1016 00:45:00,980 --> 00:45:06,740 At lamang nang isang beses sa isang return function na simulan ang pagkuha ng bumalik na memory. 1017 00:45:06,740 --> 00:45:11,190 Kaya ang isa sa mga pinakamadaling paraan ng pagka-ubos ng memorya sa isang computer program 1018 00:45:11,190 --> 00:45:14,170 isulat ang mga function na ay hindi kailanman bumalik. 1019 00:45:14,170 --> 00:45:16,650 >> Kaya halimbawa, sabihin ipakita ng mas maraming gamit ang isang 1020 00:45:16,650 --> 00:45:18,460 sinasadya maraming surot programa. 1021 00:45:18,460 --> 00:45:24,690 Hayaan akong sige at # include , int pangunahing (walang bisa). 1022 00:45:24,690 --> 00:45:31,270 At ako pagpunta sa gawin habang (2> 1), na malamang na hindi ka kailanman 1023 00:45:31,270 --> 00:45:33,370 babaguhin sa amin. 1024 00:45:33,370 --> 00:45:37,720 At hayaan mo akong magpatuloy ngayon at gawin printf. 1025 00:45:37,720 --> 00:45:39,950 Aktwal na mas mababa ang biswal na kawili-wili. 1026 00:45:39,950 --> 00:45:40,460 Natin gawin ito. 1027 00:45:40,460 --> 00:45:44,840 Para int (i = 0; i> 0). 1028 00:45:44,840 --> 00:45:49,740 Natin ang pagkakamaling ito, i + +. 1029 00:45:49,740 --> 00:45:51,150 At sabihin hindi printf dito. 1030 00:45:51,150 --> 00:45:52,550 Natin magsanay kung ano ang ako ay pangangaral. 1031 00:45:52,550 --> 00:45:54,090 Natin ay isang paraan ng dito. 1032 00:45:54,090 --> 00:46:00,860 Walang bisa koro, at kami na sabihin int i. 1033 00:46:00,860 --> 00:46:02,295 At pagkatapos ay ako pagpunta sa sabihin, printf - 1034 00:46:04,871 --> 00:46:06,790 oh, sabihin gawin itong mas kawili-wiling. 1035 00:46:06,790 --> 00:46:08,350 Natin ang aktwal na hindi i-print ang anumang bagay sa lahat. 1036 00:46:08,350 --> 00:46:10,530 Sabihin lang gawin ito. 1037 00:46:10,530 --> 00:46:11,780 Koro (i). 1038 00:46:16,630 --> 00:46:17,000 >> Ayos lang. 1039 00:46:17,000 --> 00:46:20,040 Kaya ito ay maraming surot dahil bakit? 1040 00:46:20,040 --> 00:46:22,850 Nagsasagawa ako ng ito bilang pumunta ko dahil ang programa ay hindi aktwal na gawin 1041 00:46:22,850 --> 00:46:23,420 ng interes. 1042 00:46:23,420 --> 00:46:24,670 Ngunit hindi ang layunin. 1043 00:46:24,670 --> 00:46:30,440 Ang layunin ay upang magsulat ng isang programa na ang pangunahing function na gumagana ang ano, tila? 1044 00:46:30,440 --> 00:46:31,370 Tawagan mismo. 1045 00:46:31,370 --> 00:46:32,600 At aktwal na, hindi namin kailangang loop. 1046 00:46:32,600 --> 00:46:36,070 Natin kahit pasimplehin ito lamang upang hindi mawala sa paningin ng talaga ang 1047 00:46:36,070 --> 00:46:37,310 pangunahing bug. 1048 00:46:37,310 --> 00:46:39,200 Pangunahing tawag nang sabay-sabay sa kumanta ilang koro. 1049 00:46:39,200 --> 00:46:41,760 Pagkatapos ginawa ko ang isang bagay bobo, at nagkaroon ako ng koro koro ng tawag dahil ako ipinapalagay 1050 00:46:41,760 --> 00:46:43,550 ibang tao ay pagpunta upang ipatupad ito siguro. 1051 00:46:43,550 --> 00:46:45,960 At ngayon ito ay hindi pagpunta upang makatipon pa. 1052 00:46:45,960 --> 00:46:48,340 Kailangan kong gawin kung ano? 1053 00:46:48,340 --> 00:46:49,700 Kailangan ko ang prototype, tandaan. 1054 00:46:49,700 --> 00:46:55,520 Kaya kailangan ko upang magkaroon ng hanggang dito walang bisa koro (int i);. 1055 00:46:55,520 --> 00:46:57,470 >> Sa ngayon, kung pumunta ako pababa dito - 1056 00:46:57,470 --> 00:46:59,030 aktwal na, sabihin gamitin ang mas malaking window. 1057 00:46:59,030 --> 00:47:01,670 Natin sige at gumawa ng koro. 1058 00:47:01,670 --> 00:47:06,000 Natin sige at gumawa ng koro. 1059 00:47:06,000 --> 00:47:08,302 Paggamit ng unidentified declarer i. 1060 00:47:08,302 --> 00:47:09,860 Oh, na bobo. 1061 00:47:09,860 --> 00:47:11,020 Hindi namin kailangan ang argumento. 1062 00:47:11,020 --> 00:47:13,680 Sabihin lang gawin ito. 1063 00:47:13,680 --> 00:47:14,550 Nais namin ay nagsimula sa ganitong paraan. 1064 00:47:14,550 --> 00:47:16,160 Na makakakuha ito ng mas madali programa upang magsulat. 1065 00:47:16,160 --> 00:47:20,100 Kaya doon. 1066 00:47:20,100 --> 00:47:23,870 Ngayon sabihin pumunta sa aking terminal na window, re-run kumalatong. 1067 00:47:23,870 --> 00:47:26,900 At dito namin pumunta. 1068 00:47:26,900 --> 00:47:28,020 Na talagang mabilis. 1069 00:47:28,020 --> 00:47:30,690 Ano ang aktwal na lamang ang nangyari, bagaman? 1070 00:47:30,690 --> 00:47:33,430 Well, ngayon kukunin ko na magdagdag ng naka-print na linya, upang maaari naming makita. 1071 00:47:33,430 --> 00:47:41,330 Kaya ipaalam sa akin sabihin printf, sabihin nating, ako in dito. 1072 00:47:41,330 --> 00:47:43,470 Okay, walang mga variable, magpapadala kami iwanan ito tulad na. 1073 00:47:43,470 --> 00:47:44,860 Hayaan akong muling patakbuhin gumawa. 1074 00:47:44,860 --> 00:47:47,940 Hayaan akong re-run koro. 1075 00:47:47,940 --> 00:47:51,235 At dumating sa. 1076 00:47:53,880 --> 00:47:55,130 Panatilihin ang pagpunta. 1077 00:47:57,630 --> 00:47:59,750 Bilang isang bukod, bakit hindi nag-crash? 1078 00:47:59,750 --> 00:48:02,050 Ang segmentation fault nangyari napakabilis na bago. 1079 00:48:02,050 --> 00:48:04,250 [Hindi marinig] 1080 00:48:04,250 --> 00:48:04,830 David J. MALAN: Eksaktong. 1081 00:48:04,830 --> 00:48:06,350 Kaya ito ay tumatagal ng oras upang i-print. 1082 00:48:06,350 --> 00:48:08,370 Mayroon lamang tumatagal ng higit pang trabaho sa bahagi ng computer. 1083 00:48:08,370 --> 00:48:09,550 At doon ito ay. 1084 00:48:09,550 --> 00:48:10,620 Segmentation fault. 1085 00:48:10,620 --> 00:48:12,140 >> Kaya mapansin lamang kung paano mabilis programa ay tatakbo. 1086 00:48:12,140 --> 00:48:14,110 Kung hindi ka naka pag-print ng anumang bagay, napakabilis na. 1087 00:48:14,110 --> 00:48:18,100 Ngunit pa rin namin nakuha ang segmentation fault dahil kung ano ang nangyayari? 1088 00:48:18,100 --> 00:48:21,310 Well, kung sa tingin mo tungkol sa kung paano memorya ng iyong computer ay inilatag, ito 1089 00:48:21,310 --> 00:48:22,890 ang mangyayari sa pangunahing. 1090 00:48:22,890 --> 00:48:23,800 Ngunit dito - 1091 00:48:23,800 --> 00:48:28,670 sabihin lamang tumawag ito nang sabay-sabay, at sabihin itawag sa koro. 1092 00:48:28,670 --> 00:48:33,420 At ngayon kung gagawin ko ang aking mga aesthetics karapatan, ito ay lamang pagpunta sa sabihin ng koro, 1093 00:48:33,420 --> 00:48:38,060 koro, koro, koro, koro, koro, koro, ad nauseum. 1094 00:48:38,060 --> 00:48:39,920 At sa kalaunan, kung ano ang pagpunta sa mangyayari? 1095 00:48:39,920 --> 00:48:46,690 Kung ang malaking larawan ay literal ito, kung ano ang mangyayari lamang conceptually? 1096 00:48:46,690 --> 00:48:48,320 Ang stack overruns ang magbunton. 1097 00:48:48,320 --> 00:48:52,400 O mas masahol pa, ikaw lamang malatagan lahat, kabilang ang segment ng teksto, na 1098 00:48:52,400 --> 00:48:54,530 ang mga zeroes at mga na kumakatawan sa iyong programa. 1099 00:48:54,530 --> 00:48:56,690 Sa maikli, ito ay sobrang, sobrang masamang. 1100 00:48:56,690 --> 00:48:56,860 Tama? 1101 00:48:56,860 --> 00:48:58,620 Ang iyong programa spiraled ng kontrol. 1102 00:48:58,620 --> 00:49:02,840 Gumagamit ka ng paraan higit pang memory kaysa sa nilayon mo lahat dahil sa isang bobo 1103 00:49:02,840 --> 00:49:03,920 pagkakamali, sa kasong ito. 1104 00:49:03,920 --> 00:49:08,160 O sa kasong ito, ang isang napaka sadyang gawin ang function sa pagtawag mismo. 1105 00:49:08,160 --> 00:49:09,210 Ngayon na ito ay hindi lahat ng masama. 1106 00:49:09,210 --> 00:49:12,540 Pag-andar sa pagtawag sa kanilang sarili aktwal na may dakilang kapangyarihan 1107 00:49:12,540 --> 00:49:13,700 kapag ginagamit mo ito nang tama. 1108 00:49:13,700 --> 00:49:15,650 Hindi ko ginagamit ito nang tama dito. 1109 00:49:15,650 --> 00:49:16,940 >> Kaya ito ay hindi lahat ng masama. 1110 00:49:16,940 --> 00:49:20,620 Ngunit ang katotohanan na hindi ko aktwal na itigil ang pagtawag sa aking sarili ay isang pangunahing 1111 00:49:20,620 --> 00:49:23,050 kahinaan dito ng programang ito. 1112 00:49:23,050 --> 00:49:25,090 Kaya kung saan ay namin pagpunta sa lahat ng ito? 1113 00:49:25,090 --> 00:49:26,230 Well, kung ano talaga ang nangyayari? 1114 00:49:26,230 --> 00:49:30,010 Kapag tumawag ko ang pagdagdag function na, tulad namin ay ginagawa sa mga halimbawa, 1115 00:49:30,010 --> 00:49:33,290 Mayroon akong isang halaga tulad ng 1 na pumasa ako. 1116 00:49:33,290 --> 00:49:35,820 Pumasa ako sa isang kopya ng ang bilang isang. 1117 00:49:35,820 --> 00:49:37,080 Kaya sumusunod ang mangyayari. 1118 00:49:37,080 --> 00:49:40,390 Kaya sabihin pumunta sa halimbawa ng pagdagdag. 1119 00:49:40,390 --> 00:49:44,230 At ang tao na ito karapatan sa paglipas dito. 1120 00:49:44,230 --> 00:49:46,800 Kaya narito ang kung ano ang aktwal na nangyayari. 1121 00:49:46,800 --> 00:49:50,770 Kapag tinatawag ko pagdagdag, at pumasa ako sa x, pictorially kung ano ang 1122 00:49:50,770 --> 00:49:53,660 pagpunta sa dito ay ito - 1123 00:49:53,660 --> 00:50:00,240 kung mayroon akong ang halaga ng 1 na naka-imbak sa dito, at tumawag ako aktwal pagdagdag, na 1124 00:50:00,240 --> 00:50:02,680 ay tinatawag na ngayong koro - 1125 00:50:02,680 --> 00:50:04,010 oo, na ibinabato sa akin off dito. 1126 00:50:04,010 --> 00:50:06,750 Kaya sabihin tumawag ito pagdagdag. 1127 00:50:06,750 --> 00:50:09,420 At hindi namin alam kung ano ang susunod na function na ang magiging. 1128 00:50:09,420 --> 00:50:14,270 Kaya kung ano ang aktwal na nangyayari dito sa isang lugar sa pangunahing, mayroon akong tipak ng 1129 00:50:14,270 --> 00:50:16,670 memory na pag-iimbak ng numero 1. 1130 00:50:16,670 --> 00:50:19,730 Kapag tumawag ako pagdagdag, ako gamit ang isa pang tipak ng memory, ngunit ngayon ko 1131 00:50:19,730 --> 00:50:20,840 magkaroon ng kopya ng 1. 1132 00:50:20,840 --> 00:50:25,480 Kapag dagdagan ko na halaga, ito ay magiging 2 - horribly nakasulat sa 1133 00:50:25,480 --> 00:50:26,420 screen dito. 1134 00:50:26,420 --> 00:50:30,550 Ngunit pagkatapos, kung ano ang mangyayari sa lalong madaling babalik pagdagdag? 1135 00:50:30,550 --> 00:50:34,610 Memory ito ay makakakuha lamang ipinasa pabalik sa operating system, na nangangahulugan na ang lahat 1136 00:50:34,610 --> 00:50:37,470 nagawa mo na ay walang kapaki-pakinabang. 1137 00:50:37,470 --> 00:50:43,460 Ang isa na orihinal na nilalaman sa pangunahing pa rin ang aktwal na doon. 1138 00:50:43,460 --> 00:50:44,650 >> Kaya kung saan ay namin pagpunta na ito? 1139 00:50:44,650 --> 00:50:49,400 Well, ito lumiliko out na sa memory mayroon kang ito pabalik upang i-back ang pagkakasunod-sunod ng 1140 00:50:49,400 --> 00:50:50,940 byte na maaari mong ilagay ang mga bagay-bagay. 1141 00:50:50,940 --> 00:50:53,760 At ito ay lumiliko out na nakakita kami ng isang bagay na kinabibilangan ng paglalagay ng 1142 00:50:53,760 --> 00:50:55,100 bagay bumalik upang i-back i-back upang i-back. 1143 00:50:55,100 --> 00:51:00,170 Ano ang isang string, batay sa linggo isa at ngayong linggo dalawang? 1144 00:51:00,170 --> 00:51:01,840 Kaya ito ay isang koleksyon ng mga character. 1145 00:51:01,840 --> 00:51:05,290 Kaya ito lumiliko out, tulad ng maaari mong ilagay ang mga numero sa memorya, katulad maaari mong 1146 00:51:05,290 --> 00:51:06,900 ilagay ang mga character sa memory. 1147 00:51:06,900 --> 00:51:09,810 At sa sandaling sinimulan namin ang paglalagay ng character sa memory pabalik upang i-back i-back 1148 00:51:09,810 --> 00:51:12,800 pabalik, lumiliko na gamit ang pinakasimpleng ng mga bagay tulad ng isang para sa loop o 1149 00:51:12,800 --> 00:51:14,510 habang loop, maaari naming umulit - 1150 00:51:14,510 --> 00:51:17,130 mula kaliwa sa kanan sa ibabaw ng mga character sa isang string - 1151 00:51:17,130 --> 00:51:20,720 at simulan ang masahe mga ito sa ibang mga character sa kabuuan. 1152 00:51:20,720 --> 00:51:25,550 Isang maaaring maging B. B ay maaaring maging C. Kaya na huli, maaari kaming magsagawa ng isang 1153 00:51:25,550 --> 00:51:28,830 Ingles na pangungusap na aktwal na saysay at convert sa bawat isa ng mga 1154 00:51:28,830 --> 00:51:32,440 titik isa sa isang pagkakataon sa pamamagitan ng paglalakad sa pamamagitan ng memorya ng aming computer natitira upang 1155 00:51:32,440 --> 00:51:34,300 karapatan sa aktwal na-encrypt. 1156 00:51:34,300 --> 00:51:36,590 >> Kaya sabihin ang aming limang minutong pahinga dito, at kapag dumating namin pabalik, bibigyan namin 1157 00:51:36,590 --> 00:51:39,060 simulan ang prosesong ito ng scrambling impormasyon. 1158 00:51:41,640 --> 00:51:43,180 >> Ayos lang. 1159 00:51:43,180 --> 00:51:48,440 Kaya bago namin sumisid sa ilang crypto at mga bagay na ito na tinatawag na array, hayaan mo akong 1160 00:51:48,440 --> 00:51:51,610 i-pause para sa anumang mga tanong dahil pakiramdam ko tulad ko talagang uri ng muddled ilan sa 1161 00:51:51,610 --> 00:51:52,230 mga paksang iyon. 1162 00:51:52,230 --> 00:51:53,940 Kaya natin ayusin ngayon kung kaya namin. 1163 00:51:53,940 --> 00:51:56,480 Kaya lang namin uusapang tungkol sa mga halaga return. 1164 00:51:56,480 --> 00:51:58,630 Usapan natin ang tungkol sa mga argumento. 1165 00:51:58,630 --> 00:52:02,330 At usapan natin ang tungkol sa paniwala na ito, na magpapadala kami bumalik sa linggo sa 1166 00:52:02,330 --> 00:52:07,140 darating, ng pagtingin ng memory bilang isang buong grupo ng mga nakasalansan 1167 00:52:07,140 --> 00:52:08,540 trays, kaya na magsalita. 1168 00:52:08,540 --> 00:52:13,460 Mula sa ibaba sa up, tulad na ang bawat tray na maipo ilagay sa stack ay kumakatawan sa 1169 00:52:13,460 --> 00:52:15,160 ang function ng na kasalukuyang tinatawag na. 1170 00:52:17,970 --> 00:52:20,300 Anumang mga katanungan? 1171 00:52:20,300 --> 00:52:22,890 Kaya kung paano tungkol sa - hayaan mo akong subukan pagtatanong sa isang tanong. 1172 00:52:22,890 --> 00:52:25,520 Patuloy ko spoiling na, ngunit ngayon it's - you've lahat nakikita mukha sa batang lalaki. 1173 00:52:25,520 --> 00:52:27,020 Kaya makikita namin bumalik iyon. 1174 00:52:27,020 --> 00:52:29,700 >> Kaya hayaan mo akong magtanong dito. 1175 00:52:29,700 --> 00:52:34,810 Ipaalam sa akin pasimplehin ito pabalik sa kung ano ito ay bago ang ilan sa aming mga mas maaga na Q & A. 1176 00:52:34,810 --> 00:52:41,730 At ang katunayan na ang pagdagdag may bukas panaklong, int numero, sarado 1177 00:52:41,730 --> 00:52:42,260 panaklong. 1178 00:52:42,260 --> 00:52:46,370 Ano ang int numero kumatawan? 1179 00:52:46,370 --> 00:52:47,250 [Hindi marinig] 1180 00:52:47,250 --> 00:52:47,870 David J. MALAN: Isang argumento. 1181 00:52:47,870 --> 00:52:50,732 Okay, ngunit kung ano ang isang argument? 1182 00:52:50,732 --> 00:52:51,620 [Hindi marinig] 1183 00:52:51,620 --> 00:52:52,500 David J. MALAN: Paumanhin, kung ano ang na? 1184 00:52:52,500 --> 00:52:53,150 Tagapagsalita 3: May pumasa ka. 1185 00:52:53,150 --> 00:52:53,570 David J. MALAN: Okay. 1186 00:52:53,570 --> 00:52:54,780 Kaya isang bagay na pumasa ka. 1187 00:52:54,780 --> 00:52:56,560 At higit pa sa pangkalahatan, ang input. 1188 00:52:56,560 --> 00:52:59,860 Kung ikaw ay sumusulat ng isang function at layunin na function na sa buhay ay gawin 1189 00:52:59,860 --> 00:53:03,290 isang bagay ng isang maliit na iba't ibang sa bawat oras na gamitin mo ito, pagkatapos ay ang tanging paraan para sa 1190 00:53:03,290 --> 00:53:07,710 na mangyari talagang mukhang upang magbigay ng may input upang ito 1191 00:53:07,710 --> 00:53:10,180 maaaring gawin ang isang bagay ibang may na input sa bawat oras. 1192 00:53:10,180 --> 00:53:13,590 >> Kaya kailangan mong tukuyin ang dalawang bagay kapag ang isang function na tumatagal ng input. 1193 00:53:13,590 --> 00:53:17,240 Kailangan mong tukuyin ang pangalan na gusto mong ibigay sa input na, pulos para sa 1194 00:53:17,240 --> 00:53:20,790 iyong sariling kaginhawahan sa gayon ay maaari kang sumangguni dito sa pag-andar na 1195 00:53:20,790 --> 00:53:23,610 iyong sarili ay pagsusulat, tulad ng ginawa ko dito sa linya 32. 1196 00:53:23,610 --> 00:53:27,840 Ngunit kailangan mo ring upang tukuyin ang uri dahil ang C ay isang programming language 1197 00:53:27,840 --> 00:53:28,840 na lamang ay nangangailangan ng 1198 00:53:28,840 --> 00:53:31,810 na kung nais mo ang isang variable, mayroon kang upang sabihin sa computer kung ano ang 1199 00:53:31,810 --> 00:53:32,790 data type ito ay, 1200 00:53:32,790 --> 00:53:35,540 sa malaking bahagi upang alam kung gaano karaming mga bits upang 1201 00:53:35,540 --> 00:53:37,230 maglaan para sa variable na. 1202 00:53:37,230 --> 00:53:38,600 Dahil maaaring ito ay anim na - 1203 00:53:38,600 --> 00:53:39,990 Paumanhin, hindi ito magiging anim. 1204 00:53:39,990 --> 00:53:41,050 Maaari itong 16. 1205 00:53:41,050 --> 00:53:41,630 Maaari itong 8. 1206 00:53:41,630 --> 00:53:44,410 Maaari itong 32 kahit 64. 1207 00:53:44,410 --> 00:53:45,820 Ngunit ang computer ay kailangang malaman. 1208 00:53:45,820 --> 00:53:49,110 Ngayon ang int sa kaliwang bahagi ay kumakatawan sa kung ano ang, sa pamamagitan ng kaibahan? 1209 00:53:52,825 --> 00:53:53,780 [Hindi marinig] 1210 00:53:53,780 --> 00:53:54,570 David J. MALAN: Ano iyon? 1211 00:53:54,570 --> 00:53:55,390 [Hindi marinig] 1212 00:53:55,390 --> 00:53:57,920 MALAN ng David J.: Ang uri ng pag-andar, at higit na partikular, ang 1213 00:53:57,920 --> 00:53:59,755 uri ng nito output. 1214 00:53:59,755 --> 00:54:00,220 Kanan. 1215 00:54:00,220 --> 00:54:04,220 Kaya habang ang mga bagay sa mga panaklong ay kumakatawan sa input nito, kung mayroon man, ang 1216 00:54:04,220 --> 00:54:06,640 bagay sa kaliwa ay kumakatawan ang output nito. 1217 00:54:06,640 --> 00:54:10,560 At sa kasong ito, pagdagdag tila nagbabalik ng isang int. 1218 00:54:10,560 --> 00:54:14,590 At kaya int ang return uri ng function na ito. 1219 00:54:14,590 --> 00:54:16,090 >> Ano ang ibig sabihin bumalik? 1220 00:54:16,090 --> 00:54:19,810 Literal, gamitin mo ang keyword return. 1221 00:54:19,810 --> 00:54:24,640 At pagkatapos ay kung ano ang ikaw ay bumabalik sa kanan ng keyword ay isang 1222 00:54:24,640 --> 00:54:28,340 integer, pagkatapos na talaga ang pare-pareho sa kung ano ang namin ang ipinangako. 1223 00:54:28,340 --> 00:54:31,110 Hindi mo maaaring gawin ang isang bagay tulad nito - 1224 00:54:31,110 --> 00:54:32,280 kumusta, mundo - 1225 00:54:32,280 --> 00:54:33,500 dahil iyon ay isang string. 1226 00:54:33,500 --> 00:54:35,440 Malinaw na ito ay hindi isang integer. 1227 00:54:35,440 --> 00:54:40,450 Kaya sa maikling, pahirapan talaga sa amin, programmer, tukoy na bilang 1228 00:54:40,450 --> 00:54:44,730 sa kung ano ang namin ang bumabalik at pagkatapos ay aktwal na pumunta tungkol sa bumabalik ito. 1229 00:54:44,730 --> 00:54:49,030 At pagkatapos ay upang gumawa ng tad ng mas malinaw sa konteksto - 1230 00:54:49,030 --> 00:54:50,080 doon siya ay muli. 1231 00:54:50,080 --> 00:54:51,060 Sa konteksto - 1232 00:54:51,060 --> 00:54:52,830 malaking sorpresa pagdating sa sandali lamang. 1233 00:54:52,830 --> 00:54:57,720 Sa konteksto dito ngayon ay na ang memory ng iyong computer ay, muli, isang 1234 00:54:57,720 --> 00:54:59,070 gigabyte, dalawang gigabytes, anumang. 1235 00:54:59,070 --> 00:54:59,630 Siguro pa. 1236 00:54:59,630 --> 00:55:00,540 Siguro ito ay mas mababa. 1237 00:55:00,540 --> 00:55:03,750 Ngunit ang computer tumingin ito bilang pagkakaroon ng iba't ibang mga seksyon. 1238 00:55:03,750 --> 00:55:04,860 Isang bagay napupunta down na doon. 1239 00:55:04,860 --> 00:55:06,020 Ibang bagay napupunta doon. 1240 00:55:06,020 --> 00:55:07,540 Iba't ibang bagay napupunta sa gitna. 1241 00:55:07,540 --> 00:55:09,300 At ngayon, namin lamang simulan ang nagsasabi sa kuwentong ito. 1242 00:55:09,300 --> 00:55:11,130 >> Ngunit makikita namin bumalik na ito sa paglipas ng panahon. 1243 00:55:11,130 --> 00:55:15,000 Sa ngayon, ang tanging piraso ng memorya namin talagang pakialam tungkol sa ang teksto segment 1244 00:55:15,000 --> 00:55:17,160 dahil na lamang kumakatawan sa zeroes at mga 1245 00:55:17,160 --> 00:55:18,460 na kumalatong ay outputted. 1246 00:55:18,460 --> 00:55:21,570 Kaya kapag nagpatakbo ka ng isang command sa keyboard tulad a.out, o double 1247 00:55:21,570 --> 00:55:25,350 i-click ang isang icon sa Mac OS o Windows, ang iyong programa-load mula sa iyong hard 1248 00:55:25,350 --> 00:55:26,930 humimok sa RAM. 1249 00:55:26,930 --> 00:55:30,850 At ito plopped sa tuktok ng RAM ng iyong computer, kaya na magsalita. 1250 00:55:30,850 --> 00:55:35,470 Ngayon samantala, pati na ang iyong programa ay nagsisimula tumatakbo at pangunahing ay makakakuha ng tinatawag sa 1251 00:55:35,470 --> 00:55:39,240 program na sinulat ni o sa programa ng Microsoft o Apple sinulat ni, anuman sa mga 1252 00:55:39,240 --> 00:55:42,930 lokal na variable magtapos hanggang pababa doon sa ilalim ng memory ng iyong computer. 1253 00:55:42,930 --> 00:55:46,490 Ngunit kung ang pangunahing tawag sa isa pang function na mismo ay may mga variable o 1254 00:55:46,490 --> 00:55:48,340 argumento, magtapos sila nasa itaas nito. 1255 00:55:48,340 --> 00:55:50,670 At kung ang function na tawag ng isang bagay, sila magtapos itaas nito, 1256 00:55:50,670 --> 00:55:51,840 itaas nito, nasa itaas nito. 1257 00:55:51,840 --> 00:55:56,100 At nang isang beses lamang function na tapos na e-execute ang ang stack ng mga trays, kaya 1258 00:55:56,100 --> 00:55:58,320 magsalita, simulan upang makakuha ng mas mababa at mas mababa. 1259 00:55:58,320 --> 00:56:03,370 At ito ay kung ano pagkatapos, sa maikling sabi, ay nagpapaliwanag kung bakit, kapag tumawag ka kubo - 1260 00:56:03,370 --> 00:56:04,660 o tumawag ka pagdagdag - 1261 00:56:04,660 --> 00:56:06,490 pagpasa ka sa isang kopya ng ang halaga. 1262 00:56:06,490 --> 00:56:09,840 At kung ano ang nangangahulugan iyon pictorially na literal sumusulat ka sa 1263 00:56:09,840 --> 00:56:14,540 numero 1 sa ibang bahagi ng memorya, pagbabago na 1 hanggang 2, sa kaso ng 1264 00:56:14,540 --> 00:56:15,360 pagdagdag - 1265 00:56:15,360 --> 00:56:17,450 o sa isang 8, sa kaso ng kubo - 1266 00:56:17,450 --> 00:56:21,450 at pagkatapos ay ibinabato na memorya ang layo sa lalong madaling ang pagdagdag o ang kubo 1267 00:56:21,450 --> 00:56:23,410 function na babalik. 1268 00:56:23,410 --> 00:56:24,267 >> Tanong. 1269 00:56:24,267 --> 00:56:25,517 [Hindi marinig] 1270 00:56:28,090 --> 00:56:29,970 David J. MALAN: Saan - pangkalahatang variable ay naka-imbak sa kung ano ang 1271 00:56:29,970 --> 00:56:32,960 kasalukuyang tinatawag na ang nasimulan data o uninitialized data. 1272 00:56:32,960 --> 00:56:35,900 Pagkakaiba ang pagiging, kung mayroon kang isang pandaigdigang variable, at magtalaga mo ito 1273 00:56:35,900 --> 00:56:39,530 kaagad ng isang halaga na may katumbas mag-sign, ito ay nagtatapos sa tuktok doon. 1274 00:56:39,530 --> 00:56:43,390 At kung ikaw lamang sabihin int x semicolon na walang halaga, ito nagtatapos bahagyang 1275 00:56:43,390 --> 00:56:46,670 mas mababa sa RAM sa pamamagitan lamang ng convention. 1276 00:56:46,670 --> 00:56:49,308 Iba pang mga tanong. 1277 00:56:49,308 --> 00:56:49,750 Ayos lang. 1278 00:56:49,750 --> 00:56:53,040 >> Kaya ang larawang ito ay bumalik dahil makakakuha tayo ng mas malakas na sa kung ano ang maaari naming gawin 1279 00:56:53,040 --> 00:56:53,830 gamit ang computer. 1280 00:56:53,830 --> 00:56:58,790 Ngunit sa ngayon, sabihin magkaroon ng isang maikling panimula sa cryptography, isang partikular na uri ng 1281 00:56:58,790 --> 00:57:01,910 cryptography na hindi malutas ang lahat ng mga problema sa mundo ngunit hindi malutas 1282 00:57:01,910 --> 00:57:02,480 ang ilan sa mga ito. 1283 00:57:02,480 --> 00:57:06,090 Sa kasong ito dito, mayroon kaming isang bagay na tinatawag na sikretong key cryptography. 1284 00:57:06,090 --> 00:57:10,430 At sikretong key cryptography, ng pangalan nagmumungkahi, derives nito seguridad 1285 00:57:10,430 --> 00:57:11,330 mula sa isang lihim na. 1286 00:57:11,330 --> 00:57:14,720 Kaya halimbawa, kung ikaw ay bumalik sa mababang paaralan at ka pagpasa ng 1287 00:57:14,720 --> 00:57:18,040 kaunti lihim na pag-ibig na sulat sa batang lalaki o babae na ay pagyurak sa - kung ikaw 1288 00:57:18,040 --> 00:57:20,820 Nais upang pumasa sa pamamagitan ng madla, malamang ay hindi sumulat 1289 00:57:20,820 --> 00:57:24,120 tulad ng isang tala sa Ingles o anumang iyong katutubong wika; halip, 1290 00:57:24,120 --> 00:57:25,800 maaaring i-encrypt ito. 1291 00:57:25,800 --> 00:57:27,820 O maaari mong lamang magpadala sa kanila ng isang text message ang mga araw na ito. 1292 00:57:27,820 --> 00:57:30,310 Ngunit maaari mong aktwal na ipasa ang mga ito ng tala sa buong silid-aralan. 1293 00:57:30,310 --> 00:57:33,820 At upang gawin ito ligtas na, sa isang paraan na ang iyong mga kaibigan at ang guro 1294 00:57:33,820 --> 00:57:36,820 hindi alam kung ano ang sumusulat ka, maaari kang makabuo ng isang medyo simpleng 1295 00:57:36,820 --> 00:57:37,800 algorithm - 1296 00:57:37,800 --> 00:57:39,290 batang bagaman maaari mong - 1297 00:57:39,290 --> 00:57:40,780 lang mang-uayabit ang mga salita. 1298 00:57:40,780 --> 00:57:44,390 Kaya sa halip ng pagsulat A, maaari mong isulat ang B. Sa halip na B, maaari mong isulat ang 1299 00:57:44,390 --> 00:57:46,670 C. sa halip ng C, maaari mong isulat ang D, at iba pa. 1300 00:57:46,670 --> 00:57:50,020 O maaari kang makabuo ng isang mas sopistikadong pagsasalin ng mga titik 1301 00:57:50,020 --> 00:57:51,300 sa iba't-ibang mga titik. 1302 00:57:51,300 --> 00:57:55,440 Subalit catch ay ang mga batang lalaki o babae sa kung kanino ka pagpapadala ng talang ito ay kailangang 1303 00:57:55,440 --> 00:57:56,850 malaman ng isang bagay. 1304 00:57:56,850 --> 00:57:59,620 Alin ang ano, malinaw naman? 1305 00:57:59,620 --> 00:58:01,400 Tulad ng, kung ano ang iyong sikretong. 1306 00:58:01,400 --> 00:58:04,620 Tulad, ano na pagma-map sa pagitan Bilang at BS at CS at DS? 1307 00:58:04,620 --> 00:58:08,780 Ay ito lamang sa pagdaragdag ng isa, kaya na magsalita, sa bawat isa sa ang mga titik upang pumunta 1308 00:58:08,780 --> 00:58:09,730 A sa B, B sa C? 1309 00:58:09,730 --> 00:58:11,350 Mas kumplikado kaysa sa? 1310 00:58:11,350 --> 00:58:16,450 Kaya ka at ang iyong crush ay kailangang magkaroon ng lihim na impormasyon na ito. 1311 00:58:16,450 --> 00:58:18,170 Ngunit ang uri ng isang catch-22 dito. 1312 00:58:18,170 --> 00:58:20,760 Kung ito ang unang pagkakataon na iyong pagpapadala ng pag-ibig sulat na ito sa pamamagitan ng 1313 00:58:20,760 --> 00:58:25,590 klase, paano na batang lalaki o babae upang malaman kung ano ang lihim ang kahit? 1314 00:58:25,590 --> 00:58:28,450 Kaya sikretong key crypto ay hindi malutas ang lahat ng problema sa mundo. 1315 00:58:28,450 --> 00:58:30,490 At mayroon talagang isang relasyon na namin bumalik sa patungo sa 1316 00:58:30,490 --> 00:58:31,370 ng pagtatapos ng semestre. 1317 00:58:31,370 --> 00:58:35,970 >> Katulad nito, wala sa atin marahil kailanman nagpadala ng isang - 1318 00:58:35,970 --> 00:58:39,453 katulad, karamihan sa atin hindi alam ng isang tao na gumagana, halimbawa, sa 1319 00:58:39,453 --> 00:58:40,300 Amazon.com. 1320 00:58:40,300 --> 00:58:43,130 At, marami sa atin ay malamang na bumili ng mga bagay-bagay sa Amazon.com. 1321 00:58:43,130 --> 00:58:45,670 At kami ay itinuro sa ipagpalagay na ang mga e-commerce 1322 00:58:45,670 --> 00:58:47,060 transaksyon ay ligtas. 1323 00:58:47,060 --> 00:58:47,210 Tama? 1324 00:58:47,210 --> 00:58:49,310 Ang URL ay malamang sabi https. 1325 00:58:49,310 --> 00:58:51,590 May siguro ng ulok maliit na icon na padlock sa isang lugar. 1326 00:58:51,590 --> 00:58:54,680 Mayroong ilang mga uri ng cryptography sa pag-secure ang impormasyon ng iyong credit card 1327 00:58:54,680 --> 00:58:56,980 sa pagitan mo at Amazon.com. 1328 00:58:56,980 --> 00:59:00,410 At pa, kung cryptography nagsasangkot alam ilang lihim, at pa hindi ko 1329 00:59:00,410 --> 00:59:03,330 alam sinuman sa Amazon, at tiyak ko na hindi isagawa ang anumang uri ng 1330 00:59:03,330 --> 00:59:07,350 lihim na may isang tao sa Amazon, kung paano ang aking computer o aking browser ginagawa ito? 1331 00:59:07,350 --> 00:59:10,100 Well, lumiliko out may iba pang mga uri ng cryptography sa kabuuan na malutas 1332 00:59:10,100 --> 00:59:10,740 na problema. 1333 00:59:10,740 --> 00:59:13,610 Ngunit ngayon, makikita naming tumuon sa simpleng isa, kung saan maaari mong ayusin sa 1334 00:59:13,610 --> 00:59:18,480 advance upang malaman ang ilang mga lihim, tulad ng plus 1 o ilang pagma-map sa pagitan Bilang at BS. 1335 00:59:18,480 --> 00:59:20,710 >> At ang proseso ng cryptography sa pangkalahatan ay nagsasangkot ito. 1336 00:59:20,710 --> 00:59:23,550 Mayroon kang ilang mga plain text, itinatanghal dito sa kaliwa. 1337 00:59:23,550 --> 00:59:26,260 Nagpatakbo ka ng ito sa pamamagitan ng ilang uri ng algorithm o pamamaraan 1338 00:59:26,260 --> 00:59:27,670 para sa pag-encrypt ito. 1339 00:59:27,670 --> 00:59:31,390 Siguro na lang Isang nagiging B, B magiging C. At pagkatapos magtapos ka sa 1340 00:59:31,390 --> 00:59:32,260 Cipher teksto. 1341 00:59:32,260 --> 00:59:36,450 Samantala, sa sandaling ang iyong crush natatanggap ng sikretong tandaan, siya ay may pagkatapos 1342 00:59:36,450 --> 00:59:39,950 i-decrypt ito sa pamamagitan ng pangkalahatang pagtaliwas na algorithm upang makakuha ng 1343 00:59:39,950 --> 00:59:41,640 -back ang plain text. 1344 00:59:41,640 --> 00:59:43,860 Ngayon may mga pisikal na anyo ng mga ito. 1345 00:59:43,860 --> 00:59:46,720 Halimbawa, ito ay isang maliit na lihim na decoder ring. 1346 00:59:46,720 --> 00:59:50,060 At ito ay isang ring sa kamalayan na may dalawang dials dito. 1347 00:59:50,060 --> 00:59:53,630 Sa labas paligid ng bagay na ito, may titik A sa pamamagitan ng Z, 1348 00:59:53,630 --> 00:59:55,110 bagaman hindi nila sa random na pagkakasunod-sunod. 1349 00:59:55,110 --> 00:59:58,410 At sa loob, may aktwal na ilang mga numero, tulad na may ganitong 1350 00:59:58,410 --> 01:00:02,940 ring, maaari mong uri ng i-sa labas ngunit hindi sa loob upang pumila 1351 01:00:02,940 --> 01:00:04,110 numero sa mga titik. 1352 01:00:04,110 --> 01:00:08,290 At sa clip na ikaw ay tungkol sa upang makita - ang ilan sa maaaring nakakita ka 24/7 1353 01:00:08,290 --> 01:00:11,120 sa paligid ng Pasko panahon mula sa isang pelikula na tinatawag na A Christmas Story. 1354 01:00:11,120 --> 01:00:16,050 Makikita mo ang na maliit Ralphie ay kaya sabik upang malaman kung anong maliit na ulila 1355 01:00:16,050 --> 01:00:19,810 Lihim na mensahe sa Annie sa kanya na ay Nakipag-ugnayan, sa tingin ko, sa 1356 01:00:19,810 --> 01:00:22,810 bumuo ng ng numeric mensahe sa isang serial box. 1357 01:00:22,810 --> 01:00:26,760 At mayroon kang upang maipon ang lahat ng mga maliit na card na dumating 1358 01:00:26,760 --> 01:00:27,480 sa cereal box. 1359 01:00:27,480 --> 01:00:28,320 Ay ipapadala sa kanila. 1360 01:00:28,320 --> 01:00:31,060 Nagkaroon ka ng upang makuha ang lihim na decoder ring, sa gayon maaari mong wakas malaman 1361 01:00:31,060 --> 01:00:34,190 kung ano ang pagma-map sa pagitan ng mga titik at numero, 1362 01:00:34,190 --> 01:00:35,420 o titik at letra. 1363 01:00:35,420 --> 01:00:39,790 Kaya ako magbibigay sa iyo ang maikling clip mula Isang Kuwento ng Pasko upang ganyakin pset 2 at 1364 01:00:39,790 --> 01:00:42,340 ang aming mga talakayan, sa isang sandali, ng mga array. 1365 01:00:42,340 --> 01:00:43,773 Kaya dito mayroon kaming Ralphie. 1366 01:00:43,773 --> 01:00:44,126 >> [Playback ng video] 1367 01:00:44,126 --> 01:00:47,470 Maging ito kilala sa lahat at sari-sari na ang Ralph Parker ay pinagagamit itinalaga ng 1368 01:00:47,470 --> 01:00:50,690 miyembro ng Little ulila Annie Circle Sekreto ng at karapat-dapat sa lahat 1369 01:00:50,690 --> 01:00:53,500 ang mga parangal at mga benepisyo nagaganap doon. 1370 01:00:53,500 --> 01:00:56,040 -Signed, Little ulila Annie. 1371 01:00:56,040 --> 01:00:58,730 Countersigned, Pierre Andre! 1372 01:00:58,730 --> 01:01:00,150 Sa tinta! 1373 01:01:00,150 --> 01:01:02,910 Mga parangal at mga benepisyo, na sa edad ng siyam na. 1374 01:01:09,970 --> 01:01:10,730 Halika sa, sabihin dito. 1375 01:01:10,730 --> 01:01:15,000 Hindi ko kailangan ang lahat na jazz tungkol sa mga smugglers at pirates. 1376 01:01:15,000 --> 01:01:17,624 Makinig bukas gabi para sa concluding pakikipagsapalaran ng The Black 1377 01:01:17,624 --> 01:01:19,710 Pirate Ship. 1378 01:01:19,710 --> 01:01:23,380 Ngayon ay ang panahon para sa lihim na mensahe sa Annie para sa iyong mga kasapi 1379 01:01:23,380 --> 01:01:25,670 ng Sekreto ng Circle. 1380 01:01:25,670 --> 01:01:30,260 Tandaan, mga bata, mga miyembro lamang ng Sekreto ng Annie Circle decode 1381 01:01:30,260 --> 01:01:31,660 Lihim na mensahe Annie. 1382 01:01:31,660 --> 01:01:36,230 Tandaan, ang Annie ay depende sa iyo. 1383 01:01:36,230 --> 01:01:38,720 Itakda ang iyong mga pin sa B2. 1384 01:01:38,720 --> 01:01:41,040 Narito ang mensahe. 1385 01:01:41,040 --> 01:01:42,470 12, 11 - 1386 01:01:42,470 --> 01:01:46,000 -Am ko sa aking unang pulong ng lihim. 1387 01:01:46,000 --> 01:01:49,440 -14, 11, 18, 16 - 1388 01:01:49,440 --> 01:01:51,700 -Pierre sa mahusay na ngayong gabi ng boses. 1389 01:01:51,700 --> 01:01:54,890 Maaari ko bang sabihin na ang mensahe ngayong gabi ay talagang mahalaga. 1390 01:01:54,890 --> 01:01:56,750 -3, 25. 1391 01:01:56,750 --> 01:01:58,590 Na ang isang mensahe mula sa Annie sarili. 1392 01:01:58,590 --> 01:01:59,840 Tandaan, huwag sabihin sa sinuman. 1393 01:02:04,570 --> 01:02:08,750 -90 Segundo mamaya, ako lamang ang kuwarto sa bahay kung saan ang isang batang lalaki ng siyam 1394 01:02:08,750 --> 01:02:12,980 maaaring umupo sa privacy at-decode. 1395 01:02:12,980 --> 01:02:17,130 Aha, B. nagpunta ako sa susunod na. 1396 01:02:17,130 --> 01:02:20,330 E. Ang unang salita ay hindi. 1397 01:02:20,330 --> 01:02:22,670 S. Ito ay darating na mas madali na ngayon. 1398 01:02:22,670 --> 01:02:24,590 U. 1399 01:02:24,590 --> 01:02:26,510 -Oh, dumating sa, Ralphie. 1400 01:02:26,510 --> 01:02:28,430 Nakatanggap ako upang pumunta. 1401 01:02:28,430 --> 01:02:30,350 -I'll kanan pababa, nanay. 1402 01:02:30,350 --> 01:02:33,720 -GEE paghuni. 1403 01:02:33,720 --> 01:02:38,270 -T, O. Maging sigurado na. 1404 01:02:38,270 --> 01:02:40,000 Maging sigurado sa kung ano ang? 1405 01:02:40,000 --> 01:02:42,105 Ano ang Little ulila Annie pagsubok sasabihin? 1406 01:02:42,105 --> 01:02:43,095 Maging sigurado sa kung ano ang? 1407 01:02:43,095 --> 01:02:43,590 -Ralphie! 1408 01:02:43,590 --> 01:02:44,580 Randy ay nakuha upang pumunta. 1409 01:02:44,580 --> 01:02:45,570 Ay mangyaring lumabas? 1410 01:02:45,570 --> 01:02:46,560 -Lahat ng karapatan, nanay. 1411 01:02:46,560 --> 01:02:48,540 Ko sa labas. 1412 01:02:48,540 --> 01:02:50,580 Na ako ay nakakakuha ng mas malapit ngayon. 1413 01:02:50,580 --> 01:02:52,550 Pag-igting ang ay kahila-hilakbot. 1414 01:02:52,550 --> 01:02:53,355 Ano ito? 1415 01:02:53,355 --> 01:02:56,315 Ang kapalaran ng planeta ay maaaring maging nakasalalay. 1416 01:02:56,315 --> 01:02:56,790 -Ralphie! 1417 01:02:56,790 --> 01:02:59,165 Randy ay nakuha upang pumunta. 1418 01:02:59,165 --> 01:03:02,310 -I'll karapatan out, umiiyak nang malakas. 1419 01:03:02,310 --> 01:03:04,000 -GEE, halos doon. 1420 01:03:04,000 --> 01:03:05,180 Aking mga daliri nagsakay. 1421 01:03:05,180 --> 01:03:07,150 Aking isip ay isang bakal bitag. 1422 01:03:07,150 --> 01:03:08,790 Bawat vibrated tumitig. 1423 01:03:08,790 --> 01:03:10,040 Halos malinaw. 1424 01:03:10,040 --> 01:03:13,400 Oo, oo, oo, oo. 1425 01:03:13,400 --> 01:03:18,960 Maging sigurado sa uminom ang iyong Ovaltine. 1426 01:03:18,960 --> 01:03:20,210 Ovaltine? 1427 01:03:24,010 --> 01:03:25,260 Isang pangit komersyal? 1428 01:03:28,200 --> 01:03:29,640 Anak ng isang asong babae. 1429 01:03:29,640 --> 01:03:33,340 [END video playback] 1430 01:03:33,340 --> 01:03:36,040 >> David J. MALAN: Kaya doon namin magkaroon ng cryptography. 1431 01:03:36,040 --> 01:03:39,670 Kaya kung paano sa isang computer maaari naming pumunta tungkol sa pagpapatupad o 1432 01:03:39,670 --> 01:03:40,950 kumakatawan sa mga bagay na tulad nito? 1433 01:03:40,950 --> 01:03:44,430 Well, kailangan namin ng isang paraan ng pagpapahayag ng ating sarili ng kaunti pa flexibly kaysa 1434 01:03:44,430 --> 01:03:46,420 aming mga variable sa gayon ngayon pinayagan. 1435 01:03:46,420 --> 01:03:47,370 Nagkaroon kami ng ints. 1436 01:03:47,370 --> 01:03:48,380 Nagkaroon kami ng char. 1437 01:03:48,380 --> 01:03:50,790 Nagkaroon kami ng kamay at Doubles at ng ilang mga iba. 1438 01:03:50,790 --> 01:03:55,050 Ngunit ang mga indibidwal na mga piraso ng memorya na hindi talaga daan sa amin upang 1439 01:03:55,050 --> 01:03:58,010 ipahayag ang mga bagay tulad ng mga salita at mga pangungusap at mga parirala. 1440 01:03:58,010 --> 01:04:00,200 Sa katunayan, namin ang tinatawag na tulad string bagay. 1441 01:04:00,200 --> 01:04:03,650 Ngunit ipinangako namin na ito ay talagang lamang pagpapagaan sa CS50 1442 01:04:03,650 --> 01:04:07,020 library na kami ay nagbabalak alisan ng balat pabalik. 1443 01:04:07,020 --> 01:04:08,970 >> At kaya sabihin simulan upang gawin iyon dito. 1444 01:04:08,970 --> 01:04:11,130 Hayaan akong sige at buksan up ng isang file - 1445 01:04:11,130 --> 01:04:13,770 lahat ng mga file na ito ay magagamit tulad ng dati online - 1446 01:04:13,770 --> 01:04:19,120 tinatawag array.c upang malutas ang isang problema na hindi nauugnay sa string ngunit na paints 1447 01:04:19,120 --> 01:04:23,040 larawan dito kung paano namin gamitin ng isang bagay na tinatawag na isang array. 1448 01:04:23,040 --> 01:04:25,530 Isang array ay isang uri ng data. 1449 01:04:25,530 --> 01:04:31,320 Ito ay isang uri ng variable, ng mga uri, na may maramihang mga mas maliit na mga uri ng data 1450 01:04:31,320 --> 01:04:34,150 sa loob nito pabalik sa-back i-back upang i-back. 1451 01:04:34,150 --> 01:04:37,700 Kaya halimbawa, kung gusto namin upang magsulat ng isang maliit na programa na nagbibigay sa iyo ang iyong 1452 01:04:37,700 --> 01:04:42,110 pagsusulit ang average para sa isang kurso tulad ng 50 na may dalawang pagsusulit, maaari mong napaka madaling 1453 01:04:42,110 --> 01:04:45,170 isulat ang programang ito - kahit batay sa ilan sa materyal huling linggo - 1454 01:04:45,170 --> 01:04:47,770 sa pamamagitan ng paggamit ng GetInt at ng ilang mga variable. 1455 01:04:47,770 --> 01:04:51,920 Int quiz1, int quiz2, at medyo direkta. 1456 01:04:51,920 --> 01:04:55,930 Ito ay maaaring 10, 20 linya ng code, max, upang ipatupad ang isang programa na itinatanong ang mga 1457 01:04:55,930 --> 01:05:01,170 computes ang user para sa dalawang marka ng pagsusulit at pagkatapos ay ang kanilang mga average sa pamamagitan ng pagdaragdag sa kanila 1458 01:05:01,170 --> 01:05:03,850 magkasama, paghahati ng dalawang, at pagkatapos ay pag-print ang mga resulta. 1459 01:05:03,850 --> 01:05:06,380 Namin malamang gawin na medyo kaagad ngayon matapos 1460 01:05:06,380 --> 01:05:07,510 ilang bilang ng mga minuto. 1461 01:05:07,510 --> 01:05:11,005 >> Ngunit ang problema ay na ipagpalagay na 50 ay may tatlong mga pagsusulit o apat. 1462 01:05:11,005 --> 01:05:13,510 Ipagpalagay na nais mong gamitin ang parehong programa para sa isang klase na nagkaroon 1463 01:05:13,510 --> 01:05:14,850 lingguhang pagsusulit. 1464 01:05:14,850 --> 01:05:16,610 -Isip tungkol sa isang klase na lingguhang pagsusulit. 1465 01:05:16,610 --> 01:05:20,610 Kung mayroong tulad ng 16 o kaya linggo sa isang semestre, ngayon mayroon kang 16 variable - 1466 01:05:20,610 --> 01:05:24,270 int quiz1, int quiz2, int quiz3, int quiz4. 1467 01:05:24,270 --> 01:05:27,560 Sa lalong madaling simulan mo nakikita ang kalabisan, ang pagkopya at pag-paste 1468 01:05:27,560 --> 01:05:31,390 ng code, dapat itong magsimula sa nais mong mayroong isang mas mahusay na paraan. 1469 01:05:31,390 --> 01:05:33,930 At thankfully, dahil sa array, may. 1470 01:05:33,930 --> 01:05:34,980 Kaya sabihin gawin ito. 1471 01:05:34,980 --> 01:05:38,430 Una, hayaan mo akong ipakilala ang isang napaka-simpleng bagay na hindi namin ginagamit sa gayon ngayon, 1472 01:05:38,430 --> 01:05:40,140 ngunit makikita mo ang mga ito paminsan-minsan sa code. 1473 01:05:40,140 --> 01:05:42,360 Ito ay kung ano ang pangkalahatan ay tinatawag na isang pare-pareho. 1474 01:05:42,360 --> 01:05:45,790 Kaya ito ay isang pare-pareho sa kamalayan na ang halaga na ito ay hindi kailanman nagbabago. 1475 01:05:45,790 --> 01:05:49,210 Ang tao convention kapag lumilikha ng isang pare-pareho ay upang gamitin ang lahat ng kabisera 1476 01:05:49,210 --> 01:05:51,940 titik, lamang upang ito ay talagang nakatayo sa iyong code. 1477 01:05:51,940 --> 01:05:55,960 At ang mga espesyal na keyword na gamitin mo sa C # tukuyin. 1478 01:05:55,960 --> 01:06:00,250 Kaya kung sinasabi mo # tukuyin, pagkatapos ng isang puwang, pagkatapos ay ang salita na gusto mong gamitin para sa 1479 01:06:00,250 --> 01:06:03,260 pangalan ng pare-pareho, at pagkatapos ay ang halaga ng pare-pareho. 1480 01:06:03,260 --> 01:06:06,180 Kaya paunawa, ito ay naiiba mula sa nagtatalaga ng isang bagay sa isang variable. 1481 01:06:06,180 --> 01:06:07,020 Walang equals sign. 1482 01:06:07,020 --> 01:06:08,240 Mayroong ang walang semicolon. 1483 01:06:08,240 --> 01:06:11,410 Ito ay kung ano ang karaniwang kilala bilang isang Preprocessor panuto, ngunit higit pa sa 1484 01:06:11,410 --> 01:06:12,210 na ibang oras. 1485 01:06:12,210 --> 01:06:18,540 >> Sa ngayon, ito ay lumilikha ng isang walang pagbabago halaga na tinatawag na mga pagsusulit na aktwal na 1486 01:06:18,540 --> 01:06:19,940 numerong halaga ay 2. 1487 01:06:19,940 --> 01:06:24,020 Kaya kahit saan mo ang pagsusulit, Pagsusulit, Pagsusulit sa buong ang file na ito, na 1488 01:06:24,020 --> 01:06:25,410 ang bilang 2. 1489 01:06:25,410 --> 01:06:28,100 Ngayon, kung tiningnan ko sa pangunahing ngayon, sabihin makita kung paano ito gumagana. 1490 01:06:28,100 --> 01:06:29,500 Sa una, mukhang ng kaunti misteriyoso. 1491 01:06:29,500 --> 01:06:31,340 Subalit ang lahat ng mga bagay-bagay mula sa linggo isa. 1492 01:06:31,340 --> 01:06:32,710 Magtanong ng gumagamit para sa mga grado. 1493 01:06:32,710 --> 01:06:33,630 Paano namin gawin ito? 1494 01:06:33,630 --> 01:06:35,470 Well, sa linya 22 - 1495 01:06:35,470 --> 01:06:37,210 talaga ito ang makatas bahagi - 1496 01:06:37,210 --> 01:06:40,960 Dinedeklara ko ng Float, ngunit hindi lamang ng isang solong Float. 1497 01:06:40,960 --> 01:06:44,620 Ako deklarasyon, sa halip, ang isang hanay ng mga lumulutang na halaga ng point. 1498 01:06:44,620 --> 01:06:49,100 Na variable na tinatawag na grado, tulad ng ipinahiwatig dito. 1499 01:06:49,100 --> 01:06:53,080 Ngunit ang tanging piraso ng bagong syntax ang mga square bracket, ang katotohanan 1500 01:06:53,080 --> 01:06:59,350 ko ang sinabi Float grado at pagkatapos ay bukas bracket at pagkatapos ay isang numero. 1501 01:06:59,350 --> 01:07:02,460 Paunawa, kung ito ay patuloy na, ito ay tulad ng ginawa namin ito. 1502 01:07:02,460 --> 01:07:06,890 Nangangahulugan ito hey computer, ninyo ako ng dalawang kamay, at sabihin sama-sama tumawag 1503 01:07:06,890 --> 01:07:08,220 kanila grado. 1504 01:07:08,220 --> 01:07:11,920 Ito ay sa kaibahan sa mas nakakapagod na proseso tulad nito. 1505 01:07:11,920 --> 01:07:15,850 Lumutang grade1, lumutang grade2, at iba pa. 1506 01:07:15,850 --> 01:07:20,010 Kaya array ng isang nagbibigay-daan sa amin upang ipatupad ang ideya ngunit higit na mas mababa messily, sa 1507 01:07:20,010 --> 01:07:24,630 ganitong paraan namin magsulat ng isang linya ng code sa halip ng, sabihin nating, 16 para sa isang 16 1508 01:07:24,630 --> 01:07:25,740 linggo semestre. 1509 01:07:25,740 --> 01:07:29,950 Kaya hindi ko nais na hard-code 2 dahil kung sa tingin mo tungkol sa ngayon 1510 01:07:29,950 --> 01:07:34,160 lohikal - ipagpalagay susunod na taon CS50 mga pagbabago sa 3 Pagsusulit sa halip. 1511 01:07:34,160 --> 01:07:35,510 At ako ay ang bilang 2 dito. 1512 01:07:35,510 --> 01:07:36,600 Ko ay ang bilang 2 dito. 1513 01:07:36,600 --> 01:07:37,580 Ko ay ang bilang 2 dito. 1514 01:07:37,580 --> 01:07:38,560 Ko ay ang bilang 2 dito. 1515 01:07:38,560 --> 01:07:43,180 Nagiging napaka nakakapagod at mas madali upang magtaas at sinasadyang baguhin 1516 01:07:43,180 --> 01:07:47,690 isang halaga sa 3 at makaligtaan ang ilang iba pang mga halaga ng 2. 1517 01:07:47,690 --> 01:07:52,460 Kaya ako ng pagpunta sa halip abstract ito ang layo at gamitin ang mga pare-pareho na, dahil ang mga 1518 01:07:52,460 --> 01:07:54,120 pangalan ay nagmumungkahi, hindi kailanman pagbabago. 1519 01:07:54,120 --> 01:07:57,710 At ngayon, kahit na kung mayroon kaming iba't ibang mga pagsusulit sa taong ito o sa susunod na, ako 1520 01:07:57,710 --> 01:08:01,210 na lang ay upang baguhin ito sa isang lugar, hanggang dito sa itaas. 1521 01:08:01,210 --> 01:08:02,720 >> Kaya na ang lahat ng pare-pareho ay. 1522 01:08:02,720 --> 01:08:08,680 Samantala, ang bagong tampok ng haka-haka na ng isang array. 1523 01:08:08,680 --> 01:08:14,660 Kaya ang mga square bracket ay nagbibigay sa akin ito maraming kamay at hinahayaan akin sama-sama 1524 01:08:14,660 --> 01:08:16,630 tumawag sa kanila grado dito. 1525 01:08:16,630 --> 01:08:17,990 Kaya ngayon sabihin makita kung ano ako pagpunta sa gawin. 1526 01:08:17,990 --> 01:08:20,359 Narito sa linya 24 sa simula ng isang para sa loop. 1527 01:08:20,359 --> 01:08:22,260 Ito ay talagang walang magarbong. 1528 01:08:22,260 --> 01:08:25,060 Lamang ito gamit ang Pagsusulit sa halip ng isang hard-code na numero. 1529 01:08:25,060 --> 01:08:27,790 Ngunit mayroong walang intellectually ibang doon mula sa nakaraang linggo. 1530 01:08:27,790 --> 01:08:29,040 Ito lang printf. 1531 01:08:29,040 --> 01:08:35,490 Kaya printf ("pagsusulit bilang% d ng% d") dahil ko lang nais na i-print ninyo akong bigyan pagsusulit 1532 01:08:35,490 --> 01:08:38,050 bilang isa sa dalawang at pagkatapos ng dalawang ng dalawang. 1533 01:08:38,050 --> 01:08:39,850 Kaya ito ay pulos isang Aesthetic bagay. 1534 01:08:39,850 --> 01:08:42,500 Ngunit ngayon ang kawili-wiling bahagi sa linya 27. 1535 01:08:42,500 --> 01:08:48,310 Upang punan sa isa sa dalawang mga placeholder na may lumulutang-point 1536 01:08:48,310 --> 01:08:51,029 halaga, muli mo gumamit ng mga square bracket. 1537 01:08:51,029 --> 01:08:55,620 Sa kasong ito, gumagamit ako ng i dahil ito para sa loop ay nagsimula sa pag-i katumbas 1538 01:08:55,620 --> 01:08:57,560 kung ano ang halaga, tila? 1539 01:08:57,560 --> 01:08:58,279 0. 1540 01:08:58,279 --> 01:09:01,350 >> Kaya sa unang pag-ulit na ito loop, na parang ako 1541 01:09:01,350 --> 01:09:02,689 sinulat ni ito sa code. 1542 01:09:02,689 --> 01:09:05,580 Ngunit sa ang pangalawang pag-ulit ng loop na ito, ito ay parang ako 1543 01:09:05,580 --> 01:09:07,750 sinulat ni ito sa aking code. 1544 01:09:07,750 --> 01:09:10,750 Ngunit ang katotohanan na gumagamit ako ng isang variable ay perpekto dahil, bilang ang pangalan 1545 01:09:10,750 --> 01:09:14,300 nagmumungkahi, ito ang iba't ibang ang halaga nito sa bawat pag-ulit. 1546 01:09:14,300 --> 01:09:17,370 Kaya ako pinupunan ito array isang lugar sa isang pagkakataon. 1547 01:09:17,370 --> 01:09:18,910 Ano ang array na ito hitsura? 1548 01:09:18,910 --> 01:09:21,430 Well, dahilan iginuhit ko ito sobrang simple na parihaba sa screen dito 1549 01:09:21,430 --> 01:09:23,350 bago ay para sa kadahilanang ito. 1550 01:09:23,350 --> 01:09:27,279 Array isang ay isang tipak ng memorya na sinundan sa pamamagitan ng isa pang tipak ng memory, 1551 01:09:27,279 --> 01:09:30,109 sinundan ng isa pang tipak ng memory, at iba pa. 1552 01:09:30,109 --> 01:09:35,260 Kaya kung ang aking array ng laki 2, sa kasong ito dito, ang lahat ng Gusto ko ay ginagawa sa pamamagitan ng 1553 01:09:35,260 --> 01:09:37,590 mag-type sa aking mga marka ng pagsusulit, i dito. 1554 01:09:37,590 --> 01:09:39,430 Nakakuha ako ng 100 sa isang ito. 1555 01:09:39,430 --> 01:09:42,020 At pagkatapos Nakatanggap ako ng 99 sa isang ito. 1556 01:09:42,020 --> 01:09:46,040 Pagkatapos memory na ito ay hindi maaaring kahit gamitin dahil tatanungin ko na lamang ang 1557 01:09:46,040 --> 01:09:48,689 computer para sa isang hanay ng mga laki 2. 1558 01:09:48,689 --> 01:09:50,180 Yaong mga parisukat ay pa rin doon. 1559 01:09:50,180 --> 01:09:50,340 Tama? 1560 01:09:50,340 --> 01:09:52,500 Mayroon ka pa ring dalawang gigabytes ng RAM, kahit na kung ikaw lamang 1561 01:09:52,500 --> 01:09:53,979 pagtatanong para sa dalawang kamay. 1562 01:09:53,979 --> 01:09:58,710 Kaya ang ideya sa likod ng mga array ay computer na iyon lamang tumatagal ng isang tipak ng memory 1563 01:09:58,710 --> 01:10:03,230 at pagkatapos apportions mas maliit na piraso pabalik upang i-back i-back upang i-back. 1564 01:10:03,230 --> 01:10:04,740 At sa gayon ay ang lahat ng array ay isang. 1565 01:10:04,740 --> 01:10:09,080 Ito ay isang magkadikit na tipak ng memorya, sa loob ng kung saan maaari kang maglagay ng mga bagay. 1566 01:10:09,080 --> 01:10:12,400 >> Ngayon, ito ang mangyayari pagkatapos lamang ilang pagbubutas aritmetika. 1567 01:10:12,400 --> 01:10:16,170 Kung mag-scroll pababa ko dito, ito ay kung saan ako umulit sa ibabaw ng array. 1568 01:10:16,170 --> 01:10:19,410 Dumating ko na ang kabuuan ng lahat ng mga halaga sa array. 1569 01:10:19,410 --> 01:10:22,390 At pagkatapos ay gamitin ko ang pag-ikot ng pagpapaandar dito upang aktwal na gawin ang 1570 01:10:22,390 --> 01:10:23,940 nagtutuos na hinati sa pamamagitan ng pagsusulit. 1571 01:10:23,940 --> 01:10:27,450 Ngunit ipaalam sa akin iwagayway ang aking kamay sa na bilang uri ng sapat na pang-aritmetika sa ngayon. 1572 01:10:27,450 --> 01:10:30,010 Ngunit ang lahat na ginagawa para sa akin sa huli ay compute ng isang average. 1573 01:10:30,010 --> 01:10:33,640 Kaya unang pagsusulit kasama ang pangalawang pagsusulit, na hinati sa pamamagitan ng 2, at pagkatapos ay pag-print 1574 01:10:33,640 --> 01:10:34,700 ito bilang isang int. 1575 01:10:34,700 --> 01:10:39,030 >> Ngunit natin ngayon paglipat sa ibang halimbawa na tinatawag string1, 1576 01:10:39,030 --> 01:10:42,370 na paints isang katulad na larawan ngunit gamit ang string. 1577 01:10:42,370 --> 01:10:45,550 Hayaan akong magpatuloy at pasimplehin ito para sa sandali lamang. 1578 01:10:45,550 --> 01:10:48,340 At patawarin ang indentation sa ngayon. 1579 01:10:48,340 --> 01:10:52,280 Abiso sa linya 19 ng halimbawang ito, nakakuha ako ng string mula sa user. 1580 01:10:52,280 --> 01:10:55,780 Ngunit mapansin kung ano ang susunod na ako ginagawa sa linya 22 pasulong. 1581 01:10:55,780 --> 01:11:00,260 Iterating aktwal ako mula sa i hanggang sa - at ito ay isang bagong nanlilinlang - 1582 01:11:00,260 --> 01:11:02,730 strlen, haba ng string. 1583 01:11:02,730 --> 01:11:07,010 Ito ay isang function na may C na kung kayo na ipasa ito ng isang string, ito ay nagsasabi sa 1584 01:11:07,010 --> 01:11:08,950 iyo kung gaano karaming mga character ay sa na string. 1585 01:11:08,950 --> 01:11:09,440 Iyon lang. 1586 01:11:09,440 --> 01:11:12,520 Ang katotohanan na ito ay strlen halip ang haba ng string ay dahil lang sa ito ay 1587 01:11:12,520 --> 01:11:13,040 higit pa maikli at malinaw. 1588 01:11:13,040 --> 01:11:17,100 30 taon na ang nakalipas, ang mga tao ang gumusto na magsulat ng mga bagay pati na succinctly hangga't maaari. 1589 01:11:17,100 --> 01:11:19,080 Kaya nagbigay kami iningatan ng convention na dito. 1590 01:11:19,080 --> 01:11:21,730 i + + lamang nangangahulugan dagdagan i sa bawat pag-ulit. 1591 01:11:21,730 --> 01:11:24,310 At ngayon ay mapapansin na ito, na kung saan ay talagang kawili-wili. 1592 01:11:24,310 --> 01:11:28,730 Kaya sa linya 24, sinasabi ko computer, akong bigyan ng character, walong 1593 01:11:28,730 --> 01:11:30,770 bit, at tawagan ang mga ito c. 1594 01:11:30,770 --> 01:11:35,370 Ngunit ano ito sa kanang bahagi sinasabi? 1595 01:11:35,370 --> 01:11:38,150 Sa Ingles, ano na kumakatawan? 1596 01:11:38,150 --> 01:11:40,070 [Hindi marinig] 1597 01:11:40,070 --> 01:11:40,490 David J. MALAN: Eksaktong. 1598 01:11:40,490 --> 01:11:42,390 Bigyan ako ang unang character sa array. 1599 01:11:42,390 --> 01:11:45,400 O mas pangkalahatang paraan, magbigay sa akin ang i-ika na katangian sa array. 1600 01:11:45,400 --> 01:11:48,230 At Napagtanto ito mahalaga ngayon na bilang mga siyentipiko computer na, hindi namin aktwal 1601 01:11:48,230 --> 01:11:49,330 pagbibilang mula 0. 1602 01:11:49,330 --> 01:11:51,290 Hindi mo na kailangang paghuhusga ngayon upang simulan ang paggawa nito. 1603 01:11:51,290 --> 01:11:54,580 Ngayon ay mayroon kang upang kumilos alinsunod sa mga inaasahan ng computer at 1604 01:11:54,580 --> 01:11:58,010 mabibilang mula sa zero dahil ang [0] ay ang unang 1605 01:11:58,010 --> 01:11:59,670 character sa isang string. 1606 01:11:59,670 --> 01:12:01,320 [1] ay ang pangalawang. 1607 01:12:01,320 --> 01:12:03,610 [2] ay ang ikatlong, at iba pa. 1608 01:12:03,610 --> 01:12:08,840 Kaya sa programang ito, kung makatipon ko ito - ito ay, muli, string1. 1609 01:12:08,840 --> 01:12:11,040 >> Kaya't string1. 1610 01:12:11,040 --> 01:12:16,730 At ngayon nagpatakbo ako ng string1 sa aking terminal na window. 1611 01:12:16,730 --> 01:12:19,180 Ito ay naghihintay para sa input, kaya ako i-type sa, sabihin nating, David. 1612 01:12:19,180 --> 01:12:20,080 Enter. 1613 01:12:20,080 --> 01:12:23,350 At ngayon ito ng mga Kopya David lahat sa iba't-ibang linya dahil 1614 01:12:23,350 --> 01:12:24,430 mapansin kung ano ang ako ginagawa. 1615 01:12:24,430 --> 01:12:27,510 Ako pag-print ng isang character sa isang pagkakataon. 1616 01:12:27,510 --> 01:12:29,100 Ngayon ay hindi namin pumunta sa detalye ngayon ito. 1617 01:12:29,100 --> 01:12:31,610 Ngunit ako inalis ang isang sandali ang nakalipas ang pagsusuring ito dito. 1618 01:12:31,610 --> 01:12:36,310 Ito lumiliko out na kung ang gumagamit ay magulo, adversarial, o 1619 01:12:36,310 --> 01:12:41,780 nalilito, maaari mong aktwal na mabibigo upang magbigay ng isang string ng ilang haba. 1620 01:12:41,780 --> 01:12:43,640 Kung ikaw pindutin ang maling key sa keyboard, maaari mong bigyan ang 1621 01:12:43,640 --> 01:12:44,390 walang string sa lahat. 1622 01:12:44,390 --> 01:12:47,790 O kung ikaw ay nakahahamak na, maaari mong subukang i-paste sa isang gigabyte halaga ng isang 1623 01:12:47,790 --> 01:12:49,380 sanaysay upang punan ang string na ito. 1624 01:12:49,380 --> 01:12:52,060 At kung ang computer ay nagpapatakbo ng memorya, lumiliko out na namin ang pagpunta 1625 01:12:52,060 --> 01:12:54,310 upang makabalik ito espesyal na halaga na tinatawag na null. 1626 01:12:54,310 --> 01:12:57,550 Kaya sa ngayon, alam na may ito espesyal na halaga na tinatawag na null 1627 01:12:57,550 --> 01:13:01,000 ay magbibigay-daan sa amin upang suriin kapag hindi namin ng memorya, bukod sa iba pang mga bagay. 1628 01:13:01,000 --> 01:13:07,330 >> Ngunit kung buksan ko up ngayon string2, mapansin ang isang pagkakaiba dito. 1629 01:13:07,330 --> 01:13:09,760 Mapansin ang isang pagkakaiba dito sa string2. 1630 01:13:09,760 --> 01:13:13,260 Na may string2, ito para sa loop ng kaunti ibang. 1631 01:13:13,260 --> 01:13:16,350 Hayaan akong tanggalin ang nulls upang maaari naming makipag-usap tungkol sa mga ibang oras. 1632 01:13:16,350 --> 01:13:18,460 Ngunit kung ano ang naiiba tungkol sa para sa loop oras na ito? 1633 01:13:21,580 --> 01:13:23,160 At maaari ba akong bumalik sa nakaraang halimbawa. 1634 01:13:23,160 --> 01:13:24,800 Kaya na bersyon ng dalawang. 1635 01:13:24,800 --> 01:13:27,020 Ito ay bersyon ng isa. 1636 01:13:27,020 --> 01:13:31,935 Isa, dalawa, isa sa dalawang. 1637 01:13:35,030 --> 01:13:38,240 Kaya ang strlen tawag ay kung saan? 1638 01:13:38,240 --> 01:13:40,420 Sa unang bahagi ng para sa loop. 1639 01:13:40,420 --> 01:13:43,060 Anumang saloobin sa kung bakit ako ginagawa ito? 1640 01:13:43,060 --> 01:13:43,690 Oo. 1641 01:13:43,690 --> 01:13:46,010 [Hindi marinig] 1642 01:13:46,010 --> 01:13:47,630 David J. MALAN: Kaya hindi namin tawagan ang function na bawat solong oras. 1643 01:13:47,630 --> 01:13:48,040 Eksakto. 1644 01:13:48,040 --> 01:13:50,350 Manariwa sa diwa mula sa para sa loop na ito ay sobrang simple sa sandaling uri ng 1645 01:13:50,350 --> 01:13:52,180 maunawaan na ito ay ang Pinasimulan, 1646 01:13:52,180 --> 01:13:53,330 kondisyon, at ang pag-update. 1647 01:13:53,330 --> 01:13:55,430 Ang problema ay na ang kundisyon na ang mangyayari sa bawat 1648 01:13:55,430 --> 01:13:56,600 ulit ng loop. 1649 01:13:56,600 --> 01:13:59,930 At kaya sa halimbawang ito dito, kung ano ang masamang tungkol sa katotohanan 1650 01:13:59,930 --> 01:14:03,500 na ito ay ang aking kondisyon? 1651 01:14:03,500 --> 01:14:05,920 Ka pagtawag strlen muli at muli at muli. 1652 01:14:05,920 --> 01:14:08,990 Ngunit sa sandaling nai-type ko sa David, ang haba ng string na limang. 1653 01:14:08,990 --> 01:14:11,560 At hindi ito baguhin sa bawat pag-ulit ng loop dahil ang 1654 01:14:11,560 --> 01:14:15,560 string ay pa rin D-A-V-ko-D. Kaya ito ay isang pahiwatig sa kung ano ang nangyayari upang maging isang 1655 01:14:15,560 --> 01:14:19,650 nagiging mahalagang ideya na kilala bilang isang desisyon ng disenyo, kung saan - hindi 1656 01:14:19,650 --> 01:14:21,640 computer ng hindi kinakailangang trabaho. 1657 01:14:21,640 --> 01:14:25,630 >> Ngayon tulad ng sneak preview ng pset 2, pset 2 sa standard edition 1658 01:14:25,630 --> 01:14:28,850 pagpunta na hamunin ka sa aktwal na ipatupad ang ilang bilang ng mga ciphers, ilang 1659 01:14:28,850 --> 01:14:32,650 bilang ng mga algorithm ng pag-encrypt, kaya na maaari mong parehong-encrypt at decrypt 1660 01:14:32,650 --> 01:14:35,530 lihim na mga mensahe, tulad ng isang Ralphie doon decoded. 1661 01:14:35,530 --> 01:14:38,720 Sa Hacker na edisyon ng pset 2, kami ay pagpunta sa pumunta ng kaunti karagdagang. 1662 01:14:38,720 --> 01:14:42,010 Kami ay pagpunta sa ipasa mo ang isang file mula sa isang aktwal na sistema ng computer na naglalaman ng 1663 01:14:42,010 --> 01:14:45,690 buong bungkos ng mga username at aktwal na naka-encrypt na password, at ang hamon 1664 01:14:45,690 --> 01:14:49,110 para sa edisyon ng Hacker ay pagpunta sa magpahaginit mga password at figure 1665 01:14:49,110 --> 01:14:53,060 kung ano cryptography o kung ano ang lihim ay ginagamit upang aktwal na 1666 01:14:53,060 --> 01:14:55,080 bumuo ng mga password na iyon. 1667 01:14:55,080 --> 01:14:58,360 At kami ay pagpunta sa gawin ito sa pamamagitan ng paggamit ng isang bagong tampok dito ng C na Bibigyan kita 1668 01:14:58,360 --> 01:15:02,200 mo lang ang isang demo ng, na kilala bilang command-line argumento. 1669 01:15:02,200 --> 01:15:05,930 >> Kaya ito lumiliko out, ng ilan sa inyo ay maaaring makikita sa seksiyon o sa mga aklat-aralin, 1670 01:15:05,930 --> 01:15:09,850 pangunahing ay hindi palaging upang maging walang bisa sa panaklong. 1671 01:15:09,850 --> 01:15:14,060 Ito lumiliko out na ang pangunahing maaari ring nakasulat tulad nito, may dalawang argumento, 1672 01:15:14,060 --> 01:15:19,690 argc at argv, kung saan ang argc ay ang bilang ng mga salita na nag-type ka pagkatapos 1673 01:15:19,690 --> 01:15:21,940 pangalan ng programa sa iyong linya ng command. 1674 01:15:21,940 --> 01:15:24,550 At argv ay ang aktwal na mga salita. 1675 01:15:24,550 --> 01:15:29,470 At ng mga square bracket doon iminumungkahi, ang argv ay tila isang array. 1676 01:15:29,470 --> 01:15:33,720 Ito ay pagpunta sa isang string pagkatapos ng isang string pagkatapos ng isang string sa memory. 1677 01:15:33,720 --> 01:15:36,170 Kaya kung ano ang namin ang pagpunta sa gawin, na nagsisimula sa pset 2, 1678 01:15:36,170 --> 01:15:37,310 isang bagay tulad nito. 1679 01:15:37,310 --> 01:15:42,450 Kung gumawa ako argv1, na kung saan ay isang halimbawa magpapadala kami ay bumalik sa sa Monday, at magpatakbo ng 1680 01:15:42,450 --> 01:15:45,180 ito, mapapansin na ito ay hindi mukhang gawin pa. 1681 01:15:45,180 --> 01:15:47,050 Ito lamang mga Kopya sarili nitong pangalan. 1682 01:15:47,050 --> 01:15:53,220 Ngunit kung sabihin ko paalam klase, notice na ang programang ito ay tila iterates 1683 01:15:53,220 --> 01:15:57,030 sa bawat isa ng mga salita na na-type sa prompt. 1684 01:15:57,030 --> 01:16:02,050 At ang mga paraan sa pamamagitan ng kung saan kami ay makakuha ng access sa mga salita na ang user ay may 1685 01:16:02,050 --> 01:16:06,780 na nai-type sa prompt sa pamamagitan ng pagbabago ng pangunahing, na nagsisimula ito weekend, mula int 1686 01:16:06,780 --> 01:16:10,710 pangunahing (walang bisa) int pangunahing (argc, argv). 1687 01:16:10,710 --> 01:16:13,700 At sa gayon ay ipinanganak na command argumento line. 1688 01:16:13,700 --> 01:16:17,210 At kapag kumuha ka ng talagang sopistikadong sa, magagawa mong upang magsulat 1689 01:16:17,210 --> 01:16:21,370 talagang trippy programa, tulad ng isang ito dito, na napupunta sa itaas at lampas 1690 01:16:21,370 --> 01:16:25,520 ilan ng ang pag-andar tapos kami na sa gayon ay malayo ngunit lahat ng medyo malakas na. 1691 01:16:25,520 --> 01:16:27,330 >> Kaya namin na nakalabas ang mga ito sa ito sa screen. 1692 01:16:27,330 --> 01:16:29,160 At kami ay nakikita mo sa Lunes.