Logiczny typ danych
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:
- wynik funkcji (zachodzi, bądź nie zachodzi);
- flagę
- warunek instrukcji warunkowej
- warunek wyjścia/kontynuowania pętli
- warunek wykonania skoku.
[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
|
||||||||