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

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

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

Message 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
Dernière modification par falsam le jeu. 26/févr./2015 23:36, modifié 1 fois.
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
GallyHC
Messages : 1708
Inscription : lun. 17/déc./2007 12:44

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

Message 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
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Avatar de l’utilisateur
SPH
Messages : 4947
Inscription : mer. 09/nov./2005 9:53

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

Message 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:

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

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

Message par nico »

Oui mais comme le montre GallyHC, ça n'as jamais constitué un problème non plus.
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

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

Message 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.
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
SPH
Messages : 4947
Inscription : mer. 09/nov./2005 9:53

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

Message 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:

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

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

Message 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 :)
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
SPH
Messages : 4947
Inscription : mer. 09/nov./2005 9:53

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

Message par SPH »

Un code demain car la : zolpidem of love :idea:

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

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

Message 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
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

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

Message 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
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
kernadec
Messages : 1606
Inscription : ven. 25/avr./2008 11:14

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

Message 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
PAPIPP
Messages : 534
Inscription : sam. 23/févr./2008 17:58

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

Message 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+
Il est fort peu probable que les mêmes causes ne produisent pas les mêmes effets.(Einstein)
Et en logique positive cela donne.
Il est très fortement probable que les mêmes causes produisent les mêmes effets.
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

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

Message 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)
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
PAPIPP
Messages : 534
Inscription : sam. 23/févr./2008 17:58

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

Message 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+
Il est fort peu probable que les mêmes causes ne produisent pas les mêmes effets.(Einstein)
Et en logique positive cela donne.
Il est très fortement probable que les mêmes causes produisent les mêmes effets.
Avatar de l’utilisateur
MLD
Messages : 1124
Inscription : jeu. 05/févr./2009 17:58
Localisation : Bretagne

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

Message 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!
Répondre