Переменные массивов можно задавать двумя способами:
а) через объявление типа в формате:
TYPE
< имя типа > = ARRAY [тип индекса] OF < тип элементов >;
VAR
< идентификатор >: < имя типа >;
б) через объявление переменных, т.е. без использования раздела описания типов в формате:
VAR
< идентификатор >: ARRAY [тип индекса] OF < тип элементов >;
Элементы массива могут быть любого, в том числе и структурированного, типа. Следует отметить, что вещественный тип не относится к упорядоченным типам данных. В качестве типа индекса может использоваться любой порядковый тип, кроме типа Longint (см. таблицу целых типов).
Замечание 1: Обычно в качестве индексного типа используется целочисленный тип-диапазон, в котором задаются границы изменения индексов.
F: ARRAY [ GREEN, RED, BLUE ] OF INTEGER; { целый массив с перечислимым типом-индексом}
G: ARRAY [ 1.. N ] OF (MO, TU, WE, TH, FR, SA, SU );
{ массив перечислимого типа }
Типизированная константа-массив объявляется в программе следующим образом:
CONST
A: ARRAY [1.. 5] OF INTEGER = ( 1, 2, 3, 4, 5 );
B: ARRAY [1.. 4] OF REAL = ( 1.1, 2.2, 3.3, 4.4 );
Элементами массивов могут быть также массивы. В этом случае мы имеем двумерный массив (матрицу). Двумерные массивы задаются в программе следующим образом:
а) через объявление типа в формате:
TYPE
< имя типа > = ARRAY [тип индекса 1] OF ARRAY [тип индекса 2] OF < тип элементов >;
< имя типа > = ARRAY [ тип индекса 1, тип индекса 2 ] OF <тип элементов>;(обе формы описания равносильны, но вторая употребляется чаще)
VAR
< идентификатор >: < имя типа >;
б) через объявление переменных в формате:
VAR
< идентификатор >: ARRAY [тип индекса 1, тип индекса 2] OF < тип элементов >;
Необходимо отметить, что индексы не обязательно должны иметь один и тот же тип. В общем случае индексы по каждому измерению могут быть разных типов как, например, в следующем фрагменте раздела описаний.
Примеры объявления двумерных массивов:
CONST
N = 5;
M = 10;
TYPE
A = ARRAY [ 1.. N, 1.. M ] OF WORD;
B = ARRAY [ 1.. 10, 1.. 20 ] OF REAL;
VAR
C: ARRAY [ 1.. N, BOOLEAN ] OF -20.. 20;
D1, D2: A;
F1, F2: B;
Типизированная константа-матрица объявляется в программе следующим образом:
В памяти компьютера элементы размещаются друг за другом так, что при переходе от младших адресов к старшим наиболее быстро изменяется самый правый индекс массива. Например, для матрицы 2х2: A[1,1], A[1,2], A[2,1], A[2,2].
Для обеспечения эффективной работы с отдельными элементами необходимо прежде всего обеспечить правильный доступ к элементам массива. Доступ (обращение) к отдельным элементам массива осуществляется путем указания имени переменной массива, за которым в квадратных скобках помещается значение индекса (порядкового номера) элемента.
Примеры задания индекса:
M [5] - непосредственно числом;
M [x] - косвенно через переменную x;
M [y+5] - косвенно через выражение;
M [Succ(i)] - косвенно через значение функции.
Всем элементам одного массива можно присвоить значения элементов другого массива с помощью одного оператора присваивания, в том случае, когда массивы имеют идентичный тип. Так, если заданы следующие массивы:
VAR
X, Y: ARRAY [1.. 10] OF INTEGER;
Z: ARRAY[1.. 10] OF INTEGER;
то допустим следующий оператор присваивания:
X: = Y;
но недопустим оператор Z: = X;… , так как массивы X и Z не идентичных типов.
В Паскале над массивами не определены операции отношения. Сравнивать массивы можно только поэлементно. К отдельным элементам массива можно применять стандартные процедуры и функции, предусмотренные в языке. Перечень допустимых стандартных подпрограмм зависит от типа элементов массива.