Page 2 sur 3
Re: Impossible d'utiliser For..Next avec un step en variable
Publié : ven. 27/févr./2015 10:43
par Kwai chang caine
Mais comme ceci, c'est OK avec une constante ?
Le probleme c'est qu'une constante par definition est constante, c'est à dire qu'elle est remplacée dans le code par sa valeur à la compilation
Hors FALSAM de ce que j'ai compris (Je me permet de me permettre mon cher et tendre

), ne veut pas specialement modifier la valeur du pas en cours, mais pouvoir adresser un pas different à chaque fois qu'il appellerait cette boucle, par exemple en parametre dans une procedure
Code : Tout sélectionner
Procedure BoucleDeGuedin(Pas)
For i = 1 to 100 Step Pas
.....
....
Next
EndProcedure
Re: Impossible d'utiliser For..Next avec un step en variable
Publié : ven. 27/févr./2015 11:09
par Marc56
falsam a écrit :Je viens de découvrir qu'on ne pouvait pas faire ceci
C'est effectivement bizarre.
Je me demande si c'est un oubli, ou si c'est lié à une contrainte de programmation ?

Re: Impossible d'utiliser For..Next avec un step en variable
Publié : ven. 27/févr./2015 11:15
par MLD
Salut KCC
Content de te parler.
Oui j'ai bien compris. Ce que je voulais dire, c'est que le step a la limite pouvais utiliser une constante. sous cette forme (#X = zz)
Enfin la doc précise bien que step = constante.
Re: Impossible d'utiliser For..Next avec un step en variable
Publié : ven. 27/févr./2015 11:20
par GallyHC
Bonjour,
Je penche pour une limitation dans PB, mais bon comme beaucoup le montre on peut faire en sorte de s'en sortir. Plusieurs demandes on été en ce sens, sans aboutir. Ce n'est pas forcement une demande "trop" importante tant que l'on peu s'en passé.
PS: jamais pensé au "Step 0" et je pense que je vais modifier certain de mes codes dans ce sens, juste pour évité de faire un "+" avec un "-1" dans le "For". Moins il y a de calcul mieux c'est.
Merci Falsam, j'ai appris un nouveau truc.
Cordialement,
GallyHC
Re: Impossible d'utiliser For..Next avec un step en variable
Publié : ven. 27/févr./2015 11:36
par Ar-S
J'ai aussi été confronté à ce soucis. Même si c'est remédiable, c'est tout à fait étrange que celà ne fonctionne pas. Que la variable soit globale ou non.
Une solution plus simple que de bidouiller le i, utiliser une constante.
Re: Impossible d'utiliser For..Next avec un step en variable
Publié : ven. 27/févr./2015 11:51
par GallyHC
Bonjour,
Ar-S > Ta solution ne résout pas le problème d'avoir un "PAS" variable (évoqué par MLD et corrigé par KCC), qui peu être utile pour généré une fonction lambda qui doit avoir un paramètre du dit "PAS".
Mettre une constante revient a écrire le "PAS" en dur dans "Step". La solution de falsam est a mon sens la meilleur (avec "step 0").
Code : Tout sélectionner
Define.i i, iPAS = 4
For i=1 To 40 Step 0
Debug i
i + iPAS
Next i
Cela évite le "-1" de ma méthode (J'avais jamais pensé que un "Step 0" pouvais être possible, car cela peu bloqué le programme en cas d'erreur de programmation de celui qui l'a fait).
Donc comme demande intéressent pour PB, serait d'interdire les "Step 0" et de pouvoir mettre une variable au "Step". Et cela afin d'évité un "For" fixe qui oblige un calcul supplémentaire pour le rendre plus flexible.
Cordialement,
GallyHC
Re: Impossible d'utiliser For..Next avec un step en variable
Publié : ven. 27/févr./2015 22:42
par falsam
Whaouu, je ne pensais pas que ce topic allait suscité de passion.
Kwai chang caine a écrit :Hors FALSAM de ce que j'ai compris (Je me permet de me permettre mon cher et tendre ), ne veut pas specialement modifier la valeur du pas en cours, mais pouvoir adresser un pas different à chaque fois qu'il appellerait cette boucle, par exemple en parametre dans une procedure
Tu as tout compris mon Kwai chang caine. Ne penses tu pas qu'on fusionne trop, tout les deux ? J'ai parfois l'impression que tu es dans ma tête.
Comment tu m'as appelé ? Ha oui
mon cher et tendre 
Re: Impossible d'utiliser For..Next avec un step en variable
Publié : sam. 28/févr./2015 10:16
par Kwai chang caine
Que neni....l'amour c'est ..comment dire pour utiliser un terme compris de tous ici ....
Ahhhhh oui !!! j'ai trouvé ......
binaire
On aime ou on aime pas

Re: Impossible d'utiliser For..Next avec un step en variable
Publié : sam. 28/févr./2015 10:45
par MLD
Aprés L'amour est dans le pré. Maintenant c'est L'amour est dans l'ordi HaHAHa

Re: Impossible d'utiliser For..Next avec un step en variable
Publié : sam. 28/févr./2015 13:41
par Fig
Pour ma part je propose plutôt cette méthode (pour l'optimisation vis à vis de l'assembleur que ça sort... Pour les puristes)
Le coup du step 0 est ingénieux

Re: Impossible d'utiliser For..Next avec un step en variable
Publié : sam. 28/févr./2015 14:02
par nico
En macro, ça donne:
Code : Tout sélectionner
Macro ForEx(Variable, Debut, Fin)
Variable = Debut
While Variable <= Fin
EndMacro
Macro NextEx(Variable, Pas)
Variable = Variable + Pas
Wend
EndMacro
ForEx(a, 10, 20)
Debug a
NextEx(a, 3)
Debug "---------------------------"
Step1 = 3
Debut1 = 10
Fin1 = 20
ForEx(b, Debut1, Fin1)
Debug b
NextEx(b, Step1)
Re: Impossible d'utiliser For..Next avec un step en variable
Publié : sam. 28/févr./2015 14:07
par Fig
Re: Impossible d'utiliser For..Next avec un step en variable
Publié : sam. 28/févr./2015 16:39
par PAPIPP
Bonjour à tous
merci nico
et avec un pas négatif
Code : Tout sélectionner
Macro ForP(Variable,Debut,Fin);,pas)
variable=debut
While Variable<=Fin ;And pas >0
EndMacro
Macro Forn(Variable,Debut,Fin);,pas)
variable=debut
While Variable>=Fin ;And pas <0
EndMacro
Macro Nextpn(Variable,Pas)
Variable+Pas
Wend
EndMacro
Forp(a.d,10.0,20.0)
Debug a
Nextpn(a,4)
Debug "---------------------------"
Forn(b.d,200.0,10.0)
Debug b
Nextpn(b,-10.0)
Debug "---------------------------"
forn (C.d,#PI,-30*#PI);,-3.4)
Debug c
nextpn(C.d,-3.4)
A+
Re: Impossible d'utiliser For..Next avec un step en variable
Publié : sam. 28/févr./2015 17:46
par nico
Oui bien vu, j'ai essayé de le faire en gardant les mêmes instructions mais il semble qu'on ne puisse créer une macro à partir d'une autre macro, faut que je regarde sur le forum En, en attendant je l'ai fait avec des compilerif:
Code : Tout sélectionner
Macro Incrementation(Variable, Fin, Increment)
CompilerIf Increment = "+"
While Variable <= Fin
CompilerElseIf Increment = "-"
While Variable >= Fin
CompilerEndIf
EndMacro
Macro ForEx(Variable, Debut, Fin, Increment)
Variable = Debut
Incrementation(Variable, Fin, Increment)
EndMacro
Macro NextEx(Variable, Pas)
Variable = Variable + Pas
Wend
EndMacro
ForEx(a, 10, 20, "+")
Debug a
NextEx(a, 3)
Debug "---------------------------"
Step1 = -3
Debut1 = 20
Fin1 = 10
ForEx(b, Debut1, Fin1, "-")
Debug b
NextEx(b, Step1)
Re: Impossible d'utiliser For..Next avec un step en variable
Publié : sam. 28/févr./2015 19:56
par SPH
Fig a écrit :Pour ma part je propose plutôt cette méthode (pour l'optimisation vis à vis de l'assembleur que ça sort... Pour les puristes)
+1
Fig a écrit :Le coup du step 0 est ingénieux

Je n'ai pas capté l"astuce...
