Языки программирования - концепции и принципы

и типом элемента. Такой тип


типом индекса и типом элемента. Такой тип называется типом массива без ограничений. Чтобы фактически объявить массив, необходимо добавить к типу ограничение индекса:

Ada

type A_Type is array(lnteger range о) of Float;

                                                                  -- Объявление типа массива без ограничений

А: А_Туре(0..9);                                       — Массив с ограничением индекса

В: А_Туре(0..8);                                       — Массив с ограничением индекса

Сигнатура А_Туре — одномерный массив с индексами типа integer и компо­нентами типа Float; границы индексов не являются частью сигнатуры.

       Как и в языке Pascal, операции индексации полностью контролируются:



Ada

А(9) := 20.5;                               -- Правильно, индекс изменяется в пределах 0..9   

В(9) := 20.5;                               -- Ошибка, индекс изменяется в пределах 0..8

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

Ada

procedure Sort(P: in out A_Type);

 

                                                                     — Тип параметра: неограниченный массив

Sort(A);                                                         -- Типом А является А_Туре

Sort(B);                                                         -- Типом В также является А_Туре

Теперь возникает вопрос: как процедура Sort может получить доступ к гра­ницам массива? В языке Pascal границы были частью типа и таким образом были известны внутри процедуры. В языке Ada ограничения фактического параметра-массива автоматически передаются процедуре во время выполне­ния и могут быть получены через функции, называемые атрибутами. Если А произвольный массив, то:


Содержание раздела