Digitális és informatikai

ÉS, VAGY, kizáró VAGY: ellenőrizd a feltételeket igazságtáblával

Egy rendelési és egy kedvezményezési példán végigvesszük a négy alaphelyzetet. Megmutatjuk, hogyan lesz egy hibásan megírt összetett feltételből nem kívánt kiválasztás.

Dajka Gábor7 perc olvasás

A logikai szabályt a kívánt eredménnyel kezdd: mely állapotban engedélyezel egy műveletet, és melyikben állítod meg? Ezután a teljes igazságtáblán hasonlítsd össze az állítást a képlettel. A bemenetek jelentése és valódi logikai típusa ugyanúgy szükséges, mint a megfelelő művelet.

A logikai kapuk kalkulátorában az igazságtábla segít az összes bemeneti állapot áttekintésében. Az alábbi példák logikai modellek: konkrét webshop vagy adatbázis programkódját nem helyettesítik.

Két feltétel, négy eset

Jelölje A, hogy a termék készleten van, B, hogy a fizetés visszaigazolt. A példabeli teljesítési szabály mindkettőt megköveteli, ezért A ÉS B a megfelelő kapcsolat.

A: készletB: fizetésA ÉS BA VAGY BA kizáró VAGY B
HamisHamisHamisHamisHamis
HamisIgazHamisIgazIgaz
IgazHamisHamisIgazIgaz
IgazIgazIgazIgazHamis

A táblázat négy sora lefedi két, egyenként kétértékű bemenet összes kombinációját. Az ÉS csak az utolsó sort fogadja el. A sima VAGY az utolsó sorban is igaz, a kizáró VAGY viszont ott hamis.

A kizáró VAGY tipikus félreértése

Tegyük fel, hogy egy saját kampánypéldában kedvezményt kap az, aki hírlevél-feliratkozó vagy meglévő ügyfél. Ha a két csoportba egyszerre tartozó személynek is jár a kedvezmény, a logikai kapcsolat VAGY.

A kizáró VAGY ezzel szemben pontosan az egyik feltételt követeli meg. Aki mindkettőt teljesíti, kiesik. Ha ez nem tudatos döntés volt, a hibás kapcsolat éppen a mindkét feltételnek megfelelő embereket zárja ki.

A feltétel szövege mellé ezért érdemes leírni a „mindkettő igaz” eset kívánt eredményét. Egyetlen konkrét ellenpélda gyakran gyorsabban megmutatja a hibát, mint a teljes kifejezés ismételt elolvasása.

Harmadik feltétel: kézi visszatartás

Jelölje C, hogy a rendelést manuálisan visszatartották. A teljesítés feltétele most: A ÉS B ÉS NEM C. A készlet és a fizetés mellett a visszatartás hiányát is ellenőrizzük.

Három kétértékű bemenethez 2³ = 8 kombináció tartozik. Ebben a modellben csak az A igaz, B igaz, C hamis sor engedi a teljesítést. Ha C igaz, a rendelés a másik két igaz feltétel ellenére sem teljesíthető.

A NEM művelet hatókörét tedd világossá. Az „A ÉS B ÉS NEM C” és a „NEM (A ÉS B ÉS C)” nagyon különböző szabály: utóbbi hét kombinációban igaz, és csak az összes bemenet igaz állapotánál hamis.

Amikor egy feltétel észrevétlenül kiesik

Vizsgáljuk az (A ÉS B) VAGY (A ÉS NEM B) kifejezést. Ha A igaz, B bármelyik értékénél az egyik zárójeles rész igaz lesz. Ha A hamis, mindkettő hamis.

Az egész kifejezés ezért egyszerűen A-val egyenértékű. A fizetési állapot a végeredményből kiesett. Ha eredetileg fizetési ellenőrzést akartál megőrizni, ez az egyszerűsítés konkrét programlogikai problémát mutat.

Az igazságtáblát úgy is használhatod, hogy a kívánt üzleti eredményt külön oszlopban rögzíted, majd minden sornál összeveted a kifejezés eredményével. Eltérő sornál már pontosan látszik a hibás helyzet.

Logikai érték és szöveg

A „hamis” szót tartalmazó szöveg nem minden programozási környezetben ugyanaz, mint a valódi logikai hamis érték. JavaScriptben például a nem üres szöveg igazként értékelődhet feltételben, akkor is, ha a tartalma „false”.

Importnál ezért a típusellenőrzés külön feladat. A hiányzó adatot, a nullát, a hamis értéket és a szöveges jelölést ne alakítsd át hallgatólagosan egymásba. A logikai modell csak akkor reprodukálható, ha a bemeneti értékek jelentése is rögzített.

Az engedélyezés tagadása külön is levezethető

A korábbi teljesítési szabály A ÉS B ÉS NEM C: legyen készlet, igazolt fizetés és ne legyen kézi visszatartás. Ennek pontos ellentettje, vagyis a megállítás feltétele: NEM A VAGY NEM B VAGY C. Bármelyik hiányzó követelmény elegendő a teljesítés megállításához.

