第2章VISUAL BASIC 的数据类型及运算Word格式文档下载.docx
《第2章VISUAL BASIC 的数据类型及运算Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《第2章VISUAL BASIC 的数据类型及运算Word格式文档下载.docx(42页珍藏版)》请在冰点文库上搜索。
1
0~255
字符型
变长字符串型
String
$
1/每字符
0~65535个字符
定长字符串型
String*Size
布尔型
Boolean
无
True与False
日期型
Data
1/1/100~12/31/9999
对象型
Object
任何对象引用
可变型
Variant
根据需要分配
上述有效范围之一
1数值数据类型
数值型数据用于表示某种数值,分为整型和实型两类,分别用于表示整数和浮点实数。
根据表示数的范围,整型数据可分为整型和长整型,实型数据可分为单精度和双精度数据。
有时把货币型和字节型数据也归为数值型数据。
(1)整型(Integer)和长整型(Long)
整型(Integer)是指不带小数点和指数符号的数,可表示范围在-32768~32767之间的整数,在机器内存中占2个字节存储的整数。
在VB中数尾常加类型符“%”表示Integer的整数,也可省略。
如-34,78%。
长整型(Long)可表示范围在-2147483648~2147483647之间的整数,在机器内占4个字节存储。
在VB中数尾常加类型符“&
”表示Long的整数。
如:
-123&
、12345678均表示长整型数。
注意:
369、-369、+369均表示整数,而369.0就不是整数;
12345678均表示长整数,而123,456则是非法数,因为其中出现逗号。
整型数的运算速度快、精确,且占用存储空间较小,但表示数的范围也较小。
(2)单精度数(Single)和双精度数(Double)
单精度数(Single)是带小数点的实数,有效数字为7位,在机器内用4个字节存储,类型符为“!
”。
单精度数有多种表示形式:
±
n.n(小数形式)、±
nE±
m(指数形式)、±
n.nE±
m(指数形式)、±
n!
(整数加单精度类型符)。
例如:
123.45、0.12345E+3、123.45都是同值的单精度数。
如果某个数的有效数字位数超过7位,当把它定义为单精度变量时,超出的部分会自动四舍五入。
双精度数(Double)也是带小数点的实数,有效数字为15或16位,在机器内用8个字节存储。
通常以指数形式表示,指数部分用“D”或“E”表示。
在VB中数尾常加“#”表示双精度数据,也可省略。
如,123.45#、0.12345D+3、0.12345E+3等都表示同值的双精度浮点数。
浮点型数表示数范围大,但有误差,且运算速度慢,一般对精度要求较高的数值可以采用Double型,而对精度要求不高的数值可以采用Single型。
(3)货币型数据(Currency)
货币型数据是为是一种专门为处理货币而设计的数据类型,是一种特殊的小数。
它的精度要求较高,用8个字节存储,保留小数点右边4位和小数点左边15位,如果数据定义为货币型,且其小数点后超过4位,那么超过的部分自动四舍五入。
在VB中数尾常加“@”表示货币型数据。
如3.4@,565@。
(4)字节型数据(Byte)
字节型数据用来存储二进制数,是范围在0~255之间的无符号整数,不能表示负数,在机器内用一个字节存储。
Byte是从0-255的无符号类型。
2.字符型数据(String)
字符型数据(String)表示一个字符序列,可以包括所有英文字符和汉字,如学生的姓名、教师的职称等,在程序中是用双引号括起字符串。
“VisualBasic”、“赣南师院”、“123.456”、“everyone”、“”(空字符串)。
“”表示空字符串,而“”表示的是有一个空格的字符串。
VisualBasic的字符串有两种,即可变长度字符串和固定长度字符串。
可变长度字符串是指在程序运行期间字符串的长度不固定,固定长度字符串是指在程序运行期间字符串的长度不变的字符串。
3逻辑型数据(Boolean)
逻辑型数据(Boolean)又称逻辑型,用来表示逻辑判断结果的,只有真(True)和假(False)两个值,在机器内用2个字节存储。
逻辑数据转换成整型数据时,真转换为-1,假转换为0;
其他类型数据转换为逻辑数据时,非0数转换为真,0转换为假。
4日期型数据(Date)
日期型数据是为表示日期设置的,在机器内占8个字节,以浮点数形式存储。
表示的日期范围从公元100年1月1日到9999年12月31日,时间范围为0:
00:
00~23:
59:
59。
日期型数据有两种表示法:
一种是以任何字面上可被认作日期和时间的字符,用“#”将其括起来。
#04/10/2008#、#2004-08-10#、#September1,2004#、#2004-9-1013:
30:
15#。
另一种是以序列表示,小数点左边的数字代表日期,而小数点右边的数字代表时间,0为午夜,0.5为中午12点,负数代表的是1899年12月31日之前的日期和时间。
例如序列-2.5代表日期1899年12月28日12点00时00分。
5对象数据类型(Object)
对象(Object)变量作为32位(4个字节)地址来存储,可以用来引用应用程序中的对象。
在使用中,可先声明一个Object变量,随后用Set语句指定它来引用应用程序中的实际对象。
DimobjLbAsObject
SetobjLb=Label1
objLb.Caption=””欢迎光临”
通过Set语句将标签的标签Label1objLb的名字赋给对象变量objLb,在后面的语句中可以通过对对象变量objLb来引用标签对象objLb。
6变体型数据类型(Variant)
变体型数据类型可以表示以上任何一种数据类型,为VB的数据处理增加了智能性。
在声明变量时,若没有加以说明类型,则默认为Variant。
Variant数据类型能够存储所有系统定义类型的数据。
假设定义a为变体型变量,在变量a中可以存放任何类型的数据,例如:
DimaasVariant
a=“BASIC”‘存放一个字符串
a=10‘存放一个整数
a=20.5‘存放一个实数
a=#08/15/2003#‘存放一个日期型数据
除此之外,变体类型还可以包括以下4钟特殊的数据。
Empty:
空,表示未确定的数据。
Null:
无效,表示这个数据不合法,
Error:
出错,表示执行过程中出现了一个错误条件。
Nothing:
无指向,表示数据还没有指向一个具体对象。
上述4种特殊数据,在进行数据库应用程序的开发中经常使用。
2.1.2自定义数据类型
VB不仅提供了系统定义的以上基本数据类型,也允许用户自己定义数据类型,它由若干个基本数据类型组成,将不同类型、互相有联系的数据项目组合成一个整体,类似C语言中的“结构体”类型数据。
在VB中,自定义类型必须通过Type语句来声明,其格式为:
Type数据类型名
元素名1As类型名
元素名2As类型名
…
元素名nAs类型名
EndType
例如:
对于一个学生的“学号”、“姓名”、“年龄”等数据,为了处理数据的方便,常常需要把这些数据定义成一个新的数据类型(如Stud类型)。
TypeStud‘定义类型名
NumAsSting‘定义学生学号为字符型
NameAsString*10‘定义学生姓名为长度为10的定长字符串型
AgeAsInteger‘定义学生年龄为整型
定义了类型之后,便可在变量声明中使用该类型。
DimStudentasStud
此语句定义了Stud类型的变量Student,它包含3个成员。
在后面的程序中可用变量名.成员名的形式来引用各个成员,例如:
Student.Num=”20130009001”
Student.Name=”王芳”
Student.Age=19
2.1.3枚举类型
1枚举类型的概念
当一个变量只有几种可能值的时候,可以定义为枚举类型。
所谓“枚举”是指将变量的值一一列举出来,变量的值只限于列举出来的值的范围内。
例如,可以把与“星期”相关联的一组整数常数声明为一个枚举类型,然后在代码中使用星期的名称而不使用其整数值。
2定义枚举类型
枚举类型放在窗体模块、标准模块或共用模块中的声明部分,通过Enum语句来定义。
定义枚举类型的语法为:
[Public|Private]Enum类型名称
成员名[=〈常数表达式〉]
成员名[=〈常数表达式〉]
EndEnum
常数表达式,可选项。
元素的值可以是Byte、Integer、Long、Short类型,也可以是其他枚举类型。
若未指定,则默认是Long类型数。
如果缺省常数表达式,则第1个成员的值为0,以后每个加1。
例如,在下面的Enum语句定义中,没有用赋值语句为枚举的成员赋常数值,因此Sunday被初始化为0,Monday被初始化为1,Saturday被初始化为6:
PublicEnumWorkdays
Sunday'
值为0
Monday'
值为1
Tuesday'
值为2
Wednesday'
值为3
Thursday'
值为4
Friday'
值为5
Saturday'
值为6
Invalid=-1
EndEnum
Enum语句只能在模块、命名空间、文件级出现。
也就是说,可以在源文件或模块、类或结构内部声明枚举类型,但不能在过程内部声明。
定义了枚举类型后,就可以用它来声明变量类型,然后使用该变量存储枚举常数的值。
引用枚举类型变量的成员的语法格式如下:
枚举类型变量名.成员名称
例如DimMyDayAsWorkdays
MyDay=Days.Monday
2.2常量和变量
计算机所处理的数据存放在内存单元中,在高级语言中,用户给内存单元命名,以后通过内存单元的名字来访问内存单元。
命了名的内存单元就是常量或变量。
不同类型的数据以常量或变量的形式出现。
常量和变量是VB乃至所有编程语言中非常重要的概念。
常量是指在程序运行过程中值始终保持不变的量。
变量是指在程序运行过程中其值可以改变的量。
2.2.1常量
程序运行过程中,其值始终不变的量称为常量。
在VB中常量有直接常量和符号常量两类。
在编程中,对于经常出现或很难记住的常量,我们尽量使用符号常量表示,这样可增强程序的可读性和可维护性。
1直接常量
直接常量是在程序代码中,以明显的方式给出的数据,可直接反映其数据类型;
也可在常数值后紧跟类型符表明常数的数据类型。
(1)数值常量
即常数,可以是前面所讲的6种数值型类型:
整型Integer、长整型Long、单精度Single、双精度Double、字节型Byte、货币型Currency。
如123.78、332&
、1.23E3。
数值常数大多是十进制数,也有八进制数和十六进制数。
八进制数以&
O打头,十六进制数已&
H打头,如&
O67,&
H9AB4等。
(2)字符串常量
字符串常量是一个用双引号括起来的字符序列,如:
“vb”、“9823”,
空字符串也是字符串常量。
(3)布尔型常量
布尔型常量只有两个值:
True、False
(4)日期常量
日期常量通常用“#”号括起来,例如:
#03/22/2008##10:
12:
30#
2符号常量
符号常量是在程序中用符号表示某个常量,将无意义的单纯常量用有含义的符号表示,可以增加代码的可读性。
程序中不能对符号常量赋以新值。
在VB中,符号常量又分为两种:
系统内部定义常量和用户定义常量。
(1)系统内部定义的常量
系统内部定义的常量是VB提供的。
这些常量可与应用程序的对象、方法和属性一起使用,在代码中可以直接使用它们。
通过使用常量,可使程序变得易于阅读和编写。
例如,窗口状态属性WindowState可接受下列常量,见表2.2.
在程序中使用语句Form1.WindowState=vbMaximized,将窗口极大化,显然要比使用语句Form1.WindowState=2易于阅读。
表2.2WindowState常量
常量
值
描述
vbNormal
正常
vbMinimized
极小化
vbMaximized
极大化
可以通过对象浏览器窗口查看VB内部常量,具体操作是:
选择“视图”→“对象浏览器”命令,打开对象浏览窗口。
在下拉列表框中选择“VB”或“VBA”对象库,然后再“类”列表框中选择常量组,右侧的成员列表中即显示预定义的常量,窗口底端的文本区域中将显示该常量的功能。
系统内部定义的常量名使用两个字符的前缀。
vb:
表示VB和VBA中的常量。
xl:
表示Excel中的常量。
db:
表示DataAccessObject库中的常量
(2)用户定义常量
虽然VB内部定义了大量的常量,但有时用户需要创建自己的符号常量。
用户定义常量使用Const语句来给常量分配名字、值和类型。
声明语句的语法为:
Const常量名[As数据类型]=常量表达式…
其中,“As数据类型”是常量的类型,属于可选项,当省略“As数据类型”时,常量的类型由其后赋予的值决定。
Const语句可表示数值、日期以及字符串,例如:
ConstPI=3.14159265358979‘表示数值
ConstYDateAsDate=#4/30/2008#‘表示日期
ConstMyString=“Welcome”
2.2.2变量
变量代表数据的一个名称,在程序运行过程中,其值可以改变的量。
每个变量都有一个名字,在使用变量前,一般先声明变量名称和其数据类型,以便系统为它分配内存单元。
1变量的命名
与其他程序设计语言类似,变量命名必须遵循以下规则:
(1)变量名必须以英文字母开头,只能包含字母、汉字、数字、下划线组成的字符串,最后一个字符可以是类型说明符(%,!
,#,@,&
$)。
(2)变量名不能包含标点符合和空格,长度不能超过255。
(3)变量名不能与VisualBasic的关键字(例如End、Len、Sub等)相同。
(4)变量名不区分大小写。
例如,AbC和abc是同一个变量名。
2变量的声明
在VB中变量的声明,可以用“显式声明”和“隐式声明”两种方式。
(1)显式声明
显式声明是在变量使用前,用Dim、Static、Public、Private语句声明变量。
这里先介绍Dim,Dim语句可以声明一个或多个变量,其语法格式为:
Dim变量名[As数据类型]
“As数据类型”定义变量的类型,省略时,所声明的变量默认为Variant型。
DimxAsInteger‘声明x为Integer型变量
Dimy‘声明x为Variant型变量
系统自动为该变量赋初值,若变量是数据型,则初值为0;
若变量为字符型,则初值为空字符。
如果要定义多个相同类型的变量,可以将其放在同一行中,各变量之间用逗号隔开,其语法格式为:
Dim变量名[As数据类型],变量名[As数据类型],……
Dimb,cAsInteger
DimNameAsString,AgeAsInteger
也可以使用类型符来定义。
例如,上面的语句等价于:
DimName$,Age%
对于字符串类型变量,根据其存放的字符串长度是否固定,其定义方法有两种:
Dim字符串变量名AsString
Dim字符串变量名AsString*字符数
前一种方法定义的是变长字符串;
后一种方法定义的是定长字符串。
DimstrS1asString‘声明可变长字符串变量
DimstrS2asString*20‘声明定长字符串变量可存放50个字符
对上例声明的strS2定长的字符串变量,若赋予的字符按少于50,则右补空;
若赋予的字符超过50个,则多余部分截去。
(2)隐式声明
VB允许对使用的变量未进行上述声明而直接使用,称为隐式声明。
所有隐式声明的变量都是Variant类型的。
C=1'
C为整型
Sex="
female"
'
Sex为字符串
虽然隐式声明使用方便,但用户一时疏忽而输错字符时,例如把Sex敲成Sax,程序会把Sax当做新的变量,其执行结果就不能达到预期的效果,而且这种错误不能利用编译系统检查出来,较难查找,特别是在大型复杂的程序中更是如此。
因此,要养成在使用一个变量之前先声明它(即显式声明)的良好的编程习惯。
要做显式声明,可以在通用声明段使用OptionExplicit语句来强制显式声明所有变量。
也可以在菜单中设置,具体方法是:
选择“工具”→“选项”命令,在打开的对话框中选择“编辑器”选项卡,再选择其中的“要求变量声明”复选框,如图2-1。
此种方法只能在以后生成的模块中自动添加OptionExplicit语句,对于已经存在的模块不能修改,需要自己手工添加。
图2-1变量的显式声明
3变量赋值
在声明一个变量后,要先给变量赋上一个合适的值才能够使用。
给变量赋值的格式如下:
变量名=表达式
可以使用一个表达式的数值来给某个变量赋值。
一个普通的常量、变量均属于简单的表达式。
例如,给一个变量X,可以使用如下几种表达式进行赋值:
X=5
X=Y
X=X+1
2.3运算符和表达式
运算符是代表VB某种运算功能的符号。
VB程序会按运算符的含义和运算规则执行实际的运算操作。
由运算符将相关的常量、变量、函数等连接起来的式子即为表达式。
VB中的运算符包括:
算术运算符、字符串运算符、关系运算符、逻辑运算符。
2.3.1算数运算符
算术运算符主要用于算术运算。
VB中有8个算术运算符,见表2.3。
表2.3算术运算符
运算符
含义
示例
结果
优先级
^
乘方
5^2
25
-
负号
-7
*
乘
3*7
21
3
/
除
2月5日
0.4
\
整除(直接取整)
2\5
Mod
取模(求余)
7Mod2
5
+
加
4+8
12
6
减。
2.3-1
1.3
算术运算符两边的操作数应是数值型,若是数字字符或逻辑型,则自动转换成数值类型后再运算。
30-True’结果是31,逻辑量True转为数值-1,False转为数值0
False+10+"
4"
‘结果是14
算术表达式由数值型常量、变量、函数和圆括号组成,其运算结果是数值。
在一个算术表达式中,如果参与的运算与操作数具有不同的数据精度,则运算结果的数据类型采用精度较高的数据类型,即Integer→Long→Single→Double→Currency.
【例2.1】算术表达式的使用。
PrivateSubForm_Click()
Dima,bAsInteger
Dimx,yAsSingle
DimdAsDouble,cAsCurrency
a=5
x=8
y=x/a
b=xModa
d=x^3
a=d\a
c=(a+b)*(d-y)/x
Print"
a="
;
a,"
b="
b
x="
x,"
y="
y
c="
c,"
c
EndSub
图2-2运算结果
2.3.2字符串运算符
字符串运算符有两个:
“&
”和“+”,它们都是将两个字符串串接起来。
在字符串变量后使用“&
”时应注意,变量与运算符“&
”间应加一个空格。
这是因为符号“&
”还是长整型的类型符。
当变量与符号“&
”接在一起时,VB先把它作为类型符处理,这会造成出错。
“计算机”+”与程序设计”‘结果为”计算机与程序设计”
“Thisisa”&
“VisualBasic”‘结果为”ThisisaVisualBasic”
连接符“&
”和“+”区别是:
“+”:
两旁的操作数应均为字符型;
若为数值型则进行算术加运算;
若一个为数字字符,另一个为数值,则自动将数字字符转换为数值后进行算术加;
若一个为非数字字符型,另一个为数值型,则出错。
”两旁的操作数可任意,转换成字符型后再连接。
表2.4“&
”和“+”的区别
操作
"
ab"
&
123
"
ab123"
+123
出错
12"
456
12456"
+456
468
True
12True"
+True
11
2.3.3关系运算符
关系运算符是用来进行比较的运算符,其结果是一个逻辑值,若关系表达式成立,结果为True(真)和否则为False(假)。
VisualBasic提供的关系运算符有以下几种,如表2.5所示。
表2.5关系运算符
关系运算符
=
等于
“abc”=”ABD”
FALSE
>
大于
(13+5)>
TRUE
大于等于
“abc”>
=”abd”
<
小于
“abc”<
”abd”
小于等于