Objectif: Création d'une machine à calculer simple utilisant la notation polonaise inverse
Cet exercice à pour but de créer une calculatrice simple utilisant la notation polonaise inverse. La notation polonaise inverse [1] [2], aussi appelée notation post-fixée, est une notation où les opérandes se placent avant les opérations. Elle est différente de la notation infixée dont on a l'habitude et où les opérations se trouvent entre les opérandes :
(A + B) / (C + D)
En notation polonaise inverse :
A B + C D + /
La notation polonaise inverse ne requiert ni parenthèse ni précédence entre les opérations. De plus, une machine à calculer se basant sur cette notation peut être implémentée grâce à une simple pile.
En effet, si on reprend l'exemple précédent, on va d'abord entrer le nombre A, puis le nombre B. Il y a à ce moment-là 2 opérandes sur la pile. Puis, lorsque l'on entre l'opérateur +, on va prendre les deux nombres qui sont sur le haut de la pile, les additionner et replacer le résultat sur la pile. Il ne restera donc plus qu'un opérande qui est la somme de A et B. Ensuite on place C puis D sur la pile. Il y a donc 3 opérandes sur la pile : la somme de A et B, C et D. Lorsque l'on entre le second opérateur +, on va faire la somme des deux opérandes qui sont en haut de la pile, c'est-à-dire C et D. Il restera donc 2 opérandes sur la pile : la somme de A et B et la somme de C et D. Finalement, la division va prendre ces deux opérandes et mettre le résultat que l'on veut sur la pile, c'est-à-dire (A + B) / (C + D).
La calculatrice que l'on cherche à programmer doit avoir les fonctionnalités suivantes :
+
, -
, *
et /
.h
ou help
.s
ou stack
.q
ou quit
. Le programme sera écrit dans un fichier nommé PrenomNomCalculator.c
.
L'instruction pour compiler ce programme est la suivante :
gcc -o main PrenomNomCalculator.c
Ensuite, taper la commande suivante pour exécuter le programme :
./main