1、第五讲 Visual Basic 语言基础,Visual Basic 程序设计教程,内蒙古科技大学工程训练中心 韩 艳,工程训练中心,,本讲主要内容, VB字符集 VB数据类型 VB的常量与变量 VB的运算符与表达式,工程训练中心,,一、 字符集,1、字符集 数字:09大小写英文字母:az;AZ 特殊字符:空格 !“ $ % & ( ) ,* / ;: ? _ |等; 2、关键字又称保留字,是语法的组成部分;在语法上有固定的含义;用于表示系统提供的标准过程、函数、运算符、常量等。,工程训练中心,,二、 数据类型,整型(Integer)% 长整型(Long)& 字节型(Byte) 单精度型(Si
2、ngle)! 双精度(Double)# 货币型(Currency),变长字符串(String)$ 定长字符串( String * Size),数值型,字符型,布尔型(Boolean) 日期型(Date) 可变型(Variant),基本数据类型,工程训练中心,,二、 数据类型,1、数值(Numeric)数据类型在VB中,数值分为整型和实型两大类。(1)整型 整型数是不带小数点和指数符号,但可以带正、负号的整数。整型数按示数范围的不同分为整型、长整型和字节型。,工程训练中心,,二、数据类型,整型整型(Integer)(类型符:%)十进制整数以两个字节(16位二进制码)表示和参加运算,取值范围: 3
3、2768(216)32767(2161),长整型(Long) (类型符:&)十进制长整数是以4个字节(32位二进制)存储,取值范围:2147483648(232) 2147483647(2321),字节型(Byte) 以一个字节(8位二进制)存储为无符号整型数,取值范围:0-255,工程训练中心,,二、 数据类型,(2)实型实型数是带有小数点的数,分为浮点数和定点数。浮点数由三部分组成:符号、指数和尾数。单精度浮点数(Single)(类型符:!)负数的取值范围:3.402823E+381.401298E45;正数的取值范围:1.401298E-453.402823E38;,双精度浮点数(Dou
4、ble)(类型符:#)负数的取值范围:1.797693134862316E3084.94065645841247E324;正数的取值范围:4.94065645841247E3241.797693134862316E+308;,货币类型数据(Currency)(类型符:)精确到小数点后四位,取值范围:922337203685477.580892337203685477.5807,工程训练中心,,二、 数据类型,2、字符串(String)数据类型 (类型符:$)字符串是用双引号界定的一个字符序列,由ASCII字符(除双引号和回车符之外)、汉字及其他可打印字符组成。例如: “ Hello”, “Vi
5、sual Basic 程序设计” ,“”(空字符串)说明:(1)字符串有两种:变长字符串和定长字符串(2) 字符串中包含的字符个数称为字符串长度。长度为0(即不含任何字符)的字符串成为空字符串;(3) 字符串中的字符靠ASCII识别的,故大小写是有区别的;字符串也可以比较大小;,工程训练中心,,二、数据类型,3、逻辑型(Boolean)数据类型逻辑性数值只有两个可能的值:True(逻辑真)或者 False(逻辑假)。注意事项:对于算术运算符,若两边的操作数是数字字符或逻辑型,则自动转换成 数值型后再运算。如:30True 结果为31,因为True转换为数值为1,当把逻辑值转化为数值时:Fals
6、e-0,True-1; 当把其他类型数据转化为逻辑数据时:0-False,非0的值-True,工程训练中心,,二、数据类型,4、日期(Date)数据类型表示方法:(1)以符号“#”括起来的任何在字面上可被认作日期和时间的字符:#January 1,1998#1 Jan,98#200111 12:30:00pm#(2)用数字序列表示,小数点左边的数字便是日期,右边的数字表示时间。0为午夜,0.5为中午12点。负数代表1899年12月31日之前的日期和时间;如2.5表示:1899年12月28日12:00:00,工程训练中心,,二、数据类型,5、变体(Variant)数据类型Variant是一种特殊
7、的数据类型,是所有未定义类型的变量的缺省类型。即若程序中的变量类型未定义类型,VB将视之为变体类型。它可以用来存储上面介绍的任一种类型的数据。,工程训练中心,,三、常量与变量,3.3.1 常量或变量的命名规则, 常量或变量的名字必须以字母或汉字开头,后跟字母、汉字、数字或下划线组成的序列,长度不能超过255个字符,最后一个字符可以是类型说明符(%、!、#、&、$、)。 不能使用VB的关键字。 VB不区分大小写。为便于区别,一般常量名全部用大写,变量名首字母大写,其余字母小写。 为提高程序的可读性,可在变量名前加一个缩写的前缀来表达该变量的数据类型,做到见名知义。,工程训练中心,,三、常量与变量
8、,表 1 变量命名前缀约定,工程训练中心,,三、常量与变量,3.3.2 常量,VB 的常量分为:用户声明的常量;系统提供的常量。 1、用户声明的常量常量说明的一般格式:Const 常量名 As 类型表达式其中:常量名:是用户为常量命的名,即用户定义标识符;As类型:可选项,用来说明常量的数据类型。表达式:可以是数值常数,字符串常以及由除Is以外的任意的算术运算符和逻辑运算符所构成的表达式。在一行中说明多个常数时使用逗号分隔。如:Const MyVar=488Const Mystr=“Visual Basic 6.0” ,Const pi as double =3.14159,工程训练中心,,三
9、、常量与变量,3.3.2 常量,注意: 常量声明格式中的As 类型可用类型说明符;例如:Const One&1 长整型常数Const Two#2 双精度型常数 常量名不能与关键字或所在过程内的变量或其他常量名同名,其有效作用范围为常量声明语句所在的程序单位; 经过声明的常量是常数值的名字,不能在程序代码中修改它的值; 常量声明时若不指明数据类型,有时存在多义性。如3.01可能是单精度型,也可能是双精度或货币型。VB将选择选择需要内存容量最小的表示方法。值3.01通常被作为单精度数处理。,工程训练中心,,三、常量与变量,3.3.2 常量,2、系统提供的常量在VB 的对象库中,提供了应用程序和控件
10、的系统常量。在“对象浏览器”中的Visual Basic(VB),Visual Basic for Application(VBA)等对象库中列举了Visual Basic的常量;去他提供对象库的应用程序如Excel,Project以及每个ActiveX控件的对象库等也提供了常量。这些常量可与应用程序的对象、方法和属性一起使用。为避免不同对象中同名常量的混淆,可使用2个小写字母的前缀来指定常量所在的对象库,如:vb表示 VB和VBA中的常量;xl表示Excel的常量;db表示Data Access Object库中的常量;,工程训练中心,,三、常量与变量,3.变量,在程序中使用变量前,一般必须
11、先声明变量名及其数据类型,系统根据所作的声明分配存储单元,在VB中可以显式或隐式声明变量及其类型。1、变量的声明(1)用Dim语句声明变量(显式声明)格式:Dim 变量名 As 类型其中:变量名:是用户定义的标识符,应遵循变量命名规则;As 类型:可以是VB提供的各种标准类型名称或用户自定义类型名称。若省略,则所声明的变量默认为变体类型(Variant)。,工程训练中心,,一条Dim语句可同时定义多个变量,但每个变量必须有自己的类型声明, 类型声明不能共用,变量声明之间用逗号分隔。 例: Dim x As Double, y As Double, z As Double也可把类型说明符放在变量
12、名的尾部,标识不同类型的变量。 例如:Dim intX As integer,SngTotal As Single等价于 Dim intX%,SngTotal!,3.变量,如果写成:Dim x, y, z As Double 则表示 x 和 y 为Variant 型,z 为 Double 型。,工程训练中心,,三、常量与变量,3. 变量,字符串变量的存储空间与字符串长度有关 。 字符串变量的声明:变长字符串变量Dim 字符串变量名 As string 或 Dim 字符串变量名$定长字符串变量Dim 字符串变量名 As String *字符数 说明:对于定长字符串变量,若赋值的字符数少于定义的字
13、符数,则右端补空格;反之,将多余部分截取;在VB中,一个汉字算一个字符,占两个字节;在VB中,除用Dim声明变量后,还可以用Static、Public和Private等关键字声明变量;,工程训练中心,,三、常量与变量,3.变量,(2)隐式声明在VB中,一个变量未经Dim语句声明便直接使用,称为隐式声明。使用时系统会以该名字自动创建一个变量,并默认为变体类型(Variant)。但这会造成程序的可读性差,甚至会造成程序出错。,tempaabbtemp,tempaabbtmp,交换a,b的值,正确,b=temp拼错,系统为tmp重新创建一个变量,并初始化为0,故最后结果为:b0;,工程训练中心,,三
14、、常量与变量,3.变量,2、变体类型变量定义方法:(1) 在Dim语句中使用类型关键字Variant定义;Dim varExample As Variant (2) 在Dim语句中仅定义变量名而不声明类型;Dim varA,varB(3) 隐式声明的变量,系统默认为变体类型变量在Variant变量中,可以存放任何类型的数据,如数值、字符串、日期和时间。对其赋值时,VB会自动完成各种必要的转换。VarA“110” 值为字符串“110”VarAVarA10 值为数值100VarA“ABC”Str$(VarA) 值为字符串”ABC100”,工程训练中心,,3.3 常量与变量,3.3.3 变量,使用V
15、ariant类型变量注意事项:(1) 若对Variant变量进行算术运算,必须确保变量中存放的是某种形式的数值或可以解释为数值的字符串;如:Variant变量中的内容是”ABC123”,则不能对其进行算术运算。(2)运算符“”可以作数值相加,也可以用作字符串连接。但执行字符串连接时,尽量使用运算符”&”;(3)可以使用VB提供的函数VarType,检测变体类型变量存储的数据类型,工程训练中心,,3.4 运算符与表达式,表2 Visual Basic 运算符,工程训练中心,,3.4 运算符与表达式,3.4.1 算术运算符与算术表达式,工程训练中心,,3.4 运算符与表达式,3.4.1 算术运算符
16、与算术表达式1、指数运算指数运算用来计算乘方和方根,运算符为“”。,a0,2、浮点数除法与整数除法浮点数除法的运算符为“/”。整除的运算符是“”。整除的操作数一般为整型数;若操作数带小数点时,VB首先对其四舍五入,而后进行整除运算。运算结果简单地截取整数部分,小数不作四舍五入处理。例如:104 结果为2202.6 结果为625.636.78 结果为3,工程训练中心,,3.4 运算符与表达式,3.4.1 算术运算符与算术表达式3、取模运算取模运算Mod用于求余数,结果是第一个操作数整除以第二个操作数所得的余数。 若左右操作数为实数,则VB首先对其四舍五入,然后求模。运算结果的符号取决于左操作数的
17、符号。例如:10 Mod 4 结果为 220 Mod 2.6 结果为 2 25.63 Mod 6.78 结果为 5 5 Mod 2 结果为 15 Mod 2 结果为1 5 Mod 2 结果为 1,工程训练中心,,3.4 运算符与表达式,3.4.1 算术运算符与算术表达式4、算术表达式中算术运算符的优先级,当一个表达式含有多个算术运算符时,必须按以上顺序求值。同级运算符从左到右运算,若含有括号,则先计算括号内表达式的值;多层括号,则从内层括号到外层括号计算。,加减运算符 ,,乘除运算符 *,/,整除运算符 ,取模运算符 Mod,取负数运算符 ,指数运算符 ,工程训练中心,,3.4 运算符与表达式
18、,工程训练中心,,四、运算符与表达式,3.4.2 字符串运算符与字符串表达式字符串运算符:、&用途:将两个字符串依次连接起来,生成一个新的字符串。例如: a=“Visual ”,b“Basic”则a$b$和a$ & b$的值均为“Visual Basic”注:使用运算符”&”时,变量与运算符”&”间应加一个空格。“”与“&”的区别:“”:连接两旁的操作数必须为字符型;若一个为数值型,另一个为数字字符串时,则进行算术加运算;若一个为数值型,另一个为含有非数字字符的字符串,则出错“类型不匹配”,如 “abc110”+110;“&”:连接符两旁的操作数可以是任何数据类型。系统会自动先将操作数转换为字
19、符型,而后再连接。如:“xyz” & 123 结果为”xyz123”,工程训练中心,,四、运算符与表达式,3.4.3 关系运算符与关系表达式关系运算符也叫比较运算符,作用是将两个操作数进行大小比较。关系表达式的运算结果是一个逻辑值,关系成立,则返回True(1)值,否则返回False(0)值;,工程训练中心,,四、运算符与表达式,4.关系运算符与关系表达式对关系运算符需注意以下规则:(1)关系运算符与赋值运算符(2)若两个操作数为字符型,则按字符的ASCII码值从左到右一一比较,即首先比较两个字符串的第一个字符,若相等,则比较双方的第二个字符,依此类推,直到比较出大小或都比较完为止。例如:”A
20、BCD”ABCDC” 结果为True“ABCDE”“ABCDC” 结果为False(3)关系运算符的优先级相同;(4)Like运算符用来比较字符串表达式和SQL表达式中的样式,主要用于数据库查询。Is运算符用于两个对象变量引用比较,可在Select Case中使用。,工程训练中心,,四、运算符与表达式,4.逻辑运算符与逻辑表达式逻辑运算又称布尔运算。 逻辑运算符的左右操作数要求为逻辑值。用逻辑运算符连接两个或多个逻辑量组成的式子称为逻辑表达式或布尔表达式。 逻辑运算的结果是逻辑值True或False。,工程训练中心,,四、运算符与表达式,4. 逻辑运算符与逻辑表达式例如:Not(58) 取反
21、结果为True42 Xor 82 Xor True 异或 结果为False52 Eqv True 等价 结果为True52 Imp True 蕴含 结果为True,工程训练中心,,四、运算符与表达式,5. 表达式的运算顺序(1)计算机对表达式求值的顺序:算术运算字符运算关系运算逻辑运算 例如: x / sin (5*x) 3 *6 4,又如:设i=1,x=2,y=2,则下列逻辑表达式的运算顺序为:x=2 or Not y0 And (xy) /i 0,最终结果为:True,工程训练中心,,四、运算符与表达式,5. 表达式的运算顺序(2)在算术运算中,若有不同类型的数据类型混合运算,则VB规定运
22、算结果的数值类型采用精度高的数据类型:IntegerLongSingleDoubleCurrency但当Long型数据和型数据运算时,结果为Single型数据。(3)书写时应注意:表达式要在同一行上书写成线性序列;如:数学表达式:,写成VB表达式为:(a+b)/(cd),乘号“*”不能省略,也不能用“”代替。如:2y应写成2*y;括号可以改变运算顺序;表达式中只能使用圆括号,且可以嵌套。,工程训练中心,,四、运算符与表达式,3.4.5 表达式的运算顺序 数学表达式 VB表达式,Cos(a+1)2)/(n*n+1),(x/y)(n-1),(sqr(x+a)+3.14159)/(2*log(x),