Odwrotna Notacja Polska - pytania

Jan 09, 2008 26 Replies

Witam!



Wiem, że prawdopodobnie powinno iść na grupę o programowaniu - ale pewnie nie jednen z was próbował napisać kiedyś kalkulator lub coś podobnego - a za to właśnie się biorę - dlatego mam parę pytań:


1) czy to wogóle realne do zaimplementowania na mikroprocesorze dość małym - np 32 kb lub 256 kb pamięci flash??
2) jak dobrać pryjorytety operatorów (może macie gotową tabelę) - zwłaszcza jak dobrać pryjorytety operatorów typu sinus, cosinus itp
3) jak implementować stos - używać tego wbudowanego czy zbudować własny oparty o zmienne itp

Sorka za lekki OT - ale na grupie programistycznej raczej dostałbym odpowiedzi w stylu gotowy kod C na komputer - a nie za bardzo jeszcze potrafię przekształcać jedno w drugie :)



Pozdrawiam, Igon


Cytat ze strony

formatting link
: Zapis ten pozwala na całkowitą rezygnację z użycia nawiasów w : wyrażeniach, jako że jednoznacznie określa kolejność : wykonywanych działań.

No tak - ale trzeba zdefiniować który operator ma jaki pryjorytet podczas przetwarzania z zapisu algebraicznego na ONP - np jak nada sie dodawaniu większy pryjorytet niż mnożeniu to zostanie wykonane najpierw

- prowadząc do błędnych obliczeń - i teraz dokładnie nie wiem jakimi pryjorytetami opatrzyć np funkcje - tak by można było w nich (za pomocą algebraicznych nawiasów) zagnieżdżać dodatkowe obliczenia np jak nadać pryjorytety by zapis sin(180+5) dawał taki sam wynik jak zapis sin(185)

Litości!

formatting link
[...]

formatting link
wymagana znajomość języka angielskiego.

Igon Skrzypek schrieb:

180 5 + sin 185 sin

w ONP nie ma priorytetów, tylko jest obliczane po kolei. A ile potrzebujesz pamięci i jaki procesor to zależy od funkcji, które chcesz zaimplementować i głębokości stosu. Dodawanie, odejmowanie mnożenie i dzielenie na 3 elementowym stosie da się zaimplementować na Tiny12. Co do implementacji pełnego kalkulatora, to obejrz sobie program dc pod Linuxa ;-)

Waldek

Użytkownik "Waldemar Krzok" snipped-for-privacy@infocity.de napisał w wiadomości news: snipped-for-privacy@mid.uni-berlin.de...

Ale on pyta o przetworzenie z zapsu tradycyjnego na ONP - a tu priorytety są konieczne. Problem z tego co pamietam jest opisany w którymś z klasyków "Algorytmy+struktury danych=programy" Wirth-a albo "Sztuka programowania" Knuth. Skany zapewne są

MaW

Mariusz Wolek schrieb:

skan i drzewo binarne.

Waldek

Spoko ! Algorytm przetworzenia tekstowego zapisu wyrażenia matematycznego do ONP jest prościutki, bardzo logiczny i bardzo jednoznaczny - implementowałem to w swojej pracy mgr 30 lat temu na "maszynie cyfrowej ODRA" !!!. Więc teraz masz sto razy łatwiej - poszukaj tylko materiałów teoretycznych nt. ONP (moje się nie zachowały :-(( ).

Roman

Wielokrotnie za duzo :-) ZX Spectrum mialo 16KB, ZX81 8KB ..

Hm, przy ONP nie masz tego problemu wcale.

Raczej ci sie nie uda wbudowanego. On do wywolan programu [assemblerowego] sluzy.

J.

eee .. jakie skany ? To jest gramatyka ktorejs tam klasy, da sie na biezaco z niewielkim stosem.

Czytac przyklady do yacc/bison :-)

J.

Tylko dla zachowania prawdy historycznej :-) - ZX81 miał 1 KB; więcej (do 64KB) dokładane w zewnętrznych modułach.

