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

下载本文档

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

文档简介

第7章选择结构程序设计

第7章选择结构程序设计1学习重点

If语句、IIf函数、Switch函数、SelectCase语句的格式与使用。If语句的嵌套使用。掌握常用的选择结构算法。学习重点If语句、IIf函数、Switch函数、Selec2本章内容7.1If语句7.2SelectCase语句7.3基本算法及应用7.4其他应用举例本章小结

本章内容7.1If语句3引言分支结构

True

False

P

A

B

引言分支结构TrueFalsePAB47.1If语句7.1.1If…Then…结构

7.1.2If…Then…Else…结构

7.1.3If…Then…ElseIf…结构

7.1.4If语句的嵌套

7.1.5与If语句有关的函数

7.1If语句7.1.1If…Then…结构5注1:条件表达式的值为True或False,一般是逻辑或关系表达式,也可以是算术表达式(转换为逻辑值)7.1.1If…Then…结构两种格式:格式1:

块形式

If<条件表达式>Then 语句体EndIf

格式2:单行形式

If<条件表达式>Then语句体条件表达式语句体TrueFalse注2:当条件为True时执行语句体,否则执行If语句的下一条语句注3:语句体中可以是多条语句,当采用格式2时,所有的语句必须写在一行,用冒号隔开语句体中的语句注1:条件表达式的值为True或False,一般是逻辑或关系67.1.1If…Then…结构例:已知有两数x、y,编程使x中存放较大的数分析:如果x>=y,则不需要做处理

如果x<y,则做交换处理实现:

Ifx<yThen

temp=x

x=y

y=temp

EndIf用格式2描述:

Ifx<yThentemp=x:x=y:y=temp特别注意:块结构时If和EndIf成对出现7.1.1If…Then…结构例:已知有两数x、y,编程77.1.1If…Then…结构例7-1电子闹钟设计,主要利用文本框、按钮、计时器控件实现闹钟功能。

7.1.1If…Then…结构例7-1电子闹钟设计,8例7-1程序代码如下:PrivateSubCommand1_Click()Timer1.Enabled=NotTimer1.Enabled '用Not运算进行开关控制EndSubPrivateSubTimer1_Timer()DimdAsDated=Text1.Text

IfHour(Time)=Hour(d)AndMinute(Time)=Minute(d)ThenBeep'到达时间后发声EndSub功能:连续1分钟响铃,60次等价于:IfHour(Time)=Hour(d)AndMinute(Time)=Minute(d)ThenBeepEndIf例7-1程序代码如下:功能:连续1分钟响铃,60次等价于:97.1.2If…Then…Else…结构两种格式:格式1:If<条件表达式>Then 语句体1Else

语句体2EndIf格式2:If<条件表达式>Then语句体1Else语句体2注:当条件为True时执行语句体1,否则执行语句体2T条件表达式语句体1F语句体27.1.2If…Then…Else…结构两种格式:格式110例7-2

已知x,求程序代码如下:PrivateSubCmdCul_Click()DimxAsSingle,yAsSinglex=Val(txtX.Text) '第1个文本框的名称是txtXIfx<0ThenMsgBox"x不能小于0"Elsey=Sqr(x)txtY.Text=Str(y) '第2个文本框的名称是txtYEndIfEndSub等价于:Ifx<0ThenMsgBox"x不能小于0"Elsey=Sqr(x):txtY.Text=Str(y)

例7-2已知x,求程序代码如下:等价于:117.1.3If…Then…ElseIf…结构

If<表达式1>Then

语句体1

ElseIf<表达式2>Then

语句体2

……

[Else

语句体n+1]

EndIf表达式1=True执行语句体1False表达式2=True执行语句体2False表达式3=……Else和If间无空格格式:7.1.3If…Then…ElseIf…结构

