MQL5言語をゼロから独学で学ぶ - ページ 41

 
MrBrooklin:

そうなんだ!日単位で時間がある。そして、トレーニング期間と、始めてから何日経ったかということ。何か理解できないのでしょうね。

ウラジミールさん、謹んで申し上げます。

条件論理で言えば、その言語を習得するために使える時間と忍耐力を計算した結果、「その言語を習得する」という文字列を出力することができる。パラメータ(時間または忍耐力)のいずれかが0であれば、その言語は学習できない。したがって、この条件には論理的な誤りがある。
 
MrBrooklin:

ピーターさん、ありがとうございました。この問題については、すでに理解を深めてもらっている。

私はプログラミング言語MQL 5の勉強を続けており、今日はこのスレッドの参加者からの課題の1つの続きであるスクリプトのコードを貼り付けます。すべてのモードでスクリプトをテストしてみました。すべてが思い通りに動く。そもそも入力パラメータを最低限に設定しています。

ウラジミールさん、ありがとうございます。

Do you do ... 変数や関数の名前にロシア語の名前を書き終える。これは非常に悪いことだと考えられています。明らかに自分のためのプログラムを作っているのですが、これは結局1Cじゃないんですよね。標準のコードスタイルに一気に慣れる。そうすれば、Expert Advisorやindicatorsから他の人のコードを読み取ることが容易になり、必ず必要になるはずです。

 
Реter Konow:
条件論理で言えば、その言語を習得するために使える時間と忍耐力を計算した結果、「その言語を習得する」という文字列を出力することができる。パラメータ(時間または忍耐力)のいずれかがゼロになると、言語を習得することはできません。したがって、この条件には論理的な誤りがある。

関数自体の条件やスクリプトの動作に論理的な間違いがあるということでしょうか?

ウラジミールさん、ありがとうございます。

 
Vasiliy Sokolov:

変数や関数の名前にロシア語の名前を書くのはやめた方がいい。これは非常に悪いことだと考えられています。自分のためにプログラムを作っているのは明らかですが、結局1Cじゃないんですよね。標準のコードスタイルに一気に慣れる。そうすれば、絶対に必要なExpert Advisorやインジケータの他の人のコードを読みやすくなります。

ワシリー、信じないだろうが、大賛成だ!ただ、課題の条件がロシア語で出されているので、それ故に続きがあるのです。必ず英語を使って脚本を書き直します。

ウラジミールさん、ありがとうございます。

 
MrBrooklin:

関数自体の条件やスクリプトの動作に論理的な間違いがあるということでしょうか?

ウラジミールさん、謹んで申し上げます。

コードに構文上の間違いはありませんが、ロジックが破綻しているので、よく観察する必要があります。

sufficiency_time関数での計算そのものが非論理的である。時間はゼロにならない程度で十分です。この関数は、時差を計算し、yes/no のブール値を返します。つまり、関数が正しく構成されていないのです。sufficiency_time()の計算を再確認する。

とはいえ、ダメなんですけどね。この関数は ushort を返しますが、まだロジックがありません。Sufficiency_timeは0より大きくなくてはならない。
 
Реter Konow:
コードに構文上の間違いはありませんが、ロジックが破綻しているので、よく観察する必要があります。

sufficiency_time関数での計算そのものが非論理的である。時間はゼロでないときに十分です。この関数は、時差を計算し、論理的にyes/noを返します。つまり、関数が正しく構成されていないのです。sufficiency_time()を再計算する。

とはいえ、ダメなんですけどね。この関数は ushort を返しますが、まだロジックがありません。sufficiency_timeは0より大きくなければならない。

これではっきりした、あとはどうやるかだけだ。週末にやることになりそうです。

ウラジミールさん、ありがとうございます。

 
Реter Konow:
コードに構文上の間違いはありませんが、ロジックが破綻しているので、注意深く見る必要があります。

sufficiency_time関数での計算そのものが非論理的である。時間はゼロでないときに十分です。この関数は、時差を計算し、論理的にyes/noを返します。つまり、関数が正しく構成されていないのです。sufficiency_time()の計算を再確認する。

とはいえ、ダメなんですけどね。この関数は ushort を返しますが、まだロジックがありません。Sufficiency_timeは0より大きくなくてはならない。

初心者向けに書くなら平易な言葉で書けよ、遠まわしにけなすような突っ込みはない。

そして、あなたの脅威は、彼らが興味を持つかもしれない場所を参照してください。
 

私はプログラミング言語MQL 5の勉強を続けており、このスレッドの参加者からあるタスクの続きであるスクリプトのコードを投稿しています。スクリプトはすべてのモードでテストされています。特に問題はありませんでした。最小限の入力パラメータ数で開始するように適用した。スクリプトのコードは英語で書かれていますが、コードへのコメントはロシア語で書かれており、学習しやすいように配慮されています。先に約束したように、このスクリプトはプログラミングスクールの1stフォームの生徒にも理解できるように記述したつもりです。

ウラジミールさん、よろしくお願いします。

//+------------------------------------------------------------------+
//|                                                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);   //возвращаем значение "достаточно терпения" в функцию "имею терпение"
  }
//+------------------------------------------------------------------+
 

まず、Dmitry Fedoseyevから文字列変数の 扱い方を学びます。他人のコードを勉強する段階では、infostringementsは非常に霧がかかったようなものです。

彼がレビューした記事では、すべてが明確で、同時に多くのことを学ぶことができます、私はここのほとんどの記事の読者として話しています、私は誰も私よりも読んでいないと思います)

 
MrBrooklin:

そうなんだ!日単位で時間がある。そして、トレーニング期間と、始めてから何日経ったかということ。まだ何かわかっていないようです。

ウラジミールさん、ありがとうございます。



あなたのコードとロジックは正しいです。私のIMHOでは、昨日見て、最初は自分でも驚きましたが、その違いを掴みました...。:-)