SlideShare une entreprise Scribd logo
1  sur  2
Télécharger pour lire hors ligne
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 ')'
− 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

Contenu connexe

Tendances

Algorithme & structures de données Chap II
Algorithme & structures de données Chap IIAlgorithme & structures de données Chap II
Algorithme & structures de données Chap IIInes Ouaz
 
Chapitre 3 tableaux et pointeurs en C
Chapitre 3 tableaux et pointeurs en CChapitre 3 tableaux et pointeurs en C
Chapitre 3 tableaux et pointeurs en CAbdelouahed Abdou
 
Exercices en langage c
Exercices en langage cExercices en langage c
Exercices en langage cDaoua Lotfi
 
Résumé Algorithme et Programmation
Résumé Algorithme et ProgrammationRésumé Algorithme et Programmation
Résumé Algorithme et Programmationborhen boukthir
 
Fiche3 ex-sous-programme
Fiche3 ex-sous-programmeFiche3 ex-sous-programme
Fiche3 ex-sous-programmeBaghdadi Wajih
 
Fiche2 ex-sous-programme
Fiche2 ex-sous-programmeFiche2 ex-sous-programme
Fiche2 ex-sous-programmeBaghdadi Wajih
 
Seance 2 - Programmation en langage C
Seance 2 - Programmation en langage CSeance 2 - Programmation en langage C
Seance 2 - Programmation en langage CFahad Golra
 
Algorithmes d'approximation
Algorithmes d'approximationAlgorithmes d'approximation
Algorithmes d'approximationmohamed_SAYARI
 
Seance 1 - Programmation en langage C
Seance 1 - Programmation en langage CSeance 1 - Programmation en langage C
Seance 1 - Programmation en langage CFahad Golra
 
Travaux dirigés 1: algorithme & structures de données (corrigés)
Travaux dirigés 1: algorithme & structures de données (corrigés)Travaux dirigés 1: algorithme & structures de données (corrigés)
Travaux dirigés 1: algorithme & structures de données (corrigés)Ines Ouaz
 
Série sous programmes (bac scientifique)
Série sous programmes (bac scientifique)Série sous programmes (bac scientifique)
Série sous programmes (bac scientifique)Hichem Kemali
 

Tendances (20)

Langage c partie_2
Langage c partie_2Langage c partie_2
Langage c partie_2
 
Algorithme & structures de données Chap II
Algorithme & structures de données Chap IIAlgorithme & structures de données Chap II
Algorithme & structures de données Chap II
 
Serie2
Serie2Serie2
Serie2
 
Chapitre 3 tableaux et pointeurs en C
Chapitre 3 tableaux et pointeurs en CChapitre 3 tableaux et pointeurs en C
Chapitre 3 tableaux et pointeurs en C
 
Exercices en langage c
Exercices en langage cExercices en langage c
Exercices en langage c
 
Cours d'algorithmique
Cours d'algorithmiqueCours d'algorithmique
Cours d'algorithmique
 
Résumé Algorithme et Programmation
Résumé Algorithme et ProgrammationRésumé Algorithme et Programmation
Résumé Algorithme et Programmation
 
Algorithmique
AlgorithmiqueAlgorithmique
Algorithmique
 
Algorithmique
AlgorithmiqueAlgorithmique
Algorithmique
 
Fiche3 ex-sous-programme
Fiche3 ex-sous-programmeFiche3 ex-sous-programme
Fiche3 ex-sous-programme
 
Ch08
Ch08Ch08
Ch08
 
Fiche2 ex-sous-programme
Fiche2 ex-sous-programmeFiche2 ex-sous-programme
Fiche2 ex-sous-programme
 
Seance 2 - Programmation en langage C
Seance 2 - Programmation en langage CSeance 2 - Programmation en langage C
Seance 2 - Programmation en langage C
 
Chapitre05 : Les tableaux
Chapitre05 : Les tableauxChapitre05 : Les tableaux
Chapitre05 : Les tableaux
 
Algorithmes d'approximation
Algorithmes d'approximationAlgorithmes d'approximation
Algorithmes d'approximation
 
Chapitre 04 : les fonctions
Chapitre 04 : les fonctionsChapitre 04 : les fonctions
Chapitre 04 : les fonctions
 
Seance 1 - Programmation en langage C
Seance 1 - Programmation en langage CSeance 1 - Programmation en langage C
Seance 1 - Programmation en langage C
 
Travaux dirigés 1: algorithme & structures de données (corrigés)
Travaux dirigés 1: algorithme & structures de données (corrigés)Travaux dirigés 1: algorithme & structures de données (corrigés)
Travaux dirigés 1: algorithme & structures de données (corrigés)
 
C4 fonctions
C4 fonctionsC4 fonctions
C4 fonctions
 
Série sous programmes (bac scientifique)
Série sous programmes (bac scientifique)Série sous programmes (bac scientifique)
Série sous programmes (bac scientifique)
 

En vedette

Sistema informático
Sistema informáticoSistema informático
Sistema informáticosofiabril
 
12th August 2016 - An ex-christian?
12th August 2016  - An ex-christian?12th August 2016  - An ex-christian?
12th August 2016 - An ex-christian?Thorn Group Pvt Ltd
 
Everythingyouneed11
Everythingyouneed11Everythingyouneed11
Everythingyouneed11Go Imprint
 
JLL - Cost Management 2012
JLL - Cost Management 2012JLL - Cost Management 2012
JLL - Cost Management 2012Colin Harrop
 
Ormand, Terry Avn. Prof. Aug 16
Ormand, Terry Avn. Prof. Aug 16Ormand, Terry Avn. Prof. Aug 16
Ormand, Terry Avn. Prof. Aug 16TERRY ORMAND
 

