Go To语句
当程序流程需要无条件转移时,我们可以使用Go To语句来实现。Go To语句可以无条件地转移到标号或行号指定的那行语句。其中,标号是一个字符序列,行号是一个数字序列。
语法格式:Go To {标号|行号}
【例6.13】编程求100以内的素数之和。
(1) 分析。判断某数m是否为素数最简单的方法是分别判断m能否被i整除,i=2,3,…,m-1。在判断过程中,只要遇到一个i能整除m,就说明m不是素数,否则m是素数。
(2) 为窗体的单击事件编写下面程序代码。
Private Sub Form_Click()
Dim m As Integer, I As Integer, S As Integer
S = 0
For m = 2 To 100
For I = 2 To m - 1
If (m Mod I) = 0 Then GoTo NotNextM
Next I
S = S + m
NotNextM: Next m
Print "100以内的素数之和为:"; S
End Sub
(3) 程序功能。运行程序,单击窗体,输出100以内素数之和,如图6-15所示。
6.3.2 On-Go To语句
On-GoTo语句类似于情况语句,用来实现多分支选择控制,一般格式如下:
On 数值表达式 GoTo 行号表列 | 标号表列
On-GoTo语句的执行过程是:先计算“数值表达式”的值,将其四舍五入处理得一整数,然后根据该整数的值决定转移到第几个行号或标号执行;如果其值为1,则转向第一个行号或标号所指出的语句行;如果为2,则转向第二个行号或标号指出的语句行,依此类推。如果“数值表达式”的值等于0或大于“行号表列”或“标号表列”中的项数,程序找不到适当的语句行,将自动执行On-GoTo语句下面的一个可执行语句。
注意,在Visual Basic中,On-GoTo语句可以用情况语句来代替。应尽量使用情况语句,少用或不用On-GoTo语句。
示例:
On m GoTo 11,12,Start,Loop1
执行该语句时,若m的值为1,则转移到行号为11的语句;若m的值为2,则转移到行号为22的语句;若m的值为3,则转移到语句标号为Start的语句;若m的值为4,则转移到语句标号为Loop1的语句;若m的值不在1~4的范围,则执行本语句的下一个语句。
6.4 控制结构应用程序举例
在循环结构中可以完整嵌套选择结构,即整个选择结构都属于循环体。同样,也可以在选择结构中嵌套循环结构,但是要求整个循环结构必须完整地嵌套在一个分支内,一个循环结构不允许出现在两个或两个以上的分支内。
【例6.14】在窗体上显示100到1 000之间所有能同时被15和50整除的数及其和。
(1) 分析。对100到1 000之间的每个数都要进行相同的操作,故适合用循环结构实现;对某一个数,要先判断,若条件成立,才进行显示与求和运算,故适合采用选择结构实现。
(2) 在窗体的单击事件上编写下面过程代码:
Private Sub Form_Click()
Dim sum As Integer
Sum=0
For i=100 to 1000
If i Mod 15 =0 And i Mod 50=0 then
Print i
sum=sum+i
End If
Next I
Print "能同时被15和50整除的数的和是:"sum
End Sub
③ 程序功能。单击窗体,输出满足条件的数及其和,运行结果如图6-16所示。
【例6.15】在窗体上输出1到99之间的全部自同构数。自同构数是这样一组数:它与它的平方数的末几位数相等。例如,5等于其平方数25的最末1位,25等于其平方数625的最末2位,所以5和25都是自同构数。
(1) 分析。对1到99之间的每个数都要进行相同的操作,故适合用循环结构实现;对某一个数,要先判断,若满足自同构数条件,才将这个数显示在窗体上,故适合采用选择结构实现。
(2) 在窗体的click事件上编写下面过程。
Private Sub Form_Click()
Print "1~99以内的所有自同构数显示如下: "
For i =1 to 99
j =i*i
If j Mod 10 =i Or j Mod 100 =i Then
Print i ;
End if
Next i
End Sub
(3) 程序功能。执行程序,运行结果如图6-17所示。
【例6.16】编程求解百鸡问题。鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一,百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?
(1) 分析。设变量x,y,z分别表示鸡翁、鸡母、鸡雏的数量,由百钱买百鸡,我们可以构造两个含有x、y、z的一次方程:x+y+z=100和5x+3y+z/3=100。
(2) 编写窗体的单击事件过程。
Private Sub Form_Click()
Dim x As Integer , y As Integer , z As Integer
Print "公鸡","母鸡","小鸡"
For x=1 to 19
For y=1 to 33
z=100-x-y
If 5*x+3*y+z/3=100 Then
Print x,y,z
End if
Next y
Next x
End Sub
(3) 程序功能。单击窗体,程序运行结果如图6-18所示。
小结:
当程序流程需要无条件转移时,我们可以使用Go To语句来实现。Go To语句可以无条件地转移到标号或行号指定的那行语句。
在循环结构中可以完整嵌套选择结构,即整个选择结构都属于循环体。同样,也可以在选择结构中嵌套循环结构,但是要求整个循环结构必须完整地嵌套在一个分支内,一个循环结构不允许出现在两个或两个以上的分支内。
作业:
1、 试说明Go To语句的功能。
2、列举出不少于3例控制结构的应用实例?
|