计算机课件09 程序流程的控制(一)_第1页
计算机课件09 程序流程的控制(一)_第2页
计算机课件09 程序流程的控制(一)_第3页
计算机课件09 程序流程的控制(一)_第4页
计算机课件09 程序流程的控制(一)_第5页
已阅读5页,还剩106页未读, 继续免费阅读

下载本文档

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

文档简介

VisualBasic程序设计

第九讲

第四章程序流程的控制

(一)

2011-7-10

1

关系表达式

布尔表达式

选择结构

循环结构

常用控件的使用

2011-7-102

§4.1关系运算符和关系表达式

4.1.1关系运算符VB提供六种关系运算符

关系物理意义例子说明

运算符

<小于若x=5,y=2求x<y的值值为False

小于等于若x=2,y=4求x〈=y的值值为True

<=表4・1

>大于“3”>8值为False

>=大于等于0>=(1<5)值为True

—等于若乂="wer”求x="wer”值为True

<>2011-7-]0不等于"asd"v>"qwe”值为True3

4.1.2关系表达式

LVB中的关系表达式格式为:

v表达式1>v关系运算符,v表达式2>[v关系运算符>

v表达式3>],...]

2.说明:

(1)其中〈表达式〉可为算术表达式、字符串表达式

和日期型表达式。

(2)关系表达式求值的次序是先求关系运算符两边

表达式的值,再求关系表达式的值。关系表达式的

值为Boolean型,只有两个值True和False。

(3)若关系运算符两边为算术表达式时,则应先计

算算术表达式的值,再进行关系比较。

1◄蜀A►1

(4)若关系运算符两边为字符串表达

式时,按字符串中每个字母的ASCII

码逐一进行比较,若比较的前几个

字母的ASCII码都一样,而当比较到

后面哪一个字母不一样,则哪个字

母的ASCII码数值大,则对应的字符

串就大。

2011-7-105

例如:

“qwert”>="qweRt”的值为True。

常见字符的ASCH值大小排列如下:

“空格”v"O"vTv…v“9”

v“A"v“B"v.・.v“Z”

v“a"v“b”v...v“z”

若关系运算符两边为日期型表达式

时,按日期的先后次序,日期在前的值

小。

2011-7-106

例如:

#08/24/98#>#10/23/96#值为True。

#09/13/00#<#09/12/99#值为False。

3.注意:

因为浮点数在计算机内不能精确表示,

所以在VB中不能用“=”来比较两个单精度

或双精度数的浮点数。

例如:

5.0*4.0=20.0在数学上是成立的,而

在VB中其值可能为False。若需要比较两个

浮点数时,则应写成下列形式:

Abs(5.0*4.0-x)<=le-5若(5.0*4.0-x)的绝

款值小于等于le・5时,则认为x整扇*4小

在VBe不能把数学中的不等区

10〈xW20表示成10<x<=20,若表示

成10<x<=20这种形式,不论x为柯

值关系表达式10<x<=20的值都为

True。

关系表达式10<x<=20相当于

(10<x)<=20由于(10<x)的值

无论为True(-l)或False(O)都小于20,

所以10vxv=20的值总为True。这显

然与数学中的不等式的意义不同。

2011-7-108

§4.2布尔运算符和布尔表达式

对于不能用关系表达式表示的较复杂

的条件可用布尔表达式来表示。如上面提

判的数学不等式lOvxO,在VB中,应表

示成x>10Andx<=20o

4.2.1布尔运算符和布尔表达式

1.布尔运算符。

VB中共有六种布尔运算符,它们是:

And、Or、Not、Xor>Eqv和Imp。

2011-7-109

表4・2布尔运算符

布尔运算符物理意义举例说明

And逻辑与运算2<3And5>3与运算两边的表达式都为真

值为True时结果为真,否则为假。

Or逻辑或运算Or5>0或运算两边的表达式只要有一

值为True个为真,结果就为真(True)

两边都为假时结果才为假。

