MQL5 언어를 처음부터 자가 학습 - 페이지 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" );
   }
}
//+------------------------------------------------------------------+

상향:

MQL을 사용하면 주석 형식으로 입력 변수 및 집합에 대한 설명을 만들 수 있으므로 문자열을 좋아하지 않습니다.

 #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 :

상향:

MQL을 사용하면 주석 형식으로 입력 변수 및 집합에 대한 설명을 만들 수 있으므로 문자열을 좋아하지 않습니다.

수업! 이러한 간단한 작업의 예에는 매우 다양한 솔루션이 있습니다! 고맙습니다.

안부 인사를 전합니다. 블라디미르.

 
MrBrooklin :

수업! 이러한 간단한 작업의 예에는 매우 다양한 솔루션이 있습니다! 고맙습니다.

안부 인사를 전합니다. 블라디미르.

이제 구문을 연습하지 않고 논리를 따르는 것이 더 정확할 것입니다. 논리에 따르면 "언어를 배우거나 배우지 않을 것입니다"라는 질문의 결과는 이와 관련된 일부 매개변수를 계산하는 함수에 의해서만 반환될 수 있습니다. 함수는 yes/no 결과를 반환해야 하므로 bool로 선언됩니다. if() 조건에서 직접 함수를 호출 할 수 있습니다.

if(Enough_Time() && Enough_Patience()) Print("언어를 배우겠습니다!");

else Print("나는 언어를 배우지 않을 것입니다...");


이제 함수의 내용에 대해 생각해 보십시오.

 
Реter Konow :
아아, 이것은 잘못된 것이며, 배움의 길은 아무도 모릅니다. 그리고 여기 "상태"와 이 열거? 이것은 뜬금없는 조작입니다.

이제 구문을 연습하지 않고 논리를 따르는 것이 더 정확할 것입니다. 논리에 따르면 "언어를 배우거나 배우지 않을 것입니다"라는 질문의 결과는 이와 관련된 일부 매개변수를 계산하는 함수에 의해서만 반환될 수 있습니다. 함수는 yes/no 결과를 반환해야 하므로 bool로 선언됩니다. if() 조건에서 직접 함수를 호출 할 수 있습니다.

if(Enough_Time() && Enough_Patience()) Print("언어를 배우겠습니다!");

else Print("아, 저는 언어를 배우지 않겠습니다...");


이제 함수의 내용에 대해 생각해 보십시오.

결함을 찾으십시오. 물론 주석이 완전하지 않습니다. 첫 번째 변수 inA 는 어떻게 되어야 하는지, 말하자면 실행 조건이고, 두 번째 a 는 실제로 어떻게 되는지입니다)))))) ))) 그래서 inA가 입력을 통해 입력되고 변경되지 않고 변수 a가 ....그래도 상수 변수가 없어야 하며 정적 또는 텍스트 형식이어야 합니다.))))

그러나 여전히 의미가 있습니다.

 
MrBrooklin :

수업! 이러한 간단한 작업의 예에는 매우 다양한 솔루션이 있습니다! 고맙습니다.

안부 인사를 전합니다. 블라디미르.

그리고 다른 템플릿이 있습니다 ...

 #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 ;
}

예, 삼항 연산자 도 엉망입니다)

대략 이 경로(이해 및 작성 능력)에서 개발자의 경로는 사실 이미 시작됩니다. 임호

Документация по MQL5: Основы языка / Операторы / Условный оператор ?:
Документация по MQL5: Основы языка / Операторы / Условный оператор ?:
  • www.mql5.com
В качестве первого операнда – "выражение1" – может быть использовано любое выражение, результатом которого является значение типа bool. Если результат равен , то выполняется третий операнд – "выражениеЗ". Второй и третий операнды, то есть "выражение2" и "выражениеЗ", должны возвращать значения одного типа и не должны иметь тип void. Результатом...
 
Реter Konow :
아아, 이것은 잘못된 것이며, 배움의 길은 아무도 모릅니다. 그리고 여기 "상태"와 이 열거? 이것은 뜬금없는 조작입니다.

이제 구문을 연습하지 않고 논리를 따르는 것이 더 정확할 것입니다. 논리에 따르면 "언어를 배우거나 배우지 않을 것입니다"라는 질문의 결과는 이와 관련된 일부 매개변수를 계산하는 함수에 의해서만 반환될 수 있습니다. 함수는 yes/no 결과를 반환해야 하므로 bool로 선언됩니다. if() 조건에서 직접 함수를 호출 할 수 있습니다.

if(Enough_Time() && Enough_Patience()) Print("언어를 배우겠습니다!");

else Print("나는 언어를 배우지 않을 것입니다...");


이제 함수의 내용에 대해 생각해 보십시오.

안녕 피터! 확실히 생각하겠습니다! 유일한 질문은 다음과 같습니다.

"... 보안 질문: "충분한 시간" - 컴파일러 경고 가 없도록 이 변수의 유형은 무엇 입니까?..."

그것이 내가 대답하려고 했던 것이다. 예를 들어 주셔서 감사합니다!


안부 인사를 전합니다. 블라디미르.

 
Valeriy Yastremskiy :

결함을 찾으십시오. 물론 주석이 완전하지 않습니다. 첫 번째 변수 inA 는 어떻게 되어야 하는지, 말하자면 실행 조건이고, 두 번째 a 는 실제로 어떻게 되는지입니다)))))) ))) 그래서 inA가 입력을 통해 입력되고 변경되지 않고 변수 a가 ....그래도 상수 변수가 없어야 하며 정적 또는 텍스트 형식이어야 합니다.))))

그러나 여전히 의미가 있습니다.

좋아, 어쩌면 내가 엉뚱한 짓을하고 있지만 여전히 학생에게 열거는 이제 불필요합니다. 훈련 프로그램의 순서를 기억할 필요가 있습니다. 그럼 바로 클래스를 작성해보자.))))
 
Реter Konow :
좋아, 어쩌면 내가 엉뚱한 짓을 하고 있을지도 모르지만, 학생에게는 이제 열거가 불필요합니다. 훈련 프로그램의 순서를 기억할 필요가 있습니다. 그럼 바로 클래스를 작성해보자.))))

아니, 아니!!! 이미 머리가 복잡해!

안부 인사를 전합니다. 블라디미르.

 
MrBrooklin :

안녕 피터! 확실히 생각해볼게요! 유일한 질문은 다음과 같습니다.

"... 보안 질문: "충분한 시간" - 컴파일러 경고 가 없도록 이 변수의 유형은 무엇 입니까?..."

그것이 내가 대답하려고 했던 것이다.


안부 인사를 전합니다. 블라디미르.

네, 안녕하세요. 맞습니다. 질문은 바로 그 질문이었지만 조건의 내용 컨텍스트에서 문자열 유형이 올바르지 않기 때문에 아직 올바르게 대답하지 않았습니다. 컴파일러는 오류나 경고를 발행하지 않지만 조건은 그 의미에 결함이 있습니다.
 
MrBrooklin :

아니, 아니!!! 이미 머리가 복잡해!

안부 인사를 전합니다. 블라디미르.

저도 마찬가지입니다. 이제 열거 및 추가 구문이 필요하지 않습니다.