Odwrotna Notacja Polska - ONP



... czyli zapis kolejności wykonywanych działań bez nawiasów

Zapis ten wymyślił Polak - Łukasiewicz. Jednak stawiał operator przed operandami. W praktyce pomysł zmodyfikowano i stawia się go PO operandach.
Np. zamiast:
2+3: 2 3 +
4-1: 4 1 -
Jak procesor wykona takie działanie? Po kolei :)
2 3 +
2 na stos, 3 na stos, operator "+" potrzebuje dwóch argumentów. Zatem ściąga je ze stosu, pierwszy jako prawy argument! Wynik zapisz na stos.
onp1
Sam sprawdź dla minusa.

To teraz ciekawiej. Zapiszmy w ONP:

(2 - 3) * 5

2 3 - 5 *

(Zauważ, że tworząc ONP, nie zmieniasz kolejności operandów)

I wykonajmy:
onp2

Teraz ten sam wynik, ale inne działanie:

5 * (2 - 3)

5 2 3 - *

onp3

Pewna uwaga: jeśli jakaś funkcja potrzebuje więcej lub mniej argumnetów niźli 2, to ściąga sobie ze stosu tyle ile trzeba. Np. sin() pobierze jeden argument.


Zadania:
1) Notacja z nawiasami to notacja infixowa, notacja polska - prefixowa, ONP - postfixowa. Dlaczego?
2) Zamień na ONP

(3+4) / (3-3!)

sin( 3 - pi + 15 / (4 + 1) )

3) Wykonaj działania utworzone w 2)