第三章程序流程控制第三章程序流程控制•本章内容及要求:•1.熟练掌握行if语句、块if结构、SelectCase情况选择结构的使用,掌握选择的嵌套结构;•2.熟练掌握实现循环结构的For/Next循环结构及ExitFor语句、Do/Loop循环结构的使用,掌握多重循环。•本章重点:•选择结构及循环结构的实现及其应用•本章难点:•选择的嵌套及多重循环结构案例3.1条件语句If…Then…Else[3.1.1案例说明]输入x,计算y的值。其中:(1)当x6时,y=x+3(2)当x≤6时,y=4x案例3.1条件语句If…Then…Else[3.1.2相关知识]1.1.If…Then结构这种结构常称为简单分支结构,如图所示。它一般有两种形式:单行和多行语句。单行语句格式:If条件表达式Then语句多行语句格式:If条件表达式Then语句块EndIf条件表达式语句块truefalse例如:对语句IfabThenmax=a也可改成多行结构形式:IfabThenmax=aEndIf案例3.1条件语句If…Then…Else2.If…Then…Else结构语句格式:If条件表达式Then语句块1Else语句块2EndIf例如,如果成绩大于60分,则在屏幕上显示“合格”,否则在屏幕上显示“不合格”。Ifscore60thenMsgBox合格ElseMsgBox不合格EndIf案例3.1条件语句If…Then…Elsetrue条件表达式语句块1false语句块23.多重If语句语句格式:语句格式:If条件表达式1Then语句块1ElseIf条件表达式2Then语句块2ElseIf条件表达式3Then语句块3……ElseIf条件表达式nThen语句块nElse语句块EndIf案例3.1条件语句If…Then…Else语句块条件n语句块条件1语句块条件3语句块条件2案例3.1条件语句If…Then…Else[3.1.3设计步骤](1)建立程序初始界面。(2)设置属性。演示:案例3.1的补充例题案例3.1条件语句If…Then…Else[3.1.3设计步骤](3)编写事件过程。PrivateSubCommand1_Click()DimxAsSingle,yAsSinglex=Val(Text1.Text)Ifx6Theny=x+3Elsey=4*xEndIfText2.Text=Str(y)EndSub案例3.1条件语句If…Then…Else[3.1.4思考与练习]1.编程实现:输入一个整数,判断它是奇数还是偶数,并输出相应的提示信息。用If…Then…Else语句实现。(设计界面,编写完整的程序,上机实现)DimnAsInteger,strAsString……‘从界面上的某个控件获得变量n的值IfnMod2=0Thenstr=偶数Elsestr=奇数EndIf……‘把str的内容显示在界面上的某个控件上案例3.1条件语句If…Then…Else[3.1.4思考与练习]2.以下程序运行时,输出结果是什么?PrivateSubCommand1_Click()y=1Ify0Thenx=5Ify0Thenx=4Elsex=3EndIfPrintx=;xEndSubx=3案例3.2条件语句If…Then…ElseIf语句[3.2.1案例说明]对所输入的整数进行判断,若输入数为正数,则显示“大于零”,若输入数为负数,则显示“小于零”,否则显示“等于零”。用If…Then…ElseIf语句实现。[3.2.2设计步骤](1)建立程序初始界面。(2)设置属性。演示:案例3.2案例3.2条件语句If…Then…ElseIf语句[3.2.2设计步骤](3)编写事件过程。PrivateSubCommand1_Click()IfVal(Text1.Text)0ThenText2.Text=小于零ElseIfVal(Text1.Text)0ThenText2.Text=大于零ElseText2.Text=等于零EndIfEndSub案例3.2条件语句If…Then…ElseIf语句[3.2.3思考与练习]1.为铁路编写计算运费的程序。假设铁路托运行李,规定每张客票托运费的计算方法是:行李重量不超过50kg时,每千克0.25元;超过50kg而不超过100kg时,其超过部分每千克0.35元;超过100kg时,其超过部分每千克0.45元。用If…Then…ElseIf语句实现。(设计界面,编写完整的程序,上机实现)分析:托运费的分段函数是什么?答:设行李重量为w公斤,应付托运费为x元,则托运费的分段函数是:(1)w=50时,x=0.25*w(2)50w=100时,x=0.25*50+0.35*(w-50)(3)w100时,x=0.25*50+0.35*50+0.45*(w-100)案例3.2条件语句If…Then…ElseIf语句PrivateSubCommand1_Click()DimwAsSingle,xAsSinglew=Val(Text1.Text)Ifw=50Thenx=0.25*wElseIfw50Andw=100Thenx=0.25*50+0.35*(w-50)ElseIfw100Thenx=0.25*50+0.35*50+0.45*(w-100)‘如果把最后一句Text2.Text=Str(x)写在此处,效果是什么?EndIf案例3.2条件语句If…Then…ElseIf语句‘不能写成:50w=100‘不能写成:Text1.Text=w答:只有当重量w100时,才输出托运费。其他情况,不输出托运费。Text2.Text=Str(x)EndSub注意:运行程序时,w50,50w=100,w100几种情况都要运行,看结果是否正确。案例3.2条件语句If…Then…ElseIf语句‘不能写成:x=Text2.Text[3.2.4思考与练习]2.根据输入三角形三边判断能否组成三角形,若可以则判断输出三角形的类型。用If…Then…ElseIf语句实现。(设计界面,编写完整的程序,上机实现)说明:三角形的类型有:等边三角形,等腰三角形,直角三角形,普通三角形。案例3.2条件语句If…Then…ElseIf语句请思考:(1)怎样判断三角形是等边三角形?(2)怎样判断三角形是等腰三角形?(3)怎样判断三角形是直角三角形?案例3.2条件语句If…Then…ElseIf语句PrivateSubCommand1_Click()DimaAsInteger,bAsInteger,cAsInteger,strAsString……‘从界面上的某些控件获得变量a,b,c的值If(a+bcAndb+caAndc+ab)ThenIfa=bAnda=cThenstr=该三角形是等边三角形ElseIfa=bOra=cOrb=cThenstr=该三角形是等腰三角形a=Val(Text1.Text)b=Val(Text2.Text)c=Val(Text3.Text)案例3.2条件语句If…Then…ElseIf语句ElseIfa*a+b*b=c*cOrb*b+c*c=a*aOrc*c+a*a=b*bThenstr=该三角形是直角三角形Elsestr=该三角形是普通三角形EndIfElsestr=不能组成三角形EndIf……‘把str的内容显示在界面上的某个控件上EndSubLabel5.Caption=str‘Text4.Text=str案例3.3条件语句SelectCase语句[3.3.1案例说明]计算公民应纳个人所得税。这里将个人所得税具体计算问题理想化,假设以1000元作为标准,1000~1999的税率为5%,2000~4999的税率为10%,5000~9999的税率为25%,10000~19999的税率为40%,20000以上的税率为45%。用SelectCase语句实现。[3.3.2相关知识]语句格式:SelectCase测试表达式Case表达式列表1语句块1Case表达式列表2语句块2……Case表达式列表n语句块nCaseElse语句块EndSelect案例3.3条件语句SelectCase语句说明:“测试表达式”是必选项,可以是数值型或字符型表达式。“表达式列表”可以有3种形式。①表达式:用来表达一些具体的数值范围。多个数值间用逗号分隔开,例如,SelectcasenumberCase1,2,3,4,5Result=不合格Case6,7Result=合格Case8Result=良好CaseElseResult=优秀EndSelect案例3.3条件语句SelectCase语句说明:②表达式To表达式。这种表达式常用来表示一个数值范围,数值小的放在To前面。例如,CaseaToz。以上判断成绩等级示例可以改成“表达式To表达式”形式:Case1To5Result=不合格Case6To7Result=合格Case8Result=良好CaseElseResult=优秀EndSelect③Is表达式。通过Is与比较运算符结合,用来表示一个数值范围。例如,CaseIs6案例3.3条件语句SelectCase语句[3.3.3设计步骤](1)建立程序初始界面。(2)设置属性。演示:案例3.3案例3.3条件语句SelectCase语句[3.3.3设计步骤](3)编写事件过程。PrivateSubCommand1_Click()DimnumAsIntegerDimsalaryAsSingle,rateAsSingle,taxesAsSingleDimtempAsStringtemp=InputBox(请输入该公民的月收入:,月收入输入窗口)salary=Val(temp)If(salary-1000)0ThenMsgBox不需交纳个人所得税Else案例3.3条件语句SelectCase语句num=Int(salary/1000)SelectCasenumCase1:rate=0.05Case2,3,4:rate=0.1Case5To9:rate=0.25Case10To19:rate=0.4CaseElserate=0.45EndSelecttaxes=(salary-1000)*rateMsgBox应交个人所得税金额为:&taxesEndIfEndSub案例3.3条件语句SelectCase语句[3.3.4思考与练习]1.为某航空公司计算票价的优惠率。假设优惠规定如下:(1)在旅游的旺季7–9月,如果订票数超过20张,票价优惠15%,20张以下,优惠5%;(2)在旅游的淡季1–5月、10月、11月,如果订票数超过20张,票价优惠30%,20张以下,优惠20%;(3)其他情况一律优惠10%。请设计程序,根据月份和订票张数决定票价的优惠率。(设计界面,编写完整的程序,上机实现)案例3.3条件语句SelectCase语句演示:票价.vbp的界面方法一:SelectCase语句中嵌套If…Then…Else语句PrivateSubCommand1_Click()DimmonthAsInteger,numberAsInteger,rateAsIntegermonth=Val(Text1.Text)number=Val(Text2.Text)SelectCasemonthCase1To5,10,11Ifnumber20Thenrate=20Elserate=30Case7To9Ifnumber20Thenrate=5Elserate=15案例3.3条件语句SelectCase语句CaseElserate=10EndSelectLabel4.Caption=所订机票的优惠率为:&Str(rate)&%EndSub案例3.3条件语句SelectCase语句方法二:If…Then…ElseIf语句中嵌套If…Then…Else语句PrivateSubCommand2_Click()DimmonthA