Z celu demonstracji działania operatora iloczynu logicznego && (I) proponuję przeanalizować następujący przykład: "Jeśli dziś jest niedziela i (&&) jest słońce, to idę na spacer. Inaczej, zostaję w domu”. Przygotujmy taki skrypt.
#property strict
void OnStart()
{
bool IsTodaySunday = true; // dziś jest niedziela
bool IsTodaySunny = true; // dziś jest słońce
//---
if(IsTodaySunday == true && IsTodaySunny == true)
Print("Idę na spacer, ponieważ jest niedziela i jest słońce.");
else
Print("Zostaję w domu.");
//---
}
W nagłówku operatora if, tj. między nawiasami ( ), widzimy dwa warunki rozdzielone symbolem &&. W pierwszym wyrażeniu sprawdzamy czy zmienna IsTodaySunday jest równa true: tak to prawda ponieważ podczas inicjalizacji została jej przypisana właśnie taka wartość. W drugim wyrażeniu sprawdzamy czy IsTodaySunny też jest równa true: tak - prawda. Ponieważ te dwa warunki jednocześnie są prawdziwe to możemy iść na spacer. Gdyby się okazało, że chociaż by jeden z nich nie był prawdziwy, np. podczas inicjalizacji jedna ze zmiennych miała by wartość false, to zgodnie z zapisanym kodem nie moglibyśmy pójść na spacer.
W MQL4 w taki sposób w jednym if można sprawdzać jednocześnie wiele warunków.
#property strict
void OnStart()
{
bool IsTodaySunday = true; // dziś jest niedziela
bool IsTodaySunny = true; // dziś jest słońce
bool IsNewMovie = false; // nie ma nowego filmu
//---
if(IsTodaySunday == true && // prawda - dziś jest niedziela
IsTodaySunny == true && // prawda - dziś jest słońce
IsNewMovie == false) // prawda - nie ma nowego filmu
Print("Idę na spacer, ponieważ jest niedziela i jest słońce i nie ma nowego filmu.");
else
Print("Zostaję w domu.");
//---
}
W powyższym przykładzie (kod 2) dodatkowo sprawdzamy, czy w telewizji leci nowy film. Podczas inicjalizacji przypisaliśmy IsNewMovie wartość false, tj. brak nowego filmu. W nagłówku if w trzecim wyrażeniu sprawdzamy poprawność tego warunku i widzimy, że jest on prawdziwy (false równa się false co jest prawdą) i ponieważ wszystkie 3 warunki są prawdziwe, idziemy na spacer. Spróbuj jakąś zmienną zainicjalizować inaczej, a zobaczysz że skrypt będzie kazał zostać w domu (choć osobiście zalecam chodzić na spacery nie zależnie od tego co nam mówią komputery ).
Sprawdź jak będzie działać poniższy skrypt.
#property strict
void OnStart()
{
bool IsTodaySunday = true; // dziś jest niedziela
bool IsTodaySunny = false; // dziś nie ma słońca
//---
if(IsTodaySunday == true || IsTodaySunny == true)
Print("Idę na spacer, ponieważ albo jest niedziela albo jest słońce.");
else
Print("Zostaję w domu.");
//---
}
Taki skrypt wyśle nas na spacer, ponieważ wystarczy aby przynajmniej jeden z warunków był prawdziwy. Tutaj pierwszy warunek jest prawdziwy, a drugi - nie. Gdyby było odwrotnie, tj. dziś nie była by niedziela, ale było by słońce, to też trzeba było by iść na dwór przewietrzyć się. Tylko w przypadku, gdyby żaden z warunków nie był by prawdziwy, wtedy działanie przeszło by do operatora else i skrypt poprosił by nas zostać w domu. Podobnie jak dla && operatorem sumy logicznej || można sprawdzać jednocześnie wiele warunków.