Logikai típusú

Logikai adattípus , vagy Boolean típus vagy Boolean típus (az angolból.  Boolean vagy logikai adattípus ) egy primitív adattípus a számítástechnikában , amely két lehetséges értéket vesz fel, amelyeket néha igaznak ( igaz) és hamisnak ( hamisnak) neveznek . A programozási nyelvek túlnyomó többségében önálló entitásként van jelen, vagy numerikus adattípuson keresztül valósul meg. Egyes programozási nyelvek 1-et használnak az igaz és 0 -t hamisra  .

A Boolean típusnevet George Boole angol matematikus és logikus tiszteletére adták, aki a 19. század közepén többek között matematikai logikával is foglalkozott .

Megvalósítás

Egy logikai adattípus implementálható és tárolható a memóriában csak egy bit felhasználásával , de a minimális címezhető memóriahelyet (általában egy bájtot vagy gépi szót ) általában teljesítmény-hatékonyabb tárolási egységként használják a processzorregiszterek és a RAM kezelésekor .

Elérhető műveletek ezzel az adattípussal

A következő műveletek alkalmazhatók erre az adattípusra, egyes népszerű programozási nyelveken a műveletek szimbolikus jelölései zárójelben vannak feltüntetve:

Más Boole-algebrai műveletek is használhatók , mint például Pierce nyila vagy Schaeffer vonása . A legtöbb programozási nyelv lehetővé teszi a logikai típusú változók és konstansok használatát az aritmetikai műveletekben, először numerikus típusba öntve, a nyelvben elfogadott típuskonverziós szabályok szerint.

Alkalmazás

A Boole-féle adattípus hagyományos használata az igen/nem értékek az összetettebb műveletek szám-összehasonlításának eredményére.

Két mennyiség - valós és egész változók vagy egy változóval (egyenlő, nagyobb, kisebb) való konstans összehasonlításának összes művelete, egy halmazban előforduló elem tagságának ellenőrzése és a metszéspont ürességének ellenőrzése. setek logikai típust adnak vissza.

Megvalósítás különböző programozási nyelveken

Ada

Az Ada programozási nyelvBoolean a Standard csomagban felsorolt ​​típusként definiál értéket False, Trueamelyben False< True.

type Boolean is ( hamis , igaz ); p : Logikai := Igaz ; if p then ... end if ;

A kapcsolódó operátorok ( =, /=, <, <=, >, >=) minden felsorolt ​​típusra vonatkoznak, beleértve a Boolean. andA , orés logikai operátorok a típusra xorés az összes deklarált altípusra vonatkoznak. A logikai operátorok a -t tartalmazó tömbökre is vonatkoznak . notBooleanBoolean

Algol

Az Algol 60boolean az Algol 60 specifikációban meghatározott adattípussal és a megfelelő operátorokkal rendelkezik.Az adattípus boolALGOL 68 -ra rövidült .

C

A C programozási nyelvben , amely nem adott logikai értékeket a C89 -ben (de bevezeti a C99 -be ), az igaz/hamis értékek helyett a nullával való érték-összehasonlítást vezették be. Például kód:

if ( bool_változó ) printf ( "Igaz! \n " ); else printf ( "Hamis! \n " );

kóddal egyenértékű:

if ( bool_változó != 0 ) printf ( "Igaz! \n " ); else printf ( "Hamis! \n " );

Ez igaz volt az egész adattípusra (integer); azonban a lebegőpontos számok (lebegőpontos) bináris értékei közel voltak a képernyőn megjelenő decimális értékekhez, és ez hibákat okozott az összehasonlítás során. Hagyományosan egy egész szám egy (vagy több) logikai változót tartalmazott (egyet az egész szám minden bitjéhez ).

Haskell

A Haskellben a logikai adattípus a legegyszerűbb algebrai adattípusként van megvalósítva :

adat bool = false | Igaz

A szabványos modulban a és Data.Boola függvények hozzá vannak definiálva . &&||not

Python

A Pythonban egy logikai adattípus jelölése bool, más adattípusok logikai értékké alakításához van egy függvény bool(), amely a következő konvenciók szerint működik:

  • karakterláncok: üres karakterlánc - hamis, nem üres karakterlánc - igaz;
  • számok: nulla szám - hamis, nem nulla szám (beleértve az egynél kisebbet is) - igaz;
  • listák és sorok: üres lista (tuple) - hamis, nem üres (még egy elemet is tartalmaz, például üres sort) - igaz;
  • függvények mindig igazak.

Más objektumok esetén az eredmény kiszámítása a metódussal történik __nonzero__, amely ideális esetben Trueértéket ad vissza False.

A logikai típus a következő adattípusokra kerül átadásra:

  • string: Truefor true, Falsefor false;
  • numerikus (beépített típusok intés float): 1 igaz, 0 hamis.

A logikai típus nem kerül átadásra más adattípusokra.

A Python 2.6 -nak van egy érdekes funkciója – újradefiniálhatja az értéket True, Falseés fordítva, ha csak annyit ír:

igaz = hamis

vagy opció a teljes hatókörre

__beépítettek__ . igaz = hamis

ami az értelmező vagy az IDLE nagyon váratlan viselkedéséhez vezethet. A Python 3-ban ezt a funkciót eltávolították – Trueés Falsefenntartottnak tekintik, akárcsak a szót None.

Pascal

A változók leírása:

var a , b : Boolean

A logikai műveletek aritmetikai műveletei nem megengedettek, de a logikai műveletek megengedettek: Nem, És, Vagy, Xor, relációs műveletek = (egyenlő), <> (nem egyenlő) és az Ord, Pred, Succ függvények.

var A , B : Byte ; C , D , E , F : Boolean ; begin A := Sorrend ( False ) ; {A=0} B := Sorrend ( Igaz ) ; {B=1} C := Pred ( Hamis ) ; {hiba} D := Pred ( Igaz ) ; {D=Hamis} E := Succ ( False ) ; {E=Igaz} F := Siker ( Igaz ) ; {hiba} vége .

Ruby

A Rubyban egy logikai típust két előre definiált változó képvisel : trueés false. Logikai műveletek vagy logikai metódusok meghívása eredményeként egy logikai típus jelenik meg . A hagyomány szerint a logikai módszerek (vagyis az igaz vagy hamis értéket visszaadó módszerek) neve "?"-re végződik.

Ez falselehet nil, minősége pedig true bármilyen objektum lehet , beleértve a "0" értékű változót vagy egy üres karakterláncot , ami gyakran meglepetés a kezdők számára.

Lásd még