• 締切済み

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

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

もう既にご回答は尽きている感じですが、敢えて付け加えます。 ポイントは (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)
回答No.2

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文はその条件が満足したら繰り返しをやめる判断をしています。 何か良く分からない説明ですが…。

serusasujp
質問者

お礼

早速のご回答ありがとうございます。とても参考になりました。

  • betagamma
  • ベストアンサー率34% (195/558)
回答No.1

順を追ってよくみてみましょう。 まず、題名にもなっている、 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 プログラムの終わり というわけです。

serusasujp
質問者

お礼

詳しい説明ありがとうございます。なんか分かってきたような気がしてきました。

関連するQ&A