1 00:00:00,000 --> 00:00:02,880 >> [MUSIC nagpe-play] 2 00:00:02,880 --> 00:00:10,580 3 00:00:10,580 --> 00:00:13,500 >> Tagapagsalita 1: Ito ang CS50 at ito ay ang simula ng linggo dalawang. 4 00:00:13,500 --> 00:00:18,400 Kaya, sabihin sumisid karapatan sa isang bagay na ipaalam iyon ay maraming surot, kaya na magsalita. 5 00:00:18,400 --> 00:00:24,015 Kaya, sa paglipas dito ay CS50 IDE at na ako nakuha up nang maaga na ito screen-- sumpain 6 00:00:24,015 --> 00:00:25,070 ito. 7 00:00:25,070 --> 00:00:25,760 Spoiler alert. 8 00:00:25,760 --> 00:00:26,260 Lahat tama. 9 00:00:26,260 --> 00:00:29,060 Na nakuha ko up screen na ito dito, na kung saan ay isang napaka-simpleng programa. 10 00:00:29,060 --> 00:00:32,659 Kung mag-scroll namin down, pinaka ng mga ito ay lamang mga komento, 11 00:00:32,659 --> 00:00:36,730 ngunit dito sa linya 13 sa pamamagitan ng 17 kami ay may isang program. 12 00:00:36,730 --> 00:00:40,580 >> Ito ay syntactically may-bisa, na nangangahulugan na kung Sumulat ng libro ko ito, ito ay sumulat ng libro at tumakbo, 13 00:00:40,580 --> 00:00:41,920 ngunit ito ay maraming surot. 14 00:00:41,920 --> 00:00:47,330 Ang program na ito claims sa mga komento up tuktok na dapat itong i-print 10 bituin, 15 00:00:47,330 --> 00:00:48,870 ngunit ito ay hindi. 16 00:00:48,870 --> 00:00:53,290 At batay sa iyong karanasan, o sa lalong madaling panahon upang maging karanasan sa C, 17 00:00:53,290 --> 00:00:56,820 maaari mong lohikal umintindi kung bakit ito ay, sa katunayan, maraming surot? 18 00:00:56,820 --> 00:00:57,804 Oo? 19 00:00:57,804 --> 00:00:59,220 Madla: Ito ay napupunta mula sa zero sa 10. 20 00:00:59,220 --> 00:01:01,884 Iyan ay 11 iteration. 21 00:01:01,884 --> 00:01:02,550 Tagapagsalita 1: Oo. 22 00:01:02,550 --> 00:01:06,030 Kaya, ito ay pagpunta mula sa zero up sa pamamagitan ng at pantay-pantay sa 10, 23 00:01:06,030 --> 00:01:08,140 na siyempre ay 11 iteration. 24 00:01:08,140 --> 00:01:10,020 Kaya, ito ay pagpunta sa print, sa katunayan, 11 stars. 25 00:01:10,020 --> 00:01:13,040 Kaya, ang computer science convention sa karamihan ng mga wika programming 26 00:01:13,040 --> 00:01:15,270 ay, sa katunayan, para lamang simulan ang pagbibilang sa zero, 27 00:01:15,270 --> 00:01:18,800 ngunit bilang ng hanggang sa ngunit hindi sa pamamagitan ng mga halaga na iyong aktwal na nagmamalasakit sa. 28 00:01:18,800 --> 00:01:21,216 >> Ngayon, ito ay isang bagay na tumatagal ng isang maliit na nagsisimula ginagamit upang 29 00:01:21,216 --> 00:01:25,350 at kahit na wala, na idinisenyo bilang na ito ay para sa mga di programmers o non ng computer 30 00:01:25,350 --> 00:01:28,070 siyentipiko at para sa mga bata higit sa lahat, ay dinisenyo upang magkaroon 31 00:01:28,070 --> 00:01:29,570 simulan mo ang pagbibilang sa pangkalahatan sa isa. 32 00:01:29,570 --> 00:01:30,277 At na fine. 33 00:01:30,277 --> 00:01:33,110 Maaari mong ganap na simulan ang pagbibilang sa isa kung na mas kumportable. 34 00:01:33,110 --> 00:01:37,210 At bilang ng hanggang sa at sa pamamagitan ng 10, ngunit makikita mo mapagtanto lalo ngayong linggo 35 00:01:37,210 --> 00:01:39,950 at lampas na lang kaya maraming bagay sa programming 36 00:01:39,950 --> 00:01:42,465 ipalagay na 0 ay ang unang digit na kung saan ikaw bilangin, 37 00:01:42,465 --> 00:01:45,590 na kayo ay pagpunta upang mahanap ito ng mas madali para makarating lamang sa ito ugali ng panimulang 38 00:01:45,590 --> 00:01:49,490 mula sa zero at nadaragdagan pa hanggang sa ang halaga na mahalaga sa iyo sa ngayon mula sa mga 39 00:01:49,490 --> 00:01:49,990 makakuha pumunta. 40 00:01:49,990 --> 00:01:50,990 >> Kaya, na may taning na. 41 00:01:50,990 --> 00:01:53,670 Binago namin ang mas mababa sa o katumbas sa lamang mas mababa sa. 42 00:01:53,670 --> 00:01:56,050 Tingnan natin ang isang pagtingin sa isang pangalawang halimbawa dito. 43 00:01:56,050 --> 00:01:59,585 >> Kaya, masyadong inaangkin ang program na ito sa kanyang comments up tuktok na dapat itong i-print 44 00:01:59,585 --> 00:02:02,260 sampung mga bituin, ngunit ito ay hindi. 45 00:02:02,260 --> 00:02:05,540 Ano ang bug dito? 46 00:02:05,540 --> 00:02:07,930 >> Kaya, what-- at paumanhin, sabihin na malinaw. 47 00:02:07,930 --> 00:02:08,610 10 stars. 48 00:02:08,610 --> 00:02:11,644 Isa sa bawat linya, ngunit ito ay hindi. 49 00:02:11,644 --> 00:02:14,810 Kaya, sa katunayan, hayaan mo akong magpatuloy at sumulat ng libro isa na ito dahil ito ay isang maliit na mas mababa 50 00:02:14,810 --> 00:02:16,900 clear batay sa paglalarawan. 51 00:02:16,900 --> 00:02:18,720 Hayaan akong pumunta sa aming direktoryo ng source. 52 00:02:18,720 --> 00:02:25,110 Gumawa buggy isang tuldok slash, buggy isa. 53 00:02:25,110 --> 00:02:28,680 OK, nakikita ko ang 11 mga bituin, na ay may problema pa rin, 54 00:02:28,680 --> 00:02:30,090 ngunit ikaw din lahat sila sa isang linya. 55 00:02:30,090 --> 00:02:31,500 Ano ang mga isyu dito? 56 00:02:31,500 --> 00:02:32,339 Oo. 57 00:02:32,339 --> 00:02:33,255 Madla: [hindi marinig]. 58 00:02:33,255 --> 00:02:36,194 59 00:02:36,194 --> 00:02:36,860 Tagapagsalita 1: Oo. 60 00:02:36,860 --> 00:02:40,210 Kaya ito ay isang katusuhan na ikaw ay maaaring pagpapabalik sa akin ang paggawa ng maikling banggitin ng. 61 00:02:40,210 --> 00:02:42,793 Kahit na ang lahat ng bagay na tingin pretty, at ito ay mabuti indent, 62 00:02:42,793 --> 00:02:45,850 at ito uri ng mukhang scratch-like sa linya 16 at 17 ay, 63 00:02:45,850 --> 00:02:47,600 sa katunayan, naka-indent sa ilalim na para sa loop. 64 00:02:47,600 --> 00:02:48,400 Iyan ay hindi mahalaga. 65 00:02:48,400 --> 00:02:50,460 Ang computer ay hindi alam o makita white space. 66 00:02:50,460 --> 00:02:52,910 White space ay para lamang sa mga tao sa amin, stylistically. 67 00:02:52,910 --> 00:02:57,010 Ang computer ay malaman kapag mayroon kang curly braces, kung saan ay, sa katunayan, 68 00:02:57,010 --> 00:02:58,280 ayusin ang problemang ito. 69 00:02:58,280 --> 00:03:02,350 >> Kaya, kung ang tunay na kami pumasok at malinaw na ilagay sa mga kulot braces 70 00:03:02,350 --> 00:03:05,220 na ayusin ang problemang ito sa pamamagitan ng paggawa ng malinaw na ang tagatala 71 00:03:05,220 --> 00:03:07,930 na ako ang tunay na nais upang maipatupad dalawang linya ng code muli, 72 00:03:07,930 --> 00:03:09,220 at muli, at muli. 73 00:03:09,220 --> 00:03:11,680 Ngunit ano ang mga pangunahing mga paliwanag? 74 00:03:11,680 --> 00:03:12,180 Right? 75 00:03:12,180 --> 00:03:15,260 Hindi namin mahigpit na kailangan curly braces lahat ng oras, 76 00:03:15,260 --> 00:03:18,210 kahit na ito ay maaring pinakamahusay pagsasanay upang makakuha ng sa na ugali anyway 77 00:03:18,210 --> 00:03:20,878 kahit na ito ay nagdadagdag ng dalawang character sa iyong code. bakit? 78 00:03:20,878 --> 00:03:22,380 >> Madla: [hindi marinig]? 79 00:03:22,380 --> 00:03:24,630 Tagapagsalita 1: Oo kaya iyon isa pang solusyon sa kabuuan. 80 00:03:24,630 --> 00:03:25,130 Right? 81 00:03:25,130 --> 00:03:28,250 Lalo na kung sa unang tingin hindi mo talagang Pinahahalagahan kung ano ang nangyayari sa. 82 00:03:28,250 --> 00:03:31,070 Well, tiyak na magagawa namin lamang gawin ang dalawang bagay nang sabay-sabay 83 00:03:31,070 --> 00:03:32,710 at iwasan lang ang problema sa kabuuan. 84 00:03:32,710 --> 00:03:36,080 At iyon ang masarap, ngunit ngayon, para sa mga layunin sa ngayon, kung ano ang 85 00:03:36,080 --> 00:03:38,200 ang paliwanag para sa mga bug? 86 00:03:38,200 --> 00:03:39,810 Bakit ang lahat ng mga bituin sa isang linya? 87 00:03:39,810 --> 00:03:40,806 Oo? 88 00:03:40,806 --> 00:03:43,296 >> Madla: Tila na kung ikaw ay may isang linya ng code, 89 00:03:43,296 --> 00:03:46,649 maaari mong gawin ito nang walang mga iyon. 90 00:03:46,649 --> 00:03:47,440 Tagapagsalita 1: Eksakto. 91 00:03:47,440 --> 00:03:48,750 Ito ay lamang ng isang tao convention. 92 00:03:48,750 --> 00:03:50,750 Mga tao ay mapagtanto na ito ay isang maliit na nakakainis o nakakapagod 93 00:03:50,750 --> 00:03:53,470 sa may sa ilagay curly braces lahat ng mga oras kung ang lahat ng gusto mong gawin 94 00:03:53,470 --> 00:03:55,090 ay maglalapat ng isang linya ng code. 95 00:03:55,090 --> 00:03:57,660 Kaya, napagpasyahan tao ilang oras na ang nakalipas na na multa. 96 00:03:57,660 --> 00:04:01,180 Kung nais mong ilagay ang lahat ng iyong mga loop sa lamang na ang isang linya tulad nito, 97 00:04:01,180 --> 00:04:04,030 na multa sa mga single semicolon sa dulo. 98 00:04:04,030 --> 00:04:07,210 Ngunit maaari mo lamang gawin ang isang tulad linya nang walang mga kulot tirante. 99 00:04:07,210 --> 00:04:09,900 >> Kaya, kapag ang estilo ng gabay CS50 bilang ay ituro sa iyo sa, 100 00:04:09,900 --> 00:04:11,980 makikita mo na sa pangkalahatan ito ay magandang ugali 101 00:04:11,980 --> 00:04:14,920 upang makakuha ng sa na ito hanggang sa ikaw ay lubos na kumportable naliligaw 102 00:04:14,920 --> 00:04:17,404 mula sa mga uri ng mga convention at paggawa ng iyong sariling mga bagay. 103 00:04:17,404 --> 00:04:18,820 Kaya't hangga't ikaw ay self pare-pareho. 104 00:04:18,820 --> 00:04:21,540 At kami ay makipag-usap higit pa tungkol sa estilo ng isang maliit na piraso mamaya. 105 00:04:21,540 --> 00:04:23,200 >> Kaya, sabihin buksan up ako ng isa sa iba pang mga program. 106 00:04:23,200 --> 00:04:24,930 Siyempre, dapat tayong ayusin na 10 rin. 107 00:04:24,930 --> 00:04:32,470 Hayaan akong magpatuloy at isulat ang isang tunay na mabilis na programa na Tatawag ako, 108 00:04:32,470 --> 00:04:38,140 sabihin nating, dot loop C. So, loop dot C. At sa loop dot C pupuntahan ko na magkaroon, 109 00:04:38,140 --> 00:04:41,970 isama ang standard I / O dot H int pangunahing walang bisa. 110 00:04:41,970 --> 00:04:44,020 At ngayon hayaan gawin lang ni, sa katunayan, isang loop. 111 00:04:44,020 --> 00:04:46,020 Kaya, 4 int ako makakakuha ng zero. 112 00:04:46,020 --> 00:04:48,660 Ako ay mas mababa kaysa sa, sabihin nating, 50. 113 00:04:48,660 --> 00:04:49,950 Ako plus, plus. 114 00:04:49,950 --> 00:04:53,350 At pagkatapos in dito sabihin sige, at i-print F. 115 00:04:53,350 --> 00:04:56,400 At pagkatapos ay gusto kong i-print ko at ang isang bagong linya, tuldok-kuwit. 116 00:04:56,400 --> 00:05:00,015 >> At ito ay dapat i-print ang lahat ng mga numero mula sa zero hanggang sa 50? 117 00:05:00,015 --> 00:05:02,900 118 00:05:02,900 --> 00:05:03,680 Ang ilang mga ulo tumango. 119 00:05:03,680 --> 00:05:04,270 Ilang Nos. 120 00:05:04,270 --> 00:05:05,339 Ano ang mga bug na? 121 00:05:05,339 --> 00:05:06,630 Ano ang madaling pagkakamali na ginawa ko? 122 00:05:06,630 --> 00:05:07,170 Oo. 123 00:05:07,170 --> 00:05:08,544 >> Madla: [hindi marinig]. 124 00:05:08,544 --> 00:05:09,210 Tagapagsalita 1: Oo. 125 00:05:09,210 --> 00:05:11,520 Kaya kahit na mukha itong tulad nito ay kung ano ang balak ko, 126 00:05:11,520 --> 00:05:13,920 pagpapabalik na ako rin ay lamang ng isang character na ASCII. 127 00:05:13,920 --> 00:05:14,955 >> Kaya, kung sinasabi ko, print "I." 128 00:05:14,955 --> 00:05:16,670 Literal Ito ay pagpunta upang i-print I. Kaya, kung ako 129 00:05:16,670 --> 00:05:20,030 nais na mga plug-in sa isang placeholder halaga ang tunay na kailangan kong gawin ito 130 00:05:20,030 --> 00:05:22,630 at pagkatapos ay plug-in sa halaga ng I magilas. 131 00:05:22,630 --> 00:05:25,200 Kung hindi man lamang ako ng pagpunta sa makakuha ng 50 ako sa screen. 132 00:05:25,200 --> 00:05:28,140 >> Kaya, hayaan mo akong magpatuloy at gumawa ng loop na ito, patakbuhin ito, 133 00:05:28,140 --> 00:05:30,650 at, sa katunayan, namin ang lahat ang paraan up hanggang 49. 134 00:05:30,650 --> 00:05:34,140 At kung mag-scroll ko pabalik sa oras na makita ko numerong zero sa simula. 135 00:05:34,140 --> 00:05:36,050 >> Well, kung ano kung ako uri ng magtaas? 136 00:05:36,050 --> 00:05:37,800 Paano kung gagawin ko ito? 137 00:05:37,800 --> 00:05:40,120 Dahil lang sa hindi ako nag-iisip. 138 00:05:40,120 --> 00:05:40,970 Ano ang programang ito. 139 00:05:40,970 --> 00:05:43,970 Kapag Pag pinagsama-sama at tumakbo, pagpunta sa gawin lohikal? 140 00:05:43,970 --> 00:05:44,870 >> Madla: Hindi. 141 00:05:44,870 --> 00:05:45,661 >> Tagapagsalita 1: Hindi. 142 00:05:45,661 --> 00:05:47,156 Bakit na? 143 00:05:47,156 --> 00:05:49,124 >> Madla: Ako ay dinisenyo para sa zero. 144 00:05:49,124 --> 00:05:51,899 Kaya, ang mga kondisyon ay hindi totoo. 145 00:05:51,899 --> 00:05:52,940 Tagapagsalita 1: Oo, eksakto. 146 00:05:52,940 --> 00:05:55,110 Ang lahat ng mga code ay tama, syntactically. 147 00:05:55,110 --> 00:05:57,310 Ito ay sumulat ng libro, ito code ay tatakbo, ngunit ito ay hindi 148 00:05:57,310 --> 00:06:00,110 pagpunta sa gawin kapaki-pakinabang dahil magpasimula ko ako sa zero. 149 00:06:00,110 --> 00:06:02,240 Pagkatapos ay tingnan namin, ay ko mas higit sa 50? 150 00:06:02,240 --> 00:06:03,810 Malinaw, hindi, ito ay hindi. 151 00:06:03,810 --> 00:06:05,760 Kaya hindi na executes sa lahat ng mga loop. 152 00:06:05,760 --> 00:06:09,580 >> Paano kung gawin namin ang isang bagay mas walang ingat ng kaunti? 153 00:06:09,580 --> 00:06:12,890 Kaya, kung ano kung gagawin namin tulad ng int ako makakakuha ng zero. 154 00:06:12,890 --> 00:06:15,640 At ngayon hayaan mo akong gamitin ang habang loop, na kung saan ay isa pang kondisyon. 155 00:06:15,640 --> 00:06:21,810 At habang sinasabi ko, habang ako ay mas malaki sa o katumbas ng zero, at pagkatapos ay sa dito ako 156 00:06:21,810 --> 00:06:26,070 sige, at i-save ang file, gumawa ng loop. 157 00:06:26,070 --> 00:06:27,070 At ako ay tungkol sa upang patakbuhin ito. 158 00:06:27,070 --> 00:06:30,230 Ano ako pagpunta upang makita ito oras sa isang habang loop? 159 00:06:30,230 --> 00:06:30,852 Oo. 160 00:06:30,852 --> 00:06:32,120 >> Madla: Isang walang katapusang loop? 161 00:06:32,120 --> 00:06:35,360 >> Tagapagsalita 1: Isang walang katapusang loop? 162 00:06:35,360 --> 00:06:36,662 Oo, at bakit? 163 00:06:36,662 --> 00:06:38,120 Madla: Dahil ito ay palaging zero. 164 00:06:38,120 --> 00:06:38,786 Tagapagsalita 1: Oo. 165 00:06:38,786 --> 00:06:40,100 Kaya, ako ay nasimulan bilang zero. 166 00:06:40,100 --> 00:06:44,470 Siyempre ako ay palaging mas mataas kaysa sa o katumbas ng 0 bilang isang resulta. 167 00:06:44,470 --> 00:06:46,460 Kaya, lamang ako pagpunta sa makikita ito ng walang katapusan. 168 00:06:46,460 --> 00:06:49,850 At ngayon, ito ay magkaroon ng isang beses o dalawang beses sa ulo ang kurso na iyon. 169 00:06:49,850 --> 00:06:52,417 Ano ang mangyayari kapag ikaw ay magkaroon ng isang walang-katapusang loop? 170 00:06:52,417 --> 00:06:53,314 >> Madla: Control C. 171 00:06:53,314 --> 00:06:53,980 Tagapagsalita 1: Oo. 172 00:06:53,980 --> 00:06:56,250 Kaya Control C ay tuluyang sumagot. 173 00:06:56,250 --> 00:06:59,520 Sa kasamaang palad, na-print out namin milyon-milyong at milyon-milyong mga zeroes nai 174 00:06:59,520 --> 00:07:01,520 at sa gayon ang computer ay may uri ng nauna pa sa akin. 175 00:07:01,520 --> 00:07:03,394 Kaya, ito ay pagpunta upang huwag pansinin sa akin ng isang maliit na bit. 176 00:07:03,394 --> 00:07:06,560 Ngunit kung ikaw pindutin lamang Control C isang ilang beses sa iyong Mac o PC keyboard, 177 00:07:06,560 --> 00:07:08,790 sa huli ito ay dapat, sa katunayan, wakasan. 178 00:07:08,790 --> 00:07:11,770 At kung hindi, ipapakita namin sa iyo ang ilang mga pamamaraan bago ang haba kung saan mo 179 00:07:11,770 --> 00:07:14,850 maaaring aktwal na puwersahang pumatay programa, marami tulad ng sa Windows at Mac OS, 180 00:07:14,850 --> 00:07:15,562 kung kailangan. 181 00:07:15,562 --> 00:07:16,770 Ngunit subukan ang isang bagay kaya'y ang. 182 00:07:16,770 --> 00:07:19,895 Aktwal paglakas I. Ay Ipaalam ito pa rin pagpunta sa walang hanggan? 183 00:07:19,895 --> 00:07:22,870 184 00:07:22,870 --> 00:07:25,140 Hayaan akong tumakbo ito. 185 00:07:25,140 --> 00:07:27,090 At ngayon maaari mong uri ng makita kung ano ang nangyayari. 186 00:07:27,090 --> 00:07:30,140 Ito rin ay isang walang-katapusang loop. 187 00:07:30,140 --> 00:07:33,080 Ngunit ito ay isang piraso ng isang kahanga-hangang gawa tanong. 188 00:07:33,080 --> 00:07:35,460 Ay ito pagpunta upang i-print ang mga numero na walang hanggan? 189 00:07:35,460 --> 00:07:36,647 >> Madla: No. 190 00:07:36,647 --> 00:07:37,230 Tagapagsalita 1: No. 191 00:07:37,230 --> 00:07:37,620 Bakit? 192 00:07:37,620 --> 00:07:38,820 Narinig ko ang ilang Nos paglipas dito. 193 00:07:38,820 --> 00:07:41,859 Someone-- Oo. 194 00:07:41,859 --> 00:07:44,275 Madla: Hindi mo na magkaroon ng sapat na bits sa tunay na panatilihin ang pagpunta. 195 00:07:44,275 --> 00:07:44,730 Tagapagsalita 1: Ang lahat ng karapatan. 196 00:07:44,730 --> 00:07:46,000 Kaya hindi ko magkaroon ng sapat na bits upang panatilihin ang pagpunta. 197 00:07:46,000 --> 00:07:47,124 Kaya, kung ano ang nangyayari sa mangyayari? 198 00:07:47,124 --> 00:07:49,320 Lamang Ito ay pagpunta sa itigil? 199 00:07:49,320 --> 00:07:52,542 >> Madla: Sa ilang mga punto ito ay sarhan the-- 200 00:07:52,542 --> 00:07:54,500 Tagapagsalita 1: Ito ay sarhan loop down, ngunit bakit? 201 00:07:54,500 --> 00:07:57,950 Ano kaya ang mangyari sa dulo ng mga hangganan nito? 202 00:07:57,950 --> 00:07:58,479 Oo? 203 00:07:58,479 --> 00:08:00,520 Madla: Ito ay cycle bumalik sa mga negatibong numero. 204 00:08:00,520 --> 00:08:02,900 Tagapagsalita 1: Upang negatibong numero, o kung lamang namin ay pagpapagamot positive, 205 00:08:02,900 --> 00:08:03,570 zero hindi bababa sa. 206 00:08:03,570 --> 00:08:04,550 Kaya oo, walang pasubali. 207 00:08:04,550 --> 00:08:08,059 Alalahanin na nakita natin noong nakaraang panahon na iyon kung ikaw dagdagan ang iyong bits isa masyadong maraming beses, 208 00:08:08,059 --> 00:08:10,225 at mayroong kang unahan overflow ang kapasidad ng iyong int 209 00:08:10,225 --> 00:08:13,058 o ano pa man ang uri ng data ay, ikaw ay pagpunta sa wrapper sa paligid, marahil, 210 00:08:13,058 --> 00:08:14,020 dalawang mga negatibong numero. 211 00:08:14,020 --> 00:08:16,644 O kung nag-tukuyin na ang iyong hanay ay dapat na positibo lamang, 212 00:08:16,644 --> 00:08:18,560 na maaari mong gawin, ngunit hindi namin pa nakita iyon, 213 00:08:18,560 --> 00:08:21,420 na maaaring humantong sa hindi bababa sa bumalik sa zero. 214 00:08:21,420 --> 00:08:22,410 Kahit na, ang tunay na oo. 215 00:08:22,410 --> 00:08:24,320 Sa kasong ito, negatibo numero, kung saan 216 00:08:24,320 --> 00:08:26,870 ang loop ay pagpunta upang wakasan dahil ako ay hindi, sa katunayan, 217 00:08:26,870 --> 00:08:29,220 mas malaki kaysa sa o katumbas ng zero kung ito ay negatibo. 218 00:08:29,220 --> 00:08:31,780 >> Kaya, sa kasamaang-palad, kung paano katagal na namin na maghintay? 219 00:08:31,780 --> 00:08:35,490 Sa ngayon kami ng hanggang sa ano, 2 milyon-ish? 220 00:08:35,490 --> 00:08:37,705 Kami ay tulad ng 2 bilyon, kami ay pagpunta sa may sa maghintay 221 00:08:37,705 --> 00:08:39,330 hanggang maaari namin ang aktwal na makita ang mga sintomas na ito. 222 00:08:39,330 --> 00:08:46,200 Ngunit maaari naming makita ang mga ito ng isang maliit na mas mabilis, maybe-- sabihin makita kung maaari naming matigil. 223 00:08:46,200 --> 00:08:46,700 Sige na. 224 00:08:46,700 --> 00:08:49,500 225 00:08:49,500 --> 00:08:51,331 Kahit na ang mga menu ay lumilitaw nang dahan-dahan. 226 00:08:51,331 --> 00:08:51,830 Lahat tama. 227 00:08:51,830 --> 00:08:54,270 Kaya, kami ay bumalik sa na bago ang haba. 228 00:08:54,270 --> 00:08:56,320 Ito ay isang magandang time-- mapapahamak ang mga ito, mga tuta. 229 00:08:56,320 --> 00:08:58,280 >> Ito ay isang magandang panahon para sa ilang mga anunsyo. 230 00:08:58,280 --> 00:09:01,225 Kaya, kung baka gusto mo upang makisali sa YHack, 231 00:09:01,225 --> 00:09:03,600 na kung saan ay sa pagiging isang kaganapan inisponsor ng aming mga kaibigan sa Yale. 232 00:09:03,600 --> 00:09:05,990 At, sa katunayan, ang ilan sa mga kurso TFs sa Yale ay kasangkot sa mga ito. 233 00:09:05,990 --> 00:09:08,610 YHack ay isang internasyonal na hack-a-Thon na naka-host sa pamamagitan ng at gaganapin 234 00:09:08,610 --> 00:09:12,395 sa Yale, nagdadala nang magkasama 1,500 tulad ng isip mga hacker at creatives lahat 235 00:09:12,395 --> 00:09:13,120 sa buong mundo. 236 00:09:13,120 --> 00:09:14,610 Kung ito ay ng interes, tingnan dito. 237 00:09:14,610 --> 00:09:17,401 Kung masyadong maiksi sa ito ay screen, tingnan ang mga slide ngayon 238 00:09:17,401 --> 00:09:19,622 para sa mga URL para sa yhack.org. 239 00:09:19,622 --> 00:09:21,080 So, din ang ilang mabilis na mga anunsyo. 240 00:09:21,080 --> 00:09:24,410 Kaya, opisyal na mga seksyon ay magsisimula susunod na linggo parehong dito at sa New Haven. 241 00:09:24,410 --> 00:09:27,660 Isaisip na ikaw ay nakakakuha ng isang email sa ibang pagkakataon ngayong weekend malamang. 242 00:09:27,660 --> 00:09:29,390 Ito ay tumatagal ng isang mahabang panahon para sa CS50 sa seksyon, 243 00:09:29,390 --> 00:09:32,080 ibinigay ang lahat ng mga tao sa klase at ang lahat ay gumagalaw sa paligid. 244 00:09:32,080 --> 00:09:34,871 At ang lahat ng Teaching Fellows ' iskedyul ay din solidifying pa rin, 245 00:09:34,871 --> 00:09:38,110 ngunit manatiling nakatutok para sa isang email at kung kailangan ay, maaari mong muling i-seksyon pagkatapos doon. 246 00:09:38,110 --> 00:09:39,580 >> Study.cs50.net. 247 00:09:39,580 --> 00:09:43,280 Kaya, kahit na kung ikaw ay isang pare-pareho ang attendee sa seksyon, mapagtanto na ang halos lahat 248 00:09:43,280 --> 00:09:46,786 mga resources na ginagamit namin sa mga seksyon ay magagamit ng publiko sa CS50 249 00:09:46,786 --> 00:09:48,460 Pag-aralan na ito sa URL dito. 250 00:09:48,460 --> 00:09:51,630 Kaya, kung gusto mo kailanman nais na muling review materyal mula sa seksyon, o basahin nang mas maaga, 251 00:09:51,630 --> 00:09:54,170 o hindi ka maaaring gumawa ng mga ito ng ilang mga linggo, Napagtanto sample na mga slide, 252 00:09:54,170 --> 00:09:58,210 at mga problema, at mga kahulugan, at higit pa ay ang lahat doon pati na rin. 253 00:09:58,210 --> 00:10:00,645 >> Ipagpatuloy ngayon Office oras, at bukas, at Miyerkules, 254 00:10:00,645 --> 00:10:03,020 at Huwebes suriin ang kurso na iyon website para sa schedule. 255 00:10:03,020 --> 00:10:05,690 >> At din, ngayon paglunsad ngayon ay CS50 Talakayin. 256 00:10:05,690 --> 00:10:09,230 Kaya, kung at kapag mayroon kayong mga tanong para sa isa't isa o para sa mga tauhan ng kurso, 257 00:10:09,230 --> 00:10:12,099 at sa pangkalahatan ay nagtatrabaho sa ilang mga hanay ng problema, 258 00:10:12,099 --> 00:10:15,015 mapagtanto na hindi mo kinakailangang kung i-sa-tao sa tabi mo. 259 00:10:15,015 --> 00:10:17,810 Kung walang isa doon, maaari mong makipag-ugnay sa amin at kaklase 260 00:10:17,810 --> 00:10:19,890 online sa pamamagitan ng CS50 Talakayin. 261 00:10:19,890 --> 00:10:22,600 Kaya, ito ay isang talakayan board para sa mga kurso, 262 00:10:22,600 --> 00:10:24,550 at mapagtanto na ito ay marahil ang pinakamahusay 263 00:10:24,550 --> 00:10:28,480 ilagay upang magsimula kapag ikaw ay may mga katanungan kapag nasa labas ng oras ng opisina 264 00:10:28,480 --> 00:10:29,470 sa partikular. 265 00:10:29,470 --> 00:10:31,070 >> Pagkain ay magsisimula up this week masyadong. 266 00:10:31,070 --> 00:10:33,170 Sa Sunog at Yelo [Hindi marinig] sa New Haven. 267 00:10:33,170 --> 00:10:35,379 Tingnan kung ang kurso na iyon website upang mag-RSVP. 268 00:10:35,379 --> 00:10:36,753 First come, first maglingkod para sa na. 269 00:10:36,753 --> 00:10:39,380 Kung hindi mo makuha sa linggong ito gagawin namin ang mga pinaka-tuwing Biyernes 270 00:10:39,380 --> 00:10:40,400 sa panahon ng termino. 271 00:10:40,400 --> 00:10:41,830 >> OK, at ngayon ng isang salita tungkol sa pagmamarka. 272 00:10:41,830 --> 00:10:44,690 Lalo na bilang namin ipasok ang problemang itakda ang isa, na kung saan ay sa labas na ito linggo, 273 00:10:44,690 --> 00:10:46,670 at itakda ang problema ng dalawa at pagkatapos noon. 274 00:10:46,670 --> 00:10:51,680 Paano namin pumunta tungkol sa pag-evaluate P sets at pagsusuri ng kalidad nito? 275 00:10:51,680 --> 00:10:55,560 Kaya, ito ay apat axes na ginagamit namin sa CS50, at na ang mga ito ang mga apat dito. 276 00:10:55,560 --> 00:10:59,200 >> Saklaw, kung saan kinukuha sa isang numerong batayan lamang kung magkano ng P set 277 00:10:59,200 --> 00:10:59,860 hindi pagharap sa isang bagay sa iyo. 278 00:10:59,860 --> 00:11:02,890 Halos Ito ay tumutugma sa pagsisikap, at ito ay ang aming paraan ng pagkuha ng 279 00:11:02,890 --> 00:11:05,190 ay subukan mo ang kalahati ng P naka-set, ang lahat ng mga P set. 280 00:11:05,190 --> 00:11:08,860 Ito ay isang madaling isa upang makakuha ng perpektong marka sa kung gagawin mo, sa katunayan, 281 00:11:08,860 --> 00:11:11,020 subukan ang bawat aspeto ng P set. 282 00:11:11,020 --> 00:11:12,010 Kaya, panatilihin na sa isip. 283 00:11:12,010 --> 00:11:13,420 >> Kawastuhan ay eksakto na. 284 00:11:13,420 --> 00:11:17,760 Ba ang iyong code sa trabaho bilang ang mga detalye at kung paanong ang staffs 'sample na solusyon 285 00:11:17,760 --> 00:11:19,730 Iminumungkahi na ang iyong code dapat, sa katunayan, gumana. 286 00:11:19,730 --> 00:11:23,260 Suriin 50, kung hindi mo pa ito natutugunan gayon pa man, ay nasa P magtakda ng isa detalye 287 00:11:23,260 --> 00:11:25,060 at magpo pangkalahatan bigyan ka ng oo / hindi sagot 288 00:11:25,060 --> 00:11:26,518 bilang kung tama ang iyong code. 289 00:11:26,518 --> 00:11:30,680 Hindi bababa sa ngayon bilang kami ay pagpunta upang suriin mo ito batay sa mga pagsusuri 290 00:11:30,680 --> 00:11:32,430 na aming pinatatakbo sa loob ng programang iyon. 291 00:11:32,430 --> 00:11:33,850 >> Design ay mas subjective. 292 00:11:33,850 --> 00:11:35,994 Ito ay kung paano mahusay na nakasulat ang iyong code. 293 00:11:35,994 --> 00:11:38,410 At ito ay isang bagay na makakakuha ka ng mas mahusay sa paglipas ng panahon, 294 00:11:38,410 --> 00:11:41,201 at ito ay isang bagay na bibigyan namin ng magbigay ng higit pang husay feedback on. 295 00:11:41,201 --> 00:11:43,350 At sa pamamagitan ng disenyo maaari ko ibig sabihin matagal bago ka 296 00:11:43,350 --> 00:11:47,650 maaaring matukso sa ilang mga P naka-set na gawin ang isang bagay loopingly, 297 00:11:47,650 --> 00:11:51,590 ngunit upang magkaroon siguro tatlo, o apat, o limang nested unahan loop o nested habang 298 00:11:51,590 --> 00:11:52,090 loop. 299 00:11:52,090 --> 00:11:54,130 Iyon ay karaniwang dapat simulan na gumawa ka sumukot 300 00:11:54,130 --> 00:11:56,070 at magiging pangkalahatan itinuturing na masamang disenyo. 301 00:11:56,070 --> 00:11:59,490 At makikita mo simulan na makita sa klase at sa labas ng klase magandang paraan ng paggawa ng mga bagay-bagay, 302 00:11:59,490 --> 00:12:02,920 masamang paraan ng paggawa ng mga bagay na ito ay maaaring maging tama ang lahat, ngunit hindi 303 00:12:02,920 --> 00:12:04,304 kinakailangang mahusay na dinisenyo. 304 00:12:04,304 --> 00:12:05,220 Tulad ng pagsusulat ng sanaysay. 305 00:12:05,220 --> 00:12:08,100 Maaari mong ma-ilagay ang mga salita sa isang mo page na Balarila tama, 306 00:12:08,100 --> 00:12:10,016 ngunit ang mga sanaysay o mga thesis ang mga ito sa ay lamang 307 00:12:10,016 --> 00:12:11,810 ganap na walang pagkakaugnay-ugnay o unpersuasive. 308 00:12:11,810 --> 00:12:15,930 At upang ang mga ito ay maaaring maging analog sa nakasulat mundo ng masama o magandang disenyo. 309 00:12:15,930 --> 00:12:18,490 >> At style, masyadong, ay medyo subjective. 310 00:12:18,490 --> 00:12:20,060 Ngunit hindi bababa sa inaasahan namin pare-pareho. 311 00:12:20,060 --> 00:12:21,480 Ito ay kung paano pretty ay ang iyong code. 312 00:12:21,480 --> 00:12:22,840 Sigurado mabuti indent bagay? 313 00:12:22,840 --> 00:12:26,600 Sigurado rin pinangalanan ang iyong mga variable / Sigurado lahat ng iyong mga panaklong at kulot braces 314 00:12:26,600 --> 00:12:27,920 nakahanay bilang sila ay dapat? 315 00:12:27,920 --> 00:12:31,490 Kami ay may isang estilo ng gabay CS50 bilang ang hanay ng problema ay ituro sa iyo sa. 316 00:12:31,490 --> 00:12:33,730 Ang mga mas kumportable ay Tinatanggap na ligaw na hayop mula sa na 317 00:12:33,730 --> 00:12:35,771 kaya hangga't ikaw ay self pare-pareho. 318 00:12:35,771 --> 00:12:38,020 At ito, masyadong, ay isang aralin ipapakita namin mapalakas sa section. 319 00:12:38,020 --> 00:12:40,990 Kaya, kung ang lahat ng mga ito ay isang maliit na mabilis, mapagtanto ang set P at mga seksyon 320 00:12:40,990 --> 00:12:42,900 ay mapupunta sa mas malalim na bago ang haba. 321 00:12:42,900 --> 00:12:45,490 >> Ngunit sa pangkalahatan mayroon kami napakakaunting mga bucket para sa CS50. 322 00:12:45,490 --> 00:12:48,170 Kalidad ay sa pangkalahatan sa isang scale ng isa sa tatlong, o isa sa limang. 323 00:12:48,170 --> 00:12:50,836 Humihingi kami ng literally-- at hindi ko masabi sapat na ito sa unang linggo. 324 00:12:50,836 --> 00:12:51,582 Tatlong ay mabuti. 325 00:12:51,582 --> 00:12:54,290 Kaya, kahit na, oo, tatlong out ng limang normal, mathematically, 326 00:12:54,290 --> 00:12:57,240 ay maaaring maging isang 60 porsiyento o tulad ng isang D minus. 327 00:12:57,240 --> 00:12:58,840 Tatlong ay, sa katunayan, ang mahusay. 328 00:12:58,840 --> 00:13:01,050 At, sa katunayan, inaasahan nating karamihan ng mga estudyante sa klase 329 00:13:01,050 --> 00:13:04,280 upang magsimula ang termino sa paligid twos, at threes, at nakadapa. 330 00:13:04,280 --> 00:13:05,510 Marahil hindi kaya maraming fives. 331 00:13:05,510 --> 00:13:06,661 Hindi masyadong maraming mga bago. 332 00:13:06,661 --> 00:13:08,910 Ngunit sa pangkalahatan upang magsimula sa na sweet spot sa curve 333 00:13:08,910 --> 00:13:11,694 upang ang bilang ng oras ay, may tunay na mga kuwarto para sa, 334 00:13:11,694 --> 00:13:13,360 at mga pagkakataon para sa itaas na pag-unlad. 335 00:13:13,360 --> 00:13:15,810 Kaya, mangyaring huwag Tutumbas tatlong na may 60%. 336 00:13:15,810 --> 00:13:17,410 Ito ay mas mahirap unawain kaysa. 337 00:13:17,410 --> 00:13:20,160 Ang formula na kung saan namin makalkula marka ay tinimbang ang mga sumusunod. 338 00:13:20,160 --> 00:13:21,610 Kawastuhan ay nagkakahalaga ang pinaka. 339 00:13:21,610 --> 00:13:23,010 Design ay nagkakahalaga ng isang maliit na mas mababa. 340 00:13:23,010 --> 00:13:24,490 Style ay nagkakahalaga ng isang maliit na mas mababa. 341 00:13:24,490 --> 00:13:26,950 At ito ay karaniwang kinukuha ang halaga ng oras 342 00:13:26,950 --> 00:13:29,800 na napupunta sa pagkuha ng bawat ng mga axes lamang karapatan. 343 00:13:29,800 --> 00:13:31,810 Style ay napakadaling, dapat maging sobrang mabilis, 344 00:13:31,810 --> 00:13:33,657 ngunit ito ay isang madaling ugali upang makakuha ng tamad tungkol sa. 345 00:13:33,657 --> 00:13:35,490 Kawastuhan ay maaaring tumagal ikaw ay halos lahat ng oras. 346 00:13:35,490 --> 00:13:38,990 Habol ang ilang mga bug lakas kumuha ng dagdag na oras o higit pa, 347 00:13:38,990 --> 00:13:41,737 at sa gayon, ang pagmamarka huli kinukuha iyon. 348 00:13:41,737 --> 00:13:43,070 At ito, ngayon ay isang mas malubhang salita. 349 00:13:43,070 --> 00:13:45,240 Dahil CS50 ay ang pagkakaiba, para sa mas mahusay 350 00:13:45,240 --> 00:13:47,440 o mas masahol pa, ng pagiging marahil mas mahusay na pamilyar 351 00:13:47,440 --> 00:13:50,065 sa mga isyu ng pang-akademikong katapatan kaysa sa karamihan ng anumang iba pang mga kurso. 352 00:13:50,065 --> 00:13:53,720 At sa katunayan, ito ay sa aking kaalaman na magpadala kami ng mas maraming mga mag-aaral, sa kasamaang palad, 353 00:13:53,720 --> 00:13:56,690 para sa mga layunin ng pagdidisiplina bawat taon bilang isang resulta. Kaya, 354 00:13:56,690 --> 00:13:59,040 sa interes ng buong pagsisiwalat, saglit na makipag-usap hayaan 355 00:13:59,040 --> 00:14:02,820 tungkol sa kung ano ang napupunta sa sa CS50, at kung ano ang iyong maaaring gawin, at kung ano ang maaari mong alintanahin. 356 00:14:02,820 --> 00:14:05,530 >> Kaya, dito mula noong 2007, kapag Minana ko sa mga kurso, 357 00:14:05,530 --> 00:14:07,870 ay ang bilang ng mga kaso Board Ad. 358 00:14:07,870 --> 00:14:10,690 Board Ad ay disciplinary Harvard ni katawan, o ngayon ang karangalan Counsel, 359 00:14:10,690 --> 00:14:13,790 na kung saan ang kaso ay isinangguni kapag mga mag-aaral gawin ang isang bagay na ang mga kurso ni 360 00:14:13,790 --> 00:14:15,470 Isinasaalang-alang ng syllabus walang katwiran. 361 00:14:15,470 --> 00:14:17,220 Walang tunay na pattern dito, nais kong sabihin. 362 00:14:17,220 --> 00:14:19,530 Ito ay nagbabago sa paglipas ng taon ngunit sa pangkalahatan 363 00:14:19,530 --> 00:14:22,262 ito ay ang bilang ng mga mga kaso na tinutukoy. 364 00:14:22,262 --> 00:14:23,970 Ang bilang ng mga mag-aaral na kasangkot? 365 00:14:23,970 --> 00:14:25,290 Ito masyadong nag-iiba. 366 00:14:25,290 --> 00:14:27,930 Karaniwan, ang mga nakaraang taon para sa Halimbawa, 29 mag-aaral sa Harvard 367 00:14:27,930 --> 00:14:29,740 ay Ad sumakay, kaya na magsalita. 368 00:14:29,740 --> 00:14:32,670 29 sa mga ito ay kasalukuyang mag-aaral, dalawa sa kanila bago mag-aaral, 369 00:14:32,670 --> 00:14:35,610 sino ay nakikipagtulungan sa ilang mga suwail paraan. 370 00:14:35,610 --> 00:14:38,400 At pagkatapos ay sa mga tuntunin ng porsyento, ito ay karaniwang tungkol sa 3% 371 00:14:38,400 --> 00:14:41,360 ng klase na iyon, sa kasamaang palad, gumagawa ng mga ganitong uri ng mga desisyon. 372 00:14:41,360 --> 00:14:44,470 >> Kaya, noong nakaraang taon, ito ay 3.5% ng mag-aaral katawan CS50 373 00:14:44,470 --> 00:14:46,820 na Ad sumakay, kaya na magsalita. 374 00:14:46,820 --> 00:14:48,490 >> Kaya, ano ang ibig sabihin ng lahat ng ito? 375 00:14:48,490 --> 00:14:49,660 At ano ang gagawin namin talagang gawin? 376 00:14:49,660 --> 00:14:52,930 >> Kaya, para sa buong pagsisiwalat, namin walang pasubali, bilang mga siyentipiko computer, 377 00:14:52,930 --> 00:14:57,620 may mga kasangkapan software sa aming pagtatapon at ito ay tunay madali para sa amin, sa pagkamakatarungan, 378 00:14:57,620 --> 00:15:00,980 kaklase na isa na hindi tumatawid ang mga linyang ito sa cross ihambing 379 00:15:00,980 --> 00:15:04,570 bawat pagsumite sa taong ito laban sa bawat submission para sa nakalipas na walong taon. 380 00:15:04,570 --> 00:15:05,445 Ginagawa ito sa Software. 381 00:15:05,445 --> 00:15:07,440 At sa huli ito ay mata ng tao na magdesisyon 382 00:15:07,440 --> 00:15:11,410 kung o hindi na mag-refer ng ilang mga mahalaga para sa karagdagang pagpapasiya, 383 00:15:11,410 --> 00:15:12,737 ngunit software ay tumutulong sa tiyak. 384 00:15:12,737 --> 00:15:15,820 At ito, lantaran, ang dahilan kung bakit na sa tingin ko kami ay may tulad malaking bilang sa CS50. 385 00:15:15,820 --> 00:15:18,540 Hindi ito dahil CS50 mag-aaral o CS mag-aaral pa 386 00:15:18,540 --> 00:15:20,840 sa pangkalahatan ay anumang mas mababa matapat kaysa sa iba pang mga mag-aaral, 387 00:15:20,840 --> 00:15:22,340 ito lamang ay mayroon kaming ang mga kasangkapan at mga pamamaraan na 388 00:15:22,340 --> 00:15:24,095 na kung saan upang kunin ang unang pass. 389 00:15:24,095 --> 00:15:25,960 >> Subalit hindi namin panatilihin ang isang mata sa lahat ng mga bagay 390 00:15:25,960 --> 00:15:30,340 pati na rin, muli, sa mga interes ng Kinikilala ang mga trabaho na ang pagiging ilagay 391 00:15:30,340 --> 00:15:32,397 sa pamamagitan ng isang sobrang karamihan ng mga klase. 392 00:15:32,397 --> 00:15:34,230 At patakaran ng kurso sa academic honesty, 393 00:15:34,230 --> 00:15:37,021 kahit na ito ay isang grupo ng mga talata matagal na may isang bungkos ng mga bullet 394 00:15:37,021 --> 00:15:40,490 na sana ay lubos na nababasa, ito tunay ay pasingawan sa makatwirang. 395 00:15:40,490 --> 00:15:44,000 At ang pinakamahusay na patakaran ng hinlalaki na Nag-aalok kami ng hanggang sa loob ng syllabus 396 00:15:44,000 --> 00:15:46,020 ay ito, ang kakanyahan ng lahat ng gawain na iyong 397 00:15:46,020 --> 00:15:47,850 isumite sa kursong ito ay dapat na ang iyong sarili. 398 00:15:47,850 --> 00:15:51,510 At sa katunayan, sa halos lahat ng mga kaso inirekomenda para sa aksiyong pandisiplina 399 00:15:51,510 --> 00:15:55,640 ito ay dahil sa ilang isa late na mag-aaral gabi ay karaniwang naka-kanyang code 400 00:15:55,640 --> 00:15:58,130 paglipas ng kagyat na isang kaklase, na pagkatapos ay pinagtibay ito 401 00:15:58,130 --> 00:16:00,840 sa kabuuan nito o makabuluhang hinggil doon. 402 00:16:00,840 --> 00:16:02,680 >> Ngunit talagang, ito ay OK. 403 00:16:02,680 --> 00:16:04,684 At sa katunayan, sa opisina na oras, ang mga piraso ng papel 404 00:16:04,684 --> 00:16:07,850 na iyong nai-kamay kung ikaw ay dumating sa pamamagitan ng opisina oras na hinihikayat ng mas maraming huling linggo. 405 00:16:07,850 --> 00:16:09,710 Ikaw ay ganap na tinatanggap at hinihimok 406 00:16:09,710 --> 00:16:12,340 upang talakayin ang mga hanay ng problema sa mga kaklase. 407 00:16:12,340 --> 00:16:14,461 Upang tulungan ang bawat isa kapag Nagkakamali. 408 00:16:14,461 --> 00:16:17,710 Ngunit sa pangkalahatan ang mga patakaran ng hinlalaki ay dapat mangyayari ito, "kapag ikaw ay humihingi ng tulong, 409 00:16:17,710 --> 00:16:20,412 Maaari mong ipakita ang iyong code sa iba, ngunit hindi mo maaaring tingnan ang sa kanila. " 410 00:16:20,412 --> 00:16:22,620 Kaya, sa ibang salita, kung hindi ako nahihirapan sa ilang P set 411 00:16:22,620 --> 00:16:25,290 at ako upo doon sa kainan hall, o sa mga library, 412 00:16:25,290 --> 00:16:28,470 o sa silid-aralan sinusubukan mong mahanap ang ilang mga kasalanan, 413 00:16:28,470 --> 00:16:30,340 Ako tiyak na ipakita ang aking code sa aking screen 414 00:16:30,340 --> 00:16:32,590 sa taong katabi sa akin, tiyak na mga tauhan ng, 415 00:16:32,590 --> 00:16:33,600 kundi pati na rin isang kaklase. 416 00:16:33,600 --> 00:16:36,580 Ngunit kung ang mga solusyon na ang aking mga kamag-aaral ay nag-aalok ay, oh, 417 00:16:36,580 --> 00:16:39,200 dito lamang kumuha ng isang pagtingin sa kung ano Ginawa ko, na tumatawid ang linya. 418 00:16:39,200 --> 00:16:43,120 >> At gusto ko maglakas-loob sabihin na sa pangkalahatan isang makatwirang bagay para sa karamihan ng mga tao 419 00:16:43,120 --> 00:16:45,030 na tunay madaling makita ang mga linya ng. 420 00:16:45,030 --> 00:16:47,195 At kaya, tingnan ang syllabus para sa karagdagang detalye. 421 00:16:47,195 --> 00:16:49,070 At ngayon ay isa sa mga mas kontrobersyal na aspeto 422 00:16:49,070 --> 00:16:52,529 ng CS50 syllabus na naisip ko na ako nakikipag-usap sa sa pagtatapos dito 423 00:16:52,529 --> 00:16:53,820 ay ang tinatawag na sugnay ikinalulungkot. 424 00:16:53,820 --> 00:16:55,340 Kaya, narito ang lahat ng fine print. 425 00:16:55,340 --> 00:16:58,090 Ngunit sa pangkalahatan ng nakita natin sa nakaraang 8 plus taon 426 00:16:58,090 --> 00:17:01,510 na, sa katunayan, halos lahat ng CS50 mga kaso ng pang-akademikong panlilinlang 427 00:17:01,510 --> 00:17:04,390 ay ang resulta ng mga lamang mahihirap paggawa ng humatinggabi desisyon. 428 00:17:04,390 --> 00:17:07,144 Ang mga resulta ng stress, ang resulta kakulangan ng pagkain, kawalan ng tulog, 429 00:17:07,144 --> 00:17:09,560 masyadong maraming mga hanay P, masyadong maraming deadlines, masyadong maraming mga commitment. 430 00:17:09,560 --> 00:17:13,520 Stress gusali up sa isang 02:00, 03:00 AM, 4:00 AM, may deadline looming. 431 00:17:13,520 --> 00:17:17,020 Karamihan sa mga mag-aaral sa mga kasong may ginawa lamang masamang mga desisyon 432 00:17:17,020 --> 00:17:20,619 upang sila ay tunay mabuti ikinalulungkot ang susunod na umaga kung hindi minuto mamaya, 433 00:17:20,619 --> 00:17:25,490 ngunit hanggang sa huling taon walang release balbula na dati ang mga mag-aaral 434 00:17:25,490 --> 00:17:29,140 talaga bukas hanggang sa tunay na address ang problema sa ulo nang walang takot ng pagiging 435 00:17:29,140 --> 00:17:30,850 booted mula sa kolehiyo kabuuan. 436 00:17:30,850 --> 00:17:33,260 >> At, sa katunayan, ipinakilala namin ito panghihinayang sugnay nakaraang taon, 437 00:17:33,260 --> 00:17:35,970 na nagsasabi na kung sa loob ng 72 oras, tatlong araw, 438 00:17:35,970 --> 00:17:37,970 ng pagtawid ng ilang linya inireseta sa syllabus 439 00:17:37,970 --> 00:17:41,178 dumating ka inaabangan ang panahon na ang isa sa mga kurso ulo at kami ay may isang chat tungkol dito. 440 00:17:41,178 --> 00:17:43,720 May mga pa rin ang ilang kinalabasan, salungat sa kung ano ang 441 00:17:43,720 --> 00:17:44,990 naiulat na ang laban. 442 00:17:44,990 --> 00:17:49,190 Mayroon pa rin ang ilang mga resulta na ay actionable sa pamamagitan ng mga kurso, 443 00:17:49,190 --> 00:17:51,611 pangkalahatan zeroing isang P set o pagkuha ng ilang iba pang mga pagkilos, 444 00:17:51,611 --> 00:17:53,610 ngunit kami ay, sa katunayan, hawakan ito sa ating sarili at hindi 445 00:17:53,610 --> 00:17:58,460 sumangguni ito sa mas mataas na ay ang kinalabasan ito ay maaaring maging mas malubha. 446 00:17:58,460 --> 00:18:01,810 At, sa katunayan, upang ibahagi ang kung ano ang nangyari noong nakaraang taon, sa walong taon, at ngayon 447 00:18:01,810 --> 00:18:04,950 siyam na taon, ng pagtuturo sa kursong ito at pagkatapos ng hinalang pagbabago sa iba't-ibang mga knobs, 448 00:18:04,950 --> 00:18:07,866 paggawa sa iba't-ibang mga dials sa nakaraang sa ilang mga taon sa pang-akademikong katapatan, 449 00:18:07,866 --> 00:18:11,920 at nakikita ng bawat ang data sa walang maliwanag epekto, kahit ng mga talumpati na tulad nito, 450 00:18:11,920 --> 00:18:15,490 ito ay kamay down ang pinakamahusay na bagay Nagpakilala kami pedagogically 451 00:18:15,490 --> 00:18:18,090 sa walong taon sa kahabaan mga linyang ito sa CS50. 452 00:18:18,090 --> 00:18:21,010 >> 19 mga mag-aaral ay dumating pasulong sa ilalim ng sugnay na ito noong nakaraang taon. 453 00:18:21,010 --> 00:18:23,389 Kinuha namin walang aksyon para pitong ng mga mag-aaral, 454 00:18:23,389 --> 00:18:25,430 pagtukoy na sila ay hindi kinakailangan na nag-aalala. 455 00:18:25,430 --> 00:18:27,304 Sila ay hindi, sa katunayan, tumawid ng linya, ngunit ito 456 00:18:27,304 --> 00:18:28,960 ay isang mahusay na chat na magkaroon gayunman. 457 00:18:28,960 --> 00:18:31,190 Zeroed kami ng 11 ng ang mga marka na isinumite. 458 00:18:31,190 --> 00:18:33,840 At sa isang kaso tinanong namin ang isang ang mag-aaral na gawin ang isang hanay ng problema. 459 00:18:33,840 --> 00:18:36,370 Ngunit mas nakakahimok, sa totoo lang, may mga 19 mga chat, 460 00:18:36,370 --> 00:18:39,020 na kung saan ay paraan ng higit sa ko inaasahan na magkaroon ng, ang bawat isa sa kanila 461 00:18:39,020 --> 00:18:41,370 10 minuto upang marahil isang oras ang haba, dinala din 462 00:18:41,370 --> 00:18:44,920 sa liwanag ng isang bilang ng mga isyu tungkol sa familial isyu, mga isyu na kaibigan, 463 00:18:44,920 --> 00:18:46,940 mga isyu sa kalusugan ng kaisipan na pansin namin noon, 464 00:18:46,940 --> 00:18:50,200 sa mga mag-aaral ng grasya, resident dean, o mga kaibigan, o anumang iba pang numero 465 00:18:50,200 --> 00:18:51,450 ng mga mapagkukunan ng suporta. 466 00:18:51,450 --> 00:18:54,454 Kaya na ito ay sa pamamagitan ng malayo ang isa mga pinakamahusay na gumagamit ng aming mga oras 467 00:18:54,454 --> 00:18:55,870 at isa sa mga pinakamahusay na mga pamamagitan. 468 00:18:55,870 --> 00:18:58,870 >> Sa na sinabi, ito ay walang input sa rate ng detection 469 00:18:58,870 --> 00:19:00,909 ng akademikong panlilinlang sa mas pangkalahatang. 470 00:19:00,909 --> 00:19:02,950 At ako maglakas-loob sabihin, ito subset ng mga mag-aaral noong nakaraang taon 471 00:19:02,950 --> 00:19:06,350 ay isang demographic na tayo dati hindi kinilala bago 472 00:19:06,350 --> 00:19:08,140 at hindi kailanman ay konektado sa dati. 473 00:19:08,140 --> 00:19:10,020 At ito, ang mga ito ay kahanga-hangang mga kuwento ng tagumpay 474 00:19:10,020 --> 00:19:13,390 kahit na sila ay dinadala sa liwanag sa mas mababa sa optimal na pangyayari. 475 00:19:13,390 --> 00:19:15,640 Kaya, panatilihin ito sa isip bilang na gagawin mo, marahil, 476 00:19:15,640 --> 00:19:17,390 ang ilang mga mahihirap na desisyon iyong sarili humatinggabi, 477 00:19:17,390 --> 00:19:20,151 na humingi ng tulong kaya mahaba bilang ng mag-aaral sa na sitwasyon 478 00:19:20,151 --> 00:19:23,400 umamin at dumating pasulong upang maaari naming mayroon na uri ng chat at pakikitungo sa mga ito 479 00:19:23,400 --> 00:19:27,310 sa isang paraan na ang mga pang-edukasyon, at pagkatapos ay maaari naming ilagay ito sa likod sa amin sa susunod na araw. 480 00:19:27,310 --> 00:19:30,335 >> Kaya nang walang karagdagang ado, kumuha ng mga gilid off ng pag-uusap na ito, 481 00:19:30,335 --> 00:19:35,080 ang dahilan ng puppies ay up ay lamang sa break ang yelo para sa isang sandali. 482 00:19:35,080 --> 00:19:39,560 At sa kasamaang palad, ang mga ito ang lahat ng pagtulog, ngunit ano ang dapat na mangyari dito 483 00:19:39,560 --> 00:19:41,760 ay lahat ng tao ay dapat sa kasindak at uri ng mag-relaks 484 00:19:41,760 --> 00:19:43,910 matapos na masyadong mabigat pag-uusap. 485 00:19:43,910 --> 00:19:46,930 Ngunit sa malas kong ilagay ang mga tuta sa pagtulog. 486 00:19:46,930 --> 00:19:50,070 Ngunit kung ikaw ay pupunta sa CS50 slash website puppies, 487 00:19:50,070 --> 00:19:51,610 maaari mong panoorin ang mga ito sa buong araw. 488 00:19:51,610 --> 00:19:55,280 Lalo na siguro 2:00, o 3:00, o 04:00 sa gabi 489 00:19:55,280 --> 00:19:57,480 upang makita ang isang maliit na stress relief doon. 490 00:19:57,480 --> 00:19:58,805 Kaya na slash puppies. 491 00:19:58,805 --> 00:20:01,700 492 00:20:01,700 --> 00:20:02,200 Lahat tama. 493 00:20:02,200 --> 00:20:03,020 Ay hindi na masaya? 494 00:20:03,020 --> 00:20:04,200 SIGE. 495 00:20:04,200 --> 00:20:07,140 Kaya, bumalik sa ilang mga computer science, kung maaari kong. 496 00:20:07,140 --> 00:20:10,600 >> Kaya, isipin ang na huling beses na namin na nagsimula naghahanap hindi lamang sa main, kung saan 497 00:20:10,600 --> 00:20:13,930 ay ang default na function, ang kapag green flag click katumbas, 498 00:20:13,930 --> 00:20:16,999 ngunit din namin na nagsimula sa madaling sabi pagsulat ng ilan sa aming sariling mga pag-andar. 499 00:20:16,999 --> 00:20:20,040 At kaya sa ngayon wala sa mga pag-andar naging lalo na malaki o parang karne. 500 00:20:20,040 --> 00:20:24,570 Makakakuha ka sa mga mas malaki function marahil, P set 2, P set 3, 501 00:20:24,570 --> 00:20:26,410 tiyak P set ng 4 at pasulong. 502 00:20:26,410 --> 00:20:29,340 Sa ngayon ang karamihan ng iyong mga programa, kung hindi lahat ng mga ito, tiyak na para sa P 503 00:20:29,340 --> 00:20:31,550 set 1 ay maaaring tapos na ganap sa main. 504 00:20:31,550 --> 00:20:33,810 Kung ang iyong programa ay lamang limang linya, 10 na linya, 505 00:20:33,810 --> 00:20:37,070 kahit na 20 na linya ang haba, ganap na ganap makatwirang upang isulat ito 506 00:20:37,070 --> 00:20:40,930 lahat sa main at hindi over makapagpalubha iyong code, ngunit kung anong ginagawa namin sa araw na ito 507 00:20:40,930 --> 00:20:44,360 at pasulong ay sinusubukan na rin ipakilala ang ilang mga mahusay na disenyo ng pamamaraan 508 00:20:44,360 --> 00:20:48,660 kaya na rin ang iyong code ay makakakuha ng mas kumplikado at bilang ng mga problema 509 00:20:48,660 --> 00:20:51,690 gusto mong malutas makakuha ng mas mahirap at mas kawili-wiling mayroon ka, uri ng, 510 00:20:51,690 --> 00:20:55,850 mga kasangkapan sa iyong toolbox na kung saan mag-disenyo ng mahusay na solusyon sa mga iyon. 511 00:20:55,850 --> 00:21:01,210 >> Kaya, sabihin kumuha ng isang mabilis na pagtingin sa likod sa ang program na ito mula sa aking mga nakaraang linggo, kung saan 512 00:21:01,210 --> 00:21:06,550 ay function zero dot C. At mapapansin na, medyo simple, 513 00:21:06,550 --> 00:21:10,310 mukhang ito na may dalawang pag-andar, main at pangalan print. 514 00:21:10,310 --> 00:21:13,160 At iisip bumalik o di kaya reverse engineering ngayon, 515 00:21:13,160 --> 00:21:16,880 kung ano ang nag-udyok sa pagpapasok isang function sa 28 na tinatawag na line, 516 00:21:16,880 --> 00:21:18,180 Pangalan print? 517 00:21:18,180 --> 00:21:21,745 O kung ano ang isang halimbawa ng in mga tuntunin ng isang prinsipyo o takeaway, 518 00:21:21,745 --> 00:21:22,605 kung gagawin mo. 519 00:21:22,605 --> 00:21:26,560 520 00:21:26,560 --> 00:21:27,300 Ang ilang mga murmurs. 521 00:21:27,300 --> 00:21:28,830 Ano? 522 00:21:28,830 --> 00:21:32,210 >> Oo kaya functional agnas ay uri ng magarbong paraan ng sinasabi, 523 00:21:32,210 --> 00:21:34,690 mabulok iyong programa sa mga bahagi nito 524 00:21:34,690 --> 00:21:37,530 at pagkatapos ay gamitin ang mga bahagi upang mag-ipon ng isang buo. 525 00:21:37,530 --> 00:21:39,620 Kaya, na masyadong ay uri lamang ng isang katiting na, 526 00:21:39,620 --> 00:21:42,050 ngunit ito ay marahil kahit na isang mas mahusay na halimbawa ng isang bagay 527 00:21:42,050 --> 00:21:43,081 lamang na tinatawag na abstraction. 528 00:21:43,081 --> 00:21:43,580 Right? 529 00:21:43,580 --> 00:21:46,950 Abstraction ay magiging isa ng paulit-ulit na tema sa CS50 530 00:21:46,950 --> 00:21:49,085 at din computer science higit pa sa pangkalahatan dahil ito ay 531 00:21:49,085 --> 00:21:53,060 isang pamamaraan na kung saan maaari mong malutas problema nang mas mabisa dahil ikaw 532 00:21:53,060 --> 00:21:56,807 maaaring isulat solusyon pa intuitively at sa isang paraan na kaliskis 533 00:21:56,807 --> 00:21:58,390 at ito ay maliwanag sa pamamagitan ng ibang mga tao. 534 00:21:58,390 --> 00:21:59,860 Ano ang gagawin ko ibig sabihin ng? 535 00:21:59,860 --> 00:22:04,340 >> Kaya, arguably ito ay mas nababasa upang tumingin sa isang program na tulad nito, 536 00:22:04,340 --> 00:22:05,990 sobrang maikling bagaman ito ay. 537 00:22:05,990 --> 00:22:10,050 Kapag nakita mo sa 22 na linya na mayroong isang function na tinatawag, pangalan print. 538 00:22:10,050 --> 00:22:12,620 Iyon ang pangalan ng nag-iisa sinasabi kung ano ang ginagawa nito. 539 00:22:12,620 --> 00:22:15,780 Lumilitaw na tumatagal ng pag-andar na input pagitan panaklong nito, 540 00:22:15,780 --> 00:22:18,600 at tila ay isang bagay, siguro mga kopya ng mga pangalan. 541 00:22:18,600 --> 00:22:20,880 At ito, kahit na namin ang walang pasubali ay maaaring magkaroon ng 542 00:22:20,880 --> 00:22:25,280 tapos na kung ano ang ginawa namin sa isang linggo na ang nakakaraan, na kung saan ay tumagal lamang ito aktwal na linya ng code, 543 00:22:25,280 --> 00:22:28,710 makakuha ng alisan ng mga ito, at makakuha ng alisan ng ito ang lahat ng sama-sama, 544 00:22:28,710 --> 00:22:31,436 kami uri ng lumilipad ang isip sa malayo ang paniwala ng pag-print ng isang pangalan. 545 00:22:31,436 --> 00:22:33,060 Wala akong pakialam kung gumagamit ka ng print def. 546 00:22:33,060 --> 00:22:35,601 Wala akong pakialam kung mayroon kang isang porsiyento S at isang backslash N. Ang mga ito 547 00:22:35,601 --> 00:22:37,270 mga hindi kapani-paniwalang arcane detalye. 548 00:22:37,270 --> 00:22:40,090 Ano akong pakialam tungkol sa bilang programmer ay pag-print ng isang pangalan. 549 00:22:40,090 --> 00:22:43,414 At kaya, kung ano ang mas mahusay na paraan upang gawin iyon sa pamamagitan ng pagtawag ng isang function, pangalan print? 550 00:22:43,414 --> 00:22:46,330 At ito, na noon ay isa sa mga motivations para sa paggawa ng isang bagay na katulad nito. 551 00:22:46,330 --> 00:22:50,370 Ang pagsasagawa ng mas nababasa ang code, mas magagamit muli, at din sa sarili naglalarawan. 552 00:22:50,370 --> 00:22:52,120 Ngayon, sabihin tumagal ng isang pagtingin sa isa pang halimbawa, 553 00:22:52,120 --> 00:22:56,220 na kung saan ay pag-andar ng isa, kung saan nagkaroon kami sa paglipas dito. 554 00:22:56,220 --> 00:23:00,367 >> Kaya, ang isang ito ay marahil na mas nakakahimok dahil, sa kasong ito, 555 00:23:00,367 --> 00:23:01,700 Hindi ko nais upang makakuha ng isang int. 556 00:23:01,700 --> 00:23:03,320 Gusto kong makakuha ng isang positibong int. 557 00:23:03,320 --> 00:23:06,470 At ito ay lumiliko out upang makakuha ng isang positibong int kailangan mong gawin ng grupo ng mga matrabahong gawain. 558 00:23:06,470 --> 00:23:06,969 Right? 559 00:23:06,969 --> 00:23:09,600 Ito ay hindi isang simpleng isang linya tumawag tulad ng pangalan print ay, 560 00:23:09,600 --> 00:23:11,480 na kung saan ay tinatanggap na mas mababa nakakahimok. 561 00:23:11,480 --> 00:23:16,000 >> Upang makakuha ng isang positibong int, logically-- hayaan mo akong mag-scroll pabalik pababa upang itago ito. 562 00:23:16,000 --> 00:23:18,887 Ano ang kailangan mong gawin? 563 00:23:18,887 --> 00:23:20,720 Tulad ng lahat ng mga tool na namin Mayroon sa kasalukuyan ay 564 00:23:20,720 --> 00:23:24,440 mga bagay tulad ng naka-print na def mula sa Standard Library at din mula sa CS50 library 565 00:23:24,440 --> 00:23:26,990 mayroon kaming Kumuha int, at Kumuha magpalutang, Kumuha ng Long Long, Kumuha String, 566 00:23:26,990 --> 00:23:29,260 ngunit ang isa lamang, Germane, sa ngayon ay Kumuha ng int. 567 00:23:29,260 --> 00:23:32,970 Kaya, kung ang tanging kasangkapan mayroon kang sa iyong tool box ay Kumuha int, 568 00:23:32,970 --> 00:23:35,505 paano namin pumunta tungkol sa pagpapatupad ito upang makakuha ng positibong int? 569 00:23:35,505 --> 00:23:35,929 >> Madla: Lumikha ng isang mag-log at suriin sa kung ang input na ibinigay nila 570 00:23:35,929 --> 00:23:36,762 ay positibo o hindi. 571 00:23:36,762 --> 00:23:39,390 572 00:23:39,390 --> 00:23:40,640 >> Tagapagsalita 1: Perfect. 573 00:23:40,640 --> 00:23:41,200 Mismong. 574 00:23:41,200 --> 00:23:43,950 Ang isa pang tool na namin sa aming toolbox mula sa isa o dalawang linggo ang nakaraan 575 00:23:43,950 --> 00:23:45,419 ay lamang ang looping tayuan. 576 00:23:45,419 --> 00:23:48,210 At ito, oo, kung gagamitin namin ang isang habang loop, o isang gawin habang loop, o isang unahan 577 00:23:48,210 --> 00:23:50,850 loop maaari naming malamang na makakuha ng layo sa anuman sa mga nasa ilang mga form. 578 00:23:50,850 --> 00:23:55,140 Maaari naming ipatupad ang paniwala ng get positive int sa pamamagitan lamang ng paggamit Kunin int, 579 00:23:55,140 --> 00:23:57,830 at pagkatapos lamang panatilihin ang pagtawag na ito muli at panatilihin pestering ang user 580 00:23:57,830 --> 00:24:00,320 hanggang siya talaga ay nagbibigay sa amin kung ano ang gusto namin. 581 00:24:00,320 --> 00:24:03,260 >> At kaya ngayon, ito abstraction ng proseso 582 00:24:03,260 --> 00:24:05,680 ng pagkuha ng isang positibong int sa isang function na tinatawag na 583 00:24:05,680 --> 00:24:08,930 Kumuha ng Positibong int ay isang kaunti pa nakakahimok dahil tingnan ito. 584 00:24:08,930 --> 00:24:10,990 Ang mga ito ay tulad ng 10 plus linya ng code na 585 00:24:10,990 --> 00:24:15,090 ay kasangkot sa pagkuha ng isang positibong int, at hindi ko talagang pakialam kung paano mo gawin ito. 586 00:24:15,090 --> 00:24:17,850 Lahat ng pag-aalaga ko ay na kayo maaaring gawin ito, at kaya ko 587 00:24:17,850 --> 00:24:21,660 nakatago ang lahat ng mga detalye sa likod ng isang function na tinatawag na Kumuha ng Positibong int na, 588 00:24:21,660 --> 00:24:23,430 sa katunayan, ay may ito gawin habang loop. 589 00:24:23,430 --> 00:24:27,660 >> At makita noong nakaraang linggo para sa syntax doon, ngunit sabi lamang ito N, 590 00:24:27,660 --> 00:24:29,800 at ito mga print out ang pagtuturo sa user. 591 00:24:29,800 --> 00:24:33,330 Ito tawag Kumuha int at pagkatapos ito tseke ang kundisyong ito muli, at muli, 592 00:24:33,330 --> 00:24:35,230 at muli hanggang sa nakikipagtulungan sa gumagamit. 593 00:24:35,230 --> 00:24:38,000 >> Kaya ngayon, ang ilang katinuan tseke. 594 00:24:38,000 --> 00:24:40,370 Para sa mga marahil pamilyar kasama ang ilang mga programming, 595 00:24:40,370 --> 00:24:46,410 bakit ipinahayag ay N, bakit ako lilikha N labas ng gawin habang loop? 596 00:24:46,410 --> 00:24:50,370 Bakit ito ay on line 29 at hindi on tulad ng 33, halimbawa. 597 00:24:50,370 --> 00:24:53,529 >> Madla: Dahil kapag ikaw Ipinahahayag ito sa labas, ito uri 598 00:24:53,529 --> 00:24:56,688 ng higit pa, ang mas malaking scope-- 599 00:24:56,688 --> 00:24:58,146 >> Tagapagsalita 1: Good. 600 00:24:58,146 --> 00:24:59,604 >> Madla: --at kung ipinapahayag mo ito sa loob ng loop, [hindi marinig] 601 00:24:59,604 --> 00:25:00,979 dahil ito ay hindi alam ang tungkol dito. 602 00:25:00,979 --> 00:25:02,819 603 00:25:02,819 --> 00:25:03,610 Tagapagsalita 1: Eksakto. 604 00:25:03,610 --> 00:25:06,330 Kung ang maaari kong simplify-- ito ay isang isyu ng saklaw. 605 00:25:06,330 --> 00:25:11,530 At scope ay tumutukoy sa konteksto na kung saan umiiral na ang isang variable o ay kapaki-pakinabang. 606 00:25:11,530 --> 00:25:15,050 At ang ganda ng patakaran ng hinlalaki dito ay na karaniwang kapag ikaw idedeklara o lumikha 607 00:25:15,050 --> 00:25:21,642 isang variable na maaari mo lamang gamitin ito sa loob ng pinakamalapit na pagyakap curly braces. 608 00:25:21,642 --> 00:25:22,600 Kaya kung ano ang ibig sabihin nito? 609 00:25:22,600 --> 00:25:26,551 Kung ako, sa halip, i-undo ang mga ito at pumunta sa isang bagay na pakiramdam ng isang maliit na mas simple. 610 00:25:26,551 --> 00:25:27,050 Right? 611 00:25:27,050 --> 00:25:29,360 >> Line 32 lamang hitsura cleaner sa akin ngayon. 612 00:25:29,360 --> 00:25:31,500 Ako ginagawa ang parehong mga bagay-bagay sa beses at pagkatapos ay magtatalaga 613 00:25:31,500 --> 00:25:33,070 ang kanang kamay sa kaliwang kamay. 614 00:25:33,070 --> 00:25:35,180 Ang problema ngayon batay sa na kahulugan ng saklaw 615 00:25:35,180 --> 00:25:41,130 ay na N ay maaaring gamitin sa mga linya 31 at 32 sa loob ng loop na ito, 616 00:25:41,130 --> 00:25:45,100 ngunit kung saan sa pamamagitan ng kahulugan na maaari itong hindi gagamitin? 617 00:25:45,100 --> 00:25:45,660 Sa linya na kung ano? 618 00:25:45,660 --> 00:25:46,160 Oo. 619 00:25:46,160 --> 00:25:47,490 >> Madla: 35. 620 00:25:47,490 --> 00:25:49,180 >> Tagapagsalita 1: 35. 621 00:25:49,180 --> 00:25:50,480 Talagang hindi 35. 622 00:25:50,480 --> 00:25:52,349 At din kung saan ang ibang tao? 623 00:25:52,349 --> 00:25:52,890 Madla: 34. 624 00:25:52,890 --> 00:25:55,040 Tagapagsalita 1: Kahit na 34 ay may problema dahil sa ito ay 625 00:25:55,040 --> 00:25:56,450 sa labas ng curly braces. 626 00:25:56,450 --> 00:25:58,200 At kaya sa katunayan, sabihin makita kung ano ang mangyayari. 627 00:25:58,200 --> 00:25:58,700 Right? 628 00:25:58,700 --> 00:26:00,722 Ito ay maaaring mukhang isang maliit na intuitive o maaaring hindi, 629 00:26:00,722 --> 00:26:02,680 ngunit sabihin makita kung ano ang compiler ay may sabihin kapag 630 00:26:02,680 --> 00:26:04,730 pumunta kami sa direktoryo ng pinagmulan ngayon. 631 00:26:04,730 --> 00:26:08,950 Gumawa ng pag-andar ng isa. 632 00:26:08,950 --> 00:26:11,231 Oh, ang aking diyos. 633 00:26:11,231 --> 00:26:12,980 Well, sa wakas ako tapos na, sa pamamagitan ng paraan. 634 00:26:12,980 --> 00:26:14,030 Lahat tama. 635 00:26:14,030 --> 00:26:15,510 At ano ang pinag-uusapan dito? 636 00:26:15,510 --> 00:26:17,430 Very arcane na tingnan. 637 00:26:17,430 --> 00:26:19,570 Ngunit narito ang kung ano ang aking typed-- gumawa ng pag-andar ng isa. 638 00:26:19,570 --> 00:26:21,640 Narito kung ano ang gumawa ng sapilitan, na kung saan ay tunay na 639 00:26:21,640 --> 00:26:23,705 gamit ang compiler clang sa ilan sa mga flags 640 00:26:23,705 --> 00:26:25,080 na namin makita muli bago ang haba. 641 00:26:25,080 --> 00:26:26,829 At muli, palaging tingnan sa unang error, 642 00:26:26,829 --> 00:26:30,540 dahil ito ay maaaring magkaroon lamang ng isang cascading walang ibig sabihin na epekto sa iba pang mga linya. 643 00:26:30,540 --> 00:26:34,410 >> Kaya kung ano ang ibig sabihin nito ay ang mga Ang problema ay sa function 1.c. 644 00:26:34,410 --> 00:26:36,890 Ito ay sa 32 linya. 645 00:26:36,890 --> 00:26:39,712 At ito ay sa haligi, o character, 13. 646 00:26:39,712 --> 00:26:42,670 Kaya kapag ang iyong text editor na maaari makatulong sa iyo na makilala kung saan ang isyu ay. 647 00:26:42,670 --> 00:26:47,079 Kaya kung mag-scroll ko up, kung ano ang 32 na linya? 648 00:26:47,079 --> 00:26:49,120 Iyan ay katunayan ng isang ito na na naka-highlight 649 00:26:49,120 --> 00:26:50,607 karapatan here-- hindi nagamit na variable n. 650 00:26:50,607 --> 00:26:51,440 Ngunit ito ay hindi nagamit. 651 00:26:51,440 --> 00:26:52,320 Gumagamit ako ng mga ito. 652 00:26:52,320 --> 00:26:56,110 Ngunit ang mga compiler ng nalilito, dahil mayroon na lamang ito sa loob ng mga saklaw na ito. 653 00:26:56,110 --> 00:26:57,727 At kaya hindi ko itong gamitin dito. 654 00:26:57,727 --> 00:26:58,560 Hindi ko maaaring gamitin ito dito. 655 00:26:58,560 --> 00:27:01,320 At ang mga compiler, samakatuwid, hindi kahit na pag-aalaga ay na sinusubukan ko. 656 00:27:01,320 --> 00:27:03,940 Ito ay anyong hindi nagamit sa loob ng kanyang aktwal na saklaw. 657 00:27:03,940 --> 00:27:08,854 >> Kaya maaari naming palawakin ang saklaw sa pamamagitan ng paggawa eksakto kung ano ang namin na nagsimula with-- int n. 658 00:27:08,854 --> 00:27:11,020 At kahit na ito ay hindi tingnan bilang eleganteng, marahil, 659 00:27:11,020 --> 00:27:15,110 at kami ay pagkuha ng dagdag na linya dito, ngayon ito ay sa saklaw sa lahat ng dako. 660 00:27:15,110 --> 00:27:15,970 Kaya sabihin subukan muli. 661 00:27:15,970 --> 00:27:19,040 Kaya gumawa ng pag-andar ng isa. 662 00:27:19,040 --> 00:27:19,610 Nice. 663 00:27:19,610 --> 00:27:23,370 At ngayon, kung ako kung nagpatakbo ako ng function isa, bigyan ito ng mga negatibong 10 ipaalam, 664 00:27:23,370 --> 00:27:27,170 negatibong 1, 0, 1, at ito nga ay gumagana. 665 00:27:27,170 --> 00:27:28,610 >> Kaya may isa pang solusyon dito. 666 00:27:28,610 --> 00:27:29,280 Alam mo ba? 667 00:27:29,280 --> 00:27:31,230 Paano kung ako tunay am pakikipagbuno sa mga ito? 668 00:27:31,230 --> 00:27:33,140 Hindi ko alam kung saan ang mga n ay dapat na pumunta. 669 00:27:33,140 --> 00:27:33,723 Alam mo ba? 670 00:27:33,723 --> 00:27:39,220 Tingin lang ako sa pagpunta sa ilagay ito sa lahat ng paraan sa tuktok ng aking mga file dito. 671 00:27:39,220 --> 00:27:42,835 Ano ang gusto ito, sa palagay mo? 672 00:27:42,835 --> 00:27:43,335 Oo? 673 00:27:43,335 --> 00:27:44,251 >> Madla: [hindi marinig]. 674 00:27:44,251 --> 00:27:47,964 675 00:27:47,964 --> 00:27:48,630 Tagapagsalita 1: Oo. 676 00:27:48,630 --> 00:27:50,560 Kaya ko na ginawa ito global, kaya na magsalita. 677 00:27:50,560 --> 00:27:54,430 Kung mayroon kang isang variable na nasa labas ang lahat ng iyong mga pag-andar na ito ay pinahihintulutan, 678 00:27:54,430 --> 00:27:58,780 at dapat itala ang code, at n ay ngayon ay naa-access hindi lamang sa get 679 00:27:58,780 --> 00:28:02,490 positive int, kundi pati na rin sa main-- saan ay isang maliit na nakakaligalig dahil mayroong 680 00:28:02,490 --> 00:28:04,864 isa nang n sa main, para sa karagdagang sa na sa isang moment-- lamang 681 00:28:04,864 --> 00:28:06,530 ngunit ito ay itinuturing na masamang disenyo. 682 00:28:06,530 --> 00:28:06,910 Lahat tama. 683 00:28:06,910 --> 00:28:08,570 Kung ikaw ay may sa resort sa isang bagay tulad ng, oh, kukunin ko 684 00:28:08,570 --> 00:28:10,125 ilagay lang ito up dito dahil Tila upang itala ang code 685 00:28:10,125 --> 00:28:12,180 sa pangkalahatan ay hindi ang pinakamahusay na pagsasanay. 686 00:28:12,180 --> 00:28:14,590 Sa halip na nais mong pumili narrowest posibleng saklaw 687 00:28:14,590 --> 00:28:18,720 para sa iyong mga variable, kung saan ay nangangahulugan pagpunta sa aming mga paunang disenyo, na 688 00:28:18,720 --> 00:28:19,920 ay karapatan dito. 689 00:28:19,920 --> 00:28:24,400 >> Ngayon bilang isang bukod, kung ikaw ay walang isang identically-pinangalanan variable dito, 690 00:28:24,400 --> 00:28:27,750 ang paraan c hawakan this-- bagaman ito ay hindi mangyayari masyadong often-- 691 00:28:27,750 --> 00:28:30,150 ay na ito ay pa rin okay naman sa dito. 692 00:28:30,150 --> 00:28:35,000 Ngunit ito kahulugan ng n sa linya 22 ay anino ng isang global. 693 00:28:35,000 --> 00:28:38,190 Kaya ang isang ito ay gagana sa loob main, at ang isa global 694 00:28:38,190 --> 00:28:41,670 ay tunay na mag-aplay kapag ikaw ay nasa makakuha ng positibong int Ngunit higit pa sa na 695 00:28:41,670 --> 00:28:43,890 sa ibang panahon, ngunit lamang para sa mga curious. 696 00:28:43,890 --> 00:28:45,970 >> Kaya sa maikling salita, maayos namin ito dito. 697 00:28:45,970 --> 00:28:49,220 Ngayon sabihin manunudyo bukod sa dalawang iba pang mga piraso ipaalam bago namin tumingin sa isang huling linya ng code 698 00:28:49,220 --> 00:28:50,170 sa programang ito. 699 00:28:50,170 --> 00:28:52,170 Kumuha positive int. 700 00:28:52,170 --> 00:28:54,450 Sa kaliwang gilid ng kanyang salita ay ang salita int. 701 00:28:54,450 --> 00:28:56,860 Ano ang ibig na maging tanda sa palagay mo? 702 00:28:56,860 --> 00:28:58,900 Kaya ngayon namin halos nakita ko na walang bisa. 703 00:28:58,900 --> 00:28:59,400 Oo? 704 00:28:59,400 --> 00:29:01,810 >> Madla: Ito ay ang mga uri ng variable na ikaw ay nagtatanong tungkol. 705 00:29:01,810 --> 00:29:04,550 >> Tagapagsalita 1: Oo Ito ay ang mga uri ng, ipaalam sa akin hindi sinasabi ng variable, ngunit ang uri ng halaga 706 00:29:04,550 --> 00:29:05,990 na ako ng hinihingi para sa. 707 00:29:05,990 --> 00:29:08,070 At sa katunayan, iyon ang intuitive dito, sana. 708 00:29:08,070 --> 00:29:08,200 Right? 709 00:29:08,200 --> 00:29:10,250 Kung nais mong makakuha ng isang positive int, ano ito sa iyo 710 00:29:10,250 --> 00:29:12,920 gusto ang function-- tulad ng ating boluntaryo mula noong nakaraang linggo 711 00:29:12,920 --> 00:29:15,720 sa kamay mo sa likod ng isang piraso ng papel na may isang int sa mga ito? 712 00:29:15,720 --> 00:29:19,190 At kaya ko na tinukoy namin na ang tinatawag na bumalik uri ng mga function na ito 713 00:29:19,190 --> 00:29:20,450 ay makakuha ng positibong int. 714 00:29:20,450 --> 00:29:22,990 Kung hindi namin ginawa nais ito sa bumalik kahit ano, sabihin mo na walang bisa. 715 00:29:22,990 --> 00:29:25,270 Kung gusto mo ito upang bumalik isang string, sabihin mo string. 716 00:29:25,270 --> 00:29:27,310 Kung gusto mo ito upang bumalik isang float, sabihin mo float. 717 00:29:27,310 --> 00:29:30,440 Ngunit ang isa lamang na sumasaklaw dito lohikal na, dahil gumagamit ako ng get int, 718 00:29:30,440 --> 00:29:34,130 kahit ako paghihigpit sa mga ito sa positibong halaga, ay upang bumalik sa isang int. 719 00:29:34,130 --> 00:29:38,380 >> Kaya pasalungat, kung ano ang ibig sabihin ng na mayroong isang walang bisa sa panaklong? 720 00:29:38,380 --> 00:29:40,130 Ano ang gagawin ng mga panaklong tukuyin pangkalahatan? 721 00:29:40,130 --> 00:29:40,588 Oo? 722 00:29:40,588 --> 00:29:42,880 >> Madla: Ito ay nangangahulugan na ang pag-andar ng hindi aktwal na pagkuha nito. 723 00:29:42,880 --> 00:29:44,650 >> Tagapagsalita 1: Ito ay nangangahulugan na ang pag-andar ng hindi aktwal na pagkuha ng kung ano? 724 00:29:44,650 --> 00:29:45,430 >> Madla: Isang input. 725 00:29:45,430 --> 00:29:46,763 >> Tagapagsalita 1: Isang input, kahit ano pa man. 726 00:29:46,763 --> 00:29:49,870 Kaya sa katunayan, kung parenthesis dito mo tukuyin walang bisa, 727 00:29:49,870 --> 00:29:51,650 na nangangahulugan lamang na hindi ko gusto ang anumang input. 728 00:29:51,650 --> 00:29:53,269 Kukunin ko harapin ang mga problema sa aking sarili. 729 00:29:53,269 --> 00:29:55,810 At sa katunayan, hindi mo na kailangang sabihin makakuha ng positibong int kahit ano. 730 00:29:55,810 --> 00:29:59,630 Ikaw lamang sabihin, makakuha ng positibong int, at na function na ay umalis at gawin ang bagay. 731 00:29:59,630 --> 00:30:02,970 >> Ngunit mayroong nangyaring isang maliit na nanlilinlang na ko nai-play dito ang buong panahon 732 00:30:02,970 --> 00:30:04,970 tiyakin compiles ang code na ito. 733 00:30:04,970 --> 00:30:09,620 Pansinin na int makakuha ng positibong int void-- ay sa 27 linya. 734 00:30:09,620 --> 00:30:14,530 Ngunit para sa ilang tila kakaiba dahilan ito ay din up para sa 16 linya. 735 00:30:14,530 --> 00:30:18,530 At para lamang sa mabuting uulitin ko ito kaya ito ay ganap na magkapareho. 736 00:30:18,530 --> 00:30:21,640 At ako sinabi prototype na may isang maliit na isang-linya komento. 737 00:30:21,640 --> 00:30:28,850 Ano ang mangyayari kung tanggalin ko na, At ngayon muling palabas ng pelikula gumawa ng function 1, ipasok. 738 00:30:28,850 --> 00:30:29,350 Oops. 739 00:30:29,350 --> 00:30:32,527 740 00:30:32,527 --> 00:30:33,110 Sandali lang. 741 00:30:33,110 --> 00:30:34,764 Nasaan ang aking tab? 742 00:30:34,764 --> 00:30:35,263 Huh? 743 00:30:35,263 --> 00:30:37,969 744 00:30:37,969 --> 00:30:39,620 Tumayo ka sa tabi. 745 00:30:39,620 --> 00:30:41,570 Gumawa ng function 1. 746 00:30:41,570 --> 00:30:42,150 Mayroon kaming pumunta. 747 00:30:42,150 --> 00:30:42,310 SIGE. 748 00:30:42,310 --> 00:30:43,400 Ay hindi ito na-save ng maayos. 749 00:30:43,400 --> 00:30:45,220 Kaya, sa tingin ko ay may isang maliit na bug dito kung saan hindi ako 750 00:30:45,220 --> 00:30:46,636 nakikita ang mga pangalan ng tab sa sandaling ito. 751 00:30:46,636 --> 00:30:47,940 Kaya kung ano ang nangyayari dito? 752 00:30:47,940 --> 00:30:52,210 Implicit deklarasyon ng function makakuha ng positibong int ay hindi wasto sa C99. 753 00:30:52,210 --> 00:30:53,940 Kaya nakalilito muli. 754 00:30:53,940 --> 00:30:55,200 Kaya kung ano ito nagpapahiwatig ng? 755 00:30:55,200 --> 00:30:57,287 Well, ito lumiliko out na C ay medyo tanga. 756 00:30:57,287 --> 00:30:59,912 Well, ito ay ang programming wika, o sa halip ang tagatala ay. 757 00:30:59,912 --> 00:31:02,940 Lamang ang nakakaalam nito kung ano ang mayroon kang itinuro ito, at ito lamang 758 00:31:02,940 --> 00:31:05,640 pagpunta sa malaman ng isang bagay kung itinuro mo ito bago. 759 00:31:05,640 --> 00:31:07,960 Sa ibang salita, sa main sa sandaling ito, hindi ako 760 00:31:07,960 --> 00:31:10,900 sinusubukan mong tawagan ang isang function tinatawag na makakuha ng positibong int. 761 00:31:10,900 --> 00:31:14,120 Ngunit ang mga compiler ay hindi pagpunta sa paunawa na makakuha ng positibong int 762 00:31:14,120 --> 00:31:16,500 umiiral hanggang 26 linya. 763 00:31:16,500 --> 00:31:21,360 At kaya kung ano ang ginagawa ng compiler ay lamang error sa lalong madaling ito ay makakakuha ng sa line 17, 764 00:31:21,360 --> 00:31:23,700 sinasabi implicit deklarasyon ng makakuha ng positibong int, na 765 00:31:23,700 --> 00:31:27,740 ay lamang ng isang magarbong paraan ng sinasabi, hindi ako alam kung ano ang makukuha pa positive int ay. 766 00:31:27,740 --> 00:31:31,240 >> Iba pang mga wika tulad ng Java at Python at Ruby ay maaaring tumingin sa kinabukasan. 767 00:31:31,240 --> 00:31:32,240 C ay hindi. 768 00:31:32,240 --> 00:31:35,110 At upang ang mga paraan namin ayusin ito ay isa sa dalawang paraan. 769 00:31:35,110 --> 00:31:40,160 Alinman sa isa, kung ang problema ay kumuha na positive int ay hindi pa nakikita dati, 770 00:31:40,160 --> 00:31:42,150 well, hayaan mo ilipat sa akin lamang ito sa itaas. 771 00:31:42,150 --> 00:31:43,650 Iyon ay ayusin ang problemang ito. 772 00:31:43,650 --> 00:31:46,790 Ngunit sa pangkalahatan, ito ay itinuturing na mas mahusay na pamamaraan 773 00:31:46,790 --> 00:31:50,220 upang ilagay ang iyong pangunahing pag-andar sa pinakadulo top kaya na ang isang tao sa pagbabasa ng iyong code 774 00:31:50,220 --> 00:31:52,710 nakakaalam kung ano ang ginagawa ng programa, dahil main ay hindi inilibing lahat 775 00:31:52,710 --> 00:31:53,960 ang paraan sa ibaba o sa gitna. 776 00:31:53,960 --> 00:31:55,130 Ito ay sa pinakatuktok. 777 00:31:55,130 --> 00:31:56,410 Kaya na ay hindi pakiramdam ideal. 778 00:31:56,410 --> 00:31:58,326 At maaari kang makakuha ng tunay sa mga sitwasyon kung saan 779 00:31:58,326 --> 00:32:00,820 kung ang isang function ng mga tawag isa pang, na tawag sa isa pa, 780 00:32:00,820 --> 00:32:04,630 maaari kang makakuha sa isang isyu kung saan hindi maaaring pumunta sa itaas ng iba pang, lohikal. 781 00:32:04,630 --> 00:32:05,920 Ito lamang ay hindi maaari. 782 00:32:05,920 --> 00:32:09,290 >> At upang ang mga paraan upang gumana paligid na ito ay upang kumuha lamang 783 00:32:09,290 --> 00:32:13,200 signature ang function, kaya na speak-- ang unang linya kung saan ito ay declared-- 784 00:32:13,200 --> 00:32:16,850 at makatarungan kopyahin, i-paste ito sa top, ngunit hindi na may kulot braces-- 785 00:32:16,850 --> 00:32:17,980 sa pamamagitan lamang ng isang tuldok-kuwit. 786 00:32:17,980 --> 00:32:20,840 Ito ay tulad ng isang maliit na pahiwatig ng kung ano ang darating. 787 00:32:20,840 --> 00:32:26,630 At sa katunayan, ang lahat ng mga oras na ito kapag kami ay tumingin sa mga bagay tulad ng standard io.h 788 00:32:26,630 --> 00:32:33,040 at cs50.h, parehas, sa mga tuldok h file ay may iba pang mga modelo. 789 00:32:33,040 --> 00:32:35,250 At kami na makita na bago ang haba. 790 00:32:35,250 --> 00:32:39,340 >> Kaya sa maikling salita, kapag ikaw ay isang programa sa isang file na may maramihang mga function 791 00:32:39,340 --> 00:32:42,300 bukod sa main, halos ikaw laging nais na ipahayag ang mga ito 792 00:32:42,300 --> 00:32:45,360 sa pamamagitan lamang ng paraan ng kanilang unang linya, na sinusundan ng isang tuldok-kuwit, 793 00:32:45,360 --> 00:32:48,410 sa pinakatuktok ng file. 794 00:32:48,410 --> 00:32:50,460 Iyon ay isang pulutong ng sabay-sabay. 795 00:32:50,460 --> 00:32:53,130 May tanong? 796 00:32:53,130 --> 00:32:53,920 May tanong? 797 00:32:53,920 --> 00:32:54,530 Lahat tama. 798 00:32:54,530 --> 00:32:59,760 >> Kaya sabihin ilipat sa pagkatapos sa isang bagay tulad ng pag-ubo. 799 00:32:59,760 --> 00:33:00,260 Oh. 800 00:33:00,260 --> 00:33:00,570 Paano angkop. 801 00:33:00,570 --> 00:33:01,220 Lahat tama. 802 00:33:01,220 --> 00:33:02,260 Ubo. 803 00:33:02,260 --> 00:33:05,080 Kaya dito ay isang c pagpapatupad ng isang programa 804 00:33:05,080 --> 00:33:07,560 ginawa namin ang iba pang mga araw sa Scratch na tunay lamang lamang 805 00:33:07,560 --> 00:33:08,691 sabi ubo, ubo, ubo. 806 00:33:08,691 --> 00:33:09,190 Lahat tama. 807 00:33:09,190 --> 00:33:11,136 At sinabi ng isang tao sa ilang araw na nakalipas na may 808 00:33:11,136 --> 00:33:12,760 isang paraan ng paglilinis ang code na ito up na. 809 00:33:12,760 --> 00:33:12,880 Lahat tama? 810 00:33:12,880 --> 00:33:15,440 Sa sandaling ikaw ay pagkopya at dikit marahil masamang disenyo. 811 00:33:15,440 --> 00:33:18,725 Hindi bababa sa sandaling makuha namin sa apat o limang o 20-ubo, pakiramdam masamang kaugalian. 812 00:33:18,725 --> 00:33:19,850 Kami ay lamang panatilihin ang mga kopya, pag-paste. 813 00:33:19,850 --> 00:33:22,213 Ano ang malinaw na solusyon sa paglilinis ito up program? 814 00:33:22,213 --> 00:33:23,120 >> Madla: Loop. 815 00:33:23,120 --> 00:33:23,350 >> Tagapagsalita 1: Oo. 816 00:33:23,350 --> 00:33:24,070 Kaya gumamit ng isang loop. 817 00:33:24,070 --> 00:33:27,697 At maaari naming gamitin ang isang for-loop, ang isang habang loop, ang anumang bilang ng mga pamamaraang. 818 00:33:27,697 --> 00:33:29,780 At sa katunayan, iyon ang ginagawa namin sa bersyon ng isa dito. 819 00:33:29,780 --> 00:33:32,250 Sa halip na muling pagsusulat ko ito sa bersyon ng isa sa cough.c 820 00:33:32,250 --> 00:33:35,170 na ubo lang sa loob ng isang for-loop. 821 00:33:35,170 --> 00:33:38,240 Lahat ng karapatan, ngunit mayroong isang pagkakataon na ngayon sa uri ng start 822 00:33:38,240 --> 00:33:41,630 sa disenyo na ito ng kaunti pa tulad ang aralin namin tinuturuan ng isang sandali ang nakalipas, 823 00:33:41,630 --> 00:33:46,190 na kung saan ay this-- ipagpalagay na nais ko upang lumikha ng isang function na tinatawag na pag-ubo, 824 00:33:46,190 --> 00:33:49,730 isaalang-alang para sa isang sandali lamang ipaalam kung ano ang pagpunta sa hitsura. 825 00:33:49,730 --> 00:33:51,900 Kaya kung gusto ko ng damit sa pag-ubo, kailangan ko lang 826 00:33:51,900 --> 00:33:53,800 gamitin print f sa loob ng function. 827 00:33:53,800 --> 00:33:55,030 At sa katunayan ako. 828 00:33:55,030 --> 00:33:56,990 At sa katunayan, sa lahat ng ito oras, anumang oras na ikaw ay 829 00:33:56,990 --> 00:33:59,000 pag-print ng isang bagay na screen, isang programmer 830 00:33:59,000 --> 00:34:00,610 ay tumawag na isang side effect. 831 00:34:00,610 --> 00:34:02,990 Ito ay hindi ako handing bumalik ang isang tao ng isang halaga. 832 00:34:02,990 --> 00:34:06,170 Sa akin ito ay ang pagkuha ng ilang mga aksyon na maaaring maging biswal halata. 833 00:34:06,170 --> 00:34:10,672 Ngunit ang function na ito ubo, ay ibalik ito anumang bagay batay sa unang linya nito? 834 00:34:10,672 --> 00:34:12,880 Hindi, dahil sa uri ng kanyang pagbabalik ay walang bisa, na kung saan ay nangangahulugan lamang 835 00:34:12,880 --> 00:34:14,250 hindi ito handing sa akin ang anumang bagay sa likod. 836 00:34:14,250 --> 00:34:16,791 Ito ay maaaring maging paggawa ng isang bagay biswal, ngunit ito ay hindi ako handing 837 00:34:16,791 --> 00:34:18,639 likod ng isang piraso ng papel tulad ng nakaraang linggo. 838 00:34:18,639 --> 00:34:21,310 >> Kailangan ba ng anumang mga input? 839 00:34:21,310 --> 00:34:21,810 Hindi. 840 00:34:21,810 --> 00:34:23,134 At kaya ito ay walang bisa dito masyadong. 841 00:34:23,134 --> 00:34:25,600 Kaya ito ay masyadong ay uri ng over-engineering ang problemang ito. 842 00:34:25,600 --> 00:34:26,099 Right? 843 00:34:26,099 --> 00:34:28,820 Ginawa ko ang mga program pa complex, mas maraming mga linya ng code, 844 00:34:28,820 --> 00:34:31,889 Hindi ko pa ginawa ito sa anumang mas sa pagganap, ngunit ito 845 00:34:31,889 --> 00:34:34,210 ay magiging isang tuntong bato, marahil, para sa isang mas malawak na 846 00:34:34,210 --> 00:34:36,830 context na may higit pang mga kumplikadong code. 847 00:34:36,830 --> 00:34:38,150 Ngunit ano ang tungkol sa mga ito? 848 00:34:38,150 --> 00:34:42,050 Ano na lamang ako done-- glancing sa ito nang walang pagtingin sa comment 849 00:34:42,050 --> 00:34:46,076 sa pinakatuktok ng file-- kung anong mayroon Panimula ko tapos dito sa aking ubo 850 00:34:46,076 --> 00:34:47,409 pagpapatupad na naiiba? 851 00:34:47,409 --> 00:34:48,327 Oo, sa likod? 852 00:34:48,327 --> 00:34:51,384 >> Madla: Gawin ito sa gayon maaari mong Mayroon i-off ang isang character. 853 00:34:51,384 --> 00:34:52,050 Tagapagsalita 1: Oo. 854 00:34:52,050 --> 00:34:53,270 Kaya ito nararamdaman uri ng magaling. 855 00:34:53,270 --> 00:34:53,389 Right? 856 00:34:53,389 --> 00:34:56,600 Ito ay tulad ng pagdagdag ng isang tampok sa iyong program o ang iyong function, sa kasong ito. 857 00:34:56,600 --> 00:34:57,830 Nagbabalik pa rin ito ng wala. 858 00:34:57,830 --> 00:35:00,538 Maaaring magkaroon ng isang pangalawang epekto visual, dahil sa ito ay pagtawag print f. 859 00:35:00,538 --> 00:35:02,800 Ngunit ngayon ay may parametrized ko ang pag-andar, kung saan 860 00:35:02,800 --> 00:35:06,470 nangangahulugan ko na tinukoy kinuha input ng uri int at tawagan ito n, 861 00:35:06,470 --> 00:35:08,510 ngunit ako ay maaaring tumawag ito anumang bagay na gusto ko. 862 00:35:08,510 --> 00:35:11,550 Sa katunayan, maaaring ito lamang ay beses na maging mas malinaw. 863 00:35:11,550 --> 00:35:13,310 At pagkatapos ay ako maaaring baguhin lamang ito dito. 864 00:35:13,310 --> 00:35:16,450 Ngunit ang punto ay na ito ay kung paano ko lumikha ng isang function na tumatagal ng input. 865 00:35:16,450 --> 00:35:19,530 At kung ikaw pagpapabalik flipping sa pamamagitan ng marahil online sa isa 866 00:35:19,530 --> 00:35:23,000 ng walk-through, ang ika-apat at huling halimbawa ubo, 867 00:35:23,000 --> 00:35:27,150 mapapansin mo dito na pangkalahatan ko ang aking code further-- uri ng lumilipad ang isip 868 00:35:27,150 --> 00:35:27,690 ito ng karagdagang. 869 00:35:27,690 --> 00:35:31,390 Tulad ng pag-ubo at bumahin, ang pareho ay tungkol sa tulad ng sinasabi ng isang bagay o paggawa 870 00:35:31,390 --> 00:35:32,330 ilang uri ng tunog. 871 00:35:32,330 --> 00:35:34,725 I-save ang magiging kaukulang scratch block. 872 00:35:34,725 --> 00:35:37,350 At kaya kung ano ang aking ginawa sa bersyon na ito, kung saan namin sulyap lang sa, 873 00:35:37,350 --> 00:35:43,170 ay ubo ay tulad ng sinasabi, [ubo], ubo, at samantala, bumahin ay 874 00:35:43,170 --> 00:35:44,570 tulad ng sinasabi, [Achoo]. 875 00:35:44,570 --> 00:35:46,900 At kaya nagbigay pangkalahatan ko ang pagpapatupad ng mga 876 00:35:46,900 --> 00:35:48,970 sa pamamagitan ng ngayon pagpapatupad ito generic function, 877 00:35:48,970 --> 00:35:51,490 sabihin, kung saan ay kawili-wili para sa mga layunin ngayon 878 00:35:51,490 --> 00:35:54,300 lamang dahil ito pa rin hindi magkaroon ng isang uri ng return. 879 00:35:54,300 --> 00:35:56,398 Ngunit kung gaano karaming mga input ay may ito? 880 00:35:56,398 --> 00:35:56,981 Madla: Dalawang. 881 00:35:56,981 --> 00:35:57,430 Tagapagsalita 1: Dalawang. 882 00:35:57,430 --> 00:35:59,263 At kaya kung nais mong kumuha sa dalawang argumento, 883 00:35:59,263 --> 00:36:00,710 lamang ihiwalay ang mga ito gamit ang isang kuwit. 884 00:36:00,710 --> 00:36:03,110 At kung gusto mong pagkatapos ay tumawag na function, 885 00:36:03,110 --> 00:36:05,800 mapapansin mo na ikaw lang tumawag sabihin, quote, magpanipi, 886 00:36:05,800 --> 00:36:09,090 para sa unang argument, karaniwang n, para sa ikalawang argument. 887 00:36:09,090 --> 00:36:12,130 Kaya muli, kami na lang ngayon ang mga bloke ng gusali sa gayon ay maaari naming aktwal 888 00:36:12,130 --> 00:36:15,686 ipatupad ang ilan sa aming sariling mga pag-andar. 889 00:36:15,686 --> 00:36:16,570 Lahat tama. 890 00:36:16,570 --> 00:36:19,690 Anumang mga katanungan sa mga ito? 891 00:36:19,690 --> 00:36:22,400 >> Kaya ng Peel pabalik isang layer kung kaya ngayon hayaan. 892 00:36:22,400 --> 00:36:24,840 At ang mga layunin, sa huli, ay itakda ang problema sa susunod na linggo 893 00:36:24,840 --> 00:36:27,710 ay magiging sa cryptogrophy-- ang sining ng scrambling impormasyon. 894 00:36:27,710 --> 00:36:30,640 At partikular, ang mga impormasyon ay mayroon kang i-encrypt o mag-decrypt 895 00:36:30,640 --> 00:36:31,605 ay magiging text. 896 00:36:31,605 --> 00:36:33,980 At upang ang mga uri ng mga paanyaya ang tanong ngayon tulad na rin, 897 00:36:33,980 --> 00:36:38,480 kung ano ang nangyayari sa ilalim ng hood may teksto lampas ASCII mula sa linggo zero, 898 00:36:38,480 --> 00:36:40,730 at kung paano namin talaga simulan upang manipulahin ang mga ito? 899 00:36:40,730 --> 00:36:43,070 Kaya dito ay ang pangalan Zamyla ni. 900 00:36:43,070 --> 00:36:47,380 At sa text, upang inputted sa tulad ng mga get string function. 901 00:36:47,380 --> 00:36:52,540 At simula ngayon, kapag nakakita ka ng isang string tulad this-- Z-A-M-Y-L-A-- 902 00:36:52,540 --> 00:36:56,550 simulan ang iniisip ng mga ito na parang ang bawat sa mga character ay sa isang kahon ng kanyang 903 00:36:56,550 --> 00:36:57,050 mga sarili. 904 00:36:57,050 --> 00:36:59,460 At sa katunayan, sa isang linggo o kaya ay panahon, bawat isa sa mga kahon 905 00:36:59,460 --> 00:37:04,280 ay pagpunta sa kumakatawan tunay na partikular na isang bloke ng na memorya ng isang kagat ng memory. 906 00:37:04,280 --> 00:37:07,050 Kaya bawat isa sa mga titik, sa huli, ay kumakatawan sa 8 bits. 907 00:37:07,050 --> 00:37:10,560 At kami ay talagang makita kung ano ang nangyayari sa ilalim ng hood sa aking computer. 908 00:37:10,560 --> 00:37:13,440 >> Ngunit para hindi ito suffices upang tingnan lamang sa Zamyla 909 00:37:13,440 --> 00:37:17,520 sa pamamagitan ng lens, kung saan ang bawat isa sa mga sulat na ito ay sa kanyang sariling box. 910 00:37:17,520 --> 00:37:22,697 At mabuti sapat na sa C ng aming makakaya ma-access ang bawat isa sa mga kahon nang direkta. 911 00:37:22,697 --> 00:37:25,530 Kaya kung nais mong makakuha ng mga unang titik ng kanyang pangalan, napakadaling sa C. 912 00:37:25,530 --> 00:37:28,410 Kung nais mong makuha ang huling sulat, napakadaling pati na rin 913 00:37:28,410 --> 00:37:30,240 may isang piraso ng bagong syntax. 914 00:37:30,240 --> 00:37:36,250 >> Kaya ako pagpunta sa sige sa CS50 IDE at buksan ang string zero dot C. 915 00:37:36,250 --> 00:37:40,270 At sa ganitong halimbawa dito, may mga isang pares ng mga bagong bagay na nangyayari. 916 00:37:40,270 --> 00:37:44,360 Kaya una sa 19 na linya, na namin nakita ito before-- get string. 917 00:37:44,360 --> 00:37:49,840 Kaya lang bilang isang mabilis katinuan check, kung ang isang tao ay nag-aalok ng hanggang sa salita 918 00:37:49,840 --> 00:37:52,662 paliwanag ng isang karaniwang tao ng kung ano ang nangyayari sa 19 linya. 919 00:37:52,662 --> 00:37:55,370 Tulad isalin lamang ito sa English na ang isang roommate wala sa CS50 920 00:37:55,370 --> 00:37:56,416 maaaring maunawaan. 921 00:37:56,416 --> 00:37:56,916 Oo. 922 00:37:56,916 --> 00:37:59,749 >> Madla: Mayroon ang user input ng string at tindahan ito sa isang variable s. 923 00:37:59,749 --> 00:38:01,934 924 00:38:01,934 --> 00:38:02,600 Tagapagsalita 1: Good. 925 00:38:02,600 --> 00:38:05,579 Magkaroon ng mga user input ng string at mag-imbak ito sa isang variable s. 926 00:38:05,579 --> 00:38:06,120 Mabuti iyan. 927 00:38:06,120 --> 00:38:08,090 Kaya sa kanang-kamay side, ang tawag namin sa get string. 928 00:38:08,090 --> 00:38:10,340 Iyon ay nagbabalik ng isang halaga na hindi makakuha nakatakda 929 00:38:10,340 --> 00:38:14,230 mula sa kanang bahagi sa kaliwang side sa isang variable na tinatawag na s na 930 00:38:14,230 --> 00:38:15,950 dinisenyo upang tindahan ng isang string. 931 00:38:15,950 --> 00:38:16,800 Mismong. 932 00:38:16,800 --> 00:38:20,000 >> Kaya ngayon line 22, per ang puna sa 21 na linya, 933 00:38:20,000 --> 00:38:22,780 malinaw naman ang mga kopya na string isang character sa bawat linya. 934 00:38:22,780 --> 00:38:23,740 Pero paano? 935 00:38:23,740 --> 00:38:27,040 Kaya una sa lahat, namin initialize ko sa 0. 936 00:38:27,040 --> 00:38:31,061 At pagkatapos paano namin makuha sa sa dulo ng pangalan Zamyla ni? 937 00:38:31,061 --> 00:38:32,810 Well, sa dulo ng Pangalan Zamyla ni, maaari ko 938 00:38:32,810 --> 00:38:38,151 manu-mano-type ang mga huling character ng ang kanyang pangalan sa anumang paraan, o ang bilang ng mga ito. 939 00:38:38,151 --> 00:38:38,650 Right? 940 00:38:38,650 --> 00:38:43,500 Kung kami bumalik here-- Z-A-M-L-- Y-L-A-- kaya maaari kong i-type sa. 941 00:38:43,500 --> 00:38:47,340 Ano ang index ng Huling sulat Zamyla ni? 942 00:38:47,340 --> 00:38:52,517 Kung ito ang 0-- pagsasalita tulad ng isang programmer-- 0, 1, 2, 3, 4, 5, 943 00:38:52,517 --> 00:38:56,570 Heard-- ko kaya nga, ang huling sulat pangalan Zamyla ay ang pang-anim, 944 00:38:56,570 --> 00:38:58,890 ngunit kung bibilangin namin mula sa 0, ito ay pagpunta sa maging number 5. 945 00:38:58,890 --> 00:39:01,320 Kaya panatilihin na sa isip dito. 946 00:39:01,320 --> 00:39:04,929 >> Ito ay lumiliko out may isang function sa C tinatawag strlen, at bumalik sa araw 947 00:39:04,929 --> 00:39:06,720 at sa araw pa rin, isang pulutong ng mga programmers 948 00:39:06,720 --> 00:39:09,524 piliin upang i-sync ang mga pangalan para sa kanilang mga mga function na ang tunog tulad ng mga salita 949 00:39:09,524 --> 00:39:10,440 sila ay sinusubukan upang sabihin. 950 00:39:10,440 --> 00:39:12,590 Kaya strlen ay length string. 951 00:39:12,590 --> 00:39:18,168 At kaya kung ano ang gusto string haba ng S bumalik kapag Zamyla ay ang input? 952 00:39:18,168 --> 00:39:19,569 >> Madla: Five. 953 00:39:19,569 --> 00:39:22,090 >> Tagapagsalita 1: Z-A-M-Y-L. Six. 954 00:39:22,090 --> 00:39:22,590 Right? 955 00:39:22,590 --> 00:39:23,940 Ano ang haba ng pangalan Zamyla ni? 956 00:39:23,940 --> 00:39:24,440 Right? 957 00:39:24,440 --> 00:39:26,240 At lamang sa katotohanan, anim na mga titik. 958 00:39:26,240 --> 00:39:26,740 Right? 959 00:39:26,740 --> 00:39:28,940 At kaya kung ano ang ibig sabihin na para sa aming mga loop? 960 00:39:28,940 --> 00:39:32,130 Kami ay pagpunta sa pumunta mula sa 0 hanggang anim na 961 00:39:32,130 --> 00:39:33,650 ay pagpunta sa bigyan kami ng limang iteration. 962 00:39:33,650 --> 00:39:34,890 Ano ang gagawin namin sa bawat pag-ulit? 963 00:39:34,890 --> 00:39:36,870 Well, porsiyento C, ang isang tao nahulaan ng ibang mga araw, 964 00:39:36,870 --> 00:39:38,710 ay nangangahulugang isang placeholder para sa ano? 965 00:39:38,710 --> 00:39:39,335 >> Madla: pansamantalang trabaho. 966 00:39:39,335 --> 00:39:40,293 Tagapagsalita 1: isang pansamantalang trabaho lamang. 967 00:39:40,293 --> 00:39:42,877 Kaya ang isang solong character-- hindi maramihang mga character tulad ng isang string. 968 00:39:42,877 --> 00:39:45,251 At pagkatapos ay narito ang mga bagong linya na namin ang nakuha ko sa pag-print out. 969 00:39:45,251 --> 00:39:46,580 At pagkatapos ay narito ang mga bagong syntax. 970 00:39:46,580 --> 00:39:51,130 Kung nais mong i-print out-th i ang character sa string S, kaya na magsalita, 971 00:39:51,130 --> 00:39:54,060 maaari mo lamang sabihin ang pangalan ng string S, 972 00:39:54,060 --> 00:39:58,230 at pagkatapos ay buksan square bracket, at pagkatapos ay sarado square bracket, na may isang i 973 00:39:58,230 --> 00:39:58,780 ang gitna. 974 00:39:58,780 --> 00:40:01,430 At ito ay uri ng nice sa na ito uri ng hitsura tulad ng isang parisukat 975 00:40:01,430 --> 00:40:06,210 tulad lamang ang mga parisukat na kung saan Zamyla ni character na umiiral sa na larawan doon. 976 00:40:06,210 --> 00:40:09,970 >> Kaya kung ako aktwal na patakbuhin ito ngayon, sabihin makita kung ano ang mangyayari. 977 00:40:09,970 --> 00:40:15,190 Gumawa ng string 0 dot slash string 0, at pagkatapos ay ako 978 00:40:15,190 --> 00:40:16,720 pagpunta sa uri ng pangalan Zamyla ni. 979 00:40:16,720 --> 00:40:19,428 Walang prompt, dahil ako ay hindi gamitin print f, ngunit na fine. 980 00:40:19,428 --> 00:40:20,660 Lang alam ko kung ano ang gagawin. 981 00:40:20,660 --> 00:40:23,240 At sa katunayan, ang mga kopya out Pangalan Zamyla, isa sa bawat linya. 982 00:40:23,240 --> 00:40:25,760 >> Ngayon ay maaaring isang maliit na walang ingat ipaalam. 983 00:40:25,760 --> 00:40:28,461 Ipagpalagay na hindi ko alam kung tungkol strlen at i korte, 984 00:40:28,461 --> 00:40:31,460 lahat ng karapatan, walang sinuman ay pagpunta sa magkaroon ng isang pangalanan mas malaki kaysa tulad ng 50 mga character. 985 00:40:31,460 --> 00:40:36,360 Sabihin sige at mag-recompile ito at gawin uli ito, at pagkatapos i-type sa Zamyla 986 00:40:36,360 --> 00:40:37,160 muli. 987 00:40:37,160 --> 00:40:40,850 Logically, kung ano ang program pagpunta sa subukan na i-print? 988 00:40:40,850 --> 00:40:49,545 Z-A-M-Y-L-A pagkatapos ay tulad ng 45 hindi kilala bytes ng memorya. 989 00:40:49,545 --> 00:40:51,670 At sa katunayan, kami ay bumalik sa ideyang ito ng memory. 990 00:40:51,670 --> 00:40:54,180 Ngunit lohikal lamang, kung Pangalan Zamyla ay ito ang haba, 991 00:40:54,180 --> 00:40:56,450 bilang sa bawat larawan dito, kung ano ang iyong sinasabi namin 992 00:40:56,450 --> 00:40:59,810 ay patuloy na pag-print, panatilihin ang pag-print, panatilihin pag-print, panatilihin ang pag-print, panatilihin ang pag-print, 993 00:40:59,810 --> 00:41:03,781 lahat ng mga paraan sa ika-50 na character, na nakakaalam kung ano ang nangyayari sa mangyari. 994 00:41:03,781 --> 00:41:05,030 Kaya sabihin aktwal na tingnan. 995 00:41:05,030 --> 00:41:06,720 Ni-type sa Zamyla Hayaan. 996 00:41:06,720 --> 00:41:07,250 Kawili-wili. 997 00:41:07,250 --> 00:41:08,190 Kami ay nakuha masuwerteng. 998 00:41:08,190 --> 00:41:09,700 Lamang ng isang buong grupo ng mga white space. 999 00:41:09,700 --> 00:41:09,930 Oh. 1000 00:41:09,930 --> 00:41:11,120 May isang funky character. 1001 00:41:11,120 --> 00:41:14,577 Tila uri ng tulad ng isang kakaibang tanong markahan doon, pero may pangalan Zamyla ni. 1002 00:41:14,577 --> 00:41:15,660 Sabihin makakuha ng talagang walang ingat. 1003 00:41:15,660 --> 00:41:20,000 Paano ang tungkol sa i-print namin out 500 bloke sa hindi kilala? 1004 00:41:20,000 --> 00:41:24,380 Sabihin sige at gumawa ito pati na rin at pagkatapos ay muling i-run. 1005 00:41:24,380 --> 00:41:27,980 At full screen na ito, dahil na ipaalam kailangan namin upang makita ang mas maraming espasyo. 1006 00:41:27,980 --> 00:41:30,460 Zamyla. 1007 00:41:30,460 --> 00:41:31,830 Mayroon ka ng masuwerteng muli. 1008 00:41:31,830 --> 00:41:33,070 >> Dare makakakuha tayo ng mas walang ingat? 1009 00:41:33,070 --> 00:41:36,070 Sabihin makakuha ng mas maraming walang ingat. 1010 00:41:36,070 --> 00:41:39,350 50,000 na mga character. 1011 00:41:39,350 --> 00:41:41,390 Ito ang pinaka-tiyak na hindi isang magandang ideya. 1012 00:41:41,390 --> 00:41:41,890 Lahat tama. 1013 00:41:41,890 --> 00:41:42,990 Gumawa ng string 0. 1014 00:41:42,990 --> 00:41:44,720 Ito ang magiging aming huling demo. 1015 00:41:44,720 --> 00:41:47,261 Zamyla. 1016 00:41:47,261 --> 00:41:48,632 Ugh. 1017 00:41:48,632 --> 00:41:50,010 Ugh. 1018 00:41:50,010 --> 00:41:50,680 SIGE. 1019 00:41:50,680 --> 00:41:54,407 Kaya ang aking memory ay talagang walang laman ngayon, na kung saan ay tunay na uri ng maginhawa. 1020 00:41:54,407 --> 00:41:55,990 Ano ang sinusubukan ko upang makakuha to-- lahat ng karapatan. 1021 00:41:55,990 --> 00:41:57,614 At ngayon lang ako pagpunta upang makakuha ng walang ingat. 1022 00:41:57,614 --> 00:41:58,570 500,000. 1023 00:41:58,570 --> 00:42:03,860 Full-screen ni Make-- ipaalam ito. 1024 00:42:03,860 --> 00:42:04,990 Enter. 1025 00:42:04,990 --> 00:42:05,490 Zamyla. 1026 00:42:05,490 --> 00:42:12,050 1027 00:42:12,050 --> 00:42:13,390 Mayroon kaming pumunta. 1028 00:42:13,390 --> 00:42:15,610 Wala akong ideya kung ano na ang ay, ngunit ito tunog masama. 1029 00:42:15,610 --> 00:42:16,110 Lahat tama. 1030 00:42:16,110 --> 00:42:20,322 At sa katunayan, sa lalong madaling panahon, kung ikaw ay kabilang ang mapalad na ang ilang sa mga oras ng opisina 1031 00:42:20,322 --> 00:42:22,780 at sa hanay ng problema sa isa, ikaw maaaring napakahusay nakatagpo ito. 1032 00:42:22,780 --> 00:42:25,490 Talaga ang Segmentation fault magkaroon ng isang mahusay na tinukoy ng kahulugan. 1033 00:42:25,490 --> 00:42:28,450 Ito ay nangangahulugan na ang ilang mga uri ng pagkakamali na may kaugnayan sa isang segment ng memory. 1034 00:42:28,450 --> 00:42:30,490 At sa mga tuntunin ng karaniwang tao, ito ay nangangahulugan na namin baliw 1035 00:42:30,490 --> 00:42:34,780 na memorya na ginagamit namin RAM sa aking computer na dapat ay hindi ako nagkaroon ng access sa. 1036 00:42:34,780 --> 00:42:37,050 At iyon ay kung ano ang parehong malakas at mapanganib din 1037 00:42:37,050 --> 00:42:39,910 tungkol sa C ay na tunay Mayroon unfettered access 1038 00:42:39,910 --> 00:42:45,910 sa kabuuan ng memory ng iyong programa o bytes o RAM, mas partikular. 1039 00:42:45,910 --> 00:42:49,510 >> Kaya kahit na pangalan Zamyla ni ay mga character anim lamang ang haba, 1040 00:42:49,510 --> 00:42:51,450 Maaari pa ring pumunta ako kahit saan sa memory ang gusto ko. 1041 00:42:51,450 --> 00:42:53,491 At bilang isang bukod, kung na sa iyo kailanman basahin ang ilang mga artikulo 1042 00:42:53,491 --> 00:42:55,610 paglipas ng mga taon tungkol sa ilang server o ilang programa 1043 00:42:55,610 --> 00:42:58,654 pagkuha ng basag o na-hack na kinuha bentahe ng isang bagay 1044 00:42:58,654 --> 00:43:00,820 tinatawag na isang buffer overflow maningning na tagumpay na bibigyan namin ng aktwal 1045 00:43:00,820 --> 00:43:04,970 makipag-usap tungkol sa loob ng ilang linggo, na ang karaniwang tumutukoy sa anumang paraan ng tricking 1046 00:43:04,970 --> 00:43:09,090 isang computer sa pagpunta rin lampas sa hangganan ng memory 1047 00:43:09,090 --> 00:43:11,410 na ito ay dapat magkaroon, at paghahanap ng isang bagay makatas 1048 00:43:11,410 --> 00:43:13,530 sa na na memorya ng password, marahil, ang isang paraan 1049 00:43:13,530 --> 00:43:16,990 ng circumventing ilang serial number suriin, o lamang sa pangkalahatan ay magagawang 1050 00:43:16,990 --> 00:43:20,360 upang linlangin ang computer ay Isinasagawa code na ay hindi inilaan. 1051 00:43:20,360 --> 00:43:22,360 Ngunit sabihin bumalik upang ipaalam katotohanan para sa isang sandali lamang 1052 00:43:22,360 --> 00:43:24,550 kung saan ang programang ito ay ipinatupad sa strlen, 1053 00:43:24,550 --> 00:43:26,110 at ipakilala ang isang bagay up dito. 1054 00:43:26,110 --> 00:43:30,030 Ano ang bago sa gitna ng mga pinakamataas na tatlong linya? 1055 00:43:30,030 --> 00:43:30,910 >> Kaya string dot h. 1056 00:43:30,910 --> 00:43:35,490 Ito ay lumiliko out mayroong ito library na tinatawag na String Dot H, o ang String Library, 1057 00:43:35,490 --> 00:43:38,490 ang header ng file, kaya na magsalita, ay string dot h na nagbibigay sa akin 1058 00:43:38,490 --> 00:43:40,860 access sa mga ito strlen function. 1059 00:43:40,860 --> 00:43:43,841 Kung ligtaan ko na, ang tagatala ay pagpunta sa sumigaw sa akin sa ilang mga form. 1060 00:43:43,841 --> 00:43:44,590 Pero alam mo kung ano? 1061 00:43:44,590 --> 00:43:46,090 Ngayon sabihin makakuha ng talagang nuanced. 1062 00:43:46,090 --> 00:43:50,820 Sa linya 22, may isang bagay na uri ng inefficient-- masama dinisenyo, 1063 00:43:50,820 --> 00:43:53,990 arguably-- tungkol ito sa linya ng code. 1064 00:43:53,990 --> 00:43:56,280 Isipin bumalik sa kung paano for-loop ay ipinatupad 1065 00:43:56,280 --> 00:44:00,140 at kung ano ang mga hakbang na mangyari muli at muli at again-- ang Pinasimulan, 1066 00:44:00,140 --> 00:44:04,110 ang kalagayan, ang mga code na makakakuha pinaandar, pagkatapos ay ang paglakas 1067 00:44:04,110 --> 00:44:07,880 o ang pagbabago, pagkatapos ay ang kalagayan, pagkatapos ay ang code, at pagkatapos ay ang pagbabago, pagkatapos ay 1068 00:44:07,880 --> 00:44:11,280 ang kundisyon, pagkatapos ay ang code, pagkatapos ay ang pagbabago, at iba pa. 1069 00:44:11,280 --> 00:44:15,320 Kaya kung ano ang maaaring maging isang maliit nakakaligalig o hindi maganda gawin dito? 1070 00:44:15,320 --> 00:44:16,387 Oo, sa asul. 1071 00:44:16,387 --> 00:44:18,220 Madla: Strlen ay tinatawag na marami, maraming beses. 1072 00:44:18,220 --> 00:44:20,654 1073 00:44:20,654 --> 00:44:21,320 Tagapagsalita 1: Oo. 1074 00:44:21,320 --> 00:44:23,700 Kaya strlen ay tinatawag na maraming beses, ngunit kung ano ang 1075 00:44:23,700 --> 00:44:27,113 ang haba ng pangalan Zamyla sa unang pagkakataon executes ang loop? 1076 00:44:27,113 --> 00:44:27,860 >> Madla: Six. 1077 00:44:27,860 --> 00:44:28,110 >> Tagapagsalita 1: Six. 1078 00:44:28,110 --> 00:44:30,976 Well, kung ano ang haba ng kanyang pangalan sa pangalawang pagkakataon executes ang code? 1079 00:44:30,976 --> 00:44:31,432 >> Madla: Six. 1080 00:44:31,432 --> 00:44:31,890 >> Tagapagsalita 1: Ang lahat ng karapatan. 1081 00:44:31,890 --> 00:44:32,720 Ito ay anim pa rin. 1082 00:44:32,720 --> 00:44:33,220 Right? 1083 00:44:33,220 --> 00:44:35,260 Pangalan Zarla ay may hindi nagbago, kahit na Naghahanap ako 1084 00:44:35,260 --> 00:44:38,240 sa bahagi lamang ng mga titik sa kanyang pangalan. 1085 00:44:38,240 --> 00:44:41,349 At upang ang mga katotohanan na epektibo ako humihingi sa tanong na, kung ano ang 1086 00:44:41,349 --> 00:44:44,640 ang haba ng Zamyla, ano ang haba ng Zamyla, ano ang haba ng Zamyla, 1087 00:44:44,640 --> 00:44:47,990 anim na magkahiwalay na mga oras, o pitong kahit, ay lamang hangal, 1088 00:44:47,990 --> 00:44:50,390 dahil na walang pagbabago na sagot. 1089 00:44:50,390 --> 00:44:53,550 At kaya kung ano ang aking magagawa talaga gawin ay this-- sa string ng isa 1090 00:44:53,550 --> 00:44:55,680 Mayroon akong isang marginally mas mahusay na bersyon dito. 1091 00:44:55,680 --> 00:45:00,110 There-- whoops-- string dalawang mayroon akong isang marginally mas mahusay na bersyon kung saan 1092 00:45:00,110 --> 00:45:05,010 Gagawin ko this-- sa halip na lamang Sinisimulan i sa 0, ako rin gamit ang isang kuwit 1093 00:45:05,010 --> 00:45:07,990 Ipinahahayag ng pangalawang variable na tinatawag na n-- Hindi ko na kailangang sabihin muli int. 1094 00:45:07,990 --> 00:45:09,220 Hindi ko dapat, sa katunayan. 1095 00:45:09,220 --> 00:45:10,380 Datapuwa't sinasabi ko n. 1096 00:45:10,380 --> 00:45:13,610 At pagkatapos ay magpasimula ko n to ang strlen ng n, kaya na ngayon 1097 00:45:13,610 --> 00:45:17,110 kung gaano karaming beses ang strlen naisasagawa sa kabuuang? 1098 00:45:17,110 --> 00:45:17,610 Isang beses lang. 1099 00:45:17,610 --> 00:45:20,257 At kaya ito ay kung ano ang ibig sabihin namin mas maaga ang tungkol sa mas mahusay na disenyo. 1100 00:45:20,257 --> 00:45:23,090 Sa totoo lang isang beses tama ang iyong code, balik-iisip sa pamamagitan ng, 1101 00:45:23,090 --> 00:45:26,820 Ako gamit bilang maliit memory o bilang ilang segundo 1102 00:45:26,820 --> 00:45:30,409 o milliseconds ng oras computer bilang posible na ipatupad ang ilang mga problema? 1103 00:45:30,409 --> 00:45:32,200 At ako pagpunta sa mag-scroll up at banggitin lamang 1104 00:45:32,200 --> 00:45:34,283 na mayroong ito pagbanggit ng null sa bersyon na ito, 1105 00:45:34,283 --> 00:45:36,390 ngunit kami ay bumalik sa na bago ang haba. 1106 00:45:36,390 --> 00:45:41,010 Dahil sa ngayon, sabihin tumagal ng isang pagtingin sa kung saan ito ay pagpunta sa humantong sa amin. 1107 00:45:41,010 --> 00:45:44,110 Kaya sa isa, ito ay lumiliko out na ngayon na kami ay may kakayahan 1108 00:45:44,110 --> 00:45:46,860 na tingnan ang mga indibidwal na mga character, maaari naming pagkilos ng isang bagay 1109 00:45:46,860 --> 00:45:50,807 mula sa linggo 0 na noon ay napaka arcane at uri ng kawili-wili sa oras. 1110 00:45:50,807 --> 00:45:53,390 Ngunit ngayon, at lalo na kapag kami ay makapunta sa Cryptography sa isang linggo, 1111 00:45:53,390 --> 00:45:54,820 ito ay magiging kaakit-akit na makapangyarihan. 1112 00:45:54,820 --> 00:45:57,450 Lumalabas na may ilang data types-- ints at sa kamay 1113 00:45:57,450 --> 00:46:00,300 at char at mga string at iba pang mga bagay- ilan sa mga ito 1114 00:46:00,300 --> 00:46:02,800 maaaring napaka-madaling-convert sa isa pa. 1115 00:46:02,800 --> 00:46:05,840 >> Halimbawa, kapag nag-uusap kami tungkol ASCII ilang oras ago-- narito 1116 00:46:05,840 --> 00:46:07,796 ang mga malalaking titik A sa pamamagitan ng M, tuldok, tuldok, 1117 00:46:07,796 --> 00:46:12,530 dot-- sinabi namin na mayroong isang mapping sa pagitan ng mga titik at numero. 1118 00:46:12,530 --> 00:46:14,970 At sa katunayan, ito ay mayroong tunay para sa maliliit na mga titik pati na rin. 1119 00:46:14,970 --> 00:46:17,470 Lowercase isang ay 97, capital ng isang ay 65. 1120 00:46:17,470 --> 00:46:20,860 At may isang numero sa ASCII, na kung saan ay lamang ng paggawa ng mga mapa na ito 1121 00:46:20,860 --> 00:46:23,240 sistema para sa lahat ng mga iba pang mga titik. 1122 00:46:23,240 --> 00:46:25,030 Kaya kung ano ang ibig sabihin nito? 1123 00:46:25,030 --> 00:46:28,390 Well, ako pagpunta sa sige at bukas up real mabilis ang isang bagay na tinatawag na 1124 00:46:28,390 --> 00:46:31,240 ASCII 0, karamihan sa mga ito ay mga komento. 1125 00:46:31,240 --> 00:46:33,860 At muli online maaari ka laging sulyap sa pamamagitan ng mga komento. 1126 00:46:33,860 --> 00:46:36,180 >> At tingnan kung ano ang ito ay pagpunta sa gawin. 1127 00:46:36,180 --> 00:46:38,410 Kaya ito ay nakuha ng isang pangunahing pag-andar. 1128 00:46:38,410 --> 00:46:41,490 Ko na hard-code ang mga numero lamang para sa ngayon, dahil alam ko kung ano ang ginagawa ko. 1129 00:46:41,490 --> 00:46:42,950 Alam ko kung ano ang gusto kong makita dito. 1130 00:46:42,950 --> 00:46:45,220 At na-initialize ko kong 65. 1131 00:46:45,220 --> 00:46:48,490 At ako pagbibilang up sa pamamagitan ng 26 titik kabuuang. 1132 00:46:48,490 --> 00:46:52,990 At kung ano ako pagpunta sa i-print ang isang linya sa isang oras 1133 00:46:52,990 --> 00:46:54,930 kung maaari mong bigyan ng kahulugan ito naka-highlight na line? 1134 00:46:54,930 --> 00:46:55,970 Ano ang makakakuha ng naka-print? 1135 00:46:55,970 --> 00:46:56,797 Oo. 1136 00:46:56,797 --> 00:46:57,264 >> Madla: Ikaw ba ay pagpunta upang i-print ang mga titik na 1137 00:46:57,264 --> 00:46:59,805 tumutugon sa mapa ng halaga sulat at integer value? 1138 00:46:59,805 --> 00:47:01,199 1139 00:47:01,199 --> 00:47:01,990 Tagapagsalita 1: Eksakto. 1140 00:47:01,990 --> 00:47:04,740 Pupunta ako sa i-print ang mga titik naaayon sa halaga ng integer, 1141 00:47:04,740 --> 00:47:06,131 at sa kabaligtaran, ang mga sumusunod. 1142 00:47:06,131 --> 00:47:08,880 Well na ito, may isang taong nagsabi ng mas maaga, ay isang placeholder para lamang sa isang pansamantalang trabaho. 1143 00:47:08,880 --> 00:47:09,490 Ito pa rin ay. 1144 00:47:09,490 --> 00:47:12,280 Ito, siyempre, ay isang placeholder para sa isang int hindi isang bagong linya. 1145 00:47:12,280 --> 00:47:18,140 At ngayon paunawa, ang aking unang halaga na Ako i-plug in para sa na placeholder 1146 00:47:18,140 --> 00:47:22,320 ay hindi I. Lamang ako ng sinasabi, sa mga panaklong, char ko, 1147 00:47:22,320 --> 00:47:26,700 na kung saan ang nakakahinto char ay nagsasabi ng compiler, Ililibre kita 1148 00:47:26,700 --> 00:47:28,490 Hindi tulad ng kung ano ito ay, kung saan ay isang numero. 1149 00:47:28,490 --> 00:47:30,490 Treat ito bilang isang aktwal na character. 1150 00:47:30,490 --> 00:47:34,490 Sapagkat ang pangalawang halaga ako i-plug in-- I-- dapat na lamang ng isang numero. 1151 00:47:34,490 --> 00:47:38,140 >> Kaya kung ako sumulat ng libro na ito program-- kaya ito ay gumawa ng mga ASCII 0, 1152 00:47:38,140 --> 00:47:41,720 dot slash ASCII 0-- ko lang makakuha ng ang madaling-magamit maliit tsart na 1153 00:47:41,720 --> 00:47:44,950 nagpapakita sa akin ang lahat ng mga posibleng mappings nang hindi na kinakailangang mag-isip ito 1154 00:47:44,950 --> 00:47:46,450 sa pamamagitan ng o tayahin ito sa aking sarili. 1155 00:47:46,450 --> 00:47:48,783 At ako din pag-print out, paunawa ang mga maliliit na mga titik, 1156 00:47:48,783 --> 00:47:51,410 dahil ang ilang mga linya sa ibang pagkakataon, ako din i-print out ito mapping 1157 00:47:51,410 --> 00:47:53,737 pati na rin, na kung saan ay para lamang sabihin na sa sandaling maunawaan mo 1158 00:47:53,737 --> 00:47:55,570 ano ang nangyayari sa ilalim hood, maaari mong 1159 00:47:55,570 --> 00:47:57,111 awtomatikong nagko-convert nang pabalik-balik. 1160 00:47:57,111 --> 00:48:00,160 At sa katunayan, kung ang sinoman sa inyo kailanman ginawa ito sa mababang paaralan 1161 00:48:00,160 --> 00:48:03,490 o narinig ang tungkol sa isang tao mythically pagkuha ng tala 1162 00:48:03,490 --> 00:48:05,620 at pasado ito sa kanyang o ang kanyang mga kaibigan sa klase, 1163 00:48:05,620 --> 00:48:08,300 ngunit ikaw piniritong sa mga titik sa pamamagitan ng tulad ng isang nagiging B, 1164 00:48:08,300 --> 00:48:11,240 at B ay nagiging C, o isang bagay mas kumplikado kaysa sa na, well, 1165 00:48:11,240 --> 00:48:13,410 kung paano mo pumunta tungkol sa pagpapatupad na bilang isang bata? 1166 00:48:13,410 --> 00:48:16,340 Well, maaari mo lamang uri ng alam Isang nagiging B, B ay nagiging C, 1167 00:48:16,340 --> 00:48:19,700 ngunit mathematically, kung ano na ang bata ginagawa? 1168 00:48:19,700 --> 00:48:22,050 Anom ang iyong pagdagdag sa bawat titik? 1169 00:48:22,050 --> 00:48:23,340 Mabisa, 1. 1170 00:48:23,340 --> 00:48:27,740 >> Kaya kapag binago mo A to B, na ang uri ng tulad ng pagbabago ng 65-66, 1171 00:48:27,740 --> 00:48:29,590 saan mathematically nangangahulugan magdagdag ng 1 lang. 1172 00:48:29,590 --> 00:48:33,300 At kaya kung ikaw ay upang ipatupad na ang maliit na mapanlokong paraan 1173 00:48:33,300 --> 00:48:36,380 para sa iyong mga guro sa code, ikaw ay maaaring gawin eksakto na lang 1174 00:48:36,380 --> 00:48:38,552 sa pamamagitan ng pagdaragdag ng isang solong titik magkasama. 1175 00:48:38,552 --> 00:48:40,260 Kaya bago ang haba, hindi namin pagpunta upang makita kung paano namin 1176 00:48:40,260 --> 00:48:43,300 maaaring samantalahin ng na sa aktwal na tunay na pag-aagawan at ipaliwanag 1177 00:48:43,300 --> 00:48:43,991 impormasyon. 1178 00:48:43,991 --> 00:48:47,240 Sa habang panahon, alam na sinimulan namin sa upang ipakilala ang ilang iba pang mga aklatan 1179 00:48:47,240 --> 00:48:48,990 here-- ang string ng isa ngayon. 1180 00:48:48,990 --> 00:48:51,180 At isang napaka-kapaki-pakinabang na site sana makikita ninyo 1181 00:48:51,180 --> 00:48:55,010 ay tinatawag reference.cs50.net, na mga kawani ng pagtuturo ay magkasama, 1182 00:48:55,010 --> 00:48:57,510 upang kung nais mong maghanap ng kung paano strlen gawa, 1183 00:48:57,510 --> 00:48:59,300 maaari kang magsimulang mag-type pangalan ng function, ang 1184 00:48:59,300 --> 00:49:02,890 i-click ang strlen doon, at pagkatapos ay isang mas kumportable na paliwanag 1185 00:49:02,890 --> 00:49:03,700 ay pagpunta sa lumitaw. 1186 00:49:03,700 --> 00:49:06,880 O kung gusto mo ang opisyal na Linux-based na paliwanag, 1187 00:49:06,880 --> 00:49:08,945 maaari mong i-click ang mas umaliw sa kanang tuktok, at ito 1188 00:49:08,945 --> 00:49:12,070 Ipakikita ang parehong impormasyon, ngunit sa mga mas kumplikadong mga tuntunin. 1189 00:49:12,070 --> 00:49:15,070 Iyan ay isang kapaki-pakinabang na mapagkukunan upang talaga alam kung ano ang ginagawa ng lahat ng bagay. 1190 00:49:15,070 --> 00:49:17,320 >> Susunod na oras na namin ang pagpunta sa tingnan ang Ovaltine 1191 00:49:17,320 --> 00:49:20,070 at higit pa, at ipakilala ang sarili sa mundo ng cryptography. 1192 00:49:20,070 --> 00:49:21,930 Bago at pagkatapos, makikita namin makita mo ito sa susunod na linggo. 1193 00:49:21,930 --> 00:49:23,390 At ngayon, Colton Ogden. 1194 00:49:23,390 --> 00:49:26,730 Tingnan mo sa Miyerkules. 1195 00:49:26,730 --> 00:49:30,216 >> [MUSIC nagpe-play] 1196 00:49:30,216 --> 00:49:33,702 >> [MUSIC nagpe-play] 1197 00:49:33,702 --> 00:49:38,682 1198 00:49:38,682 --> 00:49:42,200 >> Tagapagsalita 1: Ano ang [BLEEP] ang ginagawa mo? 1199 00:49:42,200 --> 00:49:45,720 >> Tagapagsalita 1: kumakain ako ng aking dessert? 1200 00:49:45,720 --> 00:49:47,160 Paano mo kumain ng ito? 1201 00:49:47,160 --> 00:49:47,860 Gamit ang iyong mga kamay? 1202 00:49:47,860 --> 00:49:54,050 1203 00:49:54,050 --> 00:49:57,940 >> [MUSIC nagpe-play] 1204 00:49:57,940 --> 00:50:03,453