Autorisation : Membre
Nb de messages : 856
Inscrit le : Mer 18 Juil 2012, 18:44
Posté le : Jeu 23 Mai 2013, 13:41
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...
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.
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)