Массив - это группа элементов, названная одним именем. Элементы массива обозначают именем массива, их местоположение в массиве определяется приписываемым к имени массива индексом.
Рассмотрим систему линейных алгебраических уравнений -го порядка:
В матричном виде эту систему можно записать следующим образом:
,
где - матрица коэффициентов, и - соответственно вектор свободных членов и вектор неизвестных:
- это массивы. В массивах и положение элемента определяется одним индексом. Это одномерные массивы. В матрице положение элемента определяется двумя индексами (номер строки и номер столбца ). Это двумерный массив. В принципе возможны трехмерные, четырехмерные и т.д. массивы, однако в реальных задачах наиболее часто используются одно- и двумерные массивы, очень редко - трехмерные массивы.
Решение рассматриваемой системы уравнений можно представить в виде
Следовательно, для решения задачи нужно вначале вычислить обратную матрицу , а затем умножить ее на вектор . Это означает, что в программе должна выполняться обработка массивов и .
В Паскаль-программе массивы относятся к составным типам.
По отношению к составному типу имеет смысл говорить о его структуре и типе компонентов.
Массив состоит из фиксированного количества компонентов одного и того же типа. Компонент определяется именем массива и индексом. Индекс может вычисляться, поэтому он должен описываться определенным типом. Следовательно, при описании массива необходимо указывать тип компонента и тип индекса.
Описание типа массива:
Type Ar=array[T1] of T,
где Ar - имя нового типа;
T1 - тип индекса, который должен быть ординальным;
T - тип компонента, который может быть любым (кроме файла).
Тип индекса, как и любое имя типа, указывает количество значений, которые может принимать индекс; в частности, это означает, что тип индекса определяет количество компонентов в массиве.
В качестве значения T1 нельзя применять тип integer, так как это будет означать, что индекс изменяется от -MaxInt-1 до MaxInt (-32768 .. 32767), т.е. массив имеет 65536 компонентов, для каждого из которых требуется 6 байт памяти (если считать, что компонент массива имеет тип real). Это превышает максимально возможный размер массива, так как любой переменной в программе не может быть выделено свыше 64 Кбайт оперативной памяти.
Массив можно описывать непосредственно в разделе описания переменных. Например, вместо описания
Type Ar = array[1..100] of integer;
Var A,B,C : Ar;
можно использовать описание
Var A,B,C : array[1..100] of integer;
Тем не менее рекомендуется в разделе Varприменять только имена типов, а не описания типов. Это связано главным образом с возможностью использования описываемых массивов в процедурах и функциях.
Следует обратить внимание, что "1 .. 100" - это не границы изменения индекса, а описание диапазонного типа (хотя в данном случае это описание однозначно определяет список возможных значений индекса, другими словами, пределы его изменения). Наглядно это можно проиллюстрировать следующим примером:
Const Nmax = 100;
Type Diap = 1..Nmax;
Ar = array[Diap] of integer;
Var A,B,C : Ar;
Любой тип, как стандартный, так и нестандартный (например, тип Ar), указывает, как должны конструироваться переменные, имена которых перечислены в разделе Var. В этом смысле удачным термином для "Type" является "шаблон": компилятор использует шаблон для создания отдельных экземпляров переменных данного типа. В вышеприведенном примере переменные A, B, C - это три отдельных экземпляра типа Ar, т.е. экземпляры, созданные по шаблону Ar.