ZetCode

FreeBasic Loop While 关键字

最后修改日期:2025 年 6 月 16 日

FreeBasic 的 Loop While 结构会创建一个循环,在条件保持为真时重复执行一段代码。它在每次迭代后检查条件,确保循环至少执行一次。

基本定义

在 FreeBasic 中,Loop While 是一种后测试循环结构。循环体首先执行,然后评估条件。如果条件为真,则循环重复。

这与在执行前检查条件的 While Wend 不同。当您需要保证至少执行一次迭代时,Loop While 非常有用。

简单的 Loop While 示例

这个简单的示例演示了 Loop While 的基本结构。

loop_while_simple.bas
Dim counter As Integer = 1

Do
    Print "Iteration: "; counter
    counter += 1
Loop While counter <= 5

该循环打印从 1 到 5 的数字。条件在每次迭代后进行检查。即使 counter 从 6 开始,循环也会在检查条件之前运行一次。

用户输入验证

Loop While 非常适合输入验证,因为您至少需要一个提示。

loop_while_input.bas
Dim age As Integer

Do
    Input "Enter your age (1-120): ", age
Loop While age < 1 Or age > 120

Print "Valid age entered: "; age

这段代码会反复提示输入年龄,直到输入有效值为止。循环至少会运行一次,确保用户在任何条件检查之前都能看到提示。

密码验证

Loop While 适用于密码验证场景。

loop_while_password.bas
Dim password As String
Dim attempts As Integer = 0
Const CORRECT_PASSWORD = "secret123"

Do
    Input "Enter password: ", password
    attempts += 1
Loop While password <> CORRECT_PASSWORD And attempts < 3

If password = CORRECT_PASSWORD Then
    Print "Access granted!"
Else
    Print "Too many attempts!"
End If

此示例将密码尝试次数限制为三次。循环会一直继续,直到输入了正确的密码或尝试次数用尽。条件结合了两个带有逻辑 AND 的检查。

菜单系统

Loop While 可以控制简单的基于文本的菜单系统。

loop_while_menu.bas
Dim choice As String

Do
    Print "1. Play game"
    Print "2. View scores"
    Print "3. Exit"
    Input "Enter choice: ", choice
    
    Select Case choice
        Case "1"
            Print "Starting game..."
        Case "2"
            Print "Displaying scores..."
        Case "3"
            Print "Goodbye!"
        Case Else
            Print "Invalid choice"
    End Select
Loop While choice <> "3"

菜单会一直显示,直到用户选择选项 3 退出。循环结构确保菜单至少显示一次。Select Case 用于处理不同的菜单选项。

随机数生成

Loop While 可以生成值,直到满足某个条件为止。

loop_while_random.bas
Randomize Timer
Dim number As Integer

Do
    number = Int(Rnd * 100) + 1
    Print "Generated: "; number
Loop While number < 90

Print "Found number >= 90: "; number

此代码生成 1-100 之间的随机数,直到找到一个大于等于 90 的数。循环至少会运行一次,并在每次生成随机数后检查条件。

文件读取

Loop While 可以处理文件内容,直到到达文件末尾。

loop_while_file.bas
Dim fileNum As Integer = FreeFile()
Dim line As String

Open "data.txt" For Input As #fileNum

Do
    Line Input #fileNum, line
    Print "Line: "; line
Loop While Not EOF(fileNum)

Close #fileNum

此代码逐行读取文件,直到到达 EOF(文件末尾)。循环结构确保每行都得到处理,并在每次读取操作后检查条件。

嵌套的 Loop While

Loop While 语句可以嵌套以处理复杂的场景。

loop_while_nested.bas
Dim outer As Integer = 1
Dim inner As Integer

Do
    inner = 1
    Print "Outer loop: "; outer
    
    Do
        Print "  Inner loop: "; inner
        inner += 1
    Loop While inner <= 3
    
    outer += 1
Loop While outer <= 2

这展示了嵌套的 Loop While 结构。外部循环运行两次,每次迭代,内部循环运行三次。缩进有助于可视化嵌套级别。

最佳实践

本教程通过实用示例介绍了 FreeBasic 的 Loop While 关键字,展示了其在不同场景下的用法。

作者

我的名字是 Jan Bodnar,我是一名充满热情的程序员,拥有丰富的编程经验。我自 2007 年以来一直在撰写编程文章。迄今为止,我已撰写了 1400 多篇文章和 8 本电子书。我在编程教学方面拥有十多年的经验。

列出所有 FreeBasic 教程