Массивы - это совокупности однотипных элементов. Характеризуются
они следующим:
каждый компонент массива может быть явно обозначен и к нему
имеется прямой доступ;
число компонент массива определяется при его описании и в
дальнейшем не меняется.
Для обозначения компонент массива используется имя переменной-массива и
так называемые индексы, которые обычно указывают желаемый элемент.
Тип индекса может быть только порядковым (кроме longint). Чаще всего
используется интервальный тип (диапазон).
Описание типа массива задается следующим образом:
type
имя типа = array[ список индексов ] of тип
Здесь имя типа - правильный идентификатор; список индексов -
список одного или нескольких индексных типов, разделенных запятыми;
тип - любой тип данных.
Вводить и выводить массивы можно только поэлементно.
Пример 1. Ввод и вывод одномерного массива.
const
n = 5;
type
mas = array[1..n] of integer;
var
a: mas;
i: byte;
begin
writeln('введите элементы массива');
for i:=1 to n do readln(a[i]);
writeln('вывод элементов массива:');
for i:=1 to n do write(a[i]:5);
end.
Определить переменную как массив можно и непосредственно при ее описании,
без предварительного описания типа массива, например:
var a,b,c: array[1..10] of integer;
Если массивы a и b описаны как:
var
a = array[1..5] of integer;
b = array[1..5] of integer;
то переменные a и b считаются разных типов. Для обеспечения
совместимости применяйте описание переменных через предварительное
описание типа.
Если типы массивов идентичны, то в программе один массив может
быть присвоен другому. В этом случае значения всех переменных
одного массива будет присвоены соответствующим элементам второго
массива.
Вместе с тем, над массивами не определены операции отношения. Сравнивать
два массива можно только поэлементно.
Так как тип, идущий за ключевым словом of в описании массива, -
любой тип Турбо Паскаль, то он может быть и другим массивом. Например:
type
mas = array[1..5] of array[1..10] of integer;
Такую запись можно заменить более компактной:
type
mas = array[1..5, 1..10] of integer;
Таким образом возникает понятие многомерного массива. Глубина
вложенности массивов произвольная, поэтому количество элементов в
списке индексных типов (размерность массива) не ограничена, однако не
может быть более 65520 байт.
Работа с многомерными массивами почти всегда связана с организацией
вложенных циклов. Так, чтобы заполнить двумерный массив (матрицу) случайными
числами, используют конструкцию вида:
for i:=1 to m do
for j:=1 to n do a[i,j]:=random(10);
Для "красивого" вывода матрицы на экран используйте такой цикл:
for i:=1 to m do begin
for j:=1 to n do write(a[i,j]:5);
writeln;
end;
Знаете ли Вы, что абстракция через спецификацию - это прием программирования, позволяющий абстрагироваться от процесса вычислений описанных в теле процедуры, до уровня знания того, что данная процедура делает. Это достигается путем задания спецификации, описывающей эффект ее работы, после чего смысл обращения к данной процедуре становится ясным через анализ этой спецификации, а не самого тела процедуры. Мы пользуемся абстракцией через спецификацию всякий раз, когда связываем с процедурой некий комментарий, достаточно информативный для того, чтобы иметь возможность работать без анализа тела процедуры. Абстракция через спецификацию позволяет абстрагироваться от процесса вычислений описанных в теле процедуры, до уровня знания того, что данная процедура делает. Это достигается путем задания спецификации, описывающей эффект ее работы, после чего смысл обращения к данной процедуре становится ясным через анализ этой спецификации, а не самого тела процедуры. Мы пользуемся абстракцией через спецификацию всякий раз, когда связываем с процедурой некий комментарий, достаточно информативный для того, чтобы иметь возможность работать без анализа тела процедуры.