Logiczny typ danych – Wikipedia, wolna encyklopedia

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[1]. Nazwa pochodzi od angielskiego pioniera logiki, matematyka George'a Boole'a[1].

Zastosowanie

[edytuj | edytuj kod]

Typ logiczny stosuje się jako:

Różnice pomiędzy typem logicznym a typem liczbowym

[edytuj | edytuj kod]

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

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

Przykłady zastosowania

[edytuj | edytuj kod]
{ 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. 
#include <stdbool.h>  int main() {     bool b = false;     b = true; } 

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] } 
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);                 }             }         }     } } 
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 />'; 
class LogicDataType{   public static void main(String[] args){     boolean a = true, b = false;     System.out.println("\"a\" wynosi " + a + ", natomiast \"b\" wynosi " + b + '.');   } } 
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

[edytuj | edytuj kod]
  1. a b Niklaus Wirth: Wstęp do programowania systematycznego. Warszawa: Wydawnictwo Naukowo-Techniczne, 1978, s. 37-38.