- 締切済み
ultra Basic Ver.2 「IF THEN」について
今、高校で『ultra Basic Ver.2』のプログラミング実習をしています。 それで下記の問題がどうしてこうなるのか全く分かりません。詳しく分かる方はご指導お願いします。 (1) 1~1000までの合計値を求めるプログラムを作りなさい。 ちなみにプログラムは下記のようになるようです。 10 A=0 20 B=0 30 B=B+A 40 IF A=1000 THEN GOTO 70 50 A=A+1 60 GOTO 30 70 PRINT "合計";B 80 END 合計 500500
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- imogasi
- ベストアンサー率27% (4737/17069)
もう既にご回答は尽きている感じですが、敢えて付け加えます。 ポイントは (1)A=A+Bの部分でしょう。 A=A+1も同じパターン (2)30 B=B+A 40 IF A=1000 THEN GOTO 70 50 A=A+1 60 GOTO 30 とあり (2)の部分が無限繰り返しをする。しかし無限に繰り返しても仕方が無いので、ただしA=A+1で加える数が1づつ増えて行きますが、1000になったら繰り返しから脱出します。 それがIF A=1000 THEN GOTO 70です さて(1)ですがAと言うコンピュタのメモリの箱から、Aの値をレジスタなどと言う記憶場所に取り出して、その値にコンピュタの演算装置がBを加えて、結果の値をもう一度Aというメモリに戻すと考えてはどうでしょう。 Bは合計を表す変数なので、「T」(TotalのT)を使うことが多いようですが。 プログラムは (A)初期設定部 (B)グルグル回り(繰り返し処理部) 脱出のタイミング指定とだ脱出先 (C)脱出したあとのとじまい部 が基本原則です。
- kozo_k
- ベストアンサー率29% (55/188)
10 A=0 →変数Aは最初(初期値)は0 20 B=0 →変数Bは最初(初期値)は0 30 B=B+A →BとAを足してその答えをBに代入します。 40 IF A=1000 THEN GOTO 70 →もし次の行のAの値が1000になったら70行へジャンプ! 50 A=A+1 →最初0だったAに1を足してその答えをBに代入(ここでAは1になる繰り返して最終的に1000になる) 60 GOTO 30 →30行へジャンプ! 70 PRINT "合計";B →合計を画面に表示 80 END →プログラムお終い このプログラムは繰り返しを、GOTOで処理しているためちょっと分かりにくい構造になっています。 まだFOR~NEXTやDO~LOOPとかの構文を習っていないためと思います。 要は行30から行60までをAが1000になるまで繰り返しています。IF文はその条件が満足したら繰り返しをやめる判断をしています。 何か良く分からない説明ですが…。
- betagamma
- ベストアンサー率34% (195/558)
順を追ってよくみてみましょう。 まず、題名にもなっている、 40 IF A=1000 THEN GOTO 70 ですが、IF ~ THEN ~というのは、「もし~ならば、~しなさい」という命令でしたね。ここでは、「もし、A=1000ならば、70行に飛びなさい」ということです。逆を言えば、A=1000でなければ、この行は何もしないので、無視してよい、ということです。 では、プログラムの流れを追って見ましょう. 10 A=0 20 B=0 30 B=B+A= 0+0 =0となります 40 A=1000でないので、無視しましょう。 50 A=A+1=0+1=1となります 60 GOTO 30 30に飛びます. ここで、A=1,B=0です。 30 B=B+A=0+1=1となります 40 A=1000でないので、無視しましょう。 50 A=A+1=1+1=2となります 60 GOTO 30 30に飛びます. ここで、A=2,B=1です。 30 B=B+A=1+2=3となります 40 A=1000でないので、無視しましょう。 50 A=A+1=2+1=3となります 60 GOTO 30 30に飛びます. ここで、A=3,B=3です。 30 B=B+A=3+3=6となります 40 A=1000でないので、無視しましょう。 50 A=A+1=3+1=4となります 60 GOTO 30 30に飛びます. ここで、A=4,B=6です。 30 B=B+A=6+4=10となります 40 A=1000でないので、無視しましょう。 50 A=A+1=4+1=5となります 60 GOTO 30 30に飛びます. ここで、A=4,B=10です。 ・・・という風です。Aは、1,2,3,4,5....と増えていき,Bには、B=B+Aなので、B=0+1=1,B=1+2=3,B=3+3=6,B=6+4=10...と足されていくのがわかると思います。 A=1000の時は、 30 B=B+A=499500+1000=500500となります 40 A=1000でなので、70に飛びます. 70 PRINT "合計";B 500500が表示されます. 80 END プログラムの終わり というわけです。
お礼
詳しい説明ありがとうございます。なんか分かってきたような気がしてきました。
お礼
早速のご回答ありがとうございます。とても参考になりました。