
Лаба4 Вар1 отчет
.docxСанкт-Петербургский Политехнический университет Петра Великого
Институт машиностроения, материалов и транспорта
Высшая школа машиностроения
ОТЧЕТ
по лабораторной работе №4
Дисциплина: Цифровой практикум
Тема: Модули
(Вариант 1)
Студент группы 3331505/10001 Гричачина А.А.
Преподаватель Скрябнев А.Ю.
Санкт-Петербург
2021 г.
Цель работы приобретение умений разработки модулей.
Задача: Создать пользовательский модуль и перенести в него пользовательские подпрограммы из предыдущей работы. Подключить модуль
к обоим проектам.
Текст пользовательского модуля:
Текст пользовательского модуля программы с использованием функции без объявления переменных в нем:
UNIT My_Unit;
INTERFACE
function drob(t,u:real):real;
IMPLEMENTATION
function drob(t,u:real):real;
var t1, t2:real;
begin
t1:= (sqrt(abs(t))+sqr(t));
t2:= u;
drob:=t1/t2;
end;
END.
Текст пользовательского модуля программы с использованием процедуры и объявлением переменных в нем:
unit My_unit;
INTERFACE
const a=5;b=4;c=2;
var x,y,z,z1,z2,z3:real;
procedure drob(t,u:real; var d:real);
IMPLEMENTATION
var t1, t2:real;
procedure drob(t,u:real; var d:real);
begin
t1:= (sqrt(abs(t))+sqr(t));
t2:= u;
d:=t1/t2;
end;
END.
Текст модулей проектов:
Текст модуля программы с объявлением переменных и использованием функции:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, My_Unit;
type
TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Label3: TLabel;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
const a=5;b=4;c=2;
var x,y,z,z1,z2,z3:real;
begin
x:=StrToFloat(Edit1.Text);
y:=StrToFloat(Edit2.Text);
z1:=drob(x,a);
z2:=drob(x+c,c*a);
z3:=drob(c*y,b);
z:=z1-z2+z3;
Label4.Caption:=FloatToStr(z);
end;
procedure TForm1.Button2Click(Sender: TObject);
const a=5;b=4;c=2;
var x,y,z,z1,z2,z3:real;
begin
x:=StrToFloat(Edit1.Text);
y:=StrToFloat(Edit2.Text);
z1:=drob(x,a);
z2:=drob(x+c,c*a);
z3:=drob(c*y,b);
z:=z1-z2+z3;
Label5.Caption:=FloatToStrF(z,ffExponent,10,5);
end;
procedure TForm1.Button3Click(Sender: TObject);
const a=5;b=4;c=2;
var x,y,z,z1,z2,z3:real;
begin
x:=StrToFloat(Edit1.Text);
y:=StrToFloat(Edit2.Text);
z1:=drob(x,a);
z2:=drob(x+c,c*a);
z3:=drob(c*y,b);
z:=z1-z2+z3;
Label6.Caption:=FloatToStrF(z,ffFixed,5,3);
end;
end.
Текст модуля программы без объявления переменных с использованием процедуры:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, My_unit;
type
TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Label3: TLabel;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
x:=StrToFloat(Edit1.Text);
y:=StrToFloat(Edit2.Text);
drob(x,a,z1);
drob(x+c,c*a,z2);
drob(c*y,b,z3);
z:=z1-z2+z3;
Label4.Caption:=FloatToStr(z);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
x:=StrToFloat(Edit1.Text);
y:=StrToFloat(Edit2.Text);
drob(x,a,z1);
drob(x+c,c*a,z2);
drob(c*y,b,z3);
z:=z1-z2+z3;
Label5.Caption:=FloatToStrF(z,ffExponent,10,5);
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
x:=StrToFloat(Edit1.Text);
y:=StrToFloat(Edit2.Text);
drob(x,a,z1);
drob(x+c,c*a,z2);
drob(c*y,b,z3);
z:=z1-z2+z3;
Label6.Caption:=FloatToStrF(z,ffFixed,5,3);
end;
end.
Пример работы, с указанием компонентов формы:
Label1

Label3

Label4
Edit1
Label5
Label2
Edit2
Label6
Button1
Button2
Button3
Итог выполнения программы:
Вывод: Чтобы не описывать типовые действия в каждом проекте целесообразно их однократно оформить в виде подпрограмм и поместить в собственный модуль, а затем, подключая его к различным проектам, использовать ресурсы этого модуля. Кроме того, проекты с большими объёмами программного кода
удобно разбить на несколько файлов. Выносимые части кода из проекта можно также разместить в собственном модуле.