If127.1.3If…Then…ElseIf…结构FT表达式1语句体1表达式2语句体2TF……表达式n语句体n……F语句体n+1……T判断的顺序为表达式1、表达式2……只有当表达式1为False时才判断表达式2,当表达式1和表达式2都为False时,才判断表达式3,程序执行语句体n+1的条件为前n个表达式均为False。7.1.3If…Then…ElseIf…结构FT表达式1137.1.3If…Then…ElseIf…结构例:已知变量ch中存放了一个字符,判断该字符是字母字符、数字字符、空格还是其它字符。分析:

字母字符:

ch>=“a”Andch<=“z”Orch>=“A”Andch<=“Z”

数字字符:ch>=“0”Andch<=“9”

空格字符:ch=“”实现:

Ifch>=“a”Andch<=“z”Orch>=“A”Andch<=“Z”Then

Print“字母字符”

ElseIfch>=“0”Andch<=“9”Then

Print“数字字符”

ElseIfch=“”Then

Print“空格”

Else

Print“其他字符”

EndIf7.1.3If…Then…ElseIf…结构例:已知变量147.1.3If…Then…ElseIf…结构例7-3旅客乘车旅行,可免费携带30公斤行李,超过30公斤的部分每公斤需支付托运费10元,超过50公斤部分则每公斤需支付20元托运费。请编程根据每位旅客行李的重量计算其应付的行李托运费。7.1.3If…Then…ElseIf…结构例7-315例7-3此分段函数用程序代码表示如下:PrivateSubCommand1_Click()DimxAsSingle,yAsSinglex=Val(Text1.Text)Ifx<30Then 'x<30y=0ElseIfx<=50Then '30<=x<=50y=(x-30)*10Else 'x>50y=(x-50)*20+20*10EndIfText2.Text=yEndSubx>=30Andx<=50能否写成?可以,但Else已经包含了x>=30的信息例7-3此分段函数用程序代码表示如下:x>=30And167.1.4If语句的嵌套If语句中又包含If语句在Then子句或Else子句的语句体中包含完整的一条If语句如:Ifx>yThen

Printx&“>”&y

Else

Ifx<yThen

Printx&“<”&y

Else

Printx&“=”&y EndIf

EndIf一条If语句一条If语句7.1.4If语句的嵌套If语句中又包含If语句一条If177.1.4If语句的嵌套注1:If语句的完整性,即内层If语句必须完整地出现在外层If语句的Then子句或Else子句中。外层If内层If内层If内外层不能有交叉!7.1.4If语句的嵌套注1:If语句的完整性,即内层187.1.4If语句的嵌套注2:Else-If的匹配原则Else始终与上面距离其最近的未被匹配过的If匹配注3:If-EndIf的匹配If块必须以一个EndIf语句结束If…Then

If…Then

……

Else

……

EndIf

Else

If…Then……

If……Then

……

Else

……

EndIf

EndIf7.1.4If语句的嵌套注2:Else-If的匹配原则I197.1.4If语句的嵌套 为使程序结构更为清晰,

要养成良好的书写习惯。If…Then

If…Then

……

Else

……

EndIf

Else

If…Then……

If……Then

……

Else

……

EndIf

EndIf为体现层次,可以使用Tab健排放不同层次的语句①④②③7.1.4If语句的嵌套 为使程序结构更为清晰,

要养成207.1.4If语句的嵌套例7-4根据用户输入年龄和性别,输出不同的欢迎信息。其中小于14岁的男性为boy,大于14岁的男性为guy,其中小于14岁的女性为girl,大于14岁的女性为miss。7.1.4If语句的嵌套例7-4根据用户输入年龄和性21例7-4程序代码如下:PrivateSubCommand1_Click()IfOp_male.Value=TrueThenIfVal(Txt_age.Text)<14Then '小于14岁的男性MsgBox"Hello,boy!"Else '大于或等于14岁的男性MsgBox"Hello,guy!"EndIfElseIfVal(Txt_age.Text)<14Then '小于14岁的女性MsgBox"Hello,girl!"Else '大于或等于14岁的女性MsgBox"Hello,miss!"EndIfEndIfEndSub①②③例7-4程序代码如下:①②③227.1.5与If语句有关的函数1.IIf函数*2.Switch函数7.1.5与If语句有关的函数1.IIf函数231.IIf函数格式:IIf(条件表达式,条件为True时的表达式,条件为False时的表达式)功能:

