Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка - Лабораторні роботи.doc
Скачиваний:
16
Добавлен:
25.04.2019
Размер:
2.12 Mб
Скачать

Лабораторна робота №14

Тема роботи: Програмування підпрограм та модулів.

Мета роботи: вивчити прийоми створення підпрограм і модулів. Скласти і налагодити програму, що використовує зовнішній модуль Unit з підпрограмою.

Рекомендована література:

  1. Бобровский С. И. Delphi 7. Учебный курс. - С.Пб. Питер, 2004. – 735 с.

  2. Я. М. Глинский Інформатика. Алгоритмізація і програмування. Книжка 1. - Львів, 2003. – 198 с.

  3. Симонович С.В., Евсеев Г.А. Занимательное программирование:Delphi. – М.: АСТ-Пресс Книга; Издательство «Развитие», 2003. – 368 с.

  4. Кен Хендерсон. Руководство Разработчика баз данных в Delphi 2. – К. Диалектика, 1997, - 543 с.

Теоретичні відомості.

Підпрограма - це певним чином оформлена група операторів, що може бути викликана будь-яка кількість разів з будь-якої точки основної програми. Підпрограми підрозділяються на процедури і функції. Процедури і функції можуть бути використані як формальні параметри підпрограм. Для цього визначається тип:

Type <ім'я>= function ([список формальних параметрів] ):<тип результату>;

або

Type <ім'я>= procedure ([список формальних параметрів]);

У мову Object Pascal убудований ряд найбільше часто уживаних процедур і функцій, що є частиною мови і викликаються без попереднього визначення в розділі описів.

Модуль - програмна одиниця, що автономно компілюється та включає в себе процедури, функції, а також різні компоненти розділу описів.

Хід виконання роботи.

Завдання: написати програму виведення на екран таблиці функцій, які оформити у видгляді процедури. Як функцію використовувати на вибір Tg(x), Ch(x) і sin (x).

Створення модуля: Створюючи модуль, варто звернути увагу на те, що він не повинний мати своєї форми. Система DELPHI при початковому завантаженні автоматично створює шаблон програми, що має у своєму складі форму, файл проекту і т.д. Тому що модуль складається тільки з одного файлу, то необхідно перед його створенням знищити заготовок файлу проекту і форму. Для цього в меню File вибрати Close All, файл проекту не зберігати.

Для створення модуля в меню File вибрати File New, і потім у репозиторії – піктограму. У результаті буде створений файл із заголовком Unit Unit1. Ім'я модуля можна перемінити на інше, що відповідає внутрішньому змістові модуля, наприклад Unit Matfu;. Потім необхідно зберегти файл з ім'ям, що збігається з ім'ям заголовка модуля: Matfu.pas. Варто звернути увагу на те, що ім'я файлу повинне збігатися з ім'ям модуля, інакше DELPHI не зможе підключити його до іншої програми.

Підключення модуля: Для того щоб підключити модуль до проекту, необхідно в меню Project вибрати опцію Add to Project і вибрати файл, що містить модуль. Після цього в розділі Uses додати ім'я модуля, що підключається - MatFu. Тепер у проекті можна використовувати функції, що утримуються в модулі.

Панель діалогу буде мати вигляд, показаний на мал.14.1.

Рис.14.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, MatFunc;

type

TForm1 = class(TForm)

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Edit1: TEdit;

Edit2: TEdit;

Edit3: TEdit;

Memo1: TMemo;

Button1: TButton;

Button2: TButton;

RadioGroup1: TRadioGroup;

Procedure FormCreate(Sender: TObject);

Procedure Button1Click(Sender: TObject);

Procedure Button2Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

type

func = function(x:extended) : extended;

var

Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);

begin

Edit1.Text := '0';

Edit2.Text := '2';

Edit3.Text := '0.2';

Memo1.Clear;

RadioGroup1.ItemIndex := 0;

end;

procedure Tabl(f: func; xn, xk, h: extended);

var

x, y : extended;

begin

x := xn;

Repeat

y := f(x);

Form1.Memo1.Lines.Add('x=' + FloatToStrF(x,fffixed, 8,2)+

' y=' + FloatToStrF(y,fffixed, 8,2));

x := x + h;

Until (x > xk);

end;

procedure TForm1.Button1Click(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);

end;

end;

procedure TForm1.Button2Click(Sender: TObject);

begin

Halt

end;

end.