Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование на языке Delphi_1.doc
Скачиваний:
43
Добавлен:
28.03.2015
Размер:
710.14 Кб
Скачать
        1. Список формальных параметров

Параметры, описанные в заголовке подпрограммы, называются формальными.

Примеры:

(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)

Внутри подпрограммы непизированные параметры несовместимы ни с какими типами. Необходимо выполнить приведение типов.