Operatory logiczne

Operatory logiczne mają na celu powiązanie w całość kilku wyrażeń.

nazwa symbol
suma logiczna ||
iloczyn logiczny &&
negacja !

operator ||
zwany sumą logiczną bądź logicznym lub dokonuje sprawdzenia dwóch wyrażeń stojących po jego obu stronach. Jaś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. Tyle ględzenia, a tu nawet nie ma przykładu. Ale będzie 🙂

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śc 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 przyład:

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 komentarzey przejdźmy do przykładów. Żeby było ciekawiej wykorzystamy przykłady użyte wcześniej. Czemu nie?

Jak pewnie pamiętasz [lub nie 🙁 ] 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. Również małe przypomnienie nie powinno zaszkodzić 🙂 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 ! i co.. Jak już wspomniałem ten operator zamienia relację. Zatem w przypadku wyrażenia: ( !((3 > 2) || (34 <= 32)) ) [nawiasem mówiąc dużo tutaj tych nawiasów 🙂 ] mamy wyrażenie: (3 > 2) || (34 <= 32) będące prawdą. Zostało ono poddane działaniu operatorowi ! 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. Prawda, że fajne. Jeszcze tylko mała uwaga. 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. Pewnie pomyślałeś: :-/ Nie jest tak źle, bo wszyscy znamy kolejność wykonywania działań i nie ma problemu. Jednak na pierwszy rzut oka.. Wiadomo chęć programowania jakoś odchodzi 🙂 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 [i innym] programowanie. Póki co przejdźmy do operatorów bitowych.

Autor: Kesay

[Artykuł pochodzi ze strony guidecpp.prv.pl, autor wyraził zgodę na publikację]