forum
BASIC - Boucle qui ne boucle pas
Citation de bigjeff le 8 décembre 2020, 13 h 25 minBonjour,
Je suis en train de saisir un listing à partir des scans de cpc-power.com. Je souhaite ajouter une fonctionnalité à ce jeu et je bloque sur une boucle qui s'arrête à la première itération.
J'ai reproduit le cas avec un tout petit programme :
10 dim o$(10)
20 for i=1 to 10:o$(i)="vide":next i
30 o$(2)="jf"
40 for j=1 to 10: print " =>"o$(j)"<= ";:next j
50 print:print:if o$(2)="jf" then print "JF trouve directement" else print "JF non trouve directement"
60 for k=1 to 10:print k;:if o$(k)="jf" then print "JF trouve, indice : " k:next k
70 endVoici le résultat :
=>vide<= =>jf<= =>vide<= =>vide<= =>vide<= =>vide<= =>vide<= =>vide<= =>vide<= =>vide<=
JF trouve directement
1
Je ne comprends pas pourquoi la dernière boucle (indice k) s'arrête à l'indice 1.
J'ai essayé sur l'émulateur WinAPE 2.0 Beta 2 et CaPriCe Forever 20.7.
Pour les deux émulateurs je les démarre puis je colle le petit programme ci-dessus et je l'exécute. Dans les deux situations j'ai le même résultat.
C'est sûr que c'est une erreur qui vient de moi mais je ne comprends, j'ai lu des livres, j'ai cherché dans des forums mais cela doit être trop bête comme erreur.
Merci d'avance et bonne journée
Bonjour,
Je suis en train de saisir un listing à partir des scans de cpc-power.com. Je souhaite ajouter une fonctionnalité à ce jeu et je bloque sur une boucle qui s'arrête à la première itération.
J'ai reproduit le cas avec un tout petit programme :
10 dim o$(10)
20 for i=1 to 10:o$(i)="vide":next i
30 o$(2)="jf"
40 for j=1 to 10: print " =>"o$(j)"<= ";:next j
50 print:print:if o$(2)="jf" then print "JF trouve directement" else print "JF non trouve directement"
60 for k=1 to 10:print k;:if o$(k)="jf" then print "JF trouve, indice : " k:next k
70 end
Voici le résultat :
=>vide<= =>jf<= =>vide<= =>vide<= =>vide<= =>vide<= =>vide<= =>vide<= =>vide<= =>vide<=
JF trouve directement
1
Je ne comprends pas pourquoi la dernière boucle (indice k) s'arrête à l'indice 1.
J'ai essayé sur l'émulateur WinAPE 2.0 Beta 2 et CaPriCe Forever 20.7.
Pour les deux émulateurs je les démarre puis je colle le petit programme ci-dessus et je l'exécute. Dans les deux situations j'ai le même résultat.
C'est sûr que c'est une erreur qui vient de moi mais je ne comprends, j'ai lu des livres, j'ai cherché dans des forums mais cela doit être trop bête comme erreur.
Merci d'avance et bonne journée
Citation de demoniak le 8 décembre 2020, 18 h 56 minLe Next k est sur la même ligne que le if (ligne 60), donc il ne sera exécuté que si la condition du if est vrai. A la première itération (k=1), la condition du if est fausse, donc le next ne sera pas exécuté. Pour corriger le problème, il suffit de déplacer le next K et de le mettre sur une ligne suivante (65 par exemple)
Le Next k est sur la même ligne que le if (ligne 60), donc il ne sera exécuté que si la condition du if est vrai. A la première itération (k=1), la condition du if est fausse, donc le next ne sera pas exécuté. Pour corriger le problème, il suffit de déplacer le next K et de le mettre sur une ligne suivante (65 par exemple)
Citation de bigjeff le 9 décembre 2020, 0 h 45 minJ'ai passé près de deux heures à chercher et à comprendre et c'est tout simplement ça.
Cela fait tellement longtemps que j'ai fait du Basic qui j'étais sûr que le : avant le next correspondait à la fermeture de la clause THEN.
Merci et désolé pour une question aussi basique (sans jeu de mot)
J'ai passé près de deux heures à chercher et à comprendre et c'est tout simplement ça.
Cela fait tellement longtemps que j'ai fait du Basic qui j'étais sûr que le : avant le next correspondait à la fermeture de la clause THEN.
Merci et désolé pour une question aussi basique (sans jeu de mot)