VB.NETのDo Untilループの使い方と注意点!初心者向け完全ガイド
生徒
「VB.NETで条件が成り立つまで繰り返す処理ってありますか?」
先生
「はい、それがDo Untilループです。条件がTrueになるまで処理を繰り返す構造です。」
生徒
「WhileループやDo Whileループと何が違うんですか?」
先生
「大きな違いは条件の意味です。WhileやDo Whileは条件がTrueの間繰り返しますが、Do Untilは条件がFalseの間繰り返し、条件がTrueになると終了します。」
1. Do Untilループとは?
VB.NETのDo Untilループは、指定した条件がTrueになるまで繰り返す処理です。条件が最初からTrueの場合、後条件型(後で条件判定するタイプ)の場合は1回処理が実行されます。
Dim i As Integer = 1
Do Until i > 5
Console.WriteLine(i)
i += 1
Loop
1
2
3
4
5
この例では、iが5を超えるまで処理を繰り返します。iが6になった時点でループが終了します。
2. Do Untilループの書き方のバリエーション
Do Untilループには条件をループの先頭に書く方法と、ループの最後に書く方法があります。
'先条件型
Dim j As Integer = 1
Do Until j > 5
Console.WriteLine(j)
j += 1
Loop
'後条件型
Dim k As Integer = 1
Do
Console.WriteLine(k)
k += 1
Loop Until k > 5
後条件型の場合は、最低1回は処理が実行されるので、ユーザー入力などに便利です。
3. Do Untilループの便利な使い方
例えば、ユーザーが正しい入力をするまで繰り返す場合にDo Untilループが役立ちます。
Dim input As String
Do
Console.Write("1から10までの数字を入力してください: ")
input = Console.ReadLine()
Loop Until IsNumeric(input) AndAlso CInt(input) >= 1 AndAlso CInt(input) <= 10
この例では、ユーザーが1から10の数字を入力するまで繰り返し入力を求めます。
4. 無限ループに注意
Do Untilループは条件が永遠にFalseの場合、無限ループになります。無限ループになるとプログラムが停止するので、ループ内で条件が変化する処理を必ず入れる必要があります。
Dim m As Integer = 1
Do Until m > 5
Console.WriteLine(m)
m += 1 'これがないと無限ループになる
Loop
5. Whileループとの使い分け
Whileループは条件がTrueの間繰り返すループで、Do Untilループは条件がFalseの間繰り返すループです。処理を実行する前に条件をチェックしたい場合はWhileループ、最低1回は処理を行いたい場合や条件が成立するまで繰り返したい場合はDo Untilループが便利です。
6. 実践例:合計値を求める
1から100までの数字の合計を求める場合にもDo Untilループが使えます。
Dim total As Integer = 0
Dim n As Integer = 1
Do Until n > 100
total += n
n += 1
Loop
Console.WriteLine("合計は " & total)
合計は 5050
7. 注意点
- 条件が最初からTrueの場合、後条件型でないと処理が実行されない
- 無限ループに注意し、ループ内で条件を変化させる
- ユーザー入力や条件成立まで繰り返す処理に向いている
- Whileループとの違いを理解して使い分ける
まとめ
本記事では、VB.NETのDo Untilループについて、基本的な使い方から注意点まで詳しく解説しました。Do Untilループは、条件がTrueになるまで処理を繰り返す構造で、後条件型を使用すれば最低1回は処理が実行されるため、ユーザー入力や条件が成立するまで繰り返したい場面で非常に便利です。先条件型の場合は、条件が最初からTrueであれば処理は実行されません。ループ内で条件が変化する処理を必ず入れることにより、無限ループを防ぐことができます。
また、Whileループとの違いを理解することも重要です。Whileループは条件がTrueの間繰り返すのに対し、Do Untilループは条件がFalseの間繰り返します。この違いを理解して使い分けることで、プログラムの意図に沿った正確なループ処理が可能となります。さらに、合計値の計算やユーザー入力チェックなど、実践的な処理でもDo Untilループを活用することで、コードを簡潔かつ効率的に書くことができます。
サンプルプログラムの振り返り
' 1から100までの合計を求める
Dim total As Integer = 0
Dim n As Integer = 1
Do Until n > 100
total += n
n += 1
Loop
Console.WriteLine("合計は " & total)
' ユーザー入力チェックの例
Dim input As String
Do
Console.Write("1から10までの数字を入力してください: ")
input = Console.ReadLine()
Loop Until IsNumeric(input) AndAlso CInt(input) >= 1 AndAlso CInt(input) <= 10
合計は 5050
(ユーザー入力による結果)
このサンプルでは、数値の合計計算やユーザー入力のチェックにDo Untilループを活用しました。条件がFalseの間繰り返す特性を理解することで、繰り返し処理を安全かつ正確に設計することができます。
生徒
「Do Untilループは、条件がFalseの間繰り返すってことがよくわかりました。後条件型なら最低1回は処理が実行されるんですね。」
先生
「その通りです。ユーザー入力のチェックや条件が成立するまで繰り返す場合に便利な構造です。」
生徒
「無限ループにならないように、ループ内で条件を変える処理を入れるのも重要ですね。」
先生
「その通りです。条件が変化しないと永遠にループしてしまいますので、必ずインクリメントや変数の更新を行うことが必要です。」
生徒
「Whileループとの違いも理解できました。どちらを使うかは、処理の意図によって選ぶんですね。」
先生
「その通りです。処理の目的に応じてDo UntilとWhileを使い分けることで、より読みやすく安全なプログラムを作ることができます。」