Н. Джехани - Язык Ада (1988) (1160771), страница 5
Текст из файла (страница 5)
При ннициали— зации используется — именное соответствие, т. е. с помощью индексов явно — указывается начальное значение. 1.2.1.2. Определения числовых констант [3.2.21 Идентификатор типа может стоять в левой части определения константы, и он является синонимом для числа: Р1: сопя(ап1:=3.141б; 1.2.1.3.
Примеры определений переменных [3.2.11 РКЕБЕХТ: ВОО1.ЕАХ: = РАЬБЕ; Н10Н, ЬОЪг: 1ХТЕОЕК; — Н10Н и ЬОЖ не инициализируются НОЫК: 1ХТЕОЕК гапке 0..24; — НОЖ вЂ” целая переменная, значения которой — лежат между 0 и 24, что указывается ограничением — диапазона галке 0..24 СОЬОК ТАВЬЕ: апау (1..Х) 01 СОЬОК; — верхняя граница — переменная Х;г' БТК1ХО (Ь.80); ОК1ВК аггау (1..100, 1..100) 01 РЬОАТ; — двумерный массив РАОЕ: аггау (1..бо) 01 ЫХЕ; — массив массивов, где ЫХŠ— индексируемый тип, — определяемый пользователем.
Всем переменным, прежде чем они используются в выражениях, должны быть присвоены значения; в противном случае возникает ошибка. 1.2.1.4. Определения типов, допускаемые при описании объектов Только определения нндексируемого типа, например аггау(1..100) о1 1ХТЕОЕК; можно указывать непосредственно прн описании объектов. В случае непользования других типов, таких как, например, именуемый, необходимо определить имя, задающее этот тип, и затем использовать его при описании объекта". "Предположим, что константу ВО(ЛЧОЕ необходимо описать как содержащую лва значения— нижний н верхний пределы.
ВО()ЫРБ в этом случае необходимо описать как массив констант именуемого типа. Правильным является такое определение: ВО(ЛЧОБ: сопвевп( аггау (!..2) ог 1ЫТЕОЕК: = (1,100); Однако альтернативное описание с использованием константы именуемого типа ВО())ЧОЗ: сопвьзпг гесога (Оеу, Н1СН: (НТЕОЕК; епа гесога: = (1,100); неправильно, поскольку используется определение именуемого типа.
Опредление именуемого типа не допускается при описании обьектов. Предварительно должен быть определен именуемый тип, скажем ЫМ!ТБ, а затем его можно использовать при описании ВО(ЛЧПЯ как константы именуемого типа: ВО(дион сопя!апеь!М!ТБ: = (1,100); Возможность использования только индексируемого типа, а не всех других типов при описании обьектов является неунифипированной и поэтому нежелательной. Ввв вняв 1.2.2.
Определения типов 13.3] Определение типа связывает имя с описанием типа. Определение типа имеет форму: 1уре имя Ь определение типа; Б: (О)ч, ОРР); неправильное, поскольку определение перечислимого типа (ОХ, ОРР) нельзя не- посредственно использовать при определении объекта.
Однако если использовать перечислимый тип Яй'1ТСН, описанный как гуре Яй'1ТСН Ь (ОХ, ОРР); то переменную Б можно определить так: Б: Я%1ТСН; 1.2.3. Скалярные типы [3.51 Скалярные типы, а именно дискретные и вещественные типы, — это типы с простыми значениями (значения не имеют компонент).
Перечислимый и целые типы — это дискретные скалярные типы, Целый и вещественный типы — это числовые типы. У любого скалярного типа Т имеются атрибуты Т'Р(КЯТ и Т ' ЬАБТ. Наименьшее значение типа Т Наибольшее значение типа Т Т'Р1КБТ Т'ЬАБТ 1.2.3.1. Перечислимые типы 13.5.Ц Множество значений перечислимого типа определяется явным перечислением этих значений.
Описание перечислимого типа имеет форму: $уре Е)ч()М Ь (аь аж, а„); где имя — это идентификатор. Определение типа служит для того„ чтобы сосредоточить общие свойства объектов в одном месте программы и присвоить им имя. Это имя типа затем можно использовать при последующих определениях таких объектов. Определения типов повышают степень модифицируемости программ, поскольку при изменении свойств объектов эти изменения необходимо внести только в одном месте программы ((эОО79б]. Разрешается использовать перечислимые, целые, вещественные, индексируемые, именуемые типы, а также ссылочные типы.
Описание типа всегда определяет уникальный тип (отличный от любых других), даже если два типа текстуально идентичны. За исключением описания индексируемого типа при определении объектов всегда необходимо использовать идентификатор типа. Например, определение переменной перечислимого типа Б со значением ОХ и ОРР Глава 1 где литералы перечисления а; могут быть либо идентификаторами, либо символьными литералами. Позиция значения а; определяет упорядочение, т. е. а1 < аз < аз И т. Д. Приведем примеры описаний перечислимого типа: (уре 1)АУ Ь (МОХ, Т()Е, %Е(3, ТН(), РК!, БАТ, Я)Х); (уре СОЬОК Ь (УЕЬЬО%, ВЬ1)Е, КЕ)3); (уре ТКАРР1С МОНТ Ь (КЕ(з, УЕЬ О%, ОКЕЕХ); — значение УЕЬЬО% принадлежит двум перечислимым типам; — говорят, что УЕЫ.О% совмещено.
Если возникают — неоднозначности, то тип необходимо указать явно с по— мощью квалиФицированного выражения, например — ТКАРР1С 1.1ОНТ' (УЕЬЬО%) (уре НЕХА1)ЕС1МАЬ Ь ('0', '1', '2', '3', '4', '5', 'б', '7', '8', '9', 'А', 'В', 'С', '1)'. 'Е', 'Р'); (уре М1ХЕ)) Ь ('А', 'В', 'С', "', '?', 'Уо', ХОХЕ); 1уре СНЕЕК Р1ЕСЕВ Ь (%Н1ТЕ РА%Х, %Н1ТЕ КООК, %Н!ТЕ КХ1ОНТ, %Н1ТЕ В1БНОР, %Н1ТЕ О()ЕЕХ, %Н1ТЕ К1ХО, ВЬАСК РА%Х, ВЬАСК КООК, ВЬАСК КХ1ОНТ, ВЬАСК В1БНОР, ВЬАСК О()ЕЕХ, ВЬАСК К1ХО, ВЬАХК); — шахматную доску можно представить в виде полей, на — которых стоят шахматные фигуры; дополнительная фигура — ВЬАХК (пусто) позволяет указать незанятые поля.
1.2.3.2. Символьный и логический типы данных [3.5.2, 3.5.31 Язык Ада содержит два предопределенных перечислимых типа — СНАКАСТЕК и ВОО1.ЕАХ. Они определяются как гуре СНАКАСТЕК Ь (множество символов кода АБС11); — смотри приложение В руководства по языку Ада, где — перечислены все значения типа СНАКАСТЕК гуре ВОО1.ЕАХ !а (РАЬБЕ, ТК()Е); — предопределенный логический тип. 1.2.3.3. Целые типы [3.5.4[ В языке Ада предусмотрен предопределенный тип 1ХТЕОЕК. При реализации языка могут предусматриваться также и другие предопределенные типы, такие как БНОКТ 1ХТЕОЕК и 1.ОХО 1ХТЕОЕК. Наименьшее и наибольшее целое, имеюшиеся в конкретной реализации, задаются константами БУБТЕМ.М1Х 1ХТ и БУБТЕМ.МАХ 1ХТ. Предопределенные подтипы ХАТ()КАЬ и РОБ1Т1ЧЕ представляют собой подмножества целого типа„значения которых больше или равны нулю (> О) и больше нуля (> О) соответственно.
Вве ение 1.2.3.4. Атрибуты дискретных типов (т. е. перечислимого и целого типов) [3.5.51 В дополнение к артибутам НКЗТ и ЬАБТ к любому дискретному типу можно применять также Т ' РОВ(Х) Номер позиции Х в ее описании. Например, СО1ОК'РОЯ(ВЫ)Е) = 2 РОБ1Т1ЧЕ'РОЗ(3) = 3 Следующий за Х элемент в типе Т, Например, СОЬОК'Я)СС(ВШЕ) = КЕ)3 1чАТ()КАЬ'Я)СС(3) = 4 Т'Я1СС(Х), где Х = Т'ЬАБТ вызывает ошибку СО)нБТКА11чТ ЕККОК.
Предшествующий Х элемент. Возникает ошибка С01чБТКА11ЧТ ЕККОК, если Х = Т'НКЗТ. Элемент типа Т, стоящий в позиции с номером )ч. Например, СОЬОК'ЧАЬ(2) = ВЬ()Е РОЯ1Т1ЧЕ'ЧАЬ(2) = 2 Возникает ошибка СОгчЗТКА11чТ ЕККОК, если )ч < Т'РОЗ(Т'Р1КЗТ) или 1ч < Т'РОЯ(Т'ЬАБТ). Т'Я)СС(Х) Т ' РКЕ13(Х) Т ' ЧАЬ(1ч) 1.2.3.5. Вещественные типы [3.5.6 — 3.5.10] В языке Ааа содержатся многочисленные возможности для обработки вещественных типов 1%'1С81]. Значения вещественного типа — это приближенные представления вещественных чисел в математике. Вещественные типы бывают двух видов — плавающие и фиксированные. Вещественные числа представляются поразному — с фиксированной и плавающей точкой, а следовательно, имеют разные относительные ошибки. Плавающие типы — это приближенные представления вещественных чисел, при которых ошибка представления есть отношение погрешности к абсолютной величине вещественного числа.
С другой стороны, ошибка представления в случае фиксированного типа не зависит от значения вещественного числа. Следовательно, в этом случае относительные ошибки фиксированных типов, имеющих небольшие значения, велики. Величина ошибки для обоих вещественных типов ограничивается требуемой точностью, называемой ограничением точности, и задается пользователем.
Ошибка для чисел с плавающей точкой определяется минимальным числом десятичных цифр, представляющих мантиссу. Ошибка для вещественных чисел с фиксированной точкой определяется как некоторая абсолютная величина, мазываемая делыной (де!га). С каждым определением вещественного типа связывается множество чисел, называемых модельными числами. Семантика вещественной арифметики в языке Ада определяется в терминах этих модельных чисел 1ВКО8Ц. Границы ошибок Гпеев 1 для предопределенных операций над вещественными типами также определяются в терминах модельных чисел. В любой реализации должны быть предусмотрены точные представления этих чисел.
Данное требование гарантирует согласованность вычислений над вещественными типами в различных реализациях. Реализация может поддерживать и более широкое множество модельных чисел, называемых хранимыми числами. Хранимые числа помогают программисту достигать предельно высокой точности в рамках данной реализации. Характеристики модельных и хранимых чисел можно определять с помощью соответствующих атрибутов, которые предусмотрены для вещественных типов. 1.2.3.5.1. Плавающие типы 13.5.71 В языке Ада предусмотрен предопределенный плавающий тип Н.ОАТ.