Not逻辑非运算Notx>=6非运算对表达式的值取反。

Xor逻辑异或运算"a''v"b"Xor5<0异或运算两边表达式的值不

值为True同,则结果为真,相等时结

果为假。

Eqv逻辑等运算3<2Eqv(3-逻辑等运算两边表达式的值

l)<0相同,则结果为真,不相同

值为True时,结果为假。

2011-7-1010

表4・2布尔运算符(续)

布尔运算符物理意义举例说明

Imp逻辑隐含运3<2Imp3>0逻辑隐含运算第一个表达式

算值为True的值为假(False)则第二个

3<2Imp5<2表达式不论值为什么值,结果

值为True都为真(True)

3>0Imp2>0若第一个表达式值为真,则

值为True第二表达式为真时结果为真。

5>3Imp3<2为假时结果为假。

值为False

11

表4-3布尔运算真值表

abaAndbaOrbNotaaXorbaEqvb

TrueTrueTrueTrueFalseFalseTrue

TrueFalseFalseTrueFalseTrueFalse

FalseTrueFalseTrueTrueTrueFalse

FalseFalseFalseFalseTrueFalseTrue

2011-7-1012

422VB运算符的优先级

VB运算符的优先级:

算术运算符运算级最高,关系运算符次

之,布尔运算符优先级别最低。

在算术运算符中,括号最优先,其它优

先次序依次是函数、乘方(人)、乘或除(*

或/)、整除(\)、求余(Mod)、加加减

(+或・)O

在关系运算符中,六个运算符的级别相

同。

在布尔运算符中最常用的三个布尔运算

符中,Not最高,And次之,Or最低。

1◄◄>1

表4.4VB运算符的优先级

运算优先级运算符运算符类型

1A(乘方运算)

2-(求负数)

算术运算符

3*或/(乘或除)

4\(整除)

5Mod(求余数)

6+或-(加或减)

7&(字符串连接运算)字符串运算符

8<=或<或>=或>或=或<>关系运算符

9Not(非运算)布尔运算符

10And(与运算)

用11-7-1014

Or(或运算)

已知:a=3.5,b=5.0,c=2.5,d=1.0则

下列表达式的运算次序为:

a>=0.0anda+c>b+dorNotTrue

②True①6.巳口6.0

③False

②False

__________)

Y

④False

J

----------Y------

⑤False

最同结果为False。15

§4.3选择结构

4.3.1If.…一Then......语句

1.行If语句格式如下:

Ifv条件表达式,Then卜语句组1>][Elsev语句组2>]

2.块If结构格式如下:

Ifv条件表达式〉Then

[语句组1]

[Else

[语句组2]]

EndIf

2011-7-1016

3.说明:

(1)If语句后面的V条件表达式,可以是前面

讲的算术表达式、关系表达式和布尔表达

式,执行该结构时应先计算V条件表达式〉

值,然后根据V条件表达式>值确定程序的

流向。

(2)当v条件表达式〉的值为真,执行Then

后面语句组1中各语句;当v条件表达式,

的值为假,则执行Eke后面的语句组2中各

语句。无论是执行语句组1或执行语句组2

中各语句执行完后,接着应执行型些

2011-7-1017

(3)在VB中数值表达式的值为非0时,则

条件表达式的值为真,数值表达式的值为0

时条件表达式的值为假。

(4)第一种形式的If结构,没有配对的End

If语句;若Then后面的语句组1省略,则必

须有Else语句及其后的语句组2;若Else语

句省略,则语句组1是必选项。第二种If结

构必须有配对的结束语句EndIf,不能省

略。其Then后面的两个可选项也必须选其

中之一。

2011-7-1018

【例4・1】计算分段函数:

Y=l+x(x口0)

LY=l+2*x(x<0)

工程设计步骤如下:

(1)启动VB后选“新建工程”的“标准

EXE”出现一个窗体,在此窗体上添加一

个标签控件一个文本框和二个命令按钮如

