Auto-aprendizagem da linguagem MQL5 a partir do zero - página 41

 
MrBrooklin:

Isso mesmo! Eu tenho o tempo em dias. E o período de treinamento e quantos dias se passaram desde o meu início. Acho que não estou entendendo algo.

Com todo o respeito, Vladimir.

Em termos de lógica de condições, a seqüência "aprenderei a língua" pode ser produzida como resultado do cálculo do tempo e paciência disponíveis para aprendê-la. Se um dos parâmetros (tempo ou paciência) for igual a zero, então o idioma não pode ser aprendido. Portanto, há um erro lógico na condição.
 
MrBrooklin:

Obrigado, Peter! Eu já fui ajudado a entender esta questão.

Estou continuando meu estudo da linguagem de programação MQL5 e hoje estou colando o código de um script, que é uma continuação de uma das tarefas dos participantes deste tópico. Testei o roteiro em todos os modos. Tudo funciona como deveria. Eu defini os parâmetros de entrada como um mínimo para começar.

Cumprimentos, Vladimir.

Você faz ... termina de escrever os nomes russos nos nomes das variáveis e funções. Isto é considerado uma forma muito ruim. Claramente você está fazendo programas para si mesmo, mas isto não é 1C, afinal. Acostume-se imediatamente ao estilo de códigos padrão. Então, será mais fácil para você ler o código de outras pessoas de Expert Advisors e indicadores, que você definitivamente precisará.

 
Реter Konow:
Em termos de lógica de condições, a seqüência "aprenderei a língua" pode ser produzida como resultado do cálculo do tempo e paciência disponíveis para aprendê-la. Se um dos parâmetros (tempo ou paciência) for igual a zero, você não será capaz de aprender o idioma. Portanto, há um erro lógico na condição.

Você quer dizer um erro lógico no estado da própria função ou no funcionamento do roteiro?

Cumprimentos, Vladimir.

 
Vasiliy Sokolov:

Você deve... parar de escrever nomes russos nos nomes das variáveis e funções. Isto é considerado uma forma muito ruim. É claro que você está fazendo programas para si mesmo, mas afinal não é 1C. Acostume-se imediatamente ao estilo de códigos padrão. Então será mais fácil para você ler o código de Conselheiros Especialistas e indicadores de outras pessoas, que você definitivamente precisará.

Vasily, você não vai acreditar, mas eu sou a favor disso! É apenas a condição da tarefa que foi dada em russo, daí a continuação. Reescreverei definitivamente o roteiro usando o inglês.

Cumprimentos, Vladimir.

 
MrBrooklin:

Você quer dizer um erro lógico no estado da própria função ou no funcionamento do roteiro?

Com todo o respeito, Vladimir.

Não há erros de sintaxe no código, mas a lógica está quebrada, e você tem que vigiá-la de perto.

O cálculo em si na função sufficiency_time é ilógico. O tempo é suficiente quando não é igual a zero. A função calcula a diferença de tempo e retorna um sim/não booleano. Ou seja, a função não está estruturada corretamente. Revisar o cálculo do tempo_suficiente().

Embora, não. A função retorna curto, mas ainda não há lógica. O tempo de suficiência_deve ser maior que zero.
 
Реter Konow:
Não há erros de sintaxe no código, mas a lógica está quebrada, e você tem que vigiá-la de perto.

O cálculo em si na função sufficiency_time é ilógico. O tempo é suficiente quando não é zero. A função calcula a diferença de tempo e retorna um sim/não lógico. Ou seja, a função não está estruturada corretamente. Recalcular o tempo_suficiente().

Embora, não. A função retorna curto, mas ainda não há lógica. O tempo_suficiente deve ser maior que zero.

Agora está claro, basta descobrir como fazer isso. Será algo a ser feito no fim de semana.

Cumprimentos, Vladimir.

 
Реter Konow:
Não há erros de sintaxe no código, mas a lógica está quebrada, e você tem que observá-la cuidadosamente.

O cálculo em si na função sufficiency_time é ilógico. O tempo é suficiente quando não é zero. A função calcula a diferença de tempo e retorna um sim/não lógico. Ou seja, a função não está estruturada corretamente. Revisar o cálculo do tempo_suficiente().

Embora, não. A função retorna curto, mas ainda não há lógica. O tempo de suficiência_deve ser maior que zero.

Se você está escrevendo para iniciantes, escreva em linguagem simples, não há nada para entrar de longe, para menosprezar.

e suas ameaças verão onde elas podem ser de interesse
 

Continuo estudando a linguagem de programação MQL5 e estou postando o código de um script, que é uma continuação de uma tarefa dos participantes deste tópico. O roteiro foi testado em todos os modos. Não foram detectados problemas. Aplicou o número mínimo de parâmetros de entrada para começar. O código do roteiro é escrito em inglês, os comentários ao código estão em russo, para facilitar o processo de aprendizagem. Como prometi anteriormente, tentei descrever o roteiro de uma forma compreensível para um aluno da escola de programação de 1ª série.

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

Primeiro, aprenda a trabalhar com variáveis de string com Dmitry Fedoseyev, os infostringements são muito nebulosos na fase de estudo do código de outras pessoas,

No artigo que ele revisou, tudo está claro, e você aprenderá muitas coisas ao mesmo tempo, estou falando como leitor da maioria dos artigos aqui, eu acho que ninguém leu mais do que eu)

 
MrBrooklin:

Isso mesmo! Eu tenho o tempo em dias. E o período de treinamento e quantos dias se passaram desde o meu início. Acho que ainda não entendi algo.

Cumprimentos, Vladimir.



Seu código e sua lógica estão corretos. Em meu IMHO, olhei ontem, no início eu mesmo me surpreendi, mas depois percebi a diferença... :-)