选择与分支课件_第1页
选择与分支课件_第2页
选择与分支课件_第3页
选择与分支课件_第4页
选择与分支课件_第5页
已阅读5页,还剩76页未读 继续免费阅读

下载本文档

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

文档简介

选择与分支24.1.1 选择与分支

例如,一元二次方程的系数a、b、c,求该方程的根34.1.2 条件与判断在计算机程序语言中,使用条件表达式来描述条件。例1,有一分段函数如下,要求根据输入的x,计算并输出y的值。4例1的分段函数的4个条件分析共有4个与x相关的条件,这些条件按照关系表达式或逻辑表达式的格式可分别描述如下:x<0x>=0andx<10x>=10andx<100x>100分析: 一般来说,对于有n种可能的情况,只需要做n-1次判断就够了。5例2,题目描述根据输入的三个正数a、b、c,确定以它们为边能否构成三角形如果能构成三角形,再判断是等边三角形、直角三角形、等腰三角形、等腰直角三角形还是普通三角形6例2,解决方案:(1)如果a≤0或b≤0或c≤0,则输入出错(边长必须大于零);否则转下一步。(2)如果a+b≤c或b+c≤a或c+a≤b,则不能构成三角形(可以直接给出结果并结束程序);否则转下一步。(3)如果a=b并且b=c,则构成等边三角形;否则转下一步。7例2,解决方案:(4)如果a=b或b=c或c=a,则(嵌套)进一步判断是否有两边平方和等于第三边的平方,如果有,则构成等腰直角三角形;否则仅构成等腰三角形;如果没有任何两边相等,则转下一步(5)如果有两边平方和等于第三边的平方,则构成直角三角形,否则(即以上都不是)是普通三角形。8多种情况的判断顺序首先应该排除不合理的情况,然后根据可能性从大到小排列各种条件,将对多发情况的判断放在前面,而将对极少发生的情况的判断放在后面。9条件表达式的构成在构成条件表达式时,即关系表达式或逻辑表达式等,可以使用常量变量标准函数自定义函数过程104.1.3 分支结构基本特点根据条件控制某个程序段执行或不执行。分支结构一般分为两种:只有一个条件的简单分支结构具有多个条件的分支结构111只有一个条件的简单分支结构S1S2C是否S1C是否图4.1只有一个条件的简单分支结构(a)(b)122具有多个条件的分支结构S1SnC1是否S2是否S3是否图4.2具有多个条件的分支结构……C2C313每个分支中的程序段每个分支中的程序段S,可以是简单语句,类似于赋值语句分支结构的复杂语句若在程序段S中出现了新的分支结构,这时就形成了分支结构的嵌套

循环结构的复杂语句144.2 分支语句4.2.1IF语句4.2.2SELECTCASE语句

