Autoapprendimento del linguaggio MQL5 da zero - pagina 32

 
#property script_show_inputs
input string inA = "достаточно времени";
input string inB = "достаточно терпения";
const string a = "достаточно времени";
const string b = "достаточно терпения";

//+------------------------------------------------------------------+
void OnStart()
{
   if(inA == a && inB == b)
   {
      Print("я выучу язык MQL 5");
   }
}
//+------------------------------------------------------------------+

UPD:

Non mi piacciono le stringhe, per fortuna MQL permette di creare spiegazioni delle variabili di input e dei set come commento, è meglio così:

#property script_show_inputs
enum E_STATE
{
   STATE_A/*достаточно времени*/,
   STATE_B/*НЕ достаточно времени*/,
   STATE_C/*достаточно терпения*/,
   STATE_D/*НЕ достаточно терпения*/,
   STATE_E/*достаточно денег*/,
   STATE_F/*НЕ достаточно денег*/
};
input E_STATE inA = STATE_A;
input E_STATE inB = STATE_C;

//+------------------------------------------------------------------+
void OnStart()
{
   if(inA == STATE_A && inB == STATE_C)
   {
      Print("я выучу язык MQL 5");
   }
   else
   {
      Print("я НЕ выучу язык MQL 5");
   }
}
//+------------------------------------------------------------------+
 
Igor Makanu:

UPD:

Non mi piacciono le stringhe, meno male che MQL permette di creare spiegazioni delle variabili di input e dei set come commento, meglio così:

Fico! Con un compito così semplice, tante soluzioni diverse! Grazie.

Saluti, Vladimir.

 
MrBrooklin:

Grande! Con un compito così semplice, tante soluzioni diverse! Grazie.

Sinceramente, Vladimir.

Ora sarebbe più corretto seguire la logica piuttosto che praticare la sintassi. La logica suggerisce che il risultato della domanda "imparerà o non imparerà la lingua" può solo restituire una funzione che calcola alcuni parametri associati a questo. Poiché la funzione deve restituire un risultato sì/no, è dichiarata con il tipo bool. La funzione può essere chiamata direttamente dalla condizione if().

if(Abbastanza tempo() && Abbastanza pazienza()) Print("Imparerò la lingua!");

else Print("Non imparerò la lingua...");


Ora, pensate al contenuto delle funzioni.

 
Реter Konow:
Ahimè, questo è fuorviante e vi conduce su una strada sconosciuta di apprendimento. Cosa c'entrano lo "stato" e questa enumerazione? È una finzione a parità di condizioni.

Ora sarebbe più corretto seguire la logica piuttosto che praticare la sintassi. La logica suggerisce che il risultato della domanda "imparerà o non imparerà la lingua" può essere restituito solo da una funzione che calcola alcuni parametri relativi ad essa. Poiché la funzione deve restituire un risultato sì/no, è dichiarata con il tipo bool. La funzione può essere chiamata direttamente dalla condizione if().

if(Abbastanza tempo() && Abbastanza pazienza()) Print("Imparerò la lingua!");

else Print("Ahimè, non imparerò la lingua...");


Ora, pensate al contenuto delle funzioni.

Te la prendi con me, ovviamente il commento è incompleto, la prima variabileinA è come dovrebbe essere, una condizione di esecuzione, per così dire, e la secondaa, è come è di fatto)))))))))) Ed è per questo che inA viene inserito tramite un'istanza, ed è immutabile, e la variabile a .... anche se sì, non dovrebbe essere una variabile costante, ma una statica o solo un tipo di testo))))

Ma ha ancora senso)

 
MrBrooklin:

Grande! Con un compito così semplice, tante soluzioni diverse! Grazie.

Saluti, Vladimir.

E ci sono altri modelli...

#property script_show_inputs

enum EStateTime
{
   TimeOk=0/*достаточно времени*/,
   TimeFail/*НЕ достаточно времени*/
};
enum EStatePatience{
   PatienceOk=0/*достаточно терпения*/,
   PatienceFail/*НЕ достаточно терпения*/
};
enum EStateMoney{
   MoneyOk=0/*достаточно денег*/,
   MoneyFail/*НЕ достаточно денег*/
};
input EStateTime time = TimeOk;
input EStatePatience patience = PatienceOk;
input EStateMoney money = MoneyFail;

