ZetCode

FreeBasic While/Wend 关键字

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

FreeBasic 的 WhileWend 关键字创建一种循环,只要条件保持为真,该循环就会执行。这是编程中重复性任务的基本控制结构。

基本定义

在 FreeBasic 中,While 启动一个循环,该循环在条件为真时继续执行 WhileWend 之间的代码块。每次迭代之前都会检查条件。

Wend 关键字标志着循环块的结束。确保循环条件最终变为 false 至关重要,以防止无限循环。

简单的 While 循环

此示例演示了一个将计数从 1 递增到 5 的基本 While 循环。

while_simple.bas
Dim counter As Integer = 1

While counter <= 5
    Print "Count: "; counter
    counter += 1
Wend

Print "Loop finished"

循环从计数器为 1 开始。每次迭代都会打印当前值并递增计数器。当计数器达到 6 时,条件变为 false,循环退出。Wend 后的消息确认了循环的完成。

带用户输入的 While 循环

此示例使用 While 来重复提示输入,直到输入有效。

while_input.bas
Dim age As Integer = 0

While age <= 0
    Input "Enter your age (positive number): ", age
Wend

Print "Thank you! Your age is: "; age

循环继续,直到用户输入一个正数。条件检查 age 是否小于或等于零。无效输入会使循环继续运行,而有效输入会退出循环。

嵌套的 While 循环

While 循环可以嵌套以处理更复杂的重复模式。

while_nested.bas
Dim i As Integer = 1
Dim j As Integer

While i <= 3
    j = 1
    While j <= 3
        Print "i:"; i; " j:"; j
        j += 1
    Wend
    i += 1
Wend

这会创建一个 3x3 的坐标网格。外层循环运行 3 次,每次外层迭代,内层循环运行 3 次。每个 Wend 都与其对应的 While 匹配,保持了正确的嵌套结构。

带提前退出的 While 循环

Exit While 语句允许提前终止循环。

while_exit.bas
Dim num As Integer = 1
Dim sum As Integer = 0

While True
    sum += num
    num += 1
    
    If sum > 20 Then
        Exit While
    End If
    
    Print "Current sum:"; sum
Wend

Print "Final sum:"; sum

由于条件为 True,此循环将永远运行,但 Exit While 语句会在 sum 超过 20 时停止它。当退出条件复杂或在循环中间发生时,此模式非常有用。

带布尔标志的 While 循环

布尔变量可以控制循环执行,使代码更具可读性。

while_flag.bas
Dim keepRunning As Boolean = True
Dim attempts As Integer = 0

While keepRunning
    attempts += 1
    Print "Attempt:"; attempts
    
    If attempts >= 5 Then
        keepRunning = False
    End If
Wend

Print "Finished after"; attempts; "attempts"

布尔标志 keepRunning 控制循环。在尝试 5 次后,我们将它设置为 False 以退出。与直接在 While 语句中嵌入条件相比,这种方法使循环的目的更加清晰。

带数组处理的 While 循环

当数组大小未知时,While 循环对于处理数组非常有效。

while_array.bas
Dim numbers(10) As Integer
Dim i As Integer = 0

' Fill array with random numbers
While i < 10
    numbers(i) = Int(Rnd * 100) + 1
    i += 1
Wend

i = 0
Dim total As Integer = 0

' Calculate sum
While i < 10
    total += numbers(i)
    i += 1
Wend

Print "Array sum:"; total

第一个 While 循环用随机数填充数组。第二个 While 循环计算它们的总和。两个循环都使用相同的计数器模式,但对数组元素执行不同的操作。

带字符串处理的 While 循环

此示例使用 While 循环逐个字符处理字符串。

while_string.bas
Dim text As String = "FreeBasic"
Dim index As Integer = 1
Dim uppercaseCount As Integer = 0

While index <= Len(text)
    Dim c As String = Mid(text, index, 1)
    
    If c >= "A" And c <= "Z" Then
        uppercaseCount += 1
    End If
    
    index += 1
Wend

Print "Uppercase letters in '"; text; "':"; uppercaseCount

循环检查字符串中的每个字符,统计大写字母。条件使用 Len(text) 来确定何时停止。FreeBasic 中的字符串索引从 1 开始,因此我们将索引初始化为 1。

最佳实践

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

作者

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

列出所有 FreeBasic 教程