После объявления массива каждый его элемент можно обработать, указав идентификатор (имя) массива, а за ним – индекс элемента в квадратных скобках. Например, запись Mas[2], VectorZflO] позволяет обратиться ко второму элементу массива Mas и десятому элементу массива VectorZ. При работе с двумерным массивом указываются два индекса, с n-мерным массивом – n индексов. Например, запись MatrU[4,4] делает доступным для обработки значение элемента, находящегося в четвертой строке четвертого столбца массива MatrU. Индексированные элементы массива называются индексированными переменными и могут использоваться так же, как и простые переменные. Например, они могут входить в выражения в качестве операндов, использоваться в операторах for, while, repeat, входить в качестве параметров в операторы Read, Readln, Write, Writeln им можно присваивать любые значения, соответствующие их типу. Рассмотрим типичные ситуации, возникающие при работе с данными типа array. Для этого опишем три массива и четыре вспомогательные переменные: var A,D : аггау[1..4] of real; В : аггау[1..10.1..15] of integer; I, J, К : integer; S : real; Инициализация (присваивание начальных значений) массива заключается в присваивании каждому элементу массива одного и того же значения, соответствующего базовому типу. Наиболее эффективно эта операция выполняется с помощью оператора for, например: for I := 1 to 4 do A[I] := 0; Для инициализации двумерного массива обычно используется вложенный оператор for, например: for I := I to 10 do for J := 1 to 15 do B[I,J] :=0; Pascal не имеет средств ввода-вывода сразу всех элементов массива, поэтому ввод и вывод значений производится поэлементно. Значения элементам массива можно присвоить с помощью оператора присваивания, как показано в примере инициализации, однако чаще всего они вводятся с клавиатуры при помощи оператора Read или Readln с использованием оператора цикла for: for I:=l to 4 do Readln(A[I]); Аналогично, значения двумерного массива вводятся с помощью вложенного оператора for: for I := 1 to 10 do for J := 1 to 15 do Readln (B[I,J]); В связи с тем, что использовался оператор Readln, каждое значение будет вводиться с новой строки. Можно ввести значения отдельных элементов, а не всего массива. Так, при помощи операторов Read(A[3]); Read(B[6,9]); вводится значение третьего элемента вектора А и значение элемента, расположенного в шестой строке девятого столбца матрицы В. Оба значения набираются в одной строке экрана, начиная с текущей позиции курсора. Вывод значений элементов массива выполняется аналогичным образом, но используются операторы Write или Writeln: for I := 1 to 4 do Writeln (A[I]): {Вывод значений массива А} или for I ;= 1 to 10 do for J := 1 to 15 do Writeln (B[I.J]): {Вывод значений массива В} Копированием массивов называется присваивание значений всех элементов одного массива всем соответствующим элементам другого массива. Копирование можно выполнить при помощи одного оператора присваивания, например А:= D; или с помощью оператора for: for I := 1 to 4 do A[I] := D[I]; В обоих случаях значения элементов массива D не изменяются, а значения элементов массива А становятся равными значениям соответствующих элементов массива D. Очевидно, что оба массива должны быть идентичны по структуре. Иногда требуется осуществить поиск в массиве каких-либо элементов, удовлетворяющих некоторым известным условиям. Пусть, например, требуется выяснить, сколько элементов массива А имеют нулевое значение. Для ответа на этот вопрос введем дополнительную переменную К и воспользуемся операторами for и if: К := 0; for I := I to 4 do if A[I] = 0 then К := К + 1; После выполнения цикла переменная К будет содержать число элементов массива А, имеющих нулевое значение. Перестановка значений элементов массива осуществляется с помощью дополнительной переменной того же типа, что и базовый тип массива. Например, фрагмент программы, обменивающий значения первого и пятого элементов массива А, будет выглядеть следующим образом: Vs:= A[5]; {Vs — вспомогательная переменная} А[5]:= А[1]; A[l]:= Vs; |