大于>X>Y
小于等于<=X<=Y
大于等于>=X>=Y
比较样式Like"BAT123khg"Like"B?
T*"返回True
比较对象变量Is使用Is运算符来比较两个对象引用
例:
查看运行结果。
PrivateSubCommand1_Click()
c$="2001181101"
IfLeft(c$,4)="2001"ThenPrint"是2001级的学生"
n1$="王军"
Ifn1$Like"王*"Then
Print"是姓王的学生" ''对
Else
Print"不是姓王的学生"
EndIf
n2$="王军红"
Ifn2$Like"王?
"Then
Print"是姓王的学生"
Else
Print"不是姓王的学生" ''对
EndIf
EndSub
3、逻辑运算符
VB逻辑运算符:
优先级从上至下
逻辑运算符表达式举例说明
非NotNotX原来为真,否定为假
与AndXAndY其一为假,结果为假
或OrXOrY其一为真,结果为真
异或XorXXorY不同为真,相同为假
等价EqvXEqvY相同为真,不同为假
蕴含ImpXImpYX为真,Y为假,结果为假
逻辑运算表:
-1为真,0为假
XYNotXXAndYXOrYXXorYXEqvYXImpY
-1-10-1-10-1-1
-1000-1-100
0-1-10-1-10-1
00-1000-1-1
例:
查看运行结果。
PrivateSubCommand1_Click()
a=1:
b=2
c=3:
d=4
Printa>bAndc>d
Printad
PrintNota
Printad
Printad
Printad
EndSub
4、表达式执行顺序
首先执行函数运算。
其次算术运算,算术运算符优先顺序:
幂、取负、乘和浮点除、整除、取模、加和减、连接
再次关系运算。
最后进行逻辑运算,优先顺序为:
Not、And、Or、Xor、Eqv、Imp。
注意:
在运算中,括号内的运算的优先于括号外的运算。
字符串连接运算符不是算术运算符,它的优先级高于比较运算符,低于算术运算符。
Like和比较运算符的优先顺序相同。
进行模式匹配处理,应该注意?
和*两个通配符。
Is是对象比较运算符,它不考虑对象的值,只是针对两个对象是否参照了相同的对象。
当使用幂时,符号优先,例如:
4^-2,表示4的负2次方
vb运算符优先级
当表达式包含多个运算符时,将按预定顺序计算每一部分,这个顺序被称为运算符优先级。
可以使用括号越过这种优先级顺序,强制首先计算表达式的某些部分。
运算时,总是先执行括号中的运算符,然后再执行括号外的运算符。
但是,在括号中仍遵循标准运算符优先级。
当表达式包含多种运算符时,首先计算算术运算符,然后计算比较运算符,最后计算逻辑运算符。
所有比较运算符的优先级相同,即按照从左到右的顺序计算比较运算符。
算术运算符和逻辑运算符的优先级如下所示:
算术运算符
比较运算符
逻辑运算符
描述
符号
描述
符号
描述
符号
求幂
^
等于
=
逻辑非
Not
负号
-
不等于
<>
逻辑与
And
乘
*
小于
<
逻辑或
Or
除
/
大于
>
逻辑异或
Xor
整除
\
小于等于
<=
逻辑等价
Eqv
求余
Mod
大于等于
>=
逻辑隐含
Imp
加
+
对象引用比较
Is
减
-
字符串连接
&
当乘号与除号同时出现在一个表达式中时,按从左到右的顺序计算乘、除运算符。
同样当加与减同时出现在一个表达式中时,按从左到右的顺序计算加、减运算符。
字符串连接(&)运算符不是算术运算符,但是在优先级顺序中,它排在所有算术运算符之后和所有比较运算符之前。
Is运算符是对象引用比较运算符。
它并不比较对象或对象的值,而只是进行检查,判断两个对象引用是否引用同一个对象。
VisualBasic(简称VB)是在原有Basic语言基础上的进一步发展,它包含了数百条语句、函数及关键词,具有“所见即所得(WYSIWYG)”的可视化编程环境。
从掌握开发VB应用程序的基本技能出发,本章主要介绍VB的基础知识、基本语法规则,包括字符集、数据类型、常量、变量、命名规则、运算符、表达式以及常用内部函数。
2.1VB的基本字符集和词汇集
2.1.1字符集
程序由语句构成;语句由表达式、单词构成;表达式和单词由字符组成;程序语言中,字符、词汇、表达式、语句、过程、函数被称为“语法单位”。
语法的形成规则称为“语法规则”。
字符是构成程序设计语言的最小单位。
VB的字符集包括:
数字,英文字母和特殊符号。
数字 :
0---9
英文字母:
26个英文字母的大小写 a---z和 A---Z
特殊字符:
!
#$%&@^'()*+,-./\?
<=>[]_{}︱~:
;〞space
注:
在代码窗口输入程序时,除汉字外,其余符号不能以全角或中文方式输入,而只能以英文方式键入作为语言成分的字符。
例如:
Print“x*y=”;x*y
2.1.2词汇集
词汇符号时程序设计语言中具有独立意义的最基本结构。
词汇符号包括:
运算符、界符、关键字、标识符、各类型常数。
1.运算符和界符
算术运算符:
+ - * / \ MOD ^
字符运算符:
& +
比较运算符:
> >= < <= = <>
逻辑运算符:
NOT AND OR XOR EQV IMP
其他界符 :
!
# $% @( ) , . ' ?
[ ]_{ }︱~ :
;〞space
2.关键字
又称保留字,在语法上又固定的含义,是语言的组成部分,往往表示系统提供的标准过程、函数、运算符、常量等。
在VB中,约定关键字的首个字母为大写。
2.2VB的数据类型
VB提供了许多基本数据类型,如:
String(字符型),Integer(整型),Long(长整型),Boolean(逻辑型),Variant(可变型),Currency(货币型)等,每种数据类型占用一定的内存,允许存储一定类型及范围的值。
2.2.1字符串型
String用于存放字符串。
在VB中,字符串要用双引号括起来,是一组由计算机字符组成的序列。
每个字符都以ASCII编码表示,因此在字符串中字母的大小写是有区别的。
简单地说用双引号括起来的一串字符即为字符串。
例如:
“VisualBasic”、“中国大学生”、“123.456”、“everyone”、“”(空字符串)
字符串中包含的字符个数称为字符串长度,在VB中把汉字作为一个字符处理。
字符串有两种:
变长字符串和定长字符串。
变长字符串的最大长度为231-1个字符;定长字符串的最大长度为65535个字符。
2.2.2数值型
数值(Numerice)数据类型分为整型数据和实型数据两大类。
有整型(Interger)、长整型(Long)、字节型(Byte)、单精度型(Single)、双精度型(Double)和货币型(Currency)。
1.整型(Interger)和长整型(Long)用于保存整数
可以是正整数、负整数或者0。
整型数用两个字节存储,表示数的范围为:
-32768~+32767
长整型数用4个字节存储,表示数的范围为:
-2147483648~+2147483647
例如:
369、-369、+369均表示整数,而369.0就不是整数。
3977、12345678均表示长整数。
而123,456则是非法数。
如果要存储数据的是整数而不是小数,则可声明它为Integer或Long。
整型数的运算速度快、精确,且占用存储空间较小,但表示数的范围也较小。
2.字节型(Byte)用来存储二进制数。
Byte是从0-255的无符号类型,不能表示负数。
如果数据包含小数,则应声明为Single、Double或Currency型。
实数是带有小数部分的数,分为浮点数和定点数。
其中浮点数由符号、指数、尾数三部分组成。
3.单精度型(Single)用来表示带有小数部分的实数
用4个字节存储,单精度浮点数最多有7位十进制有效数字,单精度浮点数的指数用“E”或“e”表示。
单精度数有多种表示形式:
±n.n(小数形式) ±nE±m(指数形式) ±n.nE±m(指数形式)
例如:
123.45、0.12345E+3、123.45!
都是同值的单精度数。
如果某个数的有效数字位数超过7位,当把它定义为单精度变量时,超出的部分会自动四舍五入。
4.双精度型(Double)
用8个字节存储。
多精度浮点数最多有15或16位十进制有效数字,多精度浮点数的指数用“D”或“d”表示。
科学记数法格式:
±aD±c或±ad±c
例如:
314.159265358979D-2表示3.14159265358979。
Single和Double采用浮点数表示,范围较大,但存储的数据为近似值,单精度型精确到7位,双精度型精确到15---16位,而Currency型采用定点数表示,虽范围较小(15位整数,4位小数),但存储的数据精确,适合于作金融计算。
5.货币型(Currency)
货币型(Currency)是一种专门为处理货币而设计的数据类型,是一种特殊的小数。
用8个字节存储,保留小数点右边4位和小数点左边15位,
如果数据定义为货币型,且其小数点后超过4位,那么超过的部分自动四舍五入。
对数值型数据采用哪种数据类型,可从以下三个因素考虑:
计算机内存占用量;程序执行速度;计算的精度。
2.2.3逻辑型(Boolean)
逻辑数据类型用于逻辑判断,只有两个值:
真(True)、假(False)
若数据信息是“true/false”、“yes/no”、“on/off”信息,则可将它定义为Boolean类型。
逻辑数据转换成整型数据时,真转换为-1,假转换为0;其他类型数据转换为逻辑数据时,非0数转换为真,0转换为假。
2.2.4日期型(Data)
用8个字节的浮点数存储,表示从公元100年1月1日到公元9999年12月31日的日期,时间范围则从0点0分0秒到23点59分59秒即0:
00:
00~23:
59:
59。
表示方法有两种:
一种是以“#”括起来的字面上被认为是日期和时间的字符;另一种是以数字序列表示。
例如:
#08/10/2004#、#2004-08-10#、#September1,2004#、#2004-9-1013:
30:
15#。
以数字序列表示时,小数点左边的数字代表日期(Date),小数点右边的数字代表时间(Time)。
其中,0为午夜0点、0.5为中午12点;负数代表1899年12月31日之前的日期和时间。
2.2.5可变类型(Variant)
可变型数据是一种可以随时改变数据类型的数据,可以存储任何类型(VB内部)的数据。
注意:
可变类型不是没有类型的,而是可以根据需要自由地改变其类型。
基本数据类型是系统定义的数据类型,VB6.0中定义的基本数据类型见表2.1。
表2.1 VB的基本数据类型
数据类型
关键字
类型符
占字节数
范 围
字节型
Byte
无
1
0--255
逻辑型
Boolean
无
2
True与False
整型
Integer
%
2
-32,768至32767
长整型
Long
&
4
-2,147,483,648至2,147,483,647
单精度型
Single
!
4
±3.402823E38
双精度型
Double
#
8
±1.79769313486231E308
货币型
Currency
@
8
-922,337,203,685,477.5808至922,337,203,685,477.5807
日期型
Date
无
8
0,01,100到12,31,9999
字符型
String
$
存储的字符数
0--65,535个字符
变体型
Variant
无
根据需要分配
2.3常量与变量
在程序运行过程中,其值始终保持不变的量称为常量。
在程序的运行过程中,其值可以改变的量称为变量。
变量是计算机内被命名的存储位置,在程序代码中指定一个变量名,运行时系统就为之分配合适的存储空间,该存储单元中的值可以改变。
对变量的操作即对该内存单元中数据的操作。
内存存储信息的特点决定变量值的变化规则,即变量一经赋值,可以多次取出使用,其值保持不变,直到再次给该变量赋以新值,则新值代替旧值。
2.3.1常量和变量的命名规则
在VB中,命名一个变量或常量要遵循以下规则:
◆必须以字母A~Z(或a~z)开头,由字母、汉字、数字、下划线组成的字符
◆名称中间不允许有空格
◆名称的最后一个字符可以是类型说明符号(规定数据类型的特殊字符)
◆VB中的关键字不能作为变量、常量名
◆常量或变量的名称中字母不区分大小写。
如ABC、abc、aBc都认为是一个相同的名称。
为了便于区分,一般变量名首字母用大写字母,其余用小写字母表示,而符号常量全部用大写字母表示。
2.3.2常量
表2.2
1. 普通常量
普通常量的类型和值由它本身的表示形式决定。
如:
12345 是一个十进制整数
“12345”是一个长度为5的字符串常量
“student”是一个长度为7的字符串常量
#8/12/200412:
30:
00#为日期型常量
对于各种数据类型的常量值,为了显式地指明常数的类型,可以在常数后面加上类型说明符,这些说明符分别为:
% 整型
& 长整型
!
单精度浮点型
# 双精度浮点型
@ 货币型
$ 字符串型
如:
-0.123!
是一个单精度浮点型常数
1.236# 是一个双精度浮点型常数
2.符号常量
程序代码中往往包含有重复使用的常量值;为了提高程序的可读性和便于维护,可以用有意义的符号常量来代替这些常数值。
此时要先声明。
声明常量的语法规则如下:
Const符号常量名[As类型]=表达式[,符号常量名=表达式……]
功能:
设置符号常量为表达式的值
说明:
◆可指定特定的数据类型。
(在前面列出的数据类型中均可使用。
)说明符号常量时,可以在常量名后加上类型说明符,类型说明符不是符号常量的组成部分。
◆经过说明的符号常量只是常数值的名字,不能在程序代码中修改它的值。
◆在一行中说明多个常数时使用逗号分隔。
◆常量说明语句若在过程内部,则符号常量只能在该过程内有效;若说明语句出现在窗体代码的声明部分,则窗体以及窗体中各控件的事件过程都能引用该符号常量。
◆表达式可以为文字常数,也可为包含除Is之外的任意算术操作符和逻辑操作符所构成的表达式。
举例:
下面的语句分别定义了四个符号常量。
ConstNAMEAsString=“nongye” '定义NAME是符号常量,其值是字符串"nongye"
ConstNUMAsInteger=123 '定义NUM是符号常量,其值是整型数123
Constsum%=196 '定义sum是整型常数,其值是196
Constpi=3.1415926,myly=“Hello!
everyone”
2.3.3变量
VB程序中的变量在使用之前应该进行声明,并指定一种数据类型,这样即可减少内存开销,又可提高运行速度。
可以强制要求变量声明,这样可能会减少调试时间。
1.变量的声明
◆用语句声明。
格式如下:
Dim/Public/Private/Static变量名[As数据类型][,变量名[As数据类型]…]
说明:
◆使用不同的命令关键字及不同的声明语句位置,使变量有不同的作用域。
◆变量名应遵从对变量的命名规则。
◆数据类型可以是前面列出的任何一种。
◆括号中的内容可以省略,省略As词条,系统默认为可变类型。
一条语句可声明多个变量,以逗号分隔。
◆变量被声明后,VB即为之赋缺省的初值:
数值型变量的缺省初值为0;字符串型为空串;布尔型为False;日期/时间型为1899年12月30日0点0分0秒;可变型为空empty。
◆对于字符串变量,根据其存放的字符串长度是否固定,其定义方法有两种:
命令关键字字符串变量名ASString 声明不定长的字符串。
命令关键字字符串变量名ASString*字符数 声明定长的字符串。
⑴用Dim关键字声明变量
格式:
Dim变量名[As类型]
其中:
[As类型]为可选项。
当该部分省略时,所建立的变量类型默认为可变类型。
用途:
在模块过程中或窗体级的通用过程中定义变量。
例子:
DimitageAsInteger '定义itage为整型变量
DimStrTepAsString '定义StrTep为不定长字符型变量
DimStrNameAsString*10'定义StrName为定长10的字符型变量
DimNumberAsSingle,CountAsSingle
'定义Number和Count都是单精度变量
DimNumber,CountAsSingle
'定义Number为可变变量,Count为单精度变量
从上面的例子可知:
◆ 字符串变量有定长和不定长两种形式。
◆ 在一个Dim语句中可以定义多个变量,之间用逗号隔开。
◆ 在一个Dim语句中定义多个变量时类型声明不能共用。
另外也可用类型说明符直接声明变量。
格式如下:
命令关键字变量名类型符
如:
Dim itage% '定义itage为整型变量
Dim light!
'定义单精度型变量light
Dim StrTep$ '定义字符串型变量StrTep
Dim Rmb@ '定义货币型变量Rmb
◆隐式声明
不声明变量而直接使用,其类型为Variant类型
,但程序出错时不易查出。
为了避免此类麻烦,可以规定每个变量都要经过作显式声明才可以使用。
这样,VB遇到一个未经声明的标识符,就会发出错误警告。
方法有两种:
1、)在窗体的【通用】区中加入OptionExplicit语句,代码中用到的变量必须先声明才能使用。
2、)在“工具”菜单中选取“选项”后,单击“编辑器”选项卡,复选“要求变量声明”选项即可。
⑵
用Static关键字声明变量
格式:
Static 变量名 As 类型名
用途:
在过程中定义静态变量
说明:
该变量的值在函数或过程执行结束后能保存下来,所以,下一次执行时,该值不再初始化。
例子:
PrivateSubform_Click()
DimA1AsInteger
StaticA2AsInteger
A1=A1+1
A2=A2+1
……
EndSub
该过程中A1和A2定义为不同类型的整型变量。
A1的值每调用一次过程就自动加1,过程调用一结束,其值就变为0。
A2的值每调用一次过程也自动加1,过程调用结束时,A2的值等于调用该过程的次数。
⑶Public关键字声明变量
用途:
在全局模块中使用,定义的变量是全局变量,作用域为整个应用程序。
声明的方式:
1、)单击“工程”菜单上的“添加模块”选项,添加一个新模块文件或打开现有的模块文件。
2、)用Public语句定义变量,格式为:
Public变量名As类型名
例子:
PublicPIAsSingle
PublicAAAsInteger
2.4 运算符和表达式
运算符是代表VB某种运算功能的符号。
VB程序会按运算符的含义和运算规则执行实际的运算操作。
VB中的运算符包括:
算术运算符、字符串运算符、逻辑运算符、关系运算符。
由这些运算符将相关的常量、变量、函数等连接起来的式子即为表达式。
例如:
a+b (4/3)*Pi*r^3 “It’s“ & “acat” 等等。
2.4.1算术运算符与数值表达式