Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
80
Добавлен:
09.05.2015
Размер:
725.5 Кб
Скачать

Описание и вызов функции

В функцию можно передать произвольное количество параметров, однако возвращает она всегда одно значение. С другой стороны, функция (как и процедура) может возвращать информацию в вызывающую подпрограмму посредством списка параметров. Обычно функция используется, когда в вызывающую подпрограмму нужно возвратить одно значение.

Синтаксис объявления функции имеет вид

function ИмяФункции(Аргумент1 :тип1; ....) : ТипФункции;

[объявление_локальных_переменных; ]

begin

[операторы; ]

ИмяФункции : =Возвращаемое_Значение;

end;

Для вызова функции (как и процедуры) в коде вызывающей подпрограммы должно быть записано имя функции со списком фактических параметров. Отличие вызова функции от вызова процедуры состоит в том, что функция возвращает значение, ее имя фактически является переменной, содержащей возвращаемое значение. Поэтому вызов функции можно располагать в любом месте, в котором может находиться какая-либо переменная. Например, вызов функции может быть расположен в правой (но не в левой!) части оператора присваивания:

ИмяПеременной := Имя_Функции(CписокФактичПараметров) ;

Пример, оформим подпрограмму Adder() в виде функции, а не процедуры:

//Функция Adder() возвращает сумму чисел numl и num2

function Adder(numl: Real; num2: Real): Real;

begin

Adder := numl + num2;

end;

Программа тестирования функции Adder () имеет следующий вид:

//Сложение двух введенных пользователем чисел

Var

rFirstNum: Real;

rSecjndNum: Real;

rSumma : Real;

begin

rFirstNum =2;

rSecondNum =7;

rSumma := Adder(rFirstNum, rSecondNum,);

end;

Обратите внимание: функция всегда определяется с конкретным типом ТипФунщии. Этот тип будет иметь значение, возвращаемое функцией в вызывающую подпрограмму, извращаемое значение может быть присвоено имени функции в произвольном месте блока функции, причем произвольное количество раз. Возвращено будет то значение, которое было присвоено имени функции в последний раз перед выходом из нее.

Передача параметров

Фактические параметры (точнее, значения фактических параметров) — это информация, передаваемая в подпрограмму. При вызове подпрограммы формальные параметры принимают значения фактических. Каждому формальному параметру должен соответствовать один из фактических параметров. В ObjectPascalпри работе с фактическими и формальными параметрами необходимо учитывать ряд требований.

1. Количество фактических параметров должно быть точно равно количеству формальных параметров.

2. Важна последовательность расположения параметров. Первый фактический параметр соответствует первому формальному параметру, второй — второму и т.д.

3. Соответствующие формальные и фактические параметры должны быть совместимыми по типам.

4. Имена формальных и фактических параметров могут никак не соответствовать друг другу.

5. Способ передачи параметров может быть выполнен по ссылке или по значению

Как и в языке VB, в Object Pascalпараметры передаются или по ссылке, или по значению. При передаче по ссылке в подпрограмму передается адрес ячейки, в которой хранится значение фактического параметра. Поэтому вызываемая подпрограмма имеет доступ к фактическому параметру и может изменять его значение. В то же время при передаче по значению в подпрограмму передается только значение фактического параметра, либо его копия. Следовательно, подпрограмма не имеет доступа к самому фактическому пар метру и не может изменить его значение.

По умолчанию в Object Pascalпараметры передаются по значению. Чтобы передать параметр по ссылке, нужно в заголовке подпрограммы перед его именем расположить ключевое словоVar.

Соседние файлы в папке разработка и стандартизация