VB知识点总结.docx
《VB知识点总结.docx》由会员分享,可在线阅读,更多相关《VB知识点总结.docx(42页珍藏版)》请在冰豆网上搜索。
VB知识点总结
VB概述
§1VB的特点
1.可视化的设计平台
2.面向对象的设计方法
对象具有自己的属性(对象的性质)、方法(对象的动作)和事件(对象的响应),它构成对象的三个要素。
3.事件驱动的编程机制
4.集成化的开发环境
5.结构化的设计语言
§4VB程序设计
VB应用程序的开发有三个步骤:
(1)设计应用程序界面。
(2)设置对象的属性
(3)编写事件驱动代码
保存工程
简便方法:
执行“文件/保存工程”命令
(第一次保存文件)系统先打开“文件另存为”对话框,保存窗体文件(或标准模块文件),然后再打开“工程另存为”对话框,保存工程文件。
保存修改后的工程文件
选择“文件/保存工程”命令保存所做的修改,(保存与工程有关的修改过的窗体文件或标准模块文件)。
VB基础知识
常量
(1)字符串常量
用双引号括起来的字符序列(除双引号和回车符)。
例如:
"China"
“Iamastudent.”
"95.3%"
"计算机软件"
(2)数值常量
整型1234(十进制)
长整型12345678(十进制)
单精度数:
有三种形式,12.34,123!
,123.45E-5
双精度数:
有两种形式,12.34#,123.45D-5
在常数后面加上类型说明符:
%整型&长整型!
单精度
#双精度$字符串型。
2.符号常量
格式:
Const常量名=表达式
功能:
定义一个符号常量来表示表达式的值。
说明:
“常量名”可加以类型说明符。
符号常量的类型由类型说明符或表达式的类型决定。
ConstPI=3.141593
变量
1.变量的命名
变量名以字母开头,后跟字母、数字和下划线组成
说明:
(1)变量名不能是保留字
(2)VB变量名不区分字母大小写。
2.变量的类型
(1)用类型说明符
在变量的尾部加上类型说明符:
%整型&长整型!
单精度
#双精度$字符串型。
例如:
Num%,Str1$均是合法的变量名
在引用时,可以省略类型说明符。
(2)定义变量时声明其类型
格式:
Dim变量名As类型
“类型”可为基本数据类型或用户自定义的类型。
Boolean(布尔型)Long(长整型)
Single(单精度型)Double(双精度型)
String(字符串型)Variant(变体型)
用户自定义类型
例如:
Dimstr1AsString,countryAsString*20
DimiAsInteger,sumAsSingle
定义变量后,数值型变量的初值为0
字符型变量的初值为空字符串
其中:
变长字符串的初值是长度为0
定长字符串的初值的长度等于定义值。
3.变体类型变量
如未定义类型的变量
例如:
DimsumAsVariant
Dimsum
运算符与表达式
1.算术运算符(8种)
优先级(从高到低):
指数(∧)
取负(-)
乘法、浮点除法(*,/)
整数除法(\)
取模(Mod)
加法、减法(+,-)。
整除:
被除数和除数为整数,结果为整数。
31.7\5.88
32\6结果为:
5
取模(求余)运算:
结果为整数除法的余数。
31.77Mod5.88(四舍五入)
32Mod6,余数为2
3Mod6余数为3
字符串表达式
字符串运算符:
&或+
功能:
把字符串连接成一个字符串。
说明:
(1)符号“&”与字符串变量之间应间隔一个空格,
例如:
str1&str2
(2)“&”能强制把其它类型的数据转换为字符串,
而“+”不能。
例如:
2008&"奥运会"2008奥运会
"2008"+"奥运会"2008奥运会
注意:
Print"123"+567结果:
690
Print"abc"+567出错:
类型不匹配
常用内部函数
数学函数
函数
功能
Abs(x)
返回x的绝对值
Int(x)
求不大于x的最大整数
Int(7.8)结果为7,Int(-7.8)结果为-8
Cint(x)
把x小数四舍五入,转换为整数,
Exp(x)
计算ex,e是自然数2.718281
Log(x)
求x的自然对数
Sqr(x)
求x的平方根
Rnd
返回0~1之间的随机数:
字符串函数
Len(str)
返回字符串长度
Left$(str,n)
取字符串左边n个字符
Right$(str,n)
取字符串右边n个字符
Mid$(str,p[,n])
从位置p开始,取n个字符,如n省略,取到最后
Str$(num)
数值转字符串
Val(str)
字符串转数值
Asc(str)
返回字符串首字母ASCII码
Chr$(n)
ASCII码转字符
说明:
(l)三角函数Sin、Cos和Tan自变量的单位是弧度
反正切函数Atn(x)的返回值单位为弧度。
度转换为弧度:
1°=3.14159/180*x
(2)用函数Rnd可以产生不同的随机数。
产生指定范围的随机数:
产生0~n之间的随机数(不含0和n)
Rnd*n
产生0~n之间的随机整数(含0,不含n)
Int(Rnd*n)
产生a~b之间的随机整数(含a,不含b)
Int((b-a)*Rnd+a)
产生a~b之间的随机整数(含a和b)
Int((b-a+1)*Rnd+a)
顺序结构
结构化程序三种基本结构:
顺序结构、选择结构和循环结构。
1赋值语句
变量=表达式
属性名=属性值
注意:
当变量类型与表达式的类型不同时,VB自动将表达式的类型强制
转换为变量类型。
例如:
DimNumAsInteger
Num=8.89(将9赋给Num,四舍五人)
3数据输入
方法1:
用文本框
例:
DimmAsInteger
m=Val(Text1.Text)
方法2:
用Inputbox()函数
例:
m=Val(InputBox("enterm:
"))
方法3:
从文件输入
Input#2,m
4输出数据
方法1:
用文本框
例:
Text1.Text=n
或Text1=n
方法2:
用标签
例:
Label1.Caption=n
方法3:
用Print方法
例:
Printn
方法4:
输出到列表框
例:
List1.AddItemn
方法5:
输出到文件
例:
Open"abc.dat"ForOutputAs#1
Write#1,n
【例】交换变量a、b的值。
用中间变量t作暂存单元,必须与交换的变量同类型。
t=a:
a=b:
b=t
3.2窗体
窗体常用的方法Print,
窗体事件
1.Click事件
2.Load事件
Load是把窗体装入工作区事件,
Form_Load()事件是执行程序时自动触发的,因此常用来在
启动程序时对属性和变量进行初始化。
3.UnLoad事件
关闭窗体触发该事件
选择结构
满足条件为“真”,用“True”表示;
不满足条件为“假”,用“False”表示。
关系表达式
1.关系运算符(6种)
=、<>、<、>、<=、>=
优先级相同,运算从左到右。
2.关系表达式
例如:
“apply”>“apple”
按ASCII码逐字符进行比较。
空格<“0”…“9”<“A”…“Z”<“a”…“z”
“apply”>“apple”结果为True
逻辑表达式
逻辑运算符:
Not、And、Or
优先级:
逻辑非(Not)、逻辑与(And)、逻辑或(Or)
注意:
表示:
a≤x≤b
a<=xAndx<=b
选择结构
1.单行If语句
If条件Then语句组1[Else语句组2]
语句组:
各语句间需用“:
”分隔。
2.块结构If语句
If条件Then
语句块1
Else
语句块2
EndIf
例:
计算分段函数
1+x(x≥0)
y=
1-2x(x<0)
Ifx>=0Then
y=1+x
Else
y=1-2*x
EndIf
用单行If语句:
Ifx>=0Theny=1+xElsey=1-2*x
或:
Ifx>=0Theny=1+x
Ifx<0Theny=1-2*x
3.多分支选择结构
If条件1Then
语句块1
ElseIf条件2Then
语句块2
ElseIf条件3Then
语句块3
……
Else
语句块n+1
EndIf
从多个条件中,选择执行一个语句块
“纵然分支众多,仅选其一”
说明:
当有多个条件为真时,只能执行最前面的一个语句块。
注意:
ElseIf之间不能有空格
【例】学生成绩判定。
PrivateSubCommand1_Click()
x=Val(InputBox("输入学生成绩:
"))
Ifx>=90Then
Print“优”
ElseIfx>=80Then
Print“良”
ElseIfx>=70Then
Print“中”
ElseIfx>60Then
Print“及格”
Else
Print“不及格”
EndIf
EndSub
4.2.4IIf函数
IIf是单行If语句的简单版本。
变量=IIf(条件,True部分,False部分)
注意:
IIf函数中的三个参数都不能省略。
例:
计算分段函数
1+x(x≥0)
y=
1-2x(x<0)
PrivateSubCommand1_Click()
DimxAsSingle,yAsSingle
x=Val(Text1.Text)
y=IIf(x>=0,1+x,1-2*x)
Text2.Text=y
EndSub
【例】判闰年。
闰年的条件:
(1)被4整除,但不能被100整除;
(2)能被400整除。
最好:
IfxMod400=0Then
y$="是闰年"
ElseIfxMod4=0AndxMod100<>0Then
y$="是闰年"
Else
y$="不是闰年"
EndIf
也可
x=Val(InputBox("输入年份"))
IfxMod4=0andxMod100<>0orxMod400=0Then
y$="是闰年"
Else
y$="不是闰年"
EndIf
4.SelectCase语句
用于实现多分支结构。
SelectCase测试表达式
Case条件1
语句块1
Case条件2
语句块2
……
CaseElse
语句块n+1
EndSelect
功能:
从多个条件中选择执行第一个符合条件的语句,都不符合,
则执行CaseElse后的语句块。
注意条件:
常量表:
1,3,5
测试范围:
10to20,“a”to“z”
比较范围:
Is<10
(不能为逻辑表达式)
【例】学生成绩评定
PrivateSubCommand1_Click()
x=Val(InputBox("输入考试成绩"))
SelectCasex
Case90To100
y$="优"
Case80To89
y$="良"
Case70To79
y$="中"
Case60To69
y$="及格"
Case0To59
y$="不及格"
CaseElse
y$="输入错误"
EndSelect
Form1.Print"成绩:
";x,"等级:
";y$
EndSub
循环结构
“当型”循环:
当条件为真,执行循环体。
“直到型”循环:
做循环,直到条件为真为止。
1.For-Next循环
常用于循环次数已知。
For循环变量=初值To终值[Step步长]
循环体
[ExitFor]
Next循环变量
【例】计算n!
。
PrivateSubCommand1_Click()
n=Val(InputBox("输入一个自然数"))
Term=1
Fori=1Ton
Term=Term*i
Nexti
Printn;"!
=";Term
EndSub
【例】计算2+4+6+……+100的值。
PrivateSubCommand1_Click()
Sum=0
Forx=2To100Step2
Sum=Sum+x
Nextx
Form1.Print"Sum=";Sum
EndSub
【例】计算1+2!
+3!
+……+10!
PrivateSubCommand1_Click()
T=1
S=0
Fork=1To10
T=T*k
S=S+T
Nextk
PrintS
EndSub
2.While-Wend循环
适合处理循环次数未知的循环。
While条件
语句块
Wend
功能:
当条件为真时执行循环。
【例】计算1+2+3+……+100
PrivateSubCommand1_Click()
DimnAsInteger,sAsInteger
s=0
n=1
Whilen<=100
s=s+n
n=n+1
Wend
Lable1.Caption=“1+2++3+……+100=”&s
EndSub
3.Do-Loop循环
Do
语句块
[ExitDo]
Loop[While|Until条件]
Do[While|Until条件]
语句块
[ExitDo]
Loop
功能:
While条件——当“条件”为True执行循环体。
Until条件——“条件”为False执行循环体。
如无条件,则为死循环。
说明:
格式1:
“先循环,后判断”,至少执行一次循环。
格式2:
“先判断,后循环”,如条件不满足,则一次循环也不执行。
【例】计算1+2+3+……+100
s=0
n=1
Dowhilen<=100
s=s+n
n=n+1
Loop
也可
s=0
n=1
DoUntiln>100
s=s+n
n=n+1
Loop
【例】将十进制数转换为二进制数
PrivateSubForm_Click()
DimmAsInteger
m=InputBox("enterm:
")
a$=""
Whilem<>0
r=mMod2
a$=r&a$
m=m\2
Wend
Printa$
EndSub
注意:
a$=a$&r
则为:
4=001
列表框
列表框的方法
AddItem方法:
用于在列表框中插入一个列表项。
格式:
列表框.AddItem项目字符串[,索引值]
如省略索引值,则在列表框的最后插入新列表项。
【例】将文本框内容添加到列表框1
PrivateSubCommand1_Click()
List1.AddItemText1.Text
EndSub
多重循环
说明:
(1)必须完整嵌套,不得交叉。
(2)ExitFor语句和ExitDo语句只能退出当前层循环。
指定每行显示数据的个数
Forn=1to30
Printn;””;
IfnMod10=0ThenPrint
Nextn
'每显示10个数据换行
常用算法
(1)
1.不定方程求解。
【例】百鸡问题
x+y+z=100
5x+3y+z/3=100
PrivateSubCommand1_Click()
DimxAsInteger
DimyAsInteger,zAsInteger
Print"公鸡","母鸡","小鸡"
Forx=0To20
Fory=0To33
z=100-x-y
If5*x+3*y+z/3=100Then
Printx,y,z
EndIf
Nexty
Nextx
EndSub
2.求最大公约数和最小公倍数
辗转相除法:
【例】计算最大公约数和最小公倍数。
PrivateSubCommand1_Click()
DimmAsInteger,nAsInteger
DimuAsInteger,vAsInteger
m=Val(Text1.Text)
n=Val(Text2.Text)
Ifm>nThen
u=m:
v=n
Else
u=n:
v=m
EndIf
Do
r=uModv
u=v
v=r
LoopUntilr=0
Print"最大公约数:
";u
Print"最小公倍数:
";m*n/u
EndSub
或
r=uModv
DoWhiler<>0
u=v
v=r
r=uModv
Loop
Print"最大公约数:
";v
3.判素数(质数)
【例】判n是否为素数。
PrivateSubCommand1_Click()
DimnAsInteger,iAsInteger
n=Val(InputBox("输入正整数"))
Fori=2Ton-1
IfnModi=0ThenExitFor
Nexti
Ifi>n-1Then
Printn;"是质数"
Else
Printn;"不是质数"
EndIf
EndSub
例求100~200之间素数,并写入顺序文件。
PrivateSubCommand1_Click()
Open“shusu.dat”ForOutputAs#1
Forn=101To200step2
S=1‘是
Fori=2ToInt(Sqr(n))
IfnModi=0Then
S=0‘不是
ExitFor
EndIf
NextI
Ifs=1ThenWrite#1,n
Nextn
close#1
EndSub
添加到列表框:
List1.AddItemn
数组
6.1静态数组
编译时分配存储空间。
定义:
Dimb(3,4)AsLong
分配4×5个长整型变量的空间,
二维数组在内存按行的顺序存放
b(0,0)
b(0,1)
B(0,2)
b(0,3)
b(0,4)
b(1,0)
b(1,1)
B(1,2)
b(1,3)
b(1,4)
b(2,0)
b(2,1)
B(2,2)
b(2,3)
b(2,4)
b(3,0)
b(3,1)
B(3,2)
b(3,3)
b(3,4)
例:
Dimb(3,2to4,1to3)AsInteger
共分配4×3×3=36个元素,共72Byte
Option语句
格式:
OptionBase1
注意:
只能出现在窗体层或模块层
必须位于数组定义之前。
例:
OptionBase1
……
Dima(10)AsInteger,x(5,5)AsString
每一维下标的下界均从1开始。
动态数组
运行时分配内存区,
定义分两步进行:
(1)先在窗体层、标准模块或过程中Dim或Public声明一个
没有下标的数组。
(2)过程中用ReDim语句定义带下标的数组。
说明:
声明时不指定数组的维数
数组的维数由第一次出现的ReDim语句指定。
例如:
DimTest()AsInteger
DimnAsInteger
SubForm_click()
……
n=InputBox(”Enteravalue:
”)
ReDimTest(n)
……
EndSub
数组元素的引用
形式:
数组名(下标)
数组元素赋初值
运行前对数组进行初始化。
格式:
数组变量名=Array(初值表)
说明:
数组下标下界缺省为0,只能对一维数组初始化
【例】
DimaAsAsVariant
a=Array(1,2,3,4,5,6,7)
注意:
下标从0~6
【例】一维数组元素赋初值。
OptionBase1
PrivateSubForm_Click()
DimaAsVariant
a=Array(1,2,3,4,5,6,7)
Fori=1To7
Printa(i);
Nexti
EndSub
运行结果:
1234567
数组输入/输出
一般通过For循环语句和InputBox函数实现,
一维数组用单重循环。
二维数组采用双重循环。
【例】一维数组的输入和输出。
Fori=1To10
a(i)=InputBox("Enterdata:
")
Nexti
【例】二维数组的输入和输出。
123
456
789
Fori=1To3
Forj=1To3
a(i,j)=InputBox("enterdata:
")
Nextj
Nexti
Fori=1To3
Forj=1To3
Printa(i,j);"";
Nextj
Print
Nexti
【例】用Rnd产生10个0~100之间随机数。
Fori=1To10
a(i)=Int(100*Rnd)
Nexti
用户自定义类型
定义格式:
Type自定义类型名
元素名1As类型名
元素名2As类型名
……
元素名nAs类型名
EndType
其中:
类型名——可为任何基本类型,也可为用户自定义类型。
说明:
(1)一般在标准模块中定义,默认为Public。
如在窗体模块的“声明”段定义,则必须加上Private,
且只能在窗体模块中使用。
(2)自定义类型中的元素可以为数组名。
【例】
PrivateTypestudent
numAsString*8
nameAsStr