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

8.1.1. Розміщення компонентів на Формі

Label

Edit

Button

Розмістимо на Формі компоненти Label, Edit, SpinEdit, Button та Memo.

Р

Memo

Memo

ис. 8.1

Збережемо модуль під ім'ям UnModul (текст модуля приведений в п.8.1.4).

8.1.2. Створення модуля і підключення його до проекта

Відповідно до завдання створимо модуль, в якому обчислення значень оформимо у вигляді функції, а обчислення - у вигляді процедури. Для створення модуля відкриємо в головному меню пункт File і клацнемо “мишею” на опції New.(Новий.). Delphi відкриє панель New Items(Репозиторій), в якій зробимо активною піктограму Unit(Модуль) і натиснемо кнопку OK. Відкриється вікно з “порожнім” модулем Unit2. За допомогою опції Save As. меню File збережемо модуль в теці з файлами проекта, привласнивши йому ім'я, наприклад, UnFuncProc.

У цьому модулі оператори обчислення Y(x) у вигляді підпрограми-функції F і операторів обчислення S(x) у вигляді підпрограми-процедури Sum оформимо за правилами створення модулів (текст модуля UnFuncProc приведений в п.8.1.3).

Для підключення модуля UnFuncProc до проекта необхідно зробити активним вікно з текстом модуля UnModul, потім в меню File вибрати опцію Use Unit.и у вікні Use Unit, що відкрилося, вказати ім'я використовуваного модуля – UnFuncProc. Переконаєтеся в тому, що в розділі Implementation модуля UnModul з'явився оператор Uses UnFuncProc;, який Delphi вставила в текст модуля UnModul.

Відкрийте головний файл проекта і переконайтеся в тому, що проект не містить сторонніх модулів і файлів.

8.1.3. Текст модуля UnFuncProc

unit UnFuncProc;

interface

var

n:integer; // кількість доданків в сумі S

Function F(x:extended):extended;

Procedure Sum(x:extended;Var s:extended);

Implementation Function F(x:extended):extended;

begin

result:=(1-x*x*0.5)*cos(x)-0.5*x*sin(x);

end;

Procedure Sum(x:extended;Var s:extended);

var

c:extended;

k:integer;

begin

c:=-x*x*0.5;

S:=1;

for k:=1 to n do

begin

s:=s+c*(2*k*k+1);

c:=-c*x*x/((2*k+1)*(2*k+2));

end;

end;

end.

8.1.4. Текст модуля UnModul

Unit UnModul;

interface

uses

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

StdCtrls, ExtCtrls, Spin, Buttons;

type

TForm1 = class(TForm)

Memo1: TMemo;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Edit1: TEdit;

Edit2: TEdit;

SpinEdit1: TSpinEdit;

BitBtn1: TBitBtn;

procedure FormCreate(Sender: TObject);

procedure BitBtn1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

Type func=function(x:extended):extended; // функціональний тип

proc=procedure(x:extended;Var s:extended); // процедурний тип

var

Form1: TForm1;

implementation

uses UnFuncProc; // Delphi підключає модуль UnFuncProc

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);

begin

SpinEdit1.text:='4'; // початкове значення N

Edit1.text:=’0.1’; // початкове значення Xn

Edit2.text:=’2.0’; // початкове значення Xk

Memo1.Clear;

Memo1.Lines.Add('Лабораторна робота №8 - Створення модулів');

end;

{ У процедурі Tablica обчислюється і виводиться таблиця значень x, S(x) і Y(x)}

procedure Tablica(Sum:proc;F:func;n:integer;xn,xk,h:extended);

var

x,y,s:extended;

begin

Form1.Memo1.Lines.Add(#9+'x'+#9+'S'+#9+'Y');// заголовок таблиці

x:=xn;

repeat // цикл за x

Sum(x,s); // виклик процедури Sum для обчислення S(x)

y:=F(x); // звернення до функції F для обчислення Y(x)

Form1.Memo1.Lines.Add(#9+FloatToStrF(x,ffFixed,5,2) // виведення x

+#9+FloatToStrF(s,ffFixed,6,3) // виведення S

+#9+FloatToStrF(у,ffFixed,6,3)); // виведення Y

x:=x+h;

until x>xk;

end;

procedure TForm1.BitBtn1Click(Sender: TObject);

var

xn,xk,h:extended;

begin

n:=StrToInt(SpinEdit1.Text); xn:=StrToFloat(Edit1.Text); xk:=StrToFloat(Edit2.Text); h:=(xk-xn) *0.1; // крок h

Tablica(Sum,F,n,xn,xk,h); // виклик процедури Tablica для обчислення таблиці

end;

end.