Пропустить к содержанию
Руководство Varlig
Главная страница Varlig

Операторы, сравнения и условия

На этой странице описаны символы и слова, объединяющие значения: арифметика, порядок действий, сравнения с результатами true или false, логические и побитовые операции. Обратитесь сюда, если получаете неожиданное число или хотите поручить заметке проверку — например, укладываетесь ли вы в бюджет.

Арифметика

Оператор Варианты записи Пример Результат
Сложение +, plus £12.50 + £4.30 £16.80
Вычитание -, −, minus £20 - £4.50 £15.50
Умножение *, ×, times, multiplied by, запись множителей рядом 3 × £4.50, 2(3 + 4) £13.50, 14
Деление /, ÷, divided by £60 / 4 £15.00
Возведение в степень ^, **, to the power of, raised to, exponent 2 ** 3, 2 raised to 10 8, 1,024
Остаток mod, % (между двумя числами) 50 mod 6, 50 % 6 2
Квадратный корень √, sqrt(...), square root of √144 12
Квадрат / куб ², ³ 3³ 27
Факториал !, factorial(...) 5!, factorial(5) 120

Арифметика работает с числами без единиц, денежными суммами и величинами с единицами. Результат сохраняет валюту или единицу:

calc
£12.50 + £4.30 даёт £16.80
3 * £4.50 даёт £13.50
£1,000 * 1.05^3 даёт £1,157.63
6 times 7 даёт 42
100 minus 37.5 даёт 62.5

Неявное умножение — запись без *, например 2(3 + 4) или 2π. Раздел Неявное умножение объясняет, когда это допустимо.

Порядок операций

Вычисления следуют обычному школьному порядку действий:

  1. Скобки.
  2. Факториалы, например 5!.
  3. Степени, справа налево: 2^3^2 — это 2^9, то есть 512.
  4. Унарный минус, после возведения в степень: -2^2 равно −4, а (-2)^2 равно 4.
  5. Умножение, деление и mod, слева направо.
  6. Сложение и вычитание, слева направо.

Пропуск * не меняет порядок: в 2x^2 сначала возводится в квадрат x, затем результат удваивается, как в формуле из учебника.

Поэтому умножение выполняется до соседнего сложения — об этом легко забыть при подсчёте счёта:

calc
£85 - £12.50 * 2 даёт £60.00
(£85 - £12.50) * 2 даёт £145.00
£120 / 4 / 2 даёт £15.00

Если сомневаетесь, добавьте скобки. Они не помешают и сделают заметку понятнее при следующем чтении.

Знак квадратного корня относится к значению сразу после него, поэтому √9 + 16 равно 19. Чтобы извлечь корень из суммы, заключите всё выражение в скобки:

calc
√(9 + 16) даёт 5

Остатки от деления

Оператор mod возвращает остаток от деления. Он удобен при распределении предметов по группам:

calc
eggs = 50
eggs mod 6 даёт 2
floor(eggs / 6) даёт 8

Из пятидесяти яиц получится восемь полных коробок по шесть, и ещё два яйца останутся.

Знак % между числами тоже означает остаток, даже без пробела перед ним: 50 % 6 и 50% 6 равны 2. Если после % ничего нет, он обозначает процент (50%); см. Проценты.

Факториалы

Поставьте ! сразу после числа, имени или закрывающей скобки, чтобы вычислить факториал:

calc
5! даёт 120
runners = 4
runners! даёт 24
3! + 2 даёт 8
5!=4 даёт true

Факториал вычисляется раньше соседней степени: 2^3! — это 2⁶, то есть 64. Символы ! и = подряд по-прежнему означают «не равно», как в последней строке. factorial(5) даёт тот же результат, что и 5!.

Сравнение

Операторы ==, !=, <, <=, > и >= сравнивают два значения и возвращают true или false. Они работают с числами без единиц, суммами в одной валюте и однородными величинами, даже если единицы различаются:

calc
budget = £400
spent = £365
spent <= budget даёт true
spent == budget даёт false
spent != budget даёт true
5 km == 5,000 m даёт true
90 min >= 1.5 hours даёт true
2 kg < 2,500 g даёт true

Перед сравнением единицы приводятся к общему виду, поэтому 1 mile > 1.5 km даёт true. Сравнение разнородных величин, например килограммов и метров, вызывает ошибку incompatible units.

Ограничения сравнений

  • Цепочки. Запись 5 < x < 10 не поддерживается. Объедините два сравнения: 5 < x && x < 10.
  • Символы Unicode. Знаки ≠, ≤ и ≥ не распознаются. Используйте !=, <= и >=.
  • Даты. Две даты нельзя сравнить через < или >. Вычтите одну из другой и сравните разницу с длительностью:
calc
deadline = 30 September 2026
booked = 14 September 2026
deadline - booked даёт 2 weeks 2 days
deadline - booked >= 7 days даёт true

Логические операторы

Объединяйте сравнения через && (оба должны быть истинны) или || (хотя бы одно должно быть истинно). Между двумя сравнениями слова and и or работают аналогично.

calc
distance = 5 km
run time = 27 min
distance >= 5 km && run time < 30 min даёт true
distance >= 10 km || run time < 25 min даёт false
distance >= 10 km or run time < 30 min даёт true

Значения true и false можно записывать непосредственно и объединять через && и ||:

calc
true || false даёт true
true && false даёт false

Некоторые привычные формы не поддерживаются:

  • Слова and и or работают только между сравнениями. Запись true and false не подходит; используйте true && false.
  • Оператора отрицания нет: not true и !true не работают. Вместо этого сравните с false, например (spent > budget) == false.
  • Слово or не задаёт запасное значение при ошибке: 1/0 or 5 не вернёт 5.

Сравнения в условных выражениях

Сравнения особенно полезны внутри if … then … else …, где от условия зависит выбранное значение:

calc
basket = £34.50
if basket >= £40 then £0 else £3.99 даёт £3.99

В разделе Условия приведён полный синтаксис, включая else if, постфиксные if и unless, а также присваивание внутри ветви.

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

Для целых чисел доступны побитовые операторы & (И), | (ИЛИ), xor (исключающее ИЛИ), << (сдвиг влево) и >> (сдвиг вправо). Также работают прописные слова AND, OR и XOR. Эти операции полезны прежде всего в программировании, например при работе с цветами и правами доступа к файлам.

calc
12 & 10 даёт 8
12 | 10 даёт 14
12 xor 10 даёт 6
12 AND 10 даёт 8
1 << 10 даёт 1,024
1024 >> 3 даёт 128

Результат выводится обычным числом. Добавьте to binary, in hex или to octal, чтобы увидеть его в нужной системе счисления:

calc
0o644 | 0o111 to octal даёт 0o755
colour = 0xFF8800
(colour >> 8) & 0xFF даёт 136

Сдвиги выполняются раньше &, | и xor, но скобки делают сложные строки, например пример с цветом, намного понятнее.

Всё вместе

Проверка месячного бюджета с арифметикой, сравнениями и логикой:

calc
# September budget
take home = £2,400
rent = £1,050
bills = £230
groceries = 4 * £65 даёт £260.00
left over = take home - rent - bills - groceries даёт £860.00
rent / take home as % даёт 43.75%
left over > £500 даёт true
left over > £500 && rent <= take home * 45% даёт true

В groceries умножение выполняется до сложения, а в left over вычитание идёт слева направо. Последние две строки проверяют бюджет: результат остаётся true, пока остаток больше £500, а аренда не превышает 45% дохода после налогов. Как только любое из условий перестаёт выполняться, результат меняется на false.