Kolejny lekki temat dla każdego chcącego się tego programowania nauczyć. Poboczny, ale warto opanować zapis który zaraz pokażę bo potrafi świetnie zredukować treść kodu do jednej linii. Kodu w postaci instrukcji warunkowej. Kodu, który będzie w stanie występować zarówno w wyrażeniu, jak również w miejscu wstawiania parametru do funkcji. Za kolejną wygodą kryje się kolejny zapis i oczywiście kolejny termin: "operator trójargumentowy" ("ternary operator"). Jeżeli to kogoś interesuje, to na pewno nie pożałuje. Nawet na studiach można nie spotkać się z tym zapisem, a jest on prosty i przyjemny.

OPERATOR TRÓJARGUMENTOWY. WYJAŚNIENIE I ZASTOSOWANIE

Zapis o którym mówię można jeszcze nazwać "operatorem warunkowym", ponieważ polega on na przypisaniu jednej z dwóch wartości lub wyrażeń na zasadzie instrukcji warunkowej "if else". Tylko, że zamiast koniecznego dzielenia na dwie klamry, możemy zrealizować nasz plan przy użyciu znaku zapytania, znaku dwukropka i jednej linijki kodu. Dziwi mnie, że na moich studiach informatycznych nie spotkałem się z takim zapisem na żadnym z wykładów, a powinien być jak najbardziej przedstawiony. Uważam operator trójargumentowy za jedną z najprzyjemniejszych rzeczy do opanowania w kwestii pisania eleganckiego kodu. Krótkie wyjaśnienie za nami, a teraz przedstawię jak to prawidłowo zapisać. Najczęściej spotykana składnia jest taka:

(warunek) ? [instrukcja w przypadku prawdy] : [instrukcja w przypadku fałszu];

Najpierw piszemy warunek przy pomocy operatorów relacyjnych tak samo, jakbyście tworzyli warunek do instrukcji "if". Nie musi posiadać nawiasów, natomiast ja je stosuję, gdyż podnoszą mi czytelność bo wiem jaką część tekstu "zajmuje" ten warunek. Następnie tworzymy znak zapytania, najlepiej oddzielając go spacjami znowu ze względu na łatwiejsze czytanie.

Potem piszecie POJEDYNCZĄ instrukcję w postaci stałej, wyrażenia czy wywołania funkcji, bo ona też jest dozwolona. Zwracam uwagę na fakt, iż operator trójargumentowy dopuszcza możliwość zrealizowania jedynie instrukcji prostej (pojedynczej). Gdy chcecie, aby wykonało się wiele instrukcji, to wstawcie sobie metodę, która będzie wywołana po spełnieniu (czy niespełnieniu) warunku.

Kolejna rzecz to znak dwukropka (tutaj też polecę "otoczenie" spacjami), a następnie wstawiamy kolejną pojedynczą instrukcję, która zostanie wykonana przez komputer w przypadku, gdy warunek nie zostanie spełniony. W związku z tym, powyższy zapis jest ekwiwalentny do tego:

if(warunek)
	[instrukcja w przypadku prawdy];
else
	[instrukcja w przypadku fałszu];

OPERATOR TRÓJARGUMENTOWY. PRZYKŁADOWY KOD ŹRÓDŁOWY

Wyjaśniliśmy sobie istotę i sens tego wygodnego zapisu. Teraz zademonstruję Wam działanie w praktyce. Mamy oto taki programik w C, który wykorzystuje operator trójargumentowy. Obejrzyjcie go dokładnie a jak chcecie, możecie go sobie skopiować i skompilować. Odpali się bez problemu.

#include <stdio.h>

int main(void)
{
	int x = 5, y = 3;
	const char *xMessage = "x jest wieksze od y.\n", *yMessage = "y jest wieksze badz rowne x.\n";
	
	printf((x > y) ? xMessage : yMessage);
	
	(x > y) ? printf("Wyswietlam wartosc x: %d\n", x) : printf("Wyswietlam wartosc y: %d\n", y);
	
	getchar();
	
	return 0;
}

Tuż pod definicjami zmiennych macie dwa przykłady zastosowania operatora trójargumentowego. Możecie je osadzić w miejsce parametru funkcji i wtedy jest wybierana jedna z dwóch ścieżek, ale możecie też umieścić wywołania osobnych funkcji i wtedy w zależności od warunku wywoływać całkowicie inne instrukcje. Operator trójargumentowy jest naprawdę poteżny.


Tyle co chciałem przekazać. Jest jeszcze możliwość osadzenia kolejnego operatora warunkowego w już istniejącym operatorze warunkowym. Ponieważ w C nie wychodziło to tak jak powinno, odpuściłem sobie ten przykład.

PODOBNE ARTYKUŁY