Арифметические выражения. Приоритет арифметических операций
И в команде присваивания, и в команде writeln мы использовали арифметические выражения, вместо которых Паскаль подставлял результаты их вычислений. Арифметическое выражение состоит из констант, переменных и функций, соединённых знаками арифметических операций.
Арифметические операции имеют различный приоритет (старшинство). Если в выражении имеются операции разного приоритета, то в первую очередь выполняются более приоритетные операции. Операции одного приоритета выполняются подряд, слева направо.
Приоритет
Операции
Название
( )
группировка
+, −
знаковые операции
*
умножение
мультипликативные операции
/
дробное деление
div
целочисленное деление
mod
остаток от деления
+
сложение
аддитивные операции
−
вычитание
Обычный знак деления ( / ) в Паскале используется как дробное деление, то есть, делит вещественные числа, и результат деления – вещественное число. Даже если поделить 6 на 3, результат будет не 2, а 2.0, то есть, вещественное число. Кроме дробного деления есть ещё деление без остатка div. Оно работает только с целыми числами, и результат деления – целое число. Остаток игнорируется. Если же, наоборот, нужен остаток от деления, используется операция mod. Например, выражение 20 div 6 даёт 3, а результат выражения 20 mod 6 равен 2. Пробелы в этих выражениях пропускать нельзя. Операция mod будет полезна при определении, делится ли одна величина на другую. Если остаток от деления равен нулю, - значит, делится без остатка.
Кроме операций над числами можно выполнять более сложные действия, называемые арифметическими функциями. Функции, встроенные в Паскаль, называются стандартными. К ним относятся:
№
На Паскале
В математике
тип
пояснение
abs(x)
|x|
ц, в
модуль x
exp(x)
e x
в
экспонента x
ln(x)
ln(x)
в
натуральный логарифм x
sqr(x)
x 2
ц, в
квадрат x
sqrt(x)
в
квадратный корень из x
sin(x)
sin(x)
в
синус x
cos(x)
cos(x)
в
косинус x
arctan(x)
arctg(x)
в
арктангенс x
int(x)
в
целая часть числа x
trunc(x)
ц
целая часть x, преобразованная к целому типу
round(x)
ц
округлённое до ближайшего целого значение x
frac(x)
в
дробная часть числа x
random
в
случайное число в интервале [0; 1)
random(x)
ц
случайное целое число в интервале [0; x)
power(a,b)
ab
в
степень
Некоторые из этих функций требуют пояснений.
Функции int и trunc делают одно и то же: отбрасывают дробную часть числа. Только int оставляет его вещественным (например, 13.0), а trunc делает целым.
Функция random(x) даёт целое случайное число от 0 до x (не включая x). Пока программа работает, каждое следующее обращение к random даст новое число в этом интервале. Но при следующем запуске программы набор случайных чисел повторится. Чтобы этого избежать, нужно в начале программы поставить команду randomize. Чтобы получить случайные числа не от 0 до x, а в произвольном диапазоне от a до b, нужно использовать формулу:
Простейший пример использования функции в выражении:
y:=2*sin(x/2+0.7);
Аргумент функции может содержать и другие функции. Например: