Федеральноеагентство по образованию Российской Федерации
Государственноеобразовательное учреждение высшего профессионального образования
«Южно-Уральскийгосударственный университет»
Факультет«Приборостроительный»
Кафедра«Электронные вычислительные машины»
ПОЯСНИТЕЛЬНАЯЗАПИСКА
К КУРСОВОЙРАБОТЕ
«Программированиена языках высокого уровня»
Автор проекта
студент группы
Валимухамматов Рустам Римович
Челябинск 2010г.
Содержание
1. Описание применения
1.1 Описание задачи и метода ее решения
1.2 Входные и выходные данные
2. Описание программы
2.1 Структура программы
2.2 Структуры используемых данных
2.3 Схема алгоритма
2.4.Текст программы
2.5 Порядок ввода исходных данных иописание получаемых результатов
2.6 Описание тестовых заданий и анализправильности функционирования
3. Литература
1. Описание применения
1.1 Описание задачи иметода ее решения
Составить программу наязыке Turbo Pascal для шифрования данных с помощью шифра Тритемиуса(расширениекода Цезаря).Выглядит это так.
Буквы алфавитанумеруются. Затем ключевое слово циклически накладывается на кодируемый текст.Кодовая буква получается как остаток от деления суммы номера буквы кодируемоготекста и ключевого слова на число 31 например (ключевое слово bc)
ab c d e f
k00 01 02 03 04 05
bc b c b c
1 01 02 01 02 01 02
m0103 03 05 05 07
kkb dd ff h
Таким образом кодоваякомбинация получается bddffh.
Ниже приведена таблицаномеров букв:
A– 00; N – 13;
B– 01; O – 14;
C– 02; P – 15;
D– 03; Q – 16;
E– 04; R – 17;
F– 05; S – 18;
G– 06; T – 19;
H– 07; U – 20;
I– 08; V – 21;
J– 09; W – 22;
K– 10; X– 23;
L– 11; Y– 24 ;
M– 12; Z– 25;
1.2 Входные и выходныеданные
На вход программеподается ключевое слово. Затем задается текст для шифрования(дешифрования, взависимости от выбранного меню) вручную, либо указанием имени файла с текстом.Минимальная длина текст и ключевого слово – 1 символ. Максимальная длинаключевого слово – 15 символов, максимальная длина текста, заданного вручную, – 230символов(при чтении из файла ограничений нету).
На выход программавыдает шифрованный (дешифрованный) текст.
2. Описание программы
2.1 Структура программы
Программа организованацельным текстом, пошагово. Язык интерфейса – английский.
Программа выполняетследующие действия:
-строит графическоеоформление;
-предлагает меню из 3-хпунктов;
-после захода в подменюзапрашивает ключевое слово(всегда, в независимости от выбранного меню);
-запрашивает текст для(де)шифрования (либо просит ввести имя файла, если чтение происходит оттуда);
-выдает (де)шифрованныйтекст(либо также исходный, если чтение из файла);
-предлагает продолжить (де)шифрование,либо вернуться в главное меню.
2.2 Структурыиспользуемых данных
mas=array[1..15]of string-массив, куда заносятся символы ключевого слова:
mas1=array[1..230] ofstring — массив строковоготипа для введенного текста
с, с1 — переменныесимвольного типа для считывания с клавиатуры символов(либо из файла);;
keyword,text,otvet,imyafaila – переменные строковоготипа; в них заносится ключевое слово, текст для шифрования, получившийся(де)шифрованный текст, и имя файла для дальнейшей работы с ним;
h,probel,enter –переменные логического типа, используемые для различных проверок на вводеданных;
kk-переменная используется для построения (де)шифрованного текста
f,f2,f3 — файлысимвольного типа для сохранения(считывания)данных
function proverka — функция для проверки вводимого текста. Становится равной trueесли вводимый символ буква;
function shifr — функция шифрования. В качестве аргумента выступает переменная строкового типа,но, так как, в программе заранее задается что эта переменная будет длиною водин символ, функция сначала переводит переменную в символьный тип, затемиспользуется порядковый номер символа в таблице ASCIIдля шифрования;
function deshifr — функциядешифрования. Используется также порядковый номер символа в таблице ASCII;
backspace -функциякорректировки вводимых данных, стирает последний вводимый символ.
2.3Схемаалгоритма
/>/>
2.4Текстпрограммы
programkursach;
usescrt;
typemas=array[1..15] of string;
mas1=array[1..230]of string;
functionproverka(q:char):boolean;
begin
if((ord(q)>=65) and (ord(q)=97)) and((ord(q)
or(q=#27) or (q=#13) or(q=’.’) then proverka:=true else proverka:=false;
end;
functionproverka1(q1:char):boolean;
begin
if((ord(q1)90) and (ord(q1)122))then proverka1:=false;
end;
functionshifr(y1:string):integer;
vary2:array[1..2] of string;y:char;
begin
y2[1]:=y1;
y:=y2[1][1];
if((ord(y)>=65)and(ord(y)
thenshifr:=(ord(y)-65) else
if((ord(y)>=97)and(ord(y)
thenshifr:=(ord(y)-97)
end;
functiondeshifr(z:integer):char;
begin
deshifr:=(chr(z+97));
end;
procedurebackspace(var s21:string);
vari1:integer;s31:string;
begin
iflength(s21)0 then begin
gotoXY(whereX-1,whereY);
write(”);
gotoXY(whereX-1,whereY);
s31:=”;
fori1:=1 to (length(s21)-1) do s31:=s31+s21[i1];
s21:=s31;
end;
end;
procedureprobel1(i2:integer);
vari3:integer;
begin
fori3:=1 to i2 do write(‘ ‘);
end;
vara,c,c1,z,vixod:char;keyword1:mas;
text1:mas1;
s,keyword,text,otvet,imyafaila:string;
i,k,l,o,j,d,sdvig,u:integer;h,probel,enter,t,y,p,result:boolean;
kk:char;m,q:integer;
f,f2,f3:fileof char;
begin
clrscr;
textattr:=116;
fori:=1 to 80 do write(‘=’);
window(1,0,1,7);
fori:=1 to 6 do writeln(‘*’);
window(1,8,80,9);
fori:=1 to 80 do write(‘=’);
window(80,2,80,8);
fori:=1 to 6 do write (‘*’);
textattr:=3;
window(20,3,80,5);
write(‘Work for programming on high-level languages’);
window(25,5,80,6);
write(‘Encryption based on Tritemius code’);
textattr:=6;
window(44,7,80,8);
write(‘Made by Valimyxammatov Rustam,PS-197’);
window(5,9,80,25);
sdvig:=0;
textattr:=7;
repeat
clrscr;
probel1(28);writeln(‘MainMenu.Press:’);
probel1(5);writeln(‘1- for encryption’);
probel1(5);writeln(‘2- for decryption’);
probel1(5);write(‘0- for exit’);
repeat
a:=readkey;{запрашиваем выбор меню}
until(a=’0′) or (a=’1′) or (a=’2′) or (a=’3′);
if(a=’1′) then
begin
clrscr;
repeat
ifc=#13 then clrscr;
textattr:=7;
probel1(10);Writeln(‘Encryptiontext (for return in maimmenu press )’);
repeat
Writeln(‘Pleaseenter keyword for encryption(min length-1 symbol,max length-15)’);
l:=0;j:=0;keyword:=”;h:=true;enter:=true;probel:=true;{запрашиваем ключевое слово, начинаем посимвольно считывать}
c:=readkey;write(c);l:=1;otvet:=”;
iford(c)27then {если первый символ не клавиша Esc}
iford(c)=13 then begin enter:=false;writeln(‘Keyword is not entered.Pleaseenter’);end else
begin
keyword:=keyword+c;h:=proverka1(c);
repeat
c:=readkey;if(proverka(c)=true) then begin
ifc=#8 then backspace(keyword) else write(c);
if((c#8) and (c’ ‘) and (ord(c)13) and(ord(c)27)) then {игнорируемпроблелы}
begin
keyword:=keyword+c;
l:=l+1;
end;
end;
until(ord(c)=13) or (ord(c)=27) or (l=16); {продолжаемвводпоканенажатEnter}
iford(c)27 then begin
if(keyword=’ ‘) then begin probel:=false;writeln(‘Keyword is not entered.Pleaseenter’);end;
if(h=false) then
begin
write(‘Youenter invalid keyword with numeral.Press and try again’);
readln;
end;
if(l=16) then
begin
write(‘Exceededthe maximum length of string.Press ‘);
repeat
c:=readkey;
until(c=#13);
end;
end;
end;
until((probel)and(h)and(enter)) or (c=#27); {проверяемправильностьввода, есливерновыходимизцикла}
if(probel)and(h)and(enter) and (c#27) then begin
writeln;
writeln(‘Press for enter text manually or for encrypt fron the file’);
repeat{предлагаемработу с файлом или вручную}
z:=readkey;
until(z=’f’)or(z=’m’)or(z=#27);
if(z#27) then begin
ifz=’m’ then begin
Writeln(‘Pleaseenter the text to encrypt(min length-1 symbols,max length-230)’);
Repeat{есливыбран режим ввода вручную, запрашиваем текст для шифрования}
l:=0;j:=0;text:=”;h:=true;enter:=true;probel:=true;
c:=readkey;write(c);l:=1;
iford(c)27 then
iford(c)=13 then begin enter:=false;writeln(‘Text is not entered.Pleaseenter’);end else
begin
text:=text+c;h:=proverka1(c);
repeat
c:=readkey;if(proverka(c)=true) then begin
ifc=#8 then backspace(text) else write(c);
if((c#8) and (c’ ‘) and (ord(c)13) and(ord(c)27)) then
begin
text:=text+c;
l:=l+1;
end;
end;
until(ord(c)=13) or (ord(c)=27) or (l=231);
iford(c)27 then begin
if(text=’ ‘) then begin probel:=false;writeln(‘Text is not entered.Pleaseenter’);end;
if(h=false) then
begin
write(‘Youenter invalid text with numeral.Press and try again’);
readln;
end;
if(l=231) then
begin
write(‘Exceededthe maximum length of string.Press ‘);
repeat
c:=readkey;
until(c=#13);
end;
end;
end;
until((probel)and(h)and(enter))or (c=#27); {проверки аналогичныепроверкамключевогослова}
if(probel)and(h)and(enter)and(text”)and(keyword”)and(c#27)then
begin
fori:= 1 to length(keyword) do
keyword1[i]:=copy(keyword,i,1);
fori:= 1 tolength(text)do {переводимключевое слово и текст в массивы}
text1[i]:=copy(text,i,1);
q:=1;
fori:=1 to length(text) do
begin
m:=(((shifr(text1[i]))+(shifr(keyword1[q])))mod31);
kk:=deshifr(m);
otvet:=otvet+kk;
q:=q+1;
ifq=(length(keyword)+1) then q:=1;
end;{шифруемтекст}
writeln;
writeln(‘Encryptedtext:’,otvet);
write(‘Saveencrypted text in fail?(y-yes,n-now)’); {предлагаемсохранитьшифрованныйтекствфайл}
repeat
z:=readkey;
until(z=’y’)or(z=’Y’)or(z=’n’)or(z=’N’);
if(z=’y’)or(z=’Y’) then begin
writeln(‘Enterthe name of the file’); {если нажатопросимввестиимяфайла}
repeat
l:=0;j:=0;imyafaila:=”;h:=true;enter:=true;probel:=true;result:=true;
c1:=readkey;write(c1);l:=1;
iford(c1)27 then
iford(c1)=13 then begin enter:=false;writeln(‘Filename is not entered.Pleaseenter’);end else
begin
imyafaila:=imyafaila+c1;h:=proverka1(c1);
repeat
c1:=readkey;if(proverka(c1)=true) then begin
ifc1=#8 then backspace(imyafaila) else write(c1);
if((c1#8) and (c1′ ‘) and (ord(c1)13) and(ord(c1)27)) then
begin
imyafaila:=imyafaila+c1;
l:=l+1;
end;
end;
until(ord(c1)=13) or (ord(c1)=27) or (l=50);
iford(c1)27 then begin
if(imyafaila=’ ‘) then begin probel:=false;writeln(‘Filename is not entered.Pleaseenter’);end;
if(h=false) then
begin
write(‘Youenter invalid filename with numeral.Press and try again’);
readln;
end;
if(l=50) then
begin
write(‘Exceededthe maximum length of string.Press ‘);
repeat
c1:=readkey;
until(c1=#13);
end;
end;
end;
until((probel)and(h)and(enter)and(result)) or (c1=#27);
assign(f,imyafaila);
{$I-}
reset(f);
{$I+}
result:=IOResult=0;
ifnot result then rewrite(f) else begin reset(f);if filesize(f)0 thenrepeat read(f,c);until(EOF(f));end; {еслифайлсуществуетперемещаемкурсорвконецфайла, либосоздаемновыйфайл}
fori:=1 to length(otvet) do
write(f,otvet[i]);{записываем данные}
close(f);
end;
writeln;
writeln(‘Press for continue encryption or for exit’);{предлагаемпродолжитьшифрование}
repeat
c:=readkey;
until(c=#13)or (c=#27);
end;
end;
if(z=’f’)then {есливыбрана работа с файлами вручную предлагается ввести имя файла; вводпродолжается до тех пор, пока не будет найден файл с правильным именем}
begin
repeat
clrscr;
probel1(10);Writeln(‘Encryptiontext (for return in maimmenu press )’);
writeln(‘Enterthe name of the file’);
repeat
l:=0;j:=0;imyafaila:=”;h:=true;enter:=true;probel:=true;result:=true;
c1:=readkey;write(c1);l:=1;
iford(c1)27 then
iford(c1)=13 then begin enter:=false;writeln(‘Filename is not entered.Pleaseenter’);end else
begin
imyafaila:=imyafaila+c1;h:=proverka1(c1);
repeat
c1:=readkey;if(proverka(c1)=true) then begin
ifc1=#8 then backspace(imyafaila) else write(c1);
if((c1#8) and (c1′ ‘) and (ord(c1)13) and(ord(c1)27)) then
begin
imyafaila:=imyafaila+c1;
l:=l+1;
end;
end;
until(ord(c1)=13) or (ord(c1)=27) or (l=50);
iford(c1)27 then begin
if(imyafaila=’ ‘) then begin probel:=false;writeln(‘Filename is notentered.Please enter’);end;
if(h=false) then
begin
write(‘Youenter invalid filename with numeral.Press and try again’);
readln;
end;
if(l=50) then
begin
write(‘Exceededthe maximum length of string.Press ‘);
repeat
c1:=readkey;
until(c1=#13);
end;
assign(f,imyafaila);
{$I-}
reset(f);
{$I+}
result:=IOResult=0;
ifnot result then begin writeln(‘File not found.Try again’);result:=false;end
elseclose(f);
end;
end;
until((probel)and(h)and(enter)and(result)) or (c1=#27);
if(result) and (c1#27) then
begin
fori:= 1 to length(keyword) do
keyword1[i]:=copy(keyword,i,1);
assign(f2,’laba2.txt’);
rewrite(f2);
reset(f);
repeat
read(f,c1);
if((ord(c1)>=65)and(ord(c1)=97)and(ord(c1)
write(f2,c1);{проверяем данные из файла, считываем только кириллицу, заносим во второй файл }
untilEOF(f);
close(f);
close(f2);
reset(f2);
assign(f3,’laba3.txt’);
rewrite(f3);
q:=1;
repeat
read(f2,c1);
m:=(((shifr(c1))+(shifr(keyword1[q])))mod31);
kk:=deshifr(m);
write(f3,kk);
q:=q+1;
ifq=(length(keyword)+1) then q:=1;
until(EOF(f2));{шифруем и заносим данные в третий файл}
close(f2);
close(f3);
reset(f2);
reset(f3);
write(‘Textfor encrypt:’);
repeatread(f2,c1);write(c1) until(EOF(f2));
writeln;
write(‘Encryptedtext:’);
repeatread(f3,c1);write(c1) until(EOF(f3));
writeln;
write(‘Press for continue encryption or for exit’);
repeat
c1:=readkey;{предлагается продолжить шифрование}
until(c1=#13)or(c1=#27);
end;
until(c1=#27);
end;
end;
end;
until(c=#27);
end;
if(a=’2′) thenbegin {действиявторого подменю аналогичны действиям первого подменю}
clrscr;
repeat
ifc=#13 then clrscr;
textattr:=7;
probel1(10);Writeln(‘Decryptiontext (for return in maimmenu press )’);
repeat
Writeln(‘Pleaseenter keyword for decryption(min length-1 symbol,max length-15)’);
l:=0;j:=0;keyword:=”;h:=true;enter:=true;probel:=true;
c:=readkey;write(c);l:=1;otvet:=”;
iford(c)27 then
iford(c)=13 then begin enter:=false;writeln(‘Keyword is not entered.Pleaseenter’);end else
begin
keyword:=keyword+c;h:=proverka1(c);
repeat
c:=readkey;if(proverka(c)=true) then begin
ifc=#8 then backspace(keyword) else write(c);
if((c#8) and (c’ ‘) and (ord(c)13) and(ord(c)27)) then
begin
keyword:=keyword+c;
l:=l+1;
end;
end;
until(ord(c)=13) or (ord(c)=27) or (l=16);
iford(c)27 then begin
if(keyword=’ ‘) then begin probel:=false;writeln(‘Keyword is not entered.Pleaseenter’);end;
if(h=false) then
begin
write(‘Youenter invalid keyword with numeral.Press and try again’);
readln;
end;
if(l=16) then
begin
write(‘Exceededthe maximum length of string.Press ‘);
repeat
c:=readkey;
until(c=#13);
end;
end;
end;
until((probel)and(h)and(enter)) or (c=#27);
if(probel)and(h)and(enter) and (c#27) then begin
writeln;
writeln(‘Press for enter text manually or for encrypt fron the file’);
repeat
z:=readkey;
until(z=’f’)or(z=’m’)or(z=#27);
if(z#27) then begin
ifz=’m’ then begin
Writeln(‘Pleaseenter the text to decrypt(min length-1 symbols,max length-230)’);
repeat
l:=0;j:=0;text:=”;h:=true;enter:=true;probel:=true;
c:=readkey;write(c);l:=1;
iford(c)27 then
iford(c)=13 then begin enter:=false;writeln(‘Text is not entered.Pleaseenter’);end else
begin
text:=text+c;h:=proverka1(c);
repeat
c:=readkey;if(proverka(c)=true) then begin
ifc=#8 then backspace(text) else write(c);
if((c#8) and (c’ ‘) and (ord(c)13) and(ord(c)27)) then
begin
text:=text+c;
l:=l+1;
end;
end;
until(ord(c)=13) or (ord(c)=27) or (l=231);
iford(c)27 then begin
if(text=’ ‘) then begin probel:=false;writeln(‘Text is not entered.Pleaseenter’);end;
if(h=false) then
begin
write(‘Youenter invalid text with numeral.Press and try again’);
readln;
end;
if(l=231) then
begin
write(‘Exceededthe maximum length of string.Press ‘);
repeat
c:=readkey;
until(c=#13);
end;
end;
end;
until((probel)and(h)and(enter))or (c=#27);
if(probel)and(h)and(enter)and(text”)and(keyword”)and(c#27)then
begin
fori:= 1 to length(keyword) do
keyword1[i]:=copy(keyword,i,1);
fori:= 1 to length(text) do
text1[i]:=copy(text,i,1);
q:=1;
fori:=1 to length(text) do
begin
if(((shifr(text1[i]))-(shifr(keyword1[q])))>=0) then
m:=(((shifr(text1[i]))-(shifr(keyword1[q])))mod31)
elsem:=(((shifr(text1[i]))-(shifr(keyword1[q])))+31);
kk:=deshifr(m);
otvet:=otvet+kk;
q:=q+1;
ifq=(length(keyword)+1) then q:=1;
end;
writeln;
writeln(‘Decryptedtext:’,otvet);
writeln(‘Saveencrypted text in fail?(y-yes,n-now)’);
repeat
z:=readkey;
until(z=’y’)or(z=’Y’)or(z=’n’)or(z=’N’);
if(z=’y’)or(z=’Y’) then begin
writeln(‘Enterthe name of the file’);
repeat
l:=0;j:=0;imyafaila:=”;h:=true;enter:=true;probel:=true;result:=true;
c1:=readkey;write(c1);l:=1;
iford(c1)27 then
iford(c1)=13 then begin enter:=false;writeln(‘Filename is not entered.Pleaseenter’);end else
begin
imyafaila:=imyafaila+c1;h:=proverka1(c1);
repeat
c1:=readkey;if(proverka(c1)=true) then begin
ifc1=#8 then backspace(imyafaila) else write(c1);
if((c1#8) and (c1′ ‘) and (ord(c1)13) and(ord(c1)27)) then
begin
imyafaila:=imyafaila+c1;
l:=l+1;
end;
end;
until(ord(c1)=13) or (ord(c1)=27) or (l=50);
iford(c1)27 then begin
if(imyafaila=’ ‘) then begin probel:=false;writeln(‘Filename is notentered.Please enter’);end;
if(h=false) then
begin
write(‘Youenter invalid filename with numeral.Press and try again’);
readln;
end;
if(l=50) then
begin
write(‘Exceededthe maximum length of string.Press ‘);
repeat
c1:=readkey;
until(c1=#13);
end;
end;
end;
until((probel)and(h)and(enter)and(result)) or (c1=#27);
assign(f,imyafaila);
{$I-}
reset(f);
{$I+}
result:=IOResult=0;
ifnot result then rewrite(f) else begin reset(f);if filesize(f)0 thenrepeat read(f,c);until(EOF(f));end;
fori:=1 to length(otvet) do
write(f,otvet[i]);
close(f);
end;
write(‘Press for continue decryption or for exit’);
repeat
c:=readkey;
until(c=#13)or (c=#27);
end;
end;
if(z=’f’) then
begin
repeat
clrscr;
probel1(10);Writeln(‘Decryptiontext (for return in maimmenu press )’);
writeln(‘Enterthe name of the file’);
repeat
l:=0;j:=0;imyafaila:=”;h:=true;enter:=true;probel:=true;result:=true;
c1:=readkey;write(c1);l:=1;
iford(c1)27 then
iford(c1)=13 then begin enter:=false;writeln(‘Filename is not entered.Pleaseenter’);end else
begin
imyafaila:=imyafaila+c1;h:=proverka1(c1);
repeat
c1:=readkey;if(proverka(c1)=true) then begin
ifc1=#8 then backspace(imyafaila) else write(c1);
if((c1#8) and (c1′ ‘) and (ord(c1)13) and(ord(c1)27)) then
begin
imyafaila:=imyafaila+c1;
l:=l+1;
end;
end;
until(ord(c1)=13) or (ord(c1)=27) or (l=50);
iford(c1)27 then begin
if(imyafaila=’ ‘) then begin probel:=false;writeln(‘Filename is notentered.Please enter’);end;
if(h=false) then
begin
write(‘Youenter invalid filename with numeral.Press and try again’);
readln;
end;
if(l=50) then
begin
write(‘Exceededthe maximum length of string.Press ‘);
repeat
c1:=readkey;
until(c1=#13);
end;
assign(f,imyafaila);
{$I-}
reset(f);
{$I+}
result:=IOResult=0;
ifnot result then begin writeln(‘File not found.Try again’);result:=false;end
elseclose(f);
end;
end;
until((probel)and(h)and(enter)and(result)) or (c1=#27);
if(result) and (c1#27) then
begin
fori:= 1 to length(keyword) do
keyword1[i]:=copy(keyword,i,1);
assign(f2,’laba2.txt’);
rewrite(f2);
reset(f);
repeat
read(f,c1);
if((ord(c1)>=65)and(ord(c1)=97)and(ord(c1)
write(f2,c1);
untilEOF(f);
close(f);
close(f2);
reset(f2);
assign(f3,’laba3.txt’);
rewrite(f3);
q:=1;
repeat
read(f2,c1);
if(((shifr(c1))-(shifr(keyword1[q])))>=0) then
m:=(((shifr(c1))-(shifr(keyword1[q])))mod31)
elsem:=(((shifr(text1[i]))-(shifr(keyword1[q])))+31);
kk:=deshifr(m);
write(f3,kk);
q:=q+1;
ifq=(length(keyword)+1) then q:=1;
until(EOF(f2));
close(f2);
close(f3);
reset(f2);
reset(f3);
write(‘Textfor decrypt:’);
repeatread(f2,c1);write(c1) until(EOF(f2));
writeln;
write(‘Decryptedtext:’);
repeatread(f3,c1);write(c1) until(EOF(f3));
writeln;
write(‘Press for continue decryption or for exit’);
repeat
c1:=readkey;
until(c1=#13)or(c1=#27);
end;
until(c1=#27);
end;
end;
end;
until(c=#27);
end;
until(a=’0′);
end.
2.5 Порядок вводаисходных данных и описание получаемых результатов
-программа выдает менюпользователю;
-после входа в менюшифровки(дешифровки) запрашивает ключевое слово для шифрования, длина которогоне должна быть превышать 15 символов;
-если слово не введено- выдает соответствующее сообщение и просит ввести его;
-если длина ключевогослова не соответствует условию, программа выдает соответствующее сообщение ипросит ввести заново;
-программа игнорируетввод цифр, то есть цифры не отображаются и не заносятся в память, не даваяпользователю тем самым ошибиться;
-программа пропускаетпробелы до и после слова и не считывает их, ввод продолжается до нажатия либо до отмены с помощью ;
-после программа проситвыбрать режим работы с текстом – вручную или из файла;
-если выбран режимввода вручную просит ввести текст, длина которого не должна превышать 230символов;
-проверка ввода текстатакая же, как у ключевого слова;
-если выбрана работа сфайлами просит ввести имя файла;
-после в обоих случаяхвыдает шифрованный текст;
-для выхода в основноеменю предлагается нажать , дляпродолжения работы в подменю – , длявыхода из программы предлагается нажать .
2.6 Описание тестовыхзаданий и анализ правильности функционирования
/>
Рис.1 Начальное окно
/>
Рис. 2 Подменюшифровки. После ввода ключевого слова предлагается два режима ввода текста — вручную либо из файла
/>
Рис.2.1Примершифрования вручную
/>
Рис.2.2 Пример шифрованияиз файла( файл содержит комбинацию ab_c1d2ef)
/>
Рис.3.1.Менюдешифровки. Пример ввода вручную. Из рис 2.1 следует что шифрование произведеноправильно
/>
Рис.3.2.Примердешифрования из файла. (файл содержит комбинацию b_d1d2f3fh ) Из рис 2.2следует что дешифрование произведено правильно
3. Литература
1 Прайс Д. Программирование на языкеПаскаль: Практическое руководство. Перевод с англ.-М:.Мир,1987.-232с.;
2. Фаронов В.В. Ф24 Турбо Паскаль(в 3-хэкземплярах).Кн.3.Практика программирования. Часть 1.-М.: Учебно-инженерныйцентр «МВТУ – ФЕС ТО ДИДАКТИК»,1993.-238с.
3. Перминов О.Н. Программирование наязыке Паскаль. – М.: Радио и связь,1989.-224 с. 128 с.
4. Грогоно П. Программирование на языкеПаскаль: Пер. с англ./Под ред. Д.Б. Подшивалова. – М.: Мир, 1985. – 392 с.