Odwrotna Notacja Polska

Podobne dokumenty
Dynamiczny przydział pamięci w języku C. Dynamiczne struktury danych. dr inż. Jarosław Forenc. Metoda 1 (wektor N M-elementowy)

Odczyt danych z klawiatury Operatory w Javie

TRANSLACJA I TRANSLATORY

Składnia rachunku predykatów pierwszego rzędu

Notacja RPN. 28 kwietnia wyliczanie i transformacja wyrażeń. Opis został przygotowany przez: Bogdana Kreczmera.

Wstęp do programowania

Operacje wykonywane są na operandach (argumentach operatorów). Przy operacji dodawania: argumentami operatora dodawania + są dwa operandy 2 i 5.

EGZAMIN MATURALNY Z INFORMATYKI

Samodzielnie wykonaj następujące operacje: 13 / 2 = 30 / 5 = 73 / 15 = 15 / 23 = 13 % 2 = 30 % 5 = 73 % 15 = 15 % 23 =

Algorytmy i. Wykład 3: Stosy, kolejki i listy. Dr inż. Paweł Kasprowski. FIFO First In First Out (kolejka) LIFO Last In First Out (stos)

Metody Kompilacji Wykład 3

Wstęp do informatyki- wykład 2

1. Maszyna Turinga, gramatyki formalne i ONP

Analiza semantyczna. Gramatyka atrybutywna

1.1. Pozycyjne systemy liczbowe

FUNKCJA LINIOWA - WYKRES. y = ax + b. a i b to współczynniki funkcji, które mają wartości liczbowe

Jeśli nie potrafisz wytłumaczyć czegoś w prosty sposób, to znaczy, że tak naprawdę tego nie rozumiesz

Języki i paradygmaty programowania

Operatory. Operatory bitowe i uzupełnienie informacji o pozostałych operatorach. Programowanie Proceduralne 1

Podstawy i języki programowania

Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska

Przedrostkowa i przyrostkowa inkrementacja i dekrementacja

Wprowadzania liczb. Aby uniknąć wprowadzania ułamka jako daty, należy poprzedzać ułamki cyfrą 0 (zero); np.: wpisać 0 1/2

EGZAMIN MATURALNY Z INFORMATYKI MAJ 2010 POZIOM ROZSZERZONY CZĘŚĆ I WYBRANE: Czas pracy: 90 minut. Liczba punktów do uzyskania: 20 WPISUJE ZDAJĄCY

Operatory w C++ Operatory arytmetyczne. Operatory relacyjne (porównania) Operatory logiczne. + dodawanie - odejmowanie * mnożenie / dzielenie % modulo

3. Macierze i Układy Równań Liniowych

1. LICZBY DZIAŁ Z PODRĘCZNIKA L.P. NaCoBeZu kryteria sukcesu w języku ucznia

Zakres materiału obowiązujący do egzaminu poprawkowego z matematyki klasa 1 d LO

7a. Teoria drzew - kodowanie i dekodowanie

Algorytmy i struktury danych. Wykład 4

Języki formalne i automaty Ćwiczenia 4

Języki formalne i automaty Ćwiczenia 3

Wymagania edukacyjne z matematyki dla klasy VII

Przykłady zastosowań funkcji tekstowych w arkuszu kalkulacyjnym

Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

Wymagania edukacyjne z matematyki dla uczniów klasy VII szkoły podstawowej

FUNKCJA LINIOWA - WYKRES

Zadanie 1. Zmiana systemów. Zadanie 2. Szyfr Cezara. Zadanie 3. Czy liczba jest doskonała. Zadanie 4. Rozkład liczby na czynniki pierwsze Zadanie 5.

4. Funkcje. Przykłady

Języki formalne i automaty Ćwiczenia 9

Myśl w języku Python! : nauka programowania / Allen B. Downey. Gliwice, cop Spis treści

MATEMATYKA WYMAGANIA EDUKACYJNE DLA KLASY V

.! $ Stos jest list z trzema operacjami: dodawanie elementów na wierzch stosu, zdejmowanie elementu z wierzchu stosu, sprawdzanie czy stos jest pusty.

I. Liczby i działania

Excel zadania sprawdzające 263

WYMAGANIA KONIECZNE - OCENA DOPUSZCZAJĄCA:

Stuck in the loop. Sterowanie. Marcin Makowski. 29 października Zak lad Chemii Teoretycznej UJ

Python: JPEG. Zadanie. 1. Wczytanie obrazka

Czas pracy: 60 minut

Obliczenia na stosie. Wykład 9. Obliczenia na stosie. J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 266 / 303

