567
П.1.1. Объекты данных
Основные типы данных, описанные в этом разделе, лишь слегка расширяют типы
данных, доступные в языке Pascal. Однако средства Ada, позволяющие програм
мисту определять новые типы, значительно мощнее, чем аналогичные в языке
Pascal, а наличие пакетов позволяет инкапсулировать определения типов для по
лучения истинных абстракций данных.
Элементарные типы данных
Такие типы, как öåëûé (integer), âåùåñòâåííûé (real) (в языке Ada называемый float),
ñèìâîëüíûé (character), áóëåâ (Boolean) и ñòðîêîâûé (string) являются предопределен
ными типами, определенными в пакете Standard, который автоматически известен
внутри любой программы на языке Ada. Фактически эти типы определены при
помощи набора более примитивных конструкторов типов. Примерами таких кон
структоров могут служить перечисления, массивы и записи. Например, типы Boolean
и character определяются как перечисления, а строковый тип string определяется
как вектор, состоящий из символов. Поскольку механизм определения типов ис
пользуется как для элементарных, так и для определенных пользователем типов,
многие примеры этого раздела могут включать определения типов.
Переменные и константы. Любой объект данных может быть определен либо
как переменная, либо как константа. Любое объявление, начинающееся с ключе
вого слова constant, является объявлением константы. В нем должно быть задано
значение константы, которое не может меняться в процессе выполнения програм
мы. Если слово constant опущено, тогда это же объявление определяет объект дан
ных как переменную. В этом случае можно задать начальное значение, а затем из
менять его обычным присваиванием. Например, константу MaxSize и переменную
CurrentSize можно объвить следующим образом:
MaxSize: constant integer := 500;
CurrentSize: integer := 0;
Константы языка Ada могут быть как объектами элементарного типа, так и мас
сивами или записями:
WeekDays: constant array(1..5) of string(1..3) :=
("MON", "TUE", "WED", "THU", "FRI")
В языке Ada существует множество предопределенных атрибутов, которые обо
значают важные связи или свойства объектов данных, типов данных, подпрограмм
или аппаратной части компьютера. Для получения значения атрибута следует ука
зать его имя (предварив его префиксом «'») сразу же после имени объекта. Например,
одним из атрибутов любого векторного типа данных, Vect, является нижняя граница
диапазона изменения его индекса, обозначаемая как Vect'First. Верхняя граница
обозначается Vect'Last. Используя этот атрибут, можно написать программу так, что
она будет независима от конкретного определения типа Vect. Таким образом, если
изменяется определение Vect, операторы, использующие Vect'First и Vect'Last, мож
но не изменять. Предопределенные атрибуты существуют для большинства основных
типов данных, описанных ниже; другие атрибуты обсуждаются в следующих разделах.
Числовые типы данных. Основными числовыми типами данных являются це
лые числа, вещественные числа с плавающей точкой и вещественные числа с фик
П.1. Ada