Autorisation : Membre
Nb de messages : 504
Inscrit le : Ven 07 Déc 2012, 20:09
Posté le : Sam 11 Oct 2014, 20:39
Pour commencer par le commencement, je doute que ton programme fonctionne, car le programme n'a pas le temps d'analyser la pression d'une touche. Je te propose une simple boucle Repeat autour du getKey, c'est fiable et efficace. De plus la touche 110 n'existe pas !
Pour répondre à ton problème, il suffit d'effectuer ton test sur "K différent de 105".
Le code :
Code
:Lbl B
:Repeat K
:codeTouche->K
:End
:If K=105:Goto A
:If K[différent de]105:Goto C
:Goto B
[différent de] : 2nd-Math-2
N'hésite pas à me demander si tu n'as pas compris !
Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Dim 12 Oct 2014, 0:49
Le Goto B devient inutile maintenant que le K[différent]105 est présent.
Pour un simple test, on peut remplacer [différent] par une soustraction.
If K[différent]105
If K-105
Code
:Repeat K
:codeTouche->K
:End
:If K=105:Goto A
:If K-105:Goto C
Si tu n'as aucun autre choix, alors tu peux te passer du test.
Code
:Repeat K
:codeTouche->K
:End
:If K=105:Goto A
:Goto C
Tu pourrais utiliser une boucle à la place de Lbl B si tu n'avais pas tous ces autres Goto à mettre dedans.
Code
:Repeat K=105 or K=21
:codeTouche->K
:End // si aucune des touches prévues n'est pressée, alors cela boucle
:If K=105:Goto A
:If K=21:Goto C
---------------------- ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)
Pour commencer par le commencement, je doute que ton programme fonctionne, car le programme n'a pas le temps d'analyser la pression d'une touche.
Si, le programme fonctionne, grâce à la boucle B ^^
Citer : Mingerton
Je te propose une simple boucle Repeat autour du getKey, c'est fiable et efficace. De plus la touche 110 n'existe pas !
Je sais que la touche 110 n'existe pas, j'ai choisis ce réel au hasard
Et je ne connaissais pas la boucle repeat, j'aimerais bien avoir des explications quant à son utilité, car le programme reste fonctionnel si on enlève le "repeat" et le "end". (en plus il est plus court :p)
Citer : Mingerton
Pour répondre à ton problème, il suffit d'effectuer ton test sur "K différent de 105".
Le code :
Code
:Lbl B
:Repeat K
:codeTouche->K
:End
:If K=105:Goto A
:If K[différent de]105:Goto C
:Goto B
J'avais en effet commencé à utiliser le signe "différent de", mais de la façon suivante:
Code
:Lbl B
:codetouche->K
:If K=105:Goto A
:If K(différent de)105:Disp "OK"
:Goto B
Mais le programme m'affichait "OK" en permanence :/ Cela marche désormais avec le goto!
Citer
N'hésite pas à me demander si tu n'as pas compris !
Merci beaucoup
Une dernière question: est-il possible d'écrire le programme suivant?
Code
:Lbl B
:codetouche->K
:If K=(n'importe quelle touche):goto A
:Goto B
Promis j'arrête de vous ennuyer après ^_^
Autaz Invité
Posté le : Dim 12 Oct 2014, 1:29
EDIT: Je viens de voir le message de Linkakro, merci pour sa réponse constructive!
Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Dim 12 Oct 2014, 2:37
Toutes les touches ont un code non nul et l'absence de touche porte le code nul.
Code
:Lbl B
:codetouche->K
:If K // K[différent]0 // n'importe quelle touche est pressée
:Goto A
:Goto B
Citer
J'avais en effet commencé à utiliser le signe "différent de", mais de la façon suivante:
Code
:Lbl B
:codetouche->K
:If K=105:Goto A
:If K(différent de)105:Disp "OK"
:Goto B
Pour tester qu'une touche est pressée ET que ce n'est pas la touche entrée, il faut tester
If K and K-105
Ou bien imposer la condition K-0 au travers de la boucle autour du getkey comme nous avons posté.
Citer
Si, le programme fonctionne, grâce à la boucle B ^^
De mon point de vue le Goto B semblait être le moyen de répéter le test du contenu et ne faisait pas partie de ce qu'on teste. Selon moi, lorsque tu voudras utiliser ce code dans un programme, il sera plus facile de prendre le contenu sans Goto B et coller dans une boucle au lieu de mettre des choses dans ta routine. En ce sens on regarde juste le contenu sans Goto B et se dit que la saisie n'a pas le temps de se faire.
La boucle Repeat teste la condition à la fin et quitte si elle est vraie. Donc elle est exécutée au moins une fois.
La boucle While teste la condition au début et boucle si elle est vraie. Donc elle peut ne pas être exécutée du tout si la condition est fausse.
---------------------- ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)