Procedure GrOfFunc;

Var

x,y,{аргумент та значення функції}

x1,x2, {[xl; x2] — відрізок, на якому будується функція}

y1,y2, {[yl; y2 ] — інтервал значень функції}

dx, {приріст функції}

mx,my:real; {масштаб}

l,b,{лівий нижній кут області виведення графіка}

h,w, {висота та ширина області виведення графіка}

x0,y0:integer; // точка початку координат

function f (x:real):real;

Begin

f:=2*sin(x)*exp(x/5);

End;

Begin

l:=10;

b:= Form1.ClientHeight-20;

h:= Form1.ClientHeight-40;

w:=Form1.ClientWidth-40;

x1:=0;

x2:=25;

dx:=0.001;

y1:=f(x1);

y2:=f(x2);

x:=x1;

Repeat

y:=f(x);

if y<y1 then y1:=y;

if y>y2 then y2:=y;

x:=x+dx;

until (x>=x2);

my:=h/abs(y2-y1);

mx:=w/abs(x2-x1); //масштаби по координатних вісях

x0:=l;

y0:=b-abs(round(y1*my));

With Form1.Canvas do

Begin

Moveto(l,b);

Lineto(l,b-h-13);

Moveto(x0,y0);

Lineto(x0+w,y0);

TextOut(l+5,b-h,FloatToStrF(y2,ffgeneral,6,3));

TextOut(l+5,b,FloatToStrF(y1,ffgeneral,6,3));

x:=x1;

Repeat

y:=f(x);

Form1.Canvas.Pixels[x0 + round(x*mx) ,y0 –

round(y*my)]:=clBlack;

x:=x+dx;

until (x>=x2);

End;

End;

4. Для виклику процедури GrOfFuncстворити процедуру обробки події OnPaint для об’єкта Form1.Ця процедура забезпечить накреслення графіка після відкриття форми в результаті запуску програми.

5. Для накреслення графіка після зміни розмірів форми створити про­цедуру обробки цієї події OnCanResizeдля об'єкта Form1.У цій про­цедурі виконати очистку поля форми, а потім викликати процедуру GrOfFuncдля побудови графіка відповідно до нових розмірів форми:

With Form1 do

Canvas.FillRect(Rect(0,0, ClientWidth, ClientHeight));

GrOfFunc;

Завдання для самостійного виконання

1. Змінити програму так, щоб осі виводились зеленим кольором, а графік функції — синім. Підписати осі координат.

Підказка. Перед виведенням осей координатної площини встановити колір пераclGreen ( Pen.Color := clGreen)та для підпису осей виконати дії:

Font.Name := ’arial';

Font.Size := 10;

Textout(x0+5,y0+5, 'y=2*sin(x)*exp(x/5)');

Textout(x0+w-5,y0-8,'>');

Textout(x0+w-5,у0+5,'X');

Textout(l-3,b-h-15,'^ Y');

Для виведення графіка синіми пікселями встановити колір clBlueдляPixels.

2. На форму зграфіком вивести аналітичний вигляд функції, графік якої побудовано.

Лістинг програми:

Unit Unit1;

Interface

Uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs;

Type

. . .

Private

Public

End;

Var

Form1: TForm1;

Implementation

{$R *.dfm}

Procedure GrOfFunc;

{тут розміщається текст процедури GrOfFunc — див. вище}

End;

procedure TForml.FormPaint(Sender: TObject);

Begin

GrOfFunc; {виклик процедури GrOfFunc }

End;

procedureTForml.FormCanResize(Sender: TObject; var NewWidth,

NewHeight: Integer; var Resize: Boolean);

Begin

{поновлення побудови на формі нового розміру}

With Form1 do

Canvas.FillRect(rect(0,0, ClientWidth, clientHeight));

GrOfFunc;

End;

End.

Наши рекомендации