- Sixten
- Medlem ●
- 2012-06-06 21:46
Hej alla barn, nu skall vi lära oss RPN !
RPN är Reverse Polish Notation och ett sätt att plita in saker i en miniräknare.
För att förenkla något kan vi säga att vad gäller Notationer så finns det;
Infix-notation, kallas även Algebraisk Notation
RPN (Omvänd Polsk Notation)
Det finns även andra ”avarter” men det blir omständigt nog ändå som det är...
Vi börjar med det gamla vanliga inlärda, Algebraisk. Varenda miniräknare i princip kör detta. Vill man veta vad 2 plus 3 är så skriver man;
2
+
3
=
och får svaret 5
På en RPN-räknare arbetar man på liknande sätt, men man lägger talen på hög på en STACK och utför en operation på dem;
2
Enter (2 placeras på stacken)
3 (3:an läggs i inmatning, första tvåan åker upp ett hack)
Enter (andra värdet (3) läggs på stacken
(2 tas från stack, 3 tas från stack, adderas och läggs på stack)
resultatet visas; 5
Rörigt? Vänta ett slag så skall jag förklara ”STACK”
Tro inte att en algebraisk räknare inte har en stack, det har den. Men du kan inte komma åt den, manipulera den eller använda den på ngt sätt för egen vinning. Den används bara internt
Enkel förklaring av en STACK
En stack är en samling med dataregister. platser i minne för tal, tecken etc. Den fungerar som en sån där tallriksmatare på en restaurang. En fjäder i botten, man ställer i rena tallrikar och kunderna tar tallrikar, när de tar en tallrik åker traven (stacken) upp ett hack.
Vänd nu upp och ner på tallriksmataren och ersätt tallrikarna med tal. Vi har fyra platser i vår tallriksmatare (lite snålt om det varit fysiska tallrikar man hanterat...) men i vår talvärld är det tillräckligt då vi omsätter dem hela tiden.
Våra Tallriksplatser (4) har namn med för att veta vad som går vart:
T: Z: Y: X:
X-registret är det du ser på en enraders HP-räknare
Y,Z och T ligger liksom ”ovan” fönstret, vill du se dem får du ”rulla ner dem”
Nu kan vi ju begripa Liiite bättre vad som sker när vi slår in vår addering av 2 och 3 ...
T: T: T: T: Z: Z: Z: Z: Y: Y:2 Y: Y: X: 2 X:3 X:5 X: 2 ENTER 3 ENTER +
Man ”ser” hur 2:an lättar ett steg upp i Y-registret när nästa tal kommer in och hur stacken ”faller” när man tar tal och gör ngt med dem.
Varför skall man lära sig det här möget då, jag vill ju bara lägga ihop två och tre?
Ja, vill du bara lägga ihop två tal, kör på då med din gamla Texas. Är du däremot intresserad av matematik och vackra lösningar på problem, läs vidare.
Först lite mer om stacken.
Vi har två tal:
T: Z: Y:3 X:2
inmatade och kommer på att vi skall dividera här
trycker vi på division får vi 3/2 (3 Enter 2 / ) och vi vet att Nej, svaret skall ju vara 2/3 - täljaren och nämnare står i fel ordning här. Inte ovanligt att det hände i skolbänken.
Antingen använda något Minne med MRC (memory Recall Clear) M+ (Memory Add) för 2:an och ... fan, bättre skriva upp det på en lapp...
i en RPN-räknare har du mängder med stackmanipulation du kan göra;
T: Vi trycker SWAP T: ...och ” / ” T: Z: Z: Z: Y:3 Y:2 Y: X:2 X:3 X:,6667
Vi har en hel uppsättning med kommandon för att peta runt med talen på stacken: DUP, ROT, ROLLD, UP, PICK, TOLIST, KEEP, CLX är bara några.
...eller ännu värre "Shit, det skulle ju inte delas med 3...utan FEM, nu får jag räkna om hela rasket IGEN...hata matte...", på en HP-räknare trycker du LASTX och får tillbaka som det var innan du matade in den sista trean där... och vi matar in en 5:a istället... och trycker "/"...baggis faktiskt.
De ”modernare” (från 82 och framåt skulle jag tro) kan man inte bara ha tal på stacken, utan även listor, program, vektorer, bilddata, strängar osv. Massa kul för en nörd utlovas.
Om vi återvänder till de algebraiska räknarna för en stund igen så märker vi av PARENTESER när man kommer en bit upp i matten.
Normalt har vi ju att multiplikation och division har högre prioritet än addera och subtrahera...
2+4*3+4*6 --------- 7+1
Får skrivas;
2 + (4 * 3)+(4*6) / (7+1)
Man får liksom ”gödsla” med parenteser för att förhoppningsvis få det rätt.
Ok, jag kör det snabbt på min HP då:
2 Enter 4 Enter 3 * + 4 Enter 6 * + 7 Enter 1 + /
inte en parentes, glasklart och kikar vi på stacken blir det en upplysande jojo-färd.
T: T: T: T: T: T: Z: Z: Z:2 Z: Z: Z: Y: Y:2 Y:4 Y:2 Y: Y:14 X: 2 X:4 X:3 X:12 X:14 X:4 forts T: T: T: T: T: T: Z:14 Z: Z: Z: Z:38 Z: Y:4 Y:14 Y: Y:38 Y:7 Y:38 X:6 X:24 X:38 X:7 X:1 X:8 forts T: Z: Y: X:4,75
När man har tal som täcker en halv sida i matteboken, då kommer RPN med stack till sin fulla rätt.
jag kan spara i princip halva uträkningar, återkalla ”gammalt överspelat” och jag kan se (och komtrollera delresultat) på ett snabbt sätt ( t ex som i ovan uträkning, täljaren blir 38).
Sitter du just nu i ÅK9 har du ett guldläge framför dig. En begagnad HP-48G, HP-48GX etc kostar ett par hundralappar på eBay, den klår vilken Texas som helst. Har du tur får du ett kilo manual med - en manual som tar upp precis ALLT. Skriven av några som förmdoligen LEVER för manualer... Inte som en casio där en Universitetsräknare har en 38-sidig manual, sedan är resten på 17 andra språk...
Min HP-48G med fodral, Programmers Guide och under den "AUR"-manualen (Advanced USers Reference)
Närbild på räknare, med svaret 4,75
mer läsning:
Vintage Calculators Web Museum Om gamla räknare....
The Museum of HP Calculators Om gamla räknare, men mkt matnyttigt till bl a HP-48
RPN (T ex en artikel om RPN liknande min här)
HPCC: Handheld And Portable Computer Club brittisk förening för räknarnördar....
Råd till dig som skall köpa en räknare.
10-serien är bra (introducerades 1981, de flesta tillverkas än...), och i princip allt fram till 48-serien (G/GX). Efter dessa skickade man av tillverkningen till ngt Kinpo (uttalas KIN-POO enligt HP-folk). Synnerligen dåliga tangentbord, praktiska katastrofer....dubbelslag osv...
Så 49+, 40 GS, även den nuvarande 35s:an är rena skiten.
3 Typexempel på Kinpoo-räknare. Enda undantaget är 50g...
Hittar du en fungerande HP-41C / CX / CV på en loppis märkt "200:- eller bud" ta den direkt.
Jag sålde min (dumt nog) för över 3000:- på eBay (räknare plus några pluginer)....
De riktigt tidiga med röda siffror - enbart om du är entusiast....
Se upp med en del enklare räknare - de är inte RPN....