uses Graph;
var
x1,x2:real;{границы измерения аргумента функции}
y1,y2:real;{значения функции}
x:real;{аргумент функции}
y:real;{знначении функции в точке x}
dx:real;{приращение аргумента}
l,b:integer;{левый нижий угол области вывода графика функции}
w,h:integer;{ширина и высота области вывода графика}
mx,my:real;{масштаб}
x0,y0:integer;{наало координат}
st:string;{изображение числа}
grDriver:integer;
grMode:integer;
ErrCode:integer;
{функция, которую надо построить}
Function f(x:real):real;
begin
f:=x*x+2;
end;
BEGIN
grDriver:=VGA;
grMode:=VGAHi;
InitGraph(grDriver,grMode,'{здесь пишешь адрес, где нах-ся файл bgi}');
ErrCode:=GraphResult;
if ErrCode<> grOk then Halt(1);
l:=300;
b:=400;
h:=200;
w:=200;
x1:=0;
x2:=25;
dx:=0.01;
{найдем макси мин значения фукции}
y1:=f(x1);
y2:=f(x1);
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:=1;
y0:=b-abs(Round(y1*my));
Line(l,b,l,b-h);
Line(x0,y0,x0+w,y0);
Str(y2:5:1,st);
OutTextXY(l+5,b-h,st);
Str(y1:5:1,st);
OutTextXY(l+5,b,st);
{построение графика}
x:=x1;
repeat
y:=f(x);
PutPixel(x0+Round(x*mx),y0-Round(y*my),15);
x:=x+dx;
until x>=x2;
readln;
CloseGraph;
END.