Applet+équation+table de vérité

warlock68 5 Messages postés jeudi 2 avril 2015Date d'inscription 19 janvier 2017 Dernière intervention - 19 janv. 2017 à 15:24 - Dernière réponse : Whismeril 10592 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 17 décembre 2017 Dernière intervention
- 20 janv. 2017 à 22:39
Bonjour,

Besoin d'aide

Il s’agit de réaliser une Applet affichant graphiquement une table de vérité, a partir d'une ligne de commande.

L'utilisateur saisie son équation (ex : (A . B)+C) et l'applet l'affiche sous forme de tableau.
Ce programme doit analyser l'expression entrée au clavier en utilisant l’algorithme de l’arbre, utiliser l‘algèbre de Boole et créer une table de vérité pour pouvoir l'afficher.

L‘analyse de l'expression ainsi que les notions de l'algèbre de Boole sont détaillées dans la partie “généralités”, et la partie "Descriptif du programme" qui explique aussi l'affichage de la table de vérité.

DESCRIPTIF DU PROGRAMME

Nous avons la classe appli-applet qui lance l'application .

=> mainframe, cadre 1, cadre1_aboutbox, cadre2_aboutbox.

Nous allons nous intéresser aux classes les plus importantes, Equation et EquationProcess.

Equation réalise la construction de l‘arbre, en effet, le constructeur Equation sépare la chaîne de saisie contenue dans StrEquation en branche (équation de droite et équation de gauche) a la rencontre d'un opérateur, ensuite on réapplique Equation sur les deux équations filles (gauche et droite) provenant de l'équation mère (équation de saisie) pour obtenir la récurssivité et ainsi construire l'arbre jusqu'aux feuilles.

On détecte les feuilles en testant si l'équation ne contient qu'un seul caractère.

Pour séparer une équation en deux parties, on fait appel a la méthode GetLeftEquation qui compte le nombre de parenthèses ouvertes et fermées afin de choisir le bon opérateur il y a hiérarchisation des opérateurs.

EX. : (A.B)+C on ne prend pas en compte le mais le. Mais le + car le nombre de parenthèses est égal a zéro .

Une fois qu'on a détecté le bon opérateur, les caractères précédents (qui ont été lus) forment l'équation de gauche. On utilise la méthode TrimPara pour supprimer les parenthèses de début et de fin de l‘équation de gauche.

Pour détecter l'opérateur on utilise la méthode CharAt dans le constructeur pour extraire l'opérateur de la chaîne de saisie, l'index de l'opérateur étant donné par la longueur de l‘équation de gauche. Les caractères d'après forment l’équation de droite à qui on applique la méthode TrimPara.

Pour l'opérateur unaire (la négation : !) on réalise un test dans le constructeur Equation pour le détecter, s'il s‘agit bien de cet opérateur, on modifie la valeur d'un booléen qui inversera le résultat de l'équation (dans ce cas il est a true). On indique l‘opérateur suivant a la Variable cOperator pour continuer l'arbre.

La méthode GetResult permet de calculer le résultat en fonction de l'opérateur (elle renvoie les exceptions nécessaire si l‘opérateur est non connue), on remonte ainsi l‘arbre en partant des feuilles. Cette méthode (GetResult) est utilisée dans la classe EqualionProcess pour afficher le résultat. La méthode Trim () qui utilise la classe ‘StringTokenizer' sert a effacer les espaces qui pourraient exister entre les variables et les opérateurs .

La classe EquationProcess est la deuxième classe importante du programme, elle se charge de construire la table de vérité et d‘afficher le résultat de “l'équation mère".

On définie tout d’abord en static une properties listVariableValues qui va contenir les propriétés des variables soit 0 ou 1.

On teste la longueur de la chaîne de saisie strEquation, Sl elle est égalé a O on renvoie un message d'erreur : “entrer une équation"

On construit un vecteur list qui va contenir toutes les variables tapées à la saisie. Pour cela on utilise la méthode GetAllVariable qui lie strEquation pour extraire (grâce a la méthode CharAt) uniquement les caractères. Le caractère lu doit être compris entre ’A' et ‘Z’.

Remarque on ne traite que les majuscules car on applique la méthode ToUpperCase

On utilise ensuite la méthode ExistInList pour savoir si le caractère existe déjà dans la list..


Afin de construire la table de vérité, on écrit la première ligne de la table de vérité :

A l B Il : solution, en fonction du nombre de variables saisies.

On crée ensuite la table de vérité de la taillé : (nbredevariables. strVariables)².str Variables Values va contenir les lignes (de gauche) de la table de vérité que l'on convertie en binaire grâce a la méthode ToBinaryString

EX : 2 = l O

Il faut ensuite rajouter des O. En effet si on a trois variables, pour la ligné numéro 2 on a 10 et nous on veut 010

Ensuite on lit ligne a ligne la table de vérité et on donne les propriétés aux Variables dans ListVariablesValues, celui-ci contient des true et false qu'on convertie en O et l dans StrReturn pour les afficher.

Enfin on applique GetResult à e (que l‘on défini comme étant équation e = new Equation), et on retourne le résultat dans StrReturn pour qu'il soit affiché dans le textfield.
Afficher la suite 

1 réponse

Répondre au sujet
Whismeril 10592 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 17 décembre 2017 Dernière intervention - 20 janv. 2017 à 22:39
0
Utile
Bonsoir

ben tu sais tu ce qu'il y a à faire....

Pour rappel
http://www.commentcamarche.net/faq/10925-demander-de-l-aide-pour-vos-exercices-sur-ccm
Commenter la réponse de Whismeril

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.