
Лаба3 Вар1 отчет
.docxСанкт-Петербургский Политехнический университет Петра Великого
Институт машиностроения, материалов и транспорта
Высшая школа машиностроения
ОТЧЕТ
по лабораторной работе №3
Дисциплина: Цифровой практикум
Тема: Подпрограммы
(Вариант 1)
Студент группы 3331505/10001 Гричачина А.А.
Преподаватель Скрябнев А.Ю.
Санкт-Петербург
2021 г.
Цель работы приобретение умений разработки подпрограмм.
Задача: Разработать два проекта для вычисления значения выражения
предыдущей лабораторной работы с использованием функции и процедуры.
Текст модуля:
Текст модуля программы с использованием функции:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
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}
function drob(t,u:real):real;
var t1,t2:real;
begin
t1:= (sqrt(abs(t))+sqr(t));
t2:= u;
drob:= t1/t2;
end;
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;
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 drob(t,u:real;var d:real);
var t1,t2:real;
begin
t1:= (sqrt(abs(t))+sqr(t));
t2:= u;
d:=t1/t2;
end;
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);
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);
const a=5;b=4;c=2;
var x,y,z,z1,z2,z3:real;
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);
const a=5;b=4;c=2;
var x,y,z,z1,z2,z3:real;
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.
Б
Начало
a=5;b=4; c=2;
ввод x, y
Вывод z
Конец

Начало
Конец
или
вычисление
значения z1
вычисление
значения z2
вычисление
значения z3
лок-схема алгоритма вычисления значения выражения:Пример работы, с указанием компонентов формы:
Label1

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