第7回 もうちょっと複雑な繰り返し

(学習目標)For…Nextの中で、条件分岐を使ったり、繰り返しを使ったりできるようにする。

 

繰り返し(For…Next)の中に条件分岐(If…Then…Else…End If)を使ったり、繰り返しの中で繰り返しを使ったりすることにより、色々な処理ができるようなります。

 

7−1 繰り返しの中で条件分岐

For…Nextの中に条件分岐を入れるのは簡単です。単に入れればよいだけです。第5回に、“偶数を入力すると偶数と言い、奇数を入力すると奇数と答える”プログラムを作りました(プログラム5.1)。その時は、この処理は1回で終わりでしたが、これを繰り返しの中に入れると、何回も繰り返すことができます。

 

(例題)偶数と奇数を答える問題を5回繰り返す

‘===プログラム7.1

マーリン登場部は省略

For i=1 To 5

data= InputBox ("数値を入力して下さい")+0

guuki= data Mod 2

If guuki=0 Then

       Merlin.Speak "ぐうすう"

Else

       Merlin.Speak "きすう"

End If

Next

MsgBox "終わり"

 

(最大値を求めるには)プログラムの中で最大値や最小値を求めることはよくあります。求め方は決まっていますので、覚えておきましょう。

Step1:最大値を入れる変数(例えばsaidai)を用意し、そこに最初小さな数(saidai= -999)をいれておく。

Step2:比較するデータを取り出してはsaidaiと比較し、データの方が最大より大きければsaidaiにデータを書き込む。これを全データに対して(Step2)繰り返す。

 

それでは、5回数値を入力して、入力完了後、その中で最大の数をマーリンに言わせよう。

‘===プログラム7.2

saidai= -9999

For i=1 To 5

data= InputBox ("数値を入力して下さい")+0

If data > saidai Then

       saidai= data

End If

Next

MsgBox saidai

 

(問題7.1)5回数値を入力するが、偶数だけを加算した結果を表示しよう。a71.vbs

(問題7.2)5回数値を入力するが、入力完了後、その中で最小の数を表示しよう。a72.vbs

 

7−2 繰り返し、の中で繰り返しを行う。

繰り返しの中に繰り返しがあるプログラムは2重ループと呼ばれることもあります。プログラムの構造は次の図のようになります。

 

 

 

 

 

 

 

 

 

 

 

 


図7.1が概念図で、図7.2がプログラム例です。図7.1は内側のFor…Nextを3回繰り返し、内側のFor…Nextは“繰り返す中身”を4回繰り返すので、“繰り返す中身”は計12回繰り返されます。繰り返しの順番は、図7.1で言うと、bが1から4まで進んだ後b1に戻され、aが1つ進みます。右のマーリンの語りを聞くと、11,12,13,14,21,22,23,24,31,32,33と言うので、処理の進み方が分かると思います。

 

(問題7.3)マーリンは九九を練習中です。“一一が一”から“九九が八十一”まで、順に言わせてましょう。

(ヒント:上の図で“繰り返しの中身”は1命令でしたが、ここは命令がいくつあってもかまいません)

(問題7.4)上の九九ですが、九九の掛け算の結果を全て加算した数を最後にメッセージボックスに表示しよう。(要するに、1+2+….+72+81