Small Basic 编程入门 04 - 条件与分支

回到第一个程序。如果我们的程序不仅仅会说“Hello World (你好,世界)”; 而是可以根据一天中的不同时间段说“Good Morning World (早上好,世界)”, 或者“ Good Evening World (晚上好,世界)”,那是不是一件很酷的事情?在下一个程序中, 我们将让计算机能够在中午12点以前说“Good Morning World (早上好,世界)”,在中午12点以后说“Good Evening World (晚上好,世界)”。

If (Clock.Hour < 12) Then
  TextWindow.WriteLine("Good Morning World") 
EndIf 
If (Clock.Hour >= 12) Then
  TextWindow.WriteLine("Good Evening World") 
EndIf

根据你运行程序的时间,你将会看到下面的某一个输出。

Small Basic 编程入门 04 - 条件与分支

图 - Good Morning World (早上好,世界)

Small Basic 编程入门 04 - 条件与分支

图 - Good Evening World (晚上好,世界)

让我们来分析一下程序的前三行。你肯定已经发现这几行程序告诉计算机如果Clock.Hour 小于12 ,就输出“Good Morning World. (早上好,世界。)”。IfThenEndIf 是在程序运行过程中计算机能够理解的特殊语言。If 后面总是会跟一个条件判断。在这个例子中是(Clock.Hour < 12)。记住,为了让计算机理解你的意图,小括号在这里是必须的。条件判断后面跟的是then 和要执行的实际操作。实际操作后面跟的是EndIf , 这告诉计算机这个有条件的执行过程结束了。

thenEndIf 之间可能会有不只一个操作。如果条件符合,计算机将会把它们全部执行。例如,你可以写如下程序:

If (Clock.Hour < 12) Then
  TextWindow.Write("Good Morning. ")
  TextWindow.WriteLine("How was breakfast?") 
EndIf

Else

在这一章最开始的程序中,你可能已经注意到第二个条件有点多余。Clock.Hour 的值只可能小雨或者大于12。 我们不需要真正检查第二个条件。对于这种情况,我们可以通过else ,把两个if..then..endif 语句缩短为一句。

如果我们用else 重写,你将看到的下面的程序:

If (Clock.Hour < 12) Then
  TextWindow.WriteLine("Good Morning World") 
Else
  TextWindow.WriteLine("Good Evening World") 
EndIf

这个程序将和最开始的程序做完全同样的事情。这里我们学到了计算机编程中非常重要的一课:

在编程过程中,我们经常可以通过很多方法做同样的事情。很多时候,一种方法比其它的方法更有效。选择哪一种方法是由程序员决定的。当你编写了更多的程序获得了更多的经验后,你就可以了解不同的技术以及它们的优缺点。

Indentation(缩进)

在所有的程序中,你都可以看到If, ElseEndIf 是如何缩进的。缩进不是必须的,但它将帮助你更容易的理解程序的结构。因此,在程序块间缩进语句通常是一个很好的习惯。

Even(奇数)或者 Odd (偶数)

现在我们已经学会了 If..Then..Else..EndIf 语句。让我们写一个程序。 当你给出一个数字时,它可以判断是奇数还是偶数。

TextWindow.Write("Enter a number: ") 
num = TextWindow.ReadNumber()
remainder = Math.Remainder(num, 2) 
If (remainder = 0) Then
  TextWindow.WriteLine("The number is Even") 
Else
  TextWindow.WriteLine("The number is Odd") 
EndIf

运行这个程序,你将能看到它的输出如下:

Small Basic 编程入门 04 - 条件与分支

图 – 奇数或偶数

在这个程序中,我们引入了一个新的很有用的操作,Math.Remainder 。是的,正如你已经看到的,Math.Remainder 将返回第一个数除以第二个数的余数。

Branching (分支)

还记得吗?在第二章中,你知道了计算机按从上到下的顺序一次处理程序中的一个语句。然而,有一种语句可以使计算机不按照顺序执行,而跳到另一条语句。我们看一下下面的程序。

i = 1 
start: 
TextWindow.WriteLine(i) 
i = i + 1 
If (i < 25) Then
  Goto start 
EndIf
Small Basic 编程入门 04 - 条件与分支

图 17 – 使用 Goto

在上面的程序中,我们把1付给变量i 。接着,我们加了一个新的语句,它以冒号结束(:)

start:

这被称作一个标记。标记就像是一个计算机可以理解的书签。只要你能保证它们的命名是唯一的,你可以任意命名一个标记,而且可以在程序中加入任意多的标记。

另一个有趣的语句是:

i = i + 1

这句话告诉计算机把变量i 加1,然后再把结果付回给i 。所以如果原来i 的值是1,在执行这句话之后,i 的值将变成2。

最后,

If (i < 25) Then
  Goto start 
EndIf

这部分程序告诉计算机,如果i 的值小于25,就开始从标记start执行语句。

Endless execution (无限执行)

使用Goto 语句,你可以让计算机任意多次的执行一些操作。例如,你可以把奇数或偶数的程序改写成下面的样子。程序将永远执行。你可以通过点击命令框右上角的Close(X)来终止程序。

begin: 
TextWindow.Write("Enter a number: ") 
num = TextWindow.ReadNumber() 
remainder = Math.Remainder(num, 2) 
If (remainder = 0) Then
  TextWindow.WriteLine("The number is Even") 
Else
  TextWindow.WriteLine("The number is Odd") 
EndIf 
Goto begin
Small Basic 编程入门 04 - 条件与分支

图 18 – 奇数或偶数程序无限执行

- 本文来自网络,如有侵权,请联系本站处理。

2022-05   阅读(2)   评论(0)
 标签: program Basic

涨知识
二进制

二进制(binary),发现者莱布尼茨,是在数学和数字电路中以2为基数的记数系统,是以2为基数代表系统的二进位制。这一系统中,通常用两个不同的符号0(代表零)和1(代表一)来表示 。

评论:
相关文章
Small Basic 编程入门 11 - 事件(Events)和交互(Interactivity)

事件就像被触发的信号,例如,为了应对类似移动或点击鼠标的用户操作。某种程度上说,事件同操作是相对的。对于操作,您作为一个程序员调用操作让计算机做一些事情;然后对于事件,计算机通知您一些有意思的事情发生了。



Small Basic 编程入门 09 - 子例程(Subroutines)

在编程时我们经常遇到需要重复执行相同一组步骤的情况。这种情况下,多次重写相同的语句是不合理的。这时我们需要借助子例程。


Small Basic 编程入门 08 - Turtle Graphics (海龟绘图法)

Small Basic 语言中也引入了 Turtle (龟标)对象,编程人员可以通过Small Basic 自带的很多命令调用这个对象。


Small Basic 编程入门 07 - 绘制图形

在这一章节中,我们将运用前面学到的知识来做一些有趣的事。