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

КОТИРОВКИ

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

Архив

Сентябрь 2018 (20)
Август 2018 (40)
Июль 2018 (35)
Июнь 2018 (40)
Май 2018 (35)
Апрель 2018 (35)
Официальный представитель Forex4you - форекс для Вас

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

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

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

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

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

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

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

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 — «международный конкурс запутанного кода на Си».


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