Регистрация внешних процедур

После объявления переменных следует объявление процедур и функций, используемых в программе: litt, trip, egavga - внешние процедуры файлов шрифта и процедура файла видеодрайвера соответственно.

PROCEDURE litt;external;.

PROCEDURE trip;external;

PROCEDURE egavga;external;


Функция GetF возвращает значение F(x).

FUNCTION GetF (const x: real): real;

BEGIN

GetF:=a*cos(b*x);

END;

 

Функция Axe возвращает значение координаты х на экране.

FUNCTION Axe (const x: real): integer;

BEGIN

Axe:=x1+round((-x_min+x)*Mx);

END;

 

Функция Aye возвращает значение координаты y на экране.

FUNCTION Aye (const y: real): integer;

BEGIN

Aye:=y2+round((y_min-y)*My);

END;

 

Функция FloatToStr возвращает значение числа в символьном виде.

FUNCTION FloatToStr (const a: real): string;

var st: string;

BEGIN

str(a:2:0,st);

FloatToStr:=st;

END;

 


Ввод данных в графическом режиме

Процедура SetData позволит осуществить ввод данных.

PROCEDURE SetData;

BEGIN

St1:='График функции: y(x) = a*cos(b*x)';

writeln(st1);

write('Введите a = '); readln(a);

write('Введите b = '); readln(b);

END;



Инициализация графического режима

Процедура registerbgidriver (egavga) осуществит регистрацию видеодрайвера и шрифтов.

PROCEDURE GrafikaOn;

var drv, mode: integer;

BEGIN

registerbgidriver (egavga);

font_litt: = registerbgifont (litt);

font_trip: = registerbgifont (trip);

drv: =9;

mode: =2;

InitGraph (drv, mode, ‘ ‘);

END;

Установка области экрана и начальных значений

Для рисования графика функции F(x)

Процедура PaintF осуществит вывод данных в графическом режиме, установку области экрана и начальных значений для рисования графика функции F(x).

PROCEDURE PaintF;

BEGIN

settextstyle(font_trip, 0, 4);

SetColor(15);

OutTextXY(10, 10, st1);

settextstyle (font_trip, 0, 2);

SetColor (10);

OutTextXY(10, 45, st2);

OutTextXY(10, 67, st3);

 

Зададим область экрана

X1: =100;

Y1: =100;

X2: =GetMaxX-100;

Y2: =GetMaxY-20;

SetFillStyle(1, 7);

bar(x1, y1, x2, y2);

 

Зададим начальные значения

X_min: = -10;

X_max: =20;

dx: =0.01;

StepLineX: =4;

Осуществим поиск минимального и максимального значений функции

Ax: =x_min;

y_min: =GetF(Ax);

y_max: =GetF(Ax);

y_0: =abs(y_min);

repeat

Ay: =GetF(Ax);

If Ay<y_min then y_min: =Ay;

If Ay>y_max then y_max: =Ay;

If abs (Ay)<y_0 then y_0: = abs(Ay);

Ax: =Ax+dx;

until Ax>=x_max;

 

Вычислим масштаб по оси Y

My: =abs (y2-y1) / abs (y_max-y_min); 

 

Вычислим масштаб по оси X

Mx: =abs (x2-x1) / abs (x_max-x_min); 

 

Построим оси

Ox: = x1+round((-x_min+0)*Mx);

Oy: = y1+round((y_max-y_0)*My);

SetColor(15);

SetLineStyle (0, 0, 3);

Line (Ox, y1, Ox, y2);

Line (x1, Oy, x2, Oy);

 

Укажем разметку по оси X

SetLineStyle (3, 0, 1);

Settextstyle (font_litt, 0, 5);

Ax: = x_min;

SetColor(15);

Repeat

OutTextXY (Axe (Ax), y2+1, FloatToStr (Ax));

Line (Axe (Ax), y1, Axe (Ax), y2);

Ax: =Ax+StepLineX;

until Ax>x_max;

SetLineStyle (0, 0, 1);

 

Нарисуем график

Ax: = x_min;

Ay: =GetF (Ax);

SetColor(9);

MoveTo (Axe (Ax), Aye (Ay));

Repeat

Ay: =GetF (Ax);

LineTo (Axe (Ax), Aye (Ay));

Ax: =Ax+dx;

until Ax>x_max;

 

После описания всех процедур и функций пользователя, служебным словом begin начинается блок операторов. В этом блоке вызываются все предварительно описанные процедуры и функции.

Так будет выглядеть основная программа:

BEGIN

SetData;

GrafikaOn;

PaintF;

readln;

CloseGraph;

END.

 




Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: