You are on page 1of 6

Projekt Języki i metodyka programowania 2

Projekt wykonał:

Sprawozdanie
Projekt numer 2 – Kalkulator i Odwrotna notacja polska (ONP)

1. Wstęp
Kalkulator odwrotnej notacji polskiej (ONP) to popularna metoda zapisu
i obliczania wyrażeń matematycznych. W odróżnieniu od tradycyjnej notacji,
w której operator znajduje się między operandami, w ONP operator
umieszczony jest po operandach. Ta prostsza i bardziej intuicyjna metoda
zapisu wyrażeń matematycznych umożliwia szybsze i bardziej precyzyjne
obliczenia. W tym sprawozdaniu przedstawiono kod kalkulatora ONP napisany
w języku C#,
w środowisku Visual Studio 2022, który umożliwia użytkownikowi wybór trybu
kalkulacji i przeprowadza obliczenia w oparciu o algorytm przetwarzania
wyrażeń zapisanych w ONP.
 Przykłady notacji tradycyjnej i ONP
Notacja infiksowa (tradycyjna) ONP
a+b*c abc*+
a*b+c ab*c+
(a – b) * c ab–c*
a / (b + c) abc+/
2. Opis programu

Pierwsze trzy linijki kodu C# służą do wyświetlenia tekstu w konsoli


i odczytaniu wartości wprowadzonej przez użytkownika z klawiatury. Pierwsza
linia kodu importuje przestrzeń nazw System, która zawiera wiele
podstawowych typów danych i funkcji, które są potrzebne w programowaniu
C#. Druga linia kodu importuje przestrzeń nazw System.Collections.Generic,
która zawiera implementacje generycznych kolekcji danych. Ostatnia linia kodu
importuje przestrzeń nazw System.Text, która zawiera klasy i funkcje do pracy
ze stringami (ciągami znaków) i innymi typami danych tekstowych
---------------------------------------------------------------------------------------------------------

Główna funkcja programu to „Main”, która pozwala użytkownikowi na


wybór trybu kalkulatora i wprowadzenie zadania matematycznego.
W zależności od wybranego trybu, wywołuje odpowiednie metody do
konwersji zadania na ONP i obliczenia wyniku.
---------------------------------------------------------------------------------------------------------

Funkcja „ConvertToRPN” konwertuje wyrażenie z notacji tradycyjnej na


ONP, wykorzystując stos i kolejkę. Pierwszym krokiem jest podzielenie
wyrażenia na pojedyncze tokeny (liczby i operatory) przy użyciu metody „Split”.
Następnie dla każdego tokena wykonywane są odpowiednie akcje: jeśli token
to liczba, jest on dodawany do kolejki wyjściowej; jeśli token to operator, jest
on dodawany na stos operatorów lub zdejmowany ze stosu i dodawany do
kolejki wyjściowej zgodnie z priorytetami operatorów. W przypadku, gdy token
to nawias, stos operatorów jest modyfikowany w odpowiedni sposób. Na
koniec, jeśli na stosie operatorów pozostały jakieś operatory, są one
zdejmowane ze stosu i dodawane do kolejki wyjściowej.
---------------------------------------------------------------------------------------------------------

Funkcja „CalculateRPN” oblicza wynik wyrażenia w ONP, wykorzystując


stos operacji. Podobnie jak w metodzie „ConvertToRPN”, wyrażenie jest
dzielone na pojedyncze tokeny. Dla każdego tokena wykonywane są
odpowiednie akcje: jeśli token to liczba, jest on dodawany do stosu operacji;
jeśli token to operator, ze stosu operacji są pobierane dwie ostatnie wartości
(operandy) i wykonywana jest na nich odpowiednia operacja. Wynik operacji
jest następnie dodawany na stos. Na koniec, na stosie pozostaje tylko jeden
wynik - jest to wynik wyrażenia.
---------------------------------------------------------------------------------------------------------

Funkcja „GetPrecedence” zwraca priorytet danego operatora, który jest


wykorzystywany w metodzie „ConvertToRPN” do ustalania kolejności
wykonywania działań matematycznych.

3. Przykładowe użycie programu


a) Notacja tradycyjna
b) Odwrotna notacja polska

4. Wnioski
Kalkulator ONP jest skutecznym narzędziem do wykonywania prostych
obliczeń matematycznych. Zastosowanie stosu liczb i operatorów oraz kolejki
wyjściowej pozwala na skuteczne przetwarzanie wyrażeń matematycznych
i obliczanie ich wartości. Ten kod stanowi dobry punkt wyjścia dla dalszych prac
nad rozbudową kalkulatora lub dla stworzenia podobnych aplikacji.

You might also like