- •1. Порядок выполнения работы
- •2. Содержание отчета
- •3. Контрольные вопросы
- •4. Основные понятия языка Паскаль
- •Целые типы данных
- •Вещественные типы данных
- •4.2. Общая структура программы. Переменные и константы.
- •4.3. Базовые типы данных и операторы
- •4.4. Арифметические и булевские выражения
- •Логические операции
4.4. Арифметические и булевские выражения
4.4.1. Арифметическое выражение
В общем случае арифметическое выражение имеет следующий вид:
[<знак>]<терм><операция><терм><операция>...<терм>
Здесь <знак> обозначает знак минус или плюс (его можно опускать). В качестве конструкции <терм> может выступать константа (например, 3.14), переменная (например, х2), вызов функции (например, sin(x+y)). Кроме того, терм в свою очередь может быть арифметическим выражением, заключенным в круглые скобки (например, (2x+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, а вторыми - операции + и -. Операции одинакового старшинства выполняются слева направо в порядке их появления в выражении.
Тип результата определяется путем последовательного определения типов результатов всех промежуточных операций.
Примеры арифметических выражений:
aa+2ab+bb
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