For Next 繰り返し制御文 [VB]

Visual Basic 文法[2015 2013 2012]

繰り返し処理を For Next で簡潔に

For Next を使えば、繰り返し処理を簡潔に無駄なく記述できます。同じ処理のプログラムを何度も書かずに済みます。

プログラム内で、特定の一部分が規則的に変化する箇所などで威力を発揮します。

良くない例

最初に、キーボードから整数値を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
    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 を使えば、何度も同じプログラムを記述する必要はなく、繰り返し処理を1回の記述で済むようになり、プログラムも見やすくなります。

For Next を使った良いサンプル

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

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

Module Module1

  Sub Main()
      ' 変数の宣言
      Dim inStr As String
      Dim inNum As Integer
      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 の部分を変数に修正すれば、回数は自由に変えることができます。

[広告]
[広告]