Программирование с использованием подпрограмм
Дата сдачи отчета Выполнил студент группы Э-11
Рудник Р. А.
Допуск к защите
Принял преподаватель
Дата защиты Соболев Д. Н.
Цель работы:изучить типы подпрограмм в Delphi, их структуру, возможности применения, обращение к подпрограммам; получить навыки использования процедур и функций при разработке приложений.
Вычислить значение функции , где x, y, z – минимальные среди элементов на местах с нечетными номерами массивов А, B и С соответственно. |
Таблица переменных основной программы:
Имя переменной в задаче | Имя переменной в программе | Тип переменной | Комментарий |
- | n1,n2,n3 | Byte | Число элементов массивов, исходные данные |
- | Y1 | Real | Значение функции, результат |
a,b,c | a,b,c | Real | Минимумы |
x,y,z | x,y,z | Mas | Исходный массивы |
Таблица переменных процедуры ввода:
Имя переменной в программе | Тип переменной | Комментарий |
n | Byte | Число элементов массива, выходной параметр |
i | Byte | Номер элемента, локальная переменная |
x | Mas | Исходный массив, выходной параметр |
Таблица переменных процедуры вывода:
Имя переменной в программе | Тип переменной | Комментарий |
n | Byte | Число элементов массива, входной параметр |
i | Byte | Номер элемента, локальная переменная |
x | Mas | Исходный массив, входной параметр |
Таблица переменных процедуры вычисления минимума
Имя переменной в программе | Тип переменной | Комментарий |
nom | Byte | Число элементов массива, входной параметр |
min | Real | Минимальный элемент |
i | Byte | Номер элемента, локальная переменная |
x | Mas | Исходный массив, входной параметр |
Схема алгоритма основной программы:
Схема алгоритма процедуры minnn:
рукописные тесты:
1) исходные данные:
n1=4; n2=4; n3=4;
x:1 2 3 4
y:0 2 -1 2
z:3 5 6 8
a=1
b=-1
c=3
ожідаемый результат:
y1= 5,96807473987015
2) исходные данные:
n1=4; n2=4; n3=4;
x:-1 -1 -1 -1
y:0 0 0 0
z:1 1 1 1
a=-1
b=0
c=1
ожідаемый результат:
y1=- 0,47558704557631
Распечатка текста всех подпрограмм:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids;
type
TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
StringGrid1: TStringGrid;
StringGrid2: TStringGrid;
StringGrid3: TStringGrid;
Button1: TButton;
StringGrid4: TStringGrid;
StringGrid5: TStringGrid;
StringGrid6: TStringGrid;
Memo2: TMemo;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
type
mas=array[1..20] of real;
var
a,b,c:real;
x,y,z:mas;
n1,n2,n3:byte;
y1:real;
Procedure VVOD(var n:byte;var x:mas;Ed:TEdit;St:TStringGrid);
var
i:byte;
begin
n:=StrToInt(Ed.Text);
For i:=1 to n do
x[i]:=StrToFloat(St.Cells[i-1,0]);
end;
Procedure VIVOD(n:byte;x:mas;St:TStringGrid);
var
i:byte;
begin
For i:=1 to n do
St.Cells[i-1,0]:=FloatToStr(x[i]);
end;
function minnn (n:byte;x:mas):real;
var
i,nom:byte;
min:real;
begin
min:=x[1];
i:=1;
nom:=1;
While i<=n do
begin
if (min>x[i]) then
begin
min:=x[i];
nom:=i;
end;
i:=i+2;
end;
minnn:=min;
end;
begin
VVOD(n1,x,Edit1,StringGrid1);
VVOD(n2,y,Edit2,StringGrid2);
VVOD(n3,z,Edit3,StringGrid3);
VIVOD(n1,x,StringGrid4);
VIVOD(n2,y,StringGrid5);
VIVOD(n3,z,StringGrid6);
a:=minnn(n1,x);
b:=minnn(n2,y);
c:=minnn(n3,z);
y1:=(3*a)+(3*(sin(b+sqr(c))));
Memo2.Lines.Add('a= '+FloatToStr(a)+' b= '+FloatToStr(b)+' c= '+FloatToStr(c)+' Значение функции='+FloatToStr(y1));
end;
end.
Распечатка формы с результатами работы:
1)
2)
Вывод:изучил типы подпрограмм в Delphi, их структуру, возможности применения, обращение к подпрограммам; получил навыки использования процедур и функций при разработке приложений.