Poster un nouveau sujet Poster une réponse
codeTouche quelconque
Auteur Message
Autaz
Invité
Posté le : Mer 08 Oct 2014, 22:16   Citer 

Bonjour,
Je suis un jeune lycéen débutant en programmation et de passage sur ce forum pour vous poser une question ^^

Imaginons:

Code

:Lbl B
:codeTouche -> K
:If K=110:Goto A
:Goto B



C'est bien gentil, mais existe t'il une comande permettant de demander l'information suivante?


Code

:Lbl B
:codeTouche -> K
:If K=110:Goto A
:If K=(quelque chose d'autre que K=110):Goto C
Goto B



Merci à vous et à très bientôt!

  Haut de page Bas de page 
 
Mingerton



Autorisation : Membre
Nb de messages : 504
Inscrit le : Ven 07 Déc 2012, 20:09
Posté le : Sam 11 Oct 2014, 20:39   Citer 

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 ! eyeonly.gif

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 ! winkle.gif

----------------------
Mes articles
Mes programmes en ligne (je termine peu de projets)

Guide traduction Algo-Basic, par Linkakro
Catalogue des fonctions 82/83/84 FR/EN
 Adresse email Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Dim 12 Oct 2014, 0:49   Citer 

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 tout le monde et surtout les débutants, quelques-uns des articles courants :
*Traductions Algorithmie/Ti-Basic.
*Caractères spéciaux sur Tout82
Les défauts du TI-Basic : Goto_versus_algo et DelVar/End/Lbl/guillemet/store
 Adresse email Haut de page Bas de page 
 
Autaz
Invité
Posté le : Dim 12 Oct 2014, 1:23   Citer 


Citer : Mingerton
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 ! eyeonly.gif



Je sais que la touche 110 n'existe pas, j'ai choisis ce réel au hasard crazy.gif
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 ! winkle.gif



Merci beaucoup happy.gif

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 ^_^

  Haut de page Bas de page 
 
Autaz
Invité
Posté le : Dim 12 Oct 2014, 1:29   Citer 

EDIT: Je viens de voir le message de Linkakro, merci pour sa réponse constructive!

  Haut de page Bas de page 
 
Google_AdSense



Publicité    



 
linkakro



Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Dim 12 Oct 2014, 2:37   Citer 

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)

Pour tout le monde et surtout les débutants, quelques-uns des articles courants :
*Traductions Algorithmie/Ti-Basic.
*Caractères spéciaux sur Tout82
Les défauts du TI-Basic : Goto_versus_algo et DelVar/End/Lbl/guillemet/store
 Adresse email Haut de page Bas de page 
 
Poster un nouveau sujet Poster une réponse





  Page générée en 9 requêtes