Készítsünk egy karakteres módban működő számológép programot az egész számok halmazán. A program a négy alapműveletet ismerje (+,-,*,/ egész osztás), továbbá lehessen változókat használni. A változók nevei az angol abc kis- és nagybetűiből állhatnak. A program indulása után interaktív várja a kifejezéseket. Egy kifejezést az ENTER leütésével lehet lezárni.
Egy aritmetikai kifejezés <aritm. kif.> lehet egy "üres szó", egy változó neve <változó>, vagy egy számkonstans <konstans>, vagy ezekből műveletek és zárójelek segítségével képzett "matematikailag helyes" formulák. Egy kifejezés pedig lehet egy aritmetikai kifejezés, vagy egy értékadás, amelynek a bal oldalán egy változó neve, jobb oldalán pedig egy aritmetikai kifejezés állhat <változó>=<aritm. kif.>.
Az ENTER leütése után a program írja ki a kifejezés értékét, továbbá amennyiben a kifejezés egy értékadás, úgy az értékadás bal oldalán szereplő változó értéke legyen egyenlő a jobb oldalon álló aritmetikai kifejezés értékével.
Egy aritmetikai kifejezés értéke a következő:
ˇ ha az aritmetikai kifejezés az "üres szó", akkor az értéke legyen nulla.
ˇ ha az aritmetikai kifejezés egy változó neve, akkor az értéke legyen a változó értéke.
ˇ ha az aritmetikai kifejezés egy számkonstans, akkor az értéke legyen a számkonstans értéke.
ˇ ha az aritmetikai kifejezés egy formula, akkor az értéke legyen a formula értéke.
Egy kifejezés értéke a következő:
ˇ ha a kifejezés egy aritmetikai kifejezés, akkor az értéke legyen az aritmetikai kifejezés értéke.
ˇ ha a kifejezés egy értékadás, akkor a kifejezés értéke legyen az értékadás bal oldalán álló aritmetikai kifejezés értéke.
A változók mind egészszám típusúak, nem kell előre deklarálni őket, kezdeti értékük legyen nulla. Feltételezzük, hogy a felhasználó szintaktikailag helyes kifejezéseket ad. A kifejezések kiértékelésére használjuk a lengyelformát.
Példa:
> ALMA=1
< 1
> 5230
< 5230
> KORTE=
< 0
> (KORTE+1)*2
< 2
> ALMA=(ALMA+KORTE)*2
< 2
> KORTE=(ALMA+ALMA)/3
< 1
> KORTE
< 1
> ALMA*SZILVA
< 0
(Nagy Tibor)