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

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.

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.

Typy logiczne w językach programowania

Języki programowania Typ logiczny C (od C99), C++, C#, Python bool Pascal, Object Pascal/Delphi, Java, Lua boolean

Przykłady zastosowania 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.

C99 #include <stdbool.h>

int main() { bool b = false; b = true; }

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 double j = true; // bool -> double [1.0] }

C# using System;

namespace TypLogiczny { public class Parzysta

//metoda zwracająca typ logiczny: // true (prawda), jeśli liczba podana jako argument jest parzysta, // false (fałsz) w przeciwnym przypadku. static bool CzyParzysta(int i)

return (i % 2) == 0;

static void Main()

for(int i = 0; i <=25; i++)

if(CzyParzysta(i)) //wartość logiczna jako warunek instrukcji warunkowej if

Console.WriteLine("Liczba {0} jest parzysta", i);

else

Console.WriteLine("Liczba {0} jest nieparzysta", i);

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 />';

Java class LogicDataType{ public static void main(String[] args){ boolean a = true, b = false; System.out.println("\"a\" wynosi " + a + ", natomiast \"b\" wynosi " + b + '.');

Delphi XE2/Object Pascal unit LogicDataType;

interface

uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs;

type TLogicDataTypes = class(TForm) procedure FormShow(Sender: TObject); private { Private declarations } public { Public declarations } end;

var LogicDataTypesForm: TLogicDataTypes; a, b : boolean;

implementation

{$R *.dfm}

procedure LogicDataTypesForm.FormShow(Sender: TObject); begin a := true; b := false; Application.MessageBox('''a'' wynosi ' + BoolToStr(a) + ', ''b'' wynosi ' + BoolToStr(b) + '.', '''a'' i ''b''!'); end;

end.

Przypisy

Kategoria:Typy danych