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

КОТИРОВКИ

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

Архив

Февраль 2018 (35)
Январь 2018 (43)
Декабрь 2017 (85)
Ноябрь 2017 (98)
Октябрь 2017 (81)
Сентябрь 2017 (82)
Официальный представитель Forex4you - форекс для Вас

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

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

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

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

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.


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


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