Autoapprendimento del linguaggio MQL5 da zero - pagina 41

 
MrBrooklin:

Proprio così! Ho il tempo in giorni. E il periodo di allenamento e quanti giorni sono passati da quando ho iniziato. Credo di non capire qualcosa.

Con rispetto, Vladimir.

In termini di logica delle condizioni, la stringa "imparerò la lingua" può essere emessa come risultato del calcolo del tempo e della pazienza disponibili per impararla. Se uno dei parametri (tempo o pazienza) è uguale a zero, allora la lingua non può essere appresa. Pertanto, c'è un errore logico nella condizione.
 
MrBrooklin:

Grazie, Peter! Sono già stato aiutato a capire questo problema.

Continuo a studiare il linguaggio di programmazione MQL5 e oggi vi incollo il codice di uno script, che è la continuazione di uno dei compiti dei partecipanti a questo thread. Ho testato lo script in tutte le modalità. Tutto funziona come dovrebbe. Ho impostato i parametri di input al minimo per cominciare.

Saluti, Vladimir.

Fate ... finire di scrivere i nomi russi nei nomi delle variabili e delle funzioni. Questo è considerato una forma molto cattiva. È chiaro che stai facendo programmi per te stesso, ma questo non è 1C dopo tutto. Abituatevi subito allo stile di codice standard. Allora sarà più facile per voi leggere il codice di altre persone di Expert Advisors e indicatori, di cui avrete sicuramente bisogno.

 
Реter Konow:
In termini di logica delle condizioni, la stringa "imparerò la lingua" può essere emessa come risultato del calcolo del tempo e della pazienza disponibili per impararla. Se uno dei parametri (tempo o pazienza) è uguale a zero, non sarà possibile imparare la lingua. Pertanto, c'è un errore logico nella condizione.

Intendi un errore logico nella condizione della funzione stessa o nel funzionamento dello script?

Saluti, Vladimir.

 
Vasiliy Sokolov:

Dovreste... smettere di scrivere nomi russi nei nomi di variabili e funzioni. Questo è considerato una forma molto cattiva. Capisco che stai facendo programmi per te stesso, ma non è 1C dopo tutto. Abituatevi subito allo stile di codice standard. Allora sarà più facile per voi leggere il codice di Expert Advisors e indicatori di altre persone, di cui avrete sicuramente bisogno.

Vasily, non ci crederai, ma sono d'accordo! È solo che la condizione del compito è stata data in russo, da cui la continuazione. Riscriverò sicuramente la sceneggiatura in inglese.

Saluti, Vladimir.

 
MrBrooklin:

Intendi un errore logico nella condizione della funzione stessa o nel funzionamento dello script?

Con rispetto, Vladimir.

Non ci sono errori di sintassi nel codice, ma la logica è rotta, e bisogna guardarla attentamente.

Il calcolo stesso nella funzione sufficienza_tempo è illogico. Il tempo è sufficiente quando non è uguale a zero. La funzione calcola la differenza di tempo e restituisce un booleano sì/no. Cioè, la funzione non è strutturata correttamente. Rivedere il calcolo di sufficiency_time().

Anche se, no. La funzione restituisce ushort, ma non c'è ancora una logica. Sufficiency_time deve essere maggiore di zero.
 
Реter Konow:
Non ci sono errori di sintassi nel codice, ma la logica è rotta, e bisogna guardarla attentamente.

Il calcolo stesso nella funzione sufficienza_tempo è illogico. Il tempo è sufficiente quando non è zero. La funzione calcola la differenza di tempo e restituisce un sì/no logico. Cioè, la funzione non è strutturata correttamente. Ricalcolare sufficiency_time().

Anche se, no. La funzione restituisce ushort, ma non c'è ancora una logica. Il tempo_di_sufficienza deve essere maggiore di zero.

Ora è chiaro, bisogna solo capire come farlo. Sarà qualcosa da fare nel fine settimana.

Saluti, Vladimir.

 
Реter Konow:
Non ci sono errori di sintassi nel codice, ma la logica è rotta, e bisogna guardarla attentamente.

Il calcolo stesso nella funzione sufficienza_tempo è illogico. Il tempo è sufficiente quando non è zero. La funzione calcola la differenza di tempo e restituisce un sì/no logico. Cioè, la funzione non è strutturata correttamente. Rivedere il calcolo di sufficiency_time().

Anche se, no. La funzione restituisce ushort, ma non c'è ancora una logica. Sufficiency_time deve essere maggiore di zero.

Se stai scrivendo per i principianti, scrivi in un linguaggio semplice, non c'è niente da approfondire da lontano, da sminuire.

e le vostre minacce vedranno dove possono essere di interesse
 

Continuo a studiare il linguaggio di programmazione MQL5 e sto pubblicando il codice di uno script, che è la continuazione di un compito dei partecipanti a questo thread. Lo script è stato testato in tutte le modalità. Non sono stati rilevati problemi. Applicato il numero minimo di parametri di input con cui iniziare. Il codice dello script è scritto in inglese, i commenti al codice sono in russo, per facilitare il processo di apprendimento. Come ho promesso prima, ho cercato di descrivere lo script in un modo comprensibile per un allievo della 1a forma di scuola di programmazione.

Cordiali saluti, 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);   //возвращаем значение "достаточно терпения" в функцию "имею терпение"
  }
//+------------------------------------------------------------------+
 

Per prima cosa, imparate come lavorare con le variabili di stringa da Dmitry Fedoseyev, le infostrazioni sono molto nebbiose nella fase di studio del codice di altre persone,

Nell'articolo che ha recensito, tutto è chiaro, e imparerete un sacco di cose allo stesso tempo, sto parlando come un lettore della maggior parte degli articoli qui, penso che nessuno abbia letto più di me)

 
MrBrooklin:

Proprio così! Ho il tempo in giorni. E il periodo di allenamento e quanti giorni sono passati da quando ho iniziato. Credo di non aver ancora capito qualcosa.

Saluti, Vladimir.



Il tuo codice e la tua logica sono corretti. Sul mio IMHO, ho guardato ieri, all'inizio ero sorpreso io stesso, ma poi ho colto la differenza... :-)