Статья: Интервальные типы данных. Оператор TYPE. Массивы
Min = 10;
TYPE Nums = Min..Max;
TYPE ArrayType = ARRAY[-10..0] OF Nums;
VAR a : ArrayType;
- массив из 11 элементов с индексами от -10 до 0, каждый элемент - целое положительное число из двух цифр;
TYPE IndexType = 'a'..'z';
VAR a : ARRAY[IndexType] OF BOOLEAN;
- массив из 26 элементов с индексами от 'a' до 'z', каждый элемент - логическая переменная.
В программе вы можете использовать как массивы целиком, так и отдельные элементы массивов. Элемент одномерного массива записывается в виде:
имя массива [ индексное выражение ]
Индексное выражение - это любое выражение соответствующего типа. Если элемент массива - не массив, то с ним можно выполнять любые операции, разрешенные для простых переменных соответствующего типа. Целому массиву можно лишь присваивать массив того же типа. Заметим, что если массивы описаны в программе таким образом:
VAR a : ARRAY[1..3] OF REAL;
b,c,d : ARRAY[1..3] OF REAL;
TYPE Massiv=ARRAY[1..3] OF REAL;
VAR e,f : Massiv;
g : Massiv;
h,i : Massiv;
то массивы b,c,d - однотипные и массивы e,f,g,h,i тоже однотипные, но массивы a и b (a и c,a и d) имеют разный тип; и массивы b (c,d,a) и e (f,g,h,i) тоже имеют разный тип! Компилятор считает, что две переменные имеют один и тот же тип, только если они описаны в одном операторе через запятую, либо имена их типов одинаковы! Запомните это очень важное правило.
Запишем пример программы, использующей (пока одномерные) массивы:
{ программа вводит массив из N целых чисел, где N не превосходит 20, и выводит его в порядке неубывания }
CONST Nmax=20;
TYPE IndexType=1..Nmax;
Massiv=ARRAY[IndexType] OF Integer;
VAR a : Massiv; i,j,N : IndexType; t : Integer;
BEGIN WRITELN;
REPEAT WRITE('Введите длину массива от 1 до ',Nmax,' ');
READ(N); WRITELN;
UNTIL (N>=1)AND(N<=Nmax);
{ Вводим массив поэлементно }