forum

Navigation du forum
Fil d’Ariane du forum – Vous êtes ici :ForumL'Amstrad CPC: Programmation/codingBASIC - Boucle qui ne boucle pas
Vous devez vous identifier pour créer des messages et des sujets.

BASIC - Boucle qui ne boucle pas

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

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)

 

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)