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

КОТИРОВКИ

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

ОПРОС

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

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

Архив

Ноябрь 2017 (56)
Октябрь 2017 (80)
Сентябрь 2017 (82)
Август 2017 (68)
Июль 2017 (50)
Июнь 2017 (49)
Официальный представитель Forex4you - форекс для Вас

Программирование MQL4: Урок 6 – Циклы и Условия (часть 2)

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

Добро пожаловать на шестое занятие моего курса.
Надеюсь, что Вам понравились предыдущие уроки.

Мы уже поговорили про циклы. Теперь Вы знаете, что циклы – это один из двух способов изменить обычный порядок выполнения программы сверху вниз. Второй способ – это условия.
Условия могут провоцировать однократный прыжок в другую часть программы, в зависимости от значения некоторого выражения.

1 – Оператор if

Оператор if является самым простым среди операторов условия.
Пример:

if( x < 100 )
Print("hi");

После if идут круглые скобки, в которых записывается выражение проверки (в данном случае x < 100). Если результат выражение проверки является истиной (true), то тело оператора if будет выполнено. В данном случае тело состоит из одного оператора – Print(“hi”); . А если результат выражения проверки является ложью (false), то тело оператора if НЕ выполняется, а контроль переходит оператору, следующему за телом if.

post-798-0-82830000-1346244997

Схема 1. Оператор if.

Несколько операторов в теле if

Точно, как и в циклах, тело оператора if может состоять из нескольких операторов, взятых в фигурные скобки.
Пример:

if(current_price==stop_loss)
{
Print("you have to close the order");
PlaySound("warning.wav");
}

Обратите внимание на сумбол == и выражении проверки. Это одна из операций сравнения, которые Вы изучали в уроке 4 “Операции и Выражения”.
Отсюда происходит очень много ошибок – когда Вы забываете символ ==, и вместо него используете символ операции присваивания =.

Вложенные циклы и условия

Циклы и условия можно вкладывать друг в друга.
Пример:

for(int i=2; i<10; i++)
 if(i%2==0) 
{ 
Print("It's definetly not a prime number");
 PlaySound("warning.wav"); 
}

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

2 – Оператор if … else

Оператор if позволяет что-то сделать, если определённое условие выполняется. Допустим, мы хотим сделать что-то другое, если это условие не выполнено. Для этого есть оператор if … else. Он состоит из оператора if и его тела, после чего идёт ключевое слово else и его тело.
Пример:

if(current_price>stop_loss)
Print("It’s not too late to stop, please stop!");
else
Print("you're playing well today!");

post-798-0-83000700-1346244999

Схема 2. Оператор if … else.

Вложенные операторы if…else

Операторы if … else и оператор if можно как угодно вкладывать друг в друга.
Пример:

if(current_price>stop_loss)
Print("It’s not too late to stop, please stop!");
if(current_price==stop_loss)
Print("It’s time to stop!");
else
Print("you're playing well today!");

Есть опасность, связанная с вложенными операторами if … else. По невнимательности Вы можете случайно связать какой-то else не с тем if.
Чтобы избежать подобных ошибок, можно сделать одно из двух:

1 – всегда брать пары if … else в фигурные скобки.
Вот так:

if(current_price>stop_loss)
{
Print("It’s not too late to stop, please stop!");
if(current_price==stop_loss)
Print("It’s time to stop!");
else
Print("you're playing well today!");
}

2 – Если Вам не подходит 1й вариант (слишком много этих if … else, или Вам просто лень), то просто следуйте правилу: связывать else с ближайшим if.

3 – Оператор switch

Если у Вас есть большое дерево условий, и все условия зависят от одного параметра, то можно применить оператор switch.
Пример:

switch(x)
{
case 'A':
Print("CASE A");
break;
case 'B':
case 'C':
Print("CASE B or C");
break;
default:
Print("NOT A, B or C");
break;
}

После ключевого слова switch идут круглые скобки. Внутри этих скобок находится switch-константа. Внутри фигурных скобок находятся case-константы – это проверяемые условия switch-константы. Они записываются в виде case <значение>: <что делать>. <Значение> может быть integer, character или неизменным выражением. Неизменность выражения означает, что оно не зависит от переменных. Например, выражение X+Y не является неизменным.

Как же работает указанный пример?
Оператор switch сравнивает switch-константу поочерёдно со всеми case-константами.

В случае x==’A’ программа напечатает “CASE A” и оператор break; прервёт оператор switch. Контроль передастся за пределы блока switch.

В случае x==’B’ или x==’C’, программа напечатает “CASE B or C”. Это потому что нет оператора break; в case ‘B’: .

В случае x!= ни одной из case-констант, оператор switch выполнит блок default: и напечатает “NOT A, B jr C”.

post-798-0-24181300-1346245002

Схема 3. Оператор switch.


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


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