1 00:00:00,000 --> 00:00:10,940 2 00:00:10,940 --> 00:00:13,060 >> Девід Дж Малан: Все Добре, так що це CS50. 3 00:00:13,060 --> 00:00:15,040 І це явно п'ятницю. 4 00:00:15,040 --> 00:00:16,850 І це кінець тижня один. 5 00:00:16,850 --> 00:00:21,020 Таким чином, ви, напевно, пам'ятаєте, що ми зупинилися, минулого разу, з захоплюючим сортів. 6 00:00:21,020 --> 00:00:25,020 Причому ми не піддавайте цю брехню, що ні Неважливо, що ви вчили зростає 7 00:00:25,020 --> 00:00:31,610 до, 1 ділиться на 10, не в Те, 0,1 або 0,100 або 0,10000. 8 00:00:31,610 --> 00:00:35,270 Справді, якщо ми складаємо цей Програма, як ми робили вчора, с, 9 00:00:35,270 --> 00:00:39,770 зробити неточність, а потім зробити точку, слеш, неточність, 10 00:00:39,770 --> 00:00:43,600 ми дізналися, що це те, що 1 ділиться на 10 насправді. 11 00:00:43,600 --> 00:00:46,140 Так що насправді не зовсім так. 12 00:00:46,140 --> 00:00:49,014 Але це робить натяк на деякі фундаментальне обмеження комп'ютерів. 13 00:00:49,014 --> 00:00:50,930 І справді, серед речі, які ми збираємося зробити 14 00:00:50,930 --> 00:00:55,130 сьогодні поглянути на те, чому це має сталося, що наслідки це має, 15 00:00:55,130 --> 00:00:58,430 як людство не змогло щоб зрозуміти це в деяких дуже 16 00:00:58,430 --> 00:01:00,410 серйозно situations-- Результатом встановлення який 17 00:01:00,410 --> 00:01:03,141 була досить трагічна і expensive--, а також 18 00:01:03,141 --> 00:01:04,849 поглянемо на те, як ми може насправді захищати 19 00:01:04,849 --> 00:01:06,530 проти цих видів обмежень. 20 00:01:06,530 --> 00:01:10,940 Так інтуїтивно, мабуть, чому 1 ділиться на 10, 21 00:01:10,940 --> 00:01:15,480 відповідно до мого комп'ютера Тут, не тільки 1/10, 0,10? 22 00:01:15,480 --> 00:01:15,980 Так. 23 00:01:15,980 --> 00:01:16,530 Що ти думаєш? 24 00:01:16,530 --> 00:01:17,860 >> Глядачка: основа системи числення відрізняється? 25 00:01:17,860 --> 00:01:18,550 >> Девід Дж Малан: The що? 26 00:01:18,550 --> 00:01:19,730 О, корінь відрізняється? 27 00:01:19,730 --> 00:01:20,720 Так що не зовсім. 28 00:01:20,720 --> 00:01:23,200 Це насправді більш основне значення для апаратного забезпечення. 29 00:01:23,200 --> 00:01:23,980 Інші думки? 30 00:01:23,980 --> 00:01:24,584 Так. 31 00:01:24,584 --> 00:01:26,750 Глядачка: Вони представляти числа по-іншому? 32 00:01:26,750 --> 00:01:27,880 Девід Дж Малан: Так they-- правою. 33 00:01:27,880 --> 00:01:29,338 Вони являють собою число по-різному. 34 00:01:29,338 --> 00:01:30,700 Неточно, мабуть. 35 00:01:30,700 --> 00:01:33,190 Так що is-- Ну, інакше з чого? 36 00:01:33,190 --> 00:01:34,490 Або від кого? 37 00:01:34,490 --> 00:01:35,050 Від нас? 38 00:01:35,050 --> 00:01:35,966 Глядачка: Так. 39 00:01:35,966 --> 00:01:38,930 Вони не використовують десяткову система [нерозбірливо]. 40 00:01:38,930 --> 00:01:39,680 Девід Дж Малан: ОК. 41 00:01:39,680 --> 00:01:41,560 Таким чином, в деякому розумінні, вони не використовувати десяткову систему. 42 00:01:41,560 --> 00:01:43,720 Під капотом, все, дійсно, двійковий, 43 00:01:43,720 --> 00:01:45,510 і це пов'язано, в дійсності. 44 00:01:45,510 --> 00:01:48,135 Але це ще більш простий Пояснення, ніж це. 45 00:01:48,135 --> 00:01:48,635 Так. 46 00:01:48,635 --> 00:01:49,970 >> Глядачка: Вони тільки так багато бітів. 47 00:01:49,970 --> 00:01:52,370 Вони можуть зберігати тільки до певного Ступінь, як з знаків після коми. 48 00:01:52,370 --> 00:01:52,780 >> Девід Дж Малан: Так. 49 00:01:52,780 --> 00:01:54,420 Це те, що дійсно стає на нього. 50 00:01:54,420 --> 00:01:57,180 Виявляється, що комп'ютери як правило, завжди буде тільки 51 00:01:57,180 --> 00:01:59,690 використовувати обмежену кількість інформації представляти щось. 52 00:01:59,690 --> 00:01:59,870 Вірно? 53 00:01:59,870 --> 00:02:02,110 Зрештою, у нас є тільки фіксований обсяг простору на жорсткому диску. 54 00:02:02,110 --> 00:02:04,210 У нас є тільки фіксовану суму ОЗУ або комп'ютерної пам'яті. 55 00:02:04,210 --> 00:02:06,251 І якщо у вас є тільки фіксована сума-то, 56 00:02:06,251 --> 00:02:09,611 звичайно, ви не можете насправді підрахувати до нескінченності або будь-який номер, який ви хочете. 57 00:02:09,611 --> 00:02:11,610 Ви, начебто, повинні вибрати те, що спектр 58 00:02:11,610 --> 00:02:13,220 цінностей ви збираєтеся підтримувати. 59 00:02:13,220 --> 00:02:18,100 >> І так, наприклад, за тиждень або два тому, коли ми говорили про ASCII, 60 00:02:18,100 --> 00:02:21,610 і ми говорили про 8 біт, або байт, так би мовити, 61 00:02:21,610 --> 00:02:26,360 Найбільша кількість ми могли представляють 8 біт був те, що? 62 00:02:26,360 --> 00:02:28,350 255. 63 00:02:28,350 --> 00:02:31,850 І ми можемо уявити 256 сумарні значення але якщо ми проводимо одну з них 64 00:02:31,850 --> 00:02:34,190 на 0-- Ну, а якщо ми провести один з них на 0, 65 00:02:34,190 --> 00:02:36,830 то найбільшу кількість Тобто, звичайно, 255. 66 00:02:36,830 --> 00:02:39,410 >> Так що виходить, що це випадок теж, в цьому контексті. 67 00:02:39,410 --> 00:02:42,350 Ми почали говорити, востаннє, про чисел з плаваючою точкою, які 68 00:02:42,350 --> 00:02:44,640 відрізняються від цілих чисел, в що вони мають десяткову точку 69 00:02:44,640 --> 00:02:47,056 і, сподіваюся, деякі номери після цього, але вони занадто. 70 00:02:47,056 --> 00:02:51,730 Комп'ютер, як правило, тільки збираюся використовувати 32 біта, 64 біта, може бути, 71 00:02:51,730 --> 00:02:53,497 представляти значення з плаваючою комою. 72 00:02:53,497 --> 00:02:56,080 Так що, хоча ми виросли навчання математики і, знаючи, 73 00:02:56,080 --> 00:02:58,750 що ви можете абсолютно є нескінченну кількість чисел 74 00:02:58,750 --> 00:03:01,650 після десяткової крапки, а не якщо у вас є кінцеве пам'яті. 75 00:03:01,650 --> 00:03:03,930 Ви, начебто, є, щоб закруглити, або вибрати, які 76 00:03:03,930 --> 00:03:05,346 номера ви збираєтеся представляти. 77 00:03:05,346 --> 00:03:08,710 І тому ви можете думати, в якомусь сенсі, цей є найближчим комп'ютер 78 00:03:08,710 --> 00:03:14,050 наближення до значення 1/10, що він може отримати, тільки з 32 або близько того біт. 79 00:03:14,050 --> 00:03:15,300 І це не просто 1/10. 80 00:03:15,300 --> 00:03:19,820 >> Наприклад, якщо я змінити це 1/3, який ми думаємо, ще простіше. 81 00:03:19,820 --> 00:03:21,300 Так 1 ділиться на 3. 82 00:03:21,300 --> 00:03:22,355 Дозвольте мені зберегти файл. 83 00:03:22,355 --> 00:03:24,680 Дозвольте мені йти вперед і перекомпілювати його. 84 00:03:24,680 --> 00:03:25,820 І дозвольте мені знову запустити його. 85 00:03:25,820 --> 00:03:30,000 Тут теж, мабуть, 1/3 НЕ 0,3 а потім нескінченне число 3-х 86 00:03:30,000 --> 00:03:30,770 після цього. 87 00:03:30,770 --> 00:03:32,540 Ви повинні це неточність у кінці. 88 00:03:32,540 --> 00:03:35,544 Так ми, люди, правильно, і що Ви дізналися, насправді, правильно, 89 00:03:35,544 --> 00:03:37,460 але ми натикаючись проти деяких обмежень. 90 00:03:37,460 --> 00:03:39,420 >> І те, що я думав, ми робимо сьогодні, є почати 91 00:03:39,420 --> 00:03:42,190 дивлячись на, відверто кажучи, Трагічні наслідки цього 92 00:03:42,190 --> 00:03:45,490 іноді, коли людство не зовсім реалізувати 93 00:03:45,490 --> 00:03:48,460 для цієї реальності, і ці обмеження. 94 00:03:48,460 --> 00:03:52,360 І ми побачимо ряд віньєток від History Channel, який приймає 95 00:03:52,360 --> 00:03:53,950 погляд на, як все пішло не так. 96 00:03:53,950 --> 00:03:56,340 Це довго близько 8 хвилин, і ми повернемося після цього 97 00:03:56,340 --> 00:03:59,439 і поглянути на точно що ще може піти не так. 98 00:03:59,439 --> 00:04:00,605 Якби ми могли затемнити lights-- 99 00:04:00,605 --> 00:04:02,350 >> [ВІДТВОРЕННЯ ВІДЕО] 100 00:04:02,350 --> 00:04:06,310 >> -Комп'ютери, Ми всі прийшли до розуміння в часто засмучує проблеми, які 101 00:04:06,310 --> 00:04:07,750 йти з ними. 102 00:04:07,750 --> 00:04:11,370 Помилки, віруси, і програмне забезпечення глюки невеликі ціни 103 00:04:11,370 --> 00:04:13,230 платити за зручності. 104 00:04:13,230 --> 00:04:17,519 Але у високотехнологічних і високошвидкісних військові та космічні програми, програми 105 00:04:17,519 --> 00:04:22,130 найменша проблема бути збільшені у катастрофі. 106 00:04:22,130 --> 00:04:27,750 4 червня 1996, вчені підготували запустити безпілотний Аріан 5 ракета. 107 00:04:27,750 --> 00:04:29,890 На його борту науково Супутники призначені 108 00:04:29,890 --> 00:04:33,030 встановити, як саме Взаємодіє магнітного поля Землі 109 00:04:33,030 --> 00:04:35,600 з сонячними вітрами. 110 00:04:35,600 --> 00:04:37,930 Ракета була побудована для Європейське космічне агентство 111 00:04:37,930 --> 00:04:41,620 і відірвався від свого об'єкта на узбережжі Французької Гвіани. 112 00:04:41,620 --> 00:04:44,924 >> -І Близько 30 секунд в політ, вони спочатку 113 00:04:44,924 --> 00:04:46,340 помітив щось відбувається не так. 114 00:04:46,340 --> 00:04:49,280 Що сопла були повороту таким чином, вони дійсно не повинні. 115 00:04:49,280 --> 00:04:53,042 Близько 40 секунд в польоті, ясно автомобіль потрапив у біду, 116 00:04:53,042 --> 00:04:55,250 і ось, коли вони зробили рішення знищити його. 117 00:04:55,250 --> 00:04:58,970 Діапазон офіцер безпеки з Величезні кишки натиснув кнопку, 118 00:04:58,970 --> 00:05:03,940 підірвали ракету, перш ніж він міг стати загрозою для громадської безпеки. 119 00:05:03,940 --> 00:05:06,600 >> -Це Був дівоча вояж Ariane 5, 120 00:05:06,600 --> 00:05:09,270 і його руйнування взяв розмістити через помилку 121 00:05:09,270 --> 00:05:10,992 вбудовані в програмне забезпечення ракети. 122 00:05:10,992 --> 00:05:12,700 -The Проблема на Аріан було те, що 123 00:05:12,700 --> 00:05:15,370 був номер, який потрібно 64 біт, щоб висловити, 124 00:05:15,370 --> 00:05:18,150 і він хотів, щоб перетворити це 16-бітове число. 125 00:05:18,150 --> 00:05:21,160 Вони вважали, що число ніколи не буде дуже великий, 126 00:05:21,160 --> 00:05:25,020 що більшість з цих цифр в 64 бітове число було 0 '. 127 00:05:25,020 --> 00:05:26,310 Вони були неправі. 128 00:05:26,310 --> 00:05:28,680 >> -The Неспроможність одного програма, щоб прийняти 129 00:05:28,680 --> 00:05:32,820 вид номер генерується інший був в корені збою. 130 00:05:32,820 --> 00:05:37,190 Розробка програмного забезпечення стала дуже витратна частина нової технології. 131 00:05:37,190 --> 00:05:40,760 Аріан 4 ракети були дуже успішним, так програмного забезпечення 132 00:05:40,760 --> 00:05:43,990 створене для того, був також використаний на Ariane 5. 133 00:05:43,990 --> 00:05:49,750 >> -The Основна проблема в тому, що Аріан 5 був швидше, прискорюється швидше. 134 00:05:49,750 --> 00:05:53,000 І програмне забезпечення було склали за це. 135 00:05:53,000 --> 00:05:56,330 >> -The Знищення ракети був величезний фінансова катастрофа, 136 00:05:56,330 --> 00:05:59,670 Все через помилки програмного забезпечення хвилин. 137 00:05:59,670 --> 00:06:01,990 Але це був не перший час проблеми перетворення даних 138 00:06:01,990 --> 00:06:05,310 мучило сучасні технології ракети. 139 00:06:05,310 --> 00:06:08,300 >> -В 1 991 з початком війни в Перській затоці в перше, 140 00:06:08,300 --> 00:06:10,650 ракета Patriot випробував подібного роду 141 00:06:10,650 --> 00:06:12,650 проблеми перетворення номер. 142 00:06:12,650 --> 00:06:15,620 У результаті 28 осіб, 28 американських солдатів 143 00:06:15,620 --> 00:06:18,440 було вбито і близько 100 поранені, 144 00:06:18,440 --> 00:06:21,900 коли Патріот, який повинен був для захисту від вхідних бокоплавов, 145 00:06:21,900 --> 00:06:24,630 не вдалося звільнити ракету. 146 00:06:24,630 --> 00:06:29,440 >> -Коли Ірак вторгся в Кувейт і Америку запустив Буря в пустелі на початку 1991 року, 147 00:06:29,440 --> 00:06:33,800 Patriot ракетні батареї були розгорнуті щоб захистити Саудівську Аравію та Ізраїль 148 00:06:33,800 --> 00:06:37,000 з іракських ракетних атак Скад. 149 00:06:37,000 --> 00:06:40,610 Патріот це США, середньої дальності земля-повітря системи 150 00:06:40,610 --> 00:06:43,010 виробництва компанії Raytheon в. 151 00:06:43,010 --> 00:06:49,080 >> -Розмір Перехоплювача Patriot, Сам, о, довго приблизно 20 футів. 152 00:06:49,080 --> 00:06:51,250 І він важить близько 2000 фунтів. 153 00:06:51,250 --> 00:06:55,195 І це несе боєголовку about-- Я думаю, що це приблизно 150 фунтів. 154 00:06:55,195 --> 00:06:59,500 І боєголовка, сам, це вибухова речовина, 155 00:06:59,500 --> 00:07:02,570 яка має фрагменти навколо нього. 156 00:07:02,570 --> 00:07:06,890 Кожух боєголовки призначений, щоб діяти як картеч. 157 00:07:06,890 --> 00:07:09,130 >> Досліджено ракети здійснюється, 4 за контейнер, 158 00:07:09,130 --> 00:07:12,080 і транспортуються напівпричепа. 159 00:07:12,080 --> 00:07:19,100 >> -The Патріот проти ракетної системи сходить принаймні, 20 років. 160 00:07:19,100 --> 00:07:22,320 Спочатку він був розроблений як зенітно-ракетного 161 00:07:22,320 --> 00:07:24,180 збивати ворожі літаки. 162 00:07:24,180 --> 00:07:27,860 Під час війни в Перській затоці в перше, коли що війна прийшли разом, 163 00:07:27,860 --> 00:07:32,745 Армія хотів використовувати його для збити бокоплавов, а не літаки. 164 00:07:32,745 --> 00:07:36,150 Іракська група не стільки проблеми, 165 00:07:36,150 --> 00:07:39,110 але армія хвилювалася про бокоплавов. 166 00:07:39,110 --> 00:07:42,340 І так вони намагалися оновити Patriot. 167 00:07:42,340 --> 00:07:44,760 >> -Intercepting Ворога Ракета подорожі в Маха п`ять 168 00:07:44,760 --> 00:07:47,250 збирався бути досить складним завданням. 169 00:07:47,250 --> 00:07:50,000 Але коли Патріот був доставлений в експлуатацію, 170 00:07:50,000 --> 00:07:54,030 Армія не відомо про Іракський модифікація, яка зробила 171 00:07:54,030 --> 00:07:56,840 їх бокоплави майже неможливо потрапити. 172 00:07:56,840 --> 00:08:01,020 >> -Що Трапилося, є бокоплави, що йшли в, були нестабільними, 173 00:08:01,020 --> 00:08:02,310 вони були погойдуючись. 174 00:08:02,310 --> 00:08:05,140 Причина цього, був іракців, для того, 175 00:08:05,140 --> 00:08:09,450 щоб отримати 600 кілометрів з діапазон ракети 300 км, 176 00:08:09,450 --> 00:08:12,930 взяв вагу з передньої боєголовки і зробив боєголовка легше. 177 00:08:12,930 --> 00:08:17,710 Так що тепер, Патріот намагається прийти на вітрі, і більшу частину часу, 178 00:08:17,710 --> 00:08:21,700 переважна більшість з Час, було б просто літати Скад. 179 00:08:21,700 --> 00:08:25,700 >> -Після Системних операторів Patriot зрозумів Патріот повз ворота, 180 00:08:25,700 --> 00:08:29,790 вони підірвали боєголовку патріота, в щоб уникнути можливих жертв, якщо він 181 00:08:29,790 --> 00:08:32,380 був падати на землю. 182 00:08:32,380 --> 00:08:36,340 >> -Це Було те, що бачив, більшість людей, ці великі вогняні кулі в небі, 183 00:08:36,340 --> 00:08:41,289 і зрозуміли, як перехоплює Скад боєголовок. 184 00:08:41,289 --> 00:08:43,590 Хоча в ніч небо, з'явилися патріоти 185 00:08:43,590 --> 00:08:47,020 щоб бути успішно руйнуючи бокоплавов, в Дахрані, 186 00:08:47,020 --> 00:08:49,730 не може бути ніякої помилки про його виконання. 187 00:08:49,730 --> 00:08:53,990 Там, радар система Патріота втратив вхідного Скад, 188 00:08:53,990 --> 00:08:56,650 і ніколи не запущений, через програмного забезпечення недолік. 189 00:08:56,650 --> 00:08:59,650 190 00:08:59,650 --> 00:09:04,100 Це був ізраїльтян, які вперше виявлений що більше система була на, 191 00:09:04,100 --> 00:09:07,510 тим більше час розбіжності став, у зв'язку з годинником вбудованого 192 00:09:07,510 --> 00:09:09,490 в комп'ютері системи. 193 00:09:09,490 --> 00:09:12,670 >> -О За 2 тижні до Трагедія в Дахрані, 194 00:09:12,670 --> 00:09:15,010 Ізраїльтяни повідомили Міністерство оборони, 195 00:09:15,010 --> 00:09:17,940 що система гаючи часу, що після приблизно 8:00 роботи, 196 00:09:17,940 --> 00:09:21,410 вони помітили, що система була стає помітно менш точними. 197 00:09:21,410 --> 00:09:25,290 Міністерство оборони відповів кажу все батарейки Patriot 198 00:09:25,290 --> 00:09:28,070 не залишати системи протягом тривалого часу. 199 00:09:28,070 --> 00:09:29,960 Вони ніколи не говорили, що довгий час було. 200 00:09:29,960 --> 00:09:30,460 8:00? 201 00:09:30,460 --> 00:09:30,960 10:00? 202 00:09:30,960 --> 00:09:31,870 1000 годин? 203 00:09:31,870 --> 00:09:33,734 Ніхто не знав. 204 00:09:33,734 --> 00:09:35,650 -The Батареї Patriot розміщені в казармах 205 00:09:35,650 --> 00:09:40,410 в Дахрані, і його недоліки внутрішнього годинник, був на більш ніж 100 годин 206 00:09:40,410 --> 00:09:43,041 в ніч на 25 лютого. 207 00:09:43,041 --> 00:09:47,416 >> -Це Відстежується час з точністю приблизно 1/10 секунди. 208 00:09:47,416 --> 00:09:49,290 Тепер 1/10 секунди знаходиться цікавий номер 209 00:09:49,290 --> 00:09:52,700 тому що він не може бути виражається в двійковому, точно. 210 00:09:52,700 --> 00:09:54,820 Що означає, що не може бути виражено, точно, 211 00:09:54,820 --> 00:09:57,420 в будь-якому сучасному цифровому комп'ютері. 212 00:09:57,420 --> 00:10:01,460 Важко повірити, але використовувати це як приклад. 213 00:10:01,460 --> 00:10:03,520 Давайте число, 1/3. 214 00:10:03,520 --> 00:10:07,110 1/3 не може бути виражена в десятковій, точно. 215 00:10:07,110 --> 00:10:11,490 1/3 0.333 відбувається нескінченності. 216 00:10:11,490 --> 00:10:15,486 Там немає ніякого способу, щоб зробити це, з абсолютна точність, в десятковій. 217 00:10:15,486 --> 00:10:18,360 Це точно така ж Проблема, що відбулося в Patriot. 218 00:10:18,360 --> 00:10:22,510 Чим довше система працювала, то гірше помилка часу став. 219 00:10:22,510 --> 00:10:28,420 >> -Після 100 годин роботи, помилка У той час був тільки приблизно 1/3 секунди. 220 00:10:28,420 --> 00:10:31,830 Але з точки зору орієнтація на Ракета подорожі в Маха 5, 221 00:10:31,830 --> 00:10:35,890 це призвело до відстеження Помилка з більш ніж 600 метрів. 222 00:10:35,890 --> 00:10:38,970 Це буде фатальна помилка для солдатів на Дахрані. 223 00:10:38,970 --> 00:10:45,035 >> -Що Трапилося, є запуск Скад був виявлені за допомогою супутників раннього попередження, 224 00:10:45,035 --> 00:10:48,930 і вони нові, що Скад був в найближчі їхні загальному напрямку. 225 00:10:48,930 --> 00:10:51,170 Вони не знають, де він йшов. 226 00:10:51,170 --> 00:10:53,990 >> -Це Був тепер до радара компонент системи Patriot, 227 00:10:53,990 --> 00:10:58,520 захисту Дахрані, щоб знайти і зберегти трек наближається ракети супротивника. 228 00:10:58,520 --> 00:10:59,690 >> -The Радар був дуже розумний. 229 00:10:59,690 --> 00:11:01,710 Це буде насправді відстеження позиція за вітром 230 00:11:01,710 --> 00:11:04,040 а потім передбачити, де він, ймовірно, буде, 231 00:11:04,040 --> 00:11:06,140 наступного разу, то радар послав імпульс з. 232 00:11:06,140 --> 00:11:07,660 Це називається ворота діапазон. 233 00:11:07,660 --> 00:11:11,870 >> -Тоді, Коли Патріот вирішує достатньо часу має 234 00:11:11,870 --> 00:11:16,280 передається повернутися і перевірити на наступний місце для цього виявленого об'єкту, 235 00:11:16,280 --> 00:11:17,280 вона йде назад. 236 00:11:17,280 --> 00:11:21,690 Так що, коли він повернувся до неправильних Місце, тоді не бачить об'єкт 237 00:11:21,690 --> 00:11:25,230 і не вирішить, що не було Об'єкт, це була помилкова виявлення, 238 00:11:25,230 --> 00:11:26,650 і падає трек. 239 00:11:26,650 --> 00:11:29,690 Вхідний Скад зник з екрану радара, 240 00:11:29,690 --> 00:11:32,670 і кілька секунд потому, його врізався в казарми. 241 00:11:32,670 --> 00:11:38,100 Скад вбиті 28 і був останнім одним уявлень під час Першої війни в Перській затоці. 242 00:11:38,100 --> 00:11:43,460 Трагічно, що оновлене програмне забезпечення прибув до Дахрані на наступний день. 243 00:11:43,460 --> 00:11:46,150 Програмне забезпечення було недолік було зафіксовано, закриття 244 00:11:46,150 --> 00:11:48,940 один розділ в проблемних Історія ракети Patriot. 245 00:11:48,940 --> 00:11:50,220 >> [КІНЕЦЬ ПЕРЕГЛЯДУ] 246 00:11:50,220 --> 00:11:54,340 >> Девід Дж Малан: Таким чином, ми будемо дивитися на деякі аналогічні обмеження в тільки трохи. 247 00:11:54,340 --> 00:11:58,470 Але спочатку, давайте перехід до вашого відома кілька Ось. 248 00:11:58,470 --> 00:12:01,575 Так одно-- цей уїк-енд, є буде супер розділи, 249 00:12:01,575 --> 00:12:04,200 які призначені, щоб витіснити регулярно заплановані ділянки, які 250 00:12:04,200 --> 00:12:05,460 пустять в тиждень по тому. 251 00:12:05,460 --> 00:12:08,204 Погляньте на веб-сайті CS50 в для отримання додаткової інформації про них. 252 00:12:08,204 --> 00:12:11,120 Вони також будуть зніматися і транслюватися жити для тих, хто не зміг бути присутнім. 253 00:12:11,120 --> 00:12:12,980 Проблема встановити 1 на Сайт звичайно вже, 254 00:12:12,980 --> 00:12:15,105 і ми поглянемо на що в тільки трохи. 255 00:12:15,105 --> 00:12:18,350 І робочі години теж буде розмістити цей понеділок по четвер. 256 00:12:18,350 --> 00:12:20,960 >> Так що це був самий канонічний Програма, яку ми дивилися на останній раз. 257 00:12:20,960 --> 00:12:23,590 Це як простий Програма ви можете написати в C, 258 00:12:23,590 --> 00:12:25,250 і навіть це трохи смілива заява. 259 00:12:25,250 --> 00:12:25,750 Вірно? 260 00:12:25,750 --> 00:12:28,070 Тому що дуже багато удавана складність цього. 261 00:12:28,070 --> 00:12:30,445 Отже, давайте поглянемо на те, що деякі з цих елементів 262 00:12:30,445 --> 00:12:33,080 були і потім спробувати забезпечити психічний модель, як 263 00:12:33,080 --> 00:12:35,710 Ці найпростіші програми працювати, а потім ми почнемо 264 00:12:35,710 --> 00:12:38,050 погляд на речі ще більш складним. 265 00:12:38,050 --> 00:12:41,280 Так ця лінія тут, підкреслив зараз, в жовтий, те, що ми говорили, в останній раз, 266 00:12:41,280 --> 00:12:43,200 що це робить для нас? 267 00:12:43,200 --> 00:12:45,220 Яка мета він служить? 268 00:12:45,220 --> 00:12:46,984 Будь-який з далі назад? 269 00:12:46,984 --> 00:12:47,483 Так. 270 00:12:47,483 --> 00:12:48,649 >> Глядачка: [нерозбірливо] 271 00:12:48,649 --> 00:12:50,871 272 00:12:50,871 --> 00:12:51,704 Девід Дж Малан: Добре. 273 00:12:51,704 --> 00:12:53,537 Так що це дає вам доступ на команди, або давайте 274 00:12:53,537 --> 00:12:56,750 називають їх функції, що хтось ще писав, що оголошені, 275 00:12:56,750 --> 00:12:58,350 так би мовити, в якийсь інший файл. 276 00:12:58,350 --> 00:13:02,370 Таким чином, ми будемо бачити саме те, що .h файл це проти файлу .c, зрештою. 277 00:13:02,370 --> 00:13:04,710 Але зараз, просто знаю, що Printf, наприклад, 278 00:13:04,710 --> 00:13:08,370 серед функцій, які були заявив в якийсь інший файл, десь 279 00:13:08,370 --> 00:13:12,930 ще на жорсткому диску, що хмари дозволяє нам отримати доступ до Printf і використовувати його 280 00:13:12,930 --> 00:13:15,240 без необхідності заново винаходити що колесо себе. 281 00:13:15,240 --> 00:13:16,930 Тим часом, головний. 282 00:13:16,930 --> 00:13:19,690 Що було аналогом основного, минулого тижня? 283 00:13:19,690 --> 00:13:20,190 Так. 284 00:13:20,190 --> 00:13:21,460 >> Глядачка: Зелений прапор кнопки. 285 00:13:21,460 --> 00:13:21,740 >> Девід Дж Малан: Так. 286 00:13:21,740 --> 00:13:23,490 Подряпини років, коли зелений прапор кнопки. 287 00:13:23,490 --> 00:13:25,560 Це як паззл що штовхає речі с. 288 00:13:25,560 --> 00:13:28,306 І так аналогічно, зробив світ вирішив кілька років тому, що в C, 289 00:13:28,306 --> 00:13:30,930 і купа інших мовах, якщо ви хочете, щоб написати програму 290 00:13:30,930 --> 00:13:33,410 Ваш перший функція вже називати, головний. 291 00:13:33,410 --> 00:13:34,641 І він повинен виглядати наступним чином. 292 00:13:34,641 --> 00:13:36,640 Але ми повернемося, іншим разом, до чого, INT, 293 00:13:36,640 --> 00:13:38,690 і порожнеча, значить в цьому контексті. 294 00:13:38,690 --> 00:13:42,860 В даний час, фігурні дужки є свого роду з, як шматок головоломки форми нуля в 295 00:13:42,860 --> 00:13:45,080 який інкапсулює кілька рядків. 296 00:13:45,080 --> 00:13:47,070 І серед на лініях тут, це одне тут. 297 00:13:47,070 --> 00:13:51,610 Printf функція, мета якого в життя для друку отформатированную рядок. 298 00:13:51,610 --> 00:13:55,010 І відформатувати, я маю на увазі вас можна підключити значень заповнювачів, 299 00:13:55,010 --> 00:13:58,360 і ви можете вказати, скільки десяткової точки, скільки чисел для друку 300 00:13:58,360 --> 00:14:00,040 після десяткової точки тощо. 301 00:14:00,040 --> 00:14:05,040 І Printf, звичайно, займає одне або більше аргументів чи параметрів, 302 00:14:05,040 --> 00:14:06,770 інакше відомий, більш просто, в якості вхідних даних. 303 00:14:06,770 --> 00:14:09,230 >> Так Printf, як багато Функції, приймає входи. 304 00:14:09,230 --> 00:14:12,730 І ці входи обійняв двома дужками тут. 305 00:14:12,730 --> 00:14:15,180 А всередині тих один вхід. 306 00:14:15,180 --> 00:14:18,600 Це рядок, як ми називали його, яка є просто послідовність символів, 307 00:14:18,600 --> 00:14:22,310 як слово, або фразу, або в цілому есе, навіть у подвійні лапки. 308 00:14:22,310 --> 00:14:25,712 І це те, що відбувається в впливати на Поведінка Printf тому що, звичайно, 309 00:14:25,712 --> 00:14:27,170 це просто звичайна функція друку. 310 00:14:27,170 --> 00:14:29,600 Це не буде знати, що для друку, якщо ви не скажете йому. 311 00:14:29,600 --> 00:14:31,000 А потім, деякі дрібниці. 312 00:14:31,000 --> 00:14:34,056 Що ми кажемо це дивно послідовність символів? 313 00:14:34,056 --> 00:14:34,556 Так. 314 00:14:34,556 --> 00:14:35,410 >> Глядачка: Нова лінія. 315 00:14:35,410 --> 00:14:35,990 >> Девід Дж Малан: Нова лінія. 316 00:14:35,990 --> 00:14:39,340 Так що виходить, ви не можете просто натиснути, введіть, коли ви пишете програму. 317 00:14:39,340 --> 00:14:42,590 Як правило, компілятор буде отримати трохи спантеличені тим, що ви маєте на увазі. 318 00:14:42,590 --> 00:14:45,340 Швидше за все, у вас є в буквальному сенсі кажуть, дай мені нову лінію тут. 319 00:14:45,340 --> 00:14:49,506 І так / п те, що ми зазвичай викликати керуючий символ. 320 00:14:49,506 --> 00:14:50,870 Так п, для нової лінії. 321 00:14:50,870 --> 00:14:53,810 І компілятор знає що, коли він бачить, / п, 322 00:14:53,810 --> 00:14:57,420 він повинен фактично викликають комп'ютер, У кінцевому рахунку, або Printf, в даному випадку, 323 00:14:57,420 --> 00:15:00,260 роздрукувати фактичний нового лінія, як, потрапивши в, введіть, 324 00:15:00,260 --> 00:15:01,480 на клавіатурі. 325 00:15:01,480 --> 00:15:05,620 І, нарешті, те, що ми говорили цей шматок синтаксису для? 326 00:15:05,620 --> 00:15:06,591 Що вона собою являє? 327 00:15:06,591 --> 00:15:07,090 Так. 328 00:15:07,090 --> 00:15:07,490 >> Глядачка: [нерозбірливо] 329 00:15:07,490 --> 00:15:08,660 >> Девід Дж Малан: Це просто кінець лінії. 330 00:15:08,660 --> 00:15:09,909 Це кінець заяви. 331 00:15:09,909 --> 00:15:11,890 І розумію, що ми не покласти їх скрізь. 332 00:15:11,890 --> 00:15:13,900 Ми, звичайно, не пишіть на кінцях кожного рядка. 333 00:15:13,900 --> 00:15:16,680 Наприклад, немає ні на Перша лінія, немає ні на лінії 334 00:15:16,680 --> 00:15:18,680 с, головним чином, немає ні після фігурних дужках, 335 00:15:18,680 --> 00:15:21,740 але ви починаєте бачити і отримати знайомі з, де він закликав до. 336 00:15:21,740 --> 00:15:26,014 І це майже завжди після функції зателефонувати або заяву, деякі дії 337 00:15:26,014 --> 00:15:27,180 що ви насправді приймає. 338 00:15:27,180 --> 00:15:29,520 >> І тепер знаємо, особливо якщо серед тих, хто менш комфортно, 339 00:15:29,520 --> 00:15:32,540 ці види дурних речей що ви будете в кінцевому підсумку випадково стукати 340 00:15:32,540 --> 00:15:33,873 Ваша голова до стіни над. 341 00:15:33,873 --> 00:15:36,107 Тому що ви будете логічно впевнений, в якоїсь проблеми 342 00:15:36,107 --> 00:15:38,440 Ви вирішили для задачі Набір і риса тільки 343 00:15:38,440 --> 00:15:40,187 не збиратиме або навіть бігти. 344 00:15:40,187 --> 00:15:43,270 І так часто, на ранній стадії, це буде бути тому, що ви пропустили дужки, 345 00:15:43,270 --> 00:15:44,455 або ви пропустили крапку з комою. 346 00:15:44,455 --> 00:15:46,547 І так просто бути уважними з цих видів речей, 347 00:15:46,547 --> 00:15:49,380 і не намагатися отримати розчаровані їм, бо дуже швидко робить це 348 00:15:49,380 --> 00:15:50,640 стати старий капелюх. 349 00:15:50,640 --> 00:15:53,910 Але це дуже легко отримати розчарування на ранній стадії, в якості результату. 350 00:15:53,910 --> 00:15:57,020 >> Так що тепер, давайте поглянемо на те, як ця лінія насправді працює 351 00:15:57,020 --> 00:15:59,170 а потім подивіться на трохи більш складним. 352 00:15:59,170 --> 00:16:02,017 Таким чином, ми маємо тут, то вміння малювати на екрані. 353 00:16:02,017 --> 00:16:04,100 І давайте припустимо, що це мій екран комп'ютера, 354 00:16:04,100 --> 00:16:08,589 але я пишу, привіт програму, і я не реалізований, Printf. 355 00:16:08,589 --> 00:16:10,130 Хтось реалізував, Printf. 356 00:16:10,130 --> 00:16:12,420 Хто хотів би претендувати на реалізували, Printf? 357 00:16:12,420 --> 00:16:12,920 Якщо ми можемо? 358 00:16:12,920 --> 00:16:13,830 Гаразд, що ваше ім'я? 359 00:16:13,830 --> 00:16:14,155 >> СТУДЕНТ 1: [? Copal. ?] 360 00:16:14,155 --> 00:16:15,529 >> Девід Дж Малан: Copal, давай до. 361 00:16:15,529 --> 00:16:16,430 Давай до. 362 00:16:16,430 --> 00:16:17,070 Добре. 363 00:16:17,070 --> 00:16:22,260 Отже, ми маємо, ось, деякі теги ім'я, так як ми будемо робити в невелику гру це. 364 00:16:22,260 --> 00:16:26,270 І ми зв'яжемося з Вами, Printf. 365 00:16:26,270 --> 00:16:30,170 І якщо ви хочете, щоб приїхати сюди, те, що я тільки що намалювали на екрані, 366 00:16:30,170 --> 00:16:32,340 це досить просто, є я, це. 367 00:16:32,340 --> 00:16:35,550 >> Гаразд, так, привіт, мене звуть, Printf, якщо ви хочете, щоб покласти, що на. 368 00:16:35,550 --> 00:16:35,740 Добре. 369 00:16:35,740 --> 00:16:37,360 І якщо ви можете йти стенд на екрані комп'ютера 370 00:16:37,360 --> 00:16:39,730 неначе ви знаходитеся функція, прийшов з цієї комп'ютерної системи. 371 00:16:39,730 --> 00:16:42,063 І ваша мета у житті насправді щось надрукувати. 372 00:16:42,063 --> 00:16:44,560 Але так само, як програми ми тільки що на екрані, тут, 373 00:16:44,560 --> 00:16:47,060 ми збираємося мати, щоб насправді дати вам деякий внесок. 374 00:16:47,060 --> 00:16:51,810 >> А так, якщо мій вхід, тут, мабуть, те, що передається PRINTF, 375 00:16:51,810 --> 00:16:53,730 давайте вид знущатися його, як це. 376 00:16:53,730 --> 00:16:58,720 Я збираюся написати на буквально папірець, "привіт, мир", 377 00:16:58,720 --> 00:17:03,020 Обернена коса риска Н. І бути зрозуміло, що Я тільки що намалювали на цьому папірці, 378 00:17:03,020 --> 00:17:04,020 виглядає як це. 379 00:17:04,020 --> 00:17:08,730 Так що, коли я запускаю цю програму, і це жовта лінія коду запускається на виконання, 380 00:17:08,730 --> 00:17:12,970 Це як якщо б я, програми привіт, я передавши частину вхід з з функцією 381 00:17:12,970 --> 00:17:13,970 що хтось написав. 382 00:17:13,970 --> 00:17:16,595 >> І якщо ви, з вашим пальцем, міг насправді, з пальцем, 383 00:17:16,595 --> 00:17:21,520 малювати на екрані те, що це ви були передані, 384 00:17:21,520 --> 00:17:27,465 ефект в кінцевому підсумку це точно дізнатися, що на екрані. 385 00:17:27,465 --> 00:17:29,140 І маленький куточок випадок. 386 00:17:29,140 --> 00:17:31,540 І добре, що ми не повинні бачити The, нова лінія, в цій точці. 387 00:17:31,540 --> 00:17:33,900 Було б неправильно для вас явно намалювати символ нового рядка. 388 00:17:33,900 --> 00:17:36,810 Але якщо ми продовжували писати слова на екраном, вони будуть в остаточному підсумку нижче. 389 00:17:36,810 --> 00:17:39,560 >> Так що спасибі вам велике, але дотримуватися тут тільки для одного моменту. 390 00:17:39,560 --> 00:17:42,860 Тепер нам потрібно одне інше Робота на громадських засадах, якби ми могли, 391 00:17:42,860 --> 00:17:46,830 що збирається повинні грати роль of-- Це тільки люди, в оркестрі 392 00:17:46,830 --> 00:17:47,355 зараз. 393 00:17:47,355 --> 00:17:47,980 Як about-- ОК. 394 00:17:47,980 --> 00:17:48,480 Саме тут. 395 00:17:48,480 --> 00:17:49,180 Давай до. 396 00:17:49,180 --> 00:17:49,955 Як вас звати? 397 00:17:49,955 --> 00:17:50,922 >> СТУДЕНТ 2: [? Ivay. ?] 398 00:17:50,922 --> 00:17:51,796 Девід Дж Малан: Вибачте? 399 00:17:51,796 --> 00:17:52,990 СТУДЕНТ 2: [? Ivay. ?] 400 00:17:52,990 --> 00:17:55,320 Девід Дж Малан: Ітан, давай до. 401 00:17:55,320 --> 00:17:55,820 Немає? 402 00:17:55,820 --> 00:17:58,390 Хіба я що неправильно, навіть після сказав, що це в два рази? 403 00:17:58,390 --> 00:17:58,890 Давай до. 404 00:17:58,890 --> 00:18:00,030 Важко почути тут. 405 00:18:00,030 --> 00:18:05,240 406 00:18:05,240 --> 00:18:05,740 ДОБРЕ. 407 00:18:05,740 --> 00:18:07,190 І я дуже шкода, що ваше ім'я? 408 00:18:07,190 --> 00:18:07,680 >> СТУДЕНТ 2: [? Ivay. ?] 409 00:18:07,680 --> 00:18:08,790 >> [? Девід Дж Малан: Ivay. ?] ДОБРЕ. 410 00:18:08,790 --> 00:18:10,430 Зараз, якщо ви не розум, ви GetString. 411 00:18:10,430 --> 00:18:11,013 >> СТУДЕНТ 2: ОК. 412 00:18:11,013 --> 00:18:11,797 Прохолодний. 413 00:18:11,797 --> 00:18:14,630 Девід Дж Малан: Так що, якщо ви хочете стояти тут на мить, 414 00:18:14,630 --> 00:18:17,100 давайте поглянемо на трохи більш складна програма, що 415 00:18:17,100 --> 00:18:18,670 в даний час має три рядки коду. 416 00:18:18,670 --> 00:18:24,080 Отже, ми маємо один, назвіть своє ім'я, використовуючи Printf; два, заклик до GetString, 417 00:18:24,080 --> 00:18:28,060 супроводжується призначенням на Мінлива називається, рядок с, або називають років; 418 00:18:28,060 --> 00:18:31,260 а потім ще виклик, Printf, але цього разу з двома входами. 419 00:18:31,260 --> 00:18:33,646 >> Таким чином, ми вже зробили стан Ваше ім'я, вірніше, ми в 420 00:18:33,646 --> 00:18:34,770 вже зробив дзвінок PRINTF. 421 00:18:34,770 --> 00:18:38,960 Так що я збираюся написати, державних своє ім'я. 422 00:18:38,960 --> 00:18:42,089 І так, що я збираюся пройти, Printf, в мить, 423 00:18:42,089 --> 00:18:43,005 це досить просто, це. 424 00:18:43,005 --> 00:18:47,760 Так що, якщо ви хочете, щоб йти вперед і робити це на екрані, це ваш внесок у даний час. 425 00:18:47,760 --> 00:18:48,260 Добре. 426 00:18:48,260 --> 00:18:51,160 І забудьте рядок, у нас тепер є наша власна рядок коду тут. 427 00:18:51,160 --> 00:18:54,470 Таким чином, в, GetString, ми повинні насправді назвати, GetString. 428 00:18:54,470 --> 00:18:57,920 Так ваша мета в житті, щоб просто ходити з в оркестр, якби ви могли, 429 00:18:57,920 --> 00:18:58,980 і отримати чиєсь ім'я. 430 00:18:58,980 --> 00:19:00,860 Але давайте дати вам те, щоб покласти його на. 431 00:19:00,860 --> 00:19:02,908 Якщо ви хочете, йдіть вперед і отримати рядок, 432 00:19:02,908 --> 00:19:05,241 отримати чиєсь ім'я на тому, що папірець, якби ви могли. 433 00:19:05,241 --> 00:19:12,940 434 00:19:12,940 --> 00:19:13,530 >> Добре. 435 00:19:13,530 --> 00:19:15,250 І ми бачимо, в мить, чиє ім'я ми отримуємо. 436 00:19:15,250 --> 00:19:17,630 Між тим, що я збираюся є готовий, це чистий аркуш 437 00:19:17,630 --> 00:19:21,340 з паперу, в яких, я збираюся зберігати будь-яке значення його 438 00:19:21,340 --> 00:19:25,752 є те, що GetString повертається до мене, Я, будучи змінна рядок називається, с. 439 00:19:25,752 --> 00:19:26,252 Добре. 440 00:19:26,252 --> 00:19:27,293 Так що ви тут? 441 00:19:27,293 --> 00:19:27,950 Нік. 442 00:19:27,950 --> 00:19:28,450 Добре. 443 00:19:28,450 --> 00:19:30,910 Отже, ми маємо ім'я Nik тут. 444 00:19:30,910 --> 00:19:33,750 Так що це те, що в буквальному сенсі був повернутий 445 00:19:33,750 --> 00:19:35,810 для мене, так би мовити, по GetString. 446 00:19:35,810 --> 00:19:38,720 >> Я, в даний час, я збираюся виконати лівій стороні 447 00:19:38,720 --> 00:19:43,440 цього виразу, де я просто скопіювати вниз, для сьогоднішніх цілей, Нік. 448 00:19:43,440 --> 00:19:46,470 Так що тепер, у мене є змінна називається, з, зберігання ім'я для Nik. 449 00:19:46,470 --> 00:19:49,520 Я вже передав Printf, попередній аргумент. 450 00:19:49,520 --> 00:19:52,800 Але в нашому третьому і остаточному лінії Код, я насправді потрібно руки Printf 451 00:19:52,800 --> 00:19:58,500 щось трохи different-- "привіт,% s," зворотний слеш п. 452 00:19:58,500 --> 00:20:01,510 >> І тому останній рядок я збираюся щоб send-- останнє, що я 453 00:20:01,510 --> 00:20:03,060 збирається записати зараз, полягає в наступному. 454 00:20:03,060 --> 00:20:06,310 Таким чином, два рядки коду, або а в останньому рядку коду, 455 00:20:06,310 --> 00:20:10,690 заклики до двох inputs-- Один з них, це, і два, це. 456 00:20:10,690 --> 00:20:13,330 Так що, якщо наша функція Printf Тепер можна приймати їх в якості вхідних даних, 457 00:20:13,330 --> 00:20:16,000 дозвольте мені очистити екран для вас. 458 00:20:16,000 --> 00:20:17,250 Насправді немає, ви можете піти вперед. 459 00:20:17,250 --> 00:20:19,333 Ми залишимо його, оскільки він знаходиться на тій же самої програми. 460 00:20:19,333 --> 00:20:21,760 461 00:20:21,760 --> 00:20:27,380 Ми повинні побачити, привіт, Нік. 462 00:20:27,380 --> 00:20:27,880 Добре. 463 00:20:27,880 --> 00:20:29,670 Так що це було досить мало обручі, щоб стрибати через, просто 464 00:20:29,670 --> 00:20:31,620 писати, вкажіть ваші ім'я, і, привіт, Нік. 465 00:20:31,620 --> 00:20:37,210 Але ця проста ідея передачі повідомлень, вхідного і вихідного мимохідь отримання, 466 00:20:37,210 --> 00:20:40,430 саме модель, яку ми матимемо навіть для самих складних функцій. 467 00:20:40,430 --> 00:20:41,804 Так що спасибі вам велике вам обом. 468 00:20:41,804 --> 00:20:43,730 У нас є прекрасний стрес М'яч тут для вас. 469 00:20:43,730 --> 00:20:48,890 І спасибі нашій GetString і PRINTF добровольці, так. 470 00:20:48,890 --> 00:20:49,551 Дякую. 471 00:20:49,551 --> 00:20:50,050 Добре. 472 00:20:50,050 --> 00:20:50,966 Спасибі вам обом. 473 00:20:50,966 --> 00:20:56,640 474 00:20:56,640 --> 00:21:00,430 >> Таким чином, ми говоримо про досі, в основному, про рядках. 475 00:21:00,430 --> 00:21:06,550 І з'ясовується, що насправді С може зрозуміти кілька різних типів даних. 476 00:21:06,550 --> 00:21:08,860 Справді, давайте Подивіться на ці тут. 477 00:21:08,860 --> 00:21:12,490 Так C, і багато мов, розуміти речі, звані символи. 478 00:21:12,490 --> 00:21:16,852 Напівкоксу, як правило, один байт, чи вісім біт. 479 00:21:16,852 --> 00:21:19,810 І це являє собою один символ, як буква A, або капіталу 480 00:21:19,810 --> 00:21:21,990 Лист, або мала літера А, або знак оклику, 481 00:21:21,990 --> 00:21:25,440 або будь-який символ, ви можете друкувати на клавіатура, а іноді й більше. 482 00:21:25,440 --> 00:21:26,795 Ми також трапиться побачити поплавці. 483 00:21:26,795 --> 00:21:31,160 Поплавок, взагалі, А 32-бітове значення, або чотири байти 484 00:21:31,160 --> 00:21:33,660 бо знову, один байт восьмій бітів. 485 00:21:33,660 --> 00:21:36,675 >> Таким чином, поплавець значення з плаваючою точкою, щось з комою. 486 00:21:36,675 --> 00:21:38,550 І справді, ось що фільм був розмову 487 00:21:38,550 --> 00:21:42,240 про те, коли вони говорили про плаваючою Значення точок, деяке фіксоване число бітів 488 00:21:42,240 --> 00:21:43,940 використовується для представлення дійсного числа. 489 00:21:43,940 --> 00:21:45,740 Але є також речі, звані двійники. 490 00:21:45,740 --> 00:21:47,860 Вони існують в Java, якщо ви взяли АСУ ТП, 491 00:21:47,860 --> 00:21:51,540 і подвійний, як ім'я, на щастя, припускає, в два рази більше, як поплавок. 492 00:21:51,540 --> 00:21:54,540 Це все ще дійсне число, він просто має більше бітів 493 00:21:54,540 --> 00:21:58,390 з якою буде все більш точним, або для зберігання ще більшого числа. 494 00:21:58,390 --> 00:21:58,890 INT легко. 495 00:21:58,890 --> 00:22:00,181 Ми говорили про те, що в останній раз. 496 00:22:00,181 --> 00:22:01,160 Це просто число. 497 00:22:01,160 --> 00:22:03,980 І це взагалі 32 біт, або чотири байти. 498 00:22:03,980 --> 00:22:07,850 >> І так, якщо у вас є, давайте тепер подивимося, 32 bits--, і ми зробили це в тиждень 0, 499 00:22:07,850 --> 00:22:10,820 дуже briefly-- якщо у вас є 32 біта, те, що найбільша 500 00:22:10,820 --> 00:22:13,580 Кількість можна представити як ціле? 501 00:22:13,580 --> 00:22:16,080 Дайте або взяти? 502 00:22:16,080 --> 00:22:18,380 Це як 4 млрд, і це тільки якщо ми 503 00:22:18,380 --> 00:22:20,690 представляючи тільки позитивні числа. 504 00:22:20,690 --> 00:22:23,930 Якщо у вас є 32 біта, і ви хочете, щоб представляти негативні числа, а також, 505 00:22:23,930 --> 00:22:27,100 ваш діапазон, по суті, негативний 2 млрд на позитивний 2 млрд. 506 00:22:27,100 --> 00:22:29,250 Але в цілому, ми почнемо при 0 піднятися на 4 млрд. 507 00:22:29,250 --> 00:22:32,400 >> Ви не повинні знати, точно, але ми можемо переконатися в цьому, насправді, якщо я просто 508 00:22:32,400 --> 00:22:36,400 відкрити невеликий калькулятор, тут. 509 00:22:36,400 --> 00:22:41,070 Я можу зробити 2 32, і це точно, як великий, 510 00:22:41,070 --> 00:22:43,190 скільки значень ви можете уявляють, з 32 бітами. 511 00:22:43,190 --> 00:22:44,442 І це приблизно 4 млрд. 512 00:22:44,442 --> 00:22:46,900 Таким чином, ми будемо тримати, бачачи, що число в декількох різних місцях. 513 00:22:46,900 --> 00:22:48,890 Але якщо вам потрібно більше номери, ніж це, 514 00:22:48,890 --> 00:22:51,670 Виявляється є те, що називається давним. 515 00:22:51,670 --> 00:22:54,005 І довго довго як правило, 64 біта, які 516 00:22:54,005 --> 00:22:56,380 означає, що це на порядок навіть більше, ніж в міжнар. 517 00:22:56,380 --> 00:22:59,510 >> Тому я не можу навіть вимовити найбільшим номер, який ви можете уявляти, 518 00:22:59,510 --> 00:23:01,340 але це помітно більше. 519 00:23:01,340 --> 00:23:05,190 Тепер, як в сторону, історично, якщо INT 32 біт, 520 00:23:05,190 --> 00:23:12,780 і довго довго 64 біта, як великий довгий, не довго довго? 521 00:23:12,780 --> 00:23:16,500 522 00:23:16,500 --> 00:23:20,330 Можна подумати, що це вже, ніж Int але, можливо, менш тривалий, ніж довгий довгий, 523 00:23:20,330 --> 00:23:21,400 але це насправді залежить. 524 00:23:21,400 --> 00:23:23,400 >> І так виходить одна розчарувань теж 525 00:23:23,400 --> 00:23:26,830 з написання коду на деяких системах, є те, що не всі з цих типів даних 526 00:23:26,830 --> 00:23:28,440 Тобто заздалегідь певні значення. 527 00:23:28,440 --> 00:23:29,771 Іноді це це багато бітів. 528 00:23:29,771 --> 00:23:31,020 Іноді це що багато бітів. 529 00:23:31,020 --> 00:23:32,750 Таким чином, ви насправді потрібно знати, іноді, які апаратні 530 00:23:32,750 --> 00:23:34,083 ви працюєте програмного забезпечення на. 531 00:23:34,083 --> 00:23:36,960 На щастя, інші мови і інші типи даних, які в даний час існують, 532 00:23:36,960 --> 00:23:38,400 дозволить вам бути більш точним. 533 00:23:38,400 --> 00:23:41,220 Ну, ми бачили рядок, і ми бачили, логічний, теж 534 00:23:41,220 --> 00:23:43,960 але, виявляється, ті, приходять Тільки з бібліотекою CS50. 535 00:23:43,960 --> 00:23:46,240 Так що ті, які не побудували в С. Ті замість 536 00:23:46,240 --> 00:23:49,340 прийти в цьому файлі, званому CS50.h, що ми в кінцевому підсумку 537 00:23:49,340 --> 00:23:51,831 відігніть шарів. 538 00:23:51,831 --> 00:23:53,830 Але зараз, вони просто додаткові типи даних. 539 00:23:53,830 --> 00:23:57,060 Логічне значення є істинним чи хибним, і Рядок являє собою послідовність символів, 540 00:23:57,060 --> 00:23:57,970 як слово. 541 00:23:57,970 --> 00:24:01,690 Тепер Printf, ми бачили, має заповнювачі,% S є одним. 542 00:24:01,690 --> 00:24:05,430 І ви могли б, щоб зараз, вивести з цих прикладів, інших, як 543 00:24:05,430 --> 00:24:07,720 ви могли б заповнювач для різних типів даних. 544 00:24:07,720 --> 00:24:11,150 Наприклад, зробити припущення, якщо ви хотів, щоб роздрукувати один символ за допомогою 545 00:24:11,150 --> 00:24:15,270 Printf, заповнювач, ймовірно,% гр. 546 00:24:15,270 --> 00:24:19,650 І якщо ви хочете, щоб роздрукувати число з заповнювачем,% I. 547 00:24:19,650 --> 00:24:25,150 % LLD це давним десяткове значення, але довго довго, так що карти до цього. 548 00:24:25,150 --> 00:24:28,640 І тоді% F для плавучих значення точки або для подвійного, 549 00:24:28,640 --> 00:24:31,270 так що іноді вони повторно використовувати в різних контекстах. 550 00:24:31,270 --> 00:24:33,350 Таким чином, ми будемо бачити і використовувати деякі з тих, хто протягом довгого часу. 551 00:24:33,350 --> 00:24:36,420 І Printf та інші функції також Керуючі послідовності підтримку інших, 552 00:24:36,420 --> 00:24:38,080 а іноді, вони необхідні. 553 00:24:38,080 --> 00:24:39,770 Так зворотний слеш н нова лінія. 554 00:24:39,770 --> 00:24:42,886 Обернена коса риска т, хто-небудь хочете прийняти удар? 555 00:24:42,886 --> 00:24:43,760 Глядачка: Таб. 556 00:24:43,760 --> 00:24:44,551 Девід Дж Малан: Таб. 557 00:24:44,551 --> 00:24:46,810 Так що, якщо ви дійсно хочете роздрукувати вкладку, що не 558 00:24:46,810 --> 00:24:49,940 фіксована кількість прогалин, але фактично Вкладка характер, ви не потрапляєте, 559 00:24:49,940 --> 00:24:53,490 закладка, на клавіатурі, як правило ,, ви насправді зворотної косої т. 560 00:24:53,490 --> 00:24:57,750 Обернена коса риска подвійної лапки, чому я завжди хочу, що? 561 00:24:57,750 --> 00:24:58,250 Вірно? 562 00:24:58,250 --> 00:25:00,417 Чому я не можу Просто введіть подвійні лапки на клавіатурі? 563 00:25:00,417 --> 00:25:02,124 Глядачка: Тому що, в іншому випадку, це 564 00:25:02,124 --> 00:25:04,830 буде думати, що це кінець з подобається ваш друку [? Текст. ?] 565 00:25:04,830 --> 00:25:05,420 >> Девід Дж Малан: Точно. 566 00:25:05,420 --> 00:25:07,211 Пам'ятаєте, з нашої PRINTF приклади, коли ми 567 00:25:07,211 --> 00:25:10,075 проходили в PRINTF на вході, зліва від цієї рядка введення 568 00:25:10,075 --> 00:25:12,950 і праворуч від цього входу Навесні, звичайно, був подвійної лапки. 569 00:25:12,950 --> 00:25:16,270 Якщо ваш власний вхід має подвійне Цитата в середині, що 570 00:25:16,270 --> 00:25:18,920 комп'ютер може потенційно заплутатися, щоб, 571 00:25:18,920 --> 00:25:20,760 робить цю прямі подвійні лапки відносяться до середини? 572 00:25:20,760 --> 00:25:22,150 Він належить з лівого? 573 00:25:22,150 --> 00:25:23,566 Він належить з правого? 574 00:25:23,566 --> 00:25:26,780 І так, якщо ви хочете, щоб зробити його супер ясно, у вас зворотна коса риса подвійної лапки, 575 00:25:26,780 --> 00:25:30,480 так що це біг, так би мовити, і це не сплавлені щось інше. 576 00:25:30,480 --> 00:25:34,400 І є декілька інших тут, Обернена коса риска г, одинарні лапки, 0, 577 00:25:34,400 --> 00:25:36,510 що ми можемо побачити в протягом довгого часу, а також. 578 00:25:36,510 --> 00:25:37,760 А тепер, як щодо функцій? 579 00:25:37,760 --> 00:25:41,630 >> Так дій, які ми можемо зробити, таким чином, далеко на цій мові, С, добре, ми бачили, 580 00:25:41,630 --> 00:25:44,320 Printf, звичайно, і все з інших на екрані, 581 00:25:44,320 --> 00:25:47,140 ось, що ми будемо використовувати для Перший курс в кілька тижнів, тільки 582 00:25:47,140 --> 00:25:48,485 приходять, коли бібліотека CS50. 583 00:25:48,485 --> 00:25:51,850 І вони роблять це набагато простіше, в З фактично отримати користувальницький введення. 584 00:25:51,850 --> 00:25:54,200 Виявляється, що в C, і відверто на декількох мовах, 585 00:25:54,200 --> 00:25:57,450 це реальна біль в шиї, щоб зробити щось просте, як швидке користувача 586 00:25:57,450 --> 00:26:01,310 для клавіатури, для його або її введення. 587 00:26:01,310 --> 00:26:03,240 І тому ці функції роблять його легше. 588 00:26:03,240 --> 00:26:05,472 >> І це також має помилку перевірки з усього, 589 00:26:05,472 --> 00:26:07,180 так що, коли вам Нагадаємо, в середу, ми 590 00:26:07,180 --> 00:26:09,740 побачив, повторіть спробу, попередження, коли я не співпрацювала, 591 00:26:09,740 --> 00:26:11,700 і я набрав слово, а не номер? 592 00:26:11,700 --> 00:26:15,402 Ми зробили важку рано на переконатися, що користувач взаємодіє. 593 00:26:15,402 --> 00:26:17,860 Але це всього лише тренування Колеса, що ми в кінцевому підсумку, 594 00:26:17,860 --> 00:26:19,640 і швидко, зняти. 595 00:26:19,640 --> 00:26:22,630 >> Таким чином, щоб резюмувати, то, давайте поглянемо, 596 00:26:22,630 --> 00:26:26,620 так само, як ми це робили з нуля, в деякі канонічні конструкції в С. 597 00:26:26,620 --> 00:26:28,580 Це повинно, начебто з, бути побіжний тур, 598 00:26:28,580 --> 00:26:30,990 просто так, що у вас є посилання і що ви бачили речі в першу чергу. 599 00:26:30,990 --> 00:26:34,100 Але тоді ми будемо дивитися на фактичне кодування використовувати деякі з цих будівельних блоків. 600 00:26:34,100 --> 00:26:36,710 Так само, як в порожньому, коли ми хотіли заяви, 601 00:26:36,710 --> 00:26:41,570 сказати або почекайте, в C, у нас є функції, а, як Printf. 602 00:26:41,570 --> 00:26:45,350 >> Якщо ми хочемо, щоб висловити стан в C, це схоже, у дусі, 603 00:26:45,350 --> 00:26:47,840 до цього шматок головоломки, що подивився, як це в подряпина. 604 00:26:47,840 --> 00:26:49,850 Але замість цього, ми буквально написати, якщо. 605 00:26:49,850 --> 00:26:51,830 А потім, в дужках, ми поставили умову, 606 00:26:51,830 --> 00:26:54,807 де ця умова, що ми будемо дзвоніть, знову ж таки, логічне вираження. 607 00:26:54,807 --> 00:26:56,390 І знову ж, це свого роду псевдокод. 608 00:26:56,390 --> 00:26:58,830 І, справді, // це коментар. 609 00:26:58,830 --> 00:27:00,550 Це просто англійські слова до себе. 610 00:27:00,550 --> 00:27:03,000 Але це загальна структура, якщо, стан. 611 00:27:03,000 --> 00:27:05,220 Але ми побачимо, бетон приклади в хвилину. 612 00:27:05,220 --> 00:27:07,960 >> Якщо ви хочете, щоб мати двостороння вилка в дорозі, 613 00:27:07,960 --> 00:27:11,740 так само, як ми зробили з нашою добровольцем на Середа, ви можете мати, інакше, якщо. 614 00:27:11,740 --> 00:27:16,020 І якщо ви хочете, щоб мати третій і кінцевий стан, або ситуація, за замовчуванням, 615 00:27:16,020 --> 00:27:19,006 Ви можете мати просто ще блок, там. 616 00:27:19,006 --> 00:27:21,880 І точно так само, з логічних виразах, Ви, може, і, їх разом. 617 00:27:21,880 --> 00:27:24,296 І ми побачили у середу, що це не один амперсанд, 618 00:27:24,296 --> 00:27:28,220 це два, з причин, більш низького рівня, які ми в кінцевому підсумку побачити і грати. 619 00:27:28,220 --> 00:27:30,410 Або ющіе речі разом на 2 вертикальні смуги. 620 00:27:30,410 --> 00:27:32,240 На клавіатурі США, це як правило, одним з ключових 621 00:27:32,240 --> 00:27:35,730 з клавішею перемикання вище Ваш Введіть ключ або клавішу. 622 00:27:35,730 --> 00:27:38,620 >> Тоді є ці речі, які ми будемо використовувати, може бути, один або два рази. 623 00:27:38,620 --> 00:27:42,570 Вони функціонально еквівалентні те, що ви можете зробити з, якщо, інакше, якщо 624 00:27:42,570 --> 00:27:44,950 інакше, якщо ще, побудувати, але вони називають перемикач. 625 00:27:44,950 --> 00:27:48,020 Вони виглядають дуже різні, але ми бачити в деяких з нашого коду розподілу, 626 00:27:48,020 --> 00:27:51,890 для майбутнього Поставлена ​​задача, швидше за все, що іноді просто гарніше 627 00:27:51,890 --> 00:27:54,060 спосіб вираження ціле купа умов, 628 00:27:54,060 --> 00:27:57,590 не маючи багато фігурних дужках і багато дужок і відступів. 629 00:27:57,590 --> 00:28:01,910 Але вони не дають нам більше не енергії, ніж ми вже. 630 00:28:01,910 --> 00:28:02,550 А тепер петлі. 631 00:28:02,550 --> 00:28:05,020 А це, ми будемо дивитися на трохи більш повільно. 632 00:28:05,020 --> 00:28:08,470 Але тоді, ми почнемо їх використовувати, особливо для тих, хто вже знайомий. 633 00:28:08,470 --> 00:28:13,830 Це канонічне чином, якщо неймовірно аркан чином, щоб написати цикл в С 634 00:28:13,830 --> 00:28:15,896 >> Тепер петля в порожньому було досить проста. 635 00:28:15,896 --> 00:28:17,020 У вас є, назавжди, блок. 636 00:28:17,020 --> 00:28:19,760 У вас є, Повтор, блок з просто номер, який ви повинні ввести в. 637 00:28:19,760 --> 00:28:22,220 І с, для петлі, ви можете реалізувати обидва цих ідей, 638 00:28:22,220 --> 00:28:23,595 але це трохи більш технічний характер. 639 00:28:23,595 --> 00:28:25,994 Але, відверто кажучи, це також відносно простий. 640 00:28:25,994 --> 00:28:28,160 Після того, як ви знаєте, порядок операції, ви в буквальному сенсі 641 00:28:28,160 --> 00:28:30,910 тільки збираєтеся підключити значень і сказати комп'ютер, що робити. 642 00:28:30,910 --> 00:28:32,800 Так ось приклад. 643 00:28:32,800 --> 00:28:38,040 Це цикл, який, цілком просто, вважає від одного до числа 644 00:28:38,040 --> 00:28:40,187 через іншу. 645 00:28:40,187 --> 00:28:42,020 І тільки глянувши у нього, навіть якщо у вас є 646 00:28:42,020 --> 00:28:44,660 немає попереднього досвіду з ця мова, який номер 647 00:28:44,660 --> 00:28:46,920 це, ймовірно, почати відлік з? 648 00:28:46,920 --> 00:28:47,730 ОК, 0. 649 00:28:47,730 --> 00:28:50,240 І я припускаю, що це тому, що ви бачити, що є більш INT і я, 650 00:28:50,240 --> 00:28:51,073 який є змінною. 651 00:28:51,073 --> 00:28:52,390 Це инициализируется в 0. 652 00:28:52,390 --> 00:28:55,670 >> А потім, схоже, ми передаємо Printf, значення. 653 00:28:55,670 --> 00:28:58,000 І справді, я зробив трохи опечатку тут. 654 00:28:58,000 --> 00:28:59,850 Але це легко виправити. 655 00:28:59,850 --> 00:29:02,390 Дозвольте мені додати, я тут. 656 00:29:02,390 --> 00:29:06,150 Тепер у нас є PRINTF істота Минув той значення заповнювача. 657 00:29:06,150 --> 00:29:08,299 І те, що відбувається розраховувати через? 658 00:29:08,299 --> 00:29:08,840 АУДИТОРІЯ: 50. 659 00:29:08,840 --> 00:29:09,340 50. 660 00:29:09,340 --> 00:29:10,160 49. 661 00:29:10,160 --> 00:29:10,910 Девід Дж Малан: 49. 662 00:29:10,910 --> 00:29:13,340 Так 50, на перший погляд, здається, правильно. 663 00:29:13,340 --> 00:29:16,990 Але, виявляється, буде наш стан, що ми тримаємо перевірки. 664 00:29:16,990 --> 00:29:21,740 І ми збираємося зупинитися, як тільки Не я більше не менше, ніж 50. 665 00:29:21,740 --> 00:29:24,920 Так що це петля, навпаки, повинні виконати, так довго, як я менше 50. 666 00:29:24,920 --> 00:29:28,891 Але як тільки вона стає 50, або 51, або ще гірше, він повинен зупиниться автоматично. 667 00:29:28,891 --> 00:29:29,390 Добре. 668 00:29:29,390 --> 00:29:31,200 >> Так що насправді тут відбувається? 669 00:29:31,200 --> 00:29:33,160 Так що це порядок операції по петлі. 670 00:29:33,160 --> 00:29:35,440 Один з них, у вас є Так званий ініціалізації. 671 00:29:35,440 --> 00:29:38,264 Цей жовтий виділений фрагмент коду виконується першим, 672 00:29:38,264 --> 00:29:40,930 і це має ефект, що, за Середа, ви, ймовірно, собі уявити. 673 00:29:40,930 --> 00:29:45,500 Це створює змінну I і його магазини в цій змінній значення 0. 674 00:29:45,500 --> 00:29:47,560 Так я це 0 в цій точці в історії. 675 00:29:47,560 --> 00:29:49,680 >> Наступне, що відбувається в цій конструкції, 676 00:29:49,680 --> 00:29:51,540 тому, що умова отримує перевірені. 677 00:29:51,540 --> 00:29:54,325 Так що я перевірити відразу, це я менше 50? 678 00:29:54,325 --> 00:29:57,700 І, звичайно, відповідь на даний момент є, звичайно ж, так. 679 00:29:57,700 --> 00:30:00,710 Та тому, що я = 0, і це, безумовно, менше, ніж 50. 680 00:30:00,710 --> 00:30:03,866 Тоді те, що відбувається, є те, що це рядок коду, виконуються. 681 00:30:03,866 --> 00:30:06,740 І справді, якщо є кілька рядків коду в цих фігурних дужках, 682 00:30:06,740 --> 00:30:09,020 Всі вони отримують виконаний один за іншим. 683 00:30:09,020 --> 00:30:11,450 >> І в силу тут, мабуть, щоб роздрукувати 684 00:30:11,450 --> 00:30:15,365 число я, що буде бути 0, а потім 1, а потім 2. 685 00:30:15,365 --> 00:30:15,865 Але чому? 686 00:30:15,865 --> 00:30:17,410 Чому це отримати збільшується? 687 00:30:17,410 --> 00:30:20,680 Ну, четвертий річ, яка відбувається те, що цей синтаксис 688 00:30:20,680 --> 00:30:22,610 запускається на виконання після коми. 689 00:30:22,610 --> 00:30:27,506 я ++ є скорочений спосіб говорити; взяти значення I, і додати до нього 1; 690 00:30:27,506 --> 00:30:30,380 і потім наступного разу, додати 1 до нього; і наступного разу, 691 00:30:30,380 --> 00:30:31,330 додати до нього 1. 692 00:30:31,330 --> 00:30:33,640 >> Так що, якщо ми продовжувати йти, що станеться 693 00:30:33,640 --> 00:30:35,890 Далі йде Я не збираюся ініціалізувати я коли-небудь знову. 694 00:30:35,890 --> 00:30:38,290 Якщо я все ініціалізації я до 0, цей приклад 695 00:30:38,290 --> 00:30:41,110 ніколи не скінчиться, бо я б застряг на 0. 696 00:30:41,110 --> 00:30:43,870 Але те, що відбувається, так це що умова буде перевірятися, 697 00:30:43,870 --> 00:30:54,280 рядок коду будуть виконані, я буде збільшуватися, 698 00:30:54,280 --> 00:30:56,970 стан буде перевірятися, Код будуть виконані. 699 00:30:56,970 --> 00:30:59,790 І він продовжував на велосипеді знову, і знову, і знову, 700 00:30:59,790 --> 00:31:03,340 Поки я не індукує ++ значення 50. 701 00:31:03,340 --> 00:31:05,870 >> Стан потім каже, 50 менше 50? 702 00:31:05,870 --> 00:31:09,360 Відповідь, звичайно, немає, і так що весь код припиняє виконання. 703 00:31:09,360 --> 00:31:13,020 І якщо у вас є більше коду на екрані внизу, це те, що відбудеться далі. 704 00:31:13,020 --> 00:31:17,530 Це вискакує з цих фігурних дужках і продовжує друкувати більше після цього. 705 00:31:17,530 --> 00:31:20,470 >> Таким чином, в даний час жарт, з фокстроту, що Ви, можливо, тепер розумію. 706 00:31:20,470 --> 00:31:30,810 707 00:31:30,810 --> 00:31:31,560 Це завжди забавно. 708 00:31:31,560 --> 00:31:34,110 Це як хихикає вид просочуються, 709 00:31:34,110 --> 00:31:38,370 а потім розумієш, ви не повинні сміятися над гумору, як це. 710 00:31:38,370 --> 00:31:41,160 Але є деякі винос тут, педагогічно, теж. 711 00:31:41,160 --> 00:31:43,577 Так що виходить, що я відсутня шматок синтаксису, 712 00:31:43,577 --> 00:31:45,410 або Фокстрот-х пропускаючи шматок синтаксису тут. 713 00:31:45,410 --> 00:31:48,076 Чого не вистачає, що ми мали і в будь-який інший, наприклад, досі? 714 00:31:48,076 --> 00:31:51,599 715 00:31:51,599 --> 00:31:53,390 Повернутися, є, так щось ще, 716 00:31:53,390 --> 00:31:54,440 що ми повернемося до незабаром. 717 00:31:54,440 --> 00:31:55,398 Чого не вистачає, правда? 718 00:31:55,398 --> 00:31:55,908 Так. 719 00:31:55,908 --> 00:31:58,150 >> Глядачка: The ініціалізація [нерозбірливо]. 720 00:31:58,150 --> 00:31:58,470 >> Девід Дж Малан: ОК. 721 00:31:58,470 --> 00:31:58,980 Так що, так. 722 00:31:58,980 --> 00:32:03,210 Так насправді, це is-- Ну, і кількість инициализируется 723 00:32:03,210 --> 00:32:05,470 нагорі, або, скоріше, заявив нагорі. 724 00:32:05,470 --> 00:32:06,960 Так що це ще один спосіб зробити це. 725 00:32:06,960 --> 00:32:08,685 Але не в одному рядку вона діє, хоча. 726 00:32:08,685 --> 00:32:09,310 Як тут? 727 00:32:09,310 --> 00:32:10,196 >> Глядачка: Це фігурні дужки? 728 00:32:10,196 --> 00:32:10,640 >> Девід Дж Малан: Так. 729 00:32:10,640 --> 00:32:12,080 Так фігурні дужки відсутні. 730 00:32:12,080 --> 00:32:15,495 Але цей код, я маю на увазі, до їх честі, насправді, синтаксично правильним. 731 00:32:15,495 --> 00:32:17,610 Виявляється, ви не потрібні фігурні дужки 732 00:32:17,610 --> 00:32:21,691 якщо у вас є тільки один рядок коду, Ви хочете, щоб виконати всередині циклу. 733 00:32:21,691 --> 00:32:24,190 Тепер ми завжди, в класі, і в весь наш код розподілу, 734 00:32:24,190 --> 00:32:26,730 включають фігурні дужки в будь-якому випадку, просто для ясності. 735 00:32:26,730 --> 00:32:29,010 Але розумію, що в підручниках і онлайн-приклади, 736 00:32:29,010 --> 00:32:31,300 Ви можете дуже добре бачити кучеряве підтяжки вистачає небудь. 737 00:32:31,300 --> 00:32:34,850 І це нормально, якщо те, що ви вже з відступом і призначена 738 00:32:34,850 --> 00:32:38,650 це просто одна рядок коду, а не кілька рядків коду, потенційно. 739 00:32:38,650 --> 00:32:39,150 Добре. 740 00:32:39,150 --> 00:32:44,500 Так пов'язаної з питанням неточність, це питання переповнення, 741 00:32:44,500 --> 00:32:48,560 в тому сенсі, що, як, у цілих мають обмеження на них 742 00:32:48,560 --> 00:32:49,970 так само, як з плаваючою комою? 743 00:32:49,970 --> 00:32:53,120 У світі плаваючою точкою значення, ми можемо бути тільки так точні, 744 00:32:53,120 --> 00:32:55,710 після чого, іноді погані речі можуть трапитися, 745 00:32:55,710 --> 00:32:57,760 і наші програми можуть бути баггі і помилки. 746 00:32:57,760 --> 00:33:00,050 Тепер навіть з цілими числами, Ви можете зіткнутися з проблемами. 747 00:33:00,050 --> 00:33:03,820 Тепер ціле не має десяткової точки або числа, наступні після нього. 748 00:33:03,820 --> 00:33:07,130 Це просто натуральне число, як правило ,. 749 00:33:07,130 --> 00:33:09,430 Так що може піти не так з Int? 750 00:33:09,430 --> 00:33:12,210 Якщо я використовую Int до Граф, що може піти не так? 751 00:33:12,210 --> 00:33:13,230 Здається, набагато простіше. 752 00:33:13,230 --> 00:33:13,873 Так. 753 00:33:13,873 --> 00:33:16,240 >> Глядачка: Якщо Кількість потрапляє [нерозбірливо] 754 00:33:16,240 --> 00:33:17,073 >> Девід Дж Малан: Так. 755 00:33:17,073 --> 00:33:20,820 Що робити, якщо ви вважаєте так високо, що ви Не можу висловити, що насправді велика кількість. 756 00:33:20,820 --> 00:33:21,320 Вірно? 757 00:33:21,320 --> 00:33:23,910 У якийсь момент, ви йдете перевищувати кордону 758 00:33:23,910 --> 00:33:27,077 з 32-бітного значення або 64-бітове значення. 759 00:33:27,077 --> 00:33:29,410 Тепер знову, я не впевнений, як вимовляється 64-бітове значення, 760 00:33:29,410 --> 00:33:32,230 але я знаю, з 32-розрядного цілого числа, найбільша цінність це може бути, 761 00:33:32,230 --> 00:33:35,490 якщо це тільки позитивно значення, приблизно 4 млрд. 762 00:33:35,490 --> 00:33:39,000 Так що, якщо я намагаюся рахувати до 5 млрд, щось трапиться. 763 00:33:39,000 --> 00:33:41,050 Але давайте подивимося, що насправді, може трапитися. 764 00:33:41,050 --> 00:33:44,570 У світі цілого Переповнення, де ви, в деякому розумінні, 765 00:33:44,570 --> 00:33:48,270 переповнення Ємність число, що може трапитися? 766 00:33:48,270 --> 00:33:51,190 >> Так от двійкове число, це повернення до 0. 767 00:33:51,190 --> 00:33:54,630 Це все 1, і заповнювачі там, є ступенями 2, 768 00:33:54,630 --> 00:33:55,980 так що це двійковий файл. 769 00:33:55,980 --> 00:33:59,416 Таким чином, ці 8, 1 біт на екрані. 770 00:33:59,416 --> 00:34:01,290 І якщо ви пам'ятаєте або Ви швидко зробити математику, 771 00:34:01,290 --> 00:34:06,074 яке значення представлені тут з цих восьми бітів 1? 772 00:34:06,074 --> 00:34:06,950 255. 773 00:34:06,950 --> 00:34:09,260 І навіть якщо ви не були впевнені, в математиці, ви могли б зробити це. 774 00:34:09,260 --> 00:34:10,550 Або ви могли б просто вид розуму через нього, 775 00:34:10,550 --> 00:34:12,633 зачекайте хвилину, якщо я представляють 8 бітове значення, 776 00:34:12,633 --> 00:34:17,750 і я отримав 256 можливих значень, але перший з яких є 0, 777 00:34:17,750 --> 00:34:19,909 Я просто знаю, що великою буде 255, 778 00:34:19,909 --> 00:34:21,510 і це те, що цей міг би бути. 779 00:34:21,510 --> 00:34:26,060 >> Отже, нехай я намагаюся додати 1 до цього значення. 780 00:34:26,060 --> 00:34:28,750 Що б ви зробили в класі Школа при додаванні 1, і це 781 00:34:28,750 --> 00:34:31,139 не дуже підходить, бо Ви повинні нести 1? 782 00:34:31,139 --> 00:34:34,380 Що це число збирається щоб стати, коли ви додаєте 1? 783 00:34:34,380 --> 00:34:37,030 Це стане 0. 784 00:34:37,030 --> 00:34:37,530 Вірно? 785 00:34:37,530 --> 00:34:41,139 Тому що, якби у вас була більш bits-- і я спробуйте, начебто, введіть його here-- 786 00:34:41,139 --> 00:34:44,710 якщо у нас було більше бітів, те, що ми могли б зробити тут додати 1, 787 00:34:44,710 --> 00:34:47,370 і тоді ми б отримати це. 788 00:34:47,370 --> 00:34:48,739 Упс. 789 00:34:48,739 --> 00:34:52,250 Ми б 1 біт всю дорогу сюди. 790 00:34:52,250 --> 00:34:55,530 >> Але якщо це кінцеве значення, це тільки 8 біт, 791 00:34:55,530 --> 00:34:57,480 і це зумовлено за допомогою комп'ютера, 792 00:34:57,480 --> 00:34:59,370 що 1 ефективно немає. 793 00:34:59,370 --> 00:35:00,980 Це просто якась падає з обриву. 794 00:35:00,980 --> 00:35:05,480 І так, якщо ви додасте 1 до 255, те, що значення ви, мабуть отримати? 795 00:35:05,480 --> 00:35:06,180 0. 796 00:35:06,180 --> 00:35:09,700 І так випадково чисел, і, можливо, ненавмисно, 797 00:35:09,700 --> 00:35:12,040 в кінцевому підсумку упаковка навколо, як це. 798 00:35:12,040 --> 00:35:14,079 Так що може бути наслідком цього? 799 00:35:14,079 --> 00:35:15,620 Ну, є дещо різні речі. 800 00:35:15,620 --> 00:35:18,751 Таким чином, одна, вона в кінцевому підсумку дивлячись як 0, ненавмисно, 801 00:35:18,751 --> 00:35:20,750 але ви можете бачити роду, навіть в реальному світі, 802 00:35:20,750 --> 00:35:23,416 на краще чи на гірше, прояви цієї ідеї межі. 803 00:35:23,416 --> 00:35:26,630 Наприклад, будь-який з вас, хто коли-небудь грав Lego Star Wars, 804 00:35:26,630 --> 00:35:28,880 Хто-небудь випадково не знаєте, максимальне число монет 805 00:35:28,880 --> 00:35:32,032 Ви можете зібрати в Lego Star Wars? 806 00:35:32,032 --> 00:35:35,640 Візьміть здогад, засновану на сьогодні навідні запитання. 807 00:35:35,640 --> 00:35:39,140 Це більше, ніж 256 або 255. 808 00:35:39,140 --> 00:35:40,330 Це 4 млрд. 809 00:35:40,330 --> 00:35:42,080 Так що виходить, а є деякі people-- 810 00:35:42,080 --> 00:35:46,080 деякі вдаючись до допомоги підтвердив останній night-- отримали 4 млрд золотих монет, 811 00:35:46,080 --> 00:35:47,730 або ще багато чого, в Lego Star Wars. 812 00:35:47,730 --> 00:35:49,860 Хоча, мабуть, є спосіб обдурити гру, 813 00:35:49,860 --> 00:35:53,222 є помилка або особливість, яка дозволяє вам тільки наростати багато-багато точок. 814 00:35:53,222 --> 00:35:54,930 Але як можна більшу Значення, по 815 00:35:54,930 --> 00:35:58,360 в цьому скріншоті з кого я знайти в Інтернеті, насправді, 4 млрд. 816 00:35:58,360 --> 00:35:59,240 >> Тепер, чому це? 817 00:35:59,240 --> 00:36:03,040 Це точно 4 млрд, ймовірно, тому що хтось вирішив, 818 00:36:03,040 --> 00:36:05,500 хто писав в цю гру, що вони могли б зробити 4 млрд, 819 00:36:05,500 --> 00:36:07,340 то, щось, щось, як значення я піднімав 820 00:36:07,340 --> 00:36:10,256 з калькулятором і раніше, але це просто трохи чистішим для людей 821 00:36:10,256 --> 00:36:12,610 сказати максимальну кількість з coins-- або шпильки, 822 00:36:12,610 --> 00:36:14,860 як вони називають, що ви them-- може збирати це 4 млрд. 823 00:36:14,860 --> 00:36:16,290 І так, чому це? 824 00:36:16,290 --> 00:36:20,310 Як це LEGO гри реалізації лічильника 825 00:36:20,310 --> 00:36:23,420 який відстежує з Кількість монет у вас є? 826 00:36:23,420 --> 00:36:24,266 Вони використовують те, що? 827 00:36:24,266 --> 00:36:26,390 Глядачка: Він зупиняється вважаючи після 4 млрд. 828 00:36:26,390 --> 00:36:27,720 Девід Дж Малан: Він зупиняється вважаючи після 4 млрд, 829 00:36:27,720 --> 00:36:29,525 значить, ви можете висновок, як програміст, 830 00:36:29,525 --> 00:36:31,960 що вони, ймовірно, з використанням 32 розрядне ціле число. 831 00:36:31,960 --> 00:36:35,380 Як програміст буквально типізованих, INT, в його або її код, 832 00:36:35,380 --> 00:36:39,620 і це тип змінної, вони використовують для зберігання чиюсь код. 833 00:36:39,620 --> 00:36:42,230 Так що інші прояви з цих видів межах. 834 00:36:42,230 --> 00:36:45,063 >> Так що я не грав у цю game-- і я читав на історії 835 00:36:45,063 --> 00:36:48,470 щоб підтвердити, як much-- але в Оригінальна версія Civilization, де 836 00:36:48,470 --> 00:36:53,240 Ви, мабуть, взаємодіють один з одного і можуть вести війну чи світ є, 837 00:36:53,240 --> 00:36:56,590 Ганді мав бути одним з самі мирні персонажі, як я 838 00:36:56,590 --> 00:36:59,280 розумію, в першому Версія цивілізації. 839 00:36:59,280 --> 00:37:03,250 І справді, за шкалою від 1 до 10, його агресивність була просто 1. 840 00:37:03,250 --> 00:37:05,620 Так так, м'яко-небудь агресивний, мабуть. 841 00:37:05,620 --> 00:37:11,590 >> Але в якийсь момент, ви можете по-видимому, встановити демократію у вашому регіоні. 842 00:37:11,590 --> 00:37:14,900 І, якщо ви встановите демократію у вашій версії гри, 843 00:37:14,900 --> 00:37:17,320 то ваш рівень агресії знижується. 844 00:37:17,320 --> 00:37:18,460 Це гарна річ. 845 00:37:18,460 --> 00:37:20,890 Люди більш спокійний мабуть, в цій ситуації. 846 00:37:20,890 --> 00:37:23,190 Але, мабуть, хтось зробив ні, якщо, стан 847 00:37:23,190 --> 00:37:24,780 в оригінальній версії коду. 848 00:37:24,780 --> 00:37:30,650 >> Так рівень агресії Ганді вирушив із Позитивний 1, мінус 2, щоб негативний 1, 849 00:37:30,650 --> 00:37:33,840 але гра не зрозуміти негативні числа. 850 00:37:33,840 --> 00:37:38,680 Так що трапилося агресія Ганді Рівень пішов від 1, 0, 1 до негативного, 851 00:37:38,680 --> 00:37:40,900 який мав ефект обтікання до того, 852 00:37:40,900 --> 00:37:44,690 найбільш агресивний характер в грі, при значенні 255, 853 00:37:44,690 --> 00:37:46,630 за шкалою від 1 до 10. 854 00:37:46,630 --> 00:37:49,887 І з тих пір, там було більше втілення цій грі, 855 00:37:49,887 --> 00:37:51,720 і вони зберегли його в якості свого роду пасхальне яйце, 856 00:37:51,720 --> 00:37:53,870 що Ганді мабуть, жахливо агресивним. 857 00:37:53,870 --> 00:37:56,740 Але це було результатом дуже проста помилка програмування 858 00:37:56,740 --> 00:37:58,630 в цьому дуже ранньої версії гри. 859 00:37:58,630 --> 00:38:02,860 >> Зараз більш тривожно, більш Останнім часом Boeing 787 860 00:38:02,860 --> 00:38:05,720 було зафіксовано як мають помилка, не вид пристрою 861 00:38:05,720 --> 00:38:07,340 Вам особливо хочете, щоб помилка. 862 00:38:07,340 --> 00:38:10,130 І симптоми, які я буду читати тут, зі статті в Інтернеті, 863 00:38:10,130 --> 00:38:13,840 це було, модель 787 літак що був включений постійно 864 00:38:13,840 --> 00:38:18,030 для 248 днів, можуть втратити все змінного струму, змінного струму, 865 00:38:18,030 --> 00:38:20,850 Електрична потужність, в результаті блоки управління генератором, 866 00:38:20,850 --> 00:38:23,330 ГПА, одночасно вдаючись у Безпечний режим. 867 00:38:23,330 --> 00:38:26,790 Так що це було попередження видається коли була виявлена ​​ця проблема. 868 00:38:26,790 --> 00:38:28,750 Ця умова викликано за допомогою програмних лічильника, 869 00:38:28,750 --> 00:38:32,230 внутрішніми по відношенню до ГПА, так ціле число або змінна, 870 00:38:32,230 --> 00:38:36,850 що переповнення після 248 днів безперервної потужності. 871 00:38:36,850 --> 00:38:40,350 Боїнг в процесі розробляє оновлення програмного забезпечення, що ГПА 872 00:38:40,350 --> 00:38:42,350 буде виправити небезпечний стан. 873 00:38:42,350 --> 00:38:44,226 >> Так само, як ракети сценарій, в якому 874 00:38:44,226 --> 00:38:46,850 вони були якісь змінної що розраховує, і підрахунок, 875 00:38:46,850 --> 00:38:50,720 та підрахунку, але поступово переповнені межі його можливостей, 876 00:38:50,720 --> 00:38:54,890 Аналогічно зробив клятий літак мають змінну переповнення 877 00:38:54,890 --> 00:38:56,410 після достатньо часу бігу. 878 00:38:56,410 --> 00:38:59,240 І так як мова-в-щоку роботи навколо цього питання 879 00:38:59,240 --> 00:39:04,400 це по-справжньому, перезавантаження, ваш літак кожен 247 днів, так що пам'ять отримує знищені 880 00:39:04,400 --> 00:39:06,100 і змінна повертається 0. 881 00:39:06,100 --> 00:39:09,410 Але розуміють, що це дуже великий втілення програмного забезпечення, 882 00:39:09,410 --> 00:39:14,070 але особливо коли ми чуємо про Apple, операційних систем відбувається в автомобілях, 883 00:39:14,070 --> 00:39:18,030 і самостійного водіння автомобілів з Google, і будь-яку кількість втілень програмного забезпечення 884 00:39:18,030 --> 00:39:21,000 У нашому повсякденному житті, телевізорів і годинник, і більше, 885 00:39:21,000 --> 00:39:24,950 реалізувати були оточені програмного забезпечення, всі з яких написана нас, людей. 886 00:39:24,950 --> 00:39:28,150 >> І, як ми всі скоро побачите, це дуже легко і дуже типово 887 00:39:28,150 --> 00:39:30,250 помилятися при написанні програмного забезпечення. 888 00:39:30,250 --> 00:39:32,745 І якщо ви не зловити їх, деякі погані речі можуть трапитися. 889 00:39:32,745 --> 00:39:35,400 Тепер іноді, деякі смішні речі можуть трапитися, 890 00:39:35,400 --> 00:39:38,280 або принаймні іноді ми знати, щоб очікувати деякого непридатність. 891 00:39:38,280 --> 00:39:41,550 Так 0 ділиться на 0, з класу школа, як правило, погано. 892 00:39:41,550 --> 00:39:43,050 Це визначено. 893 00:39:43,050 --> 00:39:46,440 І виходить out-- і давайте подивимося, якщо мій мікрофон може підняти це up-- що Apple 894 00:39:46,440 --> 00:39:47,790 було повеселитися з цим останнім часом. 895 00:39:47,790 --> 00:39:48,850 Так у мене є iPhone тут. 896 00:39:48,850 --> 00:39:54,160 Я збираюся поговорити з Siri і попросити її щоб дати мені відповідь на 0, розділений на 0. 897 00:39:54,160 --> 00:39:55,850 Що 0, розділений на 0? 898 00:39:55,850 --> 00:39:59,350 899 00:39:59,350 --> 00:40:02,230 >> Сірі: Уявіть собі, що у вас є 0 печиво, і ви розділити їх рівномірно 900 00:40:02,230 --> 00:40:03,540 серед 0 друзів. 901 00:40:03,540 --> 00:40:05,810 Скільки печиво має кожна людина отримати? 902 00:40:05,810 --> 00:40:06,350 Побачити? 903 00:40:06,350 --> 00:40:07,660 Це не має сенсу. 904 00:40:07,660 --> 00:40:10,540 І Cookie Monster сумно що немає печива. 905 00:40:10,540 --> 00:40:13,987 І ви сумно, що у вас немає друзів. 906 00:40:13,987 --> 00:40:15,570 Девід Дж Малан: Це свого роду неприємний. 907 00:40:15,570 --> 00:40:17,550 Так що це те, що якраз там сказав. 908 00:40:17,550 --> 00:40:21,380 Це невизначеним, це не визначено, І дійсно, багато мов програмування 909 00:40:21,380 --> 00:40:24,950 або, дійсно, компілятори визначити, коли ви, в програмі, 910 00:40:24,950 --> 00:40:27,050 спробувати розділити 0 на 0. 911 00:40:27,050 --> 00:40:29,830 Більше задоволення, ніж це, хоча, це що, мабуть, Cookie Monster 912 00:40:29,830 --> 00:40:31,270 на Twitter в ці дні. 913 00:40:31,270 --> 00:40:37,610 І він відповів на це, з цим, що абсолютно чарівні. 914 00:40:37,610 --> 00:40:40,110 Але давайте швидкий погляд на кілька інших конструкцій, 915 00:40:40,110 --> 00:40:43,459 а потім покласти деякі з цих Код для використання, в хороших відносинах. 916 00:40:43,459 --> 00:40:45,250 Так що виходить, крім для петель, є 917 00:40:45,250 --> 00:40:49,174 те, що називається в той час як цикл, в якому виглядає по-іншому, і реалізується 918 00:40:49,174 --> 00:40:51,590 трохи differently-- і ми в кінцевому рахунку бачити examples-- 919 00:40:51,590 --> 00:40:53,500 але в певному сенсі, це простіше, тому що це 920 00:40:53,500 --> 00:40:56,670 не дозволяють ініціалізувати і оновити межах кордону циклу. 921 00:40:56,670 --> 00:40:57,794 Ви все ще можете реалізувати його. 922 00:40:57,794 --> 00:41:01,219 Таким чином, ви можете зробити ті ж самі речі, з час циклу, як і для циклу, 923 00:41:01,219 --> 00:41:03,260 але ваш синтаксис, ultimately-- як ми в кінцевому рахунку 924 00:41:03,260 --> 00:41:04,551 see-- буде відрізнятися. 925 00:41:04,551 --> 00:41:07,450 Там навіть робити той час як цикл, який насправді мало чим відрізняється, 926 00:41:07,450 --> 00:41:09,640 в цьому у той час як для циклу і в той час як цикл завжди 927 00:41:09,640 --> 00:41:13,005 перевірити їх стан по-перше, якщо Ви читаєте цю річ зверху вниз, 928 00:41:13,005 --> 00:41:16,440 це начебто схоже, що це збирається перевірити це умова в минулому, бо це 929 00:41:16,440 --> 00:41:17,910 дійсно останній рядок коду. 930 00:41:17,910 --> 00:41:20,580 І справді, що буде корисно в деяких програмах, які ми пишемо, 931 00:41:20,580 --> 00:41:23,746 якщо ви хочете, щоб просто сліпо зробити щось і в кінцевому підсумку перевіряти стан. 932 00:41:23,746 --> 00:41:25,205 Це не обов'язково погано. 933 00:41:25,205 --> 00:41:27,912 Якщо ми хочемо змінні, ми можемо зробити це в кілька різних способів. 934 00:41:27,912 --> 00:41:30,290 І ми побачили в Фокстрот мультфільм, один зі способів зробити це, 935 00:41:30,290 --> 00:41:33,400 де ви оголошуєте змінну, як INT лічильник коми, 936 00:41:33,400 --> 00:41:36,570 а потім, можливо, later-- наступний лінія, може бути, 10 ліній later-- 937 00:41:36,570 --> 00:41:37,800 ви насправді його ініціалізації. 938 00:41:37,800 --> 00:41:42,230 Таким чином, ці 2 рядки коду оголосити змінну типу Int 939 00:41:42,230 --> 00:41:44,930 і назвати його лічильник, так що це дає мені достатньо біти провести Int. 940 00:41:44,930 --> 00:41:48,230 А потім в кінці кінців, він ставить значення 0 в цій змінній. 941 00:41:48,230 --> 00:41:51,250 Це упорядковує розташування 0 і 1 візерунок, що ми знаємо з минулого тижня, 942 00:41:51,250 --> 00:41:53,260 являє собою число, ми знаємо, як 0. 943 00:41:53,260 --> 00:41:56,920 Або, чесно кажучи, ви можете зробити це набагато більш коротко, просто це подобається. 944 00:41:56,920 --> 00:41:59,390 >> Тепер ми також маємо Можливість виклику функцій. 945 00:41:59,390 --> 00:42:03,070 І справді, ось 2 лінія програми чи уривок з нього 946 00:42:03,070 --> 00:42:06,157 що дозволяє нам насправді написати код, який 947 00:42:06,157 --> 00:42:08,990 отримує рядок з user-- багато як наш волонтер на мить ago-- 948 00:42:08,990 --> 00:42:11,320 збереження результату в змінна називається ім'я, 949 00:42:11,320 --> 00:42:15,470 і then-- так само, як з нашим волонтером з printf-- друкує ці значення 950 00:42:15,470 --> 00:42:19,180 передавши два аргументи, то Рядок, а потім змінної 951 00:42:19,180 --> 00:42:20,781 називається, ім'я, себе. 952 00:42:20,781 --> 00:42:23,155 Отже, давайте поглянемо, перш, ніж ми повертаємося до Маріо є, 953 00:42:23,155 --> 00:42:26,010 на пару зараз, прикладів. 954 00:42:26,010 --> 00:42:30,537 >> Я збираюся йти вперед і відкрити до, скажімо, функція-0.c. 955 00:42:30,537 --> 00:42:33,120 І, як завжди, цей код доступні на веб-сайті Курсу, 956 00:42:33,120 --> 00:42:35,660 так що ви можете грати разом на додому і подивитися на нього пізніше. 957 00:42:35,660 --> 00:42:40,400 Але ось програма в це Суть, по лінії 17, 22. 958 00:42:40,400 --> 00:42:43,270 Основна програма, де Програма завжди збирається почати. 959 00:42:43,270 --> 00:42:46,980 Ця програма, мабуть, збирається роздрукувати ваше ім'я, двокрапка. 960 00:42:46,980 --> 00:42:50,320 Це те буду називати GetString, так само, як ми зробили з нашими волонтерами. 961 00:42:50,320 --> 00:42:53,365 А потім, це цікаво, він збирається назвати PrintName. 962 00:42:53,365 --> 00:42:56,490 Виявляється, весь цей час, є здається, функція називається PrintName. 963 00:42:56,490 --> 00:42:57,614 Це друкує чиєсь ім'я. 964 00:42:57,614 --> 00:43:01,210 Ми не повинні використовувати Printf від минулих років, є PrintName. 965 00:43:01,210 --> 00:43:03,500 >> Але це омана тому PrintName НЕ 966 00:43:03,500 --> 00:43:06,760 оснащені С. Люди не зробив винайти близько 40 або 50 років тому, 967 00:43:06,760 --> 00:43:07,990 Я зробив, замість цього. 968 00:43:07,990 --> 00:43:10,330 І справді, якщо я прокрутки далі вниз, повідомлення 969 00:43:10,330 --> 00:43:14,200 як я можу написати мій власний функції в С. Ми в кінцевому рахунку 970 00:43:14,200 --> 00:43:16,319 пояснити, чому ми продовжуємо говорити, порожнеча, в декількох місцях, 971 00:43:16,319 --> 00:43:18,110 але на сьогоднішній день, давайте просто подивіться на назву. 972 00:43:18,110 --> 00:43:20,905 >> У рядку 24, якщо ви хочете, щоб створити свою власну функцію, 973 00:43:20,905 --> 00:43:22,780 ви в буквальному сенсі написати найменування функції. 974 00:43:22,780 --> 00:43:24,340 Я вибрав PrintName. 975 00:43:24,340 --> 00:43:26,159 У дужках, ви вкажіть, які види 976 00:43:26,159 --> 00:43:28,450 входів і скільки ви хочу цю функцію, щоб взяти. 977 00:43:28,450 --> 00:43:31,906 У цьому випадку, я хочу, щоб прийняти 1 змінна називається, ім'я, 978 00:43:31,906 --> 00:43:34,030 і він збирається бути тип, рядок, так що це 979 00:43:34,030 --> 00:43:35,780 щоб деяка послідовність символів. 980 00:43:35,780 --> 00:43:39,170 А потім, це program-- так само, як в порожньому, 981 00:43:39,170 --> 00:43:42,590 Ви можете мати користувальницький головоломки pieces-- матиме цей звичай поведінку. 982 00:43:42,590 --> 00:43:46,760 Це збирається подзвонити Printf проходячи, привіт, заповнювач, 983 00:43:46,760 --> 00:43:49,110 а потім він збирається підключити в будь-який користувач називається. 984 00:43:49,110 --> 00:43:51,450 >> Таким чином, це приклад того, що вчений-комп'ютерник буде 985 00:43:51,450 --> 00:43:55,090 Виклик абстракція або функціональний Розкладання, які є просто 986 00:43:55,090 --> 00:43:58,110 химерні способи з saying--, якщо Вам подобається цей високий рівень ідея, 987 00:43:58,110 --> 00:44:01,569 як я хочу, функціональність, друкує чиєсь ім'я, абсолютно ви 988 00:44:01,569 --> 00:44:04,360 може в буквальному сенсі написати Printf, а потім пройти в аргументах, які ви хочете, 989 00:44:04,360 --> 00:44:07,340 і програма буде працювати, як це має, так як в середу. 990 00:44:07,340 --> 00:44:10,510 Але ви можете почати абстрагуватися від поняття друку ім'я. 991 00:44:10,510 --> 00:44:13,270 Ви можете дати йому ім'я, як PrintName, і це 992 00:44:13,270 --> 00:44:15,280 ця ідея шарів від тижня 0. 993 00:44:15,280 --> 00:44:19,910 >> Відтепер я, і ви не повинні знати, або все одно, як PrintName реалізується. 994 00:44:19,910 --> 00:44:22,470 Так, це використовує Printf, може бути, це ні, хто знає, що використовує? 995 00:44:22,470 --> 00:44:23,410 Кого це хвилює? 996 00:44:23,410 --> 00:44:26,034 Тепер я кажу тут, а тут. 997 00:44:26,034 --> 00:44:28,700 І дійсно, як наші програми отримують більш просунуті і складні, 998 00:44:28,700 --> 00:44:32,550 ми збираємося продовжувати приймати як належне що існують більш низькі частини головоломки рівень. 999 00:44:32,550 --> 00:44:34,780 Тому що ми писали їх або хтось інший, так 1000 00:44:34,780 --> 00:44:36,910 що ми можемо потім побудувати на них. 1001 00:44:36,910 --> 00:44:39,430 Давайте поглянемо на це варіант, для однієї функції. 1002 00:44:39,430 --> 00:44:41,780 >> Так що це одне трохи більше розширений, але, виявляється, 1003 00:44:41,780 --> 00:44:44,570 що в бібліотеці CS50, в є тільки функція GetInt. 1004 00:44:44,570 --> 00:44:47,720 Ми не думаю, що років тому, щоб реалізувати функцію GetPositiveInt. 1005 00:44:47,720 --> 00:44:50,970 І це трохи дратує, бо якщо ви, хлопці, пишете програму, де 1006 00:44:50,970 --> 00:44:53,325 Ви хочете, щоб отримати позитивний ціле число від користувача, 1007 00:44:53,325 --> 00:44:55,010 Ви можете використовувати абсолютно GetInt. 1008 00:44:55,010 --> 00:44:57,840 І ви можете перевірити за абсолютно стан і, можливо, петля 1009 00:44:57,840 --> 00:45:00,320 якщо INT більше ніж 0 і кричати на користувача 1010 00:45:00,320 --> 00:45:02,699 якщо він або вона не дає Ви позитивне число. 1011 00:45:02,699 --> 00:45:04,740 Але давайте будувати цей Будівля блокувати себе, а, 1012 00:45:04,740 --> 00:45:06,555 користувальницьких подряпин частина, якщо ви будете. 1013 00:45:06,555 --> 00:45:08,680 Я збираюся мати програму тут, в кінцевому рахунку, що я 1014 00:45:08,680 --> 00:45:11,780 хочу бути в змозі назвати GetPositiveInt, і я хочу бути 1015 00:45:11,780 --> 00:45:14,200 можливість роздрукувати все, що ІНТ. 1016 00:45:14,200 --> 00:45:16,240 Але це абстрагується далеко зараз. 1017 00:45:16,240 --> 00:45:19,050 Це просто дали високий рівень Ім'я, яке говорить, що він робить, 1018 00:45:19,050 --> 00:45:21,780 що чудово, тому що це дуже інтуїтивним зараз читати. 1019 00:45:21,780 --> 00:45:24,710 А якщо я все одно те, що під капот, дозвольте мені перейдіть вниз. 1020 00:45:24,710 --> 00:45:27,140 І це трохи лякає По-перше, в особливості 1021 00:45:27,140 --> 00:45:29,470 якщо це ваш перший Програма, але давайте поглянемо. 1022 00:45:29,470 --> 00:45:32,860 >> Я більше не кажучи, недійсним, бо це виявляється функції, 1023 00:45:32,860 --> 00:45:34,777 так само, як GetString, може повертає значення для мене. 1024 00:45:34,777 --> 00:45:36,610 Вони не просто для друку на екрані, 1025 00:45:36,610 --> 00:45:38,410 вони можуть насправді передати мені щось ще. 1026 00:45:38,410 --> 00:45:41,535 І якщо раніше PrintName, Я нічого не треба назад. 1027 00:45:41,535 --> 00:45:44,160 Мені потрібно побічний ефект то з'являється на екрані, 1028 00:45:44,160 --> 00:45:46,570 але мені не потрібно людину передати мені що-небудь. 1029 00:45:46,570 --> 00:45:48,840 Тут, з GetPositiveInt, як з GetInt, 1030 00:45:48,840 --> 00:45:50,640 Я хочу, щоб щось бути передані назад. 1031 00:45:50,640 --> 00:45:53,220 Так що я кажу ні, порожнеча, на лінії 23, але INT, 1032 00:45:53,220 --> 00:45:55,570 в якому говориться, ця функція що я пишу, 1033 00:45:55,570 --> 00:45:58,860 називається GetPositiveInt збирається передати мене ціле, а не нічого, 1034 00:45:58,860 --> 00:45:59,890 Не порожнечі. 1035 00:45:59,890 --> 00:46:03,280 >> Між тим, він не збирається приймати ніяких Входи, так що я, начебто, його назад. 1036 00:46:03,280 --> 00:46:08,280 Я не даю GetPositiveInt будь вхід, я хочу, щоб дати мені свій вихід. 1037 00:46:08,280 --> 00:46:09,800 І тоді те, що відбувається зараз? 1038 00:46:09,800 --> 00:46:11,640 Так от, як я можу оголосити змінну. 1039 00:46:11,640 --> 00:46:15,090 Я зробив це за межами циклу, з причин, ми в кінцевому підсумку бачимо, 1040 00:46:15,090 --> 00:46:17,700 але це просто дає мені 32 біт називається, п, 1041 00:46:17,700 --> 00:46:20,952 а у мене до визначення їм зберігати ціле. 1042 00:46:20,952 --> 00:46:23,660 І ось, що робити, поки конструкції, і це, чому це корисно. 1043 00:46:23,660 --> 00:46:26,700 Буквально це зробити, в той час як п менше 1. 1044 00:46:26,700 --> 00:46:28,030 Отже, давайте подивимося, що станеться. 1045 00:46:28,030 --> 00:46:30,760 Я роздрукувати, будь ласка, дати мені позитивну Int. 1046 00:46:30,760 --> 00:46:34,300 Потім я отримати Int, використовуючи CS50-х функціонувати і зберігати в п. 1047 00:46:34,300 --> 00:46:38,990 >> І потім, що рядок коду, ймовірно, запускається на виконання наступний логічно? 1048 00:46:38,990 --> 00:46:41,890 Який номер рядки? 1049 00:46:41,890 --> 00:46:42,571 Так, так 31. 1050 00:46:42,571 --> 00:46:45,320 Ви не знаєте це, поки у Вас немає сказали або роду умовиводах, 1051 00:46:45,320 --> 00:46:45,986 але це правда. 1052 00:46:45,986 --> 00:46:48,280 Само зверху вниз а потім повторює. 1053 00:46:48,280 --> 00:46:55,840 Так що, якщо я набрала, скажімо, в число негативний 1, є п менше, ніж негативний 1? 1054 00:46:55,840 --> 00:46:56,340 Так. 1055 00:46:56,340 --> 00:46:58,470 Тому що негативний 1 менше, ніж 1. 1056 00:46:58,470 --> 00:46:59,510 Так що ж сталося? 1057 00:46:59,510 --> 00:47:03,260 Я збираюся зробити це в той час як п менше 1, 1058 00:47:03,260 --> 00:47:05,760 так що я збираюся повернутися до лінії 28. 1059 00:47:05,760 --> 00:47:09,530 >> І кожен time-- і давайте працювати this-- зробити функція 1 скомпілювати його, 1060 00:47:09,530 --> 00:47:11,340 і в даний час точка слеш функцію 1. 1061 00:47:11,340 --> 00:47:14,280 Якщо я друкую негативний 1, це триматиме на мене кричати 1062 00:47:14,280 --> 00:47:17,530 поки я не співпрацювати, бо кожен з моїх входів становить менше 1 1063 00:47:17,530 --> 00:47:20,070 а якщо під час менш 1, Я збираюся продовжувати робити це. 1064 00:47:20,070 --> 00:47:24,240 Якщо я, нарешті, дати йому номер, як 50, На щастя, він говорить, спасибі за 50. 1065 00:47:24,240 --> 00:47:24,970 Чому? 1066 00:47:24,970 --> 00:47:30,640 Тому що як тільки п не менше 1, я перестану застрягти в цьому циклі, 1067 00:47:30,640 --> 00:47:33,840 і це нове ключове слово сьогодні, повернення, в буквальному сенсі робить. 1068 00:47:33,840 --> 00:47:36,800 Так що я просто реалізується, в почуття, що еквівалентно GetString, 1069 00:47:36,800 --> 00:47:40,590 де я повертаючи до хто використовує мене, деяке значення. 1070 00:47:40,590 --> 00:47:42,820 Це не повинні бути рядок, що це Int. 1071 00:47:42,820 --> 00:47:44,990 Таким чином, простий, швидкий приклад, але ми скоро 1072 00:47:44,990 --> 00:47:47,930 побачити деякі більш складні версії ще. 1073 00:47:47,930 --> 00:47:53,882 Справді, давайте подивимося на цифрова однієї, яка називається return.c. 1074 00:47:53,882 --> 00:47:55,590 А це насправді трохи простіше. 1075 00:47:55,590 --> 00:47:59,010 Так Мета цієї програми в life-- давайте скомпілювати і запустити його, 1076 00:47:59,010 --> 00:48:03,090 тому переконайтеся, повернення, точка слеш, return-- повідомлення 1077 00:48:03,090 --> 00:48:05,530 програма просто кубики значення 2. 1078 00:48:05,530 --> 00:48:08,410 Це досить нерозумно, важко Код, не приймати будь-які матеріали, 1079 00:48:08,410 --> 00:48:12,220 але демонструє інший функція, я написав сам. 1080 00:48:12,220 --> 00:48:15,760 Так от, я оголошений Мінлива, називається х, типу Int, 1081 00:48:15,760 --> 00:48:17,840 дорівнює числу 2, абсолютно довільно. 1082 00:48:17,840 --> 00:48:19,530 Це лише деякі пухнасті друку. 1083 00:48:19,530 --> 00:48:23,070 Це говорить х зараз, наприклад, і наприклад, зведення в куб точка точка точка. 1084 00:48:23,070 --> 00:48:26,390 І магія, мабуть, у рядку 21. 1085 00:48:26,390 --> 00:48:30,120 Я дзвоню функцію під назвою, куб, Я вручаючи йому аркуш паперу 1086 00:48:30,120 --> 00:48:32,890 з номером 2, написані на ній, і те, що вартість, математично, 1087 00:48:32,890 --> 00:48:34,860 я хочу, щоб вийти з нього? 1088 00:48:34,860 --> 00:48:36,570 Так само, як для перевірки відсутності помилок? 1089 00:48:36,570 --> 00:48:37,070 8. 1090 00:48:37,070 --> 00:48:37,570 Вірно? 1091 00:48:37,570 --> 00:48:40,160 Я хочу 2 кубі тому, 2 сила 3, так 8 тому. 1092 00:48:40,160 --> 00:48:42,570 >> То де ж куб реалізовані? 1093 00:48:42,570 --> 00:48:44,349 Ну, помітили, що це реалізується тут. 1094 00:48:44,349 --> 00:48:47,140 І, як і раніше, за логікою, незважаючи на те, що синтаксис, ймовірно, 1095 00:48:47,140 --> 00:48:49,320 дуже нової для багатьох з вас, Я хочу цю функцію 1096 00:48:49,320 --> 00:48:51,780 передати мене лист папір з міжнар на ньому. 1097 00:48:51,780 --> 00:48:53,990 Так у мене є Int, в Назва довільно, 1098 00:48:53,990 --> 00:48:55,530 але зручно назвати куб. 1099 00:48:55,530 --> 00:48:58,430 Вхідний до нього, це п введіть число, так що 1100 00:48:58,430 --> 00:49:00,800 як я можу пройти в номер 2 на аркуші паперу. 1101 00:49:00,800 --> 00:49:03,910 А потім з'ясовується, С підтримує математика, так що ви не повинні х для часів, 1102 00:49:03,910 --> 00:49:06,680 ви просто використовувати зірочку для множення. 1103 00:49:06,680 --> 00:49:11,070 І це повертає п раз п раз п, який є просто значення в кубі. 1104 00:49:11,070 --> 00:49:12,840 >> Так куди ми йдемо з усім цим? 1105 00:49:12,840 --> 00:49:14,570 Це, безумовно, побіжний тур, будьте впевнені, 1106 00:49:14,570 --> 00:49:16,410 що в супер розділах і в задачі набір 1, 1107 00:49:16,410 --> 00:49:18,368 Ви будете пройшов через все це ще більше. 1108 00:49:18,368 --> 00:49:22,490 І в проблему встановити 1, ми перехід із графічного світі нуля 1109 00:49:22,490 --> 00:49:25,640 до чогось більш командного рядка в C. Але ми черпаємо натхнення 1110 00:49:25,640 --> 00:49:27,680 з цього тут ігри від минулого, в якому 1111 00:49:27,680 --> 00:49:31,591 за допомогою C і стандартна редакція р комплект ви реалізуєте піраміду Маріо. 1112 00:49:31,591 --> 00:49:34,340 І в хакерської видання р комплект, якщо ви так вирішите обрати, 1113 00:49:34,340 --> 00:49:38,280 Ви реалізувати трохи більше виклик піраміду з двома піками. 1114 00:49:38,280 --> 00:49:41,239 Ви також реалізувати Алгоритм, жадібний алгоритм. 1115 00:49:41,239 --> 00:49:43,030 Виявляється є деякі цікава логіка 1116 00:49:43,030 --> 00:49:45,640 за процесом працює станції касовий 1117 00:49:45,640 --> 00:49:47,410 а насправді передачі хто ще зміна. 1118 00:49:47,410 --> 00:49:50,410 Існує алгоритм, який досить просто, що ви, можливо, навіть 1119 00:49:50,410 --> 00:49:53,576 схопити інтуїтивно, коли ви вперше прочитав it-- розуміючи, що те, що я завжди 1120 00:49:53,576 --> 00:49:57,110 зроблено в будь-який час я дав комусь деякі гроші back--, що дозволяє завжди 1121 00:49:57,110 --> 00:50:00,679 звести до мінімуму кількість паперові купюри або металеві монети 1122 00:50:00,679 --> 00:50:02,220 що ви повертаючи користувачеві. 1123 00:50:02,220 --> 00:50:04,610 І це, звичайно, є переконливим тому що, якщо ви йдете в CVS або ще багато чого, 1124 00:50:04,610 --> 00:50:06,430 Ви не хочете, щоб бути передані ціла купа одиниць 1125 00:50:06,430 --> 00:50:07,596 або ціла купа копійки. 1126 00:50:07,596 --> 00:50:10,120 Ви хочете найменше монети, напевно, можна. 1127 00:50:10,120 --> 00:50:13,070 >> Нарешті, ви також будете бути оскаржені плескатися в світ води 1128 00:50:13,070 --> 00:50:17,220 а насправді отримати оцінку для відображення між темпами течії, 1129 00:50:17,220 --> 00:50:19,890 як, вода в душі, тільки, скільки води використовується. 1130 00:50:19,890 --> 00:50:22,640 І натяк в ній, буде цей кліп тут, 1131 00:50:22,640 --> 00:50:24,840 який ми в кінцевому протягом всього в 60 секунд, що 1132 00:50:24,840 --> 00:50:29,070 малює картину душові головки низького потоку. 1133 00:50:29,070 --> 00:50:30,886 >> [ВІДТВОРЕННЯ ВІДЕО] 1134 00:50:30,886 --> 00:50:31,385 -Добре. 1135 00:50:31,385 --> 00:50:32,774 Я отримав всі тут. 1136 00:50:32,774 --> 00:50:35,800 Я отримав Cyclone серії F, Гідра, Jetflow, Стокгольм 1137 00:50:35,800 --> 00:50:37,660 Supersteam, ви називаєте його. 1138 00:50:37,660 --> 00:50:39,265 >> -А Що ви рекомендуєте? 1139 00:50:39,265 --> 00:50:40,460 >> -Що ти шукаєш? 1140 00:50:40,460 --> 00:50:41,300 >> -Power Людина. 1141 00:50:41,300 --> 00:50:42,285 Потужність. 1142 00:50:42,285 --> 00:50:42,910 -Як Silkwood. 1143 00:50:42,910 --> 00:50:44,520 -Це Для випромінювання. 1144 00:50:44,520 --> 00:50:46,335 -Це вірно. 1145 00:50:46,335 --> 00:50:48,275 -Тепер Що це? 1146 00:50:48,275 --> 00:50:49,704 -Це Commando 450. 1147 00:50:49,704 --> 00:50:50,620 Я не продаю що один. 1148 00:50:50,620 --> 00:50:51,700 >> -Але Це те, що ми хочемо. 1149 00:50:51,700 --> 00:50:52,680 Це коммандос 450. 1150 00:50:52,680 --> 00:50:53,882 >> -Ні, Повірте мені. 1151 00:50:53,882 --> 00:50:55,090 Це використовується тільки в цирку. 1152 00:50:55,090 --> 00:50:56,512 Це для слонів. 1153 00:50:56,512 --> 00:50:59,356 >> -Я Нічого платити. 1154 00:50:59,356 --> 00:51:01,252 >> -Що Про Джеррі? 1155 00:51:01,252 --> 00:51:02,760 >> -Він Не міг впоратися з цим. 1156 00:51:02,760 --> 00:51:04,910 Він ніжний. 1157 00:51:04,910 --> 00:51:05,750 О так. 1158 00:51:05,750 --> 00:51:36,737 1159 00:51:36,737 --> 00:51:37,320 [КІНЕЦЬ ПЕРЕГЛЯДУ] 1160 00:51:37,320 --> 00:51:37,700 Девід Дж Малан: Гаразд. 1161 00:51:37,700 --> 00:51:38,820 От якщо для CS50. 1162 00:51:38,820 --> 00:51:40,050 Ми будемо бачити Вас на наступному тижні. 1163 00:51:40,050 --> 00:51:45,910 1164 00:51:45,910 --> 00:51:49,029 >> СПІКЕР 1: [? Скаллі?], [? Ян ,?] оскільки цей завершальний проект, 1165 00:51:49,029 --> 00:51:50,362 що б ви, хлопці, придумали? 1166 00:51:50,362 --> 00:51:51,990 >> СПІКЕР 2: Ну, ми дали це розмаїття думки, 1167 00:51:51,990 --> 00:51:53,250 і ми думаємо, що кращий спосіб, метою яких 1168 00:51:53,250 --> 00:51:53,660 >> СПІКЕР 3: Чи можу я? 1169 00:51:53,660 --> 00:51:54,326 >> СПІКЕР 2: Так. 1170 00:51:54,326 --> 00:51:56,360 Всіма засобами, насправді. 1171 00:51:56,360 --> 00:51:59,425 >> СПІКЕР 3: Так що я думаю ми можемо підвести нашу ідею 1172 00:51:59,425 --> 00:52:05,450 для OUTROS з одного word-- нічого. 1173 00:52:05,450 --> 00:52:08,950 1174 00:52:08,950 --> 00:52:10,409 >> Девід Дж Малан: Нічого? 1175 00:52:10,409 --> 00:52:11,200 СПІКЕР 3: Нічого. 1176 00:52:11,200 --> 00:52:12,990 Девід Дж Малан: Що це означає? 1177 00:52:12,990 --> 00:52:16,260 СПІКЕР 3: Outros є ні про що. 1178 00:52:16,260 --> 00:52:21,720 СПІКЕР 2: Ну, я маю на увазі, у філософії, Я маю на увазі, нічого не завжди щось. 1179 00:52:21,720 --> 00:52:24,200 СПІКЕР 1: Так what's-- що приміщення? 1180 00:52:24,200 --> 00:52:25,720 СПІКЕР 3: Так що це, як життя. 1181 00:52:25,720 --> 00:52:26,680 ДОБРЕ. 1182 00:52:26,680 --> 00:52:28,294 Що ти робив сьогодні? 1183 00:52:28,294 --> 00:52:31,811 >> Девід Дж Малан: Я встав, було сніданок, і прийшов на роботу. 1184 00:52:31,811 --> 00:52:34,056 >> СПІКЕР 3: Це Outro. 1185 00:52:34,056 --> 00:52:36,806 СПІКЕР 2: Але, я маю на увазі, не повинен щось трапиться з ним на the-- 1186 00:52:36,806 --> 00:52:37,889 СПІКЕР 3: Ні, ні, ні, ні. 1187 00:52:37,889 --> 00:52:40,220 Нічого не відбувається. 1188 00:52:40,220 --> 00:52:42,910 >> СПІКЕР 1: Так чому ми дивимося? 1189 00:52:42,910 --> 00:52:46,956 >> СПІКЕР 3: Тому що що це Outro для CS50. 1190 00:52:46,956 --> 00:52:48,652 >> Девід Дж Малан: Поки немає. 1191 00:52:48,652 --> 00:52:49,151