编程小博士(14)
软件世界
顺序和分支的区别
问:在刚开始编程的过程中,很难分清一个题目是用顺序的方式还是用分支的方式来解决,二者有什么区别和特点吗?
小博士:顺序程序和分支程序是不一样的,需要根据题目的特点来做。如果原始条件是一种情况,将来输出结果也是一种情况,则选择顺序;如果输出目标是多种,一般选择分支,下面通过示例来说明一下。
示例1:已知圆的半径为r,求圆的周长和面积。
示例2:已知圆的半径为r,当半径为奇数时求周长,为偶数时求面积。
下面先来分析一下示例1和2的区别,两示例的条件是相同的,都是一个大于0的数,但输入就不一样了,从输出结果的个数看,示例1有两个,而示例2有1个。
因为输出结果的不同,所导致的中间处理过程一定是不同的。示例1是输出多个结果,所以中间的处理过程是求两个结果,面积s=π×r×r和周长l=2×π×r;再来看看示例2,如果采用普通的顺序结构是无法表达的,因为它是在两种可能中选出一种,可能是k=π×r×r,也可能是k=2×π×r,所以我们就必须采用分支的形式了。
我们这里通过VB来设计一下上面的示例,大家从程序中再深入体会一下顺序和分支方式的区别。首先设计程序的界面,将输入和输出的控件问题解决,后面就可以加代码了。
界面与源程序
程序界面如图所示。
源程序如下:
'示例1
Private Sub CmdSandL_Click() '求周长和面积
'输入
r = Val(TxtR.Text)
p = 3.14
'处理
s = p * r * r
l = 2 * p * r
'输出
TxtList.Text = "面积是:" + Str(s) + "周长是:" + Str(l)
End Sub
'示例2
Private Sub CmdK_Click()
'输入
r = Val(TxtR.Text)
p = 3.14
'处理
If r Mod 2 = 0 Then
k = p * r * r
Else
k = 2 * p * r
End If
'输出
TxtList.Text = Str(k)
End Sub
提示:从上面可以看出,分支的方式是很简单的。你再想想,如果在其中的语句中再嵌入了一个相同的语句,即使有三种情况都可解决了。
