分享

VB程序设计程序控制结构(一)

 你喜欢那个 2012-05-13

单行结构条件语句

    单行结构条件可以分为单分支IF语句和二分支IF语句两种情况。

1.单分支IF语句

    语法格式一:If条件Then语句

    语法格式二:If    条件  Then
                       语句块
                End If
    单分支IF语句的执行流程是首先判断条件。若条件成立,则执行Then后面的语句或语句块,否则执行下一条语句。流程如图6-1所示。
 

【例6.1】从键盘任意输入两个数,按由小到大的顺序显示在当前窗体上。

(1) 分析:定义变量xy表示任意输入的两个数。依题意,当x>y时,要交换xy的值,所以要定义一个中间变量t

(2) 在窗体的单击事件上编写下面的事件过程:

Private Sub Form_Click()

  Dim x As Single, y As  Single , t As Single

  x=Val(InputBox("输入x的值","输入框1"))

  y= Val (InputBox("输入y的值","输入框2"))

  If  x>y  then

    t=x

    x=y

    y=t

  End if

  Print x, y

End Sub

(3) 程序功能:运行程序后,单击窗体分别弹出两个输入框供用户输入xy的值,然后在窗体上按由小到大的顺序输出这两个数。当分别输入562008时,运行结果如图6-2所示。

                                                                                           6-2  按由小到大的顺序输出两个数

2.二分支IF语句  

    语法格式一:      If条件Then语句1 Else语句2

    语法格式二:      If  条件  Then

                             语句块1

                       Else

                             语句块2

                       End if

    执行二分支IF语句时,首先判断条件。若条件成立,则执行Then后面的语句1或语句块1,否则执行Else后面的语句2或者语句块2。流程如图6-3所示。

【例6.2】编写一个函数,求两个数中的较大数。

Private Function MaxValue1 (a As Integer,b As Integer) As Integer

   If a > b Then  MaxValue1 = a  Else  MaxValue1 = b

End Function

【例6.3】从键盘输入年份,判断该年份是否闰年。判断闰年的条件是年份能被4整除,但不能被100整除;或者能被400整除。

(1) 分析。定义变量year表示年份,由提示信息可知,判断闰年的条件可以表示为year Mod 4=0 And year Mod 100 <>0 Or year Mod 400=0

(2) 在窗体的单击事件上编写下面的事件过程。

Private Sub Form_Click ()

   Dim year As Integer

   year=Val(InputBox("请输入年份","输入框"))

   Print "您输入的年份是:"; year; ""

   If (year Mod 4=0 And year Mod 100 <>0 ) Or (year Mod 400=0)  then

       Print "该年份是闰年"

   Else

       Print "该年份不是闰年"

   End If

End Sub

程序功能。运行程序后,单击窗体弹出输入框供用户输入年份,然后在窗体上输出判断结果。当分别输入2000时,运行结果如图6-4所示。

  

6.1.2 块结构条件语句和IIf函数

1. 块结构条件语句

块结构条件语句语法格式如下:

If  <条件1>  Then

           <语句块1>

     [ElseIf  <条件2 >  Then

            <语句块2> ]

[ElseIf  <条件3 >  Then

            <语句块3> ]

       ……

     [Else

            <语句块n>]

     End If

执行多分支IF语句时,首先判断条件1是否成立。若成立,则执行语句块1;否则如果条件2成立,则执行语句块2;否则如果条件3成立,则执行语句块3……否则转到Else部分执行语句块n

                        1  (x<0)

【例6.4】函数   y=      0   (x=0),根据x的数值,对变量y进行赋值。

                        1   (x>0)
程序代码:    if   x<0  then

                       y = -1

               elseif  x=0  then

                       y=0

               else

                       y=1

              end if

【例6.5】求解一元二次方程ax2+bx+c=0的实根x1x2

(1) 分析。令判别式s=b24ac,由数学知识可知,当s>0时,方程有两个不相等的实根;当s=0时,方程有两个相等的实根,否则方程无实根。

(2) 在窗体的单击事件上编写下面的事件过程。

Private Sub  Form_Click ()

  Dim a As Single, b As Single , c As Single, s As Single,x1,x2 As Single

  a= Val(InputBox("提示","输入方程的第一个系数"))

   b= Val(InputBox("提示","输入方程的第二个系数"))

  c= Val(InputBox("提示","输入方程的第三个系数"))

  s=b^2-4*a*c

  If s>0  Then

      x1=(-b+sqr(s))/(2*a)                             

      x2=(-b-sqr(s))/(2*a)

      print  "方程的两个不相等实根分别为:";x1;x2

  ElseIf s=0 Then

      x1=(-b+sqr(s))/(2*a)

      Print  "方程的两个相等的实根均为:";x1

     Else

      Print "方程无实根"

  End If

End Sub

(3) 程序功能。运行程序后,单击窗体分别弹出三个输入框由用户输入方程系数abc的值,然后在窗体上显示根的情况。当分别输入121时,运行结果如图6-5所示。

2. IIf函数

IIfImmediate If 的缩写,实际上它是If…Then…Else结构的简写版,可用来执行简单的条件判断。其格式为:

