IPB

> array (зарезервированное слово)
Чат
Форум
Загрузка...
 

Язык:
Русский
English


Определяет массив.

Синтаксис

 array [тип_индексов] of тип_элементов

Замечания

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

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

Пример

 type IntList  = аrray[1 .. 100] оf Integer;
      CharData = аrray['A' .. 'Z'] оf Byte;
      Matrix   = аrray[0 .. 9, 0 .. 9] оf Real;

Ада

 type Int_List is array (1 .. 100) of Integer;
 type Char_Date is array (Character range 'A' .. 'Z') of Unsigned_8;
 type Matrix is array (0 .. 9, 0 .. 9) of Float;

Кроме того, что уже позволяет Borland Pascal, язык Ада позволяет:

   ■ Использовать в качестве границ массива не только
     постоянные выражения. Например, при решении на языке Ада
     олимпиадных задач можно сначала считать из файла размеры
     матрицы, а затем в процедуре Solve определить локальную
     переменную с размерами, считанными из файла. В Borland Pascal
     программистам приходилось обьявлять массивы и матрицы с
     запасом.
   ■ Недоопределить тип массива. Например, таковы линейные строки:
       type String is array (Positive range <>) of Character;
     Если говорить не об олимпиадных задачах, а о том, что
     встречается в жизни, то один раз узнать размер и много раз его
     использовать не получается. В программе, работающей с матрицами,
     матрицы могут иметь самые разные размеры.

К сожалению, Ада остаётся уникальным языком программирования, в котором можно определить прямоугольную матрицу с недоопределёнными размерами. В других языках такая матрица на поверку оказывается массивом указателей на массив. Доступ к данным в такой структуре на порядки медленне, чем в языке Ада. Также к сожалению, только в компиляторах языка Ада применяется так называемый второй стек. Второй стек необходим для возврата из функции результата с недоопределённым размером. Вызывающий не может выделить место под результат, потому что не знает, сколько памяти для этого потребуется. Вызываемый не может использовать основной стек, поскольку он в момент возврата результата уже занят локальными переменными функции. Локальные переменные создаются прежде, чем создаётся результат, и уничтожаются прежде, чем результат. Устройство стека не позволяет это сделать. Второй стек - это элегантное и эффективное решение проблемы. Люди, не знакомые с языком Ада, не видят иного выхода, кроме как использовать кучу или сборщик мусора.

Смотри также

 
 К началу страницы 
Тэги: array
 

Код для вставки: :: :: :: ГОСТ ::
Поделиться: //
 



-
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"