Prefixová notace

Prefixová notace (známá též jako polská notace) je způsob zápisu logických, aritmetických a algebraických výrazů. Její charakteristikou je především zápis operátorů vlevo před operandy. Protože je pořadí operátorů fixní, syntaxe nepotřebuje žádné závorky a zápis je tedy jednoznačný. Polský logik Jan Łukasiewicz vymyslel tuto notaci okolo roku 1920, proto je tato notace známá jako polská notace.

Tento způsob není v logice příliš používán, zato byl znovuobjeven v informatice.

Aritmetika

Výraz pro sčítání čísel jedna a dvě je v prefixové notaci zapsán jako „+ 1 2“. Ve složitějších výrazech operátory předcházejí svým operandům, ale operandy se mohou v netriviálních výrazech vkládat do sebe. Například, výraz v tradiční infixové notaci

5 − (6 + 7)

může být zapsán v prefixové notaci jako

− 5 (+ 6 7)

nebo jednoduše

− 5 + 6 7

Protože jsou všechny jednoduché operátory v aritmetice binární (alespoň v aritmetickém kontextu), jakýkoliv prefixový zápis je jednoznačný a používání závorek je zbytečné. V předchozím příkladě, protože jsou závorky v infixové notaci požadované, jejich posun

(5 − 6) + 7

nebo jejich odstranění

5 − 6 + 7

může podstatně změnit význam a výsledek celého výrazu. Nicméně příslušný zápis v prefixové notaci bude zapsán

+ − 5 6 7

Proces sčítání je odložen dokud oba operandy odčítání nejsou zpracovány. Jako v jakékoliv notaci, nejvnitřnější výrazy jsou zpracovány jako první, ale v prefixové notaci mohou být „nejvnitřnější“ výrazy zadány prostým pořadím operandů.

Na rozdíl od podobné postfixové notace (známé jako reverzní polská notace), prefixová notace nebyla příliš užívána v komerčně vyráběných kalkulátorech. Prefixová notace je často vyučována jako první koncepční krok při výuce programovacích jazyků, které ji užívají.

Počítačové programování

Prefixová notace má široké uplatnění v jazyce Lisp, kde jsou závorky požadovány v případě pohyblivých operandů. Související postfixová notace (neboli reverzní polská notace) je používána ve spoustě zásobníkových programovacích jazyků a je ovládací princip některých kalkulátorů firmy Hewlett-Packard.

Pořadí operací

Pořadí operací je definováno přímo ve struktuře prefixované notace a může být jednoduše odvozena. Jediná věc, kterou musíme mít na paměti je, že operace je aplikována prvním operandem na druhý operand. To není problém u operací, kde můžeme provést záměnu operandů, ale pro ostatní jako je dělení a odčítání je tento fakt velmi důležitý. Například následující výraz

/ 10 5

se čte jako „Vyděl číslo 10 číslem 5“. Tudíž řešením je číslo 2 a nikoliv ½ v případě špatné analýzy příkladu.

Prefixová notace je zvláště populární v operacích se zásobníkem skrze schopnost lehce rozeznat pořadí operací bez nutnosti jejich závorkování. K určení pořadí operací není potřeba pamatovat si jejich hierarchii jako u běžné infixové notace. Místo toho stačí jeden pohled přímo na zápis ke zjištění, který operátor vyřešit první. Čtením výrazu zleva doprava zjistíme první operátor a vyřešíme jím první dva operandy. Jestliže je před těmito operandy nalezen další operátor, starý operátor je umístěn stranou dokud není vyřešen nový operátor. Tento proces se opakuje, dokud nejsou vyřešeny všechny operátory. V celém výrazu musí být o jeden operand více než je operátorů.

Když máme vyřešeno, operátor a dva operandy jsou nahrazeny novým operandem (výsledkem řešení). Protože byl jeden operátor a dva operandy odstraněny a přidali jsme nový operand, znamená to, že stále máme o jeden operand víc než operátorů, umožňuje nám to pokračovat ve výpočtu. To je hlavní teorie užívání zásobníků v programovacích jazycích k řešení příkladů v prefixové notaci, třebaže máme k dispozici různé algoritmy k řešení procesu. Další příklad ilustruje komplexní řešení výrazu v prefixové notaci.

 − * / 15 − 7 + 1 1 3 + 2 + 1 1 =
 − * / 15 − 7   2   3 + 2 + 1 1 =
 − * / 15     5     3 + 2 + 1 1 =
 − *        3       3 + 2 + 1 1 =
 −          9         + 2 + 1 1 =
 −          9         + 2   2   =
 −          9         4         =
                5

Polská notace v logice

Následující tabulka ukazuje zápis logických výrazů. „Tradiční“ zápis se začal používat v letech 1970 a 1980.

PojemTradiční
zápis
Polská
notace
Negace¬φ
Konjunkceφ∧ψKφψ
Disjunkceφ∨ψAφψ
Implikaceφ→ψCφψ
Ekvivalenceφ↔ψEφψ
Obecný kvantifikátor∀φΠφ
Existenční kvantifikátor∃φΣφ

Související články

Externí odkazy

Média použitá na této stránce

Prefix-dia.svg
Illustration of prefix notation