3.1 数据类型
DESCRIPTION
第三章 VB 语言基础. 3.1 数据类型. 3.2 变量与常量. 3.3 运算符和表达式. 3.4 程序结构和编码规则. 3.5 综合应用. 3.1 数据类型. 表 3-1 Visual Basic 的标准数据类型. 1 .数值型数据( Numeric ). 2 .日期型数据( Date ). 3.1.1 基本数据类型. 3 .逻辑型数据( Boolean ). 4 .字符型数据( String ). 5 .对象( Object )类型的数据. 6 .变体( Variant )数据类型. - PowerPoint PPT PresentationTRANSCRIPT
3.1 数据类型
3.2 变量与常量
3.3 运算符和表达式
3.4 程序结构和编码规则
第三章 VB 语言基础
3.5 综合应用
3.1 数据类型
表 3-1 Visual Basic 的标准数据类型
数据类型 关键字 类型符 占字节数 范 围
字节型 Byte 无 1 0~255
逻辑型 Boolean 无 2 True 与 False整型 Integer % 2 -32768~32767
长整型 Long & 4 -2147483648~2147483647
单精度型 Single ! 4 -3.4*1038~3.4*1038 精度 7 位
双精度型 Double # 8 -1.7*10308~1.7*10308 精度 15 位
货币型 Currency @ 8 -296-1~296-1 ,精度 28 位
日期型 Date(time) 无 8 01,01,100~12,31,9999
字符型 String $ 与字符串长度有关
0~65535 个字符
对象型 Objiect 无 4 任何对象引用变体型 Variant 无 根据分配确定
3.1.1 基本数据类型
1 .数值型数据( Numeric )
2 .日期型数据( Date )
3 .逻辑型数据( Boolean )
4 .字符型数据( String )
5 .对象( Object )类型的数据
6 .变体( Variant )数据类型
1 .数值数据类型( Numeric ) 数值型数据一般分为整型数和浮点数两类。整型数分为整数( Integer )和长整数( Long ),浮点数分为单精度浮点数( Single )和双精度浮点数( Double )。有时也把货币型数据( Currency )和字节型数据( Byte )划归数值型数据。
1 )整数( Integer )整数是不带小数点和指数符号的数,在机器内部以 2
字节二进制码形式表示。 VB 中用 ±n[%] 来表示整数,其中% 为整数的类型符,可以省略。如 -123% 、 123% 都表示整数。
2 )长整数( Long )整数的最大值为 32767 ,大于此数,程序运行时就会因为
溢出产生中断。此时可使用长整数。长整数用 4 字节二进制数存储,可以表示更大的整数,其取
值范围为 -2147483648~2147483647 。 VB 中用 ±n& 来表示长整数,其中 & 为长整数的类型符。如 -1234& 、 987654& 都表示长整数。
3 )浮点数浮点数也称为实型数或实数,由符号、指数和尾数组成,分
单精度浮点数( Single )和双精度浮点数( Double ),其指数部分分别用“ E” (或“ e” )和“ D” (或“ d” )表示。
4 )货币型( Currency )货币型属于定点实数或整数,用 8 位字节存储小数点前有 1
5 位,小数点后有 4 位,其余的数字被舍去,其表示形式为在数字后加上“ @” 。
5 )字节型( Byte )
字节型数据用 1 个字节的无符号二进制数存储,取值范围为 0——255 。
2. 字符型数据( String )• 字符型数据是指一切可打印的字符和字符串,它是用双引号括起来的一串字符。• 一个西文字符占一个字节,一个汉字或全角字符占两个字节。在 VB 中有两种类型字符串:变长( String )和定长 (String * n) 字符串。字符串长度 :0~231 个字符
注意:① 空字符串用 "" 表示,而“ " 则表示空格;② 在字符串中必须用两个连续的双引号来表示字符串有一个
双引号。如字符串: abc" 计算机 "abc ,在 VB 中表示为 "abc"" 计算机 ""abc" 。
3. 逻辑型数据( Boolean )又称布尔型,只有 True 和 False 两个值。在计算机内存中占 2 字节,经常用来表示逻辑判断的结果。
当把数值型数据转换为逻辑型数据时, 0 会转换为 Flase ,其它非 0 值转换为 True 。
反之,当把逻辑型数据转换为数值型时, Flase转换为 0 , True 转换为 -1 。
4. 日期型数据( Date )
日期型数据按 8 字节的浮点数来存储,表示的日期从公元 100 年 1 月 1 日 ~9999 年 12 月 31 日,时间范围为 0:00:00~23:59:59 。任何在字面上可以被认作日期的文本都可以赋值给日期变量,且日期文字必须用符号“ #” 括起来,如 #January 15,2012# , #1985-10-1 9:45:00 PM# 都是合法的日期型数据。
5. 对象( Object )类型的数据对象类型的数据( 4 字节)可以引用应用程序中的对象,
主要以变量形式存在。利用 Set 语句,声明为 Object 的变量可以被赋值并被任何对象所引用。
6. 变体( Variant )数据类型
Variant 数据类型是 VB 对所有未定义的变量的缺省数据类型的定义,又称为万用数据类型。变体数据类型对数据的处理完全取决于上下文需要。变体型包括数值型、日期型、对象型、字符型等数据类型。通过VarType函数可以检测 Variant 型变量中保存的具体的数据类型。
3.2 变量与常量
将存放数据的内存单元命名,该内存单元称为变量,其名字就是变量名。变量——程序运行过程中其值可以改变的量。(而常量值不变)。
3.2.1 变量
1. 命名规则① 必须以字母或汉字开头,由字母、数字和下划
线组成,长度不得超过 255 个字符。② 不得使用 VB 中的关键字。③ 不区分大小写。(建议:变量首字母一般大写,
其余用小写。常量全部用大写字母。)
( 1 )用 Dim 语句显式声明变量语法为: Dim 变量名 [As 类型 ]
类型:缺省时表示变体类型,可用类型说明符代替。① 例如: Dim a As Integer 等价于 Dim a%
Dim b As Single 等价于 Dim b!② Dim a,b,c as integer—— 只有 c 是整型, a,b 为
变体型。③ 变量的默认初值 : 数值型 (0)④ string("“),Boolean(False),Date(0/0/0)⑤ 定长字符串: Dim S as String*10 ,多截少补
(右侧空格)。⑥ 其他声明方式: Static 、 Public 、 Private
2. 2. 变量声明变量声明
( 2 )隐式声明 VB 允许对变量不加声明而直接使用,称为隐式声明。此
时变量类型为变体类型。 但是这样做可能由于变量名的误写而产生不良后果。例如:
Dim x%,y! x=100 y=x/n
对初学者,建议对变量显式声明;或在通用声明段使用”Option Explicit” 强制显式声明
3.2.2 常量
常量——程序运行过程中其值不变的量。 VB 三种常量:直接常量、用户声明的符号常量、系统提供的常量。
1 .直接常量各种类型的常数,其值反映其类型,也可在常数值后紧跟类型符说明其数据类型。例如: 123 、 123& 、 123.45 、 1.234E2 、 123D3 、 &O123 、 &H123 。八进制常数:前缀—— &O ,如: &O123十六进制常数:前缀—— &H ,如: &H123
2. 用户定义的符号常量 用户可以使用 Const 语句来定义常量:
Const 符号常量名 [As 类型 ] = 表达式 符号常量名:命名规则同变量; 表达式:由数值常量、字符串常量以及运算符所组成。
常量一旦声明,其后代码中不能改变其值。– 例如:Const Pi=3.14159Const N as interger=10Const M!=99.9
3. 系统提供的常量 内部或系统定义的常量是 VB 和控件提供的。这些常
量可与应用程序的对象、方法和属性一起使用,在代码中可以直接使用它们。
例如:– WindowState 的值 0 、 1 、 2 对应的常量为: vbNormal 、
vbMinimized 、 vbMaximized 。– 颜色常量: vbred 、 vbgreen 、 vbblue……
3.3 运算符和表达式
3.3.1 运算符(四类)
1 .算术运算符
2 .字符串运算符
3 .关系运算符
4 .逻辑运算符
1. 算术运算符
用于数学计算,有 8 个(其中减号运算符和取负运算符形式相同),其中只有取负“-”是单目运算符,其它均为双目运算符。下表按照优先级别的高低列出了算术运算符。
算术运算符
运算符 名称 优先级 示例 结果
^ 乘方 1 3^2 9
- 负号 2 -2 -2
* 乘 3 2*5 10
/ 除 3 4/5 .8
\ 整除 4 4\5 0
Mod 取模 5 5 Mod 4 1
+ 加 6 2+3 5
- 减 6 4.5-2.4 2.1
2. 字符串运算符字符串运算符有“ &” 和“ +” 两个,如表所示
字符串运算符
运算符 说明 示例 结果& 连接字符串 "Micro" & "soft" "Microsoft"
+ 求和,或连接字符串 "123"+"456" "123456"
3.关系运算符关系运算符属于双目运算符,用来对两个表达式的值进行
比较,比较的结果为逻辑值,即若关系成立则返回 True ,否则返回 False 。在 VB 中,分别用 -1 和 0 表示 True 和 False 。表3-3列出了 VB 中的关系运算符。
表 3-3 关系运算符
关系运算符 含 义 实 例 结 果
= 等于 "abc"="ABC" False
> 大于 "abc">" ABC " True
>= 大于等于 "abc">=" 甲乙丙 " False
< 小于 2<3 True
<= 小于等于 "12"<="3" True
<> 不等于 "abc"<>"ABC" True
Like 字符串匹配 "ABCDE" Like "*CD*" True
Is 比较
4. 逻辑运算符逻辑运算符的作用是将操作数进行逻辑运算,结果是逻辑值
True 或 False 。逻辑运算符中,除 Not 为单目运算符外,其他都为双目运算符。
表 3-4 逻辑运算符
逻辑运算符 含 义 优先级 说 明 实例 结 果
Not 取反 1 当操作数为假时,结果为真 Not TNot F
TF
And 与 2 两个操作数都为真时,结果为真T And TF And FT And FF And T
TFFF
Or 或 3 两个操作数之一为真时,结果为真T Or TF Or FT Or FF Or T
TTTF
Xor 异或 3两个操作数为一真一假时,结果为真,否则为假
T Xor TF Xor F
TF
3.3.2 表达式1.表达式的组成
2 .表达式的书写规则
表达式由变量、常量、运算符、函数和圆括号按一定的规则组成,表达式的运算结果的类型由参与运算的数据类型和运算符共同决定。
根据表达式中运算符的类别可以将表达式分为算术表达式、字符串表达式、日期表达式、关系表达式和逻辑表达式等。
① 乘号( * )不能省略。② 只能使用小括号(),且必须配对。③ 表达式从左到右在同一基准上书写,无高低、大小之分。④ 不能出现非法的字符,如 π。
3 .不同数据类型的转换
4 .优先级
如果表达式中操作数具有不同的数据精度,则将较低精度转换为操作数中精度最高的数据精度,即按 Integer<Long<Singl
e<Double<Currency 的顺序转换,且 Long 型数据和 Single 型数据进行运算时,结果总是 Double 型数据。
当表达式中存在多种运算符共存时,按如下优先级的先后进行运算:
算术运算符 > 字符运算符 > 关系运算符 > 逻辑运算符
例: Age 小于 19 , Total高于 285 , Mark1~Mark3 中有一门是 100 。分析下列表达式:
Age<19 And Total>285 And Mark1=100 or Mark2=100 Or Mark3=100
3.4 常用内部函数
3. 字符串函数
2. 转换函数
1. 数学函数
4. 日期和时间函数
5. 格式输出函数
6. Shell函数
1. 数学函数
常用数学函数
函数名 含义 实例 结果Sin 弧度的正弦 Sin(0) 0
Cos 弧度的余弦 Cos(0) 1
Tan 弧度的正切 Tan(0) 0
Abs 取绝对值 Abs(-2.4) 2.4
Exp e 为底的指数函数,即 ex Exp(1) 2.71828182845905
Log e 为底的自然对数 Log(1) 0
Rnd 小于 1且大于等于 0 的随机数 Rnd 0~1之间的数Sgn 符号函数 Sgn(-100) -1
Sqr 平方根 Sqr(16) 4
2. 转换函数 Asc()函数 : 一个字符串首字符的 ASCⅡ码值。 Chr()函数: ASCⅡ码值转换成字符 。 Val()函数:数字字符串转换为数值。 Str()函数:数值转换为字符串。 Hex()函数 :十进制转换成十六进制。 Oct()函数:十进制转换成八进制值。 Int()函数:不大于给定数的最大整数,如: Int(3.6) 结果为 3 。 Fix()函数:取整。如: Fix(-3.6)结果为 -3 。 Round()函数:四舍五入取整。 Lcase()函数:大写转小写。 Ucase()函数:小些转大写。
在立即窗口中操作
Chr()函数: ASCⅡ码值转换成字符 :? Chr(65)
A
Val()函数:数字字符串转换为数值:? Val("1234")+ Val("4321")
5555
例题 2.9
txtResult.Text = Val(txtAdd1.Text) + Val(txtAdd2.Text)
Hex()函数 :十进制转换成十六进制: 256
3. 字符串函数函 数 说 明 实例 结果
Ltrim$(C) 返回删除字符串左端空格后的字符串
LTrim$("MyName") "MyName"
Rtrim$(C) 返回删除字符串右端空格后的字符串
RTrim$("MyName") "MyName"
Trim(C) 返回删除字符串前导和尾随空格后的字符串
Trim$("MyName") "MyName"
Left(C,N) 返回从字符串左边开始的指定数目的字符
Left$("MyName",2) "My"
Right(C,N) 返回从字符串右端开始的指定数目的字符
Right$("MyName",4) "Name"
Mid(C,N1[,N2]) 返回从字符串指定位置开始的指定数目的字符
Mid $("MyName",2,3) "yNa"
Len(C) 返回字符串的长度 Len("MyName=王青 ") 9
LenB(C) 返回字符串所占字节数 LenB("MyName=王青 ") 6
Instr([N1,]C1,C2[,M]) 返回字符串在给定的字符串中出现的开始位置
InStr(7,"ASDFDFDFSDSF", "DF")
7
常用字符串函数
Space(N) 返回由指定数目空格字符组成的字符串
Space$(5) ""
String(N,C) 返回包含一个字符重复指定次数的字符串
String$(2, "ABCD") "AA"
表(续)常用字符串函数
4. 日期和时间函数
函 数 说 明 实例 结果Date[( )] 返回当前日期 (yy-mm-dd ) Date$() 2012-5-21
Day(C|N) 返回月中第几天 (1~31) Day(" 2012-5-21 ")
21
Month(C|N) 返回一年中的某月 (1~12) Month(" 2012-5-21 ")
5
Year(C|N) 返回年份 (yyyy) Year(" 2012-5-21 ")
2012
Time[( )] 返回当前时间( hh:mm:ss ) Time 14:35:35( 由系统决定 )
Now 返回系统日期和时间 Now 2012-5-21 14:11:14
常用日期函数
3.4.5 格式输出函数( Format )
Format(< 表达式 > , < 格式字符串 >)
Private Sub Form_Click() Print Format(2.71828,”#####.##” End Sub
3.4.6 Shell()函数 Shell()函数的作用是在 VB 中调用一个可执行文件,返回一个 Variant
( Double ),如果成功调用的话,该值代表这个程序的任务标识 ID ,若不成功,则会返回 0 。
Shell函数的格式为:
Shell ( pathname[,windowstyle] )
– pathname :要执行的程序名(带路径,可执行文件)– windowstyle : 0~4 、 6 ,一般取 1 。
例如:– J=shell(“c:\Program Files\Microsoft Visual Studio\VB98\VB6.exe”,1)– J=shell(“notepad.exe”,1)
3.5 vb 程序结构和编码规则编程序如同写文章,有它的书写规则,初学者应严格遵循,否则会出现编译错误。
1. 程序结构通用声明
过程块,不分先后
2. 编码规则( 1 ) VB 代码不区分字符的大小写
– 关键字会自动转换为大写字母开头,后续字母为小写。– 自定义的变量、过程名等,以第一次定义为准,其后的输入自动转换。
( 2 )书写自由– 一行可以书写多条语句,各语句之间用冒号” :” 分隔– 一行书写不完的语句,可以在该行后加上续行符(由空格 +下划线 _组成),然
后换行书写。– 一般一行写一条语句,一行最多 255 个字符,一条语句最多 1023 个字符。
( 3 )注释行以 Rem 或撇号“‘”开头– 只有用撇号引导的注释可以出现在语句之后。– 可使用“编辑”工具栏中的“设置注释块”命令将选定的若干行语句或文字设置
为注释项,也可以使用“解除注释块”命令将选定的若干行解除注释。
3.5 综合应用例 3.1 字符串替换。 掌握三个函数的运用: Instr 、 Replace 和 Shell 方法一、利用 Instr函数:
– i=instr(text1,text2)– k=i+len(text2)– ls=left(text1,i-1)– text4=ls+text3+mid(text1,k)
方法二、利用 Replace函数: text4=replace(text1,text2,text3) 方法三、利用 Shell函数调用 word : i = Shell("c:\program files\mic
rosoft office\office10\winword.exe", 1)
习题三 课堂练习 3. 写出 vb 表达式
( 1 ) abs(x+y)+z^5 ( 3 ) 10*x+sqr(3*y) ( 5 ) 1/(1/r1+1/r2+1/r3)
4. 写出 vb 表达式( 1 ) chr(int(67+rnd*10))( 3 ) (x>0 and y>0) or (x<0 and y<0)( 5 ) (x mod 10)*10+x\10( 7 ) C>=”A” and C=<“Z” or C>=”a” and C=<“z” ( 9 ) x>=10 and x<20( 11 ) x>z and y>z
The end