|
Целая и вещественная арифметика
Выражение состоит из операндов и операторов. Операторы находятся между операндами и обозначают действия, которые выполняются над операндами. В качестве операндов выражения можно использовать: переменную, константу, функцию или другое выражение. Основные алгебраические операторы приведены в Алгебраические операторы. Алгебраические операторы
При записи выражений между операндом и оператором, за исключением операторов DIV и MOD, пробел можно не ставить. Результат применения операторов +, -, * и / очевиден. Оператор DIV позволяет получить целую часть результата деления одного числа на другое. Например, значение выражения 15 DIV 7 равно 2. Оператор MOD, деление по модулю, позволяет получить остаток от деления одного числа на другое. Например, значение выражения 15 MOD 7 равно 1. В простейшем случае выражение может представлять собой константу или переменную.
Примеры выражений:
1230.001* i+1 А + В/С Summa*0.75 (В1+ВЗ+ВЗ)/3 Cena MOD 100
Тип выражения определяется типом операндов, входящих в выражение, и зависит от операций, выполняемых над ними. Например, если оба операнда, над которыми выполняется операция сложения, целые, то очевидно, что результат тоже является целым. А если хотя бы один из операндов дробный, то тип результата дробный, даже в том случае, если дробная часть значения выражения равна нулю. Важно уметь определять тип выражения. При определении типа выражения следует иметь в виду, что тип константы определяется ее видом, а тип переменной задается в инструкции объявления. Например, константы 0, 1 и -512 — целого типа (integer), а константы 1.0, 0.0 и 3.2Е-05 — вещественного типа (real). Любые операции с вещественными числами выполняются с некоторой погрешностью. В таблице 1приведены правила определения типа выражения в зависимости от типа операндов и вида оператора. Таблица 1 – Правила определения типа выражения
Правила использования операций с операндами различного типа приводятся в табл.2. Таблица 2 – Правила использования операций с операндами различного типа
Унарная операция @ применяется к операнду любого типа и возвращает результат типа pointer, в котором содержится адрес операнда. Если операция @ применяется к процедуре, функции или методу в объекте, ее результатом будет адрес точки входа в эту процедуру (функцию, метод). Этот адрес можно использовать только в подпрограмме, написанной на Ассемблере, или во фрагментах INLINE. В Object Pascal определены следующие логические операции: Ø not- логическое НЕ; Ø and- логическое И; Ø or- логическое ИЛИ; Ø xor - исключительное ИЛИ. Логические операции применимы к операндам целого и логического типов. Если операнды - целые числа, то результат логической операции есть тоже целое число, биты которого (двоичные разряды) формируются из битов операндов по правилам, указанным в табл.3. Таблица 3 – Правила формирования
К логическим же в Object Pascal обычно относятся и две сдвиговые операции над целыми числами: Ø i shl j - сдвиг содержимого i на j разрядов влево; освободившиеся младшие разряды заполняются нулями; Ø i shr j - сдвиг содержимого i на j разрядов вправо; освободившиеся старшие разряды заполняются нулями. В этих операциях i и j - выражения любого целого типа. Логические операции над логическими данными дают результат логического типа по правилам, указанным в Табл.4. Таблица 4 – Правила проведения логических операций
Операция отношения in применяется к двум операндам. Первым (левым) операндом должно быть выражение любого порядкового типа, вторым - множество, состоящее из элементов того же типа, или идентификатор множественного типа. Результат операции будет True, если левый операнд принадлежит множеству. Приоритет операций При вычислении значений выражений следует учитывать, что операторы имеют разный приоритет. В Object Pascal определены следующие операции: Ø унарные not, @; Ø мультипликативные *, /, div, mod, and, shi, shr; Ø аддитивные +, -, or, xor; Ø отношения =, <>, <, >, <=, >=, in. Приоритет операций убывает в указанном порядке, т. е. наивысшим приоритетом обладают унарные операции, низшим - операции отношения. Порядок выполнения нескольких операций равного приоритета устанавливается компилятором из условия оптимизации кода программы и не обязательно слева направо. При исчислении логических выражений операции равного приоритета всегда вычисляются слева направо, причем будут вычисляться все или только достаточные операции в зависимости от установленного в среде Delphi переключателя Project | Options | Compiler | Complete Boolean eval: при установленном переключателе вычисляются все операции отношения, при неустановленном - только те, что необходимы для однозначного определения результата исчисления. Для задания нужного порядка выполнения операций в выражении можно использовать скобки, например: (r1+r2+r3)/(r1*r2*r3) Выражение, заключенное в скобки, трактуется как один операнд. Это означает, что операции над операндами в скобках будут выполняться в обычном порядке, но раньше, чем операции над операндами, находящимися за скобками. При записи выражений, содержащих скобки, должна соблюдаться парность скобок, т. е. число открывающих скобок должно быть равно числу закрывающих скобок. Нарушение парности скобок - наиболее распространенная ошибка при записи выражений. ЧТО И КАК ПИСАЛИ О МОДЕ В ЖУРНАЛАХ НАЧАЛА XX ВЕКА Первый номер журнала «Аполлон» за 1909 г. начинался, по сути, с программного заявления редакции журнала... Живите по правилу: МАЛО ЛИ ЧТО НА СВЕТЕ СУЩЕСТВУЕТ? Я неслучайно подчеркиваю, что место в голове ограничено, а информации вокруг много, и что ваше право... Что вызывает тренды на фондовых и товарных рынках Объяснение теории грузового поезда Первые 17 лет моих рыночных исследований сводились к попыткам вычислить, когда этот... Что делать, если нет взаимности? А теперь спустимся с небес на землю. Приземлились? Продолжаем разговор... Не нашли то, что искали? Воспользуйтесь поиском гугл на сайте:
|