第三章 数据类型、常量、变量及表达式本章内容及要求:
1 熟悉 VB程序中代码和语句书写规则;
2 掌握 VB的数据类型;
3 掌握 VB的 运算符和表达式的使用;
4 掌握常用内部函数的使用;
本章重点:
变量和常量的定义及使用,运算符和表达式的使用及常用内部函数的使用。
本章难点:
数据类型、内部函数。
3.1 VB语言字符集及编码规则一,VB的字符集
l 字母:大写英文字母 A—Z;小写英文字母 a—z。
l 数字,0一 9;
l 专用字符:共 27个,
二、编码规则与约定
( 一 ),编码规则
1,VB代码中不区分字母的大小写 。
2,在同一行上可以书写多条语句,但语句间要用冒号,,”
分隔 。
3,若一个语句行不能写下全部语句,或在特别需要时,可以换行 。 换行时需在本行后加入续行符,1个空格加下划线
,_”。
4.一行最多允许 255个字符。
5.注释以 Rem开头,也可以使用单引号,'”,注释内容可直接出现在语句的后面。
6.在程序转向时需用到标号,标号是以字母开始而以冒号结束的字符串。
( 二 ),约定
1.为了提高程序的可读性,对于 VB中的关键字其首字母大写,其余字母小写
2,注释有利于程序的维护和调试
Rem开始 或 单撇 ‘。
例如,’ This is a VB
REM This is a VB
在 6.0中新增了“块注释 /取消块注释”
3.通常不使用行号
4.对象名命名约定:每个对象的名字由 3个小写字母组成的前缀(指明对象的类型)和表示该对象作用的缩写字母组成 。
3.2 数据类型一,标准数据类型表 3.2
二、自定义类型在模块级别中使用,用于定义包含一个或多个元素的用户自定义的数据类型。
使用形式:
Type 自定义类型名元素名 [([下标 ])] As 类型名元素名 [([下标 ])] As 类型名
.,,
End Type
说明
Type Student
Xh As Sting
Xm As String
Xb As String
Nl As Integer
Score As Single
End Type
例如,对于一个学生的“学号”、“姓名”、“性别”、
“年龄”、“入学成绩”等数据,为了处理数据的方便,
常常需要把这些数据定义成一个新的数据类型(如 Student
类型)。
3.3 常量和变量
3.3.1 常 量在程序运行过程中,其值不能被改变的量称为常量。在
VB中有三类常量:
普通常量
符号常量
系统常量。
一、普通常量
1,整型常量
( 1)整型( Integer):表示 -32768至 32767之间的整数例如,10 110 20
( 2) 长整型 ( Long),
表示 -2,147,483,648至 2,147,483,647之间的整数例如:长整型常数的书写,23&
通常我们说的整型常量指的是十进制整数,但 VB中可以使用八进制和十六进制形式的整型常数,因此整型常数有如下三种形式:
1) 十进制整数 。 如 125,0,-89。 20
2) 八进制整数 。 以 &或 &O( 字母 O) 开头的整数是八进制整数,如 &O25表示八进制整数 25,即 (25)8,等于十进制数 21。
3)十六进制。以 &H开头的整数是十六进制整数,如
&H25表示十六进制整数 25,即 (25)16,等于十进制数 37。
VB中的颜色数据常常用十六进制整数表示。
2,实数
1) 单精度实型 ( Single),有效数为 7位表示 -3.37E+38至 3.37E+38之间的实数
2) 双精度实型 ( Double),有效数为 15位常量的表示:
1) 十进制小数形式 。 它是由正负号 ( +,-),数字
( 0~9) 和小数点 (,) 或类型符号 ( !,#) 组成,即 ± n.n,
± n! 或 ± n#,其中 n是 0~9的数字 。
例如 0.123,.123,123.0,123!,123#等都是十进制小数形式 。
2) 指数形式 。
± nE± m 或 ± n.nE± m,± nD± m 或 ± n.nD± m
例,1.25E+3 和 1.25D+3相当于 1250.0 或者 1.25× 103。
3,字符串常量在 VB中字符串常量是用双引号,"”括起的一串字符,例如 "ABC","abcdefg","123","0","VB程序设计 "等 。
说明:
( 1) 字符串中的字符可以是所有西文字符和汉字,标点符号等;
( 2) ""表示空字符串,而 " "表示有一个空格的字符串;
( 3) 若字符串中有双引号,例如 ABD"XYZ,则用连续两个双引号表示,即:
"ABD""XYZ“
4,逻辑 ( Boolean) 数据类型只有两个值 True,或 False。将逻辑数据转换成整型时:
True为 -1,False为 0;其它数据转换成逻辑数据时,非 0为
True,0为 False。
5,日期常量日期 ( Date) 型数据按 8字节的浮点数来存储,表示日期范围从公元 100年 1月 1日 ~9999年 12月 31日,而时间范围从
0:00:00~23:59:59。
一种在字面上可被认作日期和时间的字符,只要用号码符
“#”括起来,都可以作为日期型数值常量。
例,#09/02/99#,#January 4,1989#,#2002-5-4 14:30:00
PM#都是合法的日期型常量。
说明:当以数值表示日期数据时,整数部分代表日期,
而小数部分代表时间;例如 1表示 1899年 12月 31日。大于 1的整数表示该日期以后的日期,0和小于 0的整数表示该日期以前的日期。
二,符号常量在程序中,某个常量多次被使用,则可以使用一个符号来代替该常量,这样不仅在书写上方便,而且有效地改进了程序的可读性和可维护性。
VB中使用关键字 Const 声明符号常量 。 其格式如下:
Const 常量名 [As 类型 |类型符号 ]=常数表达式例如:
Const PI#=3.1415926535 等价于:
Const PI As Double=3.1415926535
三,系统常量
VB系统提供了应用程序和控件的系统定义常数。它们存放于系统的对象库中,在“对象浏览器”中的 Visual
Basic( VB) 和 Visual Basic for applications( VBA)对象库中列举了 Visual Basic 的常数例如,要将文本框 Text1的前景颜色设置为红色,可以使用下面的语句:
Text1.ForeColor=vbRed
这里的 vbRed就是系统常量。这比直接使用 16进制数来设置要直观得多。
又如,窗口状态属性 WindowsState可取 0,1,2三个值,对应三种不同状态 ( 参见第二章表 2-2所示 ) 。
在程序中使用语句 Myform.WindowsState=vbMaxmized,
将窗口极大化,显然要比使用语句 Myform.WindowsState=2
易于阅读和理解。
一,变量和常量的命名规则
1,以字母或汉字开头,后可跟字母、数字或下划线组成,
长度小于等于 40个字符;
2,不能使用 VB中的关键字;
3,VB中不区分变量名的大小写,
4,为了增加程序的可读性,可在变量名前加一个缩写的前缀来表明该变量的数据类型。
例如,strAbc,( 字符串变量) iCount,(整型变量)
dblx,(双精度变量) sYz (单精度变量)
3.3.2 变 量二,变量声明
1.用 Dim语句显式声明变量形式,Dim 变量名 [AS 类型 ]
Dim 变量名 [类型符 ]
例 Dim iCount As integer,sum As single
等价于 Dim iCount%,sum!
2.隐式声明
Visual Basic允许用户在编写应用程序时,不声明变量而直接使用,系统临时为新变量分配存储空间并使用,
这就是隐式声明。所有隐式声明的变量都是 Variant数据类型。 Visual Basic根据程序中赋予变量的值来自动调整变量的类型。
例如:
下面是一个很简单的程序,其使用的变量 a,b,Sum都没有事先定义 。
Private Sub Form_Click()
Sum = 0
a = 10,b = 20
Sum = a + b
Print "Sum="; Sum
End Sub
3,强制显式声明 ——Option Explicit语句良好的编程习惯都应该是,先声明变量,后使用变量,,
这样做可以提高程序的效率,同时也使程序易于调试 。
Visual Basic 中可以强制显式声明,可以在窗体模块,标准模块和类模块的通用声明段中加入语句,Option Explicit
3.4 运算符和表达式一,运 算符
1,算术运算符 (均是双目运算,ia=3)
例,5+10 mod 10 \ 9 / 3 +2 ^2 结果是,10
2,字符串运算符与字符串表达式字符串运算符有,&,+ 。 功能是字符串连接例如:
"ABCD" + "EFGHI" ' 结果为,ABCDEFGHI
,VB,&,程序设计教程,' 结果为,VB程序设计教程说明:当连接符两旁的操作量都为字符串时,上述两个连接符等价。它们区别是:
+(连接运算),两个操作数均应为字符串类型;
&(连接运算),两个操作数既可为字符型也可为数值型,
当是数值型时,系统自动先将其转换为数字字符,然后进行连接操作。
例:
"100" + 123 ' 结果为 223
"100" + "123" ' 结果为 100123
" Abc" + "123" ' 出错
" 100" & 123 ' 结果为 100123
100 & 123 ' 结果为 100123
" Abc" & "123" ' 结果为 Abc123
" Abc" & 123 ' 结果为 Abc123
注意:使用运算符,&”时,变量与运算符,&”之间应加一个空格。这是因为符号,&”还是长整型的类型定义符,
如果变量与符号,&”接在一起,VB系统先把它作为类型定义符处理,因而就会出现语法错误。
3.4.3 关系运算符与关系表达式关系运算符都是双目运算,是用来比较两个运算量之间的关系,关系表达式的运算结果为逻辑量。若关系成立,结果为 True,若关系不成立,结果为 False。
VB中的关系运算符如下表所示。
运算符 含义 优先级 实例 结果
< 小于 所有关系运算优先级相同。
低于算术运算的加,+”,减
,-”运算,高于逻辑非
,Not”运算。
15+10<20 False
<= 小于或等于 10<=20 True
> 大于 10>20 False
>= 大于或等于 "This">= "That" True
= 等于 "This"= "That" False
<> 不等于 "This"<> "That" True
Like 字符串匹配 "This" Like "*is" True
Is 对象比较关系运算的规则如下:
( 1)当两个操作式均为数值型,按数值大小比较。
( 2)字符串比较,则按字符的 ASCII码值从左到右一一比较,
直到出现不同的字符为止,。
例," ABCDE " > " ABRA " 结果为 False
( 3) 数值型与可转换为数值型的数据比较,
如,29>"189",按数值比较,结果为 False。
( 4) 数值型与不能转换成数值型的字符型比较,
如,77>" sdcd",不能比较,系统出错 。
( 5),Like”运算符是 VB6.0新增加的 。
其使用格式为,str1 Like str2
3.4.4 逻辑运算符与逻辑表达式
Not 逻辑非为单目运算符(要求一个操作数),其它为双目运算符。
条件表达式 1 And 条件表达式 2 条件表达式均为 T 结果为 T
条件表达式 1 Or 条件表达式 2 条件表达式有一个 T 结果为 T
说明:
( 1) 逻辑运算符的优先级不相同,Not( 逻辑非 ) 最高,
但它低于关系运算,Imp( 逻辑蕴含 ) 最低 。
( 2) VB中常用的逻辑运算符是 Not,And和 Or。 它们用于将多个关系表达式进行逻辑判断 。
例如,数学上表示某个数在某个区域时用表达式:
10≤X<20,用 VB程序中应写成:
X>=10 And X<20
( 3) 参与逻辑运算的量一般都应是逻辑型数据,如果参与逻辑运算的两操作数是数值量,则以数值的二进制值逐位进行逻辑运算 ( 0当 False,1当 True) 。
关系表达式与逻辑表达式常常用在条件语句与循环语句中,作为条件控制程序的流程走向 。
4.4.5 日期型表达式日期型数据是一种特殊的数值型数据,只能有下面 3种情况:
1,一个日期型数据可以相减,DateB-DateA
结果是一个数值型整数 (两个日期相差的天数 )。
例如,#05/08/2002# - #05/01/2002# 其结果为数值,7
2,一个日期型数据 ( DateA) 与一数值数据 ( N) 可作加法运算,DateA+N
其结果仍是一个日期型数据 。
例如,#05/01/2002# +7 其结果为日期型数据,#05/08/2002#
3,一个日期型数据 ( DateA) 与一数值数据 ( N) 可作减法运算,DateA-N
其结果仍是一个日期型数据 。
例如,#05/08/2002# - 7
其结果为日期型数据,#05/01/2002#
3.4.6 运算符的执行顺序表达式中出现了多种不同类型的运算符时,其运算符优先级如下:
算术运算符 >=字符运算符 >关系运算符 >逻辑运算说明:
1,当一个表达式中出现多种运算符时,首先进行算术运算符,接着处理字符串连接运算符,然后处理比较运算符,
最后处理逻辑运算符,在各类运算中再按照相应的优先次序进行 。
2.可以用括号改变优先顺序,强令表达式的某些部分优先运行。括号内的运算总是优先于括号外的运算。对于多重括号,总是由内到外。
3,表达式的书写中需注意的问题
( 1)运算符不能相邻。例 a+-b是错误的。
( 2)乘号不能省略。例 x 乘以 y 应写成,x*y
( 3)括号必须成对出现,均使用圆括号。
( 4)表达式从左到右在同一基准并排书写,不能出现上下标
( 5)要注意各种运算符的优先级别,为保持运算顺序,在写VB表达式时需要适当添加括号(),若用到库函数必须按库函要求书写 。 如:
(b-sqr(b*b-4*a*c))/(2*a)
(a+b)/(a-b)
a
acbb
2
42
ba
ba
VB提供了上百种内部函数(库函数),要求掌握这些常用函数的功能及使用。
调用方法:
函数名(参数列表) 有参函数函 数 名 无参函数说明:
( 1) 使用库函数要注意参数的个数及其参数的数据类型
( 2) 要注意函数的定义域(自变量或参数的取值范围)
例如,sqr(x) 要求,x>=0
( 3) 要注意函数的值域。
如,exp(23773) 的值就超出实数在计算机中的表示 范围。
3.5 常用内部函数
1,数学函数常用的数学函数见表 3-8所示
Abs(N) Cos(N) Sin(N) Exp(N)
Log(N) Sqr(N) Rnd[(N)] Sgn(N)
说明:
( 1) 在三角函数中的自变量是以弧度为单位。
如,sin300 sin(3.14159/180*30)
(2) Rnd函数返回 0 ~ 1(包括 0和不包括 1)之间的双精度随机数。
若要产生 1-100的随机整数,Int(Rnd *100)+1
提问:怎样产生 [N,M]区间的随机数?
2,转换函数常用的转换函数见表 3-9所示说明:
( 1)要区别两个取整函数 int()和 fix()
Fix(N)为截断取整,即去掉小数后的数。
Int(N)不大于 N的最大整数。
N>0与 int(N) 相同,当 N<0时,int(N) 与 fix(N) -1相等。
例如,Fix(9.59) =9,Int(9.59) =9
Fix(-9.59) =-9,Int(-9.59) =-10
思考:如何实现四舍五入取整?
( 2) Asc("Abcd") 值为,65 (只取首字母的 Ascii值)
( 3) Val("abc123") 值为,0,Val("1.2sa10") 值为 1.2
注意,Val( )函数只将最前面的数字字符转换为数值。
3,字符串操作函数常用的字符串函数见表 3-10
说明:
如果返回是字符型,则函数后有,$”字符。当然一般也可以不写,习惯都写上。
例如:
len("This is a book!") 15
Left$("ABCDEFG",3) "ABC"
Mid$("ABCDEFG",2,3) "BCD"
InStr(2,“ABCDEFGEF”,“EF”) 5(第一次出现的位置)
4,日期、时间函数常用的日期时间函数见表 3-11
掌握,Time( ) Date( ) Now
Yrar( ) Month( ) Day( )
5.格式输出函数使用格式
Format$(表达式 [,“格式字符串” ])
功能:按用户指定格式返回表达式,常常用在 print方法中。
使用形式,print Format$(表达式 [,“格式字符串” ])
表达式:可以是数值、日期或字符串型表达式。
格式字符串:表示输出表达式时采用的输出格式。不同数据类型所采用的格式字符串是不同的。
( 1)数值型数据格式化 (见表 3-12)
注意:对于符号,0与 #,当数值的实际位数比格式控制给定的位数多时,系统将按四舍五入返回给定的位数。
如,Format(3.14159,“###.###”),其值为 3.142
( 2)日期和时间型数据格式化 (见表 3-13)
缺省日期格式为,,mm/dd/yy”,时间格式:
,hh:mm:ss”
( 3)字符串类型数据格式化 (见表 3-14)
3.5.6 其它函数除上面常用的四类函数,VB中还有测试函数(见表 3-
15)、与文件操作有关的函数(见表 3-16)及其它函数
(见表 3-17)
本章小结:
作业: