Page 1 sur 1

Pourquoi ce programme ne s'arrête pas?

Publié : jeu. 09/avr./2009 18:46
par africanos
salut à toutes et tous,

j'ai essayé ce petit bout de code :

Code : Tout sélectionner


 For i.b=0 To 127
        Debug Str(i.b)
   Next i.b

est ce que quelq'un peut m'expliquer pourquoi il nes'arrête pas?
Merci pour la lecture et ausi pour la réponse. :D

Publié : jeu. 09/avr./2009 19:26
par Fig
bein, chez moi ça s'arrête, comprend pas... :?

Publié : jeu. 09/avr./2009 19:27
par Atomo
Ce code marche :

Code : Tout sélectionner

For i=0 To 127 
  Debug i
Next i
Le problème survient quand tu déclares le type après For.

Publié : jeu. 09/avr./2009 19:31
par venom
moi sa ne s'arrete pas non plus
comme sa oui :

Code : Tout sélectionner

 For i=0 To 127
   Debug Str(i)
Next i



@++

Publié : jeu. 09/avr./2009 19:41
par cha0s
le type Byte est limité a 127 donc quand tu fait next i et qu'il est a 127 il redescend a -128 par conséquent il reste dans la boucle.

Code : Tout sélectionner

i.b = 127 + 1
Debug i

Publié : jeu. 09/avr./2009 21:41
par africanos
Merci pour les réponses .
pour Atomo ,
même si la variable est déclarée avant For , le problème persiste:
essayez ceci:

Code : Tout sélectionner

i.b=0
   For i=0 To 127
        Debug Str(i)
   Next i
Pour venom ta version ne s'arrête pas ca tu n'a pas déclaré la variable i , or , a partir de la version 4.30, le type par défaut est le type integer (.i).

je pense que la réponse de chaOs est plus logique .

bonne programmation :D

Publié : jeu. 09/avr./2009 23:37
par Le psychopathe
africanos a écrit :Merci pour les réponses .
pour Atomo ,
même si la variable est déclarée avant For , le problème persiste:
essayez ceci:

Code : Tout sélectionner

i.b=0
   For i=0 To 127
        Debug Str(i)
   Next i
Pour venom ta version ne s'arrête pas ca tu n'a pas déclaré la variable i , or , a partir de la version 4.30, le type par défaut est le type integer (.i).

je pense que la réponse de chaOs est plus logique .

bonne programmation :D

cha0s a répondu pour le pourquoi alors je te conseil de faire comme ceci pour esquiver le problème :

Code : Tout sélectionner

i.b=0 
   For i=-1 To 126 
        Debug Str(i+1) 
   Next i 

Publié : ven. 10/avr./2009 10:24
par Le psychopathe
Ou encore une autre solution

Code : Tout sélectionner

i.b=0 
   For i=0 To 127 
        Debug Str(i) 
if i = 127
break
endif
   Next i 

Publié : ven. 10/avr./2009 11:10
par djes
Le type char a été fait pour ça.

Code : Tout sélectionner

For i.c=0 To 127
  Debug Str(i)
Next i 

Publié : ven. 10/avr./2009 12:01
par Octavius
Ou encore :

Code : Tout sélectionner

i.b=0
For i=0 To 127
   If i<0 : Break : EndIf
   Debug Str(i)
Next i
Ceci dit, j'aime beaucoup cette astuce de boucle infinie qui permet de compter les incrémentations.

Code : Tout sélectionner

i.b=0
For i=-128 To 127
   Debug Str(i)
Next i

Publié : dim. 12/avr./2009 15:23
par brossden
Bonjour à tous

Juste entre nous pourquoi utiliser les Bytes ??
A notre époque quel PC n'a pas 1 Go de mémoire vive ?
Je comprend qu'il y trente ans on essayait de faire des économies d'octets, mais bon est-ce toujours d'actualité, sans compter que c'est source d'erreur et autres problèmes, mais bon c'est juste mon avis!

Joyeuses Pâques !

Publié : dim. 12/avr./2009 18:18
par djes
brossden a écrit :Bonjour à tous

Juste entre nous pourquoi utiliser les Bytes ??
A notre époque quel PC n'a pas 1 Go de mémoire vive ?
Je comprend qu'il y trente ans on essayait de faire des économies d'octets, mais bon est-ce toujours d'actualité, sans compter que c'est source d'erreur et autres problèmes, mais bon c'est juste mon avis!

Joyeuses Pâques !
+1

Publié : dim. 12/avr./2009 18:30
par Octavius
Je ne sais pas chez les autres, mais chez moi c'est une habitude de programmation. Quand j'ai appris (tout seul avec les tutos d'internet et du forum), j'ai bêtement suivi les recommandations, ne pas utiliser plus de mémoire que nécessaire. Même si c'est vrai qu'à l'échelle des RAM actuelles c'est un gain bien minime. Mais c'est aussi dans mon caractère d'être maniaque et économe. Et puisque j'utilise la commande 'EnableExplicit', je déclare toutes mes variables, donc ça ne me compte rien d'écrire '.b' à la place de '.l' ou '.i'. En fait dans mes programmes on retrouve tous les types de variable, et j'ai rarement des erreurs (et en plus c'est pas le genre d'erreurs trop difficiles à déboguer).