1 00:00:00,000 --> 00:00:10,103 2 00:00:10,103 --> 00:00:11,270 >> ZAMYLA CHAN: Поздравления за завършване на Вашия 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 В Caesar, потребителят ще представя число ключ като командния ред 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 им ciphertext съобщение. 12 00:00:40,020 --> 00:00:42,980 >> The кодиране за Caesar е съвсем проста. 13 00:00:42,980 --> 00:00:46,455 Shift всяко писмо, в тяхната обикновен текст, от ключово значение. 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 С Caesar ключ на две, буквата A в текст щеше да бъде представляван от 19 00:01:01,680 --> 00:01:07,580 буквата C в ciphertext защото C е две букви след A. B ще бъде 20 00:01:07,580 --> 00:01:12,450 представлявано от D и C от E. Към края на азбука, W е 21 00:01:12,450 --> 00:01:18,550 представлявано от Y и X от Z. Но Y не разполага с две букви след него, така че 22 00:01:18,550 --> 00:01:21,070 на шифри обгръща азбука. 23 00:01:21,070 --> 00:01:27,190 Y в обикновен текст по този начин е представена от A в ciphertext и Z от Б. Той може 24 00:01:27,190 --> 00:01:32,080 помогне да видите Caesar 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 The целочислена променлива 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 За Caesar, трябва да е цяло число. 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 правото елемент на масива ARGV. 62 00:03:31,690 --> 00:03:37,360 Ако потребителят е въвел. / Изстрелване Team Rocket в терминала, ARGV 0 Желаете 63 00:03:37,360 --> 00:03:38,950 бъде. / изстрелване. 64 00:03:38,950 --> 00:03:45,010 ARGV ще бъде отбора, и arg2 ще бъде ракета. 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 За щастие, A до 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 Capital A е 65. 85 00:04:41,380 --> 00:04:43,310 Capital B е 66. 86 00:04:43,310 --> 00:04:45,260 Малки букви а е 97. 87 00:04:45,260 --> 00:04:47,590 Малки букви б е 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 до, че ми даде писмо е, и 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 стойността на капитала A. Бъдете внимателни, все пак. 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 >> После добавете писмо и ключ, съхраняване на Сумата в Int резултат променливи. 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 Ние получаваме буквата Z. 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 С равен стр. плюс к модул 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 Да приложим тази формула в равнината Текст писмо с ключ на две. 139 00:07:54,870 --> 00:08:01,810 The 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 И за да отпечатате характер ciphertext, ще трябва си 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 >> И там ли си ciphertext. 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