文档库 最新最全的文档下载
当前位置:文档库 › 第3章 VB程序语句与控制结构

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

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

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

一个VB应用程序主要由用户界面和响应各事件的程序代码组成,程序代码是应用程序的核心。本章首先介绍程序代码设计的基础知识,再通过一些典型的例子,使大家逐步掌握编程的思路和技巧。VB虽然是面向对象的程序设计语言,但在代码设计中仍然支持结构化程序设计的三种基本结构,即顺序结构、选择结构和循环结构。本章将主要介绍数据的输入与输出、三种基本程序控制结构及语句。

3.1 数据的输入与输出

VB的输入/输出有多种形式,常用的输入方式有:使用键盘输入数据的函数InputBox 以及文本框等控件。常用的输出方式有: Print方法、MsgBox函数和过程以及图形框、文本框、标签等控件。有关控件的使用在其第六章中介绍,本节主要介绍InputBox函数、MsgBox函数与过程以及Print方法的使用。

3.1.1 InputBox函数

格式:InputBox(提示[,标题][,默认][,x坐标位置][,y坐标位置]) 功能:InputBox函数产生一个对话框,作为输入数据的界面,等待用户输入内容,当用户单击“确定”按钮或按回车键,函数返回输入的值,其值的类型为字符串(String)。

说明:

(1)“提示”:必选项。字符串表达式,在对话框中作为提示信息显示,可为汉字。若要多行显示,必须在每行行末加回车符Chr(13)和换行符Chr(10)符或VB符号常数vbCrLf。

(2)“标题”:可选项。字符串表达式,在对话框的标题区显示;若省略,默认为应用程序名。

(3)“默认”:可选项。字符串表达式,当输入对话框中无输入时,则该默认值作为输入的内容。

(4)“x坐标位置、y坐标位置”:可选项。整型表达式,确定对话框左上角相对于屏幕左上角的x、y坐标,单位为twip。该项省略时,对话框出现在屏幕水平、垂直中间的位置。

【注意】

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

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

Dim strName as String*20

Title = "InputBox函数示例"

Msg1 = "请输入你的姓名"

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

图3-1

3.1.2 Msgbox 函数与过程

MsgBox用于输出数据,它会在屏幕上显示一个对话框。在对话框中显示消息,等待用户单击按钮,并返回所选按钮的整数值。有函数和过程两种形式。

MsgBox函数格式:变量=MsgBox(提示[,按钮][,标题])

MsgBox过程格式: MsgBox 提示[,按钮][,标题]

说明:

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

(2)“按钮”:可选项。数值表达式,决定信息框按钮的数目和类型及出现在信息框上的图标类型。该数值表达式的值由4部分数值求和得到,它也可以用符号常量表示。其设置见表3.1。

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

(4)MsgBox过程与MsgBox函数的区别是:MsgBox过程没有返回值,也不用圆括号“()”,所以常用于较简单的信息显示。其他用法与MsgBox函数相同。

表3.1“按钮”设置及意义

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

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

Title=”Msgbox演示程序”

Resp=MsgBox(Msg,308,Title)

If Resp=6 then

Print “你选择了是!”

Else

Print “你选择了否!”

End If

图3-2

程序中,MsgBox函数的参数308也可以写成符号常量的形式。因308=4+48+256,因而可将数字308写成vbYesNo+vbCritical+vbDefaultButton2的常量表达式的形式;同样,If 语句也可写成If Resp=vbYes then的形式。

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

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

Private Sub Form_Click()

Const Pi = 3.14 ?定义常量Pi

Dim r As Double, a as Double

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

a = Pi * r * r

MsgBox("圆的面积为:" & a )

End Sub

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

图3-3

3.1.3 Print 方法

Print方法常用于在屏幕上输出信息。在本书第一章1.4.2节中已有介绍。

例如,执行如下代码:

a = 10:b=15

c$ = “欢迎使用Visual Basic”

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

Print

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

运行结果如下:

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

“字符串变量c$的值为:欢迎使用Visual Basic

【例3.2】用Print方法输出图形。程序运行结果如图3-4所示。

Private Sub Form_Click()

For i=1 to 5

Print Tab(i);String(6-i,”*”)

Next I

End Sub

图3-4

【注意】

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

例如,执行以下语句:

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

运行结果如下:

abcdefg

1234567

3.1.4 打印机输出

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

1.用PrintForm方法打印

格式:[窗体名.]PrintForm

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

