Zadanie za 3 pkt. będzie dotyczyło programowania z wykorzystaniem wyjątków.
Będzie polegało m.in. na zaimplementowaniu algorytmu obliczania wartości wyrażeń arytmetycznych zapisanych w postaci odwrotnej notacji polskiej, który wygląda następująco:
- Analizuj wyrażenie po jednym elemencie (stałej lub operatorze).
- Jeśli ten element jest:
- stałą – dopisz go na stos;
- operatorem – zdejmij ze stosu właściwą dla danego operatora liczbę argumentów, wykonaj na nich obliczenia, uzyskany wynik dopisz na stos;
- Jeśli badane wyrażenie
- nie zostało wyczerpane – wróć do punktu pierwszego;
- zostało wyczerpane – wartość znajdująca się na stosie to wynik obliczeń.
Uwaga:
Pobierając dwie liczby, np. 2 i 3, wyrażenie wykonuje się w odwrotnej kolejności, czyli, np. 3 / 2.
Przykłady:
8 9 +
jest równoważne: 9+8
;
5 6 7- *
jest równoważne (7-6)*5
Dlatego pomocą w skutecznej realizacji tego zadania może być opracowanie przed zajęciami funkcji, która wczytuje z pliku tekstowego pojedynczy wiersz zawierający wyrażenie arytmetyczne zapisane w tej notacji i oblicza jego wartość. Można przyjąć, że ostatnim znakiem istotnym na końcu każdego wiersza jest np. znak '#’, oznaczający koniec wyrażenia arytmetycznego. Wydruk takiego programu może przydać się na zajęciach i nie będzie zabroniony.
Zwracam uwagę, że dla funkcji atoi
, obliczającej wartość liczby na podstawie jej reprezentacji tekstowej, istnieje jej tzw. bezpieczna, tj. posługująca się wyjątkami w celu uruchomienia obsługi błędów, wersja stoi
. Warto w domu przećwiczyć jej działanie dla tekstów reprezentujących liczby zarówno w sposób poprawny jak i błędny.