INSIA – ALGORITHMIQUE – ING 1 – Série d’exercices n°1 - 2008-2009 - page 2/2 - Bertrand LIAUDET
La notation algébrique classique est la suivante : 5* ( (9 + 8)*(4 + 6) + 7 )
Elle peut être transformée par une écriture dite en « polonaise inversée » : 5 9 8 + 4 6 + * 7 + *
Ou encore : 9 8 + 4 6 + * 7 + 5 *
En notation polonaise inversée (notation post-fixée), l’opérateur figure après les opérandes sur lesquels il agit.
La notation est gérée comme une pile : on empile les opérandes, et on en dépile deux dès qu’on tombe sur un
opérateur, on fait l’opération et on empile le résultat. Par exemple : on empile 9, puis 8, puis on les dépile, on fait
l’opération 9+8 et on empile le résultat 17. Puis on empile 4, puis 6 et on les dépile, etc.
Ecrire un algorithme qui gère avec une pile une calculette en polonaise inversée. On considèrera que la calculette
ne contient les touches suivantes :
Chiffres : 10 touches pour constituer les opérandes : 0 à 9. (On ne gère pas la virgule, on ne gère la saisie que de
chiffres <10).
Opérateurs binaires : 4 touches d’opérateur : +, -, *, / . (On ne gère pas les opérateurs unaires).
Annuler : 1 touche « ESC » pour tout annuler.
Ecrire l’algorithme de la calculette en utilisant une pile et les primitives de pile. En cas d’erreur, on annulera
tout le calcul en cours.
Exercice 2
• Définir la structure de donnée statique nécessaire pour gérer une pile (structure avec un tableau).
• Ecrire les algorithmes des primitives de gestion des piles.
Files
Présentation
Une file est une structure de données permettant de gérer des collections d’éléments de même type, le principe
d’utilisation étant que le premier entré sera le premier sorti : FIFO (FIRST In, First Out, principe de la file
d’attente).
Une pile est un nouveau type : typFile.
Les primitives permettant d’utiliser une pile sont les suivantes :
• initFile (p) // permet d’initialiser une pile.
• fileVide (p) : booleen // dit si la file est vide
• filePleine (p) : booleen // dit si la file est pleine
• défiler (f, val, ok) // défile la valeur val de la file f. Ok vaut faux si la file était vide. ES :p :typFile.
S:val:typeAuChoix. S:ok:booleen.
• enfiler (f, val, ok) // emfile une valeur val dans la file f. Ok vaut faut si la file était pleine. ES :p :typFile.
E:val:typAuChoix. S :ok :booleen.
Exercice 1
Ecrire un algorithme qui permette de d’afficher tous les éléments d’une file en conservant la file et en n’utilisant
que les primitives de file.
Exercice 2
• Définir la structure de donnée statique nécessaire pour gérer une file (structure avec un tableau circulaire).
• Ecrire les algorithmes des primitives de gestion des files.