SOISK - SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE
Tomasz Puchała

C++Operatory Logiczne

Operator negacji

Zajmijmy się najpierw operatorem negacji. W klasycznym rachunku zdań istnieją tylko dwa stany: prawda i fałsz. Negacją prawdy jest fałsz, natomiast negacją fałszu jest prawda. Zobaczmy więc jak to możemy zapisać formalnie w C++:


 

Operator sumy logicznej

Jeśli chcemy wykonać operację sumy logicznej to tak jak w dodawaniu arytmetycznym będziemy potrzebowali co najmniej dwóch wartości - z tą różnicą, że tutaj będą to wartości logiczne. Najłatwiej będzie to zobrazować na przykładzie:

Warto tutaj również wspomnieć, że klasyczny rachunek zdań w połączeniu z operatorami porównania daje bardzo duże możliwości manipulacji wynikami, jakie chcemy otrzymać. Oto przykład:


 

Operator iloczynu logicznego

Iloczyn logiczny jest analogiczny w zapisie do sumy logicznej. Istotną różnicą są jednak otrzymywane wyniki. Prawdę otrzymamy wtedy i tylko wtedy gdy wszystkie wartości logiczne będą spełnione (czyli prawdziwe). Przejdźmy więc do kodu źródłowego kolejnego programu:

 

Kolejność wykonywania operacji logicznych

Pamiętajmy, że tak samo jak w rachunku arytmetycznym tutaj również obowiązuje kolejność wykonywania działań. Najważniejszy jest operator negacji, później wykonywane są operacje iloczynu logicznego, a na samym końcu sumy logicznej. Kolejnością wykonywania operacji można jednak manipulować poprzez zaokrąglone nawiasy - tak samo jak to miało miejsce w przypadku działań arytmetycznych. Zobaczmy na koniec program, który wykorzystuje całą omówioną w tym rozdziale wiedzę:

 

Zadanie domowe

Eksperymenty z programem

Poeksperymentuj z wartościami logicznymi ostatniego programu i sprawdź jak będą się zmieniały wyniki. Przeanalizuj swoje zmiany i sprawdź czy wiesz dlaczego otrzymujesz dane wyniki. Odpowiedz sobie na pytanie: czy mając dowolne wyrażenie logiczne zapisane na kartce, będziesz w stanie podać prawidłowo wartość końcową (wynik)?

Test kolejności operacji logicznych

Napisz odpowiedni program dzięki któremu przetestujesz kolejność wykonywania operacji logicznych. Zrób co najmniej dwa programy. Pierwszy z nich niech nie wykorzystuje nawiasów zaokrąglonych, drugi program natomiast niech będzie modyfikacją pierwszego, który wymusi inną kolejność wykonania działań niż jest to standardowo zapewnione przez język C++.