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

 
MrBrooklin:

Всё правильно! Время у меня в днях. И период обучения и сколько дней прошло с начала обучения. Наверное, чего-то не понимаю...

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

С точки зрения логики условия, строка "я выучу язык" может быть выведена в результате расчета имеющихся времени и терпения на его изучение. Если один из параметров (время или терпение) равен нулю, то язык выучить не удастся. Поэтому, в условии логическая ошибка.
 
MrBrooklin:

Спасибо, Петер! Мне уже помогли разобраться в данном вопросе.

Продолжаю изучение языка программирования MQL5 и сегодня выкладываю код скрипта, который является продолжением одного задания со стороны участников данной темы. Скрипт проверил на всех режимах. Всё работает, как положено. Входных параметров установил для начала по-минимуму.

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

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

 
Реter Konow:
С точки зрения логики условия, строка "я выучу язык" может быть выведена в результате расчета имеющихся времени и терпения на его изучение. Если один из параметров (время или терпение) равен нулю, то язык выучить не удастся. Поэтому, в условии логическая ошибка.

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

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

 
Vasiliy Sokolov:

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

Василий, Вы не поверите, но только "ЗА"! Просто условие задачи было поставлено на русском языке, отсюда и продолжение. Обязательно перепишу скрипт с использованием английского языка.

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

 
MrBrooklin:

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

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

В коде нет синтаксических ошибок, но логика нарушена, а за ней нужно внимательно следить.

Сам расчет в функции достаточность_времени нелогичен. Времени достаточно тогда, когда оно не равно нулю. Функция вычисляет разницу времени, а возвращает логическое да/нет. Т.е. функция неверно структурирована. Пересмотрите расчеты Достаточность_времени().

Хотя, нет. Функция возвращает значение ushort, но логики все равно нет. Достаточность_времени должна быть больше нуля.
 
Реter Konow:
В коде нет синтаксических ошибок, но логика нарушена, а за ней нужно внимательно следить.

Сам расчет в функции достаточность_времени нелогичен. Времени достаточно тогда, когда оно не равно нулю. Функция вычисляет разницу времени, а возвращает логическое да/нет. Т.е. функция неверно структурирована. Пересмотрите расчеты Достаточность_времени()

Хотя, нет. Функция возвращает значение ushort, но логики все равно нет. Достаточность_времени должна быть больше нуля.

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

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

 
Реter Konow:
В коде нет синтаксических ошибок, но логика нарушена, а за ней нужно внимательно следить.

Сам расчет в функции достаточность_времени нелогичен. Времени достаточно тогда, когда оно не равно нулю. Функция вычисляет разницу времени, а возвращает логическое да/нет. Т.е. функция неверно структурирована. Пересмотрите расчеты Достаточность_времени().

Хотя, нет. Функция возвращает значение ushort, но логики все равно нет. Достаточность_времени должна быть больше нуля.

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

и твои угрозы посмотрю где интересны могут быть
 

Продолжаю изучение языка программирования MQL5 и выкладываю код скрипта, который является продолжением выполнения одного задания со стороны участников данной темы. Скрипт проверил на всех режимах. Проблемы не выявлены. Для начала применил минимальное количество входных параметров. Код скрипта написан на английском языке, а комментарии к коду на русском языке, чтобы облегчить усвоение материала. В данном скрипте постарался всё расписать, как ранее и обещал, в изложении доступном для ученика 1-го класса школы программирования.

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

//+------------------------------------------------------------------+
//|                                                Learning_MQL5.mq5 |
//|                        Copyright 2020, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright   "Copyright 2020, MetaQuotes Software Corp."
#property link        "https://www.mql5.com"
#property description "Скрипт подводит итог обучения языку программирования MQL5. В зависимости от "
#property description "входных параметров печатает во вкладке \"Эксперт\" торгового терминала два"
#property description "сообщения на русском языке: \"Я выучу язык MQL5!\" или \"Я не выучу язык MQL5!\""
#property description "Код скрипта написан на основе примера, приведенного Valeriy Yastremskiy на сайте"
#property description "MQL5, в теме \"Самообучение языку MQL5 с полного нуля\"." 
#property description "======================================================"
#property description "Ссылка на пример https://www.mql5.com/ru/forum/352460/page30#comment_18646826"
//---
#property version     "1.00"              //версия скрипта 1.00
//---
#property script_show_inputs              //выводить окно со свойствами перед запуском скрипта 
//--- Зададим входные параметры скрипта: 
input ushort Period_learning=500;         //Полный период обучения в днях
input ushort Days_passed=10;              //Сколько дней прошло с начала обучения
input bool   Patience=true;               //Терпение (true - достаточно; false - не достаточно)
//--- Зададим глобальные переменные:
//переменная enough_time (достаточно времени), где ushort - минимальное значение "0", максимальное "65535"
ushort enough_time;
//переменная enough_patience (достаточно терпения), где bool - логическое значение: истина (true) или ложь (false)
bool enough_patience;
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart() //старт работы скрипта
  {
/* Зададим условие для работы скрипта. Если:
   1. значение функции "имею время" будет больше или равно "Полного периода обучения", заданного 
      во входных параметрах скрипта;
   2. и значение функции "имею время" не будет равно нулю;
   3. и значение функции "имею терпение" будет равно значению истина (true)
*/
   if(have_time()>=Period_learning && have_time()!=0 && have_patience()==true)
     {
      Print("Я выучу язык MQL5!");    //выводим сообщение "Я выучу язык MQL5!"
     }
   else //в противном случае
     {
      Print("Я не выучу язык MQL5!"); //выводим сообщение "Я не выучу язык MQL5!"
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
//--- Функция "имею_время"
ushort have_time()            //создаём функцию "имею_время" и присвоим тип данных ushort
  {
   enough_time=Days_passed;   //задаём для значения enough_time (достаточно времени) значение равное
                              //входному параметру "Сколько дней прошло с начала обучения" (Days_passed)

   return(enough_time);       //возвращаем значение "достаточно времени" в функцию "имею время"
  }
//--- Функция "имею_терпение"
bool have_patience()          //создаём функцию "имею_терпение" и присвоим тип данных bool
  {
   enough_patience=Patience;  //задаём для переменной enough_patience (достаточно терпения) значение равное
                              //входному параметру "Терпение" (Patience): истина или ложь

   return(enough_patience);   //возвращаем значение "достаточно терпения" в функцию "имею терпение"
  }
//+------------------------------------------------------------------+
 

учите сперва работу со string переменными, у Дмитрия Федосеева, инфостринги сильно туманят разум на этапе изучений чужого кода,

в статье которую он разобрал, все понятно, и там же попутно научитесь части работы многих моментов, это я говорю как читатель большинства статей здесь, думаю больше меня здесь никто не прочитал еще)

 
MrBrooklin:

Всё правильно! Время у меня в днях. И период обучения и сколько дней прошло с начала обучения. Наверное, пока чего-то ещё не понимаю...

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



Код и логика у вас  верны. На мое ИМХО, я вчера смотрел, сам нулю сначала удивился, но потом фишку разности догнал... :-)