第3章VB程序语句与控制结构.docx

上传人:b****6 文档编号:4704511 上传时间:2022-12-07 格式:DOCX 页数:37 大小:136.38KB
下载 相关 举报
第3章VB程序语句与控制结构.docx_第1页
第1页 / 共37页
第3章VB程序语句与控制结构.docx_第2页
第2页 / 共37页
第3章VB程序语句与控制结构.docx_第3页
第3页 / 共37页
第3章VB程序语句与控制结构.docx_第4页
第4页 / 共37页
第3章VB程序语句与控制结构.docx_第5页
第5页 / 共37页
点击查看更多>>
下载资源
资源描述

第3章VB程序语句与控制结构.docx

《第3章VB程序语句与控制结构.docx》由会员分享,可在线阅读,更多相关《第3章VB程序语句与控制结构.docx(37页珍藏版)》请在冰豆网上搜索。

第3章VB程序语句与控制结构.docx

第3章VB程序语句与控制结构

第3章第3章                       VB程序语句与控制结构

 

一个VB应用程序主要由用户界面和响应各事件的程序代码组成,程序代码是应用程序的核心。

本章首先介绍程序代码设计的基础知识,再通过一些典型的例子,使大家逐步掌握编程的思路和技巧。

VB虽然是面向对象的程序设计语言,但在代码设计中仍然支持结构化程序设计的三种基本结构,即顺序结构、选择结构和循环结构。

本章将主要介绍数据的输入与输出、三种基本程序控制结构及语句。

3.1数据的输入与输出

VB的输入/输出有多种形式,常用的输入方式有:

使用键盘输入数据的函数InputBox以及文本框等控件。

常用的输出方式有:

Print方法、MsgBox函数和过程以及图形框、文本框、标签等控件。

有关控件的使用在其第六章中介绍,本节主要介绍InputBox函数、MsgBox函数与过程以及Print方法的使用。

3.1.1InputBox函数

格式:

InputBox(提示[,标题][,默认][,x坐标位置][,y坐标位置])

功能:

InputBox函数产生一个对话框,作为输入数据的界面,等待用户输入内容,当用户单击“确定”按钮或按回车键,函数返回输入的值,其值的类型为字符串(String)。

说明:

(1)“提示”:

必选项。

字符串表达式,在对话框中作为提示信息显示,可为汉字。

若要多行显示,必须在每行行末加回车符Chr(13)和换行符Chr(10)符或VB符号常数vbCrLf。

(2)“标题”:

可选项。

字符串表达式,在对话框的标题区显示;若省略,默认为应用程序名。

(3)“默认”:

可选项。

字符串表达式,当输入对话框中无输入时,则该默认值作为输入的内容。

(4)“x坐标位置、y坐标位置”:

可选项。

整型表达式,确定对话框左上角相对于屏幕左上角的x、y坐标,单位为twip。

该项省略时,对话框出现在屏幕水平、垂直中间的位置。

【注意】

各项参数次序必须一一对应,除了“提示”一项不能省略外,其余各项均可省略,处于中间的默认部分要用逗号占位符跳过。

例如,运行如下代码段,结果显示如图3-1所示,当单击“确定”按钮后,变量strName的值为“李林”。

DimstrNameasString*20

Title="InputBox函数示例"

Msg1="请输入你的姓名"

StrName=InputBox(Msg1,Title,,200,200)

图3-1

3.1.2Msgbox函数与过程

MsgBox用于输出数据,它会在屏幕上显示一个对话框。

在对话框中显示消息,等待用户单击按钮,并返回所选按钮的整数值。

有函数和过程两种形式。

MsgBox函数格式:

变量=MsgBox(提示[,按钮][,标题])

MsgBox过程格式:

MsgBox提示[,按钮][,标题]

说明:

(1)“提示”和“标题”的意义与InputBox函数中对应的参数相同。

(2)“按钮”:

可选项。

数值表达式,决定信息框按钮的数目和类型及出现在信息框上的图标类型。

该数值表达式的值由4部分数值求和得到,它也可以用符号常量表示。

其设置见表3.1。

(3)MsgBox函数返回所选按钮整数值的意义见表3.2

(4)MsgBox过程与MsgBox函数的区别是:

