FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  GroupesGroupes  Connexion  
Derniers sujets
» Problème de compilateur.
par Pedro Alvarez Hier à 20:01

» COMPILATEUR V 0.9 beta 8 du 18 aout 2017
par Pedro Alvarez Hier à 19:54

» Pb 17 (en analyse): ITEM_SELECT ne fonctionne pas
par Jack Jeu 17 Aoû 2017 - 19:26

» Compilateur FBPano
par Mike Jeu 17 Aoû 2017 - 13:52

» un nouveau editeur panobasic
par Jean Claude Jeu 17 Aoû 2017 - 10:18

» Le compilateur.
par Pedro Alvarez Jeu 17 Aoû 2017 - 8:36

» Pb 16 (en analyse): ON_CLOSE plante à l'exécution
par Jack Mer 16 Aoû 2017 - 20:00

» Pb 15 (en analyse): TIMER_ON plante à l'exécution
par Jack Mer 16 Aoû 2017 - 19:58

» KGF_dll - nouvelles versions
par Yannick Dim 13 Aoû 2017 - 17:35

» probleme d'outil
par Yannick Dim 13 Aoû 2017 - 17:32

» Carte de France des régions
par Yannick Sam 12 Aoû 2017 - 21:33

» Pb 14 (en analyse): PRINT_LOCATE plante à l'exécution
par Jack Ven 11 Aoû 2017 - 22:37

» Petit avertissement [Mots réservés]
par papydall Ven 11 Aoû 2017 - 13:45

» Distances sur plan
par JL35 Jeu 10 Aoû 2017 - 21:29

» Tracé : Triangle, Carrée, Dents de scie, Sinusoïde redressée
par papydall Jeu 10 Aoû 2017 - 14:52

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Août 2017
LunMarMerJeuVenSamDim
 123456
78910111213
14151617181920
21222324252627
28293031   
CalendrierCalendrier

Partagez | 
 

 Une calculette basique pour les enfants

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Jean Claude

avatar

Nombre de messages : 4989
Age : 63
Localisation : 83 Var
Date d'inscription : 07/05/2009

MessageSujet: Une calculette basique pour les enfants   Dim 30 Aoû 2015 - 12:59

Comme c'est dit dans le titre, cette calculette est destinée aux enfants.
Elle ne fait qu'une opération à la fois.
L' opération et son résultat sont affichés dans un list pour que l'enfant puisse visualiser ce qu'il tape.
Les touches + - / * = , % sont contrôlées pour éviter les erreurs de saisie.

Code:
' Calculette_Basique par JC 08/2015
hide 0
application_title "CALCULETTE (Basique)"
message string$(51," ")+"INFORMATION"+chr$(13)+"Cette calculette est destinée aux enfants. Elle ne fait qu'un calcul à la fois."
Retourne_Dimension_Bandeau_Et_Bord()
Dim_Label()
Objets()
show 0
reinit()
END
rem ============================================================================
clics:
   if number_click=bt_CE% then reinit()
   if number_click=bt_divise% then divise()
   if number_click=bt_multipli% then multipli()
   if number_click=bt_moins% then moins()
   if number_click=bt_virg% then virg()
   if number_click=bt_PC% then PC()
   if number_click=bt_plus% then plus()
   if number_click=bt_egal% then egal()
   if number_click=bt_0% then bt_0()
   if number_click=bt_1% then bt_1()
   if number_click=bt_2% then bt_2()
   if number_click=bt_3% then bt_3()
   if number_click=bt_4% then bt_4()
   if number_click=bt_5% then bt_5()
   if number_click=bt_6% then bt_6()
   if number_click=bt_7% then bt_7()
   if number_click=bt_8% then bt_8()
   if number_click=bt_9% then bt_9()
RETURN

rem ============================================================================
SUB reinit()
  tour%=0 : nb=0 : nbP=0 : resultP=0 : nombre$="" : lig$="" : op$="" : mode$="" : inactive bt_PC%
  clear afi_result% : clear afi_op% : inactive bt_egal% : inactive_boutons() : active bt_virg%
END_SUB

' les 4 opérations
SUB divise()
    tour%=0 : active bt_virg%
    inactive_boutons() : op$="/" : clear afi_result% : lig$=lig$+" : " : affiche_lig()
    if mode$="" then nb=val(nombre$) : mode$="C" : nbP=nb : nb=0 : nombre$=""
END_SUB

SUB multipli()
    tour%=0 : active bt_virg% : active bt_PC%
    inactive_boutons() : op$="*" : clear afi_result% : lig$=lig$+" x " : affiche_lig()
    if mode$="" then nb=val(nombre$) : mode$="C" : nbP=nb : nb=0 : nombre$=""
END_SUB

SUB plus()
    tour%=0 : active bt_virg% : active bt_PC%
    inactive_boutons() : op$="+" : clear afi_result% : lig$=lig$+" + " : affiche_lig()
    if mode$="" then nb=val(nombre$) : mode$="C" : nbP=nb : nb=0 : nombre$=""
END_SUB

