π
<-

problème getkey...

:32ti89: :32ti892: :32ti89t: :32ti89tn: :32ti92: :32tiv200:

problème getkey...

Message non lude Hedg-Hops » 26 Sep 2012, 15:34

Bonjour, je vous expose mon problème:
je veux:
-entrer dans une boucle, et en resortir QUE si l'on tape [enter] ou [fleche droite]
- Dans la boucle, un test pour savoir si l'on tape [fleche gauche], si oui retour au label précédent
Voici le code: ( =! different de)

Code: Tout sélectionner
0->key
getKey()->key

lbl aaa
ClrDraw
RecalPic image1  // affiche une image1 a l'écran
While key =!13 or key =!340  // je veux que tant que ni [enter] ni [fleche droite]
                                           // soit tapé, ça reste sur l'image1
  if key = 337:Goto debut      // si [fleche gauche] est tapé, ça sort de la
                                          //boucle et revient au début
EndWhile

lbl bbb
ClrDraw
RecalPic image2  // une image 2
While key =!13 or key =!340 // tant que ni [enter] ni [fleche droite]
                                          //  soit tapé, ça reste sur l'image2
  if key = 337:Goto aaa        // si [fleche gauche] est tapé, ça sort de la
                                          // boucle et revient a l'image 2
EndWhile



Voila... qu'est-ce qui ne va pas la dedant ??? ça reste bloqué au premier while......
Avatar de l’utilisateur
Hedg-Hops
Niveau 9: IC (Compteur Infatigable)
Niveau 9: IC (Compteur Infatigable)
Prochain niv.: 93.8%
 
Messages: 54
Inscription: 09 Nov 2011, 14:06
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: 1ère Scientifique

Re: problème getkey...

Message non lude Lepzulnag » 26 Sep 2012, 15:58

SAlut,

il faut mettre le getkey()->key dans le while :

Code: Tout sélectionner
0->key

lbl aaa
ClrDraw
RecalPic image1  // affiche une image1 a l'écran
While key =!13 or key =!340  // je veux que tant que ni [enter] ni [fleche droite]
                                           // soit tapé, ça reste sur l'image1
getKey()->key 
if key = 337:Goto debut      // si [fleche gauche] est tapé, ça sort de la
                                          //boucle et revient au début
EndWhile

lbl bbb
ClrDraw



La fonction getkey() renvoie la dernière touche pressée. Si aucune touche n'est pressée, elle renvoie 0. Quant tu arrives dans le while, à moins que l'utilisateur n'ait été extrêmement rapide, le getkey()->k a juste eu pour effet de mettre 0 dans k. Comme tu ne change pas la valeur de k dans ta boucle, elle va rester constamment à 0. Donc tu ne vas jamais sortir de ta boucle.
Avatar de l’utilisateur
Lepzulnag
Niveau 9: IC (Compteur Infatigable)
Niveau 9: IC (Compteur Infatigable)
Prochain niv.: 78.5%
 
Messages: 151
Inscription: 02 Aoû 2012, 21:15
Localisation: Bretagne
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile
Classe: M2 Maths

Re: problème getkey...

Message non lude Lepzulnag » 26 Sep 2012, 16:08

Il y a aussi une erreur dans la condition de ton while, une erreur de logique parfois assez casse-tête :

Code: Tout sélectionner
While key =!13 or key =!340 


Tu conviendras que cela signifie "Tant que ( (ENTER n'est pas appuyé) ou (FLECHE GAUCHE n'est pas appuyé) )". Or cela est vrai pour toutes les touches, y compris pour ENTER ou FLECHE GAUCHE :

- si tu appuies sur ENTER, la condition (ENTER n'est pas appuyé) est fausse, mais (FLECHE GAUCHE n'est pas appuyé) reste vrai : tu n'as pas appuyé sur la flèche gauche. Donc tu ne sors pas du while, car tu as mis un OU. Pareil si tu appuies sur la flèche gauche, comme tu n'as pas appuyé sur ENTER, tu restes dans la boucle.

Il faut donc remplacer le OU par un ET, afin que cela donne :

"Tant que ( (ENTER n'est pas appuyé) ET (FLECHE GAUCHE n'est pas appuyé) )" <=> "Tant que (ni FLECHE GAUCHE ni ENTER ne sont appuyés)" <=> si l'un des deux est appuyé, on quitte.

Il y a plusieurs façons de voir les choses, choisis celle qui te convient le plus.
Avatar de l’utilisateur
Lepzulnag
Niveau 9: IC (Compteur Infatigable)
Niveau 9: IC (Compteur Infatigable)
Prochain niv.: 78.5%
 
Messages: 151
Inscription: 02 Aoû 2012, 21:15
Localisation: Bretagne
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile
Classe: M2 Maths

Re: problème getkey...

Message non lude Hedg-Hops » 26 Sep 2012, 17:16

Merci ! problème résolu ! :)
c'est vrai que de z80 à ti 89 c'est les conditions s"inverse" je ne comprenais pas... merci bien
Avatar de l’utilisateur
Hedg-Hops
Niveau 9: IC (Compteur Infatigable)
Niveau 9: IC (Compteur Infatigable)
Prochain niv.: 93.8%
 
Messages: 54
Inscription: 09 Nov 2011, 14:06
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: 1ère Scientifique

Re: problème getkey...

Message non lude Bisam » 27 Sep 2012, 14:06

C'est la différence entre un
Code: Tout sélectionner
Tant que (la condition est vraie)
  fais quelque chose
Fin du tant que

et un
Code: Tout sélectionner
Répète :
  fais quelque chose
Jusqu'à ce que (la condition soit fausse)


La 2ème différence est que le "fais quelque chose" peut ne jamais être exécuté dans le premier cas si la condition est fausse dès le départ, alors que dans le 2ème cas, elle est toujours exécuté au moins une fois.

Sur les TI89 et les Nspire, les "Répète" n'existent pas, alors que sur z80, les 2 existent, tout comme en C.
Avatar de l’utilisateur
BisamAdmin
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Prochain niv.: 69.6%
 
Messages: 5670
Inscription: 11 Mar 2008, 00:00
Localisation: Lyon
Genre: Homme
Calculatrice(s):
MyCalcs profile


Retourner vers Problèmes divers / Aide débutants

Qui est en ligne

Utilisateurs parcourant ce forum: ClaudeBot [spider] et 6 invités

-
Rechercher
-
Social TI-Planet
-
Sujets à la une
Comparaisons des meilleurs prix pour acheter sa calculatrice !
"1 calculatrice pour tous", le programme solidaire de Texas Instruments. Reçois gratuitement et sans aucune obligation d'achat, 5 calculatrices couleur programmables en Python à donner aux élèves les plus nécessiteux de ton lycée. Tu peux recevoir au choix 5 TI-82 Advanced Edition Python ou bien 5 TI-83 Premium CE Edition Python.
Enseignant(e), reçois gratuitement 1 exemplaire de test de la TI-82 Advanced Edition Python. À demander d'ici le 31 décembre 2024.
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
1234
-
Faire un don / Premium
Pour plus de concours, de lots, de tests, nous aider à payer le serveur et les domaines...
Faire un don
Découvrez les avantages d'un compte donateur !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partenaires et pub
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
3172 utilisateurs:
>3148 invités
>16 membres
>8 robots
Record simultané (sur 6 mois):
29271 utilisateurs (le 11/07/2025)
-
Autres sites intéressants
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)