下页图4・1左图所不。

(2)设置窗体及各控件的属性如下页图4-1

右图所不。

2011-7-10IDI'Z19

图4-1计算分段函数的界面设计及属性设置

2011-7-1020

(3)编写代码如下:

编写单击“计算函数值”按钮执行的代码。

PrivateSubCommandl_Click()

Rem使用输入对话框提示输入自变量的值

x=Val(InputBox(“自变量的值”,“请输入”))

Ifx>=0Theny=1+xElsey=1+2*x

Textl.Text=y

EndSub

2011-7-1021

编写单击“退出”按钮执行的代码。

PrivateSubCommand2_Click()

UnloadMe

EndSub

(4)运行结果。按工具栏上的执行按

钮出现如图4・1右图所示的界面。单

击“计算函数的值”按钮出现输入对

话框如图4・2左图所示,输入数值后,

出现最后的结果如图4・2右图所示。

2011-7-1022

分科的州的值

函数值Y=

图4・2计算分段函数的运行结果

2011-7-1023

4.3.2嵌套的If语句

如果上面的块If结构中的Then下面的语

句组1或者在Else下面的语句组2又包含另外

的If结构称If语句的嵌套,如:

Ifv条件表达式1>Then

[Ifv条件表达式2>Then、

语句组1

当表达式1

Else的值为真时

语句组2执行的语句

组。

EndIf]

2011-7-10

4.3.2嵌套的If语句

Else

[Ifv条件表达式3>

Then

当表达式1

语句组3的值为假时

Else执行的语句

语句组4

EndIf]

EndIf

2011-7-1025

块IF嵌套的N・S结构化流程图表示

条件表达式1

YN

条件表达式2条件表达式3

YNYN

语句组1语句组2语句组3语句组4

2011-7-1026

【例4・2】简单密码验证程序。

工程设计步骤如下:

(1)在窗体上添加二个个标签控件、一个

文本框控件和二个命

令按钮。

如图4-3所示。

(2)设置窗体与各控

件的属性如表4・5所示。

图4-3

2011-7-1027

表4・5简单密码验证程序中窗休及各控件的属性的设

置

对象属性属性值说明

FormlCaption简单密码验证程标题

序

Label1Caption空用作输出

AutosizeTrue自动调节尺寸以适应内

容

Backcolor白色设背景色为白色

BorderStyle1-FixedSingle有边框,边框为凹形的

BackStyle1-Opaque

-H行二16一28

表4-5简单密码验证程序中窗休及各控件的属性的设置(续)

对象属性属性值说明

Label2Caption请输入密码:

AutosizeFalse不能自动调节尺寸

BorderStyle0-None没有边框

Command1Caption确定标题

Command2Caption退出标题

TextlText空用于用户输入密码

Passwordchar*输入密码时显示的字符

2011-7-1029

判断密码程序N-S结构化流程图

2011-7-1030

在窗体的声

明段中声明

(3)代码编写如下的变量在窗

DimPassAsString体的各个模

块都起作用

DimintDAsInteger

编写单击命令按钮“确定”所执行的代码。

PrivateSubCommandl_Click()

IfTextl.Text=PassThen

intD=3

Labell.Caption="密码正确,_

可以进入系统!”

Else

2011-7-1031

intD=intD-1

MsgBox”密码错误!”

IfintD=0ThenEnd,行IF结构

Labell.Caption="仔细想想,还有“

&_

Str(intD)&"次!”

Textl.SetFocus

使文本框重

EndIf薪获得焦点

EndSub

2011-7-1032

编写单击命令按钮“退出”所执行的代码。

PrivateSubCommand2_Click()

End

EndSub

编写窗体的Form_Load()事件所执行的代码。

PrivateSubForm_Load()

Pass=''Hello''

intD=3

EndSub

2011-7-1033

(4)按F5键运行工程,在文本框中输入密

码后,单击“确定”按钮。若密码输入正确,

则在框中显示“密码正确,可以进入系

