MQL5 – Операции и выражения

Всем привет! Мы продолжаем изучать язык программирования mql5 и сегодня познакомимся с операциями и выражениями. Это – азы программирования на языке mql5 или любом другом языке.

Предыдущие уроки

  • MQL5 Урок 1 – Редактор кода, События, Устройство mql-программ
  • MQL5 Урок 2 - Типы переменных

Операции в языке mql5 условно можно разделить на 4 типа:

  • операции присваивания;
  • операции отношения;
  • арифметические операции;
  • логические операции.

Операции присваивания

Сама операция присваивания выглядит следующим образом:

y = x;

Например:

int y = 9, x=3;

y = x;

В данном случае переменной y было присвоено значение переменной x, то есть y теперь равно 3.

Тем не менее, в языке mql5 существуют несколько операций, которые объединяют операцию присваивания и математические операции:

  • Увеличение значения переменной у на x: у += x;
  • Уменьшение значения переменной y на x: y -= x;
  • Умножение значения переменной y на x: y *= x;
  • Деление значения переменной y на x: y /= x;
  • Остаток от деления значения переменной y на x: y %= x;
  • Сдвиг двоичного представления y вправо на x бит: y >>= x;
  • Сдвиг двоичного представления y влево на x бит: y <<= x;
  • Побитовая операция И двоичных представлений y и x: y &= x;
  • Побитовая операция ИЛИ двоичных представлений y и x: y |= x;
  • Побитовая операция исключающее ИЛИ двоичных представлений y и x: y ^= x;

Побитовые операции применяются крайне редко, в отличие от первых пяти операций.

Операции отношения

Как мы помним из предыдущих уроков, логическое значение "ложь" или false представлено в виде целого нулевого значения, тогда как "истина" или true – любое ненулевое значение. Все операции отношения возвращают либо "ложь", либо "истина". Вот эти операции:

  • Истина, если a равно b: a == b;
  • Истина, если a меньше b: a < b;
  • Истина, если a больше b: a > b;
  • Истина, если a меньше или равно b: a <= b;
  • Истина, если a больше или равно b: a >= b;

Следует обратить внимание, что не стоит сравнивать два вещественных числа на равенство друг другу. Очень часто два вроде бы одинаковых числа могут оказаться неравными из-за разницы значения в каком-либо последнем знаке после запятой. Связано это, как вы помните из прошлых уроков, с особенностями хранения таких чисел в памяти компьютера. Поэтому для корректного сравнения двух таких чисел нужно сравнивать нормализованную разницу этих чисел с нулем.

Арифметические операции

К арифметическим относятся аддитивные и мультипликативные операции:

  • Сумма величин: g = x + 13;
  • Вычитание величин: m = h - 9;
  • Изменение знака: y = - y;
  • Умножение величин: e = 6 * j;
  • Частное от деления: d = t / 4;
  • Остаток от деления: div_ost = t % 24;
  • Увеличить значение переменной на единицу: p++;
  • Уменьшить значение переменной на единицу: s--;

Стоит учесть, что операции увеличения или уменьшения значения переменной не могут применяться в выражениях:

int k=16; // верное выражение

z++; // верное выражение

int x=(m++)*4; // неверное выражение

Порядок выполнения арифметических операций ничем не отличается от обычной школьной математики. В выражении:

int x = z + b * a;

сначала будет выполнено умножение, а затем суммирование. Те же правила выполняются и для скобок.

Логические операции

Логических операций всего три: логическое "не", логическое "и" и логическое "или". Так же, как и операции отношения, результат логической операции имеет значения true или false.

  • Логическое "не". Истина, если a не равно b: a != b;
  • Логическое "или". Истина, если a или b имеют ненулевое значение: a || b;
  • Логическое "и". Истина, если a и b имеют ненулевое значение: a && b;

Стоит заметить, что к логическим выражениям применяется схема так называемой "короткой оценки". Вычисление выражения прекращается в тот момент, когда можно точно оценить результат выражения. Например:

bool a = false, b = true;

a && b;

В этом случае, так как a уже имеет значение false, все выражение уже точно будет false и дальнейший расчет проводить бессмысленно. Поэтому в подобных случаях в начало операции стоит ставить менее сложно вычисляемые значения, чтобы ускорить тем самым расчеты.

На этом все, всем пока!

С уважением, Дмитрий аkа Silentspec
Tlap.io