Page 1 sur 2

Step X

Publié : sam. 27/août/2005 6:02
par kelly
un for avec Step n'est possible que si le Step indique un chiffre et pas une variable !!! DOOOOMMAGE

Publié : sam. 27/août/2005 10:37
par Dr. Dri
ca a déjà été demandé maintes fois... y'a k'à espérer...

Dri

Publié : sam. 27/août/2005 10:49
par comtois
Actuellement si j'écris

Code : Tout sélectionner

For i=1 To 10
  Debug i
Next 
Le step est par défaut égal à 1.


Ce qui serait bien c'est que si j'écris

Code : Tout sélectionner

For i=10 To 1
   Debug i
Next 
Le step devienne -1 par défaut.

Publié : sam. 27/août/2005 15:01
par Guimauve
Je crois que ce n'est pas ce que l'on demande. Ce qui serais bien pratique que selon certaines criconstances on puisse Stepper en fonction de la valeur d'une Variable. Comme ceci :

Code : Tout sélectionner

For Compteur = Min To Max Step Increment
    ; on fait quelque chose
Next
J'ai déja été confronté à un problème du genre et la seule façon de s'en sortir c'est de faire comme suit :

Code : Tout sélectionner

Procedure RemplirTableau(Increment.l)
  
  If Increment = 2
    
    For Compteur = 0 To 100 Step 2
      MonTableau(Compteur) = Compteur * Increment
    Next
    
  ElseIf Increment = 3
    
    For Compteur = 0 To 100 Step 3
      MonTableau(Compteur) = Compteur * Increment
    Next
    
  ElseIf Increment = 4
    
    For Compteur = 0 To 100 Step 4
      MonTableau(Compteur) = Compteur * Increment
    Next
    
  EndIf 
  
EndProcedure 
Mais ça aurait été bien plus simple de pouvoir mettre la variable Increment après le Step

A+
Guimauve

Publié : sam. 27/août/2005 15:43
par comtois
Guimauve a écrit :Je crois que ce n'est pas ce que l'on demande. Ce qui serais bien pratique que selon certaines criconstances on puisse Stepper en fonction de la valeur d'une Variable.
Oui moi aussi j'aimerais bien utiliser une variable pour le step , mais ce n'est pas ce que je demande :)

Mais en plus de pouvoir utiliser une variable pour le step , je demande d'avoir le step par défaut à -1 si on veut décrémenter.
Il me semble que certains BASIC fonctionnent comme ça ?
ou je me trompe ? c'est pas si important ce truc , c'est juste une idée.

Publié : sam. 27/août/2005 18:49
par Guimauve
C'est vrai que si l'argument de début est plus grand que l'argument de fin le compilateur pourrait implicitement mettre le Step à -1.

Personnlement, j'ai jamais eu un problème du genre mais qui sait pour l'avenir.

A+
Guimauve

Publié : sam. 27/août/2005 20:08
par lionel_om
Bah ya toujours la solution

Code : Tout sélectionner

i = 1
max = 1000
while i < max
  ; blabla
  ; i = i * 2
wend
:wink:

Publié : sam. 27/août/2005 20:38
par Dr. Dri
c'est pas une rustine qu'on veut mais une maj du for/next :mad:

Dri tusors:

Publié : ven. 09/sept./2005 13:29
par kelly
Methode beaucoup plus estetique et moins grosse :

Au lieu de :

Code : Tout sélectionner

For i=15 to 858 Step 17
...
...
next
On peux mettre :

Code : Tout sélectionner

i=15
stp=17
Repeat
...
...
i+stp
Until i>858;+++++++++++++++
[/code]

Publié : ven. 09/sept./2005 13:40
par Frenchy Pilou
Oui mais quand tu as 2 0000 steps on fait comment ? :D

Publié : ven. 09/sept./2005 15:51
par nico
On peut modifier la variable dans une boucle for next, j'avais déjà utiliser ce procédé pour la supression d'élément dans un ListIcon.

En voici un exemple:

Code : Tout sélectionner

Stepi=7

For i=0 To 63
;--------------- 
  ;/ le code ici
  Debug i
;--------------- 
  i=i+Stepi-1
Next i

Publié : ven. 09/sept./2005 23:18
par kelly
Frenchy Pilou a écrit :Oui mais quand tu as 2 0000 steps on fait comment ? :D

Code : Tout sélectionner

i=15 
stp=20000
Repeat 
... 
... 
i+stp 
Until i>858;+++++++++++++++ 

Publié : sam. 10/sept./2005 0:15
par Backup
i=15
stp=20000
Repeat
...
...
i+stp
Until i>858;+++++++++++++++
ton exemple est completement faux :D

i va passer de 15 a 20015

et ta boucle attend que i soit > que 858 !!!!

elle aura meme pas eu le temps de faire un tour :D

Publié : sam. 10/sept./2005 15:41
par kelly
Dobro a écrit :
i=15
stp=20000
Repeat
...
...
i+stp
Until i>858;+++++++++++++++
ton exemple est completement faux :D

i va passer de 15 a 20015

et ta boucle attend que i soit > que 858 !!!!

elle aura meme pas eu le temps de faire un tour :D
MDR (tu n'as qu'a la tester, tu verras qu'elle fait 1 seul tour)

Publié : sam. 10/sept./2005 16:10
par Dr. Dri
bah ca c'est évident... le propre de la boucle repeat c'est d'être exécutée au moins une fois... Et là même avec un while ca devrait passer à vue de nez...

Dri