Pourquoi ce programme ne s'arrête pas?

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
africanos
Messages : 20
Inscription : lun. 04/févr./2008 18:44

Pourquoi ce programme ne s'arrête pas?

Message 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
Avatar de l’utilisateur
Fig
Messages : 1176
Inscription : jeu. 14/oct./2004 19:48

Message par Fig »

bein, chez moi ça s'arrête, comprend pas... :?
Atomo
Messages : 207
Inscription : lun. 17/sept./2007 12:27

Message 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.
Avatar de l’utilisateur
venom
Messages : 3138
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Message 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



@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
cha0s
Messages : 681
Inscription : sam. 05/mars/2005 16:09

Message 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
africanos
Messages : 20
Inscription : lun. 04/févr./2008 18:44

Message 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
Avatar de l’utilisateur
Le psychopathe
Messages : 764
Inscription : jeu. 03/mars/2005 19:23

Message 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 
Avatar de l’utilisateur
Le psychopathe
Messages : 764
Inscription : jeu. 03/mars/2005 19:23

Message 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 
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Message 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 
Octavius
Messages : 312
Inscription : jeu. 26/juil./2007 12:10

Message 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
brossden
Messages : 833
Inscription : lun. 26/janv./2004 14:37

Message 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 !
Denis

Bonne Jounée à tous
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Message 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
Octavius
Messages : 312
Inscription : jeu. 26/juil./2007 12:10

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