ONP – wykonanie przykładowego działania

Zapis: odczytujemy:

  1. Jako pierwszy operand weźmy liczbę 2.

  2. Jako drugi operand weźmy liczbę 9.

  3. Pomnóżmy przez siebie liczby 9 i 2.

  4. Zapiszmy w miejscu operandów (czyli liczb 9 i 2) i znaku działania (w tym przypadku znaku mnożenia) wynik wykonanego obliczenia. Otrzymujemy: 18 5 +.

  5. Jako pierwszy operand kolejnego działania weźmy liczbę 18.

  6. Jako drugi operand weźmy liczbę 5.

  7. Do liczby 18 dodajmy liczbę 5.

  8. Wynik działania jest równy 23 (ponieważ 9 2 = 1818   +   5   =   23).

Po wykonaniu tego działania możemy dojść do wniosku, że zaprezentowane wyrażenie arytmetyczne można zapisać za pomocą klasycznej notacji w postaci: 2 9 + 5.

Przykład 1

Oblicz wartość wyrażenia: 11 3 + 6 4 1 +

Porównaj swój sposób obliczeń z przedstawionym poniżej.

Pokaż rozwiązanie

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

Linia 1. funkcja oblicz otwórz nawias okrągły ciąg wyrażeń zamknij nawias okrągły dwukropek. Linia 2. dopóki ciąg się nie skończył przecinek wykonuj dwukropek. Linia 3. wyrażenie ← kolejna wartość odczytana z ciągu. Linia 4. jeżeli wyrażenie jest liczbą dwukropek. Linia 5. odłóż wyrażenie na stosie. Linia 6. jeżeli wyrażenie jest operatorem dwukropek. Linia 7. a ← odczytaj liczbę ze stosu. Linia 8. b ← odczytaj liczbę ze stosu. Linia 9. wynik ← zapisz wynik działania otwórz nawias okrągły b wyrażenie a zamknij nawias okrągły. Linia 10. odłóż wynik działania na stosie. Linia 11. Zwróć pozostałą na stosie wartość.

Sposób działania algorytmu pokażemy na przykładzie: 9 3 + 6 6 * +.

Słownik

operand
operand

liczba, na której wykonywane jest działanie

stos
stos

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 infiksowy
zapis infiksowy

zapis, w którym znak wykonywanego działania jest pomiędzy jego operandami

zapis postfiksowy
zapis postfiksowy

zapis, w którym znak wykonywanego działania jest zapisany po jego operandach

zapis prefiksowy
zapis prefiksowy

zapis, w którym znak wykonywanego działania jest zapisany przed jego operandami