Массивы

Массив – это структурированный тип данных, состоящий из фиксированного числа элементов, имеющих один и тот же тип. Элементами массива могут быть данные любого типа, включая структурированные. Число элементов массива фиксируется при описании и в процессе выполнения программы не меняется.

Доступ к отдельному элементу осуществляется путём индексирования элементов массива. Индексы представляют собой выражения любого скалярного типа, кроме вещественного. Для описания массива предназначено словосочетание 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.