MQL5 dilini sıfırdan kendi kendine öğrenme - sayfa 44

 
Vladimir Simakov :

Global nesneler, varsayılan bir kurucu ile başlatılır . İlkel (bizim durumumuzda, dize hariç her şey) türleri için bu 0'dır. Ancak yığında tahsis edilen bellek (okunan değişkenler) için başlatma yapılmaz. Bu nedenle, global değişkenler başlatılamaz, bu durumda sıfıra eşit olacaklarını unutmayın. Ancak başlatma eksikliği (aynı zamanda, derleyici uyarılarından kaçınmak için hemen alışın , tabii ki, ne yaptığınızı açıkça bilmiyorsanız) - başlatılmamış bir değişkeni okumak tanımsız davranışa yol açtığı için bu zaten daha ciddi. Örneğin, bu kod yayın ve hata ayıklama yapılarında farklı davranır ve hiç kimse derleyici sürümünü veya optimizasyon ayarlarını değiştirdiğinizde davranışının da değişmeyeceğini garanti edemez:

Merhaba Vladimir! Açıklama için teşekkürler.

Saygılarımla, Vladimir.

 
MrBrooklin :

Peter, ancak global değişkenlere gelince , literatürde global değişkenlerin önceden belirlenmesi gerektiğini henüz bulamadım. Bu konudaki bilginizi artırmak için bir kaynağa bağlantınız var mı? MQL5 Referansında başlatma hakkında açık bir gösterge yoktur , işte ondan bir alıntı:

Bool türü, sayısal gösterimi sırasıyla 1 veya 0 olan true (true) veya false (false) mantıksal değerlerini depolamak için tasarlanmıştır .

Örnekler:

bool a = doğru ;
bool b = yanlış ;
bool c = 1 ;

Dahili gösterim, 1 bayt boyutunda bir tamsayıdır. Unutulmamalıdır ki mantıksal ifadelerde bool türü yerine başka tamsayı veya gerçek tür veya bu tür ifadelerin kullanılmasına izin verilir, derleyici hata üretmeyecektir. Bu durumda sıfır değeri yanlış, diğer tüm değerler doğru olarak yorumlanacaktır.

Saygılarımla, Vladimir.
En azından bunu yapma alışkanlığını geliştirmek için genel değişkenleri açıkça başlatmak arzu edilir. Tekrar ediyorum, mql4'te işlevlerdeki değişkenleri ve dizileri hiç başlatamazsınız, ancak mql5'te zaten zorunludur, aksi takdirde değişkenlerde "çöp" olacaktır.
 

Komut dosyası koduna eklendi:

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

Şimdi, betiğin yorumlarında, programlama okulunun 1. sınıfının öğrencisi için, bool veri türü için önceden tanımlanmış değerin neden tam olarak false olması gerektiğini ve true olmaması gerektiğini bir şekilde açıkça belirtmek gerekir.

Saygılarımla, Vladimir.

 
MrBrooklin :

Komut dosyası koduna eklendi:

Saygılarımla, Vladimir.

Şikayet edecek başka bir şeyim yok. :)
 
MrBrooklin :

MQL5 programlama dilini öğrenmeye ve bu konudaki katılımcılar tarafından bir görevin yürütülmesinin devamı olan script kodunu yayınlamaya devam ediyorum. Komut dosyası tüm modlarda test edildi. Herhangi bir sorun tespit edilmedi. Başlangıç olarak, minimum sayıda giriş parametresi uyguladım. Komut dosyası kodu İngilizce olarak yazılmıştır ve materyalin özümsenmesini kolaylaştırmak için koda yapılan yorumlar Rusça'dır. Bu senaryoda, daha önce söz verdiğim gibi, bir programlama okulunun 1. sınıf öğrencisinin erişebileceği bir sunumda her şeyi açıklamaya çalıştım.

Saygılarımla, Vladimir.

Vladimir, böyle yazamazsın. Dış değişkenler üzerindeki fonksiyonların çalışmasını kapatmayın. Şimdiye kadar sizin için tek istisna, girdi değişkenlerinden değerler almaktır.
 
Vasiliy Sokolov :
Vladimir, böyle yazamazsın. Dış değişkenler üzerindeki fonksiyonların çalışmasını kapatmayın. Şimdiye kadar sizin için tek istisna, girdi değişkenlerinden değerler almaktır.

Merhaba Vasili! Dürüst olmak gerekirse, kalın harflerle yazılanların anlamını tam olarak anlamadım. Lütfen, lütfen ne söylemek istediğinizi daha ayrıntılı açıklayın.

Saygılarımla, Vladimir.

 
MrBrooklin :

Merhaba Vasili! Dürüst olmak gerekirse, kalın harflerle yazılanların anlamını tam olarak anlamadım. Lütfen, lütfen ne söylemek istediğinizi daha ayrıntılı açıklayın.

Saygılarımla, Vladimir.

Genel değişkenler kullanmayın. Neden kullanılamazlar, daha sonra yazacağım.
 
Vasiliy Sokolov :
Genel değişkenler kullanmayın. Neden kullanılamazlar, daha sonra yazacağım.

Bu konuyla ilgili güzel bir anekdot var:

- Soru: c++'da global bir değişken için en uygun tür nedir?

- Cevap: //

 
Vasiliy Sokolov :
Genel değişkenler kullanmayın. Neden kullanılamazlar, daha sonra yazacağım.

Şimdi net. Teşekkürler, cevabınızı bekleyeceğim, neden global değişkenleri kullanamıyorsunuz.

Saygılarımla, Vladimir.

 
Bu aşamada, OOP programlamaya geçişe kadar, global değişkenlerin kullanımı tamamen haklıdır ve bundan uzaklaşmak için hiçbir neden yoktur. Programın herhangi bir yerinde kullanışlı ve kullanımı kolaydır. Neden onları reddedesiniz? BENİM NACİZANE FİKRİME GÖRE.