1 00:00:00,000 --> 00:00:10,982 2 00:00:10,982 --> 00:00:11,940 DAVID МАЛАН: Хорошо. 3 00:00:11,940 --> 00:00:16,470 Так что это CS50, и это Теперь начало три недели. 4 00:00:16,470 --> 00:00:19,960 >> Так до сих пор, мы не имею писал программы в C 5 00:00:19,960 --> 00:00:23,210 что выглядит немного как то так вот. 6 00:00:23,210 --> 00:00:25,470 Итак, мы получили пару Резкое включает в верхней части. 7 00:00:25,470 --> 00:00:28,490 У нас есть Int, главная, недействительными, и затем то, чтобы сделать в середине, 8 00:00:28,490 --> 00:00:30,590 некоторые кусок кода внутри из этой функции. 9 00:00:30,590 --> 00:00:34,170 Но ключ был тот факт, что мы говорили недействительными здесь. 10 00:00:34,170 --> 00:00:39,320 Так недействительными, все это время, указывает что эта программа, при запуске, 11 00:00:39,320 --> 00:00:41,300 может быть запущен только через его имени. 12 00:00:41,300 --> 00:00:46,330 Вы не можете ввести любые другие слова или Цифры после названия программы при 13 00:00:46,330 --> 00:00:46,830 запустить его. 14 00:00:46,830 --> 00:00:51,200 Так, например, если программа была собраны в файле под названием Привет, 15 00:00:51,200 --> 00:00:53,480 вы могли бы сделать ./hello, но что это такое. 16 00:00:53,480 --> 00:00:56,750 >> Единственный способ, которым вы могли бы внести свой вклад в эту программу 17 00:00:56,750 --> 00:00:57,960 является путем вызова функции. 18 00:00:57,960 --> 00:00:59,790 Например, что функция были мы, используя до сих пор 19 00:00:59,790 --> 00:01:00,950 для получения данных от пользователя? 20 00:01:00,950 --> 00:01:02,117 >> АУДИТОРИЯ: Получить строку. 21 00:01:02,117 --> 00:01:04,700 DAVID МАЛАН: Чтобы получить строку, или получить Int, или вы видели других, 22 00:01:04,700 --> 00:01:07,630 даже если вы не использовали их еще, как получить много, много и тому подобное. 23 00:01:07,630 --> 00:01:09,380 Но предположим, что мы на самом деле хотите, чтобы начать 24 00:01:09,380 --> 00:01:12,760 написание программ, которые немного больше универсальный, и, честно говоря, немного больше 25 00:01:12,760 --> 00:01:15,090 как команды, что вы получал, как мы надеемся, 26 00:01:15,090 --> 00:01:16,550 немного привыкли. 27 00:01:16,550 --> 00:01:18,560 Как кд пространства Dropbox. 28 00:01:18,560 --> 00:01:20,800 Это, конечно, изменения ваш каталог, предполагая 29 00:01:20,800 --> 00:01:23,590 вы находитесь в доме Джона Гарварда каталог, в папку Dropbox. 30 00:01:23,590 --> 00:01:27,380 Между тем, команда, как это создает новую папку с именем pset2, 31 00:01:27,380 --> 00:01:30,290 как вы, наверное, уже или скоро для задачи установить два. 32 00:01:30,290 --> 00:01:33,970 Сделать Привет, конечно, является командой , которая строит программу под названием привет 33 00:01:33,970 --> 00:01:35,770 из файла под названием Привет точка с. 34 00:01:35,770 --> 00:01:39,140 И в каждом из них случаи, сейчас, у нас было 35 00:01:39,140 --> 00:01:43,620 обеспечивают аргумент на так называемый командной строки, мигает быстро, 36 00:01:43,620 --> 00:01:48,540 так что марка знает что строить, и так что MkDir знает, что папка, чтобы создать, 37 00:01:48,540 --> 00:01:51,110 и так, что CD знает где вы хотите пойти. 38 00:01:51,110 --> 00:01:54,720 Но до сих пор, мы постоянно говорят что главная ваша функция по умолчанию, 39 00:01:54,720 --> 00:01:58,500 есть выражение пустот внутри этих скобок, 40 00:01:58,500 --> 00:02:01,250 Это означает, что его не может принять никаких аргументов. 41 00:02:01,250 --> 00:02:03,240 >> Так, начиная с сегодняшнего, то, что мы собираемся сделать 42 00:02:03,240 --> 00:02:06,270 есть, мы собираемся начать поддержки такие вещи даже. 43 00:02:06,270 --> 00:02:08,990 На самом деле, в этом случае, который вам как правило, не вручную ввести, 44 00:02:08,990 --> 00:02:11,130 Сделать делал это для нас, есть не 45 00:02:11,130 --> 00:02:15,840 один, а один, два, три дополнительных строки после програмы по имени 46 00:02:15,840 --> 00:02:16,850 лязг. 47 00:02:16,850 --> 00:02:18,240 Так как же нам этого добиться? 48 00:02:18,240 --> 00:02:20,260 >> Ну, начиная с сегодняшнего дня, в тех случаях, когда мы хотим 49 00:02:20,260 --> 00:02:22,855 обеспечить ввод через Так называемый командной строки, 50 00:02:22,855 --> 00:02:24,980 мы собираемся начать добавлять здесь то, что в yellow-- 51 00:02:24,980 --> 00:02:30,520 замена пустоту агдс запятой Строка агду открывающая скобка закрывающая скобка. 52 00:02:30,520 --> 00:02:32,520 Теперь это интересно в течение нескольких причин. 53 00:02:32,520 --> 00:02:35,690 Один, это будет запишем программы, которые немного более динамичным. 54 00:02:35,690 --> 00:02:37,570 Но, более убедительно, он собирается открыть 55 00:02:37,570 --> 00:02:40,340 Теперь разговор, чтобы что массивы могут действительно 56 00:02:40,340 --> 00:02:43,300 использоваться, для того, что строки действительно находится под капотом, 57 00:02:43,300 --> 00:02:47,320 до следующей недели, когда мы не начнем с аквалангом В еще глубже относительно того, как машина 58 00:02:47,320 --> 00:02:48,590 делает все эти вещи работы. 59 00:02:48,590 --> 00:02:51,920 Но сейчас, давайте рисовать, возможно, картина. 60 00:02:51,920 --> 00:02:54,950 >> Когда вы пишете программу с основным заявил 61 00:02:54,950 --> 00:02:58,810 В этом случае, таким образом, что основная принимает два аргумента, Int 62 00:02:58,810 --> 00:03:03,233 и-- какой тип данных это второй аргумент? 63 00:03:03,233 --> 00:03:04,529 >> АУДИТОРИЯ: Array. 64 00:03:04,529 --> 00:03:05,320 DAVID МАЛАН: Array. 65 00:03:05,320 --> 00:03:09,170 Так это выглядит на первый взгляд, как будто это строка, но обратите внимание на квадратные скобки. 66 00:03:09,170 --> 00:03:12,760 Напомним, в последний раз мы ввели Понятие массива. 67 00:03:12,760 --> 00:03:16,210 И массивы используют квадратные скобки через пару контекстах. 68 00:03:16,210 --> 00:03:19,160 Вы можете использовать площадь кронштейны идти в массив 69 00:03:19,160 --> 00:03:22,710 и получить конкретный элемент, как Кронштейн 0 или кронштейн 1 или кронштейн 2. 70 00:03:22,710 --> 00:03:25,500 Но мы видели, если кратко, на прошлой неделе, что вы также 71 00:03:25,500 --> 00:03:28,790 использовать эти квадратные скобки в объявить размер массива, 72 00:03:28,790 --> 00:03:31,790 если вы знаете заранее, сколько Интс или сколько строк или все, что вы 73 00:03:31,790 --> 00:03:32,630 на самом деле хотите. 74 00:03:32,630 --> 00:03:34,790 Вот и получается, что есть третий контекст здесь 75 00:03:34,790 --> 00:03:37,890 что не имеет номера внутри из квадратных скобках. 76 00:03:37,890 --> 00:03:41,920 При указании, как у меня здесь, название-то вроде ARGV, 77 00:03:41,920 --> 00:03:44,550 , который является просто причудливый способ говоря аргумент вектор, 78 00:03:44,550 --> 00:03:47,750 еще один причудливый способ говоря массив аргументов, 79 00:03:47,750 --> 00:03:50,870 открывающая скобка закрывающая скобка просто означает, что вам не обязательно 80 00:03:50,870 --> 00:03:52,960 заранее знать, как большой Массив будет, 81 00:03:52,960 --> 00:03:55,070 но вы знаете, что это собирается быть массивом. 82 00:03:55,070 --> 00:03:57,320 Так что, если вы не знаете, число, не ставьте его там, 83 00:03:57,320 --> 00:04:01,160 для открытой кронштейна закрывающей скобки означает, что агду не является строкой, 84 00:04:01,160 --> 00:04:03,124 но массив строк. 85 00:04:03,124 --> 00:04:05,040 Так синтаксически, если вам думаю на прошлой неделе, 86 00:04:05,040 --> 00:04:09,460 это очень похоже, что сказать что-то вроде десятичного возрастов открывающейся скобки, 87 00:04:09,460 --> 00:04:10,984 а затем то после этого. 88 00:04:10,984 --> 00:04:12,150 Итак, что же это похоже? 89 00:04:12,150 --> 00:04:13,399 Давайте реально нарисовать картину. 90 00:04:13,399 --> 00:04:18,756 Поэтому, когда вы запустите эту программу с основными Наличие двух аргументов определяется внутри 91 00:04:18,756 --> 00:04:21,339 из тех скобках, вы существенно, по крайней мере два куска 92 00:04:21,339 --> 00:04:23,560 памяти передал вам под капотом. 93 00:04:23,560 --> 00:04:26,550 Один, как я буду рисует как этого прямоугольника, собирается назвать агдс. 94 00:04:26,550 --> 00:04:30,645 И так же, как быстрой повторение, что тип данных агдс? 95 00:04:30,645 --> 00:04:31,270 Так что это внутр. 96 00:04:31,270 --> 00:04:33,480 Так ряд собирается пойти в argc-- поворотов 97 00:04:33,480 --> 00:04:35,660 , что означает количеством аргументов. 98 00:04:35,660 --> 00:04:38,887 Между тем, я нарисовал ARGV как массив. 99 00:04:38,887 --> 00:04:40,970 И я действительно не знаю, как долго это будет, 100 00:04:40,970 --> 00:04:42,470 так для сегодняшних целей точка точка точка. 101 00:04:42,470 --> 00:04:43,636 Это могло бы стать некоторой длины. 102 00:04:43,636 --> 00:04:45,640 Но я на фото здесь по меньшей мере, четыре прямоугольников. 103 00:04:45,640 --> 00:04:50,970 Так агду кусок памяти, которая хранит строка строка строка точка точка точка, 104 00:04:50,970 --> 00:04:53,950 и агдс является лишь одним кусок памяти для целого числа. 105 00:04:53,950 --> 00:04:55,710 >> Так что теперь, давайте быть немного более точным. 106 00:04:55,710 --> 00:04:59,200 Если, когда у меня есть строки в этом массиве, называется 107 00:04:59,200 --> 00:05:03,290 агду, я хочу получить на них индивидуально, так же, как на прошлой неделе, 108 00:05:03,290 --> 00:05:05,670 мы собираемся использовать обозначения как агду кронштейна 0 109 00:05:05,670 --> 00:05:07,650 чтобы получить первое, что массив. 110 00:05:07,650 --> 00:05:10,440 Агду кронштейн 1, чтобы получить Вторая вещь, и так далее. 111 00:05:10,440 --> 00:05:14,597 Ключевым моментом здесь является, что мы по-прежнему 0 indexed-- мы все еще считая от 0. 112 00:05:14,597 --> 00:05:16,430 Так что теперь давайте на самом деле положить что-то в этом. 113 00:05:16,430 --> 00:05:21,670 Если бы мне пришлось составить программу под названием Привет из файла под названием Привет точка с, 114 00:05:21,670 --> 00:05:24,340 а затем я запускаю эту программу с точки слэш привет, 115 00:05:24,340 --> 00:05:28,380 что делает мой компьютер, мой ноутбук, выглядеть под капотом 116 00:05:28,380 --> 00:05:31,300 момент я бегу точка слэш привет и нажмите Ввод? 117 00:05:31,300 --> 00:05:33,500 Ну, это, пожалуй, то, что мы могли бы описать 118 00:05:33,500 --> 00:05:37,010 как содержание вашего компьютера памяти, или памяти RAM-- Random Access. 119 00:05:37,010 --> 00:05:40,330 Другими словами, компьютер, так или иначе для вас волшебным, 120 00:05:40,330 --> 00:05:45,360 ставит цифру 1 в агдс, AKA ARGCOUNT, и это ставит буквально строку 121 00:05:45,360 --> 00:05:48,200 ./hello в ARGV кронштейна 0. 122 00:05:48,200 --> 00:05:51,750 Я понятия не имею,, честно говоря, то, что нет в ARGV кронштейном 1 или 2 или 3, 123 00:05:51,750 --> 00:05:55,550 потому что, если пользователь не имеет набрали ничего, кроме ./hello, 124 00:05:55,550 --> 00:05:58,550 мы будем считать, что эти являются наиболее вероятными значениями мусора, 125 00:05:58,550 --> 00:05:59,700 так сказать. 126 00:05:59,700 --> 00:06:02,650 Эти куски памяти существует, но это не к нам 127 00:06:02,650 --> 00:06:05,710 смотреть на них, потому что ARGCOUNT только один. 128 00:06:05,710 --> 00:06:07,870 >> Теперь, между тем, если I написать запустить другую программу, 129 00:06:07,870 --> 00:06:12,250 кд, что более правильно команда, в вашем мигающим prompt-- пространства кд 130 00:06:12,250 --> 00:06:17,200 Dropbox-- когда я запускаю, что, по сути, когда программа кд запускается, агдс, 131 00:06:17,200 --> 00:06:22,270 внутри памяти моего компьютера, для наиболее долю секунды число 2. 132 00:06:22,270 --> 00:06:25,936 А потом агду кронштейн о имеет кд, агду кронштейн 1 имеет Dropbox, 133 00:06:25,936 --> 00:06:28,560 и тогда, конечно, команда завершает, так вся эта память 134 00:06:28,560 --> 00:06:30,420 существенно уходит и используется для другого. 135 00:06:30,420 --> 00:06:32,270 И вот почему я говорю только на долю секунды. 136 00:06:32,270 --> 00:06:35,720 >> Между тем, если мы делаем MKDIR pset2, картина выглядит почти так же, 137 00:06:35,720 --> 00:06:37,900 но с разными строками внутри ARGV. 138 00:06:37,900 --> 00:06:42,570 Если я делаю лязг тире привет Привет точка с, та же идея. 139 00:06:42,570 --> 00:06:47,060 Больше материала заполняется для агду, и агдс, конечно, 4. 140 00:06:47,060 --> 00:06:49,150 Таким образом, другими словами, хотя этого массива 141 00:06:49,150 --> 00:06:52,950 может быть точка точка точка, из некоторых переменной длины, так сказать, 142 00:06:52,950 --> 00:06:56,720 Вы всегда знаете, где его конец является, потому агдс собирается сказать вам 143 00:06:56,720 --> 00:07:00,120 в какой момент вы должны остановить глядя на элементов в ARGV. 144 00:07:00,120 --> 00:07:03,660 Вы можете смотреть только на четырех в общей сложности в этом случае. 145 00:07:03,660 --> 00:07:06,600 >> Итак, давайте взглянем на, возможно, простая программа. 146 00:07:06,600 --> 00:07:09,070 Тот, который просто говорит привет кому то нравится Zamyla. 147 00:07:09,070 --> 00:07:12,620 Так я утверждаю, что я собираюсь написать программу через минуту, через который я мог сделать 148 00:07:12,620 --> 00:07:16,670 ./hello пространство Zamyla, а затем я хочу моя программа распечатать то 149 00:07:16,670 --> 00:07:18,520 супер-просто, как "Привет, Zamyla." 150 00:07:18,520 --> 00:07:20,100 Теперь в прошлом мы использовали GetString. 151 00:07:20,100 --> 00:07:22,850 Так в прошлом, даже если Вы новичок в программировании, 152 00:07:22,850 --> 00:07:27,180 наверняка вы могли на скорую руку программа, которая использует GetString 153 00:07:27,180 --> 00:07:29,390 а затем использует Printf чтобы сказать привет Zamyla. 154 00:07:29,390 --> 00:07:31,290 Но давайте не будем использовать GetString этот раз. 155 00:07:31,290 --> 00:07:37,510 Позвольте мне вместо этого пойти в Appliant и не включают в себя стандартные Я O точка час. 156 00:07:37,510 --> 00:07:41,160 Позвольте мне также включают CS50 точка час. 157 00:07:41,160 --> 00:07:44,730 Теперь тап_п, и теперь я не собирается делать недействительными сегодня. 158 00:07:44,730 --> 00:07:51,200 Вместо этого, я собираюсь сделать агдс Строка агду открывающая скобка закрывающая скобка, 159 00:07:51,200 --> 00:07:52,640 не указали номер. 160 00:07:52,640 --> 00:07:54,644 А теперь вот моя так называемая сделать. 161 00:07:54,644 --> 00:07:57,560 То, что я собираюсь сделать сейчас, это, я собирается сделать немного прыжке веры, 162 00:07:57,560 --> 00:08:00,560 Я буду считать, что пользователя собирается правильно использовать эту программу, 163 00:08:00,560 --> 00:08:04,980 и я просто собираюсь сделать Е привет,% Sn. 164 00:08:04,980 --> 00:08:06,630 Так что ничего нового там. 165 00:08:06,630 --> 00:08:11,470 Но я хочу, чтобы теперь положить все, что слово пользователь после имени программы. 166 00:08:11,470 --> 00:08:16,970 Так что, если я делаю ./hello пространство Zamyla, я хотите-то программно доступ 167 00:08:16,970 --> 00:08:20,870 цитировать конец цитаты "Zamyla." поэтому я может пойти в мою аргумента вектора, 168 00:08:20,870 --> 00:08:25,980 мой массив строк, и если команды, снова, был ./hello пространство Zamyla, 169 00:08:25,980 --> 00:08:29,340 какой номер я хочу положить в ARGV здесь? 170 00:08:29,340 --> 00:08:29,840 АУДИТОРИЯ: 1. 171 00:08:29,840 --> 00:08:32,355 DAVID МАЛАН: 1, потому что Кронштейн 0 оказывается 172 00:08:32,355 --> 00:08:34,230 будет Название программы, как мы видели. 173 00:08:34,230 --> 00:08:37,789 Так кронштейн 1 это первое слово что я, пользователь, набрали. 174 00:08:37,789 --> 00:08:39,559 Я собираюсь идти вперед и сохранить это. 175 00:08:39,559 --> 00:08:42,830 Я собираюсь пойти в мою папку где я разместил этот файл. 176 00:08:42,830 --> 00:08:44,920 Я собираюсь сделать сделать привет 3. 177 00:08:44,920 --> 00:08:46,230 ОК Comp НЛ. 178 00:08:46,230 --> 00:08:51,380 ./hello Zamyla Enter. 179 00:08:51,380 --> 00:08:54,480 Что я сделал не так? 180 00:08:54,480 --> 00:08:57,270 Я был застигнут врасплох я на мгновение там. 181 00:08:57,270 --> 00:08:58,230 Что я сделал не так? 182 00:08:58,230 --> 00:08:59,220 >> АУДИТОРИЯ: Имя. 183 00:08:59,220 --> 00:09:01,767 >> DAVID МАЛАН: файла на самом деле называется hello3.c. 184 00:09:01,767 --> 00:09:03,850 И я сделал это только для консистенция, потому что мы 185 00:09:03,850 --> 00:09:06,550 была hello.c находится в мимо в онлайн кода. 186 00:09:06,550 --> 00:09:11,550 Так давайте исправим эту ./hello Кронштейн тире 3 Zamyla. 187 00:09:11,550 --> 00:09:12,370 Enter. 188 00:09:12,370 --> 00:09:14,030 И теперь у нас есть привет, Zamyla. 189 00:09:14,030 --> 00:09:17,650 Между тем, я могу изменить это быть Роб, или действительно любое другое слово. 190 00:09:17,650 --> 00:09:19,230 >> Но давайте рассмотрим угловой случай. 191 00:09:19,230 --> 00:09:24,360 То, что вы могли бы ожидать произойдет, если Я не ввести имя чью вообще? 192 00:09:24,360 --> 00:09:25,270 >> АУДИТОРИЯ: Ошибка. 193 00:09:25,270 --> 00:09:27,300 >> DAVID МАЛАН: ошибка какой-то, возможно. 194 00:09:27,300 --> 00:09:28,200 Посмотрим. 195 00:09:28,200 --> 00:09:29,440 Enter. 196 00:09:29,440 --> 00:09:30,210 Null. 197 00:09:30,210 --> 00:09:33,870 Так Е фактически быть немного защищает нас 198 00:09:33,870 --> 00:09:38,131 здесь, и буквально печати открытые Парень нуль, но даже худшие вещи могут случиться. 199 00:09:38,131 --> 00:09:40,130 И только продемонстрировать то, что вы абсолютно 200 00:09:40,130 --> 00:09:42,800 не следует делать, пойдем в здесь и начать ковыряться. 201 00:09:42,800 --> 00:09:43,300 Верно? 202 00:09:43,300 --> 00:09:46,410 Если я знаю, что картина в памяти, по существу, это, 203 00:09:46,410 --> 00:09:52,660 агду кронштейн 1 имеет Zamyla, ARGV Кронштейн 0 имеет ./hello или ./hello-3. 204 00:09:52,660 --> 00:09:55,400 Что в кронштейне 2? 205 00:09:55,400 --> 00:09:58,210 Так что я могу ответить, что задаю себе вопрос, не так ли? 206 00:09:58,210 --> 00:10:00,460 Я могу просто изменить 1 к 2. 207 00:10:00,460 --> 00:10:07,270 Теперь я могу перекомпилировать привет 3, ./hello3 Давайте увеличивать и нажмите Ввод. 208 00:10:07,270 --> 00:10:08,270 Упс. 209 00:10:08,270 --> 00:10:10,660 Нет кавычки. 210 00:10:10,660 --> 00:10:12,540 Интересно. 211 00:10:12,540 --> 00:10:15,530 Так что вроде здорово посмотреть, что еще здесь. 212 00:10:15,530 --> 00:10:17,130 >> Так что еще находится внутри моего ноутбука? 213 00:10:17,130 --> 00:10:20,390 Давайте сохраним его с кронштейна 3. 214 00:10:20,390 --> 00:10:25,190 Сделать hello3, ./hello-3. 215 00:10:25,190 --> 00:10:26,500 Любопытный. 216 00:10:26,500 --> 00:10:30,560 А теперь давайте действительно bold-- 50. 217 00:10:30,560 --> 00:10:34,340 Так что на самом деле ныряя глубоко в память моего компьютера. 218 00:10:34,340 --> 00:10:35,930 50 Индексы в. 219 00:10:35,930 --> 00:10:41,950 Так что привет 3 ./hello-3. 220 00:10:41,950 --> 00:10:42,680 Любопытный. 221 00:10:42,680 --> 00:10:44,660 Ладно, сейчас я просто собирается получить безрассудным. 222 00:10:44,660 --> 00:10:47,331 Пойдем в 5000. 223 00:10:47,331 --> 00:10:47,830 Хорошо. 224 00:10:47,830 --> 00:10:49,520 Итак, позвольте мне перекомпилировать. 225 00:10:49,520 --> 00:10:51,460 Сделать hello3, ./hello-3. 226 00:10:51,460 --> 00:10:55,780 227 00:10:55,780 --> 00:10:56,460 Хорошо. 228 00:10:56,460 --> 00:10:59,250 Сейчас некоторые из вас, может быть лампочка уходят. 229 00:10:59,250 --> 00:11:01,900 Как многие из вас есть видели это сообщение раньше? 230 00:11:01,900 --> 00:11:03,440 Хорошо. 231 00:11:03,440 --> 00:11:04,420 Итак, почему? 232 00:11:04,420 --> 00:11:07,250 >> Коэффициенты are-- и есть разные вещи, которые могут привести к этому, 233 00:11:07,250 --> 00:11:09,730 и ясно, что ты в хорошей company-- у нас есть четко 234 00:11:09,730 --> 00:11:11,900 вызвало то, что называется Сегментация вина. 235 00:11:11,900 --> 00:11:15,890 И короче говоря на сегодняшний день, я коснулись сегмента памяти 236 00:11:15,890 --> 00:11:17,060 что я не должен иметь. 237 00:11:17,060 --> 00:11:19,970 Где сегмент просто означает кусок памяти, что я не должен иметь. 238 00:11:19,970 --> 00:11:25,530 Теперь компьютер гарантирует, что, если я запустить ./helloZamyla что я могу коснуться ARGV 239 00:11:25,530 --> 00:11:27,760 быть кронштейн 0 и агду кронштейн 1. 240 00:11:27,760 --> 00:11:32,730 Но агдс является значение 2, что означает, что я только allowed-- это своего рода честь 241 00:11:32,730 --> 00:11:35,180 система-- прикоснуться Кронштейн 0 и кронштейн 1. 242 00:11:35,180 --> 00:11:37,990 Если я иду дальше, есть абсолютно будет память есть. 243 00:11:37,990 --> 00:11:40,660 Мой RAM существует физически в компьютере. 244 00:11:40,660 --> 00:11:42,080 Но кто знает, что там? 245 00:11:42,080 --> 00:11:44,450 В самом деле, я бегу кратное программы в одно время. 246 00:11:44,450 --> 00:11:46,910 Я мог бы seen-- если бы я не был делать это на Appliant 247 00:11:46,910 --> 00:11:49,937 но на моем Mac или PC-- я мог бы видел содержимое электронной почте. 248 00:11:49,937 --> 00:11:52,270 Я, возможно, видели мгновение сообщение Я недавно послал. 249 00:11:52,270 --> 00:11:55,390 Все, что может быть сохраняющиеся вокруг в памяти 250 00:11:55,390 --> 00:11:59,180 можно было бы получить по способу это произвольная квадратная нотация кронштейн. 251 00:11:59,180 --> 00:12:02,850 Или, что еще хуже, вы, возможно, нашел одного из моих паролей 252 00:12:02,850 --> 00:12:05,859 что я в последнее время набрали в, что Программа была храниться в памяти, так как 253 00:12:05,859 --> 00:12:07,900 для аутентификации меня, и то только отчасти оставил его 254 00:12:07,900 --> 00:12:09,910 в памяти, пока я не ушел эту программу. 255 00:12:09,910 --> 00:12:12,860 >> И в самом деле, это один из опасность и одна полномочия 256 00:12:12,860 --> 00:12:15,980 использования языка как С. У вас есть свободный доступ 257 00:12:15,980 --> 00:12:18,860 на все содержание памяти программы, 258 00:12:18,860 --> 00:12:21,340 и какие плохие парни могут даже сделать в тех cases-- 259 00:12:21,340 --> 00:12:23,807 Особенно, когда мы получить на веб-программирования 260 00:12:23,807 --> 00:12:26,890 к концу семестра, мы будем вернуться к этому topic-- будет копаться, 261 00:12:26,890 --> 00:12:31,660 потенциально, кто это компьютера памяти и найти такие любопытные вещи 262 00:12:31,660 --> 00:12:32,570 как мы видели там. 263 00:12:32,570 --> 00:12:36,900 Или даже еще хуже, пароли, что он или она может использовать, чтобы делать плохие вещи. 264 00:12:36,900 --> 00:12:40,240 >> Итак, ясно, я не должен был делать этого, потому странные вещи начинают происходить. 265 00:12:40,240 --> 00:12:42,310 В самом деле, это программа грохот. 266 00:12:42,310 --> 00:12:44,580 Это было бы равносильно из Mac OS или в ОС Windows 267 00:12:44,580 --> 00:12:46,770 Окно программы просто исчезают. 268 00:12:46,770 --> 00:12:48,300 Непредвиденная ошибка. 269 00:12:48,300 --> 00:12:50,840 В среде командной строки мы видим нечто подобное. 270 00:12:50,840 --> 00:12:54,480 Но именно поэтому, как я, просто прикасаясь памяти, что не принадлежит мне. 271 00:12:54,480 --> 00:12:57,090 >> Так что давайте защищаться от этого а Немного по-другому 272 00:12:57,090 --> 00:12:59,010 глядя на этой программе. 273 00:12:59,010 --> 00:13:01,000 Таким образом, опять же, скелет что мы видели earlier-- 274 00:13:01,000 --> 00:13:02,480 и я выделил этот раз Int. 275 00:13:02,480 --> 00:13:05,900 И все это время главным имеет В самом деле возвращается значение. 276 00:13:05,900 --> 00:13:09,120 Даже при том, что в большинстве наших лекции примеры мы ни разу не использовали 277 00:13:09,120 --> 00:13:10,990 ничего возвращать в основной. 278 00:13:10,990 --> 00:13:13,710 Мы просто написать PRINTF близко фигурная скобка и вот оно. 279 00:13:13,710 --> 00:13:16,500 Но бесплатно, что компилятор делал для вас, 280 00:13:16,500 --> 00:13:19,510 эффективно, возвращается 0 для вас. 281 00:13:19,510 --> 00:13:22,950 Оказывается out-- и это немного counterintuitive-- что 0 это хорошо. 282 00:13:22,950 --> 00:13:24,690 Это не значит, ложь сама по себе. 283 00:13:24,690 --> 00:13:29,080 0 хорошо, и любой не-0 Значение, что мир решил, 284 00:13:29,080 --> 00:13:30,619 может означать ошибку. 285 00:13:30,619 --> 00:13:32,910 Так что если вы еще не испортил то на вашем компьютере, 286 00:13:32,910 --> 00:13:36,600 или программа только что умер от вас и Вы получили некоторые ошибочные окно 287 00:13:36,600 --> 00:13:40,360 на экране, говоря об ошибке отрицательное 49 или ошибка 23-- 288 00:13:40,360 --> 00:13:44,170 некоторые, казалось бы, произвольное value-- вот потому программист жестко 289 00:13:44,170 --> 00:13:49,370 Значение как отрицательный 49 или положительное 23 для представления любого числа, осмелюсь сказать, 290 00:13:49,370 --> 00:13:53,340 из 4000000000 возможных вещей что может пойти не так в программе. 291 00:13:53,340 --> 00:13:55,700 >> Так как я мог бы взять Преимущество этого я? 292 00:13:55,700 --> 00:13:58,970 Ну, позвольте мне открыть программу что я написал заранее, 293 00:13:58,970 --> 00:14:01,450 и копаться онлайн называется привет 4. 294 00:14:01,450 --> 00:14:05,650 И это почти идентичны, за исключением того, ее получили немного проверки ошибок. 295 00:14:05,650 --> 00:14:09,660 В этом случае, я снова заявил Основной, как принимающая два аргумента, 296 00:14:09,660 --> 00:14:13,180 но на этот раз, в строке 17, уведомление Я делаю немного для проверки отсутствия ошибок. 297 00:14:13,180 --> 00:14:17,100 Я убедившись, что агдс равна равна 2. 298 00:14:17,100 --> 00:14:18,960 Потому что если это так, что означает, что я могу безопасно 299 00:14:18,960 --> 00:14:21,420 коснуться не только кронштейн 0, но кронштейн 1. 300 00:14:21,420 --> 00:14:24,330 И я иду вперед и распечатать, В этом случае, Zamyla или Rob 301 00:14:24,330 --> 00:14:26,020 или что слово, которое я напечатал. 302 00:14:26,020 --> 00:14:28,020 И теперь только, чтобы получить немного более правильным, 303 00:14:28,020 --> 00:14:31,910 Я собираюсь явно вернуться 0 для обозначения все хорошо. 304 00:14:31,910 --> 00:14:33,300 Ничего плохого не случилось. 305 00:14:33,300 --> 00:14:38,590 >> Но по соглашению, я собираюсь вернуться 1, или откровенно любой не-0 значение, 306 00:14:38,590 --> 00:14:40,160 если что пошло не так. 307 00:14:40,160 --> 00:14:43,270 Теперь пользователь не собирается замечаете, что происходит. 308 00:14:43,270 --> 00:14:50,410 Действительно, если я иду в этот каталог, мы увеличения и делают привет 4, 309 00:14:50,410 --> 00:14:54,210 ./hello-4 Zamyla ведет себя, как я ожидаю. 310 00:14:54,210 --> 00:14:58,570 Но если я, вместо не вводите ничего, ничего, кажется, произойдет, 311 00:14:58,570 --> 00:14:59,680 но это не катастрофа. 312 00:14:59,680 --> 00:15:04,660 И если я, вместо то делать как Роб является сопровождающий 313 00:15:04,660 --> 00:15:07,550 в Thayer-- обмена произвольная информация. 314 00:15:07,550 --> 00:15:13,680 Но заметьте, агду 1, 2, 3, 4, и Теперь 5 должен существовать в памяти. 315 00:15:13,680 --> 00:15:16,540 Это тоже не то, что моя программа ожидает, 316 00:15:16,540 --> 00:15:20,300 потому что я проверил ли агдс равна равна 2 или нет. 317 00:15:20,300 --> 00:15:22,140 Так что я теперь защищает против этого. 318 00:15:22,140 --> 00:15:25,290 >> Теперь, как в сторону, мы programmer-- или скорее мы users-- 319 00:15:25,290 --> 00:15:29,670 никогда не видеть, что 0 или 1, но с использованием Инструмент под названием отладчик или других инструментов, 320 00:15:29,670 --> 00:15:32,250 как мы увидим перед долго, вы программист 321 00:15:32,250 --> 00:15:36,590 может увидеть, что может быть происходит не так внутри вашей программы. 322 00:15:36,590 --> 00:15:39,170 >> Таким образом, любые вопросы по агдс? 323 00:15:39,170 --> 00:15:40,873 Да. 324 00:15:40,873 --> 00:15:45,292 >> АУДИТОРИЯ: я видел, где они не имели характер, [неразборчиво] 325 00:15:45,292 --> 00:15:49,669 просто сказал строка звезды д, как характер звездочка запятая. 326 00:15:49,669 --> 00:15:50,710 Являются ли они эквивалентны здесь? 327 00:15:50,710 --> 00:15:51,626 >> DAVID МАЛАН: Они. 328 00:15:51,626 --> 00:15:55,080 Таким образом, вопрос, у вас есть иногда видел программы 329 00:15:55,080 --> 00:15:57,270 как это, что не говорят строка агду кронштейн 330 00:15:57,270 --> 00:16:01,015 но вместо этого что-то сказать как сЬаг звезда агду кронштейна. 331 00:16:01,015 --> 00:16:03,140 И есть даже друга варианты, которые вы можете видеть. 332 00:16:03,140 --> 00:16:04,264 Они действительно эквивалентны. 333 00:16:04,264 --> 00:16:06,240 В настоящее время, у нас есть эти рода подготовки колес 334 00:16:06,240 --> 00:16:09,737 на в виде строки в CS50 библиотека, но в чуть более недели 335 00:16:09,737 --> 00:16:12,570 или таким образом мы собираемся удалить, что обструкция в целом и на самом деле 336 00:16:12,570 --> 00:16:16,820 Посмотрите, что уголь и звезды , и как те, относятся к памяти 337 00:16:16,820 --> 00:16:18,140 представление в целом. 338 00:16:18,140 --> 00:16:19,540 Таким образом, мы вернемся к этому. 339 00:16:19,540 --> 00:16:21,540 >> Другие вопросы по нашей ARGV или агдс? 340 00:16:21,540 --> 00:16:22,397 Да. 341 00:16:22,397 --> 00:16:24,438 АУДИТОРИЯ: Почему это вернуться Ошибка [неразборчиво]? 342 00:16:24,438 --> 00:16:27,147 343 00:16:27,147 --> 00:16:29,230 DAVID МАЛАН: Почему сделал это возвращает ошибку only-- о! 344 00:16:29,230 --> 00:16:31,813 В предыдущем случае, когда мы были возиться вокруг с памятью, 345 00:16:31,813 --> 00:16:35,110 почему это только возвращает ошибку когда я действительно набрали большое количество? 346 00:16:35,110 --> 00:16:36,620 Короткий ответ, мы просто повезло. 347 00:16:36,620 --> 00:16:39,240 Вообще говоря, компьютер выделяет память в кусках, 348 00:16:39,240 --> 00:16:42,900 и он дал мне достаточно большой кусок, что Я ушел, не будучи замеченным, 349 00:16:42,900 --> 00:16:46,280 трогательной кронштейна 2, кронштейна 3, Кронштейн 50, но как только я нажал 350 00:16:46,280 --> 00:16:49,080 моя удача, я пошел за Границы кусок памяти 351 00:16:49,080 --> 00:16:50,520 операционная система дала мне. 352 00:16:50,520 --> 00:16:52,720 И вот, когда его прижимаются и сказал, нет. 353 00:16:52,720 --> 00:16:54,580 Ошибка сегментации. 354 00:16:54,580 --> 00:16:55,692 Да. 355 00:16:55,692 --> 00:16:58,890 >> АУДИТОРИЯ: Как компьютер знать значение агдс? 356 00:16:58,890 --> 00:17:02,390 >> DAVID МАЛАН: Как компьютер знать значение агдс? 357 00:17:02,390 --> 00:17:07,920 Когда вы запускаете программу, что программа, по характеру мигающей строке 358 00:17:07,920 --> 00:17:11,359 передается массив Слова, которые были введенные 359 00:17:11,359 --> 00:17:13,300 в командной строке, что было печатается в подсказке. 360 00:17:13,300 --> 00:17:16,569 И так это ваша операционная система, которая по существу 361 00:17:16,569 --> 00:17:20,329 заполняет аргументы главных для вас. 362 00:17:20,329 --> 00:17:22,829 Так вот одна из услуг что вы получите, своего рода тайно 363 00:17:22,829 --> 00:17:24,869 под капотом операционной системы. 364 00:17:24,869 --> 00:17:27,118 Другие вопросы? 365 00:17:27,118 --> 00:17:27,618 Да. 366 00:17:27,618 --> 00:17:29,787 >> АУДИТОРИЯ: Что это значит дамп? 367 00:17:29,787 --> 00:17:31,370 DAVID МАЛАН: Что это значит дамп? 368 00:17:31,370 --> 00:17:32,950 Так что это хороший вопрос. 369 00:17:32,950 --> 00:17:35,312 И позвольте мне вернуться в этот каталог здесь. 370 00:17:35,312 --> 00:17:37,270 И вы заметите, что У меня есть новый файл там. 371 00:17:37,270 --> 00:17:41,670 Это действительно называется ядро, и это на самом деле, как правило, приличного размера файла. 372 00:17:41,670 --> 00:17:45,300 То есть по сути снимок содержимое памяти моей программы 373 00:17:45,300 --> 00:17:46,902 или ОЗУ, когда он разбился. 374 00:17:46,902 --> 00:17:49,110 И это будет полезно, потенциально, диагностически, 375 00:17:49,110 --> 00:17:52,850 как только мы говорим в будущей лекции и раздел об отладке, 376 00:17:52,850 --> 00:17:55,730 потому что вы можете на самом деле делать эквивалент цифровой вскрытия 377 00:17:55,730 --> 00:18:00,300 на этом файле, чтобы помочь выяснить то, что вы сделали не так в вашей программе. 378 00:18:00,300 --> 00:18:01,220 Да. 379 00:18:01,220 --> 00:18:04,450 >> Зала: агдс команды в Сам, или вы можете назвать это ничего? 380 00:18:04,450 --> 00:18:05,575 >> DAVID МАЛАН: Хороший вопрос. 381 00:18:05,575 --> 00:18:08,040 Является агдс команды в себе, или вы можете назвать это ничего? 382 00:18:08,040 --> 00:18:09,290 Это определенно не является командой. 383 00:18:09,290 --> 00:18:13,500 Это просто переменной имя или имя аргумента в, 384 00:18:13,500 --> 00:18:15,481 и так абсолютно Можно назвать это Foo, 385 00:18:15,481 --> 00:18:18,480 мы могли бы назвать этот бар, которые имеют тенденцию быть выхода на словах, что компьютерные 386 00:18:18,480 --> 00:18:19,860 ученый идет в. 387 00:18:19,860 --> 00:18:22,820 Но по соглашению, мы используем ARGC и ARGV. 388 00:18:22,820 --> 00:18:25,360 Но это всего лишь человек Конвенция, не более того. 389 00:18:25,360 --> 00:18:25,860 Хорошо. 390 00:18:25,860 --> 00:18:28,140 Так получается, я был говорю немного белого lie-- 391 00:18:28,140 --> 00:18:31,264 и, честно говоря, в будущем, вы увидите мы говорили другие белые ложь. 392 00:18:31,264 --> 00:18:33,510 Но сейчас, мы собираемся отогните один из них. 393 00:18:33,510 --> 00:18:37,310 В этом случае здесь, когда я ранее побежал программу как ./hello или ./hello-3 394 00:18:37,310 --> 00:18:42,780 Zamyla, мы должны были содержимое моего памяти компьютера, глядя примерно как 395 00:18:42,780 --> 00:18:43,280 это. 396 00:18:43,280 --> 00:18:45,070 Но вспомним, что строка является. 397 00:18:45,070 --> 00:18:49,279 Что мы говорим, неделю назад, что строка на самом деле под капотом? 398 00:18:49,279 --> 00:18:50,320 АУДИТОРИЯ: Массив символов. 399 00:18:50,320 --> 00:18:52,111 DAVID МАЛАН: Это массив символов, не так ли? 400 00:18:52,111 --> 00:18:55,760 Таким образом, мы, возможно, есть массив строки, но, в свою очередь, строка 401 00:18:55,760 --> 00:18:57,150 это массив символов. 402 00:18:57,150 --> 00:19:00,010 Так что, если я действительно хочу быть анал, когда я рисую эту картину, 403 00:19:00,010 --> 00:19:03,290 Я должен действительно быть рисунок это немного больше, как это, 404 00:19:03,290 --> 00:19:08,000 причем в каждой из них Индексы моей агду массива, 405 00:19:08,000 --> 00:19:11,432 существует сама по себе всю строку , что само по себе в массиве. 406 00:19:11,432 --> 00:19:13,140 А теперь ложь мы говорим сегодня 407 00:19:13,140 --> 00:19:15,181 является то, что картина не выглядят вполне так. 408 00:19:15,181 --> 00:19:19,110 В самом деле, небольшие квадраты обычно за пределами больших прямоугольников 409 00:19:19,110 --> 00:19:19,610 есть. 410 00:19:19,610 --> 00:19:21,280 Но мы вернемся к тому, что в скором времени. 411 00:19:21,280 --> 00:19:25,440 Но это ./hello обратный слеш 0, что быть специальный символ, который 412 00:19:25,440 --> 00:19:28,310 разграничивает конец строки, и у нас есть еще один за 413 00:19:28,310 --> 00:19:29,360 Имя Zamyla в. 414 00:19:29,360 --> 00:19:30,900 Так что же это значит? 415 00:19:30,900 --> 00:19:33,410 >> Ну, позвольте мне идти вперед и открыть две другие примеры 416 00:19:33,410 --> 00:19:35,220 , которые доступны в Интернете. 417 00:19:35,220 --> 00:19:40,590 Одна из них называется argv1.c , а другой argv2. 418 00:19:40,590 --> 00:19:44,260 Это супер-простая программа, которая отличается от прошлых программ 419 00:19:44,260 --> 00:19:47,260 в том, что теперь я использую агдс и ARGV здесь. 420 00:19:47,260 --> 00:19:54,300 И теперь я интеграции с цикл в строке 18, от г = 0 на до ARGC. 421 00:19:54,300 --> 00:19:56,850 И что же я буду делать с этой строки кода здесь? 422 00:19:56,850 --> 00:19:58,270 На английском. 423 00:19:58,270 --> 00:20:00,510 Это, очевидно, демонстрирует использование агдс. 424 00:20:00,510 --> 00:20:03,670 Но в английском языке, что делает это сделать, если я запустить эту программу? 425 00:20:03,670 --> 00:20:04,366 Да? 426 00:20:04,366 --> 00:20:07,386 >> АУДИТОРИЯ: Это будет печатать ваши экран столько раз, сколько вы хотите. 427 00:20:07,386 --> 00:20:08,260 DAVID МАЛАН: Точно. 428 00:20:08,260 --> 00:20:10,480 Поэтому, что бы слова ввода введите в командной строке, это 429 00:20:10,480 --> 00:20:13,120 собирается извергнуть им на меня по одному в строке. 430 00:20:13,120 --> 00:20:14,370 Так что давайте идти вперед и делать это. 431 00:20:14,370 --> 00:20:17,862 Отпусти меня в моем каталоге и делают argv1 ./argv1. 432 00:20:17,862 --> 00:20:20,521 433 00:20:20,521 --> 00:20:21,770 А теперь, давайте держать его просто. 434 00:20:21,770 --> 00:20:23,834 Давайте ничего не делать в первую очередь. 435 00:20:23,834 --> 00:20:26,750 Это сделал распечатать одну вещь, и вот действительно название программы, 436 00:20:26,750 --> 00:20:28,240 потому что это в кронштейне 0. 437 00:20:28,240 --> 00:20:33,290 Если я сейчас сказать Фу, он собирается сделать эти двое, и если я говорю Foo бар, 438 00:20:33,290 --> 00:20:35,580 он собирается сказать эти три вещи. 439 00:20:35,580 --> 00:20:37,740 Теперь вот несколько интересно, может быть. 440 00:20:37,740 --> 00:20:41,450 Но напомним, что ARGV является массив строк, 441 00:20:41,450 --> 00:20:45,960 но строка это массив символов, так что мы можем взять вещи на ступеньку выше 442 00:20:45,960 --> 00:20:48,560 и применить, что основная Логика и сделать код, который 443 00:20:48,560 --> 00:20:51,160 выглядит немного более загадочным, по общему признанию. 444 00:20:51,160 --> 00:20:53,540 Но, имея вложенный цикл, то сродни 445 00:20:53,540 --> 00:20:57,030 к тому, что вы, возможно, помните из Марио, например, если вы сделали это таким образом. 446 00:20:57,030 --> 00:21:00,380 >> Так что теперь заметить в строке 19, я снова перебора моих аргументов, 447 00:21:00,380 --> 00:21:02,410 от 0 на до ARGC. 448 00:21:02,410 --> 00:21:05,510 И теперь в соответствии 21-- Я заимствования трюк из последнего week-- 449 00:21:05,510 --> 00:21:11,090 Я проверяю, что является Длина агду кронштейна I. 450 00:21:11,090 --> 00:21:12,920 Я храню этот ответ в п. 451 00:21:12,920 --> 00:21:18,230 А потом я интегрируя от J на до п, где J устанавливается на 0. 452 00:21:18,230 --> 00:21:19,460 Так, Конвенция для подсчета. 453 00:21:19,460 --> 00:21:22,335 Если вы уже использовали I, если у вас есть вложенный цикл, вы не можете использовать я снова, 454 00:21:22,335 --> 00:21:25,770 в противном случае вы будете колошматить, потенциально, значение за пределами внутреннего цикла. 455 00:21:25,770 --> 00:21:27,200 Поэтому я использую J по соглашению. 456 00:21:27,200 --> 00:21:28,020 Мы могли бы использовать к. 457 00:21:28,020 --> 00:21:31,080 Если у вас есть больше, чем к, вы, вероятно, слишком много вложенности, обычно. 458 00:21:31,080 --> 00:21:33,800 Но теперь, заметил моего Printf линия немного отличается. 459 00:21:33,800 --> 00:21:37,520 Я не печатает% S, я печать% С, что, конечно, 460 00:21:37,520 --> 00:21:39,460 является заполнителем для гольца. 461 00:21:39,460 --> 00:21:40,770 >> А теперь обратите внимание этот синтаксис. 462 00:21:40,770 --> 00:21:41,270 Новый. 463 00:21:41,270 --> 00:21:42,630 Мы не видели его раньше. 464 00:21:42,630 --> 00:21:47,290 Но логически, это просто означает, получить-ю строку в ARGV 465 00:21:47,290 --> 00:21:50,067 и получить JTH какой? 466 00:21:50,067 --> 00:21:50,900 АУДИТОРИЯ: Характер. 467 00:21:50,900 --> 00:21:52,800 DAVID МАЛАН: Характер в этой строке. 468 00:21:52,800 --> 00:21:57,100 Так с помощью квадратных скобок затем квадратных скобках, 469 00:21:57,100 --> 00:22:00,390 это дайвинг первый в строки ARGV в, 470 00:22:00,390 --> 00:22:02,225 , а затем второй квадратные скобки с J 471 00:22:02,225 --> 00:22:06,580 дайвинг в характерах что определенная строка в ARGV. 472 00:22:06,580 --> 00:22:09,562 А потом, для ровного счета, Я печатаю новую линию здесь. 473 00:22:09,562 --> 00:22:12,020 Так что теперь позвольте мне идти вперед и открыть до немного большего окне 474 00:22:12,020 --> 00:22:13,600 так что мы можем увидеть это в действии. 475 00:22:13,600 --> 00:22:15,700 Отпусти меня в этой папке. 476 00:22:15,700 --> 00:22:22,550 А теперь делают агду-2-- whoops-- сделать ARGV-2, ./argv 2. 477 00:22:22,550 --> 00:22:23,110 Enter. 478 00:22:23,110 --> 00:22:24,860 И это немного трудно читать вертикально, 479 00:22:24,860 --> 00:22:27,920 но это действительно имя Программа, после чего пустой строке. 480 00:22:27,920 --> 00:22:30,210 Теперь позвольте мне идти вперед и делать нечто. 481 00:22:30,210 --> 00:22:33,210 Аналогично трудно читать, но это действительно печати одного символа в строке. 482 00:22:33,210 --> 00:22:36,780 А если я бар, то теперь печать те построчно. 483 00:22:36,780 --> 00:22:40,140 Так вынос здесь не столько что, ничего себе, смотреть на этой аккуратной новый трюк 484 00:22:40,140 --> 00:22:44,750 где вы можете получить на содержимое специфических букв массив в, 485 00:22:44,750 --> 00:22:48,380 а то, как мы принимаем это основная идеи, как индексирование в массив, 486 00:22:48,380 --> 00:22:51,620 а затем индексации в Массив, который был в этом массиве, 487 00:22:51,620 --> 00:22:56,180 и просто применяя те же идеи немного более сложные примеры. 488 00:22:56,180 --> 00:22:59,560 Но основы действительно не изменилось, даже с прошлой недели. 489 00:22:59,560 --> 00:23:02,350 >> Теперь это своего рода своевременно, в том, что, напомним, в нулевой неделе 490 00:23:02,350 --> 00:23:04,110 мы играли с телефонной книгой, как это. 491 00:23:04,110 --> 00:23:06,670 И хотя это, очевидно, физические кусочки бумаги, 492 00:23:06,670 --> 00:23:09,150 Вы можете рода думать Телефонная книга в виде массива. 493 00:23:09,150 --> 00:23:12,770 Конечно, если бы вы были повторно реализовать это кусочки эти бумажки 494 00:23:12,770 --> 00:23:15,260 в компьютере, возможно вы должны использовать то 495 00:23:15,260 --> 00:23:20,270 как массив для хранения всех тех, имена и номера из всех пути 496 00:23:20,270 --> 00:23:23,800 до Z. Так что это хорошо, потому что это позволяет нам возможность, 497 00:23:23,800 --> 00:23:28,310 возможно, рассмотреть, как вы могли бы на самом деле реализовать нечто подобное. 498 00:23:28,310 --> 00:23:31,250 Как и в серии дверей здесь. 499 00:23:31,250 --> 00:23:36,380 Так что, если я could-- нам нужно один добровольно прийти на до. 500 00:23:36,380 --> 00:23:36,980 Посмотрим. 501 00:23:36,980 --> 00:23:40,650 Незнакомое лицо, возможно, незнакомое лицо, возможно. 502 00:23:40,650 --> 00:23:42,090 Как насчет оранжевым цветом? 503 00:23:42,090 --> 00:23:42,680 Вот. 504 00:23:42,680 --> 00:23:45,870 Оранжевый рубашка, давай до. 505 00:23:45,870 --> 00:23:52,230 >> Давайте пойдем дальше теперь и ход эти двери на сторону, 506 00:23:52,230 --> 00:23:54,020 двигаться их из пути на мгновение. 507 00:23:54,020 --> 00:23:56,600 508 00:23:56,600 --> 00:23:57,760 Как тебя зовут? 509 00:23:57,760 --> 00:23:58,580 >> AJAY: 510 00:23:58,580 --> 00:23:58,655 >> DAVID МАЛАН: Аджай. 511 00:23:58,655 --> 00:23:58,680 Дэвид. 512 00:23:58,680 --> 00:23:59,451 Приятно познакомиться. 513 00:23:59,451 --> 00:23:59,950 Хорошо. 514 00:23:59,950 --> 00:24:04,500 Итак, мы имеем за эти шесть Двери в цифровом виде screen-- 515 00:24:04,500 --> 00:24:07,810 или, скорее, семь дверей на screen-- целую кучу цифр. 516 00:24:07,810 --> 00:24:10,099 И я не сказал вам ничего в advance-- согласился? 517 00:24:10,099 --> 00:24:11,140 AJAY: Ничего заранее. 518 00:24:11,140 --> 00:24:14,730 DAVID МАЛАН: Все, что я хочу, чтобы ты Теперь, чтобы найти для меня, и для нас, 519 00:24:14,730 --> 00:24:20,920 действительно, число 50, один шаг за один раз. 520 00:24:20,920 --> 00:24:21,830 >> AJAY: Номер 50? 521 00:24:21,830 --> 00:24:22,580 >> DAVID МАЛАН: 50 Число. 522 00:24:22,580 --> 00:24:24,746 И вы можете показать то, что это За каждым из этих дверей 523 00:24:24,746 --> 00:24:27,930 просто прикасаясь к нему пальцем. 524 00:24:27,930 --> 00:24:31,364 Черт возьми. [Смех] 525 00:24:31,364 --> 00:24:34,560 >> [Аплодисменты] 526 00:24:34,560 --> 00:24:39,540 >> Очень хорошо сделано. 527 00:24:39,540 --> 00:24:40,400 Хорошо. 528 00:24:40,400 --> 00:24:44,090 У нас есть прекрасный подарок Приз для вас здесь. 529 00:24:44,090 --> 00:24:46,520 Ваш выбор фильмов мы обсудили на прошлой неделе. 530 00:24:46,520 --> 00:24:47,362 >> AJAY: О, Боже. 531 00:24:47,362 --> 00:24:49,050 О, я никогда не видел SpaceBalls. 532 00:24:49,050 --> 00:24:49,520 >> DAVID МАЛАН: Космические яйца. 533 00:24:49,520 --> 00:24:50,140 Хорошо. 534 00:24:50,140 --> 00:24:53,790 Так держать только на один момент. 535 00:24:53,790 --> 00:24:57,430 How-- давайте сделаем это обучаемы moment-- 536 00:24:57,430 --> 00:25:00,412 как вы идти о нахождение количества 50? 537 00:25:00,412 --> 00:25:01,370 AJAY: Я выбрал случайно. 538 00:25:01,370 --> 00:25:03,420 DAVID МАЛАН: Таким образом, вы выбрали случайно и повезло. 539 00:25:03,420 --> 00:25:03,790 AJAY: Да. 540 00:25:03,790 --> 00:25:04,456 DAVID МАЛАН: ОК. 541 00:25:04,456 --> 00:25:05,050 Отлично. 542 00:25:05,050 --> 00:25:08,470 Так что теперь, было вам не стали удачливыми, что еще 543 00:25:08,470 --> 00:25:10,210 могло бы произойти за этими дверями? 544 00:25:10,210 --> 00:25:12,930 Так что, если я иду вперед и выявить эти цифры здесь, 545 00:25:12,930 --> 00:25:15,180 они на самом деле в случайном порядке. 546 00:25:15,180 --> 00:25:17,750 И лучшее, что вы могли бы иметь сделано, честно говоря, по, в конечном счете,, 547 00:25:17,750 --> 00:25:19,410 в худшем случае, проверка их всех. 548 00:25:19,410 --> 00:25:23,000 Таким образом, вы получили супер-повезло, что не то, что мы назвали бы алгоритм. 549 00:25:23,000 --> 00:25:24,730 Да, поздравляю. 550 00:25:24,730 --> 00:25:27,010 Но теперь let's-- юмора меня, если бы вы могли. 551 00:25:27,010 --> 00:25:28,310 Пойдем в этой вкладке здесь. 552 00:25:28,310 --> 00:25:31,460 А вот цифры в четко что, кажется, случайный порядок, 553 00:25:31,460 --> 00:25:32,280 , и они были. 554 00:25:32,280 --> 00:25:35,160 Но теперь, если я вместо претензии что за этими дверями 555 00:25:35,160 --> 00:25:39,070 это числа, которые сортируются. 556 00:25:39,070 --> 00:25:41,780 Сейчас целью является также найти нам номер 50. 557 00:25:41,780 --> 00:25:45,910 Но сделать это алгоритмически, и расскажите, как вы собираетесь об этом. 558 00:25:45,910 --> 00:25:48,020 И если вы найдете его, вы держите фильм. 559 00:25:48,020 --> 00:25:49,520 Вы не находите это, вы даете его обратно. 560 00:25:49,520 --> 00:25:52,720 561 00:25:52,720 --> 00:25:58,112 AJAY: Так что я собираюсь проверить концы во-первых, чтобы определить, there's-- 562 00:25:58,112 --> 00:26:02,048 [Смех и аплодисменты] 563 00:26:02,048 --> 00:26:04,451 564 00:26:04,451 --> 00:26:05,492 DAVID МАЛАН: Здесь вы идете. 565 00:26:05,492 --> 00:26:17,080 566 00:26:17,080 --> 00:26:21,700 Давайте взглянем на один предшественников Аджая, 567 00:26:21,700 --> 00:26:25,450 Шон, который был не столь удачлив. 568 00:26:25,450 --> 00:26:28,670 Итак, ваша задача здесь, Шон, состоит в следующем. 569 00:26:28,670 --> 00:26:32,970 Я скрывается за них Двери число семь, 570 00:26:32,970 --> 00:26:37,200 но убранный в некоторых из этих дверей а другие неотрицательные числа. 571 00:26:37,200 --> 00:26:40,730 И ваша цель думать об этом Верхний ряд чисел, как только массив. 572 00:26:40,730 --> 00:26:43,590 Мы просто последовательность частей бумаги с номерами за ними. 573 00:26:43,590 --> 00:26:47,640 И ваша цель, только с помощью верхней Массив здесь, найти мне номер семь. 574 00:26:47,640 --> 00:26:51,200 И мы тогда будем критиковать как вы ходите делать это. 575 00:26:51,200 --> 00:26:52,920 Найти нам номер семь, пожалуйста. 576 00:26:52,920 --> 00:27:02,570 577 00:27:02,570 --> 00:27:03,070 Количество 578 00:27:03,070 --> 00:27:06,760 579 00:27:06,760 --> 00:27:08,179 5, 19, 13. 580 00:27:08,179 --> 00:27:16,752 581 00:27:16,752 --> 00:27:17,835 Это не вопрос с подвохом. 582 00:27:17,835 --> 00:27:21,420 583 00:27:21,420 --> 00:27:21,920 1. 584 00:27:21,920 --> 00:27:26,715 585 00:27:26,715 --> 00:27:29,840 В этот момент ваш счет не очень хорошо, так что вы могли бы также продолжать идти. 586 00:27:29,840 --> 00:27:32,870 587 00:27:32,870 --> 00:27:33,370 3. 588 00:27:33,370 --> 00:27:38,570 589 00:27:38,570 --> 00:27:39,802 Продолжай. 590 00:27:39,802 --> 00:27:42,510 Честно говоря, я не могу не задаться вопросом, то, что вы даже думать о. 591 00:27:42,510 --> 00:27:44,990 >> ШОН: Я могу взять только из верхнего ряда. 592 00:27:44,990 --> 00:27:46,240 DAVID МАЛАН: только верхний ряд. 593 00:27:46,240 --> 00:27:47,281 Итак, вы получили три осталось. 594 00:27:47,281 --> 00:27:48,310 Так найдите мне 7. 595 00:27:48,310 --> 00:27:54,758 596 00:27:54,758 --> 00:27:59,141 >> [Аудитория кричит ПРЕДЛОЖЕНИЯ] 597 00:27:59,141 --> 00:28:22,210 598 00:28:22,210 --> 00:28:26,130 Так как из них были удивительно по очень разным причинам. 599 00:28:26,130 --> 00:28:29,150 Так что это, где мы остановились минуту назад, 600 00:28:29,150 --> 00:28:32,530 и ключевых идей здесь было эти двери были номера 601 00:28:32,530 --> 00:28:37,390 за ними, которые были отсортированы, идеальным вынос, для которых является то, что вы могли бы сделать 602 00:28:37,390 --> 00:28:39,670 принципиально лучше в этот второй example-- 603 00:28:39,670 --> 00:28:42,380 и, действительно, это было Шона Первая попытка с случайных чисел 604 00:28:42,380 --> 00:28:45,460 так же, как before--, но как только как эти цифры сортируются, 605 00:28:45,460 --> 00:28:47,980 так же, как в телефонной книге, что вы можете, очевидно, делать? 606 00:28:47,980 --> 00:28:50,090 Или, как можно использовать эти знания? 607 00:28:50,090 --> 00:28:51,530 Да. 608 00:28:51,530 --> 00:28:54,910 >> АУДИТОРИЯ: Вы идете на полпути [неразборчиво]. 609 00:28:54,910 --> 00:28:55,660 DAVID МАЛАН: Да. 610 00:28:55,660 --> 00:28:56,160 Точно. 611 00:28:56,160 --> 00:28:59,680 Так начальная инстинкт Аджая было проверить концы, насколько я помню, 612 00:28:59,680 --> 00:29:02,320 а затем мы вроде отделкой Пример быстро. 613 00:29:02,320 --> 00:29:05,220 Но если мы начали делать это более методично вдоль этих линий, 614 00:29:05,220 --> 00:29:07,860 но начиная, возможно, в средний, потому что они сортируются, 615 00:29:07,860 --> 00:29:10,900 как только мы открываем номер 16, поэтому мы знаю-- 616 00:29:10,900 --> 00:29:14,850 и давайте делать то, that-- мы Поэтому знаю, что 50, в сегодняшнем случае, 617 00:29:14,850 --> 00:29:16,080 надо быть справа. 618 00:29:16,080 --> 00:29:18,735 Так же, как в нулевом, когда неделю мы разорвали телефонную книгу пополам 619 00:29:18,735 --> 00:29:21,490 и бросил половину Проблема же, та же идея здесь. 620 00:29:21,490 --> 00:29:23,680 Мы можем бросить эту половину проблемы далеко. 621 00:29:23,680 --> 00:29:25,730 И, наверное, то, что вас может сделать алгоритмически, 622 00:29:25,730 --> 00:29:28,710 как только вы знаете, что 50 должно быть вправо, если это в любом месте, 623 00:29:28,710 --> 00:29:31,390 это попытаться там, в середине из оставшихся дверей. 624 00:29:31,390 --> 00:29:33,450 Конечно, 50 выше чем 42, поэтому мы можем 625 00:29:33,450 --> 00:29:36,060 бросить это остальные четверть проблемы в сторону, 626 00:29:36,060 --> 00:29:38,510 и, наконец, определить что-то вроде 50. 627 00:29:38,510 --> 00:29:41,050 Но так же, как с Телефонная книга, эти цифры 628 00:29:41,050 --> 00:29:44,560 были даны нам уже в отсортированный порядок, который оставляет нас 629 00:29:44,560 --> 00:29:47,450 с вопросом, как вам получить вещи в определенном порядке? 630 00:29:47,450 --> 00:29:49,640 И, честно говоря, по какой стоимости? 631 00:29:49,640 --> 00:29:51,390 Это одна вещь, чтобы быть передал телефонную книгу 632 00:29:51,390 --> 00:29:54,810 а затем произвести впечатление на своих друзей, находя номер телефона действительно быстро, не так ли? 633 00:29:54,810 --> 00:29:58,520 Разрывая 32 страниц, чтобы найти человек из 4 миллиардов страниц, 634 00:29:58,520 --> 00:30:00,470 мы сказали был одним ярким примером. 635 00:30:00,470 --> 00:30:03,320 Но сколько времени это займет Verizon для сортировки телефонной книги? 636 00:30:03,320 --> 00:30:06,170 Сколько времени это займет нас сортировать эти семь цифр? 637 00:30:06,170 --> 00:30:10,110 Это вопрос, который мы до сих пор полностью игнорируются. 638 00:30:10,110 --> 00:30:12,330 >> Так что давайте ответить на этот вопрос сейчас. 639 00:30:12,330 --> 00:30:15,920 И мы все из фильмов сейчас, но у нас есть некоторые стресс шары. 640 00:30:15,920 --> 00:30:19,480 Если, скажем, восемь добровольцев Не возражал бы присоединиться к нам здесь? 641 00:30:19,480 --> 00:30:24,100 Давайте идти вперед и делать, как о вы четверо, трое из вас здесь? 642 00:30:24,100 --> 00:30:25,290 Получить новые лица. 643 00:30:25,290 --> 00:30:27,220 И четыре из вас есть? 644 00:30:27,220 --> 00:30:30,760 И now-- давайте не смещения здесь-- и номер восемь сюда на конце. 645 00:30:30,760 --> 00:30:32,060 Поднимайтесь. 646 00:30:32,060 --> 00:30:32,560 Хорошо. 647 00:30:32,560 --> 00:30:37,480 Итак, что мы имеем здесь для каждый из вас является число. 648 00:30:37,480 --> 00:30:40,055 Если вы хотели бы пойти вперед, взять этот номер. 649 00:30:40,055 --> 00:30:40,763 Как тебя зовут? 650 00:30:40,763 --> 00:30:41,950 >> Арти: Арти. 651 00:30:41,950 --> 00:30:43,100 >> DAVID МАЛАН: Арти, ладно. 652 00:30:43,100 --> 00:30:44,297 Ты число 1. 653 00:30:44,297 --> 00:30:45,310 >> AMIN: Амин. 654 00:30:45,310 --> 00:30:46,060 DAVID МАЛАН: Амин. 655 00:30:46,060 --> 00:30:46,820 Дэвид. 656 00:30:46,820 --> 00:30:47,530 Ты число 2. 657 00:30:47,530 --> 00:30:49,100 И идти вперед, а я передаю Вы листы бумаги, 658 00:30:49,100 --> 00:30:52,130 выстраиваются себя в передней части музыки выступает в том же порядке, что и там. 659 00:30:52,130 --> 00:30:52,660 >> ANDY: Привет, Энди. 660 00:30:52,660 --> 00:30:53,970 >> DAVID МАЛАН: Энди, это приятно видеть вас. 661 00:30:53,970 --> 00:30:54,520 Номер 3. 662 00:30:54,520 --> 00:30:55,310 >> JACOB: Иаков. 663 00:30:55,310 --> 00:30:56,760 >> DAVID МАЛАН: Иаков, число 4. 664 00:30:56,760 --> 00:30:57,549 Добро пожаловать на борт. 665 00:30:57,549 --> 00:30:58,090 ГРАНТ: Грант. 666 00:30:58,090 --> 00:30:58,881 DAVID МАЛАН: Грант. 667 00:30:58,881 --> 00:31:00,348 Номер 5. 668 00:31:00,348 --> 00:31:01,200 >> Аланна: Аланна. 669 00:31:01,200 --> 00:31:02,766 >> DAVID МАЛАН: Аланна, число 6. 670 00:31:02,766 --> 00:31:03,589 >> ФРАНЧЕСКА: Фрэнсис. 671 00:31:03,589 --> 00:31:04,880 DAVID МАЛАН: Фрэнсис, число 7. 672 00:31:04,880 --> 00:31:05,200 И? 673 00:31:05,200 --> 00:31:05,830 >> Рейчел: Рэйчел. 674 00:31:05,830 --> 00:31:06,815 >> DAVID МАЛАН: Рэйчел, число 8. 675 00:31:06,815 --> 00:31:07,100 Хорошо. 676 00:31:07,100 --> 00:31:08,766 Идем дальше и получить себе в этом порядке. 677 00:31:08,766 --> 00:31:11,440 Позвольте мне сказать одну остальные музыка стоит на месте. 678 00:31:11,440 --> 00:31:13,670 Где вам нужен стенд? 679 00:31:13,670 --> 00:31:14,170 Хорошо. 680 00:31:14,170 --> 00:31:18,710 Идем дальше и просто поставить свои номера где зрители могут увидеть их на, 681 00:31:18,710 --> 00:31:20,340 пюпитр наружу. 682 00:31:20,340 --> 00:31:27,240 И, надеюсь, наша первая проверка исправности здесь-- 4, 2, 6. 683 00:31:27,240 --> 00:31:27,890 Ой-ой. 684 00:31:27,890 --> 00:31:29,070 Подожди минуту. 685 00:31:29,070 --> 00:31:31,140 Мы не имеем 8. 686 00:31:31,140 --> 00:31:35,180 Мне нужно выселить вас из Пример-то. 687 00:31:35,180 --> 00:31:35,680 Количество 688 00:31:35,680 --> 00:31:36,940 Нет, это нормально. 689 00:31:36,940 --> 00:31:37,890 Посмотрим. 690 00:31:37,890 --> 00:31:38,880 Мы можем сделать это. 691 00:31:38,880 --> 00:31:39,440 Ожидание. 692 00:31:39,440 --> 00:31:43,970 693 00:31:43,970 --> 00:31:45,740 Там мы идем. 694 00:31:45,740 --> 00:31:46,800 Правильно. 695 00:31:46,800 --> 00:31:47,360 Хорошо. 696 00:31:47,360 --> 00:31:50,260 Итак, теперь у нас есть 8, 1, 3 7, 5. 697 00:31:50,260 --> 00:31:50,760 Хорошо. 698 00:31:50,760 --> 00:31:51,360 Отлично. 699 00:31:51,360 --> 00:31:54,400 >> Так что вопрос в руке, в какой ценой, и через то, что метод, 700 00:31:54,400 --> 00:31:58,580 мы можем на самом деле разобраться эти цифры здесь так что мы можем отчасти работать в обратном направлении, 701 00:31:58,580 --> 00:32:02,759 в конечном счете, и decide-- это действительно впечатляет, это действительно эффективным, 702 00:32:02,759 --> 00:32:04,550 что я могу разделить и завоевать телефонную книгу? 703 00:32:04,550 --> 00:32:06,716 Это действительно эффективно, что Я могу разделяй и властвуй 704 00:32:06,716 --> 00:32:08,600 эти цифровые штук бумаги на борту, 705 00:32:08,600 --> 00:32:14,500 если возможно, это будет стоить нам состояние во времени или энергии или циклы процессора 706 00:32:14,500 --> 00:32:17,340 на самом деле получить наши данные в какой определенном порядке? 707 00:32:17,340 --> 00:32:18,930 Так что давайте задать этот вопрос. 708 00:32:18,930 --> 00:32:22,077 >> Так прежде всего, эти цифры в значительной степени случайном порядке, 709 00:32:22,077 --> 00:32:24,160 и я собираюсь предложить один алгоритм, или процесс 710 00:32:24,160 --> 00:32:25,970 , с помощью которого мы можем разобраться этих людей. 711 00:32:25,970 --> 00:32:28,100 Я собираюсь подойти это довольно наивно. 712 00:32:28,100 --> 00:32:30,730 И я собираюсь признавать что это вроде много для меня 713 00:32:30,730 --> 00:32:32,890 обернуть свой ум вокруг установить целые данные сразу. 714 00:32:32,890 --> 00:32:33,640 Но вы знаете, что? 715 00:32:33,640 --> 00:32:37,450 Я собираюсь сделать некоторые очень простые предельные исправления. 716 00:32:37,450 --> 00:32:41,152 4 и 2 вышли из строя, если цель состоит в том, чтобы перейти от 1 до от 8. 717 00:32:41,152 --> 00:32:41,860 Таким образом, вы знаете, что? 718 00:32:41,860 --> 00:32:43,776 Я буду иметь вас ребята поменять, если вы переключитесь 719 00:32:43,776 --> 00:32:46,380 физически позиции и Ваши кусочки бумаги. 720 00:32:46,380 --> 00:32:47,894 Теперь 4 и 6, это в порядке. 721 00:32:47,894 --> 00:32:49,060 Я собираюсь оставить те быть. 722 00:32:49,060 --> 00:32:50,227 6 и 8, те, в порядке. 723 00:32:50,227 --> 00:32:51,185 Going, чтобы оставить их в покое. 724 00:32:51,185 --> 00:32:52,170 8 and1, не в порядке. 725 00:32:52,170 --> 00:32:54,790 Если вы два не возражал бы замены. 726 00:32:54,790 --> 00:32:57,300 Теперь 8 и 3, если вы, ребята, могли обменять. 727 00:32:57,300 --> 00:32:59,320 8 и 7, если вы, ребята, могли обменять. 728 00:32:59,320 --> 00:33:01,790 И 8 и 5, если вы, ребята, могли обменять. 729 00:33:01,790 --> 00:33:03,980 >> Теперь, я сделал? 730 00:33:03,980 --> 00:33:05,200 Нет, очевидно, нет. 731 00:33:05,200 --> 00:33:07,880 Но я сделал Ситуация лучше, не так ли? 732 00:33:07,880 --> 00:33:09,430 Как там ваше имя, номер 8? 733 00:33:09,430 --> 00:33:10,055 >> Рейчел: Рэйчел. 734 00:33:10,055 --> 00:33:12,850 DAVID МАЛАН: Так Рэйчел эффективно пузырились довольно далеко, 735 00:33:12,850 --> 00:33:15,660 весь путь до конца мой массив чисел здесь. 736 00:33:15,660 --> 00:33:17,310 И так, что проблема отчасти решена. 737 00:33:17,310 --> 00:33:21,670 Теперь, очевидно, 2 все еще нуждается в двигаться немного, и 4 и 6 и 1. 738 00:33:21,670 --> 00:33:24,420 Но я, кажется, получили чуть ближе к решению. 739 00:33:24,420 --> 00:33:26,790 Так давайте применим этот же наивно эвристический снова. 740 00:33:26,790 --> 00:33:27,690 2 и 4, ОК. 741 00:33:27,690 --> 00:33:28,810 4 и 6, ОК. 742 00:33:28,810 --> 00:33:29,930 6 и 1, мм мм. 743 00:33:29,930 --> 00:33:32,230 Давайте своп. 744 00:33:32,230 --> 00:33:33,200 6 и 3, мм мм. 745 00:33:33,200 --> 00:33:34,420 Давайте своп. 746 00:33:34,420 --> 00:33:35,580 6 и 7 в порядке. 747 00:33:35,580 --> 00:33:36,590 7 и 5, Нет. 748 00:33:36,590 --> 00:33:37,790 Давайте своп. 749 00:33:37,790 --> 00:33:38,470 А теперь 7 и 8. 750 00:33:38,470 --> 00:33:39,862 И то, что тебя зовут? 751 00:33:39,862 --> 00:33:40,570 ФРАНЧЕСКА: Фрэнсис. 752 00:33:40,570 --> 00:33:41,445 DAVID МАЛАН: Фрэнсис. 753 00:33:41,445 --> 00:33:44,230 Так что теперь Фрэнсис находится в еще лучше Положение, потому что теперь 7 и 8 754 00:33:44,230 --> 00:33:46,440 правильно пропускают до вершины. 755 00:33:46,440 --> 00:33:47,510 Так 2 и 4, ОК. 756 00:33:47,510 --> 00:33:48,720 4 и 1, своп давай. 757 00:33:48,720 --> 00:33:50,410 4 и 3, своп давай. 758 00:33:50,410 --> 00:33:51,550 4 и 6, что ты в порядке. 759 00:33:51,550 --> 00:33:53,340 6 и 5, своп давай. 760 00:33:53,340 --> 00:33:54,590 И теперь эти ребята хороши. 761 00:33:54,590 --> 00:33:55,780 Мы почти на месте. 762 00:33:55,780 --> 00:33:57,706 2 и 1, из того, так поменять. 763 00:33:57,706 --> 00:33:59,080 А теперь сделаем простой тест. 764 00:33:59,080 --> 00:34:03,080 2 и 3, 3 и 4, 4 и 5, 5 и 6, 6 и 7, 8. 765 00:34:03,080 --> 00:34:05,060 Итак, мы закончили. 766 00:34:05,060 --> 00:34:09,310 >> Но какой ценой я тоже сортировать здесь эти цифры? 767 00:34:09,310 --> 00:34:13,960 Ну, сколько шагов я тоже потенциально принять при сортировке этих людей? 768 00:34:13,960 --> 00:34:15,710 Ну, мы еще вернемся к этому вопросу. 769 00:34:15,710 --> 00:34:18,030 Но, честно говоря, если вы получили немного скучно, вот и 770 00:34:18,030 --> 00:34:22,270 вид выявление в том, что это не было может быть, самый эффективный алгоритм. 771 00:34:22,270 --> 00:34:25,230 И в самом деле, если честно, я потею тем более идти назад и вперед. 772 00:34:25,230 --> 00:34:26,639 Это не чувствовал себя особенно эффективным. 773 00:34:26,639 --> 00:34:27,805 Так давайте попробуем что-то еще. 774 00:34:27,805 --> 00:34:31,870 Если вы, ребята, могли сбросить сами в этих восьми значений. 775 00:34:31,870 --> 00:34:32,969 Отличная работа. 776 00:34:32,969 --> 00:34:36,570 >> Давайте взглянем в цифровом виде, для всего Секунду назад мы попробовать что-то еще, 777 00:34:36,570 --> 00:34:38,179 на то, что только что произошло. 778 00:34:38,179 --> 00:34:41,330 Здесь, наверху, вы сейчас увидите визуализация этих восьми людей 779 00:34:41,330 --> 00:34:44,719 в результате чего синий и красный бары представлять числа. 780 00:34:44,719 --> 00:34:46,670 Чем выше полоска индикатора, Чем больше число. 781 00:34:46,670 --> 00:34:48,510 Чем короче бар, чем меньше число. 782 00:34:48,510 --> 00:34:51,560 И то, что вы будете видеть в случайном порядке более восьми из них. 783 00:34:51,560 --> 00:34:55,830 Вы будете видеть эти бары получать отсортирован по этому же алгоритму, 784 00:34:55,830 --> 00:34:59,890 или набор инструкций, которые мы будем называть в дальнейшем пузырьковой сортировки. 785 00:34:59,890 --> 00:35:04,000 Так заметить, каждую секунду или около того, два бара освещая красным, 786 00:35:04,000 --> 00:35:05,590 сравниваются компьютером. 787 00:35:05,590 --> 00:35:08,630 И потом, если большой бар и небольшой бар вышли из строя, 788 00:35:08,630 --> 00:35:11,220 они могли быть обменены для меня. 789 00:35:11,220 --> 00:35:15,120 >> Теперь это невероятно утомительно смотреть это, конечно, 790 00:35:15,120 --> 00:35:18,630 очень долго, но обратите внимание, takeaway-- большие бары, движущихся вправо, 791 00:35:18,630 --> 00:35:20,460 небольшие бары движущиеся влево. 792 00:35:20,460 --> 00:35:23,380 Давайте остановить этот процесс и ускорить этот процесс 793 00:35:23,380 --> 00:35:27,330 чтобы быть намного быстрее, поэтому мы можем получить высокого уровня чувство что, 794 00:35:27,330 --> 00:35:29,970 действительно, пузырьковой сортировки делает. 795 00:35:29,970 --> 00:35:33,150 В самом деле, это бьется, чтобы Правая часть списка, 796 00:35:33,150 --> 00:35:35,260 или массив, тем больше баров. 797 00:35:35,260 --> 00:35:40,020 И наоборот, маленькие бары пузырится свой путь вниз влево, 798 00:35:40,020 --> 00:35:42,950 хотя в более быстром темпе чем мы ранее сделали. 799 00:35:42,950 --> 00:35:45,850 Так, сложнее увидеть с людьми, но визуально это действительно то, что 800 00:35:45,850 --> 00:35:46,540 происходило. 801 00:35:46,540 --> 00:35:49,110 >> Но давайте попробуем принципиально Другой подход сейчас. 802 00:35:49,110 --> 00:35:52,387 Давайте попробуем другой Алгоритм, которым мы должны вас 803 00:35:52,387 --> 00:35:59,640 парни начинают в них оригинальный позиции, которая была такой порядок здесь. 804 00:35:59,640 --> 00:36:00,827 И давайте идти вперед сейчас. 805 00:36:00,827 --> 00:36:02,910 И я собираюсь сделать то еще проще, не так ли? 806 00:36:02,910 --> 00:36:06,710 В ретроспективе, обмен попарно раз и снова, почти немного умен. 807 00:36:06,710 --> 00:36:10,460 Давайте делать вещи еще более наивно, где, если я хочу, чтобы отсортировать эти люди, 808 00:36:10,460 --> 00:36:12,560 позвольте мне продолжать смотреть для наименьшего элемента. 809 00:36:12,560 --> 00:36:14,570 Так прямо сейчас, 4 является наименьшее число я видел. 810 00:36:14,570 --> 00:36:15,695 Я буду помнить это. 811 00:36:15,695 --> 00:36:17,750 Нет, 2 лучше, и помните, что. 812 00:36:17,750 --> 00:36:20,730 1 еще меньше. 813 00:36:20,730 --> 00:36:21,970 3, 7, 5. 814 00:36:21,970 --> 00:36:22,470 Хорошо. 815 00:36:22,470 --> 00:36:23,750 Одно-- как тебя зовут снова? 816 00:36:23,750 --> 00:36:24,400 >> Арти: Арти. 817 00:36:24,400 --> 00:36:24,610 >> DAVID МАЛАН: Арти. 818 00:36:24,610 --> 00:36:25,460 Так, Арти, идти вперед. 819 00:36:25,460 --> 00:36:27,043 Я собираюсь вытащить вас из линии. 820 00:36:27,043 --> 00:36:28,400 Если бы вы могли вернуться сюда. 821 00:36:28,400 --> 00:36:30,790 И мне нужно, чтобы освободить место для него. 822 00:36:30,790 --> 00:36:32,040 У нас есть точки принятия решения здесь. 823 00:36:32,040 --> 00:36:36,000 Как мы могли бы освободить место для Арти здесь В начале, когда число 1 принадлежит? 824 00:36:36,000 --> 00:36:36,770 >> АУДИТОРИЯ: Shift. 825 00:36:36,770 --> 00:36:38,950 >> DAVID МАЛАН: Хорошо, мы может сместить всех. 826 00:36:38,950 --> 00:36:40,860 Но предложить оптимизацию. 827 00:36:40,860 --> 00:36:43,410 Это чувствует себя немного раздражает для меня, чтобы спросить четыре человека 828 00:36:43,410 --> 00:36:44,620 двигаться весь путь вниз. 829 00:36:44,620 --> 00:36:45,520 Что еще я мог сделать? 830 00:36:45,520 --> 00:36:46,360 >> АУДИТОРИЯ: Переключатель их. 831 00:36:46,360 --> 00:36:46,850 >> DAVID МАЛАН: Переключатель их. 832 00:36:46,850 --> 00:36:47,900 И то, что тебя зовут? 833 00:36:47,900 --> 00:36:48,441 >> JACOB: Иаков. 834 00:36:48,441 --> 00:36:50,330 DAVID МАЛАН: Иаков, двигаться. 835 00:36:50,330 --> 00:36:54,440 Гораздо более эффективным только, чтобы иметь Места своп Иаков с Арти, 836 00:36:54,440 --> 00:36:56,710 в отличие от вынуждает все четыре из этих людей, 837 00:36:56,710 --> 00:36:58,734 большое спасибо, чтобы их правильное положение. 838 00:36:58,734 --> 00:37:01,150 Что приятно о Арти сейчас, он в своей правильной позиции. 839 00:37:01,150 --> 00:37:02,060 Давайте сделаем это снова. 840 00:37:02,060 --> 00:37:03,730 2, это наименьшее число, что я видел. 841 00:37:03,730 --> 00:37:05,690 3, 7, 5. 842 00:37:05,690 --> 00:37:06,190 Хорошо. 843 00:37:06,190 --> 00:37:07,467 2, безусловно, самый маленький. 844 00:37:07,467 --> 00:37:08,550 Не нужно делать любую работу. 845 00:37:08,550 --> 00:37:09,320 Давайте сделаем это снова. 846 00:37:09,320 --> 00:37:10,070 6. 847 00:37:10,070 --> 00:37:10,640 Наименьший? 848 00:37:10,640 --> 00:37:11,140 8. 849 00:37:11,140 --> 00:37:11,590 Не-а. 850 00:37:11,590 --> 00:37:11,720 4? 851 00:37:11,720 --> 00:37:12,220 Ох. 852 00:37:12,220 --> 00:37:13,420 Позвольте мне вспомнить 4. 853 00:37:13,420 --> 00:37:13,950 3. 854 00:37:13,950 --> 00:37:15,110 Позвольте мне вспомнить 3. 855 00:37:15,110 --> 00:37:16,080 7, 5. 856 00:37:16,080 --> 00:37:18,490 Самое маленькое число У меня видел на этом проходе есть 3. 857 00:37:18,490 --> 00:37:20,340 Если вы хотите выходи. 858 00:37:20,340 --> 00:37:21,986 Куда мы идем, чтобы поставить вас? 859 00:37:21,986 --> 00:37:22,860 И как тебя зовут? 860 00:37:22,860 --> 00:37:23,530 >> Аланна: Аланна. 861 00:37:23,530 --> 00:37:25,780 >> DAVID МАЛАН: Аланна, мы придется выселить вас. 862 00:37:25,780 --> 00:37:28,670 Но что является более эффективным, чтобы просто поменять двух человек, 863 00:37:28,670 --> 00:37:31,850 чем иметь несколько человек на самом деле обойти более. 864 00:37:31,850 --> 00:37:32,850 Теперь давайте сделаем это снова. 865 00:37:32,850 --> 00:37:34,980 Я собираюсь выбрать 4, так выходи. 866 00:37:34,980 --> 00:37:36,540 А кто будет двигаться? 867 00:37:36,540 --> 00:37:37,750 Номер 8, конечно. 868 00:37:37,750 --> 00:37:40,260 Если я сейчас найти номер 5, выходи. 869 00:37:40,260 --> 00:37:42,104 Номер 8 собирается получить снова выселяют. 870 00:37:42,104 --> 00:37:43,770 Теперь я собираюсь найти номер 6 на месте. 871 00:37:43,770 --> 00:37:44,410 7 на месте. 872 00:37:44,410 --> 00:37:45,080 8 на месте. 873 00:37:45,080 --> 00:37:48,590 >> То, что мы только что сделали сейчас то, что называется выбор рода, 874 00:37:48,590 --> 00:37:52,560 и если мы себе это, это будете чувствовать себя немного по-другому. 875 00:37:52,560 --> 00:37:56,800 Давайте пойдем дальше и от этого Меню здесь, это visualization-- 876 00:37:56,800 --> 00:38:02,920 давайте изменим этот to-- давай, Firefox. 877 00:38:02,920 --> 00:38:07,610 Давайте изменим это в мой выбор рода. 878 00:38:07,610 --> 00:38:11,830 И давайте ускорить его, как и прежде, и начать визуализацию сейчас. 879 00:38:11,830 --> 00:38:13,990 И этот алгоритм имеет другое чувство к нему. 880 00:38:13,990 --> 00:38:16,480 На каждой итерации, честно говоря, это еще более простым. 881 00:38:16,480 --> 00:38:18,385 Я просто выбрав самый маленький элемент. 882 00:38:18,385 --> 00:38:21,510 Теперь, честно говоря, я немного повезло, что Время, в том, что он сортируются очень быстро. 883 00:38:21,510 --> 00:38:22,660 Элементы были случайными. 884 00:38:22,660 --> 00:38:25,520 Это не так, как мы будем в конечном итоге см, принципиально быстрее. 885 00:38:25,520 --> 00:38:29,400 Но давайте посмотрим, третий и последний подходить здесь относительно того, что происходит. 886 00:38:29,400 --> 00:38:36,230 Так что давайте идти вперед и сбросить вас, ребята в последний раз, чтобы быть в этом порядке здесь. 887 00:38:36,230 --> 00:38:38,450 >> А теперь, я собираюсь быть немного более умным, 888 00:38:38,450 --> 00:38:40,220 просто чтобы закруглить наши алгоритмы. 889 00:38:40,220 --> 00:38:41,230 Я собираюсь сделать это. 890 00:38:41,230 --> 00:38:43,140 Я собираюсь не идти назад и вперед так много. 891 00:38:43,140 --> 00:38:44,900 Честно говоря, я устал от все это перемещения. 892 00:38:44,900 --> 00:38:47,691 Я просто хочу, чтобы принять то, что я дано в начале списка, 893 00:38:47,691 --> 00:38:49,460 и я собираюсь разобраться что тогда и там. 894 00:38:49,460 --> 00:38:50,140 И вот мы. 895 00:38:50,140 --> 00:38:51,030 Номер 4. 896 00:38:51,030 --> 00:38:53,680 Я собираюсь вставить номер 4 в отсортированный список. 897 00:38:53,680 --> 00:38:54,180 Готово. 898 00:38:54,180 --> 00:38:58,300 Я утверждаю, сейчас, и просто сделать это более ясно, эта часть моего списка сортируется. 899 00:38:58,300 --> 00:39:02,610 Это своего рода глупой претензии, но на самом деле 4 сортируется в список размере одной. 900 00:39:02,610 --> 00:39:04,210 Теперь, я собираюсь взять на числа 2. 901 00:39:04,210 --> 00:39:07,670 Номер 2 я теперь собираюсь вставить в нужном месте. 902 00:39:07,670 --> 00:39:08,680 Так где же 2 принадлежат? 903 00:39:08,680 --> 00:39:09,824 Очевидно, здесь. 904 00:39:09,824 --> 00:39:11,490 Так что вперед и вернуться, если бы мог. 905 00:39:11,490 --> 00:39:14,406 И почему вы, ребята просто взять Ваша музыка стоит с вами на этот раз. 906 00:39:14,406 --> 00:39:17,020 А давайте насильно вставить вам в начале списка. 907 00:39:17,020 --> 00:39:17,936 Так немного больше работы. 908 00:39:17,936 --> 00:39:20,890 Я должен был переместить Иакова вокруг, и как тебя зовут? 909 00:39:20,890 --> 00:39:21,420 >> AMIN: Амин. 910 00:39:21,420 --> 00:39:22,270 >> DAVID МАЛАН: Амин. 911 00:39:22,270 --> 00:39:24,350 Но по крайней мере я не идти вперед и назад. 912 00:39:24,350 --> 00:39:25,739 Я просто принимать вещи, как я иду. 913 00:39:25,739 --> 00:39:27,530 Я просто вставляя их в нужном месте. 914 00:39:27,530 --> 00:39:29,220 6, это на самом деле довольно легко. 915 00:39:29,220 --> 00:39:31,510 Давайте вставить вам там, если вы просто хотел отодвинуться немного. 916 00:39:31,510 --> 00:39:32,870 Номер 8, также довольно легко. 917 00:39:32,870 --> 00:39:33,741 Право там. 918 00:39:33,741 --> 00:39:34,240 Черт возьми. 919 00:39:34,240 --> 00:39:37,590 Номер 1 мы не можем просто поменять с Амином здесь, 920 00:39:37,590 --> 00:39:39,340 потому что это будет испортить заказа. 921 00:39:39,340 --> 00:39:40,660 Поэтому мы должны быть немного умнее. 922 00:39:40,660 --> 00:39:42,770 Так, Арти, если бы вы могли резервное копирование на мгновение. 923 00:39:42,770 --> 00:39:46,550 Давайте пойдем дальше и переложить сейчас, в отличие от наших предыдущих алгоритмов, 924 00:39:46,550 --> 00:39:50,910 чтобы освободить место для Арти прямо здесь в начале. 925 00:39:50,910 --> 00:39:54,690 Так, в конце концов, я отчасти делать то, что я хотел избежать прежде. 926 00:39:54,690 --> 00:39:57,770 И так мой алгоритм является своего рода из вспять, интеллектуально, 927 00:39:57,770 --> 00:39:59,070 от того, что он изначально был. 928 00:39:59,070 --> 00:40:01,240 Я просто делаю перемену в другой точке. 929 00:40:01,240 --> 00:40:02,291 Теперь я на 3. 930 00:40:02,291 --> 00:40:02,790 О, черт. 931 00:40:02,790 --> 00:40:04,039 Мы должны делать больше работы снова. 932 00:40:04,039 --> 00:40:05,060 Так что давайте толкать вас. 933 00:40:05,060 --> 00:40:09,360 Давайте перейдем 8, 6, 4-- о oh-- и 3 будет идти прямо там. 934 00:40:09,360 --> 00:40:11,490 Так по крайней мере небольшие сбережения на этот раз. 935 00:40:11,490 --> 00:40:13,100 7, не слишком много работы предстоит сделать. 936 00:40:13,100 --> 00:40:15,370 Так что если вы хотите, чтобы совать назад, давайте вставим вас. 937 00:40:15,370 --> 00:40:17,440 И, наконец, 5, если вам хотите трещать назад, мы 938 00:40:17,440 --> 00:40:22,610 необходимо перенести вас, вас, Вы, до пяти на месте. 939 00:40:22,610 --> 00:40:25,670 >> Так что теперь, чтобы увидеть это в Высокий уровень графически, 940 00:40:25,670 --> 00:40:31,080 давайте сделаем этот алгоритм визуализации одного дополнительного времени. 941 00:40:31,080 --> 00:40:33,580 Так что это мы будем называть вставки рода. 942 00:40:33,580 --> 00:40:37,700 Мы будем запускать его как быстро, и начать его здесь. 943 00:40:37,700 --> 00:40:39,580 И это тоже имеет различные чувства. 944 00:40:39,580 --> 00:40:42,180 Это своего рода становится все лучше и лучше, но это никогда не идеально 945 00:40:42,180 --> 00:40:44,630 пока я не пойти и гладкой в ​​этих пробелов. 946 00:40:44,630 --> 00:40:47,860 Потому что, опять же, я только брать то, что Я уделяется слева направо. 947 00:40:47,860 --> 00:40:50,350 Так что я не так повезло что все было идеально. 948 00:40:50,350 --> 00:40:54,190 Вот почему мы должны были это немного mispositions что мы фиксированные во времени. 949 00:40:54,190 --> 00:40:58,890 >> Таким образом, все эти алгоритмы, кажется, работать на слегка разными темпами. 950 00:40:58,890 --> 00:41:02,030 На самом деле, что бы вы сказать, лучший или самый быстрый на данный момент? 951 00:41:02,030 --> 00:41:03,450 Bubble рода, в первую очередь? 952 00:41:03,450 --> 00:41:05,000 Сортировать Выбор, второй? 953 00:41:05,000 --> 00:41:08,450 Вносимые рода, третий? 954 00:41:08,450 --> 00:41:10,710 Я слышал, некоторые выбора сорта. 955 00:41:10,710 --> 00:41:13,280 Другие мысли? 956 00:41:13,280 --> 00:41:16,880 >> Вот и получается, что все эти алгоритмы 957 00:41:16,880 --> 00:41:22,400 принципиально так же, как эффективно, как каждый other-- или, наоборот, как 958 00:41:22,400 --> 00:41:25,980 неэффективной, так как друг с другом, потому что мы можем сделать принципиально 959 00:41:25,980 --> 00:41:28,120 лучше, чем все три из этих алгоритмов. 960 00:41:28,120 --> 00:41:29,990 И это немного белого лежат тоже. 961 00:41:29,990 --> 00:41:32,580 когда я говорю, как эффективно или неэффективной, 962 00:41:32,580 --> 00:41:35,040 что, по крайней мере для супер-большие значения п. 963 00:41:35,040 --> 00:41:38,450 Когда у нас есть всего восемь человек здесь, или, может быть, 50 или около того баров на экране, 964 00:41:38,450 --> 00:41:41,645 вы абсолютно заметить различия Среди этих трех алгоритмов. 965 00:41:41,645 --> 00:41:44,020 Но, как п, число людей, или количество цифр, 966 00:41:44,020 --> 00:41:46,350 или число людей в телефоне Книга, или количество веб-страниц 967 00:41:46,350 --> 00:41:48,230 в базе данных компании Google становится больше и больше, 968 00:41:48,230 --> 00:41:51,650 мы увидим, что все три из них алгоритмы на самом деле очень плохо. 969 00:41:51,650 --> 00:41:54,060 И мы можем сделать принципиально лучше, чем это. 970 00:41:54,060 --> 00:41:56,830 >> Давайте взглянем, наконец, на то, что эти алгоритмы могут 971 00:41:56,830 --> 00:41:59,520 походить в контекст нескольких других 972 00:41:59,520 --> 00:42:03,550 а также путем этом визуализация здесь 973 00:42:03,550 --> 00:42:06,860 что будет представлять нас количество алгоритмов. 974 00:42:06,860 --> 00:42:10,330 Давайте пойдем дальше и поздравить наши участники здесь, все из которых 975 00:42:10,330 --> 00:42:11,690 сортируются себя очень хорошо. 976 00:42:11,690 --> 00:42:15,124 Если вы хотели бы взять прощальный подарок. 977 00:42:15,124 --> 00:42:16,540 Вы можете хранить ваши номера, а также. 978 00:42:16,540 --> 00:42:19,460 979 00:42:19,460 --> 00:42:22,520 И то, что вы увидите, или, вернее, слышать, теперь, 980 00:42:22,520 --> 00:42:25,710 является то, что, как мы ставим звуки в каждом из этих стержней 981 00:42:25,710 --> 00:42:28,660 и связать его с программным обеспечением, отличается частота звука, 982 00:42:28,660 --> 00:42:33,970 Вы можете обернуть свой ум больше audioly вокруг того, что каждая из этих вещей 983 00:42:33,970 --> 00:42:34,470 Выглядит как. 984 00:42:34,470 --> 00:42:39,325 Первый из которых является сортировка вставками 985 00:42:39,325 --> 00:42:44,275 >> [TONES] 986 00:42:44,275 --> 00:42:47,245 987 00:42:47,245 --> 00:42:49,720 >> Это пузырьковой сортировки. 988 00:42:49,720 --> 00:42:54,175 >> [TONES] 989 00:42:54,175 --> 00:43:17,250 990 00:43:17,250 --> 00:43:18,222 >> Сортировать Выбор. 991 00:43:18,222 --> 00:43:22,596 >> [TONES] 992 00:43:22,596 --> 00:43:33,570 993 00:43:33,570 --> 00:43:35,150 >> То, что называется сортировка слиянием. 994 00:43:35,150 --> 00:43:38,140 >> [TONES] 995 00:43:38,140 --> 00:43:49,510 996 00:43:49,510 --> 00:43:51,278 >> Гном рода. 997 00:43:51,278 --> 00:43:56,390 >> [TONES] 998 00:43:56,390 --> 00:44:08,240 999 00:44:08,240 --> 00:44:09,430 >> Вот именно для CS50. 1000 00:44:09,430 --> 00:44:13,360 Мы будем видеть Вас в среду. 1001 00:44:13,360 --> 00:44:16,671 >> Рассказчик: И теперь, "Deep Мысли ", по Daven Фарнэме. 1002 00:44:16,671 --> 00:44:19,910 1003 00:44:19,910 --> 00:44:21,590 Почему это для петли? 1004 00:44:21,590 --> 00:44:23,200 Почему бы не сделать его лучше? 1005 00:44:23,200 --> 00:44:25,970 Я бы сделать пять петлю. 1006 00:44:25,970 --> 00:44:28,720 >> [Смех]