Algorytm. a programowanie -

Semantyka i Weryfikacja Programów - Laboratorium 3

Trik 1 Identyfikator klienta generowany za pomocą formuły

Metody Kompilacji Wykład 8 Analiza Syntaktyczna cd. Włodzimierz Bielecki WI ZUT

Matematyczne Podstawy Informatyki

Podstawy programowania w języku C i C++

Klasa 2 INFORMATYKA. dla szkół ponadgimnazjalnych zakres rozszerzony. Założone osiągnięcia ucznia wymagania edukacyjne na. poszczególne oceny

Podstawą w systemie dwójkowym jest liczba 2 a w systemie dziesiętnym liczba 10.

DODAWANIE I ODEJMOWANIE SUM ALGEBRAICZNYCH

UTK Można stwierdzić, że wszystkie działania i operacje zachodzące w systemie są sterowane bądź inicjowane przez mikroprocesor.

ARCHITEKTURA KOMPUTERÓW Systemy liczbowe

EGZAMIN MATURALNY Z INFORMATYKI

Struktury danych: stos, kolejka, lista, drzewo

... (środowisko) minut

(mniejszych od 10 9 ) podanych przez użytkownika, wypisze komunikat TAK, jeśli są to liczby bliźniacze i NIE, w przeciwnym przypadku.

ALGORYTMY I PROGRAMY

Algorytmy i Struktury Danych.

Abstrakcyjne struktury danych w praktyce

Algorytmy i Struktury Danych.

Obliczenia iteracyjne

Wyrażenie nawiasowe. Wyrażenie puste jest poprawnym wyrażeniem nawiasowym.

KOŁO MATEMATYCZNE LUB INFORMATYCZNE - klasa III gimnazjum, I LO

Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych. Ćwiczenie 3 stos Laboratorium Metod i Języków Programowania

Laboratorium 3: Tablice, tablice znaków i funkcje operujące na ciągach znaków. dr inż. Arkadiusz Chrobot dr inż. Grzegorz Łukawski

2. Łańcuchy tekstowe w PHP

PRÓBNY EGZAMIN MATURALNY Z INFORMATYKI STYCZEŃ POZIOM ROZSZERZONY Część I

Języki programowania zasady ich tworzenia

1. A 2. A 3. B 4. B 5. C 6. B 7. B 8. D 9. A 10. D 11. C 12. D 13. B 14. D 15. C 16. C 17. C 18. B 19. D 20. C 21. C 22. D 23. D 24. A 25.

Wstęp do informatyki- wykład 5 Instrukcja selekcji if-else Operatory arytmetyczne i logiczne

Przypomnij sobie krótki wstęp do teorii grafów przedstawiony na początku semestru.

x 2 = a RÓWNANIA KWADRATOWE 1. Wprowadzenie do równań kwadratowych 2. Proste równania kwadratowe Równanie kwadratowe typu:

5. Rozwiązywanie układów równań liniowych

9. Podstawowe narzędzia matematyczne analiz przestrzennych

Złożoność obliczeniowa zadania, zestaw 2

Gramatyki atrybutywne

DZIAŁANIA NA UŁAMKACH DZIESIĘTNYCH.

EGZAMIN MATURALNY Z INFORMATYKI WYBRANE: ... (system operacyjny) ... (program użytkowy) ... (środowisko programistyczne)

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Wstęp do informatyki- wykład 1 Systemy liczbowe

Zadanie 2: Arytmetyka symboli

KRYTERIA OCEN Z MATEMATYKI DLA KLASY I GIMNAZJUM

Argumenty wywołania programu, operacje na plikach

Algorytmy i Struktury Danych.

Wymagania edukacyjne z matematyki

operacje porównania, a jeśli jest to konieczne ze względu na złe uporządkowanie porównywanych liczb zmieniamy ich kolejność, czyli przestawiamy je.

Wymagania edukacyjne z matematyki

1. Operacje logiczne A B A OR B

Wymagania eduka cyjne z matematyki

Pomorski Czarodziej 2016 Zadania. Kategoria C

Transkrypt:

