KDYŽ se řekne Excelu (2)

V druhé části tématu KDYŽ se řekne Excelu se budeme věnovat složitějším výrokům.

První díl:
KDYŽ se řekne Excelu (1)

Jak už víte, funkce KDYŽ na místě svého prvního parametru očekává nějaké tvrzení (výrok, test), jehož výsledkem je pravdivostní hodnota PRAVDA/NEPRAVDA. Na základě toho pak vrací výsledek vzorce či hodnotu. Zatím jsme se ale zabývali pouze jednoduchými výroky. V praxi je situace leckdy složitější a rozhodování se účastní více proměnných (dílčích testů, výroků). Každý z nich musíme být schopni vyhodnotit jako PRAVDA/NEPRAVDA a existuje mezi nimi vztah (předpis chování, funkce). Ten určuje, za jakých okolností je celek vyhodnocen jak PRAVDA/NEPRAVDA.

Nejčastěji se uplatňují dva vztahy mezi výroky – A (AND) a NEBO (OR). První z nich říká, že dva výroky X a Y budou vyhodnoceny jako PRAVDA, pokud je každý z nich sám o sobě pravdivý (tj. platí všechny „podmínky“ současně). Druhý je definován tak, že aby byl výsledek výroků X a Y vyhodnocen jako PRAVDA, pak stačí, aby „alespoň jeden z nich“ byl pravdivý (tj. platí první, druhá, nebo obě „podmínky“ současně). A (AND) a NEBO (OR) se také někdy říká logické spojky.

Příklady složených výroků (testů, podmínek):
Manželství je právoplatné, pokud muž i žena řeknou dobrovolně své „ano“ (logická spojka A).
Účastník výběrového řízení bude přijat, pokud vystudoval daný obor nebo v něm má praxi, a současně vlastní řidičský průkaz (logická spojka NEBO, A).
Vesnice má naději jen tehdy, pokud alespoň jeden z místních unikne z obležení a přivede pomoc (logická spojka NEBO).
Buď jsi génius, nebo blázen, nebo obojí (logická spojka NEBO).
Rok je přestupný, pokud je dělitelný 4 a současně není dělitelný 100, nebo je dělitelný 400 (logická spojka A, NEBO).

V matematice (elektrotechnice) se dané problematice věnuje tzv. Booleova algebra. Namísto našeho PRAVDA/NEPRAVDA se v ní pracuje s ekvivalenty 1/0, definují se pravdivostní tabulky, zákony pro operace s logickýmu hodnotami a následně metodika, jež pomáhá minimalizovat počet elektrotechnických součástek k řešení problémů (hradla, NAND prvky).

Na listu (českého) Excelu namísto logické spojky AND existuje funkce A(), OR je zastoupena funkcí NEBO(), a kupříkladu pro negaci výroku se obracíme na funkci NE().

Funkce A a NEBO (pravdivostní tabulka)
Funkce A a NEBO (pravdivostní tabulka)

Teorii je nutné vstřebat uvedením alespoň dvou příkladů.

Funkce A a NEBO (příklad)
Funkce A a NEBO (příklad)

Pro úplnost uvádím rozšířenou pravdivostní tabulku pro dva vstupy. Je otočena o devadesát stupňů a možná pro někoho zpočátku hůře čitelná.

Dvouvstupová pravdivostní tabulka
Dvouvstupová pravdivostní tabulka

V tuto chvíli byste si měli již poradit s řadou složitějších testů. Ve funkcích A a NEBO přirozeně nemusí být jen dva parametry (testy, podmínky).

Složené podmínky se neobjevují jen coby první parametr funkce KDYŽ nebo v podmíněném formátování. Narazíte na ně i v automatickém filtru.

Pravidla v automatickém filtru
Pravidla v automatickém filtru

Automatický filtr zvládne pouze dvě podmínky a jednoduchý vztah mezi nimi (A, NEBO). Na obrázku filtrujeme data v rozsahu od-do (větší rovno než … a současně menší rovno než …). Je-li filtr komplikovanější, přesuneme svou pozornost k rozšířenému filtru (karta Data / skupina Seřadit a filtrovat, Upřesnit).

Pravidla v rozšířeném filtru
Pravidla v rozšířeném filtru

Snímek zachycuje filtr při mém rozhodování se o koupi základní desky do počítače. Buď si objednám libovolnou desku, která nestojí ani 1500 Kč, nebo si připlatím a vezmu desku dražší než 1600 Kč, ale jen za předpokladu, že nemá ve svém značení písmeno „V“ (byl jsem před takovým typem varován). Pozn. Povšimněte si, že s v kritériu filtru objevuje zástupný symbol hvězdičky pro žádný, jeden nebo více libovolných znaků.

Pokud nedokážeme mezi vstupy snadno definovat vztah, je nutné zpracovat úplnou pravdivostní tabulku a použít techniku Karnaughovy mapy, případně metodu Quine-McCluskey.

Příklad pro více vstupů

Dodnes si vybavuji úlohu ze střední školy. Zní takto: Odsávání u tří pecí A, B a C se má spustit, pokud jsou v provozu libovolné dvě z nich. V pravdivostní tabulce představuje stav „pec je v provozu“, resp. „odsávání je v provozu“ hodnota 1. Odsávání se má samozřejmě spustit i v případě, že běží všechny tři pece.

Karnaughova mapa (příklad)
Karnaughova mapa (příklad)

Písmeno X označuje v pravdivostní tabulce požadovaný stav odsávání a ve finále i celou funkci. Hodnoty přeneseme do jiné podoby (Karnaughovy mapy, její plošné provedení jí předurčuje max. 4 vstupní hodnoty) a graficky vyhodnotíme. Zjednodušeně řečeno vybíráme maximalistické obdélníkové oblasti (tzv. domény) sousedících jedniček o počtu 2n. Jejich popis se objeví v součtu funkce X.

Karnaughovými mapami se nemusíte trápit. Ačkoliv já se s nimi ještě kreslil při řešení sedmisegmentového displeje (klasické digitální číslo na hodinách řízené ze 4 vstupů), vám stačí použít aplikaci, např. Karnaugh Map Minimizer.

Karnaugh Map Minimizer
Karnaugh Map Minimizer

Pozor na jednu nepříjemnou věc. Funkce A a NEBO nefungují korektně v maticových vzorcích. Už kdysi dávno mě na tuto skutečnost upozornil pan Vladimír Graf. Namísto nich je nutné použít opis pro (logický) součin, resp. součet.

Funkce A a NEBO v maticových vzorcích
Funkce A a NEBO v maticových vzorcích

Příloha
funkce_a_nebo_pravdivostni_tabulky.zip