Для определения позиции элемента в двумерном массиве необходимы два индекса. Любой двумерный массив есть матрица, а матрица есть таблица. Поэтому удобно описывать двумерные массивы путем указания границ изменения индексов (номеров) строк и столбцов.
Например, таблица символов M × N, где M – число строк и N – число столбцов, может быть описана:
var TAB : array [1..M, 1..N] of char
| Общая форма записи
VAR <имя> : ARRAY [тип индекса строки, тип индекса столбца]
OF <тип компонент>;
|
Однако двумерный массив можно интерпретировать как вектор-столбец, каждый элемент которого, в свою очередь, является одномерным массивом (вектор-строка). Этот подход к определению двумерного массива влечет его описание с помощью двух строк, где первая содержит описание строки, а вторая – описание столбца:
type LINE = array [1..N] of char;
STOLB = array [1..M] of LINE ;
var TAB : STOLB.
Здесь TAB [I] – переменная типа LINE, а TAB [I][J] – переменная типа CHAR.
| Общая форма записи
TYPE <тип строки> = ARRAY [тип индекса] OF <тип компонент>;
<тип столбца> = ARRAY [тип индекса] OF <тип строки>;
VAR <переменная массива> : <тип столбца>;
|
Эти два вида определения массивов задают и два способа обращения к элементам массива: TAB [I, J] – в первом случае и TAB [I][J] – во втором. Вполне очевидно, что сказанное выше для двумерного массива распространяется и на массивы большей размерности. Например, описание VAR CUBE : ARRAY [1..M, 1..N, 1..K] OF INTEGER определяет задание трехмерного массива целых чисел.