1.3.2.2 Агрегаты данных
Массивы. Массивом называется упорядоченная индексированная совокупность однотипных элементов, имеющих общее имя. Элементами массива могут быть данные различных типов, включая структурированные. Каждый элемент массива однозначно определяется именем массива и индексом (номером этого элемента в массиве) или индексами, если массив многомерный. Для обращения к отдельному элементу массива указывается имя этого массива и номер (номера) элемента, заключенные в квадратные скобки.
Различают массивы статические и динамические.
Статический массив представляет собой массив, границы индексов и соответственно, размеры которого задаются при объявлении, т. е. Они известны еще до компиляции программы.
Формат описания типа статического массива:
Array [тип индексов] of <тип элементов>;
Динамический массив представляет собой массив, для которого при объявлении указывается только тип его элементов, а размер массива определяется при выполнении программы. В Delphi использование динамических массивов стало возможным, начиная с версии четыре.
Формат описания типа динамического массива:
Array of < тип элементов>;
После задания размера динамического массива для определения его длины, а также минимального и максимального номеров элементов используется функции Length(), Low(), и High(), соответственно. Нумерация элементов динамического массива начинается с нуля, по этому функция Low() для него возвращает значение нуль.
Для описания типа многомерного динамического массива, например двумерного используется конструкция
Array of Array of <тип элементов>;
Множества. Множество представляет собой совокупность элементов, выбранных из заранее определенного набора значений. Все элементы множества принадлежат одному порядковому типу, число элементов в множестве не может превышать 256 символов.
Формат описания множественного типа:
Set of <Тип элементов>;
Переменная множественного типа может содержать любое количество элементов своего множества – от нуля до максимального. Значение множественного типа заключается в квадратные скобки. Пустое множество обозначается как [].
Операции над множествами:
+ - объединение;
- - разность;
- пересечение;
= - эквивалентность;
- неэквивалентность;
<= - проверка вхождения;
>= - проверка включения.
Кроме того, имеется операция In(проверка членства), которая определяет принадлежность выражения порядкового типа (первого операнда) множеству (второму операнду). Результат операции имеет тип Boolean и значение True в случае, если значение принадлежит множеству.
В Delphi множественные типы используются, например, для описания типа кнопок в заголовке окна TborderIcons или типа параметров фильтра TfilterOptionc:
Type TborderIcons = (bi SistemMenu, biMinimize, biMaxsimize, biHelp);
TborderIcons = set of TborderIcon;
Type TfilterOptionc = (foCaseInsensitive, foNoPartialCompare);
TfilterOptionc = set of TfilterOption;
Приведенные описания типов содержатся в исходных модулях Forms и Db, соответсвенно.
Записи. Запись – это совокупность логически связанных компонент различного типа.
Формат описания:
<имя записи>= Record
<имя компонента1>: <тип>;
………………………………
<имя компонента2>:<тип>;
End;
Каждая компонента называется полем. Никаких ограничений на тип полей записи нет. Для получения доступа к компоненте записи используется составное имя. Формат составного имени: <имя записи>.<имя поля>;
Разрешены все операции над множеством. Записи с идентичной структурой можно присваивать друг к другу.