//+------------------------------------------------------------------+
void OnStart()
{
   if(Check(time) && Check(patience))
   {
      Print("я выучу язык MQL 5",(Check(money)?NULL:" и это не зависит от денег"));
   }
   else
   {
      Print("я НЕ выучу язык MQL 5");
   }
}
//---------------------------------------------------------------------
template<typename T>
bool Check(T condition){
   return condition==0;
}

Sì, c'è anche un operatore ternario ).

Da questo percorso (capire e saper scrivere) parte, infatti, la strada dello sviluppatore. IMHO

Документация по MQL5: Основы языка / Операторы / Условный оператор ?:
Документация по MQL5: Основы языка / Операторы / Условный оператор ?:
  • www.mql5.com
В качестве первого операнда – "выражение1" – может быть использовано любое выражение, результатом которого является значение типа bool. Если результат равен , то выполняется третий операнд – "выражениеЗ". Второй и третий операнды, то есть "выражение2" и "выражениеЗ", должны возвращать значения одного типа и не должны иметь тип void. Результатом...
 
Реter Konow:
Ahimè, questo è un modo sbagliato di imparare che non porta da nessuna parte. Cosa c'entra lo "stato" e questa enumerazione? Si tratta di una finzione su un campo di gioco equo.

Ora sarebbe più corretto seguire la logica piuttosto che praticare la sintassi. La logica suggerisce che il risultato della domanda "imparerà o non imparerà la lingua" può essere restituito solo da una funzione che calcola alcuni parametri relativi ad essa. Poiché la funzione deve restituire un risultato sì/no, è dichiarata con il tipo bool. La funzione può essere chiamata direttamente dalla condizione if().

if(Abbastanza tempo() && Abbastanza pazienza()) Print("Imparerò la lingua!");

else Print("Non imparerò la lingua...");


Ora, pensate al contenuto delle funzioni.

Ciao, Peter! Lo farò sicuramente! È solo che la domanda è stata posta:

"...La domanda di controllo: 'abbastanza tempo' - che tipo può essere questa variabile senza un avvertimento del compilatore...".

Questo è quello che stavo cercando di rispondere. Grazie soprattutto per il tuo esempio!


Cordiali saluti, Vladimir.

 
Valeriy Yastremskiy:

ve la prendete con esso, naturalmente il commento è incompleto, la prima variabileinA è come dovrebbe essere, una condizione di esecuzione per così dire, e la secondaa, è come è effettivamente)))))))))) Ed è per questo che inA è inserito tramite un'istanza, ed è immutabile, e la variabile a .... anche se sì, non dovrebbe essere una variabile costante, ma una statica o solo un tipo di testo))))

Ma ha ancora senso)

Ok, forse sono pignolo, ma comunque le enumerazioni sono superflue per lo studente ora. Bisogna ricordare la coerenza del curriculum. Allora scriviamo subito la classe. ))))
 
Реter Konow:
Ok, forse me la prendo con te, ma comunque le enumerazioni non sono necessarie per uno studente in questo momento. Bisogna ricordare la coerenza del curriculum. Allora scriviamo subito la classe. ))))

No, no, no, no!!! Sono già un casino nella mia testa!

Con rispetto, Vladimir.

 
MrBrooklin:

Ciao, Peter! Ci penserò sicuramente! Solo che il punto è che la domanda è stata posta:

"...La domanda di controllo: 'abbastanza tempo' - che tipo può essere questa variabile, in modo che non ci siano avvertimenti del compilatore...".

Questo è quello che stavo cercando di rispondere.


Sinceramente, Vladimir.

Sì, ciao. Esatto, questa era esattamente la domanda, ma non hai ancora risposto correttamente perché il tipo di stringa, nel contesto del contenuto della condizione, non è corretto. Il compilatore non genererà un messaggio di errore o un avvertimento, ma la condizione è difettosa nel suo significato.
 
MrBrooklin:

No, no, no, no!!! Sono già incasinato nella testa!

Con rispetto, Vladimir.

Questo è quello che sto dicendo. Non c'è bisogno di enumerazioni e sintassi inutile ora.
Motivazione: