'Koşullu Dallanma - 'GoTo' Kluge ?

 
MQL4'te Koşullu Dallanma/GoTo için bir 'kluge'/'çalışma çözümü' bulmaya çalışmak
 
Kluglamana gerek yok. Sadece doğru şekilde kodlayın ve sorun genellikle kendi kendine çözülür. Sorunu ve kodunuzu gönderin.
 int nu= 0 ; switch (nu){
   default :
   :
   if (condition) break ;
   :
}
 for ( int nu= 0 ; nu <= 0 ; nu++){
   :
   if (condition) break ;
   :
}
if (nu == 0 ) Print ( "break was taken" );
 
https://docs.mql4.com/basis/operators/if

https://docs.mql4.com/basis/operators/switch

 

Sanırım burada farklı şeylerden bahsediyoruz. Koşulları karşılamayan ve sadece bir sonraki sıralı ifade işlevlerine vb. giden bazı şeyleri atlamak yerine, program içindeki HERHANGİ bir yere atlayabilmek istiyorum.

Günümüzün 'yapılandırılmış' programlama dillerinin çoğu, gerçek kabuslar olabileceğinden GoTo komutlarının kullanımına izin vermez. 'Yapılandırılmış' atama aslında GoTo ifadelerinin kullanımına izin vermedikleri gerçeğine atıfta bulunur. Ancak ihtiyatla kullanılırlarsa, çok faydalı olabilecekleri zamanlar vardır. Ancak kullanımlarından kaynaklanabilecek sorunlar, 'kendi sorumluluğunuzdadır kullanın!' uyarısı ile kullanılmaları gerektirecek kadar büyüktür.

Diğer bir olasılık, gerektiğinde 'çağrılabilen' farklı harici alt rutinlere, modüllere, değişkenlere, işlevlere vb. sahip olmaktır. Ya ana program içinde? veya ayrı olanlarda. Genellikle bunlar kendi özel işlevlerini yerine getirir ve daha sonra elde edilen verileri kullanılmak üzere ana programa geri döndürür. Bunlar, bazı modern yapılandırılmış programlama dillerinde bulunur ve 'Git' komutlarını kullanmak kadar tehlikeli değildir. Belki de Include, Library ve hatta .dll dosyalarının kullanımı buna uygundur? Bu diğer dosyalardan değişkenleri, verileri, işlevleri vb. ana programa nasıl aktaracağımı henüz öğrenemedim. Ya da aslında onları bu şekilde kullanabilirsem? Belki bazı durumlarda bunu EA'da Global değişkenlerin kullanımıyla başarabilirim.

 
Teşekkürler OneWithZachy
 
FourX :
Teşekkürler OneWithZachy

Gerçekten ???,

O zamanlar konunuzu okudum, puanınızı gördüm, kluge'nin ne olduğu hakkında hiçbir fikrim yok, bu yüzden cevap yok :)

İşleve geçmek için değerini veya parametre olarak iletebilirsiniz, dll'ye geçmek için Patrick S Nouvion'dan bu videoyu izlemek isteyebilirsiniz.

Daha fazla bilgi edin ?

daha fazla sorunuz varsa yazın :)

 

GoTo'ya ihtiyaç duymayacağınız fonksiyonlarda programlama yaparsanız katılıyorum

 
onewithzachy :

Gerçekten ???,

O zamanlar konunuzu okudum, puanınızı gördüm, kluge'nin ne olduğu hakkında hiçbir fikrim yok, bu yüzden cevap yok :)

İşleve geçmek için değerini veya parametre olarak iletebilirsiniz, dll'ye geçmek için Patrick S Nouvion'dan bu videoyu izlemek isteyebilirsiniz.

Daha fazla bilgi edin ?

daha fazla sorunuz varsa yazın :)

Henüz 'Çağrı' işlevine çok fazla girmedim. Yine de çoğunlukla, nasıl 'Atlama' yapacağımı (!'FTL' değil (< 8) ve EA programlarındaki 'GoTo' belirli yerlerini sırayla dışında nasıl çözeceğimi umuyorum. Söylediklerinizden, Yapmak istediğim şey için işe yarar mı bilmiyorum.Ama kesinlikle öğrenmek ve bilmek güzel.Hepsi zamanında ve ihtiyacım olduğu gibi.

'Kluge', normalde yapılmayan bir şeyi başarmak için çeşitli şeylerden 'bir araya getirilen' bir şeydir. Bu durumda, MQL4'te standart bir özellik, kapasite ve MQL4'ün parçası olmayan bir 'Git' işlevini/komutunu bir araya getirmeye çalışıyorum. Belirtildiği gibi, bunlara sahip olmamak için iyi nedenler var. Bu, birçok programlama dilinin standart bir parçasıydı, ancak çok kolay bir şekilde bir sürü soruna neden olabildikleri için, bildiğim kadarıyla (neredeyse?) tüm programlama dillerinden çıkardılar. C'de olduğunu sanmıyorum, değil mi? COBOL'dan çıkardılar ve onların FORTRAN'da veya Visual BASIC'te olduğunu sanmıyorum?

Örnek olay: Onlarca yıl önce, içinde birden çok, iç içe ve koşullu dallanma 'GoTo' komutlarıyla küçük, 5 veya 6 satırlık bir BASIC programı (segment) yazdım. 'Tracer' açıkken bile ne yaptığını çözemedim! )< 8) Bilginize: 'İzleyici Açık' komutu 'TRON'du. Kısaltmayı tanıdınız mı? Bu, Walt Disney Studios tarafından yapılan, gerçekten fazla bir hikayesi olmayan, ÇOK kötü olan ilk dijital animasyon filminin adıydı. Sadece (mikroskobik?) (hafif?) bir labirent/matris içinde yarışan bazı sözde hiper/hafif hızlı motosikletler. Remake yapmışlar sanırım. Ama ilki çok kötü olduğu için göremiyorum. GI hala GO = GIGO'dur

 
SDC :

GoTo'ya ihtiyaç duymayacağınız fonksiyonlarda programlama yaparsanız katılıyorum

Merhaba SDC,

Çoğu programlamada olduğu gibi, MQL4, bazı satırların üzerinden atlamak dışında neredeyse tüm ' İşlevler'dir , bir MQL4 EA içinde nasıl yapacağımı bulmaya çalıştığım gerçek bir 'Git' işlevine sahip değildir Bu yüzden emin değilim Neye katılıyorsunuz ve bu arama bağlamında neyi kastediyorsunuz ve neyi kastediyorsunuz? Lütfen genişletin ve açıklayın. Tartışmacı olmamak. Aklınızda bir şey var gibi görünüyor ve bunun ne olduğunu ve bize nasıl faydalı olabileceğini bilmek istiyorum.

 
GOTO'ları BBC Basic günlerinde kullandım. . . Hatta BBC BASIC'i tam zamanlı işimde yaklaşık 7 yıl kullandım. . . BBC Basic'te bile GOSUB ve RETURN vardı, böylece alt programlar ( işlevler ) kullanılabilirdi. . . neden MQL4'te bir GOTO'ya benzeyen bir şey kullanmak isteyesiniz ki? belki ihtiyacınızı açıklayabilirsiniz?
Neden: