Н. Джехани - Язык Ада (1988) (1160771), страница 67
Текст из файла (страница 67)
Логическии тип — это тип ВООЕЕАМ или производный непосредственно или косвенно от логического типа. Ссылки; литерал перечисления 3.5.1, операция отношения 4.5, 4.5.2, перечислимый тип 3.5.1, производный тип 3.4, тип 3.3. 3.5.4. ЦЕЛЫЕ ТИПЫ Определение целого типа задает целый тип, набор значений которого включает значения заданного диапазона. определение целого типа::= ограничение диапазона Границы диапазона должны определяться статическими выражениями некоторого, не обязательно одного и того же, целого типа.
(Допускаются отрицательные границы.) Описание типа в форме (уре Т !в галде Е .. В; по определению эквивалентно следующим описаниям: (уре целый тил !в пеш предопределенный целый тип; вмЫуре Т !в целый гнл галде целый гнл (Е) .. целый тип (Я); где целый гил — это анонимный тип, а предопределенный целый тип выбран реализацией и содержит значения от Е до В включительно. Описание целого типа неправильно, если ни один из предопределенных целых типов не удовлетворяет этому требованию, за исключением типа универсальный целый.
Предвыпопнение описания цело~о типа состоит из предвыполне. ния эквивалентных описаний типа и подтипа. Предопределенные целые типы включают тип (МТЕОЕВ. Реализация может также иметь предопределенные типы БНОВТ !МТЕОЕВ и СОМО )МТЕОЕВ, диапазоны которых соответственно (существенно) уже и шире, чем у типа (МТЕОЕВ. Диапазон этих типов должен быть симметричным относительно нуля, кроме наименьшего из отрицательных значений, которое может существовать в некоторых реализациях.
Базовым для каждого из этих типов является он сам. Целые литералы — это литералы анонимного предопределенного целого типа, который в данном руководстве называется универсальным целым. Другие целые типы не имеют лите. рапов. Однако для каждого целого типа существует неявное преобразование универсаль. ного целого значения в соответствующее значение (если оно есть) целого типа. Обстоятельства, в которых применяются такие неявные преобразования, описаны в равд. 4.6.
Номер позиции целого значения — это соответствующее значение типа универсаль. ный целый. Для всех целых типов предопределены одни и те же арифметические операции (см. 4.5). Исключение М())4ЕВ!С ЕВВОВ возбуждается при выполнении операции (в частности, неявного преобразования), которая не может передать корректный результат (т.е. значение, соответ- Глава 3 ствующее математическому результату, не является значением целого типа). Однако от реали- зации не требуется возбуждения исключения МОМЕН(С ЕВВОВ, если операция является частью большего выражения, результат которого может быть вычислен корректно, как полене. но в равд.
11.6. Примеры: агре РАЗЕ МИМ 1 ° гапее 1 .. 2 000; ПШе ИМГ 8126 ш гаазе 1 .. МАХ ИМЕ 8126; авжурв ЗМАИ гмт 1 ° 1ЧТЕОЕЯ гвпев -10 .. 10; авьгурв 001имм Ртй 1 ° иие 812е гаева 1 .. 1О; авЬгуре ВИРРЕЙ 812Е 1 ° 1МТЕОЕЙ гаазе 0 .. МАХ; 3.5.5. ОПЕРАЦИИ НАД ДИСКРЕТНЫМИ ТИПАМИ Базовые операции над дискретными типами включают присваивание, проверку на принадлежность и квалификацию; дпя логических типов — управление с промежуточной проверкой; для целого типа — явное преобразование значений других числовых типов к целому типу и неявное преобразование значения типа универсальный целый к значению заданного типа.
Дпя каждого дискретного типа или подтипа Т базовые операции включают перечисленные ниже атрибуты. В этом перечислении Т ссыпается на подтип (подтип Т) для любого свойства, зависящего от ограничений для Т; другие свойства установлены в терминах базового типа Т. Первая группа атрибутов вырабатывает характеристики подтипа Т. Эта группа включает атрибут ВАЗЕ (см. 3.3.3), атрибуты Р(НЗТ и (.АЗТ (см. 3.5), атрибут представления 8(2Е (см.
13.7.2) и атрибут уу(ОТН, определенный следующим образом: Т'ЮЛОТН Вырабатывает максимальную длину образа по всем значениям подтипа Т (образ — это последовательность символов, вырабатываемая атрибутом (МАЗЕ, см. ниже). Вырабатывает нуль для пустого диапазона. Значения это- го атрибута имеют тип универсальный целый. Все атрибуты второй группы — это функции с одним параметром. Соответствующий фак.
тический параметр обозначен ниже идентификатором Х. Т'РОЗ Параметр Х должен быть значением базового типа Т. Тип ре- зультата — универсальный целый. Результат — номер пози- ции для значения параметра. Параметр Х может быть любого целого типа. Тип результата— базовыи тип Т. По заданному значению Х вЂ” номеру позиции— функция вырабатывает значение в этой позиции. Если соответ.
ствующее Х вЂ” универсальное целое значение — не принадлежит диапазону Т'РОЗ(Т'ВАЗЕ'Е(ЙЗТ) ..Т'РОЗ(Т'ВАЗЕ'ЕАЗТ), то возбуждается исключение СОМЗТНА(МТ ЕВВОН. Т 'гуА(. Примечание. Имя в описании целого типа — это имя подтипа. С другой стороны, предопределенные операции над целым типом определяют результат, который принадлежит диапазону, определяемому родительским предопределенным типом; такои результат не обязатель. но принадлежит описанному подтипу, и попытка присвоить такой результат переменнои цело. го подтипа возбуждает исключение СОМЗТЙА(МТ ЕВВОВ. Наименьшее (наибольшее по модулю отрицательное) значение, поддержанное реализацией для предопределенных целых типов, есть именованное число ЗУЗТЕМ.М1М (МТ, а наибольшее (из положительных) значение— ЗУЗТЕМ.МАХ 1МТ (см. 13.7). Ссылки: анонимный тип 3.3.1, граница диапазона 3.5, идентификатор 2.3, исключение СОМЗТНА(МТ ЕВВОН 11.1, исключение МОМЕН(С ЕЙНОЙ 11.1, литерал 4.2, ограничение диапа.
зона 3.5, описание подтипа 3.3.2, описание типа 3.3.1, определение типа 3.3.1, предопределен. ная операция 4.5, предопределенный пакет системы 13.7, преобразование 4.6, принадлежит подтипу 3.3, родительский тип 3.4, статическое выражение 4.9, тип З.З, универсальный тип 4.10, целый литерал 2.4. Описания и гялы Т'80СС Параметр Х должен быть значением базового типа Т.
Тип результата — базовый тип Т. Результат — значение с номером позиции, на единицу большим номера позиции для значения Х. Если Х равен Т'ВАЭЕ'1АЗТ, то возбуждается исключение СОМЗТЯА(МТ ЕЯЯОЯ. Т'РЯЕО Параметр Х должен быть значением базового типа Т. Тип результата — базовыи тип Т. Результат — значение с номером позиции, на единицу меньшим номера позиции для значения Х.
Если Х равно Т'ВАЗЕ'Е(ЯЗТ, то возбуждается исключение СОМЗТЯА(МТ .. ЕЯЯОЯ. Т')МАОЕ Параметр Х должен быть значением базового типа Т, Тип результата — предопределенный тип 8ТЯ(М6. Результат — образ значения Х, т.е. последовательность символов, представляю. щих изображение значения. Образу целого значения соответствует десятичный литерал без подчеркивании, предшествующих нулей, порядка и пробелов справа, но с одним символом минус или пробелом слева. Нижняя граница образа есть единица. Образ литерала перечисления — это либо соответствующий идентификатор из прописных букв, либо соответствующий символьный литерал (включая два апострофа); пробелы не включаются ни слева, ни справа.
Образ символа С, отлично. го от графического символа, зависит от реализации; должно выполняться равенство СНАЯАСТЕЯ'ЧА(.0Е(СНАЯАСТЕЯ'!МАОЕ(С)) ю С. Т'ЧА(.0Е Параметр Х должен быть значением предопределенного типа 8ТЯ(М6. Тип результата — базовыи тип Т. Игнорируются любые пробелы слева и справа от последовательности символов, соответствующих параметру. Если для перечислимого типа последовательность симво. лов имеет синтаксис литерала перечисления и если этот литерал существует для базового типа Т, то результат — соответ. ствующее значение перечислимого типа.
Если для целого типа последовательность символов имеет синтаксис целого литерала с возможным знаком минус ипи плюс слева и если суще. ствует соответствующее значение базового типа Т, то результат есть зто значение. Во всех остальных случаях возбуждается исключение СОМЗТЯА(МТ ЕЯЯОЯ. Кроме того, для обьекта А дискретного типа определены атрибуты А'8(2Е и А'АООЯЕ88 (см. 13.2.2). Кроме базовых операции над дискретными типами включают предопределенные операции отношения.
Для перечислимых типов операции включают литералы перечисления. Для ло. гических типов операции включают предопределенную унарную логическую операцию отрицания по( и предопределенные логические операции. Для целых типов операции включают пре. допределенные арифметические операции: унарные и бинарные аддитивные операции — и +, все мультипликативные операции, унарную операцию абв и операцию возведения в степень.
Операции над подтипом — это операции над его базовым типом, кроме следующих: присваивания, проверки принадлежности, квалификации, явного преобразования типа и атрибутов первой группы; результат каждой из этих операций зависит от подтипа (присваивание, проверка принадлежности, квалификация и преобразование включают проверку подтипа; ат. рибуты первой группы вырабатывают характеристику подтипа). Примечание. Для подтипа дискретного типа переданные атрибутами 80СС, РЯЕО, ЧА(. и ЧАШЕ результаты не обязательно принадлежат подтипу; аналогично фактические параметры атрибутов РО8, 80СС, РЯЕО и )МАОЕ не обязаны принадлежать подтипу. Эти атрибуты удое.
летворяют (при отсутствии исключения) следующим соотношениям: ГРОВ(Т'ВОСО(ХП = Т'РОВ(Х) ь 1 Т'РОВ(Т'РЙЕО(ХП = Т'РОВ(Х) - 1 Т'ЧАЦТ'РОВ(ХП = Х 'ГРОВ(Т'ЧАЦМП = М Примеры. — дпя типов и подтнпов, описанных в Э 6.1 С01.0Я'Р1ЙВТ = И!Н)ТЕ, С01.0Й'(АВТ = 8(.АСК ЯАЛЧВОИГР!ЙВТ = ЙЕО, ЯА1МВОЪЧ'(АВТ = ВЦ)Е СОЬОЯ'ВЦСС(ВЬОЕ) = ЙА!МВОУЧ'ВЦСС(ВШЕ! = ВЙОИ)Н СОЬОЯ'РОВ(ВЕЦЕ) = ЯА!МВОУЧ'РОВ(ВЕЦЕ) = 4 СО).ОЯ'ЧАЦО) = ЙА)МВОЪЧ'ЧАЦО) = ЪЧН!ТЕ Ссьщки; атрибут 4.1.4, базовая операция 3.3.3, базовый тип 3.3, бинарная аддитивная операция 4.5, 4.5.3, граница диапазона 3.5, графический символ 2.1, дискретный тип 3.5, идентификатор 2.3, исключение СОМВТНА1МТ ЕННОН 11.1, квалифицированное выражение 4.7, литерал перечисления 3.5.1, логическая операция 4.5, 4.5.1, логичвскии тип 3.5.3, мультипликативная операция 4.5, 4.5.5, номер позиции 3.5, объект 3.2, ограничение 3.3, операция З.З, операция возведения в степень 4.5, 4.5.6, операция отношения 4.5, 4.5.2, операция отрицания 4.5, 4.5.6, операция управления с промежуточной проверкой 4.5, 4.5.1, подтип З.З, предопределенная опе.
рация 4.5, предопределенный тип С, преобразование 4.6, присваивание 5.2, проверка принздпежности 4.5, 4.5.2, символьный литерал 2.5, строковый тип 3.6.3, тип 3.3, тип универсальный целый 3.5.4, унарная аддитивная операция 4.5, 4.5.4, универсальный тип 4.10, функция 6.5, целый тип 3.5.4, числовой литерал 2.4, числовой тип 3.3.
3.5.6. ВЕЩЕСТВЕННЫЕ ТИПЫ Вещественные типы обеспечивают приближение вещественных чисел с относительнои по. грешностью для плавающих типов и с абсолютной погрешностью для фиксированных типов. определение вещественного типа::= ограничение плавающего типа )ограничение фиксированного типа С каждым вещественным типом связан набор чисел, называемых модельными числами. Границы ошибок в предопределенных операциях даны в терминах модельных чисел. Реализация типа должна включать по крайней мере эти модельные числа и представлять их точно. С каждым вещественным типом связан зависящий от реализации набор чисел, называе мых хранимыми числами.