Порядок вычисления математических выражений

Встроенные математические функции

 

Программы с численными расчетами как правило предполагают использование различных математических функций, таких как вычисление корня, тригонометрические функции и т.д. Для наиболее часто встречающихся математических функций в алгоритмический язык как правило включаются встроенные подпрограммы для вычисления этих функций. В табл. 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 Функция импликации