1 00:00:00,000 --> 00:00:10,103 2 00:00:10,103 --> 00:00:11,270 >> ZAMYLA Чан: Вітаємо по обробці вашого 3 00:00:11,270 --> 00:00:13,200 Перші пару програм C. 4 00:00:13,200 --> 00:00:16,379 Я знаю, що ваші перші кроки в C синтаксис може бути складною. 5 00:00:16,379 --> 00:00:20,060 Але запевняю вас, в кінці Звичайно, ви зможете поглянути на 6 00:00:20,060 --> 00:00:23,870 Перші пару завдань і завершити їх в лічені хвилини. 7 00:00:23,870 --> 00:00:27,830 >> Тепер, коли ви отримуєте більше знайомі з синтаксисом, давайте перейдемо до Цезаря. 8 00:00:27,830 --> 00:00:31,720 У Цезаря, користувач буде представити ціле ключ командного рядка 9 00:00:31,720 --> 00:00:35,300 аргументу, то привласнити звичайну текстове повідомлення в командному рядку. 10 00:00:35,300 --> 00:00:38,050 Після цього програма шифровки тексту та друк 11 00:00:38,050 --> 00:00:40,020 їх зашифрованого повідомлення. 12 00:00:40,020 --> 00:00:42,980 >> Шифрування для Цезаря досить просто. 13 00:00:42,980 --> 00:00:46,455 Зрушення кожен лист, в їх простого тексту, за допомогою ключа. 14 00:00:46,455 --> 00:00:49,220 В результаті, це також досить невпевнено. 15 00:00:49,220 --> 00:00:53,850 Але реалізація Цезар представить нам ASCIIMath і масивів даних 16 00:00:53,850 --> 00:00:54,460 структурами. 17 00:00:54,460 --> 00:00:57,510 Ми повернемося до більш складних шифри пізніше. 18 00:00:57,510 --> 00:01:01,680 З Цезарем ключ 2, в листі в простий текст, повинна бути представлена 19 00:01:01,680 --> 00:01:07,580 буква С в зашифрований текст, тому що C дві літери імені А. B буде 20 00:01:07,580 --> 00:01:12,450 представлена ​​D і C Е. До Наприкінці алфавіту, W являє 21 00:01:12,450 --> 00:01:18,550 представленої Y, Х на Y, Z. Але не має двох букв після нього, так 22 00:01:18,550 --> 00:01:21,070 шифри обертається навколо алфавіту. 23 00:01:21,070 --> 00:01:27,190 Y у вигляді простого тексту представляється, таким чином У зашифрованого тексту і Z Б. Це може 24 00:01:27,190 --> 00:01:32,080 Довідка для перегляду Цезаря як Cypher безперервне колесо алфавіту. 25 00:01:32,080 --> 00:01:35,760 >> Щоб зашифрувати їх текст, користувач увійде два аргументи 26 00:01:35,760 --> 00:01:37,090 в командний рядок - 27 00:01:37,090 --> 00:01:40,010 . / Цезарі подальшим ключем. 28 00:01:40,010 --> 00:01:44,710 Як завжди, ми не можемо довіряти користувачеві повністю ввести вхідні, які роблять 29 00:01:44,710 --> 00:01:45,800 сенс для нашої програми. 30 00:01:45,800 --> 00:01:50,670 Так що доведеться, щоб перевірити їх введення командного рядка. 31 00:01:50,670 --> 00:01:57,285 >> Замість використання тап_п порожнечу, ми використанням тап_п, внутр ARGC, рядки ARGV. 32 00:01:57,285 --> 00:02:01,730 Ціла мінлива являє ARGC кількість аргументів, переданих в 33 00:02:01,730 --> 00:02:02,880 в командному рядку. 34 00:02:02,880 --> 00:02:09,070 І ARGV є масивом, або думати про нього як Список, з аргументів, переданих дюйма 35 00:02:09,070 --> 00:02:12,000 >> Так що для Цезаря, як ми стверджуємо користувачів вхід? 36 00:02:12,000 --> 00:02:15,870 Ну, вони повинні бути лише введення два аргументи командного рядка - 37 00:02:15,870 --> 00:02:18,150 . / Цезар і ключ. 38 00:02:18,150 --> 00:02:22,340 Так що якщо ARGC не 2, це означає, що вони або забули ключ і просто 39 00:02:22,340 --> 00:02:27,230 введено. / Цезарем, або вони ввели кілька ключів. 40 00:02:27,230 --> 00:02:29,770 >> Якщо це так, то вам хочете роздрукувати інструкцію 41 00:02:29,770 --> 00:02:30,910 і вийти з програми. 42 00:02:30,910 --> 00:02:34,320 Їм потрібно, щоб повторити спробу з командного рядка. 43 00:02:34,320 --> 00:02:37,430 Але навіть якщо ARGC становить 2, ви будете необхідно перевірити, чи є вони 44 00:02:37,430 --> 00:02:39,100 дати вам правильний ключ. 45 00:02:39,100 --> 00:02:40,730 Для Цезаря, необхідно ціле. 46 00:02:40,730 --> 00:02:43,260 Але ARGV є масив рядків. 47 00:02:43,260 --> 00:02:46,490 Як отримати доступ до цих ключем? 48 00:02:46,490 --> 00:02:47,850 >> Побіжний погляд на масиви - 49 00:02:47,850 --> 00:02:51,410 структур даних, які тримають кілька значення того ж типу даних. 50 00:02:51,410 --> 00:02:55,350 Записи починаються з нуля індексуються, це означає, що Першим елементом є індексом нуль 51 00:02:55,350 --> 00:03:00,260 а останній елемент має індекс розміру мінус 1, де розмір кількість 52 00:03:00,260 --> 00:03:02,850 елементів у масиві. 53 00:03:02,850 --> 00:03:07,380 >> Якби я оголосив новий поштовий ящик масив рядків довжини 3, візуально, вона 54 00:03:07,380 --> 00:03:08,570 виглядає наступним чином. 55 00:03:08,570 --> 00:03:11,520 Три контейнери для струнних , Пліч-о-пліч. 56 00:03:11,520 --> 00:03:15,445 Щоб отримати доступ до будь-якого елементу, ви вводите ім'я масиву, а потім вкажемо 57 00:03:15,445 --> 00:03:18,080 індекс у квадратних дужках. 58 00:03:18,080 --> 00:03:21,610 Тут я задаю значення для кожного елемент, як я хотів би зробити з будь-яким 59 00:03:21,610 --> 00:03:24,310 іншої змінної рядок. 60 00:03:24,310 --> 00:03:29,020 >> Таким чином, щоб отримати доступ до наших аргументів командного рядка, все, що нам потрібно зробити, це отримати доступ до 61 00:03:29,020 --> 00:03:31,690 правий елемент масиву агду. 62 00:03:31,690 --> 00:03:37,360 Якщо користувач увійшов. / Стартом команди Rocket в термінал, агду 0 буде 63 00:03:37,360 --> 00:03:38,950 бути. / стартом. 64 00:03:38,950 --> 00:03:45,010 ARGV буде команди, і АРГ2 б ракети. 65 00:03:45,010 --> 00:03:47,670 >> Тепер, коли ми можемо отримати доступ до наших ключовим, нам все ще потрібно, щоб зробити 66 00:03:47,670 --> 00:03:49,040 упевнений, що це правильно. 67 00:03:49,040 --> 00:03:51,060 Нам потрібно перетворити його в ціле число. 68 00:03:51,060 --> 00:03:54,680 Але ми не можемо просто кинути, як ми зробили раніше. 69 00:03:54,680 --> 00:03:58,800 На щастя, в Y функція піклується цього для нас і навіть повертає 0 70 00:03:58,800 --> 00:04:02,110 Якщо рядок не може бути перетворена в ціле число. 71 00:04:02,110 --> 00:04:04,450 Тобі й карти в руки, хоча, чесно Користувач чому ви не будете 72 00:04:04,450 --> 00:04:06,220 дозволити програмі продовжуватися. 73 00:04:06,220 --> 00:04:10,710 Зберегти результат у Y в ціле, і у вас є свій ключ. 74 00:04:10,710 --> 00:04:12,070 Наступним важливим моментом є простим. 75 00:04:12,070 --> 00:04:15,940 Запросити у користувача їх простого тексту, який матиме строковий тип даних. 76 00:04:15,940 --> 00:04:18,339 На щастя для нас, всі введені користувачем рядка є дійсними. 77 00:04:18,339 --> 00:04:21,170 78 00:04:21,170 --> 00:04:24,760 >> Тепер у нас є всі необхідні вхідні від користувача, це час для нас 79 00:04:24,760 --> 00:04:26,520 зашифрувати своє повідомлення. 80 00:04:26,520 --> 00:04:29,200 Концепція проста Цезаря достатньо, щоб зрозуміти. 81 00:04:29,200 --> 00:04:33,750 Але яким комп'ютером знати, які листи приходять один за одним? 82 00:04:33,750 --> 00:04:36,100 >> Ось де таблиці ASCII приходить дюйма 83 00:04:36,100 --> 00:04:39,420 У кожного персонажа є ціле число пов'язаних з ним. 84 00:04:39,420 --> 00:04:41,380 Капітал складає 65 років. 85 00:04:41,380 --> 00:04:43,310 Капітал B складає 66. 86 00:04:43,310 --> 00:04:45,260 Нижній регістр становить 97. 87 00:04:45,260 --> 00:04:47,590 Рядкові B становить 98. 88 00:04:47,590 --> 00:04:50,770 Але символи не обмежуються просто алфавітному чисел. 89 00:04:50,770 --> 00:04:56,020 Наприклад, символ @ ASCII є 64 число. 90 00:04:56,020 --> 00:04:59,690 >> Перш ніж перейти до цілої рядки, давайте уявимо, що ми просто повинні перейти 91 00:04:59,690 --> 00:05:01,220 один символ. 92 00:05:01,220 --> 00:05:04,640 Ну, ми тільки хочемо зрушити фактичні Букви в звичайний текст, який не 93 00:05:04,640 --> 00:05:06,020 знаки або цифри. 94 00:05:06,020 --> 00:05:09,100 Отже, перше, що ми хочемо перевірити, чи є персонаж знаходиться в 95 00:05:09,100 --> 00:05:10,430 алфавіту. 96 00:05:10,430 --> 00:05:14,460 >> Функція ISALPHA робить це для нас і повертає логічне - 97 00:05:14,460 --> 00:05:18,570 вірно, якщо символів листі, помилкове в противному випадку. 98 00:05:18,570 --> 00:05:22,270 Два інших корисних функцій ISUPPER і IsLower, з 99 00:05:22,270 --> 00:05:23,860 пояснень імена. 100 00:05:23,860 --> 00:05:27,370 Вони виконані, якщо заданий символ це верхній або нижній регістр, 101 00:05:27,370 --> 00:05:28,740 відповідно. 102 00:05:28,740 --> 00:05:33,770 Так як вони логічні, вони Корисно використовувати в якості умов. 103 00:05:33,770 --> 00:05:38,310 >> Якщо ISALPHA повертає істину, вам потрібно перекласти цей символ ключем. 104 00:05:38,310 --> 00:05:43,750 Так давайте відкриємо для ASCIIMath і зробити деякі ASCII математику. 105 00:05:43,750 --> 00:05:48,700 Використання дуже схоже на використання для Цезаря і бере в ключ на 106 00:05:48,700 --> 00:05:50,870 командного рядка. 107 00:05:50,870 --> 00:05:59,590 >> Якщо я запускаю ASCIIMath 5, це, здається, додати 5, даючи мені Буква F, і 108 00:05:59,590 --> 00:06:01,260 відображення ASCII значення. 109 00:06:01,260 --> 00:06:04,090 Отже, давайте поглянемо на програму. 110 00:06:04,090 --> 00:06:11,820 >> Ви можете здивуватися, прямо тут, чому літера позначає ціле число, коли це 111 00:06:11,820 --> 00:06:14,330 ясно, ну, в листі. 112 00:06:14,330 --> 00:06:17,690 Виходить, що символи і цілі є взаємозамінними. 113 00:06:17,690 --> 00:06:21,730 Поміщаючи лист в одну лапки, ціле може зберігати 114 00:06:21,730 --> 00:06:25,390 ASCII вартості капіталу А. Однак будьте обережні. 115 00:06:25,390 --> 00:06:27,150 Вам потрібно одному одязі. 116 00:06:27,150 --> 00:06:31,260 Без однієї лапки, компілятор буде шукати змінну 117 00:06:31,260 --> 00:06:35,510 імені, а не характер. 118 00:06:35,510 --> 00:06:42,140 >> Потім я додаю лист і ключ, зберігання Сума в цілочисельне результат змінних. 119 00:06:42,140 --> 00:06:47,740 Навіть якщо результат має тип даних ціле, мій Е оператор використовує 120 00:06:47,740 --> 00:06:50,370 % З заповнювач для символів. 121 00:06:50,370 --> 00:06:54,530 Таким чином, програма друкує характеру пов'язані з цілочисельний результат. 122 00:06:54,530 --> 00:07:00,400 І так як ми надрукували ціле формі, а також використання% D, ми бачимо, 123 00:07:00,400 --> 00:07:02,110 числа, а також. 124 00:07:02,110 --> 00:07:04,450 Отже, тепер ви бачите, що ми лікування і символи 125 00:07:04,450 --> 00:07:06,980 цілі числа, і навпаки. 126 00:07:06,980 --> 00:07:12,205 >> Давайте перевіримо ASCIIMath з декількох більше разів з використанням 25 в якості ключа. 127 00:07:12,205 --> 00:07:15,510 128 00:07:15,510 --> 00:07:17,090 Ми отримуємо листи р. 129 00:07:17,090 --> 00:07:19,750 Зараз ми намагаємося 26. 130 00:07:19,750 --> 00:07:25,600 Ми хочемо отримати лист, але Замість цього ми отримуємо ліву дужку. 131 00:07:25,600 --> 00:07:29,490 Так, очевидно, просто додавши Ключ до листа не робитиме. 132 00:07:29,490 --> 00:07:32,780 Ми повинні з'ясувати формулу, щоб обернути по всьому алфавітом, як і наші 133 00:07:32,780 --> 00:07:34,570 Наприклад, на початку зробив. 134 00:07:34,570 --> 00:07:38,520 >> Формула для Цезаря зсув полягає в наступному. 135 00:07:38,520 --> 00:07:42,750 C дорівнює P Плюс до модуля 26. 136 00:07:42,750 --> 00:07:46,040 Пам'ятайте, що за модулем є корисним операція, яка дає нам залишок 137 00:07:46,040 --> 00:07:49,880 ділення одного числа на інше. 138 00:07:49,880 --> 00:07:54,870 Давайте застосуємо цю формулу до рівнині Текст листа з ключем 2. 139 00:07:54,870 --> 00:08:01,810 ASCII значення у 89, яка дає нам 91 по модулю 26, 140 00:08:01,810 --> 00:08:03,690 яких дорівнює 13 - 141 00:08:03,690 --> 00:08:08,740 безумовно не ASCII значення а, який 67. 142 00:08:08,740 --> 00:08:12,810 >> Гумор мені тепер і відійти від ASCII значення алфавітний покажчик 143 00:08:12,810 --> 00:08:18,690 де дорівнює нулю, а Z 25, це означає, що Y дорівнює 24. 144 00:08:18,690 --> 00:08:25,830 24 плюс 2, за модулем 6, дає нам 26, 26 по модулю, 0, який є 145 00:08:25,830 --> 00:08:28,170 алфавітний покажчик. 146 00:08:28,170 --> 00:08:32,980 Так що ця формула, здається, відноситься до алфавітний покажчик і букви 147 00:08:32,980 --> 00:08:34,960 Чи не його значення ASCII. 148 00:08:34,960 --> 00:08:37,630 >> Але ви починаєте з ASCII значень. 149 00:08:37,630 --> 00:08:41,650 І, щоб надрукувати символ зашифрованого тексту, Ви повинні будете його ASCII значення, а також. 150 00:08:41,650 --> 00:08:46,400 Тобі й карти в руки, то, щоб з'ясувати, Як перемикатися. 151 00:08:46,400 --> 00:08:49,850 >> Після того як ви з'ясувати правильну формулу за одним персонажем, все, що вам потрібно зробити, 152 00:08:49,850 --> 00:08:53,520 це застосувати таку ж формулу, щоб кожен Лист в простій текст - 153 00:08:53,520 --> 00:08:57,720 тільки якщо ця буква алфавітного, звичайно. 154 00:08:57,720 --> 00:09:02,360 І пам'ятайте, що вам необхідно зберегти випадку, верхня або нижня, ось де 155 00:09:02,360 --> 00:09:06,890 ISUPPER і IsLower функцій згадувалося раніше знадобиться. 156 00:09:06,890 --> 00:09:08,830 Можливо, вам доведеться дві формули - 157 00:09:08,830 --> 00:09:11,680 один для великих літер і один в нижньому регістрі. 158 00:09:11,680 --> 00:09:18,420 Так ISUPPER IsLower допоможе вам визначити, якою формулою застосувати. 159 00:09:18,420 --> 00:09:22,460 >> Як Ви застосовуєте вашу формулу для кожного одного символу в рядку? 160 00:09:22,460 --> 00:09:25,910 Ну, просто рядок масив символів. 161 00:09:25,910 --> 00:09:31,150 Таким чином, ви можете отримати доступ кожен знак угруповання за кожному символу в 162 00:09:31,150 --> 00:09:33,450 рядок у циклі. 163 00:09:33,450 --> 00:09:37,550 Що стосується стану вашого цикл, Функція StrLen, для струнного 164 00:09:37,550 --> 00:09:39,280 довжини, згодиться. 165 00:09:39,280 --> 00:09:44,020 Вона займає в рядку в якості вхідних і повертає довжину цього рядка. 166 00:09:44,020 --> 00:09:49,250 Переконайтеся, що включає в себе право бібліотеку використовувати функцію довжину рядка. 167 00:09:49,250 --> 00:09:51,790 >> І у вас є зашифрований текст. 168 00:09:51,790 --> 00:09:53,260 Мене звуть Zamyla. 169 00:09:53,260 --> 00:09:54,510 І [говорить CODE]. 170 00:09:54,510 --> 00:10:02,944