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

 
Реter Konow:
Regardez : vous mettez les deux variables à true au préalable (avant la condition). C'est-à-dire qu'ils seront TOUJOURS vrais à chaque lancement du script. Pourquoi, alors, avons-nous besoin d'une condition ? 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.

Merci, Peter, pour cette clarification !

Salutations, Vladimir.

 
Valeriy Yastremskiy:

Il n'y a pas de logique, car ce sont des variables définies dans le script. Ils devraient être soit des variables que l'utilisateur définit via une intuition, 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 la saisie de données, ce script vous dira si vous pouvez apprendre la langue) Et avec les fonctions, elles n'existent tout simplement pas, elles ne sont pas écrites, et si vous écrivez, par exemple, un calcul à partir du niveau de connaissance des mathématiques, de la connaissance d'autres langues, de la quantité de temps libre, du niveau de désir et de la capacité à mémoriser et que la fonction renvoie Vrai ou Faux en fonction du calcul, l'utilité sera plus)))).

Valery, merci beaucoup pour cette réponse détaillée !

Sincèrement, Vladimir.

 

Voici une version révisée du script, avec des conseils pour ceux qui découvrent le script et qui lisent ou non ce fil de discussion :

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

Ajouté au script :

  1. "afficher la fenêtre des propriétés avant d'exécuter le script" ;
  2. Capacité à modifier les variables externes.

Salutations, Vladimir.

 
Реter Konow:
Oui, cette variante est correcte en termes de syntaxe, mais elle manque toujours de logique. Hier, Vasiliy a beaucoup écrit sur les fonctions. 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.") ;

Vous devez calculer le temps et la patience avant de les mettre dans une condition au lieu de les définir par défaut, car cela n'a aucun sens d'avoir la condition - elle est toujours vraie.

+1. C'est exact.

 
Реter Konow:
"... Vous devriez calculer le temps et la patience avant de les mettre dans une condition plutôt que de les définir par défaut, car le sens d'avoir une condition disparaît - elle est toujours vraie."

Je vais certainement le faire, mais plus tard, car ma "marmite" est déjà en train de bouillir et je dois la refroidir un peu.

Sincèrement, Vladimir.

 
MrBrooklin:

Voici une version corrigée du script, tenant compte des indications :

Ajouté au script :

  1. "afficher la fenêtre des propriétés avant d'exécuter le script" ;
  2. Capacité à modifier les variables externes.

Salutations, Vladimir.

C'est ça ! Et ensuite, essayez d'écrire des fonctions qui calculent les valeurs de ces variables en fonction des valeurs d'autres variables externes.

C'est-à-dire que la fonction Enough_time() prendra les valeurs des variables externes :

Date d'entrée Days_training = 100 ;
Entrée uchar Hour_in_day = 5 ;
... et ainsi de suite...

En d'autres termes, les fonctions prendront les valeurs de vos variables d'entrée et effectueront des calculs, et le résultat sera renvoyé dans les variables Sufficient_time et Sufficient_patience, que vous pourrez ensuite placer dans une condition avec plusieurs options, chacune d'entre elles imprimant une chaîne différente.

 
Реter Konow:
Vous avez raison ! Et ensuite, essayez d'écrire des fonctions qui calculent les valeurs de ces variables en fonction des valeurs d'autres variables externes.

C'est-à-dire que Sufficient_time() prendra les valeurs des variables externes :

entrée datetime Days_training_day = 100 ;
Entrée uchar Hour_in_day = 5 ;
... et ainsi de suite...

Ensuite, les fonctions prendront les valeurs des variables d'entrée et effectueront des calculs, et le résultat sera renvoyé dans les variables Enough_time et Enough_patience, que vous pouvez ensuite placer dans une condition avec plusieurs options, dont chacune imprimera une chaîne différente.

Peter, mets ta suggestion dans mon plan d'auto-apprentissage. Le résultat sera posté ultérieurement sous la forme d'un script de code.

Salutations, Vladimir.

 
MrBrooklin:

Je vais certainement le faire, mais plus tard, car ma "marmite" est déjà en train de bouillir et je dois la laisser refroidir un peu.

Sincèrement, Vladimir.

Bien sûr, faites une pause).
 
Реter Konow:
C'est ça ! Et ensuite, essayez d'écrire des fonctions qui calculent les valeurs de ces variables en fonction des valeurs d'autres variables externes.

C'est-à-dire que Sufficient_time() prendra les valeurs des variables externes :

entrée datetime Days_training_day = 100 ;
Entrée uchar Hour_in_day = 5 ;
... et ainsi de suite...

C'est plus ou moins clair avec le temps, mais les variables de "Assez de patience" posent toujours problème. Que dois-je mettre dedans ? Avoir de la patience ou ne pas en avoir ? Au moins ces deux paramètres ? Je dois y réfléchir.

Salutations, Vladimir.

 
MrBrooklin:

Le temps est plus ou moins clair, mais les variables pour "Assez de patience" posent problème. Que mettre dedans ? Y a-t-il de la patience ou pas de patience ? Au moins ces deux paramètres ? Je dois y réfléchir.

Salutations, Vladimir.

1. Mood (énumération de types par des unités conditionnelles initialisées).

2. Perception de soi (la même chose).

3. Quotient de motivation.

4. Le coefficient de croyance dans le forex

...

Trouvez quelques formules de calcul et le tour est joué).