MsgBox过程没有返回值,也不用圆括号“()”,所以常用于较简单的信息显示。

其他用法与MsgBox函数相同。

表3.1“按钮”设置及意义

类别

符号常量

按钮值

意义

按钮数目

vbOkOnly

vbOkCancel

vbAbortRetryIgnore

vbYesNoCancel

vbYesNo

vbRetryCancel

0

1

2

3

4

5

只显示“确定”按钮。

显示“确定”和“取消”按钮。

显示“终止”、“重试”和“忽略”按钮。

显示“是”、“否”和“取消”按钮。

显示“是”和“否”按钮。

显示“重试”和“取消”按钮。

图标类型

vbCritical

vbQuestion

vbExclamation

vbInformation

16

32

48

64

显示警示图标,红色STOP标志。

显示询问图标?

显示警告消息图标!

显示信息图标i。

默认按钮

vbDefaultButton1

vbDefaultButton2

vbDefaultButton3

0

256

512

第一个按钮为默认按钮。

第二个按钮为默认按钮。

第三个按钮为默认按钮。

模式

vbApplicationModal

vbSystemModal

0

4096

应用程序模式

系统模式

表3.2MsgBox函数的返回值

返回值

符号常量

被单击的按钮

1

vbOk

确定

2

vbCancel

取消

3

vbAbort

终止

4

vbRetry

重试

5

vbIgnore

忽略

6

vbYes

7

vbNo

例如,在代码中加入以下语句,程序在运行中会打开图3-2所示的消息框。

Msg=”程序运行出错,继续吗?

Title=”Msgbox演示程序”

Resp=MsgBox(Msg,308,Title)

IfResp=6then

Print“你选择了是!

Else

Print“你选择了否!

EndIf

图3-2

程序中,MsgBox函数的参数308也可以写成符号常量的形式。

因308=4+48+256,因而可将数字308写成vbYesNo+vbCritical+vbDefaultButton2的常量表达式的形式;同样,If语句也可写成IfResp=vbYesthen的形式。

【例3.1】输入圆的半径,求圆的面积。

(1)进入代码窗口,编辑程序代码如下:

PrivateSubForm_Click()

ConstPi=3.14’定义常量Pi

DimrAsDouble,aasDouble

r=InputBox("请输入圆的半径")

a=Pi*r*r

