Программирование на Object Pascal в среде Delphi (Radio8)

Посмотреть архив целиком




Лабораторная работа №8

Программирование алгоритмов с использованием функций и процедур. создание модулей


Цель лабораторной работы: освоить методику создания модулей, содержащих процедуры и функции, и использования их в проекте.

8.1. Пример создания приложения

Задание: создать Windows-приложение которое выводит таблицу значений функции и ее разложения в ряд в виде суммы для значений x от xn до xk c шагом h=(xk - xn)/10. Создать модуль, в котором вычисление значений оформить в виде функции, а вычисление - в виде процедуры. Подключить модуль к проекту и выполнить созданное приложение.

Один из возможных вариантов панели интерфейса создаваемого приложения показан на рис.8.1.

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

Label

Edit

Button


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


Р

Memo

ис. 8.1

Сохраним модуль под именем UnModul (текст модуля приведен в п.8.1.4).

8.1.2. Создание модуля и подключение его к проекту

В соответствии с заданием создадим модуль, в котором вычисление значений оформим в виде функции, а вычисление - в виде процедуры. Для создания модуля откроем в главном меню пункт File и щелкнем “мышью” на опции New…(Новый…). Delphi откроет панель New Items(Репозиторий), в которой сделаем активной пиктограмму Unit(Модуль) и нажмем кнопку OK. Откроется окно с пустым модулем Unit2. С помощью опции Save As… меню File сохраним модуль в папке c файлами проекта, присвоив ему имя, например, 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(y,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.

8.2. Выполнение индивидуального задания

По указанию преподавателя выберите из таблицы два варианта индивидуальных заданий. Создайте модуль, в котором вычисление значений реализуйте в виде подпрограммы-процедуры, а вычисление значений - в виде подпрограммы-функции. На панели интерфейса установите компонент, с помощью которого реализуйте возможность выбора соответствующего варианта задания и вывод таблицы значений , где i-номер варианта. Созданный модуль подключите к проекту и выполните приложение.

Индивидуальные задания

В заданиях необходимо вывести на экран таблицу значений функции Y(x) и ее разложения в ряд S(x) для значений x от до с шагом .

Близость значений S(x) и Y(x) во всем диапазоне значений x указывает на правильность вычисления S(x) и Y(x).


S(x)

n

Y(x)


1


0.1


1


8


2


18


3


6


4


0.1


0.8


12



5


0.1


0.8


16



6


0.1


1


14




Случайные файлы

Файл
128705.rtf
115553.rtf
87685.doc
9463-1.rtf
19390.rtf