unitUnModul;
Interface
Uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, Spin;
Type
TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
SpinEdit1: TSpinEdit;
Edit1: TEdit;
Edit2: TEdit;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
Memo1: TMemo;
procedure FormCreate(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
Private
{ Private declarations }
Public
{ Public declarations }
end;
Type
func=function(x:real):real; // функциональный тип
proc=procedure(x:real; var s:real); // процедурный тип
Var
Form1: TForm1;
Implementation
uses UnFuncProc; // Delphi подключает модуль
// UnFuncProc
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
Begin
SpinEdit1.Text:='8'; // начальное значение N
Edit1.Text:='0,1'; // начальное значение Xn
Edit2.Text:='1'; // начальное значение Xk
Memo1.Clear;
end;
{В процедуре Tab вычисляется и выводитчя таблица значений x, S(x), Y(x)}
procedure Tab(Summa:proc;F:func;n:byte;xn,xk,h:real);
Var
x,s,y:real;
Begin
Form1.Memo1.Lines.Add(#9+'X'+#9+'S'+#9+'Y'); // заголовок таблицы
x:=xn;
repeat// цикл по х
Summa(x,s); // вызов процедуры Summa для вычисления S(x)
y:=F(x); // обращение к функции F для вычисления Y(x)
Form1.Memo1.Lines.Add(#9+FloatToStrF(x,ffFixed,6,2)+ // вывод x
#9+FloatToStrF(s,ffFixed,6,3)+ // вывод S
#9+FloatToStrF(y,ffFixed,6,3)); // вывод Y
x:=x+h;
until x>xk;
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
Var
xn,xk,x,h,y,s,p,ab,ot:real;
n,i:byte;
Begin
n:=StrToInt(SpinEdit1.Text);
xn:=StrToFloat(Edit1.Text);
xk:=StrToFloat(Edit2.Text);
h:=(xk-xn)/n; // шаг h
Memo1.Clear;
Tab(Summa,F,n,xn,xk,h); // вызов процедуры Tab
end;
End.