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

 
MrBrooklin:

C'est vrai ! J'ai le temps en jours. Et la période de formation et combien de jours se sont écoulés depuis que j'ai commencé. Je suppose que je ne comprends pas quelque chose.

Respectueusement, Vladimir.

En termes de logique des conditions, la chaîne "Je vais apprendre la langue" peut être produite comme résultat du calcul du temps et de la patience disponibles pour l'apprendre. Si l'un des paramètres (temps ou patience) est égal à zéro, alors la langue ne peut être apprise. Par conséquent, il y a une erreur logique dans la condition.
 
MrBrooklin:

Merci, Peter ! On m'a déjà aidé à comprendre cette question.

Je continue à étudier le langage de programmation MQL5 et aujourd'hui je colle le code d'un script, qui est la continuation d'une des tâches des participants de ce fil. J'ai testé le script dans tous les modes. Tout fonctionne comme il se doit. J'ai réglé les paramètres d'entrée au minimum pour commencer.

Salutations, Vladimir.

Faites-vous ... finissez d'écrire les noms russes dans les noms des variables et des fonctions. C'est considéré comme une très mauvaise forme. Il est clair que vous faites des programmes pour vous-même, mais ce n'est pas 1C après tout. Habituez-vous tout de suite au codestyle standard. Il vous sera alors plus facile de lire le code des conseillers experts et des indicateurs d'autres personnes, ce dont vous aurez certainement besoin.

 
Реter Konow:
En termes de logique des conditions, la chaîne "Je vais apprendre la langue" peut être produite comme résultat du calcul du temps et de la patience disponibles pour l'apprendre. Si l'un des paramètres (temps ou patience) est égal à zéro, vous ne serez pas en mesure d'apprendre la langue. Par conséquent, il y a une erreur logique dans la condition.

Voulez-vous dire une erreur logique dans la condition de la fonction elle-même ou dans le fonctionnement du script ?

Salutations, Vladimir.

 
Vasiliy Sokolov:

Vous devriez... arrêter d'écrire des noms russes dans les noms des variables et des fonctions. C'est considéré comme une très mauvaise forme. Il est clair que vous faites des programmes pour vous-même, mais ce n'est pas 1C après tout. Habituez-vous tout de suite au codestyle standard. Il vous sera alors plus facile de lire le code des conseillers experts et des indicateurs d'autres personnes, dont vous aurez certainement besoin.

Vasily, tu ne vas pas le croire, mais je suis tout à fait pour ! C'est juste que la condition de la tâche a été donnée en russe, d'où la continuation. Je vais certainement réécrire le script en anglais.

Salutations, Vladimir.

 
MrBrooklin:

Voulez-vous dire une erreur logique dans la condition de la fonction elle-même ou dans le fonctionnement du script ?

Respectueusement, Vladimir.

Il n'y a pas d'erreurs de syntaxe dans le code, mais la logique est cassée, et vous devez la surveiller de près.

Le calcul lui-même dans la fonction sufficiency_time est illogique. Le temps est suffisant lorsqu'il n'est pas égal à zéro. La fonction calcule la différence de temps et renvoie un booléen oui/non. C'est-à-dire que la fonction n'est pas structurée correctement. Revoir le calcul de sufficiency_time().

Bien que, non. La fonction renvoie un ushort, mais il n'y a toujours pas de logique. Sufficiency_time doit être supérieur à zéro.
 
Реter Konow:
Il n'y a pas d'erreurs de syntaxe dans le code, mais la logique est cassée, et vous devez la surveiller de près.

Le calcul lui-même dans la fonction sufficiency_time est illogique. Le temps est suffisant quand il n'est pas nul. La fonction calcule la différence de temps et renvoie un oui/non logique. C'est-à-dire que la fonction n'est pas structurée correctement. Recalculez sufficiency_time().

Bien que, non. La fonction renvoie un ushort, mais il n'y a toujours pas de logique. Le délai de suffisance doit être supérieur à zéro.

C'est clair maintenant, il faut juste trouver comment le faire. Ce sera quelque chose à faire pendant le week-end.

Salutations, Vladimir.

 
Реter Konow:
Il n'y a pas d'erreurs de syntaxe dans le code, mais la logique est cassée, et vous devez la surveiller attentivement.

Le calcul lui-même dans la fonction sufficiency_time est illogique. Le temps est suffisant quand il n'est pas nul. La fonction calcule la différence de temps et renvoie un oui/non logique. C'est-à-dire que la fonction n'est pas structurée correctement. Revoir le calcul de sufficiency_time().

Bien que, non. La fonction renvoie un ushort, mais il n'y a toujours pas de logique. Sufficiency_time doit être supérieur à zéro.

