Передача информации по каналу с решающей обратной связью

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]);

Страница:  1  2  3  4  5  6  7  8  9  10  11  12  13  14  15 
 16  17 


Другие рефераты на тему «Коммуникации, связь и радиоэлектроника»:

Поиск рефератов

Последние рефераты раздела

Copyright © 2010-2024 - www.refsru.com - рефераты, курсовые и дипломные работы