Do tej pory, omawiając operator warunkowy if, stosowaliśmy operator porównania == . Przypomnę, że jeden znak równości = służy do przypisania wartości zmiennej, a podwójny znak równości == do porównywania dwóch zmiennych. W tym rozdziale poznamy inne operatory porównania stosowane w MQL4.
Tabela 1. Operatory porównania.
Operator |
Opis |
---|---|
A == B | Prawda jeśli A równa się B |
A != B | Prawda jeśli A nie równa się B |
A < B | Prawda jeśli A jest mniejsze niż B |
A > B | Prawda jeśli A jest większe niż B |
A <= B | Prawda jeśli A jest mniejsze lub równe B |
A >= B | Prawda jeśli A jest większe lub równe B |
Niżej opisałem przykłady stosowania tych operatorów.
#property strict
void OnStart()
{
//--- deklaracja i inicjalizacja zmiennych
int A_1 = 1, A_2 = 1;
double B_1 = -2.2, B_2 = 5.5;
string C_1 = "Puszek ", C_2 = "Okruszek";
bool D_1 = true, D_2 = false;
//--- 1)
if(A_1 == A_2) // wynik porównania - prawda
Print("A_1 jest równe A_2");
else
Print("A_1 nie jest równe A_2");
//--- 2)
if(B_1 == B_2) /* wynik porównania - fałsz,
działanie przechodzi do operatora 'else' */
Print("B_1 jest równe B_2");
else
Print("B_1 nie jest równe B_2");
//--- 3)
if(C_1 == C_2) /* wynik porównania - fałsz,
działanie przechodzi do operatora 'else' */
Print("C_1 jest równe C_2");
else
Print("C_1 nie jest równe C_2");
//--- 4)
if(D_1 == D_2) /* wynik porównania - fałsz,
działanie przechodzi do operatora 'else' */
Print("D_1 jest równe D_2");
else
Print("D_1 nie jest równe D_2");
}
Skopiuj ten kod do skryptu, następnie uruchom go w terminale i w dzienniku logów w zakładce Strategie zobaczysz komunikaty. Potem skopiuj po kolei wszystkie poniższe kody i sprawdź ich działanie.
Rys. 1. Operatory porównania.
#property strict
void OnStart()
{
string C_1 = "Puszek ", C_2 = "Okruszek";
bool D_1 = true, D_2 = false;
//--- 1)
if(C_1 != C_2) /* wynik porównania - prawda,
ponieważ C_1 nie jest równe C_2 */
Print("C_1 nie jest równe C_2");
else
Print("C_1 jest równe C_2");
//--- 2)
if(D_1 != D_2) /* wynik porównania - prawda,
ponieważ D_1 nie jest równe D_2 */
Print("D_1 nie jest równe D_2");
else
Print("D_1 jest równe D_2");
}
Rys. 2. Operator porównania - nie równa się.
#property strict
void OnStart()
{
int A_1 = 1, A_2 = 1;
double B_1 = -2.2, B_2 = 5.5;
//--- 1)
if(A_1 < A_2) /* wynik porównania - fałsz,
ponieważ A_1 nie jest mniejsze niż A_2 */
Print("A_1 jest mniejsze niż A_2");
else
Print("A_1 nie jest mniejsze niż A_2");
//--- 2)
if(B_1 < B_2) /* wynik porównania - prawda,
ponieważ B_1 jest mniejsze niż B_2 */
Print("B_1 jest mniejsze niż B_2");
else
Print("B_1 nie jest mniejsze niż B_2");
}
Rys. 3. Operator porównania - jest mniejsze niż.
#property strict
void OnStart()
{
int A_1 = 1, A_2 = 1;
double B_1 = -2.2, B_2 = 5.5;
//--- 1)
if(A_1 > A_2) // wynik porównania - fałsz
Print("A_1 jest większe niż A_2");
else
Print("A_1 nie jest większe niż A_2");
//--- 2)
if(B_1 > B_2) // wynik porównania - fałsz
Print("B_1 jest większe niż B_2");
else
Print("B_1 nie jest większe niż B_2");
}
Rys. 4. Operator porównania - jest większe niż.
#property strict
void OnStart()
{
int A_1 = 1, A_2 = 1;
double B_1 = -2.2, B_2 = 5.5;
//--- 1)
if(A_1 <= A_2) /* wynik porównania - prawda,
A_1 nie jest mniejsze niż A_2
ale są one równe
tj. jeden z warunków porównania jest prawdziwy */
Print("A_1 jest mniejsze lub równe A_2");
else
Print("A_1 nie jest mniejsze lub równe A_2");
//--- 2)
if(B_1 <= B_2) /* wynik porównania - prawda,
ponieważ B_1 jest mniejsze niż B_2
ale nie są one równe
tj. jeden z warunków porównania jest prawdziwy */
Print("B_1 jest mniejsze lub równe B_2");
else
Print("B_1 nie jest mniejsze lub równe B_2");
}
Rys. 5. Operator porównania - jest mniejsze lub równe.
#property strict
void OnStart()
{
int A_1 = 1, A_2 = 1;
double B_1 = -2.2, B_2 = 5.5;
//--- 1)
if(A_1 >= A_2) /* wynik porównania - prawda,
A_1 nie jest większe niż A_2
ale są one równe
tj. jeden z warunków porównania jest prawdziwy */
Print("A_1 jest większe lub równe A_2");
else
Print("A_1 nie jest większe lub równe A_2");
//--- 2)
if(B_1 >= B_2) /* wynik porównania - fałsz,
B_1 nie jest większe niż B_2
i nie są one równe
tj, żaden z warunków porównania nie jest prawdziwy */
Print("B_1 jest większe lub równe B_2");
else
Print("B_1 nie jest większe lub równe B_2");
}
Rys. 6. Operator porównania - jest większe lub równe.