Algorytm obliczania wartości wyrażenia ONP
ONP – wykonanie przykładowego działania
Zapis: odczytujemy:
Jako pierwszy operand weźmy liczbę 2.
Jako drugi operand weźmy liczbę 9.
Pomnóżmy przez siebie liczby 9 i 2.
Zapiszmy w miejscu operandów (czyli liczb 9 i 2) i znaku działania (w tym przypadku znaku mnożenia) wynik wykonanego obliczenia. Otrzymujemy: .
Jako pierwszy operand kolejnego działania weźmy liczbę 18.
Jako drugi operand weźmy liczbę 5.
Do liczby 18 dodajmy liczbę 5.
Wynik działania jest równy 23 (ponieważ i ).
Po wykonaniu tego działania możemy dojść do wniosku, że zaprezentowane wyrażenie arytmetyczne można zapisać za pomocą klasycznej notacji w postaci: .
Oblicz wartość wyrażenia: .
Porównaj swój sposób obliczeń z przedstawionym poniżej.
Tym razem omówimy algorytm pozwalający obliczyć wartość wyrażenia zapisanego w odwrotnej notacji polskiej.
Algorytm obliczania wartości wyrażenia w ONP
Algorytm wykorzystywany do obliczania wartość wyrażenia zapisanego w odwrotnej notacji polskiej odpowiada sposobowi, w jaki procesory przetwarzają informacje.
Po kolei odczytujemy elementy wyrażenia. Jeżeli okaże się, że element jest liczbą, umieszczamy ją na stosie. W przypadku gdy element jest operatorem, zdejmujemy dwie liczby ze stosu, wykonujemy na nich działanie odpowiadające operatorowi, a wynik umieszczamy na stosie. Przy wykonywaniu działań istotna jest kolejność operandów. Pierwszym (lewym) operandem jest wartość odczytana ze stosu jako druga, natomiast wartość odczytana ze stosu jako pierwsza jest drugim (prawym) operandem. Po odczytaniu całego wyrażenia arytmetycznego na stosie zostanie tylko jedna liczba – to właśnie wartość wyrażenia.
Pseudokod obliczania wartości wyrażenia w ONP
Sposób działania algorytmu pokażemy na przykładzie: 9 3 + 6 6 * +.
Słownik
liczba, na której wykonywane jest działanie
struktura danych, w której informacje są pobierane ze szczytu i na niego odkładane; struktura typu LIFO (ang. Last In, First Out – ostatni na wejściu, pierwszy na wyjściu)
zapis, w którym znak wykonywanego działania jest pomiędzy jego operandami
zapis, w którym znak wykonywanego działania jest zapisany po jego operandach
zapis, w którym znak wykonywanego działania jest zapisany przed jego operandami