SUB moins()
    tour%=0 : active bt_virg% : active bt_PC%
    inactive_boutons() : op$="-" : clear afi_result% : lig$=lig$+" - " : affiche_lig()
    if mode$="" then nb=val(nombre$) : mode$="C" : nbP=nb : nb=0 : nombre$=""
END_SUB

' résultat
SUB egal()
  if numeric(nombre$)=1
     nb=val(nombre$)
  else
     if right$(nombre$,1)="%" and op$="*"
        nombre$=left$(nombre$,len(nombre$)-1) : nb=val(nombre$) : op$="%*"
     end_if
     if right$(nombre$,1)="%" and op$="+"
        nombre$=left$(nombre$,len(nombre$)-1) : nb=val(nombre$) : op$="%+"
     end_if
     if right$(nombre$,1)="%" and op$="-"
        nombre$=left$(nombre$,len(nombre$)-1) : nb=val(nombre$) : op$="%-"
     end_if
  end_if
  inactive bt_egal% : tour%=0 : active bt_virg%
  if op$="%*" then nbP=(nbP*nb)/100
  if op$="%+" then nbP=nbP+((nbP*nb)/100)
  if op$="%-" then nbP=nbP-((nbP*nb)/100)
  if op$="+" then nbP=nbP+nb
  if op$="-" then nbP=nbP-nb
  if op$="*" then nbP=nbP*nb
  if op$="/"
     if nb<>0
        nbP=nbP/nb
     else
        message "La division par zéro n'existe pas" : reinit() : EXIT_SUB
     end_if
  end_if
  clear afi_result% : lig$=lig$+" = "+str$(nbP) : affiche_lig()
  nb=0 : nombre$="" : mode$="F" : clear afi_result% : item_add afi_result%,str$(nbP)
END_SUB

' la touche %
SUB PC()
    inactive bt_PC%
    Ctrl_Mode() : nombre$=nombre$+"%" : affiche() : lig$=lig$+"%" : affiche_lig()
END_SUB

' la virgule
SUB virg()
    inactive bt_virg%
    if tour%=0 or mode$="F" then nombre$="0" : lig$=lig$+"0"
    nombre$=nombre$+"." : affiche() : lig$=lig$+"," : affiche_lig()
    if mode$="F"  then inactive bt_egal% :  mode$="" : lig$="0," : nbP=0 : affiche_lig()
END_SUB

' les chiffres
SUB bt_0()
    Ctrl_Mode() : nombre$=nombre$+"0" : affiche() : lig$=lig$+"0" : affiche_lig()
END_SUB
SUB bt_1()
    Ctrl_Mode() : nombre$=nombre$+"1" : affiche() : lig$=lig$+"1" : affiche_lig()
END_SUB
SUB bt_2()
    Ctrl_Mode() : nombre$=nombre$+"2" : affiche() : lig$=lig$+"2" : affiche_lig()
END_SUB
SUB bt_3()
    Ctrl_Mode() : nombre$=nombre$+"3" : affiche() : lig$=lig$+"3" : affiche_lig()
END_SUB
SUB bt_4()
    Ctrl_Mode() : nombre$=nombre$+"4" : affiche() : lig$=lig$+"4" : affiche_lig()
END_SUB
SUB bt_5()
    Ctrl_Mode() : nombre$=nombre$+"5" : affiche() : lig$=lig$+"5" : affiche_lig()
END_SUB
SUB bt_6()
    Ctrl_Mode() : nombre$=nombre$+"6" : affiche() : lig$=lig$+"6" : affiche_lig()
END_SUB
SUB bt_7()
    Ctrl_Mode() : nombre$=nombre$+"7" : affiche() : lig$=lig$+"7" : affiche_lig()
END_SUB
SUB bt_8()
    Ctrl_Mode() : nombre$=nombre$+"8" : affiche() : lig$=lig$+"8" : affiche_lig()
END_SUB
SUB bt_9()
    Ctrl_Mode() : nombre$=nombre$+"9" : affiche() : lig$=lig$+"9" : affiche_lig()
END_SUB
SUB Ctrl_Mode()
    if mode$="F" then inactive bt_egal% : mode$="" : lig$="" : nbP=0 : affiche_lig()
    if mode$="C" then active bt_egal% : inactive_boutons()
    if mode$="" then active_boutons()
    tour%=tour%+1
END_SUB
' l'affichage
SUB affiche()
    clear afi_result% : item_add afi_result%,nombre$
END_SUB
SUB affiche_lig()
    clear afi_op% : item_add afi_op%,lig$
END_SUB
' contrôle des boutons
SUB inactive_boutons()
    inactive bt_divise% : inactive bt_multipli% : inactive bt_moins% : inactive bt_plus%
END_SUB
SUB active_boutons()
    active bt_divise% : active bt_multipli% : active bt_moins% : active bt_plus%
END_SUB
rem ============================================================================
SUB Dim_Label()
    dim no%,tour%
    dim nb,nbP,resultP
    dim virgul$,nombre$,lig$,op$,mode$
    virgul$="."
    dim afi_result%,afi_op%
    dim bt_CE%,bt_divise%,bt_multipli%,bt_moins%,bt_virg%,bt_PC%,bt_plus%,bt_egal%
    dim bt_0%,bt_1%,bt_2%,bt_3%,bt_4%,bt_5%,bt_6%,bt_7%,bt_8%,bt_9%
    label fin,clics
