Как заработать деньги. Проект сам себе финансист.
апрель 2011
пн вт ср чт пт сб вс
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30
Главная » » »

Оператор цикла for

В предыдущей статье мы узнали об операторе цикла while. Этот оператор используется, когда необходимо повторить некоторую последовательность действий несколько раз (или ни одного). Подобную задачу можно решить также с помощью другого оператора цикла - оператора for.

Формат оператора цикла for:

 for ( выражение1; выражение2; выражение3 )
оператор;

Выполнение оператора цикла for начинается с вычисления "выражения1". Это своего рода инициализация цикла, которая выполняется только один раз и предшествует последующим действиям.

После этого вычисляется "выражение2". Если оно истинно, то выполняется "оператор". Далее вычисляется "выражение3". Первая итерация цикла закончена. Вторая итерация начинается опять с вычисления "выражения2". Если оно истинно, то выполняется "оператор". Далее опять вычисляется "выражение3" и так продолжается до тех пор, пока "выражение2" будет истинным. Если же уже на первой итерации "выражение2" будет ложным, то цикл не исполнится ни разу.

Если вникнуть в логику работы оператора цикла for, то можно заметить, что она полностью соответствует следующему фрагменту кода с использование оператора цикла while:

 выражение1;
while ( выражение2 )
{
оператор;
выражение3;
}

В предыдущей статье мы рассмотрели пример использования оператора цикла while:

 int i = 0;
while ( i < 9 )
{
Print( i );
i++;
}
Print ("Done");

Этот пример можно переписать с использованием оператора цикла for:

 int i;
for (i = 0; i < 9; i++)
Print( i );
Print ("Done");

Не будет ошибкой, если любое из трех или все три выражения в операторе цикла for будут отсутствовать, Тем не менее разделяющие их точки с запятыми (;) опускать нельзя. Если отсутствует "выражение2", то принимается, что оно всегда равно true.

"Выражение1" и "выражение3" могут состоять из нескольких выражений, объединенных запятой. В этом случае вычисляется каждое из выражение, причем порядок вычисления будет слева направо:

 for (i = 0, j = 0; i < 9; i++)
Print ( "i = ", i, " j= ", j );

В следующей статье будет рассказано какими способами можно выйти из цикла (оператор break) или досрочно завершить очередную итерацию (оператор continue).



Автор статьи: Андрей Ведихин

Хомячковый рай. Уйти и потеряться:

Условный оператор if-else

В данной статье мы вернемся к рассмотрению нашего первого советника и расскажем об условном операторе if-else, который используется в функции init().

 int init()
{
//----
if (iMA(NULL, 0, MAPeriod, 0, MODE_EMA, PRICE_CLOSE, 0) > Close[0])
CurrentState = STATE_SHORT;
else CurrentState = STATE_LONG;

MyOrderTicket = 0;
//----
return(0);
}

Формат условного оператора if-else:

 if (выражение)
первый_оператор
else
второй_оператор

Принцип работы оператора: вычисляется значение выражения в скобках; если оно равно true, то выполняется "первый_оператор", в противном случае - "второй_оператор".

В нашем первом эксперте в функции init() есть такая строчка:

 if (iMA(NULL, 0, MAPeriod, 0, MODE_EMA, PRICE_CLOSE, 0) > Close[0])
CurrentState = STATE_SHORT;
else CurrentState = STATE_LONG;

В этой строчке вычисляется выражение iMA(NULL, 0, MAPeriod, 0, MODE_EMA, PRICE_CLOSE, 0) > Close[0]. Забегая вперед, скажу, что в этом выражении сравнивается значение экспоненциальной скользящей средней по цене закрытия с периодом, определенным внешней переменной MAPeriod, и цена закрытия текущего бара ( Close[0] ).

Если значение скользяйшей средней больше цены закрытия, то выполняется первый оператор:

 CurrentState = STATE_SHORT; 

Если - меньше, то второй:

 CurrentState = STATE_LONG; 

Если в качестве оператора есть необходимость выполнить сразу несколько операторов, то можно использовать составной оператор, т. е. заключить в фигурные скобки необходимые нам операторы. При этом после закрывающей фигурной скобки точка с запятой уже не ставится.

Пример использования составного оператора можно найти и в нашем эксперте:

 if (!IsTesting()) 
return(MarketInfo(s, MODE_LOTSIZE)*MarketInfo(StringSubstr(s, 0, 3)+"USD",
MODE_BID)/AccountLeverage());
else
{
p = iClose(StringSubstr(s, 0, 3)+"USD", Period(),
iBarShift(StringSubstr(s, 0, 3)+"USD", Period(), CurTime(), true));
return(MarketInfo(s, MODE_LOTSIZE)*p/AccountLeverage());
}

Если у нас нет необходимости в выполнении второго оператора (в случае, если выражение в круглых скобках не равно true), то часть else можно опустить:

 if (выражение)
первый_оператор

Пример из нашего эксперта:

 if (s == "CHFJPY")
{
p = iClose("USDCHF", Period(), iBarShift("USDCHF", Period(), CurTime(), true));
return(MarketInfo(s, MODE_LOTSIZE)/(AccountLeverage()*p));
}

Если несколько операторов if-else вложены друг в друга, а часть операторов имеет пропущенную часть else, то else всегда связывается с ближайшим предыдущим оператором if в том же блоке, не имеющим части else.

Обычно операторы в коде эксперта выполняются последовательно - один за другим. Тем не менее часто требуется изменить последовательность их выполнения в зависимости от каких-то условий. В данной статье я рассмотрел один из способов изменения этой последовательности: условный оператор if-else.

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



Автор статьи: Андрей Ведихин

Хомячковый рай. Уйти и потеряться:


Есть что сказать? Не стесняйтесь!






Последние статьи:

Выгодные «исламские счета» для трейдеров Форекс Выгодные «исламские счета» для трейдеров Форекс Таким образом, вне зависимости от стиля работы стоит использовать «исламские счета» и сотрудничать с компаниями, которые не берут с трейдеров swap-комиссии. ..
2014-09-29
Стоит ли покупать чужие торговые сигналы и прогнозы? Стоит ли покупать чужие торговые сигналы и прогнозы? И все же основным нашим советом станет отказ от покупки торговых сигналов и прогнозов. Куда лучше научиться анализировать валютный рынок и думать всегда только своей головой. ..
2015-02-12

Видео по теме:




В мире больших денег

  • Самые богатые люди
    планеты. Ежегодные рейтинги FORBS. Истории успеха признаных финансовых гуру
  • Самые дорогие вещи:
    Часы, автомобили, ноутбуки стоимотью в десятки и сотни тысяч долларов. Рубрика "Чтоб я так жил"
  • Денежные прогнозы
    Что покупать и что продавать? Периодические прогнозы цен на иностранные валюты, акции крупнейших компаний и драгоценные металлы

ВКонтакте с деньгами

УГОЛОК АДМИНИСТРАТОРА