Всем привет! Мы продолжаем изучать язык программирования 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