程序设计基础vb 第7章 选择结构程序设计_第1页
程序设计基础vb 第7章 选择结构程序设计_第2页
程序设计基础vb 第7章 选择结构程序设计_第3页
程序设计基础vb 第7章 选择结构程序设计_第4页
程序设计基础vb 第7章 选择结构程序设计_第5页
已阅读5页,还剩48页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第7章选择结构程序设计,学习重点,If语句、IIf函数、Switch函数、SelectCase语句的格式与使用。If语句的嵌套使用。掌握常用的选择结构算法。,本章内容,7.1If语句7.2SelectCase语句7.3基本算法及应用7.4其他应用举例本章小结,引言,分支结构,7.1If语句,7.1.1IfThen结构7.1.2IfThenElse结构7.1.3IfThenElseIf结构7.1.4If语句的嵌套7.1.5与If语句有关的函数,注1:条件表达式的值为True或False,一般是逻辑或关系表达式,也可以是算术表达式(转换为逻辑值),7.1.1IfThen结构,两种格式:,格式1:块

2、形式IfThen语句体EndIf,格式2:单行形式IfThen语句体,注2:当条件为True时执行语句体,否则执行If语句的下一条语句,注3:语句体中可以是多条语句,当采用格式2时,所有的语句必须写在一行,用冒号隔开语句体中的语句,7.1.1IfThen结构,例:已知有两数x、y,编程使x中存放较大的数分析:如果x=y,则不需要做处理如果xy,则做交换处理实现:IfxyThentemp=xx=yy=tempEndIf用格式2描述:IfxyThentemp=x:x=y:y=temp,特别注意:块结构时If和EndIf成对出现,7.1.1IfThen结构,例7-1电子闹钟设计,主要利用文本框、按钮

3、、计时器控件实现闹钟功能。,例7-1,程序代码如下:PrivateSubCommand1_Click()Timer1.Enabled=NotTimer1.Enabled用Not运算进行开关控制EndSubPrivateSubTimer1_Timer()DimdAsDated=Text1.TextIfHour(Time)=Hour(d)AndMinute(Time)=Minute(d)ThenBeep到达时间后发声EndSub,功能:连续1分钟响铃,60次,等价于:IfHour(Time)=Hour(d)AndMinute(Time)=Minute(d)ThenBeepEndIf,7.1.2If

4、ThenElse结构,两种格式:,格式1:IfThen语句体1Else语句体2EndIf,格式2:IfThen语句体1Else语句体2,注:当条件为True时执行语句体1,否则执行语句体2,例7-2已知x,求,程序代码如下:PrivateSubCmdCul_Click()DimxAsSingle,yAsSinglex=Val(txtX.Text)第1个文本框的名称是txtXIfx0ThenMsgBoxx不能小于0Elsey=Sqr(x)txtY.Text=Str(y)第2个文本框的名称是txtYEndIfEndSub,等价于:Ifx0ThenMsgBoxx不能小于0Elsey=Sqr(x):t

5、xtY.Text=Str(y),7.1.3IfThenElseIf结构,IfThen语句体1ElseIfThen语句体2Else语句体n+1EndIf,格式:,7.1.3IfThenElseIf结构,判断的顺序为表达式1、表达式2只有当表达式1为False时才判断表达式2,当表达式1和表达式2都为False时,才判断表达式3,程序执行语句体n+1的条件为前n个表达式均为False。,7.1.3IfThenElseIf结构,例:已知变量ch中存放了一个字符,判断该字符是字母字符、数字字符、空格还是其它字符。分析:字母字符:ch=“a”Andch=“A”Andch=“0”Andch=“9”空格字符

