85 Visual Basic 的基本语句.docx
《85 Visual Basic 的基本语句.docx》由会员分享,可在线阅读,更多相关《85 Visual Basic 的基本语句.docx(20页珍藏版)》请在冰点文库上搜索。
85VisualBasic的基本语句
8.5VisualBasic的基本语句
[复习目标]
1.掌握OptionBase语句,了解OptionExplicit语句;
2.掌握赋值语句;
3.掌握下列分支结构语句:
If…Then…Else、SelectCase;
4.掌握下列循环结构语句:
DoWhile…Loop、For…Next,掌握双重循环运行过程;
5.了解其他循环结构语句:
Do…Until、While…Wend。
[知识要点]
1.程序设计的三大步骤为:
(1)数据输入;
(2)数据处理;(3)数据输出。
2.“结构化程序设计方法”有三种基本结构:
顺序结构、选择结构和循环结构。
(1)顺序结构:
系统在执行程序时,按顺序处理每条语句。
①赋值语句
赋值语句是程序设计中最基本的语句也是为变量和事件的属性赋值的最主要的方法。
赋值语句的一般形式为:
变量名=表达式或:
对象名.属性=表达式
赋值语句的作用:
先计算右边表达式的值然后赋给左边的变量或控件属性。
[注意]
1.表达式可以是任何类型的表达式,一般应与变量名的类型一致,当表达式的类型与变量的类型不一致时作如下处理
(1)若左边是字符型变量,将右边非字符型转换成左边的类型。
(2)若左边是数值型变量,右边表达式为数字字符串时,自动转换成数值类型赋给左边变量;若右边表达式有非数字字符或空串时,则出现类型不匹配错误。
(3)若左边是逻辑型变量,右边是数值型表达式,非0转换为True,0转换为False;反之,将逻辑型表达式的值赋给数值型变量时,True转换为-1,False转换为0。
(4)不管表达式的值是什么类型都可以直接赋给一个变体类型的变量。
2.赋值号与关系运算符”等于”都用“=“表示,但系统不会产生混淆,会根据所处的位置自动判断是何种意义的符号。
也就是在条件表达式中出现的是等号,否则是赋值号。
例如:
赋值语句a=b与b=a是两个结果不相同的赋值语句,而在关系表达式中a=b与b=a两种表示方法是等价的。
3.赋值号左边只能是变量,不能是常量、符号常量、表达式。
4.不能在一条赋值语句中,同时给多个变量赋值。
②OptionBase语句
语法:
OptionBase{0|1}
说明:
由于下界的缺省设置是0,因此无需使用OptionBase语句。
如果使用该语句,则必须写在模块的所有过程之前。
一个模块中只能出现一次OptionBase,且必须位于带维数的数组声明之前。
注意Dim、Private、Public、ReDim以及Static语句中的To子句提供了一种更灵活的方式来控制数组的下标。
不过,如果没有使用To子句显式地指定下界,则可以使用OptionBase将缺省下界设为1。
使用Array函数或ParamArray关键字创建的数组的下界为0;OptionBase对Array或ParamArray不起作用。
OptionBase语句只影响位于包含该语句的模块中的数组下界。
③OptionExplicit语句
在模块级别中使用,强制显式声明模块中的所有OptionExplicit语句编辑
在模块级别中使用,强制显式声明模块中的所有变量。
语法:
OptionExplicit
说明:
如果使用,OptionExplicit语句必须写在模块的所有过程之前。
如果模块中使用了OptionExplicit,则必须使用Dim、Private、Public、ReDim或Static语句来显式声明所有的变量。
如果使用了未声明的变量名在编译时间会出现错误。
如果没有使用OptionExplicit语句,除非使用Deftype语句指定了缺省类型,否则所有未声明的变量都是Variant类型的。
注意使用OptionExplicit可以避免在键入已有变量时出错,在变量的范围不是很清楚的代码中使用该语句可以避免混乱。
(2)分支结构
系统在执行程序的过程中,根据条件判断决定程序的走向,分支结构有多种形式,其具体语句格式与流程图如表8-3所示。
表8-3分支结构
(3)循环结构
VB中有两种循环,即For-Next循环和Do-Loop循环,其结构与特点如表8-4所示。
表8-4循环结构
3.Exit语句
程序执行到Exit语句时,就会直接退出相关的结构,转而去执行该结构后的下一条语句。
常见的形式是与IF语句结合使用,格式如下:
if条件thenExit
语句格式
相关结构
说明
Exitdo
Do-loop循环结构
跳出循环结构,转而去执行循环之后的下一行语句
Exitfor
For-next循环结构
Exitsub
Sub过程
跳出过程,转而去执行调用语句之后的下一行语句
Exitfunction
Function过程
4.循环嵌套
如果在一个循环内完整地包含另一个循环结构,则成为多重循环或循环嵌套。
嵌套的层数可以根据需要而定,嵌套一层称为二重循环,嵌套二层称为三重循环。
对于循环的嵌套,要注意以下事项:
(1)内循环控制变量与外循环控制变量不能同名;
(2)外循环必须完全包含内循环,不能交叉;
(3)不能从循环体外转向循环体内,也不能从外循环转向内循环,反之则可。
5.For循环与Do循环的差别
FOR循环中循环控制变量的值的改变已经包含在语句结构中,使用简单方便;
DO循环本身并补包含循环控制变量的值的改变,所以必须另外添加语句(如I=I+1)对循环控制变量进行控制。
[同步练习]
一、选择题
1.下列语句正确的是()。
A.IfA≠BThenPrint"A不等于B"
B.IfA<>BThenPrintf"A不等于B"
C.IfA<>BThenPrint"A不等于B"
D.IfA≠BPrint"A不等于B"
2.假设x的值为5,则在执行以下语句时,其输出结果为“OK”的Selectcase语句是()。
A.SelectCaseX
Case10to1
Print"OK"
EndSelect
B.SelectCaseX
CaseIs>5,Is<5
Print"OK"
EndSelect
C.SelectCaseX
CaseIs>5,1,3to10
Print"OK"
EndSelect
D.SelectCaseX
Case1,3Is>5
Print"OK"
EndSelect
3.执行下面的程序段后,x的值为()。
x=10
Fori=1To20Step3
x=x+i\4
NextI
A.24B.25C.26D.27
4.下列程序段的执行结果为()。
N=10
ForK=NTO1Step-l
X=Sqr(K)
X=X-2
NextK
PrintX-2
A.-3B.-1C.1D.1.16227765
5.如果整型变量a、b的值分别为3和1,则下列语句中循环体的执行次数是()。
ForI=atob
PrintI
NextI
A.0B.1C.2D.3
6.下列关于dowhile…loop和do…loopuntil循环执行循环体次数的描述正确的是()。
A.dowhile…loop循环和do…loopuntil循环至少都执行一次
B.dowhile…loop循环和do…loopuntil循环可能都不执行
C.dowhile…loop循环至少执行一次,do…loopuntil循环可能不执行
D.dowhile…loop循环可能不执行,do…loopuntil循环至少执行一次
7.下列程序段的执行结果为:
()
I=9
x=5
Do
I=I+1
x=x+2
LoopUntilI>=7
Print"I=";I;
Print"x=";x
A.I=4x=5B.I=7x=15C.I=6x=8D.I=10x=7
8.下列程序段的执行结果为()。
X=2
Y=l
IfX*YPrintY-X>0
A.TrueB.FalseC.-1D.1
9.下列程序段的执行结果为()。
I=0
ForG=10To19Step3
I=I+l
NextG
PrintI
A.4B.5C.3D.6
10.下列程序段的执行结果为()。
A=0:
B=0
ForI=-1TO-2Step–l
ForJ=lTO2
B=B+l
NextJ
A=A+1
NextI
PrintA;B
A.2 4B.-2 2C.4 2D.2 3
11.下面有关注释语句的格式,错误的是()。
A.Rem注释内容
B.′注释内容
C.a=3:
b=2′对a、b赋值
D.PrivateSubCommand1_MouseDown(buttonAsInteger,shiftAsInteger,_Rem鼠标按下事件的命令调用过程XAsSingle,YAsSingle)
12.下列各程序段中,正确的是()。
A.If10<10Thena=a+10EndIf
B.Ifa>10Thena=a+1Elsea=a+5EndIf
C.Ifa<=10Then
a=a+1
Else
EndIf
D.Ifa<=10Then
a=a+1
ElseIfa<=20Then
a=a+10
EndIf
13.在窗体中添加一个命令按钮(Name属性为Command1),然后编写如下代码:
PrivateSubCommand1_Click()
Dimk,n,mAsInteger
n=5
m=1
k=1
DoWhilek<=n
m=m*2
k=k+1
Loop
Printm
EndSub
程序运行后,单击按钮,输出结果为()。
A.12B.32C.48D.96
14.以下程序段运行时从键盘上输入字符“-”,则输出结果为:
()
op$=InputBox("op=")
Ifop$="+"Thena=a+2
Ifop$="-"Thena=a-2
Printa
A.2B.-2C.0D.+2
15.编写如下程序:
PrivateSubForm_Click()
a$="54321":
b$="abcde"
Forj=lTo5
PrintMid$(a$,6-j,1)+Mid$(b$,j,1);
Nextj
Print
EndSub
程序运行后,单击窗体,其输出结果为()。
A.alb2c3d45eB.a5b4c3d2elC.eld2c3b4a5D.la2b3c4d5e
16.在窗体上画两个名称分别为Text1、Text2的文本框和一个名称为Command1的命令按钮,然后编写如下事件过程:
PrivateSubCommand1_Click()
DimxAsInteger,nAsInteger
x=1
n=0
DoWhilex<20
x=x*3
n=n+l
Loop
Textl.Text=Str(x)
Text2.Text=Str(n)
EndSub
程序运行后,单击命令按钮,在两个文本框中显示的值分别是()。
A.15和lB.27和3C.195和3D.600和4
17.在窗体上画一个命令按钮,然后编写如下事件过程:
PrivateSubCommand1_Click()
x=0
DoUntilx=-l
a=InputBox("请输入A的值")
a=Val(A.
b=InputBox("请输入B的值")
b=Val(B.
x=InputBox("请输入x的值")
x=Val(x)
a=a+b+x
Loop
Printa
EndSub
程序运行后,单击命令按钮,依次在输入对话框中输入5、4、3、2、l、-1,则输出结果为()。
A.2B.3C.14D.15
18.设有如下程序:
PrivateSubForm_Click()
score=Int(Rnd*10)+30
SelectCasescore
CaseIs<10
a$="F"
Case10To19
a$="D"
Case20To29
a$="C"
Case30To39
a$="B"
CaseElse
a$="A"
EndSelect
Printa$
EndSub
程序运行后,单击窗体,则在窗体上显示的是()。
A.AB.BC.CD.D
19.在窗体上画一个名称为Commandl的命令按钮,一个名称为Labell的标签,然后编写如下事件过程:
PrivateSubCommandl_C1ick()
S=0
Fori=1to15
x=2*i-1
1fxMod3=0Thens=s+1
Nexti
Label1.Caption=s
EndSub
程序运行后,单击命令按钮,则标签中显示的内容是:
()
A.1B.5C.27D.45
20.在窗体上画一个名称为Command1的命令按钮,然后编写如下事件过程:
PrivateSubCommand1_Click()
x=0
n=InputBox("")
Fori=1Ton
Forj=1Toi
x=x+1
Nextj
Nexti
Printx
EndSub
程序运行后,单击命令按钮,如果输入3,则在窗体上显示的内容是()。
A.3B.4C.5D.6
二、填空题
1.执行下面的程序段后,b的值为。
a=300
b=20
a=a+b
b=a-b
a=a-b
2.当VB执行下面语句后,A的值为。
A=1
IfA>0ThenA=A+1
IfA>1ThenA=0
A.0B.1C.2D.3
3.有如下程序段:
x=-5
s=InputBox("请输入s的值:
")
SelectCases
CaseIs>0
y=x+1
CaseIs=0
y=x+2
CaseElse
y=x+3
EndSelect
Printx;y
运行时,从键盘输入-5,输出的结果是。
4.执行下面的程序段后,S的值为。
s=5
Fori=2.6To4.9Step0.6
s=s+1
Nexti
5.下面For-Next语句的循环次数是。
Forx=1.4To3.2Step0.4
6.下列程序的运行结果为。
x=0
Fori=20To1Step-2
x=x+i\5
Nexti
Print"x=";x
7.在Activate事件过程中,写入下面的程序:
PrivateSubForm_Activate()
DimSAsString,aAsString,bAsString
a="*":
b="$"
Fori=1to4
Ifi/2=Int(i/2)Then
S=String(Len(A.+i,B.
Else
S=String(Len(A.+i,A.
EndIf
PrintS;
Nexti
EndSub
程序运行后,显示结果为。
9.下列程序的运行结果为。
Fori=1To10
IfiMod3<>0AndiMod7<>0Then
s=s+i
EndIf
Nexti
Print"sum=";s
9.下列程序的运行结果为。
S=1
DoWhilen^2<=10
n=s
Fori=1Ton
s=s+i
Nexti
Loop
Prints
10.设有如下程序:
PrivateSubForm_Click()
DimnAsInteger,sAsInteger
n=8
s=0
Do
s=s+n
n=n-1
LoopWhilen>0
Prints
EndSub
程序运行后,单击窗体,输出结果为。
三、程序填空
1.以下程序的功能是:
求1/(1*2)+1/(2*3)+……1/(20+21)请将下列程序补充完整。
DimsAsDouble,nAsInteger
s=0
n=1
Do
s=s+
n=n+1
Loop
Prints
2.下面程序的作用是利用随机函数产生10个100—200之间(包含100、200)的随机数,打印其中为5的倍数的数,并求出它们的总和。
请将下列程序补充完整。
PrivateSubCommand1_Click()
Form=1To10
x=Int(Rnd* )
If Then
Printx;
k1=k1+x
EndIf
Nextm
Print"k1=";k1
EndSub
3.下列程序是判断一个整数(>=3)是否为素数,请补充完整。
DimnAsInteger
n=InputBox("请输入一个整数(>=3)")
k=Int(Sqr(n))
i=2
swit=0
Whilei<=kAndswit=0
IfnModi=0Then
EndIf
Wend
Ifswit=0Then
Printn;"是一个素数。
"
Else
Printn;"不是一个素数。
"
EndIf
4.以下程序的功能是:
从键盘上输入若干个数字,当输入负数时结束输入,统计出数字的平均值,输出结果,请填空。
PrivateSubForm_click()
Dimx,yAsSingle
DimzAsInteger
X=InputBox("Enterascore")
Dowhile
Y=y+x
Z=z+1
x=InputBox("Enterascore")
Loop
Ifz=0Then
z=l
EndIf
y=
Printy
EndSub
[答案]
一、选择题
1.C2.C3.B4.A5.A6.D7.D8.B9.A10.A11.D12.C13.B14.B15.D16.B17.A18.B19.B20.D
二、填空题
1.3002.03.-5-24.95.56.X=187.**$$$****$$$$$
8.Sum=309.2010.36
三、程序填空
1.1/(n*(n+1))untiln>202.101+100xmod5=0
3.swit=1i=i+14.X>=0y/z