END_SUB
' ------------------------------------------------------------------------------
SUB Objets()
    ' Form 0
    border_small 0 : caption 0,"CALCULETTE (Basique)" : width 0,400
    height 0,302 : width 0,187 : top 0,(screen_y/2)-(height(0)/2) : left 0,(screen_x/2)-(width(0)/2)
    color 0,200,240,255
    ' Afficheurs
    no%=no%+1 : afi_op%=no% : list no% : parent no%,0
                ' font_name no%,"DejaVu Sans Mono"
                width no%,width(0)-(bord%*2)-8 : left no%,4 : height no%,20 : top no%,5
    no%=no%+1 : afi_result%=no% : list no% : parent no%,0
                ' font_name no%,"DejaVu Sans Mono"
                font_bold no% : font_size no%,14
                width no%,width(0)-(bord%*2)-8 : left no%,4 : height no%,30 : top no%,top(afi_op%)+height(afi_op%)+2
    ' les boutons
    ' la première rangée
    no%=no%+1 : bt_CE%=no% : button no% : parent no%,0 : width no%,40 : height no%,40
                  font_name no%,"DejaVu Sans Mono" : font_bold no% : font_size no%,18 : caption no%,"C"
                  top no%,top(afi_result%)+height(afi_result%)+2 : left no%,left(afi_result%)
                  on_click no%,clics
    no%=no%+1 : bt_divise%=no% : button no% : parent no%,0 : width no%,40 : height no%,40
                  font_name no%,"DejaVu Sans Mono" : font_bold no% : font_size no%,18 : caption no%,"/"
                  top no%,top(afi_result%)+height(afi_result%)+2 : left no%,left(bt_CE%)+width(bt_CE%)+1
                  on_click no%,clics
    no%=no%+1 : bt_multipli%=no% : button no% : parent no%,0 : width no%,40 : height no%,40
                  font_name no%,"DejaVu Sans Mono" : font_bold no% : font_size no%,18 : caption no%,"*"
                  top no%,top(afi_result%)+height(afi_result%)+2 : left no%,left(bt_divise%)+width(bt_divise%)+1
                  on_click no%,clics
    no%=no%+1 : bt_moins%=no% : button no% : parent no%,0 : width no%,40 : height no%,40
                  font_name no%,"DejaVu Sans Mono" : font_bold no% : font_size no%,18 : caption no%,"-"
                  top no%,top(afi_result%)+height(afi_result%)+2 : left no%,left(bt_multipli%)+width(bt_multipli%)+1
                  on_click no%,clics
    ' la deuxième rangée
    no%=no%+1 : bt_7%=no% : button no% : parent no%,0 : width no%,40 : height no%,40
                  font_name no%,"DejaVu Sans Mono" : font_bold no% : font_size no%,18 : caption no%,"7"
                  top no%,top(afi_result%)+height(afi_result%)+height(bt_CE%)+2 : left no%,left(bt_CE%)
                  on_click no%,clics
    no%=no%+1 : bt_8%=no% : button no% : parent no%,0 : width no%,40 : height no%,40
                  font_name no%,"DejaVu Sans Mono" : font_bold no% : font_size no%,18 : caption no%,"8"
                  top no%,top(afi_result%)+height(afi_result%)+height(bt_CE%)+2 : left no%,left(bt_7%)+width(bt_7%)+1
                  on_click no%,clics
    no%=no%+1 : bt_9%=no% : button no% : parent no%,0 : width no%,40 : height no%,40
                  font_name no%,"DejaVu Sans Mono" : font_bold no% : font_size no%,18 : caption no%,"9"
                  top no%,top(afi_result%)+height(afi_result%)+height(bt_CE%)+2 : left no%,left(bt_8%)+width(bt_8%)+1
                  on_click no%,clics
    ' la troisième rangée
    no%=no%+1 : bt_4%=no% : button no% : parent no%,0 : width no%,40 : height no%,40
                  font_name no%,"DejaVu Sans Mono" : font_bold no% : font_size no%,18 : caption no%,"4"
                  top no%,top(afi_result%)+height(afi_result%)+(height(bt_CE%)*2)+2 : left no%,left(bt_7%)
                  on_click no%,clics
    no%=no%+1 : bt_5%=no% : button no% : parent no%,0 : width no%,40 : height no%,40
                  font_name no%,"DejaVu Sans Mono" : font_bold no% : font_size no%,18 : caption no%,"5"
                  top no%,top(afi_result%)+height(afi_result%)+(height(bt_CE%)*2)+2 : left no%,left(bt_8%)
                  on_click no%,clics
    no%=no%+1 : bt_6%=no% : button no% : parent no%,0 : width no%,40 : height no%,40
                  font_name no%,"DejaVu Sans Mono" : font_bold no% : font_size no%,18 : caption no%,"6"
                  top no%,top(afi_result%)+height(afi_result%)+(height(bt_CE%)*2)+2 : left no%,left(bt_9%)
                  on_click no%,clics
    ' quatrième rangée
    no%=no%+1 : bt_1%=no% : button no% : parent no%,0 : width no%,40 : height no%,40
                  font_name no%,"DejaVu Sans Mono" : font_bold no% : font_size no%,18 : caption no%,"1"
                  top no%,top(afi_result%)+height(afi_result%)+(height(bt_CE%)*3)+2 : left no%,left(bt_4%)
                  on_click no%,clics
    no%=no%+1 : bt_2%=no% : button no% : parent no%,0 : width no%,40 : height no%,40
                  font_name no%,"DejaVu Sans Mono" : font_bold no% : font_size no%,18 : caption no%,"2"
                  top no%,top(afi_result%)+height(afi_result%)+(height(bt_CE%)*3)+2 : left no%,left(bt_5%)
                  on_click no%,clics
    no%=no%+1 : bt_3%=no% : button no% : parent no%,0 : width no%,40 : height no%,40
                  font_name no%,"DejaVu Sans Mono" : font_bold no% : font_size no%,18 : caption no%,"3"
                  top no%,top(afi_result%)+height(afi_result%)+(height(bt_CE%)*3)+2 : left no%,left(bt_6%)
                  on_click no%,clics
    ' cinquième rangée
    no%=no%+1 : bt_0%=no% : button no% : parent no%,0 : width no%,40 : height no%,40
                  font_name no%,"DejaVu Sans Mono" : font_bold no% : font_size no%,18 : caption no%,"0"
                  top no%,top(afi_result%)+height(afi_result%)+(height(bt_CE%)*4)+2 : left no%,left(bt_1%)
                  on_click no%,clics
    no%=no%+1 : bt_PC%=no% : button no% : parent no%,0 : width no%,40 : height no%,40
                  font_name no%,"DejaVu Sans Mono" : font_bold no% : font_size no%,18 : caption no%,"%"
                  top no%,top(afi_result%)+height(afi_result%)+(height(bt_CE%)*4)+2 : left no%,left(bt_2%)
                  on_click no%,clics
    no%=no%+1 : bt_virg%=no% : button no% : parent no%,0 : width no%,40 : height no%,40
                  font_name no%,"DejaVu Sans Mono" : font_bold no% : font_size no%,18 : caption no%,","
                  top no%,top(afi_result%)+height(afi_result%)+(height(bt_CE%)*4)+2 : left no%,left(bt_3%)
                  on_click no%,clics
    ' Bouton +
    no%=no%+1 : bt_plus%=no% : button no% : parent no%,0 : width no%,40 : height no%,80
                  font_name no%,"DejaVu Sans Mono" : font_bold no% : font_size no%,18 : caption no%,"+"
                  top no%,top(afi_result%)+height(afi_result%)+height(bt_moins%)+2 : left no%,left(bt_multipli%)+width(bt_multipli%)+1
                  on_click no%,clics
    ' Bouton =
    no%=no%+1 : bt_egal%=no% : button no% : parent no%,0 : width no%,40 : height no%,80
                  font_name no%,"DejaVu Sans Mono" : font_bold no% : font_size no%,18 : caption no%,"="
                  top no%,top(bt_3%) : left no%,left(bt_plus%)
                  on_click no%,clics
