Aide pour exercice algo

Fermé
Billy00 Messages postés 13 Date d'inscription mercredi 15 juin 2016 Statut Membre Dernière intervention 19 mars 2017 - 19 mars 2017 à 18:05
jordane45 Messages postés 38346 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 décembre 2024 - 19 mars 2017 à 21:26
Bonjour à toutes et à tous,

J'aimerai avoir de l'aide pour un exercice que je dois faire. Etant donné que je ne suis pas développeur à la base, je vous avouerai que je galère actuellement pour terminer l'exercice.
Si une âme charitable pourrait m'éclaircir cette route sinueuse et si sombre, cela pourrait m'être vraiment précieux.

Voici l'énoncer de l'exercice :

EX : si (( a = b ) OU ( nbtours < c + 2)) ET (( non ok ) ET (( a > 0 ) OU ( x < y + 5 ))) alors

Tout interpréteur (ou machine virtuelle) comporte un module qui évalue dynamiquement la "valeur" d'une expression logique (utilisée dans les structures de contrôles de type 'if ( …. )' ou 'while (…)). Ce module détermine si l'expression entre parenthèse est "vraie" ou "fausse".

On considère que l'expression à évaluer est fournie à ce module sous la forme d'une collection d'éléments syntaxiques de type chaine.

Dans l'exemple précédent, 'si', '(', 'a', '=', 'b', ')', 'OU', 'nbtours', '+', 'non', 'ok', etc. sont des éléments syntaxiques.

On considère par ailleurs que l'interpréteur maintient en permanence plusieurs collections d'objets:
- Une collection contenant toute les variables déclarées dans le programme avec leur nom, leur type, et leur valeur courante (leur valeur au moment de l'évaluation). Il est possible d'accéder à ces attributs via des accesseurs de type getXXX () .
- Une collection contenant la liste de tous les opérateurs reconnus par le langage ( '+', '-', '<', '=', 'ET', 'OU', etc.)

On dispose par ailleurs de toutes les fonctions de manipulation de chaines contenues dans la classe Chaine


Voici le travail à réaliser :

Pour évaluer une telle expression les interpréteurs utilisent souvent un mécanisme basé sur la notion d'arbre :
Un module analyse l'expression et construit un arbre dont les nœuds internes sont les différents opérateurs et les nœuds feuilles sont les différentes variables contenues dans l'expression.
Une fois l'arbre constitué, un deuxième module parcours l'arbre et fournit, à la fin du parcours, la valeur logique de l'expression.


Voici le résultat attendu :



Merci à vous d'avance pour votre aide.

1 réponse

jordane45 Messages postés 38346 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 décembre 2024 4 718
19 mars 2017 à 21:26
0