1 00:00:00,000 --> 00:00:02,880 >> [Гуляе музыка] 2 00:00:02,880 --> 00:00:10,580 3 00:00:10,580 --> 00:00:13,500 >> СПІКЕР 1: Гэта CS50 і гэта пачатак другога тыдня. 4 00:00:13,500 --> 00:00:18,400 Такім чынам, давайце ныраць прама ў нешта што глючыць, так бы мовіць. 5 00:00:18,400 --> 00:00:24,015 Так, за вось CS50 IDE а ў мяне пад'ехаў загадзя гэта па-чартоўску screen-- 6 00:00:24,015 --> 00:00:25,070 гэта. 7 00:00:25,070 --> 00:00:25,760 Спойлер папярэджанне. 8 00:00:25,760 --> 00:00:26,260 Добра. 9 00:00:26,260 --> 00:00:29,060 Я выцягнуў гэты экран тут, які мае вельмі простую праграму. 10 00:00:29,060 --> 00:00:32,659 Калі мы пракруціць ўніз, большасць гэта проста каментары, 11 00:00:32,659 --> 00:00:36,730 але тут, у лініі 13 праз 17 ў нас ёсць праграма. 12 00:00:36,730 --> 00:00:40,580 >> Гэта сінтаксічна няправільна, што азначае, што калі Я скампіляваць яго, ён будзе скампіляваць і запусціць, 13 00:00:40,580 --> 00:00:41,920 але ён памылковы. 14 00:00:41,920 --> 00:00:47,330 Гэтая праграма прэтэндуе ў каментарах наверсе, што яна павінна надрукаваць 10 зорак, 15 00:00:47,330 --> 00:00:48,870 але гэта не так. 16 00:00:48,870 --> 00:00:53,290 І на аснове вашага вопыту, ці хутка будзе досвед працы з C, 17 00:00:53,290 --> 00:00:56,820 Вы можаце адрозніць лагічна чаму гэта, на самай справе, глючыць? 18 00:00:56,820 --> 00:00:57,804 Да? 19 00:00:57,804 --> 00:00:59,220 АЎДЫТОРЫЯ: Гэта ідзе ад нуля да 10. 20 00:00:59,220 --> 00:01:01,884 Гэта 11 ітэрацый. 21 00:01:01,884 --> 00:01:02,550 СПІКЕР 1: Так. 22 00:01:02,550 --> 00:01:06,030 Такім чынам, гэта адбываецца ад нуля праз і роўна 10, 23 00:01:06,030 --> 00:01:08,140 што, вядома, 11 ітэрацый. 24 00:01:08,140 --> 00:01:10,020 Так, ён збіраецца друк, сапраўды, 11 зорак. 25 00:01:10,020 --> 00:01:13,040 Так, Канвенцыя інфарматыка у большасці моў праграмавання 26 00:01:13,040 --> 00:01:15,270 гэта, сапраўды, проста пачаць адлік з нуля, 27 00:01:15,270 --> 00:01:18,800 але падлічыць, але не праз Значэнне, якое вы на самай справе хвалюе. 28 00:01:18,800 --> 00:01:21,216 >> Цяпер, гэта адна рэч, якая Прымае крыху прывыкнуць 29 00:01:21,216 --> 00:01:25,350 і нават да драпін, прызначаныя, як гэта для якія не праграмістаў або неадпаведнасці кампутара 30 00:01:25,350 --> 00:01:28,070 Навукоўцы і для дзяцей у асноўным, разлічана на 31 00:01:28,070 --> 00:01:29,570 Вы пачынаеце падліку галасоў у цэлым на адным. 32 00:01:29,570 --> 00:01:30,277 І гэта нармальна. 33 00:01:30,277 --> 00:01:33,110 Вы можаце абсалютна пачаць адлік ў адным, калі гэта больш зручна. 34 00:01:33,110 --> 00:01:37,210 І разлічваць да і праз 10, але вы зразумееце, у прыватнасці, на гэтым тыдні 35 00:01:37,210 --> 00:01:39,950 і за што проста так многія рэчы ў праграмаванні 36 00:01:39,950 --> 00:01:42,465 Выкажам здагадку, што 0 з'яўляецца першым значны, з якой вы лічыце, 37 00:01:42,465 --> 00:01:45,590 што вы збіраецеся знайсці прасцей толькі, каб атрымаць у гэтай звычкі пуску 38 00:01:45,590 --> 00:01:49,490 ад нуля і лічыць да значэння Вы клапоціцеся аб прама цяпер з 39 00:01:49,490 --> 00:01:49,990 атрымаць ісці. 40 00:01:49,990 --> 00:01:50,990 >> Так, што зафіксавана, што. 41 00:01:50,990 --> 00:01:53,670 Мы змянілі менш або роўная крыху менш за. 42 00:01:53,670 --> 00:01:56,050 Давайце зірнем на Другі прыклад тут. 43 00:01:56,050 --> 00:01:59,585 >> Так, гэтая праграма занадта сцвярджае ў сваім каментары наверсе, што ён павінен раздрукаваць 44 00:01:59,585 --> 00:02:02,260 дзесяць зорак, але гэта не так. 45 00:02:02,260 --> 00:02:05,540 Што памылка тут? 46 00:02:05,540 --> 00:02:07,930 >> Так, што-і прабачце, давайце быць ясна. 47 00:02:07,930 --> 00:02:08,610 10 зорак. 48 00:02:08,610 --> 00:02:11,644 Адзін за лінію, але гэта не так. 49 00:02:11,644 --> 00:02:14,810 Так, у самой справе, дазвольце мне ісці наперад і кампіляцыі гэты, таму што гэта крыху менш, 50 00:02:14,810 --> 00:02:16,900 ачысціць на аснове гэтага апісання. 51 00:02:16,900 --> 00:02:18,720 Дазвольце мне пайсці ў наш каталог крыніцы. 52 00:02:18,720 --> 00:02:25,110 Зрабіць калыску адна кропка слэш, багі адзін. 53 00:02:25,110 --> 00:02:28,680 ОК, я бачу, 11 зорак, якія яшчэ праблематычна, 54 00:02:28,680 --> 00:02:30,090 але яны таксама ўсё ў адной радку. 55 00:02:30,090 --> 00:02:31,500 Што праблема тут? 56 00:02:31,500 --> 00:02:32,339 Так. 57 00:02:32,339 --> 00:02:33,255 АЎДЫТОРЫЯ: [неразборліва]. 58 00:02:33,255 --> 00:02:36,194 59 00:02:36,194 --> 00:02:36,860 СПІКЕР 1: Так. 60 00:02:36,860 --> 00:02:40,210 Так што гэта тонкасць, якую вы можаце Нагадаем, мне робіць кароткае згадванне аб. 61 00:02:40,210 --> 00:02:42,793 Нават калі ўсё выглядае прыгожая, і гэта прыгожа з водступам, 62 00:02:42,793 --> 00:02:45,850 і гэта збольшага выглядае як да драпін У гэтай лініі 16 і 17, 63 00:02:45,850 --> 00:02:47,600 Сапраўды, з водступам пад гэтым цыкл. 64 00:02:47,600 --> 00:02:48,400 Гэта неістотна. 65 00:02:48,400 --> 00:02:50,460 Кампутар не ведаць ці бачыць прабелы. 66 00:02:50,460 --> 00:02:52,910 Белае прастору толькі для нас, людзей, стылістычна. 67 00:02:52,910 --> 00:02:57,010 Кампутар не ведае, калі ў вас ёсць Фігурныя дужкі, якія б, на самай справе, 68 00:02:57,010 --> 00:02:58,280 выправіць гэтую праблему. 69 00:02:58,280 --> 00:03:02,350 >> Такім чынам, калі мы на самай справе пайшоў і відавочна пакласці ў гэтых фігурных дужках 70 00:03:02,350 --> 00:03:05,220 што б выправіць гэтую праблему, робіць ясна кампілятара 71 00:03:05,220 --> 00:03:07,930 што я на самой справе хачу, каб выканаць два радкі кода зноў, 72 00:03:07,930 --> 00:03:09,220 і зноў, і зноў. 73 00:03:09,220 --> 00:03:11,680 Але тое, што фундаментальнае тлумачэнне? 74 00:03:11,680 --> 00:03:12,180 Дакладна? 75 00:03:12,180 --> 00:03:15,260 Мы не павінны строга Фігурныя дужкі ўвесь час, 76 00:03:15,260 --> 00:03:18,210 хоць гэта, верагодна, лепш практыка, каб патрапіць у гэтую звычку ў любым выпадку 77 00:03:18,210 --> 00:03:20,878 нават калі ён дадае два сімвалы ў кодзе. чаму? 78 00:03:20,878 --> 00:03:22,380 >> АЎДЫТОРЫЯ: [неразборліва]? 79 00:03:22,380 --> 00:03:24,630 СПІКЕР 1: Так, так што гэта іншае рашэнне ў цэлым. 80 00:03:24,630 --> 00:03:25,130 Дакладна? 81 00:03:25,130 --> 00:03:28,250 Асабліва, калі на першы погляд вам не сапраўды шанаваць тое, што адбываецца. 82 00:03:28,250 --> 00:03:31,070 Ну, вядома, мы маглі б проста рабіць дзве рэчы адначасова 83 00:03:31,070 --> 00:03:32,710 і проста пазбегнуць праблемы ў цэлым. 84 00:03:32,710 --> 00:03:36,080 І гэта выдатна, але цяпер, для сённяшніх мэтаў, тое, што 85 00:03:36,080 --> 00:03:38,200 гэта тлумачэнне памылка? 86 00:03:38,200 --> 00:03:39,810 Чаму ўсе гэтыя зоркі на адной лініі? 87 00:03:39,810 --> 00:03:40,806 Да? 88 00:03:40,806 --> 00:03:43,296 >> АЎДЫТОРЫЯ: Здаецца, што калі ў вас ёсць адна радок кода, 89 00:03:43,296 --> 00:03:46,649 Вы можаце зрабіць гэта без іх. 90 00:03:46,649 --> 00:03:47,440 СПІКЕР 1: Дакладна. 91 00:03:47,440 --> 00:03:48,750 Гэта проста чалавечая ўмоўнасць. 92 00:03:48,750 --> 00:03:50,750 Людзі разумеюць, што гэта крыху раздражняе або стомна 93 00:03:50,750 --> 00:03:53,470 каб паставіць фігурныя дужкі ўсе частку часу, калі ўсё, што вы хочаце зрабіць 94 00:03:53,470 --> 00:03:55,090 гэта выканаць адзін радок кода. 95 00:03:55,090 --> 00:03:57,660 Так, людзі вырашылі некаторыя час таму, што гэта нармальна. 96 00:03:57,660 --> 00:04:01,180 Калі вы хочаце, каб пакласці ўсе вашы завесы толькі на гэтай адной лініі, як гэта, 97 00:04:01,180 --> 00:04:04,030 гэта нармальна з адной Кропка з коскі ў канцы. 98 00:04:04,030 --> 00:04:07,210 Але вы можаце зрабіць толькі адзін такі Лінія без фігурных дужак. 99 00:04:07,210 --> 00:04:09,900 >> Такім чынам, калі кіраўніцтва CS50 стыль а пакажа на, 100 00:04:09,900 --> 00:04:11,980 вы ўбачыце, што, як правіла гэта добрая звычка 101 00:04:11,980 --> 00:04:14,920 каб трапіць у гэта, пакуль вы не цалкам камфортна збіваецца 102 00:04:14,920 --> 00:04:17,404 ад гэтых відаў канвенцый і рабіць сваю справу. 103 00:04:17,404 --> 00:04:18,820 Пакуль вы сябе паслядоўным. 104 00:04:18,820 --> 00:04:21,540 І мы будзем гаварыць больш пра стыль трохі пазней сёння. 105 00:04:21,540 --> 00:04:23,200 >> Такім чынам, дазвольце мне адкрыць адну іншую праграму. 106 00:04:23,200 --> 00:04:24,930 Вядома, мы павінны выправіць, што 10, а таксама. 107 00:04:24,930 --> 00:04:32,470 Дазвольце мне ісці наперад і напісаць сапраўдны хутка праграма, якую я буду называць, 108 00:04:32,470 --> 00:04:38,140 скажам, пятля кропка С. Такім чынам, цыкл кропка З І ў пятлі кропка C Я збіраюся мець, 109 00:04:38,140 --> 00:04:41,970 ўключаюць у сябе стандартныя I / O кропка Н INT асноўны пустэчу. 110 00:04:41,970 --> 00:04:44,020 А цяпер давайце проста рабіць, на самай справе, цыкл. 111 00:04:44,020 --> 00:04:46,020 Так, 4 INT I атрымлівае нуль. 112 00:04:46,020 --> 00:04:48,660 Я менш, чым, скажам, 50 гадоў. 113 00:04:48,660 --> 00:04:49,950 Я плюс, плюс. 114 00:04:49,950 --> 00:04:53,350 А потым тут давайце ісці наперад і не друкаваць F. 115 00:04:53,350 --> 00:04:56,400 А потым я хачу, каб надрукаваць I і новая лінія, кропка з коскі. 116 00:04:56,400 --> 00:05:00,015 >> І гэта павінна надрукаваць усе лік ад нуля да 50? 117 00:05:00,015 --> 00:05:02,900 118 00:05:02,900 --> 00:05:03,680 Некаторыя кіраўнік ківае. 119 00:05:03,680 --> 00:05:04,270 Праз некалькі NOS. 120 00:05:04,270 --> 00:05:05,339 Што памылка ўжо? 121 00:05:05,339 --> 00:05:06,630 Што лёгка памылка, якую я зрабіў? 122 00:05:06,630 --> 00:05:07,170 Так. 123 00:05:07,170 --> 00:05:08,544 >> АЎДЫТОРЫЯ: [неразборліва]. 124 00:05:08,544 --> 00:05:09,210 СПІКЕР 1: Так. 125 00:05:09,210 --> 00:05:11,520 Таму, нават калі гэта выглядае як гэта тое, што я маю намер, 126 00:05:11,520 --> 00:05:13,920 Нагадаем, што я таксама проста ASCII сімвалаў. 127 00:05:13,920 --> 00:05:14,955 >> Так што, калі я кажу, друк "І." 128 00:05:14,955 --> 00:05:16,670 Гэта ў літаральным сэнсе збіраецца друкаваць I. Такім чынам, калі я 129 00:05:16,670 --> 00:05:20,030 хочаце падключыць ў якасці запаўняльніка Я на самой справе значэнне трэба зрабіць гэта 130 00:05:20,030 --> 00:05:22,630 а затым падключыце-у Значэнне I дынамічна. 131 00:05:22,630 --> 00:05:25,200 У адваротным выпадку я проста хачу, каб атрымаць 50 I на экране. 132 00:05:25,200 --> 00:05:28,140 >> Такім чынам, дазвольце мне ісці наперад і зрабіць гэты цыкл, запусціць яго, 133 00:05:28,140 --> 00:05:30,650 і, сапраўды, у нас ёсць усе аж па 49. 134 00:05:30,650 --> 00:05:34,140 І калі я пракруткі назад у часе я бачу нуль, у самым пачатку. 135 00:05:34,140 --> 00:05:36,050 >> Ну, што, калі я накшталт сапсаваць? 136 00:05:36,050 --> 00:05:37,800 Што рабіць, калі я гэта зрабіць? 137 00:05:37,800 --> 00:05:40,120 Проста таму, што я не думаў. 138 00:05:40,120 --> 00:05:40,970 Што гэтая праграма. 139 00:05:40,970 --> 00:05:43,970 Пасля таго, як зноў кампіляцыі і запуску, збіраецца рабіць лагічна? 140 00:05:43,970 --> 00:05:44,870 >> АЎДЫТОРЫЯ: Нічога. 141 00:05:44,870 --> 00:05:45,661 >> СПІКЕР 1: Нічога. 142 00:05:45,661 --> 00:05:47,156 Чаму так? 143 00:05:47,156 --> 00:05:49,124 >> АЎДЫТОРЫЯ: Я прызначаны для нуль. 144 00:05:49,124 --> 00:05:51,899 Такім чынам, ўмова фальшыва. 145 00:05:51,899 --> 00:05:52,940 СПІКЕР 1: Так, менавіта так. 146 00:05:52,940 --> 00:05:55,110 Увесь код з'яўляецца правільным, сінтаксічна. 147 00:05:55,110 --> 00:05:57,310 Гэта будзе кампіляваць, гэта код будзе працаваць, але гэта не 148 00:05:57,310 --> 00:06:00,110 збіраюся зрабіць што-небудзь карыснае таму што я ініцыялізаваць я да нуля. 149 00:06:00,110 --> 00:06:02,240 Затым мы правяраем, ёсць я больш 50? 150 00:06:02,240 --> 00:06:03,810 Відавочна, што няма, гэта не так. 151 00:06:03,810 --> 00:06:05,760 Такім чынам, цыкл ніколі не выконваецца наогул. 152 00:06:05,760 --> 00:06:09,580 >> Што, калі мы нешта зрабіць трохі больш безразважна? 153 00:06:09,580 --> 00:06:12,890 Так, што, калі мы робім, як я міжнар атрымлівае нуль. 154 00:06:12,890 --> 00:06:15,640 А цяпер дазвольце мне выкарыстоўваць час цыкл, які быў яшчэ адным умовай. 155 00:06:15,640 --> 00:06:21,810 І ў той час я кажу, а я больш або роўная нуля, а затым тут я 156 00:06:21,810 --> 00:06:26,070 ісці наперад і захаваць файл, каб цыкл. 157 00:06:26,070 --> 00:06:27,070 І я збіраюся запусціць яго. 158 00:06:27,070 --> 00:06:30,230 Што я буду бачыць гэта раз з час цыкла? 159 00:06:30,230 --> 00:06:30,852 Так. 160 00:06:30,852 --> 00:06:32,120 >> АЎДЫТОРЫЯ: бясконцы цыкл? 161 00:06:32,120 --> 00:06:35,360 >> СПІКЕР 1: бясконцы цыкл? 162 00:06:35,360 --> 00:06:36,662 Так, і чаму? 163 00:06:36,662 --> 00:06:38,120 АЎДЫТОРЫЯ: Таму што гэта заўсёды роўны нулю. 164 00:06:38,120 --> 00:06:38,786 СПІКЕР 1: Так. 165 00:06:38,786 --> 00:06:40,100 Такім чынам, я ініцыялізуецца роўным нулю. 166 00:06:40,100 --> 00:06:44,470 Вядома, я заўсёды больш чым або роўна 0 ў якасці выніку. 167 00:06:44,470 --> 00:06:46,460 Такім чынам, я проста хачу, каб ўбачыць гэта бясконца. 168 00:06:46,460 --> 00:06:49,850 І зараз, гэта прыдумаць, як толькі або двойчы галоў курсу. 169 00:06:49,850 --> 00:06:52,417 Што адбываецца, калі вы ёсць бясконцы цыкл? 170 00:06:52,417 --> 00:06:53,314 >> АЎДЫТОРЫЯ: Упраўленне С. 171 00:06:53,314 --> 00:06:53,980 СПІКЕР 1: Так. 172 00:06:53,980 --> 00:06:56,250 Так кіравання С у канчатковым выніку адказваць. 173 00:06:56,250 --> 00:06:59,520 На жаль, мы раздрукаваць мільёны і мільёны нулёў ўжо 174 00:06:59,520 --> 00:07:01,520 і таму кампутар мае выгляд атрымаў наперадзе мяне. 175 00:07:01,520 --> 00:07:03,394 Так, ён збіраецца ігнараваць мне для няшмат. 176 00:07:03,394 --> 00:07:06,560 Але калі вы проста націсніце CONTROL C нешматлікія раз на вашым Mac ці PC клавіятуры, 177 00:07:06,560 --> 00:07:08,790 у канчатковым выніку ён павінен, сапраўды, спыніць. 178 00:07:08,790 --> 00:07:11,770 А калі не, мы пакажам вам некаторыя метады да тых часоў, калі вам 179 00:07:11,770 --> 00:07:14,850 можа на самай справе гвалтоўна забіць праграм, гэтак жа, як у Windows, і Mac OS, 180 00:07:14,850 --> 00:07:15,562 калі гэта будзе неабходна. 181 00:07:15,562 --> 00:07:16,770 Але давайце паспрабуем нешта яшчэ. 182 00:07:16,770 --> 00:07:19,895 Давайце на самай справе павялічыць I. З'яўляецца гэта па-ранейшаму будзе бясконцым? 183 00:07:19,895 --> 00:07:22,870 184 00:07:22,870 --> 00:07:25,140 Дазвольце мне запусціць гэты. 185 00:07:25,140 --> 00:07:27,090 І цяпер вы можаце выгляд бачыць, што адбываецца. 186 00:07:27,090 --> 00:07:30,140 Гэта, таксама, з'яўляецца бясконцы цыкл. 187 00:07:30,140 --> 00:07:33,080 Але гэта крыху дзіўнае пытанне. 188 00:07:33,080 --> 00:07:35,460 Ці з'яўляецца гэта ў друк нумары назаўжды? 189 00:07:35,460 --> 00:07:36,647 >> АЎДЫТОРЫЯ: Няма 190 00:07:36,647 --> 00:07:37,230 СПІКЕР 1: Няма 191 00:07:37,230 --> 00:07:37,620 Чаму? 192 00:07:37,620 --> 00:07:38,820 Я чуў, некаторыя NOS тут. 193 00:07:38,820 --> 00:07:41,859 Someone-- Так. 194 00:07:41,859 --> 00:07:44,275 АЎДЫТОРЫЯ: Вы не хапае біт сапраўды будзе трымаць. 195 00:07:44,275 --> 00:07:44,730 СПІКЕР 1: Добра. 196 00:07:44,730 --> 00:07:46,000 Так што я не дастаткова біт, каб працягваць ісці. 197 00:07:46,000 --> 00:07:47,124 Такім чынам, што адбудзецца? 198 00:07:47,124 --> 00:07:49,320 Гэта проста збіраецца спыняцца? 199 00:07:49,320 --> 00:07:52,542 >> АЎДЫТОРЫЯ: У нейкі момант яна будзе зачынена the-- 200 00:07:52,542 --> 00:07:54,500 СПІКЕР 1: Гэта будзе зачынена пятля ўніз, але чаму? 201 00:07:54,500 --> 00:07:57,950 Што адбудзецца на самы канец яго межаў? 202 00:07:57,950 --> 00:07:58,479 Да? 203 00:07:58,479 --> 00:08:00,520 АЎДЫТОРЫЯ: Гэта будзе цыкл Вярнуцца да адмоўных лікаў. 204 00:08:00,520 --> 00:08:02,900 СПІКЕР 1: адмоўных лікаў або калі мы проста лячэння станоўчая, 205 00:08:02,900 --> 00:08:03,570 нуля, па меншай меры. 206 00:08:03,570 --> 00:08:04,550 Так што, так, абсалютна. 207 00:08:04,550 --> 00:08:08,059 Нагадаем, што мы бачылі ў апошні раз, што калі вы павялічыць вашы біты занадта шмат разоў, 208 00:08:08,059 --> 00:08:10,225 і вы там першы план перапаўненне ёмістасць ИНТ 209 00:08:10,225 --> 00:08:13,058 ці нешта тыпу дадзеных, вы збіраецца, каб абгарнуць вакол, напэўна, 210 00:08:13,058 --> 00:08:14,020 два адмоўных лікаў. 211 00:08:14,020 --> 00:08:16,644 Ці, калі вы паказаць, што дыяпазон павінен быць толькі станоўчым, 212 00:08:16,644 --> 00:08:18,560 якія вы можаце зрабіць, але мы не бачылі, што яшчэ, 213 00:08:18,560 --> 00:08:21,420 Вы маглі б у канчатковым выніку, па меншай меры яшчэ на нулі. 214 00:08:21,420 --> 00:08:22,410 Хоць, на самой справе, так. 215 00:08:22,410 --> 00:08:24,320 У гэтым выпадку адмоўнага лік, і ў гэтым выпадку 216 00:08:24,320 --> 00:08:26,870 цыкл будзе спыніць таму што я не, на самай справе, 217 00:08:26,870 --> 00:08:29,220 больш або роўна нуля, калі ён адмоўны. 218 00:08:29,220 --> 00:08:31,780 >> Так, на жаль, як доўга б мы павінны чакаць? 219 00:08:31,780 --> 00:08:35,490 Зараз мы да тое, што 2 млн иш? 220 00:08:35,490 --> 00:08:37,705 Мы, як 2 млрд, мы збіраемся, прыйдзецца чакаць 221 00:08:37,705 --> 00:08:39,330 пакуль мы не можам рэальна ўбачыць гэты сімптом. 222 00:08:39,330 --> 00:08:46,200 Але мы бачым яго трохі хутчэй, maybe-- давайце паглядзім, калі мы можам перапыніць. 223 00:08:46,200 --> 00:08:46,700 Давай. 224 00:08:46,700 --> 00:08:49,500 225 00:08:49,500 --> 00:08:51,331 Нават меню з'яўляюцца павольна. 226 00:08:51,331 --> 00:08:51,830 Добра. 227 00:08:51,830 --> 00:08:54,270 Такім чынам, мы вернемся да таго, што ў хуткім часе. 228 00:08:54,270 --> 00:08:56,320 Гэта добрая time-- пабяры, шчанюкі. 229 00:08:56,320 --> 00:08:58,280 >> Гэта добры час для некаторых аб'яваў. 230 00:08:58,280 --> 00:09:01,225 Так што, калі вы маглі б ўдзельнічаць у YHack, 231 00:09:01,225 --> 00:09:03,600 які з'яўляецца падзеяй з'яўляецца Спонсарам нашых сяброў у Ельскім універсітэце. 232 00:09:03,600 --> 00:09:05,990 І, сапраўды, некаторыя з Курсу ТФ ў Ельскім універсітэце ўдзельнічаюць у гэтым. 233 00:09:05,990 --> 00:09:08,610 YHack з'яўляецца міжнароднай секчы-а-марафон арганізаваны і праведзены 234 00:09:08,610 --> 00:09:12,395 у Ельскім універсітэце, у выніку чаго разам 1500 аднадумцаў хакераў і творчых ўсіх 235 00:09:12,395 --> 00:09:13,120 па ўсім свеце. 236 00:09:13,120 --> 00:09:14,610 Калі гэта ўяўляе цікавасць, зірнуць тут. 237 00:09:14,610 --> 00:09:17,401 Калі гэта занадта коратка на экранам, зірніце на сённяшніх слайдаў 238 00:09:17,401 --> 00:09:19,622 для URL для yhack.org. 239 00:09:19,622 --> 00:09:21,080 Так, таксама некалькі хуткіх аб'яваў. 240 00:09:21,080 --> 00:09:24,410 Так, афіцыйна ўчасткі пачнуць на наступным тыдні тут і Нью-Хейвен. 241 00:09:24,410 --> 00:09:27,660 Майце на ўвазе, вы будзеце атрымліваць E-mail праз гэты ўік-энд, хутчэй за ўсё ,. 242 00:09:27,660 --> 00:09:29,390 Гэта займае шмат часу, для CS50 да падзелу, 243 00:09:29,390 --> 00:09:32,080 улічваючы ўсе людзі ў клас і ўсё ў руху. 244 00:09:32,080 --> 00:09:34,871 І ўсё вучэнне стыпендыятаў раскладу і яшчэ умацоўваючы, 245 00:09:34,871 --> 00:09:38,110 але сочыце за электроннай пошце і ў выпадку неабходнасці быць, вы можаце паўторна раздзел там пасля. 246 00:09:38,110 --> 00:09:39,580 >> Study.cs50.net. 247 00:09:39,580 --> 00:09:43,280 Такім чынам, нават калі вы з'яўляецеся сталым удзельнік на участках, разумеюць, што амаль усе 248 00:09:43,280 --> 00:09:46,786 рэсурсаў мы выкарыстоўваем у раздзелах з'яўляюцца агульнадаступнымі на CS50 249 00:09:46,786 --> 00:09:48,460 Даследаванне па гэтым адрасе тут. 250 00:09:48,460 --> 00:09:51,630 Так што, калі вы калі-небудзь хацелі б зноў водгук Матэрыял з падзелу, ці чытаць наперад, 251 00:09:51,630 --> 00:09:54,170 ці вы не можаце зрабіць гэта некаторыя тыдні разумець, што прыклады слайды, 252 00:09:54,170 --> 00:09:58,210 і праблемы, і вызначэння, і больш за ўсё там таксама. 253 00:09:58,210 --> 00:10:00,645 >> Гадзіннік аднавіць сёння, і заўтра, і ў сераду, 254 00:10:00,645 --> 00:10:03,020 і ў чацвер, праверце Курсу вэб-сайт для графіка. 255 00:10:03,020 --> 00:10:05,690 >> А таксама, у цяперашні час прыступае сёння CS50 Абмеркаваць. 256 00:10:05,690 --> 00:10:09,230 Так што, калі і калі ў вас ёсць пытанні адзін з адным або для супрацоўнікаў Курсу, 257 00:10:09,230 --> 00:10:12,099 і, як правіла, працуе на нейкай праблемы набору, 258 00:10:12,099 --> 00:10:15,015 зразумець, што вы не абавязкова павінны звярнуцца да чалавека наступным вамі. 259 00:10:15,015 --> 00:10:17,810 Калі няма ні аднаго, вы можаце дацягнуцца да нас і аднакласнікамі 260 00:10:17,810 --> 00:10:19,890 онлайн з дапамогай CS50 Абмеркаваць. 261 00:10:19,890 --> 00:10:22,600 Такім чынам, гэта абмеркаванне дошка для курса, 262 00:10:22,600 --> 00:10:24,550 і разумею, што гэта гэта, бадай, лепшы 263 00:10:24,550 --> 00:10:28,480 месца, каб пачаць, калі ў вас ёсць пытанні, калі ў непрацоўны час 264 00:10:28,480 --> 00:10:29,470 у прыватнасці. 265 00:10:29,470 --> 00:10:31,070 >> Ланчі пачне на гэтым тыдні таксама. 266 00:10:31,070 --> 00:10:33,170 У Агонь і лёд [Неразборліва] ў Нью-Хейвене. 267 00:10:33,170 --> 00:10:35,379 Зірніце на курс-х сайт для таго, каб RSVP. 268 00:10:35,379 --> 00:10:36,753 Першы прыйшоў, першы абслужыць за гэта. 269 00:10:36,753 --> 00:10:39,380 Калі вы не атрымаеце на гэтым тыдні мы зробім гэтыя самыя кожную пятніцу 270 00:10:39,380 --> 00:10:40,400 на працягу тэрміну. 271 00:10:40,400 --> 00:10:41,830 >> ОК, а цяпер некалькі слоў аб класіфікацыі. 272 00:10:41,830 --> 00:10:44,690 Асабліва, калі мы ўступаем праблемы на адзін, які на гэтым тыдні, 273 00:10:44,690 --> 00:10:46,670 і праблема ўсталяваць два і пасля гэтага. 274 00:10:46,670 --> 00:10:51,680 Як мы можам ісці аб ацэнцы мноства Р і ацэнкі іх якасці? 275 00:10:51,680 --> 00:10:55,560 Такім чынам, гэта чатыры восі, якія мы выкарыстоўваем у CS50, і яны гэтыя чатыры тут. 276 00:10:55,560 --> 00:10:59,200 >> Сфера, якая захоплівае на лікавы Асновай толькі, колькі з Р мноства 277 00:10:59,200 --> 00:10:59,860 ты парушэнні. 278 00:10:59,860 --> 00:11:02,890 Гэта прыкладна адпавядае намаганні, і гэта наш спосаб захопу 279 00:11:02,890 --> 00:11:05,190 вы паспрабуйце палову Р ўсталяваць ўсе Р набору. 280 00:11:05,190 --> 00:11:08,860 Гэта лёгкі, каб атрымаць ідэальны балы па, калі вы, сапраўды, 281 00:11:08,860 --> 00:11:11,020 паспрабуйце кожны аспект P набору. 282 00:11:11,020 --> 00:11:12,010 Так, што майце гэта на ўвазе. 283 00:11:12,010 --> 00:11:13,420 >> Правільнасць менавіта гэта. 284 00:11:13,420 --> 00:11:17,760 Ці мае ваш код працаваць, як спецыфікацыі і як рашэнне ўзор штабоў 285 00:11:17,760 --> 00:11:19,730 выказаць здагадку, што ваш код павінны, па сутнасці, працуюць. 286 00:11:19,730 --> 00:11:23,260 Праверце 50, калі вы яшчэ не сустрэлі яго Тым не менш, у Р усталёўваецца адно ўдакладненне 287 00:11:23,260 --> 00:11:25,060 і, як правіла не даюць вам так / не адказаў 288 00:11:25,060 --> 00:11:26,518 адносна таго, што ваш код з'яўляецца правільным. 289 00:11:26,518 --> 00:11:30,680 Прынамсі, настолькі, наколькі мы збіраемся ацаніць яго на аснове выпрабаванняў 290 00:11:30,680 --> 00:11:32,430 што мы бяжым у гэтай праграме. 291 00:11:32,430 --> 00:11:33,850 >> Дызайн з'яўляецца значна больш суб'ектыўна. 292 00:11:33,850 --> 00:11:35,994 Гэта, як добра напісана ваш код. 293 00:11:35,994 --> 00:11:38,410 І гэта тое, што Вы атрымаеце лепш з цягам часу, 294 00:11:38,410 --> 00:11:41,201 і гэта тое, што мы будзем забяспечыць больш якасную зваротную сувязь па. 295 00:11:41,201 --> 00:11:43,350 І дызайн я мог значыць неўзабаве вы 296 00:11:43,350 --> 00:11:47,650 можа быць у нейкай спакуса P ўсталяваць нешта зрабіць loopingly, 297 00:11:47,650 --> 00:11:51,590 але ёсць магчыма тры, ці чатыры, або пяць ўкладзеных цыклаў пярэднія або ўкладзеныя ў той час як 298 00:11:51,590 --> 00:11:52,090 завесы. 299 00:11:52,090 --> 00:11:54,130 Што наогул павінна пачаць, каб вы скурчвацца 300 00:11:54,130 --> 00:11:56,070 і ў цэлым будзе лічыцца дрэнны дызайн. 301 00:11:56,070 --> 00:11:59,490 І вы пачнеце бачыць у класе і з класа добрых спосабаў рабіць рэчы, 302 00:11:59,490 --> 00:12:02,920 дрэнныя спосабы рабіць рэчы, якія можа быць усё правільна, але не 303 00:12:02,920 --> 00:12:04,304 абавязкова добра распрацавана. 304 00:12:04,304 --> 00:12:05,220 Як пісаць эсэ. 305 00:12:05,220 --> 00:12:08,100 Вы маглі б быць у стане паставіць словы на старонка, граматычна правільна, 306 00:12:08,100 --> 00:12:10,016 але эсэ або Тэзіс, што яны ў гэта проста 307 00:12:10,016 --> 00:12:11,810 цалкам некогерентного або непераканаўчым. 308 00:12:11,810 --> 00:12:15,930 І так, што можа быць у аналагавы напісана свет дрэнны ці добры дызайн. 309 00:12:15,930 --> 00:12:18,490 >> І стыль, таксама, даволі суб'ектыўна. 310 00:12:18,490 --> 00:12:20,060 Але па меншай меры мы чакаем кансістэнцыі. 311 00:12:20,060 --> 00:12:21,480 Гэта, як даволі ваш код. 312 00:12:21,480 --> 00:12:22,840 Рэчы прыгожа з водступам? 313 00:12:22,840 --> 00:12:26,600 Ці з'яўляюцца вашыя зменныя таксама называюцца / Ці ўсё Вашы дужак і фігурныя дужкі 314 00:12:26,600 --> 00:12:27,920 выраўноўваецца так, як яны павінны быць? 315 00:12:27,920 --> 00:12:31,490 У нас ёсць кіраўніцтва CS50 стыль як Пастаўленая задача будзе ўказваць вам на. 316 00:12:31,490 --> 00:12:33,730 Тыя больш камфортна ў Сардэчна запрашаем у бадзяжных ад 317 00:12:33,730 --> 00:12:35,771 так доўга, як вы самастойна паслядоўным. 318 00:12:35,771 --> 00:12:38,020 І гэта таксама ўрок мы ўмацаваць у раздзеле. 319 00:12:38,020 --> 00:12:40,990 Так што, калі ўсё гэта было трохі хутка, разумеюць, Р набор і секцыі 320 00:12:40,990 --> 00:12:42,900 будзе ісці ў больш падрабязна ў бліжэйшы час. 321 00:12:42,900 --> 00:12:45,490 >> Але ў цэлым у нас ёсць вельмі мала вядра для CS50. 322 00:12:45,490 --> 00:12:48,170 Вынікі, як правіла, у маштабе ад аднаго да трох, або аднаго да пяці. 323 00:12:48,170 --> 00:12:50,836 Мы literally--, і я не магу сказаць, гэта досыць на працягу першага тыдня. 324 00:12:50,836 --> 00:12:51,582 Тры добра. 325 00:12:51,582 --> 00:12:54,290 Такім чынам, хоць, ды, тры з пяць нармальна, матэматычна, 326 00:12:54,290 --> 00:12:57,240 можа быць 60 працэнтаў або як D мінус. 327 00:12:57,240 --> 00:12:58,840 Тры, на самай справе, добра. 328 00:12:58,840 --> 00:13:01,050 І на самай справе, мы чакаем, большасць студэнтаў у класе 329 00:13:01,050 --> 00:13:04,280 каб пачаць тэрмін вакол двоек, троек і чацвёрак, і. 330 00:13:04,280 --> 00:13:05,510 Напэўна, не так шмат пяцёрак. 331 00:13:05,510 --> 00:13:06,661 Ці не занадта шмат з іх. 332 00:13:06,661 --> 00:13:08,910 Але ў цэлым, каб пачаць у што салодкае пляма на крывой 333 00:13:08,910 --> 00:13:11,694 такім чынам, што з цягам часу, там на самой справе месца для, 334 00:13:11,694 --> 00:13:13,360 і магчымасці для верхняй прагрэсіі. 335 00:13:13,360 --> 00:13:15,810 Таму, калі ласка, не прыраўноўваюць тры з 60%. 336 00:13:15,810 --> 00:13:17,410 Гэта значна больш абстрактнае, чым гэта. 337 00:13:17,410 --> 00:13:20,160 Формула, з якой мы вылічыць гатункаў важыцца наступным чынам. 338 00:13:20,160 --> 00:13:21,610 Правільнасць стаіць найбольш. 339 00:13:21,610 --> 00:13:23,010 Дызайн варта трохі менш. 340 00:13:23,010 --> 00:13:24,490 Стыль варта трохі менш. 341 00:13:24,490 --> 00:13:26,950 І гэта, як правіла захоплівае колькасць часу 342 00:13:26,950 --> 00:13:29,800 што ідзе ў атрыманні кожнага з гэтых восяў раз. 343 00:13:29,800 --> 00:13:31,810 Стыль вельмі лёгка, павінны быць супер хутка, 344 00:13:31,810 --> 00:13:33,657 але гэта лёгка звычка каб атрымаць гультаяватыя. 345 00:13:33,657 --> 00:13:35,490 Правільнасць можа заняць Вы вялікую частку часу. 346 00:13:35,490 --> 00:13:38,990 Пераследуючы некаторыя памылкі можа прыняць, што дадатковы гадзіну ці болей, 347 00:13:38,990 --> 00:13:41,737 і так, забіўшы у канчатковым рахунку, захоплівае гэта. 348 00:13:41,737 --> 00:13:43,070 І так, цяпер больш сур'ёзна слова. 349 00:13:43,070 --> 00:13:45,240 Так CS50 мае адрозненне, да лепшага 350 00:13:45,240 --> 00:13:47,440 ці яшчэ горш, у тым можа быць, лепш пазнаёміцца 351 00:13:47,440 --> 00:13:50,065 з пытаннямі акадэмічнай сумленнасць, чым большасці іншых, вядома. 352 00:13:50,065 --> 00:13:53,720 І на самай справе, гэта, наколькі мне вядома, што мы адпраўляем больш студэнтаў, на жаль, 353 00:13:53,720 --> 00:13:56,690 у дысцыплінарных мэтах кожны год у выніку. Так, 354 00:13:56,690 --> 00:13:59,040 у інтарэсах поўнага раскрыццё інфармацыі, давайце коратка казаць 355 00:13:59,040 --> 00:14:02,820 пра тое, што адбываецца ў CS50, і тое, што вам можа зрабіць, і што вы можаце мець на ўвазе. 356 00:14:02,820 --> 00:14:05,530 >> Такім чынам, вось з 2007 года, калі Я атрымаў у спадчыну курс, 357 00:14:05,530 --> 00:14:07,870 гэты лік выпадкаў Дошка аб'яваў. 358 00:14:07,870 --> 00:14:10,690 Дошка аб'яў з'яўляецца дысцыплінарная Гарварда орган, цяпер гонар Адвакат, 359 00:14:10,690 --> 00:14:13,790 у якіх выпадках, калі згадваюцца Студэнты зрабіць нешта, што, вядома-х 360 00:14:13,790 --> 00:14:15,470 Вучэбная праграма лічыць неабгрунтаваным. 361 00:14:15,470 --> 00:14:17,220 Там няма рэальнай карціны тут, я б сказаў. 362 00:14:17,220 --> 00:14:19,530 Гэта вагаецца над гадоў, але ў цэлым 363 00:14:19,530 --> 00:14:22,262 гэта колькасць выпадкі, якія згадваюцца. 364 00:14:22,262 --> 00:14:23,970 Колькасць студэнтаў якія ўдзельнічаюць? 365 00:14:23,970 --> 00:14:25,290 Гэта таксама мяняецца. 366 00:14:25,290 --> 00:14:27,930 Як правіла, у мінулым годзе за Напрыклад, 29 студэнтаў Гарварда 367 00:14:27,930 --> 00:14:29,740 былі Аб'ява селі, так бы мовіць. 368 00:14:29,740 --> 00:14:32,670 29 з іх цяперашніх студэнтаў, Двое з іх раней студэнтаў, 369 00:14:32,670 --> 00:14:35,610 хто супрацоўнічаюць у нейкі неспрыяльны чынам. 370 00:14:35,610 --> 00:14:38,400 І тады ў тэрмінах Працэнт, гэта, як правіла, каля 3% 371 00:14:38,400 --> 00:14:41,360 класа, які, на жаль, робіць гэтыя віды рашэнняў. 372 00:14:41,360 --> 00:14:44,470 >> Так, у мінулым годзе ён склаў 3,5% з цела студэнта CS50 ў 373 00:14:44,470 --> 00:14:46,820 што было аб'яву селі, так бы мовіць. 374 00:14:46,820 --> 00:14:48,490 >> Такім чынам, што ж ўсё гэта значыць? 375 00:14:48,490 --> 00:14:49,660 А што мы, уласна, рабіць? 376 00:14:49,660 --> 00:14:52,930 >> Такім чынам, для поўнага раскрыцця, мы абсалютна, як кампутарныя навукоўцаў, 377 00:14:52,930 --> 00:14:57,620 ёсць праграмныя сродкі ў нашым распараджэнні і гэта вельмі лёгка для нас, справядлівасці дзеля, 378 00:14:57,620 --> 00:15:00,980 аднакласнікі, што аднаго, якія не з'яўляюцца перасячэння гэтых ліній, каб перасекчы параўнання 379 00:15:00,980 --> 00:15:04,570 кожны прадстаўленне ў гэтым годзе супраць кожны прадстаўленне ў працягу апошніх васьмі гадоў. 380 00:15:04,570 --> 00:15:05,445 Праграмнае забеспячэнне робіць гэта. 381 00:15:05,445 --> 00:15:07,440 І ў канчатковым рахунку гэта чалавечыя вочы, якія вырашаюць 382 00:15:07,440 --> 00:15:11,410 ці не ставяцца некаторыя значэнне для далейшага судовага разбору, 383 00:15:11,410 --> 00:15:12,737 але праграмнае забеспячэнне, безумоўна, дапамагае. 384 00:15:12,737 --> 00:15:15,820 І гэта, шчыра кажучы, чаму, што я думаю, у нас ёсць такія вялікія лічбы ў CS50. 385 00:15:15,820 --> 00:15:18,540 Гэта не таму, што CS50 студэнты або CS студэнты больш 386 00:15:18,540 --> 00:15:20,840 як правіла, менш сумленнымі чым любыя іншыя студэнты, 387 00:15:20,840 --> 00:15:22,340 гэта проста ў нас ёсць інструменты і метады 388 00:15:22,340 --> 00:15:24,095 з якой зрабіць гэты першы праход. 389 00:15:24,095 --> 00:15:25,960 >> Але мы робім сачыць на ўсе гэтыя рэчы 390 00:15:25,960 --> 00:15:30,340 а таксама, зноў жа, у інтарэсах прызнаючы працу, якая быўшы пакласці 391 00:15:30,340 --> 00:15:32,397 у з супер большасці класа. 392 00:15:32,397 --> 00:15:34,230 І палітыка Курсу на акадэмічнай сумленнасці, 393 00:15:34,230 --> 00:15:37,021 хоць гэта куча пунктаў доўга з кучай патронаў 394 00:15:37,021 --> 00:15:40,490 якія, мы спадзяемся, цалкам чытаным, гэта сапраўды зводзяцца да разумных. 395 00:15:40,490 --> 00:15:44,000 І лепшы правіла, што мы прапануем да ў праграме 396 00:15:44,000 --> 00:15:46,020 гэта, сутнасць ўсіх работ, якія вам 397 00:15:46,020 --> 00:15:47,850 прадставіць гэты курс павінен быць свой уласны. 398 00:15:47,850 --> 00:15:51,510 І на самай справе, амаль усе з тых, у выпадках, указаных для прыняцця дысцыплінарных мер 399 00:15:51,510 --> 00:15:55,640 гэта таму, што нейкі студэнт позна ноч, як правіла, аказалася сваё код 400 00:15:55,640 --> 00:15:58,130 больш прама аднакласніку, які затым прыняў яго 401 00:15:58,130 --> 00:16:00,840 у поўным аб'ёме або значна іх. 402 00:16:00,840 --> 00:16:02,680 >> Але на самой справе, гэта нармальна. 403 00:16:02,680 --> 00:16:04,684 І сапраўды, у офісе гадзін, паперкі 404 00:16:04,684 --> 00:16:07,850 Вы былі перададзеныя, калі вы прыйшлі ў офіс гадзін на мінулым тыдні стымулюе столькі ж. 405 00:16:07,850 --> 00:16:09,710 Вы цалкам вітаецца і заахвочваецца 406 00:16:09,710 --> 00:16:12,340 каб абмеркаваць праблемныя наборы з аднакласнікамі. 407 00:16:12,340 --> 00:16:14,461 Каб дапамагчы адзін аднаму, калі каменем. 408 00:16:14,461 --> 00:16:17,710 Але наогул правіла павінна быць гэтым ", калі вы просіце аб дапамозе, 409 00:16:17,710 --> 00:16:20,412 Вы можаце паказаць свой код, каб іншыя, але вы не можаце паглядзець іх ». 410 00:16:20,412 --> 00:16:22,620 Так, іншымі словамі, калі я змагаецца з нейкай набор P 411 00:16:22,620 --> 00:16:25,290 а я сяджу там у Сталовая, або ў бібліятэцы, 412 00:16:25,290 --> 00:16:28,470 або ў класе спрабуючы знайсці няспраўнасць, 413 00:16:28,470 --> 00:16:30,340 Я магу, вядома паказаць мой код на маім экране 414 00:16:30,340 --> 00:16:32,590 каб чалавек, які сядзіць побач для мяне, вядома, персанал, 415 00:16:32,590 --> 00:16:33,600 але таксама аднакласнік. 416 00:16:33,600 --> 00:16:36,580 Але калі рашэнне, што мой аднакласнік прапануе гэта, ох, 417 00:16:36,580 --> 00:16:39,200 тут проста зірніце на тое, што Я зрабіў, што перасякае лінію. 418 00:16:39,200 --> 00:16:43,120 >> І я адважыўся б сказаць, што гэта, як правіла разумная рэч для большасці людзей 419 00:16:43,120 --> 00:16:45,030 вельмі лёгка вызначыць лінію. 420 00:16:45,030 --> 00:16:47,195 І так, паглядзець навучальны план для больш падрабязна. 421 00:16:47,195 --> 00:16:49,070 А цяпер адзін з найбольш спрэчныя аспекты 422 00:16:49,070 --> 00:16:52,529 з CS50 праграме, што я думаў, будзе казаць у заключэнне тут 423 00:16:52,529 --> 00:16:53,820 гэта так званы пункт шкадаванне. 424 00:16:53,820 --> 00:16:55,340 Такім чынам, вось усё ў парадку друку. 425 00:16:55,340 --> 00:16:58,090 Але ў цэлым мы бачылі за апошнія 8 гадоў плюс 426 00:16:58,090 --> 00:17:01,510 што, сапраўды, амаль усе CS50-х выпадкі акадэмічнай несумленнасці 427 00:17:01,510 --> 00:17:04,390 было вынікам толькі бедныя прыняцця рашэнняў позна ўначы. 428 00:17:04,390 --> 00:17:07,144 Вынікам стрэсу, вынік адсутнасці ежы, недахоп сну, 429 00:17:07,144 --> 00:17:09,560 занадта шмат камплектаў P, занадта шмат тэрміны, занадта шмат абавязацельстваў. 430 00:17:09,560 --> 00:17:13,520 Стрэс стварэння ў 2:00, 03:00 М., 4:00 раніцы, з тэрмін за гарамі. 431 00:17:13,520 --> 00:17:17,020 Большасць студэнтаў у гэтых выпадках толькі што зрабілі дрэнныя рашэнні 432 00:17:17,020 --> 00:17:20,619 што яны, магчыма, вельмі добра шкадаваць На наступную раніцу, калі не хвілін, 433 00:17:20,619 --> 00:17:25,490 але да мінулага года не было выпускны клапан, што гэтыя студэнты маглі 434 00:17:25,490 --> 00:17:29,140 на самай справе адкрыць на самай справе-адрас Праблема галава на без страху быць 435 00:17:29,140 --> 00:17:30,850 загрузкі з каледжа ў цэлым. 436 00:17:30,850 --> 00:17:33,260 >> І, сапраўды, мы ўвялі гэта шкадаванне пункт мінулым годзе, 437 00:17:33,260 --> 00:17:35,970 у якім гаворыцца, што калі на працягу 72 гадзін, тры дні, 438 00:17:35,970 --> 00:17:37,970 перасячэння некаторай лініі прадпісана ў праграме 439 00:17:37,970 --> 00:17:41,178 вы прыйшлі наперад, каб адзін з Курсу кіраўнікі, і мы павінны пагаварыць пра яе. 440 00:17:41,178 --> 00:17:43,720 Там па-ранейшаму быць некаторыя вынік, насуперак таму, што гэта 441 00:17:43,720 --> 00:17:44,990 Паведамлялася, наадварот. 442 00:17:44,990 --> 00:17:49,190 Існуе яшчэ некаторыя вынікі, якія гэта дзейсныя ходам, 443 00:17:49,190 --> 00:17:51,611 як правіла, абнуленне р набор або прымаючы некаторыя іншыя дзеянні, 444 00:17:51,611 --> 00:17:53,610 але мы, на самай справе, справіцца з гэтым самі і не 445 00:17:53,610 --> 00:17:58,460 гл яго вышэй былі вынікі можа быць значна больш сур'ёзнымі. 446 00:17:58,460 --> 00:18:01,810 І, сапраўды, падзяліцца, што адбылося у мінулым годзе, за восем гадоў, і ў цяперашні час 447 00:18:01,810 --> 00:18:04,950 дзевяць гадоў, выкладання гэтага курса і пасля важдацца з рознымі ручкамі, 448 00:18:04,950 --> 00:18:07,866 ператвараючы розныя цыферблаты над мінулым некалькі гадоў на акадэмічнай сумленнасці, 449 00:18:07,866 --> 00:18:11,920 і, бачачы, па дадзеных няма бачных Ўплыў, нават у прамовах, як гэта, 450 00:18:11,920 --> 00:18:15,490 гэта было рукі ўніз лепшае, што мы ўвялі педагагічна 451 00:18:15,490 --> 00:18:18,090 у восем гадоў разам гэтыя лініі ў CS50. 452 00:18:18,090 --> 00:18:21,010 >> 19 студэнтаў выйшлі наперад па гэтым артыкуле ў мінулым годзе. 453 00:18:21,010 --> 00:18:23,389 Мы не прынялі ніякіх мер для сем з гэтых студэнтаў, 454 00:18:23,389 --> 00:18:25,430 вызначэння таго, што яны залішне хваляваўся. 455 00:18:25,430 --> 00:18:27,304 Яны былі не, на самай справе, перасёк лінію, але гэта 456 00:18:27,304 --> 00:18:28,960 быў добры чат, каб тым не менш. 457 00:18:28,960 --> 00:18:31,190 Мы абнуляецца 11 ачкоў якія былі прадстаўлены. 458 00:18:31,190 --> 00:18:33,840 І ў адным выпадку мы папрасілі студэнт, каб зрабіць праблему ўстаноўкі. 459 00:18:33,840 --> 00:18:36,370 Але больш пераканаўчым, шчыра кажучы, з гэтых 19 чатаў, 460 00:18:36,370 --> 00:18:39,020 які быў нашмат больш, чым я Чакаецца, што кожны з іх 461 00:18:39,020 --> 00:18:41,370 10 хвілін да можа быць, гадзінная, таксама прынёс 462 00:18:41,370 --> 00:18:44,920 каб запаліць шэраг пытанняў, якія тычацца сямейныя пытанні, пытанні сябар, 463 00:18:44,920 --> 00:18:46,940 праблемы псіхічнага здароўя што мы тады займаліся, 464 00:18:46,940 --> 00:18:50,200 З студэнта дабраславеньне, жыхар дэкан, ці сяброў, або любое іншае лік 465 00:18:50,200 --> 00:18:51,450 дапаможных рэсурсаў. 466 00:18:51,450 --> 00:18:54,454 Так што гэта было, безумоўна, адна з лепшых відаў выкарыстання нашага часу 467 00:18:54,454 --> 00:18:55,870 і адзін з лепшых умяшанняў. 468 00:18:55,870 --> 00:18:58,870 >> Ня з тым, што ён не меў ўваход на хуткасці выяўлення 469 00:18:58,870 --> 00:19:00,909 акадэмічнай несумленнасці ў цэлым. 470 00:19:00,909 --> 00:19:02,950 І я адважуся сказаць ,, гэта падмноства студэнтаў у мінулым годзе 471 00:19:02,950 --> 00:19:06,350 быў дэмаграфічны, што мы раней ніколі не вызначаны да 472 00:19:06,350 --> 00:19:08,140 і ніколі не звязаны з раней. 473 00:19:08,140 --> 00:19:10,020 І так, гэта былі выдатныя гісторыі поспеху 474 00:19:10,020 --> 00:19:13,390 нават калі яны былі даведзены да святла менш чым аптымальных умовах. 475 00:19:13,390 --> 00:19:15,640 Так, майце гэта на ўвазе як вы зробіце, магчыма, 476 00:19:15,640 --> 00:19:17,390 некаторыя бедныя рашэння самастойна позна ўвечары, 477 00:19:17,390 --> 00:19:20,151 што існуе да таго часу, звяртацца як студэнт у гэтай сітуацыі 478 00:19:20,151 --> 00:19:23,400 валодаць і выйсці наперад, так што мы можам ёсць такі чаце і барацьбы з ім 479 00:19:23,400 --> 00:19:27,310 такім чынам, што гэта адукацыйны, а затым мы можам пакінуць гэта ззаду нас на наступны дзень. 480 00:19:27,310 --> 00:19:30,335 >> Так што без далейшых цырымоній, прыняць краю ад гэтай гутаркі, 481 00:19:30,335 --> 00:19:35,080 прычына шчанюкі Уверх проста, каб зламаць лёд на імгненне. 482 00:19:35,080 --> 00:19:39,560 І, на жаль, яны ўсё спяць, але тое, што павінна было адбыцца тут 483 00:19:39,560 --> 00:19:41,760 быў кожны павінен быў у трапятанне і від адпачынку 484 00:19:41,760 --> 00:19:43,910 пасля гэтага вельмі цяжкага размовы. 485 00:19:43,910 --> 00:19:46,930 Але, мабыць, я паклаў шчанюкі спаць. 486 00:19:46,930 --> 00:19:50,070 Але калі вы ідзяце ў CS50-х сайт слеш шчанюкі, 487 00:19:50,070 --> 00:19:51,610 вы можаце глядзець іх на працягу ўсяго дня. 488 00:19:51,610 --> 00:19:55,280 У прыватнасці, можа быць, 2:00, або 03:00, або 4:00 раніцы па начах 489 00:19:55,280 --> 00:19:57,480 каб убачыць невялікае палягчэнне стрэсу ёсць. 490 00:19:57,480 --> 00:19:58,805 Так што гэта слэш шчанюкоў. 491 00:19:58,805 --> 00:20:01,700 492 00:20:01,700 --> 00:20:02,200 Добра. 493 00:20:02,200 --> 00:20:03,020 Хіба гэта не весела? 494 00:20:03,020 --> 00:20:04,200 ДОБРА. 495 00:20:04,200 --> 00:20:07,140 Такім чынам, вернемся да некаторых кампутары навука, калі можна. 496 00:20:07,140 --> 00:20:10,600 >> Так, нагадаем, што ў мінулы раз мы пачалі шукаю не толькі на асноўнай, які 497 00:20:10,600 --> 00:20:13,930 быў функцыя па змаўчанні, то пры зялёны сцяг націснуў эквівалентныя, 498 00:20:13,930 --> 00:20:16,999 але мы таксама пачалі коратка пісаць некаторыя з нашых уласных функцый. 499 00:20:16,999 --> 00:20:20,040 І не да гэтага часу ні адна з гэтых функцый былі асабліва вялікімі ці мясістыя. 500 00:20:20,040 --> 00:20:24,570 Вы атрымаеце ў тыя больш Функцыі, верагодна, Р ўсталяваць 2, Р набор 3, 501 00:20:24,570 --> 00:20:26,410 безумоўна, Р набор 4 і наперад. 502 00:20:26,410 --> 00:20:29,340 Цяпер большасць вашых праграм, калі не ўсё з іх, вядома, для P 503 00:20:29,340 --> 00:20:31,550 набор 1 можа быць зроблена цалкам у асноўны. 504 00:20:31,550 --> 00:20:33,810 Калі ваша праграма толькі пяць ліній, 10 ліній, 505 00:20:33,810 --> 00:20:37,070 доўга нават 20 радкоў, выдатна Разумна пісаць 506 00:20:37,070 --> 00:20:40,930 усё ў асноўны і не больш чым ўскладняюць код, але тое, што мы робім сёння 507 00:20:40,930 --> 00:20:44,360 і далей спрабуе таксама ўвесці некаторыя добрыя метады праектавання 508 00:20:44,360 --> 00:20:48,660 так што, як ваш код становіцца больш складанай і, як праблемы 509 00:20:48,660 --> 00:20:51,690 Вы хочаце, каб вырашыць атрымаць складаней і больш цікавым вас ёсць, накшталт, 510 00:20:51,690 --> 00:20:55,850 інструменты ў панэлі інструментаў, з якой , Для распрацоўкі рашэнняў у іх. 511 00:20:55,850 --> 00:21:01,210 >> Такім чынам, давайце зірнем таму на гэтая праграма ад майго апошні тыдзень, што 512 00:21:01,210 --> 00:21:06,550 быў нулявы функцыі кропка С і заўважыць, што, папросту кажучы, 513 00:21:06,550 --> 00:21:10,310 гэта выглядае з двума Функцыі, асноўны і імя друк. 514 00:21:10,310 --> 00:21:13,160 І успамінаючы або, магчыма, зваротны інжынірынг сёння, 515 00:21:13,160 --> 00:21:16,880 тое, што было матывацыі для ўкаранення функцыя ў радку 28 называецца, 516 00:21:16,880 --> 00:21:18,180 Назва друк? 517 00:21:18,180 --> 00:21:21,745 Або тое, што гэта было прыкладам у Умовы прынцыпе або вынас, 518 00:21:21,745 --> 00:21:22,605 калі вы б. 519 00:21:22,605 --> 00:21:26,560 520 00:21:26,560 --> 00:21:27,300 Некаторыя шумы. 521 00:21:27,300 --> 00:21:28,830 Што? 522 00:21:28,830 --> 00:21:32,210 >> Ды так Функцыянальная декомпозиция гэта свайго роду фантазіі спосаб сказаць, 523 00:21:32,210 --> 00:21:34,690 раскласці вашу праграму на складовыя часткі 524 00:21:34,690 --> 00:21:37,530 а затым выкарыстоўваць тыя часткі сабраць цэлае. 525 00:21:37,530 --> 00:21:39,620 Так, што таксама толькі збольшага з рот ўжо 526 00:21:39,620 --> 00:21:42,050 але гэта, бадай, нават Лепшым прыкладам чаго-то 527 00:21:42,050 --> 00:21:43,081 проста называецца абстракцыяй. 528 00:21:43,081 --> 00:21:43,580 Дакладна? 529 00:21:43,580 --> 00:21:46,950 Абстракцыя будзе адзін з паўтаральных тым у CS50 530 00:21:46,950 --> 00:21:49,085 а таксама камп'ютэрныя навукі ў больш агульным, так як гэта 531 00:21:49,085 --> 00:21:53,060 тэхніка, з якой вы можаце вырашыць праблемы больш эфектыўна, таму што вы 532 00:21:53,060 --> 00:21:56,807 можаце напісаць рашэння больш інтуітыўна і такім чынам, што шалі 533 00:21:56,807 --> 00:21:58,390 і зразумела, іншымі людзьмі. 534 00:21:58,390 --> 00:21:59,860 Што я маю на ўвазе, што? 535 00:21:59,860 --> 00:22:04,340 >> Так, магчыма, гэта нашмат больш чытэльным паглядзець на праграмы, як гэта, 536 00:22:04,340 --> 00:22:05,990 супер кароткія, хоць ён ёсць. 537 00:22:05,990 --> 00:22:10,050 Калі вы бачыце ў радку 22, што ёсць функцыя называецца, імя друк. 538 00:22:10,050 --> 00:22:12,620 Адна Гэта імя кажа, што ён робіць. 539 00:22:12,620 --> 00:22:15,780 Гэтая функцыя, па-відаць займае ўваход паміж яе круглых дужках, 540 00:22:15,780 --> 00:22:18,600 і, мабыць, нешта робіць, як мяркуецца выводзіць імя. 541 00:22:18,600 --> 00:22:20,880 І так, хоць мы можа мець зусім 542 00:22:20,880 --> 00:22:25,280 зрабіў тое, што мы зрабілі тыдзень таму, які быў проста ўзяць гэты фактычны радок кода, 543 00:22:25,280 --> 00:22:28,710 пазбавіцца ад гэтага, і атрымаць пазбавіцца ад гэтага ўсё разам, 544 00:22:28,710 --> 00:22:31,436 мы накшталт абстрагуюцца паняцце друку імя. 545 00:22:31,436 --> 00:22:33,060 Я не хвалюе, калі вы выкарыстоўваеце друку размарожванне. 546 00:22:33,060 --> 00:22:35,601 Мяне не хвалюе, калі ў вас ёсць адсоткаў S і зваротны слеш Н. Яны 547 00:22:35,601 --> 00:22:37,270 неверагодна таемныя звесткі. 548 00:22:37,270 --> 00:22:40,090 Тое, што я клапачуся аб якасці праграміст друку імя. 549 00:22:40,090 --> 00:22:43,414 І так, што лепшы спосаб зрабіць гэта чым шляхам выкліку функцыі, імя друк? 550 00:22:43,414 --> 00:22:46,330 І так, што было адным з матываў для гэтага нешта накшталт гэтага. 551 00:22:46,330 --> 00:22:50,370 Стварэнне код больш чытэльным, больш шматразовыя, а таксама самастойна апісальны характар. 552 00:22:50,370 --> 00:22:52,120 Цяпер, давайце зірнем у іншым прыкладзе, 553 00:22:52,120 --> 00:22:56,220 які быў функцыі адзін, які мы мелі тут. 554 00:22:56,220 --> 00:23:00,367 >> Так, на гэты раз, мабыць, нават больш, пераканаўчым, паколькі, у гэтым выпадку, 555 00:23:00,367 --> 00:23:01,700 Я не хачу, каб проста атрымаць Int. 556 00:23:01,700 --> 00:23:03,320 Я хачу, каб атрымаць станоўчы Int. 557 00:23:03,320 --> 00:23:06,470 І атрымліваецца, каб атрымаць станоўчы Int вы павінны зрабіць кучу мітуснёй. 558 00:23:06,470 --> 00:23:06,969 Дакладна? 559 00:23:06,969 --> 00:23:09,600 Гэта не проста адна лінія патэлефанаваць, як імя друк быў, 560 00:23:09,600 --> 00:23:11,480 якія, па агульным прызнанні менш пераканаўчымі. 561 00:23:11,480 --> 00:23:16,000 >> Каб атрымаць станоўчы Int, logically-- дазвольце мне пракручваць ўніз, каб схаваць гэта. 562 00:23:16,000 --> 00:23:18,887 Што вы павінны зрабіць? 563 00:23:18,887 --> 00:23:20,720 Як і ўсе інструментаў, якія мы ёсць на дадзены момант з'яўляюцца 564 00:23:20,720 --> 00:23:24,440 рэчы, як друк DEF ад стандартных Бібліятэка, а таксама з бібліятэкі CS50 565 00:23:24,440 --> 00:23:26,990 у нас ёсць Атрымаць Int, Float і атрымаць, Атрымаць Доўгі, доўгі, атрымаць радок, 566 00:23:26,990 --> 00:23:29,260 але толькі адзін, Герман, прама зараз Атрымаць Int. 567 00:23:29,260 --> 00:23:32,970 Такім чынам, калі толькі ў вас ёсць інструмент у скрыні для інструментаў, гэта атрымаць Int, 568 00:23:32,970 --> 00:23:35,505 як мы можам ісці аб рэалізацыі яго, каб атрымаць станоўчы Int? 569 00:23:35,505 --> 00:23:35,929 >> АЎДЫТОРЫЯ: Стварыце часопіс і праверыць на Ці уваходнай, што яны далі 570 00:23:35,929 --> 00:23:36,762 быў станоўчым ці не. 571 00:23:36,762 --> 00:23:39,390 572 00:23:39,390 --> 00:23:40,640 >> СПІКЕР 1: Ідэальны. 573 00:23:40,640 --> 00:23:41,200 Дакладна. 574 00:23:41,200 --> 00:23:43,950 Іншым інструментам мы маем у нашым інструментаў ад тыдня ці два таму 575 00:23:43,950 --> 00:23:45,419 гэта толькі разнавіднасцяў цыклаў. 576 00:23:45,419 --> 00:23:48,210 І так, так, калі мы выкарыстоўваем час цыкл, або зрабіць у той час цыклу, або пярэдняя 577 00:23:48,210 --> 00:23:50,850 цыкл мы маглі б сысці з любым з тых, у той ці іншай форме. 578 00:23:50,850 --> 00:23:55,140 Мы можам рэалізаваць паняцце Get станоўчае INT толькі з дапамогай Get Int, 579 00:23:55,140 --> 00:23:57,830 а затым проста трымаць называючы яго зноў і трымаць прыставаць карыстальніка 580 00:23:57,830 --> 00:24:00,320 пакуль ён ці яна на самай справе дае нам тое, што мы хочам. 581 00:24:00,320 --> 00:24:03,260 >> І вось зараз, гэта абстракцыя працэсу 582 00:24:03,260 --> 00:24:05,680 атрымання станоўчага Int у функцыі пад назвай 583 00:24:05,680 --> 00:24:08,930 Атрымаць Станоўчы Int трохі больш пераканаўчым, паколькі глядзець на гэта. 584 00:24:08,930 --> 00:24:10,990 Гэта як 10 плюс радкоў кода, што 585 00:24:10,990 --> 00:24:15,090 ўдзельнічаюць у атрыманні станоўчага Int, і я сапраўды не хвалюе, як вы гэта робіце. 586 00:24:15,090 --> 00:24:17,850 Усё, што я ўсё роўна гэта ты можаце зрабіць гэта, і таму я маю 587 00:24:17,850 --> 00:24:21,660 скрытыя ўсе гэтыя дэталі за Функцыя называецца Атрымаць Станоўчы INT, што 588 00:24:21,660 --> 00:24:23,430 сапраўды, мае гэтую рабіць, пакуль завесы. 589 00:24:23,430 --> 00:24:27,660 >> І ўбачыць на мінулым тыдні сінтаксісу ёсць, але гэта толькі заяўляе N, 590 00:24:27,660 --> 00:24:29,800 і выводзіць Інструкцыя для карыстальніка. 591 00:24:29,800 --> 00:24:33,330 Ён заклікае Атрымаць Int, а затым ён правярае гэта ўмова зноў і зноў, 592 00:24:33,330 --> 00:24:35,230 і ня зноў, пакуль карыстальнік ўзаемадзейнічае. 593 00:24:35,230 --> 00:24:38,000 >> Так што цяпер, некалькі праверак на адэкватнасць. 594 00:24:38,000 --> 00:24:40,370 Для тых, хто, магчыма, знаёмыя з нейкай праграмавання, 595 00:24:40,370 --> 00:24:46,410 чаму N заявіў, чаму я ствараю N па-за зрабіць у той час цыкл? 596 00:24:46,410 --> 00:24:50,370 Чаму гэта на лініі 29, а не на 33, як, напрыклад. 597 00:24:50,370 --> 00:24:53,529 >> АЎДЫТОРЫЯ: Таму што, калі вы аб'явіць яго па-за, гэта свайго роду 598 00:24:53,529 --> 00:24:56,688 з больш, чым больш scope-- 599 00:24:56,688 --> 00:24:58,146 >> СПІКЕР 1: Добра. 600 00:24:58,146 --> 00:24:59,604 >> АЎДЫТОРЫЯ: --і калі вы абвясьцеце гэта ўнутры цыклу, [неразборліва] 601 00:24:59,604 --> 00:25:00,979 таму што ён не ведае пра гэта. 602 00:25:00,979 --> 00:25:02,819 603 00:25:02,819 --> 00:25:03,610 СПІКЕР 1: Дакладна. 604 00:25:03,610 --> 00:25:06,330 Калі я магу simplify-- гэта пытанне з вобласці бачнасці. 605 00:25:06,330 --> 00:25:11,530 І сфера ставіцца да кантэксту ў якой пераменная існуе або можа выкарыстоўвацца. 606 00:25:11,530 --> 00:25:15,050 І прыемна правіла тут з'яўляецца тое, што як правіла, пры аб'яўленні або зарэгістравацца 607 00:25:15,050 --> 00:25:21,642 пераменная Вы можаце толькі выкарыстоўваць яго ўнутры з бліжэйшых якая ахоплівае фігурныя дужкі. 608 00:25:21,642 --> 00:25:22,600 Такім чынам, што ж гэта значыць? 609 00:25:22,600 --> 00:25:26,551 Калі я, замест таго, каб, адмяніць гэта і ісці з тое, што адчувае сябе крыху прасцей. 610 00:25:26,551 --> 00:25:27,050 Дакладна? 611 00:25:27,050 --> 00:25:29,360 >> Радок 32 выглядае проста чысцей мяне цяпер. 612 00:25:29,360 --> 00:25:31,500 Я раблю і тое і іншае адзін раз і затым прысваення 613 00:25:31,500 --> 00:25:33,070 правая рука да левай руцэ. 614 00:25:33,070 --> 00:25:35,180 Праблема ў цяперашні час грунтуецца на што вызначэнне аб'ёму 615 00:25:35,180 --> 00:25:41,130 у тым, што N можа быць выкарыстаны ў лініі 31 і 32 ўнутры гэтага цыклу, 616 00:25:41,130 --> 00:25:45,100 але дзе па гэтым вызначэнні ён не можа быць выкарыстаны? 617 00:25:45,100 --> 00:25:45,660 У адпаведнасці што? 618 00:25:45,660 --> 00:25:46,160 Так. 619 00:25:46,160 --> 00:25:47,490 >> АЎДЫТОРЫЯ: 35. 620 00:25:47,490 --> 00:25:49,180 >> СПІКЕР 1: 35. 621 00:25:49,180 --> 00:25:50,480 Дакладна не 35. 622 00:25:50,480 --> 00:25:52,349 А таксама дзе яшчэ? 623 00:25:52,349 --> 00:25:52,890 АЎДЫТОРЫЯ: 34. 624 00:25:52,890 --> 00:25:55,040 СПІКЕР 1: Нават 34 праблематычным, таму што гэта 625 00:25:55,040 --> 00:25:56,450 па-за фігурных дужках. 626 00:25:56,450 --> 00:25:58,200 І так на самой справе, давайце паглядзім, што адбываецца. 627 00:25:58,200 --> 00:25:58,700 Дакладна? 628 00:25:58,700 --> 00:26:00,722 Гэта можа здацца трохі інтуітыўна або не могуць, 629 00:26:00,722 --> 00:26:02,680 але давайце паглядзім, што кампілятар павінен сказаць, калі 630 00:26:02,680 --> 00:26:04,730 мы ідзем у тэчку зыходнага сёння. 631 00:26:04,730 --> 00:26:08,950 Зрабіце адну функцыю. 632 00:26:08,950 --> 00:26:11,231 О, мой бог. 633 00:26:11,231 --> 00:26:12,980 Ну, я, нарэшце, скончыў што, дарэчы. 634 00:26:12,980 --> 00:26:14,030 Добра. 635 00:26:14,030 --> 00:26:15,510 І тое, што праблема тут? 636 00:26:15,510 --> 00:26:17,430 Вельмі таямніцай глядзець. 637 00:26:17,430 --> 00:26:19,570 Але вось тое, што я typed-- зрабіць адну функцыю. 638 00:26:19,570 --> 00:26:21,640 Вось тое, што робіць індукаваны які на самай справе 639 00:26:21,640 --> 00:26:23,705 з дапамогай кампілятара ляск з некаторымі з гэтых сцягоў 640 00:26:23,705 --> 00:26:25,080 што мы ўбачым зноў у хуткім часе. 641 00:26:25,080 --> 00:26:26,829 І зноў, заўсёды выглядаюць на першай памылкі, 642 00:26:26,829 --> 00:26:30,540 таму што гэта, магчыма, толькі каскадны бессэнсоўна ўплыў на іншых лініях. 643 00:26:30,540 --> 00:26:34,410 >> Дык што ж гэта азначае, што праблема ў функцыі 1.C. 644 00:26:34,410 --> 00:26:36,890 Менавіта на лініі 32. 645 00:26:36,890 --> 00:26:39,712 І гэта ў слупку, або характару, 13. 646 00:26:39,712 --> 00:26:42,670 Таму, калі ваш тэкставы рэдактар, які можа дапамагчы вам вызначыць, дзе праблема. 647 00:26:42,670 --> 00:26:47,079 Так што, калі я пракруткі уверх, што лінія 32? 648 00:26:47,079 --> 00:26:49,120 Гэта сапраўды гэты што ўжо выдзелены 649 00:26:49,120 --> 00:26:50,607 Права here-- выкарыстоўваўся пераменная п. 650 00:26:50,607 --> 00:26:51,440 Але гэта не выкарыстоўваўся. 651 00:26:51,440 --> 00:26:52,320 Я выкарыстоўваю яго. 652 00:26:52,320 --> 00:26:56,110 Але кампілятара блытаць, таму што яна існуе толькі ўнутры гэтай рамкі. 653 00:26:56,110 --> 00:26:57,727 І таму я не магу выкарыстоўваць яго тут. 654 00:26:57,727 --> 00:26:58,560 Я не магу выкарыстоўваць яго тут. 655 00:26:58,560 --> 00:27:01,320 І кампілятар, такім чынам, нават не хвалюе, што я спрабую. 656 00:27:01,320 --> 00:27:03,940 Гэта, здаецца, не будзе выкарыстоўвацца у межах сваёй фактычнай вобласці. 657 00:27:03,940 --> 00:27:08,854 >> Такім чынам, мы можам пашырыць сферу робячы менавіта тое, што мы пачалі with-- Int N. 658 00:27:08,854 --> 00:27:11,020 І хоць гэта не выглядаць элегантна, мабыць, 659 00:27:11,020 --> 00:27:15,110 і мы бярэм дадатковую радок тут, зараз ён знаходзіцца ў рамках ўсюды. 660 00:27:15,110 --> 00:27:15,970 Такім чынам, давайце паспрабуем яшчэ раз. 661 00:27:15,970 --> 00:27:19,040 Так што функцыю аднаго. 662 00:27:19,040 --> 00:27:19,610 Ніца. 663 00:27:19,610 --> 00:27:23,370 І зараз, калі я, калі я запускаю функцыю Адзін з іх, давайце яго адмоўнае 10, 664 00:27:23,370 --> 00:27:27,170 адмоўнае 1, 0, 1, і гэта сапраўды працуе. 665 00:27:27,170 --> 00:27:28,610 >> Так што яшчэ адно рашэнне тут. 666 00:27:28,610 --> 00:27:29,280 Вы ведаеце, што? 667 00:27:29,280 --> 00:27:31,230 Што рабіць, калі я сапраўды змагаюся з гэтым? 668 00:27:31,230 --> 00:27:33,140 Я не ведаю, дзе п мяркуецца ісці. 669 00:27:33,140 --> 00:27:33,723 Вы ведаеце, што? 670 00:27:33,723 --> 00:27:39,220 Я проста хачу, каб пакласці яго ўсё спосаб уверсе майго файла тут. 671 00:27:39,220 --> 00:27:42,835 Што б гэта зрабіць, як вы думаеце? 672 00:27:42,835 --> 00:27:43,335 Да? 673 00:27:43,335 --> 00:27:44,251 >> АЎДЫТОРЫЯ: [неразборліва]. 674 00:27:44,251 --> 00:27:47,964 675 00:27:47,964 --> 00:27:48,630 СПІКЕР 1: Так. 676 00:27:48,630 --> 00:27:50,560 Так што я зрабіў гэта глабальная, так бы мовіць. 677 00:27:50,560 --> 00:27:54,430 Калі ў вас ёсць пераменная, што гэта за межамі усе вашы функцыі, якія дазволена, 678 00:27:54,430 --> 00:27:58,780 і код варта кампіляваць і п цяпер будзе даступная не толькі ў Get 679 00:27:58,780 --> 00:28:02,490 станоўчае INT, але і ў main-- якія трохі трывожна, таму што ёсць 680 00:28:02,490 --> 00:28:04,864 ўжо ў п Асноўная, дык яшчэ на што ў проста moment-- 681 00:28:04,864 --> 00:28:06,530 але гэта будзе лічыцца дрэнны дызайн. 682 00:28:06,530 --> 00:28:06,910 Добра. 683 00:28:06,910 --> 00:28:08,570 Калі вы змушаныя звяртацца да нешта накшталт, ну, я буду 684 00:28:08,570 --> 00:28:10,125 проста пакласці яго тут, таму што код здаецца кампіляваць 685 00:28:10,125 --> 00:28:12,180 як правіла, не лепшая практыка. 686 00:28:12,180 --> 00:28:14,590 Хутчэй вы хочаце выбраць самы вузкі магчымы маштаб 687 00:28:14,590 --> 00:28:18,720 для зменных, які будзе азначаць, адбываецца з нашай першапачатковай канструкцыі, якая 688 00:28:18,720 --> 00:28:19,920 прама тут. 689 00:28:19,920 --> 00:28:24,400 >> Цяпер, як у бок, калі ты ёсць тут тоесна імя зменнай, 690 00:28:24,400 --> 00:28:27,750 спосаб справіцца з this-- хоць гэта не будзе адбывацца занадта often-- 691 00:28:27,750 --> 00:28:30,150 з'яўляецца тое, што гэта па-ранейшаму выдатна тут. 692 00:28:30,150 --> 00:28:35,000 Але гэта вызначэнне ў адпаведнасці п 22 будзе цень глабальны адзін. 693 00:28:35,000 --> 00:28:38,190 Так што гэта адзін будзе працаваць у Асноўны і глабальны 694 00:28:38,190 --> 00:28:41,670 на самай справе ўжываецца, калі вы знаходзіцеся ў атрымаць станоўчы INT Але пра гэта 695 00:28:41,670 --> 00:28:43,890 у іншы раз, але толькі для тых, каму цікава. 696 00:28:43,890 --> 00:28:45,970 >> Карацей кажучы, мы фіксуем гэта тут. 697 00:28:45,970 --> 00:28:49,220 Зараз давайце дражніць адзін ад аднаго два іншыя часткі перш чым мы разгледзім у адной апошнім радку кода 698 00:28:49,220 --> 00:28:50,170 у гэтай праграме. 699 00:28:50,170 --> 00:28:52,170 Атрымаць станоўчы Int. 700 00:28:52,170 --> 00:28:54,450 На левай баку яго слова ёсць слова INT. 701 00:28:54,450 --> 00:28:56,860 Што гэта азначае вы думаеце? 702 00:28:56,860 --> 00:28:58,900 Да гэтага часу мы ў асноўным бачылі несапраўднымі. 703 00:28:58,900 --> 00:28:59,400 Да? 704 00:28:59,400 --> 00:29:01,810 >> АЎДЫТОРЫЯ: Гэта тып пераменная, вы пытаецеся. 705 00:29:01,810 --> 00:29:04,550 >> СПІКЕР 1: Так, гэта тып, дазвольце мне не сказаць, пераменная, але тып значэння 706 00:29:04,550 --> 00:29:05,990 што я прашу вярнуцца да. 707 00:29:05,990 --> 00:29:08,070 І на самай справе, што гэта Інтуітыўна зразумелы тут, з надзеяй. 708 00:29:08,070 --> 00:29:08,200 Дакладна? 709 00:29:08,200 --> 00:29:10,250 Калі вы хочаце атрымаць станоўчае INT, што гэта вы 710 00:29:10,250 --> 00:29:12,920 хачу function-- як наш добраахвотнікі з апошняга тыдня 711 00:29:12,920 --> 00:29:15,720 перадаць вам назад кавалак паперы з міжнар на ім? 712 00:29:15,720 --> 00:29:19,190 І так мы паказалі, што так званы тып якое вяртаецца гэтай функцыяй 713 00:29:19,190 --> 00:29:20,450 гэта атрымаць станоўчы Int. 714 00:29:20,450 --> 00:29:22,990 Калі мы не хочам, каб яго нічога вяртаць, вы кажаце, несапраўднымі. 715 00:29:22,990 --> 00:29:25,270 Калі вы хочаце, каб вярнуцца радок, вы кажаце радок. 716 00:29:25,270 --> 00:29:27,310 Калі вы хочаце, каб вярнуцца паплавок, вы кажаце, паплавок. 717 00:29:27,310 --> 00:29:30,440 Але толькі той, які ўжываецца тут лагічна, таму што я выкарыстоўваю GET Int, 718 00:29:30,440 --> 00:29:34,130 хоць я абмяжоўваючы яго станоўчыя значэння, з'яўляецца вярнуць Int. 719 00:29:34,130 --> 00:29:38,380 >> Так, наадварот, што гэта значыць што ёсць пустэча ў дужках? 720 00:29:38,380 --> 00:29:40,130 Што дужкі як правіла, вызначаюць? 721 00:29:40,130 --> 00:29:40,588 Да? 722 00:29:40,588 --> 00:29:42,880 >> АЎДЫТОРЫЯ: Гэта азначае, што функцыя-х на самай справе не атрымаць яго. 723 00:29:42,880 --> 00:29:44,650 >> СПІКЕР 1: Гэта азначае, што функцыя-х на самай справе не атрымаць тое, што? 724 00:29:44,650 --> 00:29:45,430 >> АЎДЫТОРЫЯ: ўваход. 725 00:29:45,430 --> 00:29:46,763 >> СПІКЕР 1: уваход, наогул. 726 00:29:46,763 --> 00:29:49,870 Так сапраўды, калі дужка Тут вы паказваеце несапраўднымі, 727 00:29:49,870 --> 00:29:51,650 гэта проста азначае, я не хачу ніякай ўваход. 728 00:29:51,650 --> 00:29:53,269 Я разбяруся з праблемай сам. 729 00:29:53,269 --> 00:29:55,810 І на самай справе, вы не павінны расказаць атрымаць станоўчы INT-небудзь. 730 00:29:55,810 --> 00:29:59,630 Вы проста кажаце, атрымаць пазітыўны Int, і што Функцыя будзе сыходзіць і рабіць сваю справу. 731 00:29:59,630 --> 00:30:02,970 >> Але там было няшмат трук У мяне гуляў тут увесь гэты час 732 00:30:02,970 --> 00:30:04,970 каб пераканацца, што гэты код кампілюецца. 733 00:30:04,970 --> 00:30:09,620 Звярніце ўвагу, што int-- атрымаць станоўчы INT void-- на лініі 27. 734 00:30:09,620 --> 00:30:14,530 Але па нейкай прычыне, здавалася б, дзіўны гэта таксама тут, на лініі 16. 735 00:30:14,530 --> 00:30:18,530 І толькі для добрай мерай Я паўтару гэта так цалкам ідэнтычныя. 736 00:30:18,530 --> 00:30:21,640 І я сказаў прататып з трохі адна радок каментар. 737 00:30:21,640 --> 00:30:28,850 Што адбудзецца, калі я выдалю, што і Зараз запусціце зрабіць функцыя 1, увядзіце. 738 00:30:28,850 --> 00:30:29,350 Упс. 739 00:30:29,350 --> 00:30:32,527 740 00:30:32,527 --> 00:30:33,110 Пачакайце хвіліну. 741 00:30:33,110 --> 00:30:34,764 Дзе мой ўкладка? 742 00:30:34,764 --> 00:30:35,263 А? 743 00:30:35,263 --> 00:30:37,969 744 00:30:37,969 --> 00:30:39,620 У рэжыме чакання. 745 00:30:39,620 --> 00:30:41,570 Зрабіць функцыю 1. 746 00:30:41,570 --> 00:30:42,150 Там мы ідзем. 747 00:30:42,150 --> 00:30:42,310 ДОБРА. 748 00:30:42,310 --> 00:30:43,400 Калі б не выратавала яго належным чынам. 749 00:30:43,400 --> 00:30:45,220 Так, я думаю, што гэта крыху памылка тут, дзе я не 750 00:30:45,220 --> 00:30:46,636 бачачы імя укладкі ў цяперашні час. 751 00:30:46,636 --> 00:30:47,940 Так што тут адбываецца? 752 00:30:47,940 --> 00:30:52,210 Невідавочнае аб'яву функцыі атрымаць станоўчы Int з'яўляецца несапраўдным у C99. 753 00:30:52,210 --> 00:30:53,940 Так зман зноў. 754 00:30:53,940 --> 00:30:55,200 Так што гэта сведчыць аб? 755 00:30:55,200 --> 00:30:57,287 Ну, атрымліваецца, што З даволі дурное. 756 00:30:57,287 --> 00:30:59,912 Ну, гэта праграмаванне мова, або, хутчэй, кампілятар. 757 00:30:59,912 --> 00:31:02,940 Гэта ведае толькі тое, што ў вас ёсць вучыў яго, і гэта толькі 758 00:31:02,940 --> 00:31:05,640 будзе ведаць, што-то калі вы вучылі раней. 759 00:31:05,640 --> 00:31:07,960 Іншымі словамі, у Асноўны на дадзены момант, я 760 00:31:07,960 --> 00:31:10,900 спрабуе выклікаць функцыю называецца атрымаць станоўчы Int. 761 00:31:10,900 --> 00:31:14,120 Але кампілятар ня будзе заўважыць, што атрымаць станоўчую Int 762 00:31:14,120 --> 00:31:16,500 не існуе да таго часу, лініі 26. 763 00:31:16,500 --> 00:31:21,360 І так, што кампілятар робіць гэта проста Памылкі, як толькі ён трапляе ў лінію 17, 764 00:31:21,360 --> 00:31:23,700 кажучы невідавочнае аб'яву з атрымліваць станоўчую Int, які 765 00:31:23,700 --> 00:31:27,740 гэта проста мудрагелісты спосаб сказаць, я не ведаю, што атрымаць станоўчае INT яшчэ. 766 00:31:27,740 --> 00:31:31,240 >> Іншыя мовы, такія як Java і Python і Рубі можа глядзець наперад. 767 00:31:31,240 --> 00:31:32,240 З гэтага не робіць. 768 00:31:32,240 --> 00:31:35,110 І так як мы фіксуем гэта адзін з двух спосабаў. 769 00:31:35,110 --> 00:31:40,160 Альбо адзін, калі праблема ў тым, што атрымаць станоўчае INT не бачыў, 770 00:31:40,160 --> 00:31:42,150 Ну, дазвольце мне проста перанесьці яго на вяршыню. 771 00:31:42,150 --> 00:31:43,650 Гэта было выправіць гэтую праблему. 772 00:31:43,650 --> 00:31:46,790 Але ў цэлым, гэта лічыцца лепш тэхніка 773 00:31:46,790 --> 00:31:50,220 каб паставіць асноўную функцыю па крайняй топ, так што чалавечай чытання кода 774 00:31:50,220 --> 00:31:52,710 ведае, што робіць праграма, таму што галоўны не пахаваны ўсе 775 00:31:52,710 --> 00:31:53,960 спосаб унізе або ў сярэдзіне. 776 00:31:53,960 --> 00:31:55,130 Гэта на самым версе. 777 00:31:55,130 --> 00:31:56,410 Так што не адчуваю ідэальным. 778 00:31:56,410 --> 00:31:58,326 І вы можаце на самой справе атрымаць ў сітуацыі, калі 779 00:31:58,326 --> 00:32:00,820 Калі выклікі адной функцыі іншы, што выклікае іншую, 780 00:32:00,820 --> 00:32:04,630 ня вы можаце атрымаць на пытанне дзе ні можа пайсці вышэй іншы, лагічна. 781 00:32:04,630 --> 00:32:05,920 Гэта проста не магчыма. 782 00:32:05,920 --> 00:32:09,290 >> І так як на працу вакол гэтага проста ўзяць 783 00:32:09,290 --> 00:32:13,200 подпіс функцыі, што ў speak-- першая лінія, дзе гэта declared-- 784 00:32:13,200 --> 00:32:16,850 і проста скапіяваць, уставіць яго на зверху, а не з павойнымі braces-- 785 00:32:16,850 --> 00:32:17,980 проста кропкай з коскі. 786 00:32:17,980 --> 00:32:20,840 Гэта як маленькі намёк што гэта ў будучыні. 787 00:32:20,840 --> 00:32:26,630 І на самай справе, увесь гэты час, калі мы бачылі рэчы, як стандартны io.h 788 00:32:26,630 --> 00:32:33,040 і cs50.h, аналагічна, у тыя кропка г файлы ёсць іншыя прататыпы. 789 00:32:33,040 --> 00:32:35,250 І мы ўбачым, што ў хуткім часе. 790 00:32:35,250 --> 00:32:39,340 >> Карацей кажучы, калі ў вас ёсць праграма ў файле з мноствам функцый 791 00:32:39,340 --> 00:32:42,300 Акрамя асноўнага, вы амаль заўсёды хочуць абвясціць іх 792 00:32:42,300 --> 00:32:45,360 толькі шляхам іх першы лінія, кропкі з коскі, 793 00:32:45,360 --> 00:32:48,410 у самым пачатку файла. 794 00:32:48,410 --> 00:32:50,460 Гэта было шмат за адзін раз. 795 00:32:50,460 --> 00:32:53,130 Любыя пытанні? 796 00:32:53,130 --> 00:32:53,920 Любыя пытанні? 797 00:32:53,920 --> 00:32:54,530 Добра. 798 00:32:54,530 --> 00:32:59,760 >> Такім чынам, давайце рухацца далей, то нешта накшталт кашлю. 799 00:32:59,760 --> 00:33:00,260 Ох. 800 00:33:00,260 --> 00:33:00,570 Як фітынга. 801 00:33:00,570 --> 00:33:01,220 Добра. 802 00:33:01,220 --> 00:33:02,260 Кашаль. 803 00:33:02,260 --> 00:33:05,080 Дык вось з ажыццяўленне праграмы 804 00:33:05,080 --> 00:33:07,560 мы зрабілі іншы дзень у Драпін, што вельмі проста толькі 805 00:33:07,560 --> 00:33:08,691 кажа кашаль, кашаль, кашаль. 806 00:33:08,691 --> 00:33:09,190 Добра. 807 00:33:09,190 --> 00:33:11,136 І нехта сказаў некалькі дзён таму, што ёсць 808 00:33:11,136 --> 00:33:12,760 спосаб ачысткі гэты код ўжо. 809 00:33:12,760 --> 00:33:12,880 Усё ў парадку? 810 00:33:12,880 --> 00:33:15,440 Як толькі вы капіруеце і ўстаўкі, верагодна, дрэнны дызайн. 811 00:33:15,440 --> 00:33:18,725 Прынамсі, як толькі мы атрымаем чатыры ці пяць або 20 кашляе, ён адчувае сябе дрэннай практыкай. 812 00:33:18,725 --> 00:33:19,850 Мы проста трымаць копію, ўстаўку. 813 00:33:19,850 --> 00:33:22,213 Што відавочнае рашэнне ачысткай гэтую праграму ўверх? 814 00:33:22,213 --> 00:33:23,120 >> АЎДЫТОРЫЯ: Пятля. 815 00:33:23,120 --> 00:33:23,350 >> СПІКЕР 1: Так. 816 00:33:23,350 --> 00:33:24,070 Так што выкарыстоўвайце пятлю. 817 00:33:24,070 --> 00:33:27,697 І мы можам выкарыстоўваць для цыклу, у той час як цыкл, любую колькасць падыходаў. 818 00:33:27,697 --> 00:33:29,780 І на самай справе, вось што мы робім у версіі аднаго тут. 819 00:33:29,780 --> 00:33:32,250 Я замест перапісаць яго у версіі адзін з cough.c 820 00:33:32,250 --> 00:33:35,170 быць проста кашаль на працягу завесы. 821 00:33:35,170 --> 00:33:38,240 Добра, але ёсць магчымасць цяпер роду пачатку 822 00:33:38,240 --> 00:33:41,630 на гэта крыху больш як дызайн ўрок, які мы вучылі хвіліну назад, 823 00:33:41,630 --> 00:33:46,190 што this-- выказаць здагадку, што я хацеў стварыць функцыю, званую кашаль, 824 00:33:46,190 --> 00:33:49,730 давайце разгледзім на імгненне тое, што ён будзе выглядаць. 825 00:33:49,730 --> 00:33:51,900 Так што, калі я хачу што- кашляць, я проста трэба 826 00:33:51,900 --> 00:33:53,800 выкарыстоўваць друк п ўнутры функцыі. 827 00:33:53,800 --> 00:33:55,030 І сапраўды я. 828 00:33:55,030 --> 00:33:56,990 І на самай справе, усё гэта Час, у любы час вы 829 00:33:56,990 --> 00:33:59,000 друк нешта экран, праграміст 830 00:33:59,000 --> 00:34:00,610 назвалі б, што пабочны эфект. 831 00:34:00,610 --> 00:34:02,990 Гэта не я перадачы таму нехта значэнне. 832 00:34:02,990 --> 00:34:06,170 Гэта мне прымаць нейкія дзеянні што можа быць візуальна відавочна. 833 00:34:06,170 --> 00:34:10,672 Але гэтая функцыя кашаль, ён вяртае нічога на аснове яго першай лініі? 834 00:34:10,672 --> 00:34:12,880 Не, таму што тып якое вяртаецца значэння з'яўляецца несапраўдным, што проста азначае, 835 00:34:12,880 --> 00:34:14,250 гэта не ўручаць мне нічога наўзамен. 836 00:34:14,250 --> 00:34:16,791 Гэта можа быць нешта рабіць візуальна, але гэта не ўручаць мне 837 00:34:16,791 --> 00:34:18,639 рэзервовае паперку ​​як на мінулым тыдні. 838 00:34:18,639 --> 00:34:21,310 >> Ці трэба любы ўваход? 839 00:34:21,310 --> 00:34:21,810 Няма. 840 00:34:21,810 --> 00:34:23,134 І так гэта пустата тут. 841 00:34:23,134 --> 00:34:25,600 Так што гэта таксама свайго роду празмерна інжынерных гэтую праблему. 842 00:34:25,600 --> 00:34:26,099 Дакладна? 843 00:34:26,099 --> 00:34:28,820 Я зрабіў праграму больш комплекс, некалькі радкоў кода, 844 00:34:28,820 --> 00:34:31,889 Я не зрабіў гэта любы больш функцыянальным, але гэта 845 00:34:31,889 --> 00:34:34,210 будзе прыступкай, магчыма, для больш шырокай 846 00:34:34,210 --> 00:34:36,830 Кантэкст больш складаны код. 847 00:34:36,830 --> 00:34:38,150 Але тое, што пра гэта? 848 00:34:38,150 --> 00:34:42,050 Што я done-- проста зірнуўшы на гэта, не гледзячы на ​​каментар 849 00:34:42,050 --> 00:34:46,076 на самым версе file-- Што Я прынцыпова зрабіць тут з маім кашлем 850 00:34:46,076 --> 00:34:47,409 Рэалізацыя, адрозніваецца? 851 00:34:47,409 --> 00:34:48,327 Так, у спіне? 852 00:34:48,327 --> 00:34:51,384 >> АЎДЫТОРЫЯ: Зрабіце так, вы можаце ёсць персанаж выключыць. 853 00:34:51,384 --> 00:34:52,050 СПІКЕР 1: Так. 854 00:34:52,050 --> 00:34:53,270 Такім чынам, гэта адчувае сябе збольшага добра. 855 00:34:53,270 --> 00:34:53,389 Дакладна? 856 00:34:53,389 --> 00:34:56,600 Гэта як даданне да вашага функцыю праграма або ваша функцыя, у гэтым выпадку. 857 00:34:56,600 --> 00:34:57,830 Ён па-ранейшаму нічога не вяртае. 858 00:34:57,830 --> 00:35:00,538 Гэта можа мець візуальны пабочны эфект, таму што гэта тэлефануе друку п. 859 00:35:00,538 --> 00:35:02,800 Але цяпер я параметризовали функцыя, якая 860 00:35:02,800 --> 00:35:06,470 азначае, што я паказана прынятыя уваход тыпу Int і называюць яго п, 861 00:35:06,470 --> 00:35:08,510 але я мог бы назваць яго што-небудзь я хачу. 862 00:35:08,510 --> 00:35:11,550 На самай справе, гэта можа быць проста раз будзе яшчэ больш відавочным. 863 00:35:11,550 --> 00:35:13,310 І тады я мог бы змяніць гэта тут. 864 00:35:13,310 --> 00:35:16,450 Але справа ў тым, што гэта, як я стварыць функцыю, якая прымае ўвод. 865 00:35:16,450 --> 00:35:19,530 І калі ўспомніць, гартаць праз, магчыма, у адным онлайн 866 00:35:19,530 --> 00:35:23,000 з скразныя, то Чацвёрты і апошні прыклад кашаль, 867 00:35:23,000 --> 00:35:27,150 Вы заўважыце, тут я абагульніў мой код further-- роду абстрактную 868 00:35:27,150 --> 00:35:27,690 гэта далей. 869 00:35:27,690 --> 00:35:31,390 Як кашлю і чхання, абодва о, як сказаць нешта робіць або 870 00:35:31,390 --> 00:35:32,330 свайго роду гуку. 871 00:35:32,330 --> 00:35:34,725 Захаваць б адпаведныя драпін блок. 872 00:35:34,725 --> 00:35:37,350 І так, што я зрабіў у гэтай версіі, якія мы можам проста погляд на, 873 00:35:37,350 --> 00:35:43,170 з'яўляецца кашаль, як кажуць, [кашляе], кашаль, а тым часам, чханне 874 00:35:43,170 --> 00:35:44,570 як кажуць, [Achoo]. 875 00:35:44,570 --> 00:35:46,900 І таму я абагульніў рэалізацыя тых 876 00:35:46,900 --> 00:35:48,970 зараз рэалізацыі гэта агульная функцыя, 877 00:35:48,970 --> 00:35:51,490 кажуць, што цікава для сённяшніх мэтаў 878 00:35:51,490 --> 00:35:54,300 толькі таму, што ён па-ранейшаму не мае вяртаецца тыпу. 879 00:35:54,300 --> 00:35:56,398 Але колькі уваходаў яна ёсць? 880 00:35:56,398 --> 00:35:56,981 АЎДЫТОРЫЯ: Два. 881 00:35:56,981 --> 00:35:57,430 СПІКЕР 1: Два. 882 00:35:57,430 --> 00:35:59,263 І таму, калі вы хочаце, каб прыняць у двух аргументаў, 883 00:35:59,263 --> 00:36:00,710 проста падзеліце іх коскі. 884 00:36:00,710 --> 00:36:03,110 І калі вы хочаце, каб затым выкліку гэтай функцыі, 885 00:36:03,110 --> 00:36:05,800 Звярніце ўвагу, што толькі патэлефанаваць скажам, цытата, канец цытаты, 886 00:36:05,800 --> 00:36:09,090 для першага аргументу, агульная п, для другога аргументу. 887 00:36:09,090 --> 00:36:12,130 Такім чынам, яшчэ раз, мы проста павінны цяпер будаўнічыя блокі, так што мы сапраўды можам 888 00:36:12,130 --> 00:36:15,686 ажыццявіць некаторыя з нашых уласных функцый. 889 00:36:15,686 --> 00:36:16,570 Добра. 890 00:36:16,570 --> 00:36:19,690 Любыя пытанні па іх? 891 00:36:19,690 --> 00:36:22,400 >> Так што цяпер давайце адхіліце пласт, калі так. 892 00:36:22,400 --> 00:36:24,840 І мэта, у канчатковым рахунку гэта на наступным тыдні праблема набор 893 00:36:24,840 --> 00:36:27,710 будзе на cryptogrophy-- мастацтва караскацца інфармацыю. 894 00:36:27,710 --> 00:36:30,640 І, у прыватнасці, інфармацыя будзе ў вас зашыфраваць або расшыфраваць 895 00:36:30,640 --> 00:36:31,605 будзе тэкст. 896 00:36:31,605 --> 00:36:33,980 І так, што быццам запрашэння пытанне сёння як добра, 897 00:36:33,980 --> 00:36:38,480 што адбываецца пад капотам з тэкстам за ASCII ад нулявы тыдні, 898 00:36:38,480 --> 00:36:40,730 і як мы можам на самай справе пачаць маніпуляваць? 899 00:36:40,730 --> 00:36:43,070 Дык вось імя Zamyla ст. 900 00:36:43,070 --> 00:36:47,380 І ў тэксце, якія могуць быць уведзеныя у, як функцыі Get струн. 901 00:36:47,380 --> 00:36:52,540 І пачынаючы з гэтага моманту, калі вы бачыце радок, як this-- Z-A-M-Y-L-A-- 902 00:36:52,540 --> 00:36:56,550 пачаць думаць пра яго, як быццам кожны з тых персанажаў у скрынцы яго 903 00:36:56,550 --> 00:36:57,050 самастойна. 904 00:36:57,050 --> 00:36:59,460 І сапраўды, праз тыдзень або каля таго гэта Час, кожны з гэтых скрынак 905 00:36:59,460 --> 00:37:04,280 будзе прадстаўляць вельмі канкрэтна блок memory-- ўкус памяці. 906 00:37:04,280 --> 00:37:07,050 Такім чынам, кожны з гэтых лістоў, У канчатковым рахунку, будзе прадстаўляць 8 біт. 907 00:37:07,050 --> 00:37:10,560 І мы сапраўды ўбачыць, што адбываецца на пад капотам у маім кампутары. 908 00:37:10,560 --> 00:37:13,440 >> Але для не дастаткова проста паглядзець на Zamyla 909 00:37:13,440 --> 00:37:17,520 праз гэтую лінзу, прычым кожны з гэтыя лісты ў яго ўласнай скрынцы. 910 00:37:17,520 --> 00:37:22,697 І дастаткова добра ў C мы можам доступу да кожнага з гэтых скрынь непасрэдна. 911 00:37:22,697 --> 00:37:25,530 Так што калі вы хочаце атрымаць першы Ліст яе імя, супер проста на C. 912 00:37:25,530 --> 00:37:28,410 Калі вы хочаце, каб атрымаць апошні Ліст, супер проста, як добра 913 00:37:28,410 --> 00:37:30,240 з кавалкам новага сінтаксісу. 914 00:37:30,240 --> 00:37:36,250 >> Так што я збіраюся ісці наперад у CS50 IDE і адкрыць радок нулявой кропкі C. 915 00:37:36,250 --> 00:37:40,270 І ў гэтым прыкладзе тут ёсць пара новых рэчаў адбываецца. 916 00:37:40,270 --> 00:37:44,360 Такім чынам, спачатку ў радку 19, мы бачылі гэта before-- атрымаць радок. 917 00:37:44,360 --> 00:37:49,840 Так як для хуткай праверкі наяўнасці свядомасці, калі хто-то можа прапанаваць да славесна 918 00:37:49,840 --> 00:37:52,662 Тлумачэнне непрафесіянала з тое, што адбываецца ў радку 19. 919 00:37:52,662 --> 00:37:55,370 Як толькі перавесці гэта на Англійская, што сусед ня CS50 920 00:37:55,370 --> 00:37:56,416 маглі б зразумець. 921 00:37:56,416 --> 00:37:56,916 Так. 922 00:37:56,916 --> 00:37:59,749 >> АЎДЫТОРЫЯ: Ёсць карыстацкі ўваход А радок і захоўваць яго ў зменнай с. 923 00:37:59,749 --> 00:38:01,934 924 00:38:01,934 --> 00:38:02,600 СПІКЕР 1: Добра. 925 00:38:02,600 --> 00:38:05,579 Карыстальнік увёў радок і захоўваць яго ў зменнай с. 926 00:38:05,579 --> 00:38:06,120 Гэта выдатна. 927 00:38:06,120 --> 00:38:08,090 Так што на правай руцэ бок, мы называем Get радок. 928 00:38:08,090 --> 00:38:10,340 Гэта вяртае значэнне што не атрымаў прызначаны 929 00:38:10,340 --> 00:38:14,230 ад правага боку да левай рукой- бок у зменнай пад назвай S Тое 930 00:38:14,230 --> 00:38:15,950 прызначаны для захоўвання радка. 931 00:38:15,950 --> 00:38:16,800 Дакладна. 932 00:38:16,800 --> 00:38:20,000 >> Так што цяпер лініі 22, за каментар у радку 21, 933 00:38:20,000 --> 00:38:22,780 Відавочна, друкуе гэты радок адзін знак у радку. 934 00:38:22,780 --> 00:38:23,740 Але як? 935 00:38:23,740 --> 00:38:27,040 Такім чынам, перш за ўсё, мы ініцыялізуючы я 0. 936 00:38:27,040 --> 00:38:31,061 А потым, як нам дабрацца да канец імя Zamyla ў? 937 00:38:31,061 --> 00:38:32,810 Ну, у канцы Імя Zamyla, я мог 938 00:38:32,810 --> 00:38:38,151 ўручную ўвесці апошняга знака яе імя так ці інакш, альбо лічбу яго. 939 00:38:38,151 --> 00:38:38,650 Дакладна? 940 00:38:38,650 --> 00:38:43,500 Калі мы вернемся here-- Z-А-М-L-- У-Л-A--, каб я мог ўвесці. 941 00:38:43,500 --> 00:38:47,340 Што індэкс Апошні ліст Zamyla ў? 942 00:38:47,340 --> 00:38:52,517 Калі гэта 0-- казаць як programmer-- 0, 1, 2, 3, 4, 5, 943 00:38:52,517 --> 00:38:56,570 Я heard-- самай справе так, апошнюю літару па назве Zamyla з'яўляецца шостым, 944 00:38:56,570 --> 00:38:58,890 але калі лічыць з 0, гэта будзе нумар 5. 945 00:38:58,890 --> 00:39:01,320 Так што майце гэта на ўвазе. 946 00:39:01,320 --> 00:39:04,929 >> Аказваецца, ёсць функцыя ў З называецца STRLEN, і назад у дзень 947 00:39:04,929 --> 00:39:06,720 і па гэты дзень усе яшчэ, шмат праграмістаў 948 00:39:06,720 --> 00:39:09,524 выбраць сінхранізаваць імёны для сваіх Функцыі, якія гучаць як словы 949 00:39:09,524 --> 00:39:10,440 яны спрабуюць сказаць. 950 00:39:10,440 --> 00:39:12,590 Так StrLen з'яўляецца даўжыня радка. 951 00:39:12,590 --> 00:39:18,168 І так, што б даўжыня радка S вярнуцца, калі Zamyla з'яўляецца уваходам? 952 00:39:18,168 --> 00:39:19,569 >> АЎДЫТОРЫЯ: Пяць. 953 00:39:19,569 --> 00:39:22,090 >> СПІКЕР 1: Z-А-М-У-Л. Шэсць. 954 00:39:22,090 --> 00:39:22,590 Дакладна? 955 00:39:22,590 --> 00:39:23,940 Што даўжыня імя Zamyla ў? 956 00:39:23,940 --> 00:39:24,440 Дакладна? 957 00:39:24,440 --> 00:39:26,240 І толькі ў рэальнасці, шэсць літар. 958 00:39:26,240 --> 00:39:26,740 Дакладна? 959 00:39:26,740 --> 00:39:28,940 І так што ж гэта значыць для нашага цыклу? 960 00:39:28,940 --> 00:39:32,130 Мы збіраемся, каб перайсці ад 0 да шасці, які 961 00:39:32,130 --> 00:39:33,650 збіраецца даць нам пяць ітэрацый. 962 00:39:33,650 --> 00:39:34,890 Што мы робім на кожнай ітэрацыі? 963 00:39:34,890 --> 00:39:36,870 Ну, адсоткаў З, хто-то здагадаліся другі дзень, 964 00:39:36,870 --> 00:39:38,710 азначае запаўняльнік для чаго? 965 00:39:38,710 --> 00:39:39,335 >> АЎДЫТОРЫЯ: Чар. 966 00:39:39,335 --> 00:39:40,293 СПІКЕР 1: Проста сімвал. 967 00:39:40,293 --> 00:39:42,877 Такім чынам, адзін character-- ня некалькі знакаў, як радок. 968 00:39:42,877 --> 00:39:45,251 А потым вось новая лінія што ў нас ёсць раздрукоўкі. 969 00:39:45,251 --> 00:39:46,580 А потым вось новы сінтаксіс. 970 00:39:46,580 --> 00:39:51,130 Калі вы хочаце, каб раздрукаваць я-й знак у радку S, так бы мовіць, 971 00:39:51,130 --> 00:39:54,060 Вы можаце проста сказаць, што найменне радкі S, 972 00:39:54,060 --> 00:39:58,230 а затым адкрыйце квадратная дужка, і затым зачыніў квадратную дужку, з I 973 00:39:58,230 --> 00:39:58,780 сярэдні. 974 00:39:58,780 --> 00:40:01,430 І гэта збольшага добра, што гэта выгляд выглядае як квадрат 975 00:40:01,430 --> 00:40:06,210 гэтак жа, як квадраты, у якіх Zamyla-х існуюць знакі на гэтым малюнку няма. 976 00:40:06,210 --> 00:40:09,970 >> Так што, калі я на самой справе запусціць гэтую Цяпер, давайце паглядзім, што адбываецца. 977 00:40:09,970 --> 00:40:15,190 Зрабіць радок 0 кропка слэш радок 0, і тады я 978 00:40:15,190 --> 00:40:16,720 збіраецца ўвесці імя Zamyla ст. 979 00:40:16,720 --> 00:40:19,428 Там няма хуткае, таму што я не выкарыстоўваць друк п, але гэта нармальна. 980 00:40:19,428 --> 00:40:20,660 Я проста ведаю, што рабіць. 981 00:40:20,660 --> 00:40:23,240 І на самай справе, ён друкуе Імя Zamyla, у адной на радку. 982 00:40:23,240 --> 00:40:25,760 >> Зараз давайце трохі неразумныя. 983 00:40:25,760 --> 00:40:28,461 Выкажам здагадку, што я не ведаў, аб StrLen i я думаў ,, 984 00:40:28,461 --> 00:40:31,460 Усё ў парадку, ніхто не збіраецца мець назваць больш, чым, як 50 знакаў. 985 00:40:31,460 --> 00:40:36,360 Давайце ісці наперад і перакампіляваць гэта і запусціце яго, а затым увядзіце ў Zamyla 986 00:40:36,360 --> 00:40:37,160 зноў. 987 00:40:37,160 --> 00:40:40,850 Лагічна, што з'яўляецца Праграма будзе спрабаваць надрукаваць? 988 00:40:40,850 --> 00:40:49,545 Z-А-М-У-Л-А, то, як 45 невядомыя байт памяці. 989 00:40:49,545 --> 00:40:51,670 І на самай справе, мы вернемся да гэтай ідэі памяці. 990 00:40:51,670 --> 00:40:54,180 Але толькі лагічна, калі Імя Zamyla з'яўляецца так доўга, 991 00:40:54,180 --> 00:40:56,450 у адпаведнасці з выявай тут, што мы гаворым, 992 00:40:56,450 --> 00:40:59,810 гэта трымаць друк, друк трымаць, трымаць друк, друк трымаць, трымаць друк, 993 00:40:59,810 --> 00:41:03,781 ўвесь шлях да 50 сімвала, якія хто ведае, што адбудзецца. 994 00:41:03,781 --> 00:41:05,030 Такім чынам, давайце на самай справе зірнуць. 995 00:41:05,030 --> 00:41:06,720 Давайце ўвесці Zamyla. 996 00:41:06,720 --> 00:41:07,250 Цікава. 997 00:41:07,250 --> 00:41:08,190 Нам пашанцавала. 998 00:41:08,190 --> 00:41:09,700 Проста цэлая куча прабелаў. 999 00:41:09,700 --> 00:41:09,930 Ох. 1000 00:41:09,930 --> 00:41:11,120 Там адзін персанаж у стылі фанк. 1001 00:41:11,120 --> 00:41:14,577 Гэта выглядае накшталт як дзіўнае пытанне пазначыць там, але ёсць імя Zamyla ст. 1002 00:41:14,577 --> 00:41:15,660 Давайце сапраўды неразумныя. 1003 00:41:15,660 --> 00:41:20,000 Як наконт таго, раздрукаваць 500 блокі ў невядомасць? 1004 00:41:20,000 --> 00:41:24,380 Давайце ісці наперад і зрабіць гэта а затым паўторна запусціць. 1005 00:41:24,380 --> 00:41:27,980 І давайце поўны экран гэта, таму што мы павінны бачыць больш прасторы. 1006 00:41:27,980 --> 00:41:30,460 Zamyla. 1007 00:41:30,460 --> 00:41:31,830 Зноў пашанцавала. 1008 00:41:31,830 --> 00:41:33,070 >> Ці можам мы атрымаць больш неразумныя? 1009 00:41:33,070 --> 00:41:36,070 Давайце больш неразумныя. 1010 00:41:36,070 --> 00:41:39,350 50000 знакаў. 1011 00:41:39,350 --> 00:41:41,390 Гэта, вядома, не самая добрая ідэя. 1012 00:41:41,390 --> 00:41:41,890 Добра. 1013 00:41:41,890 --> 00:41:42,990 Зрабіць радок 0. 1014 00:41:42,990 --> 00:41:44,720 Гэта будзе наш апошні дэма. 1015 00:41:44,720 --> 00:41:47,261 Zamyla. 1016 00:41:47,261 --> 00:41:48,632 Цьфу. 1017 00:41:48,632 --> 00:41:50,010 Цьфу. 1018 00:41:50,010 --> 00:41:50,680 ДОБРА. 1019 00:41:50,680 --> 00:41:54,407 Так мая памяць сапраўды пусты прама цяпер, якая на самой справе свайго роду зручна. 1020 00:41:54,407 --> 00:41:55,990 Тое, што я спрабую атрымаць усе правы, мэтай якіх. 1021 00:41:55,990 --> 00:41:57,614 А цяпер я проста хачу, каб атрымаць неразумныя. 1022 00:41:57,614 --> 00:41:58,570 500000. 1023 00:41:58,570 --> 00:42:03,860 Make-- давайце поўнаэкранным яго. 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 Там мы ідзем. 1028 00:42:13,390 --> 00:42:15,610 Я паняцця не маю, што гэта ёсць, але гэта гучыць дрэнна. 1029 00:42:15,610 --> 00:42:16,110 Добра. 1030 00:42:16,110 --> 00:42:20,322 І на самай справе, у бліжэйшы час, калі вы сярод нямногіх шчасліўчыкаў ў працоўны час 1031 00:42:20,322 --> 00:42:22,780 і ў задачы ўсталяваць адзін, вам цалкам можа сутыкнуцца з гэтым. 1032 00:42:22,780 --> 00:42:25,490 Сегментацыя віна на самай справе маюць выразна пэўны сэнс. 1033 00:42:25,490 --> 00:42:28,450 Гэта азначае, нейкая памылка якія адносяцца да сегмента памяці. 1034 00:42:28,450 --> 00:42:30,490 І з пункту гледжання непрафесіяналы, гэта азначае, мы закранулі 1035 00:42:30,490 --> 00:42:34,780 memory-- мы выкарыстоўвалі аператыўную памяць у маім кампутары што я не павінен быў доступ. 1036 00:42:34,780 --> 00:42:37,050 І вось што і магутны і таксама небяспечна 1037 00:42:37,050 --> 00:42:39,910 аб З, што вы сапраўды ёсць неабмежаваны доступ 1038 00:42:39,910 --> 00:42:45,910 ў аб'ёме памяці вашай праграмы або байт або АЗП, больш канкрэтна. 1039 00:42:45,910 --> 00:42:49,510 >> Таму, нават калі імя Zamyla ў мае даўжыню ўсяго шэсць сімвалаў, 1040 00:42:49,510 --> 00:42:51,450 Я ўсё яшчэ магу пайсці куды-небудзь ў памяці я хачу. 1041 00:42:51,450 --> 00:42:53,491 І, як у бок, калі ў Вас ёсць калі-небудзь чытаў некаторыя артыкулы 1042 00:42:53,491 --> 00:42:55,610 на працягу многіх гадоў аб некаторых сервер або нейкая праграма 1043 00:42:55,610 --> 00:42:58,654 на ўзлом або узламаны, гэта скарысталіся чымсьці 1044 00:42:58,654 --> 00:43:00,820 называецца перапаўненне буфера эксплойт, які мы будзем на самай справе 1045 00:43:00,820 --> 00:43:04,970 пагаварыць на працягу некалькіх тыдняў, гэта як правіла, са спасылкай на тое падманваючы 1046 00:43:04,970 --> 00:43:09,090 кампутар будзе добра ў за межы памяці 1047 00:43:09,090 --> 00:43:11,410 што яна павінна мець, і знайсці нешта сакавітыя 1048 00:43:11,410 --> 00:43:13,530 што memory-- пароль, мабыць, спосаб 1049 00:43:13,530 --> 00:43:16,990 абыходу некаторы серыйны нумар праверыць, ці проста наогул у стане 1050 00:43:16,990 --> 00:43:20,360 каб падмануць кампутар выконвае код, які не быў прызначаны. 1051 00:43:20,360 --> 00:43:22,360 Але давайце вернемся да Рэальнасць на секунду 1052 00:43:22,360 --> 00:43:24,550 дзе гэтая праграма была рэалізаваны з STRLEN, 1053 00:43:24,550 --> 00:43:26,110 і ўвесці адно тут. 1054 00:43:26,110 --> 00:43:30,030 Што новага ў гэтых трох верхніх радках? 1055 00:43:30,030 --> 00:43:30,910 >> Так радок кропка ч. 1056 00:43:30,910 --> 00:43:35,490 Аказваецца ёсць гэтая бібліятэка называецца Радок кропка Н, або радок Бібліятэка, 1057 00:43:35,490 --> 00:43:38,490 якога файл загалоўка, так бы мовіць, гэта радок кропка ч, што дае мне 1058 00:43:38,490 --> 00:43:40,860 Доступ да гэтай функцыі STRLEN. 1059 00:43:40,860 --> 00:43:43,841 Калі я апускаю, што кампілятар збіраецца крычаць на мяне ў нейкай форме. 1060 00:43:43,841 --> 00:43:44,590 Але вы ведаеце, што? 1061 00:43:44,590 --> 00:43:46,090 Зараз давайце сапраўды нюансаў. 1062 00:43:46,090 --> 00:43:50,820 У лініі 22, нешта накшталт з inefficient-- дрэнна распрацаваны, 1063 00:43:50,820 --> 00:43:53,990 arguably-- аб гэтай радкі кода. 1064 00:43:53,990 --> 00:43:56,280 Ўспомніце, як для цыклу рэалізуюцца 1065 00:43:56,280 --> 00:44:00,140 і якія крокі паўторыцца і зноў і again-- ініцыялізацыі, 1066 00:44:00,140 --> 00:44:04,110 стан, код, які запускаецца на выкананне, то прырашчэнне 1067 00:44:04,110 --> 00:44:07,880 або змяненне, той стан, затым код, то змена, то 1068 00:44:07,880 --> 00:44:11,280 стан, затым код, то змена, і гэтак далей. 1069 00:44:11,280 --> 00:44:15,320 Так што можа быць трохі неспакой ці дрэнна зроблена тут? 1070 00:44:15,320 --> 00:44:16,387 Так, у сінім. 1071 00:44:16,387 --> 00:44:18,220 АЎДЫТОРЫЯ: STRLEN з'яўляецца называецца шмат, шмат разоў. 1072 00:44:18,220 --> 00:44:20,654 1073 00:44:20,654 --> 00:44:21,320 СПІКЕР 1: Так. 1074 00:44:21,320 --> 00:44:23,700 Так называецца StrLen шмат разоў, але тое, што 1075 00:44:23,700 --> 00:44:27,113 Даўжыня імя Zamyla гадоў Упершыню цыкл выконваецца? 1076 00:44:27,113 --> 00:44:27,860 >> АЎДЫТОРЫЯ: Шэсць. 1077 00:44:27,860 --> 00:44:28,110 >> СПІКЕР 1: Шэсць. 1078 00:44:28,110 --> 00:44:30,976 Ну, тое, што даўжыня яе імя другі раз код выконваецца? 1079 00:44:30,976 --> 00:44:31,432 >> АЎДЫТОРЫЯ: Шэсць. 1080 00:44:31,432 --> 00:44:31,890 >> СПІКЕР 1: Добра. 1081 00:44:31,890 --> 00:44:32,720 Ён па-ранейшаму шэсць. 1082 00:44:32,720 --> 00:44:33,220 Дакладна? 1083 00:44:33,220 --> 00:44:35,260 Імя Zarla мае не змянілася, нават калі я шукаю 1084 00:44:35,260 --> 00:44:38,240 толькі на частку літар у яе імя. 1085 00:44:38,240 --> 00:44:41,349 І таму той факт, што я эфектыўна Задаючы гэтае пытанне, што 1086 00:44:41,349 --> 00:44:44,640 даўжыня Zamyla, што даўжыня з Zamyla, што даўжыня Zamyla, 1087 00:44:44,640 --> 00:44:47,990 шэсць асобных разы, або сем нават, проста глупства, 1088 00:44:47,990 --> 00:44:50,390 таму што гэта нязменная, што адказам. 1089 00:44:50,390 --> 00:44:53,550 І так, што я мог на самай справе зрабіць this-- ў радку аднаго 1090 00:44:53,550 --> 00:44:55,680 У мяне ёсць трохі палепшаную версію тут. 1091 00:44:55,680 --> 00:45:00,110 There-- whoops-- радок два я ёсць нязначна лепшы варыянт, у якім 1092 00:45:00,110 --> 00:45:05,010 Я this--, а не проста ініцыялізацыі I 0, я таксама з коскі 1093 00:45:05,010 --> 00:45:07,990 абвясціць зменную з імем другога N-- я не павінен сказаць Int зноў. 1094 00:45:07,990 --> 00:45:09,220 Я не павінен, на самай справе. 1095 00:45:09,220 --> 00:45:10,380 Але я кажу, п. 1096 00:45:10,380 --> 00:45:13,610 І тады я ініцыялізаваць н да StrLen п, так што зараз 1097 00:45:13,610 --> 00:45:17,110 колькі разоў STRLEN атрымаць выкананы ў агульнай складанасці? 1098 00:45:17,110 --> 00:45:17,610 Толькі адзін раз. 1099 00:45:17,610 --> 00:45:20,257 І так гэта тое, што мы маем на ўвазе раней аб лепшы дызайн. 1100 00:45:20,257 --> 00:45:23,090 На самай справе, як толькі ваш код правільны, ісці наперад і думаць праз, 1101 00:45:23,090 --> 00:45:26,820 я, выкарыстоўваючы ў якасці мала памяці або некалькі секунд 1102 00:45:26,820 --> 00:45:30,409 або мілісекунды часу кампутара як можна рэалізаваць некаторыя праблемы? 1103 00:45:30,409 --> 00:45:32,200 І я збіраюся пракруткі і толькі згадаць 1104 00:45:32,200 --> 00:45:34,283 што ёсць гэта згадка нуль ў гэтай версіі, 1105 00:45:34,283 --> 00:45:36,390 але мы вернемся да таго, што ў хуткім часе. 1106 00:45:36,390 --> 00:45:41,010 Таму што цяпер, давайце зірнем на, дзе гэта адбываецца, каб прывесці нас. 1107 00:45:41,010 --> 00:45:44,110 Такім чынам, адна, атрымліваецца, што цяпер у нас ёсць магчымасць 1108 00:45:44,110 --> 00:45:46,860 паглядзець на асобныя знакі, мы можам выкарыстоўваць нешта 1109 00:45:46,860 --> 00:45:50,807 ад тыдня 0, што было вельмі заблытанымі, а накшталт нецікава ў той час. 1110 00:45:50,807 --> 00:45:53,390 Але цяпер, і асабліва, калі мы атрымаць у крыптаграфіі ў тыдзень, 1111 00:45:53,390 --> 00:45:54,820 гэта будзе вельмі магутным. 1112 00:45:54,820 --> 00:45:57,450 Аказваецца, што з некаторымі Інтс і плавае Data types-- 1113 00:45:57,450 --> 00:46:00,300 і сімвалы і радкі і іншы things-- некаторыя з іх 1114 00:46:00,300 --> 00:46:02,800 можа быць вельмі лёгка ператвараецца ў іншае. 1115 00:46:02,800 --> 00:46:05,840 >> Напрыклад, калі мы казалі аб ASCII некаторы час ago-- вось 1116 00:46:05,840 --> 00:46:07,796 загалоўныя літары А праз М, кропка, кропка, 1117 00:46:07,796 --> 00:46:12,530 dot-- мы сказалі, што ёсць адлюстраванне паміж гэтымі літарамі і лічбамі. 1118 00:46:12,530 --> 00:46:14,970 І на самай справе, гэта справядліва для малых літар, а таксама. 1119 00:46:14,970 --> 00:46:17,470 Малыя а ёсць 97, а з'яўляецца сталіцай 65. 1120 00:46:17,470 --> 00:46:20,860 І ёсць шэраг ў ASCII, які знаходзіцца за ўсё гэта адлюстраванне 1121 00:46:20,860 --> 00:46:23,240 Сістэма для ўсіх тых іншых лістах. 1122 00:46:23,240 --> 00:46:25,030 Такім чынам, што ж гэта значыць? 1123 00:46:25,030 --> 00:46:28,390 Ну, я збіраюся ісці наперад і адкрыць да рэальнага хутка нешта пад назвай 1124 00:46:28,390 --> 00:46:31,240 ASCII 0, большасць з якіх з'яўляецца каментароў. 1125 00:46:31,240 --> 00:46:33,860 І зноў у Інтэрнэце вы заўсёды можаце погляд праз каментары. 1126 00:46:33,860 --> 00:46:36,180 >> І зірніце, што гэта будзе рабіць. 1127 00:46:36,180 --> 00:46:38,410 Так ён атрымаў галоўную функцыю. 1128 00:46:38,410 --> 00:46:41,490 Я цвёрда лік толькі для зараз, таму што я ведаю, што я раблю. 1129 00:46:41,490 --> 00:46:42,950 Я ведаю, што я хачу бачыць тут. 1130 00:46:42,950 --> 00:46:45,220 І я ініцыялізацыі I 65. 1131 00:46:45,220 --> 00:46:48,490 І я разлічваю на праз 26 Усяго літары. 1132 00:46:48,490 --> 00:46:52,990 І што я буду раздрукаваць адзін радок, у той час 1133 00:46:52,990 --> 00:46:54,930 калі вы можаце інтэрпрэтаваць гэта выдзелены лінію? 1134 00:46:54,930 --> 00:46:55,970 Што друкуецца? 1135 00:46:55,970 --> 00:46:56,797 Так. 1136 00:46:56,797 --> 00:46:57,264 >> АЎДЫТОРЫЯ: Вы збіраецеся раздрукаваць ліст, 1137 00:46:57,264 --> 00:46:59,805 адпавядае карце Ліст значэнне і цэлае значэнне? 1138 00:46:59,805 --> 00:47:01,199 1139 00:47:01,199 --> 00:47:01,990 СПІКЕР 1: Дакладна. 1140 00:47:01,990 --> 00:47:04,740 Я збіраюся надрукаваць ліст адпаведнае цэламу значэнні, 1141 00:47:04,740 --> 00:47:06,131 і наадварот, наступным чынам. 1142 00:47:06,131 --> 00:47:08,880 Ну гэта, нехта сказаў раней, гэта проста запаўняльнік для гольца. 1143 00:47:08,880 --> 00:47:09,490 Ён па-ранейшаму ёсць. 1144 00:47:09,490 --> 00:47:12,280 Гэта, вядома, з'яўляецца запаўняльнікам Для таго int-- ня новая лінія. 1145 00:47:12,280 --> 00:47:18,140 А цяпер звярніце ўвагу, мой першы значэнне, Я падлучэння для гэтага запаўняльніка 1146 00:47:18,140 --> 00:47:22,320 не толькі І. я кажу, у дужках, сімвал я, 1147 00:47:22,320 --> 00:47:26,700 якія ў дужках сімвал з'яўляецца кажа кампілятар, лячэння I 1148 00:47:26,700 --> 00:47:28,490 а не як тое, што яна ёсць, што лік. 1149 00:47:28,490 --> 00:47:30,490 Лячыць яго ў якасці фактычнага характару. 1150 00:47:30,490 --> 00:47:34,490 У той час як другое значэнне я падключыць in-- я-- павінны быць проста лік. 1151 00:47:34,490 --> 00:47:38,140 >> Так што, калі я скампіляваць гэты program-- так што гэта зрабіць ASCII 0, 1152 00:47:38,140 --> 00:47:41,720 кропка слэш ASCII 0-- Я проста Гэтая маленькая дыяграма, якая 1153 00:47:41,720 --> 00:47:44,950 паказвае мне ўсё магчымае адлюстравання без таго, каб думаць яго 1154 00:47:44,950 --> 00:47:46,450 праз або высветліць гэта самастойна. 1155 00:47:46,450 --> 00:47:48,783 І я таксама раздрукоўкі, заўважаць малыя літары, 1156 00:47:48,783 --> 00:47:51,410 таму што праз некалькі радкоў, я друкаваць гэтую адлюстраванне 1157 00:47:51,410 --> 00:47:53,737 як добра, што гэта проста сказаць, што як толькі вы разумееце 1158 00:47:53,737 --> 00:47:55,570 што адбываецца пад капот, вы можаце 1159 00:47:55,570 --> 00:47:57,111 аўтаматычна канвертаваць туды і назад. 1160 00:47:57,111 --> 00:48:00,160 І на самай справе, калі любы з вас калі-небудзь рабіў гэта ў пачатковай школе 1161 00:48:00,160 --> 00:48:03,490 ці чуў пра каго-то міфічна прымаючы да ведама 1162 00:48:03,490 --> 00:48:05,620 і перадачы яго ў яго ці яе сяброўка ў класе, 1163 00:48:05,620 --> 00:48:08,300 але вы платныя Лісты, як становіцца B, 1164 00:48:08,300 --> 00:48:11,240 і Б становіцца C, ці нешта складаней, чым, што, маўляў, 1165 00:48:11,240 --> 00:48:13,410 як бы вы ісці аб рэалізацыі, што ў дзяцінстве? 1166 00:48:13,410 --> 00:48:16,340 Ну, вы проста ведаеце, выгляд А становіцца B, B становіцца C, 1167 00:48:16,340 --> 00:48:19,700 але матэматычна, што было, што дзіця робіць? 1168 00:48:19,700 --> 00:48:22,050 Што вы дадаючы да кожнай літары? 1169 00:48:22,050 --> 00:48:23,340 Эфектыўна, 1. 1170 00:48:23,340 --> 00:48:27,740 >> Таму, калі вы зменіце А ў пункт Б, гэта накшталт як змяняецца ад 65 да 66, 1171 00:48:27,740 --> 00:48:29,590 які матэматычна азначае проста дадайце 1. 1172 00:48:29,590 --> 00:48:33,300 І таму, калі вы былі рэалізаваць што мала спосаб падману 1173 00:48:33,300 --> 00:48:36,380 для настаўніка ў кодзе, вы можа рабіць тое, што толькі 1174 00:48:36,380 --> 00:48:38,552 дадаўшы адну літару разам. 1175 00:48:38,552 --> 00:48:40,260 Таму, перш чым доўга, мы ўбачыце, як мы 1176 00:48:40,260 --> 00:48:43,300 можа скарыстацца тым, што на самой справе сапраўды барацьба і расшыфроўваць 1177 00:48:43,300 --> 00:48:43,991 Інфармацыя. 1178 00:48:43,991 --> 00:48:47,240 У той жа час, вядома, што мы пачалі ўвесці пару іншых бібліятэк 1179 00:48:47,240 --> 00:48:48,990 here-- радок адзін сёння. 1180 00:48:48,990 --> 00:48:51,180 І вельмі карысны сайт спадзяюся, вы знойдзеце 1181 00:48:51,180 --> 00:48:55,010 называецца reference.cs50.net, што выкладчыцкі склад паставілі разам, 1182 00:48:55,010 --> 00:48:57,510 так што калі вы хочаце, каб паглядзець, як STRLEN работ, 1183 00:48:57,510 --> 00:48:59,300 Вы можаце пачаць друкаваць імя функцыі, 1184 00:48:59,300 --> 00:49:02,890 націсніце STRLEN там, а затым менш камфортна тлумачэнне 1185 00:49:02,890 --> 00:49:03,700 будзе з'яўляцца. 1186 00:49:03,700 --> 00:49:06,880 Ці, калі вы хочаце, каб службовая асоба Linux на аснове тлумачэння, 1187 00:49:06,880 --> 00:49:08,945 вы можаце націснуць больш зручныя у правым верхнім куце, і гэта 1188 00:49:08,945 --> 00:49:12,070 прадставіць тую ж інфармацыю, але ў больш складаных умовах. 1189 00:49:12,070 --> 00:49:15,070 Гэта карысна рэсурс на самай справе ведаю, што ўсё робіць. 1190 00:49:15,070 --> 00:49:17,320 >> У наступны раз мы збіраемся зірнуць на Ovaltine 1191 00:49:17,320 --> 00:49:20,070 і больш, і прадставіць сябе у свеце крыптаграфіі. 1192 00:49:20,070 --> 00:49:21,930 Да гэтага, мы ўбачым, Вы ў канцы гэтага тыдня. 1193 00:49:21,930 --> 00:49:23,390 А цяпер, Колтон Огден. 1194 00:49:23,390 --> 00:49:26,730 Убачымся ў сераду. 1195 00:49:26,730 --> 00:49:30,216 >> [Гуляе музыка] 1196 00:49:30,216 --> 00:49:33,702 >> [Гуляе музыка] 1197 00:49:33,702 --> 00:49:38,682 1198 00:49:38,682 --> 00:49:42,200 >> СПІКЕР 1: Што [БІП] ты робіш? 1199 00:49:42,200 --> 00:49:45,720 >> СПІКЕР 1: Я еў свой дэсерт? 1200 00:49:45,720 --> 00:49:47,160 Як вы ясьце яго? 1201 00:49:47,160 --> 00:49:47,860 З вашымі рукамі? 1202 00:49:47,860 --> 00:49:54,050 1203 00:49:54,050 --> 00:49:57,940 >> [Гуляе музыка] 1204 00:49:57,940 --> 00:50:03,453