>> ZAMYLA CHAN: Поздравления за завършване на Вашия
Първите няколко програми C.
Знам, че си първият набег в C синтаксис може да бъде трудна.
Но уверявам ви, в края на Разбира се, вие ще бъдете в състояние да погледнем в
първите няколко задачи и ги завършат в минута.
>> Сега, след като сте се все по-запознати със синтаксис, нека да стигнем до Цезар.
В Caesar, потребителят ще представя число ключ като командния ред
аргумент, а след това въведете обикновена текстово съобщение в командния ред.
Програмата след това ще пиша с шифър на текст и печат
им ciphertext съобщение.
>> The кодиране за Caesar е съвсем проста.
Shift всяко писмо, в тяхната обикновен текст, от ключово значение.
В резултат на това, тя също е доста несигурни.
Но за прилагане на Цезар ще въведе ни да ASCIIMath и масив данни
конструкции.
Ще стигнем и до по-сложни шифри късно.
С Caesar ключ на две, буквата A в текст щеше да бъде представляван от
буквата C в ciphertext защото C е две букви след A. B ще бъде
представлявано от D и C от E. Към края на азбука, W е
представлявано от Y и X от Z. Но Y не разполага с две букви след него, така че
на шифри обгръща азбука.
Y в обикновен текст по този начин е представена от A в ciphertext и Z от Б. Той може
помогне да видите Caesar Cypher като непрекъснат азбука колело.
>> За да си пиша с шифър текст, потребителят ще влезе два аргумента
в командния ред -
. / Цезар, последван от ключ.
Както винаги, ние не можем да се доверим на потребителя напълно да въведете вход, който да
чувство за нашата програма.
Така че ние ще трябва да заверят въвеждане на команди.
>> Вместо да използвате вътр основната невалидни, ние сме използване на вътр главната, вътр argc, низ ARGV.
The целочислена променлива argc представлява броя на аргументите, подадени в
командния ред.
И ARGV е масив, или мислите за него като списък на доводите преминал инча
>> Така че за Цезар, как да валидира на потребителя вход?
Е, те трябва да се въвеждане два аргумента от командния ред -
. / Цезар и ключ.
Така че, ако argc не е 2, това означава, че те или забравили ключов и просто
влезе. / Цезар, или те вписват множество ключове.
>> Ако случаят е такъв, тогава ще искате да отпечатате инструкции
и спиране на програмата.
Те ще трябва да опитате отново от командния ред.
Но дори и ако argc е 2, ще Трябва да се провери дали те
ще ви даде валиден ключ.
За Caesar, трябва да е цяло число.
Но ARGV е масив от низове.
Как да получите достъп до този ключ?
>> Един бърз поглед към масиви -
структури от данни, които съдържат множество стойностите на един и същ тип данни.
Записите са нулеви индексирана, което означава, че първият елемент е индексът нула
и последния елемент е с индекс размер минус 1, когато е размерът на броя
елементи в масива.
>> Ако бях обявена нова пощенска кутия низ масив с дължина 3, визуално, това
изглежда така.
Три контейнери за струни , Рамо до рамо.
За достъп до всеки елемент, пък объркате фонетична на масива и след това посочете
индекса в квадратни скоби.
Ето, аз съм определянето на стойност на всяка елемент, точно както аз бих направил с всеки
друг низ променлива.
>> Така че, за да получите достъп до нашите аргументи на командния ред, всичко, което трябва да направите, е достъп
правото елемент на масива ARGV.
Ако потребителят е въвел. / Изстрелване Team Rocket в терминала, ARGV 0 Желаете
бъде. / изстрелване.
ARGV ще бъде отбора, и arg2 ще бъде ракета.
>> Сега, че ние може да влезете в нашия ключ, ние все още трябва да се направи
уверите, че това е правилно.
Ние трябва да го превърне в цяло число.
Но ние не можем просто да хвърли като ние сме направили преди това.
За щастие, A до Y функция се грижи на това за нас и дори връща 0
Ако низ не могат да бъдат превърнати в цяло число.
Това е до вас, все пак, да се каже ръководство защо няма да го направиш
оставите програмата да продължи.
Съхранявайте резултат от А до Y в цяло число, и там имате ключ.
Следващата част е проста.
Напомни на потребителя за обикновена им текст, което да е тип данни низ.
За наше щастие, всички потребителски въведени низове са валидни.
>> Сега, когато имаме всички необходими вход от страна на потребителя, че е време за нас да
шифроване тяхното послание.
Концепцията на Цезар е проста достатъчно, за да се разбере.
Но как вашия компютър знае кои писма дойде след един на друг?
>> Ето къде ASCII таблицата идва инча
Всеки знак е цяло число номер, свързан с него.
Capital A е 65.
Capital B е 66.
Малки букви а е 97.
Малки букви б е 98.
Но героите не са ограничени да само буквени номера.
Например, символът @ е ASCII номер 64.
>> Преди да се занимава с целия низ, нека си представим, че ние просто трябва да се смени
един символ.
Е, ние само искаме да измести действителното буквите в текст, без
символи или цифри.
Така че първото нещо, което ще искате да провери, е дали характерът е в
азбуката.
>> Функцията isalpha прави това за ни и връща булева -
вярно, ако героите е писмо, фалшиви, ако по друг начин.
Две други полезни функции isupper и islower, с
подразбиращи се имена.
Те се връщат вярно, ако даден герой е главна или малка буква,
съответно.
Тъй като те са Булев тип, те са полезно да се използва като условия.
>> Ако isalpha връща истина, ще трябва да се смени този характер от ключа.
Така че нека да се отвори към ASCIIMath и се направят някои ASCII математика.
Използването е много подобен на използването за Цезар и отнема по ключова в
командния ред.
>> Ако аз тичам ASCIIMath 5, изглежда, за да добавите 5 до, че ми даде писмо е, и
показване на ASCII стойност.
Така че нека да погледнем на програмата.
>> Може би се чудите, точно тук, защо писмо е цяло число, когато е
Ясно е, добре, писмо.
Оказва се, че героите и числа са взаимозаменяеми.
С въвеждането на буквата А в едно кавички, числото може да съхранява
на ASCII стойността на капитала A. Бъдете внимателни, все пак.
Вие се нуждаете от единични дрехи.
Без кавичките, на Компилаторът ще изглежда за променлива
име А, а не характер.
>> После добавете писмо и ключ, съхраняване на Сумата в Int резултат променливи.
Въпреки, че е резултат от тип данни цяло число, ми ФОРМАТ изявление използва
% В контейнер за героите.
Така програмата отпечатва характер свързани с цяло число резултат.
И тъй като ние отпечатани на цяло число форма, както и използване на% D, ние виждаме
броят, както добре.
Така че сега можете да видите, че ние лечение на героите и
цели числа, както и обратното.
>> Нека тестът ASCIIMath няколко повече пъти с по 25 като ключов.
Ние получаваме буквата Z.
Сега ние се опитваме 26.
Искаме да получите писмо с, но вместо това ние се наляво скоба.
Така че, очевидно, просто добавяне на Ключът към писмото няма да правя.
Трябва да се намери формула да приключи около азбуката, нашия
Например в началото направих.
>> А формулата за Цезар промяна е, както следва.
С равен стр. плюс к модул 26.
Не забравяйте, че по модул е ​​полезен операция, която ни дава остатъка
за разделяне на един номер от друг.
Да приложим тази формула в равнината Текст писмо с ключ на две.
The ASCII стойността на у е 89, което ни дава 91 по модул 26,
което се равнява на 13 -
определено не е ASCII стойност на, което е 67.
>> Хумор мен сега и да се премести далеч от ASCII стойности на индекс азбучен
където А е равна на нула и Z е 25, което означава, че Y е 24.
24 плюс 2, по модул 6, ни дава 26, модул 26, 0, който е
азбучен индекс на.
Така че тази формула изглежда да се прилагат за азбучен ред от писмото и
не си ASCII стойност.
>> Но започнете с ASCII стойности.
И за да отпечатате характер ciphertext, ще трябва си ASCII стойност, както добре.
Това е до вас, тогава, за да разбера как да преминете напред и назад.
>> След като сте наясно с правилната формула за един знак, всичко, което трябва да направите,
се прилага същата формула на всеки писмо в обикновен текст -
само ако това писмо е азбучен, разбира се.
И не забравяйте, че трябва да се запази случай, горната или долната, това е, когато
на isUpper и функции isLower споменато по-рано, ще дойде по-удобно.
Може да имате две формули -
един за главни букви и един за малки.
Така isUpper на isLower ще ви помогне определи коя формула да се прилагат.
>> Как се прилага формулата за всеки един символ в низ?
Е, низ е просто масив от знаци.
Така че можете да получите достъп до всеки знак от групиране над всеки знак в
низ в за линия.
Що се отнася до състоянието на Вашето линия, функцията strlen, за струнен
дължина, ще дойде по-удобно.
Отнема в низ като вход и връща дължината на тази поредица.
Уверете се, че да включва правото библиотека За да използвате функцията дължина низ.
>> И там ли си ciphertext.
Моето име е Zamyla.
И [ГОВОРЕНЕ CODE].