| Goto ou quitter |
| Auteur |
Message |
Vavas
Invité
|
Posté le : Jeu 14 Jui 2012, 11:49
|
|
|
Bonjour.
Lorsqu'une boucle est en cours entre un lbl et un goto, comment faire en sorte qu'avec une précision de 2nd et mode (quitter) le programme se quitte.
Car l'arrêt avec ON est un peu.. moyen.
|
| |
|
| |
Vavas
Invité
|
Posté le : Jeu 14 Jui 2012, 11:50
|
|
|
préssion*
|
| |
|
| |
sandro
Autorisation : Membre
Nb de messages : 1366
Inscrit le : Ven 25 Mar 2011, 22:58
|
Posté le : Jeu 14 Jui 2012, 11:59
|
|
|
Tu rajoute en première ligne du programme un 0 -> L
puis juste après le Lbl tu rajoute:
| Code | CodeTouch -> K
If K=21
non(L -> L
If KL=22
Stop |
ça devrait marcher
Stop est dans le menu prgm/ctl ; CodeTouch dans le menu prgm/ E/S ; non( dans le menu test/logique
Sandro
---------------------- mort à l'inutile, place à la mémoire libre et aux programmes |
 |
|
| |
Persalteas
Autorisation : Membre
Nb de messages : 2086
Inscrit le : Sam 23 Jan 2010, 20:09
|
Posté le : Jeu 14 Jui 2012, 13:29
|
|
|
ce serait pas K+L plutôt que KL ?
|
 |
|
| |
F-BVXT
Autorisation : Membre
Nb de messages : 177
Inscrit le : Dim 27 Mai 2012, 20:38
|
Posté le : Jeu 14 Jui 2012, 18:02
|
|
|
Non, il me semble que c'est bien KL puisque le but est d'appuyer sur 2nde puis mode (quitter). Par contre, avec ça, je crois qu'à partir du moment ou il aura appuyé une seule fois sur 2nde, il n'aura plus qu'à appuyer sur mode même si ce n'est pas la touche appuyée immédiatement après.
Je propose donc ça :
| Code | CodeTouch -> K
If K=21
non(L -> L
If KL=22
Stop
If min(K[différent de]{21,22
EffVar L |
---------------------- Il y a 10 types de personnes dans le monde : celles qui comprennent le binaire et celles qui ne le comprennent pas. |
 |
|
| |
Persalteas
Autorisation : Membre
Nb de messages : 2086
Inscrit le : Sam 23 Jan 2010, 20:09
|
Posté le : Jeu 14 Jui 2012, 19:29
|
|
|
Ah non ! là, ta ligne de code elle sert a rien puisque le programme s'arrête avant de l'avoir lue !
| Code | CodeTouch -> K
If K=21
non(L -> L
If min(K[différent de]{21,22
EffVar L
If KL=22
Stop |
Dans ce cas, OK.
|
 |
|
| |
The K
Autorisation : Membre
Nb de messages : 850
Inscrit le : Sam 15 Oct 2011, 11:07
|
Posté le : Jeu 14 Jui 2012, 20:49
|
|
|
Il y a aussi la méthode simple : tu quittes pas.
Parce qu'à l'origine c'est pas prévu pour xD
---------------------- La la la ...
Avez-vous pensé à regarder le manuel avant de demander conseil ? Un manuel est fait avant tout pour être consulté : MANUEL
Vous avez un problème avec l'ordinateur avec votre calculatrice ? SOLUTION EN VIDEO
Mes programmes sur le site : Produit scalaire KMorpion Puissance 4 Mastermind
Mes nouveaux programmes de calcul formel : FCarré FPrime
Projet base de données : ici mais abandonné. Trop de travail ... |
 |
|
| |
F-BVXT
Autorisation : Membre
Nb de messages : 177
Inscrit le : Dim 27 Mai 2012, 20:38
|
Posté le : Jeu 14 Jui 2012, 21:56
|
|
|
| Citer | | Ah non ! là, ta ligne de code elle sert a rien puisque le programme s'arrête avant de l'avoir lue ! |
Je comprend pas bien ce que tu veux dire, parce que si K=21, alors le programme ne va pas s'arrêter (KL=21). Ensuite, dans le deuxième tour de boucle, si K=22 alors KL=22 et donc le programme s'arrête. Par contre s'il réappuie sur 2nde, rien ne va se passer mais s'il appuie sur une autre touche, il faudra recommencer l'opération (2nde puis quitter), non ?
Du coup, c'est vrai qu'avec ce raisonnement on peut supprimer le If K [différent de 22] :
| Code | CodeTouch -> K
If K=21
non(L -> L
If KL=22
Stop
If K-21
EffVar L |
---------------------- Il y a 10 types de personnes dans le monde : celles qui comprennent le binaire et celles qui ne le comprennent pas. |
 |
|
| |
Persalteas
Autorisation : Membre
Nb de messages : 2086
Inscrit le : Sam 23 Jan 2010, 20:09
|
Posté le : Ven 15 Jui 2012, 9:41
|
|
|
Ben... si !
Si il appuie une fois sur la touche [2nde], puis, beaucoup plus tard, peut être en ayant pressé d'autres touches avant, il appuie sur [mode], ça quittera...
|
 |
|
| |
F-BVXT
Autorisation : Membre
Nb de messages : 177
Inscrit le : Dim 27 Mai 2012, 20:38
|
Posté le : Ven 15 Jui 2012, 10:43
|
|
|
Bon, cet fois ci j'ai essayé et ça ne marche que s'il appuie sur 2nde et que la touche pressé après est mode (quitter) :
| Code |
EffVar L
LBL 0
CodeTouche -> K
If K=21
non(L -> L
If KL=22
Stop
If min(K[différent de]{0,21
EffVar L
Goto 0 |
---------------------- Il y a 10 types de personnes dans le monde : celles qui comprennent le binaire et celles qui ne le comprennent pas. |
 |
|
| |
linkakro
Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
|
Posté le : Sam 16 Jui 2012, 16:39
|
|
|
Je trouve cela bien compliqué (à première vue, sans certitude), je pense qu'il suffirait d'une variable intermédiaire.
Et pour cela on a pas forcément besoin d'utiliser la commande non().
| Code | DelVar L
Repeat L=21 and K=22
If K
K->L
getKey->K
End
"OK |
EDIT: j'ai ajoûté le If K
---------------------- 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 |
 |
|
| |
Persalteas
Autorisation : Membre
Nb de messages : 2086
Inscrit le : Sam 23 Jan 2010, 20:09
|
Posté le : Sam 16 Jui 2012, 17:50
|
|
|
Waw
:pwned:
|
 |
|
| |
F-BVXT
Autorisation : Membre
Nb de messages : 177
Inscrit le : Dim 27 Mai 2012, 20:38
|
Posté le : Sam 16 Jui 2012, 18:26
|
|
|
Je ne dirai qu'une chose.
---------------------- Il y a 10 types de personnes dans le monde : celles qui comprennent le binaire et celles qui ne le comprennent pas. |
 |
|
| |
linkakro
Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
|
Posté le : Sam 16 Jui 2012, 21:10
|
|
|
Je viens de remarquer que mon code est faux lui aussi ! 
En effet il faudrait appuyer sur les touches plus vite que la lecture du programme.
J'ai édité mon message précédent en réglant ce problème.
De façon secondaire, remarquons que cette méthode ne permet pas d'avoir plusieurs sorties différentes. Il faudrait donc utiliser d'autres types boucles et sûrement des goto.
Je pense à :
| Code | Lbl 0
...
If K
K->L
getKey->K
...
If K=22 and L=21
Goto 1
If K=... and L=...
Goto 2
...
Goto 0
Lbl 1
...
Goto 3
Lbl 2
...
Lbl 3 |
Ici le Lbl 0 pourrait être un While 1, seulement je me méfie du conflit goto/end.
---------------------- 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 |
 |
|
| |
Google_AdSense
|
Publicité
|
|
|
|
| |
F-BVXT
Autorisation : Membre
Nb de messages : 177
Inscrit le : Dim 27 Mai 2012, 20:38
|
Posté le : Sam 16 Jui 2012, 21:51
|
|
|
Certes, mais le sujet original c'était d'arrêter le programme avec la touche quitter entre un LBL et un Goto donc c'est tout simplement :
| Code | Lbl 0
If K
K->L
codeTouche->K
If K=22 et L=21
Goto 0
|
| Citer | | Ici le Lbl 0 pourrait être un While 1, seulement je me méfie du conflit goto/end. |
Je ne vois pas de quel conflit tu parles, il suffit de mettre un End au début de chaque LBL vers lesquels nous renvoie les Goto compris dans la boucle, non ?
| Code | While 1 //ou Repeat 0
...
If K
K->L
getKey->K
...
If K=22 and L=21
Goto 1
If K=... and L=...
Goto 2
...
End
Lbl 1
End
...
Goto 3
Lbl 2
End
...
Lbl 3 |
Ah, et sinon: "..."
---------------------- Il y a 10 types de personnes dans le monde : celles qui comprennent le binaire et celles qui ne le comprennent pas. |
 |
|
| |
The K
Autorisation : Membre
Nb de messages : 850
Inscrit le : Sam 15 Oct 2011, 11:07
|
Posté le : Sam 16 Jui 2012, 22:38
|
|
|
Vous me faites plaisir avec vos "If K" ^^
Bon sinon je vous signale que vous êtes en train de discuter d'un morceau de code plutôt inutile et dont l'auteur (enfin celui qui l'a demandé) ne donne plus suite.
Voilà, post K-rrément inutile du jour 
---------------------- La la la ...
Avez-vous pensé à regarder le manuel avant de demander conseil ? Un manuel est fait avant tout pour être consulté : MANUEL
Vous avez un problème avec l'ordinateur avec votre calculatrice ? SOLUTION EN VIDEO
Mes programmes sur le site : Produit scalaire KMorpion Puissance 4 Mastermind
Mes nouveaux programmes de calcul formel : FCarré FPrime
Projet base de données : ici mais abandonné. Trop de travail ... |
 |
|
| |
F-BVXT
Autorisation : Membre
Nb de messages : 177
Inscrit le : Dim 27 Mai 2012, 20:38
|
Posté le : Sam 16 Jui 2012, 22:42
|
|
|
Enfin, peut-être qu'il va répondre parce que ça fait que 2 jours qu'il a posté donc on sait jamais... même si tu as probablement raison. 
---------------------- Il y a 10 types de personnes dans le monde : celles qui comprennent le binaire et celles qui ne le comprennent pas. |
 |
|
| |
linkakro
Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
|
Posté le : Sam 16 Jui 2012, 22:55
|
|
|
Ce que tu viens d'écrire empêche de lire le contenu des Lbl ! (par un retour au début) C'est précisément le conflit dont je parle.
https://tout82.pages-perso.free.fr/forum/sujet.php?sujet=2757
Cependant tu viens de soulever quelque chose de très intéressant, sans le savoir.
Voir le chapitre suivant du tutoriel de mdr1 sur le sdz : https://web.archive.org/web/20121218002930/http://www.siteduzero.com/tutoriel-3-407869-amusons-nous-avec-les-end.html
Si les séquences se terminent par un retour au début, on peut exploiter volontairement le bug.
| Code | While 1
...
If K
K->L
getKey->K
...
If K=22 and L=21
Goto 1
If K=... and L=...
Goto 2
...
End
Lbl 1
...
End // retour au début !
Lbl 2
...
End // retour au début ! |
---------------------- 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 |
 |
|
| |
The K
Autorisation : Membre
Nb de messages : 850
Inscrit le : Sam 15 Oct 2011, 11:07
|
Posté le : Sam 16 Jui 2012, 23:02
|
|
|
Mouais ... T'as pas tort.
Mais ça marche pas toujours. J'ai essayé avec un End conditionnel une fois ça a pas marche 
---------------------- La la la ...
Avez-vous pensé à regarder le manuel avant de demander conseil ? Un manuel est fait avant tout pour être consulté : MANUEL
Vous avez un problème avec l'ordinateur avec votre calculatrice ? SOLUTION EN VIDEO
Mes programmes sur le site : Produit scalaire KMorpion Puissance 4 Mastermind
Mes nouveaux programmes de calcul formel : FCarré FPrime
Projet base de données : ici mais abandonné. Trop de travail ... |
 |
|
| |
F-BVXT
Autorisation : Membre
Nb de messages : 177
Inscrit le : Dim 27 Mai 2012, 20:38
|
Posté le : Sam 16 Jui 2012, 23:11
|
|
|
Ah oui autant pour moi il faut dans ce cas ne pas mettre While 1 mais While I par exemple et faire EffVar I au début de chaque LBL.
---------------------- Il y a 10 types de personnes dans le monde : celles qui comprennent le binaire et celles qui ne le comprennent pas. |
 |
|
| |