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

Voz [f] Godrozd [f].

В зависимости от значения F выбираются конкретные элементы массива, например:

Voz [Ivanov] Voz [Petrov]

Пример 10.3.

Использование идентификаторов скалярного типа в качестве <Типа_индекса>.

Type

{Одномерный массив из двух элементов вещественного типа:}

TMas1 = Array [Boolean] Of Real;

{Одномерный массив из 256 элементов целого типа:}

TMas2 = Array [Char] Of Integer;

Var

M1: TMas1;

M2: TMas2;

J, А, В: Boolean;

Simv : Char;

Пример 10.4.

Примеры обращений к элементам массивов, объявленных в примерах 10.1 ÷ 10.3.

A [1] – 1-ый элемент массива А.

E [–1, 18] – обращение к элементу с номером строки –1 и номером столбца 18 матрицы Е.

C [2 * I – 5] – использование индексного выражения.

Voz [Andreev] – обращение к элементу с индексом Andreev массива Voz.

Voz [F] – обращение к элементу с индексом Andreev массива Voz. К этому моменту значение переменной F уже должно быть определено.

Voz [Pred(F)] – использование индексного выражения.

M1[False] – обращение к элементу с индексом False массива М1 (фактически это первый элемент массива М1).

M1[J] – обращение к элементу с номером J массива М1. J должно иметь тип Boolean.

M1 [A or B] – использование индексного выражения (A, B – логические переменные).

M2 [‘Z’] – обращение к элементу с индексом Z массива М2.

M2 [Simv] – обращение к элементу с индексом Simv массива М2 (Simv – переменная типа Char).

При использовании индексных выражений необходимо следить, чтобы их значения не выходили за пределы <Типа_индекса> в объявлении массива.

Синтаксическая диаграмма задания типа Array (см. рисунок 10.2) является сокращенной формой задания многомерных массивов.

Полная форма задания многомерных массивов образуется на основании задания массивов меньшей размерности. Например, двумерный массив – матрица из N строк и M столбцов – может быть представлен как одномерный массив, состоящий из N элементов, а каждый элемент этого массива в свою очередь является одномерным массивом, состоящим из M элементов.

Таким образом, в соответствии с полной формой задания многомерных массивов двумерный массив А целых чисел, состоящий из 10 строк и 20 столбцов, может быть объявлен так, как это сделано в примере 10.5.

Пример 10.5.

Способы объявления многомерных массивов.

1-й способ.

Type

TDvummas = Array [1 .. 10] Of Array [1 .. 20] Of Integer;

Var

A: TDvummas;

2-й способ.

Type

TOdnmas = Array [1 .. 20] Of Integer;

TDvummas = Array [1 .. 10] Of Odnmas;

Var

A: TDvummas;

Из полной формы объявления массива очевидно, что к элементу A [I, J] двумерного массива А можно обращаться так:

A [I] [J]

Такая запись трактуется как J-ый элемент I-ого элемента массива А, т.е. элемент, находящийся на пересечении I-ой строки и J-ого столбца.

Отсюда следует, что Delphi допускает переменные, обозначающие подмассивы.

Запись A[I] для двумерного массива А будет означать I-ую строку массива А.

Для М-мерного массива обращение к его элементу в соответствии с полной формой объявления массивов выглядит так

A [I1] [I2]...[IМ]

В этом случае запись A[I1] означает (М – 1)-мерный подмассив массива А.

В многомерных массивах тип индекса не обязательно должен быть одним и тем же. Индексы по каждому измерению могут иметь разные типы.

Пример 10.6.

Использование индексов разного типа.

Type

TDen = 1 .. 31;

TMes = (Yan, Feb, Mar, Apr, May, Iyn, Iyl, Avg, Sen, Okt, Nob, Dec);

TGod = 1900 .. 2000;

TData = Array [TDen, TMes, TGod] Of (Pn, Vt, Sr, Ch, Pt, Sb, Vs);

Тип Data может быть задан и таким образом:

Type

TData = Array [1 .. 31, (Yan, Feb, Mar, Apr, May, Iyn, Iyl, Avg, Sen, Okt, Nob, Dec), 1900 .. 2000] Of (Pn, Vt, Sr, Ch, Pt, Sb, Vs);

Мерность (размерность) массива синтаксисом языка Delphi не ограничена.

Компилятор размещает массив в сплошной области памяти, отводя каждому элементу участок памяти в соответствии с базовым типом. Многомерные массивы располагаются «по строкам», т.е. быстрее изменяется последний индекс.

Например, дан двумерный массив А целых чисел (типа Smallint):

Расположение данного массива в памяти иллюстрирует рисунок 10.3.

Рисунок 10.3 – Расположение двумерного массива в памяти