Базовые операции
На языке Выражений (Блок "Выражение") доступны следующие базовые операции над объектами:
- Сложение:
<Выражение 1>+<Выражение 2> - Вычитание:
<Выражение 1>-<Выражение 2> - Умножение:
<Выражение 1>*<Выражение 2> - Деление
- Простое деление:
<Выражение 1>/<Выражение 2> - Получение остатка от деления:
<Выражение 1>%<Выражение 2> - Получение целой части от деления:
<Выражение 1>//<Выражение 2>
- Простое деление:
- Возведение в степень:
<Выражение> [ ** | ^ ] <Число> - Фактор - отрицательное значение объекта:
-<Выражение> - Сравнение:
<Выражение 1> [ < | <= | > | >= | == | != ] <Выражение 2> - Инверсия - логическое "не":
not <Выражение 1> - Конъюнкция - логическое "и":
<Выражение 1> and <Выражение 2> - Дизъюнкция - логическое "или":
<Выражение 1> or <Выражение 2>
Грамматика операций
Сложение
| Операнды | Описание | Пример |
|---|---|---|
| Целое число + Целое число = Целое число | 2 + 2 = 4 | |
| Целое число + Число с плавающей точкой = Число с плавающей точкой | 2 + 2.7 = 4.7 | |
| Целое число + Строка = Строка | Целое число превращается в строку и происходит суммирование строк. | 2 + 'String' = '2String' |
| Целое число + Логический тип = Целое число | Логический тип превращается в целое число (0 - False, 1 - True), после чего происходит сложение. | 2 + True = 3 |
| Целое число + Дата = Дата | К дате добавляется <Целое число> дней. | 2 + 01.01.2022 = 03.01.2022 |
| Целое число + Пустой элемент = Целое число | Пустой элемент приравнивается к нулю и происходит сложение. | 2 + Null = 2 |
| Число с плавающей точкой + Число с плавающей точкой = Число с плавающей точкой | 2.7 + 3.3 = 6.0 | |
| Число с плавающей точкой + Строка = Строка | Число с плавающей точкой превращается в строку и происходит суммирование строк. | 'str' + 0.1415 = 'str0.1415' |
| Число с плавающей точкой + Логический тип = Число с плавающей точкой | Логический тип превращается в целое число (0 - False, 1 - True), после чего происходит сложение. | 4.2 + True = 5.2 |
| Число с плавающей точкой + Дата = Дата | К дате добавляется округленное до ближайшего целого <Число с плавающей точкой> дней. | 10.7 + 01.01.2022 = 12.01.2022 |
| Число с плавающей точкой + Пустой элемент = Число с плавающей точкой | Пустой элемент приравнивается к нулю и происходит сложение. | 5.5 + Null = 5.5 |
| Строка + Строка = Строка | 'foo' + 'bar' = 'foobar' | |
| Строка + Логический тип = Строка | Логический тип переводится в строку (True в 'True', False в 'False') и происходит сложение строк. | 'not' + True = 'notTrue' |
| Строка + Дата = Строка | Дата преобразуется в строку и происходит сложение строк. | 01.01.2001 + 'Year' = '01.01.2001Year' |
| Строка + Пустой элемент = Строка | Пустой элемент приравнивается к пустой строке и происходит сложение строк. | 'Text' + Null = 'Text' |
| Логический тип + Логический тип = Целое число | Логический тип превращается в целое число (0 - False, 1 - True), после чего происходит сложение двух целых чисел. | True + True = 2 |
| Логический тип + Дата = Дата | Логический тип превращается в целое число (0 - False, 1 - True), после чего происходит сложение целого числа и даты. | True + 31.12.2021 = 01.01.2022 |
| Логический тип + Пустой элемент = Логический тип | Пустой элемент игнорируется и возвращается значение логического типа. | False + Null = False |
| Дата + Дата = Ошибка! | Сложение двух дат вызывает ошибку. |
Ошибка |
| Дата + Пустой элемент = Дата | Пустой элемент приравнивается к нулю и происходит сложение даты и целого числа. | Null + 31.12.2021 = 31.12.2021 |
Вычитание
| Операнды | Описание | Пример |
|---|---|---|
| Целое число - Целое число = Целое число | 2 - 1 = 1 | |
| Целое число - Число с плавающей точкой = Число с плавающей точкой | 3.14 - 3 = 0.14 | |
| Целое число - Строка = Ошибка! | Вычитание строки вызывает ошибку. |
Ошибка |
| Целое число - Логический тип = Целое число | Логический тип превращается в целое число (0 - False, 1 - True), после чего происходит вычитание. | 2 - True = 1 |
| Целое число - Дата = Ошибка!Дата - Целое число = Дата | Вычитать число можно только из даты. Из даты вычитается <Целое число> дней. | 02.01.2020 - 1 = 01.01.2020 |
| Целое число - Пустой элемент = Целое число | Пустой элемент приравнивается к нулю и происходит вычитание. | 2 - Null = 2 |
| Число с плавающей точкой - Число с плавающей точкой = Число с плавающей точкой | 3.1415 - 2.1 = 1.015 | |
| Число с плавающей точкой - Строка = Строка | Вычитание строки вызывает ошибку. |
Ошибка |
| Число с плавающей точкой - Логический тип = Число с плавающей точкой | Логический тип превращается в целое число (0 - False, 1 - True), после чего происходит вычитание. | 2.7 - True= 1.7 |
| Число с плавающей точкой - Дата = Ошибка!Дата - Число с плавающей точкой = Дата | Вычитать число можно только из даты. Из даты вычитается округленное до ближайшего целого <Число с плавающей точкой> дней. | 02.02.2020 - 2.7 = 31.01.2020 |
| Число с плавающей точкой - Пустой элемент = Число с плавающей точкой | Пустой элемент приравнивается к нулю и происходит вычитание. | 2.7 - Null = 2.7 |
| Строка - Строка = Ошибка! | Вычитание строки вызывает ошибку. |
Ошибка |
| Строка - Логический тип = Ошибка! | p style="color:red;">Вычитание логического типа элемента вызывает ошибку. | Ошибка |
| Строка - Дата = Ошибка! | Вычитание даты вызывает ошибку. |
Ошибка |
| Строка - Пустой элемент = Ошибка! | Вычитание пустого элемента вызывает ошибку. |
Ошибка |
| Логический тип - Логический тип = Целое число | Логический тип превращается в целое число (0 - False, 1 - True), после чего происходит вычитание двух целых чисел. | False - True = -1 |
| Логический тип - Дата = Ошибка! | Вычитание даты вызывает ошибку. |
Ошибка |
| Логический тип - Пустой элемент = Ошибка! | Вычитание пустого элемента вызывает ошибку. |
Ошибка |
| Дата - Дата = Ошибка! | Вычитание даты вызывает ошибку. |
Ошибка |
| Дата - Пустой элемент = Ошибка! | Вычитание пустого элемента вызывает ошибку. |
Ошибка |
| Дата - Логический тип - Дата | Логический тип превращается в целое число (0 - False, 1 - True), после чего происходит вычитание целого числа из даты. | 01.01.2022 - False = 01.01.2022 |
Умножение
| Операнды | Описание | Пример |
|---|---|---|
| Целое число * Целое число = Целое число | 6 * 5 = 30 | |
| Целое число * Число с плавающей точкой = Число с плавающей точкой | 2 * 2.2 = 4.4 | |
| Целое число * Строка = Строка | Происходит дублирование строки <Целое число> раз. | 5 * 'ta' = 'tatatatata' |
| Целое число * Логический тип = Целое число | Логический тип превращается в целое число (0 - False, 1 - True), после чего происходит умножение. | 10 * False = 0 |
| Целое число * Дата = Ошибка! | Умножение даты вызывает ошибку. |
Ошибка |
| Целое число * Пустой элемент = Целое число | При умножении на пустой элемент всегда получится ноль. | 5 * Null = 0 |
| Число с плавающей точкой * Число с плавающей точкой = Число с плавающей точкой | 2.1 * 2.5 = 5.25 | |
| Число с плавающей точкой * Строка = Строка | Происходит дублирование строки <Число с плавающей точкой>, округленное до ближайшего целого раз. | 2.4 * 'foo' = 'foofoo' |
| Число с плавающей точкой * Логический тип = Число с плавающей точкой | Логический тип превращается в целое число (0 - False, 1 - True), после чего происходит умножение. | 3.14 * True = 3.14 |
| Число с плавающей точкой * Дата = Ошибка! | Умножение даты вызывает ошибку. |
Ошибка |
| Число с плавающей точкой * Пустой элемент = Целое число | При умножении на пустой элемент всегда получится ноль. | 3.14 * Null = 0 |
| Строка * Строка = Ошибка! | Перемножение двух строк вызывает ошибку. |
Ошибка |
| Строка * Логический тип = Строка | Логический тип превращается в целое число (0 - False, 1 - True), после чего происходит дублирование строки (итогом будет либо пустая строка, либо та же самая строка без изменений). | 'foo' * False = '' |
| Строка * Дата = Ошибка! | Умножение даты вызывает ошибку. |
Ошибка |
| Строка * Пустой элемент = Целое число | При умножении на пустой элемент всегда получится ноль. | 'foo' * Null = 0 |
| Логический тип * Логический тип = Целое число | Логический тип превращается в целое число (0 - False, 1 - True), после чего происходит умножение. | True * False = 0 |
| Логический тип * Дата = Дата | Логический тип работает как "маска" в логическом умножении. Итогом будет либо 01.01.0001 (минимальная дата для языка Python), либо исходная дата. | 01.01.2020 * True = 01.01.2020 |
| Логический тип * Пустой элемент = Логический тип | При умножении на пустой элемент всегда получится ноль. | True * Null = 0 |
| Дата * Дата = Ошибка! | Перемножение дат вызывает ошибку |
Ошибка |
| Дата * Пустой элемент = Целое число | При умножении на пустой элемент всегда получится ноль. | 01.01.2020 * Null = 0 |
Деление
- Простое деление:
<Выражение 1> / <Выражение 2> - Получение остатка от деления:
<Выражение 1> % <Выражение 2> - Получение целой части от деления:
<Выражение 1> // <Выражение 2>
Деление на False
Если производить деление на False, то это повлечет за собой ошибку деления на ноль.
| Операнды | Описание | Пример |
|---|---|---|
| Целое число / Целое число = Число с плавающей точкой | 4 / 2 = 2.0 | |
| Целое число / Число с плавающей точкой = Число с плавающей точкой | 5 / 2.5 = 2.0 | |
| Целое число / Строка = Ошибка! | Деление строки вызывает ошибку. |
Ошибка |
| Целое число / Логический тип = Целое число | Логический тип превращается в целое число (0 - False, 1 - True), после чего происходит деление. | 1 / True = 1 |
| Целое число / Дата = Ошибка! | Деление даты вызывает ошибку. |
Ошибка |
| Целое число / Пустой элемент = Пустой элемент | При делении на пустой элемент образуется пустой элемент. | 10 / Null = Null |
| Число с плавающей точкой / Число с плавающей точкой = Число с плавающей точкой | 12.1 / 2.5 = 4.84 | |
| Число с плавающей точкой / Строка = Ошибка! | Деление строки вызывает ошибку. |
Ошибка |
| Число с плавающей точкой / Логический тип = Целое число | Логический тип превращается в целое число (0 - False, 1 - True), после чего происходит деление. | Ошибка |
| Число с плавающей точкой / Дата = Ошибка! | Деление даты вызывает ошибку. |
Ошибка |
| Число с плавающей точкой / Пустой элемент = Пустой элемент | При делении на пустой элемент всегда образуется пустой элемент. | 3.14 / Null = Null |
| Строка / Строка = Ошибка! | Деление строки вызывает ошибку. |
Ошибка |
| Строка / Логический тип = Ошибка! | Деление строки вызывает ошибку. |
Ошибка |
| Строка / Дата = Ошибка! | Деление строки вызывает ошибку. |
Ошибка |
| Строка / Пустой элемент = Пустой элемент | При делении на пустой элемент образуется пустой элемент. | 'foo' / Null = Null |
| Логический тип / Логический тип = Целое число | Логический тип превращается в целое число (0 - False, 1 - True), после чего происходит деление. | True / True = 1 |
| Логический тип / Дата = Ошибка! | Деление даты вызывает ошибку. |
Ошибка |
| Логический тип / Пустой элемент = Пустой элемент | При делении на пустой элемент образуется пустой элемент. | True / Null = Null |
| Дата / Дата = Ошибка! | Деление даты вызывает ошибку. |
Ошибка |
| Дата / Пустой элемент = Пустой элемент | При делении на пустой элемент образуется пустой элемент. | 01.01.2020 / Null = Null |
| Пустой элемент / Число с плавающей точкой = Целое число | При делении пустого элемента образуется ноль. | Null / 3.14 = 0 |
| Пустой элемент / Целое число = Целое число | При делении пустого элемента всегда образуется ноль. | Null / 10 = 0 |
| Пустой элемент / Строка = Целое число | При делении пустого элемента всегда образуется ноль. | Null / 'foo' = 0 |
| Пустой элемент / Логический тип = Целое число | При делении пустого элемента всегда образуется ноль (даже в случае деления на False). | Null / True = 0 |
| Пустой элемент / Дата = Целое число | При делении пустого элемента всегда образуется ноль. | Null / 01.01.2020 = 0 |
Возведение в степень
| Операнды | Описание | Пример |
|---|---|---|
| <Выражение> ^,** <Число> | Возведение в степень представляет собой перемножение <Выражение> <Число> раз |
5 ^ 2 = 125 или 5 ** 2 = 125 |
<Выражение> и <Число> могут иметь типы:
- Целое число
- Число с плавающей точкой
- Логический тип
Фактор
| Операнды | Описание | Пример |
|---|---|---|
| [ - ] <Выражение> | Операция представляет собой умножение <Выражение> на целое число -1. |
-True = -1 |
Сравнение
| Операнды | Описание | Пример |
|---|---|---|
| <Выражение 1> < <Выражение 2> | Не зависимо от операндов, результатом сравнения всегда будет логический тип. | 1 < 2 = True |
| <Выражение 1> <= <Выражение 2> | Не зависимо от операндов, результатом сравнения всегда будет логический тип. | 1 <= 2 = True |
| <Выражение 1> > <Выражение 2> | Не зависимо от операндов, результатом сравнения всегда будет логический тип. | 1 > 2 = False |
| <Выражение 1> >=<Выражение 2> | Не зависимо от операндов, результатом сравнения всегда будет логический тип. | 1 >= 2 = False |
| <Выражение 1> ==<Выражение 2> | Не зависимо от операндов, результатом сравнения всегда будет логический тип. | 1 == 2 = False |
| <Выражение 1> != <Выражение 2> | Не зависимо от операндов, результатом сравнения всегда будет логический тип. | 1 != 2 = True |
Инверсия
Любые выражения, отличные от False, 0 или Null являются истиной, и следовательно, результатом будет False (для всех исключений результатом будет True).
| Операнды | Описание | Пример |
|---|---|---|
| not,не <Выражение 1> | Не зависимо от операндов, результатом инверсии всегда будет логический тип. | not 1 = False |
Конъюнкция
- Любые выражения, отличные от False, 0 или Null являются истиной.
- В связи с особенностью реализации, русский вариант конъюнкции
иобязательно должен разделяться пробелами от операндов.
| Операнды | Описание | Пример |
|---|---|---|
| <Выражение 1> and,и <Выражение 2> | Не зависимо от операндов, результатом конъюнкции всегда будет логический тип. | 'foo' and 2 = True |
Дизъюнкция
Любые выражения, отличные от False, 0 или Null являются истиной.
| Операнды | Описание | Пример |
|---|---|---|
| <Выражение 1> or,или <Выражение 2> | Не зависимо от операндов, результатом дизъюнкции всегда будет логический тип. | False or 0 = False |
Присваивание
Доступно только для типов <Объект> и <Ряд>
| Операнды | Описание | Пример |
|---|---|---|
| <Выражение 1> = <Выражение 2> | Присваивание значения, полученного в <Выражение 2> в <Выражение 1>. |