154.2.1 IF语句1)单行结构条件语句语法格式为:If<条件表达式>Then<语句1>[Else<语句2>]2)多行结构条件语句语法格式为:If<条件表达式>Then<语句序列1>[Else <语句序列2>]EndIf16IF语句3)ELSEIF结构条件语句语法格式为:If<条件表达式1>Then<语句序列1>ElseIf<条件表达式2>Then<语句序列2>…[Else<语句序列n>EndIf17【例4.1】题目:输入x,根据一下公式,计算y的值。18解题:程序流程图和窗体布局图4.3例4.1程序流程图图4.4例4.1的运行界面19Command1的Click事件代码编写Command1(即caption为“计算”的按钮)的Click事件过程如下:PrivateSubCommand1_Click()DimxAsSingle,yAsSinglex=Val(Text1.Text)

Ifx>=0Theny=1+xElsey=1-2*xLabel2.Caption="函数值y等于:"+Str(y)EndSub20【例4.2】任意输入三个数,将它们按从小到大的顺序打印输出。图4.5例4.2程序流程图21图4.6例4.2的运行界面布局22命令按钮Command1的Click事件过程代码PrivateSubCommand1_Click()DimaAsSingle,bAsSingle,cAsSingleDimminAsSingle,secAsSingleDimmaxAsSinglea=Val(Text1.Text)b=Val(Text2.Text)c=Val(Text3.Text)Ifa>bThenmax=amin=bElsemax=bmin=aEndIf23命令按钮Command1的Click事件过程代码续:Ifc>maxThensec=maxmax=cElse

Ifc<minThensec=minmin=cElsesec=c'c是中间数

EndIfEndIfLabel2.Caption=

"从小到大是:"+Str(min)+","+Str(sec)+","+Str(max)EndSub24【例4.3】题目:根据2008年3月1日起执行的我国个人所得税法的规定,工资、薪金所得个人所得税按表4.1所列个人所得税税率表计算。试编写程序,输入一个人的月收入,输出其应缴个人所得税。25表4.1个人所得税税率表级数全月应纳税所得额税率(%)速算扣除数1不超过500元的502超过500元至2000元的部分10253超过2000元至5000元的部分151254超过5000元至20000元的部分203755超过20000元至40000元的部分2513756超过40000元至60000元的部分3033757超过60000元至80000元的部分3563758超过80000元至100000元的部分40103759超过100000元的部分451537526分析1根据规定,纳税人每月取得工资收入后,先减去个人承担的基本养老保险金、医疗保险金、失业保险金,以及按省级政府规定标准缴纳的住房公积金,再减去免征额2000元,余额为应纳税所得额,对应纳税所得额按5%至45%的九级超额累进税率计算缴纳个人所得税。计算公式如下:应纳个人所得税税额=应纳税所得额×适用税率-速算扣除数27分析2例如,王某当月取得工资收入9000元,当月个人承担住房公积金、基本养老保险金、医疗保险金、失业保险金共计1000元,免征额为2000元,则王某当月应纳税所得额=9000-1000-2000=6000元,应纳个人所得税税额=6000×20%-375=825元。28图4.7例4.3的运行界面29命令按钮的Click事件过程代码如下:PrivateSubCommand1_Click()

DimysrAsDouble,yljAsDouble,ylbxjAsDoubleDimsybxjAsDouble,zfgjjAsDouble,slAsDoubleDimsskcsAsDouble,sdsseAsDoubleysr=Val(Text1.Text)ylj=Val(Text2.Text)ylbxj=Val(Text3.Text)sybxj=Val(Text4.Text)zfgjj=Val(Text5.Text)ysr=ysr-ylj-ylbxj-sybxj-zfgjj-200030Ifysr<=500Thensl=5sskcs=0ElseIfysr<=2000Thensl=10sskcs=25ElseIfysr<=5000Thensl=15sskcs=125ElseIfysr<=20000Thensl=20sskcs=37531ElseIfysr<=40000Thensl=25sskcs=1375ElseIfysr<=60000Thensl=30sskcs=3375ElseIfysr<=80000Thensl=35sskcs=637532ElseIfysr<=100000Thensl=40sskcs=10375Elsesl=45sskcs=15375EndIfsdsse=ysr*sl/100-sskcsLabel4.Caption=Str(sl)Label5.Caption=Str(sdsse)EndSub33IIF函数其格式为:IIF(<条件表达式>,<A>,<B>)用于 实现简单双分支计算问题例如:Ifx>0Theny=1Elsey=-1可以表达成y=IIF(x>0,1,-1)344.2.2 SELECTCASE语句SelectCase<被测试表达式>Case<表达式1><语句序列1>Case<表达式2><语句序列2>……[CaseElse<其他语句序列>]EndSelect35在该语句中,<被测试表达式>可以是数值表达式、字符串表达式、逻辑表达式,或者日期表达式。每个Case部分的<表达式>均用来描述被测试表达式的取值情况,可以是以下几种格式:<表达式>[,<表达式>][,…]。逐个列举可能的取值。例如:Case1,3,5,7,表示被测试表达式的取值为1、3、5、7这四种情况。<表达式1>To<表达式2>。用来指定一个可能的取值范围。例如,当被测试表达式为一字符串表达式时,Case"a"To"f",表示其可能的取值为6个小写字母。Is<关系运算符><表达式>。用来指定一个可能的取值关系,例如:CaseIs<#1/1/2001#,用于判断日期是否在2001年1月1日前。36【例4.4】某商场为了促销,开展了根据每位顾客一次购物情况给予打折的优惠活动,具体优惠办法如下:(1)在1000元以上者,按八折优惠;(2)在500元以上,但不足1000元者,按八五折优惠;(3)在300元以上,但不足500元者,按九折优惠;(4)在100元以上,但不足300元者,按九五折优惠;(5)不足100元者,没有优惠。设购物款数为a元,优惠价为b元,优惠付款公式为:37图4.8例4.4的运行结果38PrivateSubCommand1_Click()DimaAsSingle,bAsSinglea=Val(Text1.Text)SelectCaseaCaseIs>=1000b=0.8*aCaseIs>=500b=0.85*aCaseIs>=300b=0.9*aCaseIs>=100b=0.95*aCaseElseb=aEndSelectLabel2.Caption="优惠价为:"+Str(b)EndSub394.3 选择性控件4.3.1 单选按钮(OptionButton)4.3.2 复选框(CheckBox)4.3.3 选项卡(SSTab)404.3.1 单选按钮(OptionButton)单选按钮对于单选按钮而言,不管当前的状态是选中还是未选中,只要单击就变成选中状态。图4.9单选按钮的状态41单选按钮的常用属性和事件Caption属性其值为与单选按钮同时显示的标题,主要用来告诉用户该单选按钮的意义。可以利用单选按钮的Alignment属性设置标题显示在单选按钮的右方或左方。Value属性Value属性是逻辑型值,其值可以是True或False。参见图4.9中左面的两个单选按钮。True:表示选中,运行时该单选按钮的圆圈中出现一个黑点。False:表示未选中。该值为设计时的默认值。如果需要的话,也可以改变其默认值。Click事件对用鼠标左键点击单选按钮时,该事件发生,并将触发该按钮相应的单击事件过程。42【例4.5】设计一个如图4.10所示的程序,单击对应的复选框和单选按钮能够修改文本框中的字体和字号。图4.10例4.5的运行界面43PrivateSubCommand1_Click()Ifsong.ValueThendisp.FontName="宋体"Ifhei.ValueThendisp.FontName="黑体"Ifkai.ValueThendisp.FontName="楷体_GB2312"Ifs8.ValueThendisp.FontSize=8Ifs16.ValueThendisp.FontSize=16Ifs32.ValueThendisp.FontSize=32EndSub44可以分别为每个单选按钮的Click事件编写过程代码来即时改变显示设置。例如:单选按钮Song的Click事件过程代码如下:PrivateSubSong_Click()Disp.FontName="宋体"EndSub单选按钮S16的Click事件过程代码如下:PrivateSubS16_Click()Disp.FontSize=16EndSub454.3.2 复选框(CheckBox)复选框使用复选框时,每单击一次将切换一次复选框的状态,即选中时单击将切换到未选中状态,未选中时单击将切换到选中状态。46复选框的常用属性和事件如下:Caption属性其值为与复选框同时显示的标题,主要用来告诉用户该选项的意义。可以利用复选框的Alignment属性设置标题显示在复选框的右方或左方。Value属性复选框Value属性为一整型值,可以是以下三个值之一:0(默认值):表示未复选,处于这种状态的复选框在运行时复选框前没有“√”标志。1:表示选中,执行时复选框呈现“√”标志。2:表示灰色,复选框呈现“√”标志,但以灰色显示。通常使用的复选框Value属性为0或1。Click事件对用鼠标左键点击复选框时,该事件发生,并将触发该按钮相应的单击事件过程。47选择类控件的常用事件和方法复选框和单选按钮的常用事件为Click。它们的方法很少使用。Click事件:当用户在一个复选框或单选按钮上单击鼠标时发生。注意:对于复选框而言,在代码中将其Value属性设置为0或1将引发复选框的Click事件,对于单选按钮而言,将其Value属性设置为True同样引发单选按钮的Click事件。48框架功能可以按控件功能或布局对控件进行分组。框架的作用主要是区分一个控件组,也就是让用户可以容易地区分窗体中的各个选项。一组单选按钮最多只有一个被选中,每个框架控件将其中的单选钮分成一组,这时每组中的单选钮能选中一个。框架在实际运用中往往和其他控件一起使用。在框架中加入组成员必须先在窗体中建立一个框架,再在它的上面建立其所属控件,这时这些控件的容器就不再是窗体而是框架。但是,如果将建立在窗体上的控件直接拖动到框架上,这些控件并不能成为框架的组成员,也就是说,这时这些控件的容器仍是窗体。要想将建立在窗体或其他容器中的控件对象加入到某个框架中,可以将需要移动的控件剪切,然后激活框架后在框架上进行粘贴即可。很少对框架控件进行编程,最常用属性只有Caption,。49【例4.6】选择若干课程,显示所选项数。图4.11例4.6的程序界面50命令按钮的Click事件过程代码如下:PrivateSubCommand1_Click()DimnAsIntegern=0IfCheck1.Value=1Thenn=n+1IfCheck2.Value=1Thenn=n+1IfCheck3.Value=1Thenn=n+1IfCheck4.Value=1Thenn=n+1

Label2.Caption="共选中了"+Str(n)+"项"EndSub51【例??】设计一个如图10.14所示的程序,单击对应的复选框和单选按钮能够修改文本框中的字体和字型。⑴设计如图10.14所示界面,窗体上布局一个名为Text1的文本框、一个名为cmdClose的命令按钮、三个Name属性分别为optFontS、optFontH、optFontK的单选按钮、三个Name属性分别为chkBold、chkItalic、chkUnderLine的复选框。图10.14复选框与单选按钮示例52⑵设计如下的事件过程PrivateSubcmdClose_Click()EndEndSubPrivateSubForm_Load()Text1.Text="安徽财经大学"Text1.FontSize=24optFontS.Caption="宋体"optFontH.Caption="黑体"optFontK.Caption="楷体"chkBold.Caption="粗体"chkItalic.Caption="斜体"chkUnderline.Caption="下划线"optFontK.Value=True'将引发optFontk的单击事件

chkItalic.Value=1'将引发chkItalic的单击事件EndSub53PrivateSuboptFontK_Click()'注意要和系统提供的字体名一致

Text1.FontName="楷体_GB2312"EndSubPrivateSuboptFontH_Click()Text1.FontName="黑体"EndSubPrivateSuboptFontS_Click()Text1.FontName="宋体"EndSub54PrivateSubchkItalic_Click()Text1.FontItalic=chkItalic.Value=1EndSubPrivateSubchkUnderline_Click()Text1.FontUnderline=chkUnderline.Value=1EndSubPrivateSubchkBold_Click()Text1.FontBold=chkBold.Value=1EndSub55【例??】在上例中增加字号控制。⑴在窗体上放置三个框架控件,并将这三个框架的Caption属性分别设置为“字体”、“字号”和“字型”,并如图10.15所示将对应的控件进行分组且放倒对应的框架中;三个字号单选钮控件的Name属性分别为:optFontSize8、optFontSize16、optFontSize24。⑵添加如下事件过程:PrivateSuboptFontSize16_Click()Text1.FontSize=16EndSub图10.15框架示例PrivateSuboptFontSize24_Click()Text1.FontSize=24EndSubPrivateSuboptFontSize8_Click()Text1.FontSize=8EndSub564.3.3 选项卡(SSTab)采用如下方法进行添加:选择“工程”菜单中的“部件”命令,弹出“部件”对话框。在对话框中单击“控件”选项卡,从中选择所需的控件文件。例如,选中“MicrosoftTabbedDialogControl6.0”、“MSWindowsCommonControls6.0”。点击“应用”按钮,这时窗体左侧的工具箱中出现了一些新的控件。点击“关闭”按钮,可结束添加新部件。57图4.12添加新控件58图4.13添加了新控件的工具箱图4.14选项卡的形状和选项卡位置59SSTab控件常用的属性如下:1)Tabs属性。返回或设置SSTab控件上的选项卡总数。设计时,默认的选项卡数为3,可以根据需要增加或减少。2)Style属性。用以返回或设置SSTab控件上的选项卡样式。其值为0时,样式为ssStyleTabbedDialog,参见图4.14中上方左面的形状;其值为1时,样式为ssStylePropertyPage,参见图4.14中上方右面的形状。60SSTab控件常用的属性如下:3)TabCaption(tab)属性。返回或者设置SSTab控件的每个选项卡的标题,使用时括号中的tab为对应的选项卡号。选项卡的编号从0开始,依次递增。4)Tab属性。返回或设置SSTab控件的当前选项卡,当前选项卡移动到前面并成为活动选项卡。使用是将Tab属性设置为某个选项卡的编号即可。61SSTab控件常用的属性如下:5)TabOrientation属性。返回或设置SSTab控件上的选项卡的位置。其值为0时,选项卡出现在控件顶端;为1时,选项卡出现在控件底部;为2时,选项卡出现在控件左边;为3时,选项卡出现在控件右边。参见图4.14。62【例4.7】利用选项卡实现对文本的字体、字型和字号控制进行控制。图4.15例4.7的运行界面图4.16各选项卡的控件布局63界面说明Disp文本框中的文本用于进行字体、字号和字型设置,单击Close命令按钮将结束程序。另外放置一个名为SSTab1的选项卡,其Tabs属性为3,Style属性为0。三个页面的Caption属性分别为“字体”、“字型”和“字号”,在字体页面上放置三个Name属性分别为Song、LiShu、YouYuan的单选按钮;字型页面上放置三个Name属性分别为Cu、Xie、XiaHua的复选框;字号页面上放置三个Name属性分别为S8、S16、S32的单选按钮。每个选项卡布局如图4.16所示。64“设置”按钮的Click事件过程代码如下:PrivateSubCommand1_Click()Ifsong.ValueThenDisp.FontName="宋体"IfLiShu.ValueThenDisp.FontName="隶书"IfYouYuan.ValueThenDisp.FontName="幼圆"IfS8.ValueThenDisp.FontSize=8IfS16.ValueThenDisp.FontSize=16IfS32.ValueThenDisp.FontSize=32Disp.FontBold=Cu.Value=1Disp.FontItalic=Xie.Value=1Disp.FontUnderline=XiaHua.Value=1EndSub654.4 程序设计举例【例4.8】求一元二次方程ax2+bx+c=0的根。【例4.9】输入一个年份和月份,输出该月的天数。【例4.10】给定三角形的三条边长,计算三角形的面积。【例4.11】输入一个字符,判断所属分类。66【例4.8】求一元二次方程ax2+bx+c=0的根。图4.17求一元二次方程根的流程图67图4.18例4.8程序界面68Command1的Click事件过程代码如下:PrivateSubCommand1_Click()DimaAsSingle,bAsSingle,cAsSingle,dAsSingleDimoutsAsString,x1AsSingle,x2AsSinglea=Val(Text1.Text)b=Val(Text2.Text)c=Val(Text3.Text)Ifa=0Then'不是一元二次方程

