12. Operatory logiczne, Programowanie, Klasa III


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.

  1. ((3 > 2) || (34 <= 32))

  2. ((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:

  1. ((5 < 23) && (59 >= 61))

  2. ((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.



Wyszukiwarka

Podobne podstrony:
10. Operatory arytmetyczne, Programowanie, Klasa III
11. Operatory relacji, Programowanie, Klasa III
23 - Funkcje, Programowanie, Klasa III
26.5 Klasy - dziedziczenie, Programowanie, Klasa III
JS 05 Operatory Logiczne, Programowanie, instrukcje - teoria
16a. Petla do while, Programowanie, Klasa III
2013.04.10 - 3a1 - kartk, Programowanie, Klasa III
26.1 Klasy w C++, Programowanie, Klasa III
25.1 Struktury w C++, Programowanie, Klasa III
27.2 wskazniki - zadania, Programowanie, Klasa III
22 Procedury, Programowanie, Klasa III
15.1. Konsola + przestrzenie nazw, Programowanie, Klasa III
27.4 - zadanie, Programowanie, Klasa III
23 - Funkcje, Programowanie, Klasa III
2009 12 Szkoła konstruktorów klasa III
KLASA III - PROGRAM KOLA PRZYRODNICZEGO semestr 1, Klub Miłośników Przyrody - kółko przyrodnicze kla
09 - 07. 12. 2010, Filozofia, Notatki FO, III Semestr, Semantyka logiczna
10 - 14. 12. 2010, Filozofia, Notatki FO, III Semestr, Semantyka logiczna
KI program cwiczen 2011-12 nowy, Politologia UMCS - materiały, III Semestr zimowy, Komunikacja Inter

więcej podobnych podstron