MQL5 – Операторы

Всем привет! В этом уроке мы разберем операторы языка mql5. Без этих знаний сложно описать даже самый простейший алгоритм.

Операторы языка MQL5 представляют собой элементы программы, которые контролируют способ и порядок обработки объектов. Они описывают некоторые алгоритмические действия, которые необходимо выполнить для решения задачи, поставленной перед программистом. По сути, программа и состоит из последовательности таких вот операторов. Между собой многие операторы разделяются точкой с запятой.


Предыдущие уроки


MQL5 программирование: Операторы

Сегодня мы познакомимся со следующими операторами:

  • Составной оператор {};
  • Оператор-выражение (;);
  • Оператор return;
  • Условный оператор if-else;
  • Условный оператор ?:
  • Оператор выбора switch;
  • Оператор break.

Составной оператор

Составной оператор (блок) состоит из одного или большего числа операторов любого типа, заключенных в фигурные скобки { }. После закрывающейся фигурной скобки не должно быть точки с запятой (;). Например:

if(x==0)
{
    Print("invalid position x = ",x);
    return;
}

Внутри фигурных скобок может быть заключено любое число операторов.

Оператор-выражение

Любое выражение, заканчивающееся точкой с запятой (;), является оператором. Например, оператор присваивания:

Идентификатор = выражение;

Пример:

x=3;
y=x=3;
bool equal=(x==y);

В выражении оператор присваивания может присутствовать много раз. В этом случае обработка выражения ведется справа налево.

Оператор возврата return

Оператор return прекращает выполнение текущей функции и возвращает управление вызвавшей программе. Результат вычисления выражения возвращается вызываемой функции.

int CalcSum(int x, int y)
{
    return(x+y);
}

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

void MyFunction()
{
    Print("Hello!");
    return;
}

Конкретно в этом примере оператор return можно удалить, потому что тип функции void не возвращает значений, а точка выхода из функции всего одна. Завершающая фигурная скобка функции предполагает неявное исполнение оператора return без выражения.

С помощью оператора return можно возвращать простые типы, простые структуры, указатели объектов. При помощи оператора return нельзя возвращать любые массивы, объекты классов, переменные типа сложных структур.

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

Оператор if else используется при необходимости сделать выбор. Синтаксис оператора выглядит так:

if (выражение)
оператор1
else
оператор2

Если выражение истинно, то выполняется оператор1 и управление передается на оператор, следующий за оператором2 (т.е. оператор2 не выполняется). Если выражение ложно, то выполняется оператор2.

Часть else оператора if может опускаться. Поэтому во вложенных операторах if с пропущенной частью else может возникнуть неоднозначность.

Условный оператор ?:

Этот условный оператор часто называют тернарным оператором. Общая форма тернарного оператора выглядит так:

выражение1 ? выражение2 : выражение3

В качестве первого операнда «выражение1» может быть использовано любое выражение, результатом которого является значение типа bool. Если результат равен true, то выполняется оператор, заданный вторым операндом, то есть «выражение2».

Если же первый операнд paвен false, то выполняется третий операнд – «выражениеЗ». Второй и третий операнды, то есть «выражение2» и «выражениеЗ» должны возвращать значения одного типа и не должны иметь тип void. Результатом выполнения условного оператора является результат «выражение2» или результат «выражение3» в зависимости от результата «выражение1».

Оператор-переключатель switch и оператор прерывания break

Этот оператор сравнивает значение выражения с константами во всех вариантах case и передает управление оператору, который соответствует значению выражения. Каждый вариант case может быть помечен целой константой, символьной константой или константным выражением. Константное выражение не может включать переменные или вызовы функций. Выражение оператора switch должно быть целого типа int или uint.

switch(выражение)
{
    case константа: операторы
    case константа: операторы
    …
    default: операторы
}

Операторы, связанные с меткой default, выполняются, если ни одна из констант в операторах case не равна значению выражения. Вариант default не обязательно должен быть объявлен и не обязательно должен быть последним. Если ни одна константа не соответствует значению выражения и вариант default отсутствует, то просто не выполнится никаких действий.

Ключевое слово case вместе с константой служат просто метками, и если будут выполняться операторы для некоторого варианта case, то далее будут выполняться операторы всех последующих вариантов до тех пор, пока не встретится оператор break, что позволяет связывать одну последовательность операторов с несколькими вариантами. Например:

switch(выражение)
{
    case константа1: {
        оператор1;
        оператор2;
        break;
    }
    case константа2: 
    {
        оператор3;
        оператор4;
        break;
    }
    …
    default: операторы
}

На этом все, всем пока!

Тема на форуме

С уважением, Дмитрий аkа Silentspec
Tlap.com

Уроки по MQL5 , , ,