Двумерные массивы — матрицы в Pascal
Обновлено: 14.03.2026
Одномерный массив можно представить как линейную структуру, в которой элементы следуют друг за другом. Однако бывают более сложные структуры данных. Например, двумерные массивы, которые можно описать как таблицу, в ячейках которой располагаются значения. Для обращения к данным массива указываются номера их строк и столбцов. Часто табличные массивы называют матрицами.

Обычно двумерные массивы на языке программирования Pascal описываются так:
array[1..M, 1..N] of базовый_тип
Однако можно их описывать как массив массивов:
array[1..M] of array[1..N] of базовый_тип
В таких описаниях подразумевается, что в интервале от 1 до M определяется количество строк, а в интервале от 1 до N — количество столбцов матрицы. Рассмотрим примеры.
Описание массива через раздел type:
const M = 10; N = 5; type matrix = array[1..M, 1..N] of integer; var a: matrix;
Описание матрицы в разделе переменных:
const M = 10; N = 5; var a: array[1..M, 1..N] of integer;
Двумерный массив, описанный так, что базовым выступает одномерный, определенный как пользовательский тип:
type a = array[1..10] of byte; var b: array[1..100] of a;
Для обращения к элементу двухмерного массива после его имени в квадратных скобках через запятую указываются значения двух индексов. Первый обозначает номер строки, а второй — номер столбца. На их пересечении находится одна из ячеек матрицы. Например, выражение a[3,2] := 16 означает, что во второй ячейке третьей строки хранится значение 16. В языке программирования Pascal допустимо разделение индексов с помощью квадратных скобок, например a[1][5] := 27.
Если описывается двумерный массив как типизированная константа, то при задании значений его элементов он рассматривается как массив массивов. При этом в общих круглых скобках через запятую перечисляются заключенные в круглые скобки значения элементов строк (каждая строка в своих скобках):
type arr = array[1..4, 1..3] of integer; const cords: arr = ((1,-1,3), (0,0,0), (1,4,0), (4,-1,-1));
Размерность массива — это количество содержащихся в нем значений. Оно определяется произведением количества строк на количество столбцов. Так если в массиве 3 строки и 5 столбцов, то в него поместится 15 значений.
Рассмотрим простой пример работы с двумерным массивом. Сначала заполним его данными, а затем выведем их на экран в виде таблицы.
var matrix: array[1..3,1..5] of integer; i, j: integer; begin writeln('Введите 15 чисел.'); for i := 1 to 3 do for j := 1 to 5 do read(matrix[i,j]); for i := 1 to 3 do begin for j := 1 to 5 do write(matrix[i,j]:5); writeln end; end.
Когда пользователь вводит очередное число, то процедура read считывает его и помещает в ячейку с текущими индексами i и j. Когда i равна единице, значение j меняется пять раз, и, значит, заполняется первая строка таблицы. Когда i равна двум, значение j снова меняется пять раз и заполняется вторая строка таблицы. Аналогично заполняется третья строка таблицы. Внутренний цикл for в общей сложности совершает 15 итераций, внешний только 3.
Как пользователь вводит значения — не важно. Он может их разделять либо пробелом, либо переходом на новую строку. Вывод же значений двумерного массива организован в виде таблицы. Выводятся 3 строки по 5 чисел в каждой. Внутри строк под каждое значение отводится 5 знакомест, в результате таблица получается с выровненными столбцами.
Введите 15 чисел. 3 4 5 12 90 12 24 1 0 0 89 2 75 34 100 3 4 5 12 90 12 24 1 0 0 89 2 75 34 100