Главная Контакты

КОТИРОВКИ

Котировки от Forex4You

ОПРОС

Как Вы торгуете на форекс?

Самостоятельно анализирую рынок и торгую
Пользуюсь индикаторами/советниками
Пользуюсь/копирую советы других трейдеров
Использую роботы-советники

Официальный представитель Forex4you - форекс для Вас

Программирование MQL4: Урок 4 – Операции и выражения в MQL4

26-04-2014, 18:13 | Раздел: publ, Курс программирования MQL4 | Просмотров: 809

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

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

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

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

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

x = (y*z)/w

Здесь:

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

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

x = (y*z)/w;

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

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

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

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

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

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

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

1

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

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

A=(B++)*5;

Но можно так:

A++;
B=A*5;

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

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

Например:

A = B * C;

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

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

2

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

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

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

Например:

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

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

3

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

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

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

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

4

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

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

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

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

5

Замечание: Оба операнда, учавствующих в побитовых операциях, должны быть типа 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;
А вообще, приоритеты – один из хороших козырей в IOCCC – International Obfuscated C Code Contest — «международный конкурс запутанного кода на Си».


Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь. Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.


Форекс каталогФорекс каталог Форекс рейтинг