VisualBasic2005编程基础与项目实践——第03章控制结构VisualBasic2005采用事件驱动(Event-Driven)机制来调用子过程,所谓事件驱动是指:程序首先等待用户输入(如在按钮上单击鼠标),然后对输入事件(如单击)作出反应,并按照规定的方式进行处理。但对于上述的这些子过程本身,仍要使用结构化程序设计的方法,用控制结构来控制程序的执行流程。结构化程序设计有三种基本控制结构:顺序结构、选择结构、循环结构。本章将对这三种控制结构的概念及相应的控制语句进行详细的介绍。VisualBasic2005编程基础与项目实践——第03章控制结构本章学习目标(1)理解顺序结构、选择结构、循环结构的概念。(2)熟练掌握选择结构、循环结构的控制语句的语法格式及应用。(3)掌握输入框、消息框的语法格式及使用方法。(4)掌握书中讲述的一些基本算法。VisualBasic2005编程基础与项目实践——第03章控制结构顺序结构顺序结构是一种线性结构,也是程序设计中最简单、最常用的基本结构,它只是一种编写和执行程序的协议,并不需要专门的控制语句来支持,从宏观上来看,任何的程序或系统都可以看成是由一个个基本结构或基本程序段构成的顺序结构。VisualBasic2005编程基础与项目实践——第03章控制结构顺序结构的概念顺序结构的执行特征为:按照语句出现的先后顺序,依次执行。顺序结构的结构化程序流程图(N-S图)如图3-1所示。处理实际问题时,往往需要用户输入数据,然后进行相应的处理后由程序输出结果。接下来介绍如何使用输入输出类InputBox与MessageBox来创建输入框和消息框。A块B块C块VisualBasic2005编程基础与项目实践——第03章控制结构输入对话框输入对话框的作用是从用户处获取信息,在VisualBasic2005中使用InputBox类建立输入对话框。该类能够在对话框中显示提示符串,并等待用户输入文本和单击按钮,然后返回相应的文本内容。其语法格式为:InputBox(Prompt[,Title][,DefaultResponse][,Xpos][,Ypos])VisualBasic2005编程基础与项目实践——第03章控制结构说明①Prompt字符串表示输入对话框的提示文本。如:“请输入圆的半径:”。②Title字符串表示输入对话框的标题,如:“输入半径”。如果省略,则以应用程序名作为其标题。③DefaultResponse字符串用来设置输入对话框中的默认文本。省略则为空白。④Xpos和Ypos用于控制输入对话框的显示位置,Xpos表示屏幕左边到输入对话框左边界的水平距离,Ypos表示屏幕上边到输入对话框上边界的垂直距离。若省略则显示在屏幕中下方大约三分之一处。在输入对话框,如果用户选择了【确定】按钮,则InputBox函数返回文本框中所有的文本,数据类型为字符串;若选择【取消】按钮,则返回空字符串。VisualBasic2005编程基础与项目实践——第03章控制结构消息框消息框的作用是输出信息,在VisualBasic2005中使用MessageBox类建立消息框。其语法格式为:MessageBox.Show(text[,caption][,buttons][,icon][,defaultbutton])说明:①Show为MessageBox类的方法,其作用是在屏幕上显示消息框。②text字符串表示消息框输出的信息。如:“圆的面积为:10.17875”。③caption字符串表示消息框的标题,如:“计算结果”。如果省略,则以应用程序名作为其标题。④buttons表示在消息框上显示的按钮类型,可以使用符号常量和数值,如省略则默认为“OkOnly”或0。⑤icon表示消息框上面显示的图标,如信息图标、错误图标、警告图标等。⑥defaultbutton表示消息框上的按钮哪个为默认的,有Button1、Button2和Button3三个值。VisualBasic2005编程基础与项目实践——第03章控制结构用于设置buttons、icon和defaultbutton各符号常量的对应的数值及含义如表3-1所示。符号常量含义OkOnly只显示【确定】按钮OkCancel显示【确定】、【取消】按钮AbortRetryIgnore显示【终止】、【重试】和【忽略】按钮YesNoCancel显示【是】、【否】和【取消】按钮YesNo显示【是】、【否】按钮RetryCancel显示【重试】、【取消】按钮Critical“停止”图标Question“问号”图标Exclamation“叹号”图标Information“信息”图标DefaultButton1第一个按钮为默认按钮DefaultButton2第二个按钮为默认按钮DefaultButton3第三个按钮为默认按钮VisualBasic2005编程基础与项目实践——第03章控制结构单击消息框上的按钮后,会给MessageBox返回一个1~7之间的数值,所以MessageBox可以通过返回值来判断单击了哪个按钮,常用于选择结构中。对应情况如表3-2所示。符号常量数值含义符号常量数值含义VbOk1显示【确定】按钮VbIgnore5显示【忽略】按钮VbCancel2显示【取消】按钮VbYes6显示【是】按钮VbAbort3显示【终止】按钮VbNo7显示【否】按钮VbRetry4显示【重试】按钮---VisualBasic2005编程基础与项目实践——第03章控制结构选择结构在日常生活的事件处理中,常常需要根据不同的情况,采用不同的解决方法。同样,在程序设计中,也要根据不同的给定条件而采用不同的处理方法。选择结构也称为分支结构,其特点是:根据给定的条件是否成立,决定从各个可能的分支中执行某一分支的相应操作,并且“无论分支多寡,必择其一”。VisualBasic2005编程基础与项目实践——第03章控制结构If语句If语句是实现单条件选择结构的语句,其特点是:当给定条件(条件表达式)为真时,执行条件为真的语句组(以下称为“语句组1”);如果为假,则执行条件为假的语句组(以下称为“语句组2”)。其流程图如图3-7所示。VisualBasic2005编程基础与项目实践——第03章控制结构单行If语句单行If语句的语法格式为:If条件Then[语句组1][Else语句组2]说明:①条件可以是关系表达式、逻辑表达式或数值表达式。②执行过程:判断条件,若为真,执行语句组1;否则执行语句组2。VisualBasic2005编程基础与项目实践——第03章控制结构块结构If语句当Then部分和Else部分包含的语句比较多时,采用单行结构的If语句会使得程序结构不够清晰,为此,VisualBasic2005提供了块结构的If语句(也称多行If语句),其语法格式如下:If条件Then语句组1[Else语句组2]EndIf说明:①条件可以是关系表达式、逻辑表达式或数值表达式。②执行过程与单行结构If语句类似;先判断条件,若为真,执行语句组1;否则执行语句组2。③Else子句是可选项。VisualBasic2005编程基础与项目实践——第03章控制结构If语句的嵌套与ElseIf格式If语句的嵌套是指Then或Else子句中又包含If语句的情况,其形式为:If条件1ThenIf条件2Then……EndIf……EndIfVisualBasic2005编程基础与项目实践——第03章控制结构If语句的嵌套格式ElseIf语法格式如下:If条件1Then语句组1[ElseIf条件2Then语句组2]……[Else语句组n+1]EndIf说明:①Else子句与ElseIf子句都是可选项,可以放置多个ElseIf子句,但必须在Else子句之前。②执行过程:先测试条件1,如成立,执行语句组1;否则依次测试ElseIf部分的条件,若成立,则执行相应的语句组;如果没有一个条件成立的话,则执行Else子句的语句组n+1。VisualBasic2005编程基础与项目实践——第03章控制结构IIf函数IIf函数可以实现简单的选择结构,其语法格式为:IIf(条件表达式,成立时的返回值,不成立时的返回值)说明:①条件表达式可以是关系表达式、逻辑表达式或数值表达式,若为数值表达式,则按照非0为真,0为假的规则转化成布尔值。②成立时的返回值表示条件表达式为真时函数的返回值。③不成立时的返回值表示条件表达式为假时函数的返回值。例如:判断奇偶性的选择结构可以用IIf函数写成:'x是被判断的整数,Str为接收结果的字符串变量Str=IIf(xMod2=0,该数是偶数,该数是奇数)VisualBasic2005编程基础与项目实践——第03章控制结构SelectCase语句使用If语句的嵌套可以实现多分支选择,但仍然不够快捷。为此,VisualBasic2005提供了多分支选择语句SelectCase来实现,其语法格式如下:SelectCase测试条件[Case表达式表1语句组1][Case表达式表2语句组2]……[CaseElse语句组n+1]EndSelectVisualBasic2005编程基础与项目实践——第03章控制结构说明①测试条件为必选参数,可以是数值或字符串表达式,一般为变量。②表达式表是用于与测试条件匹配的参数,其形式可以为:表达式如:3*2表达式To表达式如:2To8Is关系运算表达式如:Is10③可以使用多个表达式,中间用逗号隔开,如:Case1,5To8,Is10④语句组n可以是一条或多条语句,当表达式表n成立时被执行。若所有的表达式均不与测试条件相匹配,则执行CaseElse子句中的语句组n+1。VisualBasic2005编程基础与项目实践——第03章控制结构循环结构程序中的循环是指:在程序中,从某处开始有规律地反复执行某一操作块的现象,被重复执行的操作块称为循环体,循环体执行与否及循环次数视循环类型与条件而定。然而,无论何种类型的循环都有一个共同点:循环次数必须有限(即非死循环)。VisualBasic2005中的循环语句有For语句、Do语句、While语句。VisualBasic2005编程基础与项目实践——第03章控制结构For语句For...Next语句按指定的次数执行循环体,在循环体中使用一个循环变量来控制循环的次数,其流程图如图3-13所示。VisualBasic2005编程基础与项目实践——第03章控制结构For语句的语法格式For...Next语句的语法格式为:For循环变量=初值To终值[Step步长][语句组1][ExitFor][语句组2]Next[循环变量]VisualBasic2005编程基础与项目实践——第03章控制结构说明①循环变量为必选参数,用于控制循环次数,循环结束后,循环变量的值并不是终值,而是最后一次满足条件的值加步长,如:Fori=1To20Step3……Nexti执行后,i的值应为最后一次满足条件的值(19)加上步长(3),即22为循环变量i的最终值。②初值和终值均为必要参数,表示循环变量的初值和终值。③步长是可选项,其值可以是任意数值(但一般不为0,因为为0时循环条件始终成立或不成立,失去了循环的意义),如果步长为1,则可以省略Step步长项。④ExitFor为可选项,其作用是退出循环,一般搭配If语句使用。⑤语句组1和语句组2为循环体。⑥循环变量可以省略,但当存在For...Next语句嵌套时,不应省略该项,这样可以使程序更加清晰易懂。VisualBasic2005编程基础与项目实践——第03章控制结构For语句的执行过程进入For...Next循环后,先把初值赋给循环变量,判断循环