Если вы вводите значения элементов массива с клавиатуры, то получится следующая запись:
.
.
for i:=1 to 5 do
read(a[i]);
.
Можно заполнить массив с помощью генератора случайных чисел:
.
.
randomize;
for i:=1 to 5 do
a[i]:=random(50);
.
.
В этом случае массив заполнится случайными целыми числами от 0 до 49.
Если использовать запись a[i]:=random; массив заполнится случайными действительными числами от 0 до 1.
Вывод массива
Чтобы вывести массив, нужно также последовательно перебрать, вывести на печать все его элементы. Для этого используем оператор цикла со счетчиком.
вывод в одну строку –
.
.
for i:=1 to 5 do
write(a[i],’ ‘);
.
.
вывод в столбец –
.
.
for i:=1 to 5 do
writeln(a[i]);
.
.
Примеры:
1. Вычислить сумму пятнадцати целых чисел. Для обозначения чисел введем имя массива x, элементы которого имеют индекс i. Сумму обозначим именем sum. Тогда sum=x[1] +x[2] + ••• +x[15].
----------------------------------------------
Program P1;
Var
x : array [1..15] of integer;
sum, i: integer;
Begin
sum:=0;
for i:=1 to 15 do
Begin
read(x[i]);
sum:= sum + x[i];
end;
writeln(‘sum=’,sum);
End.
Внутри цикла вводится значение одного элемента массива x[i] и оно прибавляется к значению текущей суммы sum. Цикл повторяется 15 раз. Элементы массива имеют целый тип (integer), а индекс — ограниченный тип 1..15.
Переменная i, с одной стороны, используется как параметр цикла, а с другой — в качестве индекса. В этом случае описать переменную i можно двояко:
а) в разделе переменных var указать переменную i как ограниченного типа, например
Var
x : array [1..15] of integer;
i :1..15;
б) учитывая, что элементами ограниченного типа являются целые числа, можно ввести описание integer, например
Var
x : array [1..15] of integer;
i : integer;
Так как в языке ПАСКАЛЬ требуется описание всех переменных, то необходимо описать еще и переменную sum. Естественно, что она имеет тип integer, так как все суммарные числа x[i] имеют целый тип
До сих пор мы рассматривали массивы, каждый элемент которых содержал только один индекс. Такие массивы обычно называются одномерными. В математике часто используются многомерные массивы, т. е. массивы массивов. Особенно широкое распространение получили двухмерные массивы, иначе называемые матрицами.
Описание двумерного массива:
Type
<имя>=array[диапазон1,диапазон2] of <базовый тип>;
диапазон1, диапазон2 –диапазоны для двух индексов.
Например, изображение целых чисел последовательно в нескольких строках является матрицей:
5 4 3 6
2 8 1 7
4 3 9 5
Данная матрица имеет размер 3 на 4, т. е. она состоит из трех строк и четырех столбцов. Если всю матрицу обозначить одним именем, например А, то каждый элемент матрицы обозначается с двумя индексами, например A[I,J]. Здесь первый индекс I обозначает номер строки (I = 1, 2, 3), второй индекс J — номер столбца (J = 1, 2, 3, 4). Такую матрицу можно описать следующим образом (с использованием имени типа Т):
TYPE
Т=ARRAY [1..3, 1..4] OF INTEGER;
VAR А:Т;
ПРИМЕРЫ ПРОГРАММИРОВАНИЯ ЗАДАЧ С ИСПОЛЬЗОВАНИЕММАССИВОВ
Найти максимальный элемент массива В
а) массив – константа
Program m1;
const
B:array[1..2,1..5] of integer=((4,3,2,-1,0),(-7,0,13,2,8));
Программу составим в трех вариантах: в варианте 1 массив не используется, в варианте 2 он описывается в разделе переменных, в варианте 3 массив определяется в разделе типов.
Для иллюстрации результата выполнения программы возьмем семь конкретных чисел 5.1, 6.4, 8,7, 1.9, 3.6, 2.0, 4,2
PROGRAM АЗО;
CONST N=7; (* КОЛИЧЕСТВО ЧИСЕЛ *)
VAR
A : REAL; (* ВВОДИМОЕ ЧИСЛО *)
SUM : REAL; (* СУММА *)
I: INTEGER; (* ПАРАМЕТР ЦИКЛА *)
BEGIN
SUM:=0;
WRITELN('ВВЕДИТЕ ЧИСЛА ЧЕРЕЗ ПРОБЕЛЫ:');
FOR 1:=1 TO N DO
BEGIN
READ(A);
SUM:=SUM +A
END;
WRITELN('----------------------------------');
WRITELN ('СУММА ЧИСЕЛ=', SUM:6:2 )
END.
Здесь каждое число вводится внутри цикла и прибавляется к накапливаемой сумме SUM. Значение переменной А изменяется внутри цикла. После выполнения всего цикла значение А равно последнему введенному числу. Для А отведена одна ячейка памяти ЭВМ, если условно считать, что действительное число занимает одну ячейку.
ВЫЧИСЛЕНИЕ СУММЫ, 2-й ВАРИАНТ
PROGRAM A31;
CONST N=7; (* КОЛИЧЕСТВО ЧИСЕЛ *)
VAR
A : ARRAY[1..N] OF REAL; (* МАССИВ ЧИСЕЛ *)
SUM : REAL; (* СУММА *)
I : INTEGER; (* ПАРАМЕТР ЦИКЛА *)
BEGIN
WRITELN('ВВЕДИТЕ МАССИВ ЧИСЕЛ ЧЕРЕЗ ПРОБЕЛЫ:');
FOR I:=1 ТО N DO
RЕAD(А[i] ) ;
SUM:=0;
FOR I:=1 ТО N DO
SUM:=SUM +A[I] ;
WRITELN('----------------------------------'):
WRITELN('СУММА ЧИСЕЛ =‘, SUM:6:2 )
END.
Здесь в разделе переменных VAR явно описан массив А. Для массива выделяется память в количестве семи ячеек, т. е. для каждого числа одна ячейка. В разделе операторов с помощью цикла сначала вводятся все значения элементов массива А. Затем организуется новый цикл для вычисления суммы. Применение массива приводит к увеличению используемой памяти ЭВМ - вместо одной ячейки (см. вариант 1) здесь выделено семь ячеек памяти. В то же время значения элементов массива сохраняются в памяти ЭВМ, и их можно использовать и после окончания выполнения циклической части.
Такой вариант программы целесообразно использовать в тех случаях, когда значения введенного массива многократно используются в программе.
ВЫЧИСЛЕНИЕ СУММЫ, 3-й ВАРИАНТ
PROGRAM А32А;
CONST N=7; (* КОЛИЧЕСТВО ЧИСЕЛ *)
TYPE Т=ARRAY[1..N] OF REAL; (* ТИП МАССИВА *)
VAR
А:Т; (* МАССИВ *)
SUM:REAL; (* СУММА *)
I:INTEGER; (* ПАРАМЕТР ЦИКЛА *)
BEGIN
WR1TELN('ВВЕДИТЕ МАССИВ ЧИСЕЛ ЧЕРЕЗ ПРОБЕЛЫ:');
FOR I:=1 ТО N DO
READ(А[I]);
SUM:=0;
FOR I:=1TO N DO
SUM:=SUM +A[I] ;
WRITELN('----------------------------------');
WRITELN('СУММА ЧИСЕЛ =', SUM:6:2 )
END.
Вариант З отличается от предыдущего только введением типа массива, что делает программу более эффективной