ROB: Здравейте, аз съм Роб, и нека да се разчете програмата Vigenere. Така че първото нещо, което трябва да направите, е да уверите, че потребителят е въвел това, което очаквахме тях, за да в командния ред. Така че, ако argc не е 2, което означава или потребителят не влиза в низ WE Искам да се използва като наш криптиране низ, или те въвели прекалено много неща. И ние не знаем какво да правим с другите неща. Така че ние да им кажа това, което те трябва да сте въвели. И ние се върне. Сега, като се предполага, че argc е 2, ние можем продължи с останалата част от програмата. Ние Alias ​​името на ARGV [1] в променливата дума. Така че ние не трябва да се използвайте ARGV име [1] по време на останалата част от програмата. И може би ние няма да забравя това, което това означава, че и така нататък. Ключова дума е много по-хубаво име. И ние веднага ще вземете дължината на нашата дума тук. ОК, така че сега искаме да се провери дали нашата дума е действително валидна. Ключовата дума ние използваме, за да кодира низове просто трябва да бъде азбучен символа. Ако потребителят е въвел небуквен символи, трябва да кажем, ключова дума трябва да съдържа само чрез Z и след това се върнете. Така че това за цикъл повтаря над всички символи на нашата дума, проверка че ако един не е азбучен тогава ние трябва да отпечатате това предупреждение. Сега, след като стигнем до този момент, ние знаем, че низа трябва да бъде вярна. Ключовата дума трябва да бъде вярна. И сега ние трябва да получите съобщение от на потребителя, че те ни искат да криптирате с тази ключова фраза. Така че, за да получите това съобщение, ние имаме правя, докато линия, която ще непрекъснато се получи низ от потребителя докато не въведете валиден низ. Продължавайки, ние виждаме тук на тази променлива, Int nun_letters_seen. Ще видим защо се нуждаем от че в секунда. Но това за линия ще обхождане от I е равна на 0 по целия път до аз е равно на N, което означава, че ние сме итерации над всичко възможно герои в нашето послание. Защото ние искаме да криптира цялата героите в нашето послание. Така че забележите правим, ако (isalphamessage [I], защото ние не искаме да криптирате символи, които не са по азбучен ред. Ако има символи, пространства, или номера, ние не правим искате да криптирате тези. Сега се предполага, че е азбучен, ние първо искам да разбера това, което ние всъщност искате да криптирате съобщението използвате. Така че това, което искам да кажа с това? Да предположим, че ключовата фраза потребителят е въвел беше ABC. Това е, което ние използваме, за да кодира. Сега, наивно, ние смятаме, че означава, че ние искаме да криптирате първия знак на нашето послание с 0, тъй като средство завъртане на характер от 0. Искаме да криптирате втория знак с 1, трето характер с 2, четвъртия знак от 0, на петия от 1, шестият от две, и така нататък. Но не забравяйте, че ние искаме да пропуснете пространства и символи и цифри. Това означава, че ако потребителят е въведена здравей свят, тъй като посланието че те искат да бъдат криптирани, тогава ние искаме да криптирате ч от 0 съответстваща на А, Е от 1, в л. с 2, на L от 0, о с 1. Искаме да пропуснете пространството, криптирана на вата от 2, о от 0, 1, 2, 0. Така че забележите, ако не бяхме пропуснали пространство, а след това щяхме да криптира на ват от 0 и завърши с неправилно низ. ОК, това е, което ние се нуждаем от променливата num_letters_seen за. Ако бяхме просто ще криптира с помощта на Този метод, който не пропуснете символи, интервали и числа, тогава ние може просто да използвате променливата аз като това, което да индекс в нашия ключова фраза с. Трябва да използваме num_letters_seen да запазите следите на действителното място в ключова фраза, която ние искаме да се индексират. Така че тук, ако ключовата дума, която имаме, ако num_letter_seen мод keyword_length, така Защо ние трябва да моден с дължина на ключова дума? Е, здравей свят е един добър пример. Ако ключовата дума е ABC, а след това ние се нуждаем непрекъснато да криптирате от тогава б след това в, след това увийте около обратно, A, B, C, A, B, C. Така че ние трябва да моден по дължина дума , за да приключи обратно наоколо. Така че, ако това е главна буква, След това ние искаме да криптирате от Комисията позиция на това писмо в азбуката, която получаваме от просто изваждане от капитала A. И По същия начин, за малки букви, ние може да получи ключа, който ние искаме от изваждане от малки букви а. Така че, независимо от това дали буквата в ключовата фраза беше капитал или малка буква, ние ще криптира със същата сума. Сега, че ние имаме ключ, ще видите тук, че ако посланието ми е главна характер, а след това ние искаме да се изчисли позиция в азбуката на тази характер, да добавите нашия ключ към него, увийте обратно наоколо, така че ако мина покрай една Я да се върнем към а, б, в, и така нататък. След това, най-накрая, добавете обратно на капитала А. Така ние се премести в [? Ascii?] диапазон на тези символи, вместо на числова позиция в азбуката на тези герои. И ние правим едно и също нещо за малки букви. Освен искаме да извадим от малки букви А и да го добавите отново в на край, малки букви а. Забележете, че num_letter_seen е само увеличава, ако съобщение бях азбучен. Това е как да пропуснем пространства, символи и числа в нашата ключова фраза, тъй като num_letter_seen е това, което ние използваме да индекс в нашата ключова дума. И накрая, в края на краищата, сега това съобщение аз е криптирана, ние отпечатате съобщение аз. И това е всичко. Моето име е Роб. И това е Vigenere. [За възпроизвеждане на музика]