条件语句概述
条件语句是一种根据条件执行不同代码的语句,如果条件满足则执行一段代码,否则执行其他代码。可将条件语句认为是有点像起因和结果。一种更好的类比方式可能是,使用一些父母可能会说的话,如下面的内容:
“如果你的房间是干净的,你会得到甜点。否则,你就得早点去睡觉。”3
第一个起因是干净的房间,结果是可以得到甜点。第二个起因是不干净的房间,结果是必须早点上床休息。
在脚本上,可能需要创建类似的语句。可能如下面的内容一样:
“如果变量mymoney的值大于1000,那么发送警告告知我的金融状况没问题。否则,发出警告,告知我需要更多钱!”3
条件语句作用以编写脚本为例,在编写脚本中,条件语句是非常有用的。与其按照脚本内容执行每一行代码,不如只有当特定条件满足时,才执行脚本中的某些代码。甚至可将单个条件扩展为条件语句的集合,用于决定某些代码是否执行。
使用条件语句,可以告诉JavaScript做到像下面的事情:
·如果变量youmame等于Jonh,那么将“hello to John”输出到页面。否则输出“hello to Unknow Surfer”并将内容加粗。
·如果变量mycar等于Corvette或Mustang,那么向浏览器发出警告“Cool car”。如果变量mycar等于Covette,并且变量yourname等于Marty,那么向浏览器发出警告“Marty is cool and drives a cool car”。否则,向浏览者发出警告“Unknown Surfer drives a car of some sort”。
我并不驾驶Corvette或者Mustang,所以请将我从很时髦的人群中排除。而这些例子显示了如何在执行操作之前通过检查某些条件,达到更多的目的。这些类型的语句在脚本中称为控制流。3
分类If语句If语句是可以测试一个或多个条件的成立与否,并在指定条件成立或不成立时分别执行不同的代码,其结构主要有以下4种。2
1.单行格式的If语句
单行格式的If语句可判断一个或多个条件的成立与否,并在条件成立时执行一组代码,如果条件不成立,则跳出当前语句继续执行下一行代码。单条件If语句仅在条件成立时执行特定操作,条件不成立时则跳出,其语法格式如下。
If condition Then statements其中,condition为判断条件,其最终结果为True或False(或者数值0和非0);statements为条件成立时执行的单条件或多条件语句,如果是多条件语句,各语句之间以英文冒号(:)分隔。单条件If语句执行流程如图29.1所示。
Sub Test() Dim a As Integer,b As Integer,c As Integer a=1024 b=CInt(InputBox("请输入除数的值:","输入参数")) If b=0 Then MsgBox"除数不能为0",vblnformation,"错误": End c=a/b MsgBOX"1024除以"& b &"的结果是: " & c,64,"结果" End Sub▲示例中代码的说明
在以上代码中,通过InputBox()函数接收用户输入的值并将其转换为Integer类型,通过单条件If语句判断输入的值是否为0,当值为0时通过对话框显示错误信息,并结束程序运行。由于在条件成立时需要执行两条语句,因此,Then关键字右侧的两条语句使用英文冒号分隔;当条件不成立时,直接执行If语句下一行代码(即c=a/b),代码运行结果如图29-2所示。2
2.多行格式的If语句
在条件成立或不成立时都需要执行特定的操作,并且各项操作都包含有很多代码,使用单行格式的I鼯句就显得有些力不从心了,此时可使用多行(块状)格式的If语句。多行格式的If语句具有以下两种语法格式。
If condition Then statementsEnd If或者
If condition Then statementsElse elsestatementsEnd If以上两种格式中的condition参数和statements参数与单行格式的If语句中对应的参数作用相同,第二种语法格式中的elsestatements参数是包含在If语句中当条件不成立时执行的操作。第一种语法格式与单行格式的If语句作用相同,仅对条件成立时进行处理,但该结构比单行格式的结构更易于理解阅读和后期维护。
Sub LoginO Dim User As String,Password As String User=InputBox(”输入用户名:”,”登录”) Password=InputBox(”输入密码:”,”登录”) If User=”Admin”And Password=”admin”Then MsgBox”欢迎您”&User&”l”.vbOKOnly,”成功” Else MsgBox”用户名或密码错误!”,vbRetryCancel,”失败” EndIfEndSub▲示例中代码的说明
在以上代码中,通过InputBox()函数接收用户输入的值,并判断输入值与系统保留值是否相同。如果相同,则打开“成功”对话框,如果不同,则显示“失败”对话框,代码运行结果如图29-3所示。2
3.多条件的lf语句
使用多条件If语句可以对多个单独的条件进行判断,并根据判断结果执行不同的操作,If语句中对多个条件的判断主要是通过ElseIf关键字来实现的,多条件的If语句的语法格式如下。
If condition Then statementsElself condition-n Then elseifstatements ......Else elsestatementsEnd If其中,condition、statements、elsestatements参数与多行格式的If语句中的各对应参数相同,condition-n参数与condition参数的作用相同,表示同一个If语句中的第n个判断条件。在多条件If语句中,代码会从上到下依次测试condition和condition-n参数,当测试到一个condition成立时,即执行其紧临Then后面的语句,完成后直接跳出If语句。多条件If语句执行的流程如图29-4所示。
4.嵌套If语句
除了使用多条件If语句来判断多个独立条件外,还可以使用嵌套If语句来实现相似的目的。嵌套If语句就是在一个块结构的If语句内部包含一个完整的If语句。
需要注意的是,无论嵌套多少If语句,每一个If...Then语句必须有一个对应的End If语句,否则会产生语法错误。
Select Case语句Select Case语句可以根据一个条件表达式的值,选择多组语句中的一组来执行,通常用于判断用户的操作,并根据用户的不同操作执行不同的代码。
Select Case语句的语法格式如下。
Select Case testexpression Case expressionlist-n statements-nCase Else elsestatementsEnd Select其中,testexpression为必选参数,表示参与测试的条件,可以是任意数值表达式或字符串表达式;expressionlist.n表示可能的testexpression列表,有几个Case就需要几个expressionlist;elsestatements是当所有expressionlist中都没有testexoression的佰时执行的语句。
Sub Menu() Dim UserCh As Integer UserCh=CInt(InputBox(”请输入您的选项(1~4):”,”选择操作”,1“1”) Select Case UserCh Case l MsgBox”你选择了1选项,正在为您查询当前余额……”,64,”处理中” Case 2 MsgBox”你选择了2选项,正在查询您的当月费用……”,64,”处理中” Case 3 MsgBox’t你选择了3选项,正在为您查询费用清单……”,64,”处理中” Case 4 MsgBox”你选择了4选项,感谢您使用本系统!”,64,”退出” Case Else MsgBox”请输入正确的选项”,vbRetryCancel,”错误” End SelectEnd Sub▲示例中代码的说明
在以上代码中,通过InputBox()函数接收用户输入的值并将其转换为Integer类 ,使用Select Case语句测试可能是4个值,根据用户输入的数值不同显示不同的对话框,当用户输入的数值不在1~4范围内时,显示“错误”对话框。2
条件语句应用以下通过一些实例来讲述条件语句的应用。
例:输入年份,判断是否为闰年。
根据例3.3的分析和图3-4所示的流程,其程序如下:
/*
程序名称:ex3-21
建立日期:2015-8-20
程序功能:判断闰年
*/
#include#includeint main(){ int year; scanf(”%d”.&year): if(year