Массив – совокупность однотипных данных, объединенных одним именем. Элементы массива пронумерованы, и обратиться к каждому из них можно, указав один из нескольких индексов. Вектор – пример одномерного массива, в котором элементы нумеруются одним индексом. Если в массиве хранится таблица значений (матрица), его элементы нумеруются двумя индексами.
Характеристики массива:
- тип – общий тип элементов массива;
- размерность – количество индексов массива;
- диапазон – количество допустимых значений каждого индекса;
- форма – совокупность размерности и диапазонов.
Массив должен быть объявлен в разделе описания переменных:
Var имя массива : array [диапазон индексов] of тип;
Тип элементов массива может быть любым, кроме файлового; тип индексов любой порядковый тип.
Пример:
A: array [1..5, 1..5] of real;
X: array [1..10] of integer;
После объявления массива каждый его элемент можно обрабатывать, указав идентификатор (имя) массива и индекс элемента в квадратных скобках. Например, запись Mas[3], Vector[10] позволяет обратиться к третьему элементу массива Mas и десятому элементу массива vector. При работе с двумерными массивами указываются два индекса. Например, запись Matr[4, 6] делает доступным для обработки значение элемента, находящегося в четвертой строке шестого столбца массива Matr.
Рассмотрим типичные ситуации, возникающие при работе с данными типа array. Для этого опишем три массива и четыре вспомогательные переменные.
Var A, D: ARRAY [1..4] OF REAL;
B: ARRAY [1..10, 1..15] OF INTEGER;
I, J, K: INTEGER;
S:REAL;
Паскаль не имеет средств ввода-вывода элементов массива сразу, поэтому ввод-вывод значений производится поэтапно. Значения элементам массива можно присвоить с помощью оператора присваивания, однако чаще всего они вводятся с экрана с помощью оператора read или readln с использованием оператора цикла for:
For i:=1 to 4 do readln(a[i]);
Аналогично значения элементов двумерного массива вводятся с помощью сложенного оператора for:
For i:=1 to 10 do
For j:=1 to 15 do
Read(b[I, j]);
Можно ввести значения и отдельных элементов, а не всего массива. Так операторами read(A[3]), readln(b[6, 9]) вводятся значения третьего элемента вектора А и значения элемента, расположенного в шестой строке девятого столбца матрицы В.
Вывод значений элементов массива выполняется аналогичным образом, но используются операторы write и writeln:
For i:=1 to 4 do
Write(A[i]); writeln;
Или
For i:=1 to 10 do begin
For j:=1 to 15 do
Write(b[I, j]); writeln; end;
Иногда требуется осуществить поиск в массиве каких-либо элементов, удовлетворяющих неким условиям. Пусть, например, надо выяснить, сколько элементов массива А имеют нулевое значение. Для ответа на этот вопрос введем дополнительную переменную к и воспользуемся операторами for и if:
K:=0;
For i:=1 to 4 do
If a[i]=0 then k:=k+1;
После выполнения цикла переменная к будет содержать количество элементов массива А с нулевыми значениями.
Пример 1.Составить программу, которая формирует двумерный массив по формуле и выводит его на экран.
Program massiv_1;
Var Mas:array[1..5, 1..5] of real;
I, j:integer;
Begin
For i:1 to 5 do begin
For j:=1 to 5 do begin
Mas[I,j]:=sin(i*j)+cos(i/j);
Write(mas[I, j]:6:2);
End;
End;
End.
Пример 2. Составить программу, которая формирует вектор случайных чисел, выполняет поиск максимального элемента, а затем выводит на экран его значение и порядковый номер в векторе.
Program massiv_2;
Var mas:array[1..20] of integer;
I, max, nim:integer;
Begin
Randomize;
For i:1 to 20 do begin
Mas[i]:=random(99)+1;
Write(mas[i]:6);
End; writeln;
Max:=-100000000;
For i:=1 to 20 do
If mas[i]>max then begin
Max:=mas[i]; nim:=I;
End;
Writeln(‘max=’, max:6, ‘ nom=’, nom:2);
End.
Пример 3. Составить программу, которая сортирует по возрастанию целочисленный массив и выводит его на экран.