Logický datový typ (boolean) je základní datový typ, který může nabývat jediné ze dvou hodnot: true (pravda) nebo false (nepravda). Název pochází od anglického matematika George Boolea, který ve 19. století formuloval pravidla binární (Booleovy) algebry a logiky. V programování slouží booleovské hodnoty k reprezentaci výsledků porovnání a k řízení větvení a cyklů.

Krátká historie a standardizace

Datový typ bool byl formálně začleněn do standardu jazyka C++ ve verzi známé jako C++98 (ISO/IEC 14882:1998). Standardy jako ISO (International Organization for Standardization) a ANSI (American National Standards Institute) se podílejí na definování a udržování specifikací jazyků.

Hodnoty a zápis

  • true — logická pravda
  • false — logická nepravda

Ve většině jazyků jsou tato klíčová slova rezervovaná. Relace a logické výrazy (např. porovnání) vrací boolean. Boolovské výrazy tedy končí hodnotou true nebo false a používají se v podmínkách a smyčkách.

Operace a logické operátory

  • Negace: NOT (často !) — mění pravdu na nepravdu a naopak.
  • Konjunkce: AND (často &&) — výsledek je true pouze, pokud jsou oba operandy true.
  • Disjunkce: OR (často ||) — výsledek je true, pokud alespoň jeden operand je true.

Příklady pravdivostních kombinací (AND / OR):

  • AND: true && true → true; true && false → false; false && false → false
  • OR: true || true → true; true || false → true; false || false → false
  • NOT: !true → false; !false → true

Převody a tzv. "truthy"/"falsy" hodnoty

V některých jazycích (např. JavaScript, Python) existují koncepty "truthy" a "falsy" hodnot, kde různé typy (čísla, řetězce, kolekce) mohou být implicitně vyhodnoceny jako true nebo false (např. 0 nebo prázdné pole jsou falsy). V jiných jazycích (C, C++, Java) jsou převody přísnější: v C a C++ je každý nenulový integralní výraz považován za true, nula za false; v Javě se konverze mezi primitivními čísly a booleovským typem neprovádí automaticky.

Použití v programování

  • Řídicí struktury: if, else, switch (podmínky)
  • Smyčky: while, for (pokud podmínka vrací true, smyčka pokračuje)
  • Kontrola stavu: příznaky, indikátory chyby nebo dokončení
  • Vrácení výsledku testu funkcí: funkce může vracet true/false

Ukázky v několika jazycích

C++ (C++98 a novější):

bool isEven(int x) {     return x % 2 == 0; // porovnání vrací bool } 

Java:

boolean isEmpty(String s) {     return s == null || s.isEmpty(); } 

Python:

def is_positive(n):     return n > 0  # vrací True nebo False 

JavaScript:

const isNonEmpty = arr => Array.isArray(arr) && arr.length > 0; 

Běžné chyby a doporučení

  • Rozlišujte přiřazení a porovnání (např. v C/C++/Java: = vs ==). Chybným použitím můžete místo porovnání přiřadit hodnotu do proměnné.
  • Dávejte pozor na implicitní konverze (truthy/falsy) zejména v JavaScriptu nebo Pythonu — mohou vést k nečekanému chování.
  • V logických výrazech využívejte krátkodobé vyhodnocování (short-circuit): u && a || může druhý operand být nevyhodnocen, pokud to rozhodnutí není třeba; to lze využít např. k bezpečné kontrole hodnot před přístupem.
  • V C++ velikost typu bool není pevně stanovena standardem (obvykle 1 bajt), takže s ohledem na paměť a zarovnání zvažte použití bitových polí nebo jiných struktur pro velké množství boolean hodnot.

Logický datový typ je jednoduchý, ale klíčový stavební prvek programů — umožňuje vyjadřovat podmínky, řídit tok programu a reprezentovat stavy, které jsou buď pravdivé, nebo nepravdivé.