MQL5 dilini sıfırdan kendi kendine öğrenme - sayfa 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:

Dizeleri sevmiyorum, çünkü MQL, girdi değişkenleri ve kümeler için bir yorum biçiminde açıklamalar oluşturmanıza izin verdiğinden, şöyle daha iyi:

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

Dizeleri sevmiyorum, çünkü MQL, girdi değişkenleri ve kümeler için bir yorum biçiminde açıklamalar oluşturmanıza izin verdiğinden, şöyle daha iyi:

Sınıf! Bu kadar basit bir görev örneğinde o kadar çok farklı çözüm var ki! Teşekkür ederim.

Saygılarımla, Vladimir.

 
MrBrooklin :

Sınıf! Bu kadar basit bir görev örneğinde o kadar çok farklı çözüm var ki! Teşekkür ederim.

Saygılarımla, Vladimir.

Şimdi mantığı takip etmek ve sözdizimi uygulamamak daha doğru olacaktır. Mantık, "Dili öğreneceğim ya da öğrenmeyeceğim" sorusunun sonucunun ancak bununla ilgili bazı parametreleri hesaplayan bir fonksiyon tarafından döndürülebileceğini öne sürüyor. İşlev bir evet/hayır sonucu döndürmesi gerektiğinden, bool olarak bildirilir. Fonksiyonu doğrudan if() koşulundan çağırabilirsiniz .

if(Enough_Time() && Enough_Patience()) Print("Dili öğreneceğim!");

else Print("Dili öğrenmeyeceğim...");


Şimdi, fonksiyonların içeriğini düşünün.

 
Реter Konow :
Ne yazık ki bu bir yanlıştır, öğrenmenin yolunun nerede olduğunu kimse bilmez. Ve burada "durum" ve bu numaralandırma? Bu birdenbire bir uydurmadır.

Şimdi mantığı takip etmek ve sözdizimi uygulamamak daha doğru olacaktır. Mantık, "Dili öğreneceğim ya da öğrenmeyeceğim" sorusunun sonucunun ancak bununla ilgili bazı parametreleri hesaplayan bir fonksiyon tarafından döndürülebileceğini öne sürüyor. İşlev bir evet/hayır sonucu döndürmesi gerektiğinden, bool olarak bildirilir. Fonksiyonu doğrudan if() koşulundan çağırabilirsiniz .

if(Enough_Time() && Enough_Patience()) Print("Dili öğreneceğim!");

else Print("Ne yazık ki, dili öğrenemeyeceğim...");


Şimdi, fonksiyonların içeriğini düşünün.

hata bul, orada, elbette, yorum tamamlanmadı, ilk değişken inA nasıl olması gerektiği, tabiri caizse yürütme koşulu ve ikincisi a , bu gerçekten böyle))))))) ))) Ve bu yüzden giriş yoluyla inA girilir ve değişmez ve a değişkeni .... evet, ancak sabit bir değişken olmamalı, statik veya sadece bir metin türü olmalıdır))))

Ama yine de mantıklı

 
MrBrooklin :

Sınıf! Bu kadar basit bir görev örneğinde o kadar çok farklı çözüm var ki! Teşekkür ederim.

Saygılarımla, Vladimir.

Ve başka şablonlar da var...

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

Evet, üçlü operatör de berbat durumda)

Yaklaşık olarak bu yoldan (anlama ve yazma yeteneği) geliştiricinin yolu zaten başlar. Benim nacizane fikrime göre

Документация по MQL5: Основы языка / Операторы / Условный оператор ?:
Документация по MQL5: Основы языка / Операторы / Условный оператор ?:
  • www.mql5.com
В качестве первого операнда – "выражение1" – может быть использовано любое выражение, результатом которого является значение типа bool. Если результат равен , то выполняется третий операнд – "выражениеЗ". Второй и третий операнды, то есть "выражение2" и "выражениеЗ", должны возвращать значения одного типа и не должны иметь тип void. Результатом...
 
Реter Konow :
Ne yazık ki bu bir yanlıştır, öğrenmenin yolunun nerede olduğunu kimse bilmez. Ve burada "durum" ve bu numaralandırma? Bu birdenbire bir uydurmadır.

Şimdi mantığı takip etmek ve sözdizimi uygulamamak daha doğru olacaktır. Mantık, "Dili öğreneceğim ya da öğrenmeyeceğim" sorusunun sonucunun ancak bununla ilgili bazı parametreleri hesaplayan bir fonksiyon tarafından döndürülebileceğini öne sürüyor. İşlev bir evet/hayır sonucu döndürmesi gerektiğinden, bool olarak bildirilir. Fonksiyonu doğrudan if() koşulundan çağırabilirsiniz .

if(Enough_Time() && Enough_Patience()) Print("Dili öğreneceğim!");

else Print("Dili öğrenmeyeceğim...");


Şimdi, fonksiyonların içeriğini düşünün.

Selam Peter! Kesinlikle düşüneceğim! Tek soru şuydu:

"... Güvenlik sorusu: "yeterli zaman" - derleyici uyarısı olmaması için bu değişken ne tür olabilir?..."

İşte buna cevap vermeye çalıştım. Örneğiniz için teşekkürler!


Saygılarımla, Vladimir.

 
Valeriy Yastremskiy :

hata bul, orada, elbette, yorum tamamlanmadı, ilk değişken inA nasıl olması gerektiği, tabiri caizse yürütme koşulu ve ikincisi a , bu gerçekten böyle))))))) ))) Ve bu yüzden giriş yoluyla inA girilir ve değişmez ve a değişkeni .... evet, ancak sabit bir değişken olmamalı, statik veya sadece bir metin türü olmalıdır))))

Ama yine de mantıklı

Tamam, belki kusura bakmayın ama yine de, numaralandırmalar öğrenci için artık gereksiz. Eğitim programındaki sırayı hatırlamak gerekir. O zaman hemen bir sınıf yazalım.))))
 
Реter Konow :
Tamam, belki kusura bakmayın ama yine de, numaralandırmalar öğrenci için artık gereksiz. Eğitim programındaki sırayı hatırlamak gerekir. O zaman hemen bir sınıf yazalım.))))

Hayır hayır hayır!!! Zaten kafamda karışıklık var!

Saygılarımla, Vladimir.

 
MrBrooklin :

Selam Peter! Kesinlikle düşüneceğim! Tek soru şuydu:

"... Güvenlik sorusu: "yeterli zaman" - derleyici uyarısı olmaması için bu değişken ne tür olabilir?..."

İşte buna cevap vermeye çalıştım.


Saygılarımla, Vladimir.

Evet merhaba. Bu doğru, soru tam olarak buydu, ancak henüz doğru yanıtlamadınız, çünkü koşulun içeriği bağlamında dize türü yanlış. Derleyici bir hata veya uyarı vermez, ancak koşul anlamında kusurludur.
 
MrBrooklin :

Hayır hayır hayır!!! Zaten kafamda karışıklık var!

Saygılarımla, Vladimir.

Bu konuda ben de öyleyim. Artık numaralandırmalara ve ekstra sözdizimine ihtiyacınız yok.