大学VB程序设计总结与复习.docx
- 文档编号:12771689
- 上传时间:2023-06-08
- 格式:DOCX
- 页数:57
- 大小:106.10KB
大学VB程序设计总结与复习.docx
《大学VB程序设计总结与复习.docx》由会员分享,可在线阅读,更多相关《大学VB程序设计总结与复习.docx(57页珍藏版)》请在冰点文库上搜索。
大学VB程序设计总结与复习
《VB程序设计》总结与复习
1、VB概述
1.1VB的特点
①可视化
②事件驱动的编程机制
③面向对象的程序设计
1.2VB的集成开发环境(IDE)
①概述
v集成开发环境的英文名字是IntegratedDevelopmentEnvironment,简称IDE,是指在该系统中,能够完成界面设计、代码编写、编译、运行、调试等诸多功能。
vVB集成开发环境可以开发标准Windows可执行程序外,还能开发ActiveXEXE程序、ActiveXDLL动态链接库程序、ActiveX控件等。
②包括的窗口
v对象窗口:
也称窗体设计窗口,程序设计人员可以在上面安排各种各样的对象,例如命令按钮、标签、文本框等。
v工具箱:
包含有若干个用于创建应用程序图形用户界面(GUI)所需的工具,工具箱中的每个图标对应一种工具。
v工程资源管理器窗口:
列出了当前应用程序所包含的各类文件的清单(窗体文件、标准模块文件和类文件等)。
v属性窗口:
列出了当前被选中的窗体或控件的所有属性,如大小、位置、颜色等,通过该窗口,程序设计人员可以设置对象的属性。
v窗体布局窗口:
用来安排应用程序窗体在屏幕上出现的位置,程序设计人员可通过鼠标的拖动操作来完成。
v代码窗口:
在代码窗口中,程序设计人员可输入自己编写的程序代码。
③三种状态
v设计状态,可修改界面,可修改代码
v运行状态,不可修改界面,不可修改代码
v调试状态,不可修改界面,可修改代码
1.3面向对象程序设计的基本概念
①对象与类
对象是既包含数据又包含处理数据的代码的独立个体(如窗体和控件)。
它是程序可以控制的实体,是类的实例化。
类(Class)是对象的抽象模型(原型),对象是类的具体表现。
以上程序界面有5个对象(窗体也是一个对象)。
②对象的三要素:
v属性:
对象的特征或性质。
v事件:
对象对某一动作或某一状态所进行的响应。
v方法:
对象能执行的动作。
PrivateSubCommand1_Click()
Label1.Caption="Good"
Form1.Print"Better"
EndSub
以上代码是Command1对象的Click事件过程代码。
第1句是一条赋值语句,把Label1对象的Caption属性赋值为"Good"。
第2句是调用Form1对象的Print方法。
③设置属性的两种方式
v在设计阶段,在属性窗口中进行交互式修改。
v在运行阶段,通过代码(通常是赋值语句)修改对象的属性值,如:
Label1.Caption="Good"。
④事件的分类
v用户事件,由用户的动作(鼠标或键盘)而引发的事件。
如Command1对象的Click事件。
v系统事件,由系统本身引发的事件。
如Timer1对象的Timer事件;窗体的Initialize、Load、QueryUnload、Unload事件。
1.4VB应用程序的建立
①基本步骤
v创建用户界面(在对象窗口中)
v设置对象属性(在属性窗口中)
v编写事件代码(在代码窗口中)
v保存工程
v运行程序
②代码编写规则
v一行只能有一条语句,如果要有多条语句,那么,语句之间用冒号(:
)间隔。
A=1B=2C=3×
A=1,B=2,C=3×
A=1:
B=2:
C=3√
v一条语句只能书写在一行上,如果要书写在多行上,需要在行末尾加续行符(空格再加上下划线_)
A=1+
2×
A=1+_
2√
③保存工程时要保存的文件
v窗体文件,文件的扩展名是:
.Frm。
v工程文件,文件的扩展名是:
.Vbp。
v模块文件,只有在工程中添加了模块后才有此文件,文件的扩展名是:
.Bas。
2、VB程序设计基础
2.1标识符
①分类:
保留字,自定义标识符。
②规则:
以字母开头,紧跟着字母或数字或下划线。
字母不区分大小写。
2.2数据类型
类型
类型名
类型说明符
占用存储空间
范围和精度
数值类型
整数类型
Integer
%
2字节
-32768~32767
长整数类型
Long
&
4字节
大约±21亿
单精度类型
Single
!
4字节
7位有效数字
双精度类型
Double
#
8字节
15位有效数字
非数值类型
字符串类型
String
$
不定
布尔类型
Boolean
1字节
只有两个值True和False
变体类型
Variant
不定
2.3常量
①分类:
直接常量和符号常量
②直接常量
数据类型
直接常量举例
数据类型
直接常量举例
Integer
123,-234,25%
Double
1.23,1.23#,1.2D+4,1.2D-4
Long
32768,123&
String
”abc”,”123”
Single
1.23!
,1.2E+4,1.2E-4
Boolean
True,False
注:
带类型说明符的常量(如25%、123&、1.23!
),是将其前面的值转换为相应类型。
③符号常量需要用Const语句定义,如:
ConstMAX_AGEAsInteger=100
ConstPI=3.14159
2.4局部变量
①局部变量的声明
v用Dim语句或Static语句声明。
v声明变量时,变量名后没有As子句则意味该变量为变体(Variant)类型,如:
Dimx,yAsInteger‘x为变体类型,y为Integer类型
v变量名除遵循标识符的规则外,还不得与保留字(如If、End等)重名。
②局部变量分类:
v动态变量(用Dim语句声明的变量),进入过程时,每次都初始化为0。
v静态变量(用Static语句声明的变量),进入过程时,保留上一次的值,最初值为0。
PrivateSubCommand1_Click()
DimxAsInteger
StaticyAsInteger
x=x+1:
y=y+1:
Printx,y
EndSub
注:
x是动态变量,y是静态变量。
多次单击命令按钮Command1,输出的结果是:
第1次:
11
第2次:
12
第3次:
13
以此类推
2.5运算符
①算术运算符:
v作用
运算符
作用
举例
^
乘方
3^2的值是9
-
求负
-a
*
乘法
3*2的值是6
/
除法
3/2的值是1.5
\
整除
3\2的值是1,2\3的值是0
Mod
求余
3Mod2的值是1,2Mod3的值是2,4Mod2的值是0
+
加法
2+3的值是5
-
减法
2-3的值是-1
v优先级
⏹上表中排在前面的优先级高,*和/的优先级相同,+和-的优先级相同
⏹先优先级高的运算,后优先级低的运算;同一优先级,自左至右运算。
例:
1+2*3^4-5*6Mod7
=1+2*81-5*6Mod7=1+162-30Mod7=1+162-2=163-2=161
②关系运算符
v作用
运算符
对应数学运算符
举例
>
>
1>1结果为False,1>2结果为False,2>1结果为True
>=
≥
1>=1结果为True,1>=2结果为False,2>=1结果为True
<
<
1<1结果为False,1<2结果为True,2<1结果为False
<=
≤
1<=1结果为True,1<=2结果为True,2<=1结果为False
=
=
1=1结果为True,1=2结果为False,2=1结果为False
<>
≠
1<>1结果为False,1<>2结果为True,2<>1结果为True
v注意:
关系运算通常不能连续运算,数学中的1≤x<2,不能简单地写成1<=x<2,在VB中应该写成(1<=x)And(x<2)
③逻辑运算符
v作用
运算符
作用
运算规则
Not
逻辑非
NotTrue结果为False,NotFalse结果为True
And
逻辑与
TrueAndTrue结果为True
FalseAndx,无论x为True或False,结果都为False
Or
逻辑或
FalseOrFalse结果为False
TrueOrx,无论x为True或False,结果都为True
v优先级:
由高到低Not,And,Or
v应用举例
判断x和y都为正数:
(x>0)And(y>0)
判断年份n是否为闰年:
(nMod4=0)And(nMod100<>0)Or(nMod400=0)
④字符串连接运算符&,+
”123”&”456”=”123456”
”123”+”456”=”123456”
”123”&456=”123456”
”123”+456=579注:
此处的+为加号
2.6内部函数
函数
作用
举例
Abs(x)
返回x的绝对值
Abs
(2)的值为2,Abs(-2)的值为2
Sqr(x)
返回x的平方根
Sqr(4)的值为2,Sqr(-4)会出现错误
Int(x)
返回不大于x的最大整数
Int(3.14)的值为3,Int(-3.14)的值为-4
Rnd(x)
返回一个[0,1)之间的随机数
Int(100*Rnd
(1)+1)产生1~100之间的随机整数
LCase(x)
把字符串x中大写字母转换成小写字母,作为返回字符串
LCase(“ABC123”)的值为”abc123”
LCase(“aBc123”)的值为”abc123”
LCase(“abc123”)的值为”abc123”
UCase(x)
把字符串x中小写字母转换成大写字母,作为返回字符串
UCase(“ABC123”)的值为”ABC123”
UCase(“aBc123”)的值为”ABC123”
UCase(“abc123”)的值为”ABC123”
Len(x)
返回字符串x的长度(字符个数)
Len(“abcd”)的值是4,Len(“ab”)的值是2,
Len(“”)的值是0
Val(x)
把字符串x转换成相应的数
Val(“12”)的值是12,Val(“12.3”)的值是12.3,
Val(“1.2A”)的值是1.2
2.7表达式
①表达式的作用
用于计算一个值,但不能作为语句独立存在,通常算术表达式、字符表达式出现在赋值语句中,而关系表达式和逻辑表达式被用在分支语句和循环语句中作为控制条件。
②表达式的构成
常量、变量、内部函数、小括号、运算符
③表达式的运算顺序
算术运算,关系运算,逻辑运算
④数学表达式转换为VB表达式
例1:
相应的VB表达式为Sqr(s*(s-a)*(s-b)*(s-c))
例2:
相应的VB表达式为(-b+sqr(b*b-4*a*c)/(2*a)
例3:
相应的VB表达式为Abs(A*x+B*y+C)/Sqr(A*A+B*B)
例4:
相应的VB表达式为4/3*3.14159*R^3
2.8注释语句
①作用
注释语句是为了更容易阅读程序,注释语句的有无不影响程序的运行
②两种形式:
v以Rem开始,其后是注释内容,必须单独一行。
如:
Rem以下语句定义一个常量
v以’开始,其后是注释内容,可以单独一行,也可以在其他语句后。
如:
‘以下语句用来初始化变量x
x=100‘初始化变量x
2.9赋值语句
①语法:
<变量>=<表达式>
②特点:
v破坏性:
变量在赋值前的值被破坏掉。
x=1234:
y=5678
x=x–y:
y=x+y:
x=y-x
Printx,y
输出是:
56781234
v类型转换:
⏹如果<变量>的类型和<表达式>的类型不一致,则转换成<变量>的类型。
⏹True转换成整数为-1,False转换成整数为0。
⏹非0的数转换成布尔类型为True,0转换成布尔类型为False。
⏹如果不能进行转换(如把”abc”转换成整数),则运行时出错。
v不能连续赋值:
⏹A=B=C=D=1×
⏹A=1:
B=1:
C=1:
D=1√
2.10选择结构
1行If语句
v语法:
If<条件>Then<语句1>[Else<语句2>]
v注意:
Then或Else后只能跟一条语句。
v举例:
Ifx<0Theny=-xElsey=x’相当于y=Abs(x)
2块If语句1
语法:
If<条件>Then
<语句块1>
[Else
<语句块2>]
EndIf
注意:
<语句块1>和<语句块2>可以是多条语句。
举例:
Ifb*b-4*a*c>=0Then
x1=(-b+Sqr(b*b-4*a*c))/(2*a)
x2=(-b-Sqr(b*b-4*a*c))/(2*a)
Printx1,x2
Else
Print“方程无实根”
EndIf
块If语句2
语法:
If<条件1>Then
<语句块1>
[ElseIf<条件2>Then
<语句块2>
ElseIf<条件3>Then
<语句块3>
……
Else
<语句块n>]
EndIf
举例:
Ifb*b-4*a*c>0Then
Print“有两个不同的实根”
ElseIfb*b-4*a*c=0Then
Print“有两个相同的实根”
Else
Print“无实根”
EndIf
3SelectCase语句
语法:
SelectCase<表达式>
Case<值1>
<语句块1>
Case<值2>
<语句块2>
……
[CaseElse
<语句块n>]
EndSelect
注意:
<值1>,<值2>等等通常为一个常数,切莫写成表达式,如n=1,n=2等。
举例:
SelectCasen
Case1
Print"春季"
Case2
Print"夏季"
Case3
Print"秋季"
Case4
Print"冬季"
CaseElse
Print"错误的季节数!
"
EndSelect
2.11循环结构
1For_Next语句
v语法:
For<循环变量>=<初值>To<终值>[Step<步长>]
<语句块>
Next<循环变量>
v循环次数:
Int((<终值>-<初值>+<步长>)/<步长>),为负时,循环次数是0.
v注意:
缺省<步长>时,默认的<步长>值为1。
<步长>可以是负值。
v举例:
代码
S=0
ForI=1To10
S=S+I
Nexti
PrintS
S=0
ForI=1To10Step2
S=S+I
Nexti
PrintS
S=0
ForI=1To10Step-2
S=S+I
Nexti
PrintS
S=0
ForI=10To1Step-2
S=S+I
Nexti
PrintS
输出结果
55
25
0
30
说明
S=1+2+3+…+10
S=1+3+5+7+9
循环次数是0
S=10+8+6+4+2
2Do_Loop语句
v语法:
DoWhile<条件>
<语句块>
Loop
DoUntil<条件>
<语句块>
Loop
Do
<语句块>
LoopWhile<条件>
Do
<语句块>
LoopUntil<条件>
v注意:
⏹含有While<条件>时,当<条件>值为False时结束循环。
⏹含有Until<条件>时,当<条件>值为True时结束循环。
⏹若循环控制条件跟在Do语句后,则要先判断条件,再执行循环体,因此是一种当型循环。
⏹若循环控制条件跟在Loop语句后,则是先执行循环体,再判断条件,为直到型循环。
v举例:
用公式e=1+1/1!
+1/2!
+…+1/n!
+…计算e的值,当某一项的值小于10-6时,结束求和。
代码1
e=1:
i=1:
t=1
DoWhilet>=1E-6
t=t/i
e=e+t
i=i+1
Loop
Printe
代码2
e=1:
i=1:
t=1
DoUntilt<1E-6
t=t/i
e=e+t
i=i+1
Loop
Printe
代码3
e=1:
i=1:
t=1
Do
t=t/i
e=e+t
i=i+1
LoopWhilet>=1E-6
Printe
代码4
e=1:
i=1:
t=1
Do
t=t/i
e=e+t
i=i+1
LoopUntilt<1E-6
Printe
2.12数组
1分类
v按维数分类:
一维数组、二维数组、三维数组等等。
v按元素个数是否固定:
静态数组、动态数组。
2静态数组
v定义语法:
Dim<数组名>(<下标>)As<数据类型>
v说明:
若<下标>中省略下界,默认下界是0。
v举例:
定义语句
说明
DimA(1To10)AsInteger
定义了一个一维静态数组,包含10个整型元素:
A
(1)、A
(2)、……、A(10)。
DimA(10)AsInteger
定义了一个一维静态数组,包含11个整型元素:
A(0)、A
(1)、……、A(10)。
DimA(1To10,1To10)AsInteger
定义了一个二维静态数组,包含100个整型元素:
A(1,1)、A(1,2)、……、A(10,10)。
DimA(10,1To10)AsInteger
定义了一个二维静态数组,包含110个整型元素:
A(0,1)、A(0,2)、……、A(10,10)。
3动态数组
v声明:
Dim<数组名>()As<数据类型>
v使用:
动态使用之前,必须用ReDim语句重新设置数组的大小和维数。
4静态数组应用举例
把一个数组A(1To100)中的数据颠倒过来,即A
(1)保存A(100)的数据,A
(2)保存A(99)的数据,等等。
Fori=1To50
T=A(i)
A(i)=A(101-i)
A(101-i)=T
Nexti
2.13过程
1分类
v事件过程:
在事件发生时被调用。
v通用过程:
被事件过程或其他通用过程所调用。
2通用过程分为类
vFunction过程(函数)
vSub过程(子程序)
3Function过程
v作用:
Function过程最终目的是得到一个值
v定义语法:
Function<函数名>(<参数列表>)As<数据类型>
<局部变量或常量声明>
<语句序列>
EndFunction
<语句序列>中,应至少包含一个对函数名赋值的语句:
<函数名>=<表达式>
<表达式>的值作为函数的返回值。
v调用方法:
自定义函数定义后,其调用方式与内部函数类似。
v调用注意问题:
调用时的参数(实参)的个数与类型应与定义时的参数(形参)的个数与类型一致。
v举例:
计算S=1!
+2!
+……+20!
PrivateSubForm_Click()
DimSAsSingle,IAsInteger
S=0
ForI=1To20
S=S+FACT(I)
NextI
Print"1!
+2!
+……20!
=",S
EndSub
FunctionFACT(nAsInteger)AsSingle
DimIAsInteger,tempAsSingle
temp=1
ForI=1Ton
temp=temp*I
NextI
FACT=temp
EndFunction
4Sub过程
v作用:
Sub过程主要目的是完成一系列操作
v定义语法:
Sub<过程名>(<参数列表>)
<局部变量或常量声明>
<语句序列>
EndSub
v调用语法:
<过程名>(<参数列表>)
或Call<过程名>(<参数列表>)
v调用注意问题:
调用时的参数(实参)的个数与类型应与定义时的参数(形参)的个数与类型一致。
5参数传递
v参数的分类:
⏹将过程定义时的参数称为形式参数,简称形参,
⏹而调用时的参数称为实在(际)参数,简称实参。
v参数传递:
调用过程时,要完成参数的传递,即将实参传递为形参。
v参数传递的方式:
⏹按值传递:
将实参的值传递给形参。
定义过程时,指定某个形式参数按值传递,其参数前需要加ByVal关键字。
如:
SubChange(ByValAAsInteger,ByValBAsInteger)
⏹按地址传递:
按地址传递就是将实参的地址传递给形参。
VB默认的参数传递方式就是按地址传递。
v两种参数传递方式的比较:
⏹按值传递参数时,传递的只是变量的副本。
如果过程改变了这个值,则所做的变动只影响副本,而不会影响变量本身。
⏹按地址传递参数使过程用变量的内存地址去访问实际变量的内容,变量传递给过程后,如果过程改变了这个值,则所做的变动要影响原来的变量。
v举例:
PrivateSubTest(AAsInteger,ByValBAsInteger)
A=A+1
B=B+1
EndSub
PrivateSubForm_Click()
DimXAsInteger,YAsInteger
X=10:
Y=20
CallTest(X,Y)
PrintX,Y
EndSub
程序运行后,单击窗体,输出的结果是:
1120。
2.14变量的作用域
1变量按作用域分类
v过程级变量(局部变量):
在过程内部,通常用Dim或Static进行声明。
v模块级变量:
在一个模块的声明段(代码窗口最前面)中,通常用Private或Dim进行声明。
v工程级变量(全局变量):
在工程标准模块的声明段中,用Public关键字声明。
23种类型变量的区别
作用范围
过程级变量
(局部变量
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 大学 VB 程序设计 总结 复习