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

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

Schemat konstrukcja pliku Makefile

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

Odwrotna Notacja Polska

Wprowadzenie do szablonów klas

Dalmierze optyczne. Bogdan Kreczmer.

Papyrus. Papyrus. Katedra Cybernetyki i Robotyki Politechnika Wrocławska

Szablony funkcji i szablony klas

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

Lista dwukierunkowa - przykład implementacji destruktorów

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

Języki programowania zasady ich tworzenia

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

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)

Materiały: kartki papieru (5 x 5 kolorów), piłeczki pingpongowe (5 x 5 kolorów), worek (nieprzeźroczysty).

Wprowadzenie do UML, przykład użycia kolizja

Zadanie 2: Arytmetyka symboli

Wstęp do programowania

Wprowadzenie do szablonów szablony funkcji

QualitySpy moduł persystencji

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

1. Algorytmy przeszukiwania. Przeszukiwanie wszerz i w głąb.

Wyliczanie wyrażenia obiekty tymczasowe

Architektura komputerów wer. 7

ARCHITEKTURA KOMPUTERÓW Systemy liczbowe

Praca z aplikacją designer

INFORMATYKA W SZKOLE. Podyplomowe Studia Pedagogiczne. Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227

Dia rysowanie diagramów

Systemy operacyjne. Laboratorium 9. Perl wyrażenia regularne. Jarosław Rudy Politechnika Wrocławska 28 lutego 2017

Laboratorium z przedmiotu Programowanie obiektowe - zestaw 04

Qt sygnały i sloty. Bogdan Kreczmer. Katedra Cybernetyki i Robotyki Wydział Elektroniki Politechnika Wrocławska

Wprowadzenie do maszyny Turinga

2 Arytmetyka. d r 2 r + d r 1 2 r 1...d d 0 2 0,

Wprowadzenie do szablonów szablony funkcji

Schematy blokowe I. 1. Dostępne bloki: 2. Prosty program drukujący tekst.

Czujniki PSD i dalmierze triangulacyjne

Zadanie nr 2: Arytmetyka liczb zespolonych

Metody numeryczne Wykład 4

Wstęp do metod numerycznych Eliminacja Gaussa Równania macierzowe. P. F. Góra

Wykład 5 Wybrane zagadnienia programowania w C++ (c.d.)

Podstawy informatyki 2. Podstawy informatyki 2. Wykład nr 2 ( ) Plan wykładu nr 2. Politechnika Białostocka. - Wydział Elektryczny

Luty 2001 Algorytmy (7) 2000/2001

Geneza powstania języka C++

Matematyczne Podstawy Informatyki