统!”。

若密码错误则信息

输出框显示密码错

误,按“确定”按钮

后出现提示允许再

输入两次。

结果如图4-4和

图4-5所示。

图4-4密码正确显示结果

2011-7-1034

图46密码错误信息输出框显示密码错误,

并且提示允许再输入两次

2011-7-1035

【例4・3】求平均值和最小数。

设计工程界面如图4-6左图所示。

界面上有三个文本框,三个标签和四个命令

按钮。

图4-6求最小数和平均数工程界面的设置

2011-7-1036

该工程要求:

(1)在“输入数据:”文本框的下面输

入数据,按回车键或者单击“确定”按

钮,输入的数据就显示在“数据列表:”

下面的文本框中。如果输入的不是数据,

则给出提示"请输入数字J

(2)单击“统计”按钮在“输出结果:”

下面的文本框输出结果,显示共有多少

数、最小值和生均值所示。如果没有输

入,则给出提示“无有效的输入数据!no

(3)“数据列表:”和“输出结果:”

下面的文本框中不允许用户编辑。

2011-7-1037

表4-6求最小数和平均值工程窗体及控件属性设置值

对象属性属性值说明

Textl(名称)Textln程序引用名

Text

Text2(名称)TextOut程序引用名

Text

LockedTrue用户不能编辑此文本框

MultiLineTrue使文本框接收多行文本

ScrollBars2-Vertical有垂直滚动条

2011-7-11038

表4-6求最小数和平均值工程窗体及控件属性设置值(续)

对象属性属性值说明

Text3(名称)TextResult程序引用名

LockedTrue用户不能编辑此文本框

MultiLineTrue

Text

Command1DefaultTrue表示按回车键即为确定

Command3CancelTrue表示按ESC即为退出

2011-7-1039

(3)编写代码如下:

DimnAsInteger,SumAsSingle」

MinAsSingle

编写单击“确定”所执行的命令代码

PrivateSubCommandl_Click()

IfNotIsNumeric(Textln.Text)Then

MsgBox”请输入数字”

Textln.Text=""若文本框中输入

的不是数字则在

Textln.SetFocus消息框中提示:

ExitSub请输入数字

EndIf

2011-7-1040

若文本框是第

一次输入数字

11=11+]/则把它显示在

Ifn=1Then/输出的文本框

中同时保存在

TextOut.Text=Textln.Text变量Min中,否

则输出的文本

Min=Val(Textin)框显示的内容

再加上新输入

Else的内容。

TextOut.Text=TextOut.Text&

Chr(13)&Chr(10)&Textln.Text

2011-7-1041

IfVal(Textln)<MinThen

Min=Val(Textln)

EndIf\

EndIf若文本框

Sum=Sum+Val(Textln)中输入的

数字小于

Textln.Text=变量Min

Textln.SetFocus的值,则把

新输入的

EndSub值送入变

量Min中.

2011-7-1042

编写单击“统计”按钮所执行的代码

PrivateSubCommand2_Click()

DimsiAsString,s2AsString」

s3AsString,hhAsString

<Ifn=0Then

MsgBox”无有效的输入数据!”

ExitSub若n=0则表示没有

〔EndIf输入数字。在消

息框中提示:无

有效的输入数据!

2011-7-1043

si="共计"&Str(n)&"个数”

s2="最小值:“&Str(Min)

s3="平均值:"&Str(Sum/n)

hh=Chr(13)&Chr(lO)

TextResult.Text=si&hh&s2&

hh&s3&hh

EndSub

2011-7-1044

编写单击“清除”按钮所执行的代码

PrivateSubCommand4_Click()

TextResult.Text=

TextOut.Text=

n=0:Sum=0

Textln.SetFocus

EndSub

2011-7-1045

编写Form_Activate发生时事件执行的代码

PrivateSubForm_Activate()

n=0:Sum=0

Textln.SetFocus

EndSub

编写单击“退出”按钮所执行的代码

