Compte rendu TP 2 Ahmed Istfalen Léo Emmanuel Diouf ICY-FISE 3A Diagramme des classes : Transition, Etat, Automate ________________________ | Transition | |------------------------| | - etiquette: char | | - depart: Etat | | - arrivee: Etat | | - etatInitPile: String| | - etatFinalPile: String| |------------------------| | + Transition(...) | | + getetatInitPile(): String | | + getetatFinalPile(): String| | + getEtiquette(): char | | + getDepart(): Etat | | + getArrivee(): Etat | | + setEtatInitialPile(String): void | | + setEtatFinalPile(String): void | | + setEtiquette(char): void | | + setDepart(Etat): void | | + setArrive(Etat): void | | + toString(): String | |________________________| _____________ | Etat | |------------------------| | - nom: String | | - init: boolean | | - finall: boolean | |------------------------| | + Etat(String) | | + getNom(): String | | + getInit(): boolean | | + getFinall(): boolean | | + setNom(String): void | | + setInit(boolean): void | | + setFinall(boolean): void | | + toString(): String | |_________________ ________________________ | Automate | |------------------------| | - alphabet: ArrayList<Character> | | - etats: ArrayList<Etat> | | - transitions: ArrayList<Transition> | |------------------------| | + Automate(String) | | + afficherContenu(): void | | + appartient(String): boolean | | + getAlphabet(): ArrayList<Character> | | + setAlphabet(ArrayList<Character>): void | | + getEtats(): ArrayList<Etat> | | + setEtats(ArrayList<Etat>): void | | + getTransitions(): ArrayList<Transition> | | + setTransitions(ArrayList<Transition>): void | | + testNombres(String): void | | + main(String[]): void | |________________________| Test sur un automate à pile simple : a Z→X b X→0 b X→0 S0 0 Z→Z S1 0 Z →Z Résultat de tests de quelques mots pour cet automate : S2 Test sur l’automate de la question 3 (celui des expressions mathématiques) : (+,-,*,/) , X → X (+,-,*,/) , Z → Z 0,...9 , Z → Z 0,.., 9 , X → XX S 0,...9 , Z → Z 0,.., 9 , X → X S ), X→ epsilon S ), X→ epsilon (+,-,*,/) , X → X (+,-,*,/) , Z → Z S ( , X → XX (,Z→X Test sur l’automate des expressions mathématiques : Partie Optionnelle Pour l’évaluation des expressions mathématiques quand elles sont correctes nous avons écrit quelques fonctions permettant les calculs. Cependant il y’a quelques imperfections et certains cas où ça ne marche pas : • D’abord le calcul se fait de la gauche vers la droite on ne tiens donc pas compte des priorité sur les opérations par contre nous commençons toujours par celles entre parenthèses donc la priorité des parenthèses est respectée. • Les opérations ne marchent pas souvent quand y’a un signe moins car nos fonctions ne savent pas différencier le moins comme signe(négatif) et le moins comme opérande. • Pour l’opération de multiplication on ne peut pas juste mettre 5(45+9) par exemple on est obligé de mettre le signe(5*(45+9)) pour que le calcul puisse marcher. Ci-dessous la capture d’écran de quelques tests réalisés :