рувати, цей текст присвоюється змінної
CryptStr . У даної функції створені такі внутрішні змінні необхідні для її роботи:
В· змінні s , s 1 - строкового типу. У змінну s 1 буде записуватися результат роботи. Мінлива s буде містити в собі значення першого символу рядка CryptStr
В· змінні i , rez - цілого типу. Мінлива i необхідна для роботи циклу. Мінлива rez буде містити числове значення символу знаходиться в s .
Перемінної s 1 присвоюємо пусте значення. Створюємо цикл від 1 до кількості символів в тексті міститься в змінної CryptStr (це значення ми отримаємо виконавши команду length ( CryptStr ) ). Далі в циклі текст В«розбираєтьсяВ» на символи і кожен символ командою ORD переводиться в його числовий код при цьому до отриманого числа додається алгебраїчна сума числових кодів символів ключа (ця сума повертається при виклику функції Password ), отримане значення присвоюється змінній rez . Потім отримані числові значення переводяться в символьні командою STR і складаються, при цьому між значеннями вставляються прогалини (це необхідно для того, щоб дешифратор по пробілам міг відокремити числа, інакше він прийняв би їх за одне велике число).
FUNCTION Crypt (CryptStr: string): string;
VAR s, s1: string;
i, rez: integer;
BEGIN
s1: ='';
for i: = 1 to length (CryptStr) do
begin
s: = CryptStr;
s: = copy (s, 1,1);
CryptStr: = copy (CryptStr, 2, length (CryptStr) -1);
rez: = ord (s [1]) + Password (PassW);
str (rez, s);
s1: = s1 + s + '';
end;
delete (s1, length (s1), 1);
Crypt: = s1;
END;
Функція Decrypt ( FUNCTION Decrypt ( DecryptStr : string ): string ; ): функція для дешифрування тексту. При виклику цієї функції їй передається зашифрований текст, який необхідно розшифрувати, цей текст записується в змінну DecryptStr . У даній функції створені такі внутрішні змінні необхідні для її роботи:
В· змінні Xpos , i , v , e - цілого типу. Мінлива Xpos буде містити в собі позицію пропусків. Мінлива i необхідна для роботи циклу. Змінні v і e необхідні для роботи з оператором VAL (даний оператор перетворює символ в число)
В· змінні Code , s 1 - строкового типу. Мінлива s 1 буде містити результат роботи. Мінлива Code буде містити значення першого числа витягнутого з змінної DecryptStr .
Створимо цикл розміром від 1 до кількості символів у змінній DecryptStr (це значення ми отримаємо виконавши команду length ( DecryptStr ) ). Далі в циклі з отриманого зашифрованого тексту В«висмикуютьсяВ» числа розділені пропусками і переводяться в числові значення за допомогою команди VAL потім від них віднімається алгебраїчна сума числових кодів символів ключа (ця сума повертається при виклику функції Password ), потім отримані значення перетворюються командою CHR в символьні і складаються. Отриманий результат повертається функцією Decrypt . br/>
FUNCTION Decrypt (DecryptStr: string): string;
VAR Xpos, i, v, e: integer;
Code, s1: string;
BEGIN
s1: ='';
for i: = 1 to length (DecryptStr) do
begin
xpos: = pos (' ', DecryptStr);
if xpos <= 0 then
begin
val (DecryptStr, v, e);
s1: = s1 + chr (v-password (PassW));
Decrypt: = s1;
exit;
end;
code: = copy (DecryptStr, 1, xpos-1);
val (code, v, e);
s1: = s1 + chr (v-password (PassW));
delete (DecryptStr, 1, xpos);
end;
Decrypt: = s1;
END;
Для спрощення роботи з програмою кінцевого користувача були створені такі процедури:
PROCEDURE Menu - процедура, що виводить на екран основне меню програми. Меню організовано за допомогою операторів writeln , readln і містить наступні пункти:
1. Шифрувати текст
2. Дешифрувати текст
3. Вихід
PROCEDURE Menu;
...