IIf(条件,当条件为True时的部分,当条件为False时部分)

“条件”是一个关系或逻辑表达式。当“条件”为真时,函数返回“True时部分”,而当“条件”为假时,函数返回“False时部分”。注意,该函数中的3个参数都不能省略。

例如求x,y中的大数,放入max变量中,语句如下:

max=IIf (x > y, x, y)

IIf函数可以嵌套使用,例如若求3个数x,y,z中的最大值,可用如下语句:

max= IIf (IIf (x > y, x, y) > z, IIf (x > y, x, y), z)

6.1.3多分支结构

在有些复杂情况下,对某个条件进行判断后可能会出现多种取值的情况,此时,我们可以使用多分支结构语句来实现多条件选择结构。在Visual Basic中,多分支结构程序通过情况语句― Select Case来实现,它根据一个表达式的值,在一组相互独立的可选择语句序列中通过挑选要执行的语句序列。

Select Case语句的一般格式为:

Select Case <测试表达式>

  Case <表达式结果表列1>

     <语句块1>

  [Case <表达式结果表列2>

     <语句块2>]

 

  [Case Else

     <语句块n>]

End Select

Select Case语句中,测试表达式通常是数值型变量或字符串表达式。该语句的功能是判断测试表达式的取值与各个表达式结果表列的取值是否匹配。若与其中某个表达式结果表列的值匹配,则执行该表列后的相应语句块,若无一满足,而又有Case Else子句,则执行Case Else后相应的语句块n

Select Case语句一般格式中的表达式结果表列可以有如下4种格式:

1. 表达式结果:此种格式表达式结果表列中只有一个数值或字符串供用户与测试表达式的值进行比较,这要求两者精确匹配。例如,Case 1或者Case "char"等。

2. 表达式结果1[,表达式结果2]……[,表达式结果n]:此种格式在某一个表达式结果表列中有多个数值或字符串供用户与测试表达式的值进行比较,多个取值之间用逗号隔开。如果表达式的值与这些数值或字符串中的一个相等,即可执行其后相应的语句体部分。例如,Case 1,3,5,7或者Case "a", "b", "c", "d" 等。

3. 表达式结果1 To 表达式结果2。此种格式在表达式结果表列中提供了一个数值或字符串的取值范围,可以将此范围内的所有取值与测试表达式的值进行比较。如果测试表达式的值与此范围内的某个值相等,则可执行此表达式结果表列后的相应语句体部分。例如,Case 1 To 4或者Case "a" To "z"等。

4. Is 关系运算符数值或字符串。此种格式使用了关键字“Is”,其后只能使用各种关系运算符:“=”、“<”、“>”、“<=”、“>=”或“< >”等。可以将测试表达式的值与关系运算符后的数值或字符串进行关系比较,检验是否满足该关系运算符。若满足,则执行此表达式结果表列后的相应语句体部分。例如,Case Is < 3 或者Case Is > "Apple" 等。

在实际运用中,Visual Basic允许以上这几种格式混合使用。例如:

Case  Is < 5, 7, 8, 9, Is > 12Case  Is < "z", "A" To "Z"

【例6.6】编写一个程序,将分数转换成等级,转换方式如表6-1所列。

6-1 分数等级转换表

    

    

    

   

90

及格

60

80

不及格

<60

70

 

 

 

(1) 分析。定义变量x表示输入的分数,由题意可知,等级的划分由输入的分数x决定。根据分数x所属的范围,可以划分5个等级,因此x就是Select Case语句的条件表达式。

(2) 在窗体的单击事件上编写下面的事件过程。

Private Sub Form_Click()

    Dim x as Single,level as String

     x=Val(InputBox("请输入分数","提示"))

     Select Case  x

      Case  Is>=90

     Level = ""

      Case  Is>=80

     Level = ""

      Case  Is>=70

     Level = ""

      Case  Is>=60

     Level = "及格"

      Case Else

     Level = "不及格"

    End Select

    Print "您输入的分数为:"; x

    Print "对应的成绩等级为:"; level

End Sub

(3) 程序功能。运行程序后,单击窗体弹出一个输入对话框,由用户输入分数x的值,确定后在窗体上显示成绩的等级。当输入86分时,运行结果如图6-6所示。

在使用Select Case语句时,需要注意下面两个问题:

若在多个Case子句中有同一种取值重复出现,则只执行第一个出现此取值的Case语句后的相应语句体。

Case Else子句必须放在其他Case子句后面,当条件表达式的值与前面所有Case子句条件结果表列取值均不匹配时,就执行Case Else后面的语句块部分。这个子句可以省略。

 

小结:

选择结构是用来描述现实世界分支现象的重要手段。所谓选择结构,表示根据条件表达式的值做出不同的选择,执行不同的操作。当程序运行到选择结构时,首先对某个条件做出判断,再根据这个条件的具体取值情况,选择一组语句执行。在Visual Basic中,此类问题通过选择结构程序来解决,而选择结构则是通过条件语句来实现。条件语句也称之为IF语句,有单行结构块结构两种形式

作业:

1、  举例说明选择结构的特点?

2、举例说明Select Case语句的使用?

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多