Procedure Ramka. Procedure Process. Procedure New_KeyBoard. Procedure New_Timer

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

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

Министерство Связи РФ СибГУТИ

                                                                                                                                       Кафедра ПМиК

Курсовая работа

по операционным системам

вариант №26.

Выполнила: Юрова ИИ

Гр П-13

Проверила: Бах ОА

Дата:

Новосибирск 2003 г

Задачи.

1.  Два  пpоцесса: пеpвый читает  инфоpмацию из файла (напpимеp, стихи или текст пpогpаммы) в буфеp, втоpой эту инфоpмацию из буфеpа выдает на экpан. Использовать скроллинг.

2.  Два пpоцесса: один выполняет поиск всех последовательных пpостых чисел и заносит их в буфеp, втоpой осуществляет их вывод из буфеpа на экpан (по материалам лаб. работы №7).

3.  Два  пpоцесса: один генеpиpует случайные числа и выбиpает в буфеp те, котоpые являются полным квадpатом, втоpой выводит их из буфеpа на экpан (по материалам лаб. работы №7).

4.  В огpаниченной области экpана pазместить движущийся объект (напpимеp, летающий и отpажающийся от гpаниц окна шаpик).

Procedure Ramka(x1,x2,y1,y2:integer)

Рисует рамки для всех процессов и меню. При вызове процедуры передаются параметры левого верхнего угла (х1), правого верхнего (х2), левого нижнего (у1) и правого нижнего угла (у2).

Procedure Process1

Генерирует квадраты чисел. Берем рандомом любое число (j) и проверяем, если round(sqrt(j))-sqrt(j)=0, то оно является полным квадратом и мы его заносим в буфер квадратов.

Procedure Process2

Осуществляет вывод занесенных в буфер полных квадратов.

Procedure Process3

Процедура считывает информацию из файла (пока не конец файла), за раз считывает 50 символов и передает управление другому процессу.

Procedure Process4

Процедура выводит считанный в буфер текст в заданном окне.

Procedure Process5(x1,x2,y1,y2:integer)

Процедура осуществляет движение объекта в заданном окне(параметры окна задаются при вызове процедуры).

Procedure Process6

Процедура осуществляет генерацию простых чисел. Поиск простого числа осуществляется путем проверки остатка от деления числа w на k, меняющегося от 2 до round(sqrt(w+1)). Если число простое, то оно заносится в буфер простых чисел.

Procedure Process7

Осуществляет вывод занесенных в буфер простых чисел.

Procedure New_KeyBoard

Процедура предназначена для того, чтобы работать с клавишами меню. При первом нажатии на клавишу процесс приостанавливает работу, при повторном нажатии – возобновляет.

Procedure New_Timer

Процедура проверяет, если Flag[n]=True, то n процесс становится активным.

Uses Crt, Dos;

Const b = 100;

b1= 100;

t = 50;

Var

Old_Timer: Procedure;

Old_KeyBoard: Procedure;

xx,yy,vx,vy,m,p,i,j,Kvant,Free,Free1,w,k,l: Integer;

n1,n2,X,Y,code,GoX,GoY,GoX1,GoY1: Integer;

fll:boolean;

F: File of Char;

Pn: Array [1..8] Of Boolean;

Flag: array [1..8] of Boolean;

Buffer_Sqrt: Array [1..b] Of Integer;

Buffer_Sim: Array [1..b] of Integer;

Buffer_Text: Array [0..t-1] Of Char;

Procedure Ramka(x1,x2,y1,y2:integer);

var i:integer;

begin

gotoxy(x1,y1);

write('Й');

for i:=x1+1 to x2-1 do

write('=');

write('»');

for i:=y1+1 to y2-1 do

begin

gotoxy(x1, i);

write('||');

gotoxy(x2, i);

write('||');

end;

gotoxy(x1,y2);

write('И');

for i:=x1+1 to x2-1 do

write('=');

write('ј');

end;

Procedure Process1;{gen sqr}

Begin

If Free = 0 Then Pn[1]:=False;

While Pn[1] and (Free>0) Do

Begin

j:=Random(500);

If round(sqrt(j))-sqrt(j)=0 then

Begin

i:=b+1-Free;

Buffer_Sqrt[i]:=j;

Free:=Free-1;

End;

End;

End;

Procedure Process2;{viv sqr}

Begin

Textcolor(9);

Ramka(50,73,2,12);

TextColor(LightMagenta);

GotoXY(61,3);

Writeln('Sqr');

If Free = b Then Pn[2]:=False;

While Pn[2] and (Free<b) Do

Begin

if GoX>65 then begin GoX:=52;inc(GoY); end;

if GoY=12 then GoY:=4;

i:=b-Free;

GotoXY(GoX,GoY);

Write(Buffer_Sqrt[i]:4);

Free:=Free+1;

GoX:=GoX+4;

Delay(10);

End;

End;

Procedure Process3;{read}

Begin

While (Pn[3]) do

If not eof(F) Then

Begin

If n2=n1 Then Begin Pn[3]:=False; Break; End;

Read(F,Buffer_Text[n2]);

n2:=(n2+1)mod(t);

End

Else

Begin

Close(F);

Reset(F);

If n2=n1 Then Begin Pn[3]:=False; Break; End;

Read(F,Buffer_Text[n2]);

n2:=(n2+1)mod(t);

End;

End;

Procedure Process4;{print}

Begin

Textcolor(10);

Ramka(44,73,13,25);

Window(45,14,71,24);

GotoXY(X,Y);

While (Pn[4]) do

Begin

If (n1+1)mod(t)=n2 Then Begin Pn[4]:=False; Break; End;

TextColor(White);

Write(Buffer_Text[n1]);

n1:=(n1+1)mod(t);

End;

X:=WhereX;

Y:=WhereY;

Window(1,1,80,25);

End;

Procedure Process5(x1,x2,y1,y2:integer);{object}

var i : integer;

begin

if (fll=not true) then

begin

xx:=x1+1;

yy:=y1+1;

TextColor(14);

ramka(x1,x2,y1,y2);

fll:=true;

end

else

begin

textcolor(0);

gotoxy(xx,yy);

write('_');

xx:=xx+vx;

yy:=yy+vy;

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

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