《BASIC程序设计.ppt》由会员分享,可在线阅读,更多相关《BASIC程序设计.ppt(97页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、VisualBasicVisualBasic程序设计程序设计程序设计程序设计主讲人:马正元主讲人:马正元山东大学物理微电子学院山东大学物理微电子学院VisualBasicVisualBasic程序设计程序设计程序设计程序设计 第八讲第八讲 第四章第四章 程序流程的控制程序流程的控制 (一(一)1/2/20232本本章章要要点点常用控件的使用关系表达式选择结构循环结构布尔表达式1/2/20233关系关系运算符运算符物理意义物理意义例子例子说明说明小于若x=5,y=2求xy的值值为False=小于等于若x=2,y=4求x大于“3”8值为False=大于等于0=(15)值为True=等于若x=“we
2、r”求x=“wer”值为True不等于“asd”“qwe”值为True4.1关系运算符和关系表达式关系运算符和关系表达式4.1.1关系运算符关系运算符VB提供六种关系运算符提供六种关系运算符表表4-11/2/202344.1.2关系表达式关系表达式1.VB中的关系表达式格式为:中的关系表达式格式为:,2.说明:说明:(1)其其中中可可为为算算术术表表达达式式、字字符符串串表表达达式式和日期型表达式。和日期型表达式。(2)关关系系表表达达式式求求值值的的次次序序是是先先求求关关系系运运算算符符两两边边表表达达式式的的值值,再再求求关关系系表表达达式式的的值值。关关系系表表达达式式的的值为值为Bo
3、olean型,只有两个值型,只有两个值True和和False。(3)若若关关系系运运算算符符两两边边为为算算术术表表达达式式时时,则则应应先先计计算算术表达式的值,再进行关系比较。算算术表达式的值,再进行关系比较。1/2/20235(4)若关系运算符两边为字符串表达)若关系运算符两边为字符串表达式时,按字符串中每个字母的式时,按字符串中每个字母的ASCII码逐一进行比较,若比较的前几个码逐一进行比较,若比较的前几个字母的字母的ASCII码都一样,而当比较到码都一样,而当比较到后面哪一个字母不一样,则哪个字后面哪一个字母不一样,则哪个字母的母的ASCII码数值大,则对应的字符码数值大,则对应的字
4、符串就大。串就大。1/2/20236例如例如:“qwert”=“qweRt”的值为的值为True。常见字符的常见字符的ASCII值大小排列如下:值大小排列如下:“空格空格”“0”“1”“9”“A”“B”“Z”“a”“b”#10/23/96#值为值为True。#09/13/00#09/12/99#值为值为False。3.注意:注意:因因为为浮浮点点数数在在计计算算机机内内不不能能精精确确表表示示,所所以以在在VB中中不不能能用用“=”来来比比较较两两个个单单精精度度或双精度数的浮点数。或双精度数的浮点数。例如:例如:5.0*4.0=20.0在在数数学学上上是是成成立立的的,而而在在VB中中其其值
5、值可可能能为为False。若若需需要要比比较较两两个个浮点数时,则应写成下列形式:浮点数时,则应写成下列形式:Abs(5.0*4.0-x)=1e-5若若(5.0*4.0-x)的的绝绝对对值值小小于于等等于于1e-5时时,则则认认为为x等等于于5.0*4.0。1/2/20238在在VB中中不不能能把把数数学学中中的的不不等等式式10 x20表表示示成成10 x=20,若若表表示示成成10 x=20这这种种形形式式,不不论论x为为何何值值关关系系表表达达式式10 x=20的的值值都都为为True。关关系系表表达达式式10 x=20相相当当于于(10 x)=20由由于于(10 x)的的值值无无论论为
6、为True(-1)或或False(0)都都小小于于20,所所以以10 x=20的的值值总总为为True。这这显显然与数学中的不等式的意义不同。然与数学中的不等式的意义不同。1/2/202394.2布尔运算符和布尔表达式布尔运算符和布尔表达式对于不能用关系表达式表示的较复杂对于不能用关系表达式表示的较复杂的条件可用布尔表达式来表示。如上面提的条件可用布尔表达式来表示。如上面提到的数学不等式到的数学不等式1010Andx=20。4.2.1布尔运算符和布尔表达式布尔运算符和布尔表达式1.布尔运算符。布尔运算符。VB中共有六种布尔运算符,它们是:中共有六种布尔运算符,它们是:And、Or、Not、Xo
7、r、Eqv和和Imp。1/2/202310布尔运算符布尔运算符物理意义物理意义举例举例说明说明And逻辑与运算23值为True与运算两边的表达式都为真时结果为真,否则为假。Or逻辑或运算“a”“b”Or50值为True或运算两边的表达式只要有一个为真,结果就为真(True)两边都为假时结果才为假。Not逻辑非运算Notx=6非运算对表达式的值取反。Xor逻辑异或运算“a”“b”Xor50值为True异或运算两边表达式的值不同,则结果为真,相等时结果为假。Eqv逻辑等运算32Eqv(3-1)0值为True逻辑等运算两边表达式的值相同,则结果为真,不相同时,结果为假。表表4-2布尔运算符布尔运算符
8、1/2/202311布尔运算符布尔运算符物理意义物理意义举例举例说明说明Imp逻辑隐含运算30值为True32Imp50Imp20值为True53Imp32值为False逻辑隐含运算第一个表达式的值为假(False)则第二个表达式不论值为什么值,结果都为真(True)若第一个表达式值为真,则第二表达式为真时结果为真。为假时结果为假。表表4-2布尔运算符(续)布尔运算符(续)1/2/202312abaAndbaOrbNotaaXorbaEqvbTrueTrueTrueTrueFalseFalseTrueTrueFalseFalseTrueFalseTrueFalseFalseTrueFalseT
9、rueTrueTrueFalseFalseFalseFalseFalseTrueFalseTrue表表4-3布尔运算真值表布尔运算真值表1/2/2023134.2.2VB运算符的优先级运算符的优先级VB运算符的优先级:运算符的优先级:算术运算符运算级最高,关系运算符次算术运算符运算级最高,关系运算符次之,布尔运算符优先级别最低。之,布尔运算符优先级别最低。在算术运算符中,括号最优先,其它优在算术运算符中,括号最优先,其它优先次序依次是函数、乘方(先次序依次是函数、乘方()、乘或除()、乘或除(*或或/)、整除()、整除()、求余()、求余(Mod)、)、加或减加或减(+或或-)。)。在关系运算
10、符中,六个运算符的级别相在关系运算符中,六个运算符的级别相同。同。在布尔运算符中最常用的三个布尔运算在布尔运算符中最常用的三个布尔运算符中,符中,Not最高,最高,And次之,次之,Or最低。最低。1/2/202314运算优先级运算优先级运算符运算符运算符类型运算符类型1(乘方运算)算术运算符2-(求负数)3*或/(乘或除)4(整除)5Mod(求余数)6+或-(加或减)7&(字符串连接运算)字符串运算符8=或=或或=或关系运算符9Not(非运算)布尔运算符10And(与运算)11Or(或运算)表表4-4VB运算符的优先级运算符的优先级1/2/202315已知:已知:a=3.5,b=5.0,c=
11、2.5,d=1.0则则下列表达式的运算次序为:下列表达式的运算次序为:a=0.0anda+cb+dorNotTrueTrue6.06.0FalseFalseFalseFalse最后结果为最后结果为False。1/2/2023164.3选择结构选择结构4.3.1IfThen语句语句1.行行If语句格式如下:语句格式如下:IfThenElse2.块块If结构格式如下:结构格式如下:IfThen语句组语句组1Else语句组语句组2EndIf条件表达式条件表达式语句组语句组1语句组语句组2值为假值为假值为真值为真1/2/2023173.说明:说明:(1)If语语句句后后面面的的可可以以是是前前面面讲讲
12、的的算算术术表表达达式式、关关系系表表达达式式和和布布尔尔表表达达式式,执执行行该该结结构构时时应应先先计计算算值值,然然后后根根据据值值确确定定程程序序的的流向。流向。(2)当)当的值为真,执行的值为真,执行Then后面语句组后面语句组1中各语句;当中各语句;当的值为假,则执行的值为假,则执行Else后面的语句组后面的语句组2中各中各语句。无论是执行语句组语句。无论是执行语句组1或执行语句组或执行语句组2中各语句执行完后,接着应执行中各语句执行完后,接着应执行EndIf。1/2/202318(3)在在VB中中数数值值表表达达式式的的值值为为非非0时时,则则条条件件表表达达式式的的值值为为真真
13、,数数值值表表达达式式的的值值为为0时时条件表达式的值为假。条件表达式的值为假。(4)第一种形式的)第一种形式的If结构,没有配对的结构,没有配对的EndIf语句;若语句;若Then后面的语句组后面的语句组1省略省略,则必则必须须有有Else语句及其后的语句组语句及其后的语句组2;若;若Else语语句省略,则语句组句省略,则语句组1是必选项。第二种是必选项。第二种If结结构必须有配对的结束语句构必须有配对的结束语句EndIf,不能省不能省略。其略。其Then后面的两个可选项也必须选其后面的两个可选项也必须选其中之一。中之一。1/2/202319【例【例4-1】计算分段函数:】计算分段函数:工程
14、设计步骤如下:工程设计步骤如下:(1)启动)启动VB后选后选“新建工程新建工程”的的“标准标准EXE”出现一个窗体,在此窗体上添加一出现一个窗体,在此窗体上添加一个标签控件一个文本框和二个命令按钮如个标签控件一个文本框和二个命令按钮如下页图下页图4-1左图所示。左图所示。(2)设置窗体及各控件的属性如下页图)设置窗体及各控件的属性如下页图4-1右图所示。右图所示。Y=1+x(x0)Y=1+2*x(x=0Y=1+XY=1+2*XNY1/2/202320图图4-1计算分段函数的界面设计及属性设置计算分段函数的界面设计及属性设置1/2/202321(3)编写代码如下:)编写代码如下:编写单击编写单击
15、“计算函数值计算函数值”按钮执行的代码。按钮执行的代码。PrivateSubCommand1_Click()Rem使用输入对话框提示输入自变量的值使用输入对话框提示输入自变量的值x=Val(InputBox(“自自变变量量的的值值”,“请请输输入入”)Ifx=0Theny=1+xElsey=1+2*xText1.Text=yEndSub1/2/202322编写单击编写单击“退出退出”按钮执行的代码。按钮执行的代码。PrivateSubCommand2_Click()UnloadMeEndSub(4)运行结果。按工具栏上的执行按运行结果。按工具栏上的执行按钮出现如图钮出现如图4-1右图所示的界面
16、。单右图所示的界面。单击击“计算函数的值计算函数的值”按钮出现输入对按钮出现输入对话框如图话框如图4-2左图所示,输入数值后,左图所示,输入数值后,出现最后的结果如图出现最后的结果如图4-2右图所示。右图所示。1/2/202323图图4-2计算分段函数的运行结果计算分段函数的运行结果1/2/2023244.3.2嵌套的嵌套的If语句语句如如果果上上面面的的块块If结结构构中中的的Then下下面面的的语语句句组组1或或者者在在Else下下面面的的语语句句组组2又又包包含含另另外外的的If结构称结构称If语句的嵌套,如:语句的嵌套,如:IfThenIfThen语句组语句组1Else语句组语句组2E
17、ndIf当表达式当表达式1的值为真时的值为真时执行的语句执行的语句组。组。1/2/2023254.3.2嵌套的嵌套的If语句语句当表达式当表达式1的值为假时的值为假时执行的语句执行的语句组。组。ElseIfThen语句组语句组3Else语句组语句组4EndIfEndIf1/2/202326块块IF嵌套的嵌套的N-S结构化流程图表示结构化流程图表示条件表达式条件表达式1条件表达式条件表达式2条件表达式条件表达式3语句组语句组1语句组语句组2语句组语句组3语句组语句组4YYYNNN1/2/202327【例【例4-2】简单密码验证程序。简单密码验证程序。工程设计步骤如下:工程设计步骤如下:(1)在窗
18、体上添加二个个标签控件、一个)在窗体上添加二个个标签控件、一个文本框控件和二个命文本框控件和二个命令按钮。令按钮。如图如图4-3所示。所示。(2)设置窗体与各控)设置窗体与各控件的属性如表件的属性如表4-5所示。所示。图图4-31/2/202328对象对象属性属性属性值属性值说明说明Form1Caption简单密码验证程序标题Label1Caption空用作输出AutosizeTrue自动调节尺寸以适应内容Backcolor白色设背景色为白色BorderStyle1-FixedSingle有边框,边框为凹形的BackStyle1-Opaque表表4-5简单密码验证程序中窗休及各控件的属性的设置
19、简单密码验证程序中窗休及各控件的属性的设置1/2/202329表表4-5简单密码验证程序中窗休及各控件的属性的设置(续)简单密码验证程序中窗休及各控件的属性的设置(续)对象对象属性属性属性值属性值说明说明Label2Caption请输入密码:AutosizeFalse不能自动调节尺寸BorderStyle0-None没有边框Command1Caption确定标题Command2Caption退出标题Text1Text空用于用户输入密码Passwordchar*输入密码时显示的字符1/2/202330判断密码程序判断密码程序N-S结构化流程图结构化流程图判断输入密码是否正确判断输入密码是否正确正
20、确正确不正确不正确在在标签框中显标签框中显示密码正确,示密码正确,可以进入系统!可以进入系统!在在消息框中显示密码错误!消息框中显示密码错误!Intd=Intd-1IntdIntd=0=0YN退出程序退出程序提示还有提示还有几次输入几次输入机会。机会。1/2/202331(3)代码编写如下)代码编写如下DimPassAsStringDimintDAsInteger编写单击命令按钮编写单击命令按钮“确定确定”所执行的代码。所执行的代码。PrivateSubCommand1_Click()IfText1.Text=PassThenintD=3Label1.Caption=“密码正确,密码正确,_可
21、以进入系统!可以进入系统!Else在在窗体的声窗体的声明段中声明明段中声明的变量在窗的变量在窗体的各个模体的各个模块都起作用块都起作用1/2/202332intD=intD-1MsgBox密码错误!密码错误!IfintD=0ThenEnd行行IF结构结构Label1.Caption=“仔细想想,还有仔细想想,还有”&_Str(intD)&次次!Text1.SetFocusEndIfEndSub使文本框重新获得焦点1/2/202333编写单击命令按钮编写单击命令按钮“退出退出”所执行的代码。所执行的代码。PrivateSubCommand2_Click()EndEndSub编写窗体的编写窗体的F
22、orm_Load()事件所执行的代码事件所执行的代码。PrivateSubForm_Load()Pass=HellointD=3EndSub1/2/202334图图4-4密码正确显示结果密码正确显示结果(4)按)按F5键运行工程,在文本框中输入密键运行工程,在文本框中输入密码后,单击码后,单击“确定确定”按钮。若密码输入正确,按钮。若密码输入正确,则在框中显示则在框中显示“密码正确,可以进入系统!密码正确,可以进入系统!”。若密码错误则信息若密码错误则信息输出框显示密码错输出框显示密码错误,按误,按“确定确定”按钮按钮后出现提示允许再后出现提示允许再输入两次。输入两次。结果如图结果如图4-4和
23、和图图4-5所示。所示。1/2/202335图图4-5密码错误信息输出框显示密码错误,密码错误信息输出框显示密码错误,并且提示允许再输入两次并且提示允许再输入两次1/2/202336【例【例4-3】求平均值和最小数。】求平均值和最小数。设计工程界面如图设计工程界面如图4-6左图所示。左图所示。界面上有三个文本框,三个标签和四个命令界面上有三个文本框,三个标签和四个命令按钮。按钮。图图4-6求最小数和求最小数和平均数工程界面的设置平均数工程界面的设置1/2/202337该工程要求:该工程要求:(1)在在“输输入入数数据据:”文文本本框框的的下下面面输输入入数数据据,按按回回车车键键或或者者单单击
24、击“确确定定”按按钮钮,输输入入的的数数据据就就显显示示在在“数数据据列列表表:”下下面面的的文文本本框框中中。如如果果输输入入的的不不是是数数据,则给出提示据,则给出提示请输入数字请输入数字。(2)单击)单击“统计统计”按钮在按钮在“输出结果:输出结果:”下面的文本框输出结果,显示共有多下面的文本框输出结果,显示共有多少数、最小值和平均值所示。如果没有少数、最小值和平均值所示。如果没有输入,则给出提示输入,则给出提示无有效的输入数据!无有效的输入数据!。(3)“数据列表:数据列表:”和和“输出结果:输出结果:”下面的文本框中不允许用户编辑。下面的文本框中不允许用户编辑。1/2/202338对
25、象对象属性属性属性值属性值说明说明Text1(名称)TextIn程序引用名TextText2(名称)TextOut程序引用名TextLockedTrue用户不能编辑此文本框MultiLineTrue使文本框接收多行文本ScrollBars2-Vertical有垂直滚动条表表4-6求最小数和平均值工程窗体及控件属性设置值求最小数和平均值工程窗体及控件属性设置值1/2/202339对象对象属性属性属性值属性值说明说明Text3(名称)TextResult程序引用名LockedTrue用户不能编辑此文本框MultiLineTrueTextCommand1DefaultTrue表示按回车键即为确定Co
26、mmand3CancelTrue表示按ESC即为退出表表4-6求最小数和平均值工程窗体及控件属性设置值(续)求最小数和平均值工程窗体及控件属性设置值(续)1/2/202340(3)编写代码如下:)编写代码如下:DimnAsInteger,SumAsSingle,_MinAsSingle编写单击编写单击“确定确定”所执行的命令代码所执行的命令代码PrivateSubCommand1_Click()IfNotIsNumeric(TextIn.Text)ThenMsgBox请输入数字请输入数字TextIn.Text=TextIn.SetFocusExitSubEndIf若文本框中输入的不是数字则在消
27、息框中提示:请输入数字请输入数字1/2/202341n=n+1Ifn=1ThenTextOut.Text=TextIn.TextMin=Val(TextIn)ElseTextOut.Text=TextOut.Text&_Chr(13)&Chr(10)&TextIn.Text若文本框是第一次输入数字则把它显示在输出的文本框中同时保存在变量Min中,否则输出的文本框显示的内容再加上新输入的内容。1/2/202342IfVal(TextIn)MinThenMin=Val(TextIn)EndIfEndIfSum=Sum+Val(TextIn)TextIn.Text=TextIn.SetFocusEn
28、dSub若文本框中输入的数字小于变量Min的值,则把新输入的值送入变量Min中.1/2/202343编写单击编写单击“统计统计”按钮所执行的代码按钮所执行的代码PrivateSubCommand2_Click()Dims1AsString,s2AsString,_s3AsString,hhAsStringIfn=0ThenMsgBox无有效的输入数据!无有效的输入数据!ExitSubEndIf若n=0则表示没有输入数字。在消息框中提示:无无有效的输入数据!有效的输入数据!1/2/202344s1=共计共计&Str(n)&个数个数s2=最小值最小值:&Str(Min)s3=平均值平均值:&Str
29、(Sum/n)hh=Chr(13)&Chr(10)TextResult.Text=s1&hh&s2&_hh&s3&hhEndSub1/2/202345编写单击编写单击“清除清除”按钮所执行的代码按钮所执行的代码PrivateSubCommand4_Click()TextResult.Text=TextOut.Text=n=0:Sum=0TextIn.SetFocusEndSub1/2/202346编写编写Form_Activate发生时事件执行的代码发生时事件执行的代码PrivateSubForm_Activate()n=0:Sum=0TextIn.SetFocusEndSub编写单击编写单击
30、“退出退出”按钮所执行的代码按钮所执行的代码PrivateSubCommand3_Click()EndEndSub1/2/202347(4)运行结果。按)运行结果。按F5键运行工程,键运行工程,在出现的画面中在出现的画面中“输入数据输入数据”下面下面的文本框中输入数据,每输入的文本框中输入数据,每输入1个数个数据接着按据接着按“确定确定”按钮,被输入的按钮,被输入的数据就在数据就在“数据列表数据列表”下面的文本下面的文本框中显示出来,输入完数据后单击框中显示出来,输入完数据后单击“统计统计”按钮,就在按钮,就在“输出结果输出结果”下面的文本框中显示出结果如图下面的文本框中显示出结果如图4-7所
31、示。所示。1/2/202348图图4-7求最小数和平均数工程运行结果求最小数和平均数工程运行结果1/2/2023494.3.3IIf函数函数VB中中还还提提供供IIf函函数数用用来来实实现现一一些些比比较较简简单的选择结构。单的选择结构。IIf函数的格式如下:函数的格式如下:IIf(,)说明:说明:同同上上面面提提到到的的IF语语句句一一样样,可可为为算算术术表表达达式式、关关系系表表达达式式和和布布尔尔表表达达式式。当当条条件件表表达达式式的的值值为为真真时时,执执行行语语句句1;为为假假时时,执执行行语语句句2。当当选选择择结结构构中中无无论论的的值值为为真真还还是是假假,都都只只执行一个
32、语句时可使用执行一个语句时可使用IIF函数。函数。1/2/202350语句:语句:y=IIf(,)相当于:相当于:IfThenElse例例4-1中中计计算算分分段段函函数数完完全全可可以以使使用用IIF函函数数编编写写。其其中中的的IfElse结结构构可可用用如如下下代代码码替替换即可,其运行结果完全相同。换即可,其运行结果完全相同。y=IIf(x=0,1+x,1+2*x)1/2/2023514.3.4多分支的多分支的If选择结构选择结构1.多分支的多分支的If结构如下:结构如下:IfThen语句组语句组1ElseIfThen语句组语句组2ElseIfThen语句组语句组nElse语句组语句组
33、n+1EndIf1/2/2023522.多分支多分支IF结构的结构的N-S结构化流程图结构化流程图Else(其它其它)判断条件判断条件IF条件条件1成立成立ElseIf条件条件2成立成立ElseIf条件条件n成立成立执行语执行语句组句组1执行语执行语句组句组2执行语执行语句组句组n执行语执行语句组句组n+1Else1/2/2023533.说明:说明:多多分分支支的的块块If结结构构由由If语语句句开开始始,End If语语句句结结束束,中中间间的的ElseIf语语句句和和Else语句是可选项。语句是可选项。(1)执执行行时时,先先判判断断If语语句句后后面面的的条条件件1,如如果果条条件件1值
34、值为为真真,则则执执行行语语句句组组1中中的各语句的各语句,执行完后再执行,执行完后再执行EndIf语句;语句;(2)若条件)若条件1的值为假,则判断条件的值为假,则判断条件2,如,如果条件果条件2的值为真,则执行语句组的值为真,则执行语句组2中的中的各语句各语句,执行完后再执行,执行完后再执行EndIf语句;语句;1/2/202354(3)若若条条件件n-1的的值值为为假假,则则判判断断条条件件n,如如果果条条件件n的的值值为为真真,则则执执行行语语句句组组n中中的的各各语语句句,执执行行完完后后再再执执行行EndIf语语句句;否否则则执执行行Else后后面面语语句句组组n+1中中的的各各语
35、语句句,执行完后再执行执行完后再执行EndIf语句。语句。(4)在多分支的块)在多分支的块If结构中根据需要可以结构中根据需要可以有多个有多个ElseIf语句,但最多只能有一个语句,但最多只能有一个Else语句,使用时一定要注意。语句,使用时一定要注意。1/2/202355【例例4-4】某某商商场场对对顾顾客客购购物物实实行行打打折折销销售售。规规定定如下:如下:购物款购物款500元元没有折扣没有折扣500元元购物款购物款1000元元折扣折扣5%1000元元购物款购物款1500元元折扣折扣8%1500元元购物款购物款2000元元折扣折扣10%2000元元2500元元折扣折扣20%设计工程,当输
36、入购物款时按设计工程,当输入购物款时按“计算计算”按钮按钮就可以输出折扣后应交的实际购物款。就可以输出折扣后应交的实际购物款。1/2/202356图图4-8购物打折销售计算应付款工程的界面设置购物打折销售计算应付款工程的界面设置工程设计步骤如下:工程设计步骤如下:(1)新建)新建“标准标准EXE”工程,在出现的窗工程,在出现的窗体上添加两个标签、两个文本框和两个体上添加两个标签、两个文本框和两个命令按钮,如图命令按钮,如图4-8所示。所示。(2)设置窗体和控件的属性如图)设置窗体和控件的属性如图4-8所示。所示。1/2/202357(3)编写代码如下:)编写代码如下:编写单击编写单击“计算计算
37、”按钮应执行下列代码。按钮应执行下列代码。PrivateSubCommand1_Click()DimxAsSingle,yAsSinglex=Val(Text1.Text)Ifx=500Theny=xElseIfx=1000Theny=(1-0.05)*xElseIfx=1500Then1/2/202358y=(1-0.08)*xElseIfx=2000Theny=(1-0.1)*xElseIfx0Then_Label1.MoveLabel1.Left-50ElseLabel1.Left=Form1.ScaleWidthEndIfEndSub返回返回/设置对设置对象内部的水平象内部的水平度量单
38、位数。度量单位数。返回返回/设置对设置对象的宽度。象的宽度。1/2/202365(4)运运行行程程序序。单单击击“开开始始”命命令令按按钮钮,则则字字幕幕开开始始从从右右向向左左移移动动,直直到到在在左左边边消消失失,然然后后接接着着又又从从右右边边开开始始向向左左边边移移动动。此此时时单单击击“暂暂停停”按按钮钮,则则字字幕幕停停止止移移动动。若若想想继继续续移移动动字字幕幕,再再单单击击“继继续续”按按钮钮。请请注注意意该该程程序序中中只只有有一一个个命命令令按按钮钮就就可可以以控控制制各各种种情况。如开始、暂停和继续。情况。如开始、暂停和继续。1/2/202366图图4-11流动字幕工程
39、运行结果流动字幕工程运行结果1/2/202367【例【例4-6】求一元二次方程的根。】求一元二次方程的根。分析:一元二次方程的根,有以下几种情况:分析:一元二次方程的根,有以下几种情况:(1)当)当a0时,设时,设delta=b2-4ac。当判别式当判别式delta0时时,方程有两个不同的实根;方程有两个不同的实根;当判别式当判别式delta=0时时,方程有两个相同的实根;方程有两个相同的实根;当判别式当判别式delta0时时,方程有两个共轭复根方程有两个共轭复根。(2)当)当a=0,若若b0时,则方程有一个根。时,则方程有一个根。当当a=0,若若b=0时,则方程无意义。时,则方程无意义。1/
40、2/202368工程设计步骤如下:工程设计步骤如下:(1)新新建建“标标准准EXE”工工程程。在在出出现现的的窗窗体体上上添添加加两两个个框框架架、五五个个标标签签、三三个个文文本本框框和和两两个个命命令令按按钮钮,其其中中框框架架1中中包包括括三三个个文文本本框框和和三三个个标标签签,框框架架2中中包包括括一一个个标标签签,如图如图4-12所示。所示。(2)设置窗体及控件的属性如图)设置窗体及控件的属性如图4-12所示。所示。1/2/202369图图4-12求方程的根工程界面设计和属性设置求方程的根工程界面设计和属性设置1/2/202370(3)编写代码如下:)编写代码如下:编编写写单单击击
41、“计计算算方方程程根根”命命令令按按钮钮所所执执行行的代码的代码PrivateSubCommand1_Click()DimaAsSingle,bAsSingle,cAsSingleDim sb As Single,xb As Single,rc AsSinglea=Val(Text1.Text)b=Val(Text2.Text)c=Val(Text3.Text)1/2/202371Ifa0Thendelta=b2-4*a*crc=-b/(2*a)Ifdelta0Thensb=Sqr(delta)/(2*a)Label2.Caption=方程有两个实根方程有两个实根p1=x1=&Str(rc+s
42、b)p2=x2=&Str(rc-sb)Label1.Caption=p1&Chr(13)&p21/2/202372ElseIfdelta=0ThenLabel2.Caption=方程有两个相等的实根方程有两个相等的实根Label1.Caption=x1=x2&Str(rc)Elsexb=Sqr(-delta)/(2*a)Label2.Caption=方程有两个的虚根方程有两个的虚根p1=x1=&Str(rc)&+&IIf(xb=1,_,Str(xb)&ip2=x2=&Str(rc)&-&IIf(xb=1,_,Str(xb)&iLabel1.Caption=p1&Chr(13)&p2EndIfE
43、lse1/2/202373Ifb0Theny=-b/cLabel2.Caption=方程仅有一个根方程仅有一个根Label1.Caption=x=&Str(y)ElseLabel2.Caption=方程无意义方程无意义!Label1.Caption=EndIfEndIfEndSub1/2/202374编写单击编写单击“退出退出”命令按钮所执行的代码命令按钮所执行的代码PrivateSubCommand2_Click()EndEndSub(4)运行程序。在出现的界面上。根据提运行程序。在出现的界面上。根据提示,首先在三个文本框中输入一元二次方示,首先在三个文本框中输入一元二次方程的三个系数。然后
44、单击程的三个系数。然后单击Command1命令命令按钮按钮“计算方程根计算方程根”就可得到相应方程的就可得到相应方程的根如图根如图4-13所示。所示。1/2/202375图图4-13求一元二次方程根的工程运行结果求一元二次方程根的工程运行结果4.3.5用用SelectCase语句实现多分支选择结构语句实现多分支选择结构1/2/202376VB中还提供中还提供SelectCase语句用来实现多分支结构语句用来实现多分支结构1.SelectCase语句的一般格式如下:语句的一般格式如下:SelectCaseCaseCaseCaseCaseElseEndSelect1/2/202377SelectC
45、aseCase情况情况1Case情况情况2Case情况情况n执行语执行语句组句组1执行语执行语句组句组2执行语执行语句组句组n执行语执行语句组句组n+1CaseElseEndSelect多分支选择结构流程图多分支选择结构流程图1/2/2023782.说明:说明:(1)为为必必选选项项,用用来来指指出出被被选选择择的的表表达达式式或或变变量量名名。可可以以是是任任何何数数值值和和字字符串表达式。符串表达式。(2)在在Case子子句句中中,为为必必选选参参数数,用用来来测测试试是是否否有有与与选选择择表表达达式式匹匹配配的的表表达达式式或或变变量量名名,它它必必须须是是常常量量而而且且必必须须与与
46、选选择表达式或变量的类型一致。择表达式或变量的类型一致。(3)在)在Case子句中,子句中,可以是一可以是一个或多个表达式的值,如表个或多个表达式的值,如表4-7所示。所示。1/2/202379形式形式示例示例说明说明表达式表达式Case50*b数值和字符串表达式数值和字符串表达式表达式表达式To表达式表达式Case1To10Case“a”To“m”用来指定用来指定1个数值范围。个数值范围。Is关系表达式关系表达式CaseIs200CaseIs=5,8,20可可以以配配合合比比较较运运算算符符来来指指定定1个个数数值值范范围围。这这里里Is是关键字。是关键字。表表4-7Case表达式列表的形式
47、表达式列表的形式1/2/202380(4)当当使使用用多多个个表表达达式式列列表表时时,表表达达式式各各项之间应用逗号项之间应用逗号“,”隔开。隔开。(5)是是一一条条或或多多条条语语句句为为可可选选参参数数,当当中中有有值值与与相匹配时执行。相匹配时执行。(6)CaseElse语句用于指明其他语句序列,语句用于指明其他语句序列,当当与所有的与所有的Case子句中子句中中的值都不匹配时,执行中的值都不匹配时,执行CaseElse后面的语句,虽然不是必须的。但若后面的语句,虽然不是必须的。但若在在SelectCase结构中加上结构中加上CaseElse语句,语句,就可用来处理一些不可预见的就可用
48、来处理一些不可预见的的值。的值。1/2/202381下列下列Case子句的写法是正确的:子句的写法是正确的:DimxSelectCasexCase1Case“a”Case2,3,8Case1To5Case1,6To9Case1To3,6To8CaseIs20EndSelect1/2/202382下列下列Case子句的写法是不正确的,程子句的写法是不正确的,程序运行时并不发生错误,但是运行结果并序运行时并不发生错误,但是运行结果并不是所预料的,应避免此类写法不是所预料的,应避免此类写法。DimxSelectCasexCasex=1Casex=“a”Casex12Andx=20EndSelect1
49、/2/202383【例【例4-7】例】例4-4题中计算打折销售款的题中计算打折销售款的程序也可用程序也可用SelectCase结构编写,具体结构编写,具体程序代码如下所示。程序代码如下所示。编写单击编写单击Command1命令按钮命令按钮“计算计算”执行的代码。执行的代码。PrivateSubCommand1_Click()DimxAsSingle,yAsSinglex=Val(Text1.Text)1/2/202384SelectCasexCaseIs=500y=xCaseIs=1000y=(1-0.05)*xCaseIs=1500y=(1-0.08)*xCaseIs=2000y=(1-0.
50、1)*xX为选择表达式。1/2/202385CaseIs=2500y=(1-0.15)*xCaseElsey=(1-0.2)*xEndSelectText2.Text=实际交款实际交款:&y&元元EndSub1/2/202386编编写写单单击击“清清除除”按按钮钮应应执执行行下下列列代代码。码。PrivateSubCommand2_Click()Text1.Text=Text2.Text=EndSub1/2/202387【例【例4-8】某航空公司规定在旅游的旺季】某航空公司规定在旅游的旺季5,710月份,如果订票数超过月份,如果订票数超过20张票价优惠张票价优惠15%,20张以下,优惠张以下,