Процедуры
При описании процедуры указывается заголовок и блок, который не отличается от блока программы. Заголовок состоит из ключевого слова 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.
Описание функции состоит из заголовка и блока. Заголовок содержит ключевое слово function, имя функции, необязательный список формальных параметров, заключенный в круглые скобки, и тип значения, возвращаемого функцией. Формат описания функции:
|
|
function <Имя > [(формальные параметры)]:<тип результата>;
<разделы описаний>
begin
<раздел операторов>
end;
Возвращаемое значение может иметь любой тип, кроме файлового.
Блок функции представляет собой локальный блок, по структуре аналогичный блоку процедуры. В теле функции должен быть хотя бы один оператор присваивания, в левой части которого стоит имя функции. Именно он и определяет значение, возвращаемое функцией. Если таких операторов несколько, то результатом выполнения функции будет значение последнего оператора присваивания. В этих операторах вместо имени функции можно указывать переменную result, которая создается в качестве синонима для имени функции. В отличие от имени функции, переменную result можно использовать в выражениях блока функции. С помощью переменной result можно в любой момент получить внутри блока доступ к текущему значению функции.
Замечание. Имя функции можно использовать в выражениях блока функции, однако эти приводит к рекурсивному вызову функции самой себя.
Вызов функции осуществляется по ее имени с указанием в круглых скобках списка аргументов, которого может и не быть. Аргументы должны соответствовать формальным параметрам, указанным в заголовке при описании функции, и иметь те же типы. В отличие от процедуры, имя функции может входить как операнд в выражения.
Пример.
Program Two;
var x, y, z, z1, z2: real;...
function Gamma(a, b: real): real;
begin
Gamma:= sqrt(a*a + b*b);
end;
Begin
...
z:=Gamma(1.5, 3.48);
writeln (‘z=’, z:5:3);
...
z1:=Gamma(0.16, 2.8);
...
writeln (sin(Gamma(0.1, 0.2)):6:4);
...
End.