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

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

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

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

Спасибо, Петер, за разъяснение!

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

 
Valeriy Yastremskiy:

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

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

Валерий, Вам тоже отдельное спасибо, за подробный ответ!

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

 

Вот исправленный вариант скрипта с учётом подсказок для таких же новичков, которые, возможно, читают или будут читать эту тему:

//+------------------------------------------------------------------+
//|                                                            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"
//---
#property script_show_inputs
//---
input bool достаточно_времени=true;
input bool достаточно_терпения=true;
//---
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   if(достаточно_времени && достаточно_терпения)
     {
      Print("Я выучу язык MQL5!");
     }
   else
     {
      Print("Я не выучу язык MQL5!");
     }
  }
//+------------------------------------------------------------------+

Добавил в скрипт:

  1. "выводить окно со свойствами перед запуском скрипта";
  2. возможность изменять внешние переменные.

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

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

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

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

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

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

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

+1. Все верно.

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

Обязательно это сделаю, но по-позже, т.к. у меня "котелок" уже закипает, поэтому нужно его немного остудить.

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

 
MrBrooklin:

Вот исправленный вариант скрипта с учётом подсказок:

Добавил в скрипт:

  1. "выводить окно со свойствами перед запуском скрипта";
  2. возможность изменять внешние переменные.

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

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

То есть, функция Достаточно_времени() будет брать значения внешних переменных:

input datetime Дней_обучения = 100;
Input uchar  Часов_в_день = 5;
... и так далее...

Т.е. функции будут брать значения инпутных переменных и произвоить вычисления, а результат возвращать в переменные Достаточно_времени и Достаточно_терпения, которые, затем поставите в условие имеющее несколько вариантов развития, каждый из которых будет печататься своей строкой.

 
Реter Konow:
Верно! А потом попробуете написать функции вычисляющие значения этих переменных в зависимости от значений других внешних переменных. 

То есть, функция Достаточно_времени() будет брать значения внешних переменных:

input datetime Дней_обучения = 100;
Input uchar  Часов_в_день = 5;
... и так далее...

Затем, функции будут брать значения инпутных переменных и произвоить вычисления, а результат возвращать в переменные Достаточно_времени и Достаточно_терпения, которые, затем поставите в условие имеющие несколько вариантов развития, каждый из которых будет печататься своей строкой.

Петер, занёс Ваше предложение в план самообучения. Результат потом выложу в виде кода скрипта.

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

 
MrBrooklin:

Обязательно это сделаю, но по-позже, т.к. у меня "котелок" уже закипает, поэтому нужно его немного остудить.

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

Конечно, возьмите паузу.)
 
Реter Konow:
Верно! А потом попробуете написать функции вычисляющие значения этих переменных в зависимости от значений других внешних переменных. 

То есть, функция Достаточно_времени() будет брать значения внешних переменных:

input datetime Дней_обучения = 100;
Input uchar  Часов_в_день = 5;
... и так далее...

Со временем более-менее понятно, а вот с переменными для "Достаточно терпения" пока проблема. Что в них заложить? Есть терпение или нет терпения? Хотя бы эти два параметра? Нужно подумать.

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

 
MrBrooklin:

Со временем более-менее понятно, а вот с переменными для "Достаточно терпения" проблема. Что в них заложить? Есть терпение или нет терпения? Хотя бы эти два параметра? Нужно подумать.

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

1. Настроение (перечесление типов инициализируемыми условными единицами измерения).

2. Самочуствие (тоже самое).

3. Коффициент мотивации.

4. Коффициент веры в форекс

...

Придумаете пару формул расчета и готово.)
Причина обращения: