Ранее мы рассматривали одномерные массивы. Элементы массива могут, в свою очередь, также быть массивами, например:
const n = 4; m = 3;
type mas = array [1 .. n] of integer;
mas2 = array [1 .. m] of mas;
Обычно это записывается так:
type mas2 = array [1 .. m, 1 .. n] of integer;
Здесь описан тип массива, состоящего из m массивов, каждый из которых содержит n целых чисел. Иными словами, это матрица из m строк и n столбцов, или двумерный массив (рис. 5.1). Обе его размерности должны быть константами или константными выражениями, поскольку инструкции по выделению памяти формируются компилятором до выполнения программы. Имя типа используется при описании переменных, например:
var a, b : mas2;
В памяти двумерный массив располагается по строкам, то есть при просмотре массива от начала в первую очередь изменяется правый индекс (номер столбца):
a11 a12 a13 a14 a21 a22 a23 a24 a31 a32 a33 a34
| 1-я строка | 2-я строка | 3-я строка |
Строки массива ничем не отделены одна от другой. К элементу двумерного массива обращаются, указывая номер строки и номер столбца, на пересечении которых он расположен, например:
а[1,4] b[i,j] b[j,i]
Допускается отсутствие правого индекса, например, а[1] или b[i]. Такая запись интерпретируется как первая или i -я строка массива.
Если тип массива используется только в одном месте программы, можно задать его прямо при описании переменных, например:
const m = 50: n = 100:
var x, у : array [1 .. m, 1 .. n] of real;
Над массивами одного типа определена операция присваивания, например:
х := у;
или
а[1] := a[i];