Odwrotna Notacja Polska Odwrotna Notacja Polska w skrócie ONP) jest sposobem zapisu wyrażeń arytmetycznych. Znak wykonywanej operacji umieszczany jest po operandach, argumentach tzw. zapis postfiksowy). ktualnie stosuje się dwie notacje zapisu wyrażeń : infiksowa wrostkowa): argument1 operator argument2 postfiksowa przyrostkowa): argument1 argument2 operator Poniższa tabela przedstawia przykładowe zapisy w obu notacjach. UNIWERSYTET EKONOMICZNY W KRKOWIE Notacja infiksowa Notacja postfiksowa + B B + B C) D B C D Zapis wyrażeń w notacji postfiksowej jest najczęściej wykorzystywany do sprawdzenie poprawności wyrażenia jak i do samego obliczenia wyniku końcowego. Konwersja wyrażenia z postaci infiksowej na postać postfiksową Podstawowe zasady obowiązujące w trakcie konwersji: kolejność argumentów w postaci infiksowej i postfiksowej jest taka sama, zmianie ulega kolejność operatorów, wyrażenie w postaci infiksowej jest analizowane od lewej do prawej strony, po odczytaniu argumentu jest on natychmiast zapisywany do wyrażenia w postaci postfiksowej, odczytane operatory przechowywane są na stosie. lgorytm konwersji przedstawia sie następująco: 1.usuwamy wszystkie elementy ze stosu na początku konwersji stos musi być pusty), 2.jeżeli odczytany został operator i stos jest pusty to operator umieszczamy na stosie, 3.jeżeli odczytany został operator o wyższym priorytecie niż operator znajdujący się na wierzchołku stosu to odczytany operator umieszczany na stosie. W przeciwnym przypadku ze stosu usuwamy operator znajdujący się na jego wierzchołku i umieszczamy go on na końcu wyrażenia w postaci postfiksowej. Dalszy sposób postępowania z odczytanym operatorem jest określony przez ponowna realizację punktu 2 lub punktu 3, 4.jeżeli został osiągnięty koniec analizowanego wyrażenia zapisanego w postaci infiksowej to ze stosu usuwamy kolejno znajdujące się tam operatory i dopisujemy je do wyrażenia w postaci postfiksowej. istnieje jeszcze notacja prefiksowa przedrostkowa), jest to tak zwana notacja polska najpierw podawany jest operator, a potem argumenty np. + B C ) 23

lgorytmy i Struktury Danych Przykład konwersji Chcemy zamienić wyrażenie w postaci infiksowej na wyrażenie w postaci postfiksowej. Rozpatrzmy takie wyrażenie: + B C D Realizacja konwersji przebiega w następujący sposób: Bieżący odczytany) element wyrażenia w postaci infiksowej Zawartość stosu Wyrażenie w postaci postfiksowej UNIWERSYTET EKONOMICZNY W KRKOWIE + + B + C D B B + B + C B + C B + C D B + C D B + C D 24

Efektem konwersji jest wyrażenie w formie postfiksowej. B + C D Konwersja wyrażeń zawierających nawiasy UNIWERSYTET EKONOMICZNY W KRKOWIE lgorytm konwersji wyrażeń, w których występują nawiasy jest bardzo podobny do zwykłej konwersji. Nawiasy traktowane są w podobny sposób jak operatory. Priorytet nawiasu jest niższy od priorytetu każdego innego operatora. Jeżeli odczytanym elementem wyrażenia zapisanego w postaci infiksowej jest lewy nawias to umieszczamy go na stosie. Jeżeli odczytanym elementem wyrażenia zapisanego w postaci infiksowej jest prawy nawias to ze stosu usuwamy kolejno znajdujące się na nim operatory i dopisujemy je do wyrażenia w postaci postfiksowej. Operacja usuwania operatorów ze stosu jest wykonywana aż do chwili, gdy na wierzchołku stosu znajdzie się lewy nawias. Wówczas odpowiadające sobie nawiasy są usuwane prawy z wyrażenia infiksowego, zaś lewy ze stosu). Przykład konwersji Chcemy zamienić wyrażenie w postaci infiksowej zawierające nawiasy na wyrażenie w postaci postfiksowej. Rozpatrzmy takie wyrażenie: C H) B C) Realizacja konwersji przebiega w następujący sposób: Bieżący odczytany) element wyrażenia w postaci infiksowej Zawartość stosu Wyrażenie w postaci postfiksowej 25

lgorytmy i Struktury Danych C C C H C H UNIWERSYTET EKONOMICZNY W KRKOWIE ) B C C H C H C H C H B C H B C H B C 26

) C H B C C H B C C H B C UNIWERSYTET EKONOMICZNY W KRKOWIE Efektem konwersji jest wyrażenie w formie postfiksowej. C H B C Tablica przejść Podczas konwersji wyrażeń z notacji infiksowej na postfiksową implementacja algorytmu), przydać się może poniższa tabela, tak zwana tablica przejść. bieżący znak argument koniec wyrażenia ) znak na wierzchołku stosu +,, pusty BŁĄD pobierz ze stosu i usuń ")" oraz "" KONIEC BŁĄD połóż na stosie połóż na stosie połóż na stosie połóż na stosie +, połóż na stosie, połóż na stosie połóż na stosie połóż na stosie połóż na stosie 27

