1 00:00:00,000 --> 00:00:00,487 2 00:00:00,487 --> 00:00:11,210 >> [MUSIC nagpe-play] 3 00:00:11,210 --> 00:00:12,100 >> Rob BODEN: Lahat ng karapatan. 4 00:00:12,100 --> 00:00:15,620 Kaya, ang unang bagay na unang, ng video mula sa isang pamilyar na mukha. 5 00:00:15,620 --> 00:00:22,080 6 00:00:22,080 --> 00:00:22,560 >> [VIDEO sa pag-playback] 7 00:00:22,560 --> 00:00:23,370 >> Right-Lahat. 8 00:00:23,370 --> 00:00:27,150 Ito ay CS50, at ito ay simula ng linggo tatlo. 9 00:00:27,150 --> 00:00:29,980 Ikinalulungkot kong hindi ko maaaring maging doon sa iyo ngayon, ngunit payagan ang sa akin upang ipakilala 10 00:00:29,980 --> 00:00:32,880 Sariling Rob Boden CS50 ni. 11 00:00:32,880 --> 00:00:33,872 >> [END VIDEO sa pag-playback] 12 00:00:33,872 --> 00:00:39,340 >> [Palakpakan AT Cheers] 13 00:00:39,340 --> 00:00:41,277 >> Rob BODEN: Ang filmography sa video na ay hindi kapani-paniwala. 14 00:00:41,277 --> 00:00:47,280 15 00:00:47,280 --> 00:00:47,770 Ayos lang. 16 00:00:47,770 --> 00:00:50,960 Kaya una, mayroong isa pang tanghalian. 17 00:00:50,960 --> 00:00:52,330 Ito ay bukas sa 01:15. 18 00:00:52,330 --> 00:00:54,480 Walang tanghalian ito Biyernes. 19 00:00:54,480 --> 00:00:55,810 Ito ay may Quora. 20 00:00:55,810 --> 00:01:00,190 At Tommy Hindi pa dito, ngunit ang isa sa ang mga tao doon ay dating ulo CF, 21 00:01:00,190 --> 00:01:01,530 Tommy McWilliam. 22 00:01:01,530 --> 00:01:02,730 Kaya siya ay isang masaya tao. 23 00:01:02,730 --> 00:01:04,819 Dapat mong dumating. 24 00:01:04,819 --> 00:01:05,900 >> Ayos lang. 25 00:01:05,900 --> 00:01:11,360 Kaya noong nakaraang linggo, nagsimula kaming breaking hiwalayin tungkol sa kung ano ang isang string ay tunay na. 26 00:01:11,360 --> 00:01:14,830 Na kilala namin dahil sa simula na ito ay isang pagkakasunod-sunod ng mga character. 27 00:01:14,830 --> 00:01:18,130 Ngunit noong nakaraang linggo, namin delved sa katotohanan na kung ano ay talagang isang pagkakasunod-sunod ng 28 00:01:18,130 --> 00:01:22,110 character, mahusay, mayroon kaming ngayon array ng mga character. 29 00:01:22,110 --> 00:01:26,450 At alam namin na ang isang string, ito ay isang array ng mga character, sa dulo, 30 00:01:26,450 --> 00:01:30,920 mayroon kaming ito espesyal null byte, ito backslash 0, na nagpapahiwatig sa dulo ng 31 00:01:30,920 --> 00:01:32,230 ang string. 32 00:01:32,230 --> 00:01:36,970 >> At kaya isang string ay isang hanay ng mga character, ngunit maaari kaming magkaroon ng higit sa 33 00:01:36,970 --> 00:01:39,530 lamang ng isang array ng mga character, maaari kaming magkaroon ng isang array ng anumang 34 00:01:39,530 --> 00:01:40,890 uri ng bagay na gusto namin. 35 00:01:40,890 --> 00:01:51,570 Kaya, kung isipin mo mula sa nakaraang linggo, ang Programa Ages na ipinakilala David 36 00:01:51,570 --> 00:01:53,560 talagang mabilis. 37 00:01:53,560 --> 00:01:57,010 Kaya unang bagay na kami ay pagpunta sa gawin ay tanungin ang user para sa isang integer, ang 38 00:01:57,010 --> 00:01:58,800 bilang ng mga tao sa room. 39 00:01:58,800 --> 00:02:01,260 Sa sandaling mayroon kaming na integer, kami ay deklarasyon ng isang array. 40 00:02:01,260 --> 00:02:02,890 Pansinin na ito bracket syntax. 41 00:02:02,890 --> 00:02:04,540 Ikaw ay pagpunta sa masanay na. 42 00:02:04,540 --> 00:02:09,430 >> Kaya kami deklarasyon ng isang array ng integer tinatawag na edad at may mga n 43 00:02:09,430 --> 00:02:12,080 integer sa array. 44 00:02:12,080 --> 00:02:16,480 Kaya ang pattern na ito dito mismo, ang 4 int i katumbas ng 0, i Mababa sa n, i plus 45 00:02:16,480 --> 00:02:20,580 plus, na Pupunta rin upang maging isang pattern na ang pinaka ka masanay. 46 00:02:20,580 --> 00:02:24,000 Dahil na medyo magkano kung paano ikaw ay palaging pagpunta upang umulit sa paglipas ng array. 47 00:02:24,000 --> 00:02:26,330 Kaya tandaan na n ay ang haba ng aming array. 48 00:02:26,330 --> 00:02:32,120 At kaya dito, kami ay paulit-ulit na nagtatanong para sa edad ng tao i sa kuwarto. 49 00:02:32,120 --> 00:02:36,640 >> Pagkatapos nito, pumunta kami pababa, at para sa anumang di-makatwirang dahilan, kami pagkatapos 50 00:02:36,640 --> 00:02:40,220 i-print out kung paano lumang sila ay pagpunta upang maging isang taon mula ngayon. 51 00:02:40,220 --> 00:02:49,980 At tumakbo ang program na, sabihin gumawa edad, dot slash edad. 52 00:02:49,980 --> 00:02:53,010 Kaya bilang ng mga tao sa room, sabihin nating may tatlong. 53 00:02:53,010 --> 00:02:59,880 At sabihin, ang unang tao ay 13, susunod na 26 na, at ang huling ay 30. 54 00:02:59,880 --> 00:03:05,080 Kaya pagkatapos ay magkakaroon ito umulit sa paglipas ng mga tatlong mga tao, mag-print ng 14, 27, at 31. 55 00:03:05,080 --> 00:03:16,060 >> Kaya tandaan na kapag idedeklara kami ng isang hanay ng mga laki n, ang mga indeks sa na 56 00:03:16,060 --> 00:03:19,950 array, ang array ay may halaga at mga indeks ng 0, 1, 2, ang lahat ng paraan 57 00:03:19,950 --> 00:03:21,680 hanggang n minus 1. 58 00:03:21,680 --> 00:03:26,255 Kaya kapag sinabi namin mayroong tatlong mga tao sa room, at ilalagay namin in dito 59 00:03:26,255 --> 00:03:29,850 ang unang pag-ulit sa pamamagitan na ito loop, i ay magiging 0. 60 00:03:29,850 --> 00:03:31,650 Kaya sa index 0. 61 00:03:31,650 --> 00:03:34,540 Kami ay magtatalaga sa unang Edad ipinasok ng gumagamit ang. 62 00:03:34,540 --> 00:03:38,870 Pagkatapos ay sa susunod na isa, kami ay pagpasok ng pangalawa n gumagamit ang nagpasok, at sa 63 00:03:38,870 --> 00:03:40,580 sa tabi ng dalawang, ang huling n. 64 00:03:40,580 --> 00:03:44,200 >> Kaya mapapansin na ang isang hanay ng mga laki tatlong ay walang anuman 65 00:03:44,200 --> 00:03:46,040 sa index ng tatlo. 66 00:03:46,040 --> 00:03:49,036 Ito ay hindi wasto. 67 00:03:49,036 --> 00:03:50,250 Ayos lang. 68 00:03:50,250 --> 00:03:55,136 Kaya, balik dito. 69 00:03:55,136 --> 00:03:57,650 70 00:03:57,650 --> 00:04:01,590 Kaya ngayon na na-Aaksyunan namin sa array, mayroon kaming ilang lubos na pagkikilala. 71 00:04:01,590 --> 00:04:03,780 Ngayon kami ay pagpunta upang lumipat sa utos argumento linya, na kung saan ay pagpunta sa maging 72 00:04:03,780 --> 00:04:05,890 medyo may-katuturan sa set na ito problema. 73 00:04:05,890 --> 00:04:09,670 >> Kaya hanggang ngayon, sa tuwing ikaw ay ipinahayag ang iyong pangunahing pag-andar, hindi namin 74 00:04:09,670 --> 00:04:11,230 Sinabi int pangunahing walang bisa. 75 00:04:11,230 --> 00:04:14,070 Kaya walang bisa ay nangangahulugan lamang na kami ay hindi pagpasa sa anumang 76 00:04:14,070 --> 00:04:16,440 mga argumento upang ito function. 77 00:04:16,440 --> 00:04:19,190 Ngayon kami ay pagpunta upang makita na pangunahing Maaaring tumagal ng ilang mga argumento. 78 00:04:19,190 --> 00:04:22,470 Narito tinatawag naming kanila int argc at string argv bracket. 79 00:04:22,470 --> 00:04:26,930 Ang mga bracket, sa sandaling muli, na nagpapahiwatig na aming pagharap sa array. 80 00:04:26,930 --> 00:04:31,850 Kaya dito, string argv bracket, hindi namin pagharap sa isang array ng mga string. 81 00:04:31,850 --> 00:04:35,360 Kaya argc, na pupuntahan ipahiwatig kung gaano karaming mga argumento namin nai 82 00:04:35,360 --> 00:04:37,580 pumasang sa program na ito. 83 00:04:37,580 --> 00:04:46,050 At upang makita kung ano ang ibig sabihin nito ay, ni isara ang ipaalam. 84 00:04:46,050 --> 00:04:46,490 >> OK. 85 00:04:46,490 --> 00:04:50,790 Kaya hanggang ngayon, patakbuhin namin ang bawat programa tulad ng tuldok slash edad. 86 00:04:50,790 --> 00:04:55,250 Maaari din namin, sa command line, nakalipas pumasa sa mga argumento, kaya ang term, utos 87 00:04:55,250 --> 00:04:56,550 line mga argumento. 88 00:04:56,550 --> 00:04:59,760 Kaya ang unang argumento, kumusta mundo. 89 00:04:59,760 --> 00:05:03,350 Kaya dito, argc magiging tatlo. 90 00:05:03,350 --> 00:05:07,720 Ito ay ang bilang ng mga argumento sa command line. 91 00:05:07,720 --> 00:05:12,840 Argc ay palaging hindi bababa sa 1, dahil ang tuldok iwa edad, mismo, binibilang ang bilang isa sa 92 00:05:12,840 --> 00:05:14,490 ang mga argumento command line. 93 00:05:14,490 --> 00:05:17,010 >> Pagkatapos halo ay ang unang. 94 00:05:17,010 --> 00:05:20,460 Kung dot slash edad ay ang 0, pagkatapos ay kumusta ay ang unang, at mundo ay ang 95 00:05:20,460 --> 00:05:22,830 pangalawang argumento command line. 96 00:05:22,830 --> 00:05:29,490 Kaya ang string argv, ipinapadala namin ng pagpunta upang makita, Naglalaman ang mga string, tuldok slash 97 00:05:29,490 --> 00:05:33,830 edad, kumusta, at mundo. 98 00:05:33,830 --> 00:05:38,945 At, ayon sa kahilingan ni David, ipinapadala namin ng pagpunta upang i-play ang isang video na nagpapakilala na. 99 00:05:38,945 --> 00:05:42,486 100 00:05:42,486 --> 00:05:43,890 >> [VIDEO sa pag-playback] 101 00:05:43,890 --> 00:05:46,240 >> -Up hanggang ngayon sa mga programa hindi namin nakasulat, na ipinahahayag namin 102 00:05:46,240 --> 00:05:48,500 pangunahing bilang int pangunahing walang bisa. 103 00:05:48,500 --> 00:05:51,170 At lahat ng oras na ito, na walang bisa ay may lamang na pagtukoy na ang 104 00:05:51,170 --> 00:05:54,430 programa ay hindi gumawa ng anumang utos argumento linya. 105 00:05:54,430 --> 00:05:57,750 Sa ibang salita, kapag tumatakbo ang isang gumagamit ng isang programa, siya ay maaaring magbigay ng utos 106 00:05:57,750 --> 00:06:01,710 argumento linya sa pamamagitan ng pagsusulat ng mga karagdagang salita o parirala pagkatapos ng program 107 00:06:01,710 --> 00:06:03,000 pangalanan sa prompt. 108 00:06:03,000 --> 00:06:06,550 >> Well, kung ang gusto mo sa iyong programa sa tumagal ng mga argumento command line, ang isa o 109 00:06:06,550 --> 00:06:10,540 higit pang mga naturang salita, kailangan naming palitan walang bisa sa loob ng ilang mga argumento. 110 00:06:10,540 --> 00:06:12,200 Kaya sabihin gawin iyon. 111 00:06:12,200 --> 00:06:15,750 Isama CS50.h. 112 00:06:15,750 --> 00:06:19,360 Isama ang standard io.h. 113 00:06:19,360 --> 00:06:20,760 Int pangunahing. 114 00:06:20,760 --> 00:06:26,330 At ngayon, sa halip na walang bisa, pupuntahan ko tukuyin ang isang int tinatawag argc, at isang 115 00:06:26,330 --> 00:06:28,780 array ng mga string na tinatawag argv. 116 00:06:28,780 --> 00:06:31,820 Ngayon, argc at argv ay simpleng balarila. 117 00:06:31,820 --> 00:06:34,000 >> Sana tinatawag namin ang mga argumento pinaka-anumang nais namin. 118 00:06:34,000 --> 00:06:37,630 Ngunit kung ano ang mahalaga ay na argc ay isang int dahil, sa pamamagitan ng kahulugan, ito ay 119 00:06:37,630 --> 00:06:41,360 pagpunta sa maglaman ang bilang argument, ang bilang ng mga salita sa kabuuan na ang 120 00:06:41,360 --> 00:06:43,380 user ay nai-type sa kanyang prompt. 121 00:06:43,380 --> 00:06:47,910 argv, samantala, argumento vector, ay pagpunta sa aktwal na maging isang array sa pag-iimbak 122 00:06:47,910 --> 00:06:52,020 lahat ng mga salita na ang gumagamit ay may nai-type sa kanyang prompt. 123 00:06:52,020 --> 00:06:54,500 >> Ni magpatuloy upang gawin ang isang bagay na ngayon Hayaang may isa o higit pa sa mga 124 00:06:54,500 --> 00:06:55,660 utos argumento linya. 125 00:06:55,660 --> 00:07:00,070 Sa partikular, sabihin sige at i-print kahit anong uri ng salita ang user 126 00:07:00,070 --> 00:07:03,960 pagkatapos ng pangalan ng program sa prompt. 127 00:07:03,960 --> 00:07:04,730 Buksan ang bracket. 128 00:07:04,730 --> 00:07:06,240 Isara ang bracket. 129 00:07:06,240 --> 00:07:10,510 Printf porsiyento s backslash at kuwit. 130 00:07:10,510 --> 00:07:14,550 At ngayon ay kailangan ko upang sabihin sa printf kung ano halaga mag-plug in na placeholder. 131 00:07:14,550 --> 00:07:18,600 Gusto kong ang unang salita na ang gumagamit ay may nai-type pagkatapos ng pangalan ng program, 132 00:07:18,600 --> 00:07:23,130 at kaya ako pupunta upang tukuyin argv bracket 1, malapit 133 00:07:23,130 --> 00:07:24,830 panaklong, tuldok-kuwit. 134 00:07:24,830 --> 00:07:27,290 >> Ngayon, bakit bracket 1 at hindi bracket 0? 135 00:07:27,290 --> 00:07:30,990 Well, ito ay lumiliko out, awtomatikong naka-imbak sa argv 0 ay magiging ang 136 00:07:30,990 --> 00:07:32,620 aktwal na pangalan ng program. 137 00:07:32,620 --> 00:07:36,180 Kaya ang unang salita na uri ng gumagamit pagkatapos ng pangalan ng program ay, sa pamamagitan ng 138 00:07:36,180 --> 00:07:38,990 convention, magiging naka-imbak sa argv 1. 139 00:07:38,990 --> 00:07:42,380 Sabihin ngayon compile at patakbuhin ang program na ito. 140 00:07:42,380 --> 00:07:47,780 >> Gawing argv 0, tuldok slash argv 0. 141 00:07:47,780 --> 00:07:50,520 At ngayon ng isang salita tulad ng halo. 142 00:07:50,520 --> 00:07:51,670 Ipasok. 143 00:07:51,670 --> 00:07:53,520 At doon ay mayroon kaming ito, kumusta. 144 00:07:53,520 --> 00:07:55,750 >> [END VIDEO sa pag-playback] 145 00:07:55,750 --> 00:07:57,000 >> Rob BODEN: Lahat ng karapatan. 146 00:07:57,000 --> 00:07:59,380 147 00:07:59,380 --> 00:08:01,230 Isara iyon. 148 00:08:01,230 --> 00:08:16,730 Kaya ng pagtingin sa program na iyon ipinakilala namin lamang sa amin, mahusay, lamang 149 00:08:16,730 --> 00:08:24,710 upang ipakita, kung i-print namin argv 0, gumawa, ngayon ano ito, argv 0, tuldok slash argv 0. 150 00:08:24,710 --> 00:08:30,440 Kaya, tulad ng inaasahan, ito ay nagpi-print out ang pangalanan ng programa, dahil argv 0 ay 151 00:08:30,440 --> 00:08:32,970 palaging pagpunta sa maging ang pangalanan ng program. 152 00:08:32,970 --> 00:08:35,640 Ngunit gawin ng isang bagay ng ipaalam bit mas kawili-wiling. 153 00:08:35,640 --> 00:08:42,080 >> Kaya sa hanay problema, ikaw ay ipinakilala sa ito function, atoi. 154 00:08:42,080 --> 00:08:44,440 Kaya ano ang ginagamit namin para sa atoi? 155 00:08:44,440 --> 00:08:48,550 Iyon pupuntahan convert ang isang string sa isang integer. 156 00:08:48,550 --> 00:08:53,280 Kaya kung pumasa ako ng string, isa sa dalawang tatlong, sa atoi, na-convert na 157 00:08:53,280 --> 00:08:56,910 sa integer, isa sa dalawang tatlong. 158 00:08:56,910 --> 00:09:01,480 Kaya kami ay pagpunta upang i-convert ang unang utos argumento na linya sa isang integer, 159 00:09:01,480 --> 00:09:05,690 at pagkatapos ay i-print lamang na integer. 160 00:09:05,690 --> 00:09:09,680 >> Kaya talaga, hindi namin uri ng reimplementing getint, lamang ang 161 00:09:09,680 --> 00:09:12,350 integer ay naipasok sa utos linya sa halip ng sa programa 162 00:09:12,350 --> 00:09:14,560 interactive. 163 00:09:14,560 --> 00:09:23,170 Kaya pagkatapos, ginagawa argv 0, ni gawin ipaalam ito in dito, at isara na. 164 00:09:23,170 --> 00:09:27,670 Kaya't ang pagpapatakbo argv 0, at sabihin ipasok ang integer, isa sa dalawang tatlong apat isa dalawa. 165 00:09:27,670 --> 00:09:30,840 Kaya magkakaroon ito i-print ang integer, isa dalawang tatlong apat isa dalawa. 166 00:09:30,840 --> 00:09:35,500 Mayroong ilang mga subtleties sa atoi na ito ay titigil sa pag-aalaga tungkol sa anumang bagay 167 00:09:35,500 --> 00:09:39,040 lampas isang wastong numeric character, ngunit iyon ay hindi mahalaga. 168 00:09:39,040 --> 00:09:42,870 >> Kaya ano ang gagawin sa tingin mo ang mangyayari kung gagawin ko ito? 169 00:09:42,870 --> 00:09:45,520 170 00:09:45,520 --> 00:09:47,050 Segmentation fault. 171 00:09:47,050 --> 00:09:50,410 Kaya bakit ay na? 172 00:09:50,410 --> 00:09:56,060 Kung titingnan mo ang aming programa, kami ay nagko-convert argv 1, ang unang argumento 173 00:09:56,060 --> 00:09:59,610 pagkatapos ng pangalan ng programa, sa isang integer. 174 00:09:59,610 --> 00:10:03,350 Ngunit walang argument ang pinasa pagkatapos ng pangalan ng program. 175 00:10:03,350 --> 00:10:08,060 Kaya dito, nakita namin na ito ay isang maraming surot programa, dahil, kung sinusubukan naming patakbuhin ito 176 00:10:08,060 --> 00:10:10,530 nang walang anumang mga argument, ito ay lamang crash. 177 00:10:10,530 --> 00:10:16,950 >> Kaya isa pang karaniwang mga pattern makikita mo ay isang bagay tulad ng, kung argc Mababa 178 00:10:16,950 --> 00:10:21,100 sa dalawang, na nagpapahiwatig na mayroong hindi hindi bababa sa ang pangalan ng programa at isang 179 00:10:21,100 --> 00:10:29,100 unang argumento, pagkatapos ay gagamitin namin gawin ang isang bagay tulad ng printf, hindi sapat 180 00:10:29,100 --> 00:10:31,190 utos argumento linya. 181 00:10:31,190 --> 00:10:33,170 Iyon ay marahil hindi isang magandang isa upang i-print, marahil ito ay isang bagay, tulad ng 182 00:10:33,170 --> 00:10:35,440 dapat mong ipasok ang isang integer sa command line. 183 00:10:35,440 --> 00:10:37,450 Makikita lamang tapusin ko ito doon. 184 00:10:37,450 --> 00:10:39,600 At pagkatapos ay bumalik 1. 185 00:10:39,600 --> 00:10:44,740 Kaya tandaan na sa dulo ng aming programa, kung ibabalik namin 0, na uri ng 186 00:10:44,740 --> 00:10:47,060 ay nagpapahiwatig ng tagumpay. 187 00:10:47,060 --> 00:10:50,940 At pangunahing Awtomatiko ring Ibinabalik ng 0 kung hindi mo gusto. 188 00:10:50,940 --> 00:10:55,800 >> Kaya dito, kami ay retuning 1 upang ipahiwatig na hindi iyon tagumpay. 189 00:10:55,800 --> 00:11:01,000 At maaari mong ibalik ang kahit anong gusto mo, lamang, 0 nagpapahiwatig ng tagumpay, at 190 00:11:01,000 --> 00:11:03,390 anumang bagay ay nagpapahiwatig pagkabigo. 191 00:11:03,390 --> 00:11:04,855 Magpatakbo ng bersyon na ito ng mga bagay Kaya ipaalam. 192 00:11:04,855 --> 00:11:12,880 193 00:11:12,880 --> 00:11:16,600 Kaya ngayon, kung hindi namin magpasok ng isang command line argumento, makikita mo ito nang tama sabihin 194 00:11:16,600 --> 00:11:18,290 amin, hindi sapat na command line. 195 00:11:18,290 --> 00:11:20,610 Hindi ba matapos ang pangungusap. 196 00:11:20,610 --> 00:11:24,950 Iba Pa, kung talagang kami pumasa ito sa isa, maaari itong makumpleto ang programa. 197 00:11:24,950 --> 00:11:27,920 Kaya ito ay kung paano mo maaaring gamitin argc sa Upang patunayan ang mga numero ng 198 00:11:27,920 --> 00:11:30,630 mga argumento command line na ay talagang pumasa sa. 199 00:11:30,630 --> 00:11:39,360 >> Kaya hayaan ang gumawa ng program na ito ng kaunti pang kumplikado, at tumingin sa ikalawang 200 00:11:39,360 --> 00:11:42,180 pag-ulit ng mga bagay. 201 00:11:42,180 --> 00:11:46,310 Kaya ngayon, kami ay hindi lamang sa pagpi-print ang unang argumento command line. 202 00:11:46,310 --> 00:11:51,210 Dito, kami ay iterating mula int i Kapantay 0, i Mababa sa argc, i plus 203 00:11:51,210 --> 00:11:55,280 plus, at pag-print argv, index i. 204 00:11:55,280 --> 00:11:59,300 Kaya ang pattern na ito, muli, ito ay pareho pattern tulad ng dati, maliban sa halip 205 00:11:59,300 --> 00:12:02,600 ng pagtawag sa variable n, ginagamit namin argc. 206 00:12:02,600 --> 00:12:09,520 >> Kaya ito ay iterating sa ibabaw ng bawat index sa array, at pag-print ng bawat 207 00:12:09,520 --> 00:12:11,910 sangkap sa na array. 208 00:12:11,910 --> 00:12:20,300 At kaya, kapag tumakbo namin ang program na ito, na rin, Hindi ko naglagay ng anumang command line 209 00:12:20,300 --> 00:12:22,540 argumento, kaya lamang ng mga kopya ang pangalan ng programa. 210 00:12:22,540 --> 00:12:26,053 Kung ipinasok ako ng grupo ng mga bagay-bagay, idedetalye ito print ng isa, ang bawat isa sa kanyang sariling linya. 211 00:12:26,053 --> 00:12:31,213 212 00:12:31,213 --> 00:12:32,210 >> OK. 213 00:12:32,210 --> 00:12:34,770 Kaya ipaalam sa tumagal ng isang ito ng karagdagang hakbang. 214 00:12:34,770 --> 00:12:38,890 At sa halip ng pagpi-print ng bawat argumento sa sarili nitong linya, ni-print sa bawat ipaalam 215 00:12:38,890 --> 00:12:42,590 katangian ng bawat argumento sa sarili nitong linya. 216 00:12:42,590 --> 00:12:46,700 Kaya tandaan na argv ay isang array ng mga string. 217 00:12:46,700 --> 00:12:50,960 Kaya kung ano ay isang string, ngunit isang array ng mga character? 218 00:12:50,960 --> 00:12:57,140 Kaya na nangangahulugan na argv ay talagang isang array ng isang array ng mga character. 219 00:12:57,140 --> 00:13:04,920 Kaya sinasamantala ng na, sabihin huwag pansinin ito para sa ngayon. 220 00:13:04,920 --> 00:13:08,190 Isaalang-alang na lamang ang string argv 0 Hayaang. 221 00:13:08,190 --> 00:13:14,170 >> Kaya kung nais namin upang dalhin sa bawat katangian ng argv 0 sa sarili nitong linya, pagkatapos ay nais ko 222 00:13:14,170 --> 00:13:19,500 upang gawin ang mga pattern na aming ginamit upang, i ay mas mababa kaysa sa haba ng array, 223 00:13:19,500 --> 00:13:23,990 saan dito, ay strlen ng, na hindi kung ano ang gusto kong gawin, string 224 00:13:23,990 --> 00:13:26,450 s ay katumbas ng argv 0. 225 00:13:26,450 --> 00:13:30,390 Kaya i ay mas mababa sa haba ng aming array, na sa kasong ito ay isang array 226 00:13:30,390 --> 00:13:34,410 ng mga character, i plus plus. 227 00:13:34,410 --> 00:13:41,040 At kaya, bilang nakita natin noong nakaraang linggo, ito ay mainam kung ililipat namin na strlen labas 228 00:13:41,040 --> 00:13:45,210 ng mga kondisyon, dahil n ang magdaragdag ang strlen ng s sa bawat oras na namin pumunta 229 00:13:45,210 --> 00:13:47,720 sa pamamagitan ng loop, at ito ay hindi pagpunta sa ay nagbabago. 230 00:13:47,720 --> 00:13:50,230 Kaya Ise-set namin ito katumbas n paglipas dito. 231 00:13:50,230 --> 00:13:54,260 232 00:13:54,260 --> 00:13:55,170 >> OK. 233 00:13:55,170 --> 00:14:01,320 Kaya ngayon, kami ay iterating sa ibabaw bawat index sa array. 234 00:14:01,320 --> 00:14:05,630 At kaya, kung gusto naming i-print ang bawat na character sa na array, porsiyento c ay 235 00:14:05,630 --> 00:14:06,880 ang bandila nais naming gamitin para sa mga character. 236 00:14:06,880 --> 00:14:10,750 237 00:14:10,750 --> 00:14:19,770 At ngayon ng isang bracket i ay magiging ang string, index ng character ko, kaya kung ang 238 00:14:19,770 --> 00:14:20,970 string ay halo. 239 00:14:20,970 --> 00:14:27,530 pagkatapos ay s 0 ay magiging h, s bracket 1 ay magiging e, at iba pa. 240 00:14:27,530 --> 00:14:30,800 >> Kaya ngayon gusto naming pagsamahin ang dalawang bagay. 241 00:14:30,800 --> 00:14:35,440 Gusto naming i-print ang bawat karakter ng bawat argumento command line. 242 00:14:35,440 --> 00:14:38,950 Kaya kami ay pagpunta sa may isang nested para sa loop. 243 00:14:38,950 --> 00:14:47,480 At conventionally, ang unang sagot ay i, ang susunod ay magiging j, n 244 00:14:47,480 --> 00:14:54,450 ang magiging strlen ng argv i, i Mas mababa sa n, i plus plus. 245 00:14:54,450 --> 00:14:59,150 246 00:14:59,150 --> 00:15:06,870 At ngayon, sa halip ng pag-print argv ko, kaya argv bracket i ay pagpunta sa index - 247 00:15:06,870 --> 00:15:14,280 na pupuntahan maging ang command line i-ika argument, argv i, j ay pagpunta sa 248 00:15:14,280 --> 00:15:16,925 maging ang jth character ng ang argument i-ika. 249 00:15:16,925 --> 00:15:20,580 250 00:15:20,580 --> 00:15:24,810 Makikita ko mapupuksa ang up dito ngayon dahil ilalagay namin ito sa na loop. 251 00:15:24,810 --> 00:15:33,900 Kaya ay katumbas ay katumbas ng string s argv i, at pagkatapos ay i-bracket s j. 252 00:15:33,900 --> 00:15:36,980 >> Well, hindi namin kailangan na idedeklara variable mga ito. 253 00:15:36,980 --> 00:15:44,530 Sa halip, gagamitin namin lamang pagsamahin ang mga dalawa sa kung ano ang namin ay may, argv i, j. 254 00:15:44,530 --> 00:15:45,780 >> Tagapagsalita 1: [hindi marinig]. 255 00:15:45,780 --> 00:15:48,850 256 00:15:48,850 --> 00:15:49,680 >> Rob BODEN: Magandang tawag. 257 00:15:49,680 --> 00:15:52,936 Kaya ito ay nasira. 258 00:15:52,936 --> 00:15:55,510 Kung talagang nagpatakbo ko ito, kami ay na natanto na ito. 259 00:15:55,510 --> 00:16:01,210 Kaya ang counter-aalaga ko tungkol sa sa ang partikular na para sa 260 00:16:01,210 --> 00:16:05,410 loop ay j, ang iterator. 261 00:16:05,410 --> 00:16:08,560 Kaya mo nais na tumakbo sa mga isyu, marahil isang walang-katapusang loop, kung namin 262 00:16:08,560 --> 00:16:09,540 ay hindi naayos na. 263 00:16:09,540 --> 00:16:12,220 Iyon ang dahilan kung bakit din namin pinag-uusapan tungkol sa pag-debug ngayon. 264 00:16:12,220 --> 00:16:13,120 >> OK. 265 00:16:13,120 --> 00:16:15,240 Magpatakbo ng programang ito Kaya ipaalam. 266 00:16:15,240 --> 00:16:21,200 At ni aktwal na magdagdag ng isang hiwalay printf ipaalam dito mismo na lang i-print 267 00:16:21,200 --> 00:16:27,480 isa pang linya, dahil ang ibig sabihin nito kung kailan namin tumakbo ang programa, may makikita maging isang blangko 268 00:16:27,480 --> 00:16:31,830 linya sa pagitan ng bawat katangian ng bawat argumento command line. 269 00:16:31,830 --> 00:16:33,448 Well, makikita namin kung ano ang ibig sabihin iyon. 270 00:16:33,448 --> 00:16:37,310 271 00:16:37,310 --> 00:16:37,790 Oop. 272 00:16:37,790 --> 00:16:39,870 Mayroon ka bang ilang mga bug. 273 00:16:39,870 --> 00:16:42,860 Error nang kataon lamang deklarasyon strlen function ng library. 274 00:16:42,860 --> 00:16:51,630 >> Kaya balik sa aming programa, ako Nakalimutan upang hash isama string.h. 275 00:16:51,630 --> 00:16:54,240 276 00:16:54,240 --> 00:16:57,730 Kaya string.h ay magiging ang header ng file na declares 277 00:16:57,730 --> 00:16:58,980 strlen ang pag-andar. 278 00:16:58,980 --> 00:17:04,650 279 00:17:04,650 --> 00:17:06,060 OK, ito compiles. 280 00:17:06,060 --> 00:17:09,109 Ngayon, magpatakbo ng ito ipaalam. 281 00:17:09,109 --> 00:17:10,930 Kaya lang iyon. 282 00:17:10,930 --> 00:17:17,790 Ito ay pagpunta sa i-print ang aming pangalan ng programa, kumusta mundo. 283 00:17:17,790 --> 00:17:23,510 Ito ay pagpunta sa i-print ang bawat bagay, ang bawat isa karakter, sa sarili nitong linya. 284 00:17:23,510 --> 00:17:24,540 OK. 285 00:17:24,540 --> 00:17:30,625 >> Kaya sabihin talagang tumagal ito isa pa na hakbang. 286 00:17:30,625 --> 00:17:34,050 287 00:17:34,050 --> 00:17:39,700 At sa halip na gamitin string.h, sabihin isipin ang tungkol sa kung paano gusto naming ipatupad ang aming sarili 288 00:17:39,700 --> 00:17:41,420 strlen function. 289 00:17:41,420 --> 00:17:45,600 Kaya ko makikita agad bigyan isang function na lagda. 290 00:17:45,600 --> 00:17:52,900 Kaya sabihin tumawag sa my_strlen, at ito ay pagpunta sa tumagal ng isang string bilang isang argument, 291 00:17:52,900 --> 00:17:57,220 at inaasahan namin upang ibalik ang haba ng na string. 292 00:17:57,220 --> 00:18:03,430 Kaya, kung saan ay na tao? 293 00:18:03,430 --> 00:18:04,990 Oo. 294 00:18:04,990 --> 00:18:06,740 OK. 295 00:18:06,740 --> 00:18:12,900 Kaya tandaan mula sa mga naunang mga slide na ay mula sa huling linggo din, na isang 296 00:18:12,900 --> 00:18:18,890 array ng mga character, mahusay, isang string, kaya sabihin nating ito ang aming string s. 297 00:18:18,890 --> 00:18:29,870 Kaya kung s ay ang string, kumusta, pagkatapos, H-E-L-L-O, sa memorya, na pupuntahan 298 00:18:29,870 --> 00:18:35,610 maging, at pagkatapos ay ang backslash 0 karakter. 299 00:18:35,610 --> 00:18:39,170 >> Kaya paano ko makuha namin ang haba ng s? 300 00:18:39,170 --> 00:18:43,190 Well, ang bilis ng kamay ay naghahanap para sa sumasagot na hampas 0 karakter, ito null 301 00:18:43,190 --> 00:18:44,380 Terminator. 302 00:18:44,380 --> 00:18:50,270 Kaya ang algorithm ba ang pagpunta upang maging isang bagay tulad ng ilang 303 00:18:50,270 --> 00:18:51,510 sapat character na - 304 00:18:51,510 --> 00:18:56,180 magkaroon ng kamay na ito ay kumakatawan sa ilan ipaalam counter, tawagan ni ito haba int ipaalam. 305 00:18:56,180 --> 00:19:00,060 Kaya, na nagsisimula mula sa mahigit dito, kami ay pagpunta upang umulit sa paglipas ng aming mga string. 306 00:19:00,060 --> 00:19:04,100 >> Kaya ang unang character, ito ay H, at hindi ito pabalik iwa 0, kaya 307 00:19:04,100 --> 00:19:05,170 ang haba ay 1. 308 00:19:05,170 --> 00:19:08,050 Umulit sa susunod na karakter, E, at ito ay hindi backslash 0. 309 00:19:08,050 --> 00:19:09,630 Haba ay 2. 310 00:19:09,630 --> 00:19:10,960 L, 3. 311 00:19:10,960 --> 00:19:11,850 L, 4. 312 00:19:11,850 --> 00:19:13,050 O, 5. 313 00:19:13,050 --> 00:19:16,690 At sa wakas, maabot namin ang backslash 0, at sa gayon ay nangangahulugan na, mahusay, 314 00:19:16,690 --> 00:19:17,780 ang string na ito ay higit sa. 315 00:19:17,780 --> 00:19:20,130 Kaya sabihin bumalik 5. 316 00:19:20,130 --> 00:19:33,630 >> Kaya aktwal na pagpapatupad na,, una ang haba ng aking n katumbas ng 0, ang aking kanang kamay. 317 00:19:33,630 --> 00:19:36,088 At kami ay pagpunta upang umulit - 318 00:19:36,088 --> 00:19:38,000 >> Tagapagsalita 1: [hindi marinig] 319 00:19:38,000 --> 00:19:38,640 >> Rob BODEN: Oh, kukunan. 320 00:19:38,640 --> 00:19:39,870 Magandang tawag. 321 00:19:39,870 --> 00:19:42,680 Boom. 322 00:19:42,680 --> 00:19:44,140 Kaya't haba n katumbas ng 0. 323 00:19:44,140 --> 00:19:46,910 324 00:19:46,910 --> 00:19:58,310 Kaya ngayon, haba habang s ay hindi pantay at pagkatapos, backslash 0. 325 00:19:58,310 --> 00:20:04,660 Kaya tandaan, ang backslash 0, ito ay isang aktwal na karakter, at ito ay nagpapahiwatig 326 00:20:04,660 --> 00:20:05,820 sa dulo ng string. 327 00:20:05,820 --> 00:20:09,850 Lamang tulad ng, din, backslash n ay isang aktwal na character. 328 00:20:09,850 --> 00:20:14,040 Backslash 0 ay pagpunta upang ipahiwatig Sa dulo ng aming string. 329 00:20:14,040 --> 00:20:15,414 Hindi ko nais upang ilagay iyon doon. 330 00:20:15,414 --> 00:20:19,190 331 00:20:19,190 --> 00:20:25,620 At habang s-index sa pamamagitan ng haba ay hindi katumbas ng null Terminator, pagkatapos ay 332 00:20:25,620 --> 00:20:27,130 lang kami ng pagpunta sa dinagdagan ng haba. 333 00:20:27,130 --> 00:20:29,860 334 00:20:29,860 --> 00:20:34,880 Kaya pagkatapos, sa pagtatapos ng aming programa, haba ay malaon ng pagpunta sa 335 00:20:34,880 --> 00:20:37,610 magiging 5 sa kasong ito. 336 00:20:37,610 --> 00:20:39,210 At babalik kami lamang haba. 337 00:20:39,210 --> 00:20:42,570 338 00:20:42,570 --> 00:20:43,530 >> OK. 339 00:20:43,530 --> 00:20:48,290 Kaya ngayon pababa dito, gagawin ko hindi gawin my_strlen. 340 00:20:48,290 --> 00:20:50,700 Sumulat ng libro ni ito upang matiyak Hayaan Tumatakbo ang lahat nang maayos. 341 00:20:50,700 --> 00:20:55,820 342 00:20:55,820 --> 00:20:58,210 Ako ginagawa sa 2? 343 00:20:58,210 --> 00:21:00,565 O kaya naman ay na 1? 344 00:21:00,565 --> 00:21:01,940 Na dapat gawin. 345 00:21:01,940 --> 00:21:02,690 Ayos lang. 346 00:21:02,690 --> 00:21:08,490 Kaya ito ay argv 2. 347 00:21:08,490 --> 00:21:11,585 Gumagana bilang inaasahang, bagaman noon na ang isa ginawa ko ito sa? 348 00:21:11,585 --> 00:21:15,060 349 00:21:15,060 --> 00:21:15,550 Oo. 350 00:21:15,550 --> 00:21:16,760 OK. 351 00:21:16,760 --> 00:21:21,820 Ang bersyon na ito ng mga bagay ay walang ang printf bagong linya matapos, ngunit ito 352 00:21:21,820 --> 00:21:22,910 ay hindi magsagawa ng anumang mga pagkakaiba. 353 00:21:22,910 --> 00:21:23,300 OK. 354 00:21:23,300 --> 00:21:25,780 Kaya nagtrabaho tulad ng inaasahan. 355 00:21:25,780 --> 00:21:34,750 >> Ngayon ay maaari kahit pagsamahin namin ito ng isang hakbang karagdagang, kung saan notice dito, mahusay, 356 00:21:34,750 --> 00:21:38,920 una sa lahat, kami ay daklot ang strlen ng argv i, at pagkatapos kami ay iterating sa ibabaw 357 00:21:38,920 --> 00:21:41,450 bawat character sa string na. 358 00:21:41,450 --> 00:21:47,480 Kaya sa halip ng paggawa na, paano kung namin pagsamahin lang logic na ito ng paghihintay 359 00:21:47,480 --> 00:21:50,740 hanggang maabot namin ang backslash 0 pakanan sa ito para sa loop? 360 00:21:50,740 --> 00:21:53,740 361 00:21:53,740 --> 00:22:07,490 Kaya umulit habang argv i, j gumagana hindi katumbas backslash 0. 362 00:22:07,490 --> 00:22:10,680 Unang magpatakbo ng ito Kaya ipaalam. 363 00:22:10,680 --> 00:22:19,838 364 00:22:19,838 --> 00:22:21,180 >> Ayos lang. 365 00:22:21,180 --> 00:22:27,655 Kaya dito, ang kundisyong ito ay sinasabi - 366 00:22:27,655 --> 00:22:38,090 367 00:22:38,090 --> 00:22:40,060 ni i-clear na ipaalam. 368 00:22:40,060 --> 00:22:49,140 Kaya ngayon, sabihin ito maging ang aming argv. 369 00:22:49,140 --> 00:22:55,290 Kaya kapag ko lang Pinatatakbo ng program na bago, argv ay isang array ng mga string. 370 00:22:55,290 --> 00:23:03,100 At kaya, kung nagpapatakbo ko ito na may tuldok slash argv 2, kumusta mundo, pagkatapos ay ang argv 371 00:23:03,100 --> 00:23:07,650 mismo ay haba 3, para argv zero, kumusta, at mundo. 372 00:23:07,650 --> 00:23:11,700 373 00:23:11,700 --> 00:23:19,660 >> At sa loob ng bawat isa sa mga indeks ay, mismo isang array, kung saan makikita ito maging 374 00:23:19,660 --> 00:23:23,780 tuldok, ito ay magiging slash, hindi ko alam kung na noon ay ang karapatan ng direksyon, ako 375 00:23:23,780 --> 00:23:25,680 huwag tingin ito ay. 376 00:23:25,680 --> 00:23:30,110 A-R-V gitling, kailangan ng dagdag na espasyo. 377 00:23:30,110 --> 00:23:32,570 Ni-cut papunta ito array Hayaan. 378 00:23:32,570 --> 00:23:38,230 A-R-V gitling 0, at pagkatapos ay i-backslash 0. 379 00:23:38,230 --> 00:23:43,160 At pagkatapos ay magulo ay magiging kumusta. 380 00:23:43,160 --> 00:23:45,910 Sabihin nating, H-E backslash 0. 381 00:23:45,910 --> 00:23:51,130 At sa wakas, W-O backslash 0. 382 00:23:51,130 --> 00:23:59,730 >> Kaya ang algorithm na sinulat ni namin, ang nested para sa mga loop, kung ano ang kanilang 383 00:23:59,730 --> 00:24:07,321 paggawa ay, unang mayroon kaming ang kontrahin i at pagkatapos j. 384 00:24:07,321 --> 00:24:15,206 Ito ay magiging mas madali gamit ang code sa screen, Sabihin bumalik sa ito. 385 00:24:15,206 --> 00:24:17,476 OK. 386 00:24:17,476 --> 00:24:24,600 Kaya mapapansin na i ay ang iterator na iterating sa ibabaw ng bawat utos 387 00:24:24,600 --> 00:24:25,610 argumento linya. 388 00:24:25,610 --> 00:24:28,870 At j ay ang iterator iterating sa ibabaw ng bawat character sa na 389 00:24:28,870 --> 00:24:30,410 argumento command line. 390 00:24:30,410 --> 00:24:46,755 Kaya kung ano ang ginagawa ito pinakaloob printf ay, na-printf namin argv 0 0, printf 391 00:24:46,755 --> 00:24:58,680 argv 0 1, printf argv 0 2, 3 0, 0 4, 0 5, 6 0, ngunit ngayon, argv 0 7 ay pagpunta sa 392 00:24:58,680 --> 00:25:00,670 katumbas backslash 0. 393 00:25:00,670 --> 00:25:05,730 >> Kaya pagkatapos ay lumabas namin na para sa loop, at ngayon iterates i upang 1. 394 00:25:05,730 --> 00:25:10,910 At ngayon kami ay pagpunta sa pag-print argv 1 0, argv 1 1 - 395 00:25:10,910 --> 00:25:17,040 well, ngayon, dahil pinutol ko kumusta maikling, argv 1 2 ay muling pagpunta sa maging 396 00:25:17,040 --> 00:25:18,170 backslash 0. 397 00:25:18,170 --> 00:25:25,050 At kaya, dinagdagan i at magpatuloy, at iba pa, hanggang sa i-print namin ang lahat ng 398 00:25:25,050 --> 00:25:28,580 mundo, at ang mga tatlong linya ng command argumento, at kami lumabas out sa 399 00:25:28,580 --> 00:25:31,670 ang pinakamalayo loop, at tapusin ang aming programa. 400 00:25:31,670 --> 00:25:38,390 401 00:25:38,390 --> 00:25:39,640 OK. 402 00:25:39,640 --> 00:25:43,903 403 00:25:43,903 --> 00:25:46,795 >> Kaya ng bumalik dito ipaalam. 404 00:25:46,795 --> 00:25:49,670 405 00:25:49,670 --> 00:25:52,370 Kaya magkakaroon ka ng ilang lubos na pagkikilala sa mga argumento command line sa ito 406 00:25:52,370 --> 00:25:54,460 itakda ang partikular na problema. 407 00:25:54,460 --> 00:25:56,630 >> Ngayon, pag-debug. 408 00:25:56,630 --> 00:26:01,680 Kaya marahil mo pa ay nagkaroon na gawin ang ilang mga pag-debug sa iyong nakaraang 409 00:26:01,680 --> 00:26:03,120 itakda ang problema. 410 00:26:03,120 --> 00:26:08,420 At isa napakadaling paraan ng pag-debug, unang, tingnan natin ang isang programa maraming surot ipaalam. 411 00:26:08,420 --> 00:26:20,710 412 00:26:20,710 --> 00:26:23,830 Well, sa paglalakad sa pamamagitan ng programang ito, kami ay pagpunta sa tanungin ang user para sa isang 413 00:26:23,830 --> 00:26:29,350 integer, grab na integer, at pagkatapos, nagkataon, mayroon kaming isang habang loop na 414 00:26:29,350 --> 00:26:32,280 ay lamang ng pagpunta sa pagbawas i hanggang sa ito ay katumbas ng 10. 415 00:26:32,280 --> 00:26:35,820 Hayaan ang mga ipinapalagay na lang ako sa pagpasok isang integer na mas malaki sa 10. 416 00:26:35,820 --> 00:26:38,700 Kaya ng pagbawas i hanggang sa ito ay katumbas ng 10. 417 00:26:38,700 --> 00:26:42,630 >> At pagkatapos ay mayroon kaming isa pang habang loop na, habang i ay hindi katumbas ng 0, kami ay 418 00:26:42,630 --> 00:26:44,540 pagpunta sa pagbawas i sa pamamagitan ng 3. 419 00:26:44,540 --> 00:26:49,790 Kaya kung makikita mo ang layunin ng bug dito, ito ay makikita na ito ng pagbawas i upang 420 00:26:49,790 --> 00:26:57,010 maging 10, at pagkatapos ito habang loop kalooban pagbabawas i mula sa 10, sa 7, 4, sa 1, 421 00:26:57,010 --> 00:27:02,880 sa mga negatibong 2, sa mga negatibong 5, at iba pa, sa mga negatibong infinity, dahil habilin i 422 00:27:02,880 --> 00:27:05,920 hindi kailanman aktwal na kasing-halaga ng 0. 423 00:27:05,920 --> 00:27:08,610 At pagkatapos ay sa dulo ng programang ito, mayroon kaming ang foo function na kung saan ay 424 00:27:08,610 --> 00:27:12,130 pagpunta sa print out na i. 425 00:27:12,130 --> 00:27:16,520 >> Kaya ito ay isang maikli at walang kuwenta programa, at ang bug ay halata, 426 00:27:16,520 --> 00:27:18,790 lalo na pagkatapos ko lang Sinabi kung ano ang bug yan. 427 00:27:18,790 --> 00:27:24,840 Ngunit ang layunin dito ay, well, ito puwede talagang ganito ang hitsura ang ilan sa iyong 428 00:27:24,840 --> 00:27:30,040 mga solusyon mula sa matakaw mula sa nakaraang itakda ang problema, at siguro ang mayroon kang 429 00:27:30,040 --> 00:27:32,800 ilang mga walang-katapusang loop sa iyong programa, at wala kang mga ideya 430 00:27:32,800 --> 00:27:34,100 kung ano ang nagiging sanhi ito. 431 00:27:34,100 --> 00:27:38,690 Kaya isang napaka-kapaki-pakinabang na paraan ng pag-debug ay upang idagdag lamang printfs 432 00:27:38,690 --> 00:27:40,180 lahat ng higit sa iyong mga code. 433 00:27:40,180 --> 00:27:49,200 >> Kaya dito Gusto ko ng printf sa labas muna habang loop. 434 00:27:49,200 --> 00:27:53,155 At dito Gusto ko ng printf, at lang ako makakakita print i. 435 00:27:53,155 --> 00:27:55,670 436 00:27:55,670 --> 00:27:58,330 Kukunin ko kahit gawin muna habang loop, i. 437 00:27:58,330 --> 00:28:05,130 438 00:28:05,130 --> 00:28:09,040 Sa labas, pangalawa habang loop. 439 00:28:09,040 --> 00:28:12,170 Muli, i-print sa loob ng dito, ang halaga i. 440 00:28:12,170 --> 00:28:16,270 441 00:28:16,270 --> 00:28:17,520 At ni patakbuhin ang ipaalam. 442 00:28:17,520 --> 00:28:22,620 443 00:28:22,620 --> 00:28:24,800 >> Kaya tuldok slash-debug. 444 00:28:24,800 --> 00:28:25,610 Magpasok ng isang integer. 445 00:28:25,610 --> 00:28:28,150 Ni gawin 13 Hayaan. 446 00:28:28,150 --> 00:28:28,760 At boom. 447 00:28:28,760 --> 00:28:33,300 Nakita namin na kami ay walang katapusan na looping sa loob ng ikalawang habang loop. 448 00:28:33,300 --> 00:28:36,305 Kaya ngayon alam namin kung ano ang bug ay. 449 00:28:36,305 --> 00:28:39,610 450 00:28:39,610 --> 00:28:45,610 Ngunit ang pag-debug printf ay perpektong mahusay, ngunit sa sandaling ang iyong mga program makakuha ng 451 00:28:45,610 --> 00:28:50,560 mas mahaba at mas komplikado, may mga mas sopistikadong mga solusyon upang 452 00:28:50,560 --> 00:28:51,705 nagsisimula pa bagay na gumagana. 453 00:28:51,705 --> 00:28:52,955 Kaya alisin ang lahat ng mga printfs ipaalam. 454 00:28:52,955 --> 00:29:06,242 455 00:29:06,242 --> 00:29:08,896 At tiyakin nating ako ay hindi ipaalam masira ng kahit ano. 456 00:29:08,896 --> 00:29:09,850 OK. 457 00:29:09,850 --> 00:29:14,180 >> Kaya ang programa kami ng pagpunta upang ipakilala ay tinatawag na 458 00:29:14,180 --> 00:29:16,715 GDB, para GNU Debugger. 459 00:29:16,715 --> 00:29:21,892 460 00:29:21,892 --> 00:29:27,510 Well, talaga, alisin ang pag-debug para ipaalam isang segundo, at muling gumawa ng debug. 461 00:29:27,510 --> 00:29:31,420 462 00:29:31,420 --> 00:29:34,440 Well, talaga una, isang mahusay na aralin sa mga argumento command line. 463 00:29:34,440 --> 00:29:37,780 Pansinin na ito kumalatong utos na kino-compile ang lahat ng bagay ay pumasa sa mga 464 00:29:37,780 --> 00:29:41,300 sa command line, mga utos argumento linya. 465 00:29:41,300 --> 00:29:46,250 Kaya nang eksakto kung paano mo ay pagpunta sa gumagamit mga argumento command line, bilang namin 466 00:29:46,250 --> 00:29:51,500 ginawa mo dati, at tulad ng habilin mo sa PSET 2, na kung paano kumalatong ay gumagamit ng mga ito. 467 00:29:51,500 --> 00:30:00,070 >> Kaya mapapansin na ito sa unang flag, gitling ggdb3, ano na sinasabi ay, kumalatong, 468 00:30:00,070 --> 00:30:03,790 dapat mong ipunin ang file na ito gamit ang layunin na kami ay malaon 469 00:30:03,790 --> 00:30:05,380 kailangan upang i-debug ito. 470 00:30:05,380 --> 00:30:13,840 Kaya hangga't mayroon kang i-flag na iyon, pagkatapos ng aming makakaya GDB-debug. 471 00:30:13,840 --> 00:30:17,380 At magkakaroon ito magbukas ng GNU Debugger. 472 00:30:17,380 --> 00:30:22,920 >> Kaya may mga ng maraming mga utos na kailangan mong masanay. 473 00:30:22,920 --> 00:30:27,100 Unang isa na ikaw ay marahil agad na kailangan ay ang Run. 474 00:30:27,100 --> 00:30:28,200 Kaya kung ano ang Patakbuhin ang pagpunta sa gawin? 475 00:30:28,200 --> 00:30:30,910 Ito ay pagpunta upang simulan ang aming programa. 476 00:30:30,910 --> 00:30:36,180 Kaya tumakbo, simula ng programa, ang programa Humihingi kami para sa isang integer, 13. 477 00:30:36,180 --> 00:30:39,170 At pagkatapos ito ay walang katapusan na looping bilang inaasahan, maliban sa inalis ko ang 478 00:30:39,170 --> 00:30:40,500 printfs, kaya hindi kami kahit na makita na. 479 00:30:40,500 --> 00:30:43,320 480 00:30:43,320 --> 00:30:44,600 Lumabas sa normal. 481 00:30:44,600 --> 00:30:45,850 Oh. 482 00:30:45,850 --> 00:30:48,570 483 00:30:48,570 --> 00:30:53,640 Ito ay posible na ito ay balot ang lahat ng mga paraan sa paligid, pabalik sa - pagbalewala sa mga iyon. 484 00:30:53,640 --> 00:30:55,170 Ipagpalagay na hindi ito lumabas nang normal. 485 00:30:55,170 --> 00:30:59,500 486 00:30:59,500 --> 00:31:03,370 Mayroong isang komplikadong kasagutan sa na. 487 00:31:03,370 --> 00:31:07,890 >> Kaya ngayon, iyan ay hindi masyadong kapaki-pakinabang. 488 00:31:07,890 --> 00:31:11,480 Kaya lang sa pagtakbo ang aming programa sa loob ng debugger na ito ay hindi makakatulong sa amin sa anumang 489 00:31:11,480 --> 00:31:15,610 paraan, dahil maaari naming nagawa na lamang tuldok iwa debug mula sa labas GDB. 490 00:31:15,610 --> 00:31:21,250 Kaya ang isa na command na ikaw ay marahil - 491 00:31:21,250 --> 00:31:22,970 at kukunin ko na huminto ito. 492 00:31:22,970 --> 00:31:25,850 D Control-o lumabas, parehong trabaho. 493 00:31:25,850 --> 00:31:29,550 Kaya buksan ni ito up muli ipaalam. 494 00:31:29,550 --> 00:31:31,130 >> Ang isa pang utos na ikaw ay marahil agad na nais upang 495 00:31:31,130 --> 00:31:33,600 masanay ay Break. 496 00:31:33,600 --> 00:31:37,120 Kaya gagamitin namin masira sa pangunahing para sa ngayon, at pagkatapos ay kukunin ko na ipaliwanag iyon. 497 00:31:37,120 --> 00:31:41,010 498 00:31:41,010 --> 00:31:46,370 Well, dito makita namin itinakda namin ang isang breakpoint sa linyang ito sa debug.c. 499 00:31:46,370 --> 00:31:50,160 Kaya kung ano break na paraan ay na kapag ako type run, ang programa ay pagpunta sa 500 00:31:50,160 --> 00:31:53,560 patuloy na tatakbo hanggang Pindutin ko ang isang breakpoint. 501 00:31:53,560 --> 00:31:59,390 Kaya kapag pindutin ko run, ang programa ay nagsisimula, at pagkatapos ito Pinaghihiwa sa lalong madaling ito 502 00:31:59,390 --> 00:32:01,940 nagpasok sa pangunahing pag-andar. 503 00:32:01,940 --> 00:32:06,930 Hatiin pangunahing ay magiging isang bagay mo medyo karaniwang gawin. 504 00:32:06,930 --> 00:32:11,340 >> At ngayon, upang ipakilala sa ilang higit pang mga utos. 505 00:32:11,340 --> 00:32:14,330 Pansinin dito, na ito ay sinasabi namin sinira sa linya 11, na kung saan ay 506 00:32:14,330 --> 00:32:16,230 printf, ipasok ang isang integer. 507 00:32:16,230 --> 00:32:21,260 Kaya ang command Susunod ay magiging kung paano pumunta kami sa susunod na linya ng code. 508 00:32:21,260 --> 00:32:24,810 Ito ay pagpunta sa-daan sa amin upang basa sa pamamagitan ng aming programa linya sa pamamagitan ng linya. 509 00:32:24,810 --> 00:32:26,260 Kaya susunod. 510 00:32:26,260 --> 00:32:29,820 >> Ngayon 12 linya, kami ay pagpunta upang makuha ang integer. 511 00:32:29,820 --> 00:32:30,450 Susunod. 512 00:32:30,450 --> 00:32:34,290 At kung pindutin mo lang ang Enter muli, ipapakita ito gawing muli ang huling bagay na iyong ginawa. 513 00:32:34,290 --> 00:32:36,480 Kaya hindi ko na kailangan i-type ang susunod sa bawat oras. 514 00:32:36,480 --> 00:32:40,100 Kaya ipasok ang isang integer, 13. 515 00:32:40,100 --> 00:32:46,940 Kaya ngayon, 14 na linya, habang i ay mas malaki sa 10, at makikita ko ang susunod na gagawin. 516 00:32:46,940 --> 00:32:48,685 At nakita namin kami ay pagpunta sa pagbawas i. 517 00:32:48,685 --> 00:32:50,210 Kaya kami ay pagpunta sa pagbawas i muli. 518 00:32:50,210 --> 00:32:53,620 >> Kaya ngayon, isa pang kapaki-pakinabang utos ay Print. 519 00:32:53,620 --> 00:32:55,750 Kaya Print ay pagpunta sa i-print out ang halaga ng variable. 520 00:32:55,750 --> 00:32:57,825 Sabihin maglabas ang halaga ng variable na i. 521 00:32:57,825 --> 00:32:58,705 Mag-print ng i Hayaan. 522 00:32:58,705 --> 00:33:00,910 Ito ay pagpunta sa sabihin i ay 11. 523 00:33:00,910 --> 00:33:03,330 Ngayon Susunod na kaming muli habang i ay mas malaki sa 10. 524 00:33:03,330 --> 00:33:05,590 Kaya i kung mas malaki kaysa pa rin 10, dahil ito ay 11. 525 00:33:05,590 --> 00:33:06,920 i minus minus. 526 00:33:06,920 --> 00:33:08,250 Mag-print ng i muli Hayaan. 527 00:33:08,250 --> 00:33:10,950 Tulad ng inaasahan, ito ay 10. 528 00:33:10,950 --> 00:33:12,510 >> Kaya ngayon, sa susunod. 529 00:33:12,510 --> 00:33:16,250 Ito ay pagpunta bumalik sa kondisyon, i ay mas mataas sa 10, ngunit i ngayon ay 10, kaya 530 00:33:16,250 --> 00:33:20,040 ito ay hindi mas malaki kaysa sa 10, kaya inaasahan namin ito upang malagas ng habang loop. 531 00:33:20,040 --> 00:33:22,220 At ngayon kami ay sa ibaba na linya ng code. 532 00:33:22,220 --> 00:33:28,750 At isa pang utos, List, ay lamang ng pagpunta upang ipakita ang mga nakaraan at susunod na 533 00:33:28,750 --> 00:33:31,240 dalawang linya ng code, sa kaso nawala mo ang iyong sarili. 534 00:33:31,240 --> 00:33:35,420 Kaya't lumabas lang namin ito habang loop, at ngayon pinasok namin ito 535 00:33:35,420 --> 00:33:37,080 habang loop, 18 linya. 536 00:33:37,080 --> 00:33:39,860 Kaya habang i ay hindi katumbas ng 0. 537 00:33:39,860 --> 00:33:46,570 At, sa tabi, katumbas i i minus 3, at kami ay mapansin, ito makikita lamang panatilihin ang pagpunta. 538 00:33:46,570 --> 00:33:48,270 At maaari naming i-print i. 539 00:33:48,270 --> 00:33:49,990 >> Ang bawat command na uri ng mga may shortcut. 540 00:33:49,990 --> 00:33:51,720 Kaya p ay maikli para sa Print. 541 00:33:51,720 --> 00:33:53,400 Kaya aming makakaya p i. 542 00:33:53,400 --> 00:33:57,550 Panatilihin lang na may hawak n, o panatilihin ang paggawa Susunod. 543 00:33:57,550 --> 00:33:58,340 I-print muli i. 544 00:33:58,340 --> 00:34:00,380 Ang makikita mo ngayon na negatibong 167. 545 00:34:00,380 --> 00:34:06,030 Kaya ito ay pumunta sa magpakailanman, ngunit hindi talaga magpakailanman, dahil nakita mo lang, ito 546 00:34:06,030 --> 00:34:09,330 ang talagang magtapos sa isang punto. 547 00:34:09,330 --> 00:34:15,699 >> Kaya na Simula GDB. 548 00:34:15,699 --> 00:34:19,504 Ngunit ni gawin ang isa sa higit pang bagay sa GDB ipaalam. 549 00:34:19,504 --> 00:34:20,754 Uh, mag-debug. 550 00:34:20,754 --> 00:34:23,540 551 00:34:23,540 --> 00:34:28,534 Kaya, sa partikular na kasong ito, ang walang katapusang loop nangyari sa maging sa loob ng 552 00:34:28,534 --> 00:34:30,050 ang pangunahing pag-andar. 553 00:34:30,050 --> 00:34:35,779 At para sa ngayon, tinatanggap lang na na ako pagpunta sa ilipat ang walang katapusang loop sa 554 00:34:35,779 --> 00:34:37,029 ang foo function. 555 00:34:37,029 --> 00:34:40,679 556 00:34:40,679 --> 00:34:43,730 Tandaan lamang na, sa dulo ng ito programa, na rin, ito ay orihinal 557 00:34:43,730 --> 00:34:46,210 pagtawag foo, na noon ay lamang pagpunta sa i-print i. 558 00:34:46,210 --> 00:34:51,880 Ngunit ngayon kami ay pagtawag foo, na pagpunta sa pagbawas i hanggang sa ito ay 0, at 559 00:34:51,880 --> 00:34:54,548 pagkatapos ay i-print ang variable na iyon. 560 00:34:54,548 --> 00:34:55,469 OK. 561 00:34:55,469 --> 00:34:57,970 I-save na. 562 00:34:57,970 --> 00:35:00,175 Gumawa ng debug. 563 00:35:00,175 --> 00:35:03,310 At ngayon, gdb-debug. 564 00:35:03,310 --> 00:35:04,090 OK. 565 00:35:04,090 --> 00:35:10,580 >> Kaya kung Magpatakbo ko lang pagkatapos hindi pupuntahan ko magagawang upang aktwal na hakbang sa pamamagitan ng aking 566 00:35:10,580 --> 00:35:11,730 line-by-line programa. 567 00:35:11,730 --> 00:35:19,820 Kaya sabihin masira sa pangunahing, at pagkatapos i-type run. 568 00:35:19,820 --> 00:35:28,160 Kaya pumunta sa pamamagitan na ito, printf, ipasok ang isang integer, kunin ang integer, 13. 569 00:35:28,160 --> 00:35:34,180 570 00:35:34,180 --> 00:35:37,490 Kaya kami ay pagpunta sa panatilihin decrementing hanggang sa i ay mas malaki sa 10. 571 00:35:37,490 --> 00:35:42,840 Pagkatapos kami ay pagpunta sa mahulog sa pamamagitan ng habang loop, at kumuha ng linya - 572 00:35:42,840 --> 00:35:44,364 buksan ni ito up sa isang hiwalay na window ipaalam. 573 00:35:44,364 --> 00:35:48,720 574 00:35:48,720 --> 00:35:53,300 Kaya decremented namin hanggang sa i noon ay hindi na mas mataas sa 10, at pagkatapos namin 575 00:35:53,300 --> 00:35:55,700 na tinatawag na ang pag-andar, foo. 576 00:35:55,700 --> 00:36:01,340 >> Kaya kung ano ang nangyari sa lalong madaling pindutin ko function ng foo, mahusay, na tinatawag na ako foo, at 577 00:36:01,340 --> 00:36:04,030 pagkatapos ay hindi na ako ay nagkaroon ng kontrol sa GDB. 578 00:36:04,030 --> 00:36:10,230 Kaya sa lalong madaling pindutin ko ang Susunod sa linyang ito, mga bagay na patuloy na hanggang na nangyari ito, 579 00:36:10,230 --> 00:36:12,400 kung saan ang program ay lumabas kapag - 580 00:36:12,400 --> 00:36:14,450 ipinapalagay hindi ito umiiral kalaunan. 581 00:36:14,450 --> 00:36:16,390 Nakita mo itong i-pause para sa isang bit bagaman. 582 00:36:16,390 --> 00:36:22,040 Kaya bakit nawala ko ang kontrol sa ang programa sa puntong iyon? 583 00:36:22,040 --> 00:36:27,540 Well, kapag nagta-type ako sa tabi, na napupunta sa ang literal susunod na linya ng code na 584 00:36:27,540 --> 00:36:28,850 ay isakatuparan. 585 00:36:28,850 --> 00:36:35,950 Kaya pagkatapos ng 21 sa susunod na linya ng code linya, na isakatuparan ay 22 linya, 586 00:36:35,950 --> 00:36:38,520 na kung saan ay, sa paglabas mula sa pangunahing. 587 00:36:38,520 --> 00:36:43,810 Kaya hindi ko nais upang pumunta lamang sa susunod na linya ng code. 588 00:36:43,810 --> 00:36:48,170 Gusto kong pumunta sa ang pag-andar, foo, at pagkatapos din magbasa-basa 589 00:36:48,170 --> 00:36:49,830 mga linya ng code. 590 00:36:49,830 --> 00:36:53,726 >> Kaya para sa iyon, mayroon kaming isang kahalili. 591 00:36:53,726 --> 00:36:56,770 Ni huminto muli na Hayaan. 592 00:36:56,770 --> 00:36:58,020 Hatiin pangunahing. 593 00:36:58,020 --> 00:37:00,520 594 00:37:00,520 --> 00:37:06,370 Uh, 1, susunod, susunod, 13, sa tabi, susunod, susunod, maingat, 595 00:37:06,370 --> 00:37:09,820 bago namin hit linya foo. 596 00:37:09,820 --> 00:37:10,520 OK. 597 00:37:10,520 --> 00:37:13,700 >> Kaya ngayon, hindi kami sa 21 linya, kung saan tinatawag naming foo. 598 00:37:13,700 --> 00:37:17,100 Hindi namin gustong i-type ang susunod, dahil na Tatawagan lamang ang function foo, at 599 00:37:17,100 --> 00:37:18,710 pumunta sa susunod na linya ng code. 600 00:37:18,710 --> 00:37:20,840 Ano gusto naming gamitin ay Hakbang. 601 00:37:20,840 --> 00:37:25,690 Kaya mayroong isang pagkakaiba sa pagitan ng Hakbang at ang Susunod, kung saan ang mga hakbang Hakbang papunta sa 602 00:37:25,690 --> 00:37:28,190 gumana, at Susunod na napupunta sa ibabaw ng function. 603 00:37:28,190 --> 00:37:32,830 Executes Ito lamang ang kabuuan ng ang pag-andar at pinapanatili ang pagpunta. 604 00:37:32,830 --> 00:37:37,210 >> Kaya Hakbang ay pagpunta upang dalhin sa amin sa ang pag-andar, foo. 605 00:37:37,210 --> 00:37:41,160 At nakita namin dito, ngayon, hindi namin pabalik sa ito habang loop na, sa teorya, 606 00:37:41,160 --> 00:37:44,190 pagpunta sa magpatuloy magpakailanman. 607 00:37:44,190 --> 00:37:50,420 At kung pinindot ninyo ang Hakbang, kapag ito ay hindi kahit na isang function na tumawag, pagkatapos ito ay 608 00:37:50,420 --> 00:37:51,720 kapareho ang Susunod. 609 00:37:51,720 --> 00:37:55,320 Kaya lamang kapag ikaw ay nasa isang linya na Tinatawagan ng isang function na Hakbang 610 00:37:55,320 --> 00:37:56,970 Pupunta upang maiba mula sa Susunod. 611 00:37:56,970 --> 00:37:57,930 Kaya Hakbang ay magdadala sa amin dito. 612 00:37:57,930 --> 00:38:02,100 Hakbang, hakbang, hakbang, hakbang, hakbang, hakbang, at kami ay lamang walang-katapusang loop magpakailanman. 613 00:38:02,100 --> 00:38:06,810 >> Kaya maaari mong masanay na bilang iyong paraan ng pagtukoy ng walang katapusan na mga loop, ay 614 00:38:06,810 --> 00:38:08,960 may hawak na lamang ito Enter key upang makita kung saan ka makakakuha ng makaalis. 615 00:38:08,960 --> 00:38:11,610 616 00:38:11,610 --> 00:38:14,780 May mga mas mahusay na paraan upang gawin iyon, ngunit sa ngayon, iyon ay ganap na ganap na sapat. 617 00:38:14,780 --> 00:38:17,967 At stylistically, upang sumunod sa Estilo 50, dapat nagawa ko ito. 618 00:38:17,967 --> 00:38:21,550 619 00:38:21,550 --> 00:38:24,030 OK. 620 00:38:24,030 --> 00:38:28,400 >> Kaya isa huling command upang ipakilala. 621 00:38:28,400 --> 00:38:30,810 Well, gdb ni debug in hayaan 622 00:38:30,810 --> 00:38:35,580 Kaya sa halip na breaking sa main, kung ako alam ang foo function ay din ang 623 00:38:35,580 --> 00:38:39,230 problema, pagkatapos ay maaari kong magkaroon lamang sinabi, masira sa foo, sa halip. 624 00:38:39,230 --> 00:38:42,310 Sabihin nating masira ako sa parehong pangunahing at foo. 625 00:38:42,310 --> 00:38:45,390 Kaya maaari kang magtakda ng kahit gaano karaming breakpoints hangga't gusto mo. 626 00:38:45,390 --> 00:38:49,230 Kapag nagta-type ako sa run, ito ay pagpunta upang itigil ang sa - 627 00:38:49,230 --> 00:38:52,180 ooh, ni-recompile ipaalam, dahil Binago ko bagay. 628 00:38:52,180 --> 00:38:55,950 Makikita mo ang linyang ito, Babala, ang pinagmulan file ay mas kamakailang kaysa executable. 629 00:38:55,950 --> 00:38:59,680 Kaya ibig sabihin nito ay na ko pa lang nagpunta in dito at nabago ang mga ito upang sumunod sa Estilo 630 00:38:59,680 --> 00:39:03,100 50, pero hindi ko mag-recompile ang programa. 631 00:39:03,100 --> 00:39:04,870 Kaya bakit ang GDB sa akin ng kamalayan ng mga iyon. 632 00:39:04,870 --> 00:39:10,130 Kukunin ko quit, muling gumawa ng debug, pindutin gdb-debug. 633 00:39:10,130 --> 00:39:10,700 OK. 634 00:39:10,700 --> 00:39:12,800 >> Kaya ngayon, pabalik sa kung ano ang ginagawa ko. 635 00:39:12,800 --> 00:39:15,720 Hatiin main, bakasyon foo. 636 00:39:15,720 --> 00:39:20,680 Ngayon kung nagpatakbo ako ng programa, kaya pagpunta sa magpatuloy hanggang sa mga hit sa isang 637 00:39:20,680 --> 00:39:21,320 breakpoint. 638 00:39:21,320 --> 00:39:24,680 Breakpoint na ang mangyayari sa ang unang isa sa pangunahing. 639 00:39:24,680 --> 00:39:28,630 Ngayon, sa halip ng paggawa susunod, susunod, susunod, susunod, susunod, hanggang maabot ko foo, ako 640 00:39:28,630 --> 00:39:35,230 Maaari type magpatuloy, na kung saan ay patuloy hanggang maabot ang susunod na breakpoint. 641 00:39:35,230 --> 00:39:37,200 Kailangan ko bang ipasok muna ang integer. 642 00:39:37,200 --> 00:39:40,570 Magpatuloy ay magpapatuloy hanggang maabot ko ang susunod breakpoint, na kung saan ay na 643 00:39:40,570 --> 00:39:43,320 paggana ng mga foo. 644 00:39:43,320 --> 00:39:50,130 >> Kaya Run tatakbo hanggang maabot ang isang breakpoint, ngunit lamang nagta-type ka sa run kapag 645 00:39:50,130 --> 00:39:54,060 ka na nagsisimula sa programa, at pagkatapos, mula roon, ito ay magpatuloy. 646 00:39:54,060 --> 00:40:01,950 Kung ko lang ginawa masira pangunahing at pagkatapos ay ang bumangga, magkakaroon ito masira sa 647 00:40:01,950 --> 00:40:03,670 pangunahing, at pagkatapos ay magpatuloy. 648 00:40:03,670 --> 00:40:10,050 Dahil hindi ko magkaroon ng isang break na punto sa foo, ipasok ang integer, pagkatapos ngayon ako 649 00:40:10,050 --> 00:40:11,380 hindi pagpunta sa masira sa foo. 650 00:40:11,380 --> 00:40:16,318 Lamang Ito ay pagpunta sa Walang-hanggan loop hanggang iyon. 651 00:40:16,318 --> 00:40:17,568 OK. 652 00:40:17,568 --> 00:40:19,500 653 00:40:19,500 --> 00:40:24,420 >> Kaya na Intro sa GDB. 654 00:40:24,420 --> 00:40:27,790 Dapat mong simulan ang paggamit nito sa iyong mga hanay ng problema. 655 00:40:27,790 --> 00:40:30,550 Maaari itong maging kapaki-pakinabang upang makilala ang mga bug. 656 00:40:30,550 --> 00:40:35,280 Kung talagang lamang, linya-by-line, pumunta sa pamamagitan ng iyong code, at ihambing kung ano ang 657 00:40:35,280 --> 00:40:39,740 talaga nangyayari sa kung ano ang inaasahan mong mangyari, pagkatapos ito ay medyo 658 00:40:39,740 --> 00:40:41,060 mahirap na makaligtaan ang iyong mga bug. 659 00:40:41,060 --> 00:40:45,280 660 00:40:45,280 --> 00:40:46,530 OK. 661 00:40:46,530 --> 00:40:48,310 662 00:40:48,310 --> 00:40:54,040 >> Kaya noong nakaraang linggo nagdala up David ito lihim-key cryptography bagay-bagay para sa 663 00:40:54,040 --> 00:40:59,350 unang pagkakataon, kung saan hindi namin nais mga password lang ma-imbak sa aming 664 00:40:59,350 --> 00:41:03,210 computer sa ilang mga plain text file, kung saan isang tao ay maaaring dumating sa paglipas at lamang 665 00:41:03,210 --> 00:41:04,660 buksan ito at basahin ang mga ito. 666 00:41:04,660 --> 00:41:07,530 May perpektong, sila ay naka-encrypt sa ilang mga paraan. 667 00:41:07,530 --> 00:41:13,340 At sa Problema Set 2, ikaw ay pakikitungo may isang paraan ng pag-encrypt, 668 00:41:13,340 --> 00:41:16,520 o, mahusay, dalawang mga pamamaraan, ngunit ang mga ito ay hindi kaya mahusay. 669 00:41:16,520 --> 00:41:20,050 Kung gagawin mo ang Hacker edisyon, handa ka pagpunta din na pagharap sa 670 00:41:20,050 --> 00:41:22,150 decrypting ilang mga bagay. 671 00:41:22,150 --> 00:41:29,770 >> Kaya ang isyu ngayon, na rin, kahit na mayroon kaming ang pinakamatibay na pag-encrypt 672 00:41:29,770 --> 00:41:34,830 algorithm sa mundo, kung pinili mo ang isang lalo na hindi magandang password, pagkatapos ito 673 00:41:34,830 --> 00:41:37,720 ay hindi tutulong sa inyo, dahil ang mga tao magagawang upang malaman ito out pa rin. 674 00:41:37,720 --> 00:41:41,530 Kahit na nakikita ang mga naka-encrypt na string at ito mukhang isang gulo ng basura 675 00:41:41,530 --> 00:41:44,760 na nangangahulugan walang anuman sa kanila, kung sila kailangan pa rin lamang upang subukan ng ilang mga password 676 00:41:44,760 --> 00:41:50,560 upang malaman ito, pagkatapos ay sa iyo ay hindi masyadong secure. 677 00:41:50,560 --> 00:41:55,890 Kaya nanonood ng video na Ginagawa puntong iyon. 678 00:41:55,890 --> 00:41:59,587 679 00:41:59,587 --> 00:42:00,970 >> [VIDEO sa pag-playback] 680 00:42:00,970 --> 00:42:02,100 >> -Helmet, halimaw na tao sa iyo. 681 00:42:02,100 --> 00:42:03,370 Ano kaya ang nangyari? 682 00:42:03,370 --> 00:42:05,170 Ano ang iyong ginagawa sa aking anak na babae? 683 00:42:05,170 --> 00:42:09,910 >> -Pinahihintulutan sa akin upang ipakilala ang makinang batang plastic siruhano, Dr Phillip 684 00:42:09,910 --> 00:42:13,730 Schlotkin, ang pinakamalaking ilong tao na trabaho sa buong 685 00:42:13,730 --> 00:42:16,080 uniberso, at Beverly Hills. 686 00:42:16,080 --> 00:42:17,210 >> -Ang iyong kamahalan. 687 00:42:17,210 --> 00:42:18,070 >> -Ilong trabaho? 688 00:42:18,070 --> 00:42:18,670 Hindi ko maintindihan. 689 00:42:18,670 --> 00:42:20,090 Na siya ay nagkaroon ng isang trabaho ilong. 690 00:42:20,090 --> 00:42:21,910 Iyon ay isang matamis na labing-anim kasalukuyan. 691 00:42:21,910 --> 00:42:22,140 >> -Hindi. 692 00:42:22,140 --> 00:42:23,690 Ito ay hindi kung ano ang palagay mo. 693 00:42:23,690 --> 00:42:25,420 Ito ay magkano, magkano ang mas masahol pa. 694 00:42:25,420 --> 00:42:30,300 Kung hindi mo ibigay sa akin ang kumbinasyon upang ang mga naka kalasag, Dr Schlotkin habilin 695 00:42:30,300 --> 00:42:34,226 bigyan ang iyong anak na babae bumalik sa kanyang lumang ilong. 696 00:42:34,226 --> 00:42:35,476 >> -Hindi. 697 00:42:35,476 --> 00:42:38,712 698 00:42:38,712 --> 00:42:40,516 Saan mo kang makakuha iyon? 699 00:42:40,516 --> 00:42:41,440 >> Right-Lahat. 700 00:42:41,440 --> 00:42:42,180 Kukunin ko sabihin. 701 00:42:42,180 --> 00:42:43,381 Kukunin ko sabihin. 702 00:42:43,381 --> 00:42:44,263 Hindi, tatay. 703 00:42:44,263 --> 00:42:45,590 Hindi, hindi mo kailangan. 704 00:42:45,590 --> 00:42:46,860 >> -You're right, aking mahal. 705 00:42:46,860 --> 00:42:48,450 Kukunin ko makaligtaan ang iyong bagong ilong. 706 00:42:48,450 --> 00:42:52,090 Ngunit hindi ko sasabihin sa kanya ang kumbinasyon, kahit na ano. 707 00:42:52,090 --> 00:42:53,680 >> -Tunay na rin. 708 00:42:53,680 --> 00:42:55,685 Dr Schlotkin, gawin ang iyong pinakamasama. 709 00:42:55,685 --> 00:42:56,914 >> -Ang aking kasiyahan. 710 00:42:56,914 --> 00:43:00,690 >> [TOOL pagiging SHARPENED] 711 00:43:00,690 --> 00:43:01,910 >> -Hindi. 712 00:43:01,910 --> 00:43:02,520 Maghintay. 713 00:43:02,520 --> 00:43:03,836 Maghintay. 714 00:43:03,836 --> 00:43:05,300 Kukunin ko sabihin. 715 00:43:05,300 --> 00:43:06,880 Kukunin ko sabihin. 716 00:43:06,880 --> 00:43:09,130 >> -Ako Alam Gusto ito gumana. 717 00:43:09,130 --> 00:43:09,900 Ayos lang. 718 00:43:09,900 --> 00:43:12,850 Bigyan ito sa akin. 719 00:43:12,850 --> 00:43:16,918 >> -Ang kumbinasyon ay isa. 720 00:43:16,918 --> 00:43:17,406 >> -One. 721 00:43:17,406 --> 00:43:18,382 >> -One. 722 00:43:18,382 --> 00:43:19,358 >> -Dalawang. 723 00:43:19,358 --> 00:43:19,846 >> -Dalawang. 724 00:43:19,846 --> 00:43:20,822 >> -Dalawang. 725 00:43:20,822 --> 00:43:21,310 >> -Tatlong. 726 00:43:21,310 --> 00:43:21,798 >> -Tatlong. 727 00:43:21,798 --> 00:43:22,774 >> -Tatlong. 728 00:43:22,774 --> 00:43:23,262 >> -Four. 729 00:43:23,262 --> 00:43:23,750 >> -Four. 730 00:43:23,750 --> 00:43:26,150 >> -Four. 731 00:43:26,150 --> 00:43:27,010 >> -Limang. 732 00:43:27,010 --> 00:43:27,670 >> -Limang. 733 00:43:27,670 --> 00:43:29,010 >> -Limang. 734 00:43:29,010 --> 00:43:34,770 >> -So ang kumbinasyon ay isa, dalawa, tatlo, apat, lima. 735 00:43:34,770 --> 00:43:37,460 Iyan ang stupidest kumbinasyon Kailanman ko narinig sa aking buhay. 736 00:43:37,460 --> 00:43:39,710 Iyan ang uri ng bagay isang tulala ay magkakaroon sa kanyang bagahe. 737 00:43:39,710 --> 00:43:42,000 >> -Salamat sa iyo, ang iyong kamahalan. 738 00:43:42,000 --> 00:43:43,530 >> -Ano ang iyong magagawa? 739 00:43:43,530 --> 00:43:44,490 >> -I-off ang wall. 740 00:43:44,490 --> 00:43:45,420 >> -Hindi mo ang hindi. 741 00:43:45,420 --> 00:43:45,840 Binuhay mo off ang buong pelikula. 742 00:43:45,840 --> 00:43:46,930 >> -Ako ay dapat na napindot ang maling button. 743 00:43:46,930 --> 00:43:48,265 >> -Well, ilagay ito pabalik sa. 744 00:43:48,265 --> 00:43:49,110 Ilagay ang pelikula muli. 745 00:43:49,110 --> 00:43:49,510 >> -Oo, ginoo. 746 00:43:49,510 --> 00:43:49,917 Oo, ginoo. 747 00:43:49,917 --> 00:43:50,324 >> Ng pumunta, Arnold-Hayaan. 748 00:43:50,324 --> 00:43:51,140 Halika, Gretchen. 749 00:43:51,140 --> 00:43:53,060 Siyempre, alam mong idedetalye ko pa rin mayroon upang singilin ka para sa ito. 750 00:43:53,060 --> 00:43:53,440 >> [END VIDEO sa pag-playback] 751 00:43:53,440 --> 00:43:54,690 >> Rob BODEN: Lahat ng karapatan. 752 00:43:54,690 --> 00:43:59,690 753 00:43:59,690 --> 00:44:08,430 Kaya ngayon na mayroon kami ay pakikipag-usap tungkol sa seguridad sa ilang mga paraan, magaling 754 00:44:08,430 --> 00:44:16,050 maliit na pelikula poster, kaya sa kamakailang araw, ang mga isyu sa NSA 755 00:44:16,050 --> 00:44:17,300 sa pagsubaybay sa lahat ng bagay. 756 00:44:17,300 --> 00:44:21,840 757 00:44:21,840 --> 00:44:26,930 Maaari itong maging mahirap na pakiramdam na tulad mo may isang uri ng privacy sa 758 00:44:26,930 --> 00:44:34,540 mundo ng online, kahit na hindi ko maaaring sabihin mo ang karamihan sa mga detalye ng prisma. 759 00:44:34,540 --> 00:44:42,130 Kaya gumagalaw na lampas prisma, hindi namin pagpunta na pakikipag-usap tungkol sa na, ngayon 760 00:44:42,130 --> 00:44:44,030 isipin ang tungkol sa iyong laptop. 761 00:44:44,030 --> 00:44:48,360 Kaya up dito, gusto kong lumipat sa aking aktwal na mga account, 762 00:44:48,360 --> 00:44:50,370 kasama ang aking maliit na penguin. 763 00:44:50,370 --> 00:44:57,310 Kaya ba akong magkaroon ng isang set ng password, at na password ay kahit anong nais ko ito upang maging. 764 00:44:57,310 --> 00:45:02,430 >> Ngunit tandaan na kung ano ako ng pag-log in gamit, kaya ito sa pag-login 765 00:45:02,430 --> 00:45:04,850 prompt, ay ilang mga programa. 766 00:45:04,850 --> 00:45:07,910 Ito ay ilang mga programa na noon ay nakasulat sa pamamagitan ng ilang mga tao. 767 00:45:07,910 --> 00:45:13,250 At kaya, ang taong iyon, kung ang mga ito lalo na nakahahamak na, magagawa nila 768 00:45:13,250 --> 00:45:17,780 sinabi, lahat ng karapatan, sa gayon kung ang password na ipasok ko ay katumbas ng aking 769 00:45:17,780 --> 00:45:22,800 aktwal na password, o ito ay katumbas sa ilang mga espesyal na password - 770 00:45:22,800 --> 00:45:25,550 Si David ay kahanga-hangang o isang bagay - 771 00:45:25,550 --> 00:45:27,190 pagkatapos ay hayaan silang in 772 00:45:27,190 --> 00:45:33,760 Kaya maaaring magkaroon ng isang nakakahamak na programmer access sa lahat ng iyong mga Mac, o 773 00:45:33,760 --> 00:45:36,150 Windows, o kahit ano. 774 00:45:36,150 --> 00:45:41,980 >> Kaya na ay hindi magkano ng isang alalahanin, dahil, Ibig kong sabihin, programa sa pag-login na ito ay 775 00:45:41,980 --> 00:45:48,720 na ipinadala sa OS X, daan-daan o libu-libong mga tao ay may 776 00:45:48,720 --> 00:45:50,020 Sinuri ang code na ito. 777 00:45:50,020 --> 00:45:55,330 At kaya, kung, ang iyong code sa isang lugar, ikaw sabihin kung ang string na ito ay katumbas Kapantay 778 00:45:55,330 --> 00:45:58,860 Si David ay kahanga-hangang, sa pag-login, pagkatapos ay isang tao ay pagpunta sa maging, tulad ng, maghintay. 779 00:45:58,860 --> 00:45:59,800 Ito ay hindi tama. 780 00:45:59,800 --> 00:46:01,790 Ito ay hindi dapat dito. 781 00:46:01,790 --> 00:46:06,650 Kaya iyon ang isang paraan makuha namin ang mga bagay upang maging uri ng secure na. 782 00:46:06,650 --> 00:46:10,300 >> Ngunit isipin ang tungkol sa mga programa kahit na na sinulat mo. 783 00:46:10,300 --> 00:46:13,000 Sabihin nating ikaw ay sumulat sa programa ng pag-login. 784 00:46:13,000 --> 00:46:20,440 Kaya ang program na ito sa pag-login na iyong na sinulat, kaya malinaw naman, ikaw ay isang magandang 785 00:46:20,440 --> 00:46:21,210 programmer. 786 00:46:21,210 --> 00:46:25,610 Hindi ka pagpunta sa ilagay ang anumang mga nakakahamak na kung x ay katumbas ng katumbas David ay kahanga-hangang 787 00:46:25,610 --> 00:46:27,860 sa iyong code. 788 00:46:27,860 --> 00:46:31,930 Ngunit sa programang ito, ano ang ginagawa mo gamitin upang ipunin ang programang ito? 789 00:46:31,930 --> 00:46:34,180 Isang bagay na tulad ng kumalatong. 790 00:46:34,180 --> 00:46:38,460 Kaya kung ano kung ang taong nangyari sa sumulat kumalatong espesyal cased sa kumalatong 791 00:46:38,460 --> 00:46:44,310 isang bagay tulad ng, kung ako ay kino-compile ang programa sa pag-login, pagkatapos ay ipasok ang code 792 00:46:44,310 --> 00:46:49,720 sa pag-login programa na nagsasabing, kung x ay katumbas ng katumbas David ay kahanga-hangang? 793 00:46:49,720 --> 00:46:59,890 Kaya hindi masyadong pa, ngunit mayroon namin ang parehong maglalabas dito, kung saan kumalatong, mahusay, 794 00:46:59,890 --> 00:47:03,790 libo-libo, kung hindi libu-libong mga mga tao, na tumingin sa kumalatong, mayroon 795 00:47:03,790 --> 00:47:07,160 tumingin sa mga linya nito ng code at sinabi, lahat ng karapatan, walang masamang narito. 796 00:47:07,160 --> 00:47:10,680 Malinaw, walang sinuman ang nagiging kahit ano ang nakakahamak na. 797 00:47:10,680 --> 00:47:15,780 >> Ngunit kung ano ang kumalatong mismo, tulad ng, paano kung compile ko kumalatong? 798 00:47:15,780 --> 00:47:20,900 Paano kung mayroon akong ilang mga tagatala na compiles kumalatong na insert sa kumalatong 799 00:47:20,900 --> 00:47:25,610 ito espesyal pataga na nagsasabing, ang lahat ng karapatan, kapag compile ko kumalatong, pagkatapos ay ang 800 00:47:25,610 --> 00:47:31,290 executable ko dapat espesyal tumingin sa loob ng programa ng pag-login at insert 801 00:47:31,290 --> 00:47:34,230 ang password na ito, katumbas ay katumbas ng Dave ay kahanga-hangang? 802 00:47:34,230 --> 00:47:37,990 Kaya tandaan na ang iyong sarili nito tagatala Kailangang ma-pinagsama-sama sa isang punto. 803 00:47:37,990 --> 00:47:42,810 Kaya kung ano ang pinili mo upang ipunin ang kumalatong sa, mismo ay nakakahamak na, pagkatapos mo 804 00:47:42,810 --> 00:47:45,580 ma-screwed ang buong paraan down ang linya. 805 00:47:45,580 --> 00:47:49,630 >> Kaya dito, mayroon kaming Ken Thompson at Dennis Ritchie. 806 00:47:49,630 --> 00:47:53,780 Kaya ito ay isang iconic na larawan. 807 00:47:53,780 --> 00:47:55,470 Dennis Ritchie ay sa kanan. 808 00:47:55,470 --> 00:47:58,740 Siya ay isang pangunahing - 809 00:47:58,740 --> 00:48:03,640 halos sinulat ni C. Kaya maaari mong salamat sa kanya para sa class na ito. 810 00:48:03,640 --> 00:48:04,840 Ken Thomson ay sa kaliwa. 811 00:48:04,840 --> 00:48:07,780 Ang dalawa sa kanila talaga na sinulat na UNIX. 812 00:48:07,780 --> 00:48:10,140 Well, sila ay mga pangunahing nag-ambag sa UNIX. 813 00:48:10,140 --> 00:48:11,310 Nagkaroon ng ilang mga iba pa. 814 00:48:11,310 --> 00:48:16,240 Kaya Ken Thompson, sa isang punto, panalo siya ang Turing Award. 815 00:48:16,240 --> 00:48:20,860 At ang Turing award, nagbigay ako palaging narinig -reference ito sa ganitong paraan, ito ay ang 816 00:48:20,860 --> 00:48:23,100 Nobel Prize ng computer science. 817 00:48:23,100 --> 00:48:27,500 >> Kaya sa Turing Award, siya ay may upang bigyan ang kanyang pagtanggap pagsasalita. 818 00:48:27,500 --> 00:48:31,790 At Binibigyan niya ito napaka sikat na salita ngayon, na tinatawag na Reflections sa pagtitiwala 819 00:48:31,790 --> 00:48:35,620 Tiwala, na namin nai-link ang Upang sa kurso website. 820 00:48:35,620 --> 00:48:41,670 At sa pagsasalita, sabi niya, ang lahat ng karapatan, kaya na sinulat ko UNIX, at ngayon ang lahat ng 821 00:48:41,670 --> 00:48:43,320 ang mga tao ay gumagamit ng UNIX. 822 00:48:43,320 --> 00:48:46,960 Ngayon, tandaan ngayong araw na Linux ay isang direktang inapo ng UNIX. 823 00:48:46,960 --> 00:48:50,140 Direkta ay gumagamit ng OS X UNIX. 824 00:48:50,140 --> 00:48:53,810 Windows ay hindi kaya magkano, ngunit marami ng mga ideya ay kinuha mula sa UNIX. 825 00:48:53,810 --> 00:48:59,220 >> Kaya siya napupunta up sa stage at sabi, lahat ng karapatan, isinulat ko UNIX. 826 00:48:59,220 --> 00:49:03,940 At kaya lang alam mo guys, ako makakapag-log in sa bawat 827 00:49:03,940 --> 00:49:05,590 solong isa sa iyong mga computer. 828 00:49:05,590 --> 00:49:14,280 Dahil Naglagay ako ng isa sa mga espesyal na kung x katumbas ay katumbas ng Ken Thomson ay kahanga-hangang, 829 00:49:14,280 --> 00:49:16,350 pagkatapos ako pinapayagang mag-log in. 830 00:49:16,350 --> 00:49:18,370 Kaya mga tao ay tulad ng, mahusay, how'd gagawin mo na? 831 00:49:18,370 --> 00:49:21,090 Tiningnan namin sa programa sa pag-login at walang naroon. 832 00:49:21,090 --> 00:49:24,700 Siya ay tulad, na rin, na-modify ko ang tagatala upang mag-log sa programa sa pag-login 833 00:49:24,700 --> 00:49:30,490 upang ang programa sa pag-login ngayon ay magkakaroon na x ay katumbas ng katumbas Ken Thompson 834 00:49:30,490 --> 00:49:31,700 ay kahanga-hangang. 835 00:49:31,700 --> 00:49:33,120 >> At sinasabi nila, well, hindi iyon totoo. 836 00:49:33,120 --> 00:49:35,740 Kami ay tumitingin sa tagatala, at ang tagatala ay walang anumang mga linya ng 837 00:49:35,740 --> 00:49:36,400 code tulad na. 838 00:49:36,400 --> 00:49:40,540 Tulad ng Siya ay, OK, ngunit kung ano ang ikaw ay kino-compile ang tagatala may? 839 00:49:40,540 --> 00:49:44,810 At sila sa tingin, at siya ay, tulad ng, mahusay, Ako ang taong nagbigay sa iyo ang tagatala 840 00:49:44,810 --> 00:49:50,580 na iyong ginagamit upang mag-compile ang tagatala, kaya ikaw ay kino-compile ang isang tagatala, na 841 00:49:50,580 --> 00:49:56,390 mismo ay nakakahamak na, at magpo basagin ang programa sa pag-login. 842 00:49:56,390 --> 00:49:59,360 Kaya talaga, sa puntong iyon, mayroong walang paraan na maaari mong tingnan ang pinagmulan 843 00:49:59,360 --> 00:50:02,450 code ng programa sa pag-login upang makita kung ano ang mali. 844 00:50:02,450 --> 00:50:04,220 Hindi mo maaaring kahit na tumingin sa source code ng tagatala 845 00:50:04,220 --> 00:50:06,790 upang makita kung ano ang mali. 846 00:50:06,790 --> 00:50:11,940 >> Kakailanganin mong mag-tumingin sa machine code, ang aktwal na binary ng 847 00:50:11,940 --> 00:50:16,760 inipon tagatala upang makita, maghintay, ang mga linya ng code hindi dapat dito. 848 00:50:16,760 --> 00:50:22,130 Ngunit kinuha ito Ken Thompson isang hakbang karagdagang at sinabi, mahusay, may mga 849 00:50:22,130 --> 00:50:25,980 ng mga espesyal na programa na talaga tulungan basahin mo ang binary ng mga programa, 850 00:50:25,980 --> 00:50:29,340 at kaya kung may isang taong ginamit programa na sa basahin ang mga binary, gusto nilang makita ang mga 851 00:50:29,340 --> 00:50:30,490 linya ng code. 852 00:50:30,490 --> 00:50:34,020 Modify niya mga programa upang sabihin, ang lahat ng karapatan, kung ikaw ay naghahanap sa 853 00:50:34,020 --> 00:50:38,460 tagatala, huwag ipakita ang partikular na hanay ng mga binary. 854 00:50:38,460 --> 00:50:42,830 >> Kaya pagkatapos na kailangan mong gawin na ang isang hakbang karagdagang at isa lamang, na maaaring magkaroon 855 00:50:42,830 --> 00:50:46,210 kinuha maramihang mga antas ng kawalang-tapat, at sa isang punto, walang sinuman ang aktwal 856 00:50:46,210 --> 00:50:47,990 pagpunta sa ma-check. 857 00:50:47,990 --> 00:50:52,590 Kaya mga kapakanang moral ng kuwento ay, ikaw ay hindi pagpunta sa ay sumusulat 858 00:50:52,590 --> 00:50:54,340 Kumalatong sa class na ito. 859 00:50:54,340 --> 00:50:57,020 Ikaw ay pagpunta sa gumagamit sa pag-akyat Kumalatong marami sa class na ito. 860 00:50:57,020 --> 00:51:00,490 Para sa lahat ng alam mo na, kumalatong ay isang nakakahamak na programa na ay sabotaging bawat 861 00:51:00,490 --> 00:51:03,520 solong programa na iyong pinagsama-sama. 862 00:51:03,520 --> 00:51:08,206 At upang mag-iwan ka sa na napaka nagbabala Tandaan, ang nakikita mo sa Miyerkules. 863 00:51:08,206 --> 00:51:10,030 >> [Palakpakan] 864 00:51:10,030 --> 00:51:12,935 >> Tagapagsalita 2: Sa susunod na CS50. 865 00:51:12,935 --> 00:51:14,580 >> Tagapagsalita 3: Huwag mang-ahas mong sabihin na iyon. 866 00:51:14,580 --> 00:51:15,930 Maaari mong gawin ito. 867 00:51:15,930 --> 00:51:19,440 Nagawa mo na ito bago, maaari mong gawin ito ngayon, maaari mong gawin ito bukas. 868 00:51:19,440 --> 00:51:20,930 Hindi ka na ginagawa ito para sa taon. 869 00:51:20,930 --> 00:51:22,790 Pumunta lamang up doon at gawin ito. 870 00:51:22,790 --> 00:51:24,310 Maaari mong gawin ito. 871 00:51:24,310 --> 00:51:26,102 >> [MUSIC nagpe-play]