Массив это структурированный тип данных, состоящий из фиксированного числа элементов, имеющих один и тот же тип.
Название регулярный тип (или ряды) массивы получили за то, что в них объединены однотипные (логически однородные) элементы, упорядоченные (урегулированные) по индексам, определяющим положение каждого элемента в массиве.
В качестве элементов массива можно использовать и любой другой ранее описанный тип, поэтому вполне правомерно существование массивов записей, массивов указателей, массивов строк и т.д. Элементами массива могут быть данные любого типа, включая структурированные. Тип элементов массива называется базовым. Особенностью языка Паскаль является то, что число элементов фиксируется при описании и в процессе выполнения программы не меняется.
Элементы, образующие массив, упорядочены таким образом, что каждому элементу соответствует совокупность номеров (индексов), определяющих его местоположение в общей последовательности. Индекс представляет собой выражение любого порядкового типа. Чтобы обратиться к элементу массива, надо указать его базовое имя и индекс (номер).
Массивы можно описать 2-мя способами: через описание типа массива и простое описание:
TYPE Matrix = Array [0..9] of Char; VAR Mas : Matrix; ... Mas[6]:=’A’; ...
VAR Mas : Array [0..9] of Char; ... Mas[6]:=’A’;
<имя_массива> : ARRAY [<список_индексов>] OF <тип>;
<имя_массива> | правильный идентификатор; |
ARRAY, OF | служебные слова (массив, из); |
<список_индексов> | список из одного или нескольких индексных типов, разделённых запятыми; |
<тип> | любой тип Паскаля. |
Если в форме описания массива задан один индекс, массив называется одномерным, если два индекса двумерным, если n индексов n-мерным. Одномерный массив соответствует понятию линейной таблицы (вектора), двумерный понятию прямоугольной таблицы (матрицы).
VAR Mas1 : Array [1..6] Of Char; {Одномерный массив на 6 элементов} Mas2 : Array [1..5, 1..5] Of Byte; {Двумерный массив 5х5 элементов} Mas3 : Array [1..3, 1..4, 1..2] Of String; {Трёхмерный массив}
В место числа, точной ссылки на элемент, можно подставить переменную (математическое выражение) порядкового типа, значение которой(ого) не выходят за пределы диапазона массива.
Индексированные элементы массива называются индексированными переменными и могут быть использованы так же, как и простые переменные. Например, они могут находиться в выражениях в качестве операндов, использоваться в операторах FOR, WHILE, REPEAT, CASE, входить в качестве параметров в операторы READ, READLN, WRITE, WRITELN; им можно присваивать любые значения, соответствующие их типу.
Инициализация (присваивание начальных значений) массива заключается в присваивании каждому элементу массива значения, соответствующего базовому типу. Наиболее эффективно эта операция выполняется с помощью оператора FOR.
Заполнение одномерного массива: | Заполнение двумерного массива (использование вложенного цикла): |
Паскаль не имеет средств ввода-вывода элементов массива сразу, поэтому ввод и вывод значений производится поэлементно. Значения элементам массива можно присвоить с помощью оператора присваивания, однако чаще всего они вводятся с помощью оператора READ или READLN с использованием оператора цикла FOR (см. выше).
Для работы с массивом как единым целым используется идентификатор массива без указания индекса в квадратных скобках. Массив может участвовать только в операциях отношения «равно», «не равно» и в операторе присвоения. Массивы, участвующие в этих действиях, должны быть идентичны по структуре, т.е. иметь одинаковые типы индексов и одинаковые типы компонентов. Например, если массивы описаны так
TYPE Massiv = Array [1..20] Of Real; VAR A, B : Massiv;
то применение к ним допустимых операций даст следующий результат:
A = B | True, если значение каждого элемента массива А равно соответствующему значению элемента массива В; |
A <> B | True, если хотя бы одно значение элемента массива А не равно значению соответствующего элемента массива В; |
A := B | Все значения элементов массива В присваиваются соответствующим элементам массива А. Значения элементов массива В остаются неизменны. |
Если массивы описаны следующим образом
VAR A : Array [1..20] Of Real; B : Array [1..20] Of Real;
то к ним не применимы перечисленные выше операции (т.е. возникнет ошибка при попытке их использования).
Uses CRT; Var Mas : Array [1..10] Of Real; I : Integer; Sum : Real; BEGIN ClrScr; Sum := 0; Writeln ('Введите 10 чисел :'); For I:=1 To 10 Do Begin Read (Mas[I]); Sum := Sum + Mas[I] End; ClrScr; Writeln ('Сумма 10 чисел = ', Sum:12:4); Writeln ('Сами числа :'); For I:=1 To 10 Do Write (Mas[I]:7:2); END.