Telechargé par johnq14008

Compte rendu TP 2 Automates et Langages (ISTFALEN et DIOUF)[1]

publicité
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 :
Téléchargement