Самообучение языку MQL5 с полного нуля - страница 33

 
Vladimir Simakov:

А есть еще шаблоны...

Ага, еще и тернарный оператор затесался)

Примерно с этой тропинки (понимания и умения это писать) уже и начинается, собственно, путь разработчика. IMHO

А точка с запятой после фигурной скобки в перечислении и шаблонной функции обязательны или это для читабельности?

 
Реter Konow:
Так и я о том. Не нужно сейчас перечислений и лишнего синтаксиса.
А API терминала тогда ему зачем? Там перечислений чуть больше чем до х... встречаются, да и структуры request/result и иже с ними в изобилии)
 
Реter Konow:
"... но Вы еще не ответили на него правильно..."

Валерий ранее уже ответил в своем коде скрипта:

//+------------------------------------------------------------------+
//|                                                            1.mq5 |
//|                        Copyright 2020, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
bool достаточно_времени=true;
bool достаточно_терпения=true;
//---
   if(достаточно_времени && достаточно_терпения)
     {
      Print("я выучу язык MQL 5");
     }
  }
//+------------------------------------------------------------------+

С уважением, Владимир.

 
MrBrooklin:

Валерий ранее уже ответил в своем коде скрипта:

С уважением, Владимир.

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

bool Достаточно_времени = Достаточность_времени();

bool Достаточно_терпения = Достаточность_терпения();

if(Достаточно_времени && Достаточно_терпения)Print("Я выучу язык!");

else Print ("Не выучу.");

Вы должны рассчитать время и терпение прежде чем ставить их в условие, а не задавать им значения по умолчанию, т.к. исчезает смысл наличия условия - оно всегда верно.
 
Valeriy Yastremskiy:

А точка с запятой после фигурной скобки в перечислении и шаблонной функции обязательны или это для читабельности?

Опечатка. Я там сначала хотел шаблонный объект с обвязкой макросом, но решил не усугублять)

А для перечислений, да, надо.

 
Реter Konow:
...Вот тут они и нужны:

bool Достаточно_времени = Достаточность_времени();

bool Достаточно_терпения = Достаточность_терпения();

if(Достаточно_времени && Достаточно_терпения)Print("Я выучу язык!");

else Print ("Не выучу.");

Петер, встречный к Вам вопрос: почему в типе bool, который предназначен для хранения логических значений true (истина) или false (ложь) Вы указали Достаточность_времени() и  Достаточность_терпения()?

С уважением, Владимир.
 
MrBrooklin:

Петер, встречный к Вам вопрос: почему в тип bool, который предназначен для хранения логических значений true (истина) или false (ложь) Вы указали Достаточность_времени() и  Достаточность_терпения()?

С уважением, Владимир.
Потому что, это те функции которые нужно написать чтобы рассчитать реальное значение переменных "Достаточно_времени" и "Достаточно_терпения". 

Эти функции должны содержать рассчеты параметров ведущие к одному логическому ответу да/нет, который они и вернут в переменные. Эти функции должны возвращать результат в виде логического значения true/false.
 
Реter Konow:
"...Да, этот вариант верен с точки зрения синтаксиса, но логики в нем по прежнему нет..."

Теперь совсем запутался: почему, все-таки, нет логики, хотя применён тип bool, который нужен для хранения логических значений? Уточните, пожалуйста, тогда в чём нет логики?

С уважением, Владимир.

 
MrBrooklin:

Теперь совсем запутался: почему, все-таки, нет логики, хотя применён тип bool, который нужен для хранения логических значений? Уточните, пожалуйста, в чём нет логики?

С уважением, Владимир.

Ну смотрите: Вы заранее (перед условием) устанавливаете значение true обеим переменным. То есть, они ВСЕГДА, на каждом запуске скрипта будут true. А зачем тогда условие нужно? Разве в этой программе возможен вариант, когда переменные явно инициализированные значением true, могут не быть true? - Нет! Потому что Вы им прописали это значение и нигде в коде оно не может поменятся.

В этом случае, условие не нужно, как и не нужны сами переменные, ведь ВСЕГДА результатом работы скрипта будет строка "Я выучу язык".

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

Теперь совсем запутался: почему, все-таки, нет логики, хотя применён тип bool, который нужен для хранения логических значений? Уточните, пожалуйста, в чём нет логики?

С уважением, Владимир.

Логики нет, потому что это заданные в скрипте переменные. А должны быть либо переменными, которые задает пользователь через инпут, или полученными из функций, что даже логичней. 

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

Причина обращения: