Voici la surprise que j'avais promis, en un peu moins de 90 lignes de code Calculatrice Linotte version : 1.0.1
J'ai utilisé comme point de départ, le programme placement_grille.liv dans b_tutoriels/h_interfaces_utilisateur
Il semble qu'il y a quatre façons de faire la Calculatrice Linotte :
- soit par un système de lecture des données de l'écran ;
- soit avec un système de mémoire tampon ;
- soit avec un système de base de donnée ;
- ou soit en combinant les trois systèmes.
La version 1.0.1 est ma première version de calculatrice fonctionnelle.
Elle est développée sur la combinaison d'un système de lecture des données de l'écran de la calculatrice,
d'un système de base de donnée rudimentaire utilisant le conduit,
et d'un système de mémoire tampon.
Reste à ajouter :- une fonction de correction ;
- une fonction de remise à zéro ;
- et un système de gestion des erreurs.
Code:
/*Calculatrice Linotte version : 1.0.1
auteur : XP Rico
date : le 26 octobre 2015
J'ai utilisé comme point de départ, le programme placement_grille.liv dans b_tutoriels/h_interfaces_utilisateur
Il semble qu'il y a quatre façons de faire la Calculatrice Linotte :
- soit par un système de lecture des données de l'écran ;
- soit avec un système de mémoire tampon ;
- soit avec un système de base de donnée ;
- ou soit en combinant les trois systèmes.
La version 1.0.1 est ma première version de calculatrice fonctionnelle.
Elle est développée sur la combinaison d'un système de lecture des données de l'écran de la calculatrice,
d'un système de base de donnée rudimentaire utilisant le conduit,
et d'un système de mémoire tampon.
Reste à ajouter :
- une fonction de correction ;
- une fonction de mise zéro ;
- et un système de gestion des erreurs.
*/
globale
formulaire est un formulaire, titre vaut "Calculatrice Linotte avec un gestionnaire de placement", largeur vaut 250, hauteur vaut 200
panneau est un panneau
calculatrice est une grille, largeur vaut 1, hauteur vaut 2
écran est un champ, taille vaut 30, texte vaut ""
touches est une grille, largeur vaut 4, hauteur vaut 3
l1 est un bouton, texte vaut "1", couleurfond vaut "bleu céleste", couleurtexte vaut "bleu france", icône vaut "", infobulle vaut "1"
l2 est un bouton, texte vaut "2", couleurfond vaut "bleu céleste", couleurtexte vaut "bleu france", icône vaut "", infobulle vaut "2"
l3 est un bouton, texte vaut "3", couleurfond vaut "bleu céleste", couleurtexte vaut "bleu france", icône vaut "", infobulle vaut "3"
l4 est un bouton, texte vaut "4", couleurfond vaut "bleu céleste", couleurtexte vaut "bleu france", icône vaut "", infobulle vaut "4"
l5 est un bouton, texte vaut "5", couleurfond vaut "bleu céleste", couleurtexte vaut "bleu france", icône vaut "", infobulle vaut "5"
l6 est un bouton, texte vaut "6", couleurfond vaut "bleu céleste", couleurtexte vaut "bleu france", icône vaut "", infobulle vaut "6"
l7 est un bouton, texte vaut "7", couleurfond vaut "bleu céleste", couleurtexte vaut "bleu france", icône vaut "", infobulle vaut "7"
l8 est un bouton, texte vaut "8", couleurfond vaut "bleu céleste", couleurtexte vaut "bleu france", icône vaut "", infobulle vaut "8"
l9 est un bouton, texte vaut "9", couleurfond vaut "bleu céleste", couleurtexte vaut "bleu france", icône vaut "", infobulle vaut "9"
l0 est un bouton, texte vaut "0", couleurfond vaut "bleu céleste", couleurtexte vaut "bleu france", icône vaut "", infobulle vaut "0"
lp est un bouton, texte vaut "+"
lm est un bouton, texte vaut "-"
lf est un bouton, texte vaut "*"
ld est un bouton, texte vaut "/"
lé est un bouton, texte vaut "=", touche vaut "=", couleurfond vaut "vert", couleurtexte vaut "ébène", icône vaut "", infobulle vaut "="
lv est un bouton, texte vaut ".", touche vaut ".", couleurfond vaut "bleu céleste", couleurtexte vaut "bleu france", icône vaut "", infobulle vaut ","
lc est un bouton, texte vaut "c", touche vaut "c", couleurfond vaut "noir", couleurtexte vaut "rouge vif", icône vaut "", infobulle vaut "Effacer"
sortien est un texte
conteneur est un conduit
localisation est un texte valant "c:/temp/Calculatrice_linotte.txt"
Bd Calculatrice Linotte :
conteneur.enregistrer(localisation)
conteneur.fermer()
parcours formulaire
formulaire :
ajoute calculatrice dans formulaire // A faire en premier !
ajoute écran dans calculatrice
ajoute panneau dans calculatrice
ajoute touches dans panneau // A faire en premier !
ajoute l1 & l2 & l3 & lc & lp & lm & l4 & l5 & l6 & lv & lf & ld & l7 & l8 & l9 & l0 & lé dans panneau
fais réagir lc à "clic souris" pour correction
fais réagir Formulaire à "clic souris" pour Terminer
fais réagir lp & lm & lf & ld & lé à "clic souris" pour opération arithmétique
fais réagir lé à "clic souris" pour égal
fais réagir l1 & l2 & l3 & l4 & l5 & l6 & l7 & l8 & l9 & l0 & lv à "clic souris" pour ajouter chiffre
fais réagir lp & lm & lf & ld à "clic souris" pour ajouter signe
tant que vrai temporise
ajouter chiffre :
* b est un bouton
début
texte de écran vaut texte de écran + texte de b
reviens
ajouter signe :
* b est un bouton
début
si (texte de écran) = "",
texte de écran vaut "0 " + texte de b
sinon texte de écran vaut texte de écran + " " + texte de b + " "
reviens
opération arithmétique :
tampon est un texte // solution reprise de conduit_structure.liv
début
si (texte@écran) = "", texte@écran vaut "0" // évite que le tampon soit égal à néant
tampon = texte@écran
sortien vaut sortien + " " + tampon
conteneur.enregistrer(localisation)
conteneur.écrire(texte@écran)
conteneur.fermer()
reviens
/* On va simplifier le code en réunissant, en une seule, les fonctions :
- d'addition, de soustraction, de multiplication et de division.
addition :
tampon est un texte // solution reprise de conduit_structure.liv
début
si (texte@écran) = "", texte@écran vaut "0" // évite que le tampon soit égal à néant
tampon = texte@écran
affiche tampon //affichage de contrôle pour la construction à effacer plus tard
// variante pour effacer l'écran entre deux opération : ligne : texte de écran vaut ""
sortien vaut sortien + " " + tampon
parcours écriture
reviens
soustraction :
tampon est un texte // solution reprise de conduit_structure.liv
début
si (texte@écran) = "", texte@écran vaut "0"
tampon = texte@écran
affiche tampon //affichage de contrôle pour la construction à effacer plus tard
// variante pour effacer l'écran entre deux opération : ligne : texte de écran vaut ""
sortien vaut sortien + " " + tampon
parcours écriture
reviens
multiplication :
tampon est un texte // solution reprise de conduit_structure.liv
début
si (texte@écran) = "", texte@écran vaut "0" // évite que le tampon soit égal à néant
tampon = texte@écran
affiche tampon //affichage de contrôle pour la construction à effacer plus tard
// variante pour effacer l'écran entre deux opération : ligne : texte de écran vaut ""
sortien vaut sortien + " " + tampon
parcours écriture
reviens
division:
tampon est un texte // solution reprise de conduit_structure.liv
début
si (texte@écran) = "", texte@écran vaut "0" // évite que le tampon soit égal à néant
tampon = texte@écran
affiche tampon //affichage de contrôle pour la construction à effacer plus tard
// variante pour effacer l'écran entre deux opération : ligne : texte de écran vaut ""
sortien vaut sortien + " " + tampon
parcours écriture
reviens
*/
égal :
calcul est un texte
début
calcul prend texte@écran
évalue calcul
texte de écran vaut "" // pour effacer l'écran entre deux opérations
texte de écran prend calcul // affiche le résultat sur l'écran de la calculatrice
reviens
correction :
// partie non fonctionnelle
Terminer :
termine
J'aurais préféré la terminer complément, mais autant ne pas faire durer le suspens trop longtemps
Pour faire une comparaison avec d'autre programme, voir :
http://www.tutomobile.fr/faire-une-application-calculette-tutoriel-iphone-n%C2%B04/06/08/2010/
http://www.tutomobile.fr/faire-une-application-calculatrice-tuto-android-n%C2%B06/30/06/2010/
https://openclassrooms.com/courses/apprenez-a-programmer-en-java/tp-une-calculatrice
Et voilà mon premier défi relevé...
Dernière édition par XP Rico le Mar 27 Oct - 12:47, édité 1 fois