En vedette (7)

Sistema informático
Sistema informáticoSistema informático
Sistema informático
 
12th August 2016 - An ex-christian?
12th August 2016  - An ex-christian?12th August 2016  - An ex-christian?
12th August 2016 - An ex-christian?
 
Cuadro
CuadroCuadro
Cuadro
 
Everythingyouneed11
Everythingyouneed11Everythingyouneed11
Everythingyouneed11
 
JLL - Cost Management 2012
JLL - Cost Management 2012JLL - Cost Management 2012
JLL - Cost Management 2012
 
Ormand, Terry Avn. Prof. Aug 16
Ormand, Terry Avn. Prof. Aug 16Ormand, Terry Avn. Prof. Aug 16
Ormand, Terry Avn. Prof. Aug 16
 
Que viva
Que  vivaQue  viva
Que viva
 

Similaire à Explication du micro

Introduction à MATLAB et Simulink.pdf
Introduction à MATLAB et Simulink.pdfIntroduction à MATLAB et Simulink.pdf
Introduction à MATLAB et Simulink.pdfTarakBenslimane
 
Introduction à MATLAB et Simulink.pdf
Introduction à MATLAB et Simulink.pdfIntroduction à MATLAB et Simulink.pdf
Introduction à MATLAB et Simulink.pdfTarakBenslimane
 
Cours - TC - Histoire Algorithmique.pdf
Cours - TC - Histoire Algorithmique.pdfCours - TC - Histoire Algorithmique.pdf
Cours - TC - Histoire Algorithmique.pdfadeljaouadi
 
Cours_C_for_Etudiant.pdf
Cours_C_for_Etudiant.pdfCours_C_for_Etudiant.pdf
Cours_C_for_Etudiant.pdfHailisara
 
Ebook matlab
Ebook matlabEbook matlab
Ebook matlabN NASRI
 
Cours programmation en langage C.pdf
Cours  programmation  en  langage  C.pdfCours  programmation  en  langage  C.pdf
Cours programmation en langage C.pdfkhalidmoussaid4
 
Slides octave1
Slides octave1Slides octave1
Slides octave1issaslide
 
Vbisigk
VbisigkVbisigk
VbisigkISIG
 
mis
mismis
misISIG
 
Tp1 architecture m.zarboubi
Tp1 architecture m.zarboubiTp1 architecture m.zarboubi
Tp1 architecture m.zarboubiMOHAMED ZARBOUBI
 
Introduction a la compilation Aperçu de la compilation / Assembleur MIPS - C1
Introduction a la compilation  Aperçu de la compilation / Assembleur MIPS - C1Introduction a la compilation  Aperçu de la compilation / Assembleur MIPS - C1
Introduction a la compilation Aperçu de la compilation / Assembleur MIPS - C1Beligh HAMDI
 
Cours 1 bases de matlab 2eme annees
Cours 1   bases de matlab 2eme anneesCours 1   bases de matlab 2eme annees
Cours 1 bases de matlab 2eme anneesTarik Taleb Bendiab
 

Similaire à Explication du micro (20)

Introduction à MATLAB et Simulink.pdf
Introduction à MATLAB et Simulink.pdfIntroduction à MATLAB et Simulink.pdf
Introduction à MATLAB et Simulink.pdf
 
Introduction à MATLAB et Simulink.pdf
Introduction à MATLAB et Simulink.pdfIntroduction à MATLAB et Simulink.pdf
Introduction à MATLAB et Simulink.pdf
 
Cours - TC - Histoire Algorithmique.pdf
Cours - TC - Histoire Algorithmique.pdfCours - TC - Histoire Algorithmique.pdf
Cours - TC - Histoire Algorithmique.pdf
 
Tp1 matlab
Tp1 matlab Tp1 matlab
Tp1 matlab
 
Cours_C_for_Etudiant.pdf
Cours_C_for_Etudiant.pdfCours_C_for_Etudiant.pdf
Cours_C_for_Etudiant.pdf
 
langage C++
langage C++langage C++
langage C++
 
Langage C
Langage CLangage C
Langage C
 
Ebook matlab
Ebook matlabEbook matlab
Ebook matlab
 
syntax-matlab.pdf
syntax-matlab.pdfsyntax-matlab.pdf
syntax-matlab.pdf
 
Slide-Complexite by loic.pdf
Slide-Complexite by loic.pdfSlide-Complexite by loic.pdf
Slide-Complexite by loic.pdf
 
Cours programmation en langage C.pdf
Cours  programmation  en  langage  C.pdfCours  programmation  en  langage  C.pdf
Cours programmation en langage C.pdf
 
Slides octave1
Slides octave1Slides octave1
Slides octave1
 
Vbisigk
VbisigkVbisigk
Vbisigk
 
algorithmique
algorithmiquealgorithmique
algorithmique
 
mis
mismis
mis
 
Tp1 architecture m.zarboubi
Tp1 architecture m.zarboubiTp1 architecture m.zarboubi
Tp1 architecture m.zarboubi
 
Initiation r
Initiation rInitiation r
Initiation r
 
Introduction a la compilation Aperçu de la compilation / Assembleur MIPS - C1
Introduction a la compilation  Aperçu de la compilation / Assembleur MIPS - C1Introduction a la compilation  Aperçu de la compilation / Assembleur MIPS - C1
Introduction a la compilation Aperçu de la compilation / Assembleur MIPS - C1
 
TP5_2020.pdf
TP5_2020.pdfTP5_2020.pdf
TP5_2020.pdf
 
Cours 1 bases de matlab 2eme annees
Cours 1   bases de matlab 2eme anneesCours 1   bases de matlab 2eme annees
Cours 1 bases de matlab 2eme annees
 

Explication du micro

  • 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