Каждая отдельная величина называется компонентой массива (или элементом массива). Массивы содержат фиксированное число компонентов одного типа, так называемого типа компонент. Тип компонент может быть любым, принятым в языке Паскаль, кроме файлового.
Таким образом, массив может состоять, например, из 100 элементов типа integer, или из 25 элементов типа real, или из 5 элементов типа char и т.п.
Для описания массива используется следующая конструкция (задает размер массива и тип его компонент):
Пример:
type
TVector = array [ byte ] of char;
var
MyVector: TVector;
Values: array [ 1..10 ] of real;
Индексный тип определяет число элементов массива, а также индекс первой и последней компоненты. Допустимыми индексными типами являются все порядковые типы, за исключением длинного целого (longint) и его поддиапазонов. Индексы интервального типа, для которого базовым является целый тип, могут принимать отрицательные, нулевое и положительные значения.
Пример:
type
MyArray1 = array[byte] of integer; {массив из 256 целых чисел}
MyArray2 = array[-20..17] of integer; {массив из 38 целых чисел}
Массив может быть проиндексирован всеми значениями соответствующего индексного типа. Нумерация компонент массива не обязана начинаться с 1 или с 0 – можно описывать массив, пронумерованный любыми целыми числами. Необходимо лишь, чтобы номер последней компоненты был больше первой.
Описать массив можно следующим образом:
1) в разделе описания переменных в качестве типа данных записать представленную выше конструкцию;
Пример:
var
Values: array [ 1..10 ] of real;
2) создать новый тип в разделе описания типов и использовать его при описании переменных.
Пример:
type
TVector = array [ 1..10 ] of real;
var
Values: TVector;
В обоих случаях переменная Values будет представлять из себя «контейнер», в котором можно хранить 10 вещественных чисел с индексами от 1 до 10. Однако второй способ является более предпочтительным, т.к. он позволит описать еще несколько переменных типа TVector.
Массивы относятся к структурам прямого доступа. Это означает, что возможно напрямую (не перебирая предварительно все предшествующие компоненты) обратиться к любой интересующей компоненте массива.
Доступ к компонентам линейного массива осуществляется с помощью конструкции, называемой переменной с индексом:
<имя_массива> [ <индекс_компоненты> ]
Пример:
type
TVector = array [ 1..10 ] of real;
var
Values: TVector;
…
Values[1] := 10.5;
Values[2] := Values[1] + 5;
readln (Values[3]);
Values[4]:= Values[2] + Values[3];
writeln (Values[4]);
Индекс компоненты может быть константой, переменной или выражением, куда входят операции и вызовы функций. Тип индекса должен быть совместим с типом, объявленным в описании массива.