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

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


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


MQL5 программирование: Операции и выражения

Операции в языке 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.com

AMarkets

Уроки по MQL5 , , ,