R16JODPAPF542
Grafika przedstawia wyrażenia arytmetyczne wpływające do laptopa lub z niego wychodzące. Obraz utrzymany w kolorystyce niebiesko‑granatowej.

PYI_R_W14_M36_3 Obliczanie wartości wyrażenia zapisanego w ONP

Źródło: Obraz wygenerowany za pomocą Canva.ai, domena publiczna.
1
Polecenie 1

Na schemacie przedstawiono proces obliczania wartości wyrażeń w odwrotnej notacji polskiej z wykorzystaniem stosu. Zwróć uwagę na zaznaczone kolorami elementy stosu.

R1455KQRQXKTH
Odwrotna notacja polska: 2 7 + 3 / 14 3 - 4 * + 2 / Krok pierwszy: Pozostała sekwencja ONP: 2 (cyfra 2 na czerwono) 7 + 3 / 14 3 - 4 * + 2 / Podgląd stosu: brak. Krok drugi: Pozostała sekwencja ONP: 7 (cyfra 7 na czerwono) + 3 / 14 3 - 4 * + 2 / Podgląd stosu: cyfra dwa wpisana w kwadrat. Krok trzeci: Pozostała sekwencja ONP: + (znak plus na czerwono) 3 / 14 3 - 4 * + 2 / Podgląd stosu: Wykonana operacja: 2 + 7 = 9, poniżej tablica podzielona w poprzek na dwa kwadratowe pola. W górnym polu wpisano 7 na niebiesko, w dolnym wpisano 2 na żółto. Krok czwarty: Pozostała sekwencja ONP: 3 (cyfra 3 na czerwono) / 14 3 - 4 * + 2 / Podgląd stosu: Kwadratowe pole, w które wpisano cyfrę 9. Krok piąty: Pozostała sekwencja ONP: / (znak / na czerwono) 14 3 - 4 * + 2 / Podgląd stosu: Wykonana operacja: 9 (na żółto) / (na czerwono) 3 (na niebiesko) = 3, poniżej prostokątna tablica podzielona w poprzek na dwa kwadratowe pola. W górnym polu wpisano 3 na niebiesko, w dolnym wpisano 9 żółto. Krok szósty: Pozostała sekwencja ONP: 14 (liczba 14 na czerwono) 3 - 4 * + 2 / Podgląd stosu: Kwadratowe pole z wpisaną cyfrą 3. Krok siódmy: Pozostała sekwencja ONP: 3 (cyfra 3 na czerwono) - 4 * + 2 / Podgląd stosu: tablica podzielona w poprzek na dwa kwadratowe pola. W górnym polu wpisano 14, w dolnym wpisano 3. Krok ósmy: Pozostała sekwencja ONP: - (znak minus na czerwono) 4 * + 2 / Podgląd stosu: Wykonana operacja: 14 (na żółto) - (na czerwono) 3 (na niebiesko) = 11, poniżej prostokątna tablica podzielona w poprzek na trzy kwadratowe pola. W górnym polu wpisano 3 (na niebiesko), w środkowym 14 (na żółto), a w dolnym wpisano 3. Krok dziewiąty: Pozostała sekwencja ONP: 4 (cyfra 4 na czerwono) * + 2 / Podgląd stosu: prostokątna tablica podzielona w poprzek na dwa kwadratowe pola. W górnym polu wpisano 11, w dolnym wpisano 3. Krok dziesiąty: Pozostała sekwencja ONP: * (znak * na czerwono) + 2 / Podgląd stosu: Wykonana operacja: 11 (na żółto) * (na czerwono) 4 (na niebiesko) = 44, poniżej prostokątna tablica podzielona w poprzek na trzy kwadratowe pola. W górnym polu wpisano 4 (na niebiesko), w środkowym 11 (na żółto), a w dolnym wpisano 3. Krok jedenasty: Pozostała sekwencja ONP: + (znak plus na czerwono) 2 / Podgląd stosu: Wykonana operacja: 3 (na żółto) + (na czerwono) 44 (na niebiesko) = 47, poniżej tablica podzielona w poprzek na dwa kwadratowe pola. W górnym polu wpisano 44 (na niebiesko), w dolnym wpisano 3 (na żółto). Krok dwunasty: Pozostała sekwencja ONP: 2 (cyfra 2 na czerwono) / Podgląd stosu: Kwadratowe pole, w które wpisano liczbę 47. Krok trzynasty: Pozostała sekwencja ONP: / (znak / na czerwono) Podgląd stosu: Wykonana operacja: 47 (na żółto) / (na czerwono) 2 (na niebiesko) = 23.5, poniżej prostokątna tablica podzielona w poprzek na dwa kwadratowe pola. W górnym polu wpisano 2 (na niebiesko), w dolnym wpisano 47 (na żółto). Krok trzynasty: Pozostała sekwencja ONP: Podgląd stosu: Kwadratowe pole z wpisaną liczbą 23.5. Wynik: 23.5
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

