ДЕЙСТВИЯ НАД ЭЛЕМЕНТАМИ МАССИВА.
ДЕЙСТВИЯ НАД МАССИВАМИ.
Для работы с массивом как единым целым используется идентификатор массива без указания индекса в квадратных скобках. Массив может участвовать только в операциях отношения «равно», «не равно», и в операторе присваивания. Массивы, участвующие в этих действиях, должны быть идентичны по структуре, т.е. иметь одинаковые типы индексов и одинаковые типы компонентов. Например, если массивы А и В описаны так:
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.
Указание типов в разделе описаний помогает достичь логической ясности программы и является хорошим стилем программирования.