MISE SOUS FORME FNN D'UNE NOTATION POLONAISE

verdy_p Messages postés 202 Date d'inscription vendredi 27 janvier 2006 Statut Membre Dernière intervention 29 janvier 2019 - 8 mars 2010 à 03:11
rinbowfish Messages postés 2 Date d'inscription lundi 8 mars 2010 Statut Membre Dernière intervention 30 août 2010 - 9 mars 2010 à 17:09
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/51383-mise-sous-forme-fnn-d-une-notation-polonaise

rinbowfish Messages postés 2 Date d'inscription lundi 8 mars 2010 Statut Membre Dernière intervention 30 août 2010
9 mars 2010 à 17:09
OK le programme marche ,
seulement le code est un peu mélangé,essaye de Commenter et bien structurer Ton code
verdy_p Messages postés 202 Date d'inscription vendredi 27 janvier 2006 Statut Membre Dernière intervention 29 janvier 2019
8 mars 2010 à 23:10
Tu as toujours partout la même faute irritante: tu écris "-uer" au lieu de "-eur".
et "EQUIVALANCE" au lieu de "EQUIVALENCE".

Et pourquoi diable n'as-tu pas séparé le code gérant l'interface du code transformant les expressions dans des classes séparées ? (je parle de Form1.cs) Tout mélanger est une très mauvaise idée, le code contruisant les formulaires devrait juste pouvoir instancier une classe séparée pour faire le calcul et obtenir le ou les résultats.

Et faire ça avec des expressions régulières et des concaténations de chaines, je ne pense pas que ce soit très sûr comme méthode, ni très efficace. Avec une représentation en arbre tu aurais pu séparer l'analyse lexicale de la chaine entrée pour contrsuire l'arbre, faire toutes les transformations avec des branches d'arbes au lieu de chaines, et permettre d'autres représentations en résultat, notamment les notations infixes (formules classiques parenthésée) et postfixes (polonaise inversée). Et utiliser des opérateurs notés de façon plus conventionnelle que "v" (une lettre pour "ou") et "|" (pour "non", vraiment confondu avec "ou").

Note que les notations "mathématiques" du "ou" et du "et" n'utilise pas un "v", ce sont des coins d'angles. En suivant ta logique, il aurait fallu utiliser de façon homogène "^" pour noter le "et", mais tu as utilisé "&"; si tu utilises juste les caractères de l'ASCII, autant prendre les opérateurs classiques du C/C++/C#, jamais les lettres simples. Sinon, ouvre Charmap, sélectionne une police Unicode, et va chercher les vrais caractères opérateurs mathématiques, pour les coins d'angles, et les flèches)

Ok ton programme marche, mais il n'y a pas grand chose à en faire d'autre dans l'état, et dans cet état il ne servira pas à grand monde.

Ton prof de TP te redira les mêmes choses si tu lui montres ce programme dans l'état: et il ne pardonnera pas l'absence de séparation de l'interface et du traitement, et les fautes d'orthographe répétées qui sautent aux yeux aussi bien dans le code que dans l'interface.
cs_zakizaki7 Messages postés 12 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 29 novembre 2009
8 mars 2010 à 15:57
j'ai Uploader le zip une autre fois , tu essaye et tu me répond.
verdy_p Messages postés 202 Date d'inscription vendredi 27 janvier 2006 Statut Membre Dernière intervention 29 janvier 2019
8 mars 2010 à 15:19
Télécharge le fichier que tu as versé ici, tu verras que ce n'est pas ce que tu crois, et pas ce que tu as en ce moment sur ton PC.
Attention à la virtualisation des fichiers sur Windows Vista et Seven: quand sur ton PC tes applis travaillent localement, elles ne modifient pas forcément le fichier à l'endroit que tu crois, mais une copie virtuelle, si tu as créé initialement ton fichier ZIP dans un dossier protégé du système, mais ton navigateur transmettra uniquement la première version (non virtualisée).
Regarde d'ailleurs le source sur ce site même, c'est évident: le fichier "Operator.cs" ne fait qu'afficher ses très variables, et n'a aucune autre méthode utile, le fichier "Program.cs" ne fait que grouper l'initialisation des composants, et le reste c'est le code construisant le formulaire et il n'y a aucun gestionnaire d'évènement.
Comme ton fichier ZIP ne contient aucun binaire exécutable non plus (peut-être a-t-il été filtré automatiquement par le site qui ne veut que du source), on n'a rien à se mettre sous la dent. Le reste ce sont des ressources et manifestes, ainsi que les fichiers ".sln" pour la construction du projet sous Visual Studio.
Tel qu'il est, ton ZIP ne fait rien d'autre que d'afficher une fenêtre avec un bouton et quelques éléments statiques.
Et je ne vois pas quel est l'intérêt des sous-dossiers et fichiers temporaires.
cs_zakizaki7 Messages postés 12 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 29 novembre 2009
8 mars 2010 à 14:54
êtes vous sur que tu n'a pas trouver le code qui transforme le <=> et => ??
essaye de taper => A B et tu va voir que ca marche ;) !
cs_zakizaki7 Messages postés 12 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 29 novembre 2009
8 mars 2010 à 14:44
quel est l'exemple que t'a essayer et il n'a pas marché ?
verdy_p Messages postés 202 Date d'inscription vendredi 27 janvier 2006 Statut Membre Dernière intervention 29 janvier 2019
8 mars 2010 à 14:33
Non ton code ne fonctionne pas du tout puisqu'il ne fait rien du tout à ce sujet, juste construie l'interface graphique. Ce que tu as envoyé ne contient pas ce que tu crois.

