Odwrotna Notacja Polska - pytania

Jan 09, 2008 26 Replies

Użytkownik "Padre_peper" snipped-for-privacy@no.net napisał w wiadomości news:fm38lj$rno$ snipped-for-privacy@mx1.internetia.pl...

Dla wprawnego wystarczy cokolwiek, czym biegle umie się posługiwać,także suwak logarytmiczny. Wprawny ma taki kalkulator od lat i go nie musi robić od podstaw. Ryzyko pomyłki w programie jest duże.

A ja sięgam po Excel jak mi moje "dziadki" nie wystarczą :-) Ongiś lubiłem radziecki kalkulator z wbudowanym BASICiem. Bardzo fajna to była zabawka. Programowało się go podobnie jak ZX81 i prawie tyle samo umiał. Akumulatory w nim już zdechły, a prądożerny był. Najczęściej jednak używam kalkulatora z Windows, bardzo leciwym nieprogramowalnym Privilegiem ze wszystkimi funkcjami inżynierskimi, bez baterii (ogniwa słoneczne ma) nie gardząc.

formatting link
w 4KB mozna naprawde duzo zmiescic...

polecam 1KB intros competition...

Zależy co dokładnie chcemy osiągnąć. Do obliczenia wyrażenia algebraicznego podanego w całości jako string wklepany z klawiatury np: "1+2*3-4.0--5*sin(6*(7+8))" trzeba pomyśleć o jakimś parserze gramatycznym. Zwykłe ONP oczywiście jest prostsze w implementacji.

Pan PAndy napisał:

Jak DOS był tylko w wersji angielskiej (a później jeszcze w kilku dodatkowych językach), to chcąc pisać po polsku, trzeba było załadować do pamięci sterownik klawiatury. A jak już były karty EGA i VGA, to również program dbający o to, by wiedziały one jak wyglądaja litery z ogonkami, nawet po resecie związanym ze zmiana trybu wyświetlania. Trwało więc nieustające competition, kto napisze program do obsługi klawiatury i monitora zajmujący mniej miejsca. Mnie się udało naskrobać drajwer klawiatury na 206 bajtów i obsługę VGA w 460 bajtach (z czego dwie trzecie to oczywiście same kształty liter). Nic mi nie wiadomo aby ktoś zrobił krótsze. Ale ruchome obrazki w 1KB też były fajne.

Pan tbird napisał:

Co chcemy osiągnąć, to napisano w temacie wątku. RPN ma to do siebie, że nie wymaga 'jakiegoś parsera gramatycznego', bo w zasadzie w tym zapisie nie ma gramatyki. Wystarczy natychmiastowe wykonanie tego, co po kolei brane jest ze stosu.

[...]

A gry w 256 bajtach na VGA? Z licznikiem ;-) Też takie są...

A jak się chwilimy, to całą gębą - mój driver drukarki (grafika 72x72 dpi) na własnoręcznie zbudowanym porcie równoległym do Spectrum i programu Art Studio (kto pamięta?) miał chyba 89 bajtów. Driver do Tasworda (tak to się chyba nazywało), obsługujący na tym samym porcie drukarki polskie litery i całe mnóstwo ozdobnych trybów też coś koło tego. Driver obsługujący BASICowe LPRINT i LLIST trochę większy - ok.

120 bajtów. Wszystkie obsługiwały rewelacyjnie szybką (200 cps) jak na tamte czasy i stosunkowo mało znaną drukarkę Star Radix 15.

Na Spectrum popełniłem też program w BASICu, obsługujący... dalekopis jako drukarkę przez wyjście... słuchawkowe/nagrywania. Wykorzystałem specyfikę komendy PAUSE 1. Od strony elektrycznej był to banalny układ z wykorzystaniem jedynego jFETa, jakiego miałem pod ręką: 2SK41E (plus bodaj BC313 jako driver pętli 40 mA) - zniewaga straszna, wykorzystać FETa UKF do nadawania z prędkością 50 bodów ;)

Dnia 09.01.2008 Igon Skrzypek snipped-for-privacy@gmail.com.reszta.to.smiec>

napisa³/a:

Taka sprawdzona rada "jak szybko przej¶æ na Odwrotn± Notacjê Polsk±".

  1. Wszystkie oepracje traktuj jak funkcje. Czyli zamiast a + b, pomysl o funkcji 'dodaj(a, b)'.
  2. Zapisz w ten sposób swoje wyra¿enie do obliczenia. Np: (a + b) * (c - d) => mnoz(dodaj(a, b), odejmij(c, d))
  3. Nazwê funkcji przesuñ ZA jego nawiasy z parametrami, np. dodaj(a, b) => (a, b)dodaj
  4. No i juz masz zapis w odwrotnej notacji :). Tam gdzie trafisz na przecinek wciskaj ENTER.

(a + b) * (c - d) =>

mnoz(dodaj(a, b), odejmij(c, d)) =>

(((a, b)dodaj, (c, d)odejmij)mnoz =>

a b + c d - *

Fajne, nie?

Join the Discussion

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

Didn't find your answer?

Ask the community — no account required