第3章 VB语言基础 本章主要内容: ● 基本数据类型 ● 常量、变量 ● 表达式 ● 常用内部函数
3.1 基本数据类型 表3-1列出了VB中定义的全部基本数据类型。 表3-1 VB 6.0的基本数据类型
类 型 名 称 存储空间(Byte) 范 围 整型 Integer 2 –32 768~32 767,小数部分四舍五入 长整型 Long 4 –2 147 483 648~2 147 483 647,小数部分四舍五入 单精度浮点型 Single 负数:–3.402823E38~–1.401298E–45 正数:1.401298E–45~3.402823E38 双精度浮点型 Double 8 负数–1.79769313486232D308~–4.94065645841247D–324 正数:4.94065645841247D–324~1.79769313486232D308 货币型 Currency –922 337 203 685 477.5808 ~ 922 337 203 685 477.5807 字节型 Byte 1 0~255 变长字符串 String 字符串长度 0~大约20亿字节 定长字符串 String*size size 1~65 535字节(64KB) 布尔型 Boolean True或False 日期型 Date 100.1.1~9999.12.31 对象型 Object 任何对象的引用 可变类型(数值) Variant 16 任何数值,最大可达Double的范围 可变类型(字符) 与可变长度字符串有相同的范围
3.1.1 数值(Numeric)型数据 1. 常规整型数Integer 2. 长整型数Long 3. 单精度数Single 4. 双精度数Double 5. 货币型Currency 6. 字节Byte 7. 数值型数据的使用说明
3.1.1 数值(Numeric)型数据 1. 常规整型数Integer 2. 长整型数Long 3. 单精度数Single 4. 双精度数Double 5. 货币型Currency 6. 字节Byte 7. 数值型数据的使用说明
3.1.2 字符型(String)数据 1. 变长字符串 变长字符串是指字符串的长度是不固定的,随着对字符串变量赋予新的字符串,它的长度可增可减。按照缺省规定,一个字符串变量如没有定义成固定长的,都属于可变长字符串。例如: x = "Happy New Year to you" x = "程序设计" x = " ab" 其中,字符型变量x的长度在程序中可以改变。
3.1.2 字符型(String)数据 1. 变长字符串 变长字符串是指字符串的长度是不固定的,随着对字符串变量赋予新的字符串,它的长度可增可减。按照缺省规定,一个字符串变量如没有定义成固定长的,都属于可变长字符串。例如: x = "Happy New Year to you" x = "程序设计" x = " ab" 其中,字符型变量x的长度在程序中可以改变。
2. 定长字符串 定长字符串是指它在程序执行过程中,始终保持其长度不变的字符串。例如,声明一个长度为10个字符的字符串变量后,如果赋予字符串的字符少于10个,则用空格将不足部分填满。如果赋予字符串的长度超过10个,则截去超出部分的字符。 3.1.3 布尔(Boolean)型数据 布尔型数据是一个逻辑值,用两个字节存储,它只有两个值:真(True)和假(False)。 当把数值型数据转换为Boolean型时,0会转换为False,其他非0值转换为True。当把Boolean值转换为数值型时,False转换为0,True转换成-1。
3.1.4 日期(Date)型数据 3.1.5 对象(Object)型数据 #05/15/2005# #2005–05–18# #05/13/2005 08:10:38 AM# 如果输入的日期或时间是非法的或不存在的,系统将提示出错。 3.1.5 对象(Object)型数据 对象型数据可用来表示应用程序中或某些其他应用程序中的对象。可以用Set语句指定一个被声明为Object的变量去引用应用程序所识别的任何实际对象。
3.1.6 变体(Variant)型数据 变体型数据是一种可变的数据类型,可以存放任何类型的数据,因此变体类型可说是VB中用途最广、同时也是最灵活的一种变量类型。在程序中不特别说明时,VB会自动将该变量默认为Variant型变量。例如 a = "20" ' a包含"20"(双字符的串),字符型 a = a – 6 ' 现在a包含数值6,数值型 a = "X" & a ' 现在a包含"X14"(双字符的串),字符型
3.2 常量 3.2.1 直接常量 1. 字符串常量 字符串常量是用双引号括起来的一串字符。这些字符可以是除双引号“"”和回车、换行符以外的所有字符。例如: "$12,345.00" "vb" "a+b=" 2. 数值常量 数值常量就是常数,共有5种数值类型:整数、长整数、定点数、浮点数和字节数。 3. 布尔常量 布尔常量只有True(真)和False(假)两个值。 4. 日期常量 用两个“#”符号把表示日期和时间的值括起来表示日期常量。例如: #05/15/2005# #28/05/2005# #May 2 2005 11:25:12#
3.2.2 符号常量 1. 系统内部定义的常量 系统内部定义的常量是指VB内置的一些便于记忆的常量,通常这类常量会以vb开头,例如vbModal,vbModeless等。其实vbModal代表1,vbModeless代表0,只不过这几个常量是VB系统预先帮用户定义好了。 其他在VB程序中用到的对象也会提供一些预先定义好的常量,例如数据处理对象(Data Access Object,DAO)所提供的常量会以db开头等等。这些常量可与应用程序的对象、方法和属性一起使用,在代码中可以直接使用它们。
可以在“对象浏览器”中查看系统内部定义的常量,操作方法是: ① 选择“视图”菜单中的“对象浏览器”,则打开“对象浏览器”窗口,如图3-1所示。
② 在下拉列表框中选择VBA对象库。 ③ 在“类”列表框中选择“全局”,右侧的成员列表中显示出预定义的常量,窗口底端的文本区域中将显示该常量的功能。 在为属性或变量输入数据时,应该检查一下是否有系统已经定义好的常量可供使用,使用系统常量可使代码具备自我解释功能,易于阅读和维护。
2. 用户定义的常量 声明常量的语法为: [Public | Private] Const〈常量名〉[As〈数据类型〉] =〈表达式〉… 说明: ①〈常量名〉由1~255个字符组成,包含的符号可以是数字、英文字母或下划线,中间不能有“.”或其他类型说明字符,并且必须以英文字母开头。 ②〈表达式〉由数值常量、字符串等常量及运算符组成,可以包含前面定义过的常量,但不能使用函数调用。 Const conPi = 3.14 ' 表示数值 Public Const conMaxPlanets As Integer = 25 ' 表示数值 Const conReleaseDate = #06/12/2005# ' 表示日期 Const conCodeName = "Apple" ' 表示字符串
③ 如果用逗号进行分隔,则在一行中可放置多个常量声明: Public Const conPi = 3.14, conMaxPlanets = 25, conWorldPop = 6E+09 ④ 等号“=”右边的表达式往往是数字或字符串,但也可以是其结果为数或字符串的表达式(尽管表达式不能包含函数调用)。甚至可用先前定义过的常量定义新常量。 Const conPi2 = conPi * 3 ⑤ Const语句的使用范围和规则: l 如果要创建仅存在于过程中的常量,应在该过程内部声明常量,如Const a=20。 l 如果要创建的常量对模块中所有过程都有效,但对模块之外任何代码都无效,应在模块的声明段中声明常量,如Private Const a=20。 l 如果要创建在整个应用程序中有效的常量,应在标准模块的声明段中进行声明,并在Const前面放置Public关键字,如Public Const a=20。在窗体模块或类模块中不能声明Public常量。
3.3 变量 在VB中,变量有两种形式,即属性变量和内存变量。 3.3 变量 在VB中,变量有两种形式,即属性变量和内存变量。 l 属性变量。在窗体中设计用户界面时,VB会自动为产生的对象(包括窗体本身)创建一组变量,即属性变量,并为每个变量设置其默认值。这类变量可供程序员直接使用,如引用其值或赋予新值。由于属性变量是VB系统自动创建的,所以无需程序员费心。 l 内存变量。内存变量要程序员根据程序需要创建,下面主要介绍内存变量的建立方法。
3.3.1 变量的命名规则 1. 命名规则 变量是一个名字,在给变量命名时应遵循以下命名规则: 3.3.1 变量的命名规则 1. 命名规则 变量是一个名字,在给变量命名时应遵循以下命名规则: ① 变量名只能由字母、数字和下划线组成,中间不能包含小数点。a.bc是非法的。 ② 变量名的第一个字符必须是英文字母。如:vbX,x1。不能为1x。 ③ 组成变量名的字符数不得超过255个字符。 ④ 不能用VB的保留字作变量名,但可以把保留字嵌入变量名中;同时,变量名也不能是末尾带有类型说明符的保留字。例如用Print和Print$作为变量名是非法的,而用Print_Number作为变量名是合法的。
2. 变量命名的注意事项 在为变量命名时应注意: ① 取名最好使用有明确实际意义和容易记忆以及通用的变量名,即要见名知义。比如用sum(或s)代表求和,用Difference(或d)代表求差等。 ② 尽可能简单明了,尽量不要使变量名太长,因为太长了不便于阅读和书写。 ③ 不能用VB的关键字做变量名。VB的关键字是指VB中系统已经定义的词,如语句、函数、运算符名。 ④ 变量名不能与过程名和符号常量名相同。 ⑤ 尽量采用VB建议的变量名前缀或后缀的约定来命名,以便区分变量的类型。如:intMax,strName。 ⑥ VB不区分变量名和其他名字中字母的大小写,如Hello、HOLLO、hello指的是同一个名字。为了便于阅读,每个单词开头的字母一般用大写,即大小写混合使用组成变量名(或其他名字),例如PrintText。此外,习惯上符号常量一般用大写字母定义。
3.3.2 变量的声明 声明语句的语法为: {Dim | Private | Static | Public}〈变量名〉[As〈类型〉][,〈变量名2〉[As〈类型2〉]] … 说明: ① Public语句用来声明公有的模块级变量,Private或Dim语句用来声明私有的模块级变量,Dim或Private或Static语句来声明过程级局部变量。 ②〈类型〉用来定义被声明〈变量名〉的数据类型或对象类型。变量的数据类型可以是表3-1中的类型,也可以是用户自定义的类型。例如 Dim Ct As Integer ' 将Ct定义为Integer(整型)变量 Private Sum1 As String, stNa As String ' 将Sum1和stNa定义为String(字符型)变量 Static Aver As Single ' 将Aver定义为Single(单精度型)变量 Private Name1 As String*8 ' 将Name1定义为定长字符型变量 Dim aa ' 若没有指定类型,变量是Variant类型
使用声明语句建立一个变量后,VB自动将数值类型的变量赋初值0,将字符或Variant类型的变量赋空串,将布尔型的变量赋False。 Dim Ct As Integer 当为该变量赋值时: Ct = 1.8 ' 数1.8为单精度型Single 变量Ct自动将1.8四舍五入转换为整型数2。
3.4 表达式 3.4.1 算术表达式 算术表达式的格式为: 〈数值1〉〈算术运算符1〉〈数值2〉[〈算术运算符2〉〈数值3〉] 3.4 表达式 3.4.1 算术表达式 算术表达式的格式为: 〈数值1〉〈算术运算符1〉〈数值2〉[〈算术运算符2〉〈数值3〉] 1. 算术运算符 VB有7个算术运算符,如表3-2所示。
表3-2 算术运算符 运 算 符 名 称 表 达 式 例 子 ^ 乘方 a ^ b * 乘法 a * b / 浮点除法 a / b \ 表3-2 算术运算符 运 算 符 名 称 表 达 式 例 子 ^ 乘方 a ^ b * 乘法 a * b / 浮点除法 a / b \ 整数除法 a \ b Mod 求余的模运算 a Mod b + 加法 a+b – 减法、取负 a-b,-c
2. 表达式的书写规则 算术表达式与数学中的表达式写法有所区别,在书写表达式时应当特别注意: ① 每个符号占1格,所有符号都必须一个一个并排写在同一横线上,不能在右上角或右下角写方次或下标。例如:45要写成4^5,x1+x2要写成x1+x2。 ② 原来在数学表达式中省略的内容必须重新写上。例如:3xy要写成3* x * y。 ③ 所有括号都用小括号( ),括号必须配对。例如:5[x+2(y+z)]必须写成5 *(x+2*(y+z))。 ④ 要把数学表达式中的有些符号,改成VB中可以表示的符号。例如:要把πr2改为pi*r^2。
3. 算术运算符的优先级 在算术表达式中包含各种算术运算符,必须规定各个运算的先后顺序,这就是算术运算符的优先级,如下所示。 指数运算^ → 取负- → 乘法*、浮点除法/ → 整除\ → 求模Mod → 加法+、减法- 3.4.2 字符串表达式 VB中的字符串运算符是“&”,该运算符用于连接两个或更多的字符串。字符串表达式的格式为: 〈字符串1〉&〈字符串2〉[&〈字符串3〉]
当两个字符串用连接运算符连接起来后,第二个字符串直接添加到第一个字符串的尾部,结果是一个更长的、包含两个源字符串的全部内容的字符串。如果要把多个字符串连接起来,每两个字符串之间都要用“&”号分隔。例如: "abc" & "ef" ' 连接后结果为:"abcef" "欢迎你" & "们" ' 连接后结果为:"欢迎你们" "ABC 12" & "abcd " & " 345 " ' 连接后结果为:"ABC 12abcd 345 " 另外,在VB中,除用“&”作为连接运算符外,还可以用“+”把两个字符串连接成一个字符串。但是“+”容易与算术加法运算符产生混淆,所以,建议最好用“&”号。同时,“&”会自动将非字符串类型的数据转换成字符串后再进行连接,而“+”则不能自动转换。例如: 123 & 456 & "aa" ' 连接后结果为:"123456aa"
3.4.3 日期表达式 日期型表达式由算术运算符“+、–”、算术表达式、日期型常量、日期型变量和函数组成。日期型数据是一种特殊的数值型数据,它们之间只能进行加“+”、减“–”运算。有下面3种情况: ① 两个日期型数据可以相减,结果是一个数值型数据(两个日期相差的天数)。例如: #05/15/2005# – #05/10/2005# ' 结果为数值型数据:5 ② 一个表示天数的数值型数据可加到日期型数据中,其结果仍然为一日期型数据(向后推算日期)。例如: #06/15/2005# + 30 ' 结果为日期型数据:#05-07-15# ③ 一个表示天数的数值型数据可从日期型数据中减掉它,其结果仍然为一日期型数据(向前推算日期)。例如: #06/15/2005# – 2 ' 结果为日期型数据:#06-05-13#
3.5 常用内部函数 3.5.1 数学运算函数 在VB中,有两类函数,即内部函数和用户定义函数。 3.5 常用内部函数 在VB中,有两类函数,即内部函数和用户定义函数。 l 用户定义函数是由用户自己根据需要定义的函数。 l 内部函数也称标准函数,VB提供了大量的内部函数。在这些函数中,有些是通用的,有些则与某种操作有关。这些函数可分为:转换函数、数学函数、字符串函数、日期时间函数、随机函数。 3.5.1 数学运算函数 数学运算函数用于各种数学运算。常用数学运算函数见表3-3。
表3-3 常用数学运算函数 函 数 说 明 Sin 返回弧度的正弦 Sgn 返回数的符号值 Cos 返回弧度的余弦 Sqr 返回数的平方根 表3-3 常用数学运算函数 函 数 说 明 Sin 返回弧度的正弦 Sgn 返回数的符号值 Cos 返回弧度的余弦 Sqr 返回数的平方根 Abs 返回数的绝对值 Int 返回不大于给定数的最大整数 Exp 返回e的指定次幂 Fix 返回数的整数部分
3.5.2 字符串函数 VB提供了大量的字符串函数,具有强大的字符串处理能力,见表3-4。 表3-4 常用字符串函数 函 数 说 明 Str 3.5.2 字符串函数 VB提供了大量的字符串函数,具有强大的字符串处理能力,见表3-4。 表3-4 常用字符串函数 函 数 说 明 Str 将数值型数据转换为字符型数据 Space 返回由指定数目空格字符组成的字符串 Val 将数字字符串转换为相应的数值 Lcase 返回以小写字母组成的字符串 Len 返回字符串的长度 Ucase 返回以大写字母组成的字符串
3.5.3 日期和时间函数 时间和日期函数使程序能向用户显示日期和时间,提供某个事件何时发生及持续时间长短的信息。常用时间和日期函数见表3-5。 表3-5 常用日期和时间函数 函 数 说 明 Now 返回系统日期和时间(yy–mm–dd hh:mm:ss) Time 返回当前时间(hh:mm:ss) Date 返回当前日期(yy–mm–dd) Timer 返回从午夜算起已过的秒数
3.5.4 随机数语句和函数 在测试、模拟和游戏程序中,经常要使用随机数。随机数语句和函数见表3-6。 表3-6 随机数函数和语句 3.5.4 随机数语句和函数 在测试、模拟和游戏程序中,经常要使用随机数。随机数语句和函数见表3-6。 表3-6 随机数函数和语句 函 数 和 语 句 说 明 Randomize语句 产生随机数的种子 Rnd函数 产生0~1之间的随机数
3.6.1 程序语句的形式 程序语句是VB关键字、属性、函数、运算符以及能够生成VB编辑器可识别指令的符号的任意组合。一个完整的程序语句可以简单到只有一个关键字,例如: Print 语句也可以是各种元素的组合,例如下面的语句,把当前系统时间赋值给标签的Caption属性: Label1.Caption = Time 对象名 属性名 VB函数 赋值号 建立程序语句时必须遵从的构造规则称为语法。编写正确程序语句的前提,就是学习语言元素的语法,并在程序中使用这些元素正确地处理数据。
3.6.2 语句的书写规则 在编写程序代码时要遵循一定的规则,这样写出的程序既能被VB正确地识别,又能增加程序的可读性。 1. 自动语法检查 3.6.2 语句的书写规则 在编写程序代码时要遵循一定的规则,这样写出的程序既能被VB正确地识别,又能增加程序的可读性。 1. 自动语法检查 如果设置了“自动语法检测”(用“工具”菜单“选项”命令中的“编辑器”)选项卡,则在输入语句的过程中,VB将自动对输入的内容进行语法检查,如果发现语法错误,将弹出一个信息框提示出错的原因。 2. 格式化处理 VB会按约定对语句进行简单的格式化处理,例如关键字、函数的第一字母自动变为大写,运算符前后加空格等。在输入语句时,命令词、函数等可以不必区分大小写。例如,在输入Print时,不管输入Print、print,还是PRINT,按回车键后都变为Print。为了提高程序的可读性,在代码中应加上适当的空格,同时应按惯例处理字母的大小写。
3. 复合语句行 一般情况下,输入程序时要求一行一句,一句一行。但是VB也允许使用复合语句行,即把几个语句放在一个语句行中,语句之间用冒号“:”隔开。一个语句行的长度最多不能超过1023个字符。例如: Label1.Caption = "姓名" : Label2.Caption = "性别" : Label3.Caption = "学号" 4. 语句的续行 当一条语句很长时,在代码编辑窗口阅读程序时将不便查看,使用滚动条又比较麻烦。这时,就可以使用续行功能,用续行符“_”将一个较长的语句分为多个程序行。例如: Label1.Caption = "本程序实现的功能为" & _ "自动实现学生成绩的浏览、查询、修改、打印等" 在使用续行符时,在它前面至少要加一个空格,并且续行符只能出现在行尾。
3.6.3 命令格式中的符号约定 为了便于解释语句、方法和函数,本书语句、方法和函数格式中的符号采用统一约定。在各语句、方法、函数的语法格式和功能说明中,以尖括号〈 〉、方括号[ ]、花括号{ }、竖线|、逗号加省略号,...、省略号...作为专用符号,这些符号的含义见表3-7。
表3-7 VB命令格式中的约定符号 符 号 含 义 〈 〉 为必选参数表示符。尖括号中的中文提示说明,由使用者根据问题的需要提供具体参数。如果缺少必选参数,语句则发生语法错误 [ ] 为可选参数表示符。方括号中的内容选与不选由用户根据具体情况决定,且都不影响语句本身的功能。如省略,则默认为缺省值 | 为多中取一表示符,含义为“或者选择”。竖线分隔多个选择项,必须选择其中之一 { } 包含多中取一的各项 , ... 表示同类项目的重复出现 ... 表示省略了在当时叙述中不涉及的部分 注意:这些专用符号和其中的提示,不是语句行或函数的组成部分。在输入具体命令或函数时,上面的符号均不可作为语句中的成分输入计算机,它们只是语句、函数格式的书面表示。 3.7 习题