Введение в программирование - Учебное пособие (Корочкин А. В.)

4 .6 примеры

Пусть для работы в программе необходимы четыре типа, задающих одномерные массивы (вектора), элементы которого имеют тип Elem. Возможны различные варианты определения таких типов:

1. Через определение новых типов.

Type       VectorlO                is             array      (1 .. 10)  of            Elem;

Type       VectortOO             is             array      (1 .. 100)                of            Elem;

Type       VectorN is             array      (1 .. N)    of            Elem;

Type       VectorH is             array      (1 .. H )   of            Elem;

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

2. Через использование анонимных типов.

VA :

 

array

 

(1..

 

10 )

 

of

 

Elem ;

 

VB:

 

array

 

(1..

 

100)

 

of

 

Elem ;

 

VC:

 

array

 

(1 -

 

N)

 

of

 

Elem ;

 

VD:

 

array

 

(1 -

 

H)

 

of

 

Elem;

 

Здесь неявно при объявлении обьектов созданы типы (анонимные). Вследствие этого совместное использование объявленных обьектов невозможно, так как для анонимных типов нельзя выполнить явное преобразование типов.

3. Через производные типы.

В этом случае задается родительский тип

Type   Vector  is array (1.. 1000) of Elem;

Глава 4. Типы определяемые пользователем

Vector( 1 .. 10); Vector(1 ..100); Vector( 1 .. N ); Vector( 1 .. H );

на основании которого путем введения ограничений индекса создаются производные типы:

Type       VectorlO                is             new

Type       Vector 100            is             new

Type       VectorN is             new

Type       VectorH is             new

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

4. Через использование подтипов. Определяется базовый тип (создается или берется уже готовый):

Type   Vectors  is  array (integer  range<>)  of   Elem; Создаются подтипы на основе базового типа

Subype  VectoMO

Subype  VectoMOO

Subype  Vec_N

Subype  VecJH

is             Vectors( 1 .. 10);

is             Vectors( 1 .. 100);

is             Vectors( 1 .. N );

is             Vectors( 1 .. H );

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

42

Ада 95. Введение в программирование

Глава 5. Операторы

43