Omvänd polsk notation

Från Rilpedia

Hoppa till: navigering, sök
Wikipedia_letter_w.pngTexten från svenska WikipediaWikipedialogo_12pt.gif
rpsv.header.diskuteraikon2.gif

Omvänd polsk notation är ett sätt att mata in ett aritmetiskt uttryck så att man inte behöver använda några parenteser. Notationen är typ av postfixnotation, med andra ord skrivs operatorn in efter operanderna. Polsk notation har på motsvarande vis en prefixnotation form, då operatorn följaktligen skrivs in före operanderna. Omvänd polsk notation är den vanligaste varianten.

Låt oss betrakta följande uttryck:

 a \times \frac {b+c} {d+e}

Med en miniräknare baserad på vanlig notation skulle detta kräva fjorton knapptryckningar: a × ( b + c ) ÷ ( d + e ) =

Med en miniräknare baserad på omvänd polsk notation krävs det bara tolv: a [ENTER] b [ENTER] c + × d [ENTER] e + ÷

Operatorn verkar alltså på de närmast föregående operanderna, och mellanresultaten då ett uttryck räknas ut kan tänkas bli instoppade på den plats där de tidigare argumenten och operatorn fanns i uttrycket. Exempelvis kan det tidigare uttrycket tänkas beräknas i följande steg:

abc + × de + ÷       (x ← b + c)
ax × de + ÷ (y ← a × x)
yde + ÷ (z ← d + e)
yz ÷ (w ← y ÷ z)
w (slutresultatet)

Notationen infördes omkring 1920 av den polske matematikern Jan Łukasiewicz. Omvänd polsk notation aktualiserades på 1970-taletHewlett-Packard introducerade sin miniräknare HP-35. Denna kalkylator var stack-baserad och saknade tangenter för parenteser. För inmatning av en operand i stacken (det vill säga när någon operator inte kan användas) används en särskild Enter-tangent. Antalet tangenttryckningar blir minimalt.


Omvänd polsk notation är extremt lätt att tolka för en dator och är i praktiken inblandad i all tolkning av aritmetiska uttryck i programspråk. Denna notation är ett mellansteg när programspråkets notation översätts till datorns maskinkod. En del programspråk, som Forth och PostScript, använder denna notation direkt. Detsamma gäller de flesta flyttalsprocessorer.

Personliga verktyg