Boolean

Technology
12 hours ago
8
4
2
Avatar
Author
Albert Flores

Boolean je v informatice logický datový typ reprezentovaný jednou ze dvou hodnot - true (pravda, 1) nebo false (nepravda, 0). Pro hodnoty typu boolean jsou definovány všechny relační operace (=, ≠, >,

Logická tabulka

XYX and YX or Ynot X
falsefalsefalsefalsetrue
falsetruefalsetruetrue
truefalsefalsetruefalse
truetruetruetruefalse

* and - logický součin (konjunkce) * or - logický součet (disjunkce) * not - negace

ALGOL

Jeden z prvních programovacích jazyků ALGOL 60, definoval datový typ Boolean a jeho související operace. Algol 68 zkrátil název na bool.

Operace s Boolean operandy:

# op ∨ = (bool a, b) bool: ( a | true | b ); # op ∧ = (bool a, b) bool: ( a | b | false ); # op ¬ = (bool a) bool: ( a | false | true ); # op = = (bool a, b) bool: ( a∧b ) ∨ ( ¬b∧¬a ); # op ≠ = (bool a, b) bool: ¬(a=b); # op abs = (bool a) int: ( a | 1 | 0 );

Pascal

Boolean je základní datový typ využívaný v Pascalu. Následuje příklad jeho definice a použití:

{ deklarace v unitu system nebo standard } Type Boolean = (False,True);

{ využití }

var Hodnota: Boolean;

{ ... }

Hodnota := True; Hodnota := False;

if Hodnota then begin { ... } end;

Některé překladače jako Delphi mají rozšířený typ boolean (bytebool, wordbool, longbool).

C

V jazyce C až do verze C99 neexistuje zvláštní typ pro logické hodnoty. Operátory porovnávání čísel <, >, <=, >=, == (je rovno), . +more= (není rovno), stejně jako logické operátory && (konjunkce), || (disjunkce) a . (negace) vracejí hodnoty typu int, konkrétně hodnotu 1 s významem pravda a hodnotu 0 s významem nepravda; při vyhodnocování v příkazech if a while, v logických operátorech &&, || a . a v podmíněném výrazu . : se 0 bere jako nepravda a jakákoli nenulová hodnota jako pravda. Tento přístup převzala celá řada dalších jazyků, jako AWK nebo Perl; některé jazyky pouze doplnily další hodnoty, které se považují za nepravdu (například prázdný řetězec). Konstanty pro logické hodnoty bylo možné ve starších verzích jazyka C definovat pomocí direktiv preprocesoru #define TRUE 1, #define FALSE 0.

Ukládání jednobitové hodnoty do mnohabitové celočíselné proměnné je plýtvání pamětí, proto někteří programátoři používají pro logické hodnoty typ char. Jazyk C poskytuje struktury s bitovými poli, která umožňují využívat jednu celočíselnou proměnnou pro uložení několika logických hodnot, ale mnoho programátorů je považuje za nebezpečné a nepřenositelné (díky rozdílům v ukládání dat do paměti). +more Proto se v mnoha programech používají pro zhuštěné ukládání logických hodnot operace s bitovými maskami (operátor |= pro nastavení, operátor &= pro vynulování a operátor bitové konjunkce & pro testování). Výčtové typy enum zavedené v ANSI C umožňují nadeklarovat logické hodnoty jejich pomocí, ale protože se výčtové typy stále považují za pojmenované konstanty typu int, výsledná vnitřní implementace zůstává nezměněna.

Až od verze C99 obsahuje standard jazyka C logický typ nazvaný _Bool. Po vložení hlavičkového souboru stdbool. +moreh lze používat intuitivnější jméno bool a konstanty true a false. Jazyk zaručuje, že při porovnání budou libovolné dvě hodnoty true považovány za stejné (což nebylo splněno před zavedením zvláštního logického typu). Logické hodnoty se stále chovají jako celočíselné, mohou být ukládány v celočíselných proměnných a použity kdekoli, kde lze použít celá čísla, včetně indexování polí, aritmetických operací, načítání a výpisu. Tento přístup (hodnoty Boolean jsou pouze celá čísla) zůstává zachován ve všech pozdějších verzích jazyka C. Neznamená to však, že lze v proměnné typu boolean uložit libovolné celé číslo.

C#

V C# jsou booleovské proměnné identifikovány pomocí vyhrazeného slova bool, což je alias pro předdefinovný typ System. Boolean. +more Tento typ zabírá jeden byte. Nestandardní konverze existují mezi bool a dalšími typy.

Kód na výstupu by mohl vypadat takto:

bool myBool = (i == 5); System.Console.WriteLine(myBool ? "I = 5" : "I != 5");

Fortran

V programovacím jazyce Fortran bylo v 50. letech zavedeno klíčové slovo LOGICAL a související slova . +moreNOT. , . AND. , . OR.

Objective-C

Objective-C nabízí typ BOOL a hodnoty YES a NO. Vzhledem k tomu, že Objective-C je nadstavbou C, také zde platí jazyková sémantika pro typ boolean.

OCaml

OCaml má typ bool, který má hodnoty true a false.

# 1 = 1 ;; - : bool = true

PHP

PHP nemá striktně typové proměnné, zato definuje hodnoty true a false. Některé funkce, které typicky vracejí celá čísla nebo řetězce, vracejí false v případě neúspěchu. +more Spolu s typovým porovnáváním může být odlišeno od hodnoty 0, která v některých případech může být výslednou hodnotou v případě úspěchu (jako například u funkce strpos).

$mystring = 'abc'; $findme = 'a'; $pos = strpos($mystring, $findme);

// Všimněte si použití ===. Obyčejné == by nefungovalo podle předpokladu, // protože 'a' je na nultém (prvním) místě. +more if ($pos === false) { echo "Řetězec '$findme' nebyl nalezen v řetězci '$mystring'. \n"; } else { echo "Řetězec '$findme' byl nalezen v řetězci '$mystring'"; echo " a to na pozici $pos. \n"; }.

Python

V Pythonu je datový typ bool.

pravda = True nepravda = False if pravda or nepravda: print("pravda") if pravda and not nepravda: print("pravda")

Java

V programovacím jazyce Java je zaveden primitivní typ boolean.

boolean i = true; if (i) System.out.println("i je pravda."); else System.out.println("i neni pravda.");

V jazyce Java mohou být boolean hodnoty (stejně jako ostatní primitivní typy) konvertovány na řetězce (výsledkem je řetězec true nebo false).

GML

Protože GML pracuje pouze s datovými typy String (řetězec) a Real (reálné číslo), v GML neexistuje datový typ boolean. GML typ boolean simuluje tak, že definuje konstantu true, resp. +more false, která obsahuje reálné číslo 1, resp. reálné číslo 0.

promenna0 = choose(true,false) // definuje, že promenna0 je boolean a nese náhodně pravdu či nepravdu promenna0 = !promenna0 // promenna0 se invertuje (z true je false a z false je true)

if(promenna0) // pokud promenna0 nese pravdu { show_message("true") // zobrazí zprávu "true" } else // jinak (pokud nenese pravdu) { show_message("false") // zobrazí zprávu "false" }

Související články

Logická proměnná * Booleova algebra

Externí odkazy

[url=https://web.archive.org/web/20081103095712/http://www.python.org/doc/2.5.2/ref/Booleans.html]Boolean operations[/url]

Kategorie:Matematická logika Kategorie:Datové typy

5 min read
Share this post:
Like it 8

Leave a Comment

Please, enter your name.
Please, provide a valid email address.
Please, enter your comment.
Enjoy this post? Join Cesko.wiki
Don’t forget to share it
Top