Zależą one od kilku elementów związanych z budową kalkulatora i organizacją jego systemu operacyjnego, a przede wszystkim od:
- przyjętego systemu algebraicznego;
- wielkości i rodzaju dodatkowych pamięci czy specjalnych rejestrów;
- liczby i rodzaju wbudowanych instrukcji matematycznych (i nie tylko);
- rodzaju programowalności.
Wszystkie wymienione elementy zostaną omówione w kolejnych artykułach, gdyż poznanie możliwości kalkulatora umożliwi nam wybór modelu, który będzie najlepiej spełniać postawione przed nim wymagania. W dzisiejszym artykule zajmiemy się pierwszym punktem, czyli systemami algebraicznymi kalkulatorów.
Trzeba przyznać, że jeżeli nie brać pod uwagę np. przyzwyczajeń liczącego, to sam system algebraiczny ma najmniejszy wpływ na walory eksploatacyjne kalkulatora. Zrozumienie działania systemu algebraicznego pozwoli jednak na pełniejsze wykorzystanie kalkulatora i usprawni prowadzenie procesu obliczeniowego.
SYSTEM ALGEBRAICZNY kalkulatora to zbiór reguł dotyczący wykonywania za jego pomocą różnych operacji i funkcji. Określa on kolejność wprowadzania argumentów i wykonywania operacji. Z każdym systemem algebraicznym kalkulatora związana jest pewna minimalna liczba rejestrów pamięci (komórek pamięci) służących do zapamiętywania argumentów, na których wykonywane są operacje np. matematyczne. Pod pojęciem operacje matematyczne rozumiemy działania typu mnożenie, dodawanie itd. Z punktu widzenia układu logicznego kalkulatora instrukcja operacji matematycznej jest rozkazem wykonania operacji matematycznej. Z punktu widzenia użytkownika równoważne jest to wciśnięciu odpowiedniego przycisku lub kilku przycisków.
Po tym wstępie konieczne staje się wprowadzenie opisu dwóch rejestrów pamięci. Rejestry te oznaczane są najczęściej przez X i Y (tak jak w komputerach). Występują one w każdym kalkulatorze i stanowią one podstawę praktycznego działania systemu algebraicznego. Każda liczba wprowadzana do kalkulatora trafia najpierw do rejestru X. Wszystkie działania jednoargumentowe wykonywane są bezpośrednio na argumencie znajdującym się w tym rejestrze. W operacjach dwuargumentowych drugi z argumentów przechowywany jest w rejestrze Y. W operacjach, w których ważna jest kolejność argumentów (np. przy potęgowaniu Yx/=Xy) należy zadbać o to by wprowadzać argumenty w określonej kolejności. Na ogół zawartość rejestru X wskazywana jest przez wyświetlacz kalkulatora. Wyniki kolejnych, pośrednich i ostatecznych operacji są zawsze umieszczane w rejestrze X, czyli spełnia on również rolę rejestru wyjściowego.
Rejestr Y jest drugim rejestrem służącym do prowadzenia operacji dwuargumentowych. W większości kalkulatorów nie istnieje bezpośredni dostęp do tego rejestru. Działanie tego rejestru wynika jedynie z zaprogramowanego w kalkulatorze algorytmu pracy— rejestr pracuje automatycznie.
Pierwszym z omawianych systemów algebraicznych będzie system ODWROTNEJ NOTACJI POLSKIEJ (RPN — Reverse Polish Notation). Podstawowe zasady systemu są następujące:
— operator wprowadzany jest po argumentach np. mnożenia axb wprowadzane jest jako a,b,x — operacja jest wykonywana po wprowadzeniu operatora.
W kalkulatorach o tym systemie algebraicznym zawsze jest używana pamięć w postaci stosu, zbudowana z kilku rejestrów. Rejestrów tych jest na ogół stała ilość (zwykle 4) choć w kalkulatorach HP-28 i późniejszych stos jest dynamiczny i zmienia się w miarę potrzeb od 0 aż do wyczerpania dostępnej pamięci. Stos umożliwia techniczną realizację odwrotnej notacji polskiej. Z RPN związane są następujące rodzaje instrukcji:
Instrukcja wprowadzania liczb na stos (ENTER). Służy ona do rozdzielania kolejnych liczb wprowadzanych na stos. W wypadku gdy po naciśnięciu klawisza funkcyjnego chcemy wprowadzić jakąś kolejną liczbę na stos, użycie tego kiawisza staje się zbędne. Jak się za chwilę okaże klawisz ten nie jest tak często używany jakby się zdawać mogło na pierwszy rzut oka. Wykonanie dodawania czterech kolejnych liczb a,b,c,d może być wykonane następująco: a ENTER b ENTER c ENTER d ENTER + + + (operatory wprowadzane po argumentach). Zadanie to może być jednak wykonane znacznie prościej przy jednokrotnym użyciu klawisza ENTER: a ENTER b + c + d +.
Zakładając, że mamy doczynienia ze stosem składającym się z czterech rejestrów, oznaczenia kolejnych poziomów stosu są X Y Z T. Drugą grupą instrukcji związaną z RPN są instrukcje zmieniające między sobą zawartości tych rejestrów. Za pomocą instrukcji ROLL można dokonać cyklicznej wymiany rejestrów X - Y - Z - T - X. Istnieją instrukcje wykonujące te operacje w drugą stronę jak również parami np. zamiana X i Y (SWAP).
System odwrotnej notacji polskiej ma wiele zalet. Przede wszystkim jest on bardzo uniwersalny. Te same ciągi działań mogą być wykonane na różne sposoby, przy czym zawsze znane są częściowe wyniki operacji. Można więc zawsze wybrać najdogodniejszy sposób prowadzenia obliczeń. Stwierdzono również, że jest to system, w którym dla przeprowadzenia złożonych obliczeń wymagana jest najmniejsza liczba wykonywanych instrukcji (łącznie z manipulacją danymi i wynikami pośrednimi). Tak więc w kalkulatorach programowalnych, w których dostępna pamięć przeznaczona na przechowywanie programu jest ograniczona np. do 100 kroków cecha ta odgrywa często decydującą rolę.
System odwrotnej notacji polskiej stosowany jest w wielu kalkulatorach naukowych i programowalnych np. w kalkulatorach firmy Hewlett Packard. Ta ostatnia firma w najnowszej generacji swoich kalkulatorów wzięła pod uwagę przyzwyczajenia użytkowników kalkulatorów i wypuściła model umożliwiający wymienne korzystanie z RPN i systemu z algebraicznym wprowadzaniem argumentów (o których za chwilę). Zaletą takiego rozwiązania, oprócz indywidualnych przyzwyczajeń do tego czy innego systemu, jest fakt, że wzory książkowe można wprowadzać tak jak występują one w książce bez żadnych przekształceń związanych ze specyfiką RPN, jak również umożliwia prowadzenie obliczeń RPN i korzystanie z wyników pośrednich itp.
Systemy z algebraicznym wprowadzaniem argumentów (AES — Algebraic Entry System). Systemy te niekiedy nazwywane są „prawdziwymi systemami algebraicznymi“. Określenie to bierze się stąd, że zasadnicza idea tych systemów zakłada maksymalne podobieństwo procedury wprowadzania argumentów i operatorów do postaci szkolnego, algebraicznego zapisu działań, czyli w operacjach dwuargumentowych obowiązuje następująca kolejność: argument, operator, argument, operator... Jak wynika z takiego ciągu ostatni jest zawsze operator dlatego staje się konieczne wprowadzenie dodatkowej instrukcji zamykającej ciąg działań i powodującej wykonanie ostatniej operacji dwu- argumentowej. Taką rolę pełni instrukcja =. W ten sposób uzyskuje się całkowite podobieństwo do zwykłego zapisu stosowanego w algebrze. Dodanie czterech liczb a,b,c,d, wygląda więc następująco: a + b + c +d=. W systemach tych chodzi po prostu o to, aby wartość wyrażenia matematycznego zapisanego na kartce papieru można było obliczyć przepisując na klawiaturę bez przekształceń i zmian kolejności działań. Oczywiście najprostsza wersja systemu algebraicznego nie nadaje się do szybkiego wykonywania złożonych obliczeń. Powstaje konieczność wprowadzenia odpowiedniej liczby rejestrów mogących przechowywać pośrednie wyniki obliczeń. Prowadzi to do rozbudowy samego systemu i wprowadzenia dodatkowych instrukcji manipulacji danymi itp.
Wśród produkowanych obecnie minikalkula- torów można spotkać następujące wersje omawianego systemu:
- podstawowy system algebraiczny
- podstawowy system z preferencją działań
- zwykły system nawiasowy
- system nawiasowy z preferencją działań (AOS — Algebraic Operating System)
Systemy nawiasowe wprowadzają ściśle •określoną liczbę par nawiasów () lub [] umożliwiających wydzielenie operacji, które mają być wykonane przed pozostałymi. Nawiasy te mogą być wykonane przed pozostałymi. Nawiasy te mogą być otwierane kilkakrotnie i tyleżkrotnie zamykane (wielopoziomowo). Wyniki operacji w nawiasach traktowane są jako nowe argumenty cHa ciągu nie wykonanych jeszcze operacji. Warto przy kupnie kalkulatora zainteresować się jaka jest dopuszczalna liczba par nawiasów, gdyż często decyduje ona o ułatwieniach związanych z prowadzeniem żmudnych obliczeń. Warto podkreślić, że kolejnym poziomom nawiasów w RPN odpowiadają kolejne rejestry stosu, a instrukcji otwierania nawiasu odpowiada instrukcja ENTER w RPN odpowiadają kolejne rejestry stosu, a instrukcji otwierania nawiasu odpowiada instrukcja ENTER w RPN. Instrukcja = zamyka automatycznie wszystkie do tej pory otwarte nawiasy (niedomknięte). Nawiasy zamykające umieszczane są na końcu ciągu obliczeń. Tak więc wynika stąd nowy wniosek, że programując pewne zagadnienie można dla zaoszczędzenia pamięci pominąć zamykające nawiasy gdyż system sam się nimi zajmie. Systemy te nie są jednak konsekwentnie zrealizowane od początku do końca. Sprzeczność ujawnia się w operacjach jednoargumentowych, w których operator wprowadzany jest po argumencie (tak jak w RPN). Jedynym systemem konsekwentnie realizującym zbliżanie wprowadzania ciągu działań do kalkulatora z działaniami zapisanymi na kartce papieru jest system AER (Algebraic Expression Reserve) stosowany w wie lu kalkulatorach doskonałej firmy japońskiej SHARP.
W systemach z preferencją działań (naukowe kalkulatory Texas Instruments, Casio, SHARP) wprowadzono dodatkowe reguły określające zasady pierwszeństwa wykonywania operacji tzn. matematyczną hierarchię działań. (W zwykłych systemach bez preferencji kolejność działań zgodna jest z kolejnością zapisu). Kolejność ta jest zgodna z zasadami przyjętymi w matematyce: najpierw wykonywane są wszystkie operacje jednoargumentowe (obliczanie funkcji trygonometrycznych, zmiana znaku wyrażenia), następnie pierwiastkowanie i potęgowanie, później dzielenie i mnożenie, a na końcu dodawanie i odejmowanie. Jeśli w systemie występują dodatkowo nawiasy to obliczenia rozpoczynane są od wewnętrznej pary nawiasów. W nawiasach występuje identyczna preferencja działań. Stąd ciąg działań 2+3x42 przy uwzględnieniu preferencji działań wyglądać będzie następująco 2 + 3x4 Yx2 = i obliczona wartość wyniesie 50. Należy jednak pamiętać, że system z preferencją działań jak i pozostałe systemy z algebraicznym wprowadzaniem argumentów, jakkolwiek łatwe do opanowania charakteryzują się mniejszą elastycznością niż system odwrotnej notacji polskiej. Jeśli w trakcie obliczeń stosuje się zasadę książkową prowadzenia obliczeń „od lewej do prawej strony“ zapisu wzoru obliczeniowego, konieczne staje się wprowadzenie nawiasów lub przekształcenie wzorów. Tę ostatnią uwagę należy traktować jako sprzeczną z ideą systemu — zakładającą bezpośredni przekład zapisu wzoru na ciąg operacji kalkulatorowych.
Na zakończenie omawiania systemów algebraicznych wypada dokonać ich porównania. Zadanie to nie jest proste, brak jest bowiem jednego kryterium porównawczego. Największe szanse uproszczenia procesu prowadzenia obliczeń stwarzają systemy najbardziej złożone, w których działanie zaangażowana jest maksymalna liczba dodatkowych rejestrów, funkcjonujących w sposób automatyczny, a więc algebraiczny system nawiasowy z rejestrami stosu. Z drugiej strony, jeśli założyć maksymalnie skomplikowany charakter obliczeń, to również rozstrzygnięcie nie jest proste. Jak już wspomniano RPN umożliwia przeprowadzenie obliczeń przy mniejszej ilości wciskanych klawiszy. Niemniej na etapie skomplikowanych obliczeń w grę wchodzą psychologiczne względy przyzwyczajeń. Systemy zbliżone do „szkolnego“ sposobu zapisu są łatwiejsze do opanowania, szczególnie przy pierwszym zetknięciu z kalkulatorem. Ponadto korzyści z bardziej oszczędnego systemu odwrotnej notacji polskiej stają się dopiero zauważalne przy odpowiednim wyborze sekwencji operacji co z kolei wymaga od liczącego pewnej minimalnej rutyny w posługiwaniu się systemem, inaczej bowiem zastanawianie się nad kolejnymi operacjami może zniweczyć osiągnięte oszczędności płynące z lepszego algorytmu obliczeń (inaczej wygląda ten problem przy pisaniu programu i następnie wielokrotnym jego użyciu). Aby na koniec wyrobić sobie pogląd na efektywność poszczególnych typów systemów algebraicznych, porównajmy ciąg operacji kalkulatorowych potrzebnych do obliczenia wyrażenia
)/(((a+b(c+d)e (f+g)h)H)
Dla RPN: c ENTER d + e Yxb x a + f ENTER g + h Yx x i Yx j - y
W tym ciągu obliczeń należało wykonać 12 instrukcji operacji matematycznych (nie uwzględniając operacji wprowadzania argumentów podobnych dla obu systemów).
Dla AOS: [[a + bx[c + d]Yxe]x[f + g]Yx h]Yx i - - j = y Tutaj potrzebowano aż 19 instrukcji operacji. Liczbę tę można zmniejszyć do 15 zmieniając kolejność działań i używając = zamiast ]
Literatura:
Kozarski; Szurmak „Minikalkulatory w Obliczeniach Naukowych i Technicznych“
Instrukcje obsługi kalkulatorów SHARP, Hewlett-Packard i Texas Instruments.
Dominik Falkowski