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 Войти. 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