Вид окна во время работы программы приведен на рис. 1.25.

Рис. 1.25. Окно программы График функции

// Функция, график которой надо построить
Function f(x:real):real;
begin
f:=2*Sin(x)*exp(x/5);
end;// строит трафик функции
procedure GrOfFunc;
var
xl,x2:real; // границы изменения аргумента функции
yl,y2:real; // границы изменения значения функции
x:real; // аргумент функции
у:real; // значение функции в точке х
dx:real; // приращение аргумента
l,b:integer; // левый нижний угол области вывода графика
w,h:integer; // ширина и высота области вывода графика
mx,my:real; // масштаб по осям X и Y
хО,уО:integer; // точка — начало координатbegin
// область вывода графика "
1:=10; // X — координата левого верхнего
// угла
b:=Forml.ClientHeight-20; // Y — координата левого верхнего
// угла
h:=Forml.ClientHeight-40; // высота
w:=Forml.Width-40; // ширина xl:=0; // нижняя граница диапазона аргумента
х2:=25; // верхняя граница диапазона аргумента
dx:=0.01; // шаг аргумента // найдем максимальное и минимальное значения
// функции на отрезке [xl,x2]
yl:=f(xl); // минимум
y2:=f(xl); //максимум
х:=xl;
repeat
у := f(x);
if у < yl then yl:=y;
if у > у2 then y2:=y;
x:=x+dx;
until (x>=x2);
// вычислим масштаб
my:=h/abs(y2-yl); // масштаб по оси Y
mx:=w/abs(x2-xl); // масштаб по оси X // оси
хО:=1;
уО:=b-Abs(Round(yl*my)); with forml.Canvas do
begin
// оси
MoveTo(l,b);LineTo(l,b-h);
MoveTo(xO,yO);LineTo(xO+w, yO) ;
TextOut (l+5,b-h,FloatToStrF(y2,ffGeneral,6,3) ) ;
TextOut(1+5,b,FloatToStrF(yl,ffGeneral, 6,3) ) ;
// построение графика
x:=xl;
repeat
y:=f(x);
Pixels[xO+Round(x*mx),yO-Round(y*my)]:=clRed;
x:=x+dx;
until (x>=x2);
end;
end;
procedure TForml.FormPaint(Sender: TObject);
begin
GrOfFunc;
end;// изменился размер окна программы
procedure TForml.FormResize(Sender: TObject);
begin
// очистить форму
forml.Canvas.FillRect(Rect(0,O,ClientWidth,ClientHeight));
// построить график
GrOfFunc;
end;