Ада-95. Компилятор GNAT

       

Типы и структуры данных


Двумерные массивы не являются массивами массивов.

Следовательно, A(J)(K) не является тем же самым, что и A(J,K).

Разработчики, в действительности, относят последний из двумерных массивов к массивам массивов.

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

Например, это позволяет предусмотрительным реализаторам Ада-систем использовать нелинейное отображение.

На практике, большая часть существующих Ада-компиляторов использует отображение ориентирование на строку, соответствующее правилам Паскаля и Си.

В качестве типов полей записи всегда должны использоваться имена типов или подтипов, что означает, что поле записи не может иметь анонимный тип, подобно array или record.

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

Ада не обеспечивает какого-либо средства, которое соответствует with в Паскале.

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

Ада более жестко контролирует использование записей с вариантами чем Паскаль.

Таким образом, нет возможности описать "свободное объединение", или вариантную запись без указания дискриминанта.

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

В отличие от Паскаля, Ада не имеет предопределенного средства построения типа множества set.

Однако, средства Ады обеспечивают программисту возможность построить подобный тип самостоятельно.



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