说明:

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

(2)PrintForm方法不仅可以打印窗体上的文本,而且还可以打印出窗体上的任何可见的控件及图形。若窗体中包含图形,需要将输出窗体的AutoReDraw属性设置为True。

2.用Printer对象打印

格式:Printer.Print [表达式列表]

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

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

Printer.Print "欢迎使用Visual Basic"

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”两张测试页。

Private Sub Form_Click()

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

Printer.NewPage

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

Printer.EndDoc

End Sub

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

3.2 顺序结构

顺序结构就是程序的各语句按出现的先后次序执行。在Visual Basic中顺序结构的语句主要有赋值语句、输入语句、输出语句等。

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。

例如:

Dim f as Boolean

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,如下面语句书写语法上没错,但结果不正确:Dim x%, y%, z%

x = y = z = 1

执行该语句前x,y,z的变量值默认是0,Visual Basic在编译时,将右边两个“=”作为关系运算符处理,先进行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】输入某位同学的三门课程的成绩,求它们的平均分。

程序代码如下:

Private Sub Form_Click()

Dim s1!,s2!,s3!,aver!

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

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

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

aver=(s1+s2+s3)/3

print “aver=”;aver

End Sub

3.3选择结构

在人们所处理的问题中,常常需要根据某些给定的条件是否满足来决定所执行的操作。选择结构就是对给定条件进行判断,从而选择执行不同分支,一般可由条件语句来完成。VB 中的条件语句包括If语句和Select语句。

3.3.1 If条件语句

1.if…Then语句

语句格式:

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

(2)If < 表达式> Then

<语句块>

End If

语句功能:当<表达式>的值为True或非零时,执行Then后面的语句(或语句块),否则不做任何操作,实现单分支选择结构。其流程如图3-5

图3-5

说明:

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

例如:

If n=0 Then End

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

If x-5 Then print “x<>5”

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

例如,语句If x>y Then x=x-5:y=y+5也可写成

If x>y Then

x=x-5

y=y+5

End If

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

程序代码如下:

Private Sub Command1_Click()

Dim x!

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

If x<0 Then x = -x

Print "绝对值是:"; x

End Sub

2.If…Then…Else语句

语句格式:

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

(2)If <表达式> Then

<语句块1>

Else

<语句块2>

End If

语句功能:当<表达式>的值为True或非零时,执行Then后面的语句(或语句块),否则执行Else后面的语句(或语句块),实现双分支选择结构。其流程如图3-6

图3-6

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

程序代码如下:

Private Sub Form_Click()

Dim x as integer

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

If x mod 2=0 Then Print x;”是偶数” Else Print x;”是奇数”

End Sub

3.If…Then…ElseIf语句

语句格式:

If <表达式1> Then

<语句块1>

ElseIf <表达式2> Then

<语句块2>

[Else

<语句块n+1>]

End If

语句功能:根据不同的表达式值确定执行哪个语句块,实现多分支选择结构。其流程如图3-7

图3-7

使用说明:先计算<表达式1>的值,若为真,则执行<语句块1>,并跳过其他分支语句执行If语句的后续语句(即End If后面的语句);若为假,则计算<表达式2>的值,依此类推,直到找到一个为真的条件时,才执行相应的语句块,然后执行End If后面的语句。格式中的Else是可选项,表示若无任何表达式值为真时,则执行<语句块n+1>;若无Else选项,且所有条件表达式值都不为真,则不执行If语句中的任何语句块。

【注意】

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

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

程序代码如下:

Dim countX%,countY%,countZ%

Private Sub Text1_KeyPress(KeyAscii As Integer)

Dim c$

c=chr(KeyAscii) …将文本框中输入的字符赋给变量c If Ucase(c)>=”A” And Ucase(c)<=”Z” Then

countX=countX+1

ElseIf c>=”0” And c<=”9” Then

countY=county+1

Else

countZ=countZ+1

End If

If KeyAscii=13 Then …当按回车键字符输入完毕,显示结果

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

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

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

End If

End Sub

3.3.2 Select Case语句

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

语句格式:

Select Case <条件表达式>

Case <表达式列表1>

<语句块1>

Case <表达式列表2>

<语句块2>

……

[Case Else

<语句块n>]

End Select

语句功能:根据条件表达式的值转向相应的语句块,实现多路分支。其流程如图3-8。

图3-8

