Next:5.2.2
Матрицы
Up:5.2
Структурированные типы данных
Previous:5.2
Структурированные типы данных
ArrayType = array (Expression | NameType) of Type.
Рис. 5.5. Синтаксис типов массивов
Например, можно определить:
type СЛОВО = array100 of char;
var А,AA:СЛОВО;
где тип СЛОВО -- это все возможные последовательности литер длины 100, элементы каждой из которых занумерованы числами от 0 до 99. Допустимы операторы
A:=AA; D:=(B=BB)&(C#CC);
в которых значения массивов обрабатываются целиком. Помимо этого, любая
переменная типа массивов рассматривается как совокупность переменных, носящих
общее имя и различающихся индексами -- так называемых переменных с индексами.
Например, массив А состоит из 100 элементов -- переменных А[0], A[1],,A[99],
каждая из которых имеет тип char. При этом допускается присваивание значения
отдельным переменным с индексами (элементам массива, например, A[2]). В
частности, оператор присваивания
A[2] := 'A'
заменяет в переменной A текущее значение 2-го элемента (т.е. элемента
с индексом 2) на значение 'A'.
ArrayName "[" Expression { "," Expression } "]"
Рис. 5.6. Синтаксис переменной с индексами
То, что индексы массива, т.е. "имена" его элементов, образуют некоторый отрезок целого типа, имеет весьма важные следствия. Индексы могут вычисляться, допускается использование вместо индексных констант индексных выражений. Значение такого выражения и определяет выбираемый элемент. Синтаксис переменной с индексами задает синтаксическая диаграмма рис. 5.6. Например, оператор
A[K] := 'В'
присваивает 'В' элементу массива А с индексом 1, если К = 1, элементу массива А с индексом 2, если К = 2, и т.д.
Возможность вычисления индекса элемента массива является одним из важнейших и мощных средств программирования (заметим, что память большинства существующих ЭВМ -- это массив ячеек памяти, в котором роль индексов играют адреса ячеек памяти), но очень часто приводит к ошибкам в программе, связанным с ошибочными обращениями к несуществующим элементам массива.
В качестве примера использования массива рассмотрим программу обращения заданного слова длины 1000 (т.е. выписывания в обратном порядке 1000 символов, составляющих входное слово).
module ОБРАЩЕНИЕ;
const ДЛИНА = 1000;
type СЛОВО = array ДЛИНА of
char;
var A:СЛОВО; К:НОМЕР ;
begin
for K := 0 to ДЛИНА-1 do read(A[K])
end;
for K := ДЛИНА-1 to 0 by -1
do write(A[K]) end
end.
Next:5.2.3
Матрицы
Up:5.2
Структурированные типы данных
Previous:5.2
Структурированные типы данных