VB讲课笔记04:数据类型、运算符与表达式、常用函数
一、标识符
VB6.0中,标识符分两类,一类是系统内部定义的标识符, 一类是用户定义的标识符。
系统内部定义的标识符又称关键字或保留字,主要用于标识内部符号常量、内部函数和语句关键字等。这类标识符由系统定义,具有特定的含义,用户在自定义标识符时,不能用这些标识符用作自定义标识符,以免发生错误。
例如:vbOk、vbTab(符号常量),Int、MsgBox(内部函数)、If、For (语句关键字)等都是系统内部定义的标识符。
在程序设计中,用户要为变量、过程、对象等命名,这就要用到自定义标识符。用户自定义标识符应遵循以下规则:
(1)组成:字母、数字、下划线和汉字
(2)打头:字母或汉字
(3)长度不超过255个字符
(6)不能使用VB保留字
选择题真题演练
二、数据类型
数据是程序处理的对象。为了满足数据处理的需要和节省资源,高级语言都对数据进行分类处理。数据类型不同所占存贮空间不尽相同,所适用的操作也有所不同。VB6.0提供了系统定义的基本数据类型,也允许用户定义自己的数据类型。
1、基本数据类型
数据类型
|
关键字
|
类型符
|
字节数
|
字节型
|
Byte
|
无
|
1
|
逻辑型
|
Boolean
|
无
|
2
|
整型
|
Integer
|
%
|
2
|
长整型
|
Long
|
&
|
4
|
单精度型
|
Single
|
!
|
4
|
双精度型
|
Double
|
#
|
8
|
货币型
|
Currency
|
@
|
8
|
字符串型
|
String(定长)
|
$
|
串长度
|
字符串型
|
String(变长)
|
$
|
N
|
日期型
|
Date
|
无
|
8
|
对象型
|
Object
|
无
|
4
|
变体型
|
Variant
|
无
|
不定
|
2、用户自定义数据类型
Private|Public Type <类型名>
元素1 As 类型1
元素2 As 类型2
……
End Type
在通用段里定义Student类型,并在按钮单击事件里测试Student类型的变量stu1,给stu1的各个成员赋值,并打印出stu1的成员值。
三、常量和变量
常量是其值不能改变的量,而变量是在执行过程中可以改变的量。变量有四个要素:类型、名称、值和作用域。掌握了变量的使用,就掌握了程序设计的精髓。
(一)常量
在程序运行的过程中,其值不能发生改变的量称之为常量。下面介绍几种常量:数值常量、字符串常量、逻辑常量、日期型常量、符号常量。
1、数值常量
VB6.0提供了不同规格的数值常量,通常是整型或实型常量。可以在常量后加类型说明符来规定常数的数据类型,比如123.45678@,则为货币型常量,而1.23#,则为双精度常量。
2、字符串常量
字符串常量是指用双引号括起的一串字符。括号类字符的个数为字符串的长度。长度为0的字符串称为空串,即"",只有空格或制表符的字符串称为空白串,比如" "。
3、逻辑常量
逻辑常量用于表示逻辑真与逻辑假,取值为True或False。
4、日期型常量
日期型常量主要是以文本型日期和用#号限定的数字日期。文本型日期实质上是字符号,将其赋给日期型变量时,系统自动将其转化为日期值。日期的分隔符常用“/”或“-”,而时间用“:”分隔,日期时间写在一起,用空格分隔。
5、符号常量
(1)用户自定义符号常量
在VB6.0中,可以用Const语句定义符号常量,用来代替指定的数值或字符串。
格式: [Private|Public ] Const 常量名 [As 类型名] = 表达式
说明:如果没有使用类型说明符或As指定常量类型,那么其类型根据其存放的数据来确定其类型。
数值型(Integer、Long、Single、Double)可以相互转换;数值型可以转换成字符型,反过来就会报错;日期不能转换成数值型,但是可以转成字符型。逻辑型也可以转换成字符型。
(2)系统符号常量
为了方便数据的引用和程序的阅读,VB6.0定义了一些与控件相关的系统常量:vbOKOnly、vbCancel、vbYesNo、vbNormal等。
(二)变量
在程序运行的过程中,其值可以发生改变的量称之为变量。变量有两个基本属性,一个是名,一个是值。变量显示为一个名称, 值为变量中存贮的内容。每一个变量都有名称和数据类型,名称用于标识变量,数据类型则表明该变量在内存中占据空间大小,以及可以进行哪些运算。变量名的命名要符合自定义标识符的要求。变量的使用一般遵循先声明,再使用的原则,不定义就使用,则变量为变体型。
(一)变量的声明
1、用DIM等命令声明变量
(1)格式
Dim | Public | Private | Static 变量名 [ As 类型名]
(2)示例
Dim a1 As Integer
Private s1, s2 As String 's1是变体型,s2是字符串
Public n, m As Integer
(3)说明
Dim 用于声明窗体级、模块级或过程级变量。
Private 用于声明窗体级或模块级变量。
Public 用于全局变量。
Static 用于声明静态变量。
运行程序,单击四次窗体:
每次窗体单击过程结束后,静态变量count的值依然保存,所以count可以统计单击窗体的次数。
如果count不是static变量,那么每次执行事件过程都会初始化成0,然后加1,于是每次都显示count=1。
运行程序,单击四次窗体:
选择题真题演练
2、用类型说明符标识变量的类型
格式:变量名<类型说明符>
3、用类型定义语句声明变量
VB6.0提供了类型定义语句,在窗体级或模块级中使用,用于声明以某些字母开头的变量名的数据类型,这种声明方式通常称为声明缺省类型。
(二)变量的赋值
用赋值语句可以将常量、变量、函数和表达式的值赋给某变量。
1、格式
[Let] <变量名> = < 常量|变量|函数|表达式 >
2、功能
将赋值号右边的值赋给左边的变量。
3、说明
(1)在某一个时刻,一个变量只能存放一个数据,变量值的使用特点是“取之不尽,去旧纳新”。
(2)赋值时表达式值的类型与变量类型不一定完全一致,系统根据自动转换的原则先转换再赋值。
运行程序:
单击【赋值】按钮:
(三)变量作用域
由于变量声明使用的命令不同,声明的地点不同,变量的作用范围即作用域也不相同。在VB6.0中,变量的作用域分三级:过程级、窗体级和模块级。
1、过程级变量
过程级变量,又称为局部变量,其作用域为声明该变量的过程或函数。不同过程中声明的变量,即使变量名相同,也占用不同的内存空间,分别存贮各自的值。
局部变量使用Dim语句或Static在过程中声明变量。用Static声明的变量称为静态变量。静态变量中的值会一直保存到程序结束为止。
2、窗体级变量
窗体级变量是在窗体级通用代码处用Dim、Private、或Public声明的变量,其作用域为整个窗体及所有过程。在VB6.0中,窗体和类等对象模块是私有模块,若用Public声明的变量,在其它窗体中不能直接使用,但可以通过声明它的窗体来引用。
引用格式为:窗体名.变量名
3、模块级变量
模块级变量是在模块中声明的变量。用Dim或Private声明的变量,其作用域为本模块及内部所有过程。用Public声明的变量,作用域为整个应用程序。
演示变量作用域案例
1、创建工程,改名为“演示变量作用域”,窗体改名为frmVariableScope
2、添加两个按钮
3、在Command1的单击事件代码里声明过程级别变量x,给它赋值
变量x是过程级别,因此只在Command1的单击事件过程里有效,其它过程无法访问。
4、在Command2的单击事件代码里访问变量x
此时运行程序,先单击Command1按钮,再单击Command2按钮,结果如下:
5、将变量x的级别从过程级提高到窗体级
此时,运行程序,先单击Command1,再单击Command2,结果如下:
6、添加第二个窗体,改名为frmVariableScope2
7、在窗体frmVariableScope2里添加一个按钮Command1
8、编写Command1的单击事件处理代码,访问frmVariableScope的窗体级变量x,看行不行
9、修改frmVariableScope窗体里Command1的单击事件处理代码
10、运行程序,单击第一个窗体的Command1按钮,再单击第二个窗体的Command1按钮,看看会发生什么事情
说明窗体级别的变量不能被其它窗体或模块访问,除非将窗体级别的变量提高为全局级别,采用关键字Public来修饰变量x。
11、修改第一个窗体通用段代码
12、运行程序,单击第一个窗体的Command1按钮,再单击第二个窗体的Command1按钮,就可以访问到全局变量x了,如下图所示:
上面演示了窗体级别的变量,如果用Dim或Private声明,那么只能在本窗体范围内有效,不能被其它窗体或模块访问。只有用Public声明的窗体级变量,才可以被其它窗体或模块访问,但是变量必须加上窗体名作为前缀。
下面演示模块级别的变量,如果用Dim或Private声明,那么只能在本模块范围内有效,不能被其它窗体或模块访问。只有用Public声明的模块级变量,才可以被其它窗体或模块访问,注意,变量无须加上模块名作为前缀。
13、添加标准模块Module1
在通用段声明一个全局变量:
14、修改第一个窗体Command1的单击事件代码,设置模块Module1里定义的全局变量gAmount
15、修改第二个窗体Command1的单击事件代码,访问Module1里定义的全局变量gAmount
16、运行程序,单击第一个窗体的Command1,再单击第二个窗体的Command1,看能否访问到模块Module1里定义的全局变量gAmount
选择题真题演练
四、运算符与表达式
程序中,对数据的处理,主要是依靠运算符来实现。
VB6.0运算符的类型有:算术运算符、比较运算符、连接运算符、逻辑运算符。由运算符及括号将运算对象连接构成的式子称为表达式。VB表达式分为算术表达式、关系表达式、逻辑表达式和字符串表达式。
(一)算术运算符与算术表达式
1、算术运算符
算术运算符用于实现算术运算,其运算对象和结果都是数值型数据。VB6.0提供的八种算术运算及运算优先级。
运算优先级:
注意:在表达式中乘号(*)不能省略。
2、算术表达式
算术表达式是用算术运算符和括号将数值数据连接而成的式子。数学中的代数式并不一定是VB中的算法表达式,在书写算术表达式时应注意以下问题。
(1)表达式要在同一行上书写成线性序列
(2) 乘号“*”不能省略,也不能用“×”代替。
(3) 表达式中只能使用圆括号,且可以嵌套,不能使用方括号和花括号。
(4)表达式中不能出现л、α、β、λ等希腊字母,可用其它字符串来替代
3、优先级
当表达式中有多个运算符时,此时表达式要按运算符的优先级进行运算。在 Visual Basic 6.0算术表达式中,运算按括号、函数、指数运算(^)、取负运算(-)、乘法和除法运算(*、/)、整除运算(\)、取余运算(mod)、加法和减法运算(+、-)的顺序进行。
选择题真题演练
案例:求解一元二次方程
1、创建工程,在窗体里添加按钮,设置相关属性
2、编写按钮单击事件处理代码
3、运行程序,单击【求解方程】按钮
4、修改a, b, c的值
5、运行程序,单击【求解方程】按钮
(二)关系运算符与关系表达式
1、关系运算符
关系运算的运算对象是数值型数据和字符型数据,是对两个数进行比较的运算,关系运算符有:=、< >、>、>=、<、<=
关系运算的结果是逻辑型的值。当关系成立时,结果为True;当关系不成立时,结果为False。
当比较两个字符串数据时,从第一个字符开始依次比较对应位置字符的ASCII码值,直到遇到第一对ASCII码不相等的字符为止,ASCII码大的字符串大。
2、优先级
关系运算符的优先级相同。若关表达式中又有算术表达式,则先进行算术运算,再进行关系运算。
(三)逻辑运算符与逻辑表达式
1、逻辑运算符
逻辑运算符是对操作数进行逻辑运算,运算的结果为逻辑型数据。当逻辑关系成立时,运算结果为True;当逻辑关系不成立时,运算结果为False。几种常用的逻辑运 :
非-NOT 与-AND 或-OR
(1)And(逻辑与)
当且仅当参与运算的两个数都为True时,运算结果为True。否则,只要参与运算的两个操作数中有任何一个为False时,运算结果都为False。
(2) Or(逻辑或)
当且仅当参与运算的两个数都为False时,运算结果为False。否则,只要参与运算的两个操作数中有任何一个为True时,运算结果都为True。
(3)Not(逻辑非)
是单目运算符。当参与运算的数为False时,运算结果为True。当参与运算的数为True时,运算结果为False。
2、优先级
逻辑运算符的优先级为:非与或。当逻辑表达式中有关系表达式或算法表达式,运算顺序为:先算术运算,再关系运算,后逻辑运算。
案例:闰年判断
运行程序,单击【判断】按钮:
再单击【判断】按钮,重新输入一个年份来测试:
其实闰年判断的条件做点修改也同样可行:
(四)字符连接运算符
字符串运算符包含“+”和“&”两个运算符,它们的作用是将两个操作数连接起来,成为一个字符串,操作对象可以是字符型、数值型和可变型数据。
- “+”是直接将两个字符串从左至右原样连接,生成一个新的字符串。参与运算的两个数据必须是字符型数据。
- “&”是将参与运算的两个数据强制性地按字符串类型连接在一起,生成一个新的字符串。参与运算的两个数据可以是字符型、数值型和可变型数据。
注意:若在变量后使用运算符“&”,应在变量和“&”之间加一个空格。
整数不能与字符串相加,必须利用Str函数将整数转换成字符串:
但是利用&运算符,就不用使用Str函数来转换了,它会自动转换的。
五、常用内部函数
在VB6.0中,为了方便用户进行一些操作或运算,VB将其定义为内部函数。在程序中要使用一个函数时,用户只要知道该函数的名称和使用格式,就可以方便地使用。VB6.0常用内部函数根据功能可以分为:数学函数、字符串函数、转换函数、日期函数等。
Visual Basic6.0约定:n表示数值表达式,c表示字符串表达式,d表示日期表达式。若函数名后有$符号,则表示该函数返回值为字符串。
1、数学函数
数字函数包括平方根函数、三角函数、对数函数、指数函数以及其它数学函数,主要用来完成一些基本的数学运算。
Sin(x)、Cos(x)、Tan(x)、Atan(x)、Sqr(x)、Exp(x)、Log(x)、Rnd(x)、Sgn(x)、CInt(x)、Fix(x)、Int(x)、Abs(x)
说明:CInt函数跟Int和Fix函数,后两个函数都是去尾取整,但是CInt是四舍五入取整,不过有个特殊情况,当分数部分恰好为 0.5 时,CInt 函数通常将其四舍五入为最接近的偶数。例如,0.5 被四舍五入为 0,而1.5 被四舍五入为 2。
2、字符串函数
字符串函数主要包括字符串整理函数、取子串函数、测长度函数、字母大小写转换函数等。
Len(c)、Left(c, n)、Right(c, n)、Mid(c, n1, n2)、Asc(c)、Chr(n)、Str(n)、Val(c)
3、日期函数
日期函数主要用于对日期和时间的操作 。
Time、Date、Now()、Year(d)、Month(d)、Day(d)、Hour(d)、Minute(d)、Second(d)、Weekday(d)
4、其它函数
Format()、Shell()、VarType()、TypeName()、IIf()
(1)Format()
(2)Shell()
(3)VarType()、TypeName()
(4)IIf()函数
IIf(expL, exp1, exp2)
如果expL = True,那么返回exp1;
如果expL = False,那么返回exp2;