3.4.1 分支结构


  本文标签:分支 VB ASP .NET ASP .NET程序设计教程

  分支结构用于判断并分支,根据判定的结果(True或False)决定将要执行的语句  。VB .NET提供了两个条件语句用于实现分支结构,即If语句和Select…Case语句  。

  1. If语句
If语句是在编程时经常用到的语句之一,它判断条件表达式是否成立,根据条件表达式成立与否来决定某些程序将要执行的语句  。
(1) If…Then…Else语句
语法:
If  条件表达式  Then
语句块1
[Else
语句块2]
End If
 语法格式中的[],表示其中的内容为可选项  。该If语句的执行过程为:首先判断条件表达式的真假,如果为真,则执行Then后面的语句块1;如果为假,则执行Else后面的语句块2,如图3-3a所示  。若省略Else子句,当条件表达式的值为假,则跳过条件语句而去执行条件语句后的语句,如图3-3b所示  。

图3-3   If语句执行流程图 

图3-3   If语句执行流程图

  例如:
If x     S = x          当xEnd If  
再如:
If a>b Then
Max = a
Else
Max = b       当aEnd If
(2) If语句的嵌套
If语句本身也是一种语句,它也可以成为其他If中的语句,从而形成If语句中又有If语句的情形,称为If语句嵌套  。因为在If子句和Else子句中都可以出现If语句,因此If语句嵌套的形式有多种,下面给出其中的一种形式  。
If语句嵌套形式之一:
If 条件表达式1 Then
If 条件表达式2 Then
语句块2-1
Else
语句块2-2
End If
Else
语句块2
End If
例如:
If x>0 Then
If x>10 Then
Response.Write(x & "  大于10")
Else
Response.Write(x & "  是小于10的正数")
End If
Else
Response.Write(x & "  是负数")
End If
在程序设计中还经常有逐一判断条件的情况,即先判断条件1,若不成立再判断条件2,依次类推,此时可采用以下语句  。
逐一过滤条件的If…ElseIf语句:
If 条件表达式1 Then
语句块1
ElseIf条件表达式2 Then
语句块2
……
ElseIf条件表达式n Then
语句块n
Else
语句块n+1
End If
该嵌套If语句的执行过程如图3-4所示  。条件表达式1首先被计算,若该条件表达式的值为“True”,那么执行语句1;若不是“True”而是“False”,则计算下一个条件表达式(即条件表达式2)的值,依此类推;若所有条件表达式的值都不是“True”,则执行“Else”子句下的语句块n + 1  。

图3-4   If 语句的嵌套结构 

图3-4   If 语句的嵌套结构

  【例3.2】写一个程序,判断所输入年份是否是闰年  。闰年的条件是:
1) 能被4整除,但不能被100整除的年份是闰年;
2) 能被100整除,又能被400整除的年份是闰年  。
程序运行时,首先显示如图3-5所示的界面,当用户输入一个年份值并按下“提交”按钮后,将返回该年是否为闰年的判断结果,如图3-6所示  。

图3-5   输入界面 

图3-5   输入界面

图3-5   输入界面 

图3-6   判断结果

源代码如下(Ex3-2.aspx):

请您输入一个年份,我们帮您判断是否闰年




 


 
 


 
您要检验的年份:



程序在 部分定义了BtnExe_Click过程,其主要功能是判断用户在输入框中输入的年份值是否正确,若不正确,将给出出错提示;若正确,则按算法判断该年是否闰年并以标签控件LblCaution返回结果  。设计中使用了If语句嵌套,要注意Else子句总是与离它最近的尚未配对的If结合  。

  

  2. Select…Case语句
Select…Case语句对一个结果的多个分支进行判断,可以用来在多个可能的情况中选择一个条件,而不再需要用大量嵌套的If…Else…If…Else…If结构  。
语法:
Select Case变量或表达式
Case 值1
语句块1
Case 值2
   语句块2
……
Case 值n
  语句块n
[Case Else
   语句块n+1]
End Select
Select…Case语句的执行过程如图3-7所示  。
其中,“值i”与“变量或表达式”的类型相同,可以是数值、字符串或与要测试的其他情况相关的值  。当变量或表达式的值与值1相匹配时,执行语句块1;与值2相匹配时,执行语句块2;与值n相匹配时,执行语句块n;若所有值都不匹配,则执行语句块n+1  。
注意:“Case”中可以包含若干个值,之间可用逗号分隔,例如 1,2,6;也可以是一个数据范围,例如1 to 10  。
【例3.3】考试成绩分数到等级的对应变换程序:根据输入的成绩整数值(0'100)输出对应的等级,规定:90'100分为优秀;80'89分为良好;70'79分为中等;60'69分为及格;0'59分为不及格  。若输入的成绩数值不在0'100分之间,则提示出错  。

图3-7   Select…Case语句的执行过程 

图3-7   Select…Case语句的执行过程

程序运行时,首先显示如图3-8所示的界面,当用户输入一个成绩值并按下“提交”按钮后,将返回该成绩对应的等级,如图3-9所示  。

图3-8   分数输入界面 

图3-8   分数输入界面

图3-9   返回等级结果 

图3-9   返回等级结果

源代码如下(Ex3-3.aspx):

请您输入成绩



 

   
   


   
   

 
您输入的成绩数值:

 


部分的程序,将TxtGrade控件上的文本转换为数值,接下来依次判断,若数值在“90 to 100”之间,那么就执行LblCaution.Text = "优秀";否则,继续判断数值是否在“80 to 89”之间,若是就执行LblCaution.Text = "良好";依此类推  。若没有一个条件满足,就会执行Case Else后的代码  。

  


【责任编辑:老杨 Tel:(010)68576606-8005】


回书目   上一节   下一节