CPGE LBS Guelmim Année scolaire : 2024/2025
Filière : MPSI/PCSI Matière : Informatique
TP
Exercice 1
La notation polonaise inversée (NPI) permet de définir des expressions mathématiques sans
parenthè[Link] expression avec parenthèses, par exemple "2*(5+6)" s’écrit en NPI : "2 5 6 + *".
1. Écrire une fonction Eval(op,n1,n2) qui prend trois paramètres, un opérateur op représenté
par un caractère, et deux opérandes n1 et n2, qui sont des nombres entiers. La liste des
opérateurs disponibles est la suivante : +, -, *, /.
Exemple : Eval("+",1,2) retourne 3.
2. Écrire une fonction Evalue(exp) qui prend en argument une expression postfixée représentée
sous forme de liste. Cette fonction retourne la valeur du calcul correspondant à cette expres-
sion.
Pour calculer une expression arithmétique codée en postfixée, il suffit :
— d’empiler les entiers successifs que l’on rencontre ;
— lorsque l’on détecte un opérateur, il faut
— dépiler les 2 derniers entiers ;
— leur appliquer l’opérateur ;
— empiler le résultat ;
— enfin, lorsque l’on rencontre un point, le résultat du calcul doit être dépilé puis affiché.
Exemple : Evalue([7,4,"+", "."]) retourne 11.
Exercice 2
1. Utiliser une pile pour écrire une fonction est_palindrome(mot) qui vérifie si un mot est un
palindrome (se lit de la même manière dans les deux sens).
2. Tester la fonction avec les mots suivants : "radar", "python", "kayak".
Exercice 3
1. Écrire une fonction inverser(p) qui prend en paramètre une pile p et retourne la pile inversée.
2. Écrire une fonction rotation(p,n) qui effectue une « rotation » des n éléments situés en haut
de la pile p.
Exercice 4
Utiliser une pile pour convertir un nombre entier en binaire.