Auto-apprentissage du langage MQL5 à partir de zéro - page 33

 
Vladimir Simakov:

Et puis il y a les motifs...

Oui, il y a aussi un opérateur ternaire )

C'est à peu près à partir de ce chemin (comprendre et savoir comment l'écrire) que commence réellement le chemin du développeur. IMHO

Les points-virgules après les accolades dans les fonctions d'énumération et de modèle sont-ils nécessaires ou est-ce juste pour la lisibilité ?

 
Реter Konow:
C'est ce que je veux dire. Plus besoin d'énumérations et de syntaxe inutile maintenant.
A quoi sert l'API du terminal alors ? Il y a un peu plus d'énumérations qu'à f... ... et les structures requête/résultat et autres sont abondantes)
 
Реter Konow:
"... mais vous n'avez pas encore répondu correctement..."

Valeriy a déjà répondu plus tôt dans son code de 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");
     }
  }
//+------------------------------------------------------------------+

Respectueusement, Vladimir.

 
MrBrooklin:

Valeriy a déjà répondu plus tôt dans son code de script :

Respectueusement, Vladimir.

Oui, cette variante est correcte en termes de syntaxe, mais elle manque toujours de logique. Hier, Vasily a beaucoup écrit sur les fonctions. C'est là qu'ils sont nécessaires :

bool Sufficient_time = Sufficient_time() ;

bool Sufficient_time = Sufficient_time() ;

if(Sufficient_time && Sufficient_patience)Print("Je vais apprendre la langue !") ;

else Print ("I won't.") ;

Vous devez calculer le temps et la patience avant de les mettre dans une condition, et non les définir comme des valeurs par défaut, car le sens d'avoir une condition disparaît - elle est toujours vraie.
 
Valeriy Yastremskiy:

Le point-virgule et la virgule après l'accolade dans l'énumération et la fonction de modèle sont-ils obligatoires ou est-ce une question de lisibilité ?

Une faute de frappe. Je voulais initialement un objet modèle avec liaison macro, mais j'ai décidé de ne pas aggraver la situation).

Et pour les énumérations, oui, c'est nécessaire.

 
Реter Konow:
...C'est là qu'ils sont nécessaires :

bool Sufficient_time = Sufficient_time() ;

bool Sufficient_patience = Sufficient_patience() ;

if(Sufficient_time && Sufficient_patience)Print("Je vais apprendre la langue !") ;

else Print ("I won't.") ;

Peter, une contre question pour vous : pourquoi dans le type bool, qui est destiné à stocker les valeurs booléennes true ou false, avez-vous spécifié sufficiency_time() et sufficiency_patience() ?

Sincèrement, Vladimir.
 
MrBrooklin:

Peter, une contre question pour vous : pourquoi avez-vous spécifié sufficiency_time() et sufficiency_patience() dans le type bool, qui est destiné à stocker les valeurs logiques true ou false?

Salutations, Vladimir.
Car ce sont les fonctions qui doivent être écrites pour calculer la valeur réelle des variables "Enough_time" et "Enough_patience".

Ces fonctions doivent contenir des calculs de paramètres conduisant à une réponse logique oui/non, qu'elles renverront dans des variables. Ces fonctions doivent renvoyer le résultat sous la forme d'une valeur logique vrai/faux.
 
Реter Konow:
"...Oui, cette variante est correcte en termes de syntaxe, mais elle manque toujours de logique..."

Maintenant, je suis complètement perdu : pourquoi n'y a-t-il pas de logique, même si le type bool est utilisé, qui est nécessaire pour stocker des valeurs logiques ? Veuillez clarifier, alors, ce qui n'est pas logique ?

Salutations, Vladimir.

 
MrBrooklin:

Maintenant, je suis complètement perdu : pourquoi n'y a-t-il pas de logique, même si le type bool est utilisé, qui est nécessaire pour stocker des valeurs logiques ? Veuillez préciser ce qu'il n'y a pas de logique ?

Respectueusement, Vladimir.

Regardez : vous mettez les deux variables à true au préalable (avant la condition). Ils seront donc TOUJOURS vrais à chaque début de script. Pourquoi avons-nous besoin de condition alors ? Est-il possible dans ce programme que les variables explicitement initialisées avec true ne soient pas vraies ? - Non ! Parce que vous avez écrit cette valeur en eux et elle ne peut être modifiée nulle part dans le code.

Dans ce cas, la condition n'est pas nécessaire, ni les variables elles-mêmes, car le résultat du script sera TOUJOURS la chaîne "Je vais apprendre la langue".

Cependant, le fait que les valeurs des variables soient calculées dans des fonctions supplémentaires peut conduire à différentes combinaisons de résultats - l'une renverra vrai, l'autre faux, ou les deux renverront faux, ou les deux renverront vrai... Dans ce cas, la condition écrite est justifiée par les variations possibles des valeurs des variables conduisant à l'impression de chaînes différentes.
 
MrBrooklin:

Maintenant, je suis complètement perdu : pourquoi n'y a-t-il pas de logique, même si le type bool est utilisé, qui est nécessaire pour stocker des valeurs logiques ? Veuillez préciser ce qu'il n'y a pas de logique ?

Sincèrement, Vladimir.

Il n'y a pas de logique, car ce sont des variables définies dans le script. Ils devraient être soit des variables définies par l'utilisateur via une instance, soit dérivés de fonctions, ce qui est encore plus logique.

C'est-à-dire que l'utilité du script devrait toujours être présente. Un simple script qui affiche du texte est inutile. Et avec l'entrée de données, ce script vous dira si vous pouvez apprendre la langue) Et avec les fonctions, ils n'existent tout simplement pas, ils ne sont pas écrits, et si vous écrivez, par exemple, le calcul du niveau de connaissance des mathématiques, la connaissance d'autres langues, combien de temps libre, le niveau de désir et la capacité de se souvenir et la fonction retournera Vrai ou Faux sur la base du calcul alors l'utilité sera plus)))).