Artinu - kalkulator z odwrotną notacją polską
Spis treści
Odwrotna notacja polska
to metoda zapisu wyrażeń matematycznych, która umożliwia wykonywanie prostych obliczeń bez używania nawiasów, dzięki użyciu stosu. Metoda ta została
spopularyzowana przez firmę Hewlett Packard, która od wielu lat z powodzeniem stosuje ją w swoich kalkulatorach.
Kalkulator Artinu to prosta aplikacja napisana w języku JavaScript, dostępna online. Powstała w celach
edukacyjnych. Dostępne na rynku kalkulatory RPN (Reverse Polish Notation), mogą przytłaczać początkującego użytkownika nadmiarem
przycisków i dostępnych funkcji. Nasz kalkulator umożliwia wykonywanie jedynie podstawowych działań, dzięki czemu użytkownik
może łatwo uchwycić ideę operacji na stosie, nie zaprzątając sobie głowy innymi kwestiami.
Zastosowanie RPN ma olbrzymi walor edukacyjny - nauka operacji na stosie to bardzo dobry wstęp do informatyki i nauki
programowania. Dodatkową motywacją dla stworzenia tej aplikacji jest fakt, że obecnie w Polsce w trakcie egzaminu
maturalnego, młodzież może korzystać jedynie z najprostszych kalkulatorów. Wydaje się, że wyprodukowanie na jej podstawie niedrogiego,
fizycznego urządzenia o podobnych właściwościach dla potrzeb szkolnych, nie powinno nastręczyć większych trudności.
W odróżnieniu od klasycznego urządzenia, kalkulator RPN wymaga by najpierw
wprowadzić liczby na których wykonujemy działanie, a następnie
wprowadzić samo działanie.
Przykład 1 - dodawanie dwóch liczb:
Aby wykonać dodawanie: 5+9, należy wprowadzić kolejno:
5
⏎
9
+.
Wynik pojawi się w dolnej części wyświetlacza.
Przykład 2 - pierwiastkowanie:
W celu obliczenia pierwiastka kwadratowego z 25, należy użyć klawiszy:
2
5
√.
Wynik pojawi się w dolnej części wyświetlacza.
- Klawisze cyfr: 0 ... 9.
- Separator dziesiętny: ..
- Zmiana znaku liczby na przeciwny: ±.
- Enter - zatwierdza wprowadzoną liczbę bez wykonywania operacji arytmetycznej: ⏎.
-
Klawisze działań dwuargumentowych:
+, -, ×, ÷.
-
Klawisze działań jednoargumentowych:
√, %, 1/x.
-
Klawisze operacji na stosie:
-
R↓ (roll) - rolowanie stosu. Wszystkie wartości na stosie za wyjątkiem
rejestru X (na samym dole) przesuwane są do komórki znajdującej się poniżej.
Rejestr X zastępuje zawartość rejestru T (na samej górze).
-
x⇄y (swap) - zamiana miejscami wartości znajdujących się w rejestrach
X oraz Y.
-
Klawisze kasowania:
-
C (clean) - kasuje cały rejestr X,
lub ostatnio wprowadzoną cyfrę - w zależności od tego czy wprowadzana
liczba została już zatwierdzona enterem, czy też nie.
-
AC (all clean) - zeruje wartości wszystkich rejestrów i przywraca kalkulator do stanu początkowego.
Dla PC oraz innych urządzeń wyposażonych w fizyczną klawiaturę dostępne są następujące skróty klawiszowe:
Dodatkowo klawisze "h" oraz "F1" wyświetlają plik pomocy.
Jeśli opis zawarty w tej części wyda się czytającym zbyt nużący, po zapoznaniu się z nazwami rejestrów - można przejść od razu do przykładów.
Wiedzę w nim zawartą, można również przyswoić poprzez eksperymentowanie z samym kalkulatorem.
5.1. Rejestry
Kalkulator zawiera cztery komórki pamięci zwane rejestrami. Zwyczajowo nazywane one są kolejno:
X, Y,
Z, T. W
większości dostępnych niegraficznych kalkulatorów RPN wyświetlane są
tylko dwa rejestry: X i Y. Nasz kalkulator wyświetla wszystkie 4,
co pozwala łatwiej uchwycić zasadę jego działania. Obrazek poniżej prezentuje rozmieszczenie poszczególnych rejestrów:
Początkowo, wartości wszystkich rejestrów zainicjowane są zerami.
Po wprowadzeniu liczby, mamy do wyboru:
- Zatwierdzenie jej klawiszem "enter": ⏎.
-
Wykonanie jednego z działań arytmetycznych: +, -,
×, ÷, √,
1/x, %.
-
Wykonanie jednej z operacji na stosie: R↓, x⇄y.
Jeśli zatwierdzimy liczbę klawiszem "enter", pojawi się ona jednocześnie w dwóch
rejestrach:
X oraz
Y.
Jeśli natomiast wprowadzanie liczby zakończymy jednym z arytmetycznych działań, kalkulator zachowa się następująco:
- Jeśli działanie jest dwuargumentowe, zostanie one wykonane na rejestrach X oraz
Y, a jego wynik wpisany do rejestru X.
- Jeśli działanie jest jednoargumentowe, zostanie ono
wykonane na wprowadzanej liczbie, a jego wynik umieszczony w
rejestrze X.
5.2. Przesuwanie rejestrów
5.2.1. Dwuargumentowe działanie arytmetyczne
Wykonanie działania dwuargumentowego, powoduje zmianę zawartości rejestrów według następujących reguł:
- X - zawiera wynik operacji,
- Y - zawiera poprzednią zawartość rejestru Z,
- Z - zawiera poprzednią zawartość rejestru T,
- T - zostaje wyzerowany.
5.2.2. Jednoargumentowe działanie arytmetyczne
Wykonanie działania jednoargumentowego, powoduje następującą zmianę zawartości rejestrów:
- X - zawiera wynik operacji,
- pozostałe rejestry zostają niezmienione.
5.2.3. Operacja R↓
Wykonanie operacji R↓ (roll), powoduje następującą zmianę zawartości rejestrów:
- X - zawiera poprzednią zawartość rejestru Y,
- Y - zawiera poprzednią zawartość rejestru Z,
- Z - zawiera poprzednią zawartość rejestru T,
- T - zawiera poprzednią zawartość rejestru X,
Problem:
Kupujemy mieszkanie o wartości 380000 PLN. Pośrednik żąda prowizji w
wysokości 2.5%. Do prowizji doliczany jest podatek VAT w wysokości 23%.
Chcemy znać całkowitą wartość prowizji powiększonej o podatek VAT.
Rozwiązanie:
- Wprowadzamy cenę mieszkania:
3
8
0
0
0
0
⏎
(x = 380000, y = 380000)
- Obliczamy procent prowizji:
2
.
5
%
(x = 9500, y = 380000)
- Obliczamy wartość VAT od prowizji:
2
3
%
(x = 2185, y = 9500, z = 380000)
- Dodajemy VAT do prowizji:
+
(x = 11685, y = 380000)
Po zakończeniu obliczeń rejestr
X zawiera prowizję razem z VAT (11685 PLN), zaś rejestr
Y oryginalną cenę mieszkania.
Problem:
Chcemy obliczyć opór zastępczy dla dwóch oporników połączonych równolegle:
korzystając ze wzoru:
$$ \frac{1}{R} = \frac{1}{R_1} + \frac{1}{R_2}$$
Dane:
$$ R_1 = 1.5\ \mathrm{k}Ω$$
$$ R_2 = 2.3\ \mathrm{k}Ω $$
Rozwiązanie:
-
1 . 5 1/x -
odwrotność wartości oporu pierwszego opornika zostaje zapisana w rejestrze X (\(x \approx 0.67\))
-
2 . 3 1/x -
odwrotność wartości oporu drugiego opornika zostaje zapisana w rejestrze X, zaś rejestr Y zawiera
teraz wartość wyliczoną w poprzednim kroku (\(x \approx 0.43, y \approx 0.67 \))
-
+ 1/x - dodajemy obie odwrotności i liczymy odwrotność uzyskując \( R \approx\ 0.91\ \mathrm{k}Ω\)
Problem:
Chcemy znaleźć wartość przeciwprostokątnej w trójkącie prostokątnym, w którym wartości przyprostokątnych są równe:
$$ a = 5.5, $$
$$ b = 6.7, $$
korzystając z twierdzenia Pitagorasa: \( c^2 = a^2 + b^2\).
Rozwiązanie:
Ponieważ nasz prosty kalkulator nie posiada operatora \( x^2 \), posłużymy się tutaj jego
własnością charakterystyczną dla kalkulatorów RPN: po zatwierdzeniu liczby przy pomocy klawisza
"enter", zostaje ona umieszcza równocześnie w rejestrze
X oraz
Y.
-
5 . 5 ⏎ × - po tej operacji rejestr
X zawiera \( a^2\)
-
6 . 7 ⏎ × - po tej operacji rejestr
X zawiera \( b^2\), a rejestr Y zawiera \( a^2\).
-
+ √ - ostatecznie otrzymujemy wynik \( c \approx 8.67\)