プチコン3号の中~上級者向けの問題です。
FOR I=A TO B
NEXT
このFOR~NEXTにおいてA、Bの値によって変わるループ実行回数と終了時のIの値をすべて書いてください。(1つでも抜けていたら不正解扱いにします)
締め切りは3月3日23時、正解者には締め切り後に「そうだね」を付けます。
回答時にはネタバレチェックをお忘れなく!
今回の問題のポイントは下記の5つです。
(1)ループ終了時にはカウンタの値は初期値にループ回数を加算したものになる(超基本)
FOR I=1 TO 10:NEXTならばループ終了時のIの値は11
(2)NEXT実行時(カウンタ増分時)にカウンタの値が終了値を超えるまでループを実行する
FOR I=1.6 TO 3.4の場合はループ回数は2回、終了時のIの値は3.6
(3)ループの終了値が開始値よりも小さい場合にはループはスキップされる
FOR I=3 TO 1:NEXTはループ内が1回も実行されないため終了時のIの値は3のまま
(4)プチコン3号の実数型の有効桁数は16桁弱(2進数で52桁)である
正しく表現できる最大の整数は9007199244740991 = POW(2,53)-1でこれ以降は正しくカウントはできない
この問題を解くことによって初心者が
FOR I=A TO B
(処理)
NEXT
というプログラムを作っていて正しく動かない場合の原因が特定できるようになると同時にFOR~NEXTは実はそんなに簡単なものではないということも分かると思います。
変数が複数あるとそれだけで場合分けが非常に多くなるし初期値と終了値の大小関係で結果が変わって来ますからね。
これに STEP C とかが加わるとさらに複雑になります。
プチコン3号の場合は終了値や増分量に論理式も使えますが、それを使った場合にはかなり処理が複雑化するためFOR~NEXTって実はすごく奥が深い命令であるというのが分かってもらえたのではないかと思います。