Et j'avais déjà compris le principe de la transformation de formules en notation polonaise.

Mais il était sans doûte plus utile d'utiliser les symboles plus conventionnels pour les opérateurs :
- "|" (ou "||" comme en C/C++/Java/C#...) au lieu de la lettre "v"
- "!" au lieu de "|" (qui prête à confusion)

Et de fournir une conversion entre les représentation en infixe (classique), préfixe (polonaise), et postfixe (polonaise inversée)

Mais il n'y a pas non plus le code réalisant la transformation des opérateurs "=>" (NOT OR) et "<=>" (NOT XOR) en opérateurs booléens classiques (AND, OR, NOT), il manque aussi le "^" (XOR).
Et il n'y a pas non plus le code transformat dans une des deux formes canoniques (d'ailleurs tu as choisi la forme la moins commmune, celle des sous-expressions liés par des "ou" uniquement, les sous expressions comprenant des termes simples liés par des "et", alors qu'en général on choisit plutôt l'autre forme).

La notation polonaise inversée est aussi en général plus facile à lire pour beaucoup, alors que la notation polonaise normale (préfixe) est plus adaptée à la programmation fonctionnelle.

En général on passe d'une forme à l'autre en construisant l'arbre syntaxique d'où on tire toutes les formes et dans lequel on peut effectuer toutes les transformations directement en parcourant l'arbre. Sans même transofmer l'arbre, toutes les notations peuvent être obtenues directement en parcourant l'arbre (y compris la notation infixe même si elle peut imposer d'ajouter des parenthèses pour respecter les priorités opératoires).

Mais dans l'état, ton programme ne fait pas ce qui est dit. Je le répète: c'est une conquille vide, et tu as du te tromper de fichier.
cs_zakizaki7 Messages postés 12 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 29 novembre 2009
8 mars 2010 à 11:49
salut
tout d'abord merci pour le passage et les commentaires
le programme fonctionne correctement(c'est pour les formules en logique propositionnelles et non pas pour les formules mathématiques)
peut être vous n'avez pas bien compris son utilité :
parce que on doit faire entrer l'expression sous notation polonaise et le résultat aussi va être sous notation polonaise:
par exemple: "A=>B" a notation polonaise est "=> A b , alors la forme FNN de cette formule est " v | a b " (ou non A B) vu que la formule résultante doit aussi être en notation polonaise.

pour le code : je vais essayer de faire une Maj et mettre plus de commentaires .
verdy_p Messages postés 202 Date d'inscription vendredi 27 janvier 2006 Statut Membre Dernière intervention 29 janvier 2019
8 mars 2010 à 03:17
Et au delà de ça, le peu de code écrit manuellement est très mal écrit, et présente une orthographe... hmm... désastreuse : l'auteur ne se relit pas du tout.
L'interface graphique présentée ici n'est même pas un modèle du genre.

Aucun intérêt, même pas pour apprendre puisqu'il n'explique rien non plus sur le sujet évoqué ici dans la description.
verdy_p Messages postés 202 Date d'inscription vendredi 27 janvier 2006 Statut Membre Dernière intervention 29 janvier 2019
8 mars 2010 à 03:11
Ce programme est une coquille vide qui ne fait pas ce qui est décrit: il se contente seulement de construire l'interface GUI (presque entièrement construite de façon automatique avec l'éditeur de formulaire).
Tout le code permettant de faire le calcul effectif est manquant.
Et au pssage le ZIP n'est même pas nettoyé correctement de ses fichiers temporaires de travail dans l'EDI.
Si vous exécutez ça vous obtenez un programme qui ne fait rien d'autre que d'afficher l'interface avec une expression par défaut (figée en dur) dans le cadre en haut, et le bouton "Traduire" ne fait strictement rien.

Visiblement l'auteur a téléversé une mauvaise version, ici une vieille version du squelette initial, pas le programme fonctionnel.
Rejoignez-nous