Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Раздел 10 Структурные типы v1.doc
Скачиваний:
3
Добавлен:
01.03.2025
Размер:
244.22 Кб
Скачать

10.1.4. Типизованные константы типа массив

Для инициализации массива в языке Delphi могут быть использованы типизованные константы типа массив.

Синтаксис константы-массив представляет рисунок 10.4.

Рисунок 10.4 – Синтаксическая диаграмма задания типа массив

Типизованные константы-массив объявляются в разделе констант.

Пример 10.11.

Объявление одномерной константы-массив.

Type

ТMas = Array [1..10] Of Integer;

Const

{Для присваивания типа типизованной константе-массив используется имя типа}

M: ТMas = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10);

{Для присваивания типа типизованной константе-массив используется задание типа}

Simv: Array [1..5] Of Char = (‘A’, ‘B’, ‘C’, ‘D’, ‘E’);

{или (эквивалентная форма записи):

Simv: Array [1..5] Of Char = (‘ABCDE’);}

В данном примере элементам М[1], M[2], ..., M[10] константы-массив М присваиваются значения 1, 2, ..., 10 соответственно. Аналогично элементам Simv[1], Simv[2], ..., Simv[10] константы-массив Simv присваиваются значения ‘A’, ‘B’, ‘C’, ‘D’, ‘E’.

При объявлении многомерной константы-массив учитывается, что задание типа

Array [1..M, 1..N, 1..K] Of <Тип>

с учетом полной формы задания массивов эквивалентно объявлению

Array [1..M, 1..N] Of Array [1..K] Of <Тип>

или

Array [1..M] Of Array [1.. N] Of Array [1..K] Of <Тип>

Многомерный массив фактически состоит из массивов меньшей мерности.

Отсюда следует, что при задании многомерной константы-массив в качестве <Типизованной_константы> (см. рисунок 10.4) следует использовать константу-массив на единицу меньшей мерности, чем текущая константа-массив. Массив каждой мерности заключается в круглые скобки.

Пример 10.12.

Объявление многомерных констант-массивов.

Type

ТMas3 = Array [1..2, 1..2, 1..2] Of Integer;

Const

M3: ТMas3 = (((0,1), (2,3)), ((4,5), (6,7)));

Массиву М3 будут присвоены следующие начальные значения:

M3[1,1,1] = 0 M3[1,2,1] = 2 M3[2,1,1] = 4 M3[2,2,1] = 6

M3[1,1,2] =1 M3[1,2,2] = 3 M3[2,1,2] = 5 M3[2,2,2] = 7

Значения присваиваются в порядке размещения элементов массива в памяти машины. Наиболее быстро изменяется последний индекс.

Вывод значений структурной константы-массив производится аналогично массивам – поэлементно в цикле. Вывод полной константы массив сразу не предусмотрен.

С помощью структурной константы-массив может производиться инициализация массива.

Пример 10.13.

Инициализация массива с помощью структурной константы-массив (применительно к предыдущим примерам).

------------------

Var

M1: ТMas;

MM: ТMas3;

-----------------

Begin

M1 := M;

MM := M3;

Следует напомнить, что типизованные константы в Delphi не могут изменять исходное значение в ходе выполнения программы.

10.1.5. Уплотнение структурных данных в памяти

С целью экономии памяти, занимаемой массивами или другими структурными типами, может использоваться служебное слово Packed, например:

Var

М: Packed Array [1..10] of Byte;

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

Если структурный тип данных описан без ключевого слова Packed, компилятор выравнивает его элементы по 2- и 4-байтовым границам, чтобы ускорить доступ к ним.

Служебное слово Packed применимо к любому структурному типу данных (например, массиву, множеству, записи, файлу).