OVH Cloud OVH Cloud

Instruction POUR avec un PAS reel

7 réponses
Avatar
ronando29
le code suivant ne fonctionne pas =E0 cause du PAS qui est un reel. Ce
n'est pas possible d'executer ce code ?

Merci

CODE :

i est un entier

POUR i=3D1 A 30 PAS 0.5
=09
=09
Info(i)
=09
=09
FIN

7 réponses

Avatar
kei-kun41
Bonjour,
Je ne connais pas assez windev-webdev pour m'avancer comme je vais le
faire mais il me semble bien et c'est le cas dans les autres langages
que les pas réel n'existe pas pour une boucle pour.
Maintenant je me trompe peut-être lourdement mais je n'en ai jamais
rencontrer de ma courte vie de programmeur amateur.
au lieu de passer par un POUR essaye plutot un while avec une condition
de sortir.

CODE :
i est un entier =1
WHILE (i<0)
info(i)
i+=0.5
FIN
Avatar
ronando29
lol je viens de me rendre que j'ai fait une erreur dans mon code
déclaration de la variable i j'ai mi entier !! donc ca ne peut pas
fonctionner. i est un reel, et hop ca fonctionne .

Ton While était sinon une bonne alternative.
merci
++
Avatar
kei-kun41
De rien mais je n'ai pas été d'une grande aide je n'ai même pas vu
que tu avais mis i en entier lol.
Enfin content que ça marche.
(Mais je trouve ça bizarre des pas réel)
Avatar
Stéphane Miqueu
kei-kun41 avait énoncé :
De rien mais je n'ai pas été d'une grande aide je n'ai même pas vu
que tu avais mis i en entier lol.
Enfin content que ça marche.
(Mais je trouve ça bizarre des pas réel)



Bonjour,
On critique (souvent) Windev pour ses bizarreries alors pour une fois
qu'il y a un truc de bien, c'est bien de le signaler.
Avatar
Romain PETIT
Il se trouve que Stéphane Miqueu a formulé :

(Mais je trouve ça bizarre des pas réel)



Bonjour,
On critique (souvent) Windev pour ses bizarreries alors pour une fois qu'il y
a un truc de bien, c'est bien de le signaler.



Tous les langages acceptent un pas autre qu'un entier...
Mais l'intérêt est très limité, et ce genre de chose peut induire des
erreurs dûes à la nature de l'approximation des réels :

Exemple, en Java :
class Test {
public static void main (String arg[]) {
float i;
for (i=0; i<=2; i+=0.2)
System.out.println ("i vaut : " + i);
}
}

provoque la sortie suivante :

i vaut : 0.0
i vaut : 0.2
i vaut : 0.4
i vaut : 0.6
i vaut : 0.8
i vaut : 1.0
i vaut : 1.2
i vaut : 1.4000001
i vaut : 1.6000001
i vaut : 1.8000002

Etant donné l'approximation des réels, on voit que i ne vaudra pas "2"
exactement, et que donc la boucle ne fera pas ce qu'on pensait à priori
qu'elle fasse...

Si tu remplaces le "float i" par "double i", on obtient :

i vaut : 0.0
i vaut : 0.2
i vaut : 0.4
i vaut : 0.6000000000000001
i vaut : 0.8
i vaut : 1.0
i vaut : 1.2
i vaut : 1.4
i vaut : 1.5999999999999999
i vaut : 1.7999999999999998
i vaut : 1.9999999999999998


En Wd (7.5), tu peut constater cela en écrivant :

c est un réel sur 4 octets
POUR c=0 A 2 PAS 0.2
Trace(c)
FIN

-> s'arrète avant "2"...

A+

--
Romain PETIT
http://cerbermail.com/?O16kfXOFcq
(cliquez sur le lien ci-dessus pour me contacter en privé)
Avatar
kei-kun41
C'est pour ça que me sprofs m'ont toujours dis de faire des boucles
avec des entier.
En tout cas merci de ton explication ^___^
Et c'est vrai qu'on critique souvent windev/webdev (il faut dire qu'il
y'a de quoi des fois) mais bon là ça n'en était pas une, je disais
juste que je trouvais ça bizarre vu que je n'avais jamaias vu
auparavant de pas réel dans quelque langage que j'ai pratiqué.
Avatar
Stéphane Miqueu
Romain PETIT avait prétendu :
En Wd (7.5), tu peut constater cela en écrivant :

c est un réel sur 4 octets
POUR c=0 A 2 PAS 0.2
Trace(c)
FIN

-> s'arrète avant "2"...

A+



Bon OK. Alors je corrige mon commentaire : Pour une fois que WD ne fait
pas plus mal que les autres ... :-)
Naaannnn, je déconne. En fait j'ai eu la flemme de tester avant de
répondre. Pourtant j'ai aussi access sur ma machine !

--
Ami Calmant
Stéphane