Передача информации по каналу с решающей обратной связью
C_CodeLine=7; {номер строки исправленного сообщения}
Begin_Line=34; {номер столбца начала строк}
var
menu_p:array[1 18] of string[19]; {массив названий пунктов меню}
n_pun,from:byte; {текущий номер пункта меню}
n_z:integer; {количество записей в базе данных}
key:char; {нажатая клавиша}
i,j,x:byte; {счетчик}
Code:Array[1 k]Of Boolean; {начальная кодовая комбинация
}
G_Code:Array[1 n]Of Byte; {закодированная кодовая комбинация}
(* ИНИЦИАЛИЗАЦИЯ *)
PROCEDURE init;
begin
menu_p[1]:=' КОДИРОВКА';
menu_p[2]:=' ПОМОЩЬ ';
menu_p[3]:=' О ПРОГРАММЕ';
menu_p[4]:=' ВЫХОД ';
menu_p[5]:=' СПРАВКА ';
menu_p[6]:=' АВТОР ';
menu_p[7]:=' ДА ';
menu_p[8]:=' НЕТ ';
end;
(* процедура работы с курсором *)
Procedure Cursor(q:Integer);
Begin Asm
mov AH,01h
mov CX,q
Int 10h
End End;
(* Процедура рисования простого окна *)
PROCEDURE win(x1,y1,x2,y2,color:byte);
begin
textbackground(color);
window(x1,y1,x2,y2);
clrscr;
end;
(* Процедура рисования окна с рамкой, тенью и заголовком *)
PROCEDURE wind(x1,y1,x2,y2,foncol,textcol:byte;zagl:string);
var pos:byte; {позиция х для заголовка окна}
i,j:integer; {счетчики}
begin
window(1,1,80,25);
textbackground(cyan);
textcolor(darkgray);
for i:=y1 to y2+2 do
begin
gotoxy(x1-1,i);
for j:=x1-1 to x2+4 do
write(chr(177));
end;
win(x1-2,y1-1,x2+2,y2+1,foncol);
textcolor(textcol);
gotoxy(3,1);
for i:=1 to x2-x1+1 do
write(chr(205));
gotoxy(3,3-y1+y2);
for i:=1 to 1+x2-x1 do
write(chr(205));
for i:=1 to y2-y1+1 do
begin
gotoxy(2,i+1);
writeln(chr(186));
end;
for i:=1 to 1+y2-y1 do
begin
gotoxy(4+x2-x1,i+1);
write(chr(186));
end;
gotoxy(2,1);
write(chr(201));
gotoxy(2,y2-y1+3);
write(chr(200));
gotoxy(x2-x1+4,1);
write(chr(187));
gotoxy(x2-x1+4,y2-y1+3);
write(chr(188));
pos:=3+((x2-x1) div 2)-(length(zagl) div 2);
gotoxy(pos,1);
write(zagl);
window(x1,y1,x2,y2);
end;
(* Процедура "Нажмите любую клавишу" *)
PROCEDURE wait_key;
var w_k:char; {ожидаемая клавиша}
begin
win(1,25,80,25,white);
textcolor(black);
write(' Нажмите любую клавишу');
w_k:=readkey;
if w_k=#0 then w_k:=readkey;
end;
(* Процедура вывода "справки" *)
PROCEDURE spravka;
begin
wind(27,3,75,13, white,black,' Справка ');
textcolor(black);
write;
WriteLn('Данная программа позволяет закодировать сооб-');
WriteLn('щение с помощью циклического кода с корректиру-');
WriteLn('ющей способностью d=4. Первые 9 символов -');
WriteLn('информационные, остальные 5 - контрольные.');
WriteLn;
WriteLn('Программа написана студентом 4 курса СФ МЭИ(ТУ)-');
WriteLn('Власовым А.В. в качестве приложения к выпускной');
writeln('работе.');
wait_key;
writeln;
win(1,1,80,24,cyan);
end;
(* Процедура вывода помощи-используемые клавиши *)
PROCEDURE helper;
begin
wind(9,4,59,15,white,black,' Помощь ');
textcolor(0);
writeln('Используемые клавиши:');
writeln;
writeln(' F1 - помощь');
writeln(' Esc - отмена, выход');
writeln(' "Пробел" - ввод символа кода : [0,1]');
writeln(' BackSpace - Удаление предыдущего символа');
writeln;
wait_key;
win(1,1,80,24,cyan);
end;
(*Процедура вывода информации об авторе *)
PROCEDURE avtor;
begin
wind(16,7,60,15,white,black,' Об авторе ');
textcolor(0);
writeln;
writeln(' Студент : Власов А.В.');
writeln(' Группа : ВМ-2-00');
writeln(' Руководитель : Каевченко М.А.');
writeln;
writeln;
writeln(' Смоленск 2004 г.');
wait_key;
win(1,1,80,24,3);
end;
(* Процедура вывода подсказки в нижней строке *)
PROCEDURE vnizu;
begin
win(1,25,80,25,white);
textcolor(black);write(' ',chr(24),chr(25),' │ ',chr(27),chr(26),' │ ');
textcolor(red);write('Enter ');
textcolor(black);write('Выбор │ ');
textcolor(red);write('F1 ');
textcolor(black);write('Помощь │ ');
textcolor(red);write('Esc ');
end;
(*Процедура выхода из программы *)
PROCEDURE final(var from:byte);{номер пункта меню, на котором находились}
var n_p:byte;{номер позиции в меню выхода}
i:integer; {счетчик}
begin
win(4,from+2,20,from+2,white);
textcolor(black);
write(menu_p[from]);
win(4,6,19,6,3);
textcolor(white);
write(' ВЫХОД');
n_p:=1;
repeat
repeat
vnizu;textcolor(black);write('Отмена выхода');
wind(29,10,42,11,white,black,'');
for i:=1 to 2 do
begin
if i=n_p then
begin
textbackground(3);
textcolor(white);
end
else begin
textbackground(white);
textcolor(black);
end;
if i=2 then write(menu_p[8])
else writeln(menu_p[7]);
end;
key:=readkey;
if key=#0 then key:=readkey;
case key of
#80:begin {Вниз}
n_p:=n_p+1;
if n_p>2 then n_p:=1;
end;
#72:begin {Вверх}
n_p:=n_p-1;
if n_p<1 then n_p:=2;
end;
#27,#75:begin {Esc}
n_p:=2;
break;
end;
end;
until (key=#13) or (key=#77);
case n_p of
1:begin
cursor(on);
textcolor(lightgray);
win(1,1,80,25,0);
halt;init;
end;
2:begin
win(1,1,80,25,3);
exit;
end;
end;
until false;
end;
(*Процедура вывода меню для пункта "О программе" *)
PROCEDURE o_progr;
var n_p:byte;{номер позиции в меню выхода}
i:integer; {счетчик}
begin
n_p:=1;
repeat
repeat
vnizu;textcolor(black);write('Выход');
wind(26,9,37,10,white,black,'');
for i:=1 to 2 do
begin
if i=n_p then
begin
textbackground(3);
textcolor(white);
end
else begin
textbackground(white);
textcolor(0);
end;
if i=2 then write(menu_p[6])
else writeln(menu_p[5]);
end;
key:=readkey;
if key=#0 then key:=readkey;
case key of
#80:begin {Вниз}
n_p:=n_p+1;
if n_p>2 then n_p:=1;
end;
#72:begin {Вверх}
n_p:=n_p-1;
if n_p<1 then n_p:=2;
end;
#27,#75:begin {Esc}
win(1,1,80,24,3);
exit;
end;
end;
until (key=#13) or (key=#77);
case n_p of
1:begin {справка}
spravka;
exit;
end;
2:begin {отмена выхода}
avtor;
exit;
end;
end;
until false;
end;
(* процедура выхода *)
Procedure Quit;
begin
clrscr;
cursor(off);
init;
n_pun:=1;
win(1,1,80,25,3);
repeat
repeat
vnizu;
textcolor(0);
write('Выход');
wind(4,3,20,6,white,0,'');
for i:=1 to 4 do
begin
if i=n_pun then
begin
textbackground(3);
textcolor(white);
end
else begin
textbackground(white);
textcolor(0);
end;
if i=4 then write(menu_p[4])
else writeln(menu_p[i]);
Другие рефераты на тему «Коммуникации, связь и радиоэлектроника»:
- Паяные соединения. Технология магнитных дисков. Коммутационные устройства
- Разработка универсального источника бесперебойного питания
- Аппарат для ультразвуковой терапии - обобщенная структура, применение ультразвука в хирургии
- Организация статистического приёмочного контроля по альтернативному признаку
- Оптические системы передачи
Поиск рефератов
Последние рефераты раздела
- Микроконтроллер системы управления
- Разработка алгоритмического и программного обеспечения стандарта IEEE 1500 для тестирования гибкой автоматизированной системы в пакете кристаллов
- Разработка базы данных для информатизации деятельности предприятия малого бизнеса Delphi 7.0
- Разработка детектора высокочастотного излучения
- Разработка микропроцессорного устройства для проверки и диагностики двигателя внутреннего сгорания автомобиля
- Разработка микшерного пульта
- Математические основы теории систем