For Next 繰り返し [VB]

For Next 繰り返し処理で簡潔なプログラム

繰返し制御文
For Next
For Next 入れ子
For Step Next
For Each Next
Exit For 強制終了
Do While Loop
Do Until Loop
Do Loop While
Do Loop Until
Exit Do 強制終了

ForNextループ

For Next 制御文を使えば、繰り返し処理を簡潔に、なおかつ無駄なく記述することができます。同じ処理のプログラムを何度も書かずに済み効率的なプログラムになります。

For Next 繰り返し制御文は、規則的に変化する数値の処理で威力を発揮します。次のサンプルプログラムを見れば、よく理解できると思います。

For Next は、その内側(入れ子ということもある)にさらに、For Next の処理を入れることもできます(多重ループ)。

詳細:For Next 多重ループ サンプル

繰り返し処理は、他にもたくさんあります。状況に応じて使い分けるように勉強していきましょう。きっと役立つ場面が出てきます。

For Next 良くない例

次に、キーボードから整数値を3回入力して、入力値の合計を計算するプログラムを作成します。

キーボードから整数値を3回入力して、入力値の合計を計算する良くないプログラムを作成してみます。

sum変数に0を代入しておき、キーボードから入力した値を、sum変数に3回加えて、合計を求めます。たとえば、キーボードから順に、5、12、3と入力したら、

1回目: 5 = 0 + 5(sum = sum + 1番目の入力値)

2回目 :17 = 5 + 12 (sum = sum + 2番目の入力値)

3回目 :20 = 17 + 3 (sum = sum + 3番目の入力値)

と計算していきます。

    ' 変数の宣言
    Dim inStr As String = ""
    Dim inNum As Integer = 0
    Dim sum As Integer = 0
    Console.WriteLine("*** 合計値を求める ***")
    Console.WriteLine()        ' 改行

    ' キーボードから3回入力した数値の合計を求める
    ' 【1回めの入力】
    Console.WriteLine("1番目の数字を入力して")
    Console.WriteLine("Enterキーを押してください")
    ' キーボードから入力
    inStr = Console.ReadLine()
    ' 文字列を整数に変換
    inNum = Integer.Parse(inStr)
    ' 前回までの合計値に加える
    sum = sum + inNum

    ' 【2回めの入力】
    Console.WriteLine("2番目の数字を入力して")
    Console.WriteLine("Enterキーを押してください")
    inStr = Console.ReadLine()
    inNum = Integer.Parse(inStr)
    sum = sum + inNum

    ' 【3回めの入力】
    Console.WriteLine("3番目の数字を入力して")
    Console.WriteLine("Enterキーを押してください")
    inStr = Console.ReadLine()
    inNum = Integer.Parse(inStr)
    sum = sum + inNum

    ' 合計を表示
    Console.WriteLine()        ' 改行
    Console.WriteLine("入力した数の合計は")
    Console.WriteLine(sum)
    Console.WriteLine("です")

良くない点は、次のように同じプログラムを3回記述しているところです。

    Console.WriteLine("1番目の数字を入力して")
    Console.WriteLine("Enterキーを押してください")
    ' キーボードから入力
    inStr = Console.ReadLine()
    ' 文字列を整数に変換
    inNum = Integer.Parse(inStr)
    ' 前回までの合計値に加える
    sum = sum + inNum

もし繰り返し回数が100回だと、100回同じ内容を書くことになり、プログラムがたいへん長くなり非効率です。

For Next 良いサンプル

そこで、登場するのが、For Next 制御文です。For Next を使えば、何度も同じプログラムを記述する必要はなく、繰り返し処理を1回の記述で済むようになり、プログラムも短くなって、見やすくなります。

次に、キーボードから整数値を3回入力して、入力値の合計を計算する For Next 繰り返し制御文を使った良いプログラムを作成します。

それでは、For Next を使って、先ほどの合計値を求めるプログラムを修正してみます。

ソースリストの枠内をクリックすると全選択できます。

Module Module1

  Sub Main()
      ' 変数の宣言
      Dim inStr As String = ""
      Dim inNum As Integer = 0
      Dim sum As Integer = 0
      Console.WriteLine("*** 合計値を求める ***")
      Console.WriteLine()        ' 改行
      ' キーボードから3回数値を入力し、合計を求める
      For i As Integer = 1 To 3
         Console.WriteLine(i & "番目の数値を入力して")
         Console.WriteLine("Enterキーを押してください")
         ' キーボードから入力
         inStr = Console.ReadLine()
         ' 文字列を整数に変換
         inNum = Integer.Parse(inStr)
         ' 入力値を前回までの合計値に加える
         sum = sum + inNum
      Next
      ' 合計を表示
      Console.WriteLine()        ' 改行
      Console.WriteLine("入力した数の合計は")
      Console.WriteLine(sum)
      Console.WriteLine("です")
  End Sub

End Module

重複部分がなくなり、行数が少なくなって、すっきりした良いプログラムに生まれ変わりました。

For i As Integer = 1 To 3

To 3 の 3 の部分を変数にすれば、繰り返し回数は自由に変えることができます。そのうえ変数なら、修正箇所も少なくなり、ミスを減らすことができます。

次回は、繰り返しで使う変数を1, 3, 5, 7… や、2, 5, 8, 11 … のように制御できる For … Next … Step について勉強します。

次回:For … Next … Step