使用说明:先求出条件表达式的值,然后从上到下跟各个Case子句中的表达式列表进行匹配,如果找到了相匹配的值,则执行该子句下的语句块。若有多个Case子句的值与条件表达式的值相匹配,则只执行第一个与之匹配的Case子句后面的语句块。如果没有任何Case 子句中的表达式列表与之匹配,则执行Case Else子句中的语句块。

格式说明:

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

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

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

例如:Case “A”

Case 1,2,3

Case a,b

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

例如:Case -10 to 10

Case “A” to “F”

Case a to b

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

例如:Is <10

Is>=a+b

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

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

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

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

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

程序代码如下:

Private Sub Command1_Click()

Dim x As Single, y As Single

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

Select Case x

Case Is < 1000

Print "不优惠"

y = x

Case Is < 2000

Print "九五折优惠"

y = 0.95 * x

Case Is < 3000

Print "九折优惠"

y = 0.9 * x

Case Is < 5000

Print "八五折优惠"

y = 0.85 * x

Case Is >= 5000

Print "八折优惠"

y = 0.8 * x

End Select

Print "优惠后应收款额为:"; y

End Sub

3.3.3 选择结构的嵌套

将一个选择结构放在另一个选择结构内,称为选择结构的嵌套。If语句的多分支格式实际上是一种If结构的嵌套形式。选择结构的嵌套既可以是同一种结构的嵌套,也可以是不同结构之间的嵌套。例如可以在If结构中又包含If语句,或在If结构中包含Select 语句等形式。

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

语句如下:

If x>0 Then y=1 Else If x<0 Then y=-1 Else y=0

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

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

程序代码如下:

Private Sub Form_Click()

Dim a%,b%,c%,disc%,s!

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

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

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

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

Print “one root is:”

Print “x=”;-c/b

Else …系数a不为0时

disc=b*b-4*a*c

Select Case disc

Case Is>0 …方程有两个不同实根

s=sqr(disc)

Print “x1=”;(-b+s)/(2*a)

Print “x2=”;(-b-s)/(2*a)

Case Is=0 …方程有两个相同实根

Print “The root is:”

Print “x=”;-b/(2*a)

Case Else …方程没有实根

Print “No real root.”

End Select

End If

End Sub

3.3.4 条件函数

1.IIF函数

使用IIf函数也可以实现简单的双分支选择结构。

语句格式:

result = IIF(条件表达式,<表达式1>,<表达式2>)

语句说明:

(1)“result”是函数的返回值:当条件表达式为真时,函数返回<表达式1>的值,当条件表达式为假时,函数返回<表达式2>的值。

(2)<表达式1>和<表达式2>可以是任何表达式。

例如:语句If x>y Then max=x Else max=Y也可写成:

Max=IIf(x>y,x,y)

2.Choose()函数

使用Choose函数也可以实现简单的多分支选择结构。

语句格式:

result=Choose(整数表达式,选项列表)

语句说明:

Choose函数根据整数表达式的值来决定返回选项列表中的某个值。若整数表达式值是1,则Choose函数会返回列表中的第1个选项。若整数表达式值是2,则会返回列表中的第2

个选项,以此类推。若整数表达式的值小于 1 或大于列出的选项数目时,Choose函数返回Null。

例如:c=Choose(x,”red”,”green”,”blue”)

当x值为1时,返回“red”;当x值为2时,返回“green”;当x值为3时,返回“blue”;当x不在1-3之间,函数返回Null。

3、Switch函数

Switch函数称开关函数,计算一个条件表达式列表,并返回与该表中一个等于True的条件表达式相联系的一个表达式的值。

语句格式:

Result=Switch(<条件表达式1>,<表达式1>[,<条件表达式2>,<表达式2>…])

语句说明:

当条件表达式1为True时,返回表达式1的值;当条件表达式2为True时,返回表达式2的值,依此类推。

例如:y=switch(x>0,1,x=0,0,x<0,-1)

3.4 循环结构

在实际应用中,经常遇到一些需要反复多次处理的问题,例如求若干个数之和、积等。重复执行某一程序块称作循环。Visual Basic提供了多种不同风格的循环结构语句,包括Do … Loop、While … Wend,For … Next,For Each … Next等,其中最常用的是For …Next语句和Do … Loop语句。

3.4.1 计数循环

For循环又称计数循环,常用于循环次数预知的场合。语句格式如下:

For <循环变量> = <初值> To <终值> [Step <步长>]

[<语句块>]

Next [<循环变量>]

说明:

(1)参数<循环变量>、<初值>、<终值>和<步长>都是数值型。

(2)<语句块>内是一系列VB合法的语句,构成循环体。

(3)步长为可选参数,如果没有指定,则默认值为1。步长可以为正,也可以为负。若为正,则初值应小于或等于终值;若为负,则初值应大于或等于终值,这样才能保证执行循环体内的语句;若为0,循环永远不能结束(即出现死循环)。

(4)该语句的执行过程如图3-9所示:

①把“初值”赋给“循环变量”,仅被赋值一次。

②检查循环变量的值是否超过终值,若是就结束循环,执行Next后的下一语句;否则执行一次循环体。

③执行Next语句,循环变量的值增加一个步长,转②继续循环。

图3-9

【例3.9】求1到100的和。

Private Sub Command1_Click()

Dim i As Integer, sum As Integer

sum = 0 …给变量sum赋初值0

For i = 1 To 100

sum = sum + i …累加

Next i

Print sum

End Sub

思考:若要将上例的求和问题改为求积,如求10!,应如何编写代码?

【注意】

(1)一般在循环体内不要修改循环变量的值,否则会影响原有的循环控制状况。

例如以下程序段:

For i=1 To 5

If i Mod 2 = 0 Then i = i + 1

Print i;

Next i

程序执行打印结果为:1 3 5

循环体执行了3次,若没有第二行,程序应执行5次。

(2)如果在循环体中没有修改循环变量的值,则循环的次数可以从For语句中指定的参数直接计算出来:

循环次数=Int((循环终值-循环初值)/步长)+1

如:

For i=1 To 10 Step 3

Print i;

Next i

循环次数=int((10-1)/3)+1=4

【例3.10】求Fibonacci数列的前30个数。这个数列有如下特点:前两个数为1,从第三个数开始,其值是前两个数的和,即:

F1=1 (n=1)

F2=1 (n=2)

F n= F n-1+ F n-2(n≥3)

程序如下:

Private Sub Command1_Click()

Dim i As Integer

Dim f1 As Long, f2 As Long, fn As Long

f1 = 1

f2 = 1

Print f1,

Print f2,

For i = 3 To 30 ' f1,f2已知,从第三个数开始计算

fn = f1 + f2

f1 = f2

f2 = fn '更改f1,f2的值

Print fn,

If i Mod 4 = 0 Then Print '打印4个数后换行打印

Next

End Sub

运行结果如图3-10:

图3-10

3.4.2 条件型循环

条件型循环是根据某个条件决定循环的次数。常用的循环结构有:While循环结构及Do 循环结构。

1. While循环结构

While循环结构用While…Wend语句来实现,语句格式如下:

While <条件表达式>

[<语句块>]

Wend

语句说明:

(1)“条件表达式”可以是关系表达式、逻辑表达式或数值表达式。如果是数值表达式,值为0被作为False,非零值则为True。

(2)语句的执行过程是:先计算条件表达式的值,若为True,则执行循环中的语句块,遇到Wend语句时返回While语句继续判断条件表达式的值,若仍为真,则继续执行语句块,重复上述过程直到条件表达式的值为False,则退出循环结构,执行Wend语句的后续语句。循环环执行过程如图3-11。

(3)如果条件一开始就不成立,则语句块一次也不会被执行。

图3-11

例如,用While循环语句改写例3.9,程序代码如下:

Private Sub Command1_Click()

Dim i As Integer, sum As Integer

sum = 0 :i=1

While i<=100

sum = sum + i

i=i+1

Wend

Print sum

End Sub

2. Do循环结构

Do循环结构的形式较灵活,可分为以下几种:

(1)先判断条件的Do…Loop循环

格式一:

Do While <条件表达式>

[<语句块>]

Loop

语句执行过程:先计算条件表达式的值,若为True,则执行语句块中的语句;若为False 则退出循环结构。循环环执行过程如图3-12。

格式二:

Do Until <条件表达式>

[<语句块>]

Loop

语句执行过程和格式一基本相同,唯一不同的是,它在条件表达式为False时重复执行语句块,直到条件为True时退出循环结构。循环环执行过程如图3-13。

图3-12 图3-13

【例3.11】将10000元存入银行,按3.25%的利率,试问多长时间就会连本带利翻一番。

程序代码如下:

Private Sub Form_Click()

Dim year%,money!,original!,interest!

original=10000

money=original

Interest=3.25/100

Do While money<2*original