根据条件表达式的值,确定函数返回后面两个表达式的其中一个的值。

Ifa>bThen

max=a

Else

max=b

EndIfmax=IIf(a>b,a,b)1.IIf函数格式:Ifa>bThen

max=a

241.IIf函数IIf函数实际上是If…Then…Else结构的一个简写IIf函数中后两个表达式可以是各种类型的表达式,也可以是一个IIf函数的调用①Printx&IIf(x>0,“大于0”,“小于或小于0”)②s=IIf(x>0,1,IIf(x=0,0,-1))

’判断x的符号

1.IIf函数IIf函数实际上是If…Then…Else结251.IIf函数将If语句改写成使用IIf函数:Ifx<30Theny=0ElseIfx<=50Theny=(x-30)*10Elsey=(x-50)*20+20*10EndIf等价于:y=IIf(x<30,0,IIf(x<=50,(x-30)*10,(x-50)*20+20*10))1.IIf函数将If语句改写成使用IIf函数:If262.Switch函数格式

Switch(表达式1,值1[,表达式2,值2…[,表达式n,值n]])

功能

计算一组条件表达式列表的值,然后返回与条件表达式列表中最先为True的表达式所对应的Variant型数值或表达式。如:

lblstatus.Caption=_

Switch(grade>=90,"A",grade>=80,"B",grade<80,"C")用于多分支情况

条件表达式和值必须成对出现!2.Switch函数格式

