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

 
#property script_show_inputs
input string inA = "достаточно времени";
input string inB = "достаточно терпения";
const string a = "достаточно времени";
const string b = "достаточно терпения";

//+------------------------------------------------------------------+
void OnStart()
{
   if(inA == a && inB == b)
   {
      Print("я выучу язык MQL 5");
   }
}
//+------------------------------------------------------------------+

UPD:

Eu não gosto de cordas, felizmente o MQL permite explicações de variáveis de entrada e conjuntos a serem criados como um comentário, é melhor assim:

#property script_show_inputs
enum E_STATE
{
   STATE_A/*достаточно времени*/,
   STATE_B/*НЕ достаточно времени*/,
   STATE_C/*достаточно терпения*/,
   STATE_D/*НЕ достаточно терпения*/,
   STATE_E/*достаточно денег*/,
   STATE_F/*НЕ достаточно денег*/
};
input E_STATE inA = STATE_A;
input E_STATE inB = STATE_C;

//+------------------------------------------------------------------+
void OnStart()
{
   if(inA == STATE_A && inB == STATE_C)
   {
      Print("я выучу язык MQL 5");
   }
   else
   {
      Print("я НЕ выучу язык MQL 5");
   }
}
//+------------------------------------------------------------------+
 
Igor Makanu:

UPD:

não gosta de strings, ainda bem que a MQL permite explicações das variáveis de entrada e conjuntos a serem criados como um comentário, melhor assim:

Legal! Com uma tarefa tão simples, tantas soluções diferentes! Obrigado.

Cumprimentos, Vladimir.

 
MrBrooklin:

Ótimo! Com uma tarefa tão simples, tantas soluções diferentes! Obrigado.

Atenciosamente, Vladimir.

Agora seria mais correto seguir a lógica do que praticar a sintaxe. A lógica sugere que o resultado da pergunta "aprenderá ou não o idioma" só pode retornar uma função que calcula alguns parâmetros associados a isto. Como a função deve retornar resultado sim/não, ela é declarada com o tipo bool. A função pode ser chamada diretamente a partir da condição if().

if(Enough_time() && Enough_patience()) Imprimir("Eu aprenderei a língua!");

senão imprimir ("Eu não aprenderei o idioma...");


Agora, pense sobre o conteúdo das funções.

 
Реter Konow:
Infelizmente, isto é um engano, levando-o por um caminho desconhecido de aprendizagem. O que "estado" e esta enumeração têm a ver com isso? É uma ficção em pé de igualdade.

Agora seria mais correto seguir a lógica do que praticar a sintaxe. A lógica sugere que o resultado da pergunta "aprenderá ou não o idioma" só pode ser retornado por uma função que calcula alguns parâmetros relacionados a ele. Como a função deve retornar resultado sim/não, ela é declarada com o tipo bool. A função pode ser chamada diretamente a partir da condição if().

if(Enough_time() && Enough_patience()) Imprimir("Eu aprenderei a língua!");

senão Imprimir ("Ai de mim, não vou aprender a língua...");


Agora, pense sobre o conteúdo das funções.

Você está me escolhendo, é claro que o comentário está incompleto, a primeira variávelemA é como deveria ser, uma condição de execução por assim dizer, e a segundaa, é como de fato é)))))))))) E é por isso que o inA é inserido através de uma instância, e é imutável, e a variável a .... embora sim, não deve ser uma variável constante, mas uma variável estática ou apenas um tipo de texto))))

Mas ainda faz sentido)

 
MrBrooklin:

Ótimo! Com uma tarefa tão simples, tantas soluções diferentes! Obrigado.

Cumprimentos, Vladimir.

E há mais padrões...

#property script_show_inputs

enum EStateTime
{
   TimeOk=0/*достаточно времени*/,
   TimeFail/*НЕ достаточно времени*/
};
enum EStatePatience{
   PatienceOk=0/*достаточно терпения*/,
   PatienceFail/*НЕ достаточно терпения*/
};
enum EStateMoney{
   MoneyOk=0/*достаточно денег*/,
   MoneyFail/*НЕ достаточно денег*/
};
input EStateTime time = TimeOk;
input EStatePatience patience = PatienceOk;
input EStateMoney money = MoneyFail;

