Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Зачет по инфе.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
336.26 Кб
Скачать

6.2 Список формальных параметров.

В общем виде список формальных параметров имеет следующий вид:

<элемент>; <элемент>; ...

где каждый элемент описывается следующим образом

<тип параметра> <id>, <id>, ... :<тип>

где <тип параметра> – способ передачи параметра в подпрограмму (var, const или out);

<id> – идентификатор формального параметра;

<тип> – тип параметра, любой тип Object Pascal.

Любой из формальных параметров может быть либо параметром-значением, либо параметром-переменной, либо параметром-константой.

При вызове подпрограммы список формальных параметров заменяется списком фактических параметров. Список фактических параметров может содержать идентификаторы не совпадающие с идентификаторами списка формальных параметров. Существенны только два ограничения наложенных на список фактических параметров, а именно:

• порядок следования типов списка формальных и списка фактических параметров должны совпадать;

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

6.3 Параметры-значения. Параметры-переменные. Параметры-константы. Нетипизированные параметры.

Если тип формального параметра не указан, то параметр считается параметром-значением. Особенностью параметров-значений является то, что в подпрограмму передается не сам параметр, а его копия. Параметры-значения нечувствительны к изменению их внутри подпрограммы, т.е. если параметр будет изменен внутри подпрограммы, то он останется неизменным вне подпрограммы.

Для определения параметра как параметра-переменной необходимо использовать зарезервированное слово var, например:

procedure TestProc(var a, b, c:integer);

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

Для увеличения надежности подпрограмм были введены параметры-константы. Механизм передачи таких параметров такой же как и параметров-переменных, т. е. передается адрес переменной, но компилятор строго следит за тем чтобы внутри подпрограммы данный параметр не изменялся. Для определения параметра-константы необходимо использовать зарезервированное слово const, например

procedure TestProc(const a:integer; b, c:integer);

Параметр считается нетипизированным, если его тип не указан в заголовке подпрограммы. Нетипизированными могут быть только параметры переменные. Например:

procedure SendBuffer(var Buf);

Нетипизированные параметры используются в случае, если тип данных передаваемых в подпрограмму не существенен.

6.4 Передача массивов в подпрограммы. Параметры типа открытый массив.

При передаче в качестве формальных параметров массивов существуют определенные ограничения. Для передачи массива в качестве формального параметра сначала необходимо объявить соответствующий тип, а затем указать в списке формальных параметров параметр созданного типа, например

type TVector=array [1..3] of real;

function DotProduct(a, b:TVector):real;

Кроме того, Object Pascal поддерживает так называемые открытые массивы, которые служат для разрешения проблемы передачи одномерных массивов.

Открытый массив представляет собой формальный параметр подпрограммы и имеет следующий синтаксис

<id>, <id>: array of <тип>

Внутри подпрограммы такой массив трактуется как одномерный массив с нулевой нижней границей. Верхняя граница может быть определена с помощью функции High. Например выше описанную функцию можно определить как:

function DotProduct(a, b: array of real):real;