Die Sprache MQL5 von Grund auf selbst erlernen - Seite 34

 
Реter Konow:
Sehen Sie: Sie setzen beide Variablen vorher auf true (vor der Bedingung). Das heißt, sie werden bei jedem Start des Skripts IMMER wahr sein. Warum brauchen wir dann eine Bedingung? Ist es in diesem Programm möglich, dass Variablen, die explizit mit true initialisiert werden, nicht wahr sein dürfen? - Nein, denn Sie haben diesen Wert in sie hineingeschrieben und er kann nirgendwo im Code geändert werden.

In diesem Fall wird weder die Bedingung noch die Variablen selbst benötigt, da das Ergebnis des Skripts IMMER die Zeichenfolge "Ich werde die Sprache lernen" sein wird.

Die Berechnung von Variablenwerten in zusätzlichen Funktionen kann jedoch zu unterschiedlichen Kombinationen von Ergebnissen führen - die eine gibt true, die andere false, oder beide geben false, oder beide geben true... In diesem Fall ist die geschriebene Bedingung durch mögliche Variationen der Variablenwerte gerechtfertigt, die zum Drucken unterschiedlicher Zeichenfolgen führen.

Danke, Peter, für die Klarstellung!

Mit freundlichen Grüßen, Vladimir.

 
Valeriy Yastremskiy:

Es gibt keine Logik, da es sich um im Skript festgelegte Variablen handelt. Sie sollten entweder Variablen sein, die vom Benutzer über eine Instanz gesetzt werden, oder von Funktionen abgeleitet werden, was noch logischer ist.

D.h. der Nutzen des Skripts sollte immer gegeben sein. Ein Skript, das nur Text anzeigt, ist nutzlos. Und mit Dateneingabe dieses Skript wird Ihnen sagen, ob Sie die Sprache lernen können) Und mit Funktionen, sie einfach nicht existieren, sie sind nicht geschrieben, und wenn Sie schreiben, zum Beispiel eine Berechnung aus dem Niveau der Kenntnisse der Mathematik, Kenntnisse über andere Sprachen, wie viel freie Zeit, das Niveau der Wunsch und die Fähigkeit, sich zu merken und die Funktion wird True oder False auf der Grundlage der Berechnung zurück, wird der Nutzen mehr))))

Valery, vielen Dank für die ausführliche Antwort!

Mit freundlichen Grüßen, Vladimir.

 

Hier ist eine überarbeitete Version des Skripts, einschließlich Hinweisen für diejenigen, die das Skript noch nicht kennen und diesen Thread lesen oder auch nicht:

//+------------------------------------------------------------------+
//|                                                            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!");
     }
  }
//+------------------------------------------------------------------+

Dem Skript hinzugefügt:

  1. "Eigenschaftsfenster vor Ausführung des Skripts anzeigen";
  2. Fähigkeit, externe Variablen zu ändern.

Mit freundlichen Grüßen, Vladimir.

 
Реter Konow:
Ja, diese Variante ist syntaktisch korrekt, aber es fehlt ihr an Logik. Gestern hat Vasily viel über Funktionen geschrieben. Genau hier werden sie gebraucht:

bool Ausreichende_Zeit = Ausreichende_Zeit();

bool Ausreichende_Geduld = Ausreichende_Geduld();

if(Ausreichend_Zeit && Ausreichend_Geduld)Print("Ich werde die Sprache lernen!");

else Print ("Ich werde nicht.");

Man muss Zeit und Geduld berechnen, bevor man sie in eine Bedingung einfügt, anstatt sie standardmäßig zu setzen, weil es keinen Sinn macht, die Bedingung zu haben - sie ist immer wahr.

+1. Das ist richtig.

 
Реter Konow:
"... Man muss Zeit und Geduld kalkulieren, bevor man sie in eine Bedingung setzt, anstatt sie standardmäßig zu setzen, denn der Sinn einer Bedingung verschwindet - sie ist immer wahr."

