Алгебраические (арифметические) выражения – это конструкции, содержащие данные, знаки математических операций, математические функции.
Имеющиеся в языке Паскаль математические операции представлены в таблице 2.1, там же показаны простейшие примеры их использования.
Таблица 2.1. Математические операции в Pascal
Название |
Знак |
Тип операндов |
Тип результата |
Пример |
Сложение |
+ |
Целое, веществ. |
Целое, веществ. |
15 + 3 {=18} - целое 12.5 + 3 {=15.5} - вещ. |
Вычитание |
- |
Целое, веществ. |
Целое, веществ. |
15.5 - 3 {=12.5} - вещ. 15 - 3 {=12} - целое |
Умножение |
* |
Целое, веществ. |
Целое, веществ. |
3.5*2 {=7.0} - вещ. 3*2 {=6} - целое |
Деление |
/ |
Целое, веществ. |
Вещественное |
3/5 {=0.6} - вещ. 15.5/5 {=3.1} -вещ. |
Целое частное от деления |
div |
Целое |
Целое |
3 div 5 {=0} - целое |
Целый остаток от деления |
mod |
Целое |
Целее |
3 mod 5 {=3} - целое |
Обратите внимание на тип операндов (т.е. тип данных, на которые действует операция) и тип результата, отмеченные в таблице. Если операция предназначена для работы только с целыми типами данных, то при попытке применения её к вещественным данным, компилятор сообщит об ошибке.
Тип результата выражения важен, при присваивании этого результата какой-либо переменной. Правила присваивания были описаны выше. Нужно помнить, что если результат алгебраической операции вещественный, то при попытке присвоить его целой переменной компилятор сообщит об ошибке.
Несколько примеров допустимых и недопустимых алгебраических выражений представлены в таблице 2.2.
Таблица 2.2. Примеры алгебраических выражений
В выражениях ниже переменные а – целого типа, х – вещественного. |
|
Выражение |
Комментарий |
Правильная запись |
|
(2*a+1) div 3 |
Целую переменную делить нацело (операция div) можно |
x/a |
Вещественную переменную можно делить всегда |
Неправильная запись |
|
x div 2 |
Вещественная переменная х не может быть использована с операцией div |
(2+a)/3 mod 5 |
результат первого деления вещественный и не может быть использован с операцией mod (остаток от деления нацело) |
В алгебраических выражениях часто используются математические функции, такие как sin, cos, ln и т.п. Необходимо помнить, что аргументы функции всегда заключаются в скобки, знаков умножить между функцией и аргументом ставить не надо. Список стандартных математических функций приведен в приложении В. Несколько примеров использования функций в алгебраических выражениях приведено ниже.
Таблица 2.3. Примеры использования функций в алгебраических выражениях
Алгебраическая запись |
Запись на Паскале |
2∙105 cos3x |
2E5*cos(3*x) |
|
sqrt(x*x+y*y) sqrt(sqr(x)+sqr(y)) |
|
1E3*exp(sqr(x)+sqrt(5*sin(x)))
|
|
arctan((1-sqr(cos(x)))/cos(x))
|
Порядок выполнения операций внутри алгебраического выражения определяется приоритетом операций (таблица 2.4).Согласно принятым в языке Паскаль правилам, сначала будут выполнены операции в скобках, затем вычислены функции, унарные операции, операции умножения или деления и только затем – операции сложения и вычитания.
Таблица 2.4. Приоритет математических операций
Приоритет |
Тип действия |
1 |
Вычисления в скобках (…) |
2 |
Вычисление функций |
3 |
Унарные операции (например, not) |
4 |
Операции типа умножения, деления (*, /, div, mod, and) |
5 |
Операции типа сложения (+, -, or, xor) |
6 |
Операции отношений (=, <>, <, >, <=, >=) |
Операции отношения и логические операции: not,and,or,xor будут описаны ниже.
Давайте проясним действие приоритета операций на примерах.
Пример 1. В арифметическом
выражении
в
примере 1, которое на языке Паскаль имеет вид 1E3*exp(sqr(x)+sqrt(5*sin(x)))
сначала вычисляется аргумент экспоненты (exp),
при этом в нем в первую очередь - функции и скобки. Весь порядок операций показа
на рисунке ниже.
Пример 2. Необходимо вычислить
сложную дробь
.
При этом необходимо писать: (1+sqr(a))/(3*a),
либо (1+sqr(a))/3/a.
Неправильным будет вариант (1+sqr(a))/3*a, т.к. сначала компьютер разделит сумму на 3, а потом, что получилось, умножит на а.
Также неправильно писать 1+sqr(a)/(3*a), т.к. сначала значение квадрата sqr(a) будет поделено на 3а, затем к результату прибавится 1.