Министерство Связи РФ СибГУТИ
вариант №20.
Выполнила:
Гр П-12
Проверила: Бах ОА
Дата:
Задачи.
1. Вывод заголовка pаботы (фамилия и имя автоpа и название pаботы) в виде "бегущей стpоки". Место вывода (верх или низ экрана) задавать в качестве параметра.
2. Два пpоцесса: один генеpиpует случайные числа и выбиpает в буфеp те, котоpые являются полным квадpатом, втоpой выводит их из буфеpа на экpан (по материалам лаб. работы №7).
3. В огpаниченной области экpана pазместить движущийся объект (напpимеp, летающий и отpажающийся от гpаниц окна шаpик).
4. В углу экрана с заданными в качестве параметров координатами поместить часы, показания которых должны соответствовать системному времени. Использовать в качестве основы материал лабораторной работы №6.
Procedure Ramka(x1,x2,y1,y2:integer)
Рисует рамки для всех процессов и меню. При вызове процедуры передаются параметры левого верхнего угла (х1), правого верхнего (х2), левого нижнего (у1) и правого нижнего угла (у2).
Procedure In_Buf;
Генерирует квадраты чисел. Берем рандомом любое число (j) и проверяем, если round(sqrt(j))-sqrt(j)=0, то оно является полным квадратом и мы его заносим в буфер квадратов.
Procedure Out_buf;
Осуществляет вывод занесенных в буфер полных квадратов.
Procedure Process4
Процедура выводит считанный в буфер текст в заданном окне.
Procedure Dvig;
Процедура осуществляет движение объекта в заданном окне(параметры окна задаются при вызове процедуры).
ProcedureStrka
Вывод заголовка pаботы (фамилия и имя автоpа и название pаботы) в виде "бегущей стpоки". Место вывода (верх или низ экрана) задается в качестве параметра.
ProcedureKlava
Процедура предназначена для того, чтобы работать с клавишами меню. При первом нажатии на клавишу процесс приостанавливает работу, при повторном нажатии – возобновляет.
ProcedureTime
Процедура выводит на экран часы и считает тики. Место вывода (верх или низ экрана) задается в качестве параметра.
ProcedureError
Выводит на экран параметры запуска программы в случае, если они были введены неправильно.
uses dos,crt;
const max=20;
var s_x,s_y : byte;
ver,gor : boolean;
time_y,time_x : byte;
free : integer;
Buffer_Sqrt: Array [1..max] Of Integer;
buf_x,buf_y : byte;
i : integer;
oldklava,Oldhandler:procedure;
diskret,time1 : integer;
temp_sec,h, m, sec, Sec100 : Word;
cod1,cod2,cod3,cod4 : integer;
ox,oy,count1,count2 : integer;
n1,n2,n3,n4 : integer; {znachenie diskreta}
cs,in_b,out_b,exit1,clock,stroka,objekt : boolean;
time_v : array[1..4] of byte;
procedure error;
begin
clrscr;
writeln ('Формат вывода: turbo.exe [p1] [p2] [p3] [p4]');
writeln;
writeln ('p1: Вывод бегущей строки вверху экрана ');
writeln (' 1 вверху экрана ');
writeln (' 2 внизу экрана ');
writeln ('p2: Часы по X');
writeln (' 1 вверху экрана ');
writeln (' 2 внизу экрана ');
writeln ('p3: Часы по Y');
writeln (' 1 вверху экрана ');
writeln (' 2 внизу экрана ');
writeln ('p4: Значение дискрета');
writeln;
writeln ('Пример: turbo 0 1 1 1');
end;
procedure klava;
interrupt;
begin
if port[$60]=59 then
{F1}
if (clock) then
begin
clock:=(not clock);
gotoxy(59,6);
write('off');
end
else
begin
clock:=true;
gotoxy(59,6);
write('on ');
end;
if port[$60]=60 then
{F2}
if (stroka) then
begin
stroka:=(not stroka);
gotoxy(59,7);
write('off');
end
else
begin
stroka:=true;
gotoxy(59,7);
write('on ');
end;
if port[$60]=61 then
{F3}
if (objekt) then
begin
objekt:=(not objekt);
gotoxy(59,8);
write('off');
end
else
begin
objekt:=true;
gotoxy(59,8);
write('on ');
end;
if port[$60]=62 then
{F3}
if (in_b) then
begin
in_b:=(not in_b);
gotoxy(59,9);
write('off');
end
else
begin
in_b:=true;
gotoxy(59,9);
write('on ');
end;
if port[$60]=63 then
{F3}
if (out_b) then
begin
out_b:=(not out_b);
gotoxy(59,10);
write('off');
end
else
begin
out_b:=true;
gotoxy(59,10);
write('on ');
end;
if port[$60]=1 then exit1:=true;
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.