Na poniższym przykładzie zapoznaj się z przedstawionym schematem procesu obliczania wartości wyrażeń w odwrotnej notacji polskiej z wykorzystaniem stosu.

Odwrotna notacja polska: 2 7 + 3 / 14 3 - 4 * + 2 /

Krok pierwszy: Pozostała sekwencja ONP: 2 (cyfra 2 na czerwono) 7 + 3 / 14 3 - 4 * + 2 / Podgląd stosu: brak.

Krok drugi: Pozostała sekwencja ONP: 7 (cyfra 7 na czerwono) + 3 / 14 3 - 4 * + 2 / Podgląd stosu: cyfra dwa wpisana w kwadrat.

Krok trzeci: Pozostała sekwencja ONP: + (znak plus na czerwono) 3 / 14 3 - 4 * + 2 / Podgląd stosu: Wykonana operacja: 2 + 7 = 9, poniżej tablica podzielona w poprzek na dwa kwadratowe pola. W górnym polu wpisano 7 na niebiesko, w dolnym wpisano 2 na żółto.

Krok czwarty: Pozostała sekwencja ONP: 3 (cyfra 3 na czerwono) / 14 3 - 4 * + 2 / Podgląd stosu: Kwadratowe pole, w które wpisano cyfrę 9.

Krok piąty: Pozostała sekwencja ONP: / (znak / na czerwono) 14 3 - 4 * + 2 / Podgląd stosu: Wykonana operacja: 9 (na żółto) / (na czerwono) 3 (na niebiesko) = 3, poniżej prostokątna tablica podzielona w poprzek na dwa kwadratowe pola. W górnym polu wpisano 3 na niebiesko, w dolnym wpisano 9 żółto.

Krok szósty: Pozostała sekwencja ONP: 14 (liczba 14 na czerwono) 3 - 4 * + 2 / Podgląd stosu: Kwadratowe pole z wpisaną cyfrą 3.

Krok siódmy: Pozostała sekwencja ONP: 3 (cyfra 3 na czerwono) - 4 * + 2 / Podgląd stosu: tablica podzielona w poprzek na dwa kwadratowe pola. W górnym polu wpisano 14, w dolnym wpisano 3.

Krok ósmy: Pozostała sekwencja ONP: - (znak minus na czerwono) 4 * + 2 / Podgląd stosu: Wykonana operacja: 14 (na żółto) - (na czerwono) 3 (na niebiesko) = 11, poniżej prostokątna tablica podzielona w poprzek na trzy kwadratowe pola. W górnym polu wpisano 3 (na niebiesko), w środkowym 14 (na żółto), a w dolnym wpisano 3.

Krok dziewiąty: Pozostała sekwencja ONP: 4 (cyfra 4 na czerwono) * + 2 / Podgląd stosu: prostokątna tablica podzielona w poprzek na dwa kwadratowe pola. W górnym polu wpisano 11, w dolnym wpisano 3.

Krok dziesiąty: Pozostała sekwencja ONP: * (znak * na czerwono) + 2 / Podgląd stosu: Wykonana operacja: 11 (na żółto) * (na czerwono) 4 (na niebiesko) = 44, poniżej prostokątna tablica podzielona w poprzek na trzy kwadratowe pola. W górnym polu wpisano 4 (na niebiesko), w środkowym 11 (na żółto), a w dolnym wpisano 3.

