{ Процедурний тип }
TYPE TFun = Function ( x: double; t:integer): double;
Function F1(x: double; t:integer): double;
Function Integral(a, b, e: double; t:integer; F: TFun): double;
Implementation
{ Підінтегральна функція }
Function F1(x: double; t:integer): double; FAR;
var i:integer;
begin
Result:=1;
for i:=1 to t do
Result:=Result*x;
end;
{ Функція обчислення інтеграла}
Function Integral(a, b, e: double; t:integer; F: TFun): double;
Const n=10;
Var x, h, d, s2, s2n: double;
i, m: integer;
begin
m:=n;
repeat
h:=(b-a)/m;
s2n:=(F(a, t)+F(b, t))/2;
for i:=1 to m-1 do
begin
x:=a+i*h;
s2n:= s2n+F(x, t);
end;
s2n:= s2n*h;
if m=n then d:=e+1 else d:=abs(s2n-s2);
s2:=s2n; m:=m*2;
until d<e;
result:=s2n;
end;
End.
Тепер можна написати обробники кнопок Обчислити та Вихід. Для цього потрібно вибрати відповідну кнопку, перейти в Інспекторі Об’єктів на сторінку Evants та двічі клацнути лівою клавішею мишки в полі значення події OnClick. В результаті з’явиться заготовка, в яку потрібно вписати текст обробника. Тексти обробників містяться у програмному модулі ULAB9_1.
{Обробник кнопки Обчислити}
procedure TFIN1.Button1Click(Sender: TObject);
VAR a, b, e: double;
t, t1, t2, h:integer;
i1: double;
BEGIN
{Введення початкових даних}
a:=StrToFloat(Edit1.Text);
b:=StrToFloat(Edit2.Text);
e:=StrToFloat(Edit3.Text);
t1:=StrToInt(Edit4.Text);
t2:=StrToInt(Edit5.Text);
h:=StrToInt(Edit6.Text);
t:=t1;
while (t<=t2) do
begin
{Обчислення інтеграла}
i1:= Integral(a, b, e, t, F1);
{Виведення результату}
Memo1.Lines.Add('t='+IntToStr(t)+' I='+FloatToStr(i1));
t:=t+h;
end;
end;
{Обробник кнопки Вихід}
procedure TFIN1.Button2Click(Sender: TObject);
begin
Close;
end;
Для завершення розробки проекту потрібно командою Project!Add to Project модуль UINTEG включити в проект і командою File!Use Unit підключити до головного модуля ULAB9_1. Тепер командою Run!Run проект можна запустити на виконання. Результат роботи програми приведений на Рис. 9.1.