Переменная массивового типа описывается в разделе описания переменных в следующей форме:
var <идентификатор>: array[<тип индекса>] of <тип компонент>
Чаще всего в качестве типа индекса употребляется интервальный тип. Например, одномерный массив среднемесячных температур опишется так: В качестве начального и конечного индексов не могут использоваться переменные (но могут использоваться константы).
Массив описывается двумя способами:
1. Создать пользовательский тип данных
type digit =array[0..9] of Integer ; matrix =array[1..100] of Single; var m : matrix; d : digit;
2. Определить переменную как массив можно и непосредственно при описании этой переменной, без предварительного описания типа массива, например:
var T: array[1..12] of real; а, b : array [1..10] of Real;
Описание массива определяет, во-первых, размещение массива в памяти, во-вторых, правила его дальнейшего употребления в программе. Последовательные элементы массива располагаются в последовательных ячейках памяти (T[1], T[2] и т.д.), причем значения индекса не должны выходить из диапазона 1...12. В качестве индекса может употребляться любое выражение соответствующего типа. Например:
T[i+j], T[m div 2]
Тип индекса может быть любым скалярным порядковым типом, кроме integer (в реализации Turbo Pascal). Например, в программе могут присутствовать следующие описания:
var Cod: array[Char] of 1..100; L: array[Boolean] of Char;
В такой программе допустимы следующие обозначения элементов массивов:
cod['x']; L[true]; cod[chr(65)]; L[a>0];
В некоторых случаях бывает удобно в качестве индекса использовать перечисляемый тип. Например, данные о количестве учеников в четырех десятых классах одной школы могут храниться в следующем массиве:
Type Index=(А, В, С, D);Var Class_10: array[Index] of byte;
И если, например, элемент Class_10[A] равен 35, то это означает, что в 10 «А» классе 35 человек. Такое индексирование улучшает наглядность программы.
Часто структурированному типу присваивается имя в разделе типов, которое затем используется в разделе описания переменных.
type Mas1 = array[1..100] of integer; Mas2 = array[-10..10] of char;var Num: Mas1; Sim: Mas2;
Многомерный массив в Паскале трактуется как одномерный массив, тип элементов которого также является массивом (массив массивов). Например, среднемесячную температуру за 10 лет можно можно хранить в массиве, описанном следующим образом:
var H: array[1981..1990] of array[1..12] of real;
Вот примеры обозначения некоторых элементов этого массива:
Н[1981][1]; Н[1985][10]; Н[1990][12];
Однако чаще употребляется другая, эквивалентная форма обозначения элементов двумерного массива:
Н[1981,1]; Н[1985,10]; Н[1990,12];
Переменная Н[1981] обозначает всю первую строку таблицы, т.е. весь массив температур за 1981 г. Другим вариантом, эквивалентным приведенному выше описанию, является следующий:
type Month = array[1..12] of real; Year = array[1981..1990] of Month;var H: Year;
Наиболее краткий вариант описания данного массива такой:
var H: array[1981..1990, 1..12] of real;
Трехмерный массив можно определить как одномерный массив, у которого элементами являются двумерные массивы. Вот пример описания трехмерного массива:
var A: array[1..10, 1..20, 1..30] of integer;
Это массив, состоящий из 10x20x30 = 6000 целых чисел и занимающий в памяти 6000x2 = 12000 байт. В Паскале нет ограничения сверху на размерность массива. Однако в каждой конкретной реализации Паскаля ограничивается объем памяти, выделяемый под массивы.
По аналогии с математикой одномерные числовые массивы часто называют векторами, а двумерные — матрицами. Размер массивов не может быть изменен в процессе выполнения. Изменение размеров массива происходит через изменение в тексте программы и повторную компиляцию. Для упрощения таких изменений удобно определять индексные параметры в разделе констант:
сonst Imax=10; Jmax=20;var Mas: array[1..Imax, 1..Jmax] of integer;
Теперь для изменения размеров массива Mas и всех операторов программы, связанных с этими размерами, достаточно отредактировать только одну строку в программе — раздел констант.