Массивы
Массив – это структурированный тип данных, состоящий из фиксированного числа элементов, имеющих один и тот же тип. Элементами массива могут быть данные любого типа, включая структурированные. Число элементов массива фиксируется при описании и в процессе выполнения программы не меняется.
Доступ к отдельному элементу осуществляется путём индексирования элементов массива. Индексы представляют собой выражения любого скалярного типа, кроме вещественного. Для описания массива предназначено словосочетание array of (массив из).
Пример:
Var
A:array[1..40] of real; (одномерный массив из 40 элементов типа real)
B:array[1..8,1..8] of real; (двумерный массив из 8 строк и 8 столбцов с элементами типа real)
Ø C:array[1..4,1..5,1..8] of integer; (трёхмерный массив с элементами типа integer)
Ø Массив может быть описан и с представлением типа в разделе описания типов данных:
Ø TYPE MAS=array[1..40] of real;
Ø Var A:MAS;
Размерность массивов ограничена только объёмом памяти конкретной ЭВМ. Одномерные массивы обычно используются для представления векторов , а двумя для представления матриц.
Для описания массивов можно использовать предварительно определённые константы:
Const
G1=4; g2=6;
Var
A:array[1..g1,1..g2] of real;
Элементы массива располагаются в памяти последовательно. Элементы с меньшим значением индекса хранятся в более низких адресах памяти. Многомерные массивы располагаются таким образом, что самый правый индекс возрастаяет самым первым. Например, если имеется массив
A:array[1..5,1..5];
То в памяти элементы массива будут размещены по возрастанию адресов:
A[1,1]
A[1,2]
…..
A[1,5]
A[2,1]
A[2,2]
…..
A[2,5]
Для работы с массивом как единым целым используется идентификатор массива без указания индекса. Массив может участвовать только в операциях отношения «равно», «не равно» и в операторе присваивания. Массивы, участвующие в этих действиях, должны быть идентичны по структуре, то есть иметь одинаковые типы индексов и одинаковые типы компонентов.
После объявления массива каждый его элемент можно обработать, указав идентификатор (имя) массива и индекс элемента в квадратных скобках. Индексированные элементы массива называются индексированными переменными и могут быть использованы так же, как и простые переменные.
Например, они могут находиться в выражениях в качестве операндов, использоваться в операторах for, while, repeat, входить в качестве параметров в операторы read, readln, write, writeln; им можно присваивать любые значения, соответствующие их типу.
Инициализация массива заключается в присвоении каждому элементу массива одного и того же значения, соответствующего базовому типу. Наиболее эффективно эта операция выполняется с помощью оператора FOR:
For i:=1 to 4 do A[i]:=0;
Для инициализации двумерного массива обычно используется вложенный оператор FOR:
For i:=1 to 10 do
For j:=1 to 15 do
B[I,j]:=0;
Ввод и вывод значений элементов массива производится поэлементно. Значения элементам массива можно присвоить с помощью оператора присваивания, однако чаще всего они вводятся с экрана с помощью оператора 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
Readln(B[I,j]);
Вывод значений элементов массива выполняется аналогичным образом с использованием операторов write или writeln.
Копированием массивов называется присвоение значений всех элементов одного массива всем соответствующим элементам другого массива. Копирование можно выполнить одним оператором присваивания, например A:=D; или с помощью оператора for:
For i:=1 to 4 do A[i]:=D[i];
Перестановка значений элементов массива осуществляется с помощью дополнительной переменной того же типа, что и базовый тип массива. Например, требуется поменять значения первого и пятого элементов массива A:
V:=A[5];
A[5]:=A[1];
A[1]:=v;
Пример 1.
Ввести одномерный массив целых чисел с клавиатуры и вывести на экран его элементы с противоположным знаком.
Program Massiv:
Const
N=10;
Type
Mas:array[1..N] of integer;
Var
A:Mas;
I:integer;
Begin
For i:=1 to n do
begin
write(‘введите элемент с индесом’,i,’:’);
readln(A[i])
end;
for i:=1 to n do
write(-A[i]:5);
writeln
end.
Пример 2.
Подсчитать сумму элементов одномерного массива.
Пример 3.
Найти элемент одномерного массива, имеющий максимальное значение. Вывести на печать значение этого элемента и его индекс.
Пример 4.
Ввести двумерный массив целых чисел с клавиатуры и вывести на экран по строкам его элементы с противоположным знаком.
program MASSIV2;
const
n=10;
m=10;
var
A:array[1..n,1..m] of integer;
i,j:integer;
begin
for i:=1 to n do
for j:=1 to m do
begin
write(‘введите элемент с индексом’,i,j,’:’);
readln(A[i,j])
end;
for i:=1 to n do
begin
for j:=1 to m do
write(-A[i,j]:5);
writeln
end;
end.
Пример 5.
Составить программу для транспортирования матрицы А целых чисел размером NxN.