MsgBox("圆的面积为:

"&a)

EndSub

(2)运行程序,输入半径为5,输入、输出对话框如图3-3所示。

图3-3

3.1.3Print方法

Print方法常用于在屏幕上输出信息。

在本书第一章1.4.2节中已有介绍。

例如,执行如下代码:

a=10:

b=15

c$=“欢迎使用VisualBasic”

Print“数值表达式a+b的值为:

”;a+b

Print

Print“字符串变量c$的值为:

”;c$

运行结果如下:

“数值表达式a+b的值为:

25

 

“字符串变量c$的值为:

欢迎使用VisualBasic

【例3.2】用Print方法输出图形。

程序运行结果如图3-4所示。

PrivateSubForm_Click()

Fori=1to5

PrintTab(i);String(6-i,”*”)

NextI

EndSub

图3-4

【注意】

当Tab(i)中i的值小于当前位置的值时,重新定位在下一行的i列。

例如,执行以下语句:

Printtab(5);“abcdefg”;tab(8);“1234567”

运行结果如下:

abcdefg

1234567

3.1.4打印机输出

VisualBasic除了可以在屏幕上输出以外,还可以在打印机上输出所需要的信息。

1.用PrintForm方法打印

格式:

[窗体名.]PrintForm

功能:

将指定窗体的信息传送到打印机进行打印。

说明:

(1)缺省窗体名,则打印当前窗体的信息。

(2)PrintForm方法不仅可以打印窗体上的文本,而且还可以打印出窗体上的任何可见的控件及图形。

若窗体中包含图形,需要将输出窗体的AutoReDraw属性设置为True。

2.用Printer对象打印

格式:

Printer.Print[表达式列表]

功能:

把“表达式列表”中的内容输出到打印机上。

例如,下列语句行将字符串“欢迎使用VisualBasic”输出到Windows系统的缺省打印机上。

Printer.Print"欢迎使用VisualBasic"

Printer对象包含多种属性和方法用以控制打印的各种特性。

Printer对象的属性不能在属性窗口中设置,只能在运行时通过程序代码来设置。

下面介绍一些Printer对象常用的属性和方法。

(1)Page属性

Page属性用来保持和返回当前的页号,格式为:

Printer.Page

每当打印完一页后,Page属性值自动增1。

通常用Page属性打印页号,例如:

Printer.Print"第";Printer.Page;"页"

(2)NewPage方法

NewPage方法用以结束Printer对象中的当前页并前进到下一页,也就是实现换页操作,格式为:

Printer.NewPage

执行NewPage方法可以强制使打印机前进到下一个打印页,并将打印位置重置到新页的左上角。

调用NewPage方法时,它将Printer对象的Page属性加1。

(3)EndDoc方法

EndDoc方法用来结束文件打印,格式为:

Printer.EndDoc

执行EndDoc方法表明打印操作的结束,并向打印机管理程序发送最后一页的退出信号,并把Page属性重置为1。

(4)KillDoc方法

KillDoc方法用于立即终止当前打印作业,格式为:

Printer.KillDoc

执行KillDoc方法将中断Print函数的执行,且清除打印缓冲区中的所有信息。

【例3.3】编写程序,实现连续打印“打印测试页1”和“打印测试页2”两张测试页。

PrivateSubForm_Click()

Printer.Print"打印测试页";Printer.Page

Printer.NewPage

Printer.Print"打印测试页";Printer.Page

Printer.EndDoc

EndSub

单击窗体后,打印机打印两页,分别为“打印测试页1”和“打印测试页2”。

 

3.2顺序结构

顺序结构就是程序的各语句按出现的先后次序执行。

在VisualBasic中顺序结构的语句主要有赋值语句、输入语句、输出语句等。

3.2.1赋值语句

赋值语句是程序设计中最基本的语句,也是为变量和事件的属性赋值的最主要的方法。

赋值语句的一般形式为:

变量名=表达式

对象名.属性=表达式

赋值语句的作用:

先计算右边表达式的值,然后赋给左边的变量或控件属性。

例如:

sum=100’把数值常量100赋给变量sum

aver=sum/10’将表达式sum/10的值赋给变量aver

Text1.Text=”Hello!

”’为文本框显示字符串

Text1.Text=””’清除文本框的内容

【注意】

(1)表达式可以是任何类型的表达式,一般应与变量名的类型一致,当表达式的类型与变量的类型不一致时,作如下处理:

①若左边是字符型变量,将右边非字符型转换成左边的类型。

例如:

C$=123’数值常量123转换为字符型数据”123”赋给c

②若左边是数值型变量,右边表达式为数字字符串时,自动转换成数值类型赋给左边变量。

若右边表达式有非数字字符或空串时,则出现类型不匹配错误。

例如:

m%=”100”‘数字串”100”转换为数值100赋给变量m

m%=”a100”‘出现类型不匹配的错误

m%=””‘出现类型不匹配的错误

③若左边是逻辑型变量,右边是数值型表达式,非0转换为True,0转换为False;反之,将逻辑型表达式的值赋给数值型变量时,True转换为-1,False转换为0。

例如:

DimfasBoolean

x%=10:

y%=5

f=x+y‘f中结果为True

f=x-10‘f中结果为False

n%=x>y‘表达式x>y值为True,n中结果为-1

n%=x<=y‘表达式x<=y值为False,n中结果为0

④不管表达式的值是什么类型,都可以直接赋给一个变体类型的变量。

(2)赋值号与关系运算符等于都用“=”表示,但系统不会产生混淆,会根据所处的位置自动判断是何种意义的符号。

也就是在条件表达式中出现的是等号,否则是赋值号。

例如:

赋值语句a=b与b=a是两个结果不相同的赋值语句,而在关系表达式中a=b与b=a两种表示方法是等价的。

(3)赋值号左边只能是变量,不能是常量、符号常量、表达式。

下列语句均为错误的赋值语句:

5=x+y'左边是常量

vbcrlf=34‘左边是符号常量

x+y=5'左边是表达式

(4)不能在一条赋值语句中,同时给多个变量赋值。

例如:

要对x,y,z三个变量值赋初值1,如下面语句书写语法上没错,但结果不正确:

Dimx%,y%,z%

x=y=z=1

执行该语句前x,y,z的变量值默认是0,VisualBasic在编译时,将右边两个“=”作为关系运算符处理,先进行y=z比较,结果为True(-1);接着True=1比较结果False(0);最后将False赋值给x,因此最后三个变量中的值仍为0。

正确书写应分别使用三条赋值语句完成,写成:

x=1

y=1

z=1

x=1:

y=1:

z=1‘书写在同一行上

(5)如下赋值语句形式很常用:

sum=sum+x

表示将变量sum、x中的值相加后再赋给sum,与循环结构结合使用,起到累加作用。

n=n+1

表示将变量n的值加1后再赋给n,与循环结构结合使用,起到计数器的作用。

3.2.2顺序结构举例

【例3.4】输入某位同学的三门课程的成绩,求它们的平均分。

程序代码如下:

PrivateSubForm_Click()

Dims1!

s2!

s3!

aver!

s1=InputBox(“输入第一门课程的成绩”)

s2=InputBox(“输入第二门课程的成绩”)

s3=InputBox(“输入第三门课程的成绩”)

aver=(s1+s2+s3)/3

print“aver=”;aver

EndSub

3.3选择结构

在人们所处理的问题中,常常需要根据某些给定的条件是否满足来决定所执行的操作。

选择结构就是对给定条件进行判断,从而选择执行不同分支,一般可由条件语句来完成。

VB中的条件语句包括If语句和Select语句。

3.3.1If条件语句

1.if…Then语句

语句格式:

(1)

(1)If<表达式>Then<语句>

(2)

(2)If<表达式>Then

<语句块>

EndIf

语句功能:

当<表达式>的值为True或非零时,执行Then后面的语句(或语句块),否则不做任何操作,实现单分支选择结构。

其流程如图3-5

图3-5

说明:

(1)

(1)      表达式一般为关系表达式或逻辑表达式,也可为算术表达式。

例如:

Ifn=0ThenEnd

If年龄<=35and职称=”讲师”Thenn=n+1

Ifx-5Thenprint“x<>5”

(2)格式

(1)中的<语句>是单行语句,若要执行多条语句,语句间用冒号分隔,且必须在一行上。

格式

(2)中的<语句块>可以是一条或多条语句。

例如,语句Ifx>yThenx=x-5:

y=y+5也可写成

Ifx>yThen

x=x-5

y=y+5

EndIf

【例3.5】输入x的值,并输出其绝对值。

程序代码如下:

PrivateSubCommand1_Click()

Dimx!

x=InputBox("请输入一个数")

Ifx<0Thenx=-x

Print"绝对值是:

";x

EndSub

2.If…Then…Else语句

语句格式:

(1)

(1)If<表达式>Then<语句1>Else<语句2>

(2)

(2)If<表达式>Then

<语句块1>

Else

<语句块2>

EndIf

语句功能:

当<表达式>的值为True或非零时,执行Then后面的语句(或语句块),否则执行Else后面的语句(或语句块),实现双分支选择结构。

其流程如图3-6

图3-6

例如:

输入一个整数,判断其奇偶性。

程序代码如下:

PrivateSubForm_Click()

Dimxasinteger

x=InputBox(“请输入一个整数”)

Ifxmod2=0ThenPrintx;”是偶数”ElsePrintx;”是奇数”

EndSub

3.If…Then…ElseIf语句

语句格式:

If<表达式1>Then

<语句块1>

ElseIf<表达式2>Then

<语句块2>

[Else

<语句块n+1>]

EndIf

语句功能:

根据不同的表达式值确定执行哪个语句块,实现多分支选择结构。

其流程如图3-7

图3-7

使用说明:

先计算<表达式1>的值,若为真,则执行<语句块1>,并跳过其他分支语句执行If语句的后续语句(即EndIf后面的语句);若为假,则计算<表达式2>的值,依此类推,直到找到一个为真的条件时,才执行相应的语句块,然后执行EndIf后面的语句。

格式中的Else是可选项,表示若无任何表达式值为真时,则执行<语句块n+1>;若无Else选项,且所有条件表达式值都不为真,则不执行If语句中的任何语句块。

【注意】

当If语句内有多个表达式的值为真时,只执行第一个为真的表达式后的语句块。

【例3.6】在文本框中输入若干字符,统计其中字母字符、数字字符以及其他字符的个数,并显示结果。

程序代码如下:

DimcountX%,countY%,countZ%

PrivateSubText1_KeyPress(KeyAsciiAsInteger)

Dimc$

c=chr(KeyAscii)‘将文本框中输入的字符赋给变量c

IfUcase(c)>=”A”AndUcase(c)<=”Z”Then

countX=countX+1

ElseIfc>=”0”Andc<=”9”Then

countY=county+1

Else

countZ=countZ+1

EndIf

IfKeyAscii=13Then‘当按回车键字符输入完毕,显示结果

Print“字母字符有”;countX;”个”

Print“数字字符有”;countY;”个”

Print“其他字符有”;countZ;”个”

EndIf

EndSub

3.3.2SelectCase语句

SelectCase语句是多分支结构的另一种表示形式,它可使程序代码更加简单、清晰、易读。

语句格式:

SelectCase<条件表达式>

Case<表达式列表1>

<语句块1>

Case<表达式列表2>

<语句块2>

……

[CaseElse

<语句块n>]

EndSelect

语句功能:

根据条件表达式的值转向相应的语句块,实现多路分支。

其流程如图3-8。

图3-8

使用说明:

先求出条件表达式的值,然后从上到下跟各个Case子句中的表达式列表进行匹配,如果找到了相匹配的值,则执行该子句下的语句块。

若有多个Case子句的值与条件表达式的值相匹配,则只执行第一个与之匹配的Case子句后面的语句块。

如果没有任何Case子句中的表达式列表与之匹配,则执行CaseElse子句中的语句块。

格式说明:

(1)条件表达式可以是数值表达式或字符串表达式,一般为变量。

(2)表达式列表用来描述条件表达式的可能取值情况,可以由多个表达式组成,表达式与表达式之间要用“,”隔开,必须与条件表达式的数据类型相同且有确定的值。

表达式列表有以下三种形式:

①表达式或由逗号分隔的多个表达式

例如:

Case“A”

Case1,2,3

Casea,b

②<表达式1>To<表达式2>

例如:

Case-10to10

Case“A”to“F”

Caseatob

③Is<关系操作符><表达式>

例如:

Is<10

Is>=a+b

【例3.7】某商店进行购物打折优惠活动促销,根据每位顾客一次性购物的消费额给予不同的折扣,具体方法如下:

(1)购物1000元以上的九五折优惠,

(2)购物2000元以上的九折优惠,

(3)购物3000元以上的八五折优惠,

(4)购物5000元以上的八折优惠。

程序代码如下:

PrivateSubCommand1_Click()

DimxAsSingle,yAsSingle

x=InputBox("请输入购物金额:

")

SelectCasex

CaseIs<1000

Print"不优惠"

y=x

CaseIs<2000

Print"九五折优惠"

y=0.95*x

CaseIs<3000

Print"九折优惠"

y=0.9*x

CaseIs<5000

Print"八五折优惠"

y=0.85*x

CaseIs>=5000

Print"八折优惠"

y=0.8*x

EndSelect

Print"优惠后应收款额为:

";y

EndSub

3.3.3选择结构的嵌套

将一个选择结构放在另一个选择结构内,称为选择结构的嵌套。

If语句的多分支格式实际上是一种If结构的嵌套形式。

选择结构的嵌套既可以是同一种结构的嵌套,也可以是不同结构之间的嵌套。

例如可以在If结构中又包含If语句,或在If结构中包含Select语句等形式。

例如:

若x大于0,则y等于1;若x小于0,则y等于-1;否则,y等于0。

语句如下:

Ifx>0Theny=1ElseIfx<0Theny=-1Elsey=0

此例中的If语句的Else子句中又出现If语句,形成了嵌套。

【例3.8】求一元二次方程的根。

程序代码如下:

PrivateSubForm_Click()

Dima%,b%,c%,disc%,s!

a=InputBox(“输入系数a”)

b=InputBox(“输入系数b”)

c=InputBox(“输入系数c”)

Ifa=0Then‘系数a为0时,方程只有一个根

Print“onerootis:

Print“x=”;-c/b

Else‘系数a不为0时

disc=b*b-4*a*c

SelectCasedisc

CaseIs>0‘

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 初中教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1