- ベストアンサー
数学で、プログラムの授業をしているのですが…
いま、数学で、Basicをやっているのですが。あまりよくわかりません。FOR文、NEXT文などを使い、単純なプログラムを作らなければいけないのです。 例えば、1+(1+2)+(1+2+3)+ … +(1+2+3+4…+10) というプログラムはどうやって作ればいいのでしょうか? ポイントとか、コツとかを教えて頂けるとうれしいです。上の問題も…。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
FOR文は繰り返し命令ですからそれを利用すれば解けると思います。 まず変数を用意します。(ここでは仮にAとします) 次にその変数に1を代入します。 そしてFOR文で毎回Aの値がプラス1されるようにします。 最後にfor文の終了条件をAが10になった時にします。 ここまでが下準備です。 質問の式を計算するにはfor文の中にもうひとつfor文を入れる必要があります。 for文を入れる前にもうひとつ変数を用意します。(仮にBとする) ふたつ目のfor文の前にBの値が毎回1になるようにします。 ふたつ目のfor文を作りBがプラス1されるようにします。 ここが大事な部分なのですが、二つ目のfor文の終了条件は A=Bになった時とします。つまり一回目は一回、二回目は二回と Aの数だけ繰り返すようにするわけです。 ここまでの流れができたらあとは計算式を入れるだけです。 for文の外で答えを格納する変数をあらかじめ用意します(Xとします) Xの値は0で初期化しておきます。 二つ目のfor文の中に以下の式を書きます。 X=X+B こうすることで上の式が繰り返されていき最終的には質問の式と同じになるわけです。 Aが1のとき X=0+1 ここまでで X=1+・・・ Aが2のとき X=1+1,X=2+2 この部分は +(1+2) Aが3のとき X=4+1,X=5+2,X=7+3 この部分は +(1+2+3) となっていき最後10回目に +(1+2+3+4+5+6+7+8+9+10)ができ完成です。 考え方はわかりましたでしょうか? あとはこれをプログラム化するだけです。 一応参考までに簡易的に書いておきます。 x=0 A=1 for(1) A<=10なら繰り返す B=1 for(2) B<=Aなら繰り返す X=X+B B=B+1 Bの値プラス1 NEXT A=A+1 Aの値プラス1 NEXT END こんな感じですBASICの書き方は無視しましたが あとは教科書などを見て書き方を調べてください。 プログラムで大切なのは書き方ではなく考え方なので・・・。
その他の回答 (2)
- Tattoko
- ベストアンサー率17% (3/17)
数学のカテゴリですから、数学的に説明します。 ご質問の計算式は、 10 i Σ ( Σ j ) i=1 j=1 を求めると言うことになりますね。つまり、「『1からiまでの数の和(jを、jを1からiまで変化させて足し合わせたもの)』を、iを1から10まで変化させて足し合わせたもの」ということです。 この式をそのままBASICで書けば、 S=0 FOR [ I は1から 10 まで] FOR [ J は1から I まで] [ S を J だけ増加させる] NEXT J NEXT I PRINT S となります。[ ]の部分は自分で埋めてみてください。
- hinebot
- ベストアンサー率37% (1123/2963)
FOR文や、NEXT文の意味自体は分かっているんですよね。 その上で考え方です。 > 1+(1+2)+(1+2+3)+ … +(1+2+3+4…+10) というプログラム について。 1)変数をつくり、初期値を1とする。(仮にi とします。) 2)もう一つ変数をつくり、最初の変数の値を代入する。(仮にjとします。i→j ということです。) 3)jが1になるまで、-1しながらその和を求めます。(仮にS[j]とします。S[j]= j+(j-1)+…+1 ということです。) 4)変数i が10になるまで、+1しながら、2)と3)を繰り返します。 こんな感じでOKでしょうか。