2) Для реализации интерфейса необходимо иметь цветной монитор с адаптером не ниже VGA.
3) RAM не ниже 8MB.
4) Windows 95/98/NT
8.1. Инструкция пользователю.
В программе разработан интерфейс, подходящий под стандарты. Интерфейс реализован в графическом режиме. Меню горизонтальное, с выпадающими окнами. Главное окно программы изображено на рис.. Приложения 2.
Главное меню программы содержит следующие пункты:
1. О программе - дана краткая аннотация выполненной программы.
2. Работа - содержит подменю с пунктами:
1. Ввод - позволяет пользователю ввод соответствующих данных. Здесь предусмотрена защита от некорректного ввода. В этом пункте можно ввести любую информационную комбинацию.
2. Вывод - выполняется алгоритм построения образующей матрицы, с последующем выводом ее на экран.
3. Выход - обеспечивает выход из программы. Используется защита от случайного выхода.
Пункты меню активизируются нажатием клавиши <Enter>.
При появления каждого окна в строке статуса появляется сообщение о возможных действиях.
Передвижение по меню осуществляется клавишами перемещения курсора на клавиатуре. Также используется "горячая клавиша" Esc. При нажатии на неё происходит автоматический выход из программы.
Заключение
В данной работе был рассмотрен один из множества методов кодирования. Достоинство данного метода в том, что он может находить исправлять пачки ошибок. Также все циклические коды легко поддаются схемной реализации.
Все элементы принципиальной схемы имеют серии К155 или К55. Это одни из самых распространенных и довольно не дорогих отечественных микросхем, легко доступная любому пользователю.
Программа реализована на языке Turbo Pascal 7.0. Это наиболее распространенный на сегодняшний день язык программирования. Поэтому в программе разобраться трудностей не будет.
Кодирование информации наиболее актуальна в наши дни в связи с развитием компьютерных сетей. Необходимо передавать информацию быстро и точную.
Программа тестировалась восходящим методом. С помощью этого метода сначала были протестированы отдельные модули программы, а затем и вся программа.
Проведено тестирование программы необходимое для проверки работоспособности программы, которое показало, что программа устойчиво работает на все режимах работы и выполняет поставленную задачу.
Программа является универсальной и может быть усовершенствована любым пользователем, разбирающимся в языке программирования Pascal 7.0 .
Дана общая модульная структура программа, которая может помочь ползо-
вателю разобраться в общей структуре программы и усовершенствовать программу.
Список литературы.
1. Тёмников Ф. Е..
Теоретические основы информационной техники:
Учеб.пособие для вузов-2-е изд., перераб. и доп.-М.:Энергия, 1979.-
512 с., ил.
2. Липаев В.В.
Тестирование программ.- М.: Радио и связь,1986. - 296 с.: ил.
3. Тутевич В. Н.
Телемеханика:
Учеб.пособие для студентов вузов спец. “Автоматика и
телемеханика”-2-е изд., перераб. и доп.-М.: Высш. Шк., 1985.- 423 с., ил.
4. Зельдин Е. А.
Цифровые интегральные микросхемы в информационн-измерительной
аппаратуре. –Л.: Энергоатомиздат. Ленингр. отд-ние, 1986.- 280 с.: ил.
Приложения.
Приложение 1. Перечень элементов
Поз. Обозн. | Наименование | Кол | Примечания |
Конденсаторы | |||
С3 | К10-60 – 10 мКф + 10% | 1 | |
С1,С2 | К10-17а – 0.1 мКф + 0.1% | 2 | |
Микросхемы. | |||
К555АГ3 | 1 | ||
К155ИР13 | 9 | ||
К555ТВ6 | 1 | ||
К555ИЕ10 | 2 | ||
К155ЛН1 | |||
К155ЛИ1 | |||
Резисторы | |||
R1-R2 | С2-29В 5Ком±0.1% | 2 | |
R4 | МЛТ-0.125 – 30 Ком + 10% | 1 | |
R5 | МЛТ-0.125 – 1.5Koм + 10% | 1 |
Приложение 2. Блок-схема алгоритма.
Приложение 3. Текст програмных модулей.
Uses Crt,Graph,AlexUnit;
Const
_N = 33;
_M = 10;
Type
Delim_Mas = array[1 .. 100] of byte;
Mass1 = array[1 .. _N+_M-1] of byte;
Mass2 = array[1 .. _M] of byte;
Mass3 = array[1 .. _M-1] of byte;
Mas_Exit=array[1..2] of String;
Two_Matrix=array[1 .. _N,1 .. _N+_M-1] of byte;
Const
P : Mass2 = (1,0,1,1,0,0,1,0,1,1);
Y_No : Mas_Exit = ('Да','Нет');
Var
F,Cicle_Kod : Mass1; R : Mass1;
Delimoe : Delim_Mas;
Obraz_Matrix : Two_Matrix;
Mas : Mass;
grDriver,grMode,ErrCode: Integer;
flag : boolean;
_t,c,n,m,i,schot,N0,Code : integer;
Function Sum(F,P : Byte) : Byte; {Суммирование по модулю 2}
Var
i : Byte;
Begin
If ((F=1) and (P=1)) or ((F=0) and (P=0)) Then Sum:=0
Else Sum:=1;
End;
{-------------------------------}
Procedure Dopoln(Var F : Mass1); {Умножение на старшую степень образующего многочлена}
Var
i : Byte;
Begin
for i:=_N+1 to _N+_M-1 do F[i]:=0;
End;
{--------------------------------}
Procedure Delenye(F : Mass1;P : Mass2); {Деление многочлен на многочлен}
Var
i,j,t : Byte; K : Mass1;
Begin
For i:=1 to _N do
Begin
IF F[i]=1 Then Begin
t:=1;
For j:=i to i+_M-1 do
Begin
K[j]:=Sum(F[j],P[t]);
F[j]:=K[j];
t:=t+1;
End;
End;
End;
t:=1;
For i:=_N+1 to _N+_M-1 do
Begin
R[t]:=F[i];
t:=t+1;
End;
End;
{----------------------------------------}
Procedure Ed_Matrix(Var A : Two_Matrix); {Составление еденичной матрицы}
Var
i : Integer;
Begin
For i:=1 to _N do
Begin
A[i,_N+1-i]:=1
End;
End;
{----------------------------------------}
Procedure Obr_Matrix(Var A : Two_Matrix); {Получение образующей матрицы}
Var
i,j,t,Schot,l,m : Byte; K : Mass1;
Begin
Delimoe[1]:=1;
Schot:=1;
For i:=1 to _N do
Begin
IF Delimoe[i]=1 Then Begin
t:=1;
For j:=i to i+_M-1 do
Begin
K[j]:=Sum(Delimoe[j],P[t]);
Delimoe[j]:=K[j];
t:=t+1;
End;
l:=1;
For m:=i+1 to i+_M-1 do
Begin
A[Schot,_N+l]:=Delimoe[m];
l:=l+1;
End;
End
Else Begin
l:=1;
For m:=i+1 to i+_M-1 do
Begin
A[Schot,_N+l]:=Delimoe[m];
l:=l+1;
End;
End;
Schot:=Schot+1;
End;
End;
Procedure InitGrf; {Инициализация графики}
Begin
grDriver := Detect;
InitGraph(grDriver, grMode,'c:\sub\bp\bgi');
if GraphResult <> grOk then Begin
Halt(1);
End;
End;
Procedure Visual(Var sa:mass); {Ввод информационных символов}
Var i,x,y,k,Fon,Color,a:Integer;
Code: Integer;
ch,chi:Char;
Stop:Boolean;
Elm : String;
Begin
moveto(20,465);
SetTextJustify(0,1);
SetColor(0);
outtext('Нажмите Enter');
x:=30;
y:=225;
k:=17;
Fon:=1;
Color:=14;
Window_(30,150,610,260,1,'Ввод нформационных символов');
SetTextStyle(1,0,4);
SetColor(Fon);
For i:=1 to _N Do
Begin
MoveTo(x+i*k,y);
Str(Sa[i],Elm);
OutText(Elm);
End;
SetTextStyle(0,0,1);
MoveTo(x+17,y-20);
Str(_N,Elm);
OutText(Elm);
MoveTo(x+_N*17,y-20);
Str(0,Elm);
OutText(Elm);
SetTextStyle(1,0,4);
i:=1;
MoveTo(x+i*k,y);
Setcolor(Color);
Str(Sa[i],Elm);
OutText(Elm);
Stop:=False;
Repeat
Begin
ch:=ReadKey;
Case ch Of
#75:Begin
Setcolor(Fon);
MoveTo(x+i*k,y);
Str(Sa[i],Elm);
OutText(Elm);
i:=i-1;
if(i<1)then i:=_N;
SetColor(Color);
MoveTo(x+i*k,y);
Str(Sa[i],Elm);
OutText(Elm);
Stop:=False;
End;{влево}
#77:Begin
SetColor(Fon);
MoveTo(x+i*k,y);
Str(Sa[i],Elm);
OutText(Elm);
i:=i+1;
if(i>_N)then i:=1;
SetColor(Color);
MoveTo(x+i*k,y);
Str(Sa[i],Elm);
OutText(Elm);
Stop:=False;
End;{вправо}
'1':Begin
SetColor(7);
MoveTo(x+i*k,y);
Str(Sa[i],Elm);
OutText(Elm);
SetColor(Color);
MoveTo(x+i*k,y);
sa[i]:=1;
F[i]:=Sa[i];
Str(Sa[i],Elm);
OutText(Elm);
Stop:=False;
End;
'2':Begin
SetColor(7);
MoveTo(x+i*k,y);
Str(Sa[i],Elm);
OutText(Elm);
SetColor(Color);
MoveTo(x+i*k,y);
sa[i]:=0;
F[i]:=Sa[i];
Str(Sa[i],Elm);
OutText(Elm);
Stop:=False;
End;
#13:Begin Stop:=True; End;
End;
End;
Until(Stop);
SetTextStyle(0,0,1);
End;
{---------------------------------------}
{Вывод образующей матрицы}
Procedure OutPutObr_Matrix(x,y : Integer;Obr_Matr : Two_Matrix );
Var k,i,j : Integer;
Elm : String;
Begin
k:=12;
For i:=1 to _N Do
Begin
For j:=1 to _N Do
Begin
MoveTo(x+j*k,i*10+y);
Str(Obr_Matr[i,j],Elm);
OutText(Elm);
End;
End;
SetColor(4);
For i:=1 to _N Do
Begin
For j:=_N+1 to _N+_M-1 Do
Begin
MoveTo(x+j*k,i*10+y);
Str(Obr_Matr[i,j],Elm);
OutText(Elm);
End;
End;
End;
{----------------------------------}
{Вывод полученной кодовой комбинации}
Procedure OutPut(x,y : Integer;F,A : Mass1);
Var k,s : Integer;
Elm : String;
Begin
MoveTo(x+10,y-20);
Str(_N+_M-1,Elm);
OutText(Elm);
MoveTo(x+(_N+_M)*12-3,y-20);
Str(0,Elm);
OutText(Elm);
k:=12;
For i:=1 to _N Do Cicle_Kod[i]:=F[i];
s:=1;
For i:=_N+1 To _N+_M-1 Do
Begin
Cicle_Kod[i]:=A[s];
s:=s+1;
End;
For i:=1 to _N Do
Begin
MoveTo(x+i*k,y);
Str(Cicle_Kod[i],Elm);
OutText(Elm);
End;
SetColor(4);
For i:=_N+1 to _N+_M-1 Do
Begin
MoveTo(10+x+i*k,y);
Str(Cicle_Kod[i],Elm);
OutText(Elm);
End;
End;
{---------------------------------}
{выход из программы}
Function _Exit(Fon,Color : Integer;Col_Simv : Byte) : integer;
Var x,y,k : Integer;
Stop : Boolean;
Ch : Char;
Begin
Window_(250,200,450,300,1,'Выход');
x:=225;
y:=260;
k:=80;
SetTextStyle(0,0,1);
SetColor(Col_Simv);
For i:=1 to 2 do
Begin
MoveTo(x+i*k,y);
OutText(Y_No[i]);
End;
i:=1;
SetFillStyle(1,Fon);
Bar(x+i*k-30,y-15,x+i*k+30,y+15);
MoveTo(x+i*k,y);
Setcolor(Color);
OutText(Y_No[i]);
Stop:=False;
Repeat
ch:=ReadKey;
Case ch Of
#75:Begin
SetFillStyle(1,7);
Bar(x+i*k-30,y-15,x+i*k+30,y+15);
Setcolor(Col_Simv);
MoveTo(x+i*k,y);
OutText(Y_No[i]);
i:=i-1;
if(i<1)then i:=1;
SetFillStyle(1,Fon);
Bar(x+i*k-30,y-15,x+i*k+30,y+15);
SetColor(Color);
MoveTo(x+i*k,y);
OutText(Y_No[i]);
Stop:=False;
End;{влево}
#77:Begin
SetFillStyle(1,7);
Bar(x+i*k-30,y-15,x+i*k+30,y+15);
Setcolor(Col_Simv);
MoveTo(x+i*k,y);
OutText(Y_No[i]);
i:=i+1;
if(i>2)then i:=2;
SetFillStyle(1,Fon);
Bar(x+i*k-30,y-15,x+i*k+30,y+15);
SetColor(Color);
MoveTo(x+i*k,y);
OutText(Y_No[i]);
Stop:=False;
End;{вправо}
#13:Begin Stop:=True; _Exit:=i End;
End;{Case}
Until Stop;
SetTextStyle(0,0,0);
End;
{---------------------------------}
{ОСНОВНАЯ ПРОГРАММА }
{---------------------------------}
Begin
InitGrf;
Repeat
flag:=false;
Fon(3,2,GetMaxX-3,30);
setcolor(0);
moveto(20,465);
SetTextJustify(0,1);
outtext('Esc - Выход');
Menu(3,'Работа','О программе','Помощь','','','');
Case t Of
1:Begin
Repeat
SetFillStyle(1,7); {Строка состтояния}
Bar(3,450,getmaxx-3,getmaxy-3);
SetColor(15);
Line(3,450,getmaxx-3,450);
Line(3,450,3,getmaxy-3);
SetColor(0);
Line(3,getmaxy-3,getmaxx-3,getmaxy-3);
Line(getmaxx-3,450,getmaxx-3,getmaxy-3);
{moveto(20,465);
SetTextJustify(0,1);
SetColor(0);
outtext('Нажмите любую клавишу ...');}
VerMenu(3,'Ввод комбинации','Образующая матрица','Выход','','','');
Case Np Of
1 : Begin
Visual(Mas);
Dopoln(F);
Delenye(F,P);
Window_(30,300,610,410,1,'Закодированное сообщение. Красные
символы - контрольные.');
OutPut(40,370,F,R);
ReadKey;
SetFillStyle(1,3);
Bar(30,150,610,410);
End;
2 : Begin
Window_(30,50,610,445,1,'Образующая матрица');
Ed_Matrix(Obraz_Matrix);
Obr_Matrix(Obraz_Matrix);
OutPutObr_Matrix(40,90,Obraz_Matrix);
ReadKey;
SetFillStyle(1,3);
Bar(30,50,610,450);