Одномерные массивы

Описание одномерных массивов имеет вид

 

<список идентификаторов>: array [< диапазон изменения

индекса>] of <тип элементов массива>;

 

<диапазон изменения индекса> - это поддиапазон любого перечислимого типа. Например:

1 ..85, январь ..декабрь, ‘A’ .. ‘Z’ и т.п.

Типом элементов массива может быть любой простой тип. Кроме того, элементами массива могут быть другие массивы. Массивы описывают, как и остальные переменные в разделе Var.

Примеры:

 

A: array[l ..10] of integer; { массив с одним индексом,

который меняется от 1 до 10,

элементы массива целые числа }

В: array['А' . . ' Z ' ] of Real; { массив с одним индексом,

который меняется от 'А' до 'Z' ,

элементы массива - вещественные числа}

С: array[10 .. 20] of Char; { массив с одним индексом,

который меняется от 10 до 20,

элементы массива – символы }

 

Если два массива А и В однотипные, то допускаются следующие операторы присваивания:

А := В; или В := А;

Необходимо отметить, что элементы массивов имеют те же свойства, что и обычные переменные соответствующих типов. Доступ к элементу массива в программе выполняется путём указания идентификатора массива, а затем в квадратных скобках его номера (индекса).

Пример:

A[1]: = 7;

A[2]: = A[6];

A[6]:=SQRT(f);

 

На месте индекса элемента массива может стоять идентификатор переменной. В этом случае во время выполнения программы будет осуществлена подстановка – значение этой переменной.

Примеры:

1)

i:=7;

A[i] := 23; {это равносильно оператору А[7] : = 23; }

2)

for j:= 1 to 10 do A[j]:= j*j;

 

В последнем примере в цикле выполняется присвоение элементам массива конкретных значений. Изменение счётчика цикла в каждой итерации позволяет перебрать все элементы массива.

Одномерный массив длины N можно представить как вектор c элементами (А1, А2,..., АN). Если необходимо ввести значения элементов массива с клавиатуры, то для этого проще всего использовать цикл:

for i := 1 to n do read (A[i]) ;

 

или с выводом сообщения:

 

for i:= 1 to n do

begin

Write('введите А[' , i , ']: ');

Readln(A[i] ) ;

end;

 

Подобным образом можно организовать вывод элементов массива на экран. Например, в строку без комментариев:

 

for i := 1 to n do Write(А[i] : 4, ' ');

 

или в столбец и с комментариями:

 

for i := 1 to n do Writeln('А[' , i , ']= ' , A[i]);

 

Кроме операций ввода и вывода, любые другие операции с элементами массива осуществляются в цикле, и лучше всего для этих целей подходит цикл типа for … do.

Часто размер массива приходится несколько раз изменять во время отладки программы. Изменение диапазона в описании массива влечёт за собой изменение параметров цикла и возможно других переменных. Можно облегчить подобные преобразования, если при указании диапазона изменения индексов использовать константы.

Задача. Ввести массив с клавиатуры, найти максимальный и минимальный элементы.

 

program p8_1;

const n = 10; { Константа n задаёт максимальное количество

элементов в массиве А}

var

A: array[1..n] of real;

i: integer;

max, min : real;

begin

{ ввод элементов массива }

Writeln(' Введите ' , n, ' элементов массива:');

for i := 1 to n do Read (A [i] );

readln;

{ Начальные установки }

max := А [ 1] ;

min := A [ 1] ;

{поиск максимума и минимума}

for i:= 2 to n do

if A[i] > max then max:= A[i]

else

if A[i] < min then min:= A[i];

{ вывод максимума и минимума}

Writeln('max= ', max, ' min= ' , min);

end.