Például A igaz, B hamis, C hamis mellett van készlet, nincs visszaigazolt fizetés és nincs kézi visszatartás. Az engedélyezés hamis, a megállítás igaz a NEM B tag miatt. A (NEM A ÉS NEM B) VAGY C változat ebben a helyzetben hamis lenne: tévesen azt várná, hogy a készlet és a fizetés egyszerre hiányozzon.

A nyolc lehetséges állapot közül az eredeti engedélyezés egyben igaz, a helyes tagadása hétben. Minden sorban pontosan az egyik teljesül. Ez jó ellenpróba egy engedélyező és egy tiltó mező egyeztetéséhez. Hiányzó vagy értelmezhetetlen importadatot előbb külön jelölj, és az elfogadott értékeket alakítsd valódi logikai típussá; a „false” feliratú nem üres szöveg JavaScriptben önmagában igazként értékelődik.

Három feltételnél a kizáró VAGY új csapdát jelent

Két bemenetnél a kizáró VAGY pontosan az egyik igaz állapotot fogadja el. Három bemenet egymás utáni összekapcsolásakor, (A kizáró VAGY B) kizáró VAGY C alakban az eredmény akkor igaz, ha páratlan számú bemenet igaz. Három igaz bemenetnél tehát szintén igaz eredményt kapsz.

Igaz bemenetek számaEgymás utáni kizáró VAGYPontosan egy igaz feltétel
0HamisHamis
1IgazIgaz
2HamisHamis
3IgazHamis

Ha a saját kampányszabály szerint három jogosultság közül pontosan egy teljesülhet, számold meg az igaz logikai értékeket, és az összeget hasonlítsd egyhez. A nyolc bemeneti kombinációból ez három sort enged át; az egymás utáni kizáró VAGY négyet. A „mindhárom igaz” próba azonnal megmutatja a különbséget.

Gyakori kérdések

A VAGY kizárja a két igaz feltétel esetét?

A közönséges logikai VAGY nem zárja ki. A kizáró VAGY ad hamis értéket akkor, amikor mindkét bemenet igaz.

Hány sort kell ellenőrizni négy feltételnél?

Négy kétértékű bemenethez 2⁴, azaz 16 kombináció tartozik.

Az igazságtábla önmagában üzletileg helyes szabályt ad?

A megadott szabály következményeit mutatja. A kívánt eredményt az üzleti döntésben kell meghatározni, majd a táblával ellenőrizni.

Módszertani forrás

MDN – Logikai értékek és típusok

Záró tudáspróba

Válassz kérdésenként egy választ, és jegyezd fel a betűjelét. Minden helyes válasz 1 pont; a hibás, kihagyott vagy több betűvel jelölt válasz 0 pont. Legfeljebb 3 pontot szerezhetsz. A megoldókulcsot a válaszadás után olvasd el.

1. Mi az A ÉS B ÉS NEM C pontos tagadása?

  • A) A VAGY B VAGY C
  • B) NEM A ÉS NEM B ÉS C
  • C) NEM A VAGY NEM B VAGY C

2. A igaz, B hamis, C hamis: van készlet, nincs igazolt fizetés, nincs visszatartás. Mi az eredmény?

  • A) Engedélyezett a teljesítés, mert van készlet.
  • B) A teljesítés nem engedélyezett, a megállítás feltétele igaz.
  • C) Sem az engedély, sem a tagadása nem igaz.

3. Importban a fizetés értéke a „false” szöveg. Elég egyszerű JavaScript-feltételbe tenni?

  • A) Igen, ha a mező neve fizetés.
  • B) Igen, a szöveg mindig hamisra alakul.
  • C) Nem; a szerződés szerinti szöveges jelölést valódi logikai értékre kell ellenőrzötten alakítani.

Megoldókulcs és értelmezés

1. C. Az engedélyhez mindhárom követelmény kell, a tagadásához bármelyik hibája elegendő. A NEM C tag tagadása C.

2. B. Az A ÉS B ÉS NEM C hamis, mert B hamis. A tagadás NEM B része igaz.

3. C. A nem üres „false” szöveg igazként értékelődik. A szó jelentése nem azonos az automatikus típuskonverzióval.

0–1 pont: Az A igaz, B hamis, C hamis soron számold ki az engedélyezést és annak kétféle tagadásjelöltjét, majd ellenőrizd mind a nyolc állapotot.

2 pont: A hibás vagy kihagyott válasz magyarázata alapján keresd vissza a kapcsolódó számítást, majd oldd meg újra azt a kérdést.

3 pont: A három feladatban helyesen alkalmaztad a cikk összefüggéseit. Az üzleti szabály mellé készíts egy engedélyezett és egy megállított eredményoszlopot, és az importértékek típusát is vizsgáld meg. A rövid próba csak ezeket a tanulságokat ellenőrzi.

További cikkek

Kapcsolódó olvasnivalók

Gyorskereső

Kalkulátorok és útmutatók keresése

↑↓ választásEnter megnyitásEsc bezárás