Массивы – упорядоченная структура однотипных данных, хранящихся в памяти последовательно. Массив обязательно имеет размеры. Описывается в разделе TYPE или VAR следующим образом:
Type <имя_типа> = array [диапазон_индексов] of <базовый_тип>;
или
Var <имя_переменной> : array [ диапазон_индексов] of <базовый_тип>;
Отметим, что в разделе Type разделителем служит символ “=”, а в разделе переменных var – двоеточие “ : ” .
Пpимер: TYPE
array10 = array [1..10] of integer;
array11 = array [11..22] of real;
VAR
V:array[-3..2] of char; {массив из 6 элементов}.
В качестве индексов можно использовать любые перечислимые типы как встроенные, так и вводимые программистом. Индексы могут задаваться также диапазоном. Если диапазон соответствует всему типу, можно просто указывать имя этого типа.
Например:
TYPE DIAP = 1..100;
VECTOR = array [DIAP] of real;
При записи сложных массивов индексы разных диапазонов могут принадлежать разным типам. Например:
VAR V: array [0..10 , 'A'..'C' ] of real;
В качестве значений диапазона могут использоваться идентификаторы, если их значения определены выше. Например:
CONST
K=10; L=5;
VAR
A: ARRAY [1..K] OF INTEGER;
B,С: ARRAY[1..K,1..L] OF REAL;
Массивы хранятся в памяти как сплошные последовательности компонентов, причем быстрее изменяется дальний правый индекс.
Обращение к элементу массива в программе производится указанием имени массива и индексов, заключенных в квадратные скобки:
В данном типе определена единственная операция присваивания. Можно присваивать целиком весь массив лишь массиву того же типа и размерности, например: B := С.
Операции сравнения в массивах производятся только поэлементно.
Обнуление одновременно всех элементов массива выполняется в цикле
FOR I :=1 TO K DO A[I] := 0.
Разрешается объявлять массивы, где базовыми элементами служат также массивы, например:
TYPE
VECTOR = array[1..5] of real;
MATRIX = array[1..10] of VECTOR;
что эквивалентно следующему способу описания:
MATRIX = array[1..10] of array[1..5] of real;
или
MATRIX=array[1..10, 1..5] of real;
Типизированные константы-массивы
В качестве типизированных констант можно использовать массивы. В константах-массивах список констант разделяется запятыми и заключается в круглые скобки:
При объявлении многомерных констант-массивов список констант, соответствующих каждому измерению, заключается в дополнительные круглые скобки и отделяется от соседних списков запятыми. Самый внутренний список констант связывается с изменением самого правого индекса массива. Например:
CONST
matr: array[1..2, 1..4] of byte = ((0,1,2,3),(4,5,6,7));
cub: array[0..1, 1..2,1..3] of byte = (((0,1,2),(3,4,5)),
((6,7,8),(9,10,11)));
Пример и задания для одномерных массивов
Пример. Найти значение и номер наименьшего элемента в одномерном массиве. При задании элементов исходного массива типизированной константой СА решения задачи имеет вид (рис. 12, а) и используется следующая программа:
Program lr6_1;
const
a: array[1..10] of integer = (5,2,7,1,8,3,4,5,6,6);
var
i, min, n: integer;
Begin
min:=a[1];
n:=1;
for i:=2 to 10 do
if a[i]<min then begin
min:=a[i];
n:=i
end;
writeln('минимальный элемент равен ',min, ' n=',n);
End.
Если элементы массива вводятся с клавиатуры, то СА имеет вид (рис. 12, б) и текст программы изменится:
program lr6_2;
var a: array[1..10] of integer;
i, min, n: integer;
Begin
read(a[1]);
min:=a[1]; n:=1;
for i:=2 to 10 do begin
read(a[i]);
if a[i]<min then begin
min:=a[i]; n:=i;
end;
end;
writeln('минимальный элемент равен ', min, ' n=',n);