J.F. pewnie chodzilo o ROM w ktorym implementowane sa procedury obliczeniowe, zapotrzebowanie na RAM nie jest tak potezne

A, to się zgadza; odruchowo pomyślałem o pamięci "do zagospodarowania przez użytkownika".

W 256KB ROM powinien zmieścić się analizator leksykalny i składniowy flex/bison a wtedy problem analizy wyrażeń matematycznych jest trywialny.

tbird napisał:

A gdyby tak jeszcze wirtualną maszynę Javy dorzucić w kolejnych megabajtach... Ośmiobitowe komputery miały basic mieszczący się w 4KB (nawet istnieje pojęcie 4K-BASIC), podobnie było w pececie. A ja miałem kalkulator z początku lat '70, jeszcze taki przed-komercyjny, tamte kalkulatory nie były produktem masowym i tanim. On miał Odwrotną Notację Polską, sześć cyfr znaczących i stały przecinek. Właśnie ze względu na łatwośc implementacji w szczupłych zasobach. Ja nie wiem co miał w środku zamontowany w nim układ (był w wąskiej obudowie DIL), ale nie sądzę, by wielkość jego pamięci wyrażona była w K(ilo).

Użytkownik "Igon Skrzypek" snipped-for-privacy@gmail.com.reszta.to.smiec> napisał w wiadomości news:fm1538$gu4$ snipped-for-privacy@matrix2.idg.com.pl...

Z ciekawości:komu to dziś potrzebne ? Sztuka dla sztuki ? Takie kalkulatory miały rację bytu ćwierć wieku temu, a te z ONP były dla nielicznych zawziętych chętnych. Mikroprocesory wówczas były na początku rozwoju. Domowe komputery ośmiobitowe z BASICiem robiły to doskonale. Dzisiejszy mikrokontroler dla dzieci, hobbystów, siakiś ATMega czy PIC18 leje "dziadków". Arkuszowi kalkulacyjnemu w PCcie , czy nawet kalkulatorowi z wyposażenia WIndows to nie dorównuje. Pełnowartościowy programowalny kalkulator inżynierski CASIO kosztuje znikome pieniądze.

Kiedy¶ pope³ni³em stosowne procedury dla Z80; cztery podstawowe dzia³ania na

32 bit float (3m+1e), z tego co pamiêtam to kod wyniós³ ok 2k (i chyba by³ do¶æ rozrzutny). Kod w pe³ni wspó³u¿ywalny (chodzi³o toto w systemie wielozadaniowym)

To jest do¶æ proste; wystarczy poogl±daæ jakie¶ gotowe rozwi±zanie.

Raczej zaimplementowaæ

Równie¿ Jacek Po¼niak

Myślę, że sie mylisz. Dla wprawnej osoby RPN to możliwość liczenia sporo szybszego a co najważniejsze obarczonego mniejszym ryzykiem pomyłki. I wcale tu nie pomogą programowalne super kalkulatory bo mam na myśli proste obliczenia ale takie które na zwykłych kalkulatorach zmuszają do używania na przykład wielopoziomowych nawiasów które bardzo łatwo się pisze na kartce ale bardzo trudno wprowadza z pamięci do kalkulatora. RPN odpowiada myślowej logice obliczeń i jest nieoceniona "w terenie" tam gdzie prowadzi sie obliczenia wprost na kalkulatorze nie zapisując ich wcześniej na kartce. Osobiście kalkulatora ze zwykłą notacją używam wyłącznie do sumowania kolumn liczb bądź operacji na dwóch liczbach. Kiedy potrzebuję policzyć cokolwiek bardziej skomplikowanego od razu sięgam po maszynkę z RPN w postaci emulatora na palmtopie.

eee .. jak juz sa napisane na kartce, to latwo sie wprowadza.

Nad co bardziej skomplikowanym zadaniem trzeba jednak pomyslec.

Eee - nie lepiej excela ?

P.S. troche o kalkulatorach HP, ale juz dosc zaawansowanych

formatting link
symulator, firmware ... 8K niecale
formatting link
J.

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required