Switch(表达式1,值1[,272.Switch函数将If语句改写成使用Switch函数:Ifx<30Theny=0ElseIfx<=50Theny=(x-30)*10Elsey=(x-50)*20+20*10EndIf等价于:y=Switch(x<30,0,x<=50,(x-30)*10,x>50,(x-50)*20+20*10)条件条件条件值值值2.Switch函数将If语句改写成使用Switch函数:287.2SelectCase语句(多分支语句)格式:

SelectCase<测试表达式>

Case表达式列表1

<语句块1>

Case表达式列表2

<语句块2>

……

[CaseElse

<语句块n+1>]

EndSelect7.2SelectCase语句(多分支语句)297.2SelectCase语句T表达式1语句体1表达式2语句体2T……表达式n语句体n……语句体n+1……T执行过程:①计算测试表达式的值;②依次比较各个表达式,符合条件则进入相应的语句体执行;③执行SelectCase语句的下一条语句。计算测试表达式的值7.2SelectCase语句T表达式1语句体1表达式307.2SelectCase语句注1:测试表达式可以是数值或字符串表达式;注2:各表达式列表

合法的格式:①一个常量或常量表达式②多个常量或常量表达式,用逗号隔开,逗号相当于“或”,如:Case1,3,5,7③表达式1to表达式2,表示从表达式1到表达式2中所有的值,其中表达式1的值必须小于表达式2的值。如:Case1to5④Is关系运算表达式,可以使用的关系运算符为:>、>=、<、<=、<>、=,不可以使用逻辑运算符表示多个范围。⑤前面四种情况的组合,如CaseIs>10,2,4,6,Is<0

注3:若有多个Case表达式符合条件,则只执行第一个符合的Case下的语句体。

7.2SelectCase语句注1:测试表达式可以是数317.2SelectCase语句例:已知变量ch中存放了一个字符,判断该字符是字母字符、数字字符、空格还是其它字符。(用SelectCase语句改写)分析:

将各种字符的判断条件改写成符合要求的Case条件字母字符:ch>=“a”Andch<=“z”Orch>=“A”Andch<=“Z”

“a”To“z”,“A”to“Z”数字字符:ch>=“0”Andch<=“9”

“0”To“9”空格字符:ch=“”

“”

Is=“”实现:SelectCasech

Case“a”To“z”,“A”to“Z”

Print“字母字符”

Case“0”To“9”

Print“数字字符”

Case“”

Print“空格”

CaseElse

Print“其他字符”

EndSelect7.2SelectCase语句例:已知变量ch中存放了327.2SelectCase语句例7-5简单运算器分析:

运算符的判断:共四种取值,事先已在ComboBox中SelectCaseCmbop.Text

Case"+"

txtresult=Val(txtX)+Val(txtY)Case"-" txtresult=Val(txtX)-Val(txtY)Case"×" txtresult=Val(txtX)*Val(txtY)Case"÷" txtresult=Val(txtX)/Val(txtY)EndSelect

除数为0?IfVal(txtY)<>0Thentxtresult=Val(txtX)/Val(txtY)ElseMsgBox"被0除"txtY="":txtY.SetFocusEndIf7.2SelectCase语句例7-5简单运算器Sel337.2SelectCase语句所有SelectCase语句可以替换为If…Then…ElseIf…语句。只有在If语句和每一个ElseIf语句计算相同条件表达式时,才能用SelectCase结构替换If…Then…ElseIf…结构。Ifx<30Theny=0ElseIfx<=50Theny=(x-30)*10Elsey=(x-50)*20+20*10EndIfSelectCasexCaseIs<30y=0Case30To50y=(x-30)*10CaseIs>50y=(x-50)*20+20*10EndSelect7.2SelectCase语句所有SelectCa347.3基本算法及应用7.3.1求两个数的最大(小)值7.3.2用户输入时按键的判断7.3.3信息的有效性验证7.3.4单选钮和复选框的应用

7.3基本算法及应用7.3.1求两个数的最大(小)值357.3.1求两个数的最大(小)值分析:两个数的关系无非有3种情形,即:

A>B,A=B,A<B。实现:(最大值)IfA>=BThenMax=AElseMax=B

IfA>BThenMax=AElseMax=B

7.3.1求两个数的最大(小)值分析:367.3.2用户输入时按键的判断两种方法:一是在输入时判断,使用文本框的Key事件;常用:KeyPress事件(KeyAscii参数)二是在全部输入完成后再对每个字符进行判断,使用循环结构依次获取字符串中的字符。

例7-7在文本框中输入一个字符串,要求只能出现字母。PrivateSubText1_KeyPress(KeyAsciiAsInteger)

If(KeyAscii<Asc("a")OrKeyAscii>Asc("z"))And_(KeyAscii<Asc("A")OrKeyAscii>Asc("Z"))ThenKeyAscii=0EndSub7.3.2用户输入时按键的判断两种方法:例7-7在文本框377.3.3信息的有效性验证例7-8登录界面设计“确定”按钮的Click事件过程如下:PrivateSubcmdok_Click()If txtuser.Text=""Ortxtpwd.Text=""ThenMsgBox"请输入完整信息!"ElseIftxtpwd.Text<>"20082008"ThenMsgBox "密码错误,不能登录!"txtpwd.Text=""txtpwd.SetFocusElseMsgBox txtuser.Text&",欢迎您!"EndIfEndIfEndSub有效信息:①帐号和密码都不能空②密码符合要求这样的密码设置方法,安全性差7.3.3信息的有效性验证例7-8登录界面设计“确定”按387.3.4单选钮和复选框的应用单选钮——多选一在同一组单选钮中只有一个按钮的Value属性值为1,通常使用If…Then…ElseIf…的语句格式进行判断。复选框——多选多同一组复选框中可以同时有多个被选中,也可以只选中一个,也可以一个都不选中,通常我们对各个复选框进行独立判断。

7.3.4单选钮和复选框的应用单选钮——多选一397.3.4单选钮和复选框的应用例7-9根据用户选择,求若干门课程的总分或平均分参考代码如下:PrivateSubcmdCal_Click()DimsumAsInteger,nAsIntegerIfchkChinese.Value=1Thensum=sum+Val(txtChinese.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&sumElseIfn<>0ThentxtResult.Text=n&"门课平均分:"&vbCrLf&sum/nEndIfEndSub问:变量n的作用是什么?7.3.4单选钮和复选框的应用例7-9根据用户选择,求407.4其他应用举例例7-10例7-11例7-12例7-137.4其他应用举例例7-1041例7-10例7-10调整3个文本框中的数值,使其中的数值按小到大的顺序排放

Ifa>bThentemp=a:a=b:b=temp'如果a大于b,交换a和b的值Ifa>cThentemp=a:a=c:c=temp'如果a大于c,交换a和c的值Ifb>cThentemp=b:b=c:c=temp'如果b大于c,交换b和c的值例7-10例7-10调整3个文本框中的数值,使其中42例7-11例7-11求一元二次方程ax2+bx+c=0的根根据数学中一元二次方程的求根公式,令:当Δ>0时,方程有两个不相等的实根;当Δ=0时,方程有两个相等的实根;当Δ<0时,方程有两个不相等的虚根。

例7-11例7-11求一元二次方程ax2+bx+c=0的43例7-11Ifa<>0Thendelta=b*b-4*a*cIfdelta>0Thenx1=(-b+Sqr(delta))/(2*a) '第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&"i"EndIfEndIf例7-11Ifa<>0Then44例7-12例7-12编程实现输入一个整数,判断其能否被3、5、7整除,并输出以下信息之一:(1)能被3、5、7整除。(2)能被其中两个数(要指出哪两个)整除。(3)能被其中一个数(要指出哪一个)整除。(4)不能被3、5、7任一个整除。例7-12例7-12编程实现输入一个整数,判断其能否被345代码1IfxMod3=0AndxMod5=0AndxMod7=0ThenMsgBox"能被3,5,7整除"IfxMod3=0AndxMod5=0AndxMod7<>0ThenMsgBox"能被3,5整除"IfxMod3=0AndxMod7=0AndxMod5<>0ThenMsgBox"能被3,7整除"IfxMod5=0AndxMod7=0AndxMod3<>0ThenMsgBox"能被5,7整除"IfxMod3=0ThenMsgBox"能被3整除"IfxMod5=0ThenMsgBox"能被5整除"IfxMod7=0ThenMsgBox"能被7整除"代码1IfxMod3=0AndxMod546代码2IfxMod3=0AndxMod5=0AndxMod7=0ThenMsgBox"能被3,5,7整除"ElseIfxMod3=0AndxMod5=0AndxMod7<>0ThenMsgBox"能被3,5整除"ElseIfxMod3=0AndxMod7=0AndxMod5<>0ThenMsgBox"能被3,7整除"ElseIfxMod5=0AndxMod7=0AndxMod3<>0ThenMsgBox"能被5,7整除"ElseIfxMod3=0ThenMsgBox"能被3整除"ElseIfxMod5=0ThenMsgBox"能被5整除"ElseIfxMod7=0ThenMsgBox"能被7整除"ElseMsgBox"不能被3、5、7任一数整除"EndIf代码2IfxMod3=0AndxMod547代码3IfxMod3=0Thenn=n+1s=s&"3"EndIfIfxMod5=0Thenn=n+1s=s&"5"EndIfIfxMod7=0Thenn=n+1s=s&"7"EndIfIfn<>0ThenMsgBox"能被"&s&"这"&n&"个数整除"ElseMsgBox"不能被任一数整除"EndIf代码3IfxMod3=0Then48代码4n=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"能

温馨提示

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

评论

0/150

提交评论