560 likes | 810 Views
第 2 章 VB 语言基础. 在使用一种程序设计语言进行应用程序的设计之前,必须先掌握它的基本语法规则。对于 VB 也是如此,在利用窗体和控件为应用程序建立界面后同样需要编写代码,程序中的大部分实际工作是用程序代码来处理的。 本章将介绍 VB 代码编写的基础知识,包括数据类型、常量、变量、表达式、内部函数等。. 2.1 数据类型 2.1.1 基本数据类型. 为了更好的处理各种数据, VB 系统定义了多种数据类型,表 2 - 1 列出了常见基本数据类型。 表 2 - 1 Visual Basic 的基本数据类型. 1. 数值数据类型
E N D
第2章 VB语言基础 在使用一种程序设计语言进行应用程序的设计之前,必须先掌握它的基本语法规则。对于VB也是如此,在利用窗体和控件为应用程序建立界面后同样需要编写代码,程序中的大部分实际工作是用程序代码来处理的。 本章将介绍VB代码编写的基础知识,包括数据类型、常量、变量、表达式、内部函数等。
2.1 数据类型2.1.1 基本数据类型 为了更好的处理各种数据,VB系统定义了多种数据类型,表2-1列出了常见基本数据类型。 表2-1 Visual Basic 的基本数据类型
1. 数值数据类型 VB中有6种数值类型数据:整型(Integer)、长整型(Long)、单精度型(single)、双精度型(double)、货币型(currency)、字节型(byte)。 1) 常规整型数据(Integer) 常规整型数据简称为整型,表示不带小数点和指数符号的数,可以是正整数、负整数或0。在VB中整数表示形式:± [n]%,%是整型类型符号,可省略。 n则根据整数所属进制数范围取,如十进制整数则包含数字0~9,十六进制数则由数字0~9、A~F组成,并以&H引导,其后面的数据位数4位。八进制数由数字0~7组成,并以&O引导,其后面的数据位数≤6位。
2) 长整型数据(Long) 长整型数也是整数,表示的范围更大,在计算机中存储时占用的字节数更多。在VB中,长整型数中的正号可以省略,并且在数值中不能出现逗号(,)。与常规整型数一样,长整型数也根据所属进制数进行数据的数字组成。 3)单精度数(single) 单精度数用来表示带有小数部分的实数,其有效数字的位数最多为7位。单精度数可以用定点形式和浮点形式来表示。 定点数形式表示例:-1.2 +5.34 -923.345567 浮点数形式表示例:-2.1E7 6.35E+20 24.5E-5 4)双精度数(double)
双精度数浮点数精度为16位。表示双精度浮点数,对小数形式在数字后加“#”,对指数形式用“D”代替“E”或在指数形式后加“#”。 双精度数浮点数精度为16位。表示双精度浮点数,对小数形式在数字后加“#”,对指数形式用“D”代替“E”或在指数形式后加“#”。 例:12.23# 、1.2D+3、0.12E+2# 5)货币型数(currency) currency型是定点实数或整数,最多保留小数点右边4位和小数点左边15位,用于货币计算。 6)字节型数(byte) 字节型数表示0~255之间的整数,以1个字节的无符号二进制数存储。
【注】数值型数据的使用说明 在VB中,声明和使用数值型数据时,应注意以下几点: 1、如果数据中包含小数,则应使用single、double或currency型。 2、如果数据为二进制数,则使用byte数据类型。 3、数值型数据都有一个有效范围值,程序中的数如果超出规定的范围,将会出现“溢出”信息。如小于范围的下限值,系统将按“0”处理,如大于上限值,则系统按上限值处理,并显示出错信息。 4、所有数值变量可互相赋值。
2. 字符型数据(string) 字符型是存放字符型数据,字符可以包括所有西文字符和汉字,字符两侧用双引号” ”括起。字符串是放在双引号内的若干个字符,其中一个西文字符占一个字节,一个汉字或全角字符占两个字节,长度为0的字符串称为空字符串。例:”1234”、”a”、”abcd”、”计算机”。 在VB中包含两种类型的字符串:变长字符串和定长字符串。其中变长字符串指字符串的长度是不固定的,由实际字符串的长度决定;定长字符串则是在程序执行过程中,始终保持其长度不变的字符串。例如对一个声明了长度为8的字符串变量(Name As String*8),如果赋予字符串的字符数少于8个,则用空格将不足部分填满;如果实际赋予的字符数大于8个,则截去超出部分的字符。
【注】 (1)””表示空字符串,而 “ “表示的是有一个空格的字符串; (2)如字符串中本身含有双引号,则用两个连续的双引号表示。 例:表示字符串 计算机”ABC,正确的表示形式为:”计算机””ABC”
3.日期型数据(date) 日期型数据是用来表示日期和时间的,表示的日期范围是从公元100年1月1日~9999年12月31日,时间范围为0:00:00~23:59:59。日期型数据通常用两个“#”符号把表示日期和时间的值括起来。如:#03/22/2003# #02/10/1998 12:30:00# 如输入的日期或时间是非法的或不存在的,系统将提示出错。 4.逻辑型数据(Boolean) 逻辑型数据用于逻辑判断,只有两个值:真(True)和假(False)。当逻辑数据转换成整数数据时,True将转换为 –1,False转换为0;当其他数值类型转换为逻辑型数据时,非0数转换为True,0转换为False。
5.对象型数据(Object) 对象型数据可用来表示应用程序中或某些其他应用程序中的对象。用set语句指定一个被声明为object的变量,去引用应用程序中所识别的任何实际对象。 6.变体型数据(Variant) 变体型数据是一种可变的数据类型,可以存放任何类型的数据。是所有未定义的变量的默认数据类型,它对数据的处理完全取决于程序上下文的需要。如要测试变体型变量中保存的数值是什么类型的,可用函数VarType( )进行检测,根据其返回值可确定实际是何数据类型。
2.1.2 自定义数据类型 VB不仅提供了系统定义的以上基本数据类型,也允许用户自己定义数据类型,它由若干个基本数据类型组成。自定义类型必须通过Type语句来声明,其类型有两种:Private和Public。在标准模块中定义的自定义数据类型默认为Public(全局有效),在窗体模块中定义的为Private(窗体/模块级有效)。 例如,定义一个有关学生信息的自定义数据类型,名为students,该数据类型包含学生的姓名,学号,年龄三个信息。定义如下:
Type students Name As String*8 ‘学生姓名 NO As String*5 ‘学号 Age As Integer ‘年龄 End Type 定义好该students数据类型后,就可以在变量的声明中如同使用基本数据类型去使用该类型了。 例:定义表示学生信息类型的变量A:Dim A as students
2.2 常量和变量 在VB程序中,不同类型的数据既可以以常量的形式出现,也可以以变量的形式出现。常量:在程序运行过程中值始终保持不变的量;变量:在程序运行过程中其值可以改变的量。
2.2.1 常量或变量的命名规则 在VB中,命名一个常量或变量的规则如下: 1.须以字母或汉字开头,由字母、汉字、数字或下划线“_”组成,其组成字符不超过255个。 2.不能直接使用VB中的系统关键字、属性名、对象名、过程或函数方法名,如From、Text、If等;但可以把关键字嵌入常量名或变量名中使用,如Form_IF为合法变量名。 3.不能包含句号、空格或者类型声明符($,%,@,#)等。 4.命名时不区分大小写,如XYZ和xyz认为是同名。一般变量名首字母用大写,其余用小写;常量则全部用大写字母表示。 例:以下为使用不当的变量名 3a ‘以数字开头 Q WE ‘出现了空格 Dim ‘使用了VB的关键字 False ‘使用了VB的关键
2.2.2 常量 在VB 中常见的常量:直接常量、符号常量。 1、直接常量 直接常量是在程序代码中,以明显的方式给出的数据,可直接反映其数据类型;也可在常数值后紧跟类型符表明常数的数据类型。例如: 字符串常量 “vb” 、 “9823” 数值常量 123、332&、11.35、1.23E3 逻辑常量 True 、False 日期常量 #03/22/1998# #10:12:30#
2、符号常量 如果在程序中经常用到某些常量值,为了便于程序的阅读和修改,这些常量可以由用户定义的符号常量表示,以后用到该值时就用该符号名代表。常量一旦声明了在后面的代码中只能引用,不能改变,即不能再出现对该常量的赋值。 符号常量包括两种:系统内部定义的常量和用户定义的常量。 (1)系统内部定义的常量 系统内部定义的常量是指VB内置的一些便于记忆的常量,通常以vb开头,放置于对象库中。例如VB系统预先定义好vbModal代表1,vbModeless代表0。
(2)用户定义的常量 尽管VB内部定义了大量的常量,但有时用户还是需要创建自己的符号常量,通常使用Const语句来定义常量的名字、类型和值。 定义形式:Const 符号常量名 [AS 类型]=表达式 其中: 符号常量名:遵循常量或变量的命名规则,一般都用大写字母表示。 AS类型:说明要定义常量的数据类型,如省略了该项,则该常量的数据类型由后面的表达式决定。 表达式:可以是数值常数、字符串常数以及由运算符组成的表达式。
例:Const PI=3.1415926 ‘声明了常量名PI,在以后的出现中PI代表值3.1415926 Const A=5 ‘声明了常量名A,代表的值为整数5 【注】 (1)如要创建仅存在于过程中的常量,则在过程内部声明常量。 (2)如要创建的常量对模块中所有的过程都有效,则在模块的声明段中声明该量。例:Private Const A=3。 (3)如要创建的是在整个应用程序中都有效的常量,则在标准模块的声明段中进行声明,并以Public开头。例:Public Const A=3。
2.2.3 变量 变量在程序运行过程中其值可以发生变化的量。使用变量前,一般须先声明变量名及其类型。 变量的声明有两种方式:显式声明、隐式声明。
1、显式声明 通常可使用以下形式进行显式声明形式: { Dim |Private |Static |Public} 变量名 [As 类型] 其中: (1)Public用于声明公有的模块级变量,Private或Dim用来声明私有的模块级变量,Static用来声明过程级局部变量。 (2)[As 类型]:用于定义被声明的变量的数据类型,可为系统定义的基本数据类型,也可是用户自定义的类型。如未具体定义实际类型,则系统默认为变体类型(Variant)。使用变量时,VB会自动转换变量值的类型,使得变量的值和声明语句中的该变量类型一致。 (3)为方便定义,也可在变量名后紧跟类型符来代替[As 类型]。 (4)一条Dim语句可以同时定义多个变量,但每个变量要有自己的类型声明。
例: Dim Count As Integer ‘将Count定义为整型变量 Public hh As Single ‘将hh定义为字符型变量 Private ww As String*6 ‘将ww定义为定长为6的字符型变量 Dim ss ‘没指定类型,则变量ss默认为变体类型 Dim x%, y! ‘定义x为整型变 量,y为单精度型变量 X=3.5 ‘赋值3.5将自动四舍五入,转换为整数型4赋给x {
2、隐式声明 在VB 中,除了显式声明变量,也允许对使用的变量未进行声明而直接使用,称为隐式声明。隐式声明的变量类型都默认为变体类型。但是由于未进行事先声明,该变量在以后的使用过程中如拼写错误的话,将导致难以查找原因。 【注】 声明变量可以有效的降低错误,为了调试程序的方便,一般对使用的变量进行声明较好,也可在通用声明段中使用Option Explicit语句来强制显式声明所有变量。
3.变量的赋值 变量进行了声明后,在使用过程中往往要进行具体的赋值。赋值语句的作用是:先计算右边表达式的值,然后将值赋给左边的变量。 变量的赋值语句形式如:变量名=表达式 其中: (1)赋值号“=”左边只能是变量,不能是常量、常数符号或表达式;赋值号右边的表达式可以是任何类型的表达式或常量值,一般其类型应与变量名的类型一致。 (2)一个赋值语句只能对一个变量赋值。如出现a=b=c=1式的赋值为错误的。 (3)不能把字符串的值赋值给数值型变量。 (4)同为数值型时,右边的数值类型转换为左边的变量名的类型后赋值。 (5)赋值语句类似A=A+X的语句很常用,起累加作用。 例:Dim a AS Integer,b AS Integer a=5 b=b+1
2.3 运算符和表达式 运算符是代表VB某种运算功能的符号。VB程序会按运算符的含义和运算规则执行实际的运算操作。由运算符将相关的常量、变量、函数等连接起来的式子即为表达式。 例如:a+b (4/3)*Pi*r^3 “It’s“& “a cat”等等。
2.3.1 运算符 VB中的运算符可分为算术运算符、关系运算符、字符串运算符、逻辑运算符、连接运算符。 算术运算符 算术运算符用于进行数值计算的运算符,VB中包括七个算术运算符:+、-、×、/、\、MOD、^ ,其中“-”运算符根据所属实际情况可作负号或减号使用。 表2-2.列出了VB 中的算术运算符。设例中的变量ia=4 表2-2
【注】 (1)在以上7个算术运算符中,只有取负(-)是单目运算符(即单个操作数),其他均为双目运算符(两个操作数)。 (2)算术运算符两边的操作数应是数值型,若是数字字符或逻辑型,则自动转换成数值类型后再运算。 例表达式: false + 5-“2” ‘结果为3 (3)表中的运算优先级指的是当表达式中含有多个运算符时,各运算符执行的优先顺序(从1~6代表运算优先级别越低)。 (4)除法运算有两种: / : 一般除法,运算结果一般为单精度数。如果操作数有一个为双精度数,则结果为双精度数。如:7/3=2.33333333333 \ : 整除,整数除法,结果为整数。如:7\3=2 (5) Mod运算符是求两数相除后的余数。例如: 2 Mod 7 ‘ 结果为2 8.6 Mod 3 ' 结果为0 25.63 Mod 5.2 ' 结果为1
2.字符串运算符 VB中的字符串运算符包括两个:“& ” 、“+”,用于进行字符串的连接。当两个字符串用连接运算符连接起来后,第二个字符串将直接添加到第一个字符串的尾部,组合成一个字符串。 运算符:& 、+ 功能: & : 连接符两边的操作数不管是字符还是数值型,进行操作前,系统先将操作数转换成字符型,然后再连接。 + : 两个操作数应均为字符型,若均为数值型,则进行算术加运算;若一个为数字字符,另一个为数值型,则自动将数字字符转换为数值,然后进行算术加运算;若一个为非数字字符型,另一个为数值型,则出错。
【注】 (1)在字符串变量后使用运算符“&”应注意变量和”&”之间应有一个空格,以区分其作为类型定义符的使用。 (2)在进行字符串的连接时尽量使用连接符号”&”实现。 例: " 123 " + " 456 " ‘结果为 “123456” " 123 " & " 456 " ‘结果为 “123456” " abc " + 12345 ‘出错 “abc” & 12 ‘结果为:“abc12” 123 + 456 ‘ 结果为:579123 & 456 ‘结果为:”123456”
3. 关系运算符 关系运算符是用于进行两个数比较大小的运算符,运算结果为逻辑型,参与的操作数可为数值型、字符型。VB的关系运算符如下: <(小于)、<=(小于等于)、=(等于)、<>(不等于)、>=(大于等于)、>(大于) 【注】 (1)关系运算符不分优先级,从左到右执行。 (2)关系运算符是双目运算符,操作数可以是数值型或字符型。 (3)VB中布尔型比较True 小于False ;汉字字符大于西文字符;日期型数据比较按日期先后,后边的大于前边的。
(4)如果两个操作数是数值型,则按其大小比较;如果两个操作数是字符型,则按字符的ASCII值从左到右比较。 (4)如果两个操作数是数值型,则按其大小比较;如果两个操作数是字符型,则按字符的ASCII值从左到右比较。 (5)关系运算符中的等于“ = ”是判断两边的值是否相等 例如: "abcd" > "ad" ‘ 结果为False 89 < 60 ‘ 结果为False "abc" <> "ABC" ‘ 结果为True "abcdef" = "abcdf" ‘ 结果为False #2/6/2004# > #2/1/2004# ‘ 结果为True
4.逻辑运算符 逻辑运算符用于连接布尔型数据(一般用于复合比较),结果为逻辑值。VB支持的逻辑运算符按优先顺序列出如下:Not(非)、And(与)、Or(或)、Xor(异或)、Eqv(等价)、Imp(蕴含)。运算符及功能如下表2-3:
【注】 逻辑运算符中最常用的是Not、And、Or,其中And、Or用于将多个关系表达式进行逻辑判断。若有多个条件,And必须全部条件都为真才为真;而Or只要有一个条件为真则为真。
2.3.2 表达式 由运算符将常量、变量、函数等连接起来的有意义的式子即为表达式。一个表达式可能很简单,也可能由几部分组成,但总有一个值,其返回值的类型由运算数和运算符决定。 1.表达式书写规则 在VB中书写表达式时,应遵循下列规则: (1)乘号不能省略。 (2)不能使用方括号或花括号,只能用圆括号。圆括号可以出现多个,但要配对。 (3)表达式从左至右在同一基准上写,无高低、大小之分。
例:表示算术表达式:大于等于3且小于7的数。 例:表示算术表达式:大于等于3且小于7的数。 正确的VB表达式: 3<=x And x <=7 错误的VB表达式: 3<=x<=7 或 3<=x Or x<=7 2.不同类型的运算符优先级如下: 当一个表达式中出现多种不同类型的运算符时,不同类型的运算符优先级别如下: 函数运算 > 括号 > 算术运算符 > 字符运算符 > 关系运算符 > 逻辑运算符 【注】 可通过增加括号来改变优先级或使得表达式更清晰易读。 例:选拔身高T超过1.7米且体重W小于62.5公斤的人,表示该条件的逻辑表达式为: (T>=1.7) AND(W<=62.5)
2.4 常用的内部函数 每门编程语言都有自己的内部函数,内部函数是语言系统本身把一些常用的操作事先编写成一段程序代码并封装起来,用户通过函数名调用这段程序并返回一个函数值。VB的内部函数非常丰富,提供了对各种数据类型进行操作的功能,灵活地使用内部函数,将大大提高编程效率。 对于VB的内部函数,按其功能可分为数学函数、转换函数、字符串函数、日期函数和格式输出函数。
2.4.1 数学函数 数学函数与数学中定义的函数一致,其参数和函数值的数据类型均为数值型。表2-4为常用的数学函数。
【注】 (1)在三角函数中,以弧度表示;sqr的自变量不能是负数。 (2)Log( ) 和Exp( )是一对互为反函数,即Log(Exp(N)),Exp(Log(N))结果还是原来各自变量的值。 (3)Rnd函数常和Int函数配合使用实现产生一定范围内的随机整数: Int (Rnd*范围+基数) 例:产生(a,b)区间的随机数:(b-a)* Rnd + a 产生 [a,b] 区间的随机整数,其表达式为:Int((b-a+1)* Rnd) + a 产生[20~50]之间的随机整数的函数形式为:Int (Rnd*31+20)
2.4.2 字符串函数 字符串函数用于处理字符串信息。若函数的返回值为字符型数据,则常在函数名后加"$"字符。VB中也可省略此符号。常用的字符串函数如表2-5:
【注】 (1)在String字符串类型中,VB中字符串长度是以字(也称为字符)为单位,即 每个西文字符和每个汉字都作为一个字,占两个字节。注意函数Len(C)和LenB(C)的返回值区别。 (2)函数的自变量中的M,用于表示是否区分大小写,M=0或被省略则区分,M=1则不区分。 (3)熟练掌握InStr ( ), Mid ( ), Len ( ) 等函数。 (4)“□”表示为空格。
2.4.3 转换函数 常用的转换函数如表2-6。
【注】 (1)Chr( )和Asc( )函数是一对互为反函数,即Chr(Asc(n))、Asc(Chr(c) 的结果为原来各自自变量的值,如Chr(Asc(96))的结果还是96。 (2)Str( )函数将非负数值转换成字符类型后,会在转换后的字符串左边增加空格,即数值的符号位。如Str(96)的结果为“□123”,而不是“123”。“□”代表空格。 (3)Val( )将数字字符串转换为数值,当字符串中出现非数值字符时,停止转换,函数返回的是停止转换前的结果。如Val(“ –123.45AB”)转换的结果为-123.45。 (4)注意取整函数Int( ),Fix( ),Round( )的区别。
2.4.4 日期函数 日期函数用于进行日期和时间的处理,VB中常见的日期和时间函数的功能及例子见表2-7。
【注】 (1)Date获得的是系统时间年份为两位数;Date$获得的系统时间年份为四位数。 (2)日期函数中自变量“C|N”表示可以是数值表达式,也可以是字符串表达式,“N”表示相对于1899年12月31日前后的天数。 (3)时间差函数DateDiff( ):可以计算两个指定日期间的时间间隔。 (4)语法形式:DateDiff(要间隔日期形式,日期1,日期2) 例:计算现在距离2006年9月10日的天数。表达式为:DateDiff(“d”,Now,#2006/9/10#) 其中的日期形式如表2-8:
2.4.5 格式输出函数 格式输出函数Format( )可以使数值、日期和字符串按指定的格式输出。形式如下: Format$(表达式[,格式字符串])
说明: 表达式:要格式化的数值、日期和字符串类型表达式。 格式字符串:表示指定的格式输出表达式的值。当格式字符串是字符串常量时,必须放在双引号中。 格式字符串分为三类:数值格式、日期格式、字符串格式。 1.数值格式化 数值格式化是将数值表达式的值按格式字符串指定的格式输出。数值格式符及其功能如表2-9。
【注】 符号“0“和“#”的区别: (1)相同处:如要显示数值表达式的整数部分位数多于格式字符串的位数,则按实际数值显示;如小数部分的位数多于格式字符串的位数,则按四舍五入显示。 (2)不同处:“0”按规定的位数显示,“#”对于整数前的0或小数后的0不显示。 2.日期和时间的格式化 日期和时间格式化是将日期类型表达式的值或数值表达式的值以日期、时间的序数值按格式字符串指定的格式输出。 常用的日期、时间格式符如表2-10。