END_SUB
rem ============================================================================
SUB Retourne_Dimension_Bandeau_Et_Bord()
    ' controle de la position de la procédure dans le programme
    IF NUMBER_OBJECTS>0
       message "La SUB 'Retourne_Dimension_Bandeau_Et_Bord' doit être placée avant la création du premier objet !"
       terminate
    END_IF
    ' création des VARIABLES GLOBALES
    IF VARIABLE("bandeau%")=0 then DIM bandeau%
    IF VARIABLE("bord%")=0 then DIM bord%
    ' Calcul de bandeau% et bord%
    dim_local w0%,h0%,w1%,h1%,w2%,h2%
    w0%=WIDTH(0) : h0%=HEIGHT(0)
    picture 1 : full_space 1 : w1%=WIDTH(1) : h1%=HEIGHT(1)
    w2%=w0%-w1% : h2%=h0%-h1% : bandeau%=h2%-(w2%/2) : bord%=w2%/2
    ' Suppression du Picture devenu inutile
    delete 1
END_SUB
rem ============================================================================
fin:
   terminate
RETURN

A+

PS: je ferais une version avec des boutons de couleurs pour la rendre attrayante.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Yannick

avatar

Nombre de messages : 7968
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Dim 30 Aoû 2015 - 15:52

Elle est chouette cette calculette... Laughing
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Laurent (Minibug)

avatar

Nombre de messages : 2353
Age : 50
Localisation : Vienne (86)
Date d'inscription : 10/02/2012

MessageSujet: Re: Une calculette basique pour les enfants   Dim 30 Aoû 2015 - 16:11

Super la calculette jean Claude !
Quand GPP fonctionnera, il faudra qu'on la transpose...

Ça sent la rentrée des classes tout ça !  lol!
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
JL35



Nombre de messages : 5920
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Une calculette basique pour les enfants   Dim 30 Aoû 2015 - 16:34