Das werde ich auf jeden Fall tun, aber später, denn mein "Topf" kocht bereits, so dass ich ihn etwas abkühlen muss.

Mit freundlichen Grüßen, Vladimir.

 
MrBrooklin:

Hier ist eine korrigierte Version des Skripts, die die Hinweise berücksichtigt:

Dem Skript hinzugefügt:

  1. "Eigenschaftsfenster vor Ausführung des Skripts anzeigen";
  2. Fähigkeit, externe Variablen zu ändern.

Mit freundlichen Grüßen, Vladimir.

Genau! Und dann versuchen Sie, Funktionen zu schreiben, die die Werte dieser Variablen in Abhängigkeit von den Werten anderer externer Variablen berechnen.

Das heißt, dass die Funktion Enough_time() Werte von externen Variablen annimmt:

Eingabe datetime Days_training = 100;
Eingabe uchar Hour_in_day = 5;
... und so weiter...

Mit anderen Worten: Die Funktionen nehmen die Werte Ihrer Eingabevariablen und führen Berechnungen durch, und das Ergebnis wird in den Variablen Ausreichende_Zeit und Ausreichende_Geduld zurückgegeben, die Sie dann in eine Bedingung mit mehreren Optionen einfügen können, von denen jede eine andere Zeichenfolge ausgibt.

 
Реter Konow:
Sie haben Recht! Und dann versuchen Sie, Funktionen zu schreiben, die die Werte dieser Variablen in Abhängigkeit von den Werten anderer externer Variablen berechnen.

Das heißt, Sufficient_time() übernimmt die Werte externer Variablen:

input datetime Days_training_day = 100;
Eingabe uchar Hour_in_day = 5;
... und so weiter...

Dann nehmen die Funktionen die Werte der Eingabevariablen und führen Berechnungen durch, und das Ergebnis wird in die Variablen Genug_Zeit und Genug_Geduld zurückgegeben, die Sie dann in eine Bedingung mit mehreren Optionen einfügen können, von denen jede eine andere Zeichenfolge ausgibt.

Peter, nehmen Sie Ihre Anregung in meinen Selbststudienplan auf. Das Ergebnis wird später in Form eines Codeskripts veröffentlicht.

Mit freundlichen Grüßen, Vladimir.

 
MrBrooklin:

Das werde ich auf jeden Fall tun, aber später, denn mein "Topf" kocht bereits, so dass ich ihn etwas abkühlen muss.

Mit freundlichen Grüßen, Vladimir.

Natürlich, machen Sie eine Pause).
 
Реter Konow:
Genau! Und dann versuchen Sie, Funktionen zu schreiben, die die Werte dieser Variablen in Abhängigkeit von den Werten anderer externer Variablen berechnen.

Das heißt, Sufficient_time() übernimmt die Werte externer Variablen:

input datetime Days_training_day = 100;
Eingabe uchar Hour_in_day = 5;
... und so weiter...

Mit der Zeit ist es mehr oder weniger klar, aber die Variablen für "Genug Geduld" sind immer noch ein Problem. Was soll ich in sie hineinlegen? Haben Sie Geduld oder keine Geduld? Zumindest diese beiden Parameter? Ich muss darüber nachdenken.

Mit freundlichen Grüßen, Vladimir.

 
MrBrooklin:

Die Zeit ist mehr oder weniger klar, aber die Variablen für "Genug Geduld" sind ein Problem. Was tun Sie da rein? Gibt es Geduld oder keine Geduld? Zumindest diese beiden Parameter? Ich muss darüber nachdenken.

Mit freundlichen Grüßen, Vladimir.

1. Mood (Aufzählung von Typen durch initialisierte bedingte Einheiten).

2. Selbstwahrnehmung (das Gleiche).

3. Motivationsquotient.

4. Der Koeffizient des Glaubens an den Devisenmarkt

...

Denken Sie sich ein paar Berechnungsformeln aus und Sie sind fertig).