lab_pr_ta / Лаб_та_пр_9
.docЛАБОРАТОРНА РОБОТА №9
Тема роботи: Програмування підпрограм та модулів.
Мета роботи: вивчити прийоми створення підпрограм і модулів. Скласти і налагодити програму, що використовує зовнішній модуль Unit з підпрограмою.
Рекомендована література:
-
Бобровский С. И. Delphi 7. Учебный курс. - С.Пб. Питер, 2004. – 735 с.
-
Я. М. Глинский Інформатика. Алгоритмізація і програмування. Книжка 1. - Львів, 2003. – 198 с.
-
Симонович С.В., Евсеев Г.А. Занимательное программирование:Delphi. – М.: АСТ-Пресс Книга; Издательство «Развитие», 2003. – 368 с.
-
Кен Хендерсон. Руководство Разработчика баз данных в Delphi 2. – К. Диалектика, 1997, - 543 с.
Контрольні запитання:
-
Що називають підпрограмою?
-
Які види підпрограму мові Pascal Ви знаєте?
-
Які види параметрів Ви знаєте?
-
Які види змінних Ви знаєте?
-
Що називають моделем?
-
Яка структура модуля?
-
Як організувати модуль у Delphi?
Теоретичні відомості.
Підпрограма - це певним чином оформлена група операторів, що може бути викликана будь-яка кількість разів з будь-якої точки основної програми. Підпрограми підрозділяються на процедури і функції. Процедури і функції можуть бути використані як формальні параметри підпрограм. Для цього визначається тип:
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. Тепер у проекті можна використовувати функції, що утримуються в модулі.
Панель діалогу буде мати вигляд, показаний на мал.8.1.
Рис.9..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.
Індивідуальні завдання.
Виберіть варіант задачі з завдань, приведених у роботі 4. Передбачите можливість вибору функції, для якої буде розраховуватися таблиця. Функції помістіть в окремий модуль. Викликати обрану функцію повинна процедура, що використовує як вхідний параметр ім'я відповідної функції.