您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 数据通信与网络 > 第五章 选择结构程序设计(VB)
在VisualBasic中,除顺序结构外,流程的控制分为三种情况:一是在程序的执行过程中,根据是否满足给定的条件来判断控制是否转移,如条件语句;二是重复地执行程序的某一部分,如循环语句;三是根据不同的情况执行不同的操作,如情况语句。此外,在VisualBasic中,也可以使用Goto语句。接下来的二章将讨论这几种流程控制语句,介绍它们的格式、功能、使用及注意事项第五章选择结构程序设计一、条件语句1.单行结构条件语句:格式:if条件then语句组1[else语句组2]功能:若条件为True,执行then后的语句,否则执行else后的语句例:1(x≠0)y=0(x=0)程序如下:x=inputbox(“请输入x的值“)Ifx0theny=1elsey=0第五章选择结构程序设计条件语句组1语句组2TrueFalse条件语句组1TrueFalse形式1形式2•条件可以是关系表达式、逻辑表达式、数值表达式或字符串表达式。对于数值表达式,VB将0作为False、非0作为True处理;对于字符串表达式,VB只允许包含数字的字符串,当字符串中的数字值为0时,则认为是False,否则认为是True。VisualBasic将Null作为False处理。•语句组1和语句组2可以有多条语句,各语句之间用冒号隔开。IfaThenPrint“True”ElsePrint“False”EndIf注意:单行结构条件语句应作为一条语句书写。如果语句太长需要换行,必须在折行处使用续行符号,即一个空格跟一个下划线。无论条件是否成立,单行结构条件语句的出口都是本条件语句之后的语句。IfX=0ThenX=1+XElseX=5-XY=1-XPrint“Y=“;Y即无论条件X=0是否成立,都要执行If语句后面的语句Y=1-X。单行结构条件语句可以嵌套,也就是说,在语句组1或语句组2中可以包含另外一个单行结构条件语句。例5.1:从键盘输入三个数,找出其中最大者并输出.算法设计:●用InputBox函数把三个数值输入变量a,b,c中;●假设a最大,放在变量max中,然后分别与b,c进行比较,保留其中最大的数在变量max中;●用Print方法输出max的值。事件过程:PrivateSubCommand1_Click()Dima!,b!,c!,max!a=InputBox(“请输入第一个数:”,“输入数据”)b=InputBox(“请输入第二个数:”,“输入数据”)c=InputBox(“请输入第三个数:”,“输入数据”)max=aIfbmaxThenmax=bIfcmaxThenmax=cPrintPrinta;”、”;b;”、”;c;”之中最大值是:”;PrintmaxEndSub界面设计:设置窗体的Caption属性为“例5.1求三个数之中最大者”,用于在标题上显示程序功能。设置两命令按钮:Command1用于具体实现算法,Caption属性为“开始”;Command2用于结束程序,Caption属性为“结束”。PrivateSubCommand2_Click()EndEndSub第五章选择结构程序设计例5.2求解方程ax+b=0。要求从输入系数a,b根据题意可知:当a≠0时,x=-b/a,当a=0,b≠0时,方程无解。PrivateSubCommand1_Click()Dima!,b!,x!a=Val(InputBox(“请输入系数a:”))b=Val(nputBox(“请输入系数b:”))Ifa0Thenx=-b/a:Print“x=”;xElsePrint“方程无解!”EndSub第五章选择结构程序设计例5.3有一函数如下:1(x0)y=0(x=0)-1(x0)要求从键盘输入x的值,求出y的值。分析:该函数构成三个分支,即x0,x=0和x0时,y的值分别取1,0,-1.所以可以假设X是0的,然后再来判断X的真实值,根据判断结果,求出Y的值.第五章选择结构程序设计事件过程:PrivateSubCommand1_Click()Dimx!,y!x=InputBox(请输入x值:,输入数据)y=-1Ifx0ThenIfx0Theny=1EndIfElsey=0EndIfPrintPrinty=;yEndSub注意:在嵌套的If语句中,EndIf语句自动与最靠近的前一个If语句配对。为了程序的可读性,一般采用缩进方式书写。2.块结构条件语句:单行结构条件语句中,若条件分支执行的操作比较复杂,不能在一个逻辑行内书写完毕,可以使用块结构条件语句。第五章选择结构程序设计功能:若条件1为True,执行语句组1;否则,如果条件2为True,执行语句组2;……;当所有条件均不成立时,则执行语句组n。“语句组”可以是单个语句,也可以是多个语句。当有多个语句时,可以分多行书写;也可以写在同一行,各语句之间用冒号隔开。格式:if条件1then语句组1[ElseIf条件2then语句组2][ElseIf条件3then语句组3]……[Else语句组n]EndIf注意:整个块结构必须以If语句开头,EndIf语句结束。除了第一行的If语句和最后一行的EndIf语句是必须的以外,ElseIf子句和Else子句都是可选的。条件1语句组1条件2语句组2条件n语句组n其他语句组…第五章选择结构程序设计注意:1)使用块结构条件语句时,关键字Elself不能写成ElseIf,即中间不能有空格。2)在书写时,可以将If语句、ElseIf语句、Else子句和EndIf语句左对齐,而各语句组向右缩进若干空格,以使程序结构更加清楚,便于阅读和查错。3)要注意严格按格式要求进行书写,不可以随意换行或将两行合并成一行。4)块结构条件语句可以嵌套。5)语句组1~n都不可与前面的Then写在同一行上,否则VB认为是一个单行结构的条件语句,对于块结构语句,必须以Endif结束,而单行结构的则不需要EndIfIfa0Thenb=0ElseIfc0Thenb=1EndIfIfa0Thenb=0ElseIfc0Thenb=1EndIf第五章选择结构程序设计例5.4输入任意输入三个整数,编程设计使其按由小到大的顺序输出。分析:对三个整数a、b、c两两进行比较判断,如对于a和b,如果ab就交换两个数的值,最后就可以按照从小到大的顺序输出这三个整数。事件过程:PrivateSubCommand1_Click()Dima%,b%,c%,t%a=Val(InputBox(请输入第一个整数a:))b=Val(InputBox(请输入第二个整数b:))c=Val(InputBox(请输入第三个整数c:))IfabThent=b:b=a:a=tIfacThent=c:c=a:a=tIfbcThent=c:c=b:b=tPrintPrinta,b,cEndSub3.IIF函数:格式:IIF(表达式1,表达式2,表达式3)第五章选择结构程序设计功能:表达式1为真时函数的值为表达式2,否则函数的值为表达式3。表达式1是IIF函数的“条件”,可以是关系表达式、布尔表达式、数值表达式。如果表达式1为数值表达式,则非0表示真,0表示假。例5.6编写程序,任意输入一个整数,判定该整数的奇偶性界面设计如图:事件过程:PrivateSubCommand1_Click()DimxAsSingle,yAsSinglex=Val(Text1.Text)y=IIf(xmod2,1,0)IfyThenlabResult.Caption=奇数!ElselabResult.Caption=偶数!EndIfEndSub第五章选择结构程序设计二、多分支结构程序设计一般格式为:selectcase测试表达式case表达式表列1[语句块1][case表达式表列2[语句块2]]……[caseelse[语句块n]]Endselect可以是数值表达式或字符串表达式,或变量。例如:selectcasea+b可以是下列三种形式之一:①表达式[,表达式]……例如:case2,4,6,8②表达式To表达式例如:case1to5③Is关系运算符表达式例如:caseis5以上三种方式可以同时出现在同一个Case语句之后,各项之间用逗号隔开。如:Casel,3,10T020,Is0表示测试表达式的值为1或3,或在10到20之间(包括10和20),或小于0时将执行该该Case语句之后的语句组。功能:根据测试表达式的值,从多个语句块中选择符合条件的一个语句块执行。多分支结构的执行过程是:先对测试表达式求值,然后顺序测试该值与哪个Case子句中的表达式表列的值相配;如果正好等于该表达式表列的值,则执行该Case分支下有关的语句块,该语句块执行完后,则把控制转移到EndSelect后面的语句。第五章选择结构程序设计例:运输部门的货物运费与里程有关,距离越远,每吨货物的单价就越低。假定每吨单价P(元)与距离S(公里)之间的关系如下:32S≤10028100≤S≤200P=25200≤S≤30022.5300≤S≤40020400≤S≤100015S≥1000请编写程序,从键盘上输入要托运的货物重量W(吨)和距离S(公里),然后计算并输出总运费T(元),计算公式为:T=P×W×S第五章选择结构程序设计第五章选择结构程序设计SelectCaseVal(Text2.Text)CaseIs100Text3.Text=Text1.Text*Text2.Text*32CaseIs200Text3.Text=Text1.Text*Text2.Text*28CaseIs300Text3.Text=Text1.Text*Text2.Text*25CaseIs400Text3.Text=Text1.Text*Text2.Text*22.5CaseIs1000Text3.Text=Text1.Text*Text2.Text*20CaseElseText3.Text=Text1.Text*Text2.Text*15EndSelect例5.8见书1371、复选框和单选按钮单选按钮(OptionX):单选按钮用于从一组选项中选取其一。每次只能选择一项,而且必须选择一项,其它选项按钮将自动变成不选。常利用其Value值,判断在一组事件中选中哪个事件。取值:True,False复选框(CheckX):复选框与单选按钮不同,可从一组选项中同时选中多个选项。常利用其Value属性值,判断对某个事件的选中与否。第五章选择结构程序设计三、选择性控件例:设计如图所示窗口界面,当按下显示字符时,文本框显示:”武汉理工大学”,然后由下面的单选按钮与复选框控制显示字符的显示样式.PrivateSubCheck1_Click()IfCheck1.Value=1ThenText1.FontUnderline=TrueElseText1.FontUnderline=FalseEndIfEndSubPrivateSubCheck2_Click()IfCheck2.Value=1ThenText1.FontBold=TrueElseText1.FontBold=FalseEndIfEndSubPrivateSubCommand1_Click()Text1.FontSize=40Text1.Text=武汉理工大学EndSubPrivateSubOption1_Click()Text1.FontName=隶书EndSubPrivateSubOption2_Click()Text1.FontName=华文行楷EndSubPrivateSubOption3_Click()Text1.FontName=黑体EndSubPrivateSubCheck3_Click()IfCheck3.Value=1ThenText1.FontItalic=TrueElseText1.FontItalic=FalseEndIfEndSub3、计时器VB可以利用计时器控件(Timer)定制时间
本文标题:第五章 选择结构程序设计(VB)
链接地址:https://www.777doc.com/doc-3325534 .html