Подключение модуля

Для того чтобы подключить модуль к проекту, необходимо в меню Project выбрать опцию Add to Project… и выбрать файл, содержащий модуль. После этого в разделе Uses добавить имя подключаемого модуля – MatFu. Теперь в проекте можно использовать функции, содержащиеся в модуле.

 
 

Панель диалога будет иметь следующий вид (рис. 7.1).

Тексты модуля и вызывающей программы приведены ниже.

Текст модуля:

unit Matfu;

 

interface

 

Function Tg(x:extended) : extended; // Функция для вычисления тангенса

Function Ch(x:extended) : extended; // Функция для вычисления гиперболического синуса

Function Sin2(x:extended) : extended; // Функция для вычисления квадрата синуса

 

implementation

Function Tg;

begin

Result:=Sin(x)/Cos(x);

end;

Function Ch;

begin

Result:=(exp(x)-exp(-x))/2;

end;

Function Sin2;

begin

Result:=sqr(sin(x));

end;

 

end.

 

Текст вызывающей программы:

unit Unit1;

 

interface

 

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

StdCtrls, Buttons, ExtCtrls,MatFu;

 

type

TForm1 = class(TForm)

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Edit1: TEdit;

Edit2: TEdit;

Edit3: TEdit;

Memo1: TMemo;

BitBtn1: TBitBtn;

BitBtn2: TBitBtn;

RadioGroup1: TRadioGroup;

procedure FormCreate(Sender: TObject);

procedure BitBtn1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

Type

fun = function(x:extended):extended; // Объявление типа функция

var

Form1: TForm1;

 

implementation

 

{$R *.DFM}

 

procedure TForm1.FormCreate(Sender: TObject);

begin

Edit1.Text:='0';

Edit2.Text:='3';

Edit3.Text:='0,3';

Memo1.Clear;

RadioGroup1.ItemIndex:=0;

end;

 

procedure Tabl(f:fun;xn,xk,h:extended); // Расчет таблицы

var x,y: extended;

begin

x:=xn;

repeat

y:=f(x);

Form1.Memo1.Lines.Add('x='+FloatToStrf(x,fffixed,8,3)+

' y='+FloatToStrf(y,fffixed,8,3));

x:=x+h;

until (x>xk);

end;

 

procedure TForm1.BitBtn1Click(Sender: TObject);

var xn,xk,h : extended;

begin

xn:=StrToFloat(Edit1.Text); // Начальное занчение интервала

xk:=StrToFloat(Edit2.Text); // Конечное значение интервала

h:=StrToFloat(Edit3.Text); // Шаг расчета

case RadioGroup1.ItemIndex of // Выбор функции

0 : Tabl(tg,xn,xk,h);

1 : Tabl(ch,xn,xk,h);

2 : Tabl(sin2,xn,xk,h);

end;

end;

end.