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 >> [АУДИО ВЫХОД] 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 Привет. 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