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++.