PrivateSubCommand3_Click()

End

EndSub

2011-7-1046

(4)运行结果。按F5键运行工程,

在出现的画面中“输入数据”下面

的文本框中输入数据,每输入1个数

据接着按“确定”按钮,被输入的

数据就在“数据列表”下面的文本

框中显示出来,输入完数据后单击

“统计”按钮,就在“输出结果”

下面的文本框中显示出结果如图4・7

所示。

2011-7-1047

图4・7求最小数和平均数工程运行结果

2011-7-1048

4.3.3Ilf函数

VB中还提供Hf函数用来实现一些比较简

单的选择结构。

Ilf函数的格式如下:

Ilf(v条件表达式〉,〈语句1>,v语句2>)

说明:

同上面提到的IF语句一样,<条件表达

式,可为算术表达式、关系表达式和布尔表

达式。当条件表达式的值为真时,执行语

句1;为假时,执行语句2。当选择结构中

无论v条件表达式〉的值为真还是假,都只

执行一个语句时可使用IIF函数。

2011-7-1049

语句:

y=IIf(v条件表达式>,V语句1>,<语句2>)

相当于:

Ifv条件表达式>Thenv语句1>Elsev语句2>

例44中计算分段函数完全可以使用IIF函

数编写。其中的If…Else结构可用如下代码

替换即可,其运行结果完全相同。

y=IIf(x>=0,1+x,1+2*x)

2011-7-1050

4.3.4多分支的If选择结构

1.多分支的If结构如下:

Ifv条件1>Then

[语句组1]

[Elselfv条件2>Then

[语句组2]]

•••

[Elselfv条件n>Then

[语句组n]]

[Else

[语句组n+1]]

EndIf

2011-7-1051

2.多分支IF结构的N・S结构化流程图

判断条件

IFElseIf••••••••••••ElseIfElse

条件1成立条件2成立条件n成立

执行语执行语执行语执行语

句组1句组2••••••••••••句组n句组n+1

2011-7-1052

3.说明:

多分支的块If结构由If语句开始,

EndIf语句结束,中间的Elself语句和

Else语句是可选项。

(1)执行时,先判断If语句后面的条件1,

如果条件1值为真,则执行语句组1中的

各语句,执行完后再执行EndIf语句;

(2)若条件1的值为假,则判断条件2,如

果条件2的值为真,则执行语句组2中的

各语句,执行完后再执行EndIf语

2011句;…口53

(3)若条件n・l的值为假,则判断条件n,

如果条件n的值为真,则执行语句组n中

的各语句,执行完后再执行EndIf语句;

否地执行Else后面语句组n+1中的各语句,

执行完后再执行EndIf语句。

(4)在多分支的块If结构中根据需要可以

有多个Elself语句,但最多只能有一个

Eke语句,使用时一定要注意。

2011-7-1054

【例4・4】某商场对顾客购物实行打折销售。规定

如下:

购物款v500元没有折扣

500元v购物款01000元折扣5%

1000元v购物款01500元折扣8%

1500元v购物款02000元折扣10%

2000元v购物款02500元折扣15%

购物款>2500元折扣20%

设计工程,当输入购物款时按“计算”按钮

就可以输出折扣后应交的实际购物款。

2011-7-1055

工程设计步骤如下:

(1)新建“标准EXE”工程,在出现的窗

体上添加两个标签、两个文本框和两个

命令按钮,如函令8所示。

(2)设置窗体和控件的属性如图4・8所示。

2011-7-10图4・8购物打折销售计算应付款工程的界面设置56

(3)编写代码如下:

编写单击“计算”按钮应执行下列代码。

PrivateSubCommandl_Click()

DimxAsSingle,yAsSingle

x=Val(Textl.Text)

Ifx<=500Then

y=x

Elselfx<=1000Then

y=(l-0.05)x

Elselfx<=1500Then

2011-7-1057

y=(l-0.08)x

Elselfx<=2000Then

y=(l-04)*x

