Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LAB2.DOC
Скачиваний:
26
Добавлен:
03.06.2015
Размер:
155.65 Кб
Скачать

4.4. Арифметические и булевские выражения

4.4.1. Арифметическое выражение

В общем случае арифметическое выражение имеет следующий вид:

[<знак>]<терм><операция><терм><операция>...<терм>

Здесь <знак> обозначает знак минус или плюс (его можно опускать). В качестве конструкции <терм> может выступать константа (например, 3.14), переменная (например, х2), вызов функции (например, sin(x+y)). Кроме того, терм в свою очередь может быть арифметическим выражением, заключенным в круглые скобки (например, (2x+exp(x-1)).

В арифметическое выражение могут входить следующие операции:

+ -  / div mod

Знаки +, -, / имеют обыкновенный математический смысл, а знак  означает операцию умножения. Операция div является операцией целочисленного деления (с отбрасыванием остатка), при этом делимое и делитель должны быть целого типа, например

13 div 5 дает 2

7 div 8 дает 0

(-5) div 2 дает -2

Операция mod означает взятие остатка от целочисленного деления, оба аргумента этой операции должны быть целого типа. По определению

a mod b = a - ((a div b)  b)

Например:

13 mod 5 дает 3

7 mod 8 дает 7

(-5) mod 2 дает -1

Операции div и mod могут отделяться от своих аргументов хотя бы одним пробелом.

Операции +, -,  можно применять к аргументам как целого, так и вещественного типа, при этом результат будет целого типа только в том случае, если оба аргумента целого типа, иначе результат - вещественного типа. Результат операции / всегда вещественного типа.

В арифметическом выражении могут использоваться следующие стандартные математические функции (табл.3).

Таблица 3

Стандартные процедуры и функции для вещественных величин

Название

функции

Пояснение

sin(x)

Вычисление синуса x, заданного в радианах

cos(x)

Вычисление косинуса x, заданного в радианах

arctan(x)

Вычисление арктангенса x, результат в радианах

ln(x)

Вычисление натурального логарифма x

sqr(x)

Вычисление квадрата величины x

abs(x)

Вычисление абсолютного значения величины x

sqrt(x)

Вычисление корня квадратного из x

exp(x)

Вычисление экспоненты от x

Функции abs(x) и sqr(x) могут использоваться как с целыми так и с вещественными аргументами и дают соответствующий результат. Функции sin(x), cos(x), arctan(x), ln(x), sqrt(x) и exp(x) также могут использоваться как с целыми так и с вещественными аргументами, но дают всегда вещественный результат.

Вычисление значений производится в соответствии с расставленными скобками и старшинством операций. Первыми по старшинству являются операции , /, div, mod, а вторыми - операции + и -. Операции одинакового старшинства выполняются слева направо в порядке их появления в выражении.

Тип результата определяется путем последовательного определения типов результатов всех промежуточных операций.

Примеры арифметических выражений:

aa+2ab+bb

k div (x+y)

-(a+b/c)ord('z')

Примеры неправильных арифметических выражений:

a+b - начинается со знака ;

15/-2 - содержит два знака операции подряд;

cos(x) div 2 - не целый аргумент у операции div;

(a+(b+c) - не хватает закрывающейся скобки.

В операторе присваивания тип выражения в правой части должен совпадать с типом переменной в левой части, либо переменная может быть вещественного типа, а выражение - целого типа. Присваивание целой переменной вещественного значения не разрешается.

Для преобразования значения вещественного типа в целый тип используются две стандартные функции. Обе эти функции применимы только к вещественным аргументам.

Функция trunc(x) для вещественного аргумента вырабатывает целый результат путем отбрасывания дробной части:

trunc(5.8) дает 5

trunc(-3.9) дает -3

Функция round(x) округляет вещественное значение аргумента до ближайшего целого по правилу:

round(x)=trunc(x+0.5) для x >= 0.0

round(x)=trunc(x-0.5) для x < 0.0

например

round(5.5) дает 6

round(-5.5) дает -6

4.4.2. Булевское выражение

Булевские выражения применяются обычно при задании различных условий, которые могут либо выполняться, либо не выполняться. Поэтому булевские выражения могут принимать только два значения: true (истина) и false (ложь). Булевское выражение, как и арифметическое строится из операндов и знаков операций. Следующие операции вырабатывают булевские значения:

1) Операции отношения (сравнения).

= - равно;

> - больше;

< - меньше;

<= - меньше или равно;

>= - больше или равно;

<> - не равно.

Сравнивать между собой можно только однотипные скалярные величины, например:

a < b+1 'c' <= 'b' x <> true

В первом примере сравниваются арифметические, во втором - символьные, а в третьем - булевские величины.

2) Логические операции (булевские операции).

not - логическое отрицание (НЕ);

and - логическое умножение (логическое И);

or - логическое сложение (логическое ИЛИ);

xor – исключающее ИЛИ.

Операция not требует одного, а операции and, or, xor - двух аргументов булевского типа. Правила выполнения булевских операций показаны в таблице 4.

Таблица 4

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]