したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | |
レス数が900を超えています。1000を超えると投稿できなくなるよ。

【初心者歓迎】プチコンなんでも相談室【質問専用スレ】

788名無しさん:2015/09/06(日) 12:28:09 ID:fq./BWcc
●原因の箇所
 30行目、「IF ED[I]==-1 THEN RETURN」の行がマズイです。
●結論/解決方法
 RETURN を「CONTINUE」に書き換えましょう。

●解説
この付近のプログラムの動作を、順に見ていきましょう。
「GOSUB @TEKI」の命令で、ラベル@TEKIの行から実行されます。

「FOR I=0 TO 4」で、変数Iの値が、ゼロから始まり4まで1づつ増加しながら
次の行以降のプログラムが繰り返し実行されます。

「IF ED[I]==-1」では、順に
ED[0]の内容が-1なのかどうか、
ED[1]の内容が-1なのかどうか、
ED[2]の内容が-1なのかどうか、・・・を判断されます。

変数Iがゼロの時、つまりED[0]が-1だった場合を考えてみます。
「THEN RETURN」の命令によって、
GOSUBで呼ばれた位置に実行が戻ります。

その先では、「GOTO @LOOP」でループされ、「GOSUB @TEKI」で
再び変数Iがゼロから順に、ED[0]1の内容が-1なので戻り・・・。

変数Iの値がゼロよりも増えないままのループになってしまいました。
「RETURN」命令によって、サブルーチンごと戻ってしまうのが問題です。

「CONTINUE」命令を使うと、それ以降の、FORでループさせる予定の命令を
1度スキップさせることができます。
そして変数Iの値が増えて、FORループが続けられます。


新着レスの表示


名前: E-mail(省略可)

※書き込む際の注意事項はこちら

※画像アップローダーはこちら

(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)

掲示板管理者へ連絡 無料レンタル掲示板