Elselfx<=2500Then

y=(l-0.15)*x

Else

y=(l-0.2)*x

EndIf

Text2.Text=''实际交款:n&y&八元"

EndSub

2011-7-1058

编写单击“清除”按钮执行下列代码。

PrivateSubCommand2click()

Text1.Text=

Textl.Text=

EndSub

(4)运行工程。按F5运行工程,出现运行

画面后,在“请输入购物款”的右边的文

本框中输入实际购物款,然后单击“计算”

得到实际应付款数显示在第二个文本框中

如图4・9所示。

2011-7-1059

图4・9计算“实际应付款数”工程运行结果

2011-7-1060

【例4・5】设计一个流动字幕,如图4・10所示。

工程设计步骤如下:

(1)新建“标准EXE”工程,在出现的窗体上

添加一个命令按钮、一个标签和一个计时器

设计界面如图4・10所示。

(2)设置窗体及控件的属性如图4・10所示。

其中计时器的Interval属性设置为10,Enable

设为False。注意此时的命令按钮“开始”上

有一个热键S,是在给命令按钮设置Caption

属性时加上的只要在选中的字母前面加上一

个符号即可。

2011-7-1061

图4・10设计一个流动字幕工程界面及属性设置

2011-7-1062

PrivateSubCommandl_Click()

,IfCommandl.Caption="开始&S''Then

Commandl.Caption="暂停&S”

Timer1.Enabled=True

ElselfCommandl.Caption="暂停&SnThen

)Commandl.Caption="继续&C''

'Timerl.Enabled=False

Else

Commandl.Caption="暂停&S''

ITimerl.Enabled=True

EndIf

EndSub

2011-7-1063

返回/设置对

PrivateSubTimerl_Timer()象的宽度。

IfLabell.Left+Labell.Width>0Then

Labell.MoveLabell.Left-50

Else

Labell.Left=Forml.ScaleWidth

EndIf

EndSub返回/设置对

象内部的水平

度量单位数。

2011-7-1064

(4)运行程序。单击“开始”命令按

钮,则字幕开始从右向左移动,直到

在左边消失,然后接着又从右边开始

向左边移动。此时单击“暂停”按钮,

则字幕停止移动。若想继续移动字幕,

再单击“继续”按钮。请注意该程序

中只有一个命令按钮就可以控制各种

情况。如开始、暂停和继续。

2011-7-1065

图4-11流动字幕工程运行结果

2011-7-1066

【例4-6】求一元二次方程的根。

分析:一元二次方程的根,有以下几种情况:

(1)当a#)时,设delta=b?-4ac。

当判别式delta>0时,方程有两个不同的实根;

当判别式delta=0时,方程有两个相同的实根;

当判别式deltav0时,方程有两个共甄复根。

(2)当a=0,若b和时,则方程有一个根。

当a=0,若b=0时,则方程无意义。

2011-7-1067

工程设计步骤如下:

(1)新建“标准EXE”工程。在出现的窗体

上添加两个框架、五个标签、三个文本框

和两个命令按钮,其中框架1中包括三个文

本框和三个标签,框架2中包括一个标签,

如图4-12所示。

(2)设置窗体及控件的属性如图4・12所示。

2011-7-1068

图4-12求方程的根工程界面设计和属性设置

2011-7-1069

(3)编写代码如下:

编写单击“计算方程根”命令按钮所执行

的代码

PrivateSubCommandl_Click()

DimaAsSingle,bAsSingle,cAsSingle

DimsbAsSingle,xbAsSingle,rcAs

Single

a=Val(Textl.Text)

b=Val(Text2.Text)

c=Val(Text3.Text)

2011-7-1070

Ifa<>0Then

delta=bA2-4*a*c

rc=・b/(2*a)

Ifdelta>0Then

sb=Sqr(delta)/(2a)

Labell.Caption="方程有两个实根"

pl="xl="&Str(rc+sb)

p2="x2="&Str(rc-sb)

