π
<-

problème getkey...

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

problème getkey...

Unread postby 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: Select all
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......
User avatar
Hedg-Hops
Niveau 9: IC (Compteur Infatigable)
Niveau 9: IC (Compteur Infatigable)
Level up: 93.8%
 
Posts: 54
Joined: 09 Nov 2011, 14:06
Gender: Male
Calculator(s):
MyCalcs profile
Class: 1ère Scientifique

Re: problème getkey...

Unread postby Lepzulnag » 26 Sep 2012, 15:58

SAlut,

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

Code: Select all
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.
User avatar
Lepzulnag
Niveau 9: IC (Compteur Infatigable)
Niveau 9: IC (Compteur Infatigable)
Level up: 78.5%
 
Posts: 151
Joined: 02 Aug 2012, 21:15
Location: Bretagne
Gender: Not specified
Calculator(s):
MyCalcs profile
Class: M2 Maths

Re: problème getkey...

Unread postby 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: Select all
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.
User avatar
Lepzulnag
Niveau 9: IC (Compteur Infatigable)
Niveau 9: IC (Compteur Infatigable)
Level up: 78.5%
 
Posts: 151
Joined: 02 Aug 2012, 21:15
Location: Bretagne
Gender: Not specified
Calculator(s):
MyCalcs profile
Class: M2 Maths

Re: problème getkey...

Unread postby 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
User avatar
Hedg-Hops
Niveau 9: IC (Compteur Infatigable)
Niveau 9: IC (Compteur Infatigable)
Level up: 93.8%
 
Posts: 54
Joined: 09 Nov 2011, 14:06
Gender: Male
Calculator(s):
MyCalcs profile
Class: 1ère Scientifique

Re: problème getkey...

Unread postby Bisam » 27 Sep 2012, 14:06

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

et un
Code: Select all
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.
User avatar
BisamAdmin
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Level up: 69.6%
 
Posts: 5670
Joined: 11 Mar 2008, 00:00
Location: Lyon
Gender: Male
Calculator(s):
MyCalcs profile


Return to Problèmes divers / Aide débutants

Who is online

Users browsing this forum: ClaudeBot [spider] and 3 guests

-
Search
-
Social TI-Planet
-
Featured topics
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
-
Donations / Premium
For more contests, prizes, reviews, helping us pay the server and domains...
Donate
Discover the the advantages of a donor account !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partner and ad
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
819 utilisateurs:
>768 invités
>44 membres
>7 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
Other interesting websites
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)