year=year+1

money=money+interest*money ?累计每过一年的连本带利的金额

Loop

Print “In”;year;”years,you’ll have”;money

End Sub

请读者自己使用格式二改写上述程序。

(2)后判断条件的Do…Loop循环

格式三:

Do

[<语句块>]

Loop While <条件表达式>

语句执行过程:首先执行语句块中语句,然后计算条件表达式,如果条件表达式值为True,则继续执行语句块,否则退出循环结构。循环体至少执行一次。循环环执行过程如图3-14。

格式四:

Do

[<语句块>]

Loop Until <条件表达式>

格式四的执行过程和格式三基本一样,也是先执行后判断。唯一不同的是,它在条件表达式值为假时重复执行语句块,直到条件表达式值为真时退出循环结构。循环环执行过程如图3-15。

图3-14 图3-15

【例3.12】用辗转相除法求两正整数m,n的最大公约数。

求最大公约数的算法如下:

(1)对于已知两数m,n,使得m>n;

(2)m除以n得余数r;

(3)令m ← n,n ← r;

(4)若r≠0,转到(2)继续执行,直到r=0求得最大公约数为m,循环结束。

程序代码如下:

Private Sub Form_Click()

Dim m%,n%

m = InputBox("输入m")

n = InputBox("输入n")

If m< n Then ’若m小于n,则交换两数,使得m>n

t=m

m=n

n=t

End If

m1=m

n1=n

vb三种基本结构练习题

vb三种基本结构练习题 1、计算圆的面积(顺序结构) dim r,s,c as single r=inputbox("输入r的值") s=3.14*r*r c=2*3.14*r print s print c 2、小明去买电池,2.5元一节,买电池超过10节,超出的部分按八折出售。输入小明买电池的数量,输出小明应付的钱数。(选择语句) dim a as integer dim q as single a=inputbox("输入小明买的电池数") if a>10 then b=25+(a-10)*2.5*0.8 else b=a*2.5 end if print b 3、求1+2+3+4+……+100的和。(循环语句) dim i,sum as integer for i=1 to 100 sum=sum+i next i print sum 4、输入数字n,求n!(n!=1*2*3*……*n)(循环语句) dim i,sum,n as long n=inputbox("输入n的值") sum=1 for i=1 to n sum=sum*i next i print sum

1、在窗体上任意位置画一个文本框和一个命令按钮,编写程序,当用户单击命令按钮时,文本框移动到窗体的左上角,并且文本框的大小是原来的2倍。 2、在窗体上任意位置画一个文本框和一个命令按钮,设置窗体的标题属性为“信息窗口”;命令按钮的标题属性为“确定”。编写程序,当用户单击命令按钮时,在文本框中显示“包头师范学院”,要求字体为隶书、加粗、加下划线、字号为20、颜色为红色。 3、在窗体上任意位置画两个命令按钮,分别设置它们的标题属性为:加载图片、显示信息。编写程序,当用户单击第一个命令按钮时,在窗体上加载一幅图片(图片自定)。当用户单击第二个命令按钮时,在窗体上打印信息“包头师范学院“。 4、例1: 在窗体上部设置一个文本框,文本框的下面设置 3 个命令按钮,其中左边按钮中标有“单击此按钮”,中间按钮中标有“清除”,右边按钮中标有“程序结束”。当程序运行时,用鼠标单击左边按钮时,屏幕上部的文本框中显示“欢迎使用vb 6.0”;如果单击中间按钮,则清除文本框中显示的内容;而如果单击右边的按钮,则结束程序。 5、例2 请根据题目要求,设计VB应用程序: 1、在窗体的上方并排分别创建一个标签控件label1和一个文本框控件 text1; 要求:①窗体的标题命名为“个人简介”、窗体背景颜色为黄色。 ②标签和文本框中显示的字体为隶书、样式为斜体、字体大小为三号的红色字。 2、在两个控件的下方并排创建两个命令按钮控件command1、command2,分别命名为:“姓名”、“单位”。 3、请编写事件过程代码,使得程序运行时,当鼠标按下“姓名”按钮时,将在标签中显示你的名字;当鼠标按下“单位”按钮时,将在文本框中显示你现在所在的系、级、班。 4、完成以上操作后以V1为窗体名保存在D盘自己的文件夹下 上机练习三 1、在窗体上画一个文本框控件,要求运行时在文本框中显示信息“包头师范学院”(form-load事件)。当用户在文本框中选中任意数量的字符时,在窗体上显示所选中的字符数、选中字符数的首字符数及选中的字符内容。 2、在窗体上画两个文本框控件,先在属性窗口中删除两个文本框中的初始text 属性值。要求当程序运行时,当在文本框1中输入任意一个字符时,同时在文本框2中显示出来,同时也在窗体中显示出来。 3、实现“减法器”功能。

