Autoapprendimento del linguaggio MQL5 da zero - pagina 33

 
Vladimir Simakov:

E poi ci sono i modelli...

Sì, c'è anche un operatore ternario )

Da circa questo percorso (capire e sapere come scrivere) inizia effettivamente la strada dello sviluppatore. IMHO

I punti e virgola dopo le parentesi graffe nelle funzioni di enumerazione e template sono necessari o è solo per leggibilità?

 
Реter Konow:
Questo è il mio punto. Ora non c'è bisogno di enumerazioni e sintassi inutile.
A cosa serve allora l'API del terminale? Ci sono un po' più enumerazioni lì che a f... ... e le strutture di richiesta/risultato e simili sono abbondanti)
 
Реter Konow:
"... ma non hai ancora risposto correttamente..."

Valeriy ha già risposto prima nel suo codice di script:

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

Con rispetto, Vladimir.

 
MrBrooklin:

Valeriy ha già risposto prima nel suo codice di script:

Con rispetto, Vladimir.

Sì, questa variante è corretta in termini di sintassi, ma manca ancora di logica. Ieri Vasily ha scritto molto sulle funzioni. Qui è dove sono necessari:

bool Sufficient_time = Sufficient_time();

bool Sufficient_time = Sufficient_time();

if(Sufficient_time && Sufficient_patience)Print("Imparerò la lingua!");

else Print ("Non lo farò");

Bisogna calcolare il tempo e la pazienza prima di metterli in una condizione, non impostarli come default, perché il significato di avere una condizione scompare - è sempre vero.
 
Valeriy Yastremskiy:

Il punto e virgola e la virgola dopo la parentesi graffa nell'enumerazione e nella funzione modello sono obbligatori o è per leggibilità?

Un errore di battitura. Inizialmente volevo un oggetto template con macro binding, ma ho deciso di non peggiorare la situazione).

E per le enumerazioni, sì, è necessario.

 
Реter Konow:
...Qui è dove sono necessari:

bool Sufficient_time = Sufficient_time();

bool Sufficient_patience = Sufficient_patience();

if(Sufficient_time && Sufficient_patience)Print("Imparerò la lingua!");

else Print ("Non lo farò");

Peter, una contro-domanda a te: perché nel tipo bool, che è destinato a memorizzare i valori booleani vero o falso, hai specificato sufficiency_time() e sufficiency_patience()?

Sinceramente, Vladimir.
 
MrBrooklin:

Peter, una contro-domanda a te: perché hai specificato sufficiency_time() e sufficiency_patience() nel tipo bool, che è destinato a memorizzare i valori logici vero o falso?

Saluti, Vladimir.
Perché queste sono le funzioni che devono essere scritte per calcolare il valore reale delle variabili "Enough_time" e "Enough_patience".

Queste funzioni devono contenere calcoli di parametri che portano a una risposta logica sì/no, che restituiranno in variabili. Queste funzioni devono restituire il risultato come un valore logico vero/falso.
 
Реter Konow:
"...Sì, questa variante è corretta in termini di sintassi, ma manca ancora di logica..."

Ora sono completamente confuso: perché non c'è logica, anche se viene usato il tipo bool, che è necessario per memorizzare valori logici? Si prega di chiarire, allora, che cosa non è logico?

Saluti, Vladimir.

 
MrBrooklin:

Ora sono completamente confuso: perché non c'è logica, anche se viene usato il tipo bool, che è necessario per memorizzare valori logici? Si prega di chiarire in cosa non c'è logica?

Con rispetto, Vladimir.

Guarda: tu imposti entrambe le variabili a true in anticipo (prima della condizione). Quindi saranno SEMPRE veri ad ogni inizio dello script. Perché abbiamo bisogno della condizione allora? È possibile che in questo programma le variabili inizializzate esplicitamente con true non siano vere? - No, perché avete scritto questo valore in essi e non può essere cambiato da nessuna parte nel codice.

In questo caso, la condizione non è necessaria, e nemmeno le variabili stesse, perché SEMPRE il risultato dello script sarà la stringa "imparerò la lingua".

Tuttavia, avere valori variabili calcolati in funzioni aggiuntive può portare a diverse combinazioni di risultati - uno restituirà vero, l'altro falso, o entrambi restituiranno falso, o entrambi restituiranno vero... In questo caso, la condizione scritta è giustificata da possibili variazioni nei valori delle variabili che portano alla stampa di stringhe diverse.
 
MrBrooklin:

Ora sono completamente confuso: perché non c'è logica, anche se viene usato il tipo bool, che è necessario per memorizzare valori logici? Si prega di chiarire in cosa non c'è logica?

Sinceramente, Vladimir.

Non c'è logica, perché sono variabili impostate nello script. Dovrebbero essere o variabili impostate dall'utente tramite un'istanza, o derivate da funzioni, il che è ancora più logico.

Cioè l'utilità dello script dovrebbe essere sempre presente. Solo uno script che visualizza il testo è inutile. E con l'inserimento dei dati questo script vi dirà se potete imparare la lingua) E con le funzioni, semplicemente non esistono, non sono scritte, e se si scrive, per esempio, il calcolo dal livello di conoscenza della matematica, la conoscenza di altre lingue, quanto tempo libero, il livello di desiderio e la capacità di ricordare e la funzione restituirà Vero o Falso in base al calcolo allora l'utilità sarà più))))