新しく発言する EXIT インデックスへ
難題

  難題 FLANKER 2003/05/23 17:23:16 
  DO〜LOOPを使うときには,ループを抜ける条... 白石和夫 2003/05/23 23:22:46 
   └十進モードを使うときの心構えは,10進法で... 白石和夫 2003/05/24 10:13:16 
    └有難うございます。!! FLANKER 2003/05/27 15:45:49 

  難題 FLANKER 2003/05/23 17:23:16  ツリーへ

難題 返事を書く
FLANKER 2003/05/23 17:23:16
数当てゲームを作っている最中に問題が発生!
チェックをかねて実行してみたら、DO〜LOOP文が暴走しPRINT文が永遠と出続け悲惨な目に・・・・・・。
このDO〜LOOP文、どうしたらうまく使いこなせるでしょうか?
もし良ければ対処法などについて、教えてください。

  DO〜LOOPを使うときには,ループを抜ける条... 白石和夫 2003/05/23 23:22:46  ツリーへ

Re: 難題 返事を書く
白石和夫 2003/05/23 23:22:46
DO〜LOOPを使うときには,ループを抜ける条件を用意する必要がありますし,必ずいつかは成立するような条件にするというところで論理の問題になります。BASICを用いる場合の注意点は,数値の精度の関係で,成立するように思える条件が成立しないことがあることです。
たとえば,
LET x=0
DO
LET x=x+1/3
PRINT x
LOOP UNTIL x=10/3
END
は,有理数モードでは停止しますが,十進モードでは停止しません。


   └十進モードを使うときの心構えは,10進法で... 白石和夫 2003/05/24 10:13:16  ツリーへ

Re: DO〜LOOPを使うときには,ループを抜ける条... 返事を書く
白石和夫 2003/05/24 10:13:16
十進モードを使うときの心構えは,10進法で計算したときに結果が15桁以内で正確に表現できないような計算の結果には誤差があると考えておくことです。そして,誤差を含む可能性のある結果を比較する場合には,ほんのわずかな違いのために期待したのと異なる判断になる可能性があることに注意してください。
消極的な対応は,答えが10進法で正確に求まるような計算以外は使わないことです。たとえば,
LET x=0
DO
LET x=x+1/5
PRINT x
LOOP UNTIL x=10/5
は,十進モードでも停止します。(ただし,2進モードでは停止しません)

    └有難うございます。!! FLANKER 2003/05/27 15:45:49  ツリーへ

Re: 十進モードを使うときの心構えは,10進法で... 返事を書く
FLANKER 2003/05/27 15:45:49
有難うございます。!!
何とか修正したいと思います。


インデックスへ EXIT
新規発言を反映させるにはブラウザの更新ボタンを押してください。