1 00:00:00,000 --> 00:00:03,944 >> [Грає музика] 2 00:00:03,944 --> 00:00:10,732 3 00:00:10,732 --> 00:00:11,690 Девід Малан: Гаразд. 4 00:00:11,690 --> 00:00:14,674 Це CS50, і це кінець тижня 2. 5 00:00:14,674 --> 00:00:16,840 Мені так шкода, я не міг бути там з вами всі сьогодні, 6 00:00:16,840 --> 00:00:18,300 але ви в дуже хороших руках. 7 00:00:18,300 --> 00:00:21,710 Дозвольте мені представити CS50 власної Роб Боуден. 8 00:00:21,710 --> 00:00:29,106 9 00:00:29,106 --> 00:00:31,730 БОР Боуден: І, звичайно, то ми повинні зробити задоволення той факт, 10 00:00:31,730 --> 00:00:36,820 що він послав нам по вертикалі відео і показати це. 11 00:00:36,820 --> 00:00:38,320 >> [ВІДТВОРЕННЯ ВІДЕО] 12 00:00:38,320 --> 00:00:39,820 >> [Грає музика] 13 00:00:39,820 --> 00:00:42,350 >> [СЛІДАМИ] 14 00:00:42,350 --> 00:00:44,730 >> -Це Відео не зробив доведеться шукати цей шлях. 15 00:00:44,730 --> 00:00:46,570 Це можна було б запобігти. 16 00:00:46,570 --> 00:00:49,070 Скажіть немає вертикальних відео. 17 00:00:49,070 --> 00:00:53,310 >> -Vertical Відео статися, коли ви Тримайте камеру в ту сторону. 18 00:00:53,310 --> 00:00:55,880 Ваше відео буде в кінцевому дивлячись, як лайно. 19 00:00:55,880 --> 00:00:57,650 >> - [Грунт] 20 00:00:57,650 --> 00:01:02,240 >> -Є Все більше і більше людей, що пристрастилися щоб зробити вертикальні відео щодня. 21 00:01:02,240 --> 00:01:06,240 Це ніколи не тріснути або нічого, але це все ще дуже погано. 22 00:01:06,240 --> 00:01:10,410 Є два різних видів люди, які страждають з ВВС. 23 00:01:10,410 --> 00:01:14,160 Перша група лікує відео вони стріляють, як фотографії. 24 00:01:14,160 --> 00:01:15,850 Вони не означають, ніякої шкоди. 25 00:01:15,850 --> 00:01:19,180 Вони просто не розуміють, що в той час як ви можете перетворити картину, 26 00:01:19,180 --> 00:01:20,880 Ви не можете дійсно повернути відео. 27 00:01:20,880 --> 00:01:21,880 >> [CRASH] 28 00:01:21,880 --> 00:01:23,460 >> - [ОБЕЗЬЯНА ЗВУКИ] 29 00:01:23,460 --> 00:01:27,540 >> -The Інша група це люди, які не дають [біп]. 30 00:01:27,540 --> 00:01:31,090 >> -Vertical Відео синдром небезпечний. 31 00:01:31,090 --> 00:01:34,120 Кінофільми є завжди горизонтально. 32 00:01:34,120 --> 00:01:35,990 Пропонуються горизонтальні. 33 00:01:35,990 --> 00:01:38,380 Комп'ютерні екрани горизонталі. 34 00:01:38,380 --> 00:01:41,580 Народні очі горизонтально. 35 00:01:41,580 --> 00:01:45,170 Ми не побудований, щоб дивитися відео вертикальні. 36 00:01:45,170 --> 00:01:47,600 >> Я люблю вертикальні відео. 37 00:01:47,600 --> 00:01:50,410 >> -Ніхто Піклується про вас. 38 00:01:50,410 --> 00:01:53,340 >> -Якщо Це проблема-х зупинити, ви теж 39 00:01:53,340 --> 00:01:57,650 почне показувати чотирьох відео відразу, щоб заощадити смугу пропускання. 40 00:01:57,650 --> 00:02:02,400 >> -Letterboxed Вертикальні відео буде бути розміром з поштову марку. 41 00:02:02,400 --> 00:02:04,920 >> -А Він буде поширюватися в усьому світі. 42 00:02:04,920 --> 00:02:07,670 Кіноекранах є завжди горизонтально. 43 00:02:07,670 --> 00:02:11,200 Якщо вертикальні відео стало прийнято, кінотеатри 44 00:02:11,200 --> 00:02:13,930 повинні бути високий і худий. 45 00:02:13,930 --> 00:02:17,710 >> -А Всі кінотеатри, повинні знесені і перебудовані. 46 00:02:17,710 --> 00:02:22,090 І до того часу, вони були відновлені, Міла Куніс буде старої і потворною. 47 00:02:22,090 --> 00:02:24,342 >> -Birds Буде врізатися в них і померти. 48 00:02:24,342 --> 00:02:26,530 >> -Ми Всі отримують жорсткої шиї від, дивлячись вгору. 49 00:02:26,530 --> 00:02:29,800 >> -А Ніхто не буде сидіти в передній ряд коли-небудь знову. 50 00:02:29,800 --> 00:02:37,170 >> -Джордж Лукас перевидання зірки Війни again-- худий видання. 51 00:02:37,170 --> 00:02:41,860 >> -Я Ніколи не був в змозі сказати, історія, що я хотів сказати. 52 00:02:41,860 --> 00:02:46,030 Це був відмінний шанс для мене, щоб експериментувати з новою технологією. 53 00:02:46,030 --> 00:02:48,150 >> -Ти Ривок. 54 00:02:48,150 --> 00:02:54,430 >> -Кожний Раз, коли мобільний пристрій використовується для запис відео, спокуса є. 55 00:02:54,430 --> 00:02:56,370 Просто сказати ні. 56 00:02:56,370 --> 00:03:00,116 Скажи ні Джорджа Лукаса. 57 00:03:00,116 --> 00:03:04,062 Скажи ні старого Міла Куніс. 58 00:03:04,062 --> 00:03:06,600 Скажіть немає вертикальних відео. 59 00:03:06,600 --> 00:03:12,511 >> -А Якщо ви бачите хтось робить це, скажімо, "Ви не стріляють, що правильний манекен!" 60 00:03:12,511 --> 00:03:15,433 >> [Грає музика] 61 00:03:15,433 --> 00:03:18,842 62 00:03:18,842 --> 00:03:19,830 >> [КІНЕЦЬ ПЕРЕГЛЯДУ] 63 00:03:19,830 --> 00:03:23,702 >> [Оплески] 64 00:03:23,702 --> 00:03:27,598 >> [AUDIO OUT] 65 00:03:27,598 --> 00:03:44,041 66 00:03:44,041 --> 00:03:45,790 БОР Боуден: --simple форма криптографії, 67 00:03:45,790 --> 00:03:49,500 який є в основному шифрування і дешифрування секретних повідомлень. 68 00:03:49,500 --> 00:03:52,590 Так от у нас є дуже простий іграшкою. 69 00:03:52,590 --> 00:03:56,900 А ідея зовнішнє кільце обертається навколо внутрішнього кільця. 70 00:03:56,900 --> 00:04:01,610 І ви можете бачити, може бути, якщо я збільшити в, that-- важко побачити. 71 00:04:01,610 --> 00:04:05,090 Але, як і кількість 1-- добре, що переїхав. 72 00:04:05,090 --> 00:04:09,120 >> 1 номер карти до листа X, № 2 карти в листі 73 00:04:09,120 --> 00:04:11,630 Дж Неймовірно складно не пропускати вперед. 74 00:04:11,630 --> 00:04:16,100 Лист 2 карти в J. Номер 3 відображає до D. Так 75 00:04:16,100 --> 00:04:20,140 з цим кільцем ви можете дати хтось повідомлення 1, 2, 3. 76 00:04:20,140 --> 00:04:22,624 Для якоїсь причини хочу сказати їм XJD. 77 00:04:22,624 --> 00:04:24,540 Але ви можете дати їм деякі повідомлення чисел, 78 00:04:24,540 --> 00:04:28,460 і, якщо вони є це кільце, вони може розшифрувати те, що ви намагаєтеся сказати. 79 00:04:28,460 --> 00:04:32,510 >> Таким чином, ви, можливо, бачили це Конкретним прикладом криптографії 80 00:04:32,510 --> 00:04:36,640 раніше, якщо навколо Різдвяного сезону ви дивилися Різдвяна історія. 81 00:04:36,640 --> 00:04:38,520 Якщо ви ніколи не бачили це, то просто 82 00:04:38,520 --> 00:04:41,060 включити TBS в буквальному сенсі в будь-який час в переддень Різдва, 83 00:04:41,060 --> 00:04:44,510 тому що вони просто показати його спина до спини щоб повернутися до спина до спини весь день. 84 00:04:44,510 --> 00:04:46,744 І ставлення це відео. 85 00:04:46,744 --> 00:04:47,410 [ВІДТВОРЕННЯ ВІДЕО] 86 00:04:47,410 --> 00:04:50,020 -Будьте Відомо всім і кожному, що Ральф Паркер справжнім 87 00:04:50,020 --> 00:04:52,850 призначений членом Маленька Сирота Енні Таємний коло 88 00:04:52,850 --> 00:04:56,490 і має право на усіма почестями і вигоди відбувається з ним. 89 00:04:56,490 --> 00:04:59,010 Підписано сирітка Енні. 90 00:04:59,010 --> 00:05:03,120 Контрассигнуется П'єр Андре чорнилом! 91 00:05:03,120 --> 00:05:07,460 Нагороди та переваги вже у віці дев'яти років! 92 00:05:07,460 --> 00:05:12,530 >> [Кричати від радіо] 93 00:05:12,530 --> 00:05:13,030 -Давай. 94 00:05:13,030 --> 00:05:14,000 Давайте покінчимо з цим. 95 00:05:14,000 --> 00:05:18,274 Мені не потрібно все, що джаз про контрабандистів і піратів. 96 00:05:18,274 --> 00:05:20,440 Слухай, завтра ввечері з заключна пригоди 97 00:05:20,440 --> 00:05:22,540 Чорного піратський корабель. 98 00:05:22,540 --> 00:05:25,460 Тепер, прийшов час для Секретне повідомлення Енні 99 00:05:25,460 --> 00:05:28,620 для вас члени таємного Круга. 100 00:05:28,620 --> 00:05:32,370 Пам'ятайте Діти, тільки члени Енні секретної Круга 101 00:05:32,370 --> 00:05:34,880 може декодувати секретне повідомлення Енні. 102 00:05:34,880 --> 00:05:39,100 Пам'ятайте, Енні залежно від вас. 103 00:05:39,100 --> 00:05:41,660 Встановіть штифти В2. 104 00:05:41,660 --> 00:05:43,960 Ось повідомлення. 105 00:05:43,960 --> 00:05:44,680 12. 106 00:05:44,680 --> 00:05:45,180 11. 107 00:05:45,180 --> 00:05:45,679 2. 108 00:05:45,679 --> 00:05:48,110 -Я У моєму першому секретній нараді. 109 00:05:48,110 --> 00:05:49,030 >> -25. 110 00:05:49,030 --> 00:05:49,834 14. 111 00:05:49,834 --> 00:05:51,040 11. 112 00:05:51,040 --> 00:05:51,854 18. 113 00:05:51,854 --> 00:05:52,670 16. 114 00:05:52,670 --> 00:05:54,570 >> -Ой, П'єр перебуває у великій голосової сьогодні. 115 00:05:54,570 --> 00:05:57,490 Я міг би сказати, що сьогодні ввечері Повідомлення було дійсно важливо. 116 00:05:57,490 --> 00:05:57,990 -3. 117 00:05:57,990 --> 00:06:00,080 25. 118 00:06:00,080 --> 00:06:01,580 Це повідомлення від самої Енні. 119 00:06:01,580 --> 00:06:02,880 Пам'ятайте, не кажіть нікому. 120 00:06:02,880 --> 00:06:07,840 121 00:06:07,840 --> 00:06:11,130 >> -П'ять Секунд потому, я в тільки кімната в будинку, де хлопчик дев'яти 122 00:06:11,130 --> 00:06:15,830 міг сидіти на самоті і декодування. 123 00:06:15,830 --> 00:06:16,620 Ага! 124 00:06:16,620 --> 00:06:17,340 B! 125 00:06:17,340 --> 00:06:20,210 Я пішов до іншого. 126 00:06:20,210 --> 00:06:23,300 Є. Перше слово "бути". 127 00:06:23,300 --> 00:06:25,880 С. Він доносився простіше. 128 00:06:25,880 --> 00:06:28,400 У. 25. 129 00:06:28,400 --> 00:06:30,528 Це R. 130 00:06:30,528 --> 00:06:31,278 -Давай, Ральфі! 131 00:06:31,278 --> 00:06:31,861 Я повинен йти! 132 00:06:31,861 --> 00:06:33,182 -Я Б прямо, Ма! 133 00:06:33,182 --> 00:06:36,038 Ось здорово. 134 00:06:36,038 --> 00:06:42,840 Т. О. "Будьте впевнені, що" - будьте впевнені, до чого? 135 00:06:42,840 --> 00:06:44,770 Що сирітка Енні намагається сказати? 136 00:06:44,770 --> 00:06:46,381 Будьте впевнені, що до чого? 137 00:06:46,381 --> 00:06:47,825 >> -Randy Повинен піти! 138 00:06:47,825 --> 00:06:48,866 Чи будете ви будь ласка вийти? 139 00:06:48,866 --> 00:06:49,783 >> -Добре, Мама! 140 00:06:49,783 --> 00:06:51,786 Я буду прямо! 141 00:06:51,786 --> 00:06:53,606 Я отримую ближче ,. 142 00:06:53,606 --> 00:06:55,550 Напруга було жахливо. 143 00:06:55,550 --> 00:06:57,050 Що це було? 144 00:06:57,050 --> 00:06:59,905 Доля планети може висіти на волосині! 145 00:06:59,905 --> 00:07:01,736 >> -Ralphie, Ренді повинен йти! 146 00:07:01,736 --> 00:07:05,680 >> -Я Зараз вийду, з глузду з'їхати! 147 00:07:05,680 --> 00:07:07,170 Майже там! 148 00:07:07,170 --> 00:07:08,150 Мої пальці літали. 149 00:07:08,150 --> 00:07:09,980 Мій розум був сталевий капкан. 150 00:07:09,980 --> 00:07:11,496 Кожен пір вібрує. 151 00:07:11,496 --> 00:07:13,268 Це було майже ясно! 152 00:07:13,268 --> 00:07:13,767 Так. 153 00:07:13,767 --> 00:07:14,609 Так. 154 00:07:14,609 --> 00:07:15,108 Так. 155 00:07:15,108 --> 00:07:16,449 Так. 156 00:07:16,449 --> 00:07:20,240 Будьте впевнені, щоб пити Ovaltine. 157 00:07:20,240 --> 00:07:20,740 Ovaltine? 158 00:07:20,740 --> 00:07:26,687 159 00:07:26,687 --> 00:07:27,520 Вошивого комерційний? 160 00:07:27,520 --> 00:07:32,040 161 00:07:32,040 --> 00:07:34,920 Сучий син. 162 00:07:34,920 --> 00:07:35,890 >> [КІНЕЦЬ ПЕРЕГЛЯДУ] 163 00:07:35,890 --> 00:07:39,650 >> БОР Боуден: Так от, як Ovaltine відноситься до криптографії. 164 00:07:39,650 --> 00:07:42,290 В основному CS50 тільки рекламується Ovaltine, таким чином, ми могли 165 00:07:42,290 --> 00:07:44,400 бути Вошивої комерційних Ovaltine. 166 00:07:44,400 --> 00:07:44,900 Добре. 167 00:07:44,900 --> 00:07:47,120 Так що тепер поточна інформатика. 168 00:07:47,120 --> 00:07:50,670 Запам'ятати мене на понеділок ми зупинилися дайвінг глибше рядків. 169 00:07:50,670 --> 00:07:52,820 Таким чином, ми маємо справу з рядок "Zamyla." 170 00:07:52,820 --> 00:07:55,130 І ми були визнання той факт, що ми можемо розглядати 171 00:07:55,130 --> 00:07:57,510 "Zamyla" у вигляді послідовності символів. 172 00:07:57,510 --> 00:07:59,740 І пам'ятайте, що ми дізналися, позначення кронштейна. 173 00:07:59,740 --> 00:08:01,995 Так, якщо це зберігалися в рядку "s", потім 174 00:08:01,995 --> 00:08:05,860 якби ми сказали їй кронштейн 0, що б вкажіть капіталу Z. лист 175 00:08:05,860 --> 00:08:09,790 І якби ми сказали їй кронштейн 1, що буде вказувати на перший нижній регістр A, 176 00:08:09,790 --> 00:08:14,220 і так далі до ів кронштейна 5, який буде вказувати на останню а. 177 00:08:14,220 --> 00:08:17,090 >> Тепер згадайте, що Довжина цього рядка 6, 178 00:08:17,090 --> 00:08:23,220 але індекси в рядку є Від 0 до 5, Z через які тривають. 179 00:08:23,220 --> 00:08:28,650 Так це зараз вписується в загальну картину пам'яті комп'ютера, оперативної пам'яті. 180 00:08:28,650 --> 00:08:32,020 Так десь програма, яка ви працюєте комп'ютер 181 00:08:32,020 --> 00:08:34,780 потрібно пам'ятати, Zamyla десь у пам'яті. 182 00:08:34,780 --> 00:08:36,029 Так я можу бути добровольцем? 183 00:08:36,029 --> 00:08:38,840 184 00:08:38,840 --> 00:08:40,181 Так, будь ласка. 185 00:08:40,181 --> 00:08:50,120 186 00:08:50,120 --> 00:08:51,500 І те, що ваше ім'я? 187 00:08:51,500 --> 00:08:52,410 >> ДІН: Дін. 188 00:08:52,410 --> 00:08:53,550 >> БОР Боуден: Дін? 189 00:08:53,550 --> 00:08:54,910 Приємно познайомитися, Дін. 190 00:08:54,910 --> 00:08:58,240 Так що приїжджай сюди і ми збираємося, щоб ви малювати 191 00:08:58,240 --> 00:09:00,740 на нашому хороший відмінний макет пам'яті. 192 00:09:00,740 --> 00:09:05,950 Тепер я хотів би думати про пам'ять однієї довгої смуги байтів, 193 00:09:05,950 --> 00:09:11,090 але тільки для цілей відображення ми будемо просто зліва направо, зверху вниз. 194 00:09:11,090 --> 00:09:11,590 ДОБРЕ? 195 00:09:11,590 --> 00:09:22,030 >> Так що я збираюся показати program-- Getstrings.c. 196 00:09:22,030 --> 00:09:25,760 І так все це програма робити просить чотири його струни 197 00:09:25,760 --> 00:09:28,830 від користувача з GetString, а потім друк 198 00:09:28,830 --> 00:09:30,950 все, що перший рядок увійшов було. 199 00:09:30,950 --> 00:09:32,840 Ми ігноруючи дві через чотири. 200 00:09:32,840 --> 00:09:33,610 ДОБРЕ. 201 00:09:33,610 --> 00:09:38,210 Так тут now--, коли Я перший запит S1. 202 00:09:38,210 --> 00:09:39,740 Таким чином, ви комп'ютер. 203 00:09:39,740 --> 00:09:41,680 І ви реалізуєте GetString. 204 00:09:41,680 --> 00:09:46,710 Таким чином, ви запросити рядок з мені, і я кажу, ОК, Дін. 205 00:09:46,710 --> 00:09:47,900 Дайте рядок "Дін". 206 00:09:47,900 --> 00:09:50,300 >> Так десь в пам'яті у вас потрібно пам'ятати "Діна". 207 00:09:50,300 --> 00:09:52,160 Так що пишіть його в пам'яті десь. 208 00:09:52,160 --> 00:09:58,270 209 00:09:58,270 --> 00:09:59,210 Ідеальний. 210 00:09:59,210 --> 00:09:59,880 ДОБРЕ. 211 00:09:59,880 --> 00:10:01,740 Так що тепер ми s2. 212 00:10:01,740 --> 00:10:03,869 І S2 буде запит на GetString. 213 00:10:03,869 --> 00:10:05,160 Так що я збираюся ввести рядок. 214 00:10:05,160 --> 00:10:08,720 Я збираюся ввести "Ханна". 215 00:10:08,720 --> 00:10:10,586 Так ввести "Ханна" десь у пам'яті. 216 00:10:10,586 --> 00:10:18,860 217 00:10:18,860 --> 00:10:19,360 Так. 218 00:10:19,360 --> 00:10:23,000 А-Н. 219 00:10:23,000 --> 00:10:25,550 >> ОК, так що тепер S3. 220 00:10:25,550 --> 00:10:28,380 І це буде ще один прошу GetString. 221 00:10:28,380 --> 00:10:37,020 І ось тепер ввести "Марія". 222 00:10:37,020 --> 00:10:37,520 Добре. 223 00:10:37,520 --> 00:10:40,980 А тут ще одна остання Запит на GetString, S4. 224 00:10:40,980 --> 00:10:42,580 Таким чином, я не знаю. 225 00:10:42,580 --> 00:10:45,640 Як щодо ми йдемо з antidisestablishmentarianism. 226 00:10:45,640 --> 00:10:49,460 Так що введіть у пам'ять. 227 00:10:49,460 --> 00:10:50,400 Так. 228 00:10:50,400 --> 00:10:53,970 Так просто робити "Боб". 229 00:10:53,970 --> 00:10:54,560 >> ДОБРЕ. 230 00:10:54,560 --> 00:10:58,410 Так що тепер explain-- чому залишити ці прогалини? 231 00:10:58,410 --> 00:11:01,340 Чому у вас це поле порожнім простір тут, тут, і тут? 232 00:11:01,340 --> 00:11:05,170 233 00:11:05,170 --> 00:11:05,670 Так. 234 00:11:05,670 --> 00:11:09,450 Так помітити, коли я йду друкувати s1-- тому, якщо ми 235 00:11:09,450 --> 00:11:11,890 був біг "Ханна" Право поряд з "Дін", 236 00:11:11,890 --> 00:11:14,360 як ми знаємо, коли рядок "Дін" закінчується? 237 00:11:14,360 --> 00:11:19,470 Так друку рядка s1 може мати просто надруковані "DeanHannahMariaRob" 238 00:11:19,470 --> 00:11:22,720 якщо він не має ніякого поняття , Коли "Дін" насправді закінчується. 239 00:11:22,720 --> 00:11:23,240 >> Добре. 240 00:11:23,240 --> 00:11:27,650 Таким чином, в пам'яті те, як ми насправді представляють цей кінець рядка 241 00:11:27,650 --> 00:11:29,940 це з косими нульовий. 242 00:11:29,940 --> 00:11:32,620 Так це простір саме те, що ми хотіли. 243 00:11:32,620 --> 00:11:34,040 Вона повинна бути обернена коса риска нулю. 244 00:11:34,040 --> 00:11:37,690 Це буде зворотний слеш нуль, і це буде зворотний слеш нулю. 245 00:11:37,690 --> 00:11:41,585 І ви можете мати казкові приз за те, що ідеальний волонтер. 246 00:11:41,585 --> 00:11:44,910 247 00:11:44,910 --> 00:11:45,860 Візьміть стрес м'яч! 248 00:11:45,860 --> 00:11:49,040 249 00:11:49,040 --> 00:11:49,700 >> ДОБРЕ. 250 00:11:49,700 --> 00:11:54,420 Так цей символ зворотної косої риси нуля як ми, вказуючи на закінчення рядка. 251 00:11:54,420 --> 00:11:57,120 Це те, як, коли будь Дана програма хоче надрукувати рядок, 252 00:11:57,120 --> 00:11:59,760 це how-- пам'ятаю ми дізналися, функція StrLen минулого тижня? 253 00:11:59,760 --> 00:12:00,940 Довжина рядка? 254 00:12:00,940 --> 00:12:03,770 Це те, як довжина рядка може визначити, як довго рядок. 255 00:12:03,770 --> 00:12:05,810 Він просто тримає ітерації над символами 256 00:12:05,810 --> 00:12:08,217 до тих пір, поки знаходить Обернена коса риска символу нуля. 257 00:12:08,217 --> 00:12:11,050 Таким чином, важливо зрозуміти про зворотна коса риса характеру нульовий 258 00:12:11,050 --> 00:12:14,950 в це представляється усіма нулями в бітах. 259 00:12:14,950 --> 00:12:18,980 Так зауважити, що це відрізняється від нульового символу. 260 00:12:18,980 --> 00:12:23,010 Таким чином, символ нуля, якщо ви пам'ятаєте, у прикладі, що він дав наприкінці 261 00:12:23,010 --> 00:12:27,360 лекції, де персонажі карту , Метою яких, як капітал Карт до 65. 262 00:12:27,360 --> 00:12:29,130 Нижнього регістру в карти до 97. 263 00:12:29,130 --> 00:12:30,890 Рядкові б буде 98. 264 00:12:30,890 --> 00:12:35,220 Таким чином, число 0 відображається, метою яких я не знаю, у верхній частині моєї голови. 265 00:12:35,220 --> 00:12:36,400 44 або 45. 266 00:12:36,400 --> 00:12:37,890 Десь у цьому регіоні. 267 00:12:37,890 --> 00:12:40,850 >> Таким чином, характер 0 є фактична кількість. 268 00:12:40,850 --> 00:12:44,350 Але зворотний слеш нуль карти для всіх нульових бітів. 269 00:12:44,350 --> 00:12:46,380 Так що різниця між зворотної косої межі нульовий, 270 00:12:46,380 --> 00:12:48,450 які ми будемо називати нульовий термінатор. 271 00:12:48,450 --> 00:12:53,210 Там це розходження між Обернена коса риска нулю, а символ нуля. 272 00:12:53,210 --> 00:12:54,350 >> Добре. 273 00:12:54,350 --> 00:12:57,520 Тому говорити трохи більше про рядках. 274 00:12:57,520 --> 00:13:01,470 Отже, ми бачимо тут, як це він буде закладений в пам'яті. 275 00:13:01,470 --> 00:13:07,940 Так ця ідея рядків у вигляді послідовності з characters-- так офіційним комп'ютер 276 00:13:07,940 --> 00:13:10,750 sciency термін для послідовності є масивом. 277 00:13:10,750 --> 00:13:13,790 Таким чином, ми могли б назвати рядок масив символів. 278 00:13:13,790 --> 00:13:17,770 І є насправді інші дані типи, які ми можемо зробити з масивів. 279 00:13:17,770 --> 00:13:19,975 >> Таким чином, щоб мотивувати це, розглянемо на прикладі. 280 00:13:19,975 --> 00:13:22,810 281 00:13:22,810 --> 00:13:29,812 Ми будемо називати його ages0.c я буду скопіюйте і вставте наш шаблон. 282 00:13:29,812 --> 00:13:32,470 283 00:13:32,470 --> 00:13:33,410 ДОБРЕ. 284 00:13:33,410 --> 00:13:39,378 Таким чином, у цій програмі те, що ми хочу зробити, це взяти вік 285 00:13:39,378 --> 00:13:45,160 з трьох студентів у процесі. 286 00:13:45,160 --> 00:13:49,240 Таким чином, ми знаємо, що INT age-- і тепер я збираюся сказати, 0. 287 00:13:49,240 --> 00:13:53,140 Таким чином, ви, можливо, захочете, щоб сказати age1, але для цілей, ми побачимо дуже скоро, 288 00:13:53,140 --> 00:13:57,187 Я скажу INT age0 дорівнює GetInt. 289 00:13:57,187 --> 00:13:59,270 Так само заклик до GetInt що ми використовували I 290 00:13:59,270 --> 00:14:01,561 не буває, щоб бути спонукаючи кажучи, "дайте мені вік." 291 00:14:01,561 --> 00:14:03,120 Але тільки просить його. 292 00:14:03,120 --> 00:14:06,510 >> І age1 дорівнює GetInt. 293 00:14:06,510 --> 00:14:09,600 І INT age2 дорівнює GetInt. 294 00:14:09,600 --> 00:14:14,070 Так, знову ж таки, три студенти, але в кінцевому рахунку змінна індекси 295 00:14:14,070 --> 00:14:16,890 є age0 через age2. 296 00:14:16,890 --> 00:14:17,550 ДОБРЕ. 297 00:14:17,550 --> 00:14:23,960 Так ця програма буде робити все, що ми хочемо з age0, age1 і age2, 298 00:14:23,960 --> 00:14:27,670 але ця програма в кінцевому рахунку, працює протягом трьох студентів. 299 00:14:27,670 --> 00:14:28,380 >> ДОБРЕ. 300 00:14:28,380 --> 00:14:32,110 Так що тепер, якщо я хочу четверо студентів? 301 00:14:32,110 --> 00:14:36,000 Ну, я збираюся мати, щоб повернутися в моєму коді, змініть коментар, 302 00:14:36,000 --> 00:14:39,840 і тепер у нас є Int Age3 дорівнює GetInt. 303 00:14:39,840 --> 00:14:40,610 ДОБРЕ. 304 00:14:40,610 --> 00:14:43,660 Так хто бачить тут проблеми? 305 00:14:43,660 --> 00:14:47,310 В чому проблема з такого роду установки? 306 00:14:47,310 --> 00:14:47,810 Так. 307 00:14:47,810 --> 00:14:53,110 308 00:14:53,110 --> 00:14:53,610 Так. 309 00:14:53,610 --> 00:14:56,360 Так ми створюємо змінна для кожного студента. 310 00:14:56,360 --> 00:15:00,140 Тепер, працює, але в кінцевому рахунку, що, якщо я тепер 311 00:15:00,140 --> 00:15:06,500 сказати: "Я хочу, щоб захопити вік восьмій студентів або 16 студентів 312 00:15:06,500 --> 00:15:11,340 або в менш багато студентів сотні студентів в CS50 313 00:15:11,340 --> 00:15:16,750 або тисячі студентів на території кампусу чи мільярди людей у ​​світі? 314 00:15:16,750 --> 00:15:19,130 Так в кінцевому рахунку це не є стійким. 315 00:15:19,130 --> 00:15:21,990 Кожен раз, коли ви бачите себе копіювання і вставки коду, як це, 316 00:15:21,990 --> 00:15:25,050 Ви повинні відчувати себе, як правило що є кращий шлях. 317 00:15:25,050 --> 00:15:31,290 >> Так що це, де ми вводимо декларація масиву. 318 00:15:31,290 --> 00:15:34,564 Тому, коли ви оголошуєте масив, це те, що загальний формат 319 00:15:34,564 --> 00:15:35,480 буде виглядати. 320 00:15:35,480 --> 00:15:36,664 Ми збираємося сказати типу. 321 00:15:36,664 --> 00:15:38,830 а потім ми збираємося дати ім'я цього масиву, 322 00:15:38,830 --> 00:15:41,150 як ми визначаємо змінну будь-якого заданого. 323 00:15:41,150 --> 00:15:43,980 І, нарешті, ми використовуємо Цей кронштейн позначення знову 324 00:15:43,980 --> 00:15:47,480 але в іншому контексті з як ми використовували його раніше. 325 00:15:47,480 --> 00:15:51,860 >> Так ось як це виглядає нормальним Оголошення змінної, що ми бачили. 326 00:15:51,860 --> 00:15:54,890 Таким чином, ми бачили Int х коми раніше. 327 00:15:54,890 --> 00:16:00,020 Ну ми могли б побачити щось як INT х дужках 5. 328 00:16:00,020 --> 00:16:04,020 І покласти цю ідею в Програма GetInt, що ми have-- 329 00:16:04,020 --> 00:16:08,850 таким чином, ми можемо реалізувати Цей таким же чином. 330 00:16:08,850 --> 00:16:13,630 >> Скажімо, в CS ми схильні використовувати п як число чогось. 331 00:16:13,630 --> 00:16:16,150 Так от ми збираємося зберігати чотирьох студентів. 332 00:16:16,150 --> 00:16:25,960 І тепер ми можемо сказати, INT віку Кронштейн НЕ N-- зовсім розумію yet-- 333 00:16:25,960 --> 00:16:32,210 оголосити масив з чотирьох студентів. 334 00:16:32,210 --> 00:16:38,050 Так, як це буде виглядати в пам'яті буде схожий на цей. 335 00:16:38,050 --> 00:16:39,570 Зніміть цей. 336 00:16:39,570 --> 00:16:46,606 І ми будемо мати десь в memory-- я покладу це там. 337 00:16:46,606 --> 00:16:52,690 338 00:16:52,690 --> 00:16:53,808 >> Так десь в пам'яті. 339 00:16:53,808 --> 00:16:58,760 340 00:16:58,760 --> 00:16:59,727 Один два три чотири. 341 00:16:59,727 --> 00:17:03,383 342 00:17:03,383 --> 00:17:09,849 У нас є чотири цілих числа в рядку для цього масиву з чотирьох чисел. 343 00:17:09,849 --> 00:17:13,820 Так, в даний час, що є Розмір одного з цих ящиків? 344 00:17:13,820 --> 00:17:17,190 345 00:17:17,190 --> 00:17:17,690 Так. 346 00:17:17,690 --> 00:17:18,390 Це чотири байти. 347 00:17:18,390 --> 00:17:19,690 Це 32 біт. 348 00:17:19,690 --> 00:17:22,310 Так що тепер це відрізняється з масиву, які ми 349 00:17:22,310 --> 00:17:24,020 бачили раніше, масив символів. 350 00:17:24,020 --> 00:17:28,540 У рядку кожна коробка була тільки один байт, оскільки характер тільки один байт. 351 00:17:28,540 --> 00:17:32,170 Але з масивом цілих чисел, кожне Коробка має в чотири байти того 352 00:17:32,170 --> 00:17:34,060 щоб відповідати весь ціле. 353 00:17:34,060 --> 00:17:37,197 Так що це те, що масив чотирьох Інтс буде виглядати. 354 00:17:37,197 --> 00:17:40,510 355 00:17:40,510 --> 00:17:43,870 >> А потім назад в код. 356 00:17:43,870 --> 00:17:47,460 Тепер ми хочемо насправді магазин цілі в цьому масиві. 357 00:17:47,460 --> 00:17:53,470 Так що тепер це дуже, дуже, дуже загальний принцип, який в якийсь момент 358 00:17:53,470 --> 00:17:54,680 стати м'язова пам'ять. 359 00:17:54,680 --> 00:17:56,710 Так Int я дорівнює 0. 360 00:17:56,710 --> 00:17:57,940 я менше, ніж п. 361 00:17:57,940 --> 00:18:01,850 я плюс плюс. 362 00:18:01,850 --> 00:18:05,790 Вік кронштейн я дорівнює GetInt. 363 00:18:05,790 --> 00:18:15,100 >> Таким чином, це цикл, цей формат, Ви повинні отримати дуже звикли. 364 00:18:15,100 --> 00:18:20,010 Так що це, як правило, як ми будемо перебору майже будь масив. 365 00:18:20,010 --> 00:18:23,690 Тепер зверніть увагу такого роду пояснює, чому з самого початку 366 00:18:23,690 --> 00:18:29,870 у нас не було для петлі збирається на Int Я дорівнює 1, I менше або дорівнює 10. 367 00:18:29,870 --> 00:18:34,200 Причина в тому, що, починаючи з нульовий робить цю роботу добре з масивами. 368 00:18:34,200 --> 00:18:36,270 Так масиви дорівнюють нулю індексуються. 369 00:18:36,270 --> 00:18:40,360 Якщо цей масив має довжину 4, індекси дорівнюють 0 до 3. 370 00:18:40,360 --> 00:18:42,880 >> Так через перший ітерації цього циклу для 371 00:18:42,880 --> 00:18:49,930 ми збираємося бути установка вік Кронштейн 0 рівну виклику GetInt. 372 00:18:49,930 --> 00:18:52,440 Так сталося, що я ввести з клавіатури. 373 00:18:52,440 --> 00:18:56,970 На другому проході, ми установка age1 одно GetInt. 374 00:18:56,970 --> 00:18:58,230 По-третє прохід, age2. 375 00:18:58,230 --> 00:18:59,880 Заключний прохід Age3. 376 00:18:59,880 --> 00:19:05,750 Таким чином, якщо в першому проході циклу Я входжу до числа 4 на клавіатурі, 377 00:19:05,750 --> 00:19:07,740 Потім ми вставимо 4 тут. 378 00:19:07,740 --> 00:19:11,470 Якщо на другому проході я входжу 50, ми поставимо 50 тут. 379 00:19:11,470 --> 00:19:15,180 На третьому проході я міг введіть негативний 1, негативний 1, 380 00:19:15,180 --> 00:19:21,810 і, нарешті, якщо я входжу 0-- і Тепер пам'ятайте, що це було три індексу. 381 00:19:21,810 --> 00:19:25,350 >> Після того як ми петлі спині, я це буде збільшуватися до 4. 382 00:19:25,350 --> 00:19:27,770 Не я більше не менше, ніж п, який 4. 383 00:19:27,770 --> 00:19:29,840 І ми вирватися з петлі. 384 00:19:29,840 --> 00:19:32,578 Так що було б неправильно з цим? 385 00:19:32,578 --> 00:19:38,140 386 00:19:38,140 --> 00:19:38,729 [Нерозбірливо]? 387 00:19:38,729 --> 00:19:39,604 АУДИТОРІЯ: [нерозбірливо] 388 00:19:39,604 --> 00:19:45,880 389 00:19:45,880 --> 00:19:46,400 >> Так. 390 00:19:46,400 --> 00:19:51,550 Таким чином, масив має тільки чотири місця, що означає, як індекси від 0 до 3. 391 00:19:51,550 --> 00:19:55,630 Так що, якщо б це було так, я б приймати значення 4 в якийсь момент. 392 00:19:55,630 --> 00:20:00,910 вікова група 4 буде установка все, що відбувається, щоб бути тут 393 00:20:00,910 --> 00:20:02,920 те, що я повинен сказати, введіть 6. 394 00:20:02,920 --> 00:20:05,010 Це буде установка цього до 6. 395 00:20:05,010 --> 00:20:06,560 >> Але ми не знаємо, що тут. 396 00:20:06,560 --> 00:20:08,836 Це не пам'ять що у нас доступ. 397 00:20:08,836 --> 00:20:10,710 Так що, якщо ви пам'ятаєте з попередня лекція, 398 00:20:10,710 --> 00:20:14,350 він був роздруківки значення Zamyla і в якийсь момент він ударив цей сегментації 399 00:20:14,350 --> 00:20:17,990 вина. Таким чином, ви, ймовірно, буде бачити багато помилок сегментації, як ви 400 00:20:17,990 --> 00:20:20,530 здійснити деякі з проблемних множин. 401 00:20:20,530 --> 00:20:24,950 Але це один із способів, в яких Ви можете зіткнутися з сегментацію 402 00:20:24,950 --> 00:20:28,540 вина, коли ви починаєте доступу пам'ять таким чином, що ви не повинні бути. 403 00:20:28,540 --> 00:20:34,117 Таким чином, ми не мали доступу до це місце, і це помилка. 404 00:20:34,117 --> 00:20:37,760 405 00:20:37,760 --> 00:20:40,190 >> Так що це краще. 406 00:20:40,190 --> 00:20:45,820 Тепер є ще невеликий проблема з цим кодом. 407 00:20:45,820 --> 00:20:50,720 І це в основному, що ми застряг на чотирьох студентів. 408 00:20:50,720 --> 00:20:52,940 Тепер, якщо я хочу використовувати восьмій студентів, ОК. 409 00:20:52,940 --> 00:20:54,350 Це не так вже страшно. 410 00:20:54,350 --> 00:20:58,120 Я можу піти в, змінити коментарі, а також змінити п. 411 00:20:58,120 --> 00:20:59,760 Тепер це буде працювати з восьми студентів. 412 00:20:59,760 --> 00:21:02,190 Якщо я скомпілювати і запустити це, покаже me-- 413 00:21:02,190 --> 00:21:07,870 він буде просити чисел протягом восьми студенти і він буде просто працювати. 414 00:21:07,870 --> 00:21:11,850 Але це менше, ніж ідеально підходить для потрібно перекомпілювати програму кожен раз, 415 00:21:11,850 --> 00:21:15,960 Я хочу, щоб змінити кількість студентів що я хочу, щоб ввести вік для. 416 00:21:15,960 --> 00:21:22,990 >> Таким чином, остаточний поліпшення по це, як ми побачимо, ми here-- 417 00:21:22,990 --> 00:21:26,177 збирається просити кількість людей. 418 00:21:26,177 --> 00:21:28,010 Тут ми маємо ряд людей в номерах 419 00:21:28,010 --> 00:21:29,880 або які-небудь вік людей у ​​кімнаті. 420 00:21:29,880 --> 00:21:33,300 Але ми збираємося просити номер людей в номері від користувача. 421 00:21:33,300 --> 00:21:36,171 Так що це точно такий же зроби, а цикл, який ми бачили раніше. 422 00:21:36,171 --> 00:21:37,920 Це точно такий же зробити щось час цикл, який ви 423 00:21:37,920 --> 00:21:40,050 може бути реалізації на безлічі проблем. 424 00:21:40,050 --> 00:21:43,102 Так що, поки вони введення п менше, ніж 1, 425 00:21:43,102 --> 00:21:45,310 так там повинен бути хоча б одна людина в кімнаті. 426 00:21:45,310 --> 00:21:47,407 Поки вони введення п менше, ніж 1, 427 00:21:47,407 --> 00:21:48,990 тоді ми йдемо продовжувати здавати знову. 428 00:21:48,990 --> 00:21:50,906 Будь ласка, введіть номер людей у ​​кімнаті. 429 00:21:50,906 --> 00:21:53,550 Тепер, коли у нас є число людей в room-- 430 00:21:53,550 --> 00:21:58,020 так що я міг увійти, що 200 людина в цій кімнаті. 431 00:21:58,020 --> 00:22:05,480 Тоді тут ми прийде і оголосити масив розміром 200. 432 00:22:05,480 --> 00:22:10,220 Ми оголосивши, що це масив досить великий, щоб тримати 200 віків. 433 00:22:10,220 --> 00:22:15,370 Спускаючись, це цикл що ви отримаєте дуже звикли. 434 00:22:15,370 --> 00:22:19,490 Так перебору масиву, присвоєння кожному місцю розташування 435 00:22:19,490 --> 00:22:23,020 в цьому масиві ціле, і то в кінцевому рахунку, тут ми 436 00:22:23,020 --> 00:22:28,340 просто отримати приклад ітерації протягом цього масиву, а не присвоювати значення, 437 00:22:28,340 --> 00:22:30,150 але доступ до значень. 438 00:22:30,150 --> 00:22:33,810 >> Так тут ми бачимо, що кажуть, через рік, 439 00:22:33,810 --> 00:22:40,470 людина% я буде% I років, де перший% я це я плюс 1. 440 00:22:40,470 --> 00:22:43,010 Так я це індексна змінна. 441 00:22:43,010 --> 00:22:49,420 І другий% я маю намір бути значення зберігається в масиві віків плюс 1. 442 00:22:49,420 --> 00:22:54,217 Таким чином, це плюс 1 тільки тому, що ми saying-- це плюс 1, вік I плюс 1. 443 00:22:54,217 --> 00:22:57,050 Це плюс 1 тільки тому, що ми кажучи, через рік людини 444 00:22:57,050 --> 00:22:58,280 буде цей старий. 445 00:22:58,280 --> 00:23:01,080 >> Отже, чому це я плюс 1? 446 00:23:01,080 --> 00:23:04,064 Чому у нас є плюс 1 є? 447 00:23:04,064 --> 00:23:04,564 Так. 448 00:23:04,564 --> 00:23:07,410 449 00:23:07,410 --> 00:23:07,930 Так. 450 00:23:07,930 --> 00:23:10,510 Так що пам'ятайте, масиви дорівнюють нулю індексуються. 451 00:23:10,510 --> 00:23:14,840 Так що, якщо ми друкуємо це для хтось просто читати висновок, 452 00:23:14,840 --> 00:23:19,380 то, напевно, вони хочуть побачити щось як людину одного, людина номер один, 453 00:23:19,380 --> 00:23:21,160 буде 20 років. 454 00:23:21,160 --> 00:23:23,570 Людина номер два буде 15 років. 455 00:23:23,570 --> 00:23:27,420 Вони б не бачити обличчя номер нуль 15 років. 456 00:23:27,420 --> 00:23:36,460 >> Так компіляції це і просто подивитися, що це виглядає like-- Створити деякий простір. 457 00:23:36,460 --> 00:23:43,560 Зробити віці від компілює. 458 00:23:43,560 --> 00:23:45,080 Запуск віків. 459 00:23:45,080 --> 00:23:46,580 Ми бачимо, кількість людей у ​​кімнаті. 460 00:23:46,580 --> 00:23:48,850 Так що я буду говорити є три особи в кімнаті. 461 00:23:48,850 --> 00:23:54,000 Вік людини номер один, скажімо 15, 20, 25. 462 00:23:54,000 --> 00:23:59,680 А тепер я скажу через рік Тепер вони будуть 16, 21, 26. 463 00:23:59,680 --> 00:24:02,900 Давайте подивимося, що це працює з п, що не дорівнює 3. 464 00:24:02,900 --> 00:24:07,940 Так що, якщо я говорю, число людей 5, один, два, три, два, один, через рік 465 00:24:07,940 --> 00:24:11,170 вони будуть два, три, чотири, три, два роки. 466 00:24:11,170 --> 00:24:16,500 Так що я міг так само, як легко п 10000. 467 00:24:16,500 --> 00:24:21,270 Тепер я буду сидіти тут досить При вході у віці, але це працює. 468 00:24:21,270 --> 00:24:26,000 >> Так що тепер у пам'яті десь ми є масив розміром 10000, 469 00:24:26,000 --> 00:24:28,830 так, в кінцевому рахунку 40000 байт, тому що є 470 00:24:28,830 --> 00:24:31,222 чотири байти для кожного з цих чисел. 471 00:24:31,222 --> 00:24:33,180 Так що масив Розмір 10000, де ми можемо 472 00:24:33,180 --> 00:24:36,201 зберігати вік тих 10000 чоловік. 473 00:24:36,201 --> 00:24:36,700 Добре. 474 00:24:36,700 --> 00:24:40,070 Питання про будь-якому з цього? 475 00:24:40,070 --> 00:24:41,892 Так. 476 00:24:41,892 --> 00:24:43,350 Що робити, якщо ви дали негативне число? 477 00:24:43,350 --> 00:24:44,870 Давайте подивимося, що станеться. 478 00:24:44,870 --> 00:24:49,320 Таким чином, в даному конкретному числа case-- людей у ​​кімнаті, негативний. 479 00:24:49,320 --> 00:24:52,580 Він відхилив, що тому що тут ми, трапляється, 480 00:24:52,580 --> 00:24:57,180 щоб бути обробки той факт, що якщо п менше, ніж той, який ми збираємося ще раз запитати. 481 00:24:57,180 --> 00:25:01,780 Якщо ви спробуєте оголосити масив негативного розміру, 482 00:25:01,780 --> 00:25:03,950 це взагалі не працює. 483 00:25:03,950 --> 00:25:05,570 >> Так давайте спробуємо. 484 00:25:05,570 --> 00:25:08,000 Давайте ігнорувати всі значення вони вхід для п 485 00:25:08,000 --> 00:25:10,571 і просто сказати Int віці від негативного. 486 00:25:10,571 --> 00:25:12,410 Давайте подивимося, якщо це ще компілює. 487 00:25:12,410 --> 00:25:14,100 Я не впевнений. 488 00:25:14,100 --> 00:25:14,920 Немає. 489 00:25:14,920 --> 00:25:18,280 Так, вік оголошений як масив з негативним розміром. 490 00:25:18,280 --> 00:25:22,540 Так авансом вона визнає масив не може бути негативною розміру і відкидає його. 491 00:25:22,540 --> 00:25:26,840 Тепер, якщо ми не впоратися Це робіть щось час цикл правильно, 492 00:25:26,840 --> 00:25:28,810 якщо ми не перевіряли якщо п менше, ніж 1-- 493 00:25:28,810 --> 00:25:32,690 Скажімо, ми просто цього не було взагалі 494 00:25:32,690 --> 00:25:35,940 і замість цього ми просто захопити ціле. 495 00:25:35,940 --> 00:25:40,710 Незалежно від того, що число є, ми оголошуємо масив розміру. 496 00:25:40,710 --> 00:25:44,250 >> Таким чином, компілятор не може можливо, в даний час скаржаться. 497 00:25:44,250 --> 00:25:48,780 Якщо я скомпілювати this-- так що не можу скаржитися, 498 00:25:48,780 --> 00:25:51,480 тому що він не може знати, що я збирається ввести від'ємне число, 499 00:25:51,480 --> 00:25:52,550 які могли б бути недійсними. 500 00:25:52,550 --> 00:25:54,633 Для всіх він знає, я міг би ввести позитивне число, 501 00:25:54,633 --> 00:25:56,000 яка відмінно діє. 502 00:25:56,000 --> 00:26:01,090 Так я уявляю собі, якщо я входжу негативний 1 люди в кімнаті, помилки сегментації. 503 00:26:01,090 --> 00:26:06,040 >> Так добре. 504 00:26:06,040 --> 00:26:13,160 Так давайте додамо це назад тільки тримати його, що він спочатку був. 505 00:26:13,160 --> 00:26:15,640 Так що вік. 506 00:26:15,640 --> 00:26:18,120 Тепер, якщо я хочу, щоб спробувати негативне age-- так що давайте 507 00:26:18,120 --> 00:26:19,710 кажуть, що п'ять чоловік у кімнаті. 508 00:26:19,710 --> 00:26:23,180 Вік людини номер один негативний 4, людина трьох 509 00:26:23,180 --> 00:26:26,500 дорівнює нулю, людина three-- ОК. 510 00:26:26,500 --> 00:26:29,850 Так ось, через рік, людина число можна буде негативним 3 років. 511 00:26:29,850 --> 00:26:32,830 Так, ймовірно, не має сенсу. 512 00:26:32,830 --> 00:26:37,220 Але це тільки тому, що, дивлячись на код все, що ми робимо 513 00:26:37,220 --> 00:26:40,260 просить GetInt. 514 00:26:40,260 --> 00:26:44,110 >> Тепер, якщо ми мав Функція GetPositiveInt 515 00:26:44,110 --> 00:26:49,690 або ми просто зробили це зразок же час циклу там, 516 00:26:49,690 --> 00:26:52,340 то це буде працювати прекрасно. 517 00:26:52,340 --> 00:26:54,200 Але в даному так, ми просто не 518 00:26:54,200 --> 00:26:57,772 трапляється, обробки негативні значення. 519 00:26:57,772 --> 00:26:59,147 Будь-які інші питання про масивах? 520 00:26:59,147 --> 00:27:02,290 521 00:27:02,290 --> 00:27:03,250 ДОБРЕ. 522 00:27:03,250 --> 00:27:09,380 >> Таким чином, ми в даний час розглядається масиви. 523 00:27:09,380 --> 00:27:12,500 І ми збираємося потрібно використовувати це для аргументів командного рядка. 524 00:27:12,500 --> 00:27:14,680 Таким чином, у проблемі встановити two-- Я знаю, багато хто з вас 525 00:27:14,680 --> 00:27:18,040 може ще працювати на проблеми набору один, а проблема встановити два йде вгору. 526 00:27:18,040 --> 00:27:22,260 У проблематика два, ви збираєтеся потрібно мати справу з рядками, масивами, 527 00:27:22,260 --> 00:27:23,950 і аргументи командного рядка. 528 00:27:23,950 --> 00:27:26,270 >> Так що аргументи командного рядка? 529 00:27:26,270 --> 00:27:29,570 Тепер, ви можете побачити вниз тут трохи тизер саме те, що 530 00:27:29,570 --> 00:27:30,950 буде відбувається. 531 00:27:30,950 --> 00:27:32,950 Ми бачимо, INT основний, Inc ARGC, Рядок ARGV дужки. 532 00:27:32,950 --> 00:27:34,560 533 00:27:34,560 --> 00:27:38,130 Отже, спочатку давайте спробуємо інтерпретувати що це намагається сказати. 534 00:27:38,130 --> 00:27:40,800 Тепер, ОК. 535 00:27:40,800 --> 00:27:44,637 >> Таким чином, в командному рядку ви повинні бути звикнути до деяких з цих команд 536 00:27:44,637 --> 00:27:48,580 зараз, і ви, ймовірно, працювати CD в ​​терміналі перед. 537 00:27:48,580 --> 00:27:52,100 Так що, якщо ми говоримо кд pset1, Ви знаєте, що це повинно 538 00:27:52,100 --> 00:27:55,050 бути зміни в каталог pset1. 539 00:27:55,050 --> 00:27:59,120 >> Тепер зверніть увагу, що ви ніколи не написав програму, як це раніше. 540 00:27:59,120 --> 00:28:03,120 Кожна програма, що ви написали, Ви буде працювати, скажімо, точка слеш Маріо, 541 00:28:03,120 --> 00:28:06,779 точка слеш жадібний, а потім його може запитати у вас вхід. 542 00:28:06,779 --> 00:28:08,570 Так от, це не те, що змінити каталог робить. 543 00:28:08,570 --> 00:28:12,770 При запуску компакт-диск, він не те сказати, який каталог ви хочете, щоб CD в? 544 00:28:12,770 --> 00:28:17,200 Замість цього, ви просто говорите, CD pset1, і він просто йде в каталог pset1. 545 00:28:17,200 --> 00:28:20,430 >> Отже, подібним чином у нас є й інші приклади. 546 00:28:20,430 --> 00:28:21,540 зробити привіт. 547 00:28:21,540 --> 00:28:25,760 При запуску зробити, це не те сказати, яка програма вам хотілося б зробити? 548 00:28:25,760 --> 00:28:29,620 Ви просто говорите, на командного рядка зробити привіт. 549 00:28:29,620 --> 00:28:31,060 >> Переміщення є ще одним прикладом. 550 00:28:31,060 --> 00:28:34,840 Це той, який ми переміщення mario.c файл на один каталог. 551 00:28:34,840 --> 00:28:38,060 Так що тепер ми знаємо, в цьому прикладі ми дійсно проходить два аргументи. 552 00:28:38,060 --> 00:28:42,090 Там це mario.c в якості першого аргументу, і точка точка є другим аргументом. 553 00:28:42,090 --> 00:28:46,140 А потім, коли ви запускаєте зробити, вам бачити, що насправді довгу команду line-- 554 00:28:46,140 --> 00:28:50,580 що дуже довго команди друкується в командному рядку. 555 00:28:50,580 --> 00:28:53,590 Так що довго це command-- знаходиться в декількох хвилинах його частину, 556 00:28:53,590 --> 00:28:56,090 але тепер у нас є три Аргументи командного рядка. 557 00:28:56,090 --> 00:28:59,750 Штріхпунктір нулю, привіт, і hello.c. 558 00:28:59,750 --> 00:29:03,497 >> Таким чином, ці командного рядка аргументи, аргументи 559 00:29:03,497 --> 00:29:05,580 що ви передаєте на командного рядка так, щоб він 560 00:29:05,580 --> 00:29:08,680 не повинен бути запропоновано коли ви запустите програму. 561 00:29:08,680 --> 00:29:13,090 Це буде розчарування, якщо при Ви бігли брязкіт сказав він, "ОК, 562 00:29:13,090 --> 00:29:15,630 які program-- які Файл ви компіляції? 563 00:29:15,630 --> 00:29:17,010 Hello.c. 564 00:29:17,010 --> 00:29:19,440 Що б Ви прапори хотів ввести? тире виводу. 565 00:29:19,440 --> 00:29:21,190 Чого б ви хотіли файл буде називатися? 566 00:29:21,190 --> 00:29:21,690 Привіт. 567 00:29:21,690 --> 00:29:25,290 Ні, ви просто запустіть брязкіт тире про привіт hello.c. 568 00:29:25,290 --> 00:29:28,820 >> Так, озираючись назад на це. 569 00:29:28,820 --> 00:29:32,920 Тепер argc-- ARGC є розраховує аргумент. 570 00:29:32,920 --> 00:29:36,620 Це число командного рядка Аргументи вступила в командному рядку. 571 00:29:36,620 --> 00:29:39,720 Ну, технічно argv-- клинові виступає за вектором, 572 00:29:39,720 --> 00:29:41,460 який в основному означає масив. 573 00:29:41,460 --> 00:29:42,680 Але ви можете ігнорувати це. 574 00:29:42,680 --> 00:29:47,540 Argv-- у нас є рядок ARGV, так рядок ARGV дужки. 575 00:29:47,540 --> 00:29:50,150 Так що це ще одна форма дужки ви ще не бачили раніше. 576 00:29:50,150 --> 00:29:52,300 Таким чином, ми бачили кронштейн позначення, коли ми сказали, 577 00:29:52,300 --> 00:29:53,970 як, рядок з дорівнює Zamyla. 578 00:29:53,970 --> 00:29:56,910 з кронштейном 0 доступ до Z. символів 579 00:29:56,910 --> 00:30:00,720 >> Ми також бачили, коли дужки ми сказали INT вік дужки 5. 580 00:30:00,720 --> 00:30:03,160 Це оголошений масив розміром 5. 581 00:30:03,160 --> 00:30:06,280 Так ось версія Кронштейни ми раніше не бачили. 582 00:30:06,280 --> 00:30:09,630 Так що це свого роду рядки ARGV, що буде повністю знайомі 583 00:30:09,630 --> 00:30:12,050 що було б просто рядок. 584 00:30:12,050 --> 00:30:14,520 Тепер дужки вказують що це масив. 585 00:30:14,520 --> 00:30:19,920 Так рядок ARGV дужки кошти що ARGV масив рядків. 586 00:30:19,920 --> 00:30:22,540 Тепер технічно рядок це масив символів. 587 00:30:22,540 --> 00:30:26,400 Так це тепер масив з масиву символів. 588 00:30:26,400 --> 00:30:31,490 Але це набагато легше думати про це як просто масив рядків. 589 00:30:31,490 --> 00:30:34,900 >> Так чому може дужки бути порожнім? 590 00:30:34,900 --> 00:30:38,170 Як, чому ми не можемо говорити, Кронштейн 5, кронштейн н? 591 00:30:38,170 --> 00:30:40,700 592 00:30:40,700 --> 00:30:41,200 Так. 593 00:30:41,200 --> 00:30:43,731 594 00:30:43,731 --> 00:30:44,230 Так. 595 00:30:44,230 --> 00:30:46,396 Ми не знаємо, скільки Входи Є збирається бути. 596 00:30:46,396 --> 00:30:53,560 Так що, якщо ми подивимося на брязкіт наприклад, ми говоримо про брязкіт тире привіт hello.c. 597 00:30:53,560 --> 00:30:56,710 У даному конкретному випадку, відбудеться в три аргументи командного рядка. 598 00:30:56,710 --> 00:31:00,522 І так brackets-- ми побачимо в секунду це не буде три. 599 00:31:00,522 --> 00:31:01,730 Це технічно було б чотири. 600 00:31:01,730 --> 00:31:04,030 Але кронштейни, ми б скажімо, є три. 601 00:31:04,030 --> 00:31:08,220 Але тепер, якщо ми дивилися на ходу mario.c точка точка, дужки 602 00:31:08,220 --> 00:31:09,760 ми хотіли б поставити два в них. 603 00:31:09,760 --> 00:31:12,884 >> І є багато команд, які мати змінне число командного рядка 604 00:31:12,884 --> 00:31:13,620 аргументи. 605 00:31:13,620 --> 00:31:17,430 Так що ця версія Кронштейн позначення вказує 606 00:31:17,430 --> 00:31:20,820 що ARGV масив рядків. 607 00:31:20,820 --> 00:31:24,360 Але ми не знаємо, скільки рядки в цьому масиві. 608 00:31:24,360 --> 00:31:27,090 І, як ми знаємо, як то багато рядків в масиві? 609 00:31:27,090 --> 00:31:28,870 Ось весь сенс ARGC. 610 00:31:28,870 --> 00:31:32,300 ARGC розповідає нам, як довго ARGV є. 611 00:31:32,300 --> 00:31:36,500 >> Таким чином, остання річ, щоб тримати в розум, що, технічно, 612 00:31:36,500 --> 00:31:40,820 сама команда вважається одним з аргументів командного рядка. 613 00:31:40,820 --> 00:31:45,330 Так кд pset1, є два Аргументи командного рядка. 614 00:31:45,330 --> 00:31:50,260 Програма сама по собі, CD, а потім фактичний аргумент його частину, pset1. 615 00:31:50,260 --> 00:31:54,490 Будь-яка програма, що ви написали досі була однією командного рядка argument-- точка 616 00:31:54,490 --> 00:31:55,320 слеш Маріо. 617 00:31:55,320 --> 00:31:57,350 Це єдиний аргумент командного рядка. 618 00:31:57,350 --> 00:32:00,900 >> Так що тепер, дивлячись на брязкотом тире про привіт hello.c. 619 00:32:00,900 --> 00:32:01,905 Так що ARGC? 620 00:32:01,905 --> 00:32:05,260 621 00:32:05,260 --> 00:32:06,080 4. 622 00:32:06,080 --> 00:32:08,140 Так ARGC 4. 623 00:32:08,140 --> 00:32:12,140 Брязкіт, так ARGV кронштейн 0 брязкіт. 624 00:32:12,140 --> 00:32:15,630 ARGV кронштейн 1 тире 0. 625 00:32:15,630 --> 00:32:21,870 ARGV кронштейн 2 привіт, і ARGV кронштейн 3 hello.c. 626 00:32:21,870 --> 00:32:26,813 Отже, питання з цього, і тоді ми подивитися на деяких програмних прикладів. 627 00:32:26,813 --> 00:32:29,460 628 00:32:29,460 --> 00:32:30,480 >> ДОБРЕ. 629 00:32:30,480 --> 00:32:36,260 Таким чином, ми будемо дивитися на hello3.c. 630 00:32:36,260 --> 00:32:41,890 Таким чином, це повинно бути знайоме з один з перших прикладів гр 631 00:32:41,890 --> 00:32:45,800 ми були, де ми б просто сказати, привіт світу, але тепер це є більш загальним. 632 00:32:45,800 --> 00:32:52,300 Так от, ми говоримо привіт % S зворотний слеш н ARGV кронштейн 1. 633 00:32:52,300 --> 00:32:57,440 Notice-- так досі це є що мій шаблон файлу виглядає. 634 00:32:57,440 --> 00:33:01,800 Я був Int основний (порожнечу), і то я б зробити щось у головній функції. 635 00:33:01,800 --> 00:33:05,100 Тепер замість цього, як тільки ми починаємо справу з аргументами командного рядка, 636 00:33:05,100 --> 00:33:07,890 ми повинні констатувати інша форма основною. 637 00:33:07,890 --> 00:33:11,930 >> Так, дивлячись на hello3 знову, головним буде 638 00:33:11,930 --> 00:33:15,990 взяти два аргументи Int now-- ARGC, кількість аргументів командного рядка, 639 00:33:15,990 --> 00:33:20,970 і рядок ARGV дужках, фактичне струни вступили в командному рядку. 640 00:33:20,970 --> 00:33:26,560 Так що я збираюся змінити, що шаблон відбити цей факт. 641 00:33:26,560 --> 00:33:29,060 Тепер, коли ви пишете програма, якщо ви не 642 00:33:29,060 --> 00:33:33,720 потрібно вживати ніяких командного рядка Аргументи, а потім просто використовувати Int основний (порожнечу). 643 00:33:33,720 --> 00:33:37,070 Але тепер, коли ви пишете Програми аргумент командного рядка, які 644 00:33:37,070 --> 00:33:40,350 Ви збираєтеся робити для задачі встановити two-- так що тепер, що ви працюєте 645 00:33:40,350 --> 00:33:42,630 програми, які потрібно прийняти Аргументи командного рядка, 646 00:33:42,630 --> 00:33:45,250 Ви повинні мати основні з цієї форми. 647 00:33:45,250 --> 00:33:51,290 >> Так here-- це великий використання аргументу командного рядка. 648 00:33:51,290 --> 00:33:54,100 Так друку ARGV 1. 649 00:33:54,100 --> 00:33:59,180 ОК так що давайте скомпілювати і запустити цю програму. 650 00:33:59,180 --> 00:34:02,440 Зробити hello3. 651 00:34:02,440 --> 00:34:03,570 Компіляція. 652 00:34:03,570 --> 00:34:06,870 Точка слеш hello3. 653 00:34:06,870 --> 00:34:08,920 І скажемо, "Боб". 654 00:34:08,920 --> 00:34:10,760 Привіт Роб. 655 00:34:10,760 --> 00:34:14,940 Якщо я кажу "привіт" Марія, Марія привіт. 656 00:34:14,940 --> 00:34:15,719 Привіт Марія. 657 00:34:15,719 --> 00:34:18,639 Ханна досі говорить, "привіт Марія, "тому що я не 658 00:34:18,639 --> 00:34:21,340 робити що-небудь з нашою ARGV 2. 659 00:34:21,340 --> 00:34:22,590 ARGV 2 тепер буде "Ханна". 660 00:34:22,590 --> 00:34:25,030 ARGC б 3. 661 00:34:25,030 --> 00:34:27,735 Що робити, якщо я це зробив? 662 00:34:27,735 --> 00:34:31,980 663 00:34:31,980 --> 00:34:34,679 Так привіт нуль. 664 00:34:34,679 --> 00:34:38,760 >> Він коротко торкнувся тим, що, технічно, GetString 665 00:34:38,760 --> 00:34:42,429 може повернутися NULL, але ми отримуємо набагато більше в те, що нуль є насправді. 666 00:34:42,429 --> 00:34:47,449 Але прийняти його в якості питання Те, що, як правило, не погано. 667 00:34:47,449 --> 00:34:50,179 Ми зробили щось неправильно, якщо це друк "привіт нулю." 668 00:34:50,179 --> 00:34:52,179 І з цієї причини ми зробили то не так is-- добре, 669 00:34:52,179 --> 00:34:56,179 коли я втікав точка слеш hello3, ARGC був 1. 670 00:34:56,179 --> 00:34:59,680 Значить, довжина ARGV було 1. 671 00:34:59,680 --> 00:35:05,110 Якщо масив має довжину 1, дійсні тільки індекс дорівнює нулю. 672 00:35:05,110 --> 00:35:08,550 І ось ARGV 1 знаходиться за межами діапазон цього масиву. 673 00:35:08,550 --> 00:35:13,410 Це було схоже на раніше, коли я спробував для зберігання 6 за межами кінця масиву. 674 00:35:13,410 --> 00:35:18,100 Так що я намагаюся отримати доступ до де- за межами пунктам ARGV, 675 00:35:18,100 --> 00:35:21,340 і ми отримуємо нуль. 676 00:35:21,340 --> 00:35:24,360 >> Таким чином, краща версія це, поліпшення, 677 00:35:24,360 --> 00:35:27,010 явно перевірки ARGC. 678 00:35:27,010 --> 00:35:33,580 Так що, якщо ARGC дорівнює 2, це означає, що ми бігли щось на зразок точка слеш hello3 Роба. 679 00:35:33,580 --> 00:35:36,840 І він буде друкувати "привіт Роб." 680 00:35:36,840 --> 00:35:39,850 Якщо ARGC не дорівнює 2, то це просто буде 681 00:35:39,850 --> 00:35:42,560 ігнорувати все, що ви поклали в аргументі командного рядка 682 00:35:42,560 --> 00:35:43,960 в якості аргументів командного рядка. 683 00:35:43,960 --> 00:35:47,168 Або, якщо ви не клади на всіх, це просто хочу, щоб ігнорувати і просто сказати, 684 00:35:47,168 --> 00:35:47,960 "привіт вам." 685 00:35:47,960 --> 00:35:51,490 >> Так складанні цього. 686 00:35:51,490 --> 00:35:54,500 Зробити hello4. 687 00:35:54,500 --> 00:35:56,790 І працює hello4. 688 00:35:56,790 --> 00:36:00,010 Запуск це так, що повинно бути надруковано? 689 00:36:00,010 --> 00:36:01,330 "Привіт тобі." 690 00:36:01,330 --> 00:36:02,810 Привіт вам. 691 00:36:02,810 --> 00:36:05,870 Що про hello4 Роба? 692 00:36:05,870 --> 00:36:06,950 "Привіт Роб." 693 00:36:06,950 --> 00:36:10,580 І, нарешті, привіт Роб Марія просто "привіт Ви" знову, 694 00:36:10,580 --> 00:36:13,677 тому що ви дійсно не ввійти те, що він очікував. 695 00:36:13,677 --> 00:36:15,510 Ви ввели кілька імен ніж це могло звертатися, 696 00:36:15,510 --> 00:36:19,500 так що просто дефолт вітання ви поведінку. 697 00:36:19,500 --> 00:36:23,040 Так питання з цього приводу? 698 00:36:23,040 --> 00:36:26,290 Або аргументи командного рядка? 699 00:36:26,290 --> 00:36:28,690 >> Отже, беручи подивимося на ще пара прикладів використання 700 00:36:28,690 --> 00:36:34,230 командного рядка arguments-- в першу чергу ми ARGV тире 1 точка C. 701 00:36:34,230 --> 00:36:38,510 Тому коментарі віддати те, що ця програма повинна робити. 702 00:36:38,510 --> 00:36:42,460 Але зверніть увагу, це now-- цикл, це точно відповідає шаблону 703 00:36:42,460 --> 00:36:43,390 Я говорив раніше. 704 00:36:43,390 --> 00:36:46,240 Ми просто опинилися використовуючи ARGC замість п. 705 00:36:46,240 --> 00:36:48,880 Тепер ARGC дійсно п. 706 00:36:48,880 --> 00:36:51,260 Це довжина масиву ARGV. 707 00:36:51,260 --> 00:36:59,600 Так будуть ітерації по ARGV Масив Printf-ки кожного значення ARGV. 708 00:36:59,600 --> 00:37:04,730 >> Так що, якщо я можу зробити це. 709 00:37:04,730 --> 00:37:08,232 Зробити ARGV 1. 710 00:37:08,232 --> 00:37:09,940 Це становить. 711 00:37:09,940 --> 00:37:11,620 Точка слеш ARGV 1. 712 00:37:11,620 --> 00:37:15,530 Просто працює це, друк точка слеш ARGV 1 713 00:37:15,530 --> 00:37:18,500 так що це був єдиний командного рядка argument-- назва програми. 714 00:37:18,500 --> 00:37:22,080 Там завжди буде мірою: ARGC не може бути менше, ніж один, 715 00:37:22,080 --> 00:37:25,910 так як завжди буде, принаймні бути ім'я програми для запуску. 716 00:37:25,910 --> 00:37:32,040 Так ARGV 1 Роб друкуватиме ARGV 1 а потім на новій лінії "Боб". 717 00:37:32,040 --> 00:37:36,350 >> Таким чином, у першій ітерації з цього циклу, я це 0. 718 00:37:36,350 --> 00:37:39,090 ARGV 0 назва програми. 719 00:37:39,090 --> 00:37:40,010 Точка слеш ARGV 1. 720 00:37:40,010 --> 00:37:43,770 А потім ARGV 1 моя перша Аргумент командного рядка, який Роб. 721 00:37:43,770 --> 00:37:45,920 На даний момент, ми рівні ARGC. 722 00:37:45,920 --> 00:37:48,210 Ми вирватися з петлі, і ми зробили. 723 00:37:48,210 --> 00:37:53,940 Так що це буде працювати для будь-якого Кількість аргументів командного рядка. 724 00:37:53,940 --> 00:37:58,550 Зверніть увагу, що друкує ARGV 0, ARGV 1, 2 ARGV, ARGV 3, 4 ARGV. 725 00:37:58,550 --> 00:38:00,150 І немає ARGV 5. 726 00:38:00,150 --> 00:38:01,460 ARGC дорівнює 5. 727 00:38:01,460 --> 00:38:06,960 Таким чином, в argc-- на я дорівнює 5, ми вирватися з петлі. 728 00:38:06,960 --> 00:38:07,950 ДОБРЕ. 729 00:38:07,950 --> 00:38:11,315 Так що питання про перш ніж ми розглянемо більш складний приклад? 730 00:38:11,315 --> 00:38:14,190 731 00:38:14,190 --> 00:38:16,860 >> Так ARGV 2. 732 00:38:16,860 --> 00:38:17,830 Добре. 733 00:38:17,830 --> 00:38:20,610 Таким чином, ми як і раніше друку аргументи командного рядка. 734 00:38:20,610 --> 00:38:23,170 Але тепер у нас є помітите вкладений цикл. 735 00:38:23,170 --> 00:38:24,670 Так що це роблять? 736 00:38:24,670 --> 00:38:28,430 Таким чином, перший цикл робить саме те, що він робив раніше. 737 00:38:28,430 --> 00:38:30,950 Ми як і раніше цикл по кожен аргумент командного рядка, 738 00:38:30,950 --> 00:38:34,260 але тепер це друге loop-- ми в Також бачив щось подібне раніше. 739 00:38:34,260 --> 00:38:38,600 Коли він був перебір Zamyla роздруківки Z-A-M-Y-L-A. 740 00:38:38,600 --> 00:38:44,816 Таким чином, це другий контур для Int J дорівнює 0, п дорівнює STRLEN з ARGV кронштейна I. 741 00:38:44,816 --> 00:38:49,170 >> Так давайте спочатку думати the-- давайте йти через. 742 00:38:49,170 --> 00:38:53,560 Давайте подумаємо, що комп'ютер буде робити, якщо я побіг цю програму, як тільки точка 743 00:38:53,560 --> 00:38:56,030 скоротити ARGV тире 2. 744 00:38:56,030 --> 00:39:03,590 Так що, якщо я побіг цей код, а потім ARGC буде дорівнювати 1. 745 00:39:03,590 --> 00:39:07,050 І рядок argv-- є тільки буде один індекс в ARGV, 746 00:39:07,050 --> 00:39:12,370 і що буде дорівнює точка скоротити ARGV 2-- назва програми. 747 00:39:12,370 --> 00:39:19,170 >> ОК, так що тепер я дорівнює 0, я менше, ніж 1, я плюс плюс для INT J дорівнює 0, 748 00:39:19,170 --> 00:39:23,880 п дорівнює STRLEN з ARGV кронштейна 0, так що в перший ітерація цього циклу. ARGV 749 00:39:23,880 --> 00:39:27,250 Кронштейн 0 точка слеш ARGV 2. 750 00:39:27,250 --> 00:39:29,320 Так що довжина цього рядка? 751 00:39:29,320 --> 00:39:32,480 Ну, підсічно точка A-R-G-V тире 2. 752 00:39:32,480 --> 00:39:35,020 Так StrLen того, що буде 8. 753 00:39:35,020 --> 00:39:37,500 Так J дорівнює 0, п дорівнює 8. 754 00:39:37,500 --> 00:39:39,530 Поки J менше 8, J ++. 755 00:39:39,530 --> 00:39:44,080 І з цим ми йдемо, щоб бути друк один символ, який 756 00:39:44,080 --> 00:39:47,350 є ARGV кронштейн кронштейн я J. 757 00:39:47,350 --> 00:39:49,826 >> Таким чином, тільки я нуль. 758 00:39:49,826 --> 00:39:51,700 Ми як і раніше є тільки один аргумент командного рядка. 759 00:39:51,700 --> 00:39:53,890 У цьому першій ітерації з цикл, ми 760 00:39:53,890 --> 00:39:56,950 буде печатка ARGV кронштейн кронштейн 0 0. 761 00:39:56,950 --> 00:39:58,325 І тоді J буде збільшуватися. 762 00:39:58,325 --> 00:40:01,650 І ми збираємося друку ARGV кронштейн кронштейн 1 0. 763 00:40:01,650 --> 00:40:04,150 А потім ARGV кронштейн кронштейн 0 2. 764 00:40:04,150 --> 00:40:09,030 >> Так що це наша перша зустріч багатовимірних масивів. 765 00:40:09,030 --> 00:40:12,770 Пам'ятайте раніше, що я сказав, що ARGV технічно 766 00:40:12,770 --> 00:40:15,950 масив масивів символів. 767 00:40:15,950 --> 00:40:24,360 Так от, якщо я сказав щось на зразок Рядок з дорівнює ARGV кронштейн I, 768 00:40:24,360 --> 00:40:29,590 і тоді я сказав, з кронштейн J, це буде досягнення те ж саме. 769 00:40:29,590 --> 00:40:31,960 Тепер, ви раніше не бачив з кронштейна J. 770 00:40:31,960 --> 00:40:36,680 Ось тільки отримати доступ до J-й Характер цього рядка. 771 00:40:36,680 --> 00:40:48,010 Так з цим, ми отримання J-й характер я-я ARGV. 772 00:40:48,010 --> 00:40:51,450 >> Так що, в кінцевому рахунку це повинно вихід? 773 00:40:51,450 --> 00:40:53,210 Зробити ARGV 2. 774 00:40:53,210 --> 00:40:54,730 Це становить. 775 00:40:54,730 --> 00:40:56,340 Точка слеш ARGV 2. 776 00:40:56,340 --> 00:41:03,790 "Роб Марія Ханна", і дати нам номер. 777 00:41:03,790 --> 00:41:07,050 Таким чином, ми бачимо, що це висновок точка на своїй власній лінії і слеш 778 00:41:07,050 --> 00:41:08,920 за власною лінією і на своїй власній лінії. 779 00:41:08,920 --> 00:41:11,260 Це роздруківки друг індивідуальний характер 780 00:41:11,260 --> 00:41:12,950 кожного аргументу командного рядка. 781 00:41:12,950 --> 00:41:15,960 І тоді між ними, з цієї нової лінії 782 00:41:15,960 --> 00:41:19,380 Ми друкуємо тут, в між ними буде друкувати новий рядок. 783 00:41:19,380 --> 00:41:24,540 >> Так що це схоже на попередній ARGV тире 1, 784 00:41:24,540 --> 00:41:26,459 які друкуються кожен Аргумент командного рядка, 785 00:41:26,459 --> 00:41:28,500 але тепер ми друку аргументи командного рядка 786 00:41:28,500 --> 00:41:31,950 а потім ітерації через кожен характер кожного аргументу командного рядка 787 00:41:31,950 --> 00:41:35,400 щоб отримати цей висновок. 788 00:41:35,400 --> 00:41:36,870 ДОБРЕ? 789 00:41:36,870 --> 00:41:40,570 Так питання з цього приводу? 790 00:41:40,570 --> 00:41:45,130 >> Одна річ, щоб відзначити, що командного рядка arguments-- 791 00:41:45,130 --> 00:41:49,990 таким чином, вони розділяються пробілами, як ви, природно, очікувати, щоб вони. 792 00:41:49,990 --> 00:41:53,050 Таким чином, рядок може містити пробіли в ньому. 793 00:41:53,050 --> 00:41:57,380 Це не супер важливо, але якщо я хотів аргумент третього командного рядка 794 00:41:57,380 --> 00:42:01,226 мати місце в цьому, то я Можна сказати, що щось на зразок цього. 795 00:42:01,226 --> 00:42:04,470 796 00:42:04,470 --> 00:42:05,550 ДОБРЕ? 797 00:42:05,550 --> 00:42:12,190 Так що це ще тільки в даний час має три командного рядка arguments-- також 4. 798 00:42:12,190 --> 00:42:17,620 Точка слеш ARGV тире 2, Роб, Марія, і Ханна агентство Bloomberg. 799 00:42:17,620 --> 00:42:18,320 ДОБРЕ. 800 00:42:18,320 --> 00:42:19,310 Питання з цього приводу? 801 00:42:19,310 --> 00:42:22,700 802 00:42:22,700 --> 00:42:24,894 >> Там немає нічого особливого про прогалину. 803 00:42:24,894 --> 00:42:27,810 Це просто трапляється, що командного рядка відноситься символ пробілу 804 00:42:27,810 --> 00:42:29,226 про те, як ви розділите кожен аргумент. 805 00:42:29,226 --> 00:42:32,048 806 00:42:32,048 --> 00:42:33,000 Добре. 807 00:42:33,000 --> 00:42:39,950 Отже Проблема набір two-- ви збираєтеся бути 808 00:42:39,950 --> 00:42:43,240 дивлячись на шифрування з секретним ключем. 809 00:42:43,240 --> 00:42:47,700 Так, аналогічної тій, що, наприклад ми бачили з Різдвяна історія, 810 00:42:47,700 --> 00:42:52,840 Ви будете здійсненні деяких алгоритми, які, враховуючи повідомлення, 811 00:42:52,840 --> 00:42:55,560 Ви збираєтеся бути в змозі для шифрування, що повідомлення 812 00:42:55,560 --> 00:42:58,730 що тільки хтось з цією таємниці Ключ, з тією декодера кільця, 813 00:42:58,730 --> 00:43:01,090 повинні бути в змозі розшифрувати. 814 00:43:01,090 --> 00:43:04,839 >> Так що це стандартне видання. 815 00:43:04,839 --> 00:43:07,130 Ви будете реалізації дві різні версії. 816 00:43:07,130 --> 00:43:09,620 Якщо вам трапиться, щоб поглянути в хакер edition-- зараз, 817 00:43:09,620 --> 00:43:12,600 ми збираємося, щоб дати Ви рядок, як це, 818 00:43:12,600 --> 00:43:15,240 який являє собою зашифрований пароль. 819 00:43:15,240 --> 00:43:19,990 Так ваша мета, щоб з'ясувати, що розшифровані пароль. 820 00:43:19,990 --> 00:43:26,950 Тепер це дійсно хау паролі зберігаються в багатьох комп'ютерах, 821 00:43:26,950 --> 00:43:31,290 і він просто зберігає це випадкова послідовність символів. 822 00:43:31,290 --> 00:43:34,440 Ви повинні з'ясувати, як отримати від цієї випадкової рядки символів 823 00:43:34,440 --> 00:43:36,140 до того, що вихідний пароль був. 824 00:43:36,140 --> 00:43:39,060 825 00:43:39,060 --> 00:43:43,290 >> І, нарешті, після цього Проблема набір, ви повинні 826 00:43:43,290 --> 00:43:46,100 бути в змозі зрозуміти, що це означає. 827 00:43:46,100 --> 00:43:51,650 Таким чином, ви дізнаєтеся, як розшифрувати це свого роду випадкової рядка. 828 00:43:51,650 --> 00:43:56,390 Точно так само, якщо ви пам'ятаєте, від тижня 0, ви, можливо, бачили це URL-адресу. 829 00:43:56,390 --> 00:44:00,210 І ви повинні бути в змозі розшифрувати це в кінцевому підсумку. 830 00:44:00,210 --> 00:44:04,810 Ви не могли б бути щасливі, коли вам розшифрувати її та натисніть на посилання. 831 00:44:04,810 --> 00:44:05,700 Добре. 832 00:44:05,700 --> 00:44:06,591 Ось і все на сьогодні. 833 00:44:06,591 --> 00:44:12,095 Так бачити вас на наступному тижні! 834 00:44:12,095 --> 00:44:18,315 >> [Електронний відтворення музики] 835 00:44:18,315 --> 00:47:15,619