概要
繰り返し回数が事前に分からないけど、条件はわかるという場合には Do Until Loopループ が使えます。条件が偽(False)である限り処理を続けることが出来ます。Until は 「~まで」という意味です。Do while Loop と似ていますが、
Do while Loop 条件に充てはまると処理
Do Until Loop 条件に充てはまらないと処理
という違いがあります。
基本的な構文は
Do Until 条件式
処理
Loop
内容
サンプルコードは、コンソール画面から入力されるまで、”助けてくれますか?はい or いいえ”がループします。
RPGの 村人「助けてくれますか」に対して「はい」を選ぶまで、会話がループするイメージです。
Module Module1 Sub Main() ' 変数の宣言 Dim inStr As String = "" ' はいを入力するまで続ける Do Until inStr.Equals("はい") Console.WriteLine("助けてくれますか?はい or いいえ") ' キーボードから入力 inStr = Console.ReadLine() Loop ' 結果を表示 Console.WriteLine() ' 改行 Console.WriteLine("ありがとう") Console.ReadKey() End Sub End Module
実行例
助けてくれますか?はい or いいえ いいえ 助けてくれますか?はい or いいえ いいえ 助けてくれますか?はい or いいえ やだ 助けてくれますか?はい or いいえ たすけない 助けてくれますか?はい or いいえ はい ありがとう
Do Until Loop ループと Do While Loop の違い
判定が、真(True)だと実行するのがDo While Loop で、
判定が、偽(False)だと実行するのがDo Until Loop なので以下のコードは等価になります。
個人的には While に Not を付ける方が好き。
' はい入力するまで続ける
Do While Not inStr.Equals("はい")
Console.WriteLine("助けてくれますか?はい or いいえ")
' キーボードから入力
inStr = Console.ReadLine()
Loop
' はい入力するまで続ける
Do Until inStr.Equals("はい")
Console.WriteLine("助けてくれますか?はい or いいえ")
' キーボードから入力
inStr = Console.ReadLine()
Loop
コメント