Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаборатные работы (КПМП).DOC
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
1.66 Mб
Скачать
  1. Порядок виконання роботи

  1. Створіть програму наступні рядки, що мають:

Uses Graph;

var

grDriver: integer;

grMode : integer;

ErrCode : integer;

BEGIN

grDriver:= Detect;

InitGraph(grDriver, grMode,'___');

ErrCode:= GraphResult;

if ErrCode <> grOk

then

begin

SetBkColor(7);

SetColor(24);

{виконати графічні функція}

Line(100, 100, GetMaxX-100,GetMaxY-100);

Line(1OO, 380, GetMaxX-100,GetMaxY-380);

Line(100, 100, 100 , 350 );

Line(GetMaxX-100 , GetMaxY-350, GetMaxX-100, GetMaxY-100);

Line(100,100,GetMaxX-100, GetMaxY-350);

Readln;

CloseGrapn;

End

else

writeln(‘Помилка графіки:’,GraphErrorMsg(ErrCode));

END.

  1. Змініть, використовуючи значення констант для драйвера і режиму, наведених вище, перегляньте як змінюється зображення на екрані.

  2. Змініть третій параметр процедури і перегляньте роботу програми. Результати роботи запишіть до звіту.

  3. Створіть програму, що має наступний лістинґ:

Uses CRT, DOS, GRAPH;

const

MaxPoints= 15;

var

Points: array[0..MaxPoints] of PointType;

ViewInfo: ViewportType;

X, I, J, Y: integer;

CenterX: integer;

CenterY: integer;

Radius: word;

StepAngle: word;

Xasp,Yasp: word;

Radians: real;

GraphDriver: integer;

GraphMode: integer;

ErrorCode: integer;

function AdjAsp(Value : integer) : integer;

begin

AdjAsp:= ((Value) * Xasp) div Yasp;

end;

begin

InitGraph(GraphDriver, GraphMode, 'E:\Pascal70\Bgi');

SetBkColor(8);

ErrorCode:= GraphResult;

if ErrorCode <> grOK then

Writeln('Graphicserror:',GraphErrorMsg(ErrorCode));

GetAspectRatio(Xasp, Yasp);

GetViewSettings(ViewInfo);

with ViewInfo do

begin

CenterX:= (x2-x1) div 2;

CenterY:= (y2-y1) div 2;

Radius:= CenterY;

while (CenterY+AdjAsp(Radius)) <(y2-y1)-20 do

Inc(Radius);

end;

StepAngle:= 360 div MaxPoints;

for I:= 0 to MaxPoints - 1 do

begin

Radians:= (StepAngle * I) * Pi/180;

Points[I].X:= CenterX + round(Cos(Radians) * Radius);

Points[I].Y:=CenterY - AdjAsp(round(Sin(Radians)*Radius));

end;

Circle(CenterX, CenterY, Radius);

for I := 0 to MaxPoints - 1 do

begin

for J:= I to MaxPoints - 1 do

begin

MoveTo(Points[I].X, Points[I].Y);

LineTo(Points[J].X, Points[J].Y);

end;

end;

Readln;

CloseGraph;

end.

  1. Проаналізуйте роботу програми. Результати роботи запишіть до звіту.

  2. Створіть програму, яка виводила на екран фігури Лісажу.

  3. Створіть програму, що має наступний лістинґ:

Begin

<ініціалізація граф.>

for i := 1 to 400 do

begin

SetColor(White);

MoveTo(30 + i, 30); LineTo(40 + i, 50); LineTo(60 + i, 60);

LineTo(40 + i, 70); LineTo(30 + i, 90);

SetColor(Black);

MoveTo(29 + i, 90); LineTo(29 + i, 70);

MoveTo(29 + i, 50); LineTo(29 + i, 30);

SetColor(White);

MoveTo(5 + i, 50); LineTo(0 + i, 40);

SetColor(Black);

MoveTo(-10 + i, 50); LineTo(-10 + i, 40);

end;

Readln;

CloseGraph;

End.

  1. Проаналізуйте роботу програми. Результати роботи запишіть до звіту.

  2. Створіть програму, яка виводила на екран довільну фігуру, що рухається.