Заработать на ФОРЕКС
Среда, 24.04.2024, 06:32
Всё для прибыльной торговли на FOREX!
Главная | Добавить в избранное | Сделать стартовойфорекс советники
Меню сайта
Категории раздела
Уроки по MQL4 [14]
Лучшие брокеры
форекс бесплатно заработок в интернете Виртуальный выделенный сервер для Форекс Виртуальный выделенный сервер для Форекс Виртуальный выделенный сервер для Форекс заработок в интернете заработок в интернете
Друзья сайта
Поиск
Наш опрос
Рейтинг брокеров
Всего ответов: 2096
Термины ФОРЕКС
<a href="http://instaforex.com/ru/" rel="nofollow">Форекс портал</a>
Главная » Статьи » Уроки по MQL4 » Уроки по MQL4


MQL4 Урок 5 – Циклы и Условия (часть 1)

Циклы и УсловияMQL4 УРОК 5 – Циклы и Условия (часть 1)


Добро пожаловать на пятый урок моего курса по MQL4.

Программа, которую Вы пишите на MQL4 (или на любых других языках) выполняется сверху вниз (я имею ввиду откомплированный файл). Оператор за оператором.
Оператор – это строчка кода, которая говорит компьютеру что-либо сделать.
Например:

 

Точка с запятой является очень важной частью оператора, но обычно очень легко забывается, потому является причиной 90% всех ошибок.

Принцип выполнение кода сверху вниз имеет исключения – это циклы и условия.
Программа, которую Вы пишите, может, как человек, принимать решения в ответ на изменение обстоятельств. В таких случаях управление перепрыгивает из одной части программы в другую её часть.
Операторы, которые вызывают такие прыжки называются Операторами Контроля (контроллерами).
Контроллеры состоят из циклов и условий.

Циклы

Циклы заставляют раздел программы выполнятся определённое число раз.
Такое повторение продолжается пока какое-то условие явлется истинным (true) и прекращается как только условие становится ложным (false).
Когда цикл завершается контроль переходит следующему за циклом оператору.

В MQL4 существует два вида циклов:

1 – цикл for

Цикл for считается самым простым циклом, поскольку все его параметры собраны в одном месте.
Цикл for выполняет определённый раздел кода фиксированное число раз.
Например:

Как это работает?
Оператор состоит из ключевого слова for, за этим следуют круглые скобки, в которых указаны 3 выражения, разделённые точками с запятыми:

for(j=0; j<15; j++)

Эти три выражения – это: выражение инициализации, выражение проверки и выражение инкремента.

j = 0 – выражение инициализации
j < 15 – выражение проверки
j++ – выражение инкремента

Тело цикла – это код, который будет выполняться:

Print(j); – тело цикла.

В нашем примере тело цикла выполняется 15 раз.

Замечание: сразу после выражения for(…;…;…) точка с запятой НЕ ставится, т.к. это выражение + идущее после него тело цикла считаются единым оператором.
Кстати, в этом заключается очень распространённая ошибка – оператор ; (просто точка с запятой) называется пустым оператором (он не говорит компьютеру что-либо делать), поэтому цикл for(…;…;…); имеет пустое тело. В основном это не то, чего мы хотим.

Выражение инициализации

Выражение инициализации выполняется только один раз – когда цикл запускается. И его задача – снабдить переменную цикла начальным значением (в нашем случае – нулём).
Вы можете объявить переменную цикла вне самого цикла, как в нашем примере:

Или Вы можете объявить её прямо внутри скобок цикла:

Две предыдущие строчки кода эквиваленты за тем исключением, что области видимости (об этом в уроке про переменные) переменной цикла в обоих случаях разные. Во втором случае переменная считается объявленной только внутри самого цикла.

В цикл for можно вставить больше одного выражения инициализации, разделив их запятой:

Выражение проверки

Выражение проверки – это выражение, которое построено на операциях сравнения и логических операциях (см. пред. урок).
Проверка истинности выражения происходит после каждого прохождения цикла. Цикл продолжается, если выражение истинно, цикл завершается, если выражение ложно.
В нашем примере тело цикла будет продолжать печатать i ( Print(i); ), пока условие j<15 верно. j пробежит значения 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14, затем j станет = 15 и цикл остановится. Контроль перейдёт оператору, следующему за циклом. Выражение инкремента Выражение инкремента только так называется. Его задача – изменять переменную цикла. В нашем случае оно увеличивает j на 1. Например, в следующем примере распечатаются числа 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1: int i; for(i=15;i>0,i<;i–)

Print(i);

Выражение инкремента выполняется самым последним в списке шагов цикла.

Циклы и Условия

Схема 1. Цикл for.

Как и в выражении инициализации, в выражении инкремента можно использовать более одного выражения, разделив их запятой:

Но выражение проверки может быть только одно.

Тело цикла

Во всех предыдущих примерах в качестве тела цикла мы использовали толко один оператор. В большенстве случаев этого недостаточно.
В тело цикла можно записывать много операторов, если их все взять в фигурные скобки:

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

Оператор Break

Если при выполнении цикла for (или цикла while, или оператора switch) встречается оператор break;, то цикл терминируется, а контроль переходит оператору, следующему за циклом. PS: break – это ключевое слово.

Например:

В этом примере цикл будет нормально выполняться пока i не достигнет значения 10. Как только это произойдёт, оператор break; остановит цикл. В результате, на экран распечатаются: 0,1,2,3,4,5,6,7,8,9.

