




已阅读5页,还剩67页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第三章程序流程控制,第三章程序流程控制,本章内容及要求:1.熟练掌握行if语句、块if结构、SelectCase情况选择结构的使用,掌握选择的嵌套结构;2.熟练掌握实现循环结构的For/Next循环结构及ExitFor语句、Do/Loop循环结构的使用,掌握多重循环。本章重点:选择结构及循环结构的实现及其应用本章难点:选择的嵌套及多重循环结构,案例3.1条件语句IfThenElse,3.1.1案例说明输入x,计算y的值。其中:(1)当x6时,y=x+3(2)当x6时,y=4x,案例3.1条件语句IfThenElse,3.1.2相关知识1.1.IfThen结构这种结构常称为简单分支结构,如图所示。它一般有两种形式:单行和多行语句。单行语句格式:If条件表达式Then语句多行语句格式:If条件表达式Then语句块EndIf,例如:对语句IfabThenmax=a也可改成多行结构形式:IfabThenmax=aEndIf,案例3.1条件语句IfThenElse,2.IfThenElse结构语句格式:If条件表达式Then语句块1Else语句块2EndIf例如,如果成绩大于60分,则在屏幕上显示“合格”,否则在屏幕上显示“不合格”。Ifscore60thenMsgBox合格ElseMsgBox不合格EndIf,案例3.1条件语句IfThenElse,3.多重If语句语句格式:语句格式:If条件表达式1Then语句块1ElseIf条件表达式2Then语句块2ElseIf条件表达式3Then语句块3ElseIf条件表达式nThen语句块nElse语句块EndIf,案例3.1条件语句IfThenElse,案例3.1条件语句IfThenElse,3.1.3设计步骤(1)建立程序初始界面。(2)设置属性。演示:案例3.1的补充例题,案例3.1条件语句IfThenElse,3.1.3设计步骤(3)编写事件过程。PrivateSubCommand1_Click()DimxAsSingle,yAsSinglex=Val(Text1.Text)Ifx6Theny=x+3Elsey=4*xEndIfText2.Text=Str(y)EndSub,案例3.1条件语句IfThenElse,3.1.4思考与练习1.编程实现:输入一个整数,判断它是奇数还是偶数,并输出相应的提示信息。用IfThenElse语句实现。(设计界面,编写完整的程序,上机实现),DimnAsInteger,strAsString从界面上的某个控件获得变量n的值IfnMod2=0Thenstr=偶数Elsestr=奇数EndIf把str的内容显示在界面上的某个控件上,案例3.1条件语句IfThenElse,3.1.4思考与练习2.以下程序运行时,输出结果是什么?PrivateSubCommand1_Click()y=1Ify0Thenx=5Ify0Thenx=4Elsex=3EndIfPrintx=;xEndSub,x=3,案例3.2条件语句IfThenElseIf语句,3.2.1案例说明对所输入的整数进行判断,若输入数为正数,则显示“大于零”,若输入数为负数,则显示“小于零”,否则显示“等于零”。用IfThenElseIf语句实现。,3.2.2设计步骤(1)建立程序初始界面。(2)设置属性。演示:案例3.2,案例3.2条件语句IfThenElseIf语句,3.2.2设计步骤(3)编写事件过程。PrivateSubCommand1_Click()IfVal(Text1.Text)0ThenText2.Text=大于零ElseText2.Text=等于零EndIfEndSub,案例3.2条件语句IfThenElseIf语句,3.2.3思考与练习1.为铁路编写计算运费的程序。假设铁路托运行李,规定每张客票托运费的计算方法是:行李重量不超过50kg时,每千克0.25元;超过50kg而不超过100kg时,其超过部分每千克0.35元;超过100kg时,其超过部分每千克0.45元。用IfThenElseIf语句实现。(设计界面,编写完整的程序,上机实现)分析:托运费的分段函数是什么?,答:设行李重量为w公斤,应付托运费为x元,则托运费的分段函数是:(1)w100时,x=0.25*50+0.35*50+0.45*(w-100),案例3.2条件语句IfThenElseIf语句,PrivateSubCommand1_Click()DimwAsSingle,xAsSinglew=Val(Text1.Text)Ifw50Andw100Thenx=0.25*50+0.35*50+0.45*(w-100)如果把最后一句Text2.Text=Str(x)写在此处,效果是什么?EndIf,案例3.2条件语句IfThenElseIf语句,不能写成:50cAndb+caAndc+ab)ThenIfa=bAnda=cThenstr=该三角形是等边三角形ElseIfa=bOra=cOrb=cThenstr=该三角形是等腰三角形,a=Val(Text1.Text)b=Val(Text2.Text)c=Val(Text3.Text),案例3.2条件语句IfThenElseIf语句,ElseIfa*a+b*b=c*cOrb*b+c*c=a*aOrc*c+a*a=b*bThenstr=该三角形是直角三角形Elsestr=该三角形是普通三角形EndIfElsestr=不能组成三角形EndIf把str的内容显示在界面上的某个控件上EndSub,Label5.Caption=strText4.Text=str,案例3.3条件语句SelectCase语句,3.3.1案例说明计算公民应纳个人所得税。这里将个人所得税具体计算问题理想化,假设以1000元作为标准,10001999的税率为5%,20004999的税率为10%,50009999的税率为25%,1000019999的税率为40%,20000以上的税率为45%。用SelectCase语句实现。,3.3.2相关知识语句格式:SelectCase测试表达式Case表达式列表1语句块1Case表达式列表2语句块2Case表达式列表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=优秀EndSelectIs表达式。通过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)在旅游的旺季79月,如果订票数超过20张,票价优惠15%,20张以下,优惠5%;(2)在旅游的淡季15月、10月、11月,如果订票数超过20张,票价优惠30%,20张以下,优惠20%;(3)其他情况一律优惠10%。请设计程序,根据月份和订票张数决定票价的优惠率。(设计界面,编写完整的程序,上机实现),案例3.3条件语句SelectCase语句,演示:票价.vbp的界面,方法一:SelectCase语句中嵌套IfThenElse语句PrivateSubCommand1_Click()DimmonthAsInteger,numberAsInteger,rateAsIntegermonth=Val(Text1.Text)number=Val(Text2.Text)SelectCasemonthCase1To5,10,11Ifnumber20Thenrate=20Elserate=30Case7To9Ifnumber=1Andmonth=7Andmonth=9ThenIfnumber20Thenrate=5Elserate=15Elserate=10,案例3.3条件语句SelectCase语句,EndIfLabel4.Caption=所订机票的优惠率为:&Str(rate)&%EndSub,案例3.3条件语句SelectCase语句,案例3.4ForNext,3.4.1案例说明求sum=1+2+3+100。用ForNext循环结构实现,3.4.2相关知识1.For循环语句(一般用于循环次数已知)语句格式:Forcounter=startToendStepincrement语句块1ExitFor语句块2Nextcounter,案例3.4For循环语句,3.4.3设计步骤(1)建立程序初始界面。(2)设置属性。演示:案例3.4,案例3.4For循环语句,(3)编写事件过程。,PrivateSubCommand1_Click()DimsumAsInteger,iAsIntegersum=0累加器初值置为0。书上77页加注释。Fori=1To100sum=sum+i注意红颜色的语句NextiLabel2.Caption=Str(sum)Debug.PrintsumEndSub,案例3.4For循环语句,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=1To10,Fori=30To50,强制变量声明,OptionExplicit菜单:工具选项要求变量声明,0,3.5.1案例说明用For循环实现求阶乘n!3.5.2设计步骤(1)建立程序初始界面。(2)设置属性。演示:案例3.5,案例3.5用For循环求阶乘,(3)编写事件过程。PrivateSubCommand1_Click()DimnAsInteger,iAsIntegerDimresultAsLongresult=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.5.3思考与练习(1)如果result=1写成result=0,则运行后,Label2的Caption会变成什么?(2)运行后,如果输入的n=0total=total+numtemp=InputBox(Pleaseenteranumber:)num=Val(temp)WendLabel1.Caption=Str(total)EndSub,案例3.7WhileWend循环结构,3.7.4思考与练习(1)这个While循环什么时候结束?(2)这个While循环的循环次数是否固定?,答:输入负数时,循环结束。因为当num=0时,执行循环体。,答:循环次数不固定,案例3.7WhileWend循环结构,3.8.1案例说明求sum=1!+2!+3!+4!+5!,用多重循环实现。,案例3.8多重循环,3.8.2相关知识多重循环如果在一个循环内完整地包含另一个循环结构,则称为多重循环,或循环嵌套,嵌套的层数可以根据需要而定,嵌套一层称为二重循环,嵌套二层称为三重循环。上面介绍的几种循环控制结构可以相互嵌套,下面是几种常见的二重嵌套形式:,案例3.8多重循环,3.8.3设计步骤(1)建立程序初始界面。(2)设置属性。演示:案例3.8,案例3.8多重循环,(3)编写事件过程。PrivateSubCommand1_Click()DimiAsInteger,jAsInteger,nAsIntegerDimsum1AsLong,sum2AsLongn=5请思考:怎样使n能够变化?sum1=0,案例3.8多重循环,答:用InputBox语句实现,或加控件:Text1n=Val(InputBox(请输入n(n1,n为整数),输入数据,2)或n=Val(Text1.Text),Fori=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=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=1,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=1Tonsum2=1Forj=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,案例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)IfabThenmax=aElsemax=bEndIf,习题三,IfcmaxThenmax=cEndIfLabel4.Caption=最大的数是:+Str(max)EndSub,习题三,3.2输入一行字符,分别统计其中数字、英文字母、空格的个数。(1)建立程序初始界面。(2)设置属性。演示:3.2题,习题三,(3)编写事件过程。Dimnum1AsInteger,num2AsInteger,num3AsInteger注意定义num1,num2,num3的位置PrivateSubForm_Load()num1=0num2=0num3=0EndSub,习题三,PrivateSubText1_KeyPress(KeyAsciiAsInteger)Dimch1AsString*1ch1=Chr(KeyAsci
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 武汉外语外事职业学院《投资学实验》2023-2024学年第二学期期末试卷
- 成都理工大学工程技术学院《无机及分析》2023-2024学年第二学期期末试卷
- 雅安职业技术学院《施肥原理与技术》2023-2024学年第二学期期末试卷
- 乐山师范学院《名著导读》2023-2024学年第二学期期末试卷
- 湖北三峡职业技术学院《仪表自动化与过程控制》2023-2024学年第二学期期末试卷
- 遵义医科大学《大数据开源架构》2023-2024学年第二学期期末试卷
- 皖西卫生职业学院《项目策划与管理》2023-2024学年第二学期期末试卷
- 山东理工职业学院《大气污染控制课程设计》2023-2024学年第二学期期末试卷
- 温州职业技术学院《计算机网络与通信技术》2023-2024学年第二学期期末试卷
- 西安工程大学《发电厂电气主系统》2023-2024学年第二学期期末试卷
- 河南五市2025年高三俄语二模试卷(无答案)
- 2025年广东广州市高三二模高考英语试卷试题(含答案详解)
- 挂靠法人免责协议书
- 碳中和技术概论全套教学课件
- 医院检验科实验室生物安全管理手册
- 我的家乡山东PPT课件
- 科技改变生活英语PPT课件
- 供应商社会准则符合性自审问卷
- 37高炮专业教案讲解
- LH160使用说明书090708
- 冬虫夏草(菌丝体)产业项目建议书写作模板
评论
0/150
提交评论