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 Enter. 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 Enter. 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 Enter. 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 або якщо ви співпрацює з somebody-- 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