条件语句是用来判断给定的条件是否满足(表达式值是否为0),并根据判断的结果(真或假)决定执行的语句,选择结构就是用条件语句来实现的。
语句介绍
条件语句是一种根据条件执行不同代码的语句,如果条件满足则执行一段代码,否则执行其他代码。可将条件语句认为是有点像起因和结果。一种更好的类比方式可能是,使用一些父母可能会说的话,如下面的内容:
“如果你的房间是干净的,你会得到甜点。否则,你就得早点去睡觉。”
第一个起因是干净的房间,结果是可以得到甜点。第二个起因是不干净的房间,结果是必须早点上床休息。
在脚本上,可能需要创建类似的语句。可能如下面的内容一样:
“如果变量mymoney的值大于1000,那么发送警告告知我的金融状况没问题。否则,发出警告,告知我需要更多钱!”
语句作用
以编写脚本为例,在编写脚本中,条件语句是非常有用的。与其按照脚本内容执行每一行代码,不如只有当特定条件满足时,才执行脚本中的某些代码。甚至可将单个条件扩展为条件语句的集合,用于决定某些代码是否执行。
使用条件语句,可以告诉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,所以请将我从很时髦的人群中排除。而这些例子显示了如何在执行操作之前通过检查某些条件,达到更多的目的。这些类型的语句在脚本中称为
控制流。
语句分类
If语句
If语句是可以测试一个或多个条件的成立与否,并在指定条件成立或不成立时分别执行不同的代码,其结构主要有以下4种。
1.单行格式的If语句
单行格式的If语句可判断一个或多个条件的成立与否,并在条件成立时执行一组代码,如果条件不成立,则跳出当前语句继续执行下一行代码。单条件If语句仅在条件成立时执行特定操作,条件不成立时则跳出,其语法格式如下。
其中,condition为判断条件,其最终结果为True或False(或者数值0和非0);statements为条件成立时执行的单条件或多条件语句,如果是多条件语句,各语句之间以英文冒号(:)分隔。单条件If语句执行流程如图1所示。
▲示例中代码的说明
在以上代码中,通过InputBox()函数接收用户输入的值并将其转换为Integer类型,通过单条件If语句判断输入的值是否为0,当值为0时通过对话框显示错误信息,并结束程序运行。由于在条件成立时需要执行两条语句,因此,Then关键字右侧的两条语句使用英文冒号分隔;当条件不成立时,直接执行If语句下一行代码(即c=a/b),代码运行结果如图2所示。
2.多行格式的If语句
在条件成立或不成立时都需要执行特定的操作,并且各项操作都包含有很多代码,使用单行格式的I鼯句就显得有些力不从心了,此时可使用多行(块状)格式的If语句。多行格式的If语句具有以下两种语法格式。
或者
以上两种格式中的condition参数和statements参数与单行格式的If语句中对应的参数作用相同,第二种语法格式中的elsestatements参数是包含在If语句中当条件不成立时执行的操作。第一种语法格式与单行格式的If语句作用相同,仅对条件成立时进行处理,但该结构比单行格式的结构更易于理解阅读和后期维护。
▲示例中代码的说明
在以上代码中,通过InputBox()函数接收用户输入的值,并判断输入值与系统保留值是否相同。如果相同,则打开“成功”对话框,如果不同,则显示“失败”对话框,代码运行结果如图3所示。
3.多条件的lf语句
使用多条件If语句可以对多个单独的条件进行判断,并根据判断结果执行不同的操作,If语句中对多个条件的判断主要是通过ElseIf关键字来实现的,多条件的If语句的语法格式如下。
其中,condition、statements、elsestatements参数与多行格式的If语句中的各对应参数相同,condition-n参数与condition参数的作用相同,表示同一个If语句中的第n个判断条件。在多条件If语句中,代码会从上到下依次测试condition和condition-n参数,当测试到一个condition成立时,即执行其紧临Then后面的语句,完成后直接跳出If语句。多条件If语句执行的流程如图4所示。
4.嵌套If语句
除了使用多条件If语句来判断多个独立条件外,还可以使用嵌套If语句来实现相似的目的。嵌套If语句就是在一个块结构的If语句内部包含一个完整的If语句。
需要注意的是,无论嵌套多少If语句,每一个If...Then语句必须有一个对应的End If语句,否则会产生语法错误。
Select Case语句
Select Case语句可以根据一个条件表达式的值,选择多组语句中的一组来执行,通常用于判断用户的操作,并根据用户的不同操作执行不同的代码。
Select Case语句的语法格式如下。
其中,testexpression为必选参数,表示参与测试的条件,可以是任意数值表达式或字符串表达式;expressionlist.n表示可能的testexpression列表,有几个Case就需要几个expressionlist;elsestatements是当所有expressionlist中都没有testexoression的佰时执行的语句。
▲示例中代码的说明
在以上代码中,通过InputBox()函数接收用户输入的值并将其转换为Integer类 ,使用Select Case语句测试可能是4个值,根据用户输入的数值不同显示不同的对话框,当用户输入的数值不在1~4范围内时,显示“错误”对话框。
语句应用
以下通过一些实例来讲述条件语句的应用。
例:输入年份,判断是否为闰年。
根据例3.3的分析和流程,其程序如下:
/*
程序名称:ex3-21
建立日期:2015-8-20
程序功能:判断闰年
*/
程序运行结果:
①输入2()13按Enter键
2013不是闰年!
②输入2012按Enter键
2012是闰年!
③输入100按Enter键
数据输入错误!
注意问题
条件语句(IF/THEN语句)是算法语言中实现逻辑判断的重要语句,它在程序设计中有着广泛的应用。正确、合理地使用条件语句对于保证程序的可靠性、提高程序运行效率以及改善程序的逻辑结构都有重要意义.以下分三个方面谈谈在设计BASIC程序时,使用条件语句应注意的问题。
1、实型量的计算误差对逻辑判断的影响
关系表达式中的实型量计算误差有可能造成条件判断的失误,从而影响程序的可靠性。
2、为提高程序运行效率,应避免不必要的条件判断
计算机进行逻辑判断比一般的算术运算更费时间,减少不必要的条件判断可以提高程序运行效率。
3、为改善程序的逻辑结构和增加易读性,应尽量避免过多的If/then语句的使用(特别是与
GOTO语句配合使用的情形)。