Auto-apprentissage du langage MQL5 à partir de zéro - page 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 :

Je n'aime pas les chaînes de caractères, heureusement que MQL vous permet de créer des explications sur les variables d'instance et les ensembles en tant que commentaire, c'est mieux comme ça :

#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 :

Je n'aime pas les chaînes de caractères, heureusement que MQL permet de créer des explications sur les variables d'entrée et les ensembles sous forme de commentaire, c'est mieux comme ça :

Cool ! Avec une tâche aussi simple, tant de solutions différentes ! Merci.

Salutations, Vladimir.

 
MrBrooklin:

Super ! Avec une tâche aussi simple, tant de solutions différentes ! Merci.

Sincèrement, Vladimir.

Maintenant, il serait plus correct de suivre la logique plutôt que de pratiquer la syntaxe. La logique suggère que le résultat de la question "apprendra ou n'apprendra pas la langue" ne peut que renvoyer une fonction qui calcule certains paramètres associés à celle-ci. Comme la fonction doit renvoyer un résultat oui/non, elle est déclarée avec le type bool. Vous pouvez appeler la fonction directement à partir de la condition if().

if(Enough_time() && Enough_patience()) Print("Je vais apprendre la langue !") ;

else Print("Je n'apprendrai pas la langue...") ;


Maintenant, pensez au contenu des fonctions.

 
Реter Konow:
Hélas, il s'agit d'une fausse piste, qui vous entraîne sur un chemin d'apprentissage inconnu. Qu'est-ce que "l'état" et cette énumération ont à voir avec cela ? C'est une fiction sur l'égalité des chances.

Maintenant, il serait plus correct de suivre la logique plutôt que de pratiquer la syntaxe. La logique suggère que le résultat de la question "apprendra-t-il ou non la langue" ne peut être renvoyé que par une fonction qui calcule certains paramètres qui lui sont liés. Comme la fonction doit renvoyer un résultat oui/non, elle est déclarée avec le type bool. La fonction peut être appelée directement à partir de la condition if().

if(Enough_time() && Enough_patience()) Print("Je vais apprendre la langue !") ;

else Print("Hélas, je n'apprendrai pas la langue...") ;


Maintenant, pensez au contenu des fonctions.

Vous vous en prenez à moi, bien sûr le commentaire est incomplet, la première variabledans A est comme elle devrait être, une condition d'exécution, pour ainsi dire, et la secondea, est comme elle est en fait)))))))))). Et c'est pourquoi inA est saisi via une instance, et est immuable, et la variable a ..... bien que oui, ce ne devrait pas être une variable constante, mais une variable statique ou juste un type de texte)))).

Mais cela a quand même un sens)

 
MrBrooklin:

Super ! Avec une tâche aussi simple, tant de solutions différentes ! Merci.

Salutations, Vladimir.

Et il y a d'autres modèles...

#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;
}

Oui, il existe aussi un opérateur ternaire ).

C'est à partir de ce chemin (comprendre et savoir comment l'écrire) que commence, en fait, le chemin du développeur. IMHO

Документация по MQL5: Основы языка / Операторы / Условный оператор ?:
Документация по MQL5: Основы языка / Операторы / Условный оператор ?:
  • www.mql5.com
В качестве первого операнда – "выражение1" – может быть использовано любое выражение, результатом которого является значение типа bool. Если результат равен , то выполняется третий операнд – "выражениеЗ". Второй и третий операнды, то есть "выражение2" и "выражениеЗ", должны возвращать значения одного типа и не должны иметь тип void. Результатом...
 
Реter Konow:
Hélas, c'est une mauvaise façon d'apprendre qui ne mène nulle part. Qu'est-ce que "l'état" et cette énumération ont à voir avec cela ? Il s'agit d'une fiction sur l'égalité des chances.

Maintenant, il serait plus correct de suivre la logique plutôt que de pratiquer la syntaxe. La logique suggère que le résultat de la question "apprendra-t-il ou non la langue" ne peut être renvoyé que par une fonction qui calcule certains paramètres qui lui sont liés. Comme la fonction doit renvoyer un résultat oui/non, elle est déclarée avec le type bool. La fonction peut être appelée directement à partir de la condition if().

if(Enough_time() && Enough_patience()) Print("Je vais apprendre la langue !") ;

else Print("Je n'apprendrai pas la langue...") ;


Maintenant, pensez au contenu des fonctions.

Bonjour, Peter ! Je le ferai certainement ! C'est juste que la question a été posée :

"...La question du contrôle : 'suffisamment de temps' - quel type peut être cette variable sans un avertissement du compilateur...".

C'est ce que j'essayais de répondre. Merci surtout pour votre exemple !


Meilleures salutations, Vladimir.

 
Valeriy Yastremskiy:

vous vous en prenez à lui, bien sûr le commentaire est incomplet, la première variabledans A est comme elle devrait être, une condition d'exécution pour ainsi dire, et la deuxièmea, est comme elle est réellement)))))))))) Et c'est pourquoi inA est entré via une instance, et est immuable, et la variable a ..... bien que oui, ce ne devrait pas être une variable constante, mais une variable statique ou juste un type de texte)))).

Mais cela a quand même un sens)

OK, peut-être que je suis pointilleux, mais quand même, les énumérations sont superflues pour l'étudiant maintenant. Il ne faut pas oublier la cohérence du programme. Alors, écrivons la classe tout de suite. ))))
 
Реter Konow:
OK, je m'en prends peut-être à vous, mais il n'en reste pas moins que les recensements sont inutiles pour un étudiant à l'heure actuelle. Il ne faut pas oublier la cohérence du programme. Alors, écrivons la classe tout de suite. ))))

Non, non, non, non ! !! Je suis déjà un désordre dans ma tête !

Respectueusement, Vladimir.

 
MrBrooklin:

Bonjour, Peter ! Je vais certainement y réfléchir ! Mais l'essentiel est que la question ait été posée :

"...La question du contrôle : 'suffisamment de temps' - quel type peut être cette variable, pour qu'il n'y ait pas d'avertissement du compilateur...".

C'est ce que j'essayais de répondre.


Sincèrement, Vladimir.

Oui, bonjour. C'est exact, c'était exactement la question mais vous n'y avez pas encore répondu correctement car le type de chaîne, dans le contexte du contenu de la condition, est incorrect. Le compilateur ne génère pas de message d'erreur ou d'avertissement mais la condition est défectueuse dans sa signification.
 
MrBrooklin:

Non, non, non, non ! !! Je suis déjà un désordre dans ma tête !

Sincèrement, Vladimir.

C'est ce que je dis. Plus besoin d'énumérations et de syntaxe inutile maintenant.