Bon exemple de calculatrice

Messages postés
13843
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
21 octobre 2019
- - Dernière réponse : Whismeril
Messages postés
13843
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
21 octobre 2019
- 4 juil. 2019 à 22:48
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/102400-bon-exemple-de-calculatrice

Afficher la suite 
pascal16m
Messages postés
67
Date d'inscription
jeudi 19 juin 2003
Statut
Membre
Dernière intervention
13 juillet 2019
-
Wello,
je trouve le code multi-interface très cool m^me si la saisie en mode de commande est pas user friendly.

La saisie par caractère, ça donne des nombres très bizarres, du genre 4.6649999997 au lieu de 4.6645

Coté programmation, la sélection de la touche ne fait pas la différence entre un opérateur et un chiffre, si on rajoute des boutons on va toujours essayer de les comprendre comme un chiffre. Quand aux exceptions, pour moi, ce ne sont que des infos, pas des exceptions système (très lourdes car gérée comme telles par windows et planter le programme).
Whismeril
Messages postés
13843
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
21 octobre 2019
312 > pascal16m
Messages postés
67
Date d'inscription
jeudi 19 juin 2003
Statut
Membre
Dernière intervention
13 juillet 2019
-
Bonsoir
m^me si la saisie en mode de commande est pas user friendly.

Le but étant de montrer un code réutilisable, je ne me suis pas attardé sur le user-friendly.

La saisie par caractère, ça donne des nombres très bizarres, du genre 4.6649999997 au lieu de 4.6645
ça n'est pas un nombre très bizarre, c'est un nombre à virgule flottante à double précision. 4.6645 n'existe pas en double, pour le voir tel quel, il faut utiliser un artifice d'affichage (un arrondi par exemple)
Plus de détails dans cette discussion https://www.commentcamarche.net/forum/affich-35846831-erreur-de-calcul#3 (pas seulement ma réponse, mais celles de Dalfab et Revivax aussi)

Coté programmation, la sélection de la touche ne fait pas la différence entre un opérateur et un chiffre, si on rajoute des boutons on va toujours essayer de les comprendre comme un chiffre.

Je ne comprends pas ce que tu veux dire, tu as trouvé un bug?
J'ai écrit ce code en quelques heures, l'ai testé comme j'ai pu et corrigé les bugs que j'ai trouvé, mais s'il en reste peux tu les décrire.
Si ce n'est pas ça peux tu être plus explicite?

Quand aux exceptions, pour moi, ce ne sont que des infos, pas des exceptions système (très lourdes car gérée comme telles par windows et planter le programme).
Il est évident que traiter les "erreurs" de saisie autrement que par des exceptions serait bien mieux:
-valeur de retour sur les méthodes
-message
-etc...
Mais là encore, ce n'était pas le but, ce qui est traité par une exception est en dehors du champs de l'exemple que je souhaitais montrer.
pascal16m
Messages postés
67
Date d'inscription
jeudi 19 juin 2003
Statut
Membre
Dernière intervention
13 juillet 2019
-
Wello,
VS s'améliore, hier je ne pouvais pas ouvrir l'interface winform, aujourd'hui je peux (pas mal de bugs dans la version 2019 avec de fausses erreurs signalées qui disparaissent ensuite, la gestion 'en tâche de fond' a pas l'air top).

je parlais du "default: calc.SaisieChiffre(texte);" dans le WPF

Si, par évolution, un bouton renvoie une mauvaise valeur, la valeur sera interprétée comme un chiffre qui générera une erreur à un niveau différent du programme. C'est juste pour générer l'erreur au bon niveau.



pour "du genre 4.6649999997 au lieu de 4.6645 "
c'est quand on continue que ça ressemble bugger car toutes les décimales bougent, ce qui me semble bizarre.
essaies avec 0 . 1 2 3 4 5 6 7 8 9 1 2 3
quand on tape le second 1, ça bug il me semble
Whismeril
Messages postés
13843
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
21 octobre 2019
312 -
Bonsoir
je n'avais pas pris le temps de te répondre, par contre je viens de mettre à jour le source.

pas mal de bugs dans la version 2019 avec de fausses erreurs signalées qui disparaissent ensuite,

Je suppose que tu utilises Community, sa gestion du cache est imparfaite. Souvent, il "suffit" d'éteindre VS, de supprimer le ou les exe et les éventuelles dll générées par ton projet, de supprimer le répertoire obj, de relancer VS et de régénérer la solution.

je parlais du "default: calc.SaisieChiffre(texte);" dans le WPF

Si, par évolution, un bouton renvoie une mauvaise valeur, la valeur sera interprétée comme un chiffre qui générera une erreur à un niveau différent du programme. C'est juste pour générer l'erreur au bon niveau.

Dans la mise à jour, j'ai enlevé la levée d'exception, je l'ai remplacée par des méthodes booléennes et un évènement.

pour "du genre 4.6649999997 au lieu de 4.6645 "
c'est quand on continue que ça ressemble bugger car toutes les décimales bougent, ce qui me semble bizarre.
essaies avec 0 . 1 2 3 4 5 6 7 8 9 1 2 3
quand on tape le second 1, ça bug il me semble

Je n'ai pas envie d'expliquer 50 fois la même chose, dans ma première réponse, je t'ai mis un lien vers un discussion où a été expliquée en détail le pourquoi du comment.
Et je te l'ai déjà dit pour afficher 4.6645, il faut utiliser un artifice d'affichage, mais j'ai implémenté un arrondi dans la mise à jour.
pascal16m
Messages postés
67
Date d'inscription
jeudi 19 juin 2003
Statut
Membre
Dernière intervention
13 juillet 2019
-
premier essai en winform.
plantage avec le nombre 0.123456789123
-> disparition du 8 quand on tape le second 1
-> plantage quand on tape le 2
donc le problème qui n'existe pas n'est pas résolu.