《零点起飞学VisualBasic之灵活的程序流程.pptx》由会员分享,可在线阅读,更多相关《零点起飞学VisualBasic之灵活的程序流程.pptx(49页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第4章 灵活的程序流程控制流程控制是指在Visual Basic应用程序开发中对特定条件进行分析、比较和判断。主要包括判断语句和循环语句。判断语句为根据不同的判断结果进行不同的操作。循环语句可以进行多次数学运算。学习本章,可以熟练使用判断语句和循环语句进行流程控制。4.1 根据条件执行判断语句判断语句在复杂应用程序流程控制中具有重要作用。程序中如果不添加判断语句,程序将从第一行代码开始运行,直至最后一行程序终止,无法响应用户的操作。判断语句可根据所给的条件控制程序流程,只运行其中特定程序代码。判断语句包括If语句和Select Case语句。下面详细介绍其具体使用方法。4.1.1 如果.就.I
2、f语句应用程序中可能只需要运行某个符合条件的语句。If语句根据表达式的结果选择执行一段代码。标准语法有单行语句和多行语句两种形式。单行语句形式如下:If 条件表达式 Then 处理语句1Else 处理语句2多行语句形式如下:If条件表达式Then 处理语句1Else 处理语句2End If参数说明:(1)条件表达式为必需项。可以为符合逻辑条件的数值表达式或字符表达式,其结果为真或假。如果条件表达式为Null,则条件表达式结果为假。该逻辑条件可以包括以下内容:将变量与数值、字符或函数进行比较的结果。值为真或假的变量。返回为真或假的任何函数或表达式。(2)处理语句1为可选项,当条件为真时,执行一段
3、特定代码。该代码可以为单个命令、函数或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=15B=10If AB then A=B判断如果A大于B则将B数值赋予A【示例4-3】使用If
4、语句判断工资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判断工资数值是否大于1000cTax=10税款为10元Print 工资大于1000元,需缴税:&cTax显示信息End If说明:本例使用Inp
5、utBox函数。InputBox函数弹出信息输入对话框,接收输入的信息并赋予变量。有关InputBox函数参见第10章“信息对话框”中“使用InputBox函数”小节。注意:在多行语句中使用缩进代码增加了代码的可读性,便于后期阅读和修改维护。4.1.2 如果.如果.就.多重If语句Visual Basic还支持多重If语句,对多个条件进行判断执行指定代码。其标准语法如下:If 条件表达式1 Then 处理语句1ElseIf 条件表达式2 Then 处理语句2Else 处理语句3End If参数说明:条件表达式为必需项,可以为符合逻辑条件的数值表达式或字符表达式,其结果为真或假。如有Else语句
6、,表明当条件不为真时,执行相关代码。处理语句2为可选项,以上条件不为真时运行相关代码。处理语句3为可选项,以上所有条件不为真时运行相关代码。流程示意图如图4.2所示。图4.2 流程示意图【示例4-5】使用多重If语句判断不同工资显示缴税税款。01cSalary=InputBox(输入工资)02调用InputBox函数接受输入工资03If cSalary1000 then04如果工资大于100005cTax=10税款为10元06ElseIf cSalary500 then07如果工资为500100008cTax=5税款为5元09Else如果工资低于50010cTax=0税款为011End If1
7、2Print 工资&csalary&元,需缴税:&ctax显示信息该If语句判断工资cSalary是否大于1000元。如果条件为真,则税款cTax为10元。判断工资cSalary是否大于500元。如果条件为真,则税款cTax为5元。如果工资cSalary大于500元条件不为真,则税款cTax为0。该语句还可以更复杂一些。01cSalary=InputBox(输入工资)InputBox函数接受输入信息02If cSalary1000 then如果工资大于100003 cTax=10税款为10元04ElseIf cSalary500 then如果工资为500100005 cTax=5税款为5元06
8、ElseIf cSalary250 then如果工资为25050007 cTax=2.5税款为2.508Else如果工资为025009 cTax=0税款为010End If11Print 工资&csalary&元,需缴税:&ctax 显示信息说明:该If语句判断工资cSalary如果为5001000元之间,税款cTax为10元。如果为250500元之间,税款cTax为5元。如果为0250元之间,税款cTax为0元。Visual Basic语句也可以使用Not运算符,以增加控制代码流程灵活性。【示例4-6】演示Not运算符的使用,其代码如下:If Not cSalary250 then如果变量不
9、大于250 cTax=0税款为0End If说明:该If语句判断工资cSalary是否不大于250元。如果条件为真,则税款cTax为0元。4.1.3 Select Case语句判断语句另一个重要方法是使用Select Case语句。根据运算表达式的条件结果,允许有条件执行多个代码段中的指定段。对于多重If语句,使用Select Case语句相对更加富有可读性。其标准语法如下:Select Case条件表达式Case 条件表达式1处理语句1Case条件表达式2处理语句2Case Else处理语句nEnd Select参数说明:条件表达式为必需项,可以为有返回值的函数、过程、表达式。如果在条件表达
10、式中有多个值,可以用逗号把值隔开。条件表达式在运行时分别与分组中的表达式进行比较判断。如果与表达式相等,执行Case语句后面的命令,运行结束。反之,继续运行下一个Case语句表达式,直至该Select Case语句结束。处理语句n为必需项,可以为单个命令、函数、过程、特定代码段。流程示意图如图4.3所示:图4.3 流程示意图【示例4-7】使用Select Case语句判断显示不同级别缴税税款。本例多重选择使用Select Case语句替代多重If语句。原有代码如下:01csalary=InputBox(输入工资)接收函数输入信息02If cSalary1000 then工资大于1000元03
11、cTax=10税款为10元04ElseIf cSalary500 then工资500100005 cTax=5税款5元06ElseIf cSalary250 then工资25050007 cTax=2.5税款2.5元08Else其余工资小于250元09 cTax=0税款为010End If11Print 工资&csalary&元,需缴税:&ctax显示信息改写后的代码如下:01Select Case cSalaryselect语句02 Case is1000工资大于1000元03 cTax=10税款为10元04 Case is500工资为500100005 cTax=5税款为5元06 Case
12、 is250工资为25050007 cTax=2.5税款为2.5元08 Case is0工资0250元09 cTax=0税款为010 Case Else无此工资11 Print 对不起,没有工资12End Select13Print 工资&csalary&元,需缴税:&ctax【示例4-8】判断员工职务,根据职务显示不同工资信息。01Sjob=InputBox(输入职务)接收输入信息02Select Case sJobselect语句03 Case 高级工程师如果为高级工程师04 Print 高级工程师工资为1000元 05 Case 工程师如果为工程师06 Print 工程师工资为500元
13、07 Case 助理工程师如果为助理工程师08 Print 助理工程师工资为250元 09 Case Else其余情况10 Print 对不起,没有该职务11End Select说明:如果变量sjob为“工程师”,首先和第一个Case语句“高级工程师”相比较,表达式结果为假,继续比较下一个Case语句“工程师”,表达式结果为真,执行当前段代码。程序直接跳转到End语句结束。Select Case语句还可以处理列表、范围和数值的比较。【示例4-9】使用Select Case语句判断显示不同学生学习成绩。本例判断输入的学生成绩,如果低于60,显示“不及格”;如果在6099之间,显示“及格”;如果为
14、100,显示“优秀”。01nScore=InputBox(输入成绩)接收InputBox函数输入信息02Select Case nScoreselect语句03 Case is60小于6004 Print 不及格05 Case 60 to 996099分06 Print 及格07 Case is=100100分08 Print 优秀09 Case Else其余情况10 Print 对不起,没有成绩11End Select说明:如果nScore变量为68,首先和第一个Case语句判断是否小于60,表达式结果为假,继续执行下一个Case语句,判断是否在6099之间,表达式结果为真,执行当前段代码。
15、程序跳转到End语句结束。判断语句是应用程序中控制程序流程很重要的方法。通过判断语句来执行特定代码,可进行数值运算或为用户显示预定义信息。4.2 重复执行循环语句流程控制的重要方法之一是循环语句。循环语句主要在程序中重复运行特定任务。Visual Basic开发程序中主要包括计数循环、条件循环和枚举循环。本节主要讲述For循环(计数循环)、Do和While循环(条件循环)以及For-each循环(枚举循环)。4.2.1 For循环Viusal Basic语言中使用For循环主要用来进行计数。For循环又可以称为For-Next循环,主要采用For关键字和Next关键字。其标准语法如下:For
16、计数变量=初始值 To 结束值 Step 步长处理语句1Exit For处理语句2Next 计数变量参数说明:计数变量为必需项,用做循环计数器的数值变量。这个变量不能是布尔或数组元素。初始值为必需项,表示计数变量的初始值。结束值为必需项,表示计数变量的终末值。步长为可选项,表示每次运行的数值。可以为负值,但是不能为0。处理语句1和处理语句2为可选项,表示在For-Next之间运行的代码段。它按计数次数可以多次被运行。Exit For为可选项,表示用于退出当前层循环语句。警告:如果循环初始值大于终末值,该循环根本不执行。可以将步长step设置为负值,可以逆向计数。循环将从初始值运行到小于终末值为
17、止。在循环语句中间绝对不要重新设置计数变量的数值,否则将导致死循环。流程示意图如图4.4所示。图4.4 流程示意图【示例4-10】使用For循环计算高斯运算总和。本示例计算1+2+3+20总和。代码如下:01Dim itotal As Integer声明变量02Dim n As Integer03itotal为总和数值04itotal=005n为循环计数06n=107For n=1 To 20for循环08 itotal=n+itotal计算总和表达式09Next10Print 1+2+3+20总和为:&itotal声明变量itotal为计算总和,将其赋值为0,然后运行For循环。运行步骤如下
18、: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”。以上程序还可以改写成:01Dim itotal As Integer声明变量02Dim n As Integer03ito
19、tal=0变量赋值04n=2005For n=20 To 1 Step-1 逆序运算,步长为-106 itotal=n+itotal求和运算07Next08Print 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 处理语句2Loop参数说明:条件表达式为必需项
20、。它可以为返回真或假的任意函数、属性值、表达式。处理语句1和处理语句2为可选项,表示循环过程中运行指定代码段。Exit Do为可选项,表示循环过程中退出当前循环语句。Do循环在运行时首先判断表达式条件是否为真。如果条件为真,程序继续执行。如果条件为假,程序终止。警告:如果初始赋予变量,在循环过程中必须对变量进行改变以符合结束循环条件。否则,该循环将成为死循环。【示例4-11】使用Do循环显示5行#号。代码如下:01i=1初始循环变量02Do While i=5开始循环03 i=i+1变量增加104 Print#05Loop循环语句结束该示例采用Do循环。变量i初始赋值为1。While语句判断i
21、是否小于等于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行#号”。改进代码如下:01i=1初始变量02Do While i 5 Then判断是否大于506 Print 看看
22、,一共5行#号 结果为真显示信息07 End If语句结束08Loop循环运行过程中增加一个If语句判断i的数值,如果大于5显示信息“看看,一共5行#号”。当条件为真时,运行指定代码。如何在条件不为真时运行指定代码呢?此时需要用到Until语句。将上段的While关键字替换为Until关键字即可。Do-Until语句当条件为假时才运行循环中的语句,当条件为真时,循环终止。流程示意图如图4.5所示。图4.5 流程示意图【示例4-12】使用Do-Until循环语句打印5行“#”号。代码如下:01i=1初始变量02Do Until i 5开始循环03 i=i+1变量增加04 Print#05Loop
23、运行结果与Do-While语句相同。【示例4-13】本例代码在数据库编程中具有非常重要的作用。以下为操作数据库和记录集部分代码。本语句为数据库记录循环语句。recordset为记录集。Eof为数据库结尾Do Until recordset.eof Lsttitle为列表框。additem为列表框添加标题字段数值 lsttitle.additem recordset.fields(标题)记录移到下一个 recordset.movenextLoop说明:上段示例中,recordset表示一个数据库记录集,存储数据库记录信息。Eof函数表示为运行到数据库最后一行。Until语句表示运行循环之间的代码
24、直到数据库记录结尾。循环中表示为lsttitle列表框控件添加数据库标题。Movenext方法将当前数据库记录移动到下一行。该循环语句首先判断记录是否在数据库结尾,如果不是继续运行,循环中移动记录到下一行,一直运行到数据库结尾时,循环结束。上述示例代码参见第4篇“数据库开发篇”中相关内容。4.2.3 While循环在Visual Basic应用程序开发中,经常可以看到类似While-Wend这样的循环语句。这种循环是早期版本遗留下来的,高版本的Visual Basic中依然支持此用法。但是,笔者推荐使用前两种循环。While循环语句的标准语法如下:While 条件语句表达式处理语句WendWh
25、ile循环与Do循环非常相似,但是更简单一些。只有当条件为真时,运行循环语句中的代码。【示例4-14】使用While循环语句打印5行“#”号。代码如下:01i=1初始变量02While i 5 Then判断是否大于506 Print 数组内容大于5数值为:&n当结果为true时显示的信息07 Else08 Print 数组内容为 小于 5数值为:&n 当结果为false时显示的信息09 End If10Next n说明:本示例判断数组中数字是大于5还是小于5分别运行不同代码。有关数组内容参见第6章。4.3 小 结本章主要介绍了判断语句和循环语句的定义,主要包括If语句、Select Case语句、For循环、Do循环、While循环和枚举循环的语法知识,以及如何根据应用程序需要使用判断和循环语句。其中,循环语句循环过程难于控制,需要结合实例多加分析和实践。第5章将介绍过程和函数。