Zmienne typu logicznego
Na “Drodze programisty” poznaliśmy już czym są zmienne oraz jakie mogą mieć typy. Wiemy, że są zmienne typu liczbowego całkowitego oraz zmienne typu tekstowego. Dziś poznamy kolejny typ: zmienne logiczne Boolean.
Określa się je jako zmienne typu logicznego, bo przechowują informacje tylko o dwóch wartościach logicznych: PRAWDA (true) / FAŁSZ (false). Jeżeli przypomnisz sobie reprezentację zmiennej liczbowej w pamięci i zapis jej za pomocą systemu dwójkowego na wielu bitach, to dla zmiennych Boolean potrzebujemy tylko jednego bitu. Jeżeli jest 0, to jest to FAŁSZ a jeżeli 1 to PRAWDA.
Definiujemy je bardzo podobnie do innych typów (używamy typu o nazwie Boolean):
Możemy używać nazwy typu pisanej z dużej litery (Boolean) lub z małej (boolean) lub formy skróconej (bool). Dostępne opcje różnią się od języka w którym piszemy program. Zwracaj uwagę na komunikaty jakie daje Ci kompilator podczas kompilowania programu 🙂
Na zmiennych logicznych możemy przeprowadzać różne operacje. Obowiązują tutaj matematyczne zasady tak zwanej algebry Boolowskiej. Mając do dyspozycji dwie zmienne typu logicznego możemy wykonać na nich operację i uzyskać trzecią wynikową zmienną (również typu logicznego).
Mamy do dyspozycji takie operacje:
Działanie | Ang. | Operator | Kiedy wynik działania będzie prawdą |
---|---|---|---|
Suma | AND | && | Obie wartości muszą być prawdą |
Iloczyn | OR | || | Przynajmniej jedna wartość musi być prawdą |
Ekskluzywny iloczyn | XOR | != | Dokładnie jedna wartość musi być prawdą |
Porównanie | EQUALS | == | Obie wartości są takie same |
Negacja | NOT | ! | Wartość jest fałszem |
A jaki jest wynik takich operacji? W tabelkach poniżej widać dokładnie jak działa logika Boolowska.
AND : obie wartości muszą być prawdą
x | y | x AND y |
---|---|---|
fałsz | fałsz | fałsz |
fałsz | prawda | fałsz |
prawda | fałsz | fałsz |
prawda | prawda | prawda |
OR : przynajmniej jedna wartość musi być prawdą
x | y | x OR y |
---|---|---|
fałsz | fałsz | fałsz |
fałsz | prawda | prawda |
prawda | fałsz | prawda |
prawda | prawda | prawda |
XOR : dokładnie jedna wartość musi być prawdą
x | y | x XOR y |
---|---|---|
fałsz | fałsz | fałsz |
fałsz | prawda | prawda |
prawda | fałsz | prawda |
prawda | prawda | fałsz |
EQUALS : obie wartości muszą być takie same
x | y | x EQUALS y |
---|---|---|
fałsz | fałsz | prawda |
fałsz | prawda | fałsz |
prawda | fałsz | fałsz |
prawda | prawda | prawda |
NOT : zaprzeczenie wartości
x | NOT x |
---|---|
fałsz | prawda |
prawda | fałsz |
Bardzo przydatnym operatorem jest operator porównania (==). Spotykamy się z nim po raz pierwszy, więc może się mylić z operatorem przypisania, który stosujemy już od dawna (=). Operator porównania jest operatorem dwuargumentowym to znaczy, że potrzebuje dwóch argumentów (po lewej i prawej stronie). Porównuje ten po lewej z tym po prawej i jeżeli są sobie równe, to zwraca wartość logiczną PRAWDA (true). Jeżeli natomiast są od siebie różne to zwraca wartość FAŁSZ (false). Wynik tej operacji (i każdej innej operacji logicznej) możemy przypisać do kolejnej zmiennej logicznej.
Na koniec dodam, że dla operatorów logicznych obowiązują pewne zasady, tak samo jak dla operatorów matematycznych. Ważna jest kolejność wykonywania poszczególnych działań. Weźmy na przykład takie matematyczne działanie (jakiś czas temu bardzo popularne na Facebooku:)):
Ile wynosi x? Otóż idąc po kolei od lewej do prawej wykonalibyśmy takie działania:
- 1 + 2 = 3
- 3 * 3 = 9
I niestety podalibyśmy błędną odpowiedź. Dla działań matematycznych mnożenie (*) ma większy priorytet niż dodawanie (+) i zostanie wykonane w pierwszej kolejności:
- 2 * 3 = 6
- 1 + 6 = 7
I to właśnie 7 jest poprawną odpowiedzią.
Dla operatorów logicznych również mamy odpowiednią kolejność działań. Weźmy takie wyrażenie i sprawdźmy co zostanie wypisane na ekran:
Idąc od lewej do prawej wykonalibyśmy takie działania:
- false != false daje nam false
- false && true daje nam false
- false != true daje nam true
Wychodzi nam true i jak zapewne się domyślasz, jest to odpowiedź błędna. Otóż operator XOR (!=) ma większy priorytet niż operator AND (&&) oraz OR (||). Poprawna kolejność będzie taka:
- false != false daje nam false
- true != true daje nam false
- false && false daje nam false
Czyli poprawną odpowiedzią będzie false. Dużo łatwiej to sobie wyobrazić stosując odpowiednie nawiasy z zachowaniem kolejności działań:
Od razu lepiej 🙂 A kolejność działań operatorów logicznych przedstawia się następująco:
- NOT (!)
- EQUALS (==)
- XOR (!=)
- AND (&&)
- OR (||)
Czasami można się zapomnieć i błędnie zinterpretować działanie. Dlatego najbezpieczniej stosować nawiasy.
Poza tym, że zmienne typu logicznego pozwalają na ciekawą zabawę z kolejnością działań to także wykorzystujemy je między innymi do sterowania logiką naszego programu. Na przykład, jeżeli chcemy wyświetlić jakiś napis tylko jeżeli obecny miesiąc to kwiecień, to skorzystamy właśnie z operatora porównania oraz instrukcji sterującej. O czym dowiemy się w kolejnym poście na “Drodze programisty”.
Trackbacks & Pingbacks
[…] Zmienne typu logicznego […]
Leave a Reply
Want to join the discussion?Feel free to contribute!