W tym materiale poruszam lekki programistyczny temat, który skutecznie podnosi jakość pisanego przez nas kodu 🌟! Poznaj operator trójargumentowy, który w programowaniu jest przyjemnym skrótem do przypisywania jednej z dwóch wartości zmiennej zależnie od wartości logicznej ❤️! Pokażę jak się tego używa i kiedy to jest dozwolone 👍. Zapraszam do środka!
OPERATOR TRÓJARGUMENTOWY W PROGRAMOWANIU JAKO CENNY "SMACZEK" DO KODU
Wyjaśnimy sobie na początek termin, przedstawię jego zalety i wady, a potem przejdziemy do prostego przykładowego kodu.
CZYM JEST OPERATOR TRÓJARGUMENTOWY W PROGRAMOWANIU?
Operator trójargumentowy (ang. ternary operator), to w programowaniu zwięzła jednowierszowa konstrukcja służąca do efektywnego przypisywania jednej z dwóch wartości zależnie od wartości logicznej, którą głównie uzyskujemy w formie wyrażenia powstałego z użyciem operatorów logicznych i relacyjnych np. instrukcje warunkowe (tutaj nie ma ograniczenia) 💡. Nazywany jest również "operatorem warunkowym", gdyż to działa na zasadzie instrukcji "if else" i to jest hasło odnoszące się do tego samego.
Ten zapis nie jest konieczny aby nauczyć się programowania, natomiast warto go znać, ponieważ zaletą jego stosowania jest sprowadzenie wielowierszowej konstrukcji "if else" mającej na celu jedynie przypisać wartość jakiejś zmiennej do jednej linijki kodu 🤩! Uważam go za jedną z najbardziej przydatnych konstrukcji mających na celu realnie uprościć kod 🌟. Dodatkowo nie ogranicza w żaden sposób formułowania warunków ani miejsca występowania (może znaleźć się zarówno w wyrażeniu, jak podczas przypisywania do zmiennej), więc mamy taką samą pełną swobodę, jakbyśmy pisali w sposób tradycyjny 😊. Natomiast jest jedna "łyżka dziegciu".
KIEDY MOŻEMY UŻYĆ OPERATORA TRÓJARGUMENTOWEGO W PROGRAMOWANIU?
Operatora trójargumentowego można użyć wyłącznie do instrukcji mających na celu przypisanie jednej z dwóch nowych wartości ⚠️. W pozostałych przypadkach nie będziemy mogli z tego skorzystać ⛔. Na przykład gdy w jednej z dwóch możliwości, poza przypisaniem nowej wartości mamy też wywołanie jakiejś funkcji, to ten fakt uniemożliwia nam "wplecenie" tego wywołania w środek operatora ❌. To jest jedyne ważne ograniczenie, którego trzeba być świadom.
JAK UTWORZYĆ OPERATOR TRÓJARGUMENTOWY W PROGRAMOWANIU?
Postać operatora trójargumentowego zależy od używanego języka programowania, ponieważ występuje kilka różnych konstrukcji, natomiast skoncentrujemy się na tej najczęściej występującej, która wygląda następująco 👇:
[wartość logiczna] ? [wartość, gdy przyjmuje "true"] : [wartość, gdy przyjmuje "false"];Kluczowym znakiem w kodzie źródłowym jest znak zapytania ❓. Przeanalizujmy całą budowę 🔍!
Zaczynamy od wartości logicznej i może być w dowolnej postaci: stała, wyrażenie z użyciem operatorów relacyjnych (i ewentualnie logicznych) bądź wartość zwracana przez funkcję 👍. Zaraz po niej umieszczamy znak zapytania, który jest specjalnie zarezerwowany dla operatora trójargumentowego. Następnie wstawiamy wartość, która zostanie przypisana w sytuacji, gdy podana wartość logiczna okaże się prawdziwa (przyjmie wartość "true"). W tym miejscu piszemy kolejny znak będący częścią składni: dwukropek 🔥. Po nim wpisujemy wartość jaka zostanie przypisana, gdy podana wartość logiczna okaże się fałszywa (przyjmie wartość "false"). Całość kończymy średnikiem jak każdą inną instrukcję ✔️.
Całe wyrażenie oznaczać będzie jeden z dwóch następujących scenariuszy 👇:
- jeżeli wartość logiczna będzie prawdziwa (równa "true"), to zostanie przypisana wartość występująca zaraz po znaku zapytania,
- jeżeli wartość logiczna będzie fałszywa (równa "false"), to zostanie przypisana wartość występująca po znaku dwukropka.
W praktyce, to oznacza że powyższa postać da identyczny efekt do poniższej instrukcji warunkowej 👇:
if([wartość logiczna])
{
[wartość, gdy przyjmuje "true"];
}
else
{
[wartość, gdy przyjmuje "false"];
}To jest największa zaleta operatora trójargumentowego ❤️. Miej na uwadze, że tylko taka forma pozwala na użycie tego operatora! Jeżeli Twój kod w jakikolwiek sposób odbiega od tej postaci (np. w bloku "else" znajduje się dodatkowa instrukcja zaraz po przypisaniu), wtedy nie możesz tego użyć i musisz napisać tradycyjnie (albo przebudować kod, tak aby można było użyć skróconego zapisu 💡) ❌.
Warto wiedzieć, że całe to wyrażenie dotyczy samego przypisania wartości, zatem możemy je wstawić zarówno do zmiennej 👇:
int x = [wartość logiczna] ? [wartość, gdy przyjmuje "true"] : [wartość, gdy przyjmuje "false"];jak również bezpośrednio w miejsce wywołania innej funkcji jako parametr 👇:
doSomething([wartość logiczna] ? [wartość, gdy przyjmuje "true"] : [wartość, gdy przyjmuje "false"]);Obie formy są poprawne ✅.
Zależnie od języka programowania mogą być wstawione wartości dwóch różnych typów, lecz zalecam mimo wszystko trzymać się jednego typu dla dwóch wartości, tak aby nie było potem żadnych problemów.
Jest jeszcze możliwość zagnieżdżania operatorów trójargumentowych, czyli wstawienie drugiego takiego samego wyrażenia w miejsce wartości do przypisania 👇:
[wartość logiczna] ? [wartość logiczna] ? [wartość, gdy przyjmuje "true"] : [wartość, gdy przyjmuje "false"] : [wartość, gdy przyjmuje "false"];Natomiast wtedy mocno pogarsza się czytelność i nie radzę tego nadużywać 😜.
Przejdźmy do ukazania prostego przykładu użycia ⏩!
PRZYKŁAD UŻYCIA OPERATORA TRÓJARGUMENTOWEGO W PROGRAMOWANIU
Przykładowe użycie operatora trójargumentowego będzie polegać na ustaleniu dla liczb od 1 do 5 czy dana liczba jest parzysta lub nieparzysta i wypisaniu tej informacji na konsolę 🔢. Używając języka C, w taki sposób możemy wykonać to zadanie 👇:
#include <stdio.h>
int main(void)
{
for (int i = 1; i <= 5; i++)
{
char *parityType = i % 2 == 0 ? "parzysta" : "nieparzysta";
printf("Liczba %d jest %s\n", i, parityType);
}
return 0;
}Tłumaczę cały zapis 📜.
Do wykonania tej samej operacji dla wielu liczb możemy bez problemu posłużyć się pętlą "for" i przypisać wartość początkową równą 1 oraz wartość końcową równą 5 🙂. W środku bloku mamy wskaźnik typu znakowego, co oznacza typ łańcuchowy do przechowywania łańcuchów znaków 💥. W języku C nie było jeszcze "prawdziwego" typu danych "string" jaki występuje w wielu innych językach i wtedy stosujemy wskaźnik do zmiennej typu "char" albo tworzymy tablicę składającą się z pojedynczych znaków, choć różnice nie kończą się tylko na samym zapisie (w odrębnym artykule tłumaczę na co trzeba uważać podczas korzystania z obu zapisów ℹ️).
Dla tej zmiennej korzystamy z operatora trójargumentowego celem wygodnego przypisania jednego z dwóch łańcuchów znaków jako wyraz dotyczący parzystości ❤️. Liczba jest parzysta wtedy, gdy reszta z dzielenia przez 2 wynosi 0 (zero) 💡. To będzie warunek wstawiony do operatora 🚀! Wartości wpisujemy zgodnie "ze wzorem" na operator warunkowy ✅.
Ostatnią instrukcją jest wywołanie funkcji "printf" celem wypisania informacji na strumień wyjściowy na temat parzystości liczby. W miejsce odpowiednich specyfikatorów formatu, wprowadzamy kolejno liczbę ze zmiennej iteracyjnej pętli "for" i łańcuch wyznaczany przez operator trójargumentowy. To wszystko 😊.
Po skompilowaniu i uruchomieniu tego programu, ujrzysz 5 wierszy tekstu oznaczających parzystość danej liczby od 1 do 5 👍.
Operator trójargumentowy (warunkowy) to zapis w kodzie pozwalający na przypisanie jednej z dwóch wartości zależnie od wartości logicznej w jednym wierszu kodu, co pozwala na znaczne skrócenie liczby wierszy!
Tyle w temacie 🙂.