Изучение модулей языка Turbo Pascal и работу с ними. Написание модуля для вывода на экран вертикального меню и исполняемую программу к нему

Страницы работы

Содержание работы

ЛАБОРАТОРНАЯ РАБОТА №3

Цель работы: изучить модули языка Turbo Pascal и работу с ними.

Постановка задачи: написать модуль для  вывода на экран вертикального меню и исполняемую программу к нему.

Контрольный пример:

Рисунок 1 – скриншот работы программы Turbo Pascal.

Рисунок 2 – скриншот работы программы Turbo Pascal

Текст программы:

program labor3;

uses crt, modul;

var

long,i,kol,j,x1,y1:byte;

massiv:menu;

begin

clrscr;

writeln('Vvedite koordinaty verhnego levogo ugla: ');

readln(x1,y1);

writeln('Kol-vo strok v meny: ');

readln(kol);

for i:=1 to kol do

begin

writeln('Vvedite nazvanie ',i,' stroki meny: ');

readln(massiv[i]);

end;

{endfor i:=1 to kol}

vertmenu(massiv,x1,y1,kol,long);

window(1,1,80,25);

write('Vybrano meny: ',long);

readln;

end.

Текстмодуля:

unit modul;

interface

uses crt;

type

menu=array[1..25] of string[40];

procedure vertmenu(massiv:menu;x1,y1,kol:byte;var long:byte);

implementation

procedure vertmenu(massiv:menu;x1,y1,kol:byte;var long:byte);

var

i,j,max,x2,y2,l:byte;

key:char;

begin

textbackground(black);       {Raschet koordinat}

clrscr;

y2:=y1+kol;

max:=length(massiv[1]);      {proverka koordinat}

for i:=1 to kol do

if length(massiv[i])>max then max:=length(massiv[i]);      {Dopolnenie vseh strok do max}

x2:=x1+kol;

{endif length(massiv[i])>max}

if (x1<1) or (y1<1) or (x2>80) or (y2>25) then       {Proverka koordinat na popadanie v oblast ekrana}

begin                                              {Prorisovka rabochego stola}

writeln('vixod za granici ekrana i nazat Enter');

repeat until keypressed;

window(1,1,25,80);

textbackground(black);

textcolor(white);

clrscr;

halt;

end;

{endif (x1<1) or (y1<1) or (x2>80) or (y2>25)}

{endfor i:=2 to kol}

for i:=1 to kol do

for j:=1 to max-length(massiv[i]) do

massiv[i]:=massiv[i];

writeln(x1,x2,y1,y2);

repeat until keypressed;

window(x1+1,y1+1,x2+1,y2+1);

textbackground(blue);

clrscr;

window(x1,y1,x2,y2);

textbackground(red);

textcolor(white);

clrscr;

{endfor j:=1 to max-length(massiv[i])}

{endfor i:=1 to kol}

for i:=1 to kol do         {Vyvod polei meny v ramku}

begin

GoToXY(1,i);

write(massiv[i]);

end;

ASM

mov ch,20h

mov ah,1

int 10h

end;

{endfor i:=1 to kol}

long:=1;

GoToXY(1,1);          {Podsvetka 1-go polya meny}

textbackground(red);

textcolor(white);

clrscr;

write(massiv[1]);

repeat

l:=long;

key:=readkey;

if key=#0 then key:=readkey;

case key of                   {Reakcia na nazhatie klavish}

#27:begin                  {esc}

long:=0;

break;

end;

#72:begin

long:=long-1;    {strelka vverh}

if long=0 then long:=kol;

end;

#80:begin

long:=long+1;    {strelka vniz}

if long>kol then long:=1

end;

#13:break;                  {enter}

end;

GoToXY(1,l);           {Prorisovka polya meny v ishodnyi cvet}

textcolor(white);

textbackground(red);

clrscr;

write(massiv[l]);

GoToXY(1,long);         {Podsvetka vybrannogo meny}

textbackground(red);

textcolor(white);

clrscr;

write(massiv[long]);

until false

end;

end.

Похожие материалы

Информация о работе