Simulation dans PE

PapyJP

Senior Member
J' écris le code tout bête ci dessous dans PE
Code:
symbol n=b9
	for n=0 to 4
		b3=$38+ n
		pause 5000
	next n
>>> Simulate

Dans la fenêtre ' simulation ' je vois bien, pendant la pause, que b3 prends les valeurs ( il faut cocher Hex ) $38 à $3C, soit 5 valeurs. Ok
Mais au final b9 = 5 ! ( je pensais trouver b9=4 ... d' autant plus que l' on voit bien que b9 part de zéro ).
Or, plus loin, j' ai besoin de b9+1. d'où b9 = 6 !
D' où une erreur difficile à trouver !
Question: Est-ce un défaut de la simulation ET/OU retrouverai-je cette anomalie dans le code compilé ?
 
Last edited:

MGU

Senior Member
Bonjour,

Non, je pense que c'est logique avec un for/next, le test est au début
Le dernier passage dans la boucle se fait avec n=4
A la fin, n passe à 5 avec next n
n n'est plus dans les conditions et la boucle s'arrête. Mais n reste à 5
Faut faire n-1 en sortie de boucle ou prendre un Do/loop avec un test à la fin.

MM
 

BESQUEUT

Senior Member
A ma connaissance, tous les BASICs ont ce comportement. Pour moi, ce n'est pas un bug du simulateur, et pas non plus du PICAXE.
Si plus loin, vous avez besoin de b9 "+1", il suffit de ne rien faire du tout
Comme quoi "par defaut" le BASIC a anticipé votre besoin...
 

alainav1

Senior Member
la procedure tant que existe
'exemple
b0=1
do while b0<10
b0=b0+1
loop
les actions entre do et loop se repetent tant que la condition (while ) est remplie
dans cette procedure il est important d'intitialiser la condition avant de rentrer dans le "do loop" et de faire evoluer la condition dans le "do loop " sinon on ne rentre pas dans la boucle ou on n'en ressort pas
cordialement
Alain
 

PapyJP

Senior Member
Merci à tous.
vous proposez plein de solutions qui fonctionnent et, comme par zazard, j' ai choisi la méthode qui ne fonctionne pas !
 

BESQUEUT

Senior Member
j' ai choisi la méthode qui ne fonctionne pas !
Ou bien je n'ai rien compris, ou bien ça marche très bien puisque vous avez justement besoin de b9+1
Sauf que vous n'avez pas besoin d'ajouter 1, ce qui effectivement fausserait la suite du traitement...
 

PapyJP

Senior Member
Ok, ça ' marche ' effectivement très bien.
Votre remarque est judicieuse et fait partie des nombreuses solutions proposées.
Elle fait gagner deux lignes ! Et donc,probablement, du temps d' éxécution .
Merci
 
Last edited:
Top