FUNKCJA KWADRATOWA. Zad 1 Przedstaw funkcję kwadratową w postaci ogólnej. Postać ogólna funkcji kwadratowej to: y = ax + bx + c;(

Architektura komputerów wer. 3

XML extensible Markup Language 3

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.

Czujniki PSD i dalmierze triangulacyjne

Języki formalne i automaty Ćwiczenia 9

Laboratorium nr 4: Arytmetyka liczb zespolonych

B.B. 2. Sumowanie rozpoczynamy od ostatniej kolumny. Sumujemy cyfry w kolumnie zgodnie z podaną tabelką zapisując wynik pod kreską:

Geneza powstania języka C++

dr inż. Jarosław Forenc

Zad. 1 Zad. 2 Zad. 3 Zad. 4 Zad. 5 SUMA

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

Programowanie i techniki algorytmiczne

Twój wynik: 4 punktów na 6 możliwych do uzyskania (66,67 %).

Ćwiczenie nr 1: Systemy liczbowe

Definicja algorytmu brzmi:

Wartości domyślne, przeciażenia funkcji

7a. Teoria drzew - kodowanie i dekodowanie

TRANSLACJA I TRANSLATORY

Podstawy informatyki 2

wstęp do informatyki i programowania część testowa (25 pyt. / 60 min.)

Kopiowanie ustawień SolidWorks

1 Układy równań liniowych

OpenGL oświetlenie. Bogdan Kreczmer. Katedra Cybernetyki i Robotyki Wydziału Elektroniki Politechnika Wrocławska

Sortowanie zewnętrzne

Składnia rachunku predykatów pierwszego rzędu

Dodatkowo klasa powinna mieć destruktor zwalniający pamięć.

Ćwiczenie 1. Wprowadzenie do programu Octave

Informatyka 2. Wykład nr 5 ( ) Plan wykładu nr 5. Politechnika Białostocka. - Wydział Elektryczny. Odwrotna notacja polska.

Qt sygnały i designer

Informatyka 2. Wykład nr 5 ( ) Politechnika Białostocka. - Wydział Elektryczny. dr inŝ. Jarosław Forenc

5. Logarytmy: definicja oraz podstawowe własności algebraiczne.

W. Guzicki Zadanie 41 z Informatora Maturalnego poziom podstawowy 1

REKURENCJA W JĘZYKU HASKELL. Autor: Walczak Michał

Jak tworzyd filtry? W jaki sposób odbywa się filtrowanie w systemie pokaż/ukryj pytania?

3. Wykład Układy równań liniowych.

Scenariusz lekcji opartej na programie Program nauczania informatyki w gimnazjum DKW /99

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

Konstruktor kopiujacy

1 Automaty niedeterministyczne

Temat 20. Techniki algorytmiczne

Referencje do zmiennych i obiektów

Urządzenia Techniki. Klasa I TI. System dwójkowy (binarny) -> BIN. Przykład zamiany liczby dziesiętnej na binarną (DEC -> BIN):

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

dr inŝ. Jarosław Forenc

Algorytmy i Struktury Danych.

METODY ROZWIĄZYWANIA RÓWNAŃ NIELINIOWYCH

Algorytmy i Struktury Danych.

Treść wykładu. Układy równań i ich macierze. Rząd macierzy. Twierdzenie Kroneckera-Capellego.

Podstawy programowania 2. Temat: Funkcje i procedury rekurencyjne. Przygotował: mgr inż. Tomasz Michno

Szablon klasy std::vector

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

Diagramy UML, przykład problemu kolizji

Architektura komputerów

Osiągnięcia ponadprzedmiotowe

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

Transkrypt:

1 Przykład wyliczania wyrażeń arytmetycznych Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska Copyright c 2002 2008 Bogdan Kreczmer Strona 1 z 70 Dokument ten jest udostępniony pod warunkiem wykorzystania wyłacznie do własnych prywa tnych potrzeb i może on być kopiowany wyłacznie w całości, razem z niniejsza strona tytułowa.

- trochę historii............... 3 - ogólna idea................. 4 do RPN.................... 6 Kalkulator arytmetyczny w RPN............ 26 Strona 2 z 70

- trochę historii Odwrotna Notacja Polska (RPN - Reverse Polish Notation) opracowana została przez Jana Łukasiewicza (r. 1951). Jedna z podstawowych cech tej notacji jest to, że nie wymaga ona stosowania nawiasów. Pierwszy komputer działajacy w oparciu o notację RPN został zbudowany przez prof. Pawlaka. Niestety nie opatentował on swojego rozwiazania i firma HP skopiowała jego pomysł w swoich kalkulatorach. Strona 3 z 70

- ogólna idea Podstawa własnościa tej notacji jest to, że najpierw zapisuje się argumenty a później operatory, np.: To jest normalny zapis: 2 + 5 To już jest zapis w RPN: 2 5 + Strona 4 z 70

- ogólna idea Teraz bardziej złożony przykład. Wyrażenie w normalnej notacji: (2 + 5) 6 W notacji RPN: 2 5 + 6 Strona 5 z 70

do RPN (2 + 5) 6 Rozważmy to wyrażenie. Strona 6 z 70

do RPN (2 + 5) 6 Aby je przekształcić do notacji RPN w pierwszym kroku szukamy podwyrażenia, które musi być wykonane jako pierwsze. Strona 7 z 70

do RPN (2 + 5) 6 (2 + 5) 6 To będzie to. Strona 8 z 70

do RPN (2 + 5) 6 (2 + 5) 6 Teraz przekształcamy to podwyrażenie do postaci RPN przesuwajac operator na jego koniec. Strona 9 z 70

do RPN (2 + 5) 6 (2 + 5) 6 2 5 + 6 To otrzymujemy jako wynik tego przekształcenia. Ramka została użyta, aby oddzielić część zapisana w normalnej notacji od części zapisanej w notacji RPN Strona 10 z 70

do RPN (2 + 5) 6 (2 + 5) 6 2 5 + 6 Teraz cała procedurę powtarzamy i szukamy wyrażenia, które wykona się jako pierwsze traktujac całe wyrażenie zapisane w notacji RPN jako jedna liczbę. Strona 11 z 70

do RPN (2 + 5) 6 (2 + 5) 6 2 5 + 6 To będzie to i ponownie przekształcamy je jak poprzednio, przy czym zapis w ramce traktujemy jako liczbę. Strona 12 z 70

do RPN (2 + 5) 6 (2 + 5) 6 2 5 + 6 2 5 + 6 I tak otrzymujemy już co trzeba. Strona 13 z 70

do RPN Rozważmy jeszcze jeden bardziej złożony przykład. Strona 14 z 70

do RPN Prześledźmy jak transformować będzie się poniższe wyrażenie. (2 + 5) (3 + 1) - 7 Strona 15 z 70

do RPN (2 + 5) (3 + 1) - 7 Tak jak wcześniej najpierw szukamy podwyrażeń, które wykonaja się przed innymi. Strona 16 z 70

do RPN (2 + 5) (3 + 1) - 7 Oto i one. Strona 17 z 70

do RPN (2 + 5) (3 + 1) - 7 Sprowadzamy je do zapisu RPN poprzez przestawienie operatora. Strona 18 z 70

do RPN 2 5 + (3 + 1) - 7 Wykonujemy tę operację dla każdego nich z osobna. Strona 19 z 70

do RPN 2 5 + 3 1 + - 7 To jest rezultatem tego przekształcenia. Strona 20 z 70

do RPN 2 5 + 3 1 + - 7 Następnym działaniem, które się wykona, jest mnożenie. Wyrażenia w ramkach traktujemy jak liczby. Strona 21 z 70

do RPN 2 5 + 3 1 + - 7 Przekształcamy je w identyczny sposób jak poprzednio przestawiajac operator. Strona 22 z 70

do RPN 2 5 + 3 1 + - 7 Pominiemy wewnętrzne ramki. Strona 23 z 70

do RPN 2 5 + 3 1 + - 7 Ponownie traktujac wyrażenie w ramce jako jedna liczbę dokonujemy ostatniej transformacji dla ostatniego działania. Strona 24 z 70

do RPN 2 5 + 3 1 + 7 - W ten sposób dochodzimy do finalnej postaci wyrażenia zapisanego w notacji RPN. Strona 25 z 70

Istotna zaleta odwrotnej notacji polskiej jest to, że istnieje dla niej prosty algorytm wyliczenia wyrażenia przedstawionego w tej notacji. Strona 26 z 70

Istotna zaleta odwrotnej notacji polskiej jest to, że istnieje dla niej prosty algorytm wyliczenia wyrażenia przedstawionego w tej notacji. Algorytm ten bazuje na pojęciu prostej struktury zwanej stosem, która jest kolejka typu LIFO (ang. Last In First Out ostatni wchodzi pierwszy wychodzi). Idea tego algorytmu zostanie wyjaśniona na przykładzie, który wcześniej rozważaliśmy, a mianowicie: (2 + 5) (3 + 1) - 7 W notacji RPN: 2 5 + 3 1 + 7 - Strona 27 z 70

= Stos: Przykład, który dalej będzie przedstawiany, zorganizowany jest w następujacy sposób: Strona 28 z 70

= Stos: Na wejściu mamy wyrażenie w notacji RPN. Będzie ono czytane sekwencyjnie. Każdy jego element będzie czytany oddzielnie. Strona 29 z 70

= Stos: Wyrażenie na wejściu odpowiada wyrażeniu na dole przedstawionemu w notacji zwyczajowej. Strona 30 z 70

= Stos: Dysponujemy ponadto stosem, w którym składowane będa wczytywane liczby... Strona 31 z 70

= Stos:... oraz obszarem roboczym, w którym wykonywane będa poszczególne działania. Strona 32 z 70

= Stos: A więc zaczynamy. Strona 33 z 70

= Stos: Czytany jest pierwszy element wyrażenia. Strona 34 z 70

= Stos: 2 Ze względu na to, że jest to liczba, umieszczona zostaje ona na stosie. Strona 35 z 70

= Stos: 2 Czytany jest następny element. Strona 36 z 70

= Stos: 5 2 Podobnie jak wcześniej, w przypadku napotkania liczby umieszczamy ja na stosie. Strona 37 z 70

= Stos: 5 2 Wykonujac kolejna operację czytania dochodzimy do operatora. Strona 38 z 70

+ = Stos: 5 2 Tym razem w obszarze roboczym zrealizujemy interpretację napotkanej operacji arytmetycznej i jej wykonanie. Strona 39 z 70

+ 5 = Stos: 2 W tym celu pobieramy z wierzchołka stosu liczbę i traktujemy ja jako drugi argument danej operacji arytmetycznej. Strona 40 z 70

2 + 5 = Stos: Powtarzamy ta czynność pobierajac kolejna liczbę z wierzchołka stosu i traktujemy ja tym razem jako pierwszy argument danej operacji arytmetycznej. Strona 41 z 70

2 + 5 = 7 Stos: Wykonujemy zadana operację arytmetyczna... Strona 42 z 70

2 + 5 = 7 Stos: 7... i jej wynik umieszczamy na stosie. Strona 43 z 70

= Stos: 7 Kontynuujac operację czytania dochodzimy do natępnej liczby. Strona 44 z 70

= Stos: 3 7 Podobnie jak wcześniej umieszczamy ja na wierzchołku stosu. Strona 45 z 70

= Stos: 3 7 Ponownie wczytujemy następna liczbę... Strona 46 z 70

Stos: 1 3 7 =... i ponownie jak w poprzednich przypadkach umieszczamy ja na wierzchołku stosu. Strona 47 z 70

Stos: 1 3 7 = W wyniku realizacji kolejnej operacji czytania napotykamy operator arytmetyczny. Strona 48 z 70

Stos: 1 3 7 + = Podobnie jak wcześniej przechodzimy do interpretacji wczytanego operatora arytmetycznego i realizacji odpowiadajacej mu operacji. Strona 49 z 70

+ 1 = Stos: 3 7 W tym celu z wierzchołka stosu pobieramy liczbę traktujac ja jako drugi argument operacji. Strona 50 z 70

3 + 1 = Stos: 7 W analogiczny sposób otrzymujemy pierwszy argument tej operacji arytmetycznej. Strona 51 z 70

3 + 1 = 4 Stos: 7 Wykonujemy zadana operację... Strona 52 z 70

3 + 1 = 4 Stos: 4 7... i otrzymany wynik kładziemy na stos. Strona 53 z 70

= Stos: 4 7 W następnym kroku wczytujemy kolejny operator. Strona 54 z 70

= Stos: 4 7 Tak jak miało to miejsce wcześniej przechodzimy do interpretacji napotkanej operacji arytmetycznej. Strona 55 z 70

4 = Stos: 7 Ściagamy ze stosu drugi argument operacji... Strona 56 z 70

7 4 = Stos:... a następnie jej pierwszy argument. Strona 57 z 70

7 4 = 28 Stos: Wykonujemy operację... Strona 58 z 70

7 4 = 28 Stos: 28... i wynik umieszczamy na stosie. Strona 59 z 70

= Stos: 28 Tym razem wykonujac operację czytania napotykamy liczbę. Strona 60 z 70

= Stos: 7 28 Tak jak w każdym poprzednim przypadku kładziemy ja na stos. Strona 61 z 70

= Stos: 7 28 Kolejna operacja czytania udostępnia nam operator arytmetyczny. Strona 62 z 70

- = Stos: 7 28 I znów powtarzamy wcześniejsze czynności przechodzac do interpretacji napotkanej operacji arytmetycznej. Strona 63 z 70

- 7 = Stos: 28 Ściagamy ze stosu drugi argument operacji... Strona 64 z 70

28-7 = Stos:... a następnie jej pierwszy argument. Strona 65 z 70

28-7 = 21 Stos: Wykonujemy zadana operację. Strona 66 z 70

28-7 = 21 Stos: 21 Jej wynik umieszczamy na stosie. Strona 67 z 70

= Stos: 21 Operacja ta kończy realizację całego algorytmu i interpretację rozważanego wyrażenia arytmetycznego, gdyż na wejściu nie ma już żadnych nowych symboli. Strona 68 z 70

= Stos: 21 Warto zauważyć, że dla poprawnie zbudowanego wyrażenia po zakończeniu jego interpretacji na szczycie stosu pozostanie tylko jedna liczba (przy założeniu, że startujemy z pustym stosem). Strona 69 z 70

Wszelkie uwagi i spostrzeżenia do niniejszej prezentacji sa mile widziane. Proszę je kierować na adres kreczmer@diablo.ict.pwr.wroc.pl Strona 70 z 70