hobdrive-docs

Динамические выражения: базовый синтаксис

Вычислитель выражений основан на реализации, аналогичной используемой в Excel. Он может разбирать математические выражения с поддержкой наиболее распространённых функций.

Примеры:

4*(24/2-5)+14
cos(Pi/4)*sin(Pi/6)^2
1-1/E^(0.5^2)
min(5;2;9;10;42;35)

Типы данных

Поддерживаются пять типов данных:

Тип Описание
double Вещественное число (используется по умолчанию во всех вычислениях)
int Целое число. Используйте функцию int() для явного преобразования
hexadecimal Шестнадцатеричное число. При вычислениях преобразуется в double
string Текстовая строка
boolean Логическое значение (true / false)

Примечание: Целые и шестнадцатеричные числа при вычислениях всегда преобразуются в double. Используйте int() для явного преобразования в целое число.

Встроенные константы

Константа Описание
Pi Число π ≈ 3,14159…
E Число Эйлера e ≈ 2,71828…

Справочник функций

Математические функции

Функция Описание Пример
Abs(x) Абсолютное значение (модуль) Abs(-5)5
Acos(x) Арккосинус Acos(0)1.5708
Asin(x) Арксинус Asin(1)1.5708
Atan(x) Арктангенс Atan(1)0.7854
Atan2(y;x) Арктангенс y/x с учётом знаков для определения квадранта Atan2(1;1)0.7854
Ceiling(x) Округление вверх до ближайшего целого Ceiling(4.1)5
Cos(x) Косинус Cos(0)1
Cosh(x) Гиперболический косинус Cosh(0)1
Exp(x) Возведение e в степень x Exp(1)2.7183
Fact(x) Факториал Fact(5)120
Floor(x) Округление вниз до ближайшего целого Floor(4.9)4
Ln(x) Натуральный логарифм (основание e) Ln(E)1
Log(x) Десятичный логарифм (основание 10) Log(100)2
Pow(x;y) Возведение x в степень y Pow(2;10)1024
Round(x) Округление до ближайшего целого Round(4.5)5
Sign(x) Знак числа: −1, 0 или 1 Sign(-42)-1
Sin(x) Синус Sin(Pi/2)1
Sinh(x) Гиперболический синус Sinh(1)1.1752
Sqr(x) Квадрат числа (x²) Sqr(5)25
Sqrt(x) Квадратный корень Sqrt(25)5
Trunc(x) Отбрасывание дробной части Trunc(4.9)4

Агрегатные и статистические функции

Функция Описание Пример
Avg(…) Среднее арифметическое Avg(2;4;6)4
Max(…) Максимальное значение Max(5;2;9)9
Min(…) Минимальное значение Min(5;2;9)2
StDev(…) Стандартное отклонение StDev(2;4;6)
Var(…) Дисперсия Var(2;4;6)

Логические функции

Функция Описание Пример
And(a;b) Логическое И And(true;false)false
Or(a;b) Логическое ИЛИ Or(true;false)true
Not(x) Логическое НЕ Not(true)false
If(усл;тогда;иначе) Условие: возвращает тогда, если усл истинно, иначе иначе If(5>6;"да";"нет")"нет"

Строковые функции

Функция Описание Пример
Format(x;фмт) Форматирует значение по строке формата Format(Pi;"0.00")"3.14"
Hex(x) Преобразует число в шестнадцатеричную строку Hex(255)"FF"
Left(s;n) Возвращает первые n символов строки Left("hello";3)"hel"
Right(s;n) Возвращает последние n символов строки Right("hello";3)"llo"
Mid(s;начало;n) Возвращает n символов начиная с позиции начало Mid("hello";2;3)"ell"
Len(s) Возвращает длину строки Len("hello")5
Lower(s) Преобразует в нижний регистр Lower("HELLO")"hello"
Upper(s) Преобразует в верхний регистр Upper("hello")"HELLO"
Val(s) Преобразует строку в число Val("42")42

Служебные функции

Функция Описание
About Выводит информацию о версии
Clear Очищает все пользовательские переменные и функции
Help Выводит справочную информацию

Операции со строками

Оператор & выполняет конкатенацию (склейку) строк:

"Hello " & "world"          // → "Hello world"
"Pi = " & Pi                // → "Pi = 3.14159265358979"
Len("hello world")          // → 11

Логические операторы и условия

true != false               // → true
5 > 6 ? "hello" : "world"  // → "world"
If(5 > 6;"hello";"world")  // → "world"

Объявление переменных и функций

Оператор := используется для объявления переменных и функций:

x := 42
f(x) := x^2
f(x) := sin(x) / cos(x)    // объявление функций с использованием встроенных функций

Рекурсия и область видимости

Функции могут вызывать сами себя рекурсивно. Параметры функции являются локальными, остальные переменные разрешаются из глобальной области видимости.

fac(n) := (n = 0) ? 1 : fac(n-1)*n
// fac вызывает саму себя с другими параметрами

f(x) := x * Y
// x — в области видимости функции, Y — в глобальной области

Приоритет операторов

От высшего к низшему:

Приоритет Оператор Описание
1 ( ), f(x) Группировка, вызовы функций
2 ! ~ - + Унарные операторы
3 ^ Возведение в степень (правило Excel: a^b^c(a^b)^c)
4 * / % Умножение, деление, остаток от деления
5 + - Сложение, вычитание
6 & Конкатенация строк
7 < <= > >= Операторы сравнения
8 = != <> Равенство и неравенство
9 && Логическое И
10 \|\| Логическое ИЛИ
11 ?: Тернарное условие
12 := Присваивание