第4章VB.NET程序流程控制 4.1选择结构程序设计 4.2循环结构程序设计 4.3实践检验
4.1 选择结构程序设计 4.2 循环结构程序设计 4.3 实践检验 第4章 VB.NET程序流程控制
第4章VB.NET程序流程控制 本章知识点: 单行结构、块结构If语句 ●多分支结构语句 ● For-Next语句、Do,Loop语句
本章知识点: ⚫ 单行结构、块结构If语句 ⚫ 多分支结构语句 ⚫ For-Next语句、Do...Loop语句 第4章 VB.NET程序流程控制
41选择结构程序设计 选择结构可使程序在不同的条件下选择执行不同的程序段。 4.1.1单行结构条件语句 单行结构条件语句是指简单的行I语句。 1单行结构I语句的格式 If〈条件〉Then《语句体1〉[Else(语句体2〉] 2说明 〈条件〉是一个逻辑表达式,或表达式的数据类型是某种可隐式转换 为 Boolean的数据类型。程序根据这个表达式的值(True或 False)执行相 应的操作 若〈条件〉为真,则执行〈语句体1〉。否则,若存在Ese子句,则执 〈语句体2)。 〈语句体1)和〈语句体2〉可以是一个语句,也可以是用冒号分割的 多个语句 单行结构If语句一般不提倡编写得太复杂。 [Else〈语句体2〉]子句省略时,If语句简化为 If〈条件〉Then〈语句1
4.1 选择结构程序设计 选择结构可使程序在不同的条件下选择执行不同的程序段。 4.1.1单行结构条件语句 单行结构条件语句是指简单的行If语句。 1 单行结构If语句的格式 If〈条件〉Then 〈语句体1〉 [ Else〈语句体2〉] 2 说明 -- 〈条件〉是一个逻辑表达式,或表达式的数据类型是某种可隐式转换 为 Boolean 的数据类型。程序根据这个表达式的值(True或False)执行相 应的操作。 -- 若〈条件〉为真,则执行〈语句体1〉。否则,若存在Else子句,则执 行〈语句体2〉。 -- 〈语句体1〉和〈语句体2〉可以是一个语句,也可以是用冒号分割的 多个语句。 -- 单行结构If语句一般不提倡编写得太复杂。 -- [ Else〈语句体2〉] 子句省略时,If语句简化为: If〈条件〉Then 〈语句1〉
例如: CfMy.compUter.ClockLocaltime.Dayofweek=dayoFweek.saturday My Computer Clock. Local Time. Dayof Week Day Of Week Sunday Then Msg Box( Happy Weekend 如果当天是星期六或星期目则会显示个消息框,通知您 Happy Weekend 则不会壸示消息框 如果语句改为: C F My Computer Clock LocalTime DayOf Week= DayOfWeek. Saturday My Computer, Clock, Local Time. DayOfWeek= Dayof Week Sunday Then Msg Box( Happy Weekend! " Else Msg Box( Happy Workday 消息框,通知慈H甲 py Weeker,则第二个框,道知愁apy workday!。 在在面的臂 意到: If. Then语句使用Or运算符计算 条件 期且”)。在单个1f.Then语句 可以使用O和And逻辑运算 的尽可能多的条件
例如: If My.Computer.Clock.LocalTime.DayOfWeek = DayOfWeek.Saturday Or _ My.Computer.Clock.LocalTime.DayOfWeek = DayOfWeek.Sunday Then _ MsgBox("Happy Weekend!") 如果当天是星期六或星期日,则会显示一个消息框,通知您Happy Weekend!,否则不会显示消息框。 如果语句改为: If My.Computer.Clock.LocalTime.DayOfWeek = DayOfWeek.Saturday Or _ My.Computer.Clock.LocalTime.DayOfWeek = DayOfWeek.Sunday Then _ MsgBox("Happy Weekend!") Else MsgBox("Happy Workday!") 程序运行效果会有所不同:如果当天是星期六或星期日,则会显示一个 消息框,通知您 Happy Weekend!,否则显示第二个消息框,通知您Happy Workday!。 在上面的示例中您可能已注意到:If...Then 语句使用 Or 运算符计算多 个条件(“当天是星期六Or 当天是星期日”)。在单个 If...Then 语句中, 您可以使用Or和And逻辑运算符计算您所需的尽可能多的条件
4.1.2块结构条件语句 与单行条件语句相比,块结构条件语句有很多优点。例如,块形式比单 行形式提供了更好的结构和灵活性,它允许条件分支跨越数行。同时,用 块形式可以测试更复杂的条件。块形式使程序的结构按逻辑来引导,而不 是把多个语句放在一行中。此外,使用块形式的程序一般容易阅读、维护 和调试。任何单行形式的条件语句都可以改写成块飛式 1块结构I语句的格式 IfThen 语句体1 [EsefThen ] [EsefThen ] I Else 语句体n>] End if
4.1.2 块结构条件语句 与单行条件语句相比,块结构条件语句有很多优点。例如,块形式比单 行形式提供了更好的结构和灵活性,它允许条件分支跨越数行。同时,用 块形式可以测试更复杂的条件。块形式使程序的结构按逻辑来引导,而不 是把多个语句放在一行中。此外,使用块形式的程序一般容易阅读、维护 和调试。任何单行形式的条件语句都可以改写成块形式。 1 块结构If语句的格式 If﹤条件1﹥Then ﹤语句体1﹥ [ElseIf﹤条件2﹥Then ﹤语句体2﹥] [ElseIf﹤条件3﹥Then ﹤语句体3﹥] ┇ [Else ﹤语句体n﹥] End If
2格式说明 条件1>为真 语句体1 否则依次测试每个Ese语句 省淫个日如明轮佳的则简:句,若时有的条件都为 如果没有EseI子句,则块结构I语句变为: If] End if 述语 条件>为真 语句体1>,块f语句结束。否 则执行Ese子句。若省略Ese子笱,块形的件语句简化为 IfThen 语句体1 End正f 例如 If C<O Then Text1.Text=Hello! world End正f
2 格式说明 ﹤条件1﹥为真,则执行﹤语句体1﹥,否则依次测试每个ElseIf语句, 若发现某个ElseIf语句的条件为真,则执行相应的语句;若所有的条件都为 假且存在Else子句,则执行Else后的﹤语句体n﹥ 。 如果没有ElseIf子句,则块结构If语句变为: If﹤条件1﹥Then ﹤语句体1﹥ [Else ﹤语句体n﹥] End If 对上述语句,若﹤条件﹥为真,则执行﹤语句体1﹥,块If语句结束。否 则执行Else子句。若省略Else子句,块形式的条件语句简化为: If﹤条件﹥Then ﹤语句体1﹥ End If 例如 If C<0 Then Text1.Text="Hello!world" End If
将上面的块形式条件语句中" End if"去掉,并把 ext1Text="Helo!word"语句放在"Then"的后面,则可以写成单行形 式,即: If C后,退出该结构,继续执行 End If后面的语句 语句体1>….可以是一个语句,也可以是多个语句 块结构条件语句自上而下地对条件表达式进行判断,一旦发现某条件表 达式值为 就执行与之相关的语句,其余部分跳过。如果没有条件 成立,就执行最后的Ese子句,如果没有最后一条Ese,并且所有条件均不 成立,那么不执行任何操作 可和1块结条件评句是须要自的句和e行都是 语句中的等都是逻辑表达式,或表达式的数据类 型是某种可隐式转换为 Boolean的数据类型,如对数值表达式,非0值表示 Tue,0值表示 False 块形式的条件语句可以嵌套,即把一个完整的If.Then.[Else.Jnd块 作为“一条语句”放在另一个If.Then.se块内某个分支语句上。嵌套必 须完全“包住”,不能互相“骑跨
将上面的块形式条件语句中“End If”去掉,并把 “Text1.Text="Hello!world"”语句放在“Then”的后面,则可以写成单行形 式,即: If C<0 Then Text1.Text="Hello!world" 执行任何一个﹤语句体﹥后,退出该结构,继续执行End If后面的语句。 ﹤语句体1﹥…﹤语句体n﹥可以是一个语句,也可以是多个语句。 块结构条件语句自上而下地对条件表达式进行判断,一旦发现某条件表 达式值为“真”,就执行与之相关的语句,其余部分跳过。如果没有条件 成立,就执行最后的Else子句,如果没有最后一条Else,并且所有条件均不 成立,那么不执行任何操作。 If和End If在块结构条件语句是必须要有的,Else子句和ElseIf子句都是 可选的,可以有多个ElseIf子句,但最多有一个Else子句。 语句中的﹤条件1﹥ 、 ﹤条件2﹥等都是逻辑表达式,或表达式的数据类 型是某种可隐式转换为 Boolean 的数据类型,如对数值表达式,非0值表示 True,0值表示False。 块形式的条件语句可以嵌套,即把一个完整的If…Then…[Else…]End if块 作为“一条语句”放在另一个If…Then…Else块内某个分支语句上。嵌套必 须完全“包住”,不能互相“骑跨
例如 Private Sub Form1_Load Dim x, y As integer ⅹ=val( InputBox("请输入ⅹ的值","平方值计算",0)) Ifx>10 Then Console. WriteLine("输入的数据太大") Else If x>0 Then Console, writeline"(输入的数据平方值为:{0}";X*x) Else Console. WriteLine(输入的数据不能小于0") End if End if End sub
例如: Private Sub Form1_Load() Dim x, y As Integer x = Val(InputBox("请输入 x 的值", "平方值计算", 0)) If x > 10 Then Console.WriteLine ("输入的数据太大") Else If x > 0 Then Console.WriteLine "(输入的数据平方值为:{0}"; x * x) Else Console.WriteLine(输入的数据不能小于0") End If End If End Sub
4.1.3I函数 对于简单的行I语句,可以用更简单的If函数代替。 1I函数的格式 If(,的值为真,则函数返回的值,否则,函数 返及及结果变量的类型一致。 例如,假定有如下的条件语句 If a> 5 Then r=1 Else 2 End if
4.1.3 IIf函数 对于简单的行If语句,可以用更简单的IIf函数代替。 1 IIf函数的格式 IIf(﹤条件表达式﹥ , ﹤真部分﹥ , ﹤假部分﹥) 2 说明 当﹤条件表达式﹥的值为真,则函数返回﹤真部分﹥的值,否则,函数 返﹤假部分﹥的值。 ﹤真部分﹥及﹤假部分﹥可以是表达式、变量或其他函数。 IIf函数可直接参与另一个表达式的计算。 注意:IIf函数中的3个参数都不能省略,而且要求﹤真部分﹥ , ﹤假部 分﹥及结果变量的类型一致。 例如,假定有如下的条件语句: If a > 5 Then r = 1 Else r = 2 End If
则可用下面的If函数来代替 If(a>5,1,2) 显然,用I函数可以使程序大为简化。再如: Private Sub Form1_Load Dim X as single, y as single X= InputBox( inputx",3) Console. WriteLine ("y=to]; IIf(X>5,X*X, X/2) End sub 4.1.4多分支结构 在νB中,多分支结构程序通过 Select case语句来实现。该语句以 Select Case开头,以 End sele结束。其功能是,根据〈测试条件>表达式的值, 从多个case子句中选择符合条件的一个子句执行 语句格式 Select Case] []]
则可用下面的IIf函数来代替: r = IIf(a > 5, 1, 2) 显然,用IIf函数可以使程序大为简化。再如: Private Sub Form1_Load() Dim X As Single, Y As Single X = InputBox("input x", , 3) Console.WriteLine( "y={0}"; IIf(X > 5, X * X, X / 2) End Sub 4.1.4 多分支结构 在VB中,多分支结构程序通过Select Case语句来实现。该语句以Select Case开头,以End Select结束。其功能是,根据﹤测试条件﹥表达式的值, 从多个case子句中选择符合条件的一个子句执行。 – 语句格式 Select Case﹤测试条件﹥ [Case﹤表达式表1﹥] [﹤语句体1﹥]]