Visual Basic 程序设计甘肃农业大学信息科学技术学院
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社第 3章 Visual Basic程序设计基础
3.1 数据类型
3.2 常量和变量
3.3 运算符和表达式
3.4 常用内部函数
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.1 数据类型
3.1.1 基本数据类型
3.1.2 用户定义的数据类型
3.1.3 枚举类型
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.1.1 基本数据类型
数据实际上就是现实世界的一种形式化表达。数据是信息的物理表示形式,是程序处理的对象。
不同的数据具有不同的数据结构特点,即用“数据类型”来表达这种不同。
不同的数据类型有以下三方面的差异。
– 数据结构不同;
– 数据在计算机内的存储方式不同;
– 数据参与的运算不同。这是不同数据类型的本质特点。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.1.1 基本数据类型
在 Visual Basic中,提供了系统定义的数据类型,并允许用户根据需要自己定义数据类型。
–系统定义的数据类型称为标准类型,用户自己定义的数据类型称为自定义数据类型,自定义数据类型是由若干标准类型组合成的某种结构。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.1.1 基本数据类型
Visual Basic 提供的基本数据类型有:
– 数值型数据和字符串型数据。此外,还提供了字节、货币、对象、日期、布尔和变体等数据类型。
– Visual Basic中的数值型数据有:
整数、浮点数、字节型和货币型等。
– 其中整数分为整型( Integer)和长整型( Long),浮点数分为单精度型( Single)和双精度型( Double)。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.1.1 基本数据类型
Visual Basic 提供的基本数据类型有:
– 字符( String)数据类型
字符数据类型存放字符型数据,简称字符串。是用双引号括起来的一串一个字符序列,双引号作为字符串的定界符号。包括除双引号和回车以外可打印的所有字符,即引号内的字符是可以输出到屏幕和打印机上的字符。长度为零(不含任何字符)的字符串,称为空字符串。
Visual Basic中,有 2种字符串:变长字符串和定长字符串。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.1.1 基本数据类型
Visual Basic 提供的基本数据类型有:
– 逻辑( Boolean)数据类型
逻辑型也称布尔型。用 2个字节存储。
逻辑型数据只取两个值:逻辑真 True和逻辑假 False。
当把逻辑值转化为数值型时,False为 0,True为 -1。
也可以把其他类型的数据转换为逻辑型数据,非 0的数据转换为 True,0转换为 False。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.1.1 基本数据类型
Visual Basic 提供的基本数据类型有:
– 日期型( Date)
日期型数据用 8个字节的浮点数来存储,日期范围从公元 100年 1月 1日到 9999年 12月 31日,时间从
00:00:00到 23:59:59。
任何可辨认的文本日期都可以赋值给日期变量。
用号码符( #)括起来表示日期和时间,允许用各种表示日期和时间的格式。
数值型的数据也可以转换为日期型数据。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.1.1 基本数据类型
Visual Basic 提供的基本数据类型有:
– 变体型( Variant)
变体型也称为可变类型,它是一种特殊的数据类型。
类型可以是前面叙述的数值型、日期型、字符型等,
完全取决于程序的需要。从而增加了 Visual Basic数据处理的灵活性。
可变型数据( Variant)可以随着为它所赋的值的类型改变自身类型的一类特殊的数据类型,系统默认的数据类型是可变型。
可变型数据有三个特殊的值,分别为:
– Empty,Null,Error
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.1.1 基本数据类型
Visual Basic 提供的基本数据类型有:
– 对象型数据( Object)
对象数据类型用来表示图形,OLE对象或其他对象,
用 4个字节( 32位)存储,该地址可以引用应用程序或其他应用程序中的对象。可以随后用 Set语句制定一个被声明为 Object的变量,去引用应用程序所识别的任何实际对象。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.1 数据类型
3.1.1 基本数据类型
3.1.2 用户定义的数据类型
3.1.3 枚举类型
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.1.2 用户定义的数据类型
在 Visual Basic中用户可以用 Type语句定义自己的数据类型,类似于 C语言中的结构体类型和 Pascal语言中的记录类型,格式如下:
Type 数据类型名数据类型元素名 As 类型名
……
End Type
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.1.2 用户定义的数据类型
例如:对于一个学生的“学号”、“姓名”、“性别”、“年龄”、“入学成绩”
等数据,为了处理数据的方便,常常需要把这些数据定义成一个新的数据类型(如
Student类型)
Type Student
Xh As String*10
Xm As String*20
Xb As String*2
Nl As Integer
Score As Single
End Type
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.1.2 用户定义的数据类型
在使用 Type时应注意:
– 在使用记录类型前必须用 Type定义。记录类型在标准模块(,bas)中定义,默认是 Public,其变量可以出现在工程的任何地方。
– 记录类型中的元素类型可以是字符串,但必须是定长字符串,其长度用类型名称加上一个星号和常数指明,
一般格式为:
String * 常数
– 不要将自定义类型名和该类型的变量名混淆,前者表示了如同 integer,single等的类型名,后者则由 Visual
Basic根据变量的类型分配所需的内存空间、存储数据。
– 在记录类型中不能含有数组。
– 在随机文件操作中,记录类型有着重要的作用。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.1 数据类型
3.1.1 基本数据类型
3.1.2 用户定义的数据类型
3.1.3 枚举类型
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.1.3 枚举类型
在程序设计的过程中,有些数据无法直接用整型或实型数据来表示,必须经过某种转换,把本来不是简单地用整型数据来表示的问题强制用几个整数来描述,因而降低了程序的可读性。为此,
Visual Basic提供了枚举数据类型。
当一个变量只有几种可能的值时,可以定义为枚举类型。所谓“枚举”就是指将变量的值一一列举出来,变量的值只限于列举出来的值的范围。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.1.3 枚举类型
枚举类型提供了一种方便的方法用来处理有关的常数,或者使名称与常数数值相关联。例如,可以为与星期相关联的一组整形常数声明一个枚举类型,然后在代码中使用星期的名称,而不使用其整数数值。
枚举类型放在窗体模块、标准模块或公用类模块中的声明部分。通过 ENUM语句来定义,格式如下:
[Public | Private] Enum 类型名称成员名 [ = 常数表达式 ]
成员名 [ = 常数表达式 ]
……
End Enum
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社第 3章 Visual Basic程序设计基础
3.1 数据类型
3.2 常量和变量
3.3 运算符和表达式
3.4 常用内部函数
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.2 常量和变量
计算机处理数据时,必须将其装入内存。
在机器语言和汇编语言中,借助于对内存单元的编号(称为地址)访问内存中的数据。而在高级语言中,需要将存放数据的内存单元命名,通过内存单元名来访问其中的数据。 被命名的内存单元就是常量或变量。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.2 常量和变量
3.2.1 常量和变量命名的规则
3.2.2 常量
3.2.3 变量
3.2.4 变量的作用域
3.2.5 变体型变量
3.2.6 缺省声明
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.2.1 常量和变量命名的规则
在 Visual Basic中常量和变量的命名要遵循以下的规则:
– 为了增加程序的可读性,可在变量名前加一个缩写的前缀来表明该变量的数据类型。
– 标识符,标识符是指用户自己定义的名字,包括自定义的常量名、变量名、控件名、自定义的过程名和函数名等。用户通过标识符对相应的对象进行操作。标识符除控件名和窗体名以外,不能使用关键字。
– 变量名、过程名、函数名应在 255个字符以内;控件名、
窗体名、模块名应在 40个字符以内。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.2.1 常量和变量命名的规则
在 Visual Basic中常量和变量的命名要遵循以下的规则:
– 以字母或汉字开头,由字母、数字或下划线组成,长度小于等于 255个字符。
– 不能使用 Visual Basic中的关键字。关键字又称保留字,
是在语法上有固定意义的字母组合。主要包括:命令名、函数名、数据类型名、运算符,Visual Basic系统提供的标准过程等。在联机帮助系统中可以找到全部关键字。
– Visual Basic中不区分常量名或变量名的大小写。为了便于区分,常量名一般全部用大写字母表示。变量名一般首字母大写,其余用小写字母表示。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.2 常量和变量
3.2.1 常量和变量命名的规则
3.2.2 常量
3.2.3 变量
3.2.4 变量的作用域
3.2.5 变体型变量
3.2.6 缺省声明
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.2.2 常量
在程序执行的过程中保持不变的数据称为常量。
在 Visual Basic中,常量分为两种,文字常量和符号常量。
符号常量又分为用户自定义和系统定义两种。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.2.2 常量
文字常量
– 文字常量直接出现在代码中,也称为字面常量或直接常量,文字常量的表示形式决定它的类型和值。
– Visual Basic文字常量又常分为字符串常量、数值常量、
日期常量和逻辑常量。
字符串常量由字符组成,可以由除回车符和双引号以外的任何
ASCII码字符和汉字组成。其内容必须用双引号括起来。
数值常量是由 0~ 9、小数点及符号位组成的常数,以及用规定的进制、指数形式表示的常数。
数值常量共有四种表示方法,即整型数、长整型数、货币型数和浮点数。
日期型常量要用两个,#”号把表示日期和时间的值括起来,
逻辑常量只有两个值,True和 False。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.2.2 常量
符号常量
– 符号常量就是用标识符来表示一个常量,
– 使用符号常量的好处主要在于,当我们要修改该常量时,只需要修改定义该常量的一个语句即可。
– 定义符号常量的格式,
Const 常量名 = 表达式 [As类型 ]
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.2.2 常量
符号常量
– 在使用符号常量时,应注意以下几点:
在声明符号常量时,可以在常量名后面加上类型说明符,
当在程序中引用符号常量时,通常省略类型说明符。类型说明符不是符号常量的一部分。
– 除了用户定义的常量外,在 Visual Basic中,系统定义了一系列常量,可与应用程序的对象、方法或属性一起使用,使程序易于阅读和编写。系统常量的使用方法和自定义常量的使用方法相同
– 系统定义的常量在对象库中,可以在对象浏览器中通过不同的对象库查找它们的符号及取值。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.2 常量和变量
3.2.1 常量和变量命名的规则
3.2.2 常量
3.2.3 变量
3.2.4 变量的作用域
3.2.5 变体型变量
3.2.6 缺省声明
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.2.3 变量
在程序执行过程中,其值可以改变的量称为变量。变量一般要先声明,再使用。
变量的类型和定义
– 任何变量都有一定的数据类型
– 在 Visual Basic中,可以用如下几种方式来定义一个变量的数据类型:
用类型说明符直接声明变量
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.2.3 变量
– 在 Visual Basic中,可以用如下几种方式来定义一个变量的数据类型:
用 Dim语句定义变量,用 Dim定义变量的语法格式如下:
Dim 变量名 [As 数据类型 ][,变量名 [As 数据类型 ]]……
用 DefType语句定义变量,语法格式为:
DefType 字母范围 [,字母范围 ]
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.2.3 变量
变量的初始化
– 用户一旦显式声明了一个变量,系统将给变量一个初始值。对于不同类型的数据,变量的初始值如下:
所有数值型变量(整型,长整形、单精度浮点型、双精度浮点型、字节型)的初始值为 0。
布尔型变量的初始值为 False。
日期型变量的初始值为 00:00:00。
变长字符串变量的初始值为空串(不含任何字符的字符串,即
""),定长字符串的初始值为其长度个空格。
变体型变量的初始值为空值( Empty)。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.2 常量和变量
3.2.1 常量和变量命名的规则
3.2.2 常量
3.2.3 变量
3.2.4 变量的作用域
3.2.5 变体型变量
3.2.6 缺省声明
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.2.4 变量的作用域
—个变量被定义后并不是在任何地方都可以被引用,每个变量都有它的作用域。变量的作用域也就是变量的有效范围,是指变量在应用中的哪一部分起作用,或者说,
哪一部分代码能对该变量进行操作。
根据变量定义的位置和所使用的变量定义语句的不同,Visual Basic中的变量可以分为三类:
– 局部变量、窗体和模块级变量和全局变量。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.2.4 变量的作用域
局部变量
– 在过程内定义的变量称为局部变量,其作用域是它所在的过程,在其他的过程中不能访问该变量。
– 局部变量只在其过程中有效,对其他过程没有任何影响。因此,在同一过程中不能定义相同的变量名,而在不同的过程中可以定义相同名称的局部变量,它们之间没有任何影响。
– 可以用 Dim和 Static语句定义局部变量,
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.2.4 变量的作用域
窗体和模块级变量
– 如果一个窗体中的不同过程要使用同一个变量,这就需要在该窗体或模块内的过程之外定义一个变量,使得它在整个窗体或模块中有效,即其作用域为整个窗体或模块,本窗体或本模块内的所有过程都能访问它,
这就是窗体和模块级的变量。
– 可以用 Dim和 Private语句定义窗体和模块级变量。
– 定义窗体级变量的方法是:
打开该窗体的代码编辑器,并在“对象”下拉列表框中选择
“通用”选项。
在“过程”下拉列表框中选择“声明”。
定义变量。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.2.4 变量的作用域
全局变量
– 全局变量的作用域最大,在整个工程中有效,
可以在整个工程中的所有模块、过程中使用。
可以用 Public或 Global语句在标准模块的声明部分定义全局变量。
注意,全局变量只能用 Public或 Global语句定义,不能使用 Dim语句定义;而且只能在标准模块的声明部分定义。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.2 常量和变量
3.2.1 常量和变量命名的规则
3.2.2 常量
3.2.3 变量
3.2.4 变量的作用域
3.2.5 变体型变量
3.2.6 缺省声明
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.2.5 变体型变量
变体型变量的使用十分灵活,可以存放除定长字符串和用户定义数据类型外,所有数据类型的数据。
变体型变量还可以包含如下特殊的数据:
– Empty(空):表示未被赋值,在赋值之前,变体型变量具有 Empty值。
– Null(无效):表示未知数据或丢失的数据。
– Error(出错):表示已发生过程中的错误状态。
由于在程序中,变体型变量的数据类型可以根据运算的实际情况而变化,所以 Visual Basic提供了一个函数 VarType专门用来检测变体型数据保存的数据类型。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.2 常量和变量
3.2.1 常量和变量命名的规则
3.2.2 常量
3.2.3 变量
3.2.4 变量的作用域
3.2.5 变体型变量
3.2.6 缺省声明
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.2.6 缺省声明
在 Visual Basic中,可以不用前面所说的变量定义方式来声明变量而直接使用变量,
系统会自动地为这些变量指定数据类型,
默认的是变体类型。这种变量的声明方式称为缺省声明,缺省声明只能声明局部变量,对于窗体和模块级变量、全局变量,
必须显式地用变量定义语句声明。
– 缺省声明的变量不需要使用 Dim语句定义,因此使用比较方便,但是如果把变量名拼错了的话,会导致一个难以查找的错误
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.2.6 缺省声明
为避免写错变量名引起的麻烦,可规定所有变量都要显式声明。只要遇到一个未经明确声明就当成变量的名字,Visual Basic都发出错误警告。
强制显式声明变量有两种方法:
– 在窗体模块或标准模块的声明部分中加入,Option
Explicit” 语句。 Option Explicit 语句的作用范围仅限于语句所在模块。
– 在“工具”菜单下选取“选项”菜单项。在弹出的
“选项”对话框中选择“编辑器”选项卡,然后复选
“要求变量声明”选项。这样就在任何新建的模块中自动插入 Option Explicit语句。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社第 3章 Visual Basic程序设计基础
3.1 数据类型
3.2 常量和变量
3.3 运算符和表达式
3.4 常用内部函数
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.3 运算符和表达式
3.3.1 算术运算符与数值表达式
3.3.2 关系运算与逻辑运算
3.3.3 字符串运算符
3.3.4 表达式的运算顺序
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.3.1 算术运算符与数值表达式
运算(即操作)是对数据的加工。最基本的运算形式常常可以用一些简洁的符号来描述,这些符号称为运算符或操作符。被运算的对象,即数据,
称为运算量或操作数。由运算符和运算量组成的表达式描述了对哪些数据、以何种顺序进行什么样的操作。
运算量可以是常量,也可以是变量,还可以是函数。单个变量或常数也可以看成是表达式。
Visual Basic提供了丰富的运算符,可以构成多种表达式。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.3.1 算术运算符与数值表达式
算术运算符(均是双目运算)
– 算术运算符进行简单的算术运算,运算对象是数值型数据。
– 数值表达式
由变量、常量和运算符按一定的规则组成的一个字符序列就是表达式。表达式通过运算后有一个结果,运算结果的类型由数据和运算符共同决定。由算术运算符连接起来的式子称为算术表达式或数值表达式。
– 在算术表达式中,如果操作数具有不同的数据精度,
则 Visual Basic规定运算结果的数据类型以精度高的数据类型为准。即
Integer < Long < Single < Double < Currency
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.3 运算符和表达式
3.3.1 算术运算符与数值表达式
3.3.2 关系运算与逻辑运算
3.3.3 字符串运算符
3.3.4 表达式的运算顺序
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.3.2 关系运算与逻辑运算
关系运算符
– 关系运算符用作两个数值或字符串的比较,返回值是逻辑值 True或 False。表 3.5列出了
Visual Basic中的关系运算符及使用示例。
– 关系运算符都是双目运算,是用来比较两个运算量之间的关系,关系表达式的运算结果为逻辑量。若关系成立,结果为 True,否则,结果为 False。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.3.2 关系运算与逻辑运算
关系运算符
– 关系运算符用作两个数值或字符串的比较,返回值是逻辑值 True或 False。表 3.5列出了
Visual Basic中的关系运算符及使用示例。
– 关系运算符都是双目运算,是用来比较两个运算量之间的关系,关系表达式的运算结果为逻辑量。若关系成立,结果为 True,否则,结果为 False。
– 关系运算符有,>(大于),>=(大于等于)、
<(小于),<=(小于等于),=(等于)、
<>(不等于)。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.3.2 关系运算与逻辑运算
逻辑运算符
– 逻辑运算符是对操作数进行逻辑运算,运行的结果为逻辑型数据。当逻辑关系成立时,运算结果为 True;当逻辑关系不成立时,运算结果为 False。除 Not外都是对两个逻辑量运算。结果为逻辑值。
– 如表 3.6列出了 Visual Basic中的逻辑运算符,
– 表 3.7 列出了逻辑运算的真值表。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.3.2 关系运算与逻辑运算
关系表达式和逻辑表达式
– 当使用关系运算符或逻辑运算符时,表达式又称为关系表达式或逻辑表达式。
– 关系运算一般表示一个简单的条件。
– 逻辑表达式表示较复杂的条件。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.3 运算符和表达式
3.3.1 算术运算符与数值表达式
3.3.2 关系运算与逻辑运算
3.3.3 字符串运算符
3.3.4 表达式的运算顺序
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.3.3 字符串运算符
字符串运算符有:
– &,+。功能是字符串连接。
– 当连接符两旁的操作量都为字符串时,上述两个连接符等价。它们区别是:
+(连接运算):两个操作数均应为字符串类型;
&(连接运算):两个操作数既可为字符型也可为数值型,当是数值型时,系统自动先将其转换为数字字符型,然后进行连接操作。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.3 运算符和表达式
3.3.1 算术运算符与数值表达式
3.3.2 关系运算与逻辑运算
3.3.3 字符串运算符
3.3.4 表达式的运算顺序
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.3.4 表达式的运算顺序
表达式由常量、变量、函数、运算符以及圆括号 ( ),按照一定的规则组成,不管表达式的形式如何,都会计算出一个结果,该结果的类型由参与运算的数据和运算符决定。
在表达式中经常会出现不同类型数据混合运算的情形。此时,需要按一定的规则进行类型转换。转换的方法有两种:
系统自动转换;使用转换函数转换。
当表达式中有多个运算符时,此时表达式要按运算符的优先级来进行运算。
在 Visual Basic的表达式中,运算按照括号、函数、算术运算、字符串运算、关系运算、逻辑运算的顺序进行。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.3.4 表达式的运算顺序
表达式的书写规则
– 表达式中的每个字符没有高低、大小的区别。
– 只能使用圆括号,可以多重使用,圆括号必须成对出现。
– Visual Basic表达式中的乘号,*”不能省略。
– 能用内部函数的地方尽量使用内部函数。
– 运算符不能相邻。例 a+-b是错误的。
– 表达式从左到右在同一基准并排书写,不能出现上下标。
– 要注意各种运算符的优先级别,为保持运算顺序,在写 Visual Basic表达式时需要适当添加括号 ( ),若用到库函数必须按库函数要求书写。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.3.4 表达式的运算顺序
表达式中出现了多种不同类型的运算符时,其运算符优先级如下:
算术运算符 >= 字符运算符 >= 关系运算符 >= 逻辑运算符
– 说明:
当一个表达式中出现多种运算符时,首先进行算术运算符,接着处理字符串连接运算符,然后处理比较运算符,最后处理逻辑运算符,在各类运算中再按照相应的优先次序进行。
可以用括号改变优先顺序,强令表达式的某些部分优先运行。
括号内的运算总是优先于括号外的运算。对于多重括号,总是由内到外。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社第 3章 Visual Basic程序设计基础
3.1 数据类型
3.2 常量和变量
3.3 运算符和表达式
3.4 常用内部函数
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.4 常用内部函数
3.4.1 转换函数
3.4.2 数学函数
3.4.3 日期和时间函数
3.4.4 字符串函数
3.4.5 随机函数
3.4.6 Shell函数
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.4.1 转换函数
转换函数用于各种类型数据之间的转换。
– 常用的转换函数如下表所示:
函数名 说 明 例 结 果
Asc(C) 字符转换成 ASCII码值 Asc("A") 65
Chr$(N) ASCII码值转换成字符 Chr$(65) "A"
Fix(N) 取整 Fix(-3.5) -3
Int(N) 正数取整同 Fix,负数取整结果为不大于 N的最大整数 Int( -3.5)Int( 3.5) -43
Oct[$](N) 十进制数转换成八进制数 Oct$(100) "144"
Hex[$](N) 十进制数转换成十六进制数 Hex(100) 64
Lcase$(C) 大写字母转换成小写字母 Lcase$( "ABC") "abc"
Ucase$(C) 小写字母转换成大写字母 Ucase$( "abc") "ABC"
Str$(N) 数值数据转换为字符串 Str$(123.45) "123.45"
Val(C) 数字字符串转换为数值数据 Val( "123AB") 123
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.4 常用内部函数
3.4.1 转换函数
3.4.2 数学函数
3.4.3 日期和时间函数
3.4.4 字符串函数
3.4.5 随机函数
3.4.6 Shell函数
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.4.2 数学函数
常用数学函数有三角函数、算术平方根函数、对数函数、指数函数及绝对值函数等。
– 常用的数学函数如下表所示函数名 说 明 例 结 果
Abs(N) 取绝对值 Abs(-3.5) 3.5
Atn(N) 取反正切函数 Atn(0) 0
Cos(N) 取余弦函数 Cos(0) 1
Exp(N) e为底的指数函数,即 eN Exp(3) 20.086
Log(N) 以 e为底的自然对数 Log(10) 2.3026
Rnd[(N)] 产生随机数 Rnd 0~ 1之间的随机数
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.4.2 数学函数
常用数学函数有三角函数、算术平方根函数、对数函数、指数函数及绝对值函数等。
– 常用的数学函数如下表所示函数名 说 明 例 结 果
Sin(N) 取正弦函数 Sin(0) 0
Sgn(N) 符号函数 Sgn(-3.5) -1
Sqr(N) 平方根 Sqr( 9) 3
Tan( N) 正切函数 Tan( 0) 0
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.4 常用内部函数
3.4.1 转换函数
3.4.2 数学函数
3.4.3 日期和时间函数
3.4.4 字符串函数
3.4.5 随机函数
3.4.6 Shell函数
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.4.3 日期和时间函数
日期与时间函数提供时间和日期信息。缺省日期格式为:,mm/dd/yy”,时间格式:,hh:mm:ss”。
– 常用的日期时间函数函数名 说 明 例 结 果
Time[$][()] 返回系统时间 Time 11:26:53 AM
Date[$][()] 返回系统日期 Date$() "2003-05-05"
Now 返回系统日期和时间 Now 98/05/0111:26:53AM
DateValue(C) 同上,但自变量为字符串 DateValue("97,05,01")DateValue("97,04,01") 30
Day(C|N) 返回日期代号( 1~ 31) Day( "97,05,01") 1
Month(C|N) 返回月份代号( 1~ 12) Month( "97,05,01") 5
Year(C|N) 返回年代号( 1753~ 2078) Year(365)相对于 1899,12,30为 0天后 365天的年代号 1900
WeekDay(C|N) 返回星期代号( 1~ 7),星期日为 1,星期一为 2 WeekDay("97,05,01") 5即星期四
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.4 常用内部函数
3.4.1 转换函数
3.4.2 数学函数
3.4.3 日期和时间函数
3.4.4 字符串函数
3.4.5 随机函数
3.4.6 Shell函数
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.4.4 字符串函数
Visual Basic具有很强的字符串处理能力。
函数名 说 明 例 结 果
InStr([N1]C1,C2[M])
在 C1中从 N1开始找 C2,省略
N1从头开始找,找不到为 0
InStr(2,"ABCDEFG","EF") 7
Left$(C,N) 取出字符串左边 n个字符 Left$("ABCDEFG",3) "ABC"
Len(C) 字符串长度 Len("ABCDEFG") 7
Ltrim$(C) 取掉字符串左边空格 Ltrim$("□□□ ABCD") "ABCD"
Mid$( C,N1,N2) 自字符串 N1位置开始,向右取 N2个字符 Mid$("ABCDEFG",2,3) "BCD"
Right$(C,N) 取出字符串右边 n个字符 Right$("ABCDEF",3) "DEF"
Rtrim$(C) 取掉字符串右边空格 Rtrim$("ABCD□□□ ") "ABCD"
Space$(N) 产生 N个空格的字符串 Space$(3) "□□□ "
String$(N,C) 返回由 C中首字符组成的N个字符串 String$(3,"ABCDEFG") "AAA"
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.4 常用内部函数
3.4.1 转换函数
3.4.2 数学函数
3.4.3 日期和时间函数
3.4.4 字符串函数
3.4.5 随机函数
3.4.6 Shell函数
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.4.5 随机函数
格式,Rnd(n)
功能:在区间( 0,1)内随机产生一个浮点数。
– 说明,n为数值类型的参数,函数返回值为数值型数据。要先使用语句 Randomize(timer)初始化随机数发生器,当 n>0时,每次产生的随机数都不同;当 n=0时,每次产生的随机数都与上次的相同;当 n<0时,每次产生的随机数都相同。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.4 常用内部函数
3.4.1 转换函数
3.4.2 数学函数
3.4.3 日期和时间函数
3.4.4 字符串函数
3.4.5 随机函数
3.4.6 Shell函数
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.4.6 Shell函数
在 Visual Basic中不但可以调用内部函数,
还可以调用各种应用程序。也就是说,凡是能在 DOS下或 Windows运行的应用程序,
都可以在 Visual Basic中调用。
Shell函数的格式如下:
Shell( 命令字符串,窗口类型 )
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社学完本章你应能够:
正确使用 Visual Basic的各种类型的常量和变量;
掌握声明变量类型的各种方法及 Option语句的使用;
掌握 Visual Basic的各种运算符及表达式;
掌握 Visual Basic常用的内部函数。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社思 考 题
1,Visual Basic提供了哪些标准数据类型?声明类型时,其类型关键字分别是什么?其类型符又是什么?
2,哪些类型的数据可以实行,+”运算?
3,什么是符号常量?使用符号常量有什么好处?
4,用户自定义数据类型的名称与自定义变量名有何区别?
5,什么是运算符的优先级?什么是函数及函数的参数?
6,将数字字符串转换成数值,用什么函数?判断是否是数字字符串,用什么函数?取字符串中的某几个字符,用什么函数?
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社第 3章 Visual Basic程序设计基础
3.1 数据类型
3.2 常量和变量
3.3 运算符和表达式
3.4 常用内部函数
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.1 数据类型
3.1.1 基本数据类型
3.1.2 用户定义的数据类型
3.1.3 枚举类型
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.1.1 基本数据类型
数据实际上就是现实世界的一种形式化表达。数据是信息的物理表示形式,是程序处理的对象。
不同的数据具有不同的数据结构特点,即用“数据类型”来表达这种不同。
不同的数据类型有以下三方面的差异。
– 数据结构不同;
– 数据在计算机内的存储方式不同;
– 数据参与的运算不同。这是不同数据类型的本质特点。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.1.1 基本数据类型
在 Visual Basic中,提供了系统定义的数据类型,并允许用户根据需要自己定义数据类型。
–系统定义的数据类型称为标准类型,用户自己定义的数据类型称为自定义数据类型,自定义数据类型是由若干标准类型组合成的某种结构。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.1.1 基本数据类型
Visual Basic 提供的基本数据类型有:
– 数值型数据和字符串型数据。此外,还提供了字节、货币、对象、日期、布尔和变体等数据类型。
– Visual Basic中的数值型数据有:
整数、浮点数、字节型和货币型等。
– 其中整数分为整型( Integer)和长整型( Long),浮点数分为单精度型( Single)和双精度型( Double)。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.1.1 基本数据类型
Visual Basic 提供的基本数据类型有:
– 字符( String)数据类型
字符数据类型存放字符型数据,简称字符串。是用双引号括起来的一串一个字符序列,双引号作为字符串的定界符号。包括除双引号和回车以外可打印的所有字符,即引号内的字符是可以输出到屏幕和打印机上的字符。长度为零(不含任何字符)的字符串,称为空字符串。
Visual Basic中,有 2种字符串:变长字符串和定长字符串。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.1.1 基本数据类型
Visual Basic 提供的基本数据类型有:
– 逻辑( Boolean)数据类型
逻辑型也称布尔型。用 2个字节存储。
逻辑型数据只取两个值:逻辑真 True和逻辑假 False。
当把逻辑值转化为数值型时,False为 0,True为 -1。
也可以把其他类型的数据转换为逻辑型数据,非 0的数据转换为 True,0转换为 False。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.1.1 基本数据类型
Visual Basic 提供的基本数据类型有:
– 日期型( Date)
日期型数据用 8个字节的浮点数来存储,日期范围从公元 100年 1月 1日到 9999年 12月 31日,时间从
00:00:00到 23:59:59。
任何可辨认的文本日期都可以赋值给日期变量。
用号码符( #)括起来表示日期和时间,允许用各种表示日期和时间的格式。
数值型的数据也可以转换为日期型数据。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.1.1 基本数据类型
Visual Basic 提供的基本数据类型有:
– 变体型( Variant)
变体型也称为可变类型,它是一种特殊的数据类型。
类型可以是前面叙述的数值型、日期型、字符型等,
完全取决于程序的需要。从而增加了 Visual Basic数据处理的灵活性。
可变型数据( Variant)可以随着为它所赋的值的类型改变自身类型的一类特殊的数据类型,系统默认的数据类型是可变型。
可变型数据有三个特殊的值,分别为:
– Empty,Null,Error
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.1.1 基本数据类型
Visual Basic 提供的基本数据类型有:
– 对象型数据( Object)
对象数据类型用来表示图形,OLE对象或其他对象,
用 4个字节( 32位)存储,该地址可以引用应用程序或其他应用程序中的对象。可以随后用 Set语句制定一个被声明为 Object的变量,去引用应用程序所识别的任何实际对象。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.1 数据类型
3.1.1 基本数据类型
3.1.2 用户定义的数据类型
3.1.3 枚举类型
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.1.2 用户定义的数据类型
在 Visual Basic中用户可以用 Type语句定义自己的数据类型,类似于 C语言中的结构体类型和 Pascal语言中的记录类型,格式如下:
Type 数据类型名数据类型元素名 As 类型名
……
End Type
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.1.2 用户定义的数据类型
例如:对于一个学生的“学号”、“姓名”、“性别”、“年龄”、“入学成绩”
等数据,为了处理数据的方便,常常需要把这些数据定义成一个新的数据类型(如
Student类型)
Type Student
Xh As String*10
Xm As String*20
Xb As String*2
Nl As Integer
Score As Single
End Type
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.1.2 用户定义的数据类型
在使用 Type时应注意:
– 在使用记录类型前必须用 Type定义。记录类型在标准模块(,bas)中定义,默认是 Public,其变量可以出现在工程的任何地方。
– 记录类型中的元素类型可以是字符串,但必须是定长字符串,其长度用类型名称加上一个星号和常数指明,
一般格式为:
String * 常数
– 不要将自定义类型名和该类型的变量名混淆,前者表示了如同 integer,single等的类型名,后者则由 Visual
Basic根据变量的类型分配所需的内存空间、存储数据。
– 在记录类型中不能含有数组。
– 在随机文件操作中,记录类型有着重要的作用。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.1 数据类型
3.1.1 基本数据类型
3.1.2 用户定义的数据类型
3.1.3 枚举类型
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.1.3 枚举类型
在程序设计的过程中,有些数据无法直接用整型或实型数据来表示,必须经过某种转换,把本来不是简单地用整型数据来表示的问题强制用几个整数来描述,因而降低了程序的可读性。为此,
Visual Basic提供了枚举数据类型。
当一个变量只有几种可能的值时,可以定义为枚举类型。所谓“枚举”就是指将变量的值一一列举出来,变量的值只限于列举出来的值的范围。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.1.3 枚举类型
枚举类型提供了一种方便的方法用来处理有关的常数,或者使名称与常数数值相关联。例如,可以为与星期相关联的一组整形常数声明一个枚举类型,然后在代码中使用星期的名称,而不使用其整数数值。
枚举类型放在窗体模块、标准模块或公用类模块中的声明部分。通过 ENUM语句来定义,格式如下:
[Public | Private] Enum 类型名称成员名 [ = 常数表达式 ]
成员名 [ = 常数表达式 ]
……
End Enum
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社第 3章 Visual Basic程序设计基础
3.1 数据类型
3.2 常量和变量
3.3 运算符和表达式
3.4 常用内部函数
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.2 常量和变量
计算机处理数据时,必须将其装入内存。
在机器语言和汇编语言中,借助于对内存单元的编号(称为地址)访问内存中的数据。而在高级语言中,需要将存放数据的内存单元命名,通过内存单元名来访问其中的数据。 被命名的内存单元就是常量或变量。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.2 常量和变量
3.2.1 常量和变量命名的规则
3.2.2 常量
3.2.3 变量
3.2.4 变量的作用域
3.2.5 变体型变量
3.2.6 缺省声明
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.2.1 常量和变量命名的规则
在 Visual Basic中常量和变量的命名要遵循以下的规则:
– 为了增加程序的可读性,可在变量名前加一个缩写的前缀来表明该变量的数据类型。
– 标识符,标识符是指用户自己定义的名字,包括自定义的常量名、变量名、控件名、自定义的过程名和函数名等。用户通过标识符对相应的对象进行操作。标识符除控件名和窗体名以外,不能使用关键字。
– 变量名、过程名、函数名应在 255个字符以内;控件名、
窗体名、模块名应在 40个字符以内。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.2.1 常量和变量命名的规则
在 Visual Basic中常量和变量的命名要遵循以下的规则:
– 以字母或汉字开头,由字母、数字或下划线组成,长度小于等于 255个字符。
– 不能使用 Visual Basic中的关键字。关键字又称保留字,
是在语法上有固定意义的字母组合。主要包括:命令名、函数名、数据类型名、运算符,Visual Basic系统提供的标准过程等。在联机帮助系统中可以找到全部关键字。
– Visual Basic中不区分常量名或变量名的大小写。为了便于区分,常量名一般全部用大写字母表示。变量名一般首字母大写,其余用小写字母表示。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.2 常量和变量
3.2.1 常量和变量命名的规则
3.2.2 常量
3.2.3 变量
3.2.4 变量的作用域
3.2.5 变体型变量
3.2.6 缺省声明
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.2.2 常量
在程序执行的过程中保持不变的数据称为常量。
在 Visual Basic中,常量分为两种,文字常量和符号常量。
符号常量又分为用户自定义和系统定义两种。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.2.2 常量
文字常量
– 文字常量直接出现在代码中,也称为字面常量或直接常量,文字常量的表示形式决定它的类型和值。
– Visual Basic文字常量又常分为字符串常量、数值常量、
日期常量和逻辑常量。
字符串常量由字符组成,可以由除回车符和双引号以外的任何
ASCII码字符和汉字组成。其内容必须用双引号括起来。
数值常量是由 0~ 9、小数点及符号位组成的常数,以及用规定的进制、指数形式表示的常数。
数值常量共有四种表示方法,即整型数、长整型数、货币型数和浮点数。
日期型常量要用两个,#”号把表示日期和时间的值括起来,
逻辑常量只有两个值,True和 False。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.2.2 常量
符号常量
– 符号常量就是用标识符来表示一个常量,
– 使用符号常量的好处主要在于,当我们要修改该常量时,只需要修改定义该常量的一个语句即可。
– 定义符号常量的格式,
Const 常量名 = 表达式 [As类型 ]
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.2.2 常量
符号常量
– 在使用符号常量时,应注意以下几点:
在声明符号常量时,可以在常量名后面加上类型说明符,
当在程序中引用符号常量时,通常省略类型说明符。类型说明符不是符号常量的一部分。
– 除了用户定义的常量外,在 Visual Basic中,系统定义了一系列常量,可与应用程序的对象、方法或属性一起使用,使程序易于阅读和编写。系统常量的使用方法和自定义常量的使用方法相同
– 系统定义的常量在对象库中,可以在对象浏览器中通过不同的对象库查找它们的符号及取值。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.2 常量和变量
3.2.1 常量和变量命名的规则
3.2.2 常量
3.2.3 变量
3.2.4 变量的作用域
3.2.5 变体型变量
3.2.6 缺省声明
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.2.3 变量
在程序执行过程中,其值可以改变的量称为变量。变量一般要先声明,再使用。
变量的类型和定义
– 任何变量都有一定的数据类型
– 在 Visual Basic中,可以用如下几种方式来定义一个变量的数据类型:
用类型说明符直接声明变量
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.2.3 变量
– 在 Visual Basic中,可以用如下几种方式来定义一个变量的数据类型:
用 Dim语句定义变量,用 Dim定义变量的语法格式如下:
Dim 变量名 [As 数据类型 ][,变量名 [As 数据类型 ]]……
用 DefType语句定义变量,语法格式为:
DefType 字母范围 [,字母范围 ]
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.2.3 变量
变量的初始化
– 用户一旦显式声明了一个变量,系统将给变量一个初始值。对于不同类型的数据,变量的初始值如下:
所有数值型变量(整型,长整形、单精度浮点型、双精度浮点型、字节型)的初始值为 0。
布尔型变量的初始值为 False。
日期型变量的初始值为 00:00:00。
变长字符串变量的初始值为空串(不含任何字符的字符串,即
""),定长字符串的初始值为其长度个空格。
变体型变量的初始值为空值( Empty)。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.2 常量和变量
3.2.1 常量和变量命名的规则
3.2.2 常量
3.2.3 变量
3.2.4 变量的作用域
3.2.5 变体型变量
3.2.6 缺省声明
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.2.4 变量的作用域
—个变量被定义后并不是在任何地方都可以被引用,每个变量都有它的作用域。变量的作用域也就是变量的有效范围,是指变量在应用中的哪一部分起作用,或者说,
哪一部分代码能对该变量进行操作。
根据变量定义的位置和所使用的变量定义语句的不同,Visual Basic中的变量可以分为三类:
– 局部变量、窗体和模块级变量和全局变量。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.2.4 变量的作用域
局部变量
– 在过程内定义的变量称为局部变量,其作用域是它所在的过程,在其他的过程中不能访问该变量。
– 局部变量只在其过程中有效,对其他过程没有任何影响。因此,在同一过程中不能定义相同的变量名,而在不同的过程中可以定义相同名称的局部变量,它们之间没有任何影响。
– 可以用 Dim和 Static语句定义局部变量,
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.2.4 变量的作用域
窗体和模块级变量
– 如果一个窗体中的不同过程要使用同一个变量,这就需要在该窗体或模块内的过程之外定义一个变量,使得它在整个窗体或模块中有效,即其作用域为整个窗体或模块,本窗体或本模块内的所有过程都能访问它,
这就是窗体和模块级的变量。
– 可以用 Dim和 Private语句定义窗体和模块级变量。
– 定义窗体级变量的方法是:
打开该窗体的代码编辑器,并在“对象”下拉列表框中选择
“通用”选项。
在“过程”下拉列表框中选择“声明”。
定义变量。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.2.4 变量的作用域
全局变量
– 全局变量的作用域最大,在整个工程中有效,
可以在整个工程中的所有模块、过程中使用。
可以用 Public或 Global语句在标准模块的声明部分定义全局变量。
注意,全局变量只能用 Public或 Global语句定义,不能使用 Dim语句定义;而且只能在标准模块的声明部分定义。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.2 常量和变量
3.2.1 常量和变量命名的规则
3.2.2 常量
3.2.3 变量
3.2.4 变量的作用域
3.2.5 变体型变量
3.2.6 缺省声明
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.2.5 变体型变量
变体型变量的使用十分灵活,可以存放除定长字符串和用户定义数据类型外,所有数据类型的数据。
变体型变量还可以包含如下特殊的数据:
– Empty(空):表示未被赋值,在赋值之前,变体型变量具有 Empty值。
– Null(无效):表示未知数据或丢失的数据。
– Error(出错):表示已发生过程中的错误状态。
由于在程序中,变体型变量的数据类型可以根据运算的实际情况而变化,所以 Visual Basic提供了一个函数 VarType专门用来检测变体型数据保存的数据类型。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.2 常量和变量
3.2.1 常量和变量命名的规则
3.2.2 常量
3.2.3 变量
3.2.4 变量的作用域
3.2.5 变体型变量
3.2.6 缺省声明
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.2.6 缺省声明
在 Visual Basic中,可以不用前面所说的变量定义方式来声明变量而直接使用变量,
系统会自动地为这些变量指定数据类型,
默认的是变体类型。这种变量的声明方式称为缺省声明,缺省声明只能声明局部变量,对于窗体和模块级变量、全局变量,
必须显式地用变量定义语句声明。
– 缺省声明的变量不需要使用 Dim语句定义,因此使用比较方便,但是如果把变量名拼错了的话,会导致一个难以查找的错误
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.2.6 缺省声明
为避免写错变量名引起的麻烦,可规定所有变量都要显式声明。只要遇到一个未经明确声明就当成变量的名字,Visual Basic都发出错误警告。
强制显式声明变量有两种方法:
– 在窗体模块或标准模块的声明部分中加入,Option
Explicit” 语句。 Option Explicit 语句的作用范围仅限于语句所在模块。
– 在“工具”菜单下选取“选项”菜单项。在弹出的
“选项”对话框中选择“编辑器”选项卡,然后复选
“要求变量声明”选项。这样就在任何新建的模块中自动插入 Option Explicit语句。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社第 3章 Visual Basic程序设计基础
3.1 数据类型
3.2 常量和变量
3.3 运算符和表达式
3.4 常用内部函数
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.3 运算符和表达式
3.3.1 算术运算符与数值表达式
3.3.2 关系运算与逻辑运算
3.3.3 字符串运算符
3.3.4 表达式的运算顺序
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.3.1 算术运算符与数值表达式
运算(即操作)是对数据的加工。最基本的运算形式常常可以用一些简洁的符号来描述,这些符号称为运算符或操作符。被运算的对象,即数据,
称为运算量或操作数。由运算符和运算量组成的表达式描述了对哪些数据、以何种顺序进行什么样的操作。
运算量可以是常量,也可以是变量,还可以是函数。单个变量或常数也可以看成是表达式。
Visual Basic提供了丰富的运算符,可以构成多种表达式。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.3.1 算术运算符与数值表达式
算术运算符(均是双目运算)
– 算术运算符进行简单的算术运算,运算对象是数值型数据。
– 数值表达式
由变量、常量和运算符按一定的规则组成的一个字符序列就是表达式。表达式通过运算后有一个结果,运算结果的类型由数据和运算符共同决定。由算术运算符连接起来的式子称为算术表达式或数值表达式。
– 在算术表达式中,如果操作数具有不同的数据精度,
则 Visual Basic规定运算结果的数据类型以精度高的数据类型为准。即
Integer < Long < Single < Double < Currency
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.3 运算符和表达式
3.3.1 算术运算符与数值表达式
3.3.2 关系运算与逻辑运算
3.3.3 字符串运算符
3.3.4 表达式的运算顺序
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.3.2 关系运算与逻辑运算
关系运算符
– 关系运算符用作两个数值或字符串的比较,返回值是逻辑值 True或 False。表 3.5列出了
Visual Basic中的关系运算符及使用示例。
– 关系运算符都是双目运算,是用来比较两个运算量之间的关系,关系表达式的运算结果为逻辑量。若关系成立,结果为 True,否则,结果为 False。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.3.2 关系运算与逻辑运算
关系运算符
– 关系运算符用作两个数值或字符串的比较,返回值是逻辑值 True或 False。表 3.5列出了
Visual Basic中的关系运算符及使用示例。
– 关系运算符都是双目运算,是用来比较两个运算量之间的关系,关系表达式的运算结果为逻辑量。若关系成立,结果为 True,否则,结果为 False。
– 关系运算符有,>(大于),>=(大于等于)、
<(小于),<=(小于等于),=(等于)、
<>(不等于)。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.3.2 关系运算与逻辑运算
逻辑运算符
– 逻辑运算符是对操作数进行逻辑运算,运行的结果为逻辑型数据。当逻辑关系成立时,运算结果为 True;当逻辑关系不成立时,运算结果为 False。除 Not外都是对两个逻辑量运算。结果为逻辑值。
– 如表 3.6列出了 Visual Basic中的逻辑运算符,
– 表 3.7 列出了逻辑运算的真值表。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.3.2 关系运算与逻辑运算
关系表达式和逻辑表达式
– 当使用关系运算符或逻辑运算符时,表达式又称为关系表达式或逻辑表达式。
– 关系运算一般表示一个简单的条件。
– 逻辑表达式表示较复杂的条件。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.3 运算符和表达式
3.3.1 算术运算符与数值表达式
3.3.2 关系运算与逻辑运算
3.3.3 字符串运算符
3.3.4 表达式的运算顺序
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.3.3 字符串运算符
字符串运算符有:
– &,+。功能是字符串连接。
– 当连接符两旁的操作量都为字符串时,上述两个连接符等价。它们区别是:
+(连接运算):两个操作数均应为字符串类型;
&(连接运算):两个操作数既可为字符型也可为数值型,当是数值型时,系统自动先将其转换为数字字符型,然后进行连接操作。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.3 运算符和表达式
3.3.1 算术运算符与数值表达式
3.3.2 关系运算与逻辑运算
3.3.3 字符串运算符
3.3.4 表达式的运算顺序
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.3.4 表达式的运算顺序
表达式由常量、变量、函数、运算符以及圆括号 ( ),按照一定的规则组成,不管表达式的形式如何,都会计算出一个结果,该结果的类型由参与运算的数据和运算符决定。
在表达式中经常会出现不同类型数据混合运算的情形。此时,需要按一定的规则进行类型转换。转换的方法有两种:
系统自动转换;使用转换函数转换。
当表达式中有多个运算符时,此时表达式要按运算符的优先级来进行运算。
在 Visual Basic的表达式中,运算按照括号、函数、算术运算、字符串运算、关系运算、逻辑运算的顺序进行。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.3.4 表达式的运算顺序
表达式的书写规则
– 表达式中的每个字符没有高低、大小的区别。
– 只能使用圆括号,可以多重使用,圆括号必须成对出现。
– Visual Basic表达式中的乘号,*”不能省略。
– 能用内部函数的地方尽量使用内部函数。
– 运算符不能相邻。例 a+-b是错误的。
– 表达式从左到右在同一基准并排书写,不能出现上下标。
– 要注意各种运算符的优先级别,为保持运算顺序,在写 Visual Basic表达式时需要适当添加括号 ( ),若用到库函数必须按库函数要求书写。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.3.4 表达式的运算顺序
表达式中出现了多种不同类型的运算符时,其运算符优先级如下:
算术运算符 >= 字符运算符 >= 关系运算符 >= 逻辑运算符
– 说明:
当一个表达式中出现多种运算符时,首先进行算术运算符,接着处理字符串连接运算符,然后处理比较运算符,最后处理逻辑运算符,在各类运算中再按照相应的优先次序进行。
可以用括号改变优先顺序,强令表达式的某些部分优先运行。
括号内的运算总是优先于括号外的运算。对于多重括号,总是由内到外。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社第 3章 Visual Basic程序设计基础
3.1 数据类型
3.2 常量和变量
3.3 运算符和表达式
3.4 常用内部函数
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.4 常用内部函数
3.4.1 转换函数
3.4.2 数学函数
3.4.3 日期和时间函数
3.4.4 字符串函数
3.4.5 随机函数
3.4.6 Shell函数
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.4.1 转换函数
转换函数用于各种类型数据之间的转换。
– 常用的转换函数如下表所示:
函数名 说 明 例 结 果
Asc(C) 字符转换成 ASCII码值 Asc("A") 65
Chr$(N) ASCII码值转换成字符 Chr$(65) "A"
Fix(N) 取整 Fix(-3.5) -3
Int(N) 正数取整同 Fix,负数取整结果为不大于 N的最大整数 Int( -3.5)Int( 3.5) -43
Oct[$](N) 十进制数转换成八进制数 Oct$(100) "144"
Hex[$](N) 十进制数转换成十六进制数 Hex(100) 64
Lcase$(C) 大写字母转换成小写字母 Lcase$( "ABC") "abc"
Ucase$(C) 小写字母转换成大写字母 Ucase$( "abc") "ABC"
Str$(N) 数值数据转换为字符串 Str$(123.45) "123.45"
Val(C) 数字字符串转换为数值数据 Val( "123AB") 123
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.4 常用内部函数
3.4.1 转换函数
3.4.2 数学函数
3.4.3 日期和时间函数
3.4.4 字符串函数
3.4.5 随机函数
3.4.6 Shell函数
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.4.2 数学函数
常用数学函数有三角函数、算术平方根函数、对数函数、指数函数及绝对值函数等。
– 常用的数学函数如下表所示函数名 说 明 例 结 果
Abs(N) 取绝对值 Abs(-3.5) 3.5
Atn(N) 取反正切函数 Atn(0) 0
Cos(N) 取余弦函数 Cos(0) 1
Exp(N) e为底的指数函数,即 eN Exp(3) 20.086
Log(N) 以 e为底的自然对数 Log(10) 2.3026
Rnd[(N)] 产生随机数 Rnd 0~ 1之间的随机数
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.4.2 数学函数
常用数学函数有三角函数、算术平方根函数、对数函数、指数函数及绝对值函数等。
– 常用的数学函数如下表所示函数名 说 明 例 结 果
Sin(N) 取正弦函数 Sin(0) 0
Sgn(N) 符号函数 Sgn(-3.5) -1
Sqr(N) 平方根 Sqr( 9) 3
Tan( N) 正切函数 Tan( 0) 0
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.4 常用内部函数
3.4.1 转换函数
3.4.2 数学函数
3.4.3 日期和时间函数
3.4.4 字符串函数
3.4.5 随机函数
3.4.6 Shell函数
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.4.3 日期和时间函数
日期与时间函数提供时间和日期信息。缺省日期格式为:,mm/dd/yy”,时间格式:,hh:mm:ss”。
– 常用的日期时间函数函数名 说 明 例 结 果
Time[$][()] 返回系统时间 Time 11:26:53 AM
Date[$][()] 返回系统日期 Date$() "2003-05-05"
Now 返回系统日期和时间 Now 98/05/0111:26:53AM
DateValue(C) 同上,但自变量为字符串 DateValue("97,05,01")DateValue("97,04,01") 30
Day(C|N) 返回日期代号( 1~ 31) Day( "97,05,01") 1
Month(C|N) 返回月份代号( 1~ 12) Month( "97,05,01") 5
Year(C|N) 返回年代号( 1753~ 2078) Year(365)相对于 1899,12,30为 0天后 365天的年代号 1900
WeekDay(C|N) 返回星期代号( 1~ 7),星期日为 1,星期一为 2 WeekDay("97,05,01") 5即星期四
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.4 常用内部函数
3.4.1 转换函数
3.4.2 数学函数
3.4.3 日期和时间函数
3.4.4 字符串函数
3.4.5 随机函数
3.4.6 Shell函数
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.4.4 字符串函数
Visual Basic具有很强的字符串处理能力。
函数名 说 明 例 结 果
InStr([N1]C1,C2[M])
在 C1中从 N1开始找 C2,省略
N1从头开始找,找不到为 0
InStr(2,"ABCDEFG","EF") 7
Left$(C,N) 取出字符串左边 n个字符 Left$("ABCDEFG",3) "ABC"
Len(C) 字符串长度 Len("ABCDEFG") 7
Ltrim$(C) 取掉字符串左边空格 Ltrim$("□□□ ABCD") "ABCD"
Mid$( C,N1,N2) 自字符串 N1位置开始,向右取 N2个字符 Mid$("ABCDEFG",2,3) "BCD"
Right$(C,N) 取出字符串右边 n个字符 Right$("ABCDEF",3) "DEF"
Rtrim$(C) 取掉字符串右边空格 Rtrim$("ABCD□□□ ") "ABCD"
Space$(N) 产生 N个空格的字符串 Space$(3) "□□□ "
String$(N,C) 返回由 C中首字符组成的N个字符串 String$(3,"ABCDEFG") "AAA"
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.4 常用内部函数
3.4.1 转换函数
3.4.2 数学函数
3.4.3 日期和时间函数
3.4.4 字符串函数
3.4.5 随机函数
3.4.6 Shell函数
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.4.5 随机函数
格式,Rnd(n)
功能:在区间( 0,1)内随机产生一个浮点数。
– 说明,n为数值类型的参数,函数返回值为数值型数据。要先使用语句 Randomize(timer)初始化随机数发生器,当 n>0时,每次产生的随机数都不同;当 n=0时,每次产生的随机数都与上次的相同;当 n<0时,每次产生的随机数都相同。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.4 常用内部函数
3.4.1 转换函数
3.4.2 数学函数
3.4.3 日期和时间函数
3.4.4 字符串函数
3.4.5 随机函数
3.4.6 Shell函数
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社
3.4.6 Shell函数
在 Visual Basic中不但可以调用内部函数,
还可以调用各种应用程序。也就是说,凡是能在 DOS下或 Windows运行的应用程序,
都可以在 Visual Basic中调用。
Shell函数的格式如下:
Shell( 命令字符串,窗口类型 )
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社学完本章你应能够:
正确使用 Visual Basic的各种类型的常量和变量;
掌握声明变量类型的各种方法及 Option语句的使用;
掌握 Visual Basic的各种运算符及表达式;
掌握 Visual Basic常用的内部函数。
Vis
ua
l B
as
ic
P
ro
gr
am
mi
ng
中国科学技术出版社思 考 题
1,Visual Basic提供了哪些标准数据类型?声明类型时,其类型关键字分别是什么?其类型符又是什么?
2,哪些类型的数据可以实行,+”运算?
3,什么是符号常量?使用符号常量有什么好处?
4,用户自定义数据类型的名称与自定义变量名有何区别?
5,什么是运算符的优先级?什么是函数及函数的参数?
6,将数字字符串转换成数值,用什么函数?判断是否是数字字符串,用什么函数?取字符串中的某几个字符,用什么函数?