Н. Джехани - Язык Ада (1988) (1160771), страница 79
Текст из файла (страница 79)
Для каждой предопределенной операции типы операндов и результата приведены в разд. 4.5. Глава ° Ссьмки: агрегат 4.3, агрегат массива 4.3.2, атрибут 4.1.4, бинарная аддитивная операция 4.5, 4.5.3, вызов функции 6.4, генератор 4.8, диапазон 3.5, именованное число 3.2, имя 4.1, квалифицированное выражение 4.7, контекст для разрешения совмещения 8.7, литерал вещественно. го типа 2.4, мупьтипликативная операция 45, 4.5.5, обозначение типа 3.3.2, объект 3.2, операция 4.5, операция возведения в степень 4.5, 4.5.6, операция отношения 4.5, 4.5.2, отношение 4.5.1, переменная 3.2.1, преобразование типа 4.6, пустой литерал 3.8, совмещение 8.3, совмещение операций 6.7, строковый литерал 2.6, тип 3.2, тип результата 6.1, унарнвя аддитивная операция 4.5, 4.5.4, числовой литерал 2.4. 4.5. ОПЕРАЦИИ И ВЫЧИСЛЕНИЕ ВЫРАЖЕНИЯ В языке определяется шесть классов операций.
При описании функций, определяющих пользовательские операции, в качестве обозначений могут быть использованы приведенные ниже знаки операций (исключая /=). Шесть классов операций приведены в порядке возрастания их старшинства. алд ) хог <!<=(>(>= 8 логическая операция операция отношения бинарная вддитивная операция унарная аддитивная операция мультипликативная операция операция высшего приоритета ! ( пвб ( гвгл аЬв ) ло( Формы управления промежуточной проверкой апб б!ел и ог е1ае имеют тот же порядок старшинства, что и логические операции. Проверки принадлежности (п и по1 )п имеют то же старшинство, что и операции отношения. В слагаемом, простом выражении, отношении ипи выражении группирование операций с их операндами проводится сначала для операций с большим старшинством, а затем для операций с меньшим старшинством.
В случае последовательных операций с одинаковым старшинством группирование операций с их операндами производится в порядке их текстуального следования слева направо; для изменения порядка группирования могут использоваться скобки. В языке не определяется порядок вычисления операндов множителя, слагаемого, простого выражения или отношения и операндов выражения, которое не содержит форм управления Примеры первичных; 4.0 Р) (1..10 = > О) 80М !НТЕОЕЙ'(.АЗТ 8!НЕ(Х) СО1 ОЯ'(В).ОЕ) ЯЕА! (М Н) (ь)НЕ СОЦМТ+10) Примеры выражений: НО).ОМЕ по( 018ТЯОУЕО 2 * ЫЧЕ СОСМТ -4.0 — 4.0+ А В - 2-4.0 ° А С РАВВИ!ОЯО(1..3) = "ВНУН" СООЙТ 1п ВМАЕЕ )НТ Соищт по( !п ВМАи. (НТ !НОЕХ=О ог )ТЕМ Н)Т (СОСО апб 80ННУ) ог И/АЯМ А - (В ° С) литерал вещественного типа именованное число агрегат массива переменная атрибут вызов функции квалифицированное выражение преобразование типа выражение в скобках первичное множитель слагаемое простое выражение простое выражение простое выражение отношение отношение отношение выражение выражение (скобки обязательны) выражение (скобки обязательны) Имена и еы ажеяия промежуточной проверки (но вычисление производится до применения соответствующей операции).
Правый операнд формы управления промежуточной проверкой вычисляется тогда и только тогда, когда левый операнд имеет определенное значение (см. 4.5.1). Для каждой формы описания типа некоторые из перечисленных операций являются предопределенными, т. е. неявно вводятся описанием типа. Для каждого такого неявного описания операции именами параметров являются ЬЕРТ и Й)ОНТ для бинарных операций; для унарных аддитнвных операций и унарных операций аЬв и по( их единственный параметр именуется Й(ОНТ.
В равд. 4.5.1 — 457 поясняются результаты предопределенных операций. Предопределенные операции над целыми типами либо вырабатывают математически кор. ректный результат, либо возбуждают исключение НЦМЕЙ)С ЕЙЙОЙ. Предопределенная операция, вырабатывающая результат целого типа (отличного от универсального целого), может возбуждать исключение МОМЕЙ(С ЕЙЙОЙ, только если математический результат не является значением этого целого типа. Предопределенные операции над вещественными типами вырабатывают результаты, точность которых определяется в равд.
4.5.7. Предопределенная операция, вырабатывающая результат вещественного типа (отличного от универсального вещественного), может возбуждать исключение НОМЕЙ)С ЕЙЙОЙ, только если ее результат не принадлежит диапазону хранимых чисел этого типа, как это поясняется в равд. 4.5.7.
Примеры старшинства: по( 8ЦННУ ог УУАЙМ Х > 4.0 апб У > 0.0 — 4 0 ° А - 2 аЬв (1 + А] + В У ° ( — 3) А/В ° С А + (В + С) 4.5.1. ЛОГИЧЕСКИЕ ОПЕРАЦИИ И ФОРМЫ УПРАВЛЕНИЯ ПРОМЕЖУТОЧНОЙ ПРОВЕРКОЙ Приводимые ниже логические операции предопределены для логических типов и одномерных индексируемых типов с компонентами логического типа.
В обоих случаях операнды должны иметь один и тот же тип. Тип результата Тнл операнда Знак операции Операция Тот же логический тип Тот же индексируемый тип Любой логический тип Массив логических компонент Конъюнкция Тот же логический тип Тот же индексируемый тип Любой логический тип Массив логических компонент Дизъюнкция ог Любой логическии тип Массив логических компонент Тот же логический тип Тот же индексируемый тип Исключающая дизъюнкция хог — совпадает с (по( 8ЦННУ) ог ууАЙМ вЂ” — совпадает с (Х > 4.0) апб (У > 0.0) — совпадает с -(4.0 ° (А " 2)) — совпадает с (аЬв (1 + А)] +  — — скобки необходимы — совпадает с (А(В) ° С вЂ” вычисляется В + С, а затем к результату прибавляется А Ссылки: вещественный тип ЗД,6, в некотором порядке 1.6, возбуждение исключения 11, выражение 4.4, диапазон 3.5, имя 4.1, исключение МЦМЕЙ(С ЕЙЙОЙ 11.1, множитель 4.4, неявное описание 3.1, обозначение 6.1, описание типа 3.3.1, отношение 4.4, проверка вхождения 4.5.2, .простое выражение 4.4, слагаемое 4.4, совмещение 6.6, 6.7, тип 3.3, универсальный вещественный тип 3.5.6, универсальный целый тип 3.5.4, форма управления промежуточной проверкой 4.5, 4.5.1, хранимое число 3.5.6, целый тип 3.5.4.
Глаза 4 Операции над массивами выполняются покомпонентно, если компоненты имеются (как для равенства, см. 4.5.2). Границы массива-результата совпадают с границами левого операнда. Для каждой компоненты левого операнда проверяется наличие соответствующей компоненты правого операнда, и наоборот.
При нарушении соответствия компонент возбуждается исклю. чение СОМЗТНА(МТ ЕВВОВ. Формы управления промежуточной проверкой апд (беп и ог е!ве определены для двух опе. рандов логического типа и вырабатывают результат того же самого типа. Левый операнд формы управления промежуточной проверкой всегда вычисляется первым. Если левый опе. ранд выражения с формой апд (пеп дает значение ЕАЕЗЕ, то правый операнд не вычисляется и значением выражения является ГАЕЗЕ. Если левый операнд с формой ог е1ае дает ТВОЕ, то правый операнд не вычисляется и значением выражения является ТВОЕ.
Если вычисляются оба операнда, то результат апб (пеп такой же, как апб, а результат ог е1ее — как ог. Примечание. Обычный смысл логических операций задается следующей таблицей истинности: А В Аале В АегВ Акегв ГАМЕ ТВОЕ ТВОЕ РАМЕ ТВОЕ ТВОЕ ТЯОЕ РАМЕ ТВОЕ ТВОЕ ТВОЕ РАСЕЕ ГА(ЗЕ ТВОЕ РАьЗЕ ГАЬЗЕ ТВОЕ ГАЬЗЕ РАМЕ ГАМЕ Примеры логических операций: ЗОММУ ег ЬУАЯМ ГНТЕВ(1 ..
10) аяп Р(ьТЕВ(16 .. 24) -- см. 3.6.1 Примеры форм управления с промежуточной проверкой: МЕХТ САЯ.О(л(МЕВ / лкя епа гвел МЕХТ САВ.ОууМЕЯ'АЗЕ > 26 — с 381 М = 0 ег еше А(М( = Н(Т ЧяьОЕ Ссылки: возбуждение исключений 11, граница диапазона индекса 3.6.1, индексируемый тип 3.6, исключение СОМЗТВА(МТ ЕНВОН 11.1, компонента массива 3.6, логический тип 3.5.3, логическое значение РАЗВЕ 3.5.3, логическое значение ТВОЕ 3.5.3, операция 4.5, операция типа 3.3, подтип индекса 3.6, предопределенная операция 4.5, пустой массив 3.6.1, размерность 3.6, сопоставимые компоненты массивов 4.5.2, тип 3.3.
4.5.2. ОПЕРАЦИИ ОТНОШЕНИЯ И ПРОВЕРКИ ПРИНАДЛЕЖНОСТИ Знак операции Операция Тип операнда Любой тип Тип результата ВООЕЕАМ Равенство и неравенство ВООЕЕАМ ВООЕЕАМ « = » = Проверка упо- рядоченности Любой скалярный тип Дискретный ин- дексируемый тип Операции равенство и неравенство предопределены для любого типа, не являющегося лимитируемым. Остальные операции отношения являются операциями упорядочивания: < (меньше), < = (меньше или равно), > (больше), > = (больше или равно). Операции упорядочивания предопределены дпя любого скалярного типа и любого дискретного индексируемого типа (одномерного индексируемого типа с компонентами дискретного типа).
Операнды каждой предопределенной операции отношения имеют один и тот же тип. Тип результата — предопределенный тип — ЗОО(.ЕАМ. Смысл операций отношения традиционный: результат равен ТВОЕ, если соответствующее отношение удовлетворено, результат равен ЕАЮЕ в противном случае. Операция неравенства дает результат, противоположный результату операции равенства: ЕАЕЗЕ, если операнды рав. ны; ТВОŠ— если не равны. Имена н еы ажелия Равенство для дискретных типов — это равенство значений. Результаты предопределенных операций отношения для вещественных операндов, значения которых равны приблизительно, приводятся в равд.
4.5.7. Два ссылочных значения равны, когда они указывают на один и тот же объект либо когда они равны пустому значению ссылочного типа Для двух значений одного и того же индексируемого типа или именуемого типа левый операнд равен правому, если и только если для каждой компоненты левого операнда имеется сопоставленная компонента правого операнда, и наоборот; значения сопоставленных компо. нент равны в смысле предопределенной операции равенства для типа этих компонент. В частности, всегда равны два пустых массива одного и того же типа, всегда равны две пустые записи одного и того же типа. Для сравнения двух записей одинакового типа сопоставленными компонентами являются компоненты" с одинаковыми идентификаторами компонент.