FreeBasic While/Wend 关键字
最后修改日期:2025 年 6 月 16 日
FreeBasic 的 While
和 Wend
关键字创建一种循环,只要条件保持为真,该循环就会执行。这是编程中重复性任务的基本控制结构。
基本定义
在 FreeBasic 中,While
启动一个循环,该循环在条件为真时继续执行 While
和 Wend
之间的代码块。每次迭代之前都会检查条件。
Wend
关键字标志着循环块的结束。确保循环条件最终变为 false 至关重要,以防止无限循环。
简单的 While 循环
此示例演示了一个将计数从 1 递增到 5 的基本 While 循环。
Dim counter As Integer = 1 While counter <= 5 Print "Count: "; counter counter += 1 Wend Print "Loop finished"
循环从计数器为 1 开始。每次迭代都会打印当前值并递增计数器。当计数器达到 6 时,条件变为 false,循环退出。Wend 后的消息确认了循环的完成。
带用户输入的 While 循环
此示例使用 While 来重复提示输入,直到输入有效。
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 循环可以嵌套以处理更复杂的重复模式。
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
语句允许提前终止循环。
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 循环
布尔变量可以控制循环执行,使代码更具可读性。
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 循环对于处理数组非常有效。
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 循环逐个字符处理字符串。
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。
最佳实践
- 初始化:始终在 While 之前初始化循环控制变量。
- 终止:确保循环条件最终会变为 false。
- 嵌套:在 While 和 Wend 之间使用一致的缩进。
- 复杂条件:对于复杂条件,使用布尔变量。
- 注释:为不明显的循环条件或退出添加注释。
本教程通过实际示例介绍了 FreeBasic While/Wend
关键字,展示了它们在不同场景下的用法。