2.2 простые типы2.2.1 Ссылочный тип Ссылочные типы ( access type ) обеспечивают в языке непрямой доступ к обьекту или подпрограмме. ' Существуют два вида ссылочных типов : • ссылочные на обьекты ; • ссылочные на подпрограммы . Ссылочный тип определяется следующим образом: Для обьектов : TYPE Имя_Ссылочного_Типа IS ACCESS [ ALL | CONSTANT ] ( Указанш_Типа_Или_Подтипа [Ограничение] ) ; ACCESS type Stack ( Size : Stack_Size : = 99) is record Для подпрограмм: TYPE Имя Ссылочного_Типа IS 18 Ада 95. Введение в программирование 19 Глава 2. Типы
[ PROTECTED] Описание_Подпрограммы ; Здесь Ограничение - это дискриминант или ограничение индекса. П Пример: is access is access integer; Word; type Work type Byte type Order is access all Store'Class; type Exed is access constant integer; Send is access procedure (Z : in integer); Для каждого ссылочного типа среди множества его значений обязательно присутствует значение null. Значение null присваивается любому указателю после его объявления. Указатель со значением null не указывает ни на какой объект: Для создания динамических объектов используется генератор new, который также формирует ссылку на созданный объект. П Например: Х1 : Work : = new Integer; Х2 : Work : = new lnteger'(10); Помимо ссылки на объект возможно обращение к значениям объекта. Для этого используется постфикс " all ": XLall : = 10; XLAall : = XLAall + 4; Для объектов ссылочного типа используются операции присваива ния, проверки на равенство и неравенство. П Пример: type Matr is array (1 .. 10, 1.. 15) of integer; type AC_Matr is access Matr; - - объекты ссылочного типа MA: AC_Matr new Matr; MB: AC_Matr new Matr (1 .. 10 => (1 .. 15 => 0)); - - операции над объектами ссылочного типа MA.all: = MB.all; MB.all( 2 ,6 ): = 38; МА( 2, 2 ): = 11; Механизм работы с ссылочными типами в Аде 95 значительно расширен, обеспечивая более гибкий доступ к объектам. Новые атрибуты 'Access и 'Uncheked_Access используются для создания значений ссылочных типов, определяющих обьект или подпрограмму: X : = Object' Acess ; Z : = Subprogram ' Access ; Использование зарезервированных слов all и constant в описании ссылочных типов позволяет определять универсальный ссылочный тип , расширяющий возможности работы с объектами ссылочного типа: type Ira is access all integer; type Ото is access constant real; Использование универсальных ссылочных типов основано на применении к ним генератора new, атрибутов Access и 'Unchek-ed_Access и , а также конструкции aliased (еще одно новое зарезервированное слово языка ) : Stone Big_Stone Wall Ira; aliased integer; Big_Stone' access ; Переменной типа Ira может быть присвоено значение адреса любой переменной типа Integer , если она помечена как all. Чтение и изменение переменной Big_Stone возможно с помощью ссылочной переменной Stone и атрибута 'access. Использование в описании универсального ссылочного типа слова Constant позволяет доступ только по чтению к переменным данного ссылочного типа ( в нашем примере это касается типа Ото ): Water : Ото; Green_Water : aliased Water: = 486 ; Lake_____: Green_Water' Access ;______________ 2.2.2 Скалярные типы Скалярные типы (дискретные и вещественные) не имеют компонент, то есть являются типами с простыми значениями. Дискретные скаляр- 20 21 Ада 95. Введение в программирование T'FIRST; T'LAST; ные типы - это перечисляемые и целые типы. Числовые типы - это целые и вещественные типы. Для любого скалярного типа Т имеются атрибуты: наименьшее значение типа Т наибольшее значение типа Т Перечисляемый тип Множество значений перечисляемого типа задаётся явным перечне ле-нием этих значений: TYPE Имя_Типа IS ( а,,а:, ... ,а„ ) ; Здесь литералы а; могут быть либо идентификаторами, либо символьными литералами. При этом а;.|< а{ <ai+1. П Примеры: type Work_Week is (MON, TUE, WED, THU, FRI); type Color is (Blue, Yellow); type Start is (On, Off); type TaskjState is (RUN, WAIT, READY); Атрибуты перечисляемого типа (применимы также к целому типу): T'Pos ( X ) Номер позиции X в её описании T'Succ ( X ) Следующий за X элемент в типе Т T'Pred ( X ) Предшествующий элемент T'Val ( N ) Элемент типа Т, стоящий в позиции с номером N Над объектами перечисляемых типов определены следующие операции: Отношения: < < > > Проверки принадлежности: In Not In СОВЕТЫ : * Используйте перечисляемые типы вместо числовых . Глава 2. Типы Числовые типы Целый тип, а также плавающий и фиксированный типы образуют числовой тип. Над объектами числового типа выполняются арифметические операции. Целый тип представляет множество значений целых чисел и операции над ними. Фиксированный тип представляет вещественные числа в формате с фиксированной запятой с указанием абсолютной точности представления. Плавающий тип представляет вещественные числа в формате с плавающей запятой с указанием относительной точности представления. Числовые типы могут быть как предопределёнными типами ( Integer, Float, Duration ), так и типами, определёнными пользователем. Более подробно числовые типы будут рассмотрены дальше в Главах 4 и 5. |
| Оглавление| |