Глава II
Разработка моделей шифратора и дешифратора в среде ООП Delphi
Второй частью моей работы является Разработка моделей шифратора и дешифратора в среде ООП Delphi. Главной целью моей работы являлось создание и исследование моделей шифратора и дешифратора. Однако, выполняя свою работу, я столкнулся с некоторыми проблемами. Например, мне пришлось самостоятельно изучить материал 11 класса, а так же дополнительные возможности среды ООП Delphi.
Я выбрал для создания и изучения модели шифратора 94 и дешифратора 3 8, так как они являются наиболее популярными в наше время (например, используются для шифрирования/дешифрирования сигналов в микрокалькуляторах), и в тоже время, не очень просты для изучения.
Для создания модели я выбрал программу Borland Delphi 6 по следующим причинам:
1). Эта среда ООП позволяет создать наиболее четкие и понятные модели кодировщика и декодировщика;
2). При создании моделей я мог использовать знания, полученные в десятом классе, тем самым практикуя свой навык написания программ.
Перед тем, как перейти непосредственно к написанию программ, я нарисовал блок-схемы, максимально четко иллюстрирующие алгоритм работы шифратора и дешифратора (См. Прил.1).
Далее я приступил к созданию программ. Для начала мне необходимо было создать удобные и понятные формы программ. Для этого мне понадобились такие компоненты Delphi, как:
1). Button – кнопка, после нажатия на которую совершается какое-либо действие;
2). Label – метка, неактивное текстовое поле;
3). Edit – поле, в которое вводятся и выводятся данные;
4). Shape – фигура. С помощью компонента Shape я рисовал линии, а так же отмечал те места, где происходят какие-либо действия;
5). Main menu – своеобразное «меню», с помощью которого я создал инструкции по использованию программ;
6). Memo – текстовое поле для ввода данных построчно.
У меня получились следующие формы: Рис. 1. Готовая форма программы-кодировщика.
Рис. 2. Готовая форма программы-декодировщика.
Далее я приступил к написанию программного кода. Ниже я опишу программный код кнопки «Запуск» в обеих моделях.
1). Шифратор.
Сначала из полей ввода единичных сигналов (поля x1-x9) считывается введенное число – 0 или 1. Далее программа определяет, какое число было введено, и на основании этого присваивает логической ячейке свое значение – «истинно», если была введена единица, или «ложно», если был введен нуль. К каждому полю ввода и вывода привязана своя логическая ячейка.
Затем программа с помощью формул для вычисления суммы двоичных чисел для шифратора производит операции с логическими переменными. В логические ячейки, относящиеся к полям вывода, записывается результат, получившийся после выполнения логических операций – «истинно» или «ложно».
После этого, программа определяет, какой результат был записан в логические ячейки, относящиеся к полям вывода информации, и затем выводит соответствующий результат – 1, если значение логической ячейки «истинно», или 0, если значение логической ячейки «ложно», в поля y0-y3. 2).Дешифратор Из полей ввода двоичного кода (x1-x3) считывается введенное число – 0 или 1. Далее программа определяет, какое число было введено, и на основании этого присваивает логической ячейке свое значение – «истинно», если была введена единица, или «ложно», если был введен нуль. К каждому полю ввода и вывода привязана своя логическая ячейка.
После этого, программа определяет, какой результат был записан в логические ячейки, относящиеся к полям вывода информации, и затем выводит соответствующий результат – 1, если значение логической ячейки «истинно», или 0, если значение логической ячейки «ложно», в поля z0-z7.
Кнопки «Выход» в обеих случаях закрывают программы, а при нажатии на кнопку «Инструкция», программа выводит инструкцию по пользованию.
Программный код кодировщика и декодировщика я показал в приложении 2. В результате я получил программы, результаты работы которых совпадают с таблицей в первой главе. Ниже я привел некоторые результаты работы шифратора (рис. 4 - 13) и дешифратора (рис. 13 – 21) Полученные в результате работы программ результаты сошлись с данными таблиц в первой части.
Рис. 4. Результаты работы шифратора.
Рис. 5. Результаты работы шифратора.
Рис. 6. Результаты работы шифратора.
Рис. 7. Результаты работы шифратора.
Рис. 8. Результаты работы шифратора.
Рис. 9. Результаты работы шифратора.
Рис. 10. Результаты работы шифратора.
Рис. 11. Результаты работы шифратора.
Рис. 12. Результаты работы шифратора.
Рис. 13. Результаты работы шифратора.
Рис. 14. Результаты работы дешифратора.
Рис. 15. Результаты работы дешифратора
Рис. 16. Результаты работы дешифратора.
Рис. 17. Результаты работы дешифратора.
Рис. 18. Результаты работы дешифратора.
Рис. 19. Результаты работы дешифратора.
Рис. 20. Результаты работы дешифратора.
Рис. 21. Результаты работы дешифратора.
Заключение
В ходе моего исследования я достиг своей главной цели, а именно создал и изучил модели шифратора и дешифратора в среде ООП Delphi.
Так же, я выполнил все поставленные в начале исследования задачи:
1). Изучил литературу по некоторым разделам алгебры логики, логическим элементам компьютера;
2). Построил компьютерные модели в среде объектно-ориентированного программирования Delphi;
3). Провел компьютерный эксперимент, проанализировал полученные результаты;
4). Написал отчет о проделанной работе. Данные модели шифратора и дешифратора можно использовать при изучении в 11 классе такого раздела информатики, как «Логические схемы компьютера».
Литература
Угринович Н.Д. Исследование информационных моделей. Элективный курс: Учебное пособие / Н.Д. Угринович. - 2-е изд., испр. и доп. - М.: БИНОМ. Лаборатория знаний, 2006. - 200 с.: ил.
Энциклопедия физики и техники. http://femto.com.ua/articles/part_1/1975.html.
Угринович Н.Д. Информатика и Икт. Профильный уровень: Учебник для 10 класса / Н.Д. Угринович. - 7-е изд. - М.: БИНОМ. Лаборатория знаний, 2011. - 387 с. : ил.
Галисеев Г.В. Программирование в среде Delphi 7. Самоучитель. : - М. : Издательский дом «Вильямс», 2003. – 288 с. : ил.
Приложение
Прил.1
Блок-схема шифратора 94:
Блок-схема дешифратора 38:
Прил.2
Программный код шифратора 94:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, Menus;
type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Edit5: TEdit;
Edit6: TEdit;
Edit7: TEdit;
Edit8: TEdit;
Edit9: TEdit;
Edit10: TEdit;
Shape1: TShape;
Shape2: TShape;
Shape3: TShape;
Shape4: TShape;
Shape5: TShape;
Shape6: TShape;
Shape7: TShape;
Shape8: TShape;
Shape9: TShape;
Edit11: TEdit;
Edit12: TEdit;
Edit13: TEdit;
Shape10: TShape;
Shape11: TShape;
Shape12: TShape;
Shape13: TShape;
Shape14: TShape;
Shape15: TShape;
Shape16: TShape;
Shape17: TShape;
Shape18: TShape;
Shape19: TShape;
Shape20: TShape;
Shape21: TShape;
Shape22: TShape;
Shape23: TShape;
Shape24: TShape;
Button1: TButton;
Label1: TLabel;
MainMenu1: TMainMenu;
N1: TMenuItem;
Shape25: TShape;
Shape26: TShape;
Shape27: TShape;
Shape28: TShape;
Shape29: TShape;
Shape30: TShape;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
Label11: TLabel;
Label12: TLabel;
Label13: TLabel;
Label14: TLabel;
Button2: TButton;
Memo1: TMemo;
Shape31: TShape;
Shape32: TShape;
Shape33: TShape;
Shape34: TShape;
Shape35: TShape;
Shape36: TShape;
Shape37: TShape;
Shape38: TShape;
Shape39: TShape;
Shape40: TShape;
Shape41: TShape;
Shape42: TShape;
Shape43: TShape;
procedure Button1Click(Sender: TObject);
procedure N1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
a,aa,aaa,aaaa,aaaaa,aaaaaa,aaaaaaa,aaaaaaaa,aaaaaaaaa,pro111,pro222,pro333,pro444:string;
a1,aa1,aaa1,aaaa1,aaaaa1,aaaaaa1,aaaaaaa1,aaaaaaaa1,aaaaaaaaa1,pro11,pro22,pro33,pro44:integer;
a2,aa2,aaa2,aaaa2,aaaaa2,aaaaaa2,aaaaaaa2,aaaaaaaa2,aaaaaaaaa2,pro1,pro2,pro3,pro4:boolean;
implementation
uses Unit2;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
a:=edit1.Text;
aa:=edit2.Text;
aaa:=edit3.Text;
aaaa:=edit4.Text;
aaaaa:=edit5.Text;
aaaaaa:=edit6.Text;
aaaaaaa:=edit7.text;
aaaaaaaa:=edit8.Text;
aaaaaaaaa:=edit9.text;
a1:=strtoint(a);
aa1:=strtoint(aa);
aaa1:=strtoint(aaa);
aaaa1:=strtoint(aaaa);
aaaaa1:=strtoint(aaaaa);
aaaaaa1:=strtoint(aaaaaa);
aaaaaaa1:=strtoint(aaaaaaa);
aaaaaaaa1:=strtoint(aaaaaaaa);
aaaaaaaaa1:=strtoint(aaaaaaaaa);
a2:=boolean(a1);
aa2:=boolean(aa1);
aaa2:=boolean(aaa1);
aaaa2:=boolean(aaaa1);
aaaaa2:=boolean(aaaaa1);
aaaaaa2:=boolean(aaaaaa1);
aaaaaaa2:=boolean(aaaaaaa1);
aaaaaaaa2:=boolean(aaaaaaaa1);
aaaaaaaaa2:=boolean(aaaaaaaaa1);
pro1:=a2 or aaa2 or aaaaa2 or aaaaaaa2 or aaaaaaaaa2;
pro11:=integer(pro1);
pro111:=inttostr(pro11);
edit10.Text:=pro111;
pro2:=aa2 or aaa2 or aaaaaa2 or aaaaaaa2;
pro22:=integer(pro2);
pro222:=inttostr(pro22);
edit11.Text:=pro222;
pro3:=aaaa2 or aaaaa2 or aaaaaa2 or aaaaaaa2;
pro33:=integer(pro3);
pro333:=inttostr(pro33);
edit12.Text:=pro333;
pro4:=aaaaaaaa2 or aaaaaaaaa2;
pro44:=integer(pro4);
pro444:=inttostr(pro44);
edit13.Text:=pro444;
end;
procedure TForm1.N1Click(Sender: TObject);
begin
form2.show;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
form1.Close;
form2.close;
end;
end.
Программный код дешифратора 38:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, Menus;
type
TForm1 = class(TForm)
Shape1: TShape;
Shape2: TShape;
Shape3: TShape;
Shape4: TShape;
Shape5: TShape;
Shape6: TShape;
Shape7: TShape;
Shape8: TShape;
Label1: TLabel;
Label2: TLabel;
Button1: TButton;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Edit5: TEdit;
Edit6: TEdit;
Edit7: TEdit;
Edit8: TEdit;
Edit9: TEdit;
|