Si vous écrivez pour les débutants, écrivez en langage simple, il n'y a rien à approfondir de loin, à déprécier.

et vos menaces verront où elles peuvent être intéressantes.
 

Je continue à étudier le langage de programmation MQL5 et je publie le code d'un script, qui est la suite d'une tâche des participants de ce fil. Le script a été testé dans tous les modes. Aucun problème n'a été détecté. Appliqué le nombre minimum de paramètres d'entrée pour commencer. Le code du script est écrit en anglais, les commentaires du code sont en russe, pour faciliter le processus d'apprentissage. Comme je l'ai promis plus tôt, j'ai essayé de décrire le script d'une manière compréhensible pour un élève de la 1ère classe de l'école de programmation.

Meilleures salutations, Vladimir.

//+------------------------------------------------------------------+
//|                                                Learning_MQL5.mq5 |
//|                        Copyright 2020, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright   "Copyright 2020, MetaQuotes Software Corp."
#property link        "https://www.mql5.com"
#property description "Скрипт подводит итог обучения языку программирования MQL5. В зависимости от "
#property description "входных параметров печатает во вкладке \"Эксперт\" торгового терминала два"
#property description "сообщения на русском языке: \"Я выучу язык MQL5!\" или \"Я не выучу язык MQL5!\""
#property description "Код скрипта написан на основе примера, приведенного Valeriy Yastremskiy на сайте"
#property description "MQL5, в теме \"Самообучение языку MQL5 с полного нуля\"." 
#property description "======================================================"
#property description "Ссылка на пример https://www.mql5.com/ru/forum/352460/page30#comment_18646826"
//---
#property version     "1.00"              //версия скрипта 1.00
//---
#property script_show_inputs              //выводить окно со свойствами перед запуском скрипта 
//--- Зададим входные параметры скрипта: 
input ushort Period_learning=500;         //Полный период обучения в днях
input ushort Days_passed=10;              //Сколько дней прошло с начала обучения
input bool   Patience=true;               //Терпение (true - достаточно; false - не достаточно)
//--- Зададим глобальные переменные:
//переменная enough_time (достаточно времени), где ushort - минимальное значение "0", максимальное "65535"
ushort enough_time;
//переменная enough_patience (достаточно терпения), где bool - логическое значение: истина (true) или ложь (false)
bool enough_patience;
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart() //старт работы скрипта
  {
/* Зададим условие для работы скрипта. Если:
   1. значение функции "имею время" будет больше или равно "Полного периода обучения", заданного 
      во входных параметрах скрипта;
   2. и значение функции "имею время" не будет равно нулю;
   3. и значение функции "имею терпение" будет равно значению истина (true)
*/
   if(have_time()>=Period_learning && have_time()!=0 && have_patience()==true)
     {
      Print("Я выучу язык MQL5!");    //выводим сообщение "Я выучу язык MQL5!"
     }
   else //в противном случае
     {
      Print("Я не выучу язык MQL5!"); //выводим сообщение "Я не выучу язык MQL5!"
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
//--- Функция "имею_время"
ushort have_time()            //создаём функцию "имею_время" и присвоим тип данных ushort
  {
   enough_time=Days_passed;   //задаём для значения enough_time (достаточно времени) значение равное
                              //входному параметру "Сколько дней прошло с начала обучения" (Days_passed)

   return(enough_time);       //возвращаем значение "достаточно времени" в функцию "имею время"
  }
//--- Функция "имею_терпение"
bool have_patience()          //создаём функцию "имею_терпение" и присвоим тип данных bool
  {
   enough_patience=Patience;  //задаём для переменной enough_patience (достаточно терпения) значение равное
                              //входному параметру "Терпение" (Patience): истина или ложь

   return(enough_patience);   //возвращаем значение "достаточно терпения" в функцию "имею терпение"
  }
//+------------------------------------------------------------------+
 

Tout d'abord, apprenez à travailler avec les variables de type chaîne de caractères auprès de Dmitry Fedoseyev. Les infostringements sont très brumeux au stade de l'étude du code d'autrui,

Dans l'article qu'il a chroniqué, tout est clair, et vous apprendrez beaucoup de choses en même temps, je parle en tant que lecteur de la plupart des articles ici, je pense que personne n'en a lu plus que moi).

 
MrBrooklin:

C'est vrai ! J'ai le temps en jours. Et la période de formation et combien de jours se sont écoulés depuis que j'ai commencé. Je suppose que je ne comprends pas encore quelque chose.

Salutations, Vladimir.



Votre code et votre logique sont corrects. Sur mon IMHO, j'ai regardé hier, au début j'étais moi-même surpris, mais ensuite j'ai vu la différence... :-)
Raison: