




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第三章程序流程控制第三章程序流程控制第三章程序流程控制本章内容及要求:1.熟练掌握行if语句、块if结构、SelectCase情况选择结构的使用,掌握选择的嵌套结构;2.熟练掌握实现循环结构的For/Next循环结构及ExitFor语句、Do/Loop循环结构的使用,掌握多重循环。本章重点:
选择结构及循环结构的实现及其应用本章难点:选择的嵌套及多重循环结构第三章程序流程控制本章内容及要求:案例3.1条件语句If…Then…Else[3.1.1案例说明]输入x,计算y的值。其中:(1)当x>6时,y=x+3(2)当x≤6时,y=4x
案例3.1条件语句If…Then…Else[3.1.1案案例3.1条件语句If…Then…Else[3.1.2相关知识]
1.1.If…Then结构这种结构常称为简单分支结构,如图所示。它一般有两种形式:单行和多行语句。单行语句格式:If条件表达式Then语句多行语句格式:If条件表达式Then语句块EndIf案例3.1条件语句If…Then…Else[3.1.2相例如:对语句Ifa>bThenmax=a也可改成多行结构形式:Ifa>bThenmax=aEndIf案例3.1条件语句If…Then…Else例如:对语句案例3.1条件语句If…Then…Else2.If…Then…Else结构语句格式:If条件表达式Then语句块1Else语句块2EndIf例如,如果成绩大于60分,则在屏幕上显示“合格”,否则在屏幕上显示“不合格”。Ifscore>60thenMsgBox合格ElseMsgBox不合格EndIf
案例3.1条件语句If…Then…Else2.If…Then…Else结构3.多重If语句语句格式:语句格式:If条件表达式1Then语句块1ElseIf条件表达式2Then语句块2ElseIf条件表达式3Then语句块3……ElseIf条件表达式nThen语句块nElse语句块EndIf
案例3.1条件语句If…Then…Else3.多重If语句语句格式:案例3.1条件语句If…Then…Else[3.1.3设计步骤](1)建立程序初始界面。(2)设置属性。演示:案例3.1的补充例题
案例3.1条件语句If…Then…Else[3.1.3设案例3.1条件语句If…Then…Else[3.1.3设计步骤](3)编写事件过程。PrivateSubCommand1_Click()DimxAsSingle,yAsSinglex=Val(Text1.Text)Ifx>6Theny=x+3Elsey=4*xEndIfText2.Text=Str(y)EndSub
案例3.1条件语句If…Then…Else[3.1.3设案例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思案例3.1条件语句If…Then…Else[3.1.4思考与练习]2.以下程序运行时,输出结果是什么?PrivateSubCommand1_Click()y=1Ify<>0Thenx=5Ify<0Thenx=4Elsex=3EndIfPrint"x=";xEndSubx=3案例3.1条件语句If…Then…Else[3.1.4思案例3.2条件语句If…Then…ElseIf语句[3.2.1案例说明]对所输入的整数进行判断,若输入数为正数,则显示“大于零”,若输入数为负数,则显示“小于零”,否则显示“等于零”。用If…Then…ElseIf语句实现。案例3.2条件语句If…Then…ElseIf语句[3.2[3.2.2设计步骤](1)建立程序初始界面。(2)设置属性。演示:案例3.2
案例3.2条件语句If…Then…ElseIf语句[3.2.2设计步骤]案例3.2条件语句If…Then…[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.2设计步骤]案例3.2条件语句If…Then…[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)50<w<=100时,x=0.25*50+0.35*(w-50)(3)w>100时,x=0.25*50+0.35*50+0.45*(w-100)案例3.2条件语句If…Then…ElseIf语句[3.2.3思考与练习]答:设行李重量为w公斤,应付托运费PrivateSubCommand1_Click()DimwAsSingle,xAsSinglew=Val(Text1.Text)Ifw<=50Thenx=0.25*wElseIfw>50Andw<=100Thenx=0.25*50+0.35*(w-50)ElseIfw>100Thenx=0.25*50+0.35*50+0.45*(w-100)‘如果把最后一句Text2.Text=Str(x)写在此处,效果是什么?EndIf案例3.2条件语句If…Then…ElseIf语句‘不能写成:50<w<=100‘不能写成:Text1.Text=w答:只有当重量w>100时,才输出托运费。其他情况,不输出托运费。PrivateSubCommand1_Click()Text2.Text=Str(x)EndSub注意:运行程序时,w<50,50<w<=100,w>100几种情况都要运行,看结果是否正确。案例3.2条件语句If…Then…ElseIf语句‘不能写成:x=Text2.TextText2.Text=Str(x)案例3.2条件语句[3.2.4思考与练习]2.根据输入三角形三边判断能否组成三角形,若可以则判断输出三角形的类型。用If…Then…ElseIf语句实现。
(设计界面,编写完整的程序,上机实现)
说明:三角形的类型有:等边三角形,等腰三角形,直角三角形,普通三角形。案例3.2条件语句If…Then…ElseIf语句请思考:(1)怎样判断三角形是等边三角形?(2)怎样判断三角形是等腰三角形?(3)怎样判断三角形是直角三角形?[3.2.4思考与练习]案例3.2条件语句If…Then案例3.2条件语句If…Then…ElseIf语句PrivateSubCommand1_Click()DimaAsInteger,bAsInteger,cAsInteger,strAsString……‘从界面上的某些控件获得变量a,b,c的值If(a+b>cAndb+c>aAndc+a>b)ThenIfa=bAnda=cThenstr="该三角形是等边三角形"ElseIfa=bOra=cOrb=cThenstr="该三角形是等腰三角形"a=Val(Text1.Text)b=Val(Text2.Text)c=Val(Text3.Text)案例3.2条件语句If…Then…ElseIf语句Priv案例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.2条件语句If…Then…ElseIf语句Else案例3.3条件语句SelectCase语句[3.3.1案例说明]计算公民应纳个人所得税。这里将个人所得税具体计算问题理想化,假设以1000元作为标准,1000~1999的税率为5%,2000~4999的税率为10%,5000~9999的税率为25%,10000~19999的税率为40%,20000以上的税率为45%。
用SelectCase语句实现。案例3.3条件语句SelectCase语句[3.3.1[3.3.2相关知识]语句格式:SelectCase测试表达式Case表达式列表1语句块1Case表达式列表2语句块2……Case表达式列表n语句块nCaseElse语句块EndSelect案例3.3条件语句SelectCase语句[3.3.2相关知识]案例3.3条件语句SelectC
说明:“测试表达式”是必选项,可以是数值型或字符型表达式。“表达式列表”可以有3种形式。①表达式:用来表达一些具体的数值范围。多个数值间用逗号分隔开,例如,SelectcasenumberCase1,2,3,4,5Result=不合格Case6,7Result=合格Case8Result=良好CaseElseResult=优秀EndSelect案例3.3条件语句SelectCase语句说明:案例3.3条件语句SelectCase语句
说明:②表达式To表达式。这种表达式常用来表示一个数值范围,数值小的放在To前面。例如,CaseaToz。以上判断成绩等级示例可以改成“表达式To表达式”形式:Case1To5Result=不合格Case6To7Result=合格Case8Result=良好CaseElseResult=优秀EndSelect③Is表达式。通过Is与比较运算符结合,用来表示一个数值范围。例如,CaseIs>6
案例3.3条件语句SelectCase语句说明:案例3.3条件语句SelectCase语句[3.3.3设计步骤](1)建立程序初始界面。(2)设置属性。演示:案例3.3
案例3.3条件语句SelectCase语句[3.3.3设计步骤]案例3.3条件语句SelectC[3.3.3设计步骤](3)编写事件过程。PrivateSubCommand1_Click()DimnumAsIntegerDimsalaryAsSingle,rateAsSingle,taxesAsSingleDimtempAsStringtemp=InputBox("请输入该公民的月收入:","月收入输入窗口")salary=Val(temp)If(salary-1000)<0ThenMsgBox"不需交纳个人所得税"Else
案例3.3条件语句SelectCase语句[3.3.3设计步骤]案例3.3条件语句SelectCnum=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语句num=Int(salary/1000)案例3.3[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的界面[3.3.4思考与练习]案例3.3条件语句Select方法一:SelectCase语句中嵌套If…Then…Else语句PrivateSubCommand1_Click()DimmonthAsInteger,numberAsInteger,rateAsIntegermonth=Val(Text1.Text)number=Val(Text2.Text)SelectCasemonthCase1To5,10,11Ifnumber<20Thenrate=20Elserate=30Case7To9Ifnumber<20Thenrate=5Elserate=15
案例3.3条件语句SelectCase语句方法一:SelectCase语句中嵌套If…Then…E
CaseElserate=10EndSelectLabel4.Caption="所订机票的优惠率为:"&Str(rate)&"%"EndSub案例3.3条件语句SelectCase语句CaseElse案例3.3条件语句SelectCas方法二:If…Then…ElseIf语句中嵌套If…Then…Else语句PrivateSubCommand2_Click()DimmonthAsInteger,numberAsInteger,rateAsIntegermonth=Val(Text1.Text)number=Val(Text2.Text)If(month>=1Andmonth<=5)Ormonth=10Ormonth=11ThenIfnumber<20Thenrate=20Elserate=30ElseIfmonth>=7Andmonth<=9ThenIfnumber<20Thenrate=5Elserate=15Elserate=10案例3.3条件语句SelectCase语句方法二:If…Then…ElseIf语句中嵌套If…TheEndIfLabel4.Caption="所订机票的优惠率为:"&Str(rate)&"%"EndSub案例3.3条件语句SelectCase语句EndIf案例3.3条件语句SelectCase语句案例3.4For…Next[3.4.1案例说明]求sum=1+2+3+…+100。用For…Next循环结构实现案例3.4For…Next[3.4.1案例说明][3.4.2相关知识]1.For循环语句(一般用于循环次数已知)语句格式:Forcounter=startToend[Stepincrement]语句块1[ExitFor]语句块2Next[counter]
>0初值<终值=1时,可省略<0初值>终值=0死循环step案例3.4For循环语句[3.4.2相关知识]>0初值<终值step案[3.4.3设计步骤](1)建立程序初始界面。(2)设置属性。演示:案例3.4案例3.4For循环语句[3.4.3设计步骤]案例3.4For循环语句(3)编写事件过程。PrivateSubCommand1_Click()DimsumAsInteger,iAsIntegersum=0‘累加器初值置为0。书上77页加注释。Fori=1To100
sum=sum+i‘注意红颜色的语句NextiLabel2.Caption=Str(sum)'Debug.PrintsumEndSub案例3.4For循环语句(3)编写事件过程。PrivateSubCommand[3.4.4思考与练习](1)如果要实现sum=1+2+3+…+10,怎样修改程序?(2)如果要实现sum=30+31+32+…+50,怎样修改程序?(3)如果Label2.Caption=Str(sum)中sum写成sam,即:Label2.Caption=Str(sam)则,运行后,Label2的Caption会变成什么?怎样避免这种错误?案例3.4For循环语句Fori=1To10Fori=30To50强制变量声明,OptionExplicit菜单:工具选项要求变量声明0[3.4.4思考与练习]案例3.4For循环语句Fo[3.5.1案例说明]用For循环实现求阶乘n建立程序初始界面。(2)设置属性。演示:案例3.5案例3.5用For循环求阶乘[3.5.1案例说明]案例3.5用For循环求阶乘
(3)编写事件过程。PrivateSubCommand1_Click()DimnAsInteger,iAsIntegerDimresultAsLong
result=1‘累乘,初值置为1。书上78页加注释。n=CInt(text1.text)‘把表达式转换为整型。Ifn<=0ThenLabel2.Caption="请输入正整数!"ExitSub'结束过程EndifFori=1Tonresult=result*iNextiLabel2.Caption=Str(n)+"!="+Str(result)EndSub案例3.5用For循环求阶乘(3)编写事件过程。案例3.5用For循环求阶乘[3.5.3思考与练习](1)如果result=1写成result=0,则运行后,Label2的Caption会变成什么?(2)运行后,如果输入的n<=0,1)ExitSub2)End(如果ExitSub写成End)
1),2)中哪句会结束程序的运行?哪句会结束本次事件过程,等待下一次事件过程?02)结束程序的运行1)结束本次事件过程,等待下一次事件过程案例3.5用For循环求阶乘[3.5.3思考与练习]02)结束程序的运行案例3.5[3.6.1案例说明]用Do…Loop循环结构实现求和sum=1+2+3+…+100。案例3.6Do…Loop循环结构[3.6.1案例说明]案例3.6Do…Loop循环结构[3.6.2相关知识]Do…Loop循环结构
Do…Loop语句较灵活,其常用格式有两种。语句格式1:Do[{While|Until}condition][statements][ExitDo][statements]Loop语句格式2:Do[statements][ExitDo][statements]Loop[{While|Until}condition]案例3.6Do…Loop循环结构[3.6.2相关知识]Do…Loop语句较灵活,其常用格Do…LoopUntil执行过程DoUntil…Loop执行过程案例3.6Do…Loop循环结构Do…LoopUntil执行过程[3.6.3设计步骤](1)建立程序初始界面。(2)设置属性。演示:案例3.6案例3.6Do…Loop循环结构[3.6.3设计步骤]案例3.6Do…Loop循环结构
(3)编写事件过程。解法一:采用当型循环DoWhile…LoopPrivateSubCommand1_Click()DimiAsInteger,sumAsIntegeri=1‘循环变量初值置为1,82页修改---红字部分sum=0'累加器初值置为0
DoWhilei<=100'当型循环sum=sum+ii=i+1'每次循环变量加1
LoopLabel2.Caption=Str(sum)EndSub
解法二:采用直到型循环DoUntil…LoopPrivateSubCommand1_Click()DimiAsInteger,sumAsIntegeri=1'循环变量初值置为1sum=0'累加器初值置为0
DoUntili>100sum=sum+ii=i+1
LoopLabel2.Caption=Str(sum)EndSub解法二:采用直到型循环[3.6.4思考与练习](1)如果去掉i=i+1,则运行结果是什么?程序运行出错。错误原因:溢出。请思考:为什么会溢出呢?案例3.5用For循环求阶乘[3.6.4思考与练习]程序运行出错。错误原因:溢出。案例[3.7.1案例说明]提示用户输入数字型数据,并对所输入的非负数进行求和,用While…Wend循环结构实现。案例3.7While…Wend循环结构[3.7.1案例说明]案例3.7While…Wend循[3.7.3设计步骤](1)建立程序初始界面。(2)设置属性。演示:案例3.7案例3.7While…Wend循环结构[3.7.3设计步骤]案例3.7While…Wend循(3)编写事件过程。PrivateSubCommand1_Click()DimnumAsInteger,totalAsIntegerDimtempAsStringnum=0total=0Whilenum>=0total=total+numtemp=InputBox("Pleaseenteranumber:")num=Val(temp)WendLabel1.Caption=Str(total)EndSub案例3.7While…Wend循环结构(3)编写事件过程。PrivateSubCommand1[3.7.4思考与练习](1)这个While循环什么时候结束?(2)这个While循环的循环次数是否固定?答:输入负数时,循环结束。因为当num>=0时,执行循环体。答:循环次数不固定案例3.7While…Wend循环结构[3.7.4思考与练习]答:输入负数时,循环结束。因为当[3.8.1案例说明]求sum=1!+2!+3!+4!+5!,用多重循环实现。案例3.8多重循环[3.8.1案例说明]案例3.8多重循环
[3.8.2相关知识]多重循环如果在一个循环内完整地包含另一个循环结构,则称为多重循环,或循环嵌套,嵌套的层数可以根据需要而定,嵌套一层称为二重循环,嵌套二层称为三重循环。上面介绍的几种循环控制结构可以相互嵌套,下面是几种常见的二重嵌套形式:案例3.8多重循环[3.8.2相关知识]案例3.8多重循环[3.8.3设计步骤](1)建立程序初始界面。(2)设置属性。演示:案例3.8案例3.8多重循环[3.8.3设计步骤]案例3.8多重循环
(3)编写事件过程。
PrivateSubCommand1_Click()DimiAsInteger,jAsInteger,nAsIntegerDimsum1AsLong,sum2AsLongn=5‘请思考:怎样使n能够变化?sum1=0案例3.8多重循环答:用InputBox语句实现,或加控件:Text1n=Val(InputBox("请输入n(n>1,n为整数)","输入数据",2))或n=Val(Text1.Text)(3)编写事件过程。案例3.8多重循环答:用IFori=1Tonsum2=1Forj=1Toisum2=sum2*jNextjsum1=sum1+sum2NextiLabel1.Caption=Label1.Caption+Str(sum1)EndSub案例3.8多重循环(1)i=1时,……Forj=1to1……(2)i=2时,……Forj=1to2……(5)i=5时,j=1to5总结:外重循环变量i变化1次,内重循环关于j的循环体可能执行多次。Fori=1Ton案例3.8多重循环(1)i=Fori=1Tonsum2=1Forj=1Toisum2=sum2*jNextjsum1=sum1+sum2NextiLabel1.Caption=Label1.Caption+Str(sum1)EndSub案例3.8多重循环(1)i=1时,sum2=1Forj=1to11)j=1sum2=sum2*j=1*1=1sum1=sum1+sum2=0+1=1Fori=1Ton案例3.8多重循环(1)i=Fori=1Tonsum2=1Forj=1Toisum2=sum2*jNextjsum1=sum1+sum2Nexti案例3.8多重循环(2)i=2时,sum2=1Forj=1to21)j=1sum2=sum2*j=1*1=12)j=2sum2=sum2*j=1*2=2sum1=sum1+sum2=1+2=3
Fori=1Ton案例3.8多重循环(2)i=Fori=1Tonsum2=1
Forj=1Toisum2=sum2*jNextjsum1=sum1+sum2Nexti案例3.8多重循环(3)i=3时,sum2=1Forj=1to31)j=1sum2=sum2*j=1*1=12)j=2sum2=sum2*j=1*2=23)j=3sum2=sum2*j=2*3=6sum1=sum1+sum2=3+6=9
Fori=1Ton案例3.8多重循环(3)i=案例3.8多重循环请思考:书上页
案例3.8多重循环请思考:习题三书上3.1输入3个数,输出其中的最大数。(1)建立程序初始界面。(2)设置属性。演示:3.1题习题三书上习题三(3)编写事件过程。PrivateSubCommand1_Click()DimaAsSingle,bAsSingle,cAsSingle,maxAsSinglea=Val(Text1.Text)b=Val(Text2.Text)c=Val(Text3.Text)Ifa>bThenmax=aElsemax=bEndIf习题三(3)编写事件过程。习题三Ifc>maxThenmax=cEndIfLabel4.Caption="最大的数是:"+Str(max)EndSub习题三Ifc>maxThen习题三3.2输入一行字符,分别统计其中数字、英文字母、空格的个数。
(1)建立程序初始界面。(2)设置属性。演示:3.2题习题三3.2输入一行字符,分别统计其中数字、英文字母、空格习题三(3)编写事件过程。Dimnum1AsInteger,num2AsInteger,num3AsInteger'注意定义num1,num2,num3的位置PrivateSubForm_Load()num1=0num2=0num3=0EndSub习题三(3)编写事件过程。习题三PrivateSubText1_KeyPress(KeyAsciiAsInteger)Dimch1AsString*1ch1=Chr(KeyAscii)‘Chr()见教材56页表2.12SelectCasech1Case"0"To"9"num1=num1+1Case"A"To"Z","a"To"z"num2=num2+1Case""num3=num3+1EndSelect习题三PrivateSubText1_KeyPress(习题三EndSubPrivateSubCommand1_Click()Dimmsg1AsString,msg2AsString,msg3AsStringmsg1="数字有"&num1&"个,"msg2="英文字母有"&num2&"个,"msg3="空格有"&num3&"个。"Label2.Caption=msg1&msg2&msg3EndSub习题三EndSub习题三PrivateSubCommand2_Click()Text1.Text=""Label2.Caption=""Text1.SetFocus‘设置焦点num1=0num2=0num3=0EndSub习题三习题三3.4试编程将学生的百分制成绩转换成等级制,90分以上为“A”等,80~89分为“B”等,79~60分为“C”等,60分以下为D等。
(1)建立程序初始界面。(2)设置属性。演示:3.4题习题三3.4试编程将学生的百分制成绩转换成等级制,90分以习题三(3)编写事件过程。PrivateSubCommand1_Click()DimscoreAsSingleDimresultAsStringscore=Val(Text1.Text)SelectCaseInt(score)Case0To59result="D"Case60To79result="C"
习题三(3)编写事件过程。习题三Case80To89result="B"Case90To100result="A"CaseElseMsgBox"输入数据错误,请输入100以内的数!"Text1.Text=""Text1.SetFocusEndSelectLabel2.Caption=resultEndSub习题三Case80To89习题三PrivateSubText1_Change()Label2.Caption=""EndSub习题三PrivateSubText1_Change()演讲完毕,谢谢观看!演讲完毕,谢谢观看!第三章程序流程控制第三章程序流程控制第三章程序流程控制本章内容及要求:1.熟练掌握行if语句、块if结构、SelectCase情况选择结构的使用,掌握选择的嵌套结构;2.熟练掌握实现循环结构的For/Next循环结构及ExitFor语句、Do/Loop循环结构的使用,掌握多重循环。本章重点:
选择结构及循环结构的实现及其应用本章难点:选择的嵌套及多重循环结构第三章程序流程控制本章内容及要求:案例3.1条件语句If…Then…Else[3.1.1案例说明]输入x,计算y的值。其中:(1)当x>6时,y=x+3(2)当x≤6时,y=4x
案例3.1条件语句If…Then…Else[3.1.1案案例3.1条件语句If…Then…Else[3.1.2相关知识]
1.1.If…Then结构这种结构常称为简单分支结构,如图所示。它一般有两种形式:单行和多行语句。单行语句格式:If条件表达式Then语句多行语句格式:If条件表达式Then语句块EndIf案例3.1条件语句If…Then…Else[3.1.2相例如:对语句Ifa>bThenmax=a也可改成多行结构形式:Ifa>bThenmax=aEndIf案例3.1条件语句If…Then…Else例如:对语句案例3.1条件语句If…Then…Else2.If…Then…Else结构语句格式:If条件表达式Then语句块1Else语句块2EndIf例如,如果成绩大于60分,则在屏幕上显示“合格”,否则在屏幕上显示“不合格”。Ifscore>60thenMsgBox合格ElseMsgBox不合格EndIf
案例3.1条件语句If…Then…Else2.If…Then…Else结构3.多重If语句语句格式:语句格式:If条件表达式1Then语句块1ElseIf条件表达式2Then语句块2ElseIf条件表达式3Then语句块3……ElseIf条件表达式nThen语句块nElse语句块EndIf
案例3.1条件语句If…Then…Else3.多重If语句语句格式:案例3.1条件语句If…Then…Else[3.1.3设计步骤](1)建立程序初始界面。(2)设置属性。演示:案例3.1的补充例题
案例3.1条件语句If…Then…Else[3.1.3设案例3.1条件语句If…Then…Else[3.1.3设计步骤](3)编写事件过程。PrivateSubCommand1_Click()DimxAsSingle,yAsSinglex=Val(Text1.Text)Ifx>6Theny=x+3Elsey=4*xEndIfText2.Text=Str(y)EndSub
案例3.1条件语句If…Then…Else[3.1.3设案例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思案例3.1条件语句If…Then…Else[3.1.4思考与练习]2.以下程序运行时,输出结果是什么?PrivateSubCommand1_Click()y=1Ify<>0Thenx=5Ify<0Thenx=4Elsex=3EndIfPrint"x=";xEndSubx=3案例3.1条件语句If…Then…Else[3.1.4思案例3.2条件语句If…Then…ElseIf语句[3.2.1案例说明]对所输入的整数进行判断,若输入数为正数,则显示“大于零”,若输入数为负数,则显示“小于零”,否则显示“等于零”。用If…Then…ElseIf语句实现。案例3.2条件语句If…Then…ElseIf语句[3.2[3.2.2设计步骤](1)建立程序初始界面。(2)设置属性。演示:案例3.2
案例3.2条件语句If…Then…ElseIf语句[3.2.2设计步骤]案例3.2条件语句If…Then…[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.2设计步骤]案例3.2条件语句If…Then…[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)50<w<=100时,x=0.25*50+0.35*(w-50)(3)w>100时,x=0.25*50+0.35*50+0.45*(w-100)案例3.2条件语句If…Then…ElseIf语句[3.2.3思考与练习]答:设行李重量为w公斤,应付托运费PrivateSubCommand1_Click()DimwAsSingle,xAsSinglew=Val(Text1.Text)Ifw<=50Thenx=0.25*wElseIfw>50Andw<=100Thenx=0.25*50+0.35*(w-50)ElseIfw>100Thenx=0.25*50+0.35*50+0.45*(w-100)‘如果把最后一句Text2.Text=Str(x)写在此处,效果是什么?EndIf案例3.2条件语句If…Then…ElseIf语句‘不能写成:50<w<=100‘不能写成:Text1.Text=w答:只有当重量w>100时,才输出托运费。其他情况,不输出托运费。PrivateSubCommand1_Click()Text2.Text=Str(x)EndSub注意:运行程序时,w<50,50<w<=100,w>100几种情况都要运行,看结果是否正确。案例3.2条件语句If…Then…ElseIf语句‘不能写成:x=Text2.TextText2.Text=Str(x)案例3.2条件语句[3.2.4思考与练习]2.根据输入三角形三边判断能否组成三角形,若可以则判断输出三角形的类型。用If…Then…ElseIf语句实现。
(设计界面,编写完整的程序,上机实现)
说明:三角形的类型有:等边三角形,等腰三角形,直角三角形,普通三角形。案例3.2条件语句If…Then…ElseIf语句请思考:(1)怎样判断三角形是等边三角形?(2)怎样判断三角形是等腰三角形?(3)怎样判断三角形是直角三角形?[3.2.4思考与练习]案例3.2条件语句If…Then案例3.2条件语句If…Then…ElseIf语句PrivateSubCommand1_Click()DimaAsInteger,bAsInteger,cAsInteger,strAsString……‘从界面上的某些控件获得变量a,b,c的值If(a+b>cAndb+c>aAndc+a>b)ThenIfa=bAnda=cThenstr="该三角形是等边三角形"ElseIfa=bOra=cOrb=cThenstr="该三角形是等腰三角形"a=Val(Text1.Text)b=Val(Text2.Text)c=Val(Text3.Text)案例3.2条件语句If…Then…ElseIf语句Priv案例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.2条件语句If…Then…ElseIf语句Else案例3.3条件语句SelectCase语句[3.3.1案例说明]计算公民应纳个人所得税。这里将个人所得税具体计算问题理想化,假设以1000元作为标准,1000~1999的税率为5%,2000~4999的税率为10%,5000~9999的税率为25%,10000~19999的税率为40%,20000以上的税率为45%。
用SelectCase语句实现。案例3.3条件语句SelectCase语句[3.3.1[3.3.2相关知识]语句格式:SelectCase测试表达式Case表达式列表1语句块1Case表达式列表2语句块2……Case表达式列表n语句块nCaseElse语句块EndSelect案例3.3条件语句SelectCase语句[3.3.2相关知识]案例3.3条件语句SelectC
说明:“测试表达式”是必选项,可以是数值型或字符型表达式。“表达式列表”可以有3种形式。①表达式:用来表达一些具体的数值范围。多个数值间用逗号分隔开,例如,SelectcasenumberCase1,2,3,4,5Result=不合格Case6,7Result=合格Case8Result=良好CaseElseResult=优秀EndSelect案例3.3条件语句SelectCase语句说明:案例3.3条件语句SelectCase语句
说明:②表达式To表达式。这种表达式常用来表示一个数值范围,数值小的放在To前面。例如,CaseaToz。以上判断成绩等级示例可以改成“表达式To表达式”形式:Case1To5Result=不合格Case6To7Result=合格Case8Result=良好CaseElseResult=优秀EndSelect③Is表达式。通过Is与比较运算符结合,用来表示一个数值范围。例如,CaseIs>6
案例3.3条件语句SelectCase语句说明:案例3.3条件语句SelectCase语句[3.3.3设计步骤](1)建立程序初始界面。(2)设置属性。演示:案例3.3
案例3.3条件语句SelectCase语句[3.3.3设计步骤]案例3.3条件语句SelectC[3.3.3设计步骤](3)编写事件过程。PrivateSubCommand1_Click()DimnumAsIntegerDimsalaryAsSingle,rateAsSingle,taxesAsSingleDimtempAsStringtemp=InputBox("请输入该公民的月收入:","月收入输入窗口")salary=Val(temp)If(salary-1000)<0ThenMsgBox"不需交纳个人所得税"Else
案例3.3条件语句SelectCase语句[3.3.3设计步骤]案例3.3条件语句SelectCnum=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语句num=Int(salary/1000)案例3.3[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的界面[3.3.4思考与练习]案例3.3条件语句Select方法一:SelectCase语句中嵌套If…Then…Else语句PrivateSubCommand1_Click()DimmonthAsInteger,numberAsInteger,rateAsIntegermonth=Val(Text1.Text)number=Val(Text2.Text)SelectCasemonthCase1To5,10,11Ifnumber<20Thenrate=20Elserate=30Case7To9Ifnumber<20Thenrate=5Elserate=15
案例3.3条件语句SelectCase语句方法一:SelectCase语句中嵌套If…Then…E
CaseElserate=10EndSelectLabel4.Caption="所订机票的优惠率为:"&Str(rate)&"%"EndSub案例3.3条件语句SelectCase语句CaseElse案例3.3条件语句SelectCas方法二:If…Then…ElseIf语句中嵌套If…Then…Else语句PrivateSubCommand2_Click()DimmonthAsInteger,numberAsInteger,rateAsIntegermonth=Val(Text1.Text)number=Val(Text2.Text)If(month>=1Andmonth<=5)Ormonth=10Ormonth=11ThenIfnumber<20Thenrate=20Elserate=30ElseIfmonth>=7Andmonth<=9ThenIfnumber<20Thenrate=5Elserate=15Elserate=10案例3.3条件语句SelectCase语句方法二:If…Then…ElseIf语句中嵌套If…TheEndIfLabel4.Caption="所订机票的优惠率为:"&Str(rate)&"%"EndSub案例3.3条件语句SelectCase语句EndIf案例3.3条件语句SelectCase语句案例3.4For…Next[3.4.1案例说明]求sum=1+2+3+…+100。用For…Next循环结构实现案例3.4For…Next[3.4.1案例说明][3.4.2相关知识]1.For循环语句(一般用于循环次数已知)语句格式:Forcounter=startToend[Stepincrement]语句块1[ExitFor]语句块2Next[counter]
>0初值<终值=1时,可省略<0初值>终值=0死循环step案例3.4For循环语句[3.4.2相关知识]>0初值<终值step案[3.4.3设计步骤](1)建立程序初始界面。(2)设置属性。演示:案例3.4案例3.4For循环语句[3.4.3设计步骤]案例3.4For循环语句(3)编写事件过程。PrivateSubCommand1_Click()DimsumAsInteger,iAsIntegersum=0‘累加器初值置为0。书上77页加注释。Fori=1To100
sum=sum+i‘注意红颜色的语句NextiLabel2.Caption=Str(sum)'Debug.PrintsumEndSub案例3.4For循环语句(3)编写事件过程。PrivateSubCommand[3.4.4思考与练习](1)如果要实现sum=1+2+3+…+10,怎样修改程序?(2)如果要实现sum=30+31+32+…+50,怎样修改程序?(3)如果Label2.Caption=Str(sum)中sum写成sam,即:Label2.Caption=Str(sam)则,运行后,Label2的Caption会变成什么?怎样避免这种错误?案例3.4For循环语句Fori=1To10Fori=30To50强制变量声明,OptionExplicit菜单:工具选项要求变量声明0[3.4.4思考与练习]案例3.4For循环语句Fo[3.5.1案例说明]用For循环实现求阶乘n建立程序初始界面。(2)设置属性。演示:案例3.5案例3.5用For循环求阶乘[3.5.1案例说明]案例3.5用For循环求阶乘
(3)编写事件过程。PrivateSubCommand1_Click()DimnAsInteger,iAsIntegerDimresultAsLong
result=1‘累乘,初值置为1。书上78页加注释。n=CInt(text1.text)‘把表达式转换为整型。Ifn<=0ThenLabel2.Caption="请输入正整数!"ExitSub'结束过程EndifFori=1Tonresult=result*iNextiLabel2.Caption=Str(n)+"!="+Str(result)EndSub案例3.5用For循环求阶乘(3)编写事件过程。案例3.5用For循环求阶乘[3.5.3思考与练习](1)如果result=1写成result=0,则运行后,Label2的Caption会变成什么?(2)运行后,如果输入的n<=0,1)ExitSub2)End(如果ExitSub写成End)
1),2)中哪句会结束程序的运行?哪句会结束本次事件过程,等待下一次事件过程?02)结束程序的运行1)结束本次事件过程,等待下一次事件过程案例3.5用For循环求阶乘[3.5.3思考与练习]02)结束程序的运行案例3.5[3.6.1案例说明]用Do…Loop循环结构实现求和sum=1+2+3+…+100。案例3.6Do…Loop循环结构[3.6.1案例说明]案例3.6Do…Loop循环结构[3.6.2相关知识]Do…Loop循环结构
Do…Loop语句较灵活,其常用格式有两种。语句格式1:Do[{While|Until}condition][statements][ExitDo][statements]Loop语句格式2:Do[statements][ExitDo][statements]Loop[{While|Until}condition]案例3.6Do…Loop循环结构[3.6.2相关知识]Do…Loop语句较灵活,其常用格Do…LoopUntil执行过程DoUntil…Loop执行过程案例3.6Do…Loop循环结构Do…LoopUntil执行过程[3.6.3设计步骤](1)建立程序初始界面。(2)设置属性。演示:案例3.6案例3.6Do…Loop循环结构[3.6.3设计步骤]案例3.6Do…Loop循环结构
(3)编写事件过程。解法一:采用当型循环DoWhile…LoopPrivateSubCommand1_Click()DimiAsInteger,sumAsIntegeri=1‘循环变量初值置为1,82页修改---红字部分sum=0'累加器初值置为0
DoWhilei<=100'当型循环sum=sum+ii=i+1'每次循环变量加1
LoopLabel2.Caption=Str(sum)EndSub
解法二:采用直到型循环DoUntil…LoopPrivateSubCommand1_Click()DimiAsInteger,sumAsIntegeri=1'循环变量初值置为1sum=0'累加器初值置为0
DoUntili>100sum=sum+ii=i+1
LoopLabel2.Caption=Str(sum)EndSub解法二:采用直到型循环[3.6.4思考与练习](1)如果去掉i=i+1,则运行结果是什么?程序运行出错。错误原因:溢出。请思考:为什么会溢出呢?案例3.5用For循环求阶乘[3.6.4思考与练习]程序运行出错。错误原因:溢出。案例[3.7.1案例说明]提示用户输入数字型数据,并对所输入的非负数进行求和,用While…Wend循环结构实现。案例3.7While…Wend循环结构[3.7.1案例说明]案例3.7While…Wend循[3.7.3设计步骤](1)建立程序初始界面。(2)设置属性。演示:案例3.7案例3.7While…Wend循环结构[3.7.3设计步骤]案例3.7While…Wend循(3)编写事件过程。PrivateSubCommand1_Click()DimnumAsInteger,totalAsIntegerDimtempAsStringnum=0total=0Whilenum>=0total=total+numtemp=InputBox("Pleaseenteranumber:")num=Val(temp)WendLabel1.Caption=Str(total)EndSub案例3.7While…Wend循环结构(3)编写事件过程。PrivateSubCommand1[3.7.4思考与练习](1)这个While循环什么时候结束?(2)这个While循环的循环次数是否固定?答:输入负数时,循环结束。因为当num>=0时,执行循环体。答:循环次数不固定
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 培养幼儿观察能力的教研方案计划
- 班级管理与文化建设策略计划
- 人力资源外包的优势与劣势分析计划
- 客户关系管理的改进策略计划
- 自我剖析及改善
- 围产期健康教育
- 四年级下册数学教案-3.6《手拉手》北师大版
- 创新创业仿生章鱼笔筒
- 2025年湿法混合颗粒机项目合作计划书
- 八年级历史下册 第19课 独立自主走向国际舞台教学实录 岳麓版
- 机器学习 课件全套 胡晓 第1-11章 基础知识、表征学习- 强化学习
- JJF 1375-2024机动车发动机转速测量仪校准规范
- 吊篮施工方案5
- 酒店业商务居间合同模板
- 零星维修工程施工方案
- 初中化学综合实践活动课教学设计5篇
- PEP 小学英语五年级下册《Unit 1 My day》作业设计
- 辛几何与动力系统理论
- 消除艾梅乙工作专班制度汇编手册修订版艾滋病梅毒乙肝
- 2024-2030年中国阳澄湖大闸蟹行业市场发展监测及投资前景展望报告
- 墓地征用补偿协议
评论
0/150
提交评论