Page 1 sur 3

Impossible d'utiliser For..Next avec un step en variable

Publié : jeu. 26/févr./2015 20:50
par falsam
Je viens de découvrir qu'on ne pouvait pas faire ceci

Code : Tout sélectionner

sp = 4

For i = 1 To 40 Step sp
Next

Re: Impossible d'utiliser For..Next avec un step en variable

Publié : jeu. 26/févr./2015 21:11
par GallyHC
bonjour,

Oui et cela a toujours été avec PB et je pense l'avoir signaler une fois, donc la seul façon de faire est :

Code : Tout sélectionner

sp = 4

For i = 1 To 40 Step 1
  Debug i
  i + (sp - 1)
Next
Perso, je trouvais cela pas terrible surtout qu'avec VB6 et VB.net cela ne posé aucun problème et venant de ce langage j'ai eu du mal au départ.

Cordialement,
GallyHC

Re: Impossible d'utiliser For..Next avec un step en variable

Publié : jeu. 26/févr./2015 21:45
par SPH
falsam a écrit :Je viens de découvrir qu'on ne pouvait pas faire ceci

Code : Tout sélectionner

sp = 4

For i = 1 To 40 Step sp
Next
Ca fait un million d'annees qu'on ne peux pas faire ca :wink:

Re: Impossible d'utiliser For..Next avec un step en variable

Publié : jeu. 26/févr./2015 22:58
par nico
Oui mais comme le montre GallyHC, ça n'as jamais constitué un problème non plus.

Re: Impossible d'utiliser For..Next avec un step en variable

Publié : jeu. 26/févr./2015 23:36
par falsam
nico a écrit :Oui mais comme le montre GallyHC, ça n'as jamais constitué un problème non plus.
Tout à fait d'accord. Ce n'est pas un obstacle.

Re: Impossible d'utiliser For..Next avec un step en variable

Publié : jeu. 26/févr./2015 23:45
par SPH
falsam a écrit :
nico a écrit :Oui mais comme le montre GallyHC, ça n'as jamais constitué un problème non plus.
Tout à fait d'accord. Ce n'est pas un obstacle.
Oui, et il y a meme plusieurs facon de contourner le probleme 8) :idea:

Re: Impossible d'utiliser For..Next avec un step en variable

Publié : jeu. 26/févr./2015 23:48
par falsam
SPH a écrit :Oui, et il y a meme plusieurs facon de contourner le probleme
Au moins un code peut être ?

Petite remarque, mon souhait n'était pas de faire varier le pas durant l’exécution de la boucle mais de l'initialiser avant son exécution :)

Re: Impossible d'utiliser For..Next avec un step en variable

Publié : jeu. 26/févr./2015 23:53
par SPH
Un code demain car la : zolpidem of love :idea:

Re: Impossible d'utiliser For..Next avec un step en variable

Publié : jeu. 26/févr./2015 23:57
par falsam
SPH a écrit :zolpidem of love
Bonne nuit dans ce cas :)

Code : Tout sélectionner

sp = 4

For i = 1 To 40
  Debug i
  i + sp - 1
Next

Re: Impossible d'utiliser For..Next avec un step en variable

Publié : ven. 27/févr./2015 0:05
par falsam
Une autre solution avec l'option Step 0

Code : Tout sélectionner

sp = 4

For i = 1 To 40 Step 0
  Debug i
  i + sp
Next

Re: Impossible d'utiliser For..Next avec un step en variable

Publié : ven. 27/févr./2015 7:55
par kernadec
bonjour
De la même manière, j'utilise une boucle "Repeat Until" dans le code de madalas3d avec une incrémentation décimale et variable
pour pouvoir dessiner des polygones dont la corde est un nombre décimal! : exemple 360 / 7 = 51.42857143

Cordialement

Re: Impossible d'utiliser For..Next avec un step en variable

Publié : ven. 27/févr./2015 8:33
par PAPIPP
Bonjour à tous

Comme cela avec Double .d 8 octets valeur illimitée.

Code : Tout sélectionner

Procedure.d ford(debd.d,find.d,pasd.d)
  Protected Id.d=debd
  While  id <= find 
    
    ;     :Placez ici vos instructions
    
    Debug id
    id+pasd
  Wend  
EndProcedure
ford (1,40,4)
ford (#PI,30*#PI ,3.4)
A+

Re: Impossible d'utiliser For..Next avec un step en variable

Publié : ven. 27/févr./2015 9:08
par Kwai chang caine
falsam a écrit :Je viens de découvrir qu'on ne pouvait pas faire ceci
c'est vrai on en a souvent parlé.
Ca fait partie des vieilles requetes comme le gosub dans une procedure et dont certaines ont ete ajoute depuis, comme le retour a la ligne

Cool le step 0… j'y aurait pas pensé 8)

Re: Impossible d'utiliser For..Next avec un step en variable

Publié : ven. 27/févr./2015 9:17
par PAPIPP
Suite de l"étude précédente.

avec les boucles for nous avons 4 cas à tester
For i=0 To 40 Step 2
Debug i
Next
Debug "fin For i=0 To 40 Step 2"
For i=10 To 0 Step 2
Debug i
Next
Debug "fin i=10 To 0 Step 2"

For i=0 To 40 Step -2
Debug i
Next
Debug "fin For i=0 To 40 Step -2"
For i=10 To 0 Step -2
Debug i
Next
Debug "fin i=10 To 0 Step -2"
Deux types de boucles déroulent normalement en fonction du début de la fin et du pas

on peut réaliser la meme chose avec la procédure en .d

Code : Tout sélectionner

Procedure inst_ford(id.d)
  
  ; :Placez ici vos instructions
  
  Debug id 
EndProcedure

Procedure.d ford(debd.d,find.d,pasd.d)
  Protected Id.d=debd
  If id >=find And pasd<0
    While  id >= find 
      inst_ford(id)
      id+pasd
    Wend  
    Debug "fin id >= find "
  ElseIf  id <= find  And pasd>0
    While  id <= find 
      inst_ford(id)
      id+pasd
    Wend 
    Debug "fin id <= find "
    
  EndIf
  Debug "**************"
EndProcedure
ford (1,40,4)

ford (#PI,30*#PI ,3.4)
ford (#PI,-30*#PI,-3.4)
;les instructions suivantes avec debut <= fin et pas négatif (1)  ou  debut >= fin et pas positif  ne seront pas exécutées boucle proche de l'infini
ford (#PI,-30*#PI,3.4)
ford (#PI,30*#PI,-3.4)
A+

Re: Impossible d'utiliser For..Next avec un step en variable

Publié : ven. 27/févr./2015 9:46
par MLD
Salut a tous.
Mais comme ceci, c'est OK avec une constante ?

Code : Tout sélectionner

#sp = 4

For i = 1 To 40 Step #sp
  Debug i
Next
La solution avec step 0 est super.

Ou sans step avec i + sp-1
En fait le step n'accepte que des constantes ?? Dommage!