Igazságtábla

Az igazságtábla olyan táblázat, ami a kijelentéslogikai műveletek eredményeit tartalmazza különböző helyettesítési értékek esetén.

Használat

Az igazságtáblákat áramkörök tervezésekor, modellezésekor szokás használni ahhoz, hogy a tervező megjósolhassa egy adott logikai áramkör működésének eredményét. Ezeket az áramköröket (melyek használnak ÉS, VAGY, NEM kapukat) a gyakorlatban addig egyszerűsítik, míg csupán NAND (NEM ÉS) kapuk használatával, azok kombinációjaként kifejezhetőek nem lesznek, tehát a NAND-on kívül semmilyen más logikai konnektívumra nem lesz szükség a működéséhez. A logikai NAND kapuk helyett a valóságban tranzisztorokat használnak. Ilyen módon még egy rendkívül összetett logikai áramkör is fizikailag megvalósíthatóvá válik. A számítógépek processzorai is ilyen elven működnek egy egészen alacsony szinten.

Logikai operátorok

A következőkben a logikai operátorok, vagyis logikai kapuk listája következik.

Tipp: Az operátorok neveit általában csupa nagybetűvel írjuk.


ÉS

Az ÉS operátorral összekapcsolt állítások (A és B az alábbi példában) igazságértéke igaz akkor, ha mindkét állítás igaz: And.png

 <(feltétel 1) és (feltétel 2)>
 


NAND

A NAND (NEM ÉS) operátor pontosan ellentettje az ÉS operátornak: hamis az igazságértéke minden olyan esetben, mikor az ÉS-sel összekapcsolt állítások igazak, illetve az ÉS-sel összekapcsolt feltételek teljesülnek:

Nand.png

Scratch-ben nincs külön blokk NAND-ra, viszont a neve (NEM ÉS) sugallja, hogyan fejezhetjük ki a rendelkezésünkre álló operátorokkal:

 < nem <(feltétel 1) és (feltétel 2)> >
 


VAGY

A VAGY operátorral összekapcsolt állítások igazságértéke igaz abban az esetben, ha legalább az egyik állítás igaz:

Or.png

Az ÉS operátor igazságtáblától annyiban különbözik, hogy azokban az esetekben is igaz az eredmény, amikor csak az egyik állítás/feltétel igaz az összekapcsoltak közül.

 < (feltétel 1)  vagy (feltétel 2)  >
 


NOR

A NAND-hoz hasonlóan a NOR (NOT OR = NEM VAGY) operátor pontosan ellentettje a VAGY operátornak az igazságtábla működését tekintve. Amennyiben mindkét NOR-ral összekapcsolt feltétel vagy állítás hamis, az eredmény igazságértéke igaz lesz. Minden más esetben viszont hamis.

Nor.png

A NAND-hoz hasonlatosan a NOR-nak sincs külön blokkja Scratch-ben, de ezt is kifejezhetjük a rendelkezésünkre álló operátorok megfelelő kombinációjaként.

 <nem<(feltétel 1) vagy (feltétel 2)>>
 


XOR

A XOR (kizáró VAGY) operátor igaz eredményt ad, amennyiben az összekapcsolt állításoknak vagy feltételeknek pontosan az egyike igaz.

Xor.png

XOR blokk sem található Scratch-ben, de ezt is ki tudjuk fejezni a meglévő eszköztár felhasználásával.


<nem <(feltétel 1) = (feltétel 2)>> 
 


XNOR vagy XAND

A XNOR (kizáró NOR) operátorral összekapcsolt feltételek/állítások igazságértéke hamis, amennyiben valamelyik (de nem mindkét) állítás igaz. Ha megnézzük a XNOR igazságtábláját, az pontosan ellentettje a XOR igazságtáblájának.

Xnor.png

A XNOR szintén nem egy lőre beépített operátor a Scratch-ben, viszont a XOR-hoz, NOR-hoz és NAND-hoz hasonlóan ezt is ki tudjuk fejezni.

<(feltétel 1) = (feltétel 2)> 
 


NEM

A NEM annyiban különbözik az eddig tárgyalt operátoroktól, hogy a NEM-nek csak egyetlen bemenő paramétere, argumentuma van. A NEM kifordítja a bemenő paraméterként szereplő állítás igazságértékét:

Not.png


Gyakran használt szimbólumok

Egyes programozási nyelvekben, például a Pythonban a logikai operátorokra nem a nevükkel (és, vagy, nem, stb.), hanem szimbólumokkal hivatkozunk.

Számos magas és alacsonyabb rendű programozási nyelv használja ugyanazt a széles körben elterjedt szimbólumkészletet a logikai operátorok jelölésére.

Szimbol.png


Logikai operátorok kombinációja

A logikai operátorokat tetszőlegesen kombinálhatjuk, így összetettebb viszonyokat is ki tudunk fejezni állítások között. Például egy olyan esetben, ahol A és B igaz, C viszont hamis, az A||(B&&C) kifejezés igaz lesz. Az összetett logikai kifejezések igazságértékeit is ábrázolhatjuk igazságtáblában.

Short-Circuit Kiértékelés

Egy összetett logikai kifejezésnek különböző kiértékelési módja lehet. Egyik megközelítés szerint az egymás után következő összekapcsolt állításokat egyszerre értékeli ki a program. Ebben az esetben a (1=0)&&(0/0 = 1) kifejezés kiértékelése hibaüzenettel fog végződni, mivel a 0/0 művelet elvégzése nem értelmes. Ezzel szemben a short-circuit módszerrel a kifejezések kiértékelése egymás után történik. A fenti példára például hamis igazságértéket for adni így a program, mivel az első kifejezés (1=0) hamis, és ezt &&-sel kapcsoljuk a második kifejezéshez (0/0=1). Az ÉS igazságtáblája alapján pedig ha a két feltétel közül legalább egy hamis, akkor a teljes kifejezés hamis lesz.

A Scratch a kettő közül az előbbi kiértékelési módszert használja. Ezt a következő kódrészlettel le is tesztelhetjük:

<<[1]=[0]> és <((0)/(0))=[0]>> 

Szerencsére Scratch-ben is megoldható a probléma, csak máshogyan kell megírni a kódot:

[I/H v] legyen [hamis]
ha <feltétel 1> akkor 
ha <feltétel 2> akkor 
[I/H v] legyen [igaz]
Hasonló probléma merülhet fel, ha a két feltételt nem ÉS-sel, hanem VAGY-gyal kötjük össze. Természetesen erre is van megoldás:

[I/H v] legyen [hamis]
ha <feltétel 1> akkor 
[I/H v] legyen [igaz]
különben
ha <feltétel 2> akkor 
[I/H v] legyen [igaz]
  • A lap utolsó módosítása: 2017. május 20., 14:43