Параметры
и аргументы
Параметры — это
элементы подпрограммы, которые используются при описании блока подпрограммы.
Аргументы — это
элементы, которые указываются при вызове подпрограмм. Они замещаются соответствующими
параметрами подпрограммы.
В качестве параметров могут
выступать:
Параметрами могут быть
элементы абсолютно любого типа.
Все параметры разделяются
на группы, в зависимости от того, чем они являются:
Параметры-значения —
это параметры, перед которыми в заголовке подпрограммы не стоит слово var
или const
. За параметрами-значениями через двоеточие ставится их
тип. Например:
function Max(A: array
of Real; N: Integer): Real;
Здесь массив А
и переменная N
являются параметрами-значениями. Параметры-значения
рассматриваются компилятором как локальные переменные, которые присутствуют
только внутри подпрограммы. Все изменения этих параметров происходят только
внутри подпрограммы и никак не влияют на значения соответствующих им аргументов.
Параметры-константы
— это параметры, перед которыми в заголовке подпрограммы стоит слово const
.
За параметрами-константами через двоеточие ставится их тип. Например:
procedure MyProc1(const
X: Integer);
Здесь единственный параметр
х
является параметром-константой. Значение параметра-константы
в теле подпрограммы изменить нельзя. Параметры-константы применяются для того,
чтобы запретить нежелательные изменения параметров в подпрограмме. Кроме того,
использование параметров-констант позволяет компилятору создать более эффективный
код.
Параметры-переменные
— это параметры, перед которыми в заголовке подпрограммы стоит слово var.
За параметрами-переменными через двоеточие ставится их тип. Например:
procedure MyProc2(var
a,b:char; c,d:string);
В этом примере параметры
а
и b
являются параметрами-переменными.
Параметры-переменные используются,
когда необходимо передать значение из подпрограммы в основную программу. При
этом все изменения параметра внутри подпрограммы приводят к аналогичным изменениям
соответствующего аргумента.
Указание типов параметров
обязательно лишь для параметров-значений. Для других видов параметров тип можно
не указывать. В таком случае параметры считаются нетипизированными. Например:
function MyFunc(var
a,b; const c,d): Integer;
В данном примере параметры
а, b, с и d являются нетипизированными. При вызове такой подпрограммы программист
может использовать в качестве аргументов элементы любого типа.