1. Année 2007-2008
Mini-projet Langage C
Michel Koenig
Ce mini-projet va vous permettre de réaliser un calculateur d'expressions arithmétiques avec
des registres internes. D'un point de vue pédagogique, il s'agit de manipuler des arbres
binaires, l'allocation et la libération mémoire. Pour toute question contacter Michel Koenig sur
son email : mk@polytech.unice.fr
Description du projet
L'interface homme machine sera réalisée en mode console. Tous les calculs seront fais en
entier.
Le calculateur aura 10 registres baptisés M0, M1, … , M9. L'utilisateur pourra demander
d'affecter une valeur à un de ces registres, ou bien le résultat du calcul d'une expression
arithmétique à un registre, faire afficher un registre ou bien demander l'affichage du résultat du
calcul d'une expression arithmétique.
Exemples
L'utilisateur tape au clavier : Résultat
M0= 125 Affectation de 1125 à M0
M0 Affichage de la mémoire M0, soit 125
M1 = (245-45) * 5 Affectation de 1000 à M1
Syntaxe des expressions
Les espaces (blancs ou tabulations) ne comptent pas. On distingue les instructions d'affectation et
les expressions.
Une instruction d'affectation consiste en un nom de registre (M0, …, M9) suivi par un signe '=' suivi
par une expression.
Une instruction d'affichage consiste en un nom de registre (M0, …, M9) ou une expression dont il
faut calculer immédiatement la valeur et l'afficher.
Une expression est
− Soit un nombre
− Soit un opérande suivi par un opérateur ('+', '-', '*', '/'), suivi par un opérande
Un opérande est
− Soit un nombre
− Soit une parenthèse ouvrante '(', suivi par une expression, suivi par une parenthèse
fermante ')'
2. − Les nombres utilisés ne seront que des nombres positifs
Le projet
Il faut d'une part contrôler l'exactitude de la syntaxe des expressions saisies par l'utilisateur, mais
aussi effectuer correctement les calculs et veiller à ce qu'il n'y ait pas de fuite mémoire (allocation
de ressources mémoire jamais relâchées).
L'organisation du programme est laissé à votre libre arbitre. On veillera néanmoins à décomposer
suffisamment le programme pour avoir des fonctions simples à comprendre.
Concernant la structure de données, on vous conseille, pour la validation de la syntaxe et le calcul
des expressions, d'utiliser un arbre binaire, où chaque nom contiendra :
− L'opérateur
− L'opérande gauche s'il s'agit d'un nombre
− Un pointeur sur un sous-arbre contenant l'opérande gauche s'il s'agit d'une expression
− L'opérande droite s'il s'agit d'un nombre
− Un pointeur sur un sous-arbre contenant l'opérande droite s'il s'agit d'une expression
Cet arbre servira à analyser la syntaxe et au calcul. Il faudra le désallouer lorsque le calcul aura été
effectué.
Que faut-il rendre
Il faudra créer un projet Code::Blocks. C'est le répertoire contenant tous les fichiers du projet qu'il
faudra rendre compressé en format .zip (et pas un autre) pour le vendredi 16 Novembre 2007 au
plus tard.
Chaque étudiant devra rendre son mini-projet.
Notation
La notation tiendra compte
− De la justesse du programme
− De l'organisation du programme
− De la facilité de lecture du programme
− De la facilité de compréhension du programme
− De la bonne gestion de la mémoire du programme