lgorytmy i Struktury Danych Sprawdzanie poprawności wyrażeń arytmetycznych UNIWERSYTET EKONOMICZNY W KRKOWIE Konwersja błędnie zapisanego wyrażenia w postaci infiksowej prowadzi do utworzenia błędnego wyrażenia w postaci postfiksowej. Metoda sprawdzająca poprawność wyrażenia analizuje wyłącznie jego postać postfiksową. Przyjmując następujące oznaczenia: s i stałe argumenty) występujące w wyrażeniu postfiksowym, o i operatory występujące w wyrażeniu postfiksowym, definiujemy pojęcie stopnia operatora. Przez stopień operatora rozumiemy liczbę wymaganych przez niego argumentów np. stopień operatora wynosi 2). Każdemu wyrażeniu postfiksowemu przypisujemy współczynnik zwany rangą wyrażenia r). Sposób obliczania rangi wyrażenia to: ranga symbolu s i wynosi 1, ranga operatora o i stopnia n wynosi 1n, ranga ciągu symboli s i i operatorów o i jest równa sumie rang poszczególnych symboli i operatorów. Poniżej proste przykłady obliczania rangi symbolu, operatorów oraz. rs i ) = 1 ranga symbolu r+) = r) = r) = r) = 1 rangi operatorów ra b + c d + ) = ra) + rb) + r+) + rc) + rd) + r+) + r) = 1 + 1 + 1) + 1 + 1 + 1) + 1) = 1 Do sprawdzenia poprawności brakuje nam jeszcze pojęcia głowy właściwej. Łańcuch symboli z = x y składa się z dwóch części: głowy x) i ogonay). Głowa łańcucha jest właściwa jeśli jego ogon nie jest łańcuchem pustym. Przykładowa głowa właściwa dla naszego wyrażenia została zaznaczona kolorem niebieskim. ra b + c d + ) = ra) + rb) + r+) + rc) + rd) + r+) + r) Wyrażenie postfiksowe jest poprawne wtedy i tylko wtedy, gdy ranga tego wyrażenia jest równa 1 i ranga dowolnej głowy właściwej wyrażenia jest większa lub równa 1. Przykłady wyrażeń poprawnych i niepoprawnych. wyrażenie w notacji infiksowej: a b c wyrażenie w notacji postfiksowej: a b c ranga wyrażenia: ra b c ) = ra) + rb) + rc) + r) + r) = 1 + 1 + 1 + 1) + 1) = 1 głowy właściwe: ra) = 1 ra) + rb) = 2 ra) + rb) + rc) = 3 ra) + rb) + rc) + r) = 2 wyrażenie poprawne ranga wyrażenia równa 1 i wszystkie głowy właściwe >= 1) 28

wyrażenie w notacji infiksowej: a + b wyrażenie w notacji postfiksowej: a b + ranga wyrażenia: ra b +) = ra) + rb) + r) + r+) = 1 + 1 + 1) + 1) = 0 wyrażenie niepoprawne ranga wyrażenia równa zero) wyrażenie w notacji infiksowej: a + b c wyrażenie w notacji postfiksowej: a b c + ranga wyrażenia: ra b c +) = ra) + r) + rb) + rc) + r+) = 1 + 1) + 1 + 1 + 1) = 1 głowy właściwe: ra) = 1 ra) + r) = 0 UNIWERSYTET EKONOMICZNY W KRKOWIE wyrażenie niepoprawne jedna z głów właściwych mniejsza od 1) Obliczanie wartości wyrażenia zapisanego w ONP Obliczanie wartości polega na jego analizie od lewej do prawej strony. odczytane argumenty są umieszczane na stosie, po odczytaniu operatora odczytywana jest odpowiednia liczba argumentów, wykonywane jest działanie i wynik umieszczany jest na stosie. Poniżej przedstawione zostały poszczególne kroki obliczania wartości przykładowego wyrażenia. Wyrażenie w postaci infiksowej. 3 + 7) 8 4) Wyrażenie skonwertowane do postaci postfiksowej. 3 7 + 8 4 naliza wyrażenia oraz zawartość stosu na poszczegółnych etapach obliczeń. Końcowy wynik to wartość 40. 7 8 4 4 3 10 10 10 40 29