嘘みたいな本当の話…。
10 INPUT N 20 FOR I=1 TO N 30 PRINT "HOGE" 40 NEXT I
上の例(STEPオプションはついてない)で、INPUT のところで N=0 を入力しても、MSX-BASIC では、FORとNEXT の間を1回実行するそうだ。
実行しないですませるには、自分で IF とかつかってループを書くしか方法がなさそう。
| 固定リンク
この記事へのコメントは終了しました。
10 INPUT N 20 FOR I=1 TO N 30 PRINT "HOGE" 40 NEXT I
上の例(STEPオプションはついてない)で、INPUT のところで N=0 を入力しても、MSX-BASIC では、FORとNEXT の間を1回実行するそうだ。
実行しないですませるには、自分で IF とかつかってループを書くしか方法がなさそう。
| 固定リンク
この記事へのコメントは終了しました。
コメント
農工大2006年度入試問題のフローチャートがループを繰り返し記号でなく無条件ジャンプと分岐で表現していたのはこの件への対策だったとか。
yabasicではちゃんと実行せずにループ抜けました。
投稿: わたやん | 2006年7月13日 (木) 14:37
わたやんさん、それ(対策)はないです。
というか、フローチャートがそうなっていたなんて、
いま、初めて知りました。
しかぁし、MSX BASIC って、なんだこれ。
投稿: たつみ | 2006年7月14日 (金) 23:34
条件判断を1回減らそうとして後判定にして裏目に出た系でしょうか。
投稿: わたやん | 2006年7月15日 (土) 00:42
私のような古いコンピュータ屋にとって、それは常識でした。
FORTRANに限れば、(上のループを実行しない)零回のループというのは、FORTRAN77で始めて採用されました。
FORTRAN77が実装される1980年代までは、上のループが1回実行されるのは、どの言語か、言語(実装?)別に試した憶えがあります。BASICでも○○-BASICの○○が違えば、結果が違いました。
ちなみに、昔の浦さんの教科書「FORTRAN入門(改訂版)」培風館 1972(たぶんJIS規格そのまま)では、
DO n i = m1,m2
で、m2 >= m1 と明記されています。
投稿: のぶ | 2006年7月16日 (日) 21:25
のぶさん、コメントありがとうございました。FORTRAN については、チェックを忘れていました。でも、御指摘を頂きて、家にある本を引っ張り出してみました。なるほどと思いました。
同じ言語に見えるようでも、こういうところの動きが違うというのはなかなか困りますよね。
投稿: たつみ | 2006年7月17日 (月) 10:14