让我们再以前面章节用到的代码来举例说明。
i = 1
start:
TextWindow.WriteLine(i)
i = i + 1
If (i < 25) Then
Goto start
EndIf
这段代码的运行结果是:按顺序打印数字 1 到 24。在提供了便捷的变量递增方法的编程语言中,这样的变量递增过程是很常见的。以上这段程序与下面的程序输出结果相同:
For i = 1 To 24
TextWindow.WriteLine(i)
EndFor
输出结果是:
图 19 – 使用 For 循环
请注意,我们将 8 行的程序减少到 4 行,而实际运行结果与 8 行的程序完全相同!还记得前面我们提到的“完成一个任务通常会有多种方法”吗?这就是一个典型的例子。
For..EndFor 在编程术语中被称为一个循环。在循环中可以使用一个变量,给变量赋以初值和终值,并让计算机自动执行变量递增。变量每递增一次,计算机便执行一次 For 到 EndFor 之间的程序。
如果希望变量以 2(而不是以 1)为基准递增,例如,要输出 1 至 24 之间的所有奇数,即可以使用循环来实现。
For i = 1 To 24 Step 2
TextWindow.WriteLine(i)
EndFor
图 20 – 仅输出奇数
For 语句中的 Step 2 告诉计算机以 2 为基数对变量 i 递增(而不是以 1)。通过使用 Step 可以根据需要指定任意递增基数。甚至可以指定负增量来进行倒数,示例如下:
For i = 10 To 1 Step -1
TextWindow.WriteLine(i)
EndFor
图 21 – 倒数
While 循环是另一种循环方法,该方法在无法预测循环次数的情况下非常实用。前面介绍的 For 循环按照预先定义的次数执行程序,而 While 循环则是在指定条件为真的情况下重复运行程序。以下示例中,我们将在指定变量大于 1 的情况下,对变量进行等分。
number = 100
While (number > 1)
TextWindow.WriteLine(number)
number = number / 2
EndWhile
图 – 等分循环
在以上程序中,对变量 number 赋以初值 100,在 number 大于 1 的情况下重复运行 While 循环。在循环中,输出 number 的值,再除以 2,对其进行有效地等分。正如预期,程序的输出结果为逐步被等分的序列数字。
因为我们无法事先得知程序要循环运行的次数,如果用 For 循环实现以上程序就会相当困难。通过使用 While 循环,可以方便地检查条件,再确定是否要继续执行循环或退出。
有趣的是,每个 While 循环都可以分解成一组 If..Then 语句。例如,可以将以上程序重写如下,其输出结果相同:
number = 100
startLabel:
TextWindow.WriteLine(number)
number = number / 2
If (number > 1) Then
Goto startLabel
EndIf
实际上,计算机内部会将每个 While 循环重写成一组带有一个或多个 Goto 语句的 If..Then 语句。
I2C总线是由Philips公司开发的一种简单、双向二线制同步串行总线。它只需要两根线即可在连接于总线上的器件之间传送信息。
事件就像被触发的信号,例如,为了应对类似移动或点击鼠标的用户操作。某种程度上说,事件同操作是相对的。对于操作,您作为一个程序员调用操作让计算机做一些事情;然后对于事件,计算机通知您一些有意思的事情发生了。
在编程时我们经常遇到需要重复执行相同一组步骤的情况。这种情况下,多次重写相同的语句是不合理的。这时我们需要借助子例程。
Small Basic 语言中也引入了 Turtle (龟标)对象,编程人员可以通过Small Basic 自带的很多命令调用这个对象。
在这一章节中,我们将运用前面学到的知识来做一些有趣的事。