Массивы

Диапазоны (интервалы)

Перечисления

Конструирование типов

В этом разделе рассматривается пока лишь конструирование простых типов и массивов.

Этот тип задается упорядоченным перечислением его возможных значений. Значения этого типа – это имена констант, входящих в перечисление. Считается, что константы упорядочены по возрастанию в порядке их перечисления. Имена констант должны быть уникальными в программе (в пределах области видимости).

<перечисление>::= "(" <имя> { "," <имя> ')'.

Пример: (Su, Mo, Tu, We, Th, Fr, Sa)

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

<диапазон>::= <начальное значение> ".." <конечное значение>.

Здесь начальное и конечное значения – допустимые значения базового типа, причем, конечное значение старше (больше) начального.

Примеры:

0..5 – диапазон на целом типе. Значения 0, 1, 2, 3, 4, 5.

'A'..'Z' – диапазон на типе Char. Значения – большие буквы латинского алфавита.

Mo..Fr – диапазон на типе перечисления, описанном в примере предыдущего пункта.

Массивы относятся к сложным типам данных.

Массив – это упорядоченная последовательность значений одного и того же базового типа. Базовым типом массива может быть любой тип, кроме файлового.

<массив>::= "Array" "[" <тип индекса> "]" "of" <базовый тип>.

Индекс – это порядковый номер элемента массива. Тип индекса определяет множество возможных значений индекса и количество элементов массива. Тип индекса может быть любым ординальным типом.

Примеры:

Array [1..20] of Real – массив, содержащий 20 элементов типа Real;

array [-10..50] of char – массив из 61 элемента символьного типа;

Array [Mo..Fr] of Boolean – массив, тип индекса которого задан на основе перечисления, описанного ранее. Он содержит 5 элементов булевского типа.

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

Array [1..5] of array ['A'..'D'] of array [Boolean] of Real

Этот массив содержит 5´4´2 = 40 элементов вещественного типа.

Массивы, подобные описанному в последнем примере, называются многомерными. Для удобства описания таких массивов в Паскале предусмотрено сокращенное описание:

<массив>::= "Array" "[" <тип индекса> {"," <тип индекса> }"]" "of" <базовый тип>.

С помощью такого синтаксиса, последний пример может быть записан таким образом:

Array [1..5, 'A'..'D', Boolean] of Real