Оператор Continue

Оператор break; останавливает цикл, а оператор continue; переводит цикл на следующий шаг, игнорируя оставшиеся операторы тела цикла.
Например:

В этом примере цикл будет нормально выполняться пока i не достигнет значения 10. Как только это произойдёт, оператор continue; переведёт цикл на следующий шаг, и i=10 НЕ распечатается. В результате, на экран распечатаются: 0,1,2,3,4,5,6,7,8,9,11,12,13,14.

Важно!

Часть или даже все управляющие выражения цикла for можно опускать.
Например:

Этот цикл равносилен циклу while, в котором выражение проверки всегда истинно.

Мы Вам представим цикл while прямо сейчас:

2 – цикл while

Цикл for обычно используется, когда Вы знаете, сколько раз цикл должен быть пройден. А что делать, если это не так?
Для этого есть цикл while.
В цикле while, как и в цыкле for есть выражение проверки, но в нём нет выражений инициализации и инкремента.
Пример:

Переменная цикла была объявлена и проинициализирована ДО цикла. В отличии от цикла for, внутри скобок этого делать нельзя.
Формально i++ НЕ является выражением инкремента, но нам нужно чтобы что-то в цикле менялось, чтобы мы когда-нибудь из него выбрались.

Как же приведённый пример работает?
Оператор while содержит только выражение проверки, и он его проверяет после каждого прохождения цикла. Если оно истинно, цикл продолжится. Если оно ложно, цикл завершится и контроль перейдёт оператору, следующему за циклом.

В приведённом примере цикл будет выполняться пока i не станет равным 16. Как только это произойдёт, проверка условия i<15 вернёт false, и цикл завершится.

Схема 2. Цикл while.

Я уже говорил, что цикл while похож на цикл for. Вот их сходства:

1. В обоих можно использовать операторы break; и continue; .
2. В обоих тело цикла может быть одиночным или составным. Во вотром случае операторы тела цикла нужно брать в фигурные скобки.
3. Аналогом for(;;) является while(true).




Категория: Уроки по MQL4 | Добавил: Profit (27.09.2013)
Просмотров: 5510 | Теги: курс по MQL4, Оператор Continue, Циклы и Условия, Цикл for, Оператор Break | Рейтинг: 5.0/1

Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Наш выбор брокеров
форекс скачать форекс бесплатно заработать на форекс форекс советники

форекс стратегии


VPS для Форекс
vps сервер для форекс
Заработать на ФОРЕКС
памм инвестирование
Форекс обзор
Наша кнопка
Установите нашу кнопку себе на сайт

Форекс советники

Торговые сессии
Котировки Sell/Buy
Журнал
FOREX MAGAZINE
Форма входа
Статистика
vps для форекс vps для форекс сервер для форекс
Онлайн всего: 1
Гостей: 1
Пользователей: 0
Торговля на финансовых рынках сопряжена с риском. Все материалы носят исключительно ознакомительный характер. Администрация сайта не несет ответственности за принимаемые Вами решения.
Copyright Profit © 2010 - 2024

Облако тегов: форекс для начинающих форекс для начинающих видео форекс для новичков форекс для тебя форекс анализ технический анализ форекс прогноз форекс аналитика форекс видео брокеры форекс лучшие брокеры форекс надежный брокер форекс Волновой форекс анализ и прогноз Форекс аналитика от Trading Central советники форекс бесплатно советники форекс бесплатные советники форекс vps для форекс форекс сервер ПАММ памм счета волновой анализ форекс волновой анализ рынка форекс волновой анализ волновой анализ рынка волновой анализ эллиотта волновой анализ элиота аналитика рынка форекс аналитика форекс форекс аналитика прогнозы аналитика форекс на каждый день аналитика форекс на сегодня trading central заработок на форекс лучшие советники форекс форекс советники бесплатно Форекс советник аналитика форекс прогноз ежедневная форекс аналитика форекс новости аналитика прибыльные советники форекс советники форекс скачать торговый советник форекс советники форекс отзывы советники форекс скачать бесплатно советники форекс 2019 лучшая аналитика форекс технический анализ форекс анализ рынка форекс Анализ Форекс фундаментальный анализ форекс свечной анализ форекс нелинейный волновой анализ волновой анализ эл технический анализ рынка форекс прогноз форекс прогноз доллара форекс прогноз рынка форекс прогноз курса форекс прогноз форекс на сегодня прогноз евро форекс прогноз валют форекс графический анализ форекс свечной анализ на форекс Фундаментальный прогноз валюты форекс анализ форекс на сегодня прогноз евро доллар форекс технический анали прогноз форекс 2017 волновой анализ usd прогноз форекс евро анализ фигур форекс волновой анализ сегодня анализ форекс евро доллар форекс анализ евро волновой анализ доллар прогноз доллара на форекс сегодня прогноз курса доллара форекс рынки сегодня волновой анализ артем гелий форекс прогноз прогноз форекс гелия волновой анализ павелко анализ форекса сегодня волновой анализ форекс на сегодня анализ рынка форекс на сегодня роман павелко волновой анализ прогноз форекс гелий волновой анализ онегин технический анализ рынка фор прогнозы на золото форекс волновой анализ рынка форек прогноз фо анализ форекс книги прогноз курса валют на форекс доллар на форекс прогноз сегодня форекс прогноз сентябрь анализ валют форекс анализ графиков форекс ежедневный анализ форекс