outs="输入出错,不是一元二次方程!"Else'是一元二次方程

d=b*b-4*a*c69SelectCased'判断d的取值情况

CaseIs>0'有两个不相等的实根

x1=(-b+Sqr(d))/(2*a)x2=(-b-Sqr(d))/(2*a)outs="方程有两个实根:"+Chr$(13)_+Str(x1)+Chr$(13)+Str(x2)CaseIs<0'没有实根

outs="方程没有实数根!"CaseElse'有两个相等的实根

x1=-b/(2*a)outs="方程有两个相等实根:"+_Chr$(13)+Str$(x1)EndSelectEndIfLabel2.Caption=outsEndSub70【例4.9】输入一个年份和月份,输出该月的天数。图4.19例4.9的运行界面71PrivateSubCommand1_Click()

DimyearAsInteger,monthAsInteger,dayAsIntegeryear=Val(Text1.Text)month=Val(Text2.Text)SelectCasemonthCase1,3,5,7,8,10,12day=31Case4,6,9,11day=30Case2IfyearMod400=0OryearMod100<>0And_yearMod4=0Then‘if与then在同一行

day=29Elseday=28EndIfEndSelectLabel2.Caption=Str(year)+"年"+Str(month)+"月有"+Str(day)+"天"EndSub72【例4.10】给定三角形的三条边长,计算三角形的面积。图4.20例4.10的运行界面73PrivateSubcmdOk_Click()DimxAsInteger

DimaAsSingle,bAsSingle,cAsSingle,pAsSinglea=Val(txtA.Text)b=Val(txtB.Text)c=Val(txtC.Text)Ifa<=0Orb<=0Orc<=0Then'边长非正数

x=MsgBox("输入出错",vbOKOnly,"提示信息")ElseIfa+b<=cOrb+c<=aOrc+a<=bThen'两边之和不大于第三边

x=MsgBox("输入的边长不满足三角形条件",_vbOKOnly,"提示信息")Else'输入正确74p=(a+b+c)/2s=Sqr(p*(p-a)*(p-b)*(p-c))

'海伦公式计算三角形面积

x=MsgBox("三角形的面积为:"+Str(s),_

温馨提示

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

评论

0/150

提交评论