Logiczny typ danych

Z Wikipedii, wolnej encyklopedii
(Przekierowano z Bool)
Skocz do: nawigacji, szukaj

Typ logiczny, typ boolowski (ang. boolean) – Uporządkowany zbiór wartości logicznych składający się z dokładnie dwóch elementów fałsz (false, 0, -) i prawda (true, 1, +), wraz z towarzyszącymi im zdefiniowanymi operatorami standardowymi[1]. Nazwa pochodzi od angielskiego pioniera logiki, matematyka George'a Boole'a[1].

Spis treści

[edytuj] Zastosowanie

Typ logiczny stosuje się jako:

[edytuj] Różnice pomiędzy typem logicznym a typem liczbowym

Ze względu na to iż każdą funkcję logiczną da się zapisać funkcją dającą jako wynik liczbę naturalną (fałsz-0, prawda - liczba większa od zera), zaś operatory logiczne da się zapisać za pomocą mnożenia i dodawania, w niektórych językach programowania np. w C (do C99) typ logiczny nie występował. Są jednak przyczyny dla których typ logiczny jest stosowany:

  • brak zakresu (nie ma efektu przekroczenia zakresu poprzez sumowanie dwóch warunków prawdziwych);
  • oszczędność pamięci;
  • większa czytelność kodu.

[edytuj] Typy logiczne w językach programowania

[edytuj] Przykłady zastosowania

[edytuj] Pascal

{ definicja zmiennej typu logicznego }
var
    zmienna_log : Boolean;
 
{ deklaracja funkcji zwracającej typ logiczny }
function parzysta(l : Integer) : Boolean;
begin
    parzysta := ((l mod 2) = 0);
end;
 
{ użycie powyższych w programie }
begin
    zmienna_log := parzysta(4);
end.

[edytuj] C99

#include <stdbool.h>
 
int main()
{
    bool b = false;
    b = true;
}

[edytuj] C++

Przykłady konwersji między bool a innymi typami:

#include <string>
 
int main()
{ 
    using std::string; 
    // niejawne konwersje do bool
    bool a = 'a';               // char -> bool  [true]
    bool b = 0.0;               // double -> bool  [false] 
    bool c = -1;                // int -> bool  [true]
    bool d = 0;                 // int -> bool  [false]
    bool e = &a;                // bool * -> bool  [true]
    bool f = &string::clear;    // void (string::*)() -> bool  [true] 
 
    // niejawne konwersje z bool
    int i = false;              // bool -> int  [0]
    double j = true;            // bool -> double  [1.0]
    char *k = false;            // bool -> char *  [(char *)(0)]   
}

[edytuj] PHP

function returnbool($arg) { return !!$arg; }
 
$b = returnbool(1); // zwraca prawdę (true)
 
// tak; true jest równoznaczne z 1
echo 'Test 1: ', ($b == 1) ? 'tak' : 'nie', '<br />';
 
// nie; true nie jest identyczne z 1
echo 'Test 2: ', ($b === 1) ? 'tak' : 'nie', '<br />';

Przypisy

  1. 1,0 1,1 Niklaus Wirth: Wstęp do programowania systematycznego. Warszawa: Wydawnictwo Naukowo-Techniczne, 1978, s. 37-38. 
Osobiste
Przestrzenie nazw

Warianty
Działania
Nawigacja
Dla czytelników
Dla wikipedystów
Narzędzia
Drukuj lub eksportuj
W innych językach