ДЕЙСТВИЯ НАД ЭЛЕМЕНТАМИ МАССИВА.

ДЕЙСТВИЯ НАД МАССИВАМИ.

Для работы с массивом как единым целым используется идентификатор массива без указания индекса в квадратных скобках. Массив может участвовать только в операциях отношения «равно», «не равно», и в операторе присваивания. Массивы, участвующие в этих действиях, должны быть идентичны по структуре, т.е. иметь одинаковые типы индексов и одинаковые типы компонентов. Например, если массивы А и В описаны так:

var A,B:array[1..20] of real;

то применение к ним допустимых операций даст следующий результат:

 

Выражение Результат
А=В true, если значение каждого элемента массива А равно соответствующему значению элемента массива В
A<>B true, если хотя бы одно значение элемента массива А не равно значению соответствующего элемента массива В
A:=B все значения элементов массива В присваиваются соответствующим элементам массива А. Значения элементов массива В остаются неизменны.

 

После объявления массива каждый его элемент можно обработать, указав идентификатор (имя) массива и индекс элемента в квадратных скобках. Например, запись MAS[2], VECTOR[10] позволяет обратиться ко второму элементу массива MAS и десятому элементу массива VECTOR.

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

B[5]:=B[3]+1;

SUM:=SUM-C[k];

PI:=A[2*i+1];

Для ввода и вывода числовых значений массива используются циклы, т.к. язык TURBO PASCAL 7.0 не имеет средств ввода-вывода элементов массива сразу.

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

for i:=1 to 4 do A[i]:=0;

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

Например: for i:=1 to 30 do readln(A[i]);

Копированием массивов наз. присваивание значений всех элементов одного массива всем соответствующим элементам другого массива. Копирование можно выполнить одним оператором присваивания, например A:=D; или с помощью оператора цикла с параметром: for i:=1 to 4 doA[i]:=D[i];

Пример:

Составить программу вычисления скалярного произведения двух векторов U и V, состоящих из четырех элементов каждый, по формуле

.

Вычислить длину вектора V .

Решение:

PROGRAM SP; PROGRAM SP;

type n=1..4; var S,DV:real;

var S,DV:real; U,V:array[1..4] of real;

U,V:array[n] of real; i:integer;

i:n; BEGIN

BEGIN . . . . . . . . . . .

for i:=1 to 4 do read(U[i]); END.

readln;

S:=0;

DV:=0;

for i:=1 to 4 do PRIGRAM SP;

BEGIN type mas=array[1..4] of real;

S:=S+U[i]*V[i]; var U,V:mas;

DV:=DV+V[i]*V[i] S,DV:real;

END; i:integer;

DV:=sqrt(DV); BEGIN

writeln(‘S=’,S,’ DV=’,DV) . . . . . . . . . . . .

END. END.

Указание типов в разделе описаний помогает достичь логической ясности программы и является хорошим стилем программирования.