Podstawy MetaQuotes Language 4-Operatory-Operator switch w Forex-Słownik poleceń MQL4 - bossa.pl
2017.08.21, godz. 08:36

Operator switch

Operator warunkowy switch służy do sprawdzenia zmiennej przekazywanej, jako parametr i wywołania określonych operatorów, obliczeń występujących po znaku dwukropka (:). Każdy wariant wywołania odpowiadający zmiennej przekazywanej w parametrze może przyjmować wartość typu integer, czyli jak wiemy z punktu omawiającego typy zmiennych może być też wartością boolean, datetime, color czy char w kodzie ASCII, nie może natomiast przekazywać, jako parametr obliczeń lub wywołania funkcji. Można powiedzieć, że operator switch jest szczególnym przypadkiem operatorów warunkowych if-else, przy czym został tak pomyślany, aby uprościć i przyspieszyć wykonywania operacji warunkowych.

 

 

Przykład:

switch (parametr)
{
case 1: operatory;
case 2: operatory;
...
default: operatory;
}

 



Operator switch, który jak widać po składni jest funkcją pobierającą jeden parametr typu integer i niezwracającą żadnej wartości (void). Działanie operatora polega na sprawdzaniu, porównaniu poszczególnych wartości za słowem case z przekazywaną wartością, jako parametr. Jeśli dana wartość odpowiada przekazanemu parametrowi to zostają wykonane instrukcje za dwukropkiem (:). Instrukcje za dwukropkiem mogą być to proste lub złożone bloki programu, czyli oddzielone średnikiem (;) lub w nawiasach klamrowych ({}). Jeśli po wystąpieniu danego wariantu nie chcemy, aby były sprawdzane i wykonywane kolejne case możemy użyć operatora break, który jak wiemy powoduje przerwanie działania operatora, w którym został zagnieżdżony, czyli w tym przypadku kończy działania switch.
Opcjonalnie można stosować wartość default umieszczoną na końcu wszystkich warunków case co oznacza, że jeśli przekazany parametr nie odpowiada żadnej z wartości case to zostaną wówczas wywołane operacje za słowem default.
Możliwe jest też stosowanie kilku tych samych wartości za słowem case, czyli wielokrotne spełnienie warunku i wywołanie bloku instrukcji. Co prawda jest to dopuszczalne, ale w większości przypadków nie ma potrzeby komplikowania czytelności kodu programu przez wielokrotne wywołanie case.

 

Przykład:

switch(x)
{
case 'A':
Print("x ma wartość znaku ASCII A, wychodzimy stąd");
break; // kończy dalsze wykonywanie switch
case 'B': // jeśli x równe jest B to nic nie rób
case 'C':
Print ( "x równe jest C");
break;
default:
Print ( "x nie jest równe A, B lub C);
break; // break nie jest obowiązkowe ponieważ switch nie ma dalszych
instrukcji do wykonania
}

 

bos bank logo
Grupa kapitałowa
Nagroda specjalna i tytuł BROKERA ROKU 2015
Nagroda specjalna i tytuł BROKERA
ROKU 2015, przyznane przez GPW.

logo_FMR2017aktualny.jpg Finansowa Marka Roku: wyrazista marka promująca edukację, umocnienie pozycji lidera rynku kontraktów terminowych.

nagroda najlepszy dom maklerski 2015
Najwyższa ocena dla DM BOŚ w ankiecie czytelników Gazety Giełdy Parkiet 2015r.