Visual Basic 语 言 程 序 设 计第 3章 VB程序设计的基础
3.1.1 命名规则
– 1.命名可以使用的字符
VB6.0中文版使用的字符集包括 ASCII码字符:英文字母、
数字符号、标点符号、空格符、其他可从键盘输入的字符和汉字等。使用这些字符时,不区分大小写,也不区分字符的全角和半角。
– 2.命名不能使用的字符
(1)“+”,,/,,,=”字符不能使用,,+”表示加法运算;
,/,表示除法运算;,=”表示赋值等。
(2)关键字不能使用,如 Private,Sub,End,Val等。
Visual Basic 语 言 程 序 设 计
3.1.1 命名规则
3.命名规则
– VB的代码编写中,离不开对数据、函数、过程、对象等的引用,在引用这些编程元素时,就要给他们起一个名字。在命名一个编程元素时,要遵循下列命名规则:
(1)名称的第一个字符必须是字母或汉字。
(2)不能在名称中使用空格、句点 (.)、感叹号 (!),@,&,$,#等符号已有特殊含义的字符。
(3)不能超过 255个字符,控件、窗体、类和模块的名字,不能超过 40个字符。
(4)不要与已有的关键字同名,否则,在编程中会出现很多麻烦。
(5)在自定义名称时,除了必须遵循 VB的命名规则外,还要使一个名字能反映它所代表的编程元素的意义。例如,在给命令按钮命名时,在开头用 cmd表示它是命令按钮,然后用一个单词来表示它的作用或其他意义。如,cmdAdd表示加运算,cmdExit表示退出等,在编写程序代码时避免混淆,详细内容可参考 MSDN Visual Basic编码约定。
Visual Basic 语 言 程 序 设 计
3.1.2 语句及语法规则
一个语句是程序中的语法完整、语义明确的最小单元。一个语句可以表达一种动作、声明或定义一个类型、变量、常量、过程、函数等。书写语句时,要遵循以下规则:
– (1)一个语句常用一个关键字、过程名称或一个变量名开头。
– (2)空格在语句中起分隔符的作用。
– (3)通常一行写一个语句,也可以在一行中写多个语句,但必须用冒号 (,)分开。语句前可以有空格,左边有空格的语句称为缩进语句,以增加程序的可读性。如果一行语句的内容很长,表示结束的语句行的最后两个字符必须是续行符 (空格加下划线 ),但总的字符数不能超过 255个。
Visual Basic 语 言 程 序 设 计
3.2 数据类型
数据是程序的组成部分,也是程序处理的对象,
数据类型体现了数据结构的特点。 VB的数据类型比较丰富,主要可以分为两类:基本数据类型和用户自定义数据类型。
Visual Basic 语 言 程 序 设 计
3.2.1 基本数据类型
VB6.0提供的基本数据类型主要有:字符型数据、数值型数据、货币类型、字节类型、布尔类型、日期类型、通用类型、无符号类型、对象类型等九种数据类型。
表 3.1列出 Visual Basic所允许使用的基本数据类型,以及存储空间大小与范围。
Visual Basic 语 言 程 序 设 计
3.2.1 基本数据类型
1.字符型数据
– 字符型数据 (String)用以定义一个字符序列。在内存中一个字符用一个字节来存放。
2.数值型数据
– 数值型数据包括:整型、长整型、浮点型 (单精度和双精度 )
四种。
(1)整型数
– 整数 (Integer):是不带小数点、范围 -32768到 32767之间数,在内存中用 2个字节 (16位 )来存储一个整数。在 -32678~32767之间的一个数字在尾部加一个,%”符号也表示一种整型数据,如 1345%,-
67%。
Visual Basic 语 言 程 序 设 计
2.数值型数据
(2)长整型数
– 长整型数 (Long):是超过 -32768~32767范围,而在 -
2147483648~2147483647之间的不带小数点的数,一个长整数在内存中占 4个字节 (32位 )。在 -2147483648~2147483647之间的数字在尾部带一个,&”符号,也表示为一个长整数。
(3)浮点数
– 单精度数 (Single):是带小数点的实数,有效值为 7位。在内存中用 4个字节 (32位 )存放一个单精度数。通常以指数形式(科学记数法 )来表示,以,E”或,e”表示指数部分。
– 双精度数据 (Double):也是带小数点的实数,有效值为 15位。
在内存中用 8个字节 (64位 )存放一个双精度数。双精度数通常以指数形式 (科学记数法 )来表示,以,D”或,d”表示指数部分。
Visual Basic 语 言 程 序 设 计
3.货币类型
货币类型 (Currency):是为计算货币而设置的定点数据类型,它的精度要求高,规定精确到小数点后 4位。在内存中占 8个字节 (64位 )。
一般的数值型数据在计算机内是通过二进制方式进行运算的,因而有误差,而货币型数据是用十进制方式进行运算的,所以具有比较高的精度,取值范围在 -92237203685477.5805到
922337203685477.5807之间。
Visual Basic 语 言 程 序 设 计
4.字节 (Byte)类型
字节 (Byte)类型:是一种数值类型,以 1个字节的无符号二进制数存储,取值范围为 0~255。
Visual Basic 语 言 程 序 设 计
5.布尔类型
布尔类型 (Boolean):布尔型数据是一个逻辑值,也称逻辑类型,用两个字节存储,它只取两种值,即 True(真 )或 False(假 )。
Visual Basic 语 言 程 序 设 计
6.日期类型
日期类型 (Date):用以表示日期,在内存中一个日期型数据用 8个字节来存放。
Visual Basic 语 言 程 序 设 计
7.通用类型
通用类型 (Variant),也称变体类型,是一种通用的、可变的数据类型,它可以表示上述任何一种数据类型。假设定义 a为通用型变量。
– Dim a As Variant
– 在变量 a中可以存放任何类型的数据,例如:
a=“BASIC” '存放一个字符串
a=10 '存放一个整数
a=20.5 '存放一个实数
a=“08/ 15/ 2003” '存放一个日期型数据
– 根据赋给 a的值的类型不同,变量 a的类型不断变化,这就是称之为变体类型的由来。当一个变量未定义类型时,VB自动将变量定义为 Variant类型。不同类型的数据在 Variant变量中是按其实际类型存放的 (例如将一个整数赋给 a,在内存区中按整型数方式存放 ),用户不必作任何转换的工作由 VB自动完成。
Visual Basic 语 言 程 序 设 计
8.无符号类型
– 无符号类型 (Decimal):变量存储 96位 (12个字节 )无符号的整数形式,并除以一个 10的幂数,称为变比因子。这个变比因子决定了小数点右面的数字位数,其范围从 0~28。当变比因子为 0(没有小数位 )时,最大的可能值为 +/ -79 228 162 514
264 337 593 543 950 335。而在有 28个小数位的情况下,最大值为 +/ -7.922 816 251 426 433 759 354 395 033 5,而最小的非零值为 +/ -0.000 000 000 000 000 000 000 000 1。
– 说明:目前 Decimal数据类型只能在变体类型 (Variant)中使用,也就是说,不能把一个变量声明为 Decimal类型。
Visual Basic 语 言 程 序 设 计
9.对象类型
对象类型 (Object):用来表示图形,OLE对象或其他对象,用 4个字节存储。
Visual Basic 语 言 程 序 设 计
3.2.2 测试数据类型函数
VB提供一种 VarType函数,用来测定一个 Varinat变量的实际数据类型。 VarType函数的值是一个数值,其含义如下:
– VarType函数值 数值类型
– 0 空
– 1 Null
– 2 整型
– 3 长整型
– 4 单精度浮点数
– 5 双精度浮点数
– 6 货币型
– 7 日期型
– 8 字符串
Visual Basic 语 言 程 序 设 计测试数据类型函数例子:
Dim Varl As Variant
Int1=123456
Long1=9000&
Single1=89.5!
Double1=3.14159
Str1=“abcdefg”
Cur=3000008@
Da=#08/ 15/ 2003#
Print
VarType(Var1),VarType(Int1),VarType(Long1),VarType(Single1)
Print
VarType(Strl1),VarType(Cur),VarType(Double1),VarType(Da)
Visual Basic 语 言 程 序 设 计测试数据类型函数例子:
Varl被定义成为 Variant型变量,程序中未对它赋值,
其他各变量均未声明为何类型,也一律按 Variant型对待。分别对 7个 Variant型变量赋值。然后用 VarType函数测试这 8个变量的实际类型,可以从输出结果中看到它们的实际数据类型。
运行此段程序,输出结果如下:
– 0(未赋值 ) 2(整型 ) 3(长整型 ) 4(单精度型 )
– 8 (字符串型 ) 6(货币型 ) 5(双精度型 ) 7(日期型 )
Visual Basic 语 言 程 序 设 计
3.2.3 用户自定义类型
有时我们会感到仅有以上基本数据类型是不够的。我们希望将不同类型的数据组合成一个有机的整体,以便于引用。这样一个整体是由若干不同类型的、互相有联系的数据项组成。它类似于 C语言中的,结构体,类型的数据。这种结构我们称为,记录,。 VB提供 Type语句,
用户可以自己定义这种数据类型。
Visual Basic 语 言 程 序 设 计
3.2.3 用户自定义类型
形式:
– Type 数据类型名
– 数据类型元素名 As 类型
– 数据类型元素名 As 类型
– ……
– End Type
– 功能:定义一个记录型数据类型。
– 例如,我们定义一名为 Employee(职工 )的类型,其中包括有职工号、姓名、
年龄、电话和住址等信息:
Type Employee
EmpNo As Integer
Name As String*10
Age As Integer
Tel As String*10
Address As String*20
End Type
Visual Basic 语 言 程 序 设 计用户自定义类型例子:
这里的 Employee是用户定义的类型,它由 5个元素组成,EmpNo,Name、
Age,Tel和 Addres。其中 EmpNo和 Age是整型; Name,Tel和 Address定长字符串,Name和 Tel由 10个字符组成,Address由 20个字符组成。
在定义了 Employee类型之后,我们就可定义 Employee类型的变量了,例如定义一个 Emp的变量:
Dim Emp As Employee
– 此语句定义了 Employee类型的变量 Emp,它包括有 5个成员。在后面的程序中我们可以用,变量,元素,这样的形式来引用各个成员,如下面这样:
– Emp.EmpNo 表示 Emp变量中的 EmpNo成员的值 (某一职工的职工号 )
– Emp.Name 表示 Emp变量中的 Name成员的值 (某一职工的名字 )
– Emp.Age 表示 Emp变量中的 Age成员的值 (某一职工的年龄 )
– Emp.Tel 表示 Emp变量中的 Tel成员的值 (某一职工的电话 )
– Emp.Address 表示 Emp变量中的 Address成员的值 (某一职工的地址 )
Visual Basic 语 言 程 序 设 计说明:
(1)记录类型中的元素可以是字符串,但必须是定长字符串。
(2)记录类型的定义必须放标准模块 (.BAS)和窗体模块的声明部分,当在标准模块中定义时,关键字 Type前可以有 Public(默认 );而如果在窗体模块中定义,则必须在前面加上关键字 Private。
(3)在记录类型中不能含有数组。
(4)在随机文件操作中,记录类型数据有着重要的作用。
Visual Basic 语 言 程 序 设 计
3.3 常量与变量
在程序中,不同类型的数据既可以以常量的形式出现,也可以以变量的形式出现。常量在程序执行期间其值是不能发生变化的,而变量形式的值是可以变化的,它代表内存中指定的存储单元。
Visual Basic 语 言 程 序 设 计
3.3.1 常量
常量是指在程序运行过程中始终保持不变的数据。 VB有两种常量:一种是文字常量,一种是符号常量。
– 1.文字常量
文字常量分为:数值常量、字符串常量、逻辑常量、日期常量。
(1)数值常量
– 数值常量有:字节型数、整型数、长整型数、定点数及浮点数。
– ①字节型数、整型数、长整型数都是整型量,可以使用三种整型量:十进制整数、十六进制整数、八进制整数,只要是在该类型数合法范围之内。
– 十进制数按常用的方法来表示,十六进制数前加,&H”,八进制数前加
,&O”。
Visual Basic 语 言 程 序 设 计例如:
– 1200 '十进制数 1200
– &H333 '十六进制数 333 &O555 '
八进制数 555
– ② 定点数是正数的或负数的带小数点的数,如,323.43,-
456.78。
– ③浮点数分为单精度和双精度数。浮点数由尾数、指数符号和指数三部分组成。尾数是实数;指数符号是 E(单精度 )或 D(双精度 );
指数是整数。
指数符号 E和 D的含义为:乘上 10的幂次。例如,12.345E-6和 78D3所表示的值分别为 0.000012 345和 78 000。定点数和浮点数可以是单精度的,也可以是双精度的。单精度数保留 7位有效数字,双精度数保留 15位或者 16位有效数字。
Visual Basic 语 言 程 序 设 计
1.文字常量
(2)字符串常量
– 字符串是双引号括起来的一串字符 (也可以是汉字 )。其长度不超过 32 767个字符 (一个汉字占两个字节 )。下面是合法的字符串及它的长度:
"abcdef",长度为 6个字符。
"VB中文版 ",长度为 5个字符。
(3)逻辑常量
– 逻辑常量只有两个:逻辑真 True和逻辑假 False。
(4)日期常量
– 格式,#mm-dd-yy#
– 例如,#09-01-03# '表示 2003年 9月 1日
Visual Basic 语 言 程 序 设 计
2.符号常量
符号常量是用一个符号名来代替数值和字符串。
符号名规定是,40个字符以内,第一个必须是字母,其后可以由字母、数字和下划线组成,
其中不区分大小写。符号常量要先定义,后使用。定义符号常量的一般格式为:
– 格式:[ Global] Const 〈 符号常量名 〉 =〈 表达式 〉 [,〈 符号常量名 〉 =〈 表达式 〉 … ]功能:
设置符号常量为表达式的值。
Visual Basic 语 言 程 序 设 计
2.符号常量
说明,Global(全局的 )项选择时,表示在整个程序中都可以使用常量。
其中表达式由文字常量、算术运算符 (除乘方运算符 ^以外 )、逻辑运算符组成,也可以使用字符串。表达式不能使用字符串连接运算和用户定义的函数或内部函数。例如:
– Const I%=2,J&=3 '定义一个整型、一个长整型符号常量
– Const str="srting" '定义一个串常量
– Const pie=3.1415926 '定义一个单精度常量
– Const dupie=2*pie '定义一个单精度常量
– 可以在任何用表达式的地方使用符号常量。有时使用符号常量比使用变量更方便。符号常量的特点如下:
符号常量在整个模块中只需要定义一次。符号常量定义后其值能被改变。在独立的程序中,使用符号常量比使用变量能产生更有效的代码。使用常量便于程序的修改。
Visual Basic 语 言 程 序 设 计
3.3.2 变量
变量是指在程序运行中,其值可以发生改变的数据。
– 1.变量名的命名
变量名的命名规则是,255个字符以内,第一个字符是字母,其后可以是字母、数字和下划线的组合,最后一个字符也可以是类型说明符。通常使用具有一定含义的变量名,
可以帮助说明功能,简化调试过程。保留字不能作为变量名。
Visual Basic 语 言 程 序 设 计
2.变量类型与定义
VB中变量都属于一定的数据类型,包括基本数据类型和用户定义数据类型。在 VB中,可以用下面几种方式来规定变量的类型:
– (1)用类型说明符来标识
– 把类型说明符放在变量的尾部,来说明变量的不同类型,类型说明如下:
% 表示整型
& 表示长整型
! 表示单精度型
# 表示双精度型
@ 表示通用型
$ 表示字符型
Visual Basic 语 言 程 序 设 计
2.变量类型与定义
(2)在定义变量时指定其类型
在使用变量前,可以用下列格式来说明其类型和作用域:
– 〈 说明关键字 〉 〈 变量 〉 As 〈 类型 〉
– 其中关键字为下列之一:
Dim 在模块、窗体的过程 (子程序 )中,说明变量或数组,但不能在过程中说明数组。
Static 在过程中,说明静态变量。每次调用过程时,用
Static语句说明的变量值将保留。 ReDim 在过程、函数中说明动态数组及重新分配数组空间。用 Global或 Dim定义动态数组后,再用 ReDim语句说明数组的大小。
Global 在模块中定义全局变量。
Visual Basic 语 言 程 序 设 计
2.变量类型与定义
类型为前面所讲的数据类型之一 (如 Integer等 )。
例如:
– Dim a As Integer '说明 a为整型变量
– Dim b As String '说明 b为可变长字符型变量
– Dim c As String*10 '说明 c为长度是 10个字符的固定长字符型变量
– Dim d(10) As Integer '说明 d为一维整型数组
– Dim e() As Single '说明 e为动态单精度变量
– Static f As Integer '说明 f为静态整型变量
– ReDim e(10) As Single '说明 e为一维单精度数组
– Global h As Integer '说明 h为全局整型变量
Visual Basic 语 言 程 序 设 计
2.变量类型与定义
(3)用 DefType语句定义
– 格式:
Defint 字母范围 定义整型
DefLnt 字母范围 定义长整型
DefSng 字母范围 定义单精度型
DefDbl 字母范围 定义双清度型
DefCur 字母范围 定义通用型
DefStr 字母范围 定义字符型
DefBool 字母范围 定义布尔型
DefByte 字母范围 定义字节型
DefDate 字母范围 定义日期型
DefVar 字母范围 定义不定型
DefObj 字母范围 定义对象型
功能:定义以字母开头的变量类型。
Visual Basic 语 言 程 序 设 计
2.变量类型与定义
例如:
– Defint a-d '所有以 a,b,c,d字母开头的都是整型变量
– DefStr f-j '所有以 f,g,h,i、
j字母开头的都是字符型变量 3.记录类型变量
自定义类型允许用户建立结构类型,缺省类型允许用户定义缺省类型。
Visual Basic 语 言 程 序 设 计
2.变量类型与定义
格式:
– [ Private] Type TypeDemo
– 成员名 1 As 类型
– 成员名 2 As 类型
– …
– End Type
功能:在全局模块中或在窗体中定义结构类型。
Visual Basic 语 言 程 序 设 计
2.变量类型与定义
说明:
– (1)结构类型所占存储空间是其中所有成员的长度之和。
– (2)如果有 Private可选项,是在窗体中定义的结构体类型。
– 定义结构变量:
– 格式,Dim|Static 结构变量 As TypeDemo
– 引用结构变量的成员:
Visual Basic 语 言 程 序 设 计
2.变量类型与定义
格式,结构变量名,成员名
例如:
– Type TypeDemo '在全局模块中定义结构类型。
– N1 As Double
– N2 As Integer
– N3 As String*10
– End Type
– Static X As TypeDemo
引用变量的成员:
– X.N1
– X.N2
– X.N3
Visual Basic 语 言 程 序 设 计
3.3.3 变量的作用域
变量的作用域,就是变量作用的有效范围。 VB中变量有如下几种有效范围:局部变量、全局变量、窗体变量和模块变量。
– 1.局部变量
在过程或函数中使用的变量是局部变量。不同的过程或函数使用的局部变量名可以相同,但它们之间互不影响。
– 2.全局变量
全局变量是在应用程序中其值不被重新设置的变量。全局变量只能在全局模块中用 Public进行说明。
– 3.窗体变量和模块变量
窗体变量是从属于同一窗体的不同过程使用的变量,定义在该窗体代码的前面。模块变量是模块中所有过程都可以使用的变量,它定义在模块代码的前面。
Visual Basic 语 言 程 序 设 计
3.3.4 变量作用域的关系
变量作用域的关系如 3.1所示。
– VB应用程序
– 窗体模块
– 声明部分通用过程事件过程
– 标准模块声明部分
– 通用过程
Visual Basic 语 言 程 序 设 计
3.4 常用函数
函数是任何一种语言必不可少的部分,VB的函数十分丰富,本节只介绍一些常用的函数,及内部函数和字符串函数。
3.4.1 内部函数
– VB提供了大量的内部函数。在这些函数中,有些是通用的,有些与某些操作有关。大体上可分为 5类:
转换函数、数学函数、日期函数、时间函数和随机函数。表 3.2列出了 Visual Basic 中的部分函数。