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.