入れ子2
二重ループではカウンタ変数を工夫することで複雑な繰り返しを実現することが可能です。例えば、以下のようなプログラムでは、何回、"test"と表示されるでしょう?for i=1 to 3 for j=i to 3 MsgBox "test" next next
このプログラムが今までの二重ループのプログラムと違うところは内側のfor文のjの初期値です。jの初期値が今までのような 0 といった固定値ではなく iと変数になっています。これはどういうことでしょうか?
順番に考えていけばわかります。まず最初にiが1のとき、内側のfor文では、jは1~3まで変化します。次にiが2のとき内側のfor文では、jは2~3まで変化します。最後にiが3のとき内側のfor文では、jは3のときだけ実行されます。
ですから最初は3回、次に2回、最後に1回、内側のfor文が実行されるので計6回"test"と表示されることになります。
わかりにくければ、またiとjの値を出してみましょう。
for i=1 to 3 for j= i to 3 MsgBox "iは" & i & " jは" & j next next
以下のように表示されます。
iの値 jの値 1回目 1 1 2回目 1 2 3回目 1 3 4回目 2 2 5回目 2 3 6回目 3 3
このように二重ループのカウンタを工夫すれば複雑なことが出来るようになります。
問題7-9
最初に0~30までの合計値(465)、次に10から30までの合計値(420)、最後に20から30までの合計値(275)を求めるプログラムを作ろう。
問題7-10
最初に0~10までの合計値(55)、次に10から20までの合計値(165)、最後に20から30までの合計値(275)を求めるプログラムを作ろう。