选择结构程序设计.ppt
第4章,选择结构程序设计,本章主要内容,第4章选择结构程序设计,退出,选择程序结构用于判断给定的条件,根据判断的结果判断某些条件,根据判断的结果来控制程序的流程4.1条件表达式示例Ifx=5Theny=x+1Ifa>1Andb0Thenx=1结果是true/false4.2If语句(也称条件语句)两种格式的If语句:If.ThenIf.Then.Else,选择结构程序设计,关系表达式(表4.1),逻辑表达式(表4.2),格式:If条件Then语句组或If条件Then语句组EndIf功能:若条件成立(值为真),则执行Then后面的语句组,否则直接执行下一条语句或“EndIf”的下一条语句,4.2.1单分支If语句(If.Then),多行(块)结构,单行结构,正例:Ifa<12Theny=2正例:Ifa<12Theny=2EndIf错例:Ifa2C.a"ab"D.a>=0AndNotb0Andb>0,请你给出答案,想一想,思考题,最大字符:D最小字符:C,FFTTT,PrivateSubForm_Load()Showa=1:b=3c=2*a-ba=IIf(caThena=a+1c=c-1Elsea=a-1EndIfPrinta,b,cEndSub,下列程序的运行结果是?,想一想,思考题,25-2,例4.1a,(1)创建应用程序的用户界面和设置对象属性(2)编写程序代码功能要求:用户在“a=”文本框(Text1)、“b=”文本框(Text2)和“c=”文本框(Text3)中输入数据,单击“判断”按钮后,则在“最大数”文本框(Text4)中输出结果,例4.2输入三个数a、b、c,求出其中最大数,例4.2,PrivateSubCommand1_Click()m用来存放较大值DimaAsInteger,bAsIntegerDimcAsInteger,mAsIntegera=Val(Text1.Text)b=Val(Text2.Text)c=Val(Text3.Text)Ifa>bThenm=aElsem=bEndIfIfc>mThenm=cText4.Text=mEndSub,程序代码程序流程图,Then和Else后面的语句组包含另一个条件语句1.一般格式If条件1ThenIf条件2ThenEndIfElseEndIf使用条件语句嵌套时,一定要注意If与Else,If与EndIf的配对关系。,4.2.4If语句的嵌套,例如:0时至12时,显示“早上好”利用窗体装载(Load)事件,采用Print直接在窗体上输出结果PrivateSubForm_Load()DimhAsIntegerShow使print输出在窗体上的内容可见h=Hour(Time()取系统的时间FontSize=30:ForeColor=RGB(255,0,0)BackColor=RGB(255,255,0)Ifh<12ThenPrint"早上好!"ElseIfh<18ThenPrint"下午好!"ElsePrint"晚上好!"EndIfEndIfEndSub,例4.3根据不同的时间段发出问候语,例4.3,If条件1Then语句块1ElseIf条件2Then语句块2ElseIf条件3Then语句块3Else语句块nEndIf先测试条件1,如果为假,就依次测试条件2,依此类推,直到找到为真的条件。一旦找到一个为真的条件时,VB会执行相应的语句组,然后执行EndIf语句后面的代码。如果所有条件都是假,那么执行Else后面的语句组n,然后执行EndIf语句后面的代码。,Ifh<12ThenPrint"早上好!"ElseIfh=bThenIfb>5Thenb=b+1ElseIfb>2Thenb=b-1Elseb=b+2EndIfb=IIf(a=b,b+1,b-1)PrintbEndSub,下列程序的运行结果是?,想一想,思考题,2,例4.3a,使用多分支语句SelectCase也可以实现多分支选择。更有效、更易读,并且易于跟踪调试。SelectCase测试表达式Case表达式表1语句组1Case表达式表2语句组2.CaseElse语句组nEndSelect先计算表达式的值,然后将该值依次与结构中的每个Case的值进行比较,如果该值符合某个Case指定的值条件时,就执行该Case的语句组,然后跳到EndSelect,从EndSelect出口。如果没有相符合的Case值,则执行CaseElse中的语句组。,4.3多分支语句,示例SelectCasexCase-1y=10Case1y=20CaseElsey=30EndSelect,用SelectCase语句来实现多分支选择功能,程序代码如下:PrivateSubCommand1_Click()DimscoreAsInteger,tempAsStringscore=Val(Text1.Text)temp="成绩等级为:"SelectCasescoreCase0To59Label2.Caption=temp+"不及格"Case60To79Label2.Caption=temp+"及格"Case80To100Label2.Caption=temp+“优良"CaseElseLabel2.Caption="成绩出错"EndSelectEndSub,例4.4判断成绩的等级(优良、及格、不及格),例4.4,提供选项让用户选择,如选择“是”或“否”,从列表中选择某一项等选择的控件有:单选按钮、复选框、列表框和组合框,4.4选择性控件,1.单选按钮的用途单选按钮(OptionButton)控件由一个圆圈“”及紧挨它的文字组成,能提供“选中”和“未选中”两种可选项成组形式出现2.常用属性Caption属性Value属性:表示单选按钮是否被选中,选中时Value值为True,否则为False。使用单选按钮组时,选中其中一个,其余就会自动关闭Alignment属性:设置单选按钮标题的对齐方式3.事件Click事件在应用程序中可以创建一个事件过程,检测控件对象Value属性值,再根据检测结果执行相应的处理,4.4.1单选按钮,(1)创建应用程序的用户界面和设置对象属性单选按钮组;初始状态:设置Option1的Value属性值设置为True,或通过代码“Option1.Value=True”来实现(2)编写程序代码功能要求,例4.5用单选按钮组控制显示不同的字体,例4.5,程序代码如下:PrivateSubOption1_Click()Text1.FontName="宋体"EndSubPrivateSubOption2_Click()Text1.FontName="幼圆"EndSubPrivateSubOption3_Click()Text1.FontName="楷体_GB2312"EndSub说明:程序代码中所用的字体号(如“宋体”、“幼圆”等)必须与系统提供的字体相一致,1.复选框的用途复选框(CheckBox)控件由一个四方形小框和紧挨它的文字组成。提供“选中”和“未选中”两种可选项复选框控件与单选按钮控件在使用方面的区别2.常用属性Caption属性Value属性:表示复选框的状态有三种取值:0未选中(缺省值)1选中2不可用(灰色显示)Alignment属性;Style属性3.事件复选框可响应的事件与单选按钮基本相同,4.4.2复选框,(1)创建应用程序的用户界面和设置对象属性多行文本框(带垂直滚动条)和四个复选框(2)编写程序代码功能要求:程序开始运行后,用户在文本框中输入一段文字(如“复选框应用示例”),然后按需要单击各复选框,则文字的字体、字型、字号及颜色随之改变,例4.6用复选框来控制文字的字体、字型、字号及颜色,例4.6,PrivateSubCheck1_Click()IfCheck1.Value=1Then判复选框1是否选中Text1.FontName="楷体_GB2312"ElseText1.FontName="宋体"EndIfEndSubPrivateSubCheck2_Click()IfCheck2.Value=1Then判复选框2是否选中Text1.FontItalic=TrueElseText1.FontItalic=FalseEndIfEndSubPrivateSubCheck3_Click()IfCheck3.Value=1Then判复选框3是否选中Text1.FontSize=25ElseText1.FontSize=9EndIfEndSub,PrivateSubCheck4_Click()IfCheck4.Value=1Then判复选框4是否选中Text1.ForeColor=RGB(255,0,0)ElseText1.ForeColor=RGB(0,0,0)EndIfEndSub在运行中,可以任意设定这四个复选框的状态,可以四项都不选,也可以选择其中一项至四项,计时器(Timer)每隔一定的时间间隔自动产生一次Timer事件(或称报时),可以根据这个特性来定时控制某些操作,或计时运行时计时器不显示Enabled属性:确定计时器是否可用Interval属性:设置两个Timer事件之间的时间间隔,其值以毫秒(1ms=1/1000s)为单位计时器控件只响应一个Timer事件。也就是说,计时器控件对象在间隔了一个Interval设定时间后,便触发一次Timer事件,4.5计时器控件,例4.7建立一个电子时钟,(1)创建应用程序的用户界面和设置对象属性一个计时器控件和一个文本框。计时器控件Timer1的Interval属性值设定为1000(1秒)(2)编写程序代码PrivateSubTimer1_Timer()timer事件过程Text1.Text=Time()Time是时间函数EndSub,例4.7,运行界面,设计界面,计时器(Timer)每隔一定的时间间隔自动产生一次Timer事件和执行Timer事件过程这个时间间隔由Interval属性设定利用这个特性来定时控制某些操作,例4.8实现字体的放大,利用计时器可以按指定间隔时间对字体进行放大(1)创建应用程序的用户界面和设置对象属性一个计时器控件和一个标签。标签内显示文字“放大”计时器控件Timer1的计时器采用默认的属性值Enabled属性值为True(真),Interval属性值为0,例4.8,(2)编写程序代码PrivateSubForm_Load()Label1.Caption="放大"Label1.Width=Form1.Width把标签的高度和宽度设置为窗体相同尺寸Label1.Height=Form1.HeightTimer1.Interval=800EndSubPrivateSubTimer1_Timer()IfLabel1.FontSize0,有两个不等实根若b2-4ac0ThenD>0X1=(-b+Sqr(D)/(2*a)X2=(-b-Sqr(D)/(2*a)Text4.Text=X1Text5.Text=X2ElseD<0P=Sqr(-D)/(2*a)Text4.Text=R&"+"&P&"i"Text5.Text=R&"-"&P&"i"EndIfEndIfEndSub,例4.12,