跳转到内容

Gambas/循环

来自维基教科书,开放世界中的开放书籍

返回 Gambas

循环简介

[编辑 | 编辑源代码]

循环是强大的控制结构,用于重复给定代码段一定次数或直到满足特定条件为止。

Gambas 有三种主要类型的循环:for / next 循环、do 循环和 for / each 循环。

For / Next 循环

[编辑 | 编辑源代码]

for / next 循环的语法有三个组成部分

  • 一个计数器,
  • 一个范围,以及
  • 一个步长。

一个基本的 for / next 循环如下所示

    for X = 1 to 100 step 1
       print X
    next

在这个例子中,X 是计数器,“1 to 100” 是范围,“1” 是步长。

当您想要从这个例子中创建完整的例子时,您需要一个表单和一个命令按钮,以及以下代码。

PUBLIC SUB Button1_Click()
X AS Integer
 for X = 1 to 100 step 1
       print X
 next
END
  

变量 X 必须声明为整数。

for / next 循环初始化时,计数器被设置为范围中的第一个数字——在本例中,X 被设置为 1。然后程序正常执行 fornext 语句之间的任何代码。当到达 next 语句时,程序返回 for 语句,并将计数器的值增加步长。在本例中,X 在第二次迭代时增加到 2,第三次迭代时增加到 3,等等。

要更改每次迭代时计数器变量增加的量,只需更改步长的值即可。例如,如果您使用步长 2,X 将从 1 增加到 3,然后增加到 5、7、9,等等。当步长没有明确说明时,默认使用步长 1。(请注意,步长可以是负值。例如,“for X = 100 to 1 step -1” 将使 X 的值从 100 减少到 99,然后减少到 98,等等。)

当 X 达到范围中的最大值(在上面的示例中为 100)时,循环将停止执行,程序将继续执行 next 语句之后的代码。

可以在 for / next 循环中编辑计数器变量的值,尽管这通常被认为是不好的编程实践。

    for X = 1 to 100 step 1
       print X
       X = 7
    next

虽然您偶尔可能会发现编辑计数器的良好理由,但上面的示例说明了一个潜在的缺陷:因为 X 在每次迭代结束时被设置为 7,所以这段代码创建了一个无限循环。为了避免这种情况和其他意外行为,在编辑计数器变量时要格外小心!

尝试更多示例来熟悉循环

PUBLIC SUB Button1_Click()
i AS Integer
FOR i = 1 TO 10
 PRINT "Hallo Welt"
NEXT
END
PUBLIC SUB Button1_Click()
DIM i AS Integer
FOR i = 1 TO 10
  PRINT i,i*i,i*i*i
NEXT
END

为了使循环更易读,您应该将代码的内部行向右移动。它们将在循环中重复。与 VB 不同的是,您不应该在循环结束时的 next 命令后面提及计数器。

For I = 1 to 10 
 print I
' Next I    VB code
' skipped in Gambas because it is redundant 
Next

Do 循环

[编辑 | 编辑源代码]

Do 循环比 For 循环更灵活,但通常只在必要时使用。Do 循环有以下格式
-Do while
-Do until
-Loop while
-Loop until
While 循环(do while 和 loop while)将在特定条件为真时继续执行。另一方面,Until 循环将在特定条件为假时循环。将 While 或 Until 放在 Do 部分还是 Loop 部分的唯一区别在于,Do 检查循环开始时的条件,而 Loop 检查循环结束时的条件。一个基本循环的示例如下所示

    Do
       print "hello"
       x=x+1
    Loop until x=10

这个循环将多次打印 hello(取决于 x 的初始值)。如您所见,Do 循环没有内置计数器。但是,它们可以像上面那样手动创建。在本例中,我选择了 x 作为我的计数器变量,并且每次循环执行时,'x' 都增加 1。当 'x' 达到 10 时,循环将停止执行。Do 循环的优势在于,您可以随时退出循环,只要满足特定条件即可。您可以让它循环,只要特定变量为假或为真,或者只要变量保持在特定范围内。

嵌套循环

[编辑 | 编辑源代码]

嵌套循环是任何类型的循环,它位于已存在的循环内部。它们可以包含任何类型的循环。为此,我们将使用 For 循环。重要的是要记住,内部循环将执行其正常次数,乘以外部循环运行的次数。例如

    For i = 1 to 10
       For j = 1 to 10
           print i*j,
       Next 
      print 
    Next

这将打印乘法表。在 i 循环的第一次执行中,它将运行 j 循环十次。然后在 i 循环的第二次执行中,它将再次运行 j 循环十次,依此类推。为什么在两个 next 命令之间还有另一个 print 命令?尝试一下,看看删除它会发生什么。

华夏公益教科书