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

9 Структура программ с использованием подпрограмм. Виды параметров. Использование массивов в качестве параметров. Параметр – открытый массив.

В Delphiдопускается любой уровень вложенности процедур и функции. Схематическую структуру программ с использованием подпрограмм можно изобразить так:

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

Параметр переменная (В списке формальных параметров VAR). При любых изменениях значения формального параметра-переменной изменится и фактический параметр.

Параметр константа (CONST).

Параметр результат (OUT).

Параметр значение. При изменении формального параметра-значения фактический параметр не меняется.

Как известно, массив можно рассматривать не только как группу упорядоченных переменных, объединенных одним именем, но и как одну переменную, называемую полной переменной. Если имеются две полные переменные “A” и “B”, одинаковые по размерам и типу хранимых ими значений, то значение “A” может быть присвоено переменной “B” с помощью одного оператора присваивания B:=A; т.е. не обязательно передавать значения из одного массива в другой поэлементно. Таким образом, массивам внутри процедуры можно передавать значения извне с помощью формальных и фактических параметров, оформленных в виде полных переменных. При использовании массивов в качестве параметров процедур существует ряд ограничений. Во-первых, нельзя обрабатывать одной и той же процедурой массивы разных типов и размеров. Во-вторых, в заголовке процедур для указания типов формальных параметров- полных переменных запрещается использовать безымянные типы, например A:Array[1..20] of Real. Правильно будет предварительно описывать имя типа массива в разделе описаний программы:Type Mas1=Array[1..20] of Real; ............................... Procedure Proced(Var A:Mas1); begin ............................... end;

Как уже говорилось, при объявлении формальным параметром параметра-значения, фактический параметр копируется во временную память, а затем - из памяти в процедуру. Если в этом случае фактическим параметром будет большой массив, то на дополнительное копирование уйдет много времени и памяти, поэтому при обработке процедурой крупных массивов лучше использовать параметр-переменную.

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

function sred(b:array of real;n:integer):real;

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

Соседние файлы в папке экзамен