ВЫРАЖЕНИЯ
Переменные и константы всех типов используются в выражениях. Выражения задают порядок выполнения действий над элементами данных и состоят из операндов (переменных, констант, функций) и круглых скобок, соединенных операциями. Операции определяют действия, которые надо выполнить над операндами. В простейшем случае выражение может состоять из одной переменной или константы.
Переменные и константы – простейшие частные случаи выражения. Выражения – состоят из операндов, знаков операций и круглых скобок. Операндом моет быть константа, переменная, граница пара-метра-массива (об этом позже) или обозначение функции. Смысл выражения в том, чтобы пассивные составляющие (операнды) связать через активные составляющие (+, -, *, / и прочее) и получить некоторое новое значение.
Выражение не просто имеет некоторое значение, но и обладает совершенно определенным типом, который зависит от операндов и операций.
Для того, чтобы описать последовательность, в которой должны стоять операнды в выражениях, целесообразно упорядочить операции по уровням.
1. Операции более низкого уровня выполняются раньше, чем операции более высокого уровня.
2. Операции одного уровня выполняются поочередно слева направо.
3. Операции, заключенные в круглые скобки, выполняются раньше операций, записанных за скобками.
Эти правила действуют для всех типов выражений.
Операции в Turbo Pascal делятся в зависимости от типа операндов, использующихся в выражениях, на арифметические, отношения, логические (булевские), операции @, строковые и другие.
Арифметические выражения - это константы, переменные, функции, соединенные знаками арифметических операций. Арифметические выражения имеют тип real или integer, причем мы всегда под real будем понимать также single, double, extended и comp, а под integer – byte, word, shortint и longint.
Арифметические выражения вычисляются слева направо с учетом приоритета операций.
Таблица 3. Арифметические операции
Операции | Действие | Тип операндов | Тип результата |
+ | сложение | вещественно-целый | вещественно-целый |
- | вычитание | вещественно-целый | вещественно-целый |
* | умножение | вещественно-целый | вещественно-целый |
/ | деление | вещественно-целый | вещественный |
div | целочисленное деление | целый | целый |
mod | остаток от деления | целый | целый |
and | арифметическое “и” | целый | целый |
or | арифметическое “или” | целый | целый |
hor | исключающая дизъюнкция “или” | целый | целый |
not | арифметическое отрицание | целый | целый |
Унарные + | сохранение знака | вещественно-целый | вещественно-целый |
- | отрицание знака | вещественно-целый | вещественно-целый |
Пример арифметического выражения на Паскале:
В выражениях может присутствовать вызов функции. Функция передает свое значение в выражение. В Паскале имеется множество стандартных функций, о которых речь будет идти почти в каждом разделе.
Правила записи стандартных функций:
1. Имя функции записывается буквами латинского алфавита.
2. Аргумент функции записывается в круглых скобках после имени функции.
3. Аргумент функции может быть константа, переменная или арифметическое выражение.
Приведем ряд стандартных математических функций.
Таблица 4. Основные арифметические встроенные функции Turbo Pascal
Функции | Назначение | |
Abs(x) | Вычисление абсолютного значения X | | X| |
Sqr(x) | Вычисление квадрата X | X2 |
Sqrt(x) | Вычисление арифметического корня X | |
Sin(x) | Вычисление синуса X | sinx |
Cos(x) | Вычисление косинуса X | cosx |
Arctan(x) | Вычисление арктангенса X | arctgx |
Exp(x) | Вычисление экспоненты X | ex |
Ln(x) | Вычисление натурального логарифма X | lnx |
Trunc(x) | Вычисление целой части X | |
Round(x) | Округление X до ближайшего целого | |
Odd(x) | True , если X - нечетное, False, если X - четное |
Таблица 5. Арифметические встроенные процедуры
Функции | Назначение |
Dec(x) | Уменьшает значение переменной X на N |
Inc(x) | Увеличивает значения переменной X на N |
В Turbo Pascal определены только 3 тригонометрических функций: sin, cos, arctg. Для вычисления остальных тригонометрических функций необходимо использовать известные соотношения:
Tg(x) = sin(x)/cos(x) | Cctg(x) = cos(x)/sin(x) | Csc(x) = 1/sin(x) | Sc(x) = 1/cos(x) |
Arccos(x) = p/2 - Arcsin(x) | Arcctg(x) = p/2 - Arctg(x) | ||
Arcsin(x)= | |||
Логические выражения имеют значение типа boolean, то есть true или false. Выражение, служащее для вычисления логического значения, называется логическим выражением или логическом условием. Одним из видов логического выражения является отношение. Отношение – это два выражения, соединенные операцией отношения.
Например,
Y < 0; a > b; x = y; x < a – b.
Операции отношения: > (больше), < (меньше), > (не менее), < (не более), = (равно), ¹ (не равно) – на языке Паскаль записывают соответственно: >, <, >=, <=, =, <> и имеют более низкий приоритет по сравнению с арифметическими операциями. Иными словами, сначала выполняются арифметические операции, а потом операции отношения.
Условие a + b ¹ c +d на языке Паскаль записывается так: a + b <> c+d
Высказывания о значениях переменных могут быть истинными или ложными в зависимости от самих значений переменных. Так, если s = 5, t = 6, то высказывание s > t – ложное, высказывание s < t + 12 – истинное.
Логические значения упорядочены. Выражение true > false является истинным.
Из простых выражений в Паскале разрешается строить более сложные. Пусть А и В – некоторые высказывания, тогда А and B – это новое высказывание, утверждающее истинность обоих высказываний А и В; А or В – это новое высказывание, утверждающее истинность хотя бы одного из высказываний А и В. Если С – высказывание то not C – это новое высказывание, утверждающее, что С – ложное высказывание.
Операции отношения выполняют сравнение двух операндов и определяют, истинно значение или ложно. Сравниваемые величины могут принадлежать к любому скалярному или перечисляемому типу. Результат всегда имеет булевский тип.
Таблица 6. Операции отношения
Операции | Действие | Выражение | Результат |
= | равно | А=В | True , если А равно В |
<> | не равно | А<>B | True , если А не равно В |
> | больше | A>B | True , если А больше В |
< | меньше | A<B | True , если А меньше В |
>= | больше или равно | A>=B | True , если А больше или равно В |
<= | меньше или равно | A<=B | True , если А меньше или равно В |
in | принадлежность | A in М | True , если А находится в списке М |
Результатом логических (булевских) операций является логическое значение True или False. операндами служат данные типа boolean.
Таблица 7. Логические операции.
Операции | Действие | выражение | А | В | Результата |
NOT | логическое отрицание | not A | True False | False True | |
AND | логическое “И” | A and B | True True False False | True False True False | True False False False |
OR | логическое “ИЛИ” | A or B | True True False False | True False True False | False True True True |
XOR | исключающее “ИЛИ” | A xor B | True True False False | True False True False | False True True False |
Выполнение каждой операции происходит с учетом ее приоритета. Значения приоритетов указаны в таблицы 6.
Таблица 8. Порядок выполнения операций.
Операции | Приоритет | Вид операций |
@, not | первый (высший) | унарная операция |
*,/, div, mod, and | второй | операции типа умножения |
+,-, or, xor | третий | операции типа сложения |
=, <>,<,>,<=,>=, in | четвертый (низший) | операции отношения |
Первой из двух операций одного старшинства выполняется та, знак которой в выражении встречается раньше. Круглые скобки изменяют этот естественный порядок. Для высказывания
(x > y) or (y > z) and not ((x > 0) or (z > x))
устанавливается следующий порядок логических операций:
4 3 2 1
(x > y) or (y > z) and not ((x > 0) or (z > x))
При x = -1, z = -2, y = 1 результатом будет значение true.
(x > 0) – false, (x > x) – false;
(x > 0) or (z > x) – false;
not ((x > 0) or (z > x))) – true;
(x > y) –false, (y > z) – true;
(y > z) and not ((x > 0) or (x > x)) – true.
В конечном итоге false or true дает true.
Дата добавления: 2015-08-08; просмотров: 808;