Обзор управляющих инструкций

Управляющие инструкции предназначены для организации нелинейного выполнения других инструкций, включая объявления, выражения и вложенные управляющие инструкции. Их можно условно разделить на 3 вида:

  • инструкции повторения, или циклы;
  • условные инструкции для выбора одной из нескольких веток альтернативных действий;
  • инструкции перехода, меняющие при необходимости стандартное поведение инструкций первых двух видов.

Инструкции повторения и выбора состоят из заголовка (у каждого — свой синтаксис) и последующей управляемой инструкции. Если в управляемой части необходимо указать несколько инструкций, в ней используется составная инструкция. Эта особенность недоступна для инструкций перехода. Согласно своему названию, они лишь перемещают внутренний указатель, по которому программа определяет, какую именно инструкцию в данный момент надо выполнить, по особым правилам, которые мы рассмотрим в следующих разделах.

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

Вы можете использовать выбор внутри циклов или наоборот, причем уровень вложенности не ограничен. Вместе с тем, слишком большой уровень вложенности делает программу трудно понятной для программиста. Поэтому рекомендуется выделять (переносить) блоки кода в функции (в одну или несколько): внутри каждой функции имеет смысл поддерживать уровень вложенности не более 2-3.

В MQL5 поддерживаются следующие инструкции повторения:

  • цикл for
  • цикл while
  • цикл do

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

К условным инструкциям относятся:

  • выбор с помощью if
  • выбор с помощью switch

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

Наконец, переходы осуществляются операторами:

  • break
  • continue
  • return

Далее мы опишем подробно каждый из них.

В отличие от C++, MQL5 не имеет инструкции go to.