トピック
otta777 otta777a

予想外の動作

NEXT without FORのエラーが出て止まると思ったけどNEXT以降のPRINT命令を処理せずに終了してしまいますね。
3そうだね
プレイ済み
返信[1]
親投稿
MIKI ifconfig
for i=0 to 9 if i>5 then next else next endif とかはアリなのか?? parser 書く立場から考えると for <var>=<expr> to <expr> <statements> next という文法にすると思うので、上のコードは受理できない。
0そうだね
プレイ済み
返信[2]
親投稿
☆Tatsukin★ tatu_kin1192
こうすれば、いけました。 どうやら、IFの外のNEXTのみを見るようですね。 でも、 FOR I=0 TO 9 IF I>5 THEN ?"LOOP END" NEXT という風に、IF内にはNEXTは入れない方が良いです。
0そうだね
プレイ済み
返信[3]
親投稿
☆Tatsukin★ tatu_kin1192
こっちの方がいいとおもいます。
0そうだね
プレイ済み
返信[4]
親投稿
otta777 otta777a
他の方の投稿に IF ~ THEN NEXT とうい表記があったので試してみたら予想外の動作だったので投稿させて いただきました。 IF I>5 THEN CONTINUE でないと目的の動作にならないと思ったんですが IF I>5 THEN NEXT でも問題無く動作するんですよね。 >☆Tatsukin★さん FOR~NEXTの間でIF命令で処理を分けて1個のNEXTでループを閉じるように したほうがいいですよね。
1そうだね
プレイ済み
返信[5]
親投稿
☆Tatsukin★ tatu_kin1192
WHILEとREPEATの違い WHILEは、成立しない時にループを抜ける。 REPEATは、成立するときに、ループを抜ける。
1そうだね
プレイ済み
返信[6]
親投稿
☆Tatsukin★ tatu_kin1192
もう1つの違い
1そうだね
プレイ済み
返信[7]
親投稿
otta777 otta777a
申し訳ありません。 うっかり放置状態になってました。一つのFOR命令に対して条件分岐が あるとはいえNEXTを2つ記述してもコンパイラがエラーにしないの?って 疑問からこのような投稿をしましたがSMILE BASICでは問題無いようですね。 コメントを下さった皆様、ありがとうございました。
0そうだね
プレイ済み