Labell.Caption=pl&Chr(13)&p2

2011-7-1071

Elselfdelta=0Then

Label2.Caption="方程有两个相等的实根”

Labell.Caption=nxl=x2n&Str(rc)

Else

xb=Sqr(-delta)/(2*a)

Label2.Caption="方程有两个的虚根"

pl=nxl=M&Str(rc)&&IIf(xb=1,_

Str(xb))&""

p2="x2=''&Str(rc)&"&IIf(xb=1,_

Str(xb))&"i"

Labell.Caption=pl&Chr(13)&p2

EndIf

Else

M◄►►1

cIfb<>0Then

y="b/c

Label2.Caption”方程仅有一个根”

}Labell.Caption"x=''&Str(y)

|Else

Labell.Caption="方程无意义!”

Labell.Caption_,,,,

'EndIf

EndIf

EndSub

2011-7-1073

编写单击“退出”命令按钮所执行的代码

PrivateSubCommand2_Click()

End

EndSub

(4)运行程序。在出现的界面上。根据提

示,首先在三个文本框中输入一元二次

方程的三个系数。然后单击Commandl

命令按钮”计算方程根”就可得到相应

方程的根如图4-13所示。

2011-7-1074

图4-13求一元二次方程根的工程运行结果

4.3.5fflSelectCase语句实现多分支选择结构

2011-7-1075

VB中还提供SelectCase语句用来实现多分支结构

1.SelectCase语句的一般格式如下:

SelectCasev选择表达式〉

[Casev表达式列表1>

[v语句组1>]]

[Casev表达式列表2>

卜语句组2>]]

[Casev表达式列表n>

[v语句组n>]]

[CaseElse

[v语句组n+l>]]

坳瞬elect76

多分支选择结构流程图

SelectCasev选择表达式,

CaseCaseCase

••••••••••••CaseElse

情况1情况2情况n

执行语执行语执行语执行语

句组1句组2••••••••••••句组n句组n+1

EndSelect

2011-7-1077

2.说明:

(1)v选择表达式〉为必选项,用来指出被选

择的表达式或变量名。可以是任何数值和字

符串表达式。

(2)在Case子句中,v表达式列表,为必选参

数,用来测试是否有与选择表达式匹配的表

达式或变量名,它必须是常量而且必须与选

择表达式或变量的类型一致。

(3)在Case子句中,v表达式列表,可以是一

个或多个表达式的值,如表4・7所示。

2011-7-1078

表4-7Case表达式列表的形式

形式示例说明

表达式Case50*b数值和字符串表达式

表达式To表达式Case1To10用来指定1个数值范围。

Case“a'To"m"

Is关系表达式CaseIs>200可以配合比较运算符来

CaseIs<=5,8,20指定1个数值范围。这里

Is是关键字。

2011-7-1079

(4)当使用多个表达式列表时,表达式各

项之间应用逗号“,”隔开。

(5)〈语句组〉是一条或多条语句为可选参

数,当v表达式列表,中有值与〈选择表达

式》相匹配时执行。

(6)CaseElse语句用于指明其他语句序列,

当v选择表达式〉与所有的Case子句中v表

达式列表》中的值都不匹配时,执行Case

Else后面的语句,虽然不是必须的。但若

在SelectCase结构中加上CaseElse语句,

就可用来处理一些不可预见的〈选择表达

式>的值。

2011-7-1080

下列Case子句的写法是正确的:

Dimx

SelectCasex

Case1

Case“a”

Case2,3,8

Case1To5

Case1,6To9

Case1To3,6To8

CaseIs<12,Is>20

WoSelect81

下列Case子句的写法是不正确的,程

序运行时并不发生错误,但是运行结果并

不是所预料的,应避免此类写法。

Dimx

SelectCasex

Casex=l

Casex="a”

Casex>12Andx<=20

EndSelect

2011-7-1082

【例4・7】例4・4题中计算打折销售款的

程序也可用SelectCase结构编写,具体

