Prefix- en suffixnotatie

vorm van wiskundige notatie

Prefixnotatie is een vorm van wiskundige notatie waarbij alle operatoren voor hun argumenten geschreven worden. Prefixnotatie is gebruikelijk bij functies: we schrijven doorgaans in plaats van Een uitzondering geldt eigenlijk alleen voor de klassieke functies zoals optelling, deze worden infix geschreven: In prefixnotatie zou een optelling geschreven worden als Gaat men ervan uit dat een optelling altijd precies twee argumenten heeft kan dus niet voorkomen), dan kan het ook zonder haakjes:

Suffixnotatie is het tegenovergestelde van prefixnotatie: het achteraan schrijven van de operator.

Prefixnotatie is omstreeks 1920 uitgevonden door de Poolse logicus Jan Łukasiewicz als notatie voor de propositielogica. Men spreekt daarom ook wel van Poolse notatie. Suffixnotatie heet dan ook wel Omgekeerde Poolse notatie (of RPN, reversed Polish notation). Poolse notatie sloeg in het oorspronkelijke toepassingsgebied niet aan.

Voorbeeld

bewerken
Standaardnotatie (infix) Pools (prefix) Omgekeerd Pools (suffix)
     
     

Volgorde van operanden en operators

bewerken

Merk op dat de volgorde van de operanden   en   niet verandert. Alleen de plaatsing van de operatoren is anders.

Overbodige haakjes

bewerken

Het voordeel van Poolse notatie is dat alle uitdrukkingen zonder haakjes eenduidig zijn. Wel is het nodig dat alle operatoren een vaste ariteit hebben - er zijn dus verschillende operatoren nodig voor aftrekken en negatie. Verder is het nodig dat getallen van elkaar gescheiden worden: er is verschil tussen + 3 58 en + 35 8.

Implementatie

bewerken
 
De HP-35, de eerste zakcalculator van Hewlett-Packard, gebruikte omgekeerde Poolse notatie

Omgekeerde Poolse notatie is gemakkelijk te implementeren met behulp van een stack en werd lang gebruikt in wetenschappelijke calculators van het merk Hewlett-Packard. De stack heeft bij deze machines ruimte voor vier getallen, wat weinig lijkt, maar voor haast alle toepassingen voldoende is. Deze rekenmachines hadden geen haakjestoetsen en ook geen "="-toets om het resultaat van een berekening te tonen, maar wel een "Enter"-toets waarmee een getal op de stack werd geplaatst en die tevens diende als scheiding tussen twee getallen. Om bijvoorbeeld de berekening (27 × 38) ÷ 13 uit te voeren, drukte men achtereenvolgens in 27 [enter] 38 × 13 ÷.

Een compiler van programmeertalen zet vaak eerst de uitdrukkingen om naar Poolse notatie omdat dat door een computer gemakkelijker te verwerken is.

De programmeertaal Lisp wordt volledig in prefixnotatie geschreven. Forth en daarvan afgeleide talen zoals PostScript gebruiken suffixnotatie.