




已阅读5页,还剩44页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第4章 灵活的程序流程控制,流程控制是指在Visual Basic应用程序开发中对特定条件进行分析、比较和判断。主要包括判断语句和循环语句。判断语句为根据不同的判断结果进行不同的操作。循环语句可以进行多次数学运算。学习本章,可以熟练使用判断语句和循环语句进行流程控制。,4.1 根据条件执行判断语句,判断语句在复杂应用程序流程控制中具有重要作用。程序中如果不添加判断语句,程序将从第一行代码开始运行,直至最后一行程序终止,无法响应用户的操作。判断语句可根据所给的条件控制程序流程,只运行其中特定程序代码。判断语句包括If语句和Select Case语句。下面详细介绍其具体使用方法。,4.1.1 如果就.If语句,应用程序中可能只需要运行某个符合条件的语句。If语句根据表达式的结果选择执行一段代码。标准语法有单行语句和多行语句两种形式。单行语句形式如下: If 条件表达式 Then 处理语句1Else 处理语句2 多行语句形式如下: If条件表达式Then 处理语句1 Else 处理语句2 End If,参数说明: (1)条件表达式为必需项。可以为符合逻辑条件的数值表达式或字符表达式,其结果为真或假。如果条件表达式为Null,则条件表达式结果为假。该逻辑条件可以包括以下内容: 将变量与数值、字符或函数进行比较的结果。 值为真或假的变量。 返回为真或假的任何函数或表达式。,(2)处理语句1为可选项,当条件为真时,执行一段特定代码。该代码可以为单个命令、函数或If与End If之间的代码段。 (3)处理语句2为可选项,当条件不为真时,执行相关代码。 流程示意图如图4.1所示。,图4.1 流程示意图,单行语句运行时为单个命令或调用某个过程。,【示例4-1】,根据If语句判断结果运行不同代码。该If语句判断x的数值是否大于10。如果大于10,则重新将x变量数值赋予0。 If x10 then x=0 判断变量x是否大于10,如果 为真赋予0,【示例4-2】,赋予变量A和B数值。在If语句中,判断A是否大于B。如果条件为真,则将B数值赋予A。 A=15 B=10 If AB then A=B 判断如果A大于B则将B数值赋予A,【示例4-3】,使用If语句判断工资cSalary是否大于1000元。如果条件为真,则税款cTax为10元。 If cSalary1000 then cTax=10 判断如果cSalary大于1000则cTax等于10,【示例4-4】,使用If语句判断工资cSalary是否大于1000元。如果条件为真,则税款cTax为10元。在当前运行窗体上显示字符串“工资大于1000元,需缴税:10”。 cSalary = InputBox(“输入工资“) 接收信息输入 If cSalary1000 then 判断工资数值是否大于1000 cTax=10 税款为10元 Print “工资大于1000元,需缴税:“ & cTax 显示信息 End If 说明:本例使用InputBox函数。InputBox函数弹出信息输入对话框,接收输入的信息并赋予变量。有关InputBox函数参见第10章“信息对话框”中“使用InputBox函数”小节。 注意:在多行语句中使用缩进代码增加了代码的可读性,便于后期阅读和修改维护。,4.1.2 如果.如果.就.多重If语句,Visual Basic还支持多重If语句,对多个条件进行判断执行指定代码。其标准语法如下: If 条件表达式1 Then 处理语句1 ElseIf 条件表达式2 Then 处理语句2 Else 处理语句3 End If 参数说明:条件表达式为必需项,可以为符合逻辑条件的数值表达式或字符表达式,其结果为真或假。如有Else语句,表明当条件不为真时,执行相关代码。处理语句2为可选项,以上条件不为真时运行相关代码。处理语句3为可选项,以上所有条件不为真时运行相关代码。 流程示意图如图4.2所示。,图4.2 流程示意图,【示例4-5】,使用多重If语句判断不同工资显示缴税税款。 01 cSalary = InputBox(“输入工资“) 02 调用InputBox函数接受输入工资 03 If cSalary1000 then 04 如果工资大于1000 05 cTax=10 税款为10元 06 ElseIf cSalary500 then 07 如果工资为5001000 08 cTax=5 税款为5元 09 Else如果工资低于500 10 cTax=0 税款为0 11 End If 12 Print “工资“ & csalary & “元,需缴税: “ & ctax 显示信息,该If语句判断工资cSalary是否大于1000元。如果条件为真,则税款cTax为10元。判断工资cSalary是否大于500元。如果条件为真,则税款cTax为5元。如果工资cSalary大于500元条件不为真,则税款cTax为0。该语句还可以更复杂一些。 01 cSalary = InputBox(“输入工资“) InputBox函数接受输入信息 02 If cSalary1000 then 如果工资大于1000 03 cTax=10 税款为10元 04 ElseIf cSalary500 then 如果工资为5001000 05 cTax=5 税款为5元 06 ElseIf cSalary250 then 如果工资为250500 07 cTax=2.5 税款为2.5 08 Else 如果工资为0250 09 cTax=0 税款为0 10 End If 11 Print “工资“ & csalary & “元,需缴税: “ & ctax 显示信息,说明:该If语句判断工资cSalary如果为5001000元之间,税款cTax为10元。如果为250500元之间,税款cTax为5元。如果为0250元之间,税款cTax为0元。 Visual Basic语句也可以使用Not运算符,以增加控制代码流程灵活性。,【示例4-6】,演示Not运算符的使用,其代码如下: If Not cSalary250 then 如果变量不大于250 cTax=0 税款为0 End If 说明:该If语句判断工资cSalary是否不大于250元。如果条件为真,则税款cTax为0元。,4.1.3 Select Case语句,判断语句另一个重要方法是使用Select Case语句。根据运算表达式的条件结果,允许有条件执行多个代码段中的指定段。对于多重If语句,使用Select Case语句相对更加富有可读性。其标准语法如下: Select Case条件表达式 Case 条件表达式1 处理语句1 Case条件表达式2 处理语句2 Case Else 处理语句n End Select,参数说明: 条件表达式为必需项,可以为有返回值的函数、过程、表达式。如果在条件表达式中有多个值,可以用逗号把值隔开。条件表达式在运行时分别与分组中的表达式进行比较判断。如果与表达式相等,执行Case语句后面的命令,运行结束。反之,继续运行下一个Case语句表达式,直至该Select Case语句结束。 处理语句n为必需项,可以为单个命令、函数、过程、特定代码段。 流程示意图如图4.3所示:,图4.3 流程示意图,【示例4-7】,使用Select Case语句判断显示不同级别缴税税款。本例多重选择使用Select Case语句替代多重If语句。原有代码如下: 01 csalary = InputBox(“输入工资“) 接收函数输入信息 02 If cSalary1000 then 工资大于1000元 03 cTax=10 税款为10元 04 ElseIf cSalary500 then 工资5001000 05 cTax=5 税款5元 06 ElseIf cSalary250 then 工资250500 07 cTax=2.5 税款2.5元 08 Else 其余工资小于250元 09 cTax=0 税款为0 10 End If 11 Print “工资“ & csalary & “元,需缴税: “ & ctax 显示信息,改写后的代码如下: 01 Select Case cSalary select语句 02 Case is1000 工资大于1000元 03 cTax=10 税款为10元 04 Case is500 工资为5001000 05 cTax=5 税款为5元 06 Case is250 工资为250500 07 cTax=2.5 税款为2.5元 08 Case is0 工资0250元 09 cTax=0 税款为0 10 Case Else 无此工资 11 Print “对不起,没有工资“ 12 End Select 13 Print “工资“ & csalary & “元,需缴税: “ & ctax,【示例4-8】,判断员工职务,根据职务显示不同工资信息。 01 Sjob=InputBox(“输入职务“) 接收输入信息 02 Select Case sJob select语句 03 Case “高级工程师“ 如果为高级工程师 04 Print “高级工程师工资为1000元“ 05 Case “工程师“ 如果为工程师 06 Print “工程师工资为500元“ 07 Case “助理工程师“ 如果为助理工程师 08 Print “助理工程师工资为250元“ 09 Case Else 其余情况 10 Print “对不起,没有该职务“ 11 End Select,说明:如果变量sjob为“工程师”,首先和第一个Case语句“高级工程师”相比较,表达式结果为假,继续比较下一个Case语句“工程师”,表达式结果为真,执行当前段代码。程序直接跳转到End语句结束。 Select Case语句还可以处理列表、范围和数值的比较。,【示例4-9】,使用Select Case语句判断显示不同学生学习成绩。本例判断输入的学生成绩,如果低于60,显示“不及格”;如果在6099之间,显示“及格”;如果为100,显示“优秀”。 01 nScore=InputBox(“输入成绩“) 接收InputBox函数输入信息 02 Select Case nScore select语句 03 Case is60 小于60 04 Print “不及格“ 05 Case 60 to 99 6099分 06 Print “及格“ 07 Case is =100 100分 08 Print “优秀“ 09 Case Else 其余情况 10 Print “对不起,没有成绩“ 11 End Select,说明:如果nScore变量为68,首先和第一个Case语句判断是否小于60,表达式结果为假,继续执行下一个Case语句,判断是否在6099之间,表达式结果为真,执行当前段代码。程序跳转到End语句结束。 判断语句是应用程序中控制程序流程很重要的方法。通过判断语句来执行特定代码,可进行数值运算或为用户显示预定义信息。,4.2 重复执行循环语句,流程控制的重要方法之一是循环语句。循环语句主要在程序中重复运行特定任务。Visual Basic开发程序中主要包括计数循环、条件循环和枚举循环。本节主要讲述For循环(计数循环)、Do和While循环(条件循环)以及For-each循环(枚举循环)。,4.2.1 For循环,Viusal Basic语言中使用For循环主要用来进行计数。For循环又可以称为For-Next循环,主要采用For关键字和Next关键字。其标准语法如下: For 计数变量 = 初始值 To 结束值 Step 步长 处理语句1 Exit For 处理语句2 Next 计数变量,参数说明: 计数变量为必需项,用做循环计数器的数值变量。这个变量不能是布尔或数组元素。 初始值为必需项,表示计数变量的初始值。 结束值为必需项,表示计数变量的终末值。 步长为可选项,表示每次运行的数值。可以为负值,但是不能为0。 处理语句1和处理语句2为可选项,表示在For-Next之间运行的代码段。它按计数次数可以多次被运行。 Exit For为可选项,表示用于退出当前层循环语句。,警告:如果循环初始值大于终末值,该循环根本不执行。可以将步长step设置为负值,可以逆向计数。循环将从初始值运行到小于终末值为止。在循环语句中间绝对不要重新设置计数变量的数值,否则将导致死循环。 流程示意图如图4.4所示。,图4.4 流程示意图,【示例4-10】,使用For循环计算高斯运算总和。本示例计算1+2+3+20总和。代码如下: 01 Dim itotal As Integer 声明变量 02 Dim n As Integer 03 itotal为总和数值 04 itotal = 0 05 n为循环计数 06 n = 1 07 For n = 1 To 20 for循环 08 itotal = n + itotal 计算总和表达式 09 Next 10 Print “1+2+3+20总和为:“ & itotal,声明变量itotal为计算总和,将其赋值为0,然后运行For循环。运行步骤如下: n=1,itotal=1+0,itotal为1。判断n是否到达终末值20,表达式结果为假,继续运行。 n=2,itotal=2+1,itotal为3。判断n是否到达终末值20,表达式结果为假,继续运行。 n=19,itotal=171+19,itotal为190。判断n是否到达终末值20,表达式结果为假,继续运行。 n=20,itotal=190+20,itotal为210。判断n是否到达终末值20,表达式结果为真。循环结束。 最后窗体显示结果为“1+2+3+20总和为210”。,以上程序还可以改写成: 01 Dim itotal As Integer 声明变量 02 Dim n As Integer 03 itotal = 0 变量赋值 04 n = 20 05 For n = 20 To 1 Step -1 逆序运算,步长为-1 06 itotal = n + itotal 求和运算 07 Next 08 Print “20+19+18+1总和为:“ & itotal 说明:该程序将从20开始,步长为1逆向进行运算。显示最终计算结果为210。,4.2.2 Do循环,For循环通过步长计数来运行程序。在特定条件下运行特定代码,需要用到Do循环和4.2.3节的While循环。Do循环通过判断表达式条件是真还是假来确定是否结束循环。其标准语法如下: Do While|Until 条件表达式 处理语句1 Exit Do 处理语句2 Loop,参数说明: 条件表达式为必需项。它可以为返回真或假的任意函数、属性值、表达式。 处理语句1和处理语句2为可选项,表示循环过程中运行指定代码段。 Exit Do为可选项,表示循环过程中退出当前循环语句。 Do循环在运行时首先判断表达式条件是否为真。如果条件为真,程序继续执行。如果条件为假,程序终止。 警告:如果初始赋予变量,在循环过程中必须对变量进行改变以符合结束循环条件。否则,该循环将成为死循环。,【示例4-11】,使用Do循环显示5行#号。代码如下: 01 i = 1 初始循环变量 02 Do While i = 5 开始循环 03 i = i + 1 变量增加1 04 Print “#“ 05 Loop 循环语句结束 该示例采用Do循环。变量i初始赋值为1。While语句判断i是否小于等于5。如果条件为真,继续执行Do-loop之间的代码;反之,程序终止。中间套用一个If语句,判断是否打印5行。如果条件为真,显示提示信息。,运行步骤如下: i=1,Do While语句判断i是否小于等于5,条件为真,继续执行代码。i=i+1。 i=2,Do While语句判断i是否小于等于5,条件为真,继续执行代码。i=i+1。 i=6,Do While语句判断i是否小于等于5,条件为假,循环结束。 当前运行窗体显示5行#号。改进上段代码,当打印5行#号后,显示信息“看看,一共5行#号”。,改进代码如下: 01 i = 1 初始变量 02 Do While i 5 Then 判断是否大于5 06 Print “看看,一共5行#号“ 结果为真显示信息 07 End If 语句结束 08 Loop,循环运行过程中增加一个If语句判断i的数值,如果大于5显示信息“看看,一共5行#号”。当条件为真时,运行指定代码。如何在条件不为真时运行指定代码呢?此时需要用到Until语句。将上段的While关键字替换为Until关键字即可。 Do-Until语句当条件为假时才运行循环中的语句,当条件为真时,循环终止。 流程示意图如图4.5所示。,图4.5 流程示意图,【示例4-12】,使用Do-Until循环语句打印5行“#”号。代码如下: 01 i = 1 初始变量 02 Do Until i 5 开始循环 03 i = i + 1 变量增加 04 Print “#“ 05 Loop 运行结果与Do-While语句相同。,【示例4-13】,本例代码在数据库编程中具有非常重要的作用。以下为操作数据库和记录集部分代码。 本语句为数据库记录循环语句。recordset为记录集。Eof为数据库结尾 Do Until recordset.eof Lsttitle为列表框。additem为列表框添加标题字段数值 lsttitle.additem recordset.fields(标题) 记录移到下一个 recordset.movenext Loop 说明:上段示例中,recordset表示一个数据库记录集,存储数据库记录信息。Eof函数表示为运行到数据库最后一行。Until语句表示运行循环之间的代码直到数据库记录结尾。循环中表示为lsttitle列表框控件添加数据库标题。Movenext方法将当前数据库记录移动到下一行。该循环语句首先判断记录是否在数据库结尾,如果不是继续运行,循环中移动记录到下一行,一直运行到数据库结尾时,循环结束。上述示例代码参见第4篇“数据库开发篇”中相关内容。,4.2.3 While循环,在Visual Basic应用程序开发中,经常可以看到类似While-Wend这样的循环语句。这种循环是早期版本遗留下来的,高版本的Visual Basic中依然支持此用法。但是,笔者推荐使用前两种循环。While循环语句的标准语法如下: While 条件语句表达式 处理语句 Wend While循环与Do循环非常相似,但是更简单一些。只有当条件为真时,运行循环语句中的代码。,【示例4-14】,使用While循环语句打印5行“#”号。代码如下: 01 i = 1 初始变量 02 While i = 5 开始循环 03 i = i + 1 04 Print “#“ 显示信息 05 Wend 循环结束 说明:该示例采用While循环与Do循环基本类似,这里不再赘述。,4.2.4 枚举循环,枚举循环又被称为For-each-next循环。与For-next循环语句略有不同,它将数组或对象集合中的对象重复执行一段代码,并不是重复执行一定次数相同代码。For-each-next循环语句对不知数目的相同对象进行操作时具有明显优点。其标准语法如下: For每个元素 In 元素组 处理语句1 Exit For 处理语句2 Next element,参数说明: Element为必需项,用来遍历集合或数组中所有元素的变量。对于集合来说,element可能是Variant变
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 碳、硅及无机非金属材料(复习讲义)-2026年高考化学一轮复习(福建专用)解析版
- 人教版新目标九年级英语全册知识点总结单词+短语+句子+语法
- 热点13“你们从实力的地位出发同中国说话”大国外交-高考历史专练(新高考专用)
- 2025房地产抵押典当与非物质文化遗产保护合同
- 2025版智能探矿设备租赁与施工服务合同
- 2025年度大型设备融资抵押租赁合同
- 2025版淘宝商铺品牌独家代理合作协议
- 2025年度文化遗址保护投标与合同责任书
- 2025年委托代开发票及发票认证咨询合作协议
- 2025版道路施工人工费承包合同范本
- (2025秋新版)部编版八年级上册道德与法治全册教案
- 八年级心理健康体验式教学计划
- 消防监控考试题初级及答案
- 2025年太阳能海水淡化项目经济效益评估报告
- 2025年湖南湘西自治州州直事业单位招聘考试笔试试卷附答案
- 《小学开学第一课》课件
- 2025-2031年中国有源相控阵雷达行业市场发展形势及投资潜力研判报告
- 大货车货运安全知识培训课件
- 消防车辆事故课件
- 2026届四川省宜宾市普通高中高一化学第一学期期末统考试题含解析
- 景区导览智能导览设备市场前景报告
评论
0/150
提交评论