Типичными операциями при работе с массивами являются:
· ввод массива;
· вывод массива;
· поиск максимального или минимального элемента массива;
· поиск заданного элемента массива;
· сортировка массива.
Как правило, работа с массивами осуществляется с помощью операторов цикла.
В Object Pascal можно одним оператором присваивания передать все элементы одного массива другому массиву того же типа (только для обычных, не динамических массивов!), например:
Var
a,b : array[1..5] of Single;
Begin
а := b;
End.
После этого присваивания все пять элементов массива a получат те же значения, что и в массиве b. Однако, следует заметить, что следующее объявление
Var
a: array[1..5] ofSingle;
b: array[1..5] ofSingle;
создаст разные типы массивов, поэтому оператор а := b; в этом случае вызовет сообщение об ошибке.
Чтобы избежать таких проблем, можно создать свой тип массивов определенного вида, а затем уже объявлять массивы этого типа, например:
Type
mySingleArray =array[1..5] ofSingle;
Var
a: mySingleArray;
b: mySingleArray;
Над массивами не определены операции отношения. Сравнить два массива можно только поэлементно.
Основными используемыми функциями при работе с массивами являются:
Low(x) – возвращает нижний (минимальный) индекс массива x;
High(x) – возвращает верхний (максимальный) индекс массива x;
Length(x) – возвращает количество элементов массива x.
При использовании массивов наиболее распространенной ошибкой является выход значения индексного выражения за допустимые границы, указанные при объявлении массива.
Если в качестве индекса используется константа, и ее значение выходит за допустимые границы, то такая ошибка обнаруживается на этапе компиляции программы. Например, если в программе объявлен массив
DayOfWeek : array[0..6] ofstring,
то во время компиляции программы оператор
day [7] := 'Воскресенье';
будет помечен как ошибочный.
Если для доступа к элементу массива в качестве индекса используется переменная или выражение, то возможно возникновение ошибки во время выполнения программы. Например, если в программе объявлен массив
OurTab: array[1..N] of integer;
то оператор
for i:=0 to N do tab1[i] := 5;
формально является верным, и его компиляция будет успешно выполнена.
Однако во время выполнения программы, при попытке присвоить значение несуществующему нулевому элементу массива OurTab, будет выведено сообщение об ошибке.