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, 3: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, або 3: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 і я вважав ,, 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