Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Laby_OAiP.pdf
Скачиваний:
31
Добавлен:
24.02.2016
Размер:
1.2 Mб
Скачать

Основы алгоритмизации и программирования в среде Delphi

6.3. Пример написания программы

Задание: написать программу вывода на экран таблицы функции, которую оформить в виде процедуры. В качестве функции использовать по выбору

 

x

k

 

y(x) = ex

или s(x) = å(−1)k

 

. Панель диалога должна иметь вид, как на

k!

 

k=0

 

рис. 6.1.

Рис. 6.1

6.3.1.Создание модуля

Всреде Delphi модули могут создаваться как со своей формой, так и без нее. Для создания нового модуля без своей формы необходимо в меню File выбрать New – Unit. В результате будет создан файл с заголовком Unit Unit2. Имя моду- ля можно изменить на другое, отвечающее внутреннему содержанию модуля, например Unit Matfu. Для этого необходимо сохранить модуль с новым именем

PDF created with pdfFactory Pro trial version www.pdffactory.com

________________________________________________________________________________

(например Matfu.pas). Следует обратить внимание на то, что имя файла должно совпадать с именем модуля.

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

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

Тексты модуля (листинг 6.1) и вызывающей программы (листинг 6.2) приве- дены ниже (получение рекуррентной формулы см. подразд. 3.3).

Листинг 6.1

unit matfu; interface

uses StdCtrls, SysUtils;

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

{Расчет таблицы функции f (табуляция функции)} procedure Tabl(f:fun;xn,xk:extended; m: word; Mem1 : TMemo);

implementation

 

procedure Tabl;

 

var x,y,h: extended;

i : integer;

begin

 

x:=xn; h:=(xn-xk)/m;

 

for i:=1 to m+1 do begin

 

y:=f(x);

Mem1.Lines.Add('x='+FloatToStrf(x,fffixed,8,3)+ ' y='+FloatToStrf(y,fffixed,8,3));

x:=x+h;

end;

end;

end. // Конец модуля matfu

Листинг 6.2

unit Unit6; interface uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, ExtCtrls, Matfu;

type

TForm1 = class(TForm) Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel;

Edit1: TEdit;

Edit2: TEdit;

Edit3: TEdit;

Edit4: TEdit;

43

PDF created with pdfFactory Pro trial version www.pdffactory.com

Основы алгоритмизации и программирования в среде Delphi

RadioGroup1: TRadioGroup; Memo1: TMemo;

BitBtn1: TBitBtn;

BitBtn2: TBitBtn;

procedure FormCreate(Sender: TObject); procedure BitBtn1Click(Sender: TObject); private

{Private declarations } public

{Public declarations } end;

var

Form1: TForm1; xn,xk,e : extended; m : word; implementation

{$R *.dfm}

function sx(x:extended):extended; var a,n,s : extended;

k : integer; begin

k:=-1; a:=1; n:=0; s:=1; try

while (abs(a) > e) do begin n:=n+1;

a:=-a*x/n; s:=s+a;

end; Result:=s;

except

on EInvalidOp do

k:=MessageDlg('Неправильная операция с плавающей точкой. ’+

Продолжить вычисления?',mtError,[mbYes,mbNo],0);

on EOverFlow do

k:=MessageDlg('Переполнение при выполнении операции с’+

плавающей точкой! Продолжить вычисления?',mtError,[mbYes,mbNo],0); else

k:=MessageDlg('Возникла неизвестная исключительная ситуация!’+ ‘ Продолжить вычисления?',mtError,[mbYes,mbNo],0);

end; case k of

mrYes : Result:=0; mrNo : Halt(1); end;

end;

PDF created with pdfFactory Pro trial version www.pdffactory.com

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]