Pobierz prezentację
Pobieranie prezentacji. Proszę czekać
1
ODWROTNA NOTACJA POLSKA
UNIWERSYTET PEDAGOGICZNY IM. KOMISJI EDUKACJI NARODOWEJ W KRAKOWIE ODWROTNA NOTACJA POLSKA
2
Pojęcia użyte w prezentacji Podsumowanie
Ojcowie i idea ONP Algorytmy: - zamiany postaci infiksowej wyrażenia na postać ONP; - obliczania wartości wyrażeń w postaci ONP; - zamiany postaci ONP wyrażenia na postać infiksową. Coś dla głowy Pojęcia użyte w prezentacji Podsumowanie
3
Lata 20-te ubiegłego wieku:
Ojcowie i idea ONP Lata 20-te ubiegłego wieku: Polski filozof i matematyk Jan Łukasiewicz ( ) opracowuje prefiksowy sposób zapisywania wyrażeń (arytmetycznych, algebraicznych i logicznych): najpierw operator, a potem argumenty, np. +23 oznacza 2+3. Nazywa go Notacją Polską. Lata 50-te ubiegłego wieku: Australijski filozof i pionier informatyki Charles Hamblin ( ) proponuje odwrócenie Notacji Polskiej – tak powstaje postfiksowy zapis wyrażeń: najpierw argumenty, a potem operator. Tak powstaje Odwrotna Notacja Polska (ONP), z ang. Reverse Polish Notation (RPN). Powrót
4
Przykłady zapisu wyrażeń algebraicznych w ONP
Zapis infiksowy (tradycyjny) Zapis postfiksowy (ONP) a + b a b + a + b + c a b + c + (ab+ stanowi pierwszy argument drugiego dodawania) (a + b) * c a b + c * c * (a + b) c a b + * (a + b) * c + d a b + c * d + (a + b) * c + d * a a b + c * d a * + (a + b) * c + d * (a + c) a b + c * d a c + * + (a + b) * c + (a + c) * d a b + c * a c + d * + (2 + 5) / / 5 / 3 5 / + Można sprawdzić poprawność ich obliczania na rzeczywistym kalkulatorze wykorzystującym ONP (wystarczy nacisnąć na pingwinka) Powrót
5
Korzyści stosowania notacji ONP
ONP oszczędza czas i naciśnięcia klawiszy. Nie trzeba się martwić o nawiasy podczas obliczeń. Cały proces liczenia jest podobny do sposobu, w jakim się liczy na papierze. Pośrednie wyniki pozwalają użytkownikowi na ich sprawdzenie i poprawienie błędów. Łatwiej jest kontrolować przebieg obliczeń. Użytkownik określa priorytet operatorów. Ponieważ podwyrażenia są obliczane w miarę jak są wpisywane, błędy wprowadzenia są bardziej oczywiste przy ONP. W kalkulatorach algebraicznych, opuszczenie nawiasu otwierającego może prowadzić do błędu obliczeń, który ujawni się dużo później, dopiero, gdy całe wyrażenie zostanie obliczone. Przykłady Powrót
6
Nie tylko kompetencja, ale i elegancja
Wyrażenie Operacje konieczne do obliczenia wartości wyrażenia na standardowym kalkulatorze na kalkulatorze ONP (RPN) (8 + 6)(7 - 5) [8] [+] [6] [=] [M+] [7] [-] [5] [x] [MR] [=] 11 naciśnięć klawiszy [8] [ENTER] [6] [+] [7] [ENTER] [5] [-] [x] 9 naciśnięć klawiszy [(8 + 6)(7 - 5)] / (9 - 7) [8] [+][6] [=] [M+] [7] [-] [5] [x] [MR] [=] [MC] [M+] [9] [-] [7] [/] [MR] [=] [MC] [M+] [1] [/] [MR] [=] 25 naciśnięć klawiszy i pomysłowość [8] [ENTER] [6] [+] [7] [ENTER] [5] [-] [x] [9] [ENTER] [7] [-] [/] 14 naciśnięć klawiszy 2 sin(45+2^3) [4] [5] [+] [2] [^] [3] [=] [sin] [*] [2] [=] [2] [ENTER] [3] [^] [4] [5] [+] [sin] [2] [x] 10 naciśnięć klawiszy Powrót
7
Algorytm zamiany postaci infiksowej wyrażenia na postać ONP
START Pobierz symbol z lewej ku prawej T WYJŚCIE Argument STOS T N ( Zawartość stosu aż do „(” na wyjście T N ) STOS T Operator N Czy wyższy w stosie do „(” lub dna T Zawartość stosu do „(” lub do dna na wyjście N Φ N BŁĄD N T Stos na wyjście KONIEC Powrót
8
Przykład zamiany postaci infiksowej wyrażenia na postać ONP
Dokonać konwersji wyrażenia typu: (a + b) * c + d * a Stos Wyjście Stos Wyjście Stos Wyjście ( * ab + + * ab + c * d ( a * ab + c c ab + c * da a + * ( + a + ab + c * * ab + c * da * * + Symbole wyrażenia w postaci infiksowej pobierane są z lewej ku prawej. 1. Nawias otwierający „(” wchodzi na stos. Argument „a” wchodzi na wyjście. Operator „+” na stos. 4. Argument „b” na wyjście. 5. Nawias zamykający „)” zbiera wszystko do znaku „(” i daje na wyjscie. 6. Operator „*” na stos. 7. Argument „C” na wyjście. 8. Operator „+” na stos, a ze stosu mający wyższy priorytet operator „*” na nwyjście. 9. Argument „d” na wyjście. 10. Operator „*” na stos, a operator „+” zostaje na dnie stosu, ponieważ ma niższy priorytet niż „*”. 11. Argument „a” na wyjście. 12. Na wejściu nie ma już nic, więc ze stosu operatory są zabierane od góry na wyjście: najpierw „*” potem „+”. ( ab b + + ab + c * d d ab + c * da * + + ) ab + + Wynik konwersji: ab + c * da * + Powrót
9
Algorytm obliczania wartości wyrażeń w postaci ONP
START Pobierz symbol z lewej ku prawej STOS T Argument Pobierz argumenty ze stosu, wykonaj działanie, wynik na stos T Operator N Istotna rzecz: Po wystąpieniu operatora ze stosu pobierane są do wykonania działania zawsze dwa ostatnie argumenty. Φ N BŁĄD N KONIEC T Powrót
10
Przykład obliczania wartości wyrażeń w postaci ONP
Obliczyć wartość wyrażenia: 59+2*65*+ 5 9 5 + 14 2 14 * 28 6 28 5 28 6 * 28 30 + 58 Symbole wyrażenia w ONP również pobierane są z lewej ku prawej 1. 2. Do pustego stosu zapisywany jest argument „5”. 3. Argument „9” na stos. 4. Operator „+” powoduje pobranie argumentów „5” i „9” ze stosu, wykonanie działania zgodnego z operatorem oraz zapisanie wyniku „14” na stosie. 5. Argument „2” na stos. 6. Operator „*” powoduje pobranie argumentów „2” i „14” ze stosu, wykonanie działania zgodnego z operatorem oraz zapisanie wyniku „28” na stosie. 7. Argument „6” na stos. 8. Argument „5” na stos. 9. Operator „*” powoduje pobranie dwóch ostatnich argumentów „5” i „6” ze stosu, wykonanie działania zgodnego z operatorem oraz zapisanie wyniku „30” na stosie. 10. Operator „+” powoduje pobranie argumentów „30” i „28” ze stosu, wykonanie działania zgodnego z operatorem oraz zapisanie wyniku „58” na stosie. 11. Ponieważ na wejściu nie ma już nic wynik działania ze stosu podawany jest na wyjście. Wartość wyrażenia: 58 Powrót
11
Algorytm zamiany postaci ONP wyrażenia na postać infiksową
START Pobierz symbol z lewej ku prawej STOS T Argument Zbierz ze stosu dwa ostatnio podane argumenty i wstaw między nie operator (argumentem może być utworzone wcześniej wyrażenie ujęte w nawias) T Operator N Φ N BŁĄD N T Stos na wyjście KONIEC Powrót
12
Przykład zamiany postaci ONP wyrażenia na postać infiksową
Dokonać konwersji wyrażenia typu: ab / cd – c * + a b a ÷ a b c ÷ a b d ÷ a b c * ÷ a b - c d - ÷ a b c d c ÷ a b - d + ÷ a b - c d * Tutaj również symbole pobierane są z lewej ku prawej. 2. Na pusty stos zapisywany jest argument „a”. 3. Argument „b” na stos. 4. Operator „/” powoduje następujące działanie: zabranie ze stosu dwóch ostatnio zapisanych argumentów „a” i „b”, wstawienie pomiędzy nie operatora „/” oraz zapisanie wyrażenia „a/b” na stosie. 5. Argument „c” na stos. 6. Argument „d” na stos. 7. Operator „-” powoduje następujące działanie zabranie: ze stosu dwóch ostatnio zapisanych argumentów „c” i „d”, wstawienie pomiędzy nie operatora „-” oraz zapisanie wyrażenia „c-d” na stosie. 8. Argument „c” na stos. 9. Operator „*” powoduje następujące działanie: zabranie ze stosu dwóch ostatnio zapisanych argumentów „c” i „c-d”, wstawienie pomiędzy nie operatora „*” oraz zapisanie wyrażenia „(c-d)*c” na stosie. Argument „c-d” zapisywany jest na stosie w nawiasach ponieważ jest wyrażeniem a nie pojedynczą cyfrą czy liczbą. 10. Operator „+” powoduje następujące działanie: zabranie ze stosu dwóch ostatnio zapisanych argumentów wyrażenia „(c-d)*c” i wyrażenia „a/b”, wstawienie pomiędzy nie operatora „+” oraz zapisanie wyrażenia „a/b+(c-d)*c” na stosie. 11. Ponieważ na wejściu nie ma już nic wynik konwersji ze stosu podawany jest na wyjście. Wynik konwersji: a / b + (c - d) * c Powrót
13
Dla leniwych lub niedowiarków – odpowiedzi
A teraz coś dla głowy Zamień na ONP: a / c / d + b / c / d a / (c * d) + b / (c * d) (a + b) / c / d (a + b) / (c * d) 2. Zamień z ONP na zapis infiksowy (^ oznacza potęgowanie): a b * c d * e / – a 5 / c 7 / e d – 9 / * + a 3 + b / d e + 6 ^ – d c – 7 b * 2 ^ / Dla leniwych lub niedowiarków – odpowiedzi Powrót
14
Odpowiedzi: Postać ONP: 2. Zapis infiksowy: a c / d / b c / d / +
a b + c / d a b + c d * / 2. Zapis infiksowy: a * b – c * d / e a / 5 + c / 7 * ((e – d) / 9) (a + 3) / b – (d + e) ^ 6 (d – c) / (7 * b) ^ 2 lub: Powrót
15
Pojęcia użyte w prezentacji
ONP - Odwrotna Notacja Polska RPN - Reverse Polish Notation postać infiksowa - tradycyjny zapis wyrażeń postać prefiksowa - zapis wyrażenia w Notacji Polskiej (najpierw operator, potem argumenty) postać postfiksowa - zapis wyrażenia w Odwrotnej Notacji Polskiej (najpierw argumenty, potem operator) stos - bufor, który rządzi się zasadą LIFO (Last In First Out), czyli ostatni przyszedł, pierwszy wychodzi. Inaczej mówiąc, tylko element dodany do stosu jako ostatni możemy pobrać jako pierwszy. Powrót
16
Podsumowanie Wymyślenie Odwrotnej Notacji Polskiej to kolejny przykład na to, że czasem warto utrudnić życie studentom (muszą zgłębić wiedzę na jej temat), żeby ułatwić życie wszystkim. ŹRÓDŁA: mini przewodnik postfix to infix i odwrotnie – zamiana i obliczanie wartości postfix to infix – zamiana postfix to infix obliczanie ONP rzeczywisty kalkulator (można liczyć w ONP) Powrót
17
DZIĘKUJĘ ZA UWAGĘ Powrót
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.