//+------------------------------------------------------------------+
void OnStart()
{
   if(Check(time) && Check(patience))
   {
      Print("я выучу язык MQL 5",(Check(money)?NULL:" и это не зависит от денег"));
   }
   else
   {
      Print("я НЕ выучу язык MQL 5");
   }
}
//---------------------------------------------------------------------
template<typename T>
bool Check(T condition){
   return condition==0;
}

Sim, há um operador ternário também).

A partir deste caminho (compreender e saber escrevê-lo) começa, de fato, o caminho do desenvolvedor. IMHO

Документация по MQL5: Основы языка / Операторы / Условный оператор ?:
Документация по MQL5: Основы языка / Операторы / Условный оператор ?:
  • www.mql5.com
В качестве первого операнда – "выражение1" – может быть использовано любое выражение, результатом которого является значение типа bool. Если результат равен , то выполняется третий операнд – "выражениеЗ". Второй и третий операнды, то есть "выражение2" и "выражениеЗ", должны возвращать значения одного типа и не должны иметь тип void. Результатом...
 
Реter Konow:
Infelizmente, esta é uma maneira errada de aprender que não o leva a lugar nenhum. O que tem "estado" e esta enumeração a ver com isso? É uma ficção em pé de igualdade.

Agora seria mais correto seguir a lógica do que praticar a sintaxe. A lógica sugere que o resultado da pergunta "aprenderá ou não o idioma" só pode ser retornado por uma função que calcula alguns parâmetros relacionados a ele. Como a função deve retornar resultado sim/não, ela é declarada com o tipo bool. A função pode ser chamada diretamente a partir da condição if().

if(Enough_time() && Enough_patience()) Imprimir("Eu aprenderei a língua!");

senão imprimir ("Eu não aprenderei o idioma...");


Agora, pense sobre o conteúdo das funções.

Olá, Peter! Com certeza! É que a pergunta foi feita:

"...A questão de controle: 'tempo suficiente' - que tipo pode ser esta variável sem um aviso do compilador...".

Isso era o que eu estava tentando responder. Obrigado especialmente por seu exemplo!


Com os melhores cumprimentos, Vladimir.

 
Valeriy Yastremskiy:

você está escolhendo, é claro que o comentário é incompleto, a primeira variávelemA é como deveria ser, a condição de execução por assim dizer, e a segundaa, é como realmente é)))))))))) E é por isso que o inA é inserido através de uma instância, e é imutável, e a variável a .... embora sim, não deve ser uma variável constante, mas uma variável estática ou apenas um tipo de texto))))

Mas ainda faz sentido)

OK, talvez eu esteja sendo exigente, mas ainda assim, as enumerações são supérfluas para o estudante agora. É necessário lembrar sobre a consistência no currículo. Então vamos escrever a aula de uma só vez. ))))
 
Реter Konow:
OK, posso estar me metendo com você, mas mesmo assim, as enumerações são desnecessárias para um estudante neste momento. É preciso lembrar sobre a consistência no currículo. Então vamos escrever a aula de uma só vez. ))))

Não, não, não, não!!! Eu já estou uma bagunça na minha cabeça!

Atenciosamente, Vladimir.

 
MrBrooklin:

Olá, Peter! Com certeza vou pensar sobre isso! Apenas a questão é que a pergunta foi feita:

"...A questão de controle: 'tempo suficiente' - que tipo pode ser esta variável, para que não haja avisos de compilação...".

Isso era o que eu estava tentando responder.


Atenciosamente, Vladimir.

Sim, olá. Isso mesmo, essa foi exatamente a pergunta, mas você ainda não respondeu corretamente porque o tipo de corda, no contexto do conteúdo da condição, é incorreto. O compilador não gerará uma mensagem de erro ou aviso, mas a condição é defeituosa em seu significado.
 
MrBrooklin:

Não, não, não, não!!! Eu já estou com a cabeça confusa!

Com todo o respeito, Vladimir.

É o que eu estou dizendo. Não há necessidade de enumerações e sintaxe desnecessária agora.