Step dans une procedure

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
venom
Messages : 3072
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Step dans une procedure

Message par venom »

Bonjour a tous,

Voilà j'ai déjà étais face a ce problème, mais je n'ai jamais chercher a le résoudre vraiment. :oops:
Je cherche le moyen de renvoyer une valeur a step dans une boucle For Next. Comme je ne sais pas trop comment expliqué l'erreur, voici un exemple simple :

Code : Tout sélectionner

Procedure TestStep(Min, Max, ValeurPas)
For a = Min To Max Step ValeurPas
 Debug a 
Next
EndProcedure

TestStep(0, 100, 2)
Voila. Je ne sais pas pourquoi PureBasic me renvoie une telle erreur 8O Le retour d'information (ValeurPas) est pourtant bon ?? :?
Il y a t'il une alternative ? Merci






@++
Dernière modification par venom le sam. 07/sept./2019 20:58, modifié 1 fois.
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Avatar de l’utilisateur
SPH
Messages : 4726
Inscription : mer. 09/nov./2005 9:53

Re: Step dans une procedure

Message par SPH »

un Step x n'est pas possible; meme hors procedure. Va falloir que tu fasse par exemple un while wend :P
http://HexaScrabble.com/
!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.00 - 64 bits
Avatar de l’utilisateur
venom
Messages : 3072
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Re: Step dans une procedure

Message par venom »

C'est bien dommage que ça ne soit pas possible. :x Ta réponse ne m'arrange pas.






@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Avatar de l’utilisateur
Naheulf
Messages : 191
Inscription : dim. 10/mars/2013 22:22
Localisation : France

Re: Step dans une procedure

Message par Naheulf »

On peut utiliser Step dans une boucle For (y compris dans une procédure) mais la valeur après Step doit impérativement être une constante (voir la doc)
Exemple de code valide :

Code : Tout sélectionner

Procedure TestStep(Min, Max)
	For a = Min To Max Step 2
		Debug a
	Next
EndProcedure

TestStep(0, 100)
Avatar de l’utilisateur
venom
Messages : 3072
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Re: Step dans une procedure

Message par venom »

Oui, dommage que ça doit être une constante. Je vais réfléchir autrement pour pallier au problème.






@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Avatar de l’utilisateur
SPH
Messages : 4726
Inscription : mer. 09/nov./2005 9:53

Re: Step dans une procedure

Message par SPH »

Code : Tout sélectionner

Procedure TestStep(Min, Max, ValeurPas)
; For a = Min To Max Step ValeurPas
; Debug a
; Next

a=Min
While Min<=Max
  Debug a
  a+ValeurPas
  Min+ValeurPas
Wend
EndProcedure

TestStep(0, 100, 2)

Ou plus simplement :

Code : Tout sélectionner

Procedure TestStep(Min, Max, ValeurPas)
; For a = Min To Max Step ValeurPas
; Debug a
; Next

While Min<=Max
  Debug Min
  Min+ValeurPas
Wend
EndProcedure

TestStep(0, 100, 2)

http://HexaScrabble.com/
!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.00 - 64 bits
Avatar de l’utilisateur
Naheulf
Messages : 191
Inscription : dim. 10/mars/2013 22:22
Localisation : France

Re: Step dans une procedure

Message par Naheulf »

SPH, Je ne comprends pas ton premier exemple car tu utilise "a" comme itérateur mais tu Continue à utiliser "Min" pour la condition de fin de boucle...
À mon avis, on peut se contenter d'un simple :

Code : Tout sélectionner

Procedure TestStep(Min, Max, ValeurPas)
	a = Min           ; For a = Min
	While a <= Max    ; To Max
		Debug a        ;     Contenu de la boucle "For"
		a + ValeurPas  ; Step ValeurPas
	Wend              ; Next
EndProcedure

TestStep(0, 100, 2)
pour avoir un code qui ressemble plus au comportement de la boucle for.
Avatar de l’utilisateur
SPH
Messages : 4726
Inscription : mer. 09/nov./2005 9:53

Re: Step dans une procedure

Message par SPH »

Naheulf a écrit :SPH, Je ne comprends pas ton premier exemple car tu utilise "a" comme itérateur mais tu Continue à utiliser "Min" pour la condition de fin de boucle...
À mon avis, on peut se contenter d'un simple :

Code : Tout sélectionner

Procedure TestStep(Min, Max, ValeurPas)
	a = Min           ; For a = Min
	While a <= Max    ; To Max
		Debug a        ;     Contenu de la boucle "For"
		a + ValeurPas  ; Step ValeurPas
	Wend              ; Next
EndProcedure

TestStep(0, 100, 2)
pour avoir un code qui ressemble plus au comportement de la boucle for.
Oui, aussi :wink:
http://HexaScrabble.com/
!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.00 - 64 bits
Christophe
Messages : 43
Inscription : lun. 22/oct./2018 19:34
Localisation : Haisnes (62)

Re: Step dans une procedure

Message par Christophe »

Encore plus simple...
Fonctionne aussi avec une boucle For Next

Code : Tout sélectionner

Procedure TestStep(Min, Max, ValeurPas)
For a = Min To Max Step 0
  Debug a
  a+ValeurPas
Next
EndProcedure

TestStep(0, 100, 2)
Avatar de l’utilisateur
venom
Messages : 3072
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Re: Step dans une procedure

Message par venom »

8) Merci de vos réponses fortes utiles. :wink:




@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Re: Step dans une procedure

Message par Zorro »

Christophe a écrit : For a = Min To Max Step 0
For a = Min To Max ̷S̷t̷e̷p̷ ̷0̷
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Avatar de l’utilisateur
SPH
Messages : 4726
Inscription : mer. 09/nov./2005 9:53

Re: Step dans une procedure

Message par SPH »

C'est moche 8O
http://HexaScrabble.com/
!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.00 - 64 bits
Avatar de l’utilisateur
microdevweb
Messages : 1800
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

Re: Step dans une procedure

Message par microdevweb »

Code : Tout sélectionner

Procedure TestStep(Min, Max, ValeurPas)
  Protected a = Min
  While a < Max
    Debug a
    a + ValeurPas
  Wend
EndProcedure

TestStep(0, 100, 2)
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Avatar de l’utilisateur
MLD
Messages : 1105
Inscription : jeu. 05/févr./2009 17:58
Localisation : Bretagne

Re: Step dans une procedure

Message par MLD »

avec un peu de retard ma petite solution

Code : Tout sélectionner

Procedure TestStep(Min, Max,ValeurPas)
  For a = Min To Max 
  Debug a
  a =  (a + ValeurPas) -1
Next
EndProcedure

TestStep(0, 100,2)
Avatar de l’utilisateur
venom
Messages : 3072
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Re: Step dans une procedure

Message par venom »

Comme a son habitude, PureBasic offre une multitude de solutions :lol:
Merci de vos contributions.






@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Répondre