Список формальных параметров
Параметры, описанные в заголовке подпрограммы, называются формальными.
Примеры:
(value: integer) (X, Y: Real) (st:string; n:integer; c,fill:char) |
Список формальных параметров – это последовательность объявлений однотипных параметров. Объявления отделяются друг от друга точкой с запятой. Каждое объявление состоит из списка имен параметров, символа ‘:’ и указания их типа. Внутри объявления имена параметров разделяются запятой. Имя параметра – это корректный идентификатор.
Существует два способа передачи параметра в подпрограмму: по значению(параметры-значения) или по ссылке. Для передачи параметра по ссылке рядом с именем параметра используется одно из зарезервированных слов: var (параметры-переменные), const (параметры-константы), out (выходные параметры). Например:
(var S: string; X: Integer)(const P; I: Integer) |
Чтобы почувствовать разницу в способах передачи параметров, обратимся к следующим примерам (из Help):
function DoubleByValue(X: Integer): Integer; // X is a value parameter begin X := X * 2; Result := X; end; function DoubleByRef(var X: Integer): Integer; // X is a variable parameter begin X := X * 2; Result := X; end; |
Эти функции возвращают одинаковый результат, но только вторая может изменять значение параметра, переданного в подпрограмму. Вызовем эти функции:
Var I, J, V, W: Integer; begin I := 4; V := 4; J := DoubleByValue(I); // J = 8, I = 4 W := DoubleByRef(V); // W = 8, V = 8 end; |
Параметры-значения можно рассматривать как локальные переменные, которые получили начальное значение при вызове подпрограммы. Если вы передали какую-нибудь переменную как параметр-значение, то подпрограмма создает копию переменной. Изменения этой копии не приводят к изменению исходной переменной и утериваются после завершения работы подпрограммы.
Параметры-переменные похожи скорее на указатели. Изменения такого параметра внутри тела процедуры или функции сохраняются после завершения работы подпрограммы и возвращаются в вызывающую программу.
(схемка)
Назначение зарезервированных слов:
Ключевое слово | |
Var | Можно использовать для передачи данных в подпрограмму и для получения данных из подпрограммы |
Const | Нельзя изменять значение в теле подпрограммы. Похож на локальную переменную только для чтения. |
Out | Нельзя использовать для передачи данных в подпрограмму. Используется только для получения данных из подпрограммы. |
Для параметров-значений и параметров-констант возможно указание в заголовке процедуры или функции значения по умолчанию. Для этого в объявлении параметра после типа используется ‘=’ и указывается само значение (константное выражение совместимого типа). Например:
(var S: string; X: Integer = 5)(const P, I: Integer; const M: real = 4.5) |
Для параметров, передающихся по ссылке, можно не указывать тип параметра. Такие параметры называются нетипизированными. Параметр-значение обязательно типизирован. Примеры:
(var S, X; out Z)(const P, I; var M) |
Внутри подпрограммы непизированные параметры несовместимы ни с какими типами. Необходимо выполнить приведение типов.
Дата добавления: 2016-02-09; просмотров: 869;