6、:ch=“”实现:,Ifch=“a”Andch=“A”Andch=“0”Andch=“9”ThenPrint“数字字符”ElseIfch=“”ThenPrint“空格”ElsePrint“其他字符”EndIf,7.1.3IfThenElseIf结构,例7-3旅客乘车旅行,可免费携带30公斤行李,超过30公斤的部分每公斤需支付托运费10元,超过50公斤部分则每公斤需支付20元托运费。请编程根据每位旅客行李的重量计算其应付的行李托运费。,例7-3,此分段函数用程序代码表示如下:PrivateSubCommand1_Click()DimxAsSingle,yAsSinglex=Val(Text1.T

7、ext)Ifx50y=(x-50)*20+20*10EndIfText2.Text=yEndSub,能否写成?,可以,但Else已经包含了x=30的信息,7.1.4If语句的嵌套,If语句中又包含If语句在Then子句或Else子句的语句体中包含完整的一条If语句如:IfxyThenPrintx&“”&yElseIfxyThenPrintx&“”&yElsePrintx&“=”&yEndIfEndIf,7.1.4If语句的嵌套,注1:If语句的完整性,即内层If语句必须完整地出现在外层If语句的Then子句或Else子句中。,内外层不能有交叉!,7.1.4If语句的嵌套,注2:ElseIf的匹

8、配原则Else始终与上面距离其最近的未被匹配过的If匹配注3:IfEndIf的匹配If块必须以一个EndIf语句结束,IfThenIfThenElseEndIfElseIfThenIfThenElseEndIfEndIf,7.1.4If语句的嵌套,为使程序结构更为清晰,要养成良好的书写习惯。,IfThenIfThenElseEndIfElseIfThenIfThenElseEndIfEndIf,为体现层次,可以使用Tab健排放不同层次的语句,7.1.4If语句的嵌套,例7-4根据用户输入年龄和性别,输出不同的欢迎信息。其中小于14岁的男性为boy,大于14岁的男性为guy,其中小于14岁的女性

9、为girl,大于14岁的女性为miss。,例7-4,程序代码如下:PrivateSubCommand1_Click()IfOp_male.Value=TrueThenIfVal(Txt_age.Text)14Then小于14岁的男性MsgBoxHello,boy!Else大于或等于14岁的男性MsgBoxHello,guy!EndIfElseIfVal(Txt_age.Text)14Then小于14岁的女性MsgBoxHello,girl!Else大于或等于14岁的女性MsgBoxHello,miss!EndIfEndIfEndSub,7.1.5与If语句有关的函数,1.IIf函数*2.Swi

