home

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

Что такое операции и выражения?

На самом деле Вы прекрасно знаете, что такое операции. Если я Вам скажу, что +,-,*,/ — элементарные арифметические операции, Вы очень быстро вспомните, что означает слово "операция".

Я уже слышу, как Вы говорите: "О! Так я же знаю, что такое операции, расскажи, что же такое тогда выражения?"

Идентификаторы (Вы их ещё помните? Если нет, то гляньте в урок Синтаксис) совместно с Операциями образуют Выражения.

Запутались? Рассмотрим это на примере:

x = (y*z)/w

Здесь:

x,y,z и wидентификаторы.
=,* и / операции.
А вся строчка — это выражение.

Если в конце выражения поставить символ ";", то оно превращается в оператор:

x = (y*z)/w;

Комбинации выражений формируют оператор.

Комбинации операторов формируют функцию.

Комбнации функций формируют программу.

В оставшейся части урока мы будем говорить про типы операций в MQL4.

Начнём с элементарных математических операций:

 

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

В MQL4 существует 9 арифметических операций:

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

Замечание: Нельзя комбинировать операция инкремента и декремента с другими выражениями.

Например, следующая строчка некорректна:

A=(B++)*5;

Но можно так:

A++;
B=A*5;


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

Смысл любого выражения в формировании результата, а затем присваивания этого результата левому операнду.

Например:

A = B * C;

Здесь мы умножаем B на C и присваиваем результат A.

В MQL4 существует 11 операций присваивания:

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

 

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

Операции сравнения сравнивают два значения (два операнда) и возвращают либо True, либо False.

Это как ответить на вопрос "Вася выше Саши ? Да/Нет ?"

Например:

4 == 4;  // true
4 < 4;   // false
4 <= 4   // true;

В MQL4 существует 6 операций сравнения:

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

 

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

Логические операторы заимствованы из Булевой алгебры, которая суть манипулирование верностью концептуальных абстрактных высказываний, не вдаваясь в истинный смысл концепций. Значние верности в Булевой алгебре может принимать лишь два значения: верно или неверно (true OR false).

В MQL4 логические операции также называются Булевыми операциями.

В MQL4 используются три основных логических операции:

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

Замечание: Логические операции выполняются слева направо. Поэтому, если в операторе A && B; левый операнд равен нулю, то правый операнд даже не рассматривается. Аналогично, если в операторе A || B; левый оператор не равен нулю, то правый операнд даже не рассматривается.

 

5 — Битовые операции

Битовые (или побитовые) операции очень похожи на логические операции, но они работают на более низком уровне — бинарном уровне представления данных.

В MQL4 доступны следующие битовые операции:

Битовые операции в MQL4

Замечание: Оба операнда, учавствующих в побитовых операциях, должны быть типа int.

 

6 — Другие операции

Есть несколько операций в MQL4, которые не входят ни в одну из предыдущих категорий:

  • Операция индексирования массива []
  • Операция вызова функции ()
  • Операция разделения аргументов функций , (запятая)


Мы подробнее узнаем про массивы и функции в следующем уроке. Так что просто запомните эти операции, как "Другие операции".

Приоритеты операций. Моё любимое 😉

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

x + y / 100
x + (y / 100) //недвусмысленно, рекомендую писать так

Используя составные операторы необходимо быть точным и указывать порядок выполнения операций явно с помощью скобок (). Такая практика сделает Ваш код более лёгким для прочтения и редактирования. *

Далее следует список операций. Чем выше операция в списке, тем выше её приоритет. Операции с более высоки приоритетом выполняются раньше операций с более низким приоритетом. Если выбор стоит между двумя одинаковыми операциями, то следует помнить, что все бинарные операции (те, в которых учавствуют два операнда) выполняются слева направо, а все операции присваивания — наоборот — справа налево.

Оставляю список на английском. Заодно будете знать, как называются операции на 'родном' языке 😉

() Function call From left to right

[] Array element selection

! Negation From left to right

~ Bitwise negation

— Sign changing operation

* Multiplication From left to right

/ Division

% Module division

+ Addition From left to right

— Subtraction

<< Left shift From left to right

>> Right shift

< Less than From left to right

<= Less than or equals

> Greater than

>= Greater than or equals

== Equals From left to right

!= Not equal

& Bitwise AND operation From left to right

^ Bitwise exclusive OR From left to right

&& Logical AND From left to right

|| Logical OR From left to right

= Assignment From right to left

+= Assignment addition

-= Assignment subtraction

*= Assignment multiplication

/= Assignment division

%= Assignment module

>>= Assignment right shift

<<= Assignment left shift

&= Assignment bitwise AND

|= Assignment bitwise OR

^= Assignment exclusive OR

, Comma From left to right

Обожаю приоритеты, потому что их почти никто никогда наизусть не помнит. Достаточно выучить парочку и ты уже царь среди равных тебе программистов.

Например, можно спросить результат такого оператора ++ i ++; (но это уже больше к C/C++, где есть правый и левый инкремент). Или такого: i +++ i;

До встречи на следующем уроке!

Журнал FX Review