Gamme TI-82


Poster un nouveau sujet Poster une réponse
Question sur les programmes
Auteur Message
percevan80



Autorisation : Membre
Nb de messages : 19
Inscrit le : Mar 09 Oct 2012, 12:47
Posté le : Jeu 23 Mai 2013, 8:43   Citer 

Voici un petit code qui vous prendra 20 seconde a recopier


Code

Lbl 1
1->A
entAleat(1,16)->B
entAleat(1,16)->C
Lbl 2
EffEcr
If A=9
Then
Goto 1
Else
Output(A,B,"I
Output(A,B,"I
69!
A+1->A
Goto 2


J'aimerai savoir pourquoi un programme si simple commence a lagger au bout de trés peu de temps parce que sa m'énerve!!! evil.gif evil.gif

----------------------
La vie est une grande aventure. La mort n'est que le prolongement de cette aventure...
 Adresse email Haut de page Bas de page 
 
m@thieu41



Autorisation : Membre
Nb de messages : 855
Inscrit le : Mer 18 Juil 2012, 18:44
Posté le : Jeu 23 Mai 2013, 13:41   Citer 

Bonjours,
C'est un truc tout bête:
Tu as mis:

Code
If A=9
Then
Goto 1
Else


A ne jamais faire
En effet un

Code
If A=9
Goto 1


Aurait suffit, puisque si A!=9, l'opération Goto 1 n'est pas exécutée, et la calto reprend après cette instruction.

Je vais essayer de répondre à ta question, quand au pourquoi ça lague:
Lorsque tu faisais:

Code
If
Then
Else


La calto "retiens" qu'elle doit s'attendre à rencontrer un "End", qui doit lui indiquer qu'elle n'est plus dans le bloc "if".
Or, juste après le Then et le Else, tu met des Goto 1/Goto 2.
Ceci ne fait pas sortir la calto de le bloc "if"
Ensuite, elle réexécute un nouveau bloc "if", alors qu'elle n'est pas sorti de l’ancien -> Les "if" s'accumulent, et à chaque fois, tu en rajoutes un à la "pile".
Ceci fait ralentir la calto... crazy.gif

Ce qu'il faut retenir:
Lorsque tu utilise l'instruction "if Then Else" (c'est pareil pour les boucles (Repeat / While / For et autres...), la calto "retient" qu'elle risque de rencontrer un "End".
Un "Goto" ne fait pas sortir la calto des blocs de condition/boucles.
Ainsi, la calto retient à chaque fois qu'elle doit s'attendre à un "End", ce qui finit par ralentir sa performance.
Il ne faut donc jamais utiliser de "If Then" / "While"... sans mettre de "End" (de sorte à ce que la calto le lise avant de retourner dans le même bloc.
Avec juste "If" par contre, seule l'instruction suivante est concernée, il n'y a pas besoin de "End", tu peux donc mettre un "Goto" dans ce cas.

En fait, il s'agit d'un problème qu'on peut exploiter afin de créer des "routines", je sais que quelqu'un (Linkakro il me semble) avait posté une explication peut-être plus claire sur le sujet, je te donne le lien si je le trouve.

Si tu as des questions, n'hésite pas winkle.gif

----------------------
Pour vous aidez dans vos débuts (et même ensuite ^^) :
*Tuto Algo->Ti Basic (par Linkakro) : Traduisez vos algo (de type algobox) en prgm pour votre TI!
*Catalogue des emplacements et traductions (anglais/français) des fonctions sur la TI.
*Faites vos propres programmes de maths (par ash)

Et au fait: la politesse n'a jamais tué personne winkle.gif
 Adresse email Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3772
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Jeu 23 Mai 2013, 16:52   Citer 

HéHé c'est bien moi l'auteur de l'article que mentionne m@thieu41.
http://tout82.free.fr/forum/sujet.php?sujet=2757

L'explication de m@thieu41 me semble bien.
Mon article ne développe pas en détail le comportement des routines utilisant ce bug, contrairement au tuto de mdr1 du Site-Du-Zéro, qui m'a inspiré et que j'indique.

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





  Powered by Fire-Soft-Board v1.0.10 © 2004 - 2019 Groupe FSB
Page générée en 9 requêtes
BlackOne par Grimmlink