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