Порядок вычисления математических выражений
Встроенные математические функции
Программы с численными расчетами как правило предполагают использование различных математических функций, таких как вычисление корня, тригонометрические функции и т.д. Для наиболее часто встречающихся математических функций в алгоритмический язык как правило включаются встроенные подпрограммы для вычисления этих функций. В табл. 3 приведен перечень математических функций, реализованных в VBA. В этой таблице X означает любое численное выражение; все аргументы функций являются обязательными, если только не указано иначе.
Таблица 3. Встроенные математические функции VBA
Функции (аргументы) | Возвращает / действие |
Abs(X) | Возвращает абсолютное значение X |
Atn(X) | Возвращает арктангенс X как угол в радианах |
Сos(X) | Косинус угла X, где X это угол, измеряемый в радианах |
Sin(X) | Возвращает синус угла; X – это угол, измеряемый в радианах |
Sqr(X) | Возвращает корень квадратный из X. VBA отображает ошибку, исполнения, если X – отрицательное |
Tan(X) | Возвращает тангенс угла; X – угол в радианах |
Exp(X) | Возвращает экспоненту – константу е, возведенную в степень х. (е – это основание натурального логарифма) |
Fix(X) | Возвращает целую часть X. Fix не округляет число, а отбрасывает любую дробную часть. Если X является отрицательным, Fix возвращает ближайшее отрицательное целое, большее, чем или равное X |
Int(X) | Возвращает целую часть X. Int не округляет число, а отбрасывает любую дробную часть. Если X является отрицательным, Int возвращает ближайшее отрицательное целое меньшее, чем или равное X |
Log(X) | Возвращает натуральный логарифм X |
Rnd(X) | Возвращает случайное число; аргумент является необязательным. Функцию Rnd используется только после инициализации VBA-генератора случайных чисел оператором Randomize |
Sgn(X) | Возвращает знак числа: –1, если X отрицательное; 1, если X положительное; 0, если X равно 0 |
Математические выражения в широком смысле – это выражения или формулы, в которых могут присутствовать операции вычисления арифметических, алгебраических, тригонометрических и других математических выражений, а также логические операции сравнения (больше, меньше и т.п.). Все математические выражения состоят из одной или более следующих частей:
– константы;
– переменные (в том числе элементы массива);
– знаки математических операций;
– функции.
Выражения используются для выполнения непосредственно математических вычислений, но и для выполнения логических операций сравнения. Вычисленные выражения, так же как и переменные, имеют один из типов данных Visual Basic.
При вычислении сложных выражений VBA следует таким правилам:
– все операции выполняются последовательно;
– части выражения, заключенные в круглые скобки, всегда вычисляются в первую очередь. Если выражение, заключенное в круглые скобки, является частью другого сложного выражения, также заключенного в круглые скобки, VBA применяет эти же правила последовательно от внутренних выражений в круглых скобках к внешним;
– конкретные операции выполняются в зависимости от иерархии операторов (см. табл. 4); если операторы имеют равный уровень приоритета, они вычисляются в порядке слева направо;
– если в выражении присутствуют арифметические и логические операции, то сначала выполняются арифметические, и только потом логические.
В табл. 4 приведена иерархия последовательности выполнения математических операций VBA. Все операции перечислены в порядке убывания приоритетов от самого высокого до самого низкого. Операции, помещенные в одной и той же строке таблицы, имеют равный приоритет.
Таблица 4. Иерархия операторов/операций
Оператор/ операция | Комментарии |
^ | Возведение в степень, наивысший приоритет |
- | Унарный минус (присвоение знака числу) |
*, / | Умножение и деление имеют равные приоритеты; они вычисляются по мере появления в выражении слева направо |
\ | Вычисляет результат целочисленного деления первого математического выражения (X) на второе (Y). Перед вычислением значение каждого выражения округляется до целых по правилам математики. |
+, - | Сложение и вычитание имеют равный приоритет; они вычисляются по мере появления в выражении слева направо |
& | Сложение строк выполняется после любых арифметических операций в выражении и перед любыми операциями сравнения или логическими операциями |
<, <=, >, >=, =, <> | Все операторы сравнения имеют равные приоритеты и вычисляются по мере появления в выражении слева направо. Для группирования операторов сравнения в выражениях надо использовать круглые скобки |
Not | Логическое отрицание |
And | Функция И (логическое умножение) |
Or | Функция ИЛИ (Логическое сложение) |
Xor | Исключающее ИЛИ |
Eqv | Функция эквивалентности |
Imp | Функция импликации |