VB程序设计试题及答案一

V B程序设计试题及答案(一) 一、单选题 1. VB6.0是一种面向B 的编程环境。 (A) 机器(B) 对象 (C) 过程(D) 应用 2. 要使FormI窗体的标题栏显示"欢迎使用VB",以下D 语句是正确的。 (A) Forml.Caption=“欢迎使用VB” (B) Forml.Caption='欢迎使用VB' (C) Forml.Caption=欢迎使用VB (D) Forml.Caption="欢迎使用VB" 3. 若要使命令按钮不可操作,要对A 属性进行设置。 (A) EnabIed (B)Visible (C) Backcolor (D)Caption 4. 如果在窗体上已经创建了一个文本框对象TextI,可以通过C 事件获得输入键值的ASCII码。 (A) Change (B) LostFocus (C) KeyPress (D) GotFocus 5. 下面A 是合法的变量名。 (A) X_yz (B) 123ab。(C) integer (D) X-Y 6. 以下关系表达式中,其值为False的是A 。 (A) "ABC">"AbC" (B) "女">"男" (C) "BASIC"=UCase("basic) (D) "123"<"23" 7. 为了给x、y、z三个变量赋初值1,下面正确的赋值语句是A 。 (A) x=1:y=1:z=1 (B) x=1,y=1,z=1 (C) x=y=z=1 (D) xyz=1 8. VB提供了结构化程序设计的三种基本结构,三种基本结构是D 。 (A)递归结构、选择结构、循环结构 (B)选择结构、过程结构、顺序结构 (C)过程结构、输入输出结构、转向结构 (D)选择结构、循环结构、顺序结构 9. 下面If语句统计满足性别为男、职称为副教授以上、年龄小于40岁条件的人数,不正确的语句是 D 。 (A) If sex="男" And age=4O And InStr(duty,"教授")>O Then n=n+l (B) If sex="男" And age=4O And (duty="教授" Or duty="副教授") Then n=n+l (C) If sex="男" And age=4O And Right(duty,2)="教授" Then n=n+l (D) If sex="男" And age=4O And duty="教授" And duty="副教授" Then n=n+l 10.下列关于Do…Loop循环结构执行循环次数的描述正确的是D 。 (A) Do While…Loop循环和Do…Loop Until循环至少都执行一次 (B) Do While…Loop循环和Do…Loop Until循环可能都不执行 (C) Do While…Loop循环至少执行一次和Do…Loop Until循环可能不执行 (D) Do While…Loop循环可能不执行和Do…Loop Until循环至少执行一次 11.以下B 是正确的For…Next结构。 (A) For x=1 To Step 10 (B) For x=3 To -3 Step -3 ……

VB程序的三种基本结构复习课教学案例

《VB程序的三种基本控制结构》 复习课教案 平桂高级中学陀君一、案例背景信息 模块:算法与程序设计 年级:高一年级 所用教材版本:粤教版《算法与程序设计》 学时数:1课时(40分钟) 二、教学设计: 1、教学目标: 知识与技能:能根据流程图正确区分VB程序的三种基本结构,并记住相关语句格式,能编写出简单明了的程序关键代码; 过程与方法:充分认识VB程序中三种基本结构的实用性,体会生活中算法的存在和精彩。 情感态度与价值观:培养学生在学习过程中积极思考、自我探究的能力和学以致用的意识。 2、教学重点:顺序、选择(分支)和循环三种基本结构的区分及其对应的VB 语句的使用。 教学难点:for循环结构,各类语句关键代码的编写。 三、教学实录 1.复习引入 师:我们之前学过VB的基本结构,通常程序有三种最基本的结构,是哪三种结构? 大部分学生在底下小声回答,师让某生回答,说:顺序模式、分支模式、循环模式。

师:分支模式也可称为? 部分学生:选择模式。 师:非常好,接下来看下这三种结构的流程图,然后分别指出这三个流程图是什么结构。(出示三种流程图结构) 2.正题 (1)顺序结构P38: 执行第一条语句后,必然从第二条语句继续,顺序执行所有的语句,直到执行完最后一条语句为止。 例1:例1、 a=1 b=2 c=a+b a=c-a b=c-a

最后,变量b的值是( 1 ) (2)选择结构(分支结构):P42 根据条件判断其是否成立,如果成立执行成立的分支;否则执行另一分支。其一般形式为: If 条件Then 语句序列1 Else 语句序列2 End If 单行形式为: If 条件Then 语句组1 Else 语句组2 例2、a =10 If a>=10 Then a=a+1 Else a=a-1 End If 该程序段运行后,变量a的值是( D ) A. 8 B. 9 C. 10 D. 11 【师读题,学生思考。请同学回答,让同学们思考a=5结果是多少】 (3)循环结构:P51 根据条件判断其是否成立,如果条件成立则重复执行循环体(循环结构中某语句序列),直到条件不成立,退出循环结构为止。 循环结构的常用形式为: for 循环变量= 初值to 终值[step 步长] [循环体] next [循环变量]

《VB程序设计》课后题答案

第二章 一、问答题 1.叙述建立一个完整的应用程序的过程。 答:界面设计编写事件过程代码运行、调试保存文件 2.当建立好一个简单的应用程序后,假定该工程仅有一个窗体模块。问该工程涉及到几个文件要保存?若要保存该工程中的所有文件,正确的操作应先保存什么文件?再保存什么文件?若不这样做,系统会出现什么信息? 答:涉及到两个文件要保存。先保存窗体文件(.frm),再保存工程文件(.vbp)。若先保存工程文件,系统也会先弹出“文件另存为”对话框,要求把窗体文件先保存。 3.假定在W indows环境中,要保存工程文件时,若不改变目录名,则系统默认的目录是什么? 答:VB98 4.当标签框的大小由Caption属性的值进行扩展和缩小,应对该控件的什么属性进行何种设置? 答:将标签的Autosize设置为True. 5.VB6.0提供的大量图形文件在哪个目录下?若你的计算机上没有安装,则怎样安装这些图形文件? 答:VB6.0提供的图形文件在Graphics目录。 6.在VB6.0中,命令按钮的显示形式可以有标准和图形两种选择,这通过什么属性来设置?若选择图形的,则通过什么属性来装入图形?若已在规定的属性里装入了某个图形文件,但该命令按钮还是不能显示该图形,而显示的是Caption属性设置的文字,怎样改正?答:按钮Style的属性设置为Graphical(或1)。通过Picture属性来装入图形。不能显示图形是因为Style的属性设置为Standard(或0),只要改为Graphical(或1),一般还将Caption 属性的值设置为空。 7.标签和文本框的区别是什么? 答:文本是否可编辑。 8.当窗体上有三个文本框和一个命令按钮,若程序运行时,需把焦点定位在第三个文本框处,应对何控件的什么属性进行何种设置? 答:应对Text3控件进行Text3.TabIndex=0的设置。 9.简述文本框的change与keypress事件的区别。 答:文本框内容变化,change与keypress事件都会发生,所不同的是Keyprees还将返回一个Keyasii参数 10.当某文本框输入数据后(按了回车键),进行判断认为数据输入错,怎样删除原来数据?怎样使焦点回到该文本框重新输入? 答:假定文本框的名称为Text1,则事件过程如下: Private Sub Text1_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then If 出错条件判断成立Then Text1=””…先删除原来数据 Text1.SetFocus …焦点回到Text1 End If …… End If End Sub

VB程序设计试题及答案(一)-vb程序设计答案

VB程序设计试题及答案(一) 一、单选题 1. VB6.0是一种面向B 的编程环境。 (A) 机器(B) 对象 (C) 过程(D) 应用 2. 要使FormI窗体的标题栏显示"欢迎使用VB",以下D 语句是正确的。 (A) Forml.Caption=“欢迎使用VB” (B) Forml.Caption='欢迎使用VB' (C) Forml.Caption=欢迎使用VB (D) Forml.Caption="欢迎使用VB" 3. 若要使命令按钮不可操作,要对A 属性进行设置。 (A) EnabIed (B)Visible (C) Backcolor (D)Caption 4. 如果在窗体上已经创建了一个文本框对象TextI,可以通过C 事件获得输入键值的ASCII 码。 (A) Change (B) LostFocus (C) KeyPress (D) GotFocus 5. 下面A 是合法的变量名。 (A) X_yz (B) 123ab。(C) integer (D) X-Y 6. 以下关系表达式中,其值为False的是A 。 (A) "ABC">"AbC" (B) "女">"男" (C) "BASIC"=UCase("basic) (D) "123"<"23" 7. 为了给x、y、z三个变量赋初值1,下面正确的赋值语句是A 。 (A) x=1:y=1:z=1 (B) x=1,y=1,z=1 (C) x=y=z=1 (D) xyz=1 8. VB提供了结构化程序设计的三种基本结构,三种基本结构是D 。 (A)递归结构、选择结构、循环结构 (B)选择结构、过程结构、顺序结构 (C)过程结构、输入输出结构、转向结构 (D)选择结构、循环结构、顺序结构 9. 下面If语句统计满足性别为男、职称为副教授以上、年龄小于40岁条件的人数,不正确的语句是 D 。 (A) If sex="男" And age=4O And InStr(duty,"教授")>O Then n=n+l (B) If sex="男" And age=4O And (duty="教授" Or duty="副教授") Then n=n+l (C) If sex="男" And age=4O And Right(duty,2)="教授" Then n=n+l (D) If sex="男" And age=4O And duty="教授" And duty="副教授" Then n=n+l 10.下列关于Do…Loop循环结构执行循环次数的描述正确的是D 。 (A) Do While…Loop循环和Do…Loop Until循环至少都执行一次 (B) Do While…Loop循环和Do…Loop Until循环可能都不执行 (C) Do While…Loop循环至少执行一次和Do…Loop Until循环可能不执行 (D) Do While…Loop循环可能不执行和Do…Loop Until循环至少执行一次 11.以下B 是正确的For…Next结构。 (A) For x=1 To Step 10 (B) For x=3 To -3 Step -3

VB程序设计试题及答案(一)

VB程序设计试题及答案(一) 一、单选题 1、VB6、0就是一种面向B 的编程环境。 (A) 机器(B) 对象 (C) 过程(D) 应用 2、要使FormI窗体的标题栏显示"欢迎使用VB",以下D 语句就是正确的。 (A) Forml、Caption=“欢迎使用VB” (B) Forml、Caption='欢迎使用VB' (C) Forml、Caption=欢迎使用VB (D) Forml、Caption="欢迎使用VB" 3、若要使命令按钮不可操作,要对A 属性进行设置。 (A) EnabIed (B)Visible (C) Backcolor (D)Caption 4、如果在窗体上已经创建了一个文本框对象TextI,可以通过C 事件获得输入键值的ASCII码。 (A) Change (B) LostFocus (C) KeyPress (D) GotFocus 5、下面A 就是合法的变量名。 (A) X_yz (B) 123ab。(C) integer (D) X-Y 6、以下关系表达式中,其值为False的就是A 。 (A) "ABC">"AbC" (B) "女">"男" (C) "BASIC"=UCase("basic) (D) "123"<"23" 7、为了给x、y、z三个变量赋初值1,下面正确的赋值语句就是A 。 (A) x=1:y=1:z=1 (B) x=1,y=1,z=1 (C) x=y=z=1 (D) xyz=1 8、VB提供了结构化程序设计的三种基本结构,三种基本结构就是D 。 (A)递归结构、选择结构、循环结构 (B)选择结构、过程结构、顺序结构 (C)过程结构、输入输出结构、转向结构 (D)选择结构、循环结构、顺序结构 9、下面If语句统计满足性别为男、职称为副教授以上、年龄小于40岁条件的人数,不正确的语句就是 D 。 (A) If sex="男" And age=4O And InStr(duty,"教授")>O Then n=n+l (B) If sex="男" And age=4O And (duty="教授" Or duty="副教授") Then n=n+l (C) If sex="男" And age=4O And Right(duty,2)="教授" Then n=n+l (D) If sex="男" And age=4O And duty="教授" And duty="副教授" Then n=n+l 10、下列关于Do…Loop循环结构执行循环次数的描述正确的就是D 。 (A) Do While…Loop循环与Do…Loop Until循环至少都执行一次 (B) Do While…Loop循环与Do…Loop Until循环可能都不执行 (C) Do While…Loop循环至少执行一次与Do…Loop Until循环可能不执行 (D) Do While…Loop循环可能不执行与Do…Loop Until循环至少执行一次 11、以下B 就是正确的For…Next结构。 (A) For x=1 To Step 10 (B) For x=3 To -3 Step -3 …… Next x Next x

相关文档