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

Visual Basic 2010/2008 超やさしい文法

   For Next 繰り返し制御文

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 の書式は次のようになります。開始値は繰り返しを始める整数で、今回の例では1、終了値は繰り返しを終える整数で、今回の例では3になります。

    For 変数 As Integer = 開始値 To 終了値
      ..........
      .......
      ..........
    Next

そこで、For Next を使って、キーボードから整数値を3回入力して、入力値の合計を計算するプログラムを修正します。

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 Next を使ったことで、プログラム作成効率が良くなり、とても見やすくなりました。

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


Copyright© やさしいVB2010/2008 ADO.NET. All rights reserved.