詳細情報 : Do...While と Do...Until を使用して条件が成立するまで処理を繰り返す

更新 : 2007 年 11 月

このレッスンでは、Do...While ステートメントおよび Do...Until ステートメントを使用して、特定の条件に基づいてコードを繰り返す方法を説明します。

前のレッスンでは、For...Next ステートメントを使用して、指定した回数だけコード ブロックをループする方法を説明しました。では、コードを繰り返す必要のある回数が特定の条件によって異なる場合はどうしたらよいでしょうか。Do...While ステートメントおよび Do...Until ステートメントを使用すると、特定の条件が True の間、または特定の条件が True になるまで、コード ブロックを繰り返し実行できます。

たとえば、一連の数値を加算するプログラムがあり、合計が 100 を超えないようにするとします。この場合、Do...While ステートメントを使用して、次のように加算を実行できます。

Dim sum As Integer = 0
Do While sum < 100
  sum = sum + 10
Loop

このコードでは、Do While 行が変数 sum を評価して 100 未満かどうかを調べます。100 未満の場合は次のコード行が実行され、100 未満でない場合は Loop の後のコード行に移動します。Loop キーワードは、DoWhile 行に戻り、sum の新しい値を評価するようにコードに通知します。

やってみよう

Do...While ステートメントを使用するには

  1. [ファイル] メニューの [新規作成] をポイントし、[プロジェクト] をクリックします。

  2. [新しいプロジェクト] ダイアログ ボックスの [テンプレート] ペインで、[Windows アプリケーション] をクリックします。

  3. [プロジェクト名] ボックスに「DoWhile」と入力し、[OK] をクリックします。

    新しい Windows フォーム プロジェクトが開きます。

  4. ツールボックス から、1 つの TextBox コントロールと 1 つの Button コントロールをフォームにドラッグします。

  5. Buttonをダブルクリックしてコード エディタを開きます。

  6. Button1_Click イベント ハンドラに次のコードを追加します。

    Dim sum As Integer = 0
    Dim counter As Integer = 0
    Do While sum < 100
      sum = sum + CInt(Textbox1.Text)
      counter = counter + 1
    Loop
    MsgBox("The loop has run " & CStr(counter) & " times!")
    
  7. F5 キーを押してプログラムを実行します。

  8. テキスト ボックスに数値を入力し、ボタンをクリックします。

    100 になるまでに数値が何回加算されたかを示すメッセージ ボックスが表示されます。

  9. [デバッグ] メニューの [デバッグの停止] をクリックしてプログラムを終了します。このプロジェクトは、開いたままにしておいてください。次の手順でプロジェクトに追加するものがあります。

Do...Until ステートメント

Do...While ステートメントは、条件が True の間ループを繰り返しますが、条件が True になるまでコードを繰り返す必要がある場合もあります。次のように Do...Until ステートメントを使用できます。

Dim sum As Integer = 0
Do Until sum >= 100
  sum = sum + 10
Loop

このコードは Do...While ステートメントのコードと似ていますが、sum 変数を評価して 100 以上かどうかを調べる点が異なります。

やってみよう

この手順は、「Do...While ステートメントを使用するには」が終了したところから始まります。「Do...While ステートメントを使用するには」を完了していない場合は、完了してから続行してください。

Do...Until ステートメントを使用するには

  1. MsgBox 行の下に次のコードを追加します。

    Dim sum2 As Integer = 0
    Dim counter2 As Integer = 0
    Do Until sum2 >= 100
      sum2 = sum2 + CInt(Textbox1.Text)
      counter2 = counter2 + 1
    Loop
    MsgBox("The loop has run " & CStr(counter2) & " times!")
    
  2. F5 キーを押してプログラムを実行します。

  3. テキスト ボックスに数値を入力し、ボタンをクリックします。

    100 以上になるまでに数値が何回加算されたかを示す 2 つ目のメッセージ ボックスが表示されます。

次の手順

このトピックでは、Do...While ループおよび Do...Until ループを使用して、条件に従ってコードを繰り返す方法を説明しました。ここで、次のレッスン「二者択一のプログラム : If...Then ステートメント」に進むことができます。

参照

処理手順

プログラムでの処理の繰り返し : For...Next ループによるループ処理

参照

Do...Loop ステートメント (Visual Basic)