学生复习课VB.docx
《学生复习课VB.docx》由会员分享,可在线阅读,更多相关《学生复习课VB.docx(22页珍藏版)》请在冰豆网上搜索。
学生复习课VB
Vb的基本概念
VisualBasic最突出的特点是事件驱动编程机制,(VB的程序设计方法是面向对象、事件驱动)
VisualBasic的执行方式是编译执行、只有在立即执行方式下为解释执行
VisualBasic集成环境的主窗口中含有标题栏、菜单栏、工具栏等基本信息
在VisualBasic中,窗体文件的扩展名为.frm,工程文件的扩展名是.vbp
类、对象、属性、方法、事件的概念
对象的三要素(基本特征)是:
属性、方法、事件;对象是类得具体体现,(工具栏是VB的标准类、窗体中的控件是对象)
对象的数据为属性:
描述和反映对象的特征,两种设置方法
事件是在对象上所发生的事情,其事件的名称只能由系统指定,例如click、GotFocus
方法在VB中是一种特殊的过程(函数),属于对象的行为个动作,供用户直接调用。
例如:
form1.print可以省略form1print就是方法,一般在调用方法是要用对象名.方法格式调用
注意:
方法不是对事件的响应
Vb程序设计是两个部分组成
1、界面设计部分:
控件及控件属性设置
VisualBasic窗体设计器的主要功能是建立用户界面,即界面设计。
控件设计常用控件有:
窗体(form)窗体本身是一个对象,又是其他对象的容器或者是载体
主要属性是caption用来显示窗体的标题;窗体文件的扩展名为FRM;
窗体的Name属性指定窗体的名称,用来标识一个窗体;属性BorderStyle是用来改变窗体边框线类型;如果要改变窗体的标题,则需要设置的属性是Caption
主要事件是click、Load(是窗体装入时触发的事件,一般用来进行初始化)
窗体的主要方法是Print、cls
命令按钮(command)主要属性是caption、Enabled(使命令按钮对用户产生的命令无效)
主要事件是click;,但没有双击(DblClick)事件
标签(lebel)主要属性是caption、BackStyle(设置标签是否透明=0为透明)、
BorderStyle(设置标签边框=0为没有边框、
Alignment、(标题栏显示方式,居中显示时Alignment=2)
文本框(TextBox)主要属性是:
Text、MultiLine(多行属性)、ScrollBars(滚动条属性)
注意当MultiLine=true时,ScrollBars才有效。
Locked,要求只能显示信息,不能输入时Text1.Locked=True
ForeColor属性来设置字体颜色;若要求从文本框中输入密码时在文本框中只显示*号,则应当在此文本框的属性窗口中设置Passwordchar属性值为*
要想设置或返回文本框中的内容则可利用text属性进行编程
主要事件是:
Change、Keypress、LostFoucus(失去焦点)、GotFoucus(获得焦点)
Text属性值发生改变时引发Change事件
计时器(Time)主要属性是Interval(设置时间间隔,单位毫秒)、Enabled(是否响应)
主要事件是:
Timer事件
计时器控件的Interval属性用于设置Timer事件发生的时间间隔,为了暂时关闭计时器,应把该计时器的Enabled属性设置为False,如果要求设置定时器时间间隔为1秒钟,那么它的Interval属性值应该等于1000。
计时器控件只能响应一个事件,该事件的名称是Timer
列表框(LestBox)主要属性是List、
主要方法是:
AddItem(向列表框添加列表项)、Clear(清除列表框中的所有内容)
组合框(ComboBox)组合了文本框和列表框的特性
复选框(Check)属性Value的值有三种,分别是0,1(表示复选框被选中),2
注意:
ListBox、ComboBox、TextBox控件包含滚动条,Label控件不包含滚动条;
任何控件都有Name、Width(宽度)和Height(高度)属性
控件的Visible属性是使控件是否可见,控件的Enabled属性是使控件是否有效
修改对象的属性常用两种方法:
动态修改和静态修改
决定控件上文字的字体、字形、大小及效果的属性是FONT
通过代码设置对象属性的一般格式是:
对象名.属性名=属性值
界面设计方法:
在VisualBasic窗体设计器中进行
控件布局:
确定一个控件在窗体上左右位置的属性是Left,上下位置的属性是Top
2、代码设计部分(包含了VB的程序设计语言内容)
vb中常用的数据类型、变量、常量、函数与表达式的计算
(在计算机中,不是任何数字都可以精确地表示出来)
变量的定义(说明方法)dim变量名as类型
DimxAsDouble语句的作用是将x定义为双精度类型的变量
DimstrasString*256声明一个长度为256个字符的定长字符串变量str
DimTestDateAsDate,为变量TestDate正确赋值的表达方式是:
TextDate=#1/1/2002#
VB程序中合法的变量名的判断:
A ab7B 7abC IfD a*bcEa#x
注意:
变量未赋值时,数值型变量的值为0
如果将布尔常量值TRUE赋值给一个整型变量,则整型变量的值为-1
Integer类型的数据由2字节组成,Long类型的数据由4字节组成
如果一个变量未经定义就直接使用,则该变量的类型为Variant
常用函数应用:
p59-62
用于从字符串左边截取字符的函数是Left()
可获得当前系统日期的函数是Date()
设有如下程序段:
a$="BeijingShanghai"
b$=Mid(a$,InStr(a$,"g")+1),执行上面的程序段后,变量b$的值为Shanghai
Int(12345.6789*100+0.5)/100的值为12345.68
DimxAsInteger,如果Sgn(x)的值为-1,则x的值是小于0的整
函数String(n,"str")的功能是返回由n个给定串的首字符组成的字符串
函数UCase(Mid(″visualbasic″,8,8))的值为BASIC,
InStr(″VB程序设计教程″,″程序″)的值为3
用随机函数为整型变量x赋值一个两位正整数的语句是x=90*Rnd+10
函数Int(Rnd(0)*10)的取值范围为 [0,10)
注意:
Rnd函数的写法为Rnd(0)或Rnd()或Rnd,且在调用Rnd前要加Randomize语句;
在某一个范围[a,b]内的随机整数的表达式是:
int(Rnd*(b-a+1)+a)
表达式求值:
注意表达式的运算法则和运算次序及表达式的类型
运算符"\"两边的操作数若类型不同,则:
先取整为Integer类型再运算
表达式Sqr(a+b)^3*2中最先进行运算的是+
例如:
表达式Int(Rnd*4+1)*(Int(4*Rnd-1))值的范围是[-4,8],
表达式(7\3+1)*3的值是9;
表达式((Mmod10)*10+M\10)实现将变量M的数字进行交换,M=24
表达式2*3^2+2*8/4+3^2的值为31,
表达式5Mod3+3\5*2的值是2;
设a=3,b=5,则表达式(a>b)Or(b>0)值为True
表达式2*4^2-2*6/3+3\2的值是29,
表达式5^2Mod252^2的值是1,
Abs(-8)+Len("ABCD")的值是12
Int(8*Sqr(36(*10^(-2)*10+0.5)/10的值是5
求下列逻辑表达式的值
Not(3+5<4+6) 2>1And3<21>2Or2>3 Not(1>2)
设x=4,y=8,z=7求表达式xz)Orz表达式2*4^2-2*6/3+3\2的值是29;
表达式93 Mod 2^2的值是1;
设A=7,B=3,C=4,则AMOD3+B^2\C的值是3;
逻辑表达式Not"A">"E"and9<3or9>3值为True;
逻辑表达式"12345"<>"12345"&"ABC"的值是True
已知A$="12345678",则表达式val(Left$(A$,4)+Mid$(A$,4,2))的值为123445;
设S="中华人民共和国",表达式Left(S,1)+Right(S,1)+Mid(S,3,2)的值为"中国人民";
表达式Len("123程序设计ABC")的值是10
写表达式
数学关系3≤x<10表示成正确的VB表达式是:
3<=x And x<10 或 x>=3 and x<10;
数学式子sin30°写成VB表达式是:
Sin(30*3.14/180);
表示x是5的倍数或是9的倍数的逻辑表达式是:
x mod 5=0 or x mod 9=0;
数学表达式55Andx<8;
数学表达式X2+3XY对应的VB算术表达式是X*X+3*X*Y;
X是小于100的非负数,用VB表达式表达正确的是0<=XandX<100
如果X是一个正实数,将百分位四舍五入,保留一位小数的表达方式是 0.1*Int(10*(X+0.05)),
对x的第3位小数四舍五入的表达式是0.01*Int(100*(X+0.005))
能正确表示条件"整型变量x值是大于等于-5并且小于等于5"的逻辑表达式为:
-5<=xandx<=5
VB的语句
输入/输出
输出方法:
Print;
语句Print"5*5"的显示结果是5*5,print 5*5\5/5输出结果是25
设a=10,b=5,c=1,执行语句Printa>b>c后,窗体上显示的是False
PrintFormat$(32548.5,"000,000.00")语句的输出结果是032,548.50
PrintFormat(123,“####”)执行之后的结果为123
若a=345.62,则执行PrintFormat(a,“+#.000”)后a的值为+345.620
使“计算机技术”在当前窗体上输出的语句是Print"计算机技术"
文本框和标签输出
MsgBox语句产生一消息框,请注意使用格式。
P79
MsgBox函数的第一个参数是一个字符串,该参数指定在对话框中出现的文本(提示)信息
输入方法:
从文本框中取出数据
用InputBox函数设计的对话框输入数据P78
例如:
从键盘输入一个作为双精度变量a的值的语句是 a=Val(InputBox("请输入一个值"))
设有语句x=InputBox("输入数值","0","示例")程序运行后,
如果从键盘上输入数值10,并按回车键,变量X的值是字符串"10"
执行语句:
a=InputBox("Today","Tomorrow","Yesterday")
将显示一个输入对话框,在对话框的标题中显示的信息是Tomorrow,在对话框的输入区中显示的信息是Yesterday
注意:
InputBox函数返回值的类型为字符串,语句使用格式。
执行一次InputBox函数不可以同时输入多个数值
用赋值语句输入
例如:
执行下列语句
a$="VisualBasicPrograming"
b$="Quick"
c$=b$&Ucase(Mid$(a$,7,6))&Right$(a$,11)
则变量c$的值为QuickBASICPrograming
a%=10用来声明a是一个取值为10的整型变量
VB提供了结构化程序设计的三种基本结构,三种基本结构是:
顺序结构/选择结构/循环结构
顺序结构
下面程序运行后,窗体(Form1)中输出的结果是TrueTrue
PrivateSubForm_Load()
Form1.AutoRedraw=True
X=3:
y=5
Printx=3;y=5
执行以下程序段后,变量c$的值为(QuickBASICPrograming)
a$="VisualBasicPrograming"
b$="Quick"
c$=b$&Ucase(Mid$(a$,7,6))&Right$(a$,11)
在窗体中添加一个命令按钮,并编写如下程序:
PrivateSubCommand1Click()
X=1:
Y=2:
Z=3
X=Y:
Y=Z:
Z=X
PrintZ
EndSub程序执行后,输出的结果是 2
在窗体上画一个名称为Command1的命令按钮,然后编写如下事件过程:
PrivateSubCommand1_Click()
a$="VisualBasic"
PrintString(3,a$)
EndSub程序运行后,在窗体上显示的内容是VVV
下面程序运行后,窗体(Form1)中输出的结果是 -17
PrivateSubForm1_Load()
Form1.AutoRedraw=True
x=-17.8
PrintSgn(x)*Int(Abs(x))
EndSub
下列程序的运行结果为:
0
DimxAsInteger,yAsInteger
x=12.4
y=20.9
print(x+y)mod3
有程序PrivateSubCommand1_Click()
a=InputBox("输入第一个数")注意:
InputBox函数返回值的类型
b=InputBox("输入第一个数")
c=a+b
Printc
EndSub
那么在2次输入框中输入12和34之后,c的值应该为"1234"
程序:
PrivateSubCommand1_Click()
A="123":
b="456":
C=Val(a)+Val(b):
Printc
EndSub程序执行的结果是579
在窗体(Name属性为Formal)上画两个文本框(其Name属性分别为Text1和Text2)和一个命令按钮(Name属性为Command1),然后编写如下两个事件过程:
PrivateSubCommand1_Click()
A=Text.Text+Text2.Text
Printa
EndSub
PrivateSubFormm_Load()
Text1.Text=""
Text2.Text=""
EndSub
程序运行后,在第一个文本框(Text1)和第二个文本框(Text2)中分别输入123和321,然后单击命令按钮,则输出结果为 123321
在窗体上画一个命令按钮,然后编写如下事件过程:
PrivateSubCommand1_Click()
A=″12″
B=″34″
C=″56″
PrintA+B+C字符串连接p63
EndSub
程序运行后,单击命令按钮,输出结果是123456
可以将变量a、b值互换的语句是c=a:
a=b:
b=c
或a=a+b:
b=a-b:
a=a–b
分支选择结构
语句的写法
分析下列语句的正确性
A IfA≠BThenPrint"A不等于B"
B IfA<>BThenPrintf"A不等于B"
C IfA<>BThenPrint"A不等于B"
D IfA≠BPrint"A不等于B"
如果A为整数,且|A|>=100,则打印“OK”,否则打印“Error”,表示这个条件语句的单行语句是:
IfFix(A)=AAndABS(A)>=100ThenPrint"Ok"ElsePrint"Error"
运行结果
a=sqr(3):
b=sqr
(2):
c=a>b:
print c
程序输出结果是True注意这里使用的是多语句行
设a=6,则执行x=IIf(a>5,-1,0)后,x的值为–1注意:
IIf(a>5,-1,0)中的条件函数
给出下列程序运行的结果
(1)x=5
y=-6
IfNotx>0Thenx=y-3Elsey=x+3if语句在一行内书写
Printx-y;y-x结果-33
(2)1=4
J2=9
IfJ1(3)设a=5,b=6,c=7,d=8,则执行x=IIF((a>b)And(c(4)下列程序段执行结果为:
-33
x=5
y=-6
IfNotx>0Thenx=y-3Elsey=x+3
Printx-y;y-x注意:
print输出时的;使用
(5)下列程序段的执行结果为:
I=4
a=75
Ifa>60ThenI=1
Ifa>70ThenI=2
Ifa>80ThenI=3
Ifa<90ThenI=4
Print"I=";I
(6)下面程序段执行结果为:
pass
x=Int(Rnd()+3)
SelectCasex
Case5
Print"excellent"
Case4
Print"good"
Case3
Print"pass"
CaseElse
Print"fail"
EndSelect
(6)计算z的值,当x大于等于y时,z=x;否则z=y。
下列语句错误的是A
A .Ifx>=yThenz=x:
z=yB. Ifx>=yThenz=xElsez=y
C. z=y:
Ifx>=yThenz=xD .Ifx<=yThenz=yElsez=x
(7)如果X的值小于或等于Y的平方,则打印“OK”,表示这个条件的单行格式If语句是D
A. Ifx≤y^2ThenPrint"Ok"B. Ifx≤y^2Print"Ok"
C. Ifx<=y^2Then"Ok"D. Ifx<=y^2ThenPrint"Ok"
循环结构
循环结构的分类和执行过程
1)在DoUntil…Loop循环中,判断循环表达式与结束循环的关系是先判断循环表达式,当表达式值为真时结束循环;在DoWhile…Loop循环中,判断循环表达式与结束循环的关系是先判断循环表达式,当表达式值为假时结束循环
2)下面的循环结构DoWhile如果条件成立,则执行循环体,否则不执行;DoUntil如果条件不成立,则执行循环体,否则不执行
DoWhile/Until条件
循环体
Loop
3)Do...Loop循环分为前测型Do...Loop循环和后测型Do...Loop循环,那么当条件为假的时候,前测型Do...Loop循环执行__0__次循环,而后测型Do...Loop循环执行__1_次循环
4)要使下列For语句循环执行20次,循环变量的初值应当是多少?
33
For k= 33To -5 Step -2注意循环次数的计算
循环结构的执行结果分析
1)在窗体上画两个文本框(其Name属性分别为Text1和Text2)和一个命令按钮(其Name属性为Command1),然后编写如下的事件过程:
PrivateSubCommand1_Click()
X=0
DoWhilex<50
X=(x+2)*(x+3)
N=n+1
Loop
Text1.Text=Str(n)
Text2.Text=Str(x)
EndSub
程序执行后,单击命令按钮,在两个文本框中显示的值分别为2和72
2)有如下程序
PrivateSubForm_Click()
Fori=1.7To5.9Step0.9循环参数为实数
a=a+1
Printa
Nexti
EndSub程序运行时,共执行循环体的次数是5
3)若i的初值为8,则下列循环语句的循环次数为(5)次
DoWhilei<=17
i=i+2
Loop
4)设有以下循环结构Do循环体LoopWhile<条件>则以下叙述中错误的是A
A 若"条件"是一个为0的常数,则一次也不执行循环体
B "条件"可以是关系表达式、逻辑表达式或常数
C 循环体中可以使用ExitDo语句
D 如果"条件"总是为True,则不停地执行循环体
5)以下程序段的输出结果为(4)
x=1
y=4
DoUntily>4
x=x*y
y=y+1
Loop
Printx
6)执行下面的程序段,x的值为
PrivateSubCommand1_Click()
Fori=1To9
a=a+i
Nexti
x=Val(i)
MsgBoxx
EndSub_.参考答案10
7)阅读下面的程序段:
ForI=1To3
Forj=1ToI
Fork=jTo3
A=A+1
Nextk
Nextj
NextI注意:
循环的执行过程
执行上面的三重循环后,a的值为14
8)设有如下程序:
PrivateSubCommand1_Click()
DimcAsInteger,dAsInteger
c=4
d=InputBox("请输入一个整数")
DoWhiled>0
Ifd>cThen
c=c+1
EndIf
d=InputBox("请输入一个整数")
Loop
Printc+d
EndSub
程序运行后,单击命令按钮如果在输入对话框中依次输入1、2、3、4、5、6、7、8、9、0,则输出结果是9
数组
数组的定义和数组元素的个数计算
1)用下面语句所定义的数组的元素个数是(9)
Dima(-3to5)asinteger
2)设有数组声明语句:
OptionBase0
DimB(-1To10,2To9,20)AsInteger则数组B中共有(2016)个元素
3)若有Dima(6,3to8)assingle,说明a数组里面包括42个数组元素
4)使用ReDim语句不但可以改变动态数组的下标界限,而且可以改变其维数
带数组的程序运行
1)执行以下Command1的Click事件过程
OptionBase0
PrivateSubCommand1_Click()
Dima
a=Array("a","b",