1 00:00:00,000 --> 00:00:03,353 >> [Играет музыка] 2 00:00:03,353 --> 00:00:04,842 3 00:00:04,842 --> 00:00:06,050 Дэвид Малан: Привет, всем. 4 00:00:06,050 --> 00:00:07,777 Это supersection CS50 в. 5 00:00:07,777 --> 00:00:09,860 Назначенные Разделы не будет начать еще на неделю. 6 00:00:09,860 --> 00:00:11,580 И поэтому сегодня, я здесь with-- 7 00:00:11,580 --> 00:00:12,122 >> МАРИЯ: Мария. 8 00:00:12,122 --> 00:00:14,163 Дэвид Малан: --to самом деле взглянуть на проблемы 9 00:00:14,163 --> 00:00:16,110 установить один, курс годов Первые недели материала, 10 00:00:16,110 --> 00:00:19,780 вам ориентироваться с CS50 IDE, немного из Linux, операционной системы, это 11 00:00:19,780 --> 00:00:22,290 работающих на IDE, а также взглянем на некоторые из перехода 12 00:00:22,290 --> 00:00:25,730 с нуля до C ведущих до проблемы установите один. 13 00:00:25,730 --> 00:00:28,340 >> Так что без дальнейших церемоний, в задаче установить один, 14 00:00:28,340 --> 00:00:30,520 Вы будете введен в CS50 IDE, который 15 00:00:30,520 --> 00:00:33,230 это веб-программирования среда, которую мы используем для того, 16 00:00:33,230 --> 00:00:34,280 писать программы. 17 00:00:34,280 --> 00:00:37,280 Он разработан, чтобы выглядеть очень напоминает типичного компьютера 18 00:00:37,280 --> 00:00:39,430 Система работает под управлением операционной Система называется Linux. 19 00:00:39,430 --> 00:00:42,440 Но это в так называемом облаке, что означает каждый в классе 20 00:00:42,440 --> 00:00:45,100 может на самом деле имеют его или ее собственный счет и использовать его, как хорошо. 21 00:00:45,100 --> 00:00:48,950 >> Так что большинство из вас, вероятно, никогда не использовали среда Linux, прежде чем или, возможно, 22 00:00:48,950 --> 00:00:50,447 даже среда командной строки. 23 00:00:50,447 --> 00:00:52,280 И командной строки среда отличается. 24 00:00:52,280 --> 00:00:53,200 Это все текстовые. 25 00:00:53,200 --> 00:00:54,730 Это все клавиатурные команды. 26 00:00:54,730 --> 00:00:59,480 И это не Mousing, не иконы, нет диалога окон, ни меню. 27 00:00:59,480 --> 00:01:00,212 Это чисто текстовый. 28 00:01:00,212 --> 00:01:01,920 Поэтому сначала, что это вроде чувствует, как шаг 29 00:01:01,920 --> 00:01:04,434 назад в плане сложности. 30 00:01:04,434 --> 00:01:06,600 Но он оказался намного более мощный, конечно, 31 00:01:06,600 --> 00:01:08,510 для компьютерной ученого, в конечном счете,. 32 00:01:08,510 --> 00:01:09,540 >> Итак, давайте взглянем. 33 00:01:09,540 --> 00:01:13,850 Вот я в CS50.io, через который Вы можете войти в CS50 IDE. 34 00:01:13,850 --> 00:01:17,414 И так же, как в пустом, есть три основные области в этом экране. 35 00:01:17,414 --> 00:01:20,080 Так на левой стороне, у нас есть что будет файл-браузер. 36 00:01:20,080 --> 00:01:22,413 И есть эта папка на сверху, что в настоящее время пуст право 37 00:01:22,413 --> 00:01:24,690 так как я избавился от всех своих файлы до supersection. 38 00:01:24,690 --> 00:01:27,599 И вот, когда мы будем сохранить C файлы, которые мы пишем. 39 00:01:27,599 --> 00:01:30,890 В правом верхнем углу, у нас есть место, где весь наш код собирается получить письменное. 40 00:01:30,890 --> 00:01:34,610 И в самом деле, если я нажимаю это плюс, это будет позвольте мне выбрать новый файл. 41 00:01:34,610 --> 00:01:38,310 И здесь я могу начать писать код на Си или действительно, любое количество других языков. 42 00:01:38,310 --> 00:01:42,670 >> А потом на дно, где его говорит jharvard @ ide50-- и ваш будет 43 00:01:42,670 --> 00:01:45,080 что-то сказать немного different-- Что это было называется? 44 00:01:45,080 --> 00:01:48,644 45 00:01:48,644 --> 00:01:49,310 Окно терминала. 46 00:01:49,310 --> 00:01:49,570 Да. 47 00:01:49,570 --> 00:01:51,810 Таким образом, окно терминала так называемый командной строки 48 00:01:51,810 --> 00:01:55,540 Интерфейс, через который вы можете взаимодействовать с операционной системой. 49 00:01:55,540 --> 00:01:58,220 И сейчас, мы собираемся сделать очень мало использование this-- 50 00:01:58,220 --> 00:02:01,170 скомпилировать, чтобы смотреть на Сообщения об ошибках, которые мы видим, 51 00:02:01,170 --> 00:02:02,347 и запустить наши программы. 52 00:02:02,347 --> 00:02:04,680 Но в конечном счете, мы собираемся чтобы сделать гораздо больше, а также. 53 00:02:04,680 --> 00:02:07,490 И вы даже можете установить программное обеспечение и управлять рабочее пространство 54 00:02:07,490 --> 00:02:09,066 в CS50 IDE, а также. 55 00:02:09,066 --> 00:02:10,440 Но больше на этом в другой раз. 56 00:02:10,440 --> 00:02:12,689 >> Так что давайте идти вперед и написать очень простая программа просто 57 00:02:12,689 --> 00:02:15,064 пройти через разминки hello.c, которые, возможно, 58 00:02:15,064 --> 00:02:16,480 простейший программа, мы можем написать. 59 00:02:16,480 --> 00:02:18,330 Я уже открыл новую вкладку. 60 00:02:18,330 --> 00:02:24,310 Я собираюсь идти вперед и говорят включают в себя стандартные io.h. 61 00:02:24,310 --> 00:02:25,325 Тогда Int основной (пустоту). 62 00:02:25,325 --> 00:02:28,930 63 00:02:28,930 --> 00:02:35,200 И тогда Е ("привет, мир" Обратная косая черта н, недалеко цитата, 64 00:02:35,200 --> 00:02:39,480 Закрыть скобки, и точка с запятой. 65 00:02:39,480 --> 00:02:39,990 >> Отлично. 66 00:02:39,990 --> 00:02:41,700 Так что теперь моя заметить окно без названия. 67 00:02:41,700 --> 00:02:44,840 Так что я очень быстро собираюсь подняться на файл, сохранить. 68 00:02:44,840 --> 00:02:46,910 И важно, что Я называю это «не привет." 69 00:02:46,910 --> 00:02:49,243 Таким образом, очень распространенная ошибка, особенно в задаче на один, 70 00:02:49,243 --> 00:02:52,530 это случайно просто назвать свою Программа "вода" или "жадным" или "Марио" 71 00:02:52,530 --> 00:02:53,890 или "кредит" и тому подобное. 72 00:02:53,890 --> 00:02:55,970 Но вы на самом деле хотите, чтобы что у вас есть расширение файла 73 00:02:55,970 --> 00:02:58,928 потому что это единственный путь, который компилятор, а также редактор кода 74 00:02:58,928 --> 00:03:00,710 знает, что ты на самом деле писать код C. 75 00:03:00,710 --> 00:03:02,280 Итак, позвольте мне идти вперед и нажмите кнопку Сохранить. 76 00:03:02,280 --> 00:03:05,710 >> И сейчас тоже, то, что CS50 IDE сделал для нас это также 77 00:03:05,710 --> 00:03:07,120 Синтаксис подчеркнул все. 78 00:03:07,120 --> 00:03:08,822 Так что это все стало очень красочные. 79 00:03:08,822 --> 00:03:10,780 И весь смысл что не работает. 80 00:03:10,780 --> 00:03:14,290 Это просто, чтобы привлечь глаза на концептуально различных частей 81 00:03:14,290 --> 00:03:15,310 из этой программы. 82 00:03:15,310 --> 00:03:17,570 Так что давайте идти вперед и скомпилировать. 83 00:03:17,570 --> 00:03:19,490 И я могу скомпилировать в нескольких отношениях. 84 00:03:19,490 --> 00:03:22,010 И в неделю один, то старой школы, как мы сделали 85 00:03:22,010 --> 00:03:26,250 это было буквально на командования line-- "лязг hello.c." 86 00:03:26,250 --> 00:03:27,596 А потом я попал Enter. 87 00:03:27,596 --> 00:03:29,720 И ничего не кажется, произошло в окне терминала. 88 00:03:29,720 --> 00:03:32,654 Но то, что сделал изменения в IDE? 89 00:03:32,654 --> 00:03:35,320 Где, опять же, просто означает, что IDE Интегрированная среда развития. 90 00:03:35,320 --> 00:03:38,360 Это причудливый способ сказать, это комплексное развитие 91 00:03:38,360 --> 00:03:40,620 среда для разработки программного обеспечения. 92 00:03:40,620 --> 00:03:42,477 Итак, что же изменится в интерфейсе? 93 00:03:42,477 --> 00:03:44,310 Что вы заметили это другое, Мария? 94 00:03:44,310 --> 00:03:47,100 >> МАРИЯ: Я заметил, что-то под IDE50 папку здесь. 95 00:03:47,100 --> 00:03:47,850 >> Дэвид Малан: Да. 96 00:03:47,850 --> 00:03:50,230 Так здесь не только у нас есть "hello.c." 97 00:03:50,230 --> 00:03:53,120 У нас также есть "a.out", который является своего рода немой название программы. 98 00:03:53,120 --> 00:03:56,430 Но на самом деле, это имя по умолчанию для Программа, когда вы просто скомпилировать код 99 00:03:56,430 --> 00:03:59,110 и не говорите компилятор какой файл для вывода. 100 00:03:59,110 --> 00:04:01,790 Так что, если я хочу, чтобы запустить это, я нужно сказать compiler-- 101 00:04:01,790 --> 00:04:05,340 или, скорее, мне нужно рассказать рабочее пространство, что я 102 00:04:05,340 --> 00:04:09,780 хочу, чтобы запустить программу под названием "a.out". 103 00:04:09,780 --> 00:04:10,550 Войти. 104 00:04:10,550 --> 00:04:12,474 И есть "привет, Мир. "теперь" ./ ". 105 00:04:12,474 --> 00:04:13,390 на самом деле важно. 106 00:04:13,390 --> 00:04:16,050 Даже хотя обычно мы только написать имена команд, 107 00:04:16,050 --> 00:04:19,060 когда это программа у Вас есть написано, вы хотите сказать, "./" 108 00:04:19,060 --> 00:04:22,460 потому что явно говорит Linux что вы хотите, чтобы запустить программу под названием 109 00:04:22,460 --> 00:04:26,930 "a.out", который в этом, где точка означает этот каталог, что я в настоящее время 110 00:04:26,930 --> 00:04:31,600 в, который, случается, называется рабочее место, "a.out. 111 00:04:31,600 --> 00:04:35,410 Потому что, если я только что сказал "a.out", Enter, Я иду, чтобы получить "a.out команды не 112 00:04:35,410 --> 00:04:38,035 нашел ", потому что computer-- потому что я придумал "a.out"; 113 00:04:38,035 --> 00:04:40,910 он не пришел с computer-- не знаю, где его искать, 114 00:04:40,910 --> 00:04:43,590 хотя это право у меня под носом, так сказать. 115 00:04:43,590 --> 00:04:44,090 ОК. 116 00:04:44,090 --> 00:04:49,910 Таким образом, мы могли бы изменить это быть "звон -o привет hello.c." 117 00:04:49,910 --> 00:04:53,030 И если я ударил Enter, какая программа это происходит на выход для меня? 118 00:04:53,030 --> 00:04:55,710 Что имя файла? 119 00:04:55,710 --> 00:04:57,500 Да, в спину. 120 00:04:57,500 --> 00:04:58,479 Это верно. "Здравствуйте." 121 00:04:58,479 --> 00:05:00,520 Таким образом, "привет" будет название программы 122 00:05:00,520 --> 00:05:04,610 потому что мы использовали так называемый параметр командной строки, который является только 123 00:05:04,610 --> 00:05:08,120 способ изменения поведения компилятор на самом деле выход 124 00:05:08,120 --> 00:05:09,450 конкретное имя файла. 125 00:05:09,450 --> 00:05:12,400 И в самом деле, если я увеличить , и посмотреть здесь, 126 00:05:12,400 --> 00:05:17,430 Теперь у меня есть не только "a.out" и "hello.c", но и "привет", а также. 127 00:05:17,430 --> 00:05:22,410 Так что теперь я могу сделать "./hello," Enter. 128 00:05:22,410 --> 00:05:23,640 И есть "привет, мир." 129 00:05:23,640 --> 00:05:25,640 Но и это lastly-- теперь будет конвенция 130 00:05:25,640 --> 00:05:27,590 мы используем на протяжении всей семестр, typically-- 131 00:05:27,590 --> 00:05:30,070 что вы можете также просто сказать "привет сделать." 132 00:05:30,070 --> 00:05:33,370 И в самом деле, это сказать, что это до на сегодняшний день, потому что он уже существует. 133 00:05:33,370 --> 00:05:37,860 Позвольте мне идти вперед и удалить с команда RM, как "a.out" - 134 00:05:37,860 --> 00:05:39,644 и сказать "удалить регулярный файл a.out"? 135 00:05:39,644 --> 00:05:41,810 Это просто означает,, вы уверены, что хотите удалить его? 136 00:05:41,810 --> 00:05:42,880 Я хочу сказать, да. 137 00:05:42,880 --> 00:05:46,690 А потом я собираюсь удалить "привет", но не "hello.c." 138 00:05:46,690 --> 00:05:49,920 Я собираюсь сказать "да" в явном виде, но "у" достаточно, как хорошо. 139 00:05:49,920 --> 00:05:52,140 >> А теперь обратите внимание, если я введите ls-- который, напомним, 140 00:05:52,140 --> 00:05:55,540 означает list-- это список всех файлы в моей папке. 141 00:05:55,540 --> 00:05:57,850 И в самом деле, если я увеличить , и посмотрите на левой верхней, 142 00:05:57,850 --> 00:05:59,730 это подтверждает, что то, что в этой папке, даже 143 00:05:59,730 --> 00:06:04,990 хотя это помечены как IDE50 здесь и не место для работы, это просто "hello.c." 144 00:06:04,990 --> 00:06:09,152 Так что теперь здесь, если я у "сделать привет", Enter, 145 00:06:09,152 --> 00:06:12,360 Теперь я вижу гораздо больше команду, но более сложные команды, что происходит 146 00:06:12,360 --> 00:06:13,940 чтобы быть полезным в ближайшие недели. 147 00:06:13,940 --> 00:06:16,720 И теперь я могу сказать, "./hello." 148 00:06:16,720 --> 00:06:19,257 >> Итак, давайте сделаем краткий обзор команды некоторые другие Linux. 149 00:06:19,257 --> 00:06:21,840 Тогда почему бы нам не сделать шаг назад и реально взглянуть на C более 150 00:06:21,840 --> 00:06:25,020 Как правило, переход от нуля С, а затем заключить с выражением 151 00:06:25,020 --> 00:06:27,305 в первой задаче в С. Хорошо. 152 00:06:27,305 --> 00:06:30,430 Так что я собираюсь идти вперед и только чистый до моей рабочей области Control-L только 153 00:06:30,430 --> 00:06:31,429 держать экран аккуратно. 154 00:06:31,429 --> 00:06:33,520 Но это не имеет никакого функционального повлиять иначе. 155 00:06:33,520 --> 00:06:35,820 >> Напомним, что мы уже видели несколько команд сейчас. 156 00:06:35,820 --> 00:06:39,900 Таким образом, мы видели лязг, которые, как правило вы не придется выполнять вручную больше. 157 00:06:39,900 --> 00:06:41,650 Мы вместо этого использовать марку. 158 00:06:41,650 --> 00:06:45,290 Но мы также видели, Ls, который показывает список файлов в моем каталоге. 159 00:06:45,290 --> 00:06:48,750 А теперь почему there-- есть два Файлы теперь, "привет" и "hello.c." 160 00:06:48,750 --> 00:06:52,240 Почему звезда или Звездочка после "привет"? 161 00:06:52,240 --> 00:06:54,900 Что это означает на основе на то, что мы видели в неделю один? 162 00:06:54,900 --> 00:06:58,852 163 00:06:58,852 --> 00:07:00,400 Как вы думаете? 164 00:07:00,400 --> 00:07:02,742 Что означают звезды? 165 00:07:02,742 --> 00:07:04,614 >> МАРИЯ: For-- программы "привет"? 166 00:07:04,614 --> 00:07:05,530 Дэвид Малан: "Привет *". 167 00:07:05,530 --> 00:07:06,330 Да. 168 00:07:06,330 --> 00:07:07,760 О, да? 169 00:07:07,760 --> 00:07:08,639 О, исполняемым. 170 00:07:08,639 --> 00:07:09,180 Это верно. 171 00:07:09,180 --> 00:07:10,890 Так это означает, что "привет" является исполняемым. 172 00:07:10,890 --> 00:07:13,430 Так на самом деле, вот почему Я могу сделать "./hello." 173 00:07:13,430 --> 00:07:13,930 Отлично. 174 00:07:13,930 --> 00:07:15,179 Так что еще я могу сделать здесь? 175 00:07:15,179 --> 00:07:17,290 Ну, оказывается, что я могу Также создавать каталоги. 176 00:07:17,290 --> 00:07:20,924 Итак, позвольте мне идти вперед и создавать, например, "pset1" Каталог. 177 00:07:20,924 --> 00:07:23,590 И проблема установить параметры будет у вас сделать именно это, 178 00:07:23,590 --> 00:07:25,260 так что вам не нужно помнить сегодня. 179 00:07:25,260 --> 00:07:27,340 Но "MkDir pset1" кажется не имеют никакого влияния. 180 00:07:27,340 --> 00:07:30,540 Но снова, сообщение об ошибке как правило, хорошо. 181 00:07:30,540 --> 00:07:34,060 Так что, если я типа "LS" now-- ах, теперь У меня есть исполняемый файл с именем 182 00:07:34,060 --> 00:07:36,570 "привет," С файл с именем "hello.c." 183 00:07:36,570 --> 00:07:40,860 И тогда Слэш, так говорить, что это означает, является каталогом. 184 00:07:40,860 --> 00:07:42,510 >> Так на самом деле, теперь я хочу, чтобы открыть его. 185 00:07:42,510 --> 00:07:45,730 И я не дважды щелкните на нем, как в GUI, графической среде. 186 00:07:45,730 --> 00:07:48,550 Я вместо сказать "CD pset1." 187 00:07:48,550 --> 00:07:49,640 Войти. 188 00:07:49,640 --> 00:07:53,100 Ничего интересного не кажется, произошло, за исключением моей маленькой строке 189 00:07:53,100 --> 00:07:57,300 here-- это способ в Linux напоминать мне, где я нахожусь, так, что папка открыта. 190 00:07:57,300 --> 00:08:00,080 Это просто говорит мне явно в отличие от графически. 191 00:08:00,080 --> 00:08:05,100 И если я набираю "Ls", почему я вижу другое подскажите сразу, как вы думаете, 192 00:08:05,100 --> 00:08:07,269 когда я перечислить содержимое pset1? 193 00:08:07,269 --> 00:08:09,310 МАРИЯ: Вы, наверное, не есть что-нибудь в там. 194 00:08:09,310 --> 00:08:09,630 Дэвид Малан: Да. 195 00:08:09,630 --> 00:08:11,510 Итак, мы имеем, очевидно, не создали ничего там 196 00:08:11,510 --> 00:08:13,150 потому что я просто создал каталог. 197 00:08:13,150 --> 00:08:17,690 Теперь, если я хотел, чтобы создать для file-- Я, например, мог бы создать новый файл. 198 00:08:17,690 --> 00:08:20,190 И тогда я мог пойти в Сохранить и сохраните его как, 199 00:08:20,190 --> 00:08:23,090 как, "mario.c", если вы делаете стандартный выпуск PSET одного. 200 00:08:23,090 --> 00:08:27,610 А потом, как и любой Mac или ПК, просто выбрать папку "pset1, Сохранить. 201 00:08:27,610 --> 00:08:28,740 А теперь файл пуст. 202 00:08:28,740 --> 00:08:31,160 Но давайте увеличивать раз в течение секунды. 203 00:08:31,160 --> 00:08:32,470 Давайте сделаем Ls здесь. 204 00:08:32,470 --> 00:08:34,470 Теперь мы видим, "mario.c". 205 00:08:34,470 --> 00:08:37,850 >> Так что несколько других команд, которые стоит имея в виду, в течение time-- 206 00:08:37,850 --> 00:08:41,200 ясно, или Control-L является то, что я было удара; MkDir мы видели; 207 00:08:41,200 --> 00:08:45,240 гт мы видели, как хорошо, что для удаления или удаление файла. 208 00:08:45,240 --> 00:08:49,310 Остерегайтесь вы можете also-- и если вы посмотрите на электронные учебники, вы гт-ВЧ 209 00:08:49,310 --> 00:08:52,630 является очень распространенным способом сказать удалить папку, в которой вещи в нем. 210 00:08:52,630 --> 00:08:54,280 Просто супер, супер осторожны. 211 00:08:54,280 --> 00:08:58,780 -rf означает рекурсивно удалить все это 212 00:08:58,780 --> 00:09:01,150 Вы пытаетесь удалить и насильно удалить его. 213 00:09:01,150 --> 00:09:04,630 Так рекурсивный средства, если это папка с папка с папкой с папкой, 214 00:09:04,630 --> 00:09:05,690 удалить все из них. 215 00:09:05,690 --> 00:09:08,680 И насильно означает даже не спросите меня, да или нет, я уверен, что? 216 00:09:08,680 --> 00:09:11,960 Так что это супер опасный путь удаление много вещей быстро. 217 00:09:11,960 --> 00:09:17,210 Но beware-- слишком часто делает бесстрашный студент случайно удалить, скажем, PSET 218 00:09:17,210 --> 00:09:18,000 Один из них, например. 219 00:09:18,000 --> 00:09:19,833 >> МАРИЯ: А если они просто сделать -r, они собираются 220 00:09:19,833 --> 00:09:21,870 чтобы спросить их о каждом файле. 221 00:09:21,870 --> 00:09:22,790 >> Дэвид Малан: Какой умеренно раздражает. 222 00:09:22,790 --> 00:09:23,480 >> МАРИЯ: Да. 223 00:09:23,480 --> 00:09:25,813 >> Дэвид Малан: Так вот почему так многие из нас, самостоятельно входит, 224 00:09:25,813 --> 00:09:27,070 нахожусь в привычку использовать -rf. 225 00:09:27,070 --> 00:09:27,861 Но это опасно. 226 00:09:27,861 --> 00:09:29,010 Так покупатель, берегись. 227 00:09:29,010 --> 00:09:31,050 А потом мв это своего рода интересно имени. 228 00:09:31,050 --> 00:09:33,600 Так что это команда перемещения, которая чувствует себя немного странно 229 00:09:33,600 --> 00:09:37,260 потому что вы действительно можете использовать его для перемещать файлы из одного места в другое. 230 00:09:37,260 --> 00:09:39,970 Например, предположим, что я испортил. 231 00:09:39,970 --> 00:09:43,660 Предположим, что я создал новый файл для PSET. 232 00:09:43,660 --> 00:09:46,320 И я сохранил его как "greedy.c." 233 00:09:46,320 --> 00:09:49,970 Но предположим, я случайно сохранить его в IDE50-- так и в самой моей рабочей 234 00:09:49,970 --> 00:09:51,580 а не в pset1. 235 00:09:51,580 --> 00:09:53,960 >> Вы можете видеть, как много в верхнем левом углу. 236 00:09:53,960 --> 00:09:55,284 Там это "greedy.c." 237 00:09:55,284 --> 00:09:56,450 И есть несколько решений. 238 00:09:56,450 --> 00:09:58,324 Таким образом, одна, я могу использовать супер удобно способ 239 00:09:58,324 --> 00:09:59,740 просто перетащив его. 240 00:09:59,740 --> 00:10:01,910 И что будет на самом деле исправить эту проблему. 241 00:10:01,910 --> 00:10:04,967 Но сегодня, мы пытаемся смотреть на более тайные, но эффективные способы 242 00:10:04,967 --> 00:10:05,550 делать это. 243 00:10:05,550 --> 00:10:07,880 Итак, позвольте мне взять "LS" в pset1. 244 00:10:07,880 --> 00:10:09,690 И я вижу только "mario.c." 245 00:10:09,690 --> 00:10:13,450 Позвольте мне идти вперед и делать "CD ..". 246 00:10:13,450 --> 00:10:15,320 Так компакт снова изменить каталог. 247 00:10:15,320 --> 00:10:18,130 ".." Означает, что, хотя? 248 00:10:18,130 --> 00:10:21,100 Последний раз я сказал "CD pset1 "идти в pset1. 249 00:10:21,100 --> 00:10:24,360 Поэтому, когда я говорю "CD ..", что я делаю? 250 00:10:24,360 --> 00:10:24,910 В обратном направлении. 251 00:10:24,910 --> 00:10:25,150 Да. 252 00:10:25,150 --> 00:10:26,750 >> Так это будет так называемый родителей. 253 00:10:26,750 --> 00:10:29,730 Перейти на один уровень вверх, как выхода из папки. 254 00:10:29,730 --> 00:10:30,500 Так Enter. 255 00:10:30,500 --> 00:10:31,900 И в самом деле, посмотрите, что он сделал. 256 00:10:31,900 --> 00:10:37,070 Это тронуло меня просто в рабочем пространстве, а не из в pset1, который находится в рабочей области. 257 00:10:37,070 --> 00:10:39,710 И теперь, если я печатаю "LS", есть целая куча вещей. 258 00:10:39,710 --> 00:10:41,650 В есть "greedy.c". 259 00:10:41,650 --> 00:10:48,720 Так что теперь позвольте мне использовать мв буквально двигаться "greedy.c" в pset1. 260 00:10:48,720 --> 00:10:51,120 И так много команд Linux работать так же, как это. 261 00:10:51,120 --> 00:10:54,470 Они не принимают никаких аргументов или они принимают один Аргумент, или они взять два командной строки 262 00:10:54,470 --> 00:10:55,449 Аргументы и так далее. 263 00:10:55,449 --> 00:10:57,240 И в этом случае, это делать то, что буквально 264 00:10:57,240 --> 00:11:01,670 он говорит, хотя succinctly-- двигаться greedy.c в pset1. 265 00:11:01,670 --> 00:11:02,310 Войти. 266 00:11:02,310 --> 00:11:03,310 Ничто, кажется, не произойдет. 267 00:11:03,310 --> 00:11:06,180 Но если я делаю Ls снова, жадный нет. 268 00:11:06,180 --> 00:11:12,437 А если я "CD" pset1, Enter, а затем Ls снова, теперь он находится в нужном месте. 269 00:11:12,437 --> 00:11:14,270 Как в стороне, если для некоторые reason-- особенно 270 00:11:14,270 --> 00:11:16,194 если у вас есть прерывистый подключения к сети 271 00:11:16,194 --> 00:11:18,360 или вы ходить Кампус с крышкой ноутбука 272 00:11:18,360 --> 00:11:20,180 закрыт, а затем открыть его снова и ваше рабочее пространство 273 00:11:20,180 --> 00:11:21,730 кажется несколько из синхронизации, не составило большого труда. 274 00:11:21,730 --> 00:11:23,646 Просто перезагрузите ваш браузер окна, и он должен 275 00:11:23,646 --> 00:11:26,339 ресинхронизация так, что левая файловый браузер выглядит точно 276 00:11:26,339 --> 00:11:27,380 как в окне терминала. 277 00:11:27,380 --> 00:11:27,921 Не беспокоиться. 278 00:11:27,921 --> 00:11:31,460 Если вы сомневаетесь, перезагрузите страницу, так Пока вы сохранили файлы уже. 279 00:11:31,460 --> 00:11:31,960 ОК. 280 00:11:31,960 --> 00:11:34,710 Так мв также может быть использован для переименования файлов. 281 00:11:34,710 --> 00:11:36,760 И давайте взглянем на это последняя команда здесь. 282 00:11:36,760 --> 00:11:39,950 Так suppose-- и это супер общего, тоже рано. 283 00:11:39,950 --> 00:11:46,400 Некоторые студенты иногда создают файл называется, давайте say--, что еще один? 284 00:11:46,400 --> 00:11:47,730 Как "WATER.C." 285 00:11:47,730 --> 00:11:51,080 Так что я просто кричать, для нет оснований, во всех крышек. 286 00:11:51,080 --> 00:11:53,190 Но это не Правильное название для файла 287 00:11:53,190 --> 00:11:56,660 если только потому, что наша задача установить Спецификация не сказать вам, 288 00:11:56,660 --> 00:11:59,430 чтобы сохранить файл как все заглавные "WATER.C." 289 00:11:59,430 --> 00:12:01,320 Вместо этого, мы ожидаем, "water.c" в нижнем регистре. 290 00:12:01,320 --> 00:12:03,140 И, в самом деле, это проблематично, поскольку check50, 291 00:12:03,140 --> 00:12:04,370 программа вы собираетесь встретиться в задаче 292 00:12:04,370 --> 00:12:07,350 установить один, который автоматически проверяет правильность кода 293 00:12:07,350 --> 00:12:11,615 будет кричать на вас, если он не может найти "water.c" в нижнем регистре. 294 00:12:11,615 --> 00:12:12,712 >> Поэтому мне нужно, чтобы исправить это. 295 00:12:12,712 --> 00:12:14,920 Так много разных способов сделать это, первый из которых 296 00:12:14,920 --> 00:12:18,330 будет контролировать клик или щелкните правой кнопкой мыши имя файла и просто изменить Переименовать. 297 00:12:18,330 --> 00:12:19,740 Всего в порядке, чтобы сделать это. 298 00:12:19,740 --> 00:12:21,820 Но, опять же, сегодня, давайте сделать его немного любитель. 299 00:12:21,820 --> 00:12:26,680 Давайте использовать мв изменить "WATER.C", чтобы "water.c." 300 00:12:26,680 --> 00:12:30,690 Таким образом, вы также можете использовать первый аргумент переименовать его на второй аргумент 301 00:12:30,690 --> 00:12:34,455 если второй аргумент не в То, папка или имя каталога. 302 00:12:34,455 --> 00:12:35,120 >> Отлично. 303 00:12:35,120 --> 00:12:39,560 И, наконец, немного trick-- так что я нахожусь в Мой сайт каталога на данный момент. 304 00:12:39,560 --> 00:12:43,660 Если я хочу, чтобы попасть в PSET одной, Я, конечно, можете ввести "CD pset1." 305 00:12:43,660 --> 00:12:47,260 Но это так утомительно типа "pset1" или больше названия файлов или каталогов 306 00:12:47,260 --> 00:12:47,980 все еще. 307 00:12:47,980 --> 00:12:51,960 Так очень часто в Linux, то, что Вы можете сделать, это начать, набрав "PSE" 308 00:12:51,960 --> 00:12:56,100 и просто скучно, ударил Tab, и пусть компьютер показатель его для вас. 309 00:12:56,100 --> 00:12:58,190 Супер полезно, чтобы попасть в эту привычку. 310 00:12:58,190 --> 00:13:01,079 Единственная загвоздка в том, если у вас есть несколько файлов или папок, начинающиеся 311 00:13:01,079 --> 00:13:02,870 с буквой "р" или "PS", вы, возможно, 312 00:13:02,870 --> 00:13:05,525 ввести еще несколько, прежде чем компьютер знает, что делать. 313 00:13:05,525 --> 00:13:06,820 >> МАРИЯ: Мы хотели ярлыки. 314 00:13:06,820 --> 00:13:08,695 >> Дэвид Малан: это сэкономить много времени. 315 00:13:08,695 --> 00:13:11,930 А также, как мы уже говорили в лекции, вы можно прокручивать в истории, вверх и вниз, 316 00:13:11,930 --> 00:13:15,461 найти недавно выполнен команды, а также. 317 00:13:15,461 --> 00:13:15,960 Отлично. 318 00:13:15,960 --> 00:13:20,904 Так что теперь, давайте обратим наше внимание назад в простой программе, привет мир. 319 00:13:20,904 --> 00:13:22,195 Таким образом, мы собрали в этом точно. 320 00:13:22,195 --> 00:13:24,050 А теперь, почему бы нам не взять взгляд на типы данных 321 00:13:24,050 --> 00:13:26,776 а затем переход от некоторых соответствующие блоки Скретч С 322 00:13:26,776 --> 00:13:27,400 МАРИЯ: Высокий. 323 00:13:27,400 --> 00:13:30,031 Так что теперь вы начали написание программ на С, 324 00:13:30,031 --> 00:13:32,530 мы собираемся, чтобы начать говорить о типах и переменных данных. 325 00:13:32,530 --> 00:13:37,570 Таким образом, некоторые типы данных, которые хотел бы знать, начиная с сегодняшнего дня 326 00:13:37,570 --> 00:13:39,400 являются те, которые выделены синим цветом. 327 00:13:39,400 --> 00:13:42,420 Итак, мы имеем INT-первых, которая выступает за целое. 328 00:13:42,420 --> 00:13:46,075 И, что имеет целых, как вы может иметь guessed-- так 1, 2, 3, 329 00:13:46,075 --> 00:13:47,950 и любые другие целые числа что вы можете думать. 330 00:13:47,950 --> 00:13:48,730 >> Дэвид Малан: А также отрицательный. 331 00:13:48,730 --> 00:13:50,220 >> МАРИЯ: А также отрицательные, да. 332 00:13:50,220 --> 00:13:51,450 И 0. 333 00:13:51,450 --> 00:13:54,250 Тогда у нас есть поплавки, которые плавающей запятой. 334 00:13:54,250 --> 00:13:58,360 Так вот все реальные цифры которые имеют десятичной точки. 335 00:13:58,360 --> 00:14:03,960 Так 5,0, 5,2, и еще более цифры после десятичной точки, 336 00:14:03,960 --> 00:14:05,620 а также, а также отрицательные. 337 00:14:05,620 --> 00:14:07,530 Тогда у нас есть символ, который является символом. 338 00:14:07,530 --> 00:14:10,240 Поэтому я думаю, мы говорили о это в лекции сегодня. 339 00:14:10,240 --> 00:14:15,682 Но у нас есть письма, за example-- A, B, C--, которые могут быть сохранены как символ. 340 00:14:15,682 --> 00:14:18,390 Но тогда у нас есть гораздо больше символов которые могут быть сохранены как символ. 341 00:14:18,390 --> 00:14:22,380 А те, хранятся в виде ASCII. 342 00:14:22,380 --> 00:14:25,280 >> И тогда у нас есть логический, которые Булевы. 343 00:14:25,280 --> 00:14:29,067 А те, оценить, Правда или Ложные или 1 и 0, соответственно. 344 00:14:29,067 --> 00:14:31,650 Дэвид Малан: И напомним, что BOOL приходит из библиотеки CS50. 345 00:14:31,650 --> 00:14:33,300 Так что это не встроенный в С, но это супер полезно 346 00:14:33,300 --> 00:14:34,850 иметь понятие истинное и ложное. 347 00:14:34,850 --> 00:14:36,990 И даже если вы может think-- забавный факт. 348 00:14:36,990 --> 00:14:43,700 Логическое значение технически необходим сколько битов, действительно, представлять Правда против неверно? 349 00:14:43,700 --> 00:14:47,910 Сколько битов вы думаете, Вы должны были бы, максимально? 350 00:14:47,910 --> 00:14:48,790 Да, только один. 351 00:14:48,790 --> 00:14:52,077 Так что получается, что C не могу дать вам только один бит. 352 00:14:52,077 --> 00:14:54,160 Наименьшая единица измерения Вы можете получить восемь. 353 00:14:54,160 --> 00:14:57,090 Так что это немного расточительно они вы используя весь байт, или восьми битов, 354 00:14:57,090 --> 00:14:58,340 представлять Правда или Ложь. 355 00:14:58,340 --> 00:15:01,807 Но это только так, как это реализованы в C библиотекой CS50. 356 00:15:01,807 --> 00:15:04,890 Мария: А потом те, которые мы не буду говорить о так широко 357 00:15:04,890 --> 00:15:08,060 Право now-- дважды, это для больших поплавков. 358 00:15:08,060 --> 00:15:09,811 Длинные длинные и короткие Также для целых чисел. 359 00:15:09,811 --> 00:15:10,643 Дэвид Малан: Действительно. 360 00:15:10,643 --> 00:15:13,190 В хакерской издания PSET одной, мы на самом деле использовать длинные долго. 361 00:15:13,190 --> 00:15:15,801 Но для стандартной версии, он не должен быть необходимым. 362 00:15:15,801 --> 00:15:16,300 МАРИЯ: Прохладный. 363 00:15:16,300 --> 00:15:17,361 ОК. 364 00:15:17,361 --> 00:15:20,110 Так operators-- вы должны быть вероятно, знакомы с большинством из них. 365 00:15:20,110 --> 00:15:22,620 Добавление +; вычитание, -. 366 00:15:22,620 --> 00:15:24,070 Для умножения, мы имеем *. 367 00:15:24,070 --> 00:15:25,900 Так что не Х, что мы обычно используем. 368 00:15:25,900 --> 00:15:27,840 Отдел, у нас есть обратную косую черту. 369 00:15:27,840 --> 00:15:31,380 И по модулю наш последний оператор, мы будем говорить о прямо сейчас. 370 00:15:31,380 --> 00:15:35,610 Это оператор, который позволяет взять остаток от деления. 371 00:15:35,610 --> 00:15:40,630 Так что, если у нас есть 4% 2, 4 делится на 2, 2 с остатком 0. 372 00:15:40,630 --> 00:15:41,740 Так 4% 2 0. 373 00:15:41,740 --> 00:15:42,950 4% 3 1. 374 00:15:42,950 --> 00:15:44,870 4% 5 4, как вы уже догадались, может. 375 00:15:44,870 --> 00:15:48,860 И помнить при использовании всех этих операторам использовать правила PEMDAS. 376 00:15:48,860 --> 00:15:54,060 >> Дэвид Малан: Так ясно, если вы сделать 4% 2, почему это 0, точно? 377 00:15:54,060 --> 00:15:57,480 >> МАРИЯ: Потому что 4 делится на 2 2 с остатком 0. 378 00:15:57,480 --> 00:16:00,752 Так модулю дает нам, что остаток как противоположность результате разделения. 379 00:16:00,752 --> 00:16:02,960 Дэвид Малан: И в самом деле, то, что мы найдем это полезно 380 00:16:02,960 --> 00:16:05,640 для, что в некоторых проблем это не обязательно одно, 381 00:16:05,640 --> 00:16:08,040 если вы хотите иметь Эффект ограничивая себя 382 00:16:08,040 --> 00:16:10,720 в диапазоне чисел как 0 через что-то, 383 00:16:10,720 --> 00:16:13,904 Вы можете использовать по модулю, чтобы обернуть вокруг ранее, чем как 2 млрд 384 00:16:13,904 --> 00:16:16,320 или 4 млрд значение, мы говорили в лекции. 385 00:16:16,320 --> 00:16:16,870 >> МАРИЯ: Да. 386 00:16:16,870 --> 00:16:19,429 И даже в "жадные" мы могли бы. 387 00:16:19,429 --> 00:16:21,345 Дэвид Малан: Да, в Проблема установить один, а также. 388 00:16:21,345 --> 00:16:22,520 МАРИЯ: Да, приятно. 389 00:16:22,520 --> 00:16:24,340 Дэвид Малан: Хорошо намек. 390 00:16:24,340 --> 00:16:25,750 МАРИЯ: Извините. 391 00:16:25,750 --> 00:16:28,590 Логическое expressions-- так для логических операторов, 392 00:16:28,590 --> 00:16:31,770 мы будем говорить обо всем из них, которые вы видите здесь. 393 00:16:31,770 --> 00:16:35,310 Так что сейчас у нас есть два равные знаки указаны для равных. 394 00:16:35,310 --> 00:16:38,650 Так что те для сравнения. 395 00:16:38,650 --> 00:16:40,830 До сих пор мы видели только один равняется знак. 396 00:16:40,830 --> 00:16:44,870 Вот когда мы назначаем значение переменной. 397 00:16:44,870 --> 00:16:50,160 Так что, если мы видели Int N = 5, то мы назначили 5 к переменной п. 398 00:16:50,160 --> 00:16:55,600 Но если мы хотим использовать == для сравнение, мы можем проверить, если п == 5. 399 00:16:55,600 --> 00:16:58,310 А если н == 5, то, что это правда. 400 00:16:58,310 --> 00:17:01,950 >> Так логические операторы позволит нам, в основном, 401 00:17:01,950 --> 00:17:04,670 оценить логическое выражения в Правда или Ложь. 402 00:17:04,670 --> 00:17:07,819 Так что не equals-- у нас есть восклицательный знак, а равно. 403 00:17:07,819 --> 00:17:14,240 Таким образом, мы могли также проверить, если п не равно 5-- так н! = 5. 404 00:17:14,240 --> 00:17:17,640 Менее, меньше или равно, больше, больше или равно, 405 00:17:17,640 --> 00:17:20,720 а то у нас логический И и логическое ИЛИ. 406 00:17:20,720 --> 00:17:24,060 А те, позволяют оценить несколько логических выражений вместе 407 00:17:24,060 --> 00:17:27,930 в основном собраться вместе, как одно целое логическое выражение. 408 00:17:27,930 --> 00:17:34,970 Так что, если мы хотим, чтобы найти номер, говорят, что больше, чем 5, но менее 15 409 00:17:34,970 --> 00:17:39,810 в то же время, мы бы использовать логический оператор, чтобы увидеть, если п 410 00:17:39,810 --> 00:17:42,937 больше, чем 5 && н менее 15. 411 00:17:42,937 --> 00:17:44,770 Дэвид Малан: И вот, слишком, это действительно легко 412 00:17:44,770 --> 00:17:47,290 рано, чтобы случайно использовать только один амперсанд 413 00:17:47,290 --> 00:17:48,572 или один вертикальная полоса. 414 00:17:48,572 --> 00:17:51,280 И, надеюсь, компилятор будет кричать на вас, потому что они на самом деле 415 00:17:51,280 --> 00:17:52,530 имеют очень различное значение. 416 00:17:52,530 --> 00:17:55,660 Для тех, кому интересно, они для битовых операций, 417 00:17:55,660 --> 00:17:57,197 работающих на отдельных битов. 418 00:17:57,197 --> 00:17:58,780 Но вы хотите, пару из них здесь. 419 00:17:58,780 --> 00:18:01,560 И супер важно, что Первый, знак равенства, 420 00:18:01,560 --> 00:18:05,270 который является равенство оператор в в отличие от оператора присваивания. 421 00:18:05,270 --> 00:18:08,552 >> МАРИЯ: А вертикальная бар расположен между Удалить и возвращения. 422 00:18:08,552 --> 00:18:09,260 Дэвид Малан: Да. 423 00:18:09,260 --> 00:18:11,420 На типичной американской клавиатуре. 424 00:18:11,420 --> 00:18:13,190 >> МАРИЯ: Да. 425 00:18:13,190 --> 00:18:15,890 Итак, давайте прыгать прямо в условные операторы. 426 00:18:15,890 --> 00:18:18,300 В пустом, вы, уже видели, наверное, 427 00:18:18,300 --> 00:18:22,730 если заявления, которые позволяют вам проверить, если что-то верно, то 428 00:18:22,730 --> 00:18:23,660 сделать что-то еще. 429 00:18:23,660 --> 00:18:28,410 Таким образом, вы, возможно, хотели чтобы проверить, если ваш спрайт 430 00:18:28,410 --> 00:18:31,410 касаясь некоторых других спрайт или граница экрана. 431 00:18:31,410 --> 00:18:35,520 И тогда вы, возможно, хотели, чтобы закончить игру или сделать что-то еще. 432 00:18:35,520 --> 00:18:40,000 Так синтаксиса, что «если (условие)." 433 00:18:40,000 --> 00:18:46,820 Так что, если ваш спрайт касаясь что-то, то не находится внутри фигурных скобок. 434 00:18:46,820 --> 00:18:48,980 >> Тогда мы иметь, если-иначе заявления. 435 00:18:48,980 --> 00:18:54,080 Остальное позволяет нам делать что-то если условие, что мы 436 00:18:54,080 --> 00:18:55,870 проверить в начале это не так. 437 00:18:55,870 --> 00:19:01,530 Так что, если спрайт касаясь границы этого еще делать что-то еще. 438 00:19:01,530 --> 00:19:04,030 Так в противном случае сделать что-то еще. 439 00:19:04,030 --> 00:19:07,530 Тогда у нас есть короткий пример для этого. 440 00:19:07,530 --> 00:19:11,551 Так что, если (military_time <12), мы хочу PRINTF "Доброе утро!" 441 00:19:11,551 --> 00:19:13,300 Иначе мы собираемся Printf "Добрый вечер!" 442 00:19:13,300 --> 00:19:14,860 Простой пример. 443 00:19:14,860 --> 00:19:15,680 >> Дэвид Малан: Хорошо. 444 00:19:15,680 --> 00:19:16,760 >> МАРИЯ: Прохладный. 445 00:19:16,760 --> 00:19:18,560 Так что теперь у нас есть переключатель заявления. 446 00:19:18,560 --> 00:19:21,960 Переключатель заявления вообще может позволяют нам сделать много той же самой вещи 447 00:19:21,960 --> 00:19:25,070 что мы только что говорили о, если с заявлениями. 448 00:19:25,070 --> 00:19:29,440 Например, прямо сейчас у нас есть Общая форма переключателя заявление 449 00:19:29,440 --> 00:19:33,870 что позволяет нам принимать переменная называется п 450 00:19:33,870 --> 00:19:37,670 и сравнить ее с большим количеством различные значения, которую мы здесь 451 00:19:37,670 --> 00:19:40,010 назвал constant1, constant2. 452 00:19:40,010 --> 00:19:41,150 У нас может быть много больше. 453 00:19:41,150 --> 00:19:42,930 А те, которые называют случаи. 454 00:19:42,930 --> 00:19:46,280 >> Так что, если у нас есть переключатель statement-- и это работает 455 00:19:46,280 --> 00:19:50,580 только для integers-- у нас есть переменная в данном случае это п. 456 00:19:50,580 --> 00:19:53,840 Если переменная п равно constant1, мы 457 00:19:53,840 --> 00:19:59,720 будет выполнять некоторые фрагмент кода или что-то, что мы хотим сделать. 458 00:19:59,720 --> 00:20:01,280 И тогда мы бы сломать. 459 00:20:01,280 --> 00:20:04,820 Таким образом, разрыв означает, что переключатель заявление 460 00:20:04,820 --> 00:20:08,120 будет прекратить выполнение если п равна constant1, 461 00:20:08,120 --> 00:20:09,752 а затем ваша программа будет продолжаться. 462 00:20:09,752 --> 00:20:11,835 Это будет выхода из перейти заявление и оно будет 463 00:20:11,835 --> 00:20:13,520 продолжать делать что-то еще. 464 00:20:13,520 --> 00:20:17,204 >> Если, однако, п не равно constant1, то дело для constant2 465 00:20:17,204 --> 00:20:17,870 будут проверены. 466 00:20:17,870 --> 00:20:21,750 Так, если п равно constant2, что другие фрагмент кода будет выполнен. 467 00:20:21,750 --> 00:20:23,850 А потом сломаю если равна ей. 468 00:20:23,850 --> 00:20:27,580 И тогда мы можем иметь also-- не обязательно, though-- вариант по умолчанию, 469 00:20:27,580 --> 00:20:32,290 что произойдет, если п не равно любой из случаев, что вы перечислили. 470 00:20:32,290 --> 00:20:35,400 И в случае, по умолчанию, мы также не нужен перерыв обязательно 471 00:20:35,400 --> 00:20:39,271 потому что коммутатор заявление будет знать, что необходимо прекратить после умолчанию 472 00:20:39,271 --> 00:20:40,270 случае, если это так. 473 00:20:40,270 --> 00:20:42,140 >> Дэвид Малан: Но стилистически, мы всегда ставим его там. 474 00:20:42,140 --> 00:20:42,540 >> МАРИЯ: Да. 475 00:20:42,540 --> 00:20:42,710 >> Дэвид Малан: Да. 476 00:20:42,710 --> 00:20:44,750 Так, особенно когда начинали, особенно если среди тех, кто менее 477 00:20:44,750 --> 00:20:47,458 комфортно, я бы лично просто рекомендуем придерживаться IFS 478 00:20:47,458 --> 00:20:51,564 и вернулись на Родину IFS-и если-иначе-если-вернулись на Родину и т.д., если только 479 00:20:51,564 --> 00:20:53,480 потому что они немного более простым. 480 00:20:53,480 --> 00:20:56,142 Это хороший оптимизация, или иногда даже эстетически это 481 00:20:56,142 --> 00:20:57,350 делает код более читаемым. 482 00:20:57,350 --> 00:20:59,599 И в самом деле, вероятно, середине семестра мы увидим проблему 483 00:20:59,599 --> 00:21:02,504 установить, где он просто выглядит лучше и легче читать на человека 484 00:21:02,504 --> 00:21:03,670 с помощью переключателя заявление. 485 00:21:03,670 --> 00:21:05,460 Но не беспокойтесь о цепляясь за это слишком рано. 486 00:21:05,460 --> 00:21:05,680 >> МАРИЯ: Да. 487 00:21:05,680 --> 00:21:08,840 Если у вас есть много если заявления, это может быть просто не очень читаемый. 488 00:21:08,840 --> 00:21:10,965 Это может быть не очень быстро для вас, чтобы пройти через это. 489 00:21:10,965 --> 00:21:13,230 Так отчетность переключения может быть очень полезно, как хорошо. 490 00:21:13,230 --> 00:21:17,900 А также, не remember-- не забудьте поставить перерывы в там. 491 00:21:17,900 --> 00:21:20,330 >> Дэвид Малан: Не помнить об этом. 492 00:21:20,330 --> 00:21:24,890 >> МАРИЯ: Потому что тогда вы может упасть через от одного случая к другому. 493 00:21:24,890 --> 00:21:27,930 Итак, давайте говорить, что случай constant1 не имеют о брейк в нем. 494 00:21:27,930 --> 00:21:31,920 Тогда мы могли бы провалиться внутри случай constant2. 495 00:21:31,920 --> 00:21:35,070 И мы не хотим, чтобы это сделать, если мы уже достигли случай constant1 496 00:21:35,070 --> 00:21:37,830 и он равен п. 497 00:21:37,830 --> 00:21:45,100 >> Так, например, если мы имеем переменную п, который содержит номер класса, 498 00:21:45,100 --> 00:21:48,990 и мы хотим, чтобы посмотреть, что класс is-- если п равно 50, 499 00:21:48,990 --> 00:21:51,957 мы собираемся напечатать "CS50 является Введение в Computer Science I. " 500 00:21:51,957 --> 00:21:53,040 Тогда мы идем, чтобы сломаться. 501 00:21:53,040 --> 00:21:53,920 Вот и все. 502 00:21:53,920 --> 00:21:55,950 Если, однако, п равно 51, мы собираемся 503 00:21:55,950 --> 00:21:58,494 печатать "CS51 является внедрение информатике II ". 504 00:21:58,494 --> 00:21:59,910 Затем, опять же, мы собираемся сломать. 505 00:21:59,910 --> 00:22:05,080 Однако, если то положим 124, 61, любой другой номер, который вы могли бы думать о, 506 00:22:05,080 --> 00:22:06,890 или программа не будет признать, что. 507 00:22:06,890 --> 00:22:09,010 Так что собирается сказать: «Извините, я не знакомы с этим классом ". 508 00:22:09,010 --> 00:22:10,009 И это будет перерыв. 509 00:22:10,009 --> 00:22:12,847 Дэвид Малан: Таким образом, вы можете реально увидеть ПЧ, иначе, если еще идея здесь. 510 00:22:12,847 --> 00:22:15,430 Это просто разные синтаксис выражая ту же самую идею. 511 00:22:15,430 --> 00:22:17,690 >> МАРИЯ: Точно. 512 00:22:17,690 --> 00:22:19,480 Теперь у нас есть тройные операторов. 513 00:22:19,480 --> 00:22:24,900 Так тройные операторы три parts-- состояние, 514 00:22:24,900 --> 00:22:27,220 то делать, если условие истинно, 515 00:22:27,220 --> 00:22:29,730 а затем что-то делать если условие ложно. 516 00:22:29,730 --> 00:22:33,400 Итак, вы видите, в основном, синтаксис, что здесь. 517 00:22:33,400 --> 00:22:37,792 У нас есть знак вопроса, и то, что the-- мы называем это? 518 00:22:37,792 --> 00:22:38,750 Дэвид Малан: двоеточие. 519 00:22:38,750 --> 00:22:39,100 МАРИЯ: Колон. 520 00:22:39,100 --> 00:22:39,599 Спасибо. 521 00:22:39,599 --> 00:22:41,880 Сожалею. 522 00:22:41,880 --> 00:22:45,800 Итак, давайте посмотрим на наш пример с увидеть, если мы можем понять this-- 523 00:22:45,800 --> 00:22:47,840 class_num == 50. 524 00:22:47,840 --> 00:22:52,580 Так вот, мы видим наш оператор логическое == который сравнивает переменную class_num 525 00:22:52,580 --> 00:22:53,100 50. 526 00:22:53,100 --> 00:22:55,150 Так class_num хранит целое число. 527 00:22:55,150 --> 00:22:58,180 И если этого числа равна 50, то мы 528 00:22:58,180 --> 00:23:02,810 собираетесь хранить "Дэвид Малан" внутри строки профессора. 529 00:23:02,810 --> 00:23:05,912 Если номер класса не равняться 50, "Давид не Малан" 530 00:23:05,912 --> 00:23:07,120 будет профессор. 531 00:23:07,120 --> 00:23:08,630 >> Дэвид Малан: Спасибо. 532 00:23:08,630 --> 00:23:12,110 И так это, кажется, соответствует что, вы скажете, на первый взгляд? 533 00:23:12,110 --> 00:23:17,930 534 00:23:17,930 --> 00:23:19,960 >> МАРИЯ: Мне кажется, как если-иначе заявления. 535 00:23:19,960 --> 00:23:20,709 >> Дэвид Малан: Да. 536 00:23:20,709 --> 00:23:24,020 И в самом деле, это своего рода красивая один лайнер, 537 00:23:24,020 --> 00:23:27,520 так сказать, для реализации именно логика, если-иначе 538 00:23:27,520 --> 00:23:29,010 но делать все, что в один шаг. 539 00:23:29,010 --> 00:23:29,860 >> МАРИЯ: Точно. 540 00:23:29,860 --> 00:23:30,360 Да. 541 00:23:30,360 --> 00:23:33,520 Так что, если-иначе заявления могут занимают много места. 542 00:23:33,520 --> 00:23:36,283 Они могут быть слишком длинным для что-то же просто, как это. 543 00:23:36,283 --> 00:23:38,350 Таким образом, это может быть очень лаконичным и очень приятно. 544 00:23:38,350 --> 00:23:40,880 545 00:23:40,880 --> 00:23:46,820 Так что теперь мы идем в глядя на выполнение что-то снова и снова, 546 00:23:46,820 --> 00:23:50,060 поэтому проверка для состояние несколько раз 547 00:23:50,060 --> 00:23:53,510 а затем продолжает делать то в то время как условие истинно. 548 00:23:53,510 --> 00:23:56,740 Таким образом, это приводит нас В то время как приятно в петлях. 549 00:23:56,740 --> 00:23:59,270 >> Слева, у нас есть наш первый цикл, а. 550 00:23:59,270 --> 00:24:03,840 Таким образом, хотя что-то верно, сделать что-то снова и снова. 551 00:24:03,840 --> 00:24:08,850 Поэтому убедитесь, что заметите, что наши состояние здесь проверяются на вершине. 552 00:24:08,850 --> 00:24:14,150 В то время как с нашим вторым loop-- мы называем что делать-то время loop-- мы делаем что-то, 553 00:24:14,150 --> 00:24:15,890 Затем мы проверяем, состояние. 554 00:24:15,890 --> 00:24:17,980 И если этого условия по-прежнему верно, 555 00:24:17,980 --> 00:24:20,150 мы вернемся и сделать это снова. 556 00:24:20,150 --> 00:24:23,360 Таким образом, главное отличие, где условие проверяется для. 557 00:24:23,360 --> 00:24:29,260 И код никогда не может быть выполняется, если условие не 558 00:24:29,260 --> 00:24:30,430 верно с то время цикла. 559 00:24:30,430 --> 00:24:33,050 В то время как с сделай время цикл, у нас есть код 560 00:24:33,050 --> 00:24:35,380 что всегда выполняется по крайней мере один раз. 561 00:24:35,380 --> 00:24:37,470 А потом, пока условие по-прежнему верно, 562 00:24:37,470 --> 00:24:39,960 мы можем вернуться назад и повторять снова внутри. 563 00:24:39,960 --> 00:24:43,625 Так почему же вы думаете, мы хотели бы использовать Сделай то время как цикл в течение время цикла? 564 00:24:43,625 --> 00:24:48,221 565 00:24:48,221 --> 00:24:48,720 Правильно. 566 00:24:48,720 --> 00:24:52,600 Так что, если мы хотим, чтобы побудить Пользователь в течение некоторого рода вход, 567 00:24:52,600 --> 00:24:55,400 если мы хотим, чтобы попросить их ввести свое имя, 568 00:24:55,400 --> 00:24:57,342 мы хотим, чтобы, по крайней мере попросить их один раз. 569 00:24:57,342 --> 00:24:59,050 И если они введите что имя, мы не 570 00:24:59,050 --> 00:25:00,740 собирается просить их снова потому что мы уже знаем это. 571 00:25:00,740 --> 00:25:02,656 Но если они не входят их имя, или, если они 572 00:25:02,656 --> 00:25:05,787 введите что-нибудь очевидно, не имя, 573 00:25:05,787 --> 00:25:08,120 мы все еще хотим, чтобы продолжить с просьбой в течение их имени. 574 00:25:08,120 --> 00:25:10,710 >> Дэвид Малан: И в лекции у нас был один как это с положительной получить Int 575 00:25:10,710 --> 00:25:13,550 Например, там, где нет ничего, чтобы проверить сначала, потому что у вас нет даже 576 00:25:13,550 --> 00:25:14,190 получил письмо Int. 577 00:25:14,190 --> 00:25:16,680 Таким образом, мы хотим сделать this-- получить Int от user-- 578 00:25:16,680 --> 00:25:18,860 а затем проверить его, возможно, Снова и снова и снова. 579 00:25:18,860 --> 00:25:21,030 >> МАРИЯ: Точно. 580 00:25:21,030 --> 00:25:22,060 Для loops-- OK. 581 00:25:22,060 --> 00:25:25,842 Для петли могут позволить нам делать почти точно такая же вещь, как хорошо. 582 00:25:25,842 --> 00:25:27,300 Это на самом деле точно такой же вещь. 583 00:25:27,300 --> 00:25:30,190 Таким образом, нет ничего, что вы можете сделать с петель для 584 00:25:30,190 --> 00:25:32,840 что вы не могли бы делать с в то время как петли. 585 00:25:32,840 --> 00:25:36,900 Но для петель может показаться немного немного больше осложняется синтаксически 586 00:25:36,900 --> 00:25:39,730 потому что они имеют три части, что внутри 587 00:25:39,730 --> 00:25:42,990 было до просто состояние с в то время как петли. 588 00:25:42,990 --> 00:25:48,260 Таким образом, первая часть, что вы море, крайний слева, у нас есть "INT гномы = 0." 589 00:25:48,260 --> 00:25:51,490 Так что это, где мы инициализировать переменную. 590 00:25:51,490 --> 00:25:55,210 >> Тогда у нас есть запятой и "карлики <7." 591 00:25:55,210 --> 00:25:57,100 Так что это, где из состояние на самом деле. 592 00:25:57,100 --> 00:26:00,170 Так что то, что мы бы поместить только в то время loop-- 593 00:26:00,170 --> 00:26:01,880 "в то время как гномы <7." 594 00:26:01,880 --> 00:26:05,380 Здесь, который идет в Середина наш цикл. 595 00:26:05,380 --> 00:26:07,190 Таким образом, "dwaves <7." 596 00:26:07,190 --> 00:26:11,350 И тогда наша последняя часть "гномы ++," который является, где мы обновляем нашу переменную. 597 00:26:11,350 --> 00:26:15,470 Так важной вещи чтобы понять, что это 598 00:26:15,470 --> 00:26:22,010 будет идти через это цикл семь раз и выполнить семь раз. 599 00:26:22,010 --> 00:26:24,020 Итак, мы имеем семь гномы, и все они 600 00:26:24,020 --> 00:26:26,020 хочу сказать, "Я здесь, чтобы помочь вам, Белоснежка " 601 00:26:26,020 --> 00:26:28,860 потому что они готовы чтобы помочь Белоснежку. 602 00:26:28,860 --> 00:26:33,600 >> С, а петли, мы бы сделали инициализация и обновление 603 00:26:33,600 --> 00:26:37,490 не внутри состояния, снова, но либо до, либо внутри время цикла 604 00:26:37,490 --> 00:26:40,210 чтобы убедиться, что из-за we-- мы всегда должны те части. 605 00:26:40,210 --> 00:26:42,835 Таким образом, чтобы убедиться, что у нас есть им, мы бы до сих пор добавил их 606 00:26:42,835 --> 00:26:44,580 , просто не в круглых скобках. 607 00:26:44,580 --> 00:26:47,288 >> Дэвид Малан: И так это выглядит like-- В лекции, например, 608 00:26:47,288 --> 00:26:50,250 Я почти всегда используют, как, я и п и довольно скучные переменные. 609 00:26:50,250 --> 00:26:53,050 Похоже, что вы можете использовать более ловко имени переменных, слишком. 610 00:26:53,050 --> 00:26:56,300 >> МАРИЯ: Да, это на самом деле очень приятно использовать немного более описательные переменные 611 00:26:56,300 --> 00:26:59,400 потому что, особенно если кто-то еще читать вашу code-- может быть, вы грейдер 612 00:26:59,400 --> 00:27:00,940 или если вы сотрудничает с кем-то-- 613 00:27:00,940 --> 00:27:03,481 Вы хотите, чтобы убедиться, что они понять, что вы делаете. 614 00:27:03,481 --> 00:27:05,750 615 00:27:05,750 --> 00:27:06,400 >> ОК. 616 00:27:06,400 --> 00:27:11,435 Так что это что-то очень funky-- цикл внутри цикла для. 617 00:27:11,435 --> 00:27:13,060 Я не знаю, если мы видели это раньше. 618 00:27:13,060 --> 00:27:13,830 Возможно нет. 619 00:27:13,830 --> 00:27:17,750 Но мы можем на самом деле имеют this-- так петли вместо петель. 620 00:27:17,750 --> 00:27:25,130 Так кто-нибудь, может быть, хотите, чтобы ходить мне через что здесь происходит? 621 00:27:25,130 --> 00:27:28,240 622 00:27:28,240 --> 00:27:29,490 Дэвид Малан: Я возьму удар. 623 00:27:29,490 --> 00:27:29,970 МАРИЯ: Прохладный. 624 00:27:29,970 --> 00:27:30,636 Дэвид Малан: ОК. 625 00:27:30,636 --> 00:27:34,690 Так, spoiler-- мы хотим напечатать материал это в нижнем правом углу 626 00:27:34,690 --> 00:27:35,190 там. 627 00:27:35,190 --> 00:27:35,450 >> МАРИЯ: Верно. 628 00:27:35,450 --> 00:27:35,710 Ага-ага. 629 00:27:35,710 --> 00:27:38,043 >> Дэвид Малан: Таким образом, мы просто положить, что пример вывода есть. 630 00:27:38,043 --> 00:27:42,590 Так что я могу сделать вывод из верхний цикл, который вы 631 00:27:42,590 --> 00:27:45,680 перебора строк в внешний контур, так сказать. 632 00:27:45,680 --> 00:27:48,107 И вы перебора колонны с самого внутреннего цикла. 633 00:27:48,107 --> 00:27:50,190 И интуитивно, этот следует надеяться, имеет смысл 634 00:27:50,190 --> 00:27:52,070 потому что по своей природе каждая программа, что мы видели 635 00:27:52,070 --> 00:27:55,570 до, Printf, который является Функция мы используем, в итоге, 636 00:27:55,570 --> 00:27:58,190 имеет возможность печатать материал , по существу, строка за строкой. 637 00:27:58,190 --> 00:27:59,960 Мол, как только вы выводится новая линия, есть 638 00:27:59,960 --> 00:28:02,876 нет удвоения назад и что-то распечатать выше на экране, по крайней мере, 639 00:28:02,876 --> 00:28:04,530 не используя Printf, как это. 640 00:28:04,530 --> 00:28:07,750 >> И так в этой связи, что делает ощущение, что внешний контур 641 00:28:07,750 --> 00:28:10,930 следует иметь в виду строк так как для каждого данная строка, 642 00:28:10,930 --> 00:28:13,650 Вы будете хотеть, чтобы распечатать XXXXX, а затем 643 00:28:13,650 --> 00:28:15,520 перейти к следующей строке, XXXXX. 644 00:28:15,520 --> 00:28:17,317 Так строк в первую очередь. 645 00:28:17,317 --> 00:28:19,150 И затем в течение каждого ряд, печати столбцов. 646 00:28:19,150 --> 00:28:21,160 Если вы пытались сделать это в напротив, он, вероятно, не 647 00:28:21,160 --> 00:28:21,690 таким, как вы намерены. 648 00:28:21,690 --> 00:28:22,190 >> МАРИЯ: Да. 649 00:28:22,190 --> 00:28:24,950 Мы просто не могли вернуться к предыдущая строка с Printf. 650 00:28:24,950 --> 00:28:27,658 >> Дэвид Малан: И что интересно за сегодня поговорить о рамках, 651 00:28:27,658 --> 00:28:31,600 на самом деле, то, что ряд является INT который объявлен в верхней петли. 652 00:28:31,600 --> 00:28:34,030 Но обратите внимание, что до сих пор внутри, так сказать, 653 00:28:34,030 --> 00:28:35,982 фигурные скобки, что немедленно следует, 654 00:28:35,982 --> 00:28:38,440 хотя это технически не в этих фигурных скобках. 655 00:28:38,440 --> 00:28:41,750 Так строка в простор для Совокупность фрагменте кода, 656 00:28:41,750 --> 00:28:44,690 как внутри наружной петли для и внутри внутренний цикл. 657 00:28:44,690 --> 00:28:48,050 Но в отличие от, где это столбец в рамках? 658 00:28:48,050 --> 00:28:49,810 Переменная колонка? 659 00:28:49,810 --> 00:28:51,310 Да, только в внутри петли. 660 00:28:51,310 --> 00:28:54,280 И это нормально, потому что мы не открыть это за пределами его в фигурные скобки. 661 00:28:54,280 --> 00:28:57,280 Все, что мы делаем это распечатать новый линия в самом конце там. 662 00:28:57,280 --> 00:28:58,670 Так что на самом деле все в порядке. 663 00:28:58,670 --> 00:29:03,740 >> Таким образом, это имеет эффект, как он выглядит, делать три ряда и четыре колонки. 664 00:29:03,740 --> 00:29:04,370 >> МАРИЯ: Верно. 665 00:29:04,370 --> 00:29:06,270 Итак, сначала мы идем через наш первый ряд. 666 00:29:06,270 --> 00:29:10,520 И только в нашей первой строке, мы делаем четыре колонны внутри первой строки. 667 00:29:10,520 --> 00:29:11,980 Таким образом, мы распечатать четыре иксы. 668 00:29:11,980 --> 00:29:15,800 И тогда мы можем выйти для цикла, так как мы уже напечатаны четыре иксы. 669 00:29:15,800 --> 00:29:17,100 И мы печатаем новую строку. 670 00:29:17,100 --> 00:29:19,920 И тогда мы идем через Тот же самый процесс в течение еще двух строк 671 00:29:19,920 --> 00:29:21,170 чтобы в общей сложности три. 672 00:29:21,170 --> 00:29:23,530 >> Дэвид Малан: И стоит отметить, что это просто артефакт шрифта, то 673 00:29:23,530 --> 00:29:25,680 что выход образца кажутся гораздо выше, 674 00:29:25,680 --> 00:29:27,520 как будто там больше строк, чем столбцов. 675 00:29:27,520 --> 00:29:29,824 Но это только потому, что Х это выше, чем в ширину. 676 00:29:29,824 --> 00:29:32,740 Это все, что там происходит, плюс пробел между строками. 677 00:29:32,740 --> 00:29:33,281 >> МАРИЯ: Верно. 678 00:29:33,281 --> 00:29:34,792 Круто. 679 00:29:34,792 --> 00:29:35,750 Дэвид Малан: Ладно. 680 00:29:35,750 --> 00:29:39,830 Таким образом, быстрый взгляд на проблемы установите один, принимать какие-либо вопросы, а затем отложить? 681 00:29:39,830 --> 00:29:40,330 Отлично. 682 00:29:40,330 --> 00:29:43,164 Таким образом, в один проблема установить, есть три Основными проблемами, в конечном счете,. 683 00:29:43,164 --> 00:29:44,955 Но сначала, вы найдете что установить проблема 684 00:29:44,955 --> 00:29:47,900 Спецификация, как и многих из них psets этой осенью, будет ходить вас 685 00:29:47,900 --> 00:29:50,691 через несколько разминочных упражнений, указать вам несколько ресурсов 686 00:29:50,691 --> 00:29:52,440 что вы можете или не уже видели. 687 00:29:52,440 --> 00:29:54,440 Например, CS50 имеет набор шорты, 688 00:29:54,440 --> 00:29:56,481 которые являются короткие видео, не в отличие от этого, но, что 689 00:29:56,481 --> 00:29:58,460 очень тема specific-- может быть, пять минут, 690 00:29:58,460 --> 00:30:02,360 10 минут в длину на петлях или на условиях или на алгоритмах 691 00:30:02,360 --> 00:30:04,125 или позже более дополнительные темы, а также. 692 00:30:04,125 --> 00:30:06,000 И мы, как правило вставлять те, в задачи 693 00:30:06,000 --> 00:30:07,950 наборы, так что студенты есть ресурс, с помощью которого 694 00:30:07,950 --> 00:30:10,840 рассмотреть материал, который может иметь уже пришли в лекции или раздела. 695 00:30:10,840 --> 00:30:13,220 Но этот путь, это более целенаправленной и более на кончиках пальцев. 696 00:30:13,220 --> 00:30:15,928 >> Мы также, как правило, для встраивания в задаче устанавливает вещи, называемые пошаговые. 697 00:30:15,928 --> 00:30:20,790 Таким образом, практически все примеры, которые я делаю в лекции, на сцене здесь, мы также 698 00:30:20,790 --> 00:30:24,565 расстреляли на камеру в содействовать более медленнее, 699 00:30:24,565 --> 00:30:28,760 более интимный прохождение мной на мой ноутбук из этого кода, строка за строкой 700 00:30:28,760 --> 00:30:31,427 так что в классе, мы будем часто бегло то или кого-то 701 00:30:31,427 --> 00:30:33,260 будет вставлять с ответить на вопрос. 702 00:30:33,260 --> 00:30:35,820 Но это не обязательно погружаться в для всех в аудитории. 703 00:30:35,820 --> 00:30:38,230 Таким образом, вы найдете код пошаговые руководства для большинства из примеров 704 00:30:38,230 --> 00:30:40,950 что мы делаем здесь, в лекции, так что вы может пройти через это в своем собственном темпе 705 00:30:40,950 --> 00:30:43,580 и перемотки назад или вперед или пропустить вообще, если вы хотели бы. 706 00:30:43,580 --> 00:30:45,356 >> Там часто несколько разминка вопросы, которые 707 00:30:45,356 --> 00:30:47,105 прошу вас разобраться в усилить этот материал 708 00:30:47,105 --> 00:30:50,250 и убедитесь, что вы удобные, прежде чем Вы переходите с остальной PSET. 709 00:30:50,250 --> 00:30:51,700 И тогда, конечно, есть сама PSET. 710 00:30:51,700 --> 00:30:53,450 И одна из вещей, мы совершенно сознательно 711 00:30:53,450 --> 00:30:57,202 сделать в CS50 почти каждый неинтересно или интеллектуально неинтересным 712 00:30:57,202 --> 00:30:58,910 механическая шаг, который Вы, возможно, придется сделать 713 00:30:58,910 --> 00:31:00,519 почти всегда очень хорошо документированы. 714 00:31:00,519 --> 00:31:03,560 В течение срока, мы будем начинают задавать риторические вопросы более 715 00:31:03,560 --> 00:31:06,187 как помню, как это сделать, или что? 716 00:31:06,187 --> 00:31:08,520 Но в целом, вы найдете что проблема наборы получите вас 717 00:31:08,520 --> 00:31:10,269 через механики о чем-то, так что 718 00:31:10,269 --> 00:31:14,160 интересные интеллектуальные вызовы, в конечном счете, оставляется вам студента. 719 00:31:14,160 --> 00:31:17,390 >> С учетом сказанного, Zamyla, которым мы продолжал в виду сегодня в лекции, 720 00:31:17,390 --> 00:31:20,190 является одним из наших давних сотрудников член, который также имеет пошаговые руководства 721 00:31:20,190 --> 00:31:24,520 на конкретных проблемах, таких как Марио Pset и жадный, хотя и не поливать в этом году. 722 00:31:24,520 --> 00:31:26,540 И это в те пошаговые, что она часто 723 00:31:26,540 --> 00:31:29,450 предлагает некоторые советы и рекомендации для как поступить, никогда не говорю вам, 724 00:31:29,450 --> 00:31:31,810 именно то, что нужно делать, но rather-- как состояние, 725 00:31:31,810 --> 00:31:35,200 если вы will-- дает вам по крайней мере, пара идей, так что до вас, 726 00:31:35,200 --> 00:31:37,830 В конечном счете, чтобы решить, как подойти к их. 727 00:31:37,830 --> 00:31:41,200 >> МАРИЯ: вроде как высокий уровень понимание того, что логика 728 00:31:41,200 --> 00:31:42,220 мы просим вас сделать. 729 00:31:42,220 --> 00:31:42,485 >> Дэвид Малан: Точно. 730 00:31:42,485 --> 00:31:44,190 И в самом деле, Zamyla-х пошаговые предназначены 731 00:31:44,190 --> 00:31:46,190 ответить на часто задаваемый вопрос о том, где 732 00:31:46,190 --> 00:31:48,610 я начал, особенно когда эти длинные технические характеристики 733 00:31:48,610 --> 00:31:51,960 немного сложной учитывая весь текст и образы, которые они имеют в них. 734 00:31:51,960 --> 00:31:54,890 >> Так water.c, вы найдете после того как вы завершили его, 735 00:31:54,890 --> 00:31:56,920 на самом деле относительно проста. 736 00:31:56,920 --> 00:31:58,882 Абсолютно куча из вас собирается ударить 737 00:31:58,882 --> 00:32:01,840 Ваши головой о стену, пытаясь чтобы выяснить, почему это не компиляции 738 00:32:01,840 --> 00:32:03,450 или почему он не работает правильно. 739 00:32:03,450 --> 00:32:05,040 Но как только вы закончите с ним и как только вы 740 00:32:05,040 --> 00:32:07,620 провел некоторое время боролся с любым из ошибок, которые вы могли бы иметь, 741 00:32:07,620 --> 00:32:09,490 Вы найдете, что это очень короткая программа. 742 00:32:09,490 --> 00:32:11,770 Это может быть сделано в течение нескольких строк кода, большинство из которых 743 00:32:11,770 --> 00:32:15,030 мы видели здесь, в лекции уже при вы собрать правильные блоки. 744 00:32:15,030 --> 00:32:16,810 >> И, как мы предполагаем, здесь, это будет спросить 745 00:32:16,810 --> 00:32:22,250 указать, сколько минут кто-то принимает душ на территории кампуса. 746 00:32:22,250 --> 00:32:24,779 Мы указываем на проблемы установить скорость потока воды 747 00:32:24,779 --> 00:32:27,320 в, как, душем низкого расхода голова, так же, как в клипе Seinfeld 748 00:32:27,320 --> 00:32:29,180 мы видели вчера или наоборот их. 749 00:32:29,180 --> 00:32:30,971 И тогда вы просто должны чтобы сделать немного математики, 750 00:32:30,971 --> 00:32:34,710 really-- арифметику с помощью C сказать нам, как многие, примерно, бутылки воды 751 00:32:34,710 --> 00:32:37,720 что эквивалентно, если мы принимая н-минутный душ. 752 00:32:37,720 --> 00:32:41,389 >> Теперь, в mario.c, это будет быть немного длиннее программы. 753 00:32:41,389 --> 00:32:42,930 Он по-прежнему не будет так долго. 754 00:32:42,930 --> 00:32:45,130 Всего несколько строк длиннее water.c. 755 00:32:45,130 --> 00:32:48,230 Но это будет возможность воссоздать старую школу Марио 756 00:32:48,230 --> 00:32:50,670 Пирамида из Super Mario Братья или некоторые последующие на. 757 00:32:50,670 --> 00:32:53,510 Это не будет выглядеть, как красивее или как красочные, как, что один там. 758 00:32:53,510 --> 00:32:56,468 Мы просто собираемся использовать маленькие хэштеги как у нас здесь, на экране 759 00:32:56,468 --> 00:32:58,120 используя текст ASCII. 760 00:32:58,120 --> 00:33:00,362 Но это будет приблизительно ту же идею. 761 00:33:00,362 --> 00:33:02,570 И это собирается быть осуществлять которые на первый взгляд 762 00:33:02,570 --> 00:33:04,720 кажется довольно просто simple-- напечатать простой пирамиды. 763 00:33:04,720 --> 00:33:07,345 Но есть пара характеристики здесь интересны. 764 00:33:07,345 --> 00:33:12,400 Обратите внимание, что в крайнем правом краю пирамида на самом деле имеет ширину два. 765 00:33:12,400 --> 00:33:14,570 Так что две равные высота колонны, которые 766 00:33:14,570 --> 00:33:16,804 делает его потребует немного немного мысли, чтобы сделать 767 00:33:16,804 --> 00:33:19,720 что вы получите, что именно право, а в отличие от просто прекрасно углом 768 00:33:19,720 --> 00:33:20,220 линия. 769 00:33:20,220 --> 00:33:23,340 Так что это немного углового случае но соответствует реальному игру. 770 00:33:23,340 --> 00:33:27,610 >> И это также сначала неочевидным взгляд, как печатать пробелы. 771 00:33:27,610 --> 00:33:29,430 Так что, когда я смотрю на Пример вывода here-- 772 00:33:29,430 --> 00:33:32,440 и это также в spec-- это вид выглядит как прямоугольник, 773 00:33:32,440 --> 00:33:35,120 а диагонали прямоугольник отрубили, 774 00:33:35,120 --> 00:33:37,320 и это только пробелы, так сказать. 775 00:33:37,320 --> 00:33:40,100 И так часто задаваемых Вопрос здесь всегда, хорошо, 776 00:33:40,100 --> 00:33:43,302 как я переместить хэштеги на правый? 777 00:33:43,302 --> 00:33:44,760 Или, как я распечатать пробелы? 778 00:33:44,760 --> 00:33:46,860 И это на самом деле проще чем большинство студентов думать. 779 00:33:46,860 --> 00:33:47,360 Правильно? 780 00:33:47,360 --> 00:33:51,620 Вы можете приблизить его визуально, просто нажав пробел один или два раза 781 00:33:51,620 --> 00:33:52,700 или три раза. 782 00:33:52,700 --> 00:33:56,260 >> И даже то, что с Printf мы почти всегда распечатать строку или Int 783 00:33:56,260 --> 00:33:59,950 или слово, как "привет, Мир "или серия слов, 784 00:33:59,950 --> 00:34:03,560 Вы также можете просто распечатать цитата, пространство, конец цитаты. 785 00:34:03,560 --> 00:34:06,320 И что будет на самом деле дать Вы пробел существует. 786 00:34:06,320 --> 00:34:08,330 Так что имейте это в виду и не overthink это. 787 00:34:08,330 --> 00:34:10,570 Вы действительно должны решить, строка за строкой по строке, 788 00:34:10,570 --> 00:34:14,280 не в отличие от вашего Например, Минуту назад, как многие из тех, 789 00:34:14,280 --> 00:34:18,420 Столбцы должны пробелы и сколько из них должно быть Hashtags. 790 00:34:18,420 --> 00:34:21,560 Это займет немного времени, но это в конечном счете, логическая головоломка в духе. 791 00:34:21,560 --> 00:34:22,060 >> МАРИЯ: Да. 792 00:34:22,060 --> 00:34:25,060 Но логика собирается строка за строкой будет очень полезно здесь. 793 00:34:25,060 --> 00:34:25,810 Дэвид Малан: Да. 794 00:34:25,810 --> 00:34:28,976 Я думаю, что пример кода вы gave-- даже хотя это не было полной программе. 795 00:34:28,976 --> 00:34:34,247 Вы все еще должны INT и основной силы и #include stdio.h, 796 00:34:34,247 --> 00:34:35,580 много материала из лекции. 797 00:34:35,580 --> 00:34:37,629 Но строительные блоки кажется, чтобы быть там. 798 00:34:37,629 --> 00:34:39,920 И тогда, наконец, что-то немного больше алгоритмическое. 799 00:34:39,920 --> 00:34:43,210 Так что получается, что любое время перейти в CVS или любой удобный магазин 800 00:34:43,210 --> 00:34:47,810 и кто-то вручает вам на кассир счета или монеты, как изменение, 801 00:34:47,810 --> 00:34:50,620 Оказывается, что они, люди, или не знают, что они это или нет, 802 00:34:50,620 --> 00:34:53,300 Вероятно, вы используете то, что называется жадный алгоритм, 803 00:34:53,300 --> 00:34:58,170 в результате чего, если вы задолжали, скажем, $ 21 в изменении, потому что по некоторым причинам 804 00:34:58,170 --> 00:35:01,580 Вы купили что-то очень недорогой с очень большой счет в CVS, 805 00:35:01,580 --> 00:35:05,910 это было бы действительно раздражает, если кассир дал вам 21 синглов, или, хуже 806 00:35:05,910 --> 00:35:07,629 Тем не менее, в целом много монет. 807 00:35:07,629 --> 00:35:10,670 Скорее всего, то, что разумный человек вероятно, сделать это они собираются 808 00:35:10,670 --> 00:35:14,224 чтобы захватить $ 20, а затем $ 1-счет, и вручить вам всего два счета в этом случае. 809 00:35:14,224 --> 00:35:17,390 МАРИЯ: Так они стремятся свести к минимуму изменения, которые они дают вам обратно. 810 00:35:17,390 --> 00:35:17,850 Дэвид Малан: Точно. 811 00:35:17,850 --> 00:35:19,540 И то же самое дело с монетами, а также. 812 00:35:19,540 --> 00:35:23,040 Если вы задолжали, скажем, $ 0,50, надеюсь, вы не хотите 50 копейки. 813 00:35:23,040 --> 00:35:25,500 Вы вместо этого хотите два кварталы, например. 814 00:35:25,500 --> 00:35:27,540 Теперь, это делает предположить что кассир 815 00:35:27,540 --> 00:35:29,940 достаточно каждой деноминации, которые он или она, возможно, захотите, чтобы дать вам. 816 00:35:29,940 --> 00:35:32,148 Но мы позволяют предположить, столько в задаче. 817 00:35:32,148 --> 00:35:35,590 И цель, в конечном счете, чтобы реализовать в C код жадный алгоритм. 818 00:35:35,590 --> 00:35:37,344 Таким образом, пользователь может ввести, сколько 819 00:35:37,344 --> 00:35:40,510 изменить он или она обязан с долларами и центов, своего рода плавающей точкой 820 00:35:40,510 --> 00:35:41,590 Значение наверное. 821 00:35:41,590 --> 00:35:45,530 И тогда вы должны сделать математику и выяснить алгоритмически, ну, 822 00:35:45,530 --> 00:35:49,020 сколько монет я могу дать Вы минимально дать вам 823 00:35:49,020 --> 00:35:50,270 именно такое количество изменений. 824 00:35:50,270 --> 00:35:53,470 Но там будет Несколько Хитрость здесь, верно? 825 00:35:53,470 --> 00:35:56,236 Как есть вся неточность вопрос. 826 00:35:56,236 --> 00:35:56,860 МАРИЯ: Точно. 827 00:35:56,860 --> 00:35:59,114 Так с плавающей точкой значения имеют погрешность. 828 00:35:59,114 --> 00:36:00,780 Разве мы говорим об этом в лекции сегодня? 829 00:36:00,780 --> 00:36:02,340 >> Дэвид Малан: Мы сделали последний раз в лекции. 830 00:36:02,340 --> 00:36:03,506 Мы говорили о неточности. 831 00:36:03,506 --> 00:36:08,840 И вы не хотите, чтобы обмануть пользователя о том, как много изменений он или она должен. 832 00:36:08,840 --> 00:36:11,290 И поэтому прохождение в проблема установить параметры, 833 00:36:11,290 --> 00:36:15,990 подумать, в конечном счете, чтобы как вы можете смягчить те неточность 834 00:36:15,990 --> 00:36:17,280 Ошибки, потенциально. 835 00:36:17,280 --> 00:36:21,050 Это можно избежать, конечно, для входы, мы говорим о. 836 00:36:21,050 --> 00:36:23,590 И в самом деле, pennies-- может быть, мы отложить до Zamyla, 837 00:36:23,590 --> 00:36:25,136 Я думаю, что для трюков там. 838 00:36:25,136 --> 00:36:27,760 Так в конечном счете, вы будете найти прогрессирование проблем на этой неделе, 839 00:36:27,760 --> 00:36:30,700 первый из которых довольно небольшой, затем средний, затем немного больше. 840 00:36:30,700 --> 00:36:33,200 Но все они используют здания блоки из этого на прошлой неделе, 841 00:36:33,200 --> 00:36:35,280 из этого supersection, Проблема установить параметры 842 00:36:35,280 --> 00:36:36,710 ставит вас на бесчисленных ресурсов. 843 00:36:36,710 --> 00:36:41,000 Но все-таки, если вообще изо всех сил, особенно среди тех, менее комфортно 844 00:36:41,000 --> 00:36:42,917 без предварительного фоне, прийти к офисной часов 845 00:36:42,917 --> 00:36:44,958 в понедельник и вторник и Среда и четверг. 846 00:36:44,958 --> 00:36:46,950 Перейти к CS50 Обсудить помощью Сайт Курса, 847 00:36:46,950 --> 00:36:49,080 через который вы можете общаться с персоналом и однокурсников. 848 00:36:49,080 --> 00:36:51,670 >> Но в конечном счете, я думаю, что Лучший совет, просто рано. 849 00:36:51,670 --> 00:36:54,711 Это не вид классе, что вы должны начинать psets в среду 850 00:36:54,711 --> 00:36:56,640 ночь, или еще хуже в четверг вечером. 851 00:36:56,640 --> 00:36:59,067 >> МАРИЯ: Мой лучший совет чтобы начали в понедельник. 852 00:36:59,067 --> 00:36:59,900 Дэвид Малан: понедельник. 853 00:36:59,900 --> 00:37:02,490 Так что, если вы еще не начали already-- нет. 854 00:37:02,490 --> 00:37:04,732 Но даже если не понедельник, то во вторник. 855 00:37:04,732 --> 00:37:05,690 Чем раньше тем лучше. 856 00:37:05,690 --> 00:37:08,605 И это причина, по которой Конечно есть так много поздних дней 857 00:37:08,605 --> 00:37:10,535 чтобы дать вам немного психологическое давление 858 00:37:10,535 --> 00:37:13,684 чтобы начать раньше, но до сих пор пусть вещи скольжения, когда вещи занять больше времени, 859 00:37:13,684 --> 00:37:14,350 чем вы ожидаете. 860 00:37:14,350 --> 00:37:17,950 >> МАРИЯ: А вы хотите, чтобы сделать использование Приёмные часы столько, сколько вы можете тоже. 861 00:37:17,950 --> 00:37:20,291 >> Дэвид Малан: Есть вопросы? 862 00:37:20,291 --> 00:37:20,790 Отлично. 863 00:37:20,790 --> 00:37:22,930 Ну, почему бы нам не отложить здесь? 864 00:37:22,930 --> 00:37:23,487