Урок №6 Циклы и Условия (часть 2)

Уроки

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

           Условия могут провоцировать однократный прыжок в другую часть программы, в зависимости от значения некоторого выражения. Рассмотрим три простых оператора условия: оператор if, оператор if … else, оператор switch.

Оператор 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 и все операторы внутри его тела считаются как один оператор.

Оператор 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.

Оператор 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.

              На этом наш урок, который состоял из 2-х частей завершен. Надеюсь, что и эта тема была не очень сложной. В  следующем уроке мы рассмотрим не менее интересную тему — функции языка MQL4.

Добавить комментарий