程序代码如下所示。

编写单击Commandl命令按钮“计算”

执行的代码。

PrivateSubCommandl_Click()

DimxAsSingle,yAsSingle

x=Val(Textl.Text)

2011-7-1083

SelectCasex

X为选择

CaseIs<=500表达式。

y=x

CaseIs<=1000

y=(i-0.05)

CaseIs<=1500

y=(l-0.08)

CaseIs<=2000

y=(i・o])*

2011-7-1084

CaseIs<=2500

y=(l-0.15)*x

CaseElse

y=(l-0.2)*x

EndSelect

Text2.Text=''实际交款:"&y&"元"

EndSub

2011-7-1085

编写单击“清除”按钮应执行下列代

PrivateSubCommand2click()

Textl.Text=

Text2.Text=''''

EndSub

2011-7-1086

【例4・8】某航空公司规定在旅游的旺季5,

7〜10月份,如果订票数超过20张票价优惠

15%,20张以下,优惠5%;在旅游的淡

季1・4月份,11月份,12月份,如果订票

数超过20张,票价优惠30%,20张以下,

优惠20%;其他情况一律优惠10%。

设计程序,根据月份和订票数决定票价优

惠率。

分析:根据题意,画出流程图如下页所示。

2011-7-1087

2011-7-1088

设计工程步骤如下:

(1)在窗体设计器上添加两个文框、四个标

签和一个命令按钮。

(2)设置各控件的属性如下图所示:

2011-7-1089

(3)编写程序代码

编写单击命令按钮1的事件过程代码如下

PrivateSubCommandl_Click()

DimmAsInteger,nAsInteger,rAsInteger

IfTextl.Text<0OrTextl.Text>=13Then

MsgBox”请重新输入月份“

Textl.SetFocus

ExitSub

EndIf

m=Val(Textl.Text)

n=Val(Text2.Text)

2011-7-1090

(SelectCasem

CaseIs<=4,11,12

Ifn<20Thenr=20Elser=30

Case5,7To10

Ifn<20Thenr=5Elser=15

CaseElse

r=10

IEndSelect

Label4.Caption=,,所订机票的优惠率

为:”

&丽(r)&91

为了使用更方便,再增加如下代码

PrivateSubForm_Load()

,Textl中的默认后为当前月份

Text1.Text=Month(Date)

EndSub

编写Textl获得焦点事件发生时的代码

PrivateSubTextl_GotFocus()

Textl.SelStart=0

Textl.SelLength=Len(Textl.Text)

EndSub

2011-7-1092

编写Textl_KeyPress事件发生时的代码

PrivateSubTextl_KeyPress(KeyAsciiAsInteger)

z-IfKeyAscii=13Then

rlfText1.Text>0AndText1.Text<13Then

(yTextl.SetFocus

〔EndIf

EndIf

EndSub

2011-7-1093

编写Text2_KeyPress事件发生时的代码

PrivateSubText2_KeyPress(KeyAsciiAsInteger)

IfKeyAscii=13Then

rIfTextl.Text>0Then

Commandl.SetFocus

(else

Textl.SetFcous

<EndIf

EndIf

EndSub

2011-7-1094

编写Textl获得焦点事件发生时的代码

PrivateSubText2_GotFocus()

Text2.SelStart=0

Textl.SelLength=Len(Text2.Text)

EndSub

(4)按F5键运行结果,分别输入不同的值

和运行结果如下页图4-14所示。

2011-7-1095

2011-7-10图4・1496

SuccesswithMoneyandJoy

附熠人生心语

•成功是一种观念

•致富是一种义务

•快乐是一种权利

•每个人都有能力、有义

务、有权利办到成功

致富快乐

附赠人生心语

成成功不是打败别人

功成功不是超越别人

成功不是名、利、权的获得

致拥有健康的身体

丰足的物质生活

富平衡的心理状态

又才能拥有成功

快

温馨提示

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

评论

0/150

提交评论