第二章 基本数据类型及运算类型
2.1 基本数据类型
2.2 变量和常量
2.3 运算符和表达式
2.4 VB常用内部函数
2.1 基本数据类型数据类型 规定了程序中数据的取值范围、占用内存空间的大小,以及在这些值上允许的操作 。 数据类型 是一个值的集合和定义在这个值集上的一组操作的总称。
V
B
数据类型用户自定义类型基本数据类型数值型其它类型整数型实数型
Byte
Integer
Long
Single
Double
Currency Date
String
Object
Variant
2.2 变量和常量变量 是程序执行时用来保存数据、其值可以改变的量。而在程序执行过程中用来保存数据、其值不能改变的量称为 常量 。
2.2.1 变量的用途和种类
1,数值型变量特点:运算速度快,精确
( 1)整型变量字节型 ( Byte),占内存一个字节,无符号型,不能表示负数,可存储的 0到 255之间的整数 。
整型 ( Integer),占内存两个字节,可存储的 -215(-32768)到 215-1
( 32767) 之间的整数 。
长整型,用 long表示,占内存四个字节,可存储 -231~-231-1范围内的整数 。
( 2) 实型变量特点:用于保存实数,表示的数据范围大,精度较差,速度较慢 。
单精度浮点型 ( Single),占内存四个字节,精度为 7位 。
双精度浮点型 ( Double),占内存八个字节,精度为 16位 。
货币型 ( Currency),存储定点数,最多保留小数点后 4位,小数点前 15位,精确 。
数值型变量可以相互赋值,但不能存放超过它表示范围的数 。
2,字符串型变量 ( string)
特点,用于保存字符串,一个字符占两个字节,数据加英文双引号

