MQL5 언어를 처음부터 자가 학습 - 페이지 44

 
Vladimir Simakov :

전역 개체는 기본 생성자로 초기화 됩니다. 프리미티브(우리의 경우 문자열을 제외한 모든 유형) 유형의 경우 이는 0입니다. 그러나 스택에 할당된 메모리(변수 읽기)의 경우 초기화가 수행되지 않습니다. 따라서 전역 변수는 초기화할 수 없습니다. 이 경우 변수는 0과 같습니다. 그러나 초기화 부족(동시에 컴파일러 경고를 피하기 위해 즉시 익숙해지십시오. 물론 수행 중인 작업을 명확하게 알고 있지 않는 한) - 초기화되지 않은 변수를 읽으면 정의되지 않은 동작으로 이어지기 때문에 이것은 이미 더 심각합니다. 예를 들어, 이 코드는 릴리스 및 디버그 빌드에서 다르게 동작하며, 컴파일러 버전이나 최적화 설정을 변경할 때 동작이 변경되지 않을 것이라고 누구도 보장할 수 없습니다.

안녕하세요 블라디미르님! 설명해주셔서 감사합니다.

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

 
MrBrooklin :

Peter, 하지만 전역 변수 에 관해서는 전역 변수가 미리 미리 결정되어야 한다는 문헌을 아직 찾지 못했습니다. 이 주제에 대한 지식을 높일 수 있는 출처에 대한 링크가 있습니까? MQL5 참조에는 초기화에 대한 명시적 표시가 없습니다 . 다음은 해당 참조에서 발췌한 것입니다.

bool 유형 숫자 표현이 각각 1 또는 0인 논리값 true (true) 또는 false (false)를 저장하도록 설계되었습니다.

예:

부울 a = true ;
부울 b = 거짓 ;
부울 c = 1 ;

내부 표현은 1바이트 크기의 정수입니다. 논리 표현식에서 bool 유형 대신 다른 정수 또는 실수 유형 또는 이러한 유형의 표현식을 사용하는 것이 허용되며 컴파일러는 오류를 생성하지 않습니다. 이 경우 값 0은 false로 해석되고 다른 모든 값은 true로 해석됩니다.

안부 인사를 전합니다. 블라디미르.
적어도 그렇게 하는 습관을 기르기 위해서는 전역 변수를 명시적으로 초기화하는 것이 바람직합니다. 반복합니다. mql4에서는 함수의 변수와 배열을 전혀 초기화할 수 없지만 mql5에서는 이미 필수입니다. 그렇지 않으면 변수에 "쓰레기"가 있을 것입니다.
 

스크립트 코드에 추가됨:

 //--- Зададим глобальные переменные:
//переменная enough_time (достаточно времени), где bool - логическое значение: истина (true) или ложь (false)
bool enough_time= false ;
//переменная enough_patience (достаточно терпения), где bool - логическое значение: истина (true) или ложь (false)
bool enough_patience= false ;

이제 스크립트의 주석에서 프로그래밍 학교 1학년 학생에게 bool 데이터 유형 에 대해 미리 정의된 값이 true 가 아니라 정확히 false 여야 하는 이유를 어떻게든 명확하게 설명해야 합니다.

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

 
MrBrooklin :

스크립트 코드에 추가됨:

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

더 이상 불평할 것이 없습니다. :)
 
MrBrooklin :

MQL5 프로그래밍 언어를 계속 연구하고 이 주제의 참가자가 한 작업을 계속 실행하는 스크립트 코드를 게시합니다. 스크립트는 모든 모드에서 테스트되었습니다. 문제가 확인되지 않았습니다. 우선 최소한의 입력 매개변수를 적용했습니다. 스크립트 코드는 영어로 작성되었으며 코드에 대한 주석은 자료의 동화를 용이하게 하기 위해 러시아어로 작성되었습니다. 이 대본에서는 앞서 약속한 대로 프로그래밍 학교 1학년 학생이 볼 수 있는 프레젠테이션에서 모든 것을 설명하려고 했습니다.

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

블라디미르, 당신은 그렇게 쓸 수 없습니다. 외부 변수에 대한 함수 작업을 닫지 마십시오. 지금까지 유일한 예외는 입력 변수 에서 값을 가져오는 것입니다.
 
Vasiliy Sokolov :
블라디미르, 당신은 그렇게 쓸 수 없습니다. 외부 변수에 대한 함수 작업을 닫지 마십시오. 지금까지 유일한 예외는 입력 변수 에서 값을 가져오는 것입니다.

안녕하세요 바실리님! 솔직히 말해서 굵게 표시된 것의 의미를 잘 이해하지 못했습니다. 하고 싶은 말을 좀 더 자세히 설명해주세요.

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

 
MrBrooklin :

안녕하세요 바실리님! 솔직히 말해서 굵게 쓰여진 것의 의미를 잘 이해하지 못했습니다. 하고 싶은 말을 좀 더 자세히 설명해주세요.

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

전역 변수 를 사용하지 마십시오. 그들이 사용할 수없는 이유는 나중에 쓸 것입니다.
 
Vasiliy Sokolov :
전역 변수 를 사용하지 마십시오. 그들이 사용할 수없는 이유는 나중에 쓸 것입니다.

이 주제에 대한 좋은 일화가 있습니다.

- 질문: C++에서 전역 변수에 가장 적합한 유형은 무엇입니까?

- 답변: //

 
Vasiliy Sokolov :
전역 변수 를 사용하지 마십시오. 그들이 사용할 수없는 이유는 나중에 쓸 것입니다.

이제 명확해졌습니다. 감사합니다. 전역 변수를 사용할 수 없는 이유에 대한 답변을 기다리겠습니다.

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

 
이 단계에서 OOP 프로그래밍으로의 전환까지는 전역 변수의 사용이 완전히 정당화되고 이를 거부할 이유가 없습니다. 프로그램의 어느 곳에서나 편리하고 사용하기 쉽습니다. 왜 그들을 거부하겠습니까? 임호.