10、tch函数,1.IIf函数,格式:IIf(条件表达式,条件为True时的表达式,条件为False时的表达式)功能:根据条件表达式的值,确定函数返回后面两个表达式的其中一个的值。,1.IIf函数,IIf函数实际上是IfThenElse结构的一个简写IIf函数中后两个表达式可以是各种类型的表达式,也可以是一个IIf函数的调用Printx&IIf(x0,“大于0”,“小于或小于0”)s=IIf(x0,1,IIf(x=0,0,-1)判断x的符号,1.IIf函数,将If语句改写成使用IIf函数:,Ifx30Theny=0ElseIfx=50Theny=(x-30)*10Elsey=(x-50)*20+2

11、0*10EndIf,等价于:y=IIf(x30,0,IIf(x=50,(x-30)*10,(x-50)*20+20*10),2.Switch函数,格式Switch(表达式1,值1,表达式2,值2,表达式n,值n)功能计算一组条件表达式列表的值,然后返回与条件表达式列表中最先为True的表达式所对应的Variant型数值或表达式。如:lblstatus.Caption=_Switch(grade=90,A,grade=80,B,grade80,C)用于多分支情况条件表达式和值必须成对出现!,2.Switch函数,将If语句改写成使用Switch函数:,Ifx30Theny=0ElseIfx=50

12、Theny=(x-30)*10Elsey=(x-50)*20+20*10EndIf,等价于:y=Switch(x50,(x-50)*20+20*10),7.2SelectCase语句,(多分支语句)格式:SelectCaseCase表达式列表1Case表达式列表2CaseElseEndSelect,7.2SelectCase语句,T,表达式1,语句体1,表达式2,语句体2,T,表达式n,语句体n,语句体n+1,T,执行过程:计算测试表达式的值;依次比较各个表达式,符合条件则进入相应的语句体执行;执行SelectCase语句的下一条语句。,计算测试表达式的值,7.2SelectCase语句,注1

13、:测试表达式可以是数值或字符串表达式;注2:各表达式列表合法的格式:一个常量或常量表达式多个常量或常量表达式,用逗号隔开,逗号相当于“或”,如:Case1,3,5,7表达式1to表达式2,表示从表达式1到表达式2中所有的值,其中表达式1的值必须小于表达式2的值。如:Case1to5Is关系运算表达式,可以使用的关系运算符为:、=、=,不可以使用逻辑运算符表示多个范围。前面四种情况的组合,如CaseIs10,2,4,6,Is0注3:若有多个Case表达式符合条件,则只执行第一个符合的Case下的语句体。,7.2SelectCase语句,例:已知变量ch中存放了一个字符,判断该字符是字母字符、数字

14、字符、空格还是其它字符。(用SelectCase语句改写)分析:将各种字符的判断条件改写成符合要求的Case条件字母字符:ch=“a”Andch=“A”Andch=“0”Andch=“9”“0”To“9”空格字符:ch=“”“”Is=“”实现:,SelectCasechCase“a”To“z”,“A”to“Z”Print“字母字符”Case“0”To“9”Print“数字字符”Case“”Print“空格”CaseElsePrint“其他字符”EndSelect,7.2SelectCase语句,例7-5简单运算器分析:运算符的判断:共四种取值,事先已在ComboBox中,SelectCaseC

15、mbop.TextCasetxtresult=Val(txtX)+Val(txtY)Casetxtresult=Val(txtX)-Val(txtY)Casetxtresult=Val(txtX)*Val(txtY)Casetxtresult=Val(txtX)/Val(txtY)EndSelect,7.2SelectCase语句,所有SelectCase语句可以替换为IfThenElseIf语句。只有在If语句和每一个ElseIf语句计算相同条件表达式时,才能用SelectCase结构替换IfThenElseIf结构。,7.3基本算法及应用,7.3.1求两个数的最大(小)值7.3.2用户输入

16、时按键的判断7.3.3信息的有效性验证7.3.4单选钮和复选框的应用,7.3.1求两个数的最大(小)值,分析:两个数的关系无非有3种情形,即:AB,A=B,A=BThenMax=AElseMax=BIfABThenMax=AElseMax=B,7.3.2用户输入时按键的判断,两种方法:一是在输入时判断,使用文本框的Key事件;常用:KeyPress事件(KeyAscii参数)二是在全部输入完成后再对每个字符进行判断,使用循环结构依次获取字符串中的字符。,例7-7在文本框中输入一个字符串,要求只能出现字母。PrivateSubText1_KeyPress(KeyAsciiAsInteger)If

17、(KeyAsciiAsc(z)And_(KeyAsciiAsc(Z)ThenKeyAscii=0EndSub,7.3.3信息的有效性验证,例7-8登录界面设计,“确定”按钮的Click事件过程如下:PrivateSubcmdok_Click()Iftxtuser.Text=Ortxtpwd.Text=ThenMsgBox请输入完整信息!ElseIftxtpwd.Text20082008ThenMsgBox密码错误,不能登录!txtpwd.Text=txtpwd.SetFocusElseMsgBoxtxtuser.Text&,欢迎您!EndIfEndIfEndSub,有效信息:帐号和密码都不能空

18、密码符合要求,这样的密码设置方法,安全性差,7.3.4单选钮和复选框的应用,单选钮多选一在同一组单选钮中只有一个按钮的Value属性值为1,通常使用IfThenElseIf的语句格式进行判断。复选框多选多同一组复选框中可以同时有多个被选中,也可以只选中一个,也可以一个都不选中,通常我们对各个复选框进行独立判断。,7.3.4单选钮和复选框的应用,例7-9根据用户选择,求若干门课程的总分或平均分,参考代码如下:PrivateSubcmdCal_Click()DimsumAsInteger,nAsIntegerIfchkChinese.Value=1Thensum=sum+Val(txtChines

19、e.Text):n=n+1IfchkMath.Value=1Thensum=sum+Val(txtMath.Text):n=n+1IfchkEnglish.Value=1Thensum=sum+Val(txtEnglish.Text):n=n+1IfoptTotal.ValueThentxtResult.Text=n&门课总分:&vbCrLf&sumElseIfn0ThentxtResult.Text=n&门课平均分:&vbCrLf&sum/nEndIfEndSub,问:变量n的作用是什么?,7.4其他应用举例,例7-10例7-11例7-12例7-13,例7-10,例7-10调整3个文本框中的

20、数值,使其中的数值按小到大的顺序排放,IfabThentemp=a:a=b:b=temp如果a大于b,交换a和b的值IfacThentemp=a:a=c:c=temp如果a大于c,交换a和c的值IfbcThentemp=b:b=c:c=temp如果b大于c,交换b和c的值,例7-11,例7-11求一元二次方程ax2+bx+c=0的根,根据数学中一元二次方程的求根公式,令:当0时,方程有两个不相等的实根;当=0时,方程有两个相等的实根;当0时,方程有两个不相等的虚根。,例7-11,Ifa0Thendelta=b*b-4*a*cIfdelta0Thenx1=(-b+Sqr(delta)/(2*a)

21、第1个根x2=(-b-Sqr(delta)/(2*a)第2个根txtroot=X1=&x1&Chr(13)&Chr(10)&X2=&x2ElseIfdelta=0Thenx1=-b/(2*a)txtroot=Twoequalroot,X1=X2=&x1Elsex1=-b/(2*a)根的实部x2=Sqr(-delta)/(2*a)根的虚部txtroot=X1=&x1&+&x2&i&Chr(13)&Chr(10)&X2=&x1&-&x2&iEndIfEndIf,例7-12,例7-12编程实现输入一个整数,判断其能否被3、5、7整除,并输出以下信息之一:(1)能被3、5、7整除。(2)能被其中两个数

22、(要指出哪两个)整除。(3)能被其中一个数(要指出哪一个)整除。(4)不能被3、5、7任一个整除。,代码1,IfxMod3=0AndxMod5=0AndxMod7=0ThenMsgBox能被3,5,7整除IfxMod3=0AndxMod5=0AndxMod70ThenMsgBox能被3,5整除IfxMod3=0AndxMod7=0AndxMod50ThenMsgBox能被3,7整除IfxMod5=0AndxMod7=0AndxMod30ThenMsgBox能被5,7整除IfxMod3=0ThenMsgBox能被3整除IfxMod5=0ThenMsgBox能被5整除IfxMod7=0ThenMs

23、gBox能被7整除,代码2,IfxMod3=0AndxMod5=0AndxMod7=0ThenMsgBox能被3,5,7整除ElseIfxMod3=0AndxMod5=0AndxMod70ThenMsgBox能被3,5整除ElseIfxMod3=0AndxMod7=0AndxMod50ThenMsgBox能被3,7整除ElseIfxMod5=0AndxMod7=0AndxMod30ThenMsgBox能被5,7整除ElseIfxMod3=0ThenMsgBox能被3整除ElseIfxMod5=0ThenMsgBox能被5整除ElseIfxMod7=0ThenMsgBox能被7整除ElseMsg

24、Box不能被3、5、7任一数整除EndIf,代码3,IfxMod3=0Thenn=n+1s=s&3EndIfIfxMod5=0Thenn=n+1s=s&5EndIfIfxMod7=0Thenn=n+1s=s&7EndIfIfn0ThenMsgBox能被&s&这&n&个数整除ElseMsgBox不能被任一数整除EndIf,代码4,n=0IfxMod3=0Thenn=n+1EndIfIfxMod5=0Thenn=n+2EndIfIfxMod7=0Thenn=n+4EndIf,SelectCasenCase0:MsgBox不能被任一数整除Case1:MsgBox能被3整除Case2:MsgBox能被5整除Case3:MsgBox能被3,5整除Case4:MsgBox能被7整除Case5:MsgBox能被3,7整除Case6:MsgBox能被5,7整除Case7:MsgBox能被3,5,7整除EndSelect,例7-13,例7-13模拟红

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论