Operatory logiczne
nazwa |
symbol |
suma logiczna |
|| |
iloczyn logiczny |
&& |
negacja |
! |
Operatory logiczne mają na celu powiązanie w całość kilku wyrażeń.
operator || zwany sumą logiczną, bądź logicznym lub, dokonuje sprawdzenia dwóch wyrażeń stojących po jego obu stronach. Jeśli przynajmniej jedno wyrażenie jest prawdą, całość jest prawdziwa. Jeśli oba wyrażenia są prawdziwe to nic nie szkodzi. Wtedy również całość jest prawdą. Oczywiście sprawdzanie rozpoczyna się od lewej strony. Zatem jeśli pierwsze wyrażenie jest prawdziwe drugie nie jest sprawdzane, bo i po co.
((3 > 2) || (34 <= 32))
((34 <= 32) || (3 > 2))
Na początku widzimy wyrażenie 3 > 2, które jest prawdziwe. Zatem nie ma sensu sprawdzać wyrażenia 32 <= 32, które jest fałszem. Przy operatorze || wystarczy bowiem, aby jedno
z wyrażeń było prawdziwe. Tak właśnie jest w naszym przypadku. W drugim przykładzie są te same wyrażenia, lecz w odwrotnej kolejności. Pierwsze wyrażenie, czyli w tym przypadku 34 <= 32 jak już zostało powiedziane jest nie prawdziwe. Zatem należy dokonać sprawdzenia drugiego wyrażenia. To ma postać: 3 > 2 i jest prawdziwe. I tym razem mamy jedno wyrażenie prawdziwe i jedno fałszywe. Raz jeszcze przypominam, że przy operatorze || wystarczy tylko jedno prawdziwe wyrażenie, a całość jest prawdą.
operator && czyli iloczyn logiczny bądź też logiczne i dokonuje sprawdzenia dwóch wyrażeń stojących po jego obu stronach. Aby całość była prawdziwa muszą być spełnione oba wyrażenia. Logiczne jest, że jeśli pierwsze wyrażenie jest fałszem to sprawdzanie kolejnych wyrażeń nie ma sensu. Mały przykład:
((5 < 23) && (59 >= 61))
((59 >= 61) && (5 < 23))
W pierwszym wyrażeniu mamy: 5 < 23. Więc wszystko się zgadza, a zatem prawda. W drugim natomiast jest 59 >= 61, co jest fałszem. Powiedziałem, że przy operatorze && spełnione muszą być oba warunki. U nas jest pół na pół. Zatem wyrażenie, jako całość nie zostało spełnione. Teraz spójrz na przypadek drugi. Jest tam zapis: 59 >= 61, co jak wiemy jest fałszem. Więc już tutaj można przerwać sprawdzanie. Skoro pierwsze wyrażenie jest fałszem, to nie ma sensu sprawdzać kolejnych.
operator ! czyli krótko mówiąc operator negacji. Służy do zmiany wartości wyrażenia z prawdy na fałsz i odwrotnie. Bez zbędnych komentarzy przejdźmy do przykładów. Żeby było ciekawiej wykorzystamy przykłady użyte wcześniej.
((3 > 2) || (34 <= 32))
( !((3 > 2) || (34 <= 32)))
((5 < 23) && (59 >= 61))
( !((5 < 23) && (59 >= 61)))
Jak pewnie pamiętasz wyrażenie: ((3 > 2) || (34 <= 32)) było prawdą. Przypomnijmy może. Pierwsza jego część to: 3 > 2, czyli prawda. Wiemy też, że przy operatorze || wystarczy, że jedno wyrażenie jest prawdziwe. Tak też jest w naszym przypadku. Następnie mamy: ((5 < 23) && (59 >= 61)), co jest fałszem. Pierwsza część tego wyrażenia, czyli: 5 < 23 jest prawdziwa, ale druga: 59 >= 61 już nie. Zatem całe wyrażenie jest fałszem, bo przy operatorze && muszą być spełnione wszystkie warunki. Podsumowując. W pierwszym przypadku mieliśmy prawdę, a w drugim fałsz. Zobacz teraz co się dzieje. Do obu wyrażeń dodaliśmy operator ! Ten operator zamienia relację. Zatem w przypadku wyrażenia: ( !((3 > 2) || (34 <= 32)) mamy wyrażenie: (3 > 2) || (34 <= 32) będące prawdą. Zostało ono poddane działaniu operatora ! i relacja się zmieniła. Teraz jest: ( !((3 > 2) || (34 <= 32)) ). Skoro była prawda jest.. fałsz. Tak właśnie działa omawiany operator, którego nazwy już nie podam, bo została użyta wielokrotnie. Analogicznie wygląda sprawa z wyrażeniem: ((5 < 23) && (59 >= 61)), które całościowo jest fałszem. Gdy zastosujemy tutaj operator ! relacja się zmieni. Tak więc z fałszu zrobi się prawda. Podczas pisania bardziej skomplikowanych wyrażeń stosuj nawiasy [oczywiście okrągłe]. Co prawda nie zawsze są one konieczne, lecz z reguły ułatwiają późniejszą analizę kodu. Weźmy taki przykład: a * b + c / d - e / f * g + h. Nie jest tak źle, bo wszyscy znamy kolejność wykonywania działań i nie ma problemu. Teraz zaopatrzmy nasze skomplikowane wyrażenie w nawiasy. Mamy taki zapis: (a * b) + (c / d) - (e / f * g) + h Tutaj wyraźnie widać, co zostanie wykonane najpierw. Dzięki kilku znaczkom ułatwiliśmy sobie programowanie.