4.制御(繰り返し処理)

4-1 for 文による繰り返し

(1)for 文
 予め繰り返し回数が決まっている処理の場合,for文によって繰り返し指定を行うことができる.ループ変数の値は,はじめは初期値式の値で,終値式の値を超えるまで増分式の値ずつ増加させつつループ本体を繰り返し処理する.Setp以降の増分式は省略可能であり,省略した場合,増分量は1となる.
  (for文)
For ループ変数=初期値式 To 終値式 Step 増分式
  (ループ本体)
Next ループ変数
 以下の例(1)は,初期値が1,終値が5,増分値が2の場合で,ループ変数Iの値は1,3,5の3つの値をとる.一方,(2)は初期値が5で,終値が1,増分値が-2であるから,ループ変数Iの値は5,3,1となる.このように,(1)と(2)では同じように,ループ本体の処理を3回繰り返すことができるが,ループ変数Iの値が異なる.
(1)  For I = 1 To 5 Step 2 → ( I : 1, 3, 5 )
(2)  For I = 5 To 1 Step -2 → ( I : 5, 3, 1 )
 増分値が1の場合は,以下のように,増分値を省略することができる.ただし,増分値として0を指定することはできない.
For I = 1 To 5 Step 1   →   For I = 1 To 5

プログラム例4-1:初期値を1とし増分を2として,num1の値を1~5まで繰り返し,ループ変数の値を加えるプログラムを作成する.

(2)for文の入れ子
 またif文の場合と同様に,for文でも入れ子を設けることができる.この場合,内側のループ変数2と外側のループ変数1が同一であってはならない.また,内側と外側が交差するようなループを設けることもできない.繰り返しは,内側のループが先に規定回数だけ繰り返され,外側のループがカウントアップして,再度繰り返される.内側のループが入れ子においても,Setp以降の増分式は省略可能であり,省略した場合,増分量は1となる.
  (入れ子のあるfor文)
For ループ変数1=初期値式 To 終値式 Step 増分式
 ……
 For ループ変数2=初期値式 To 終値式 Step 増分式
  ……
 Next ループ変数2
  ……
Next ループ変数1

プログラム例4-2:入れ子のあるループのループ変数の値を表示するプログラムを作成する.

4-2 Do While 文とDo Until 文による繰り返し

(1)Do While 文
 繰り返し回数が事前に分かっておらず,ある条件を満足している間,繰り返し処理を実行する場合,Do While文を利用することができる.Do While文は与えられたスカラ理論式が真の間,端末文のLoop との間に挟まれたループ本体の実行文を処理し,偽になるとループから抜け出る.
  (Do While文)
Do While 論理式
 (ループ本体)
Loop

プログラム例4-3:numの値が3より小さい時(3未満),numの値に1を加え続けるプログラムを作成する.

(2)Do Until 文
 Do While文と同様,繰り返し回数が事前に分かっていない場合の繰り返し処理の方法として,Do Until文がある.この方法は,Do While文とは逆に,ある条件を満足するまで繰り返し処理を実行する方法である.すなわち,Do Until文は与えられたスカラ理論式が偽の間,端末文のLoop との間に挟まれたループ本体の実行文を処理し,真になるとループから抜け出る.
  (Do Until文)
Do Until 論理式
 (ループ本体)
Loop

プログラム例4-4:numの値が3より大きくなるまで(3以上), numの値に1を加え続けるプログラムを作成する.

(3)Exit Do 文
 Doの後ろに何も付けず,(Do ~ Loop)を構成する繰り返し処理は,無限に繰り返しが行われ,繰り返し処理から抜け出せなくなる.このような無限ループから抜け出す方法として,強制的に繰り返し処理を終了させる Exit Do 文がある.Exit Do文は,通常,If文などと同時に利用されることが多い.また,ForループやDo Whileループ,Do Untilループからの抜けだしにも使われる.
  (Exit Do 文)
Do
 ……(処理)
  Exit DO
 ……(処理)
Loop

プログラム例4-5:A列に記載された数字から0の行を見つけ,その行番号をセルB1に表示するプログラムを作成する.