К. Йенсен, Н. Вирт - Паскаль - Руководство для пользователя (1109480), страница 25
Текст из файла (страница 25)
' Операция отногиенин = "=" ! "С >" ! "<" ! "(= " ! " >" ! ' >= ' ! ит' Аддитиуная операцин =' "+" ! "— "! "ог". Мульюпликативния опериция "*" ! "/ " ! "гич" ! "гпоб" ! "гпгГ' Ординальные выражения — — это выражения, относящиеся к ординальному типу. Логическое или целое выражение — -это ордннальное выражение, относящееся соответственно к типу Вон[сап нли [п1епег.
8.!. ОПГРАНД!т! Любая мультнпликативная операция в терме имеет два операнда: один — та часть терма, которая предшествует операции, второй — фактор, идущий сразу же за операцией. Аддитивная операция в простом выражении имеет также два операнда: оЛин та часть простого выражения, которая предшествует операции, второй терм, идущий сразу же за операцией. Два операнда любой операции отношения — простые выражения: предшествующее и следующее за самой опсрацисй.
Операндом для [одиночного) знака является простое выражение из терма, непосредственно следующего за знаком. Операндом для по[ в некотором факторе явлт[ется фактор, идущий следом за по1. Порядок вычисления операндов любой операции зависит от реализации. Всякая программа, удовлетворяющая стандарту, не должна ориентироваться на какой-либо порядок. Левый операнд может вычисляться и до, и после правого операнда, они могут вычисляться даже одновосменно. Иногда, при определенных значениях других операндов, некоторые из операндов могут вообще не вычисляться. Например, вычисление выражения [! * [! б[у !) при нулевом значении 1 в одной реализации может дать нулевое значение„а в другой приведет к ошибке, вызванной делением на нуль.
а Лыражеаия 1?8 Тип любого фактора выводится ((з белчер) на основании типов, его составляющих (т. е. переменных или функций). Если тип составляющей — диапазон, то тип фактора — исходный для этого диапазона тип. Если же тип составляющей — множественный, причем его базовым типом является некоторый диапазон, то тип фактора — множественный тип, базовым типом которого будет тип основания упомянутого диапазона; во всех других случаях тип фактора — тот же, что и тип его составляющей.
Имя п11 относится к любому ссылочному типу и ему соответствует значение гй. Конструктор множества обозначает значение множества. Если в конструкторе нет никаких описаний элементов, то он обозначает пустое множество; такое множество — одно из значений любого множественного типа. Во всех других случаях элементы значения множества описываются с помощью описаний элементов в конструкторе множества. Все выражения из описаний элементов в конструкторе множества должны быть одинакового типа, он и будет базовым типом для типа данного конструктора множества.
Тип конструктора множества одновременно и упакованный, и неупакованный, он совместим с любым другим множественным типом, имеющим совместимый базовый тип. Всякое описание элемента множества, состоящее из единственного выражения, описывает элемент со значением, обозначенным (дспо1сд) этим выражением. Описание элемента, имеющее вид а..в, описывает элемент, каждое из значений которого (х) удовлетворяет отношению а ~= х ~= в. Если а в, то а...в не обозначает никаких элементов.
Порядок вычисления выражений в описании элемента и порядок вычисления самих описаний элементов в конструкторе множества зависит от реализации. Вычисление фактора, содержащего переменную, задает обращение к этой переменной и обозначает ее значение; если пеосменная не определена, то это ошибка.
Вычисление фактора, содержащего обозначение функции, задает активацию функции, указанной именем функции (см. равд. 1О.З). В качестве ее формальных параметров (см. равд. ! 1.3) подставляются соответствующие фактические параметры. После окончания активации алгоритма фактор обозначает значение результата актива~~ни; если результат не определен, то это ошибка. 8.2. ОпеРАции Правила композиции задают приоритеты операций в.соответствии с их разбиением на четыре класса. Наивысший приоритет— у операции по1, затем идут так называемые мультипликативные !Тв Описание яаана операции, следом — аддитивныс операции и, наконец, с наименьшим приоритетом — опеоации отношения. Последовательности операций с одинаковым приоритетом выполняются слева напоаво.
Система приоритетов находит свое отражение в правилах РБНФ для конструкций: Выраже ие, Простое выражение, Терм и Фактор (приводившихся выше). В соответствии с типом операндов и результатом операции классифицируются как арифметические, логические, множественные и операции отношсния.
8.2.!. Арифметические операции. Арифметические операции выполняются над целыми или вещественными операндами и порождают целый или вещественный результат. Ниже суммированы операции с одним операндом, т. е. знаки. Лейсгние Тип операнди Тип реаультага Операция !п(снег или Кеа! тип операнда )п(епег или Кеа! тип операнда тождественное изменение анака В следующей же таблице суммированы операции с двумя опе- рандами. Операция Тип гмеранда Тип результата Лейсгние 1п(екег или Кеа! 1п1епег или Кеа! !п(енес или Кеа! Кеа! !п(екег (п1еаег или Кеа! или Кеа! или Кеа! или Кеа! )п(еаег )п(енес )п1екег !п(еаег (п1енег !п(енес сложение вычитание умножение деление деление остаток й!т спой а) аЬа(х) — аЬа(у) ( аЬа((х ды у) * у) (= аьа(х) и П) х йы у О, если аЬа(х) (аЬа(у); в других случаях х г(!гу у будет положительным, если.
х и у имеют один и тот же знак, и отрицательным, если х и у с разными знаками. Результат операции сложения, вычитания и умножения будет целого типа, если оба операнда — целого типа; в других случаях результат — вещественного типа. Вычисление терма вида х/у будет ошибкой, если у равен нулю. Вычисление терма вида х 6(у у будет ошибкой, если у равен нулю. Во всех других случаях значение герма удовлетворяет следующим двум правилам: а Вырин«ение Вычисление терма вида х шог( у будет ошибкой, если у меньше или равно нулю; в других случаях существует й, при которо~ х гпог) у удовлетворяет следующему отношению: 0(=х пьой у=х — !ь *у(у. Если в случае целочисленных операций оба операнда лежат в диапазоне — Махш1.. Махьп1 и верный результат находится в том же диапазоне, то стандартная реализация должна давать правильный результат.
Если же операнды или результат не находятся в диапазоне — Махгп1.. Мах1п1, то при реализации можно выбирать: выполнять ли операцию корректно или рассматривать ее как ошибку. Операции и предописанные функции (см. равд. 11.5), дающие вещественный результат, всегда следует считать приближенными, а не точными. Точность таких вещественных операций и предописанных функций зависит от реализации. 8.2.2.
Логические операции. Логические операции приводятся в следующей таблице: Операчил Действие Тип операндов Тип результата логическое «не» логическое «и» логическое «или» Воо!сап Воо!еап Воо!еап по! апй ог Воо!сап Воо!сап Воо!еап Тип операндов Тип результата Операчил Действие. объединение множеств зе! о! Т разность множеств зеГ о! Т пересечение множеств зе! о! Т зе! ОГ т зе! о! Т зе! о! Т 8.2.4. Операции отношения. Операции отношения приведены ниже. За исключением операции 1п типы операндов либо должны быть совместимыми, либо один должен быть 1(са1, а другой— 1п(едсг. Для операции 1п первый (левый) операнд должен отно- 8.2.3.
Операции иад множествами. Операции над множествами суммированы в приведенной ниже таблице. Оба операнда должны всегда относиться к совместимым типам (см. равд. 6.5). Тип результата будет упакованным, если упакованы типы обоих операндов. Тип результата не упакован, если типы обоих операндов не упакованы. 178 Описание ламии ситься к ординальному типу, совместимому с базовым типом того множественного типа, к которому относится второй операнд. Выражение х -= у (где х и у — множества) дает значение истина, если каждый элемент х является элементом у, т. е. если х есть подмножество у.
Упорядоченность совместимых строк определяется упорядоченностью значений типа СЬаг (см. равд. 6.1.2). .Пейсгеие Тил результата Воо1еап Тыи олераидое Олерацил равенство Воо! еап ( )а неравенство множественный простой, строковый множественный простой, строковый простой, строковый ординальный и мно- жественный Воо!еап Воо!сап Воо1еаи ( ) !и Прижеры факторов: Прил|ерш тержов: х'т 1/(1-1) 0 аоб оо( Р (Х <= Ч) аоб (т < И) меньше или равно включение множеств больше или равно включение множеств меньше больше принадлежность множеству Х 15 (и+х+т 5!п(Хет) (Кеб, (!ей(, Ггеео) (1, 5, 10, 19, 60) по! Р простой, ссылочный, множественный, строковый про|той, ссылочный множественный, строка вы й простой, строковый Воо!сап Воо!еан Воо!еап Воо!еал 8.
Выражения ГХУ Г)римеры простых выраженийг Х + 6гаузса)е)2 [! иХ гаог0 Нйе! + Ниеу !сЗ + ! Г!римеры выражений: Х-15 р — !) 11 )) = (Д с К) Г!КМ !п Ние) 9. ОПЕРАТОРЫ Операторы обозначают алгоритмические действия; про них говорят,'что они выполняемые 1ехесц!а)))е) . Перед любым оператором допускается метка, на которую можно ссылаться с помощью оператора перехода. Операторы обьединяются в раздел операторов: Простой оператор = Пустой оператор! Оператор присеаиеания) Оператор процес)урий Оператор перехода. Пустой оператор = .
9.!. ! !РОСТЬП! ОПЕРАТОР!т! Простым называется оператор, в который не входят как составные части другие операторы. Пустой оператор не содержит никаких символов и не обозначает никаких действий. Оператор = Рнетпа " ) (Простой оператор )влажный опсритор). Раздел опериторон = Сосланной оперитор. 9.1.1. Оператор присваивания. Оператор присваивания предназначен для обра)цення к переменной или результату активации функции н замене их текущего значения на.значение, полученное при вычислении выражения. Оператор присеаиеания= (Пораненная! Иия фушгции) ":=" Выражение.