Käänteinen puolalainen notaatio
Käänteinen puolalainen notaatio eli RPN- (Reverse Polish Notation) tai postfix-notaatio on pinomainen matemaattisten kaavojen merkintätapa.
Puolalaisen notaation keksi Jan Lucasiewicz 1920-luvulla ja Charles L. Hamblin ehdotti 1950-luvun lopulla operaattorin sijoittamista operandien jälkeen, jolloin käänteinen puolalainen notaatio syntyi.[1]
Notaatiota on käytetty muun muassa Hewlett-Packardin laskimissa.[2] RPL-ohjelmointikieli käyttää käänteistä puolalaista notaatiota.[3][2]
Laskusäännöt
Käänteisessä puolalaisessa notaatiossa lasketaan seuraavien sääntöjen avulla:
- Laskut suoritetaan alkaen sisimmistä suluista. Periaatteessa järjestys on vapaa, mutta vasemmalta oikealle helpottaa muistamaan, mitä on jo laskenut.
- Operandit tulevat ennen niitä koskevaa operaatiota.
- Kun operaatio suoritetaan, tuloksesta itsestään tulee operandi myöhempiä operaatioita varten.
Postfix-notaatiolla laskukaava:[2]
- (4 + 5) × 6
..voidaan esittää muodossa:
- 4 5 + 6 ×
.. tai:
- 6 4 5 + ×
Esimerkki
Lasku ((1 + 2) * 4) + 3 voidaan suorittaa käänteisessä puolalaisessa notaatiossa (HP) seuraavasti:
- 1 ↵ Enter (näytössä 1)
- 2 + (näytössä 3)
- 4 * (näytössä 12)
- 3 + (näytössä 15)
Aloitamme sisimmistä sulkeista syöttämällä Enterillä luvun 1 sisään eli pinon toiselle tasolle. Kun tämän jälkeen syötämme numeron 2, sisällä on kaksi lukua, joiden välillä suoritetaan laskenta eli yhteenlasku - toinen rivi, ja saamme tulokseksi 3.
Kun sen jälkeen syötämme ulommassa sulussa olevan luvun 4, aiempi tulos nousee automaattisesti toiselle tasolle. Jälleen meillä on tarjolla kaksi lukua, joiden välillä suoritamme kertolaskun - rivi kolme, ja nyt saamme tulokseksi 12.
Kun vielä syötämme luvun 3, nousee esillä ollut lukema taas automaattisesti pinon toiselle tasolle, ja meillä on tarjolla kaksi lukua, joiden välillä teemme yhteenlaskun, ja saamme tulokseksi 15.
Ensimmäisen luvun voi syöttää myös yhteen- ja vähennyslaskumerkeillä mutta ei kerto- tai jakolaskumerkeillä, jolloin luvuksi tulee nolla.
Pinon nosto alimman ja toisen tason välillä tapahtuu automaattisesti, mutta tasoa voi nostaa erikseen Enterillä. Luvut voitaisiin laskea myös takaperoisessa järjestyksessä
- 3 ↵ Enter (toinen taso)
- 4 ↵ Enter (toinen taso, 3 kolmas taso)
- 1 ↵ Enter (toinen taso, 4 kolmas taso, 3 neljäs taso)
- 2 + * + (luvun syötön jälkeen 2 alataso, 1 toinen taso, 4 kolmas taso, 3 neljäs taso)
ja laskutentävien jälkeen tuloksiksi tulevat järjestyksessä 3, 12 ja 15.
Tämä esitystapa siis vain havainnollistamaan pinon toimintaa. Käytännössä se ei ole suositeltavaa ainakaan huonomuistisille, koska pinon arvot muuttuvat koko ajan ja ovat siten vaikeasti muistettavia.
(Aloittaen vasemmalta pinoon talletetaan ensin tulevat operandit 1 ja 2. Seuraavaksi vastaan tulee operaatio +, jolla suoritetaan lasku, jonka tulos sijoitetaan operandien ja operaattorin tilalle. Kaava on yksinkertaistunut siis muotoon
- 3 4 * 3 +
Aloitetaan taas vasemmalta ja samaan tapaan suoritetaan *-operaatio, jolloin kaava yksinkertaistuu edelleen:
- 12 3 +
Viimeisen operaation jälkeen jäljelle jää luku 15, joka on laskun tulos.)