3.6 Подпрограммы
Подпрограмма – это логически законченная и специальным образом оформленная группа операторов, имеющая имя. Подпрограмму можно вызывать неограниченное число раз из различных частей программы. Использование подпрограмм позволяет улучшить структуру программы и сократить ее размер.
По структуре подпрограмма почти полностью аналогична программе. Она тоже содержит заголовок и блок, однако в блоке подпрограммы отсутствует раздел подключения модулей. Кроме того, заголовок подпрограммы по своему оформлению отличается от заголовка программы.
Работа с подпрограммой включает два основных этапа:
описание подпрограммы;
вызов подпрограммы.
Любая подпрограмма должна быть предварительно описана, после чего до пускается ее вызов. При описании под программы задаются ее имя, список параметров и дейст вия, выполняемые подпрограммой. При вызове подпрограммы указывают имя подпрограммы и список аргументов ( фактиче ских параметров), передаваемых подпрограмме для работы.
В различных модулях Delphi имеется много стандартных подпрограмм, которые можно вызывать без предварительного описания. Некоторые из них приведены при описании типов данных и выражений. Кроме того, программист может создавать свои подпрограммы, которые называются пользовательскими .
Подпрограммы делятся на процедуры и функции, имеющие много общего. Основное различие между нимизаключается в том, что функция может под своим именем возвращать значение в качестве результата, поэтому ее можно использовать как операнд выражения.
С подпрограммой взаимодействие может осуществляться по управлению и по данным. Взаимодействие по управлению– это передача управления из программы в подпрограмму и организация возврата в программу. Взаимодействие по данным заключается в передаче подпрограмме данных, над которыми она выполняет определенные действия. Такое взаимодействие может осуществляться следующими основными способами:
с использованием файлов;
с помощью глобальных переменных;
с помощью параметров.
Наиболее часто применяется последний способ. При этом различают параметры и аргументы. Параметры(формальные параметры) являются элементами подпрограммы и используются при описании алгоритма, выполняемого подпрограммой.
Аргументы (фактические параметры) являются элементами вызывающей программы. Они замещают параметры при вызове подпрограммы. При этом осуществляется проверка на соответствие типов и количества параметров и аргументов. Имена параметров и аргументов могут различаться, однако их количество и порядок следования должны совпадать, а типы параметров и соответствующих им аргументов должны быть совместимыми.
Для прекращения работы подпрограммы можно использовать процедуру Exit, которая прерывает выполнение операторов подпрограммы и возвращает управление вызывающей программе.
Подпрограммы можно вызывать не только из программы, но и из других подпрограмм.
Процедуры
При описании процедуры указывается заголовок и блок, который не отличается от блока программы. Заголовок состоит из ключевого слова procedure , имени процедуры и необязательного списка параметров в круглых скобках с указанием типа каждого параметра. Формат описания процедуры:
Procedure <Имя процедуры > [(формальные параметры)];
<разделы описаний>
begin
<раздел операторов>
end ;
Для обращения к процедуре используется оператор вызова процедуры. Он состоит из имени процедуры и списка аргументов, заключенного в круглые скобки.
Пример .
Program One;
var z, f, z1, f1, a, b, c, d: real; . . .
procedure Calculation(x, y: real; var root, dif: real);
var s: real;
begin
s:=x*x + y*y;
root:= sqrt (s);
dif:= x - y;
end;
Begin
. . .
Calculation(1.25, 3.48, z, f);
. . .
Calculation(0.16, 2.8, z1, f1);
. . .
Calculation(a+b, a-b, c, d);
. . .
writeln(‘z=’, z:5:3, ‘ f=’, f:5:3, ‘ z1=’, z1:5:3, ‘ a=’, a:6:4, ‘ b=’, b:6:4);
. . .
End .
Примечание. Если процедура возвращает в основную программу какие-то значения, соответствующие параметры должны быть описаны как параметры-переменные со словом var .