HTML

Zsebszámológép programok, forráskódok, hírek

Egy blog zsebszámológép programokról, algoritmusokról, érdekességekről.

Játék

Szabadon letölthető, megújult Gazdálkodj okosan! stratégiai társasjáték szabállyal együtt.

Friss topikok

Linkblog

RPN értelmező program

2010.05.10. 06:15 Sany80

Casio Basic program, mely lehetővé teszi az RPN (reverse polish notation - fordított lengyel jelölés) adatbevitelt, és végrehajtja a számítást. Három részprogramból áll: RPN a főprogram (ez végzi a kezdőképernyő megjelenítését és a lenyomott billentyűk beolvasását, és meghívja a másik két programot), RPNTRANS alprogram, amely a bevitt billentyű-kódokból kialakít egyfajta RPN mátrixot, az RPNCALC pedig a számítást végzi el. A programon még lehet szépíteni, alakítgatni, ez egy kezdetleges (de már működőképes) változat. A 3 program mérete együtt alig több 1 kilobyte-nál.

Írta: Csetneki Sándor

képernyőkép

Prog "RPN"

Lbl 0;
ClrText;
For 1 -> A To 40: Next;
Locate 1,1,"-- CASIO BASIC RPN --";
Locate 1,7,"F1: CALC F5: CLR F6: DEL";
21 -> Dim List 1;
1 -> A;

Lbl 1;
Do;
Getkey -> B;
LpWhile B = 0;
10 -> W;

If B = 31;
Then Locate A,3,":";
 -7 -> W;
IfEnd;

If B = 61;
Then Locate A,3,".";
 -6 -> W;
IfEnd;

If B = 41;
Then Locate A,3,"-";
 -5 -> W;
IfEnd;

If B = 42;
Then Locate A,3,"+";
 -1 -> W;
IfEnd;

If B = 32;
Then Locate A,3,"-";
 -2 -> W;
IfEnd;

If B = 43;
Then Locate A,3,"x";
 -3 -> W;
IfEnd;

If B = 33;
Then Locate A,3,"/";
 -4 -> W;
IfEnd;

B = 71 => 0 -> W;
B = 72 => 1 -> W;
B = 62 => 2 -> W;
B = 52 => 3 -> W;
B = 73 => 4 -> W;
B = 63 => 5 -> W;
B = 53 => 6 -> W;
B = 74 => 7 -> W;
B = 64 => 8 -> W;
B = 54 => 9 -> W;

W >= 0 And W <= 9 => Locate A,3,W;

If W != 10
Then W -> List 1[A;
A+1 -> A;
IfEnd;

*********** teljes törlés ***********

B = 39 => Goto 0;

*********** törlés ***********
If B = 29
Then A > 1 => A-1 -> A;
Locate A,3," ";
IfEnd;

*********** számítás ***********


If B = 79


Then -8 -> List 1[A;


Prog "RPNTRANS";


Prog "RPNCALC";


Locate 1,5,"RESULT:     ";


Locate 9,5,List 2[1;


IfEnd;


Goto 1;

 

RPNTRANS program:

{30,2 -> Dim Mat A;
{30,2 -> Dim Mat B;
1 -> X;
0 -> V;
0 -> T;
1 -> E;
0 -> I;

While List 1[X] != -8;
List 1[X -> B;
X+1 -> X;
B>=0 And B<=9 And T=0 => 10*V+B -> V;

If B>=0 And B<= 9 And T=1;
Then V+WB -> V;
.1W -> W;
IfEnd;

If B= -5;
Then -1 -> E;
IfEnd;

If B= -6;
Then 1 -> T;
0.1 -> W;
IfEnd;

If B<0 And B!= -8 And B!= -6 And B!= -5
Then I+1 -> I;
E*V -> Mat A[I,1;
1 -> Mat A[I,2;
0 -> V;
0 -> T;
1 -> E;
I+1 -> I;

If B >= -4 And B <= -1


Then Abs B -> Mat A[I,1;


0 -> Mat A[I,2;


IfEnd;


IfEnd;


WhileEnd;


I+1 -> I;


3 -> Mat A[I,1;


3 -> Mat A[I,2;


1 -> I;


1 -> J;


While Mat A[I,2]!=3;


Mat A[I,1 -> B;


Mat A[I,2 -> C;


If A!=0 And B!=0


Then B -> Mat B[J,1;


C-> Mat B[J,2;


J+1 ->J;


IfEnd;


I+1 -> I;


WhileEnd;


3 -> Mat B[J,2;


Mat B -> Mat A

RPNCALC

30 -> Dim List 2;
1 -> X;
While Mat A[X,2] != 3;
Mat A[X,1 -> B;
Mat A[X,2 -> C;
X+1 ->X;

If C = 1
Then List 2[5 -> List 2[6;
List 2[4 -> List 2[5;
List 2[3 -> List 2[4;
List 2[2 -> List 2[3;
List 2[1 -> List 2[2;
B -> List 2[1;
IfEnd;

If C = 0


Then List 2[2 -> M;


List 2[1 -> N;


B=1 => M+N -> D;


B=2 => M-N -> D;


B=3 => M*N -> D;


B=4 => M/N -> D;


List 2[3 -> List 2[2;


List 2[4 -> List 2[3;


List 2[5 -> List 2[4;


List 2[6 -> List 2[5;


D -> List 2[1;


IfEnd;


WhileEnd

Szólj hozzá!

Címkék: casio számológép grafikus basic rpn

A bejegyzés trackback címe:

http://szamologep.blog.hu/api/trackback/id/tr251987472

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben.

Nincsenek hozzászólások.