编程小博士(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

  提示:从上面可以看出,分支的方式是很简单的。你再想想,如果在其中的语句中再嵌入了一个相同的语句,即使有三种情况都可解决了。