Die Sprache MQL5 von Grund auf selbst erlernen - Seite 41

 
MrBrooklin:

Das ist richtig! Ich habe die Zeit in Tagen. Und die Ausbildungszeit und wie viele Tage seit dem Beginn vergangen sind. Ich glaube, ich verstehe etwas nicht.

Hochachtungsvoll, Vladimir.

In Bezug auf die Bedingungslogik kann die Zeichenkette "Ich werde die Sprache lernen" als Ergebnis der Berechnung der Zeit und der Geduld, die zum Erlernen der Sprache zur Verfügung stehen, ausgegeben werden. Wenn einer der Parameter (Zeit oder Geduld) gleich Null ist, kann die Sprache nicht gelernt werden. Daher liegt ein logischer Fehler in der Bedingung vor.
 
MrBrooklin:

Vielen Dank, Peter! Mir wurde bereits geholfen, dieses Problem zu verstehen.

Ich setze mein Studium der Programmiersprache MQL5 fort und füge heute den Code eines Skripts ein, das eine Fortsetzung einer der Aufgaben der Teilnehmer dieses Threads ist. Ich habe das Skript in allen Modi getestet. Alles funktioniert so, wie es sollte. Für den Anfang habe ich die Eingabeparameter auf ein Minimum reduziert.

Mit freundlichen Grüßen, Vladimir.

Tun Sie das ... schreiben Sie die russischen Namen in die Namen von Variablen und Funktionen. Dies gilt als sehr schlechter Stil. Es ist klar, dass Sie Programme für sich selbst erstellen, aber das ist schließlich nicht 1C. Gewöhnen Sie sich sofort an den Standard-Codestil. Dann wird es für Sie einfacher sein, den Code anderer Leute von Expert Advisors und Indikatoren zu lesen, den Sie auf jeden Fall brauchen werden.

 
Реter Konow:
In Bezug auf die Bedingungslogik kann die Zeichenkette "Ich werde die Sprache lernen" als Ergebnis der Berechnung der Zeit und der Geduld, die zum Erlernen der Sprache zur Verfügung stehen, ausgegeben werden. Wenn einer der Parameter (Zeit oder Geduld) gleich Null ist, werden Sie die Sprache nicht lernen können. Daher liegt ein logischer Fehler in der Bedingung vor.

Meinen Sie einen logischen Fehler in der Bedingung der Funktion selbst oder in der Ausführung des Skripts?

Mit freundlichen Grüßen, Vladimir.

 
Vasiliy Sokolov:

Sie sollten... aufhören, russische Namen in die Namen von Variablen und Funktionen zu schreiben. Dies gilt als sehr schlechter Stil. Ich verstehe, dass Sie Programme für sich selbst machen, aber es ist ja nicht 1C. Gewöhnen Sie sich sofort an den Standard-Codestil. Dann wird es für Sie einfacher sein, den Code von Expert Advisors und Indikatoren anderer Leute zu lesen, die Sie auf jeden Fall brauchen werden.

Wassili, du wirst es nicht glauben, aber ich bin voll dafür! Es ist nur so, dass die Bedingung der Aufgabe auf Russisch gegeben wurde, daher die Fortsetzung. Ich werde das Drehbuch auf jeden Fall auf Englisch umschreiben.

Mit freundlichen Grüßen, Vladimir.

 
MrBrooklin:

Meinen Sie einen logischen Fehler in der Bedingung der Funktion selbst oder in der Ausführung des Skripts?

Hochachtungsvoll, Vladimir.

Der Code enthält keine Syntaxfehler, aber die Logik ist fehlerhaft, und man muss sie genau beobachten.

Die Berechnung selbst in der Funktion sufficiency_time ist unlogisch. Die Zeit ist ausreichend, wenn sie nicht gleich Null ist. Die Funktion berechnet die Zeitdifferenz und gibt ein boolesches Ja/Nein zurück. Das heißt, die Funktion ist nicht richtig strukturiert. Überprüfen Sie die Berechnung von sufficiency_time().

Obwohl, nein. Die Funktion gibt ushort zurück, aber es gibt immer noch keine Logik. Sufficiency_time sollte größer als Null sein.
 
Реter Konow:
Der Code enthält keine Syntaxfehler, aber die Logik ist fehlerhaft, und man muss sie genau beobachten.

Die Berechnung selbst in der Funktion sufficiency_time ist unlogisch. Zeit ist ausreichend, wenn sie nicht gleich Null ist. Die Funktion berechnet die Zeitdifferenz und gibt ein logisches Ja/Nein zurück. Das heißt, die Funktion ist nicht richtig strukturiert. Neuberechnung von sufficiency_time().

Obwohl, nein. Die Funktion gibt ushort zurück, aber es gibt immer noch keine Logik. Die sufficiency_time sollte größer als Null sein.

Jetzt ist alles klar, wir müssen nur noch herausfinden, wie wir es machen. Das wird eine Beschäftigung für das Wochenende sein.

Mit freundlichen Grüßen, Vladimir.

 
Реter Konow:
Der Code enthält keine Syntaxfehler, aber die Logik ist fehlerhaft, und man muss sie genau beobachten.

Die Berechnung selbst in der Funktion sufficiency_time ist unlogisch. Zeit ist ausreichend, wenn sie nicht gleich Null ist. Die Funktion berechnet die Zeitdifferenz, gibt aber ein logisches Ja/Nein zurück. Das heißt, die Funktion ist nicht richtig strukturiert. Überprüfen Sie die Berechnung von Sufficiency_time().

Obwohl, nein. Die Funktion gibt ushort zurück, aber es gibt immer noch keine Logik. Sufficiency_time sollte größer als Null sein.

Wenn du für Anfänger schreibst, dann schreibe in einfacher Sprache, es gibt nichts, was du aus der Ferne ansprechen oder verharmlosen kannst.

und Ihre Bedrohungen werden sehen, wo sie von Interesse sein könnten
 

Ich setze das Studium der Programmiersprache MQL5 fort und poste hier den Code eines Skripts, das eine Fortsetzung einer Aufgabe der Teilnehmer dieses Threads ist. Das Skript wurde in allen Modi getestet. Es wurden keine Probleme festgestellt. Anwendung der Mindestanzahl von Eingabeparametern für den Anfang. Der Skriptcode ist auf Englisch geschrieben, die Kommentare zum Code sind auf Russisch, um den Lernprozess zu erleichtern. Wie ich vorhin versprochen habe, habe ich versucht, das Skript so zu beschreiben, dass es für einen Schüler der 1. Klasse der Programmierschule verständlich ist.

Mit freundlichen Grüßen, Vladimir.

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

Lernen Sie zunächst von Dmitry Fedoseyev, wie man mit String-Variablen arbeitet, Infostringements sind in der Phase des Studiums des Codes anderer Leute sehr nebulös,

In dem Artikel, den er rezensiert hat, ist alles klar, und Sie werden eine Menge Dinge zur gleichen Zeit lernen, ich spreche als Leser der meisten Artikel hier, ich glaube, niemand hat mehr gelesen als ich)

 
MrBrooklin:

Das ist richtig! Ich habe die Zeit in Tagen. Und die Ausbildungszeit und wie viele Tage seit dem Beginn vergangen sind. Ich glaube, ich verstehe etwas noch nicht.

Mit freundlichen Grüßen, Vladimir.



Ihr Code und Ihre Logik sind korrekt. Auf meinem IMHO habe ich gestern nachgesehen, zuerst war ich selbst überrascht, aber dann habe ich den Unterschied bemerkt... :-)