Параметры и аргументы
Параметры и аргументы
Параметры — это элементы подпрограммы, которые используются при описании блока подпрограммы.
Аргументы — это элементы, которые указываются при вызове подпрограмм. Они замещаются соответствующими параметрами подпрограммы.
В качестве параметров могут выступать:
- значения;
- константы;
- переменные.
Параметрами могут быть элементы абсолютно любого типа.
Все параметры разделяются на группы, в зависимости от того, чем они являются:
- параметры-значения;
- параметры-константы;
- параметры-переменные.
Параметры-значения — это параметры, перед которыми в заголовке подпрограммы не стоит слово 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 являются нетипизированными. При вызове такой подпрограммы программист может использовать в качестве аргументов элементы любого типа.