Typ danych Boolean to podstawowy typ logiczny, który może przyjmować jedną z dwóch wartości: true (prawda) lub false (fałsz). Nazwa pochodzi od nazwiska angielskiego matematyka George'a Boole'a, który sformułował podstawy logiki algebraicznej wykorzystywanej w informatyce i elektronice. W wielu językach programowania zmienna tego typu służy do zapisywania wyników porównań oraz sterowania przepływem programu (instrukcje warunkowe, pętle, filtry itp.).
Typ boolean został oficjalnie ustandaryzowany m.in. w językach C (jako _Bool w standardzie C99) oraz w C++ (formalnie wprowadzony w standardzie C++98). Wyrażenia boolean również kończą się wartością true lub false i są podstawą podejmowania decyzji w kodzie.
- Zastosowania: instrukcje warunkowe (if/else), pętle (while, for), operatory logiczne, zwracanie rezultatów funkcji, walidacja danych.
- Typowe literały: true i false (w Pythonie: True/False — wielka litera).
- Typowe operatory logiczne: koniunkcja (AND), alternatywa (OR), negacja (NOT) — w składni C/Java/JavaScript:
&&,||,!; w Pythonie:and,or,not.
Prosta tabela prawdy dla dwóch operandów A i B:
- A AND B: prawda tylko gdy A i B są true.
- A OR B: prawda gdy przynajmniej jedno z A lub B jest true.
- NOT A: prawda gdy A jest false.
Różnice i uwagi w różnych językach — krótko:
- C/C++: w C od C99 dostępny typ
_Bool, w C++ występujebool. Wartości logiczne są często reprezentowane jako 0 (false) i 1 (true), choć rozmiar/wewnętrzna reprezentacja może być zależna od implementacji (często 1 bajt). - Java: typ prymitywny
boolean. Rozmiar nie jest formalnie określony jako bajty w JVM, ale wartość logiczna istnieje jako oddzielny typ; w tablicach booleanów implementacje JVM często używają jednego bajtu na element. - JavaScript: typ
boolean, ale język ma też pojęcie "truthy"/"falsy" — różne wartości (np. 0, "", null, undefined, NaN) są traktowane jako false w kontekstach warunkowych, mimo że formalnie nie są typu boolean. - Python: typ
boolz dwoma literami:TrueiFalse.booljest podtypemint(True==1, False==0). - SQL i inne języki: składnia i dostępność typu boolean różnią się między implementacjami (np. niektóre dialekty SQL używają
TRUE/FALSE, inne zastępują to typami znakowymi lub liczbowymi).
Konwersje i „truthiness”: wiele języków automatycznie konwertuje wartości na boolean w kontekstach warunkowych. Należy rozróżniać:
- typ boolean — zmienna faktycznie przechowuje true/false,
- truthy/falsy — koncepcja przyjmowana przez niektóre języki (np. JavaScript, Python), gdzie różne wartości są interpretowane jako prawda lub fałsz w warunkach.
Operatory bitowe vs logiczne: w wielu językach istnieją oddzielne operatory bitowe (&, |, ^) oraz logiczne (&&, ||, !). Operatory logiczne zwykle stosowane do wartości boolean i często zachowują short-circuit (przy && lub || druga część nie jest oceniana, jeśli wynik jest już przesądzony), natomiast operatory bitowe działają na poziomie bitów lub wymuszają ocenę obu operandów.
Przykłady (fragmenty kodu):
// C++ bool a = true; if (a && (5 < 10)) { // kod wykona się, bo a == true i 5 < 10 } // JavaScript let b = false; if (!b) { // wykona się, bo !false == true } // Python x = 0 if not x: # wykona się, bo 0 jest "falsy" pass Praktyczne wskazówki:
- Stosuj boolean do reprezentowania jednoznacznych stanów (włączone/wyłączone, prawda/fałsz), aby kod był czytelny.
- Uważaj na automatyczne konwersje i "truthiness" — jawne porównanie (
==,===w JS) może zapobiec nieoczekiwanym zachowaniom. - Znaj różnice między operatorami logicznymi a bitowymi i wykorzystuj short-circuiting tam, gdzie to potrzebne.
- Dokumentuj semantykę zmiennych boolowskich — sama nazwa może nie wystarczyć (np.
isActive,hasErrorssą lepsze niż ogólneflag).
Podsumowując, typ boolean jest fundamentem logiki w programowaniu — prosty w koncepcji, ale wymaga uwagi przy konwersjach i w zależności od specyfiki języka, w którym programujemy.