3,日期型变量 ( date)
特点:用于保存日期或时间值,占 8个字节,以浮点数的形式保存 。
4,逻辑型变量 ( boolean)
特点:用于保存 True和 False两个逻辑值,可进行逻辑运算 。
5,对象型变量 ( object)
特点,可以用于访问实际对象 。
6,变体变量 (variant)
特点:可以保存所有其他的数据类型,其数据类型由最近放入的值而定 。
2.2.2 变量的命名规则标识符是指用来标识变量名,符号常量名,过程名,数组名,
类型名,文件名的有效字符序列 。 标识符的命名遵循以下规则:
(1) 字母或汉字开头,由字母,汉字,数字,或下划线组成,长度小于或等于 255个字符,有效字符为 40个 。
(2) 不能使用 VB中的关键字 。
(3) 不能包含小数点 。 除了最后一个字符外不能包含类型说明符 。
(4) 撇号 ( ') 或 Rem为程序的注释的引导 。
(5) 不区分大小写,Xy和 xy是同一个标识符 。 符号常量一般用大写 。
(6) 为了增加程序的可读性和可维护性,可以在命名变量时使用前缀的约定 。
以下是一些非法的标识符的例子:
4yz '数字开头
x – z '不允许出现减号
xy.t '不允许出现小数点
If '不允许关键字
Print$ '不允许关键字
2.2.3 变量类型的声明
1.显式声明语法格式如下:
Dim 变量名 [As 数据类型 ]
如,Dim Number1 As Byte
可以将 类型符 加在变量名后来代替,As 数据类型”,如:
Dim intN1%,intY&,sngSum!
可以将多个变量放在一行中一次声明,如:
Dim intX As Integer,dblNumber1 As Double
数据类型若省略,则该变量被声明为 Variant型。例如:
Dim vntY
对于字符串变量,声明时可以给定字符长度:
Dim 字符串变量名 As String*字符数 '定长字符串变量
Dim 字符串变量名 As String '变长字符串变量对于固定长度的字符串变量,赋值时,若字符个数少于字符串的长度,则右补空格,若字符个数超过字符串长度,则将多余的字符截去 。
对于第二种字符串变量,其长度由最后所赋值的字符串决定 。
例如:
Dim strS1 As String*10
Dim strS2 As String
strS2="abc"
strS2="abcdefg"
strS1="中华人民共和国湖南省长沙市 "
'strS1的长度为 10,strS1的值为 "中华人民共和国湖南省 "
'strS2中的值为字符串 "abcdefg"
2,隐式声明在 VB的程序中可以不声明变量的类型,而直接使用,实际上是等价于一个变体变量 ( 根据被赋予的值来决定类型 ) 。 不建议这样做 。
可通过以下两种方法来强制要求变量先申明后使用:
在通用申明段使用 Option Explicit语句 ;
选菜单,工具,/―选项,?,编辑器,?勾上,要求变量申明,
2.2.4 变量的赋值与引用将数据赋值给变量可以使用赋值运算符 ( =) 。 在引用时,
变量名出现在赋值运算符的右边 。
数值一般只能赋给同数据类型的变量,若赋值运算符两边数据类型不同且不能转换,会出现类型不符错误 。 例如:
intX%=5 ' 变量的赋值
intY%=intX%+4 ' 引用 intx,并给 intY赋值
intX%="first" ' 错误,类型不符
2.2.5 常量的定义和种类
1,直接常量
( 1) 数值型直接常量整型常量,± n[%] 513,+513,-513,513%
长整型常量,± n& 513&,-513233232&,32768
单精度型常量,± n.n,± n.,± n!,± nE± m,± n.nE± m
513.,513.24,513.24!,0.51324E+3
双精度型常量,± n.n,± n#,± nD± m,± n.nD± m,n.nE± m#
513.24567890123,513.24#,0.51324D+3,0.51324E+3#
货币型常量,513.24@,5123@
八进制常量,&O761,&O543
十六进制常量,&H45AB,&H45FE
(2) 字符串常量字符串常量是用双引号括起来的字符序列 。 例如:
"abcdefg","中华人民共和国 ","This is a book",
"I say:""how are you?"""
( 即,I say:"how are you?",若字符串中包括 "字符,则要连写 2个 "符号 )
注意 ""和 " "有区别:
"":字符内容无,字符个数为 0;
" ":字符内容有 ( 是空格字符 ),字符个数为 1。
当字符串常量包含一个数字值时可以赋值给数值型变量,
包含一个日期值时,可以赋值给日期型变量
(3) 日期型常量日期型常量的书写形式是用 #括起来的可以被认作是日期和时间的文本 。
例如:
#10/12/96#,#January 1,2000#、
#1996-12-11 12,30,12 PM#,#11,31,11 AM#
(4) 逻辑型常量逻辑型常量只有 True和 False两个值 。
2,符号常量符号常量用来代替程序中的数据 。
例如:
Const PI=3.14159 '定义 pi为单精度型
Const SQUARE=2*PI*30^2 '使用已定义的符号常量
Const COUNT%=34,FLAG As Boolean=True '使用连续定义符号常量,只能引用不能赋值,不能循环定义 。
3,系统常量系统常量是 VB所定义的系统内部常量 。
例如,下面是两个键码常量:
vbKeyReturn(=13)—表示回车键
vbKeyControl(=17) —表示 CTRL 键又例如,下列三个常量代表窗口属性 WindowsState的值:
vbNormal(=0)—代表窗体大小为正常大小
vbMinimized(=1)—代表窗体大小为最小化
vbMaximized(=2)—代表窗体大小为最大化再如,下列是三个颜色常量:
vbBlack (=&H000000) —代表黑色
vbRed (=&H0000FF) —代表红色
vbBlue (=&HFF0000) —代表蓝色
2.3 运算符和表达式
2.3.1 算术运算符和算术表达式算术运算符 用来进行算术运算;用算术运算符将运算对象连接起来的式子叫 算术表达式 。
运算符 含义 优先级 算术表达式 结果
( ) 括号 1 ( 3+1) /2 2
^ 幂运算 2 -16^(1/2) -4
- 负号 3 4*-3 -12
* 乘 4 1/3*3 1
/ 除 4 10/3 3,33333333333333
\ 整除 5 10\3 3
Mod 取余数 6 10 Mod 3 1
+ 加 7 -3+4 1
- 减 7 6-4 2
2.3.2 字符串运算符和字符串表达式字符串运算符有两个,+,&
字符串运算符的作用:都是连接 。 ( +将两字符串连接形成新的字符串; &可将其他类型数据转换成字符串并连接成新串 )
示例:
2.3.3 关系运算符和关系表达式关系运算符 用来进行关系运算;用关系运算符连接起来的表达式叫 关系表达式 。
关系运算符 含义 表达式 结果
= 等于 3*4=12 True
> 大于 "abcde">"abr" False
>= 大于等于 5*6>=24 True
< 小于 "abc"<"Abc" False
<= 小于等于 5/2<=10 True
<> 不等于 "d"<>"D" True
Like 字符串匹配 "fist" like "f* " True
2.3.3 关系运算符和关系表达式注意:
( 1) 关系运算符,=‖与赋值运算符,=‖不同 。
(2) 日期按先后比较,字符串按字典排序比较大小 。
( 3) 关系运算符的优先级相同 。
( 4)关系运算符 "like"用来作字符的比较,例如:
"abc" like "a*" 'True
123 like "12?" 'True
456 like "45#" 'True
"this is a book" like "*a b[a,o,c]ok" 'True
2.3.4 逻辑运算符和逻辑表达式逻辑表达式的结果为 True或 False两种值之一;逻辑表达式的运算对象为逻辑型数据或数值型数据 。
Not 取反,将两个逻辑值互相转换
And 与,两个操作数都为真,结果才为真,否则为假
Or 或者,两个操作数中只要有一个为真,结果为真
Xor 异或,两个操作数不同时为真,否则为假
Eqv 等价,两个操作数相同时为真,否则为假
Imp 蕴含,当第一个表达式为真,且第二个表达式为假时,结果为假,否则为真 。
2.3.4 逻辑运算符和逻辑表达式逻辑表达式用于表达复杂的条件描述,例如:
length= 1.60 ( 这是赋值语句 )
sex="女 " ( 这是赋值语句 ) 以下是三个表达式及其值:
(length > 1.68 And sex="男 " ) Or (Not sex="男 " And length > 1.58) ' True
3<>4 And 4>9 ' False
3<>4 Or 4>9 ' True
如果逻辑运算的运算对象是数值型的数据,则按二进制位进行逻辑操作 ( 非 0数当作 True; 0当作 False) 。
例如,6 And (–3) 等于 4。
And 1111111111111101 (即 -3)
0000000000000110 (即 6)
0000000000000100 ( 即 4 )
说明:负数的二进制表示是用 补码形式 。
2.3.5 表达式求值和运算符的优先级在表达式求值的过程中,各种运算须按运算符的优先级进行。
运算符的优先级如下:
算术运算符 >字符运算符 >关系运算符 >逻辑运算符
VB中还规定不同数据类型的数值数据在运算时,按精度高的数据类型进行运算。
Integer<Long<Single<Double<Currency
如,Integer型与 Double型运算,结果为 Double型; Long型与
Single型运算时结果为 Double型 。
将下例数学式子转换成 VB表达式
)l g (*
)88s i n (
yyx
ex oxy

(X^y+exp(x)+sin(88*3.1415926/180))/(sqr(x*y)+log(y))
2.4 VB常用内部函数函数是 VB的一种程序模块,可以完成特定的功能。函数有用户自定义函数和内部函数。内部函数不必定义就可以直接使用。
2.4.1 函数的参数与函数的值
2.4.2 数学函数
( 1) Abs()
取参数的绝对值
abs(-5.64) '5.64
(2)Cos()
功能:求余弦值,结果为 Double 型,参数是弧度,
Cos(0) '1
函数名 参数 函数值为 4
Sqr(16)
( 3) Exp()
求 e(约等于 2.718282)的某次方,参数不超过 709.782712893 。
Exp(1) '=2.71828182845905
Exp(-1) ' =0.367879441171442
(4) Sqr()
求参数的平方根,结果为 Double 型的数值。
Sqr(3) '=1.73205080756888
(5) Rnd()
返回一个随机的 [0,1)之间的 Single型数值,
语法,Rnd[(number)]。
(5) Rnd()
若 number<0,Rnd(number)使用 number作种子产生相同的数 。
若 number>0,Rnd(number)返回利用种子产生的序列的下一个数 。
若 number=0,Rnd(number)返回最近产生的随机数 。
若省略 number,等同于 number>0。
种子相同,每次重新执行程序,Rnd都会产生相同的 随机数序列 。
可以使用 Randomize语句产生不同的种子,得到不同的随机数序列。
Randomize [数值 ]
(根据系统计时器或具体数值得到新种子)

(5) Rnd()
要产生某个范围内的随机整数,可使用以下公式:
Int((U-L+1)*Rnd)+L (U,L为范围的上、下边界 )。
Int(100*Rnd)+1,'产生 [1,100]之间的随机整数
Int(101*Rnd)+100,'产生 [100,200]之间的随机整数
2.4.3 字符函数
( 1)字符串编码与 StrConv()函数在 Windows 操作系统中,字符采用 DBCS编码,西文字符 用一个字节表示;中文字符用两个字节表示。
在 VB中,字符采用 Unicode编码,所有的字符都用两个字节表示。
( 2) StrConv()
Unicode编码与 DBCS编码的转换函数。
语法,Strconv(string,conversion)
string为字符串; conversion为整数,用来决定转换的类型 。
Conversion参数有 vbFromUnicode(128%),用来将 Unicode编码转换为 DBCS编码; vbUnicode(64%),用来将 DBCS编码转换为
Unicode编码 。
例 2-1 Strconv函数,Unicode编码与 DBCS编码的转换 。
(3) Len()与 lenB()
Len()求字符串的字符数; lenB()求字符串的字节数,或者求变量在内存中的字节数。
语法:
Len(string|varname)
LenB(string|varname)
例 2-2 Len()与 lenB()函数的使用 。
(4) Left()与 Right()
截取字符串从左 (右 )边算起的指定个数的字符 。
语法:
Left(string,length)
Right(string,length)
例 2-3 Left()与 Right()函数的使用。
( 4) Ltrim(),Rtrim()与 Trim()
Ltrim()去掉字符串左端空格,
Rtrim()去掉字符串右端空格,
Trim()同时去掉左端和右端空格 。
语法:
Ltrim(string)
Rtrim(string)
Trim(string)
例 2-4 Ltrim()和 Rtrim()函数的使用 。
( 5) Mid( )
截取字符串从指定字符开始的若干个字符 。
语法,Mid(string,start[,length])
例 2-5 字符串的截取 。
( 6) String()
返回指定长度,重复指定字符的字符串 。
语法,String(number,character)
如,String(5,”,) 产生 5个空格例 2-6 字符串的产生 。
2.4.4 类型转换函数
( 1) Asc( )
返回代表字符串中首字符的 Ascii码 。
语法,Asc(string)
例 2-7 Asc函数的使用 。
( 2) Chr( )
将 Ascii码转换成字符 。
语法,Chr[$](number)
例 2-8 Chr函数的使用 。
( 3) Ucase( )与 Lcase( )
将字符串中的字符大小写转换语法,Ucase(string)
Lcase(string)
说明,Ucase和 Lcase互为反函数 。
例 2-9 Ucase与 Lcase函数的使用 。
( 4) Str( )
将数值转换为数字字符串 。
语法,Str[$](number)
例 2-10 Str函数的使用 。
( 5) Val()
将数字字符串转换为数值 。
语法,Val(string)
例 2-11 Val 函数的使用 。
2.4.5 日期函数
( 1) Date( )
返回系统日期 。
语法,Date[( )]
( 2) Now( )
功能:返回系统日期和时间 。
语法,Now[( )]
( 3) Time( )
功能:返回系统时间 。
语法,Time[( )]
例 2-12 Date,Now和 Time函数的使用 。
2.4.6 其它函数
( 1) Tab(n)
将光标定位到第 n列 。
( 2) Spc(n)
产生 n个空格符 。
Tab(n),Spc(n)与 Print方法一起使用,可以定位输出字符位置 。
语法:
Tab[(n)]
Spc(n)
例 2-13 Tab和 Spc函数的使用示例 。
(3) Shell( )
执行一个可执行文件 。
语法,Shell(filename[,windowstyle])
windowstyle可用以下 6个系统常量:
vbHide(0),隐藏窗体
vbNormalFocus(1),正常大小窗体,有焦点
vbMinimizedFocus(2),最小化的窗体,有焦点
vbMaximizedFocus(3),最大化的窗体,有焦点
vbNormalNoFocus(4),正常大小窗体,无焦点
vbMinimizedNoFocus(6),最小化的窗体,无焦点例 2-14 单击窗体用 Shell函数启动记事本程序 。
实验实验 1:基本操作题 1,3;简单应用题 1;综合应用题 1
实验 2:简单应用题 3,4;综合应用题 1,2