Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Сборник задач Бабалова.doc
Скачиваний:
86
Добавлен:
04.06.2015
Размер:
1.16 Mб
Скачать

Пример 2.1

{ Разработать графический объект, позволяющий вычислить значения некоторой функции, Построить график функции, вычислить среднее значение функции на отрезке. Данный пример можно рассматривать как попытку создания объекта-функции.}

Program Number_2_1;

uses Graph,CRT;

type Fun=object

X,y: real;

cx,cy: integer;

Constructor Init;

Destructor Done;

Function Fun_sf(xx:real):real;

Function Fun_sr(x1,x2:real):real;

Procedure Graph_Fun;

Procedure Fun_id;

end;

Constructor Fun.Init;

begin

clrscr;

Writeln('Установка начальных значений ');

x:=20;{задаем начальный шаг для вычисления }

y:=20; {функции и начальные координаты для графика}

cx:=320;{координата оси х}

cy:=400; {координата осо у}

end;

Function Fun.Fun_sf(xx:real):real;

begin

Fun_sf:=sqr(xx)+6*xx+9;

end;

Function Fun.Fun_sr(x1,x2:real):real;

Var f1,f2:real;

begin

f1:=Fun_sf(x1);

f2:=Fun_sf(x2);

Fun_sr:=(f2-f1)/(x2-x1);

end;

Procedure Fun.Graph_fun;

Var gd,gm:integer;

Xb,xe,I,j:integer;

c:char; st:string;

begin

gd:=detect;

initgraph(gd,gm,'c:\tpp\bgi');

setcolor(yellow);

line(0,cy,639,cy); {ось х}

line(cx,0,cx,479); {ось у}

fun_id; {установка начальных значений}

for xb:=1 to 31 do

begin

str(xb-17,st);

outtextxy(20*(xb-1),415,st);

end;

xb:=0;xe:=279;

for j:=1 to 2 do

begin

for i:= xb to xe do

begin

x:=-19+i/20;

y:=Fun_sf(x);

putpixel(i,-round(y*20)+300,yellow);

end;

xb:=281;

xe:=639;

end;

end ;

Procedure fun.fun_id;

begin

outtextxy(10,20,'x**2+6*x+9');

end;

Destructor fun.done;

begin

writeln('завершение работы');

end;

{ текст основной программы, которая позволит, построить график функции и найти требуемые значения}

var

f:fun;

begin

f.init;

writeln('Значение функции в точке x= ',f.fun_sf(3.5):5:3);

writeln('Среднее значение функции на отрезке[2,7]:=',

f.fun_sr(2,7):5:3);

readln;

f.Graph_fun;

readln;

closegraph;

f.done;

readln;

end.