Krok jedenasty: Pozostała sekwencja ONP: + (znak plus na czerwono) 2 / Podgląd stosu: Wykonana operacja: 3 (na żółto) + (na czerwono) 44 (na niebiesko) = 47, poniżej tablica podzielona w poprzek na dwa kwadratowe pola. W górnym polu wpisano 44 (na niebiesko), w dolnym wpisano 3 (na żółto).

Krok dwunasty: Pozostała sekwencja ONP: 2 (cyfra 2 na czerwono) / Podgląd stosu: Kwadratowe pole, w które wpisano liczbę 47.

Krok trzynasty: Pozostała sekwencja ONP: / (znak / na czerwono) Podgląd stosu: Wykonana operacja: 47 (na żółto) / (na czerwono) 2 (na niebiesko) = 23.5, poniżej prostokątna tablica podzielona w poprzek na dwa kwadratowe pola. W górnym polu wpisano 2 (na niebiesko), w dolnym wpisano 47 (na żółto).

Krok czternasty: Pozostała sekwencja ONP: Podgląd stosu: Kwadratowe pole z wpisaną liczbą 23.5. Wynik: 23.5

Polecenie 2

Zastanów się, jak zmodyfikować przedstawiony w poprzedniej sekcji program, by przetwarzał on wyrażenia zawierające liczby naturalne większe niż jednocyfrowe. Porównaj swoją propozycję z tą przedstawioną w prezentacji poniżej”.

Polecenie 3

Napisz program, który obliczy wartość wyrażenia zapisanego w odwrotnej notacji polskiej. Wyrażenie może składać się z liczb naturalnych wielocyfrowych.

Przetestuj działanie programu dla wyrażenia 5345 90 * 20 +.

Specyfikacja problemu:

Dane:

  • wyrazenie – wyrażenie zapisane w odwrotnej notacji polskiej; ciąg znaków składający się wyłącznie z liczb naturalnych jednocyfrowych, wielocyfrowych, spacji oraz następujących operatorów arytmetycznych: +, -, *, /

Wynik:

  • obliczona wartość wyrażenia wyrazenie

Przykładowe wyjście dla podanych danych:

Linia 1. 481070.
RX35eLr4Q8c9e
Wybierz jedno nowe słowo poznane podczas dzisiejszej lekcji i ułóż z nim zdanie.
Polecenie 4

Zapoznaj się z poszczególnymi krokami pisania programu, którego zadaniem jest obliczenie wartości wyrażenia zapisanego w ONP dla liczb naturalnych złożonych z wielu cyfr. Porównaj swoje rozwiązanie z przedstawionym w prezentacji.

R9FDRO6HRTQMP1
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.
wide
Polecenie 5

Napisz program, który oblicza wartość wyrażenia zapisanego w notacji ONP. Wyrażenie może zawierać liczby wielocyfrowe oraz operatory dodawania, odejmowania, mnożenia i dzielenia. Program powinien pobierać od użytkownika wyrażenie i wyświetlać komunikat o błędzie, jeśli zostaną wprowadzone niepoprawne dane.

Weź pod uwagę sytuację, w której w wyrażeniu jest za mało liczb, brakuje operatora, w wyrażeniu znajduje się operacja dzielenia przez zero oraz wprowadzone wyrażenie składa się z innych elementów niż liczby i wskazane operatory.

Przykładowe komunikaty błędów:

Linia 1. Błąd dwukropek Za mało liczb w wyrażeniu dla operacji kropka. Linia 2. Błąd dwukropek Dzielenie przez zero kropka. Linia 3. Błąd dwukropek otwórz nawias kwadratowy wyrażenie zamknij nawias kwadratowy nie jest ani operandem przecinek ani operatorem kropka. Linia 4. Błąd dwukropek Niepoprawne wyrażenie ONP kropka Za mało operatorów kropka.
R6sFodtjiuvXL
Wybierz jedno nowe słowo poznane podczas dzisiejszej lekcji i ułóż z nim zdanie.