Chouette, ça va me servir pour ma rentrée en CM2 ! Wink
Ma maîtresse va être contente (enfin, l'autre...)
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jicehel

avatar

Nombre de messages : 5849
Age : 45
Localisation : 77500
Date d'inscription : 19/04/2011

MessageSujet: Re: Une calculette basique pour les enfants   Dim 30 Aoû 2015 - 18:19

Un bon vieux classique avec une version aux goûts du jour Wink
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jean Claude

avatar

Nombre de messages : 4989
Age : 63
Localisation : 83 Var
Date d'inscription : 07/05/2009

MessageSujet: Re: Une calculette basique pour les enfants   Dim 30 Aoû 2015 - 21:28

Merci pour vos commentaires sympas.

Je suis entrain de faire la version en image pour enfant.

A+
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
The Gamer

avatar

Nombre de messages : 110
Age : 23
Localisation : Toulouse (31)
Date d'inscription : 11/05/2010

MessageSujet: Re: Une calculette basique pour les enfants   Lun 31 Aoû 2015 - 18:11





cheers  Simple + compact + utile = Excellent !! cheers
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://pierrehardy.pagesperso-orange.fr/
Jean Claude

avatar

Nombre de messages : 4989
Age : 63
Localisation : 83 Var
Date d'inscription : 07/05/2009

MessageSujet: Re: Une calculette basique pour les enfants   Lun 31 Aoû 2015 - 22:19

Merci The Gamer,

@Tous,
J'ai terminé la version spéciale enfant, mais comme j'ai remplacé les boutons par des images (picture), il faut la télécharger sur mon Webdav
le dossier s’appelle "Calculette_Enfant.zip"

J'ai un peu amélioré le code et je l'ai adapté aux "boutons_image".

J'ai un bug (mineur):  En cas de dépassement du nombre de caractère dans le LIST afi_result%. Ce bug est dans l'affichage du LIST afi_op%. Normalement, en passant par la SUB reinit(), ce LIST devrait être purgé et ce n'est pas le cas.
Et je ne comprends pas pourquoi Question
Pour provoquer ce bug (mineur) il faut taper 15 chiffres (sans opération) à la suite. Vous constaterez (Après le message) que l'afficheur du haut garde en mémoire le dernier chiffre tapé. Je ne vois pas pourquoi Question

A+


Dernière édition par Jean Claude le Mar 1 Sep 2015 - 21:26, édité 1 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jean Claude

avatar

Nombre de messages : 4989
Age : 63
Localisation : 83 Var
Date d'inscription : 07/05/2009

MessageSujet: Re: Une calculette basique pour les enfants   Mar 1 Sep 2015 - 21:22

Quelqu'un s'est-il penché sur le bug décrit dans mon intervention précédente ?

De mon coté, je sèche.

A+

EDIT: je précise que je parle de la version "Enfant" à télécharger.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Cobra

avatar

Nombre de messages : 13
Localisation : France
Date d'inscription : 05/11/2009

MessageSujet: Re: Une calculette basique pour les enfants   Mar 1 Sep 2015 - 23:49

Salut Jean-Claude

Je pense que le problème vient de la ligne 126 (procédure bt).
Après avoir fait un clear de la list, n$ contient toujours le dernier chiffre entré et la procédure affiche_lig() à la fin de la ligne 126 le ré-affiche

Bonne soirée
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jean Claude

avatar

Nombre de messages : 4989
Age : 63
Localisation : 83 Var
Date d'inscription : 07/05/2009

MessageSujet: Re: Une calculette basique pour les enfants   Mer 2 Sep 2015 - 8:27

Bien vu Cobra,

Pour ceux qui ont téléchargé, il suffit de remplacer la SUB bt(n$) par celle-ci.
Code:
SUB bt(n$)
    Ctrl_Mode() : nombre$=nombre$+n$ : lig$=lig$+n$ : n$="" : affiche() : affiche_lig()
END_SUB

Merci Cobra, j'ai cherché longtemps sans voir ce qui était évident.

A+

PS: Mon Webdav est à jour.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jean Claude

avatar

Nombre de messages : 4989
Age : 63
Localisation : 83 Var
Date d'inscription : 07/05/2009

MessageSujet: Re: Une calculette basique pour les enfants   Lun 14 Sep 2015 - 9:31

Tel quel, la calculette a un petit bug avec la touche de la division.

Voici le nouveau code qui va bien (les images restent les mêmes)

Code:
' Calculette_Basique par JC 08/2015
hide 0
application_title "CALCULETTE (Basique)"
' message string$(51," ")+"INFORMATION"+chr$(13)+"Cette calculette est destinée aux enfants. Elle ne fait qu'un calcul à la fois."
Retourne_Dimension_Bandeau_Et_Bord()
Dim_Label()
Objets()
show 0
reinit()
END
rem ============================================================================
clics:
  if number_click=bt_CE% then reinit()
  if number_click=bt_divise% then divise()
  if number_click=bt_multipli% then multipli()
  if number_click=bt_moins% then moins()
  if number_click=bt_virg% then virg()
  if number_click=bt_PC% then PC()
  if number_click=bt_plus% then plus()
  if number_click=bt_egal% then egal()
  if number_click=bt_0% then bt("0")
  if number_click=bt_1% then bt("1")
  if number_click=bt_2% then bt("2")
  if number_click=bt_3% then bt("3")
  if number_click=bt_4% then bt("4")
  if number_click=bt_5% then bt("5")
  if number_click=bt_6% then bt("6")
  if number_click=bt_7% then bt("7")
  if number_click=bt_8% then bt("8")
  if number_click=bt_9% then bt("9")
RETURN

rem ============================================================================
SUB reinit()
    tour%=0 : nb=0 : nbP=0 : nombre$="" : lig$="" : op$="" : mode$="" : inactive bt_PC%
    clear afi_op% : clear afi_result% : inactive bt_egal% : inactive_boutons() : active bt_virg%
    Ctrl_bouton() : set_focus 0
END_SUB
SUB Ctrl_bouton()
    if active(bt_egal%)=0 then file_load bt_egal%,"egal_nb.bmp"
    if active(bt_egal%)=1 then file_load bt_egal%,"egal.bmp"
    if active(bt_virg%)=0 then file_load bt_virg%,"virgule_nb.bmp"
    if active(bt_virg%)=1 then file_load bt_virg%,"virgule.bmp"
    if active(bt_PC%)=0 then file_load bt_PC%,"Pourcentage_nb.bmp"
    if active(bt_PC%)=1 then file_load bt_PC%,"Pourcentage.bmp"
    if active(bt_plus%)=0 then file_load bt_plus%,"plus_nb.bmp"
    if active(bt_plus%)=1 then file_load bt_plus%,"plus.bmp"
    if active(bt_moins%)=0 then file_load bt_moins%,"moins_nb.bmp"
    if active(bt_moins%)=1 then file_load bt_moins%,"moins.bmp"
    if active(bt_multipli%)=0 then file_load bt_multipli%,"multiplication_nb.bmp"
    if active(bt_multipli%)=1 then file_load bt_multipli%,"multiplication.bmp"
    if active(bt_divise%)=0 then file_load bt_divise%,"division_nb.bmp"
    if active(bt_divise%)=1 then file_load bt_divise%,"division.bmp"
END_SUB

' les 4 opérations
SUB divise()
    tour%=0 : active bt_virg%
    inactive_boutons() : op$="/" : clear afi_result% : lig$=lig$+" : " : affiche_lig()
    if mode$="" then nb=val(nombre$) : mode$="C" : nbP=nb : nb=0 : nombre$=""
END_SUB
SUB multipli()
    tour%=0 : active bt_virg% : active bt_PC%
    inactive_boutons() : op$="*" : clear afi_result% : lig$=lig$+" x " : affiche_lig()
    if mode$="" then nb=val(nombre$) : mode$="C" : nbP=nb : nb=0 : nombre$=""
END_SUB
SUB plus()
    tour%=0 : active bt_virg% : active bt_PC%
    inactive_boutons() : op$="+" : clear afi_result% : lig$=lig$+" + " : affiche_lig()
    if mode$="" then nb=val(nombre$) : mode$="C" : nbP=nb : nb=0 : nombre$=""
END_SUB
SUB moins()
    tour%=0 : active bt_virg% : active bt_PC%
    inactive_boutons() : op$="-" : clear afi_result% : lig$=lig$+" - " : affiche_lig()
    if mode$="" then nb=val(nombre$) : mode$="C" : nbP=nb : nb=0 : nombre$=""
END_SUB
' résultat
SUB egal()
  if numeric(nombre$)=1
    nb=val(nombre$)
  else
    if right$(nombre$,1)="%" and op$="*"
        nombre$=left$(nombre$,len(nombre$)-1) : nb=val(nombre$) : op$="%*"
    end_if
    if right$(nombre$,1)="%" and op$="+"
        nombre$=left$(nombre$,len(nombre$)-1) : nb=val(nombre$) : op$="%+"
    end_if
    if right$(nombre$,1)="%" and op$="-"
        nombre$=left$(nombre$,len(nombre$)-1) : nb=val(nombre$) : op$="%-"
    end_if
  end_if
  inactive bt_egal% : tour%=0 : active bt_virg%
  if op$="%*" then nbP=(nbP*nb)/100
  if op$="%+" then nbP=nbP+((nbP*nb)/100)
  if op$="%-" then nbP=nbP-((nbP*nb)/100)
  if op$="+" then nbP=nbP+nb
  if op$="-" then nbP=nbP-nb
  if op$="*" then nbP=nbP*nb
  if op$="/"
    if nb<>0
        nbP=nbP/nb
    else
        message "La division par zéro n'existe pas" : reinit() : EXIT_SUB
    end_if
  end_if
  clear afi_result% : lig$=lig$+" = "+str$(nbP) : affiche_lig()
  nb=0 : nombre$="" : mode$="F" : clear afi_result% : item_add afi_result%,str$(nbP)
  Ctrl_bouton()
END_SUB
' la touche %
SUB PC()
    inactive bt_PC%
    Ctrl_Mode() : nombre$=nombre$+"%" : affiche() : lig$=lig$+"%" : affiche_lig()
    Ctrl_bouton()
END_SUB
' la virgule
SUB virg()
    inactive bt_virg% : Ctrl_bouton()
    if tour%=0 or mode$="F" then nombre$="0" : lig$=lig$+"0"
    nombre$=nombre$+"." : affiche() : lig$=lig$+"," : affiche_lig()
    if mode$="F"  then inactive bt_egal% :  mode$="" : lig$="0," : nbP=0 : affiche_lig()
END_SUB
' les chiffres
SUB bt(n$)
    Ctrl_Mode() : nombre$=nombre$+n$ : lig$=lig$+n$ : n$="" : affiche() : affiche_lig()
END_SUB
SUB Ctrl_Mode()
    Ctrl_bouton()
    if mode$="F" then inactive bt_egal% : mode$="" : lig$="" : nbP=0 : affiche_lig()
    if mode$="C" then active bt_egal% : inactive_boutons()
    if mode$="" then active_boutons()
    tour%=tour%+1
END_SUB
' l'affichage
SUB affiche()
    if len(nombre$)>14 then message "  14 chiffres maximum !  " : reinit() : Exit_Sub
    clear afi_result% : item_add afi_result%,nombre$
END_SUB
SUB affiche_lig()
    clear afi_op%
    if len(lig$)>26 then Exit_Sub
    item_add afi_op%,lig$
END_SUB
' contrôle des boutons
SUB inactive_boutons()
    inactive bt_divise% : inactive bt_multipli% : inactive bt_moins% : inactive bt_plus%
    Ctrl_bouton()
END_SUB
SUB active_boutons()
    active bt_divise% : active bt_multipli% : active bt_moins% : active bt_plus%
    Ctrl_bouton()
END_SUB
rem ============================================================================
SUB Dim_Label()
    dim no%,tour%
    dim nb,nbP
    dim virgul$,nombre$,lig$,op$,mode$
    virgul$="."
    dim afi_result%,afi_op%
    dim bt_CE%,bt_divise%,bt_multipli%,bt_moins%,bt_virg%,bt_PC%,bt_plus%,bt_egal%
    dim bt_0%,bt_1%,bt_2%,bt_3%,bt_4%,bt_5%,bt_6%,bt_7%,bt_8%,bt_9%
    label fin,clics
END_SUB
' ------------------------------------------------------------------------------
SUB Objets()
    ' Form 0
    border_small 0 : caption 0,"CALCULETTE (Basique)" : width 0,400
    height 0,302 : width 0,187 : top 0,(screen_y/2)-(height(0)/2) : left 0,(screen_x/2)-(width(0)/2)
    color 0,150,240,255
    ' Afficheurs
    no%=no%+1 : afi_op%=no% : list no% :' font_bold no%
                width no%,width(0)-(bord%*2)-8 : left no%,4 : height no%,20 : top no%,5
    no%=no%+1 : afi_result%=no% : list no% : color no%, 255,255,0
                font_color no%,0,100,255
                font_bold no% : font_size no%,14
                width no%,width(0)-(bord%*2)-8 : left no%,4 : height no%,30 : top no%,top(afi_op%)+height(afi_op%)+2
    ' les boutons
    ' la première rangée
    no%=no%+1 : bt_CE%=no% : picture no% : width no%,40 : height no%,40 : file_load no%,"clear.bmp"
                  top no%,top(afi_result%)+height(afi_result%)+2 : left no%,left(afi_result%)
                  on_click no%,clics
    no%=no%+1 : bt_divise%=no% : picture no% : width no%,40 : height no%,40 : file_load no%,"division.bmp"
                  top no%,top(afi_result%)+height(afi_result%)+2 : left no%,left(bt_CE%)+width(bt_CE%)+1
                  on_click no%,clics
    no%=no%+1 : bt_multipli%=no% : picture no% : width no%,40 : height no%,40 : file_load no%,"multiplication.bmp"
                  top no%,top(afi_result%)+height(afi_result%)+2 : left no%,left(bt_divise%)+width(bt_divise%)+1
                  on_click no%,clics
    no%=no%+1 : bt_moins%=no% : picture no% : width no%,40 : height no%,40 : file_load no%,"moins.bmp"
                  top no%,top(afi_result%)+height(afi_result%)+2 : left no%,left(bt_multipli%)+width(bt_multipli%)+1
                  on_click no%,clics
    ' la deuxième rangée
    no%=no%+1 : bt_7%=no% : picture no% : width no%,40 : height no%,40 : file_load no%,"7.bmp"
                  top no%,top(afi_result%)+height(afi_result%)+height(bt_CE%)+2 : left no%,left(bt_CE%)
                  on_click no%,clics
    no%=no%+1 : bt_8%=no% : picture no% : width no%,40 : height no%,40 : file_load no%,"8.bmp"
                  top no%,top(afi_result%)+height(afi_result%)+height(bt_CE%)+2 : left no%,left(bt_7%)+width(bt_7%)+1
                  on_click no%,clics
    no%=no%+1 : bt_9%=no% : picture no% : width no%,40 : height no%,40 : file_load no%,"9.bmp"
                  top no%,top(afi_result%)+height(afi_result%)+height(bt_CE%)+2 : left no%,left(bt_8%)+width(bt_8%)+1
                  on_click no%,clics
    ' la troisième rangée
    no%=no%+1 : bt_4%=no% : picture no% : width no%,40 : height no%,40 : file_load no%,"4.bmp"
                  top no%,top(afi_result%)+height(afi_result%)+(height(bt_CE%)*2)+2 : left no%,left(bt_7%)
                  on_click no%,clics
    no%=no%+1 : bt_5%=no% : picture no% : width no%,40 : height no%,40 : file_load no%,"5.bmp"
                  top no%,top(afi_result%)+height(afi_result%)+(height(bt_CE%)*2)+2 : left no%,left(bt_8%)
                  on_click no%,clics
    no%=no%+1 : bt_6%=no% : picture no% : width no%,40 : height no%,40 : file_load no%,"6.bmp"
                  top no%,top(afi_result%)+height(afi_result%)+(height(bt_CE%)*2)+2 : left no%,left(bt_9%)
                  on_click no%,clics
    ' quatrième rangée
    no%=no%+1 : bt_1%=no% : picture no% : width no%,40 : height no%,40 : file_load no%,"1.bmp"
                  top no%,top(afi_result%)+height(afi_result%)+(height(bt_CE%)*3)+2 : left no%,left(bt_4%)
                  on_click no%,clics
    no%=no%+1 : bt_2%=no% : picture no% : width no%,40 : height no%,40 : file_load no%,"2.bmp"
                  top no%,top(afi_result%)+height(afi_result%)+(height(bt_CE%)*3)+2 : left no%,left(bt_5%)
                  on_click no%,clics
    no%=no%+1 : bt_3%=no% : picture no% : width no%,40 : height no%,40 : file_load no%,"3.bmp"
                  top no%,top(afi_result%)+height(afi_result%)+(height(bt_CE%)*3)+2 : left no%,left(bt_6%)
                  on_click no%,clics
    ' cinquième rangée
    no%=no%+1 : bt_0%=no% : picture no% : width no%,40 : height no%,40 : file_load no%,"0.bmp"
                  top no%,top(afi_result%)+height(afi_result%)+(height(bt_CE%)*4)+2 : left no%,left(bt_1%)
                  on_click no%,clics
    no%=no%+1 : bt_PC%=no% : picture no% : width no%,40 : height no%,40 : file_load no%,"Pourcentage.bmp"
                  top no%,top(afi_result%)+height(afi_result%)+(height(bt_CE%)*4)+2 : left no%,left(bt_2%)
                  on_click no%,clics
    no%=no%+1 : bt_virg%=no% : picture no% : width no%,40 : height no%,40 : file_load no%,"virgule.bmp"
                  top no%,top(afi_result%)+height(afi_result%)+(height(bt_CE%)*4)+2 : left no%,left(bt_3%)
                  on_click no%,clics
    ' Bouton +
    no%=no%+1 : bt_plus%=no% : picture no% : width no%,40 : height no%,80 : file_load no%,"plus.bmp"
                  top no%,top(afi_result%)+height(afi_result%)+height(bt_moins%)+2 : left no%,left(bt_multipli%)+width(bt_multipli%)+1
                  on_click no%,clics
    ' Bouton =
    no%=no%+1 : bt_egal%=no% : picture no% : width no%,40 : height no%,80 : file_load no%,"egal.bmp"
                  top no%,top(bt_3%) : left no%,left(bt_plus%)
                  on_click no%,clics
END_SUB
rem ============================================================================
SUB Retourne_Dimension_Bandeau_Et_Bord()
    ' controle de la position de la procédure dans le programme
    IF NUMBER_OBJECTS>0
      message "La SUB 'Retourne_Dimension_Bandeau_Et_Bord' doit être placée avant la création du premier objet !"
      terminate
    END_IF
    ' création des VARIABLES GLOBALES
    IF VARIABLE("bandeau%")=0 then DIM bandeau%
    IF VARIABLE("bord%")=0 then DIM bord%
    ' Calcul de bandeau% et bord%
    dim_local w0%,h0%,w1%,h1%,w2%,h2%
    w0%=WIDTH(0) : h0%=HEIGHT(0)
    picture 1 : full_space 1 : w1%=WIDTH(1) : h1%=HEIGHT(1)
    w2%=w0%-w1% : h2%=h0%-h1% : bandeau%=h2%-(w2%/2) : bord%=w2%/2
    ' Suppression du Picture devenu inutile
    delete 1
END_SUB
rem ============================================================================
fin:
  terminate
RETURN

A+
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: Une calculette basique pour les enfants   

Revenir en haut Aller en bas
 
Une calculette basique pour les enfants
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» question basique pour un nul de l'informatique
» pubs génantes pour les enfants
» Divin Biscuit, ce n'est que pour les enfants >8D
» Des tubes enfants pour psp
» préparatifs pour le 16avril

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC 32 bits :: Vos sources, vos utilitaires à partager-
Sauter vers: