Цель работы: изучить модули языка 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.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.