3.1 数据类型

40
3.1 数数数数 3.2 数数数数数 3.3 数数数数数数数 3.4 数数数数数数数数数 数数数 VB 数数数数 3.5 数数数数

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 Presentation

Transcript of 3.1 数据类型

Page 1: 3.1   数据类型

3.1 数据类型

3.2 变量与常量

3.3 运算符和表达式

3.4 程序结构和编码规则

第三章 VB 语言基础

3.5  综合应用

Page 2: 3.1   数据类型

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 无 根据分配确定

Page 3: 3.1   数据类型

3.1.1 基本数据类型

1 .数值型数据( Numeric )

2 .日期型数据( Date )

3 .逻辑型数据( Boolean )

4 .字符型数据( String )

5 .对象( Object )类型的数据

6 .变体( Variant )数据类型

Page 4: 3.1   数据类型

1 .数值数据类型( Numeric ) 数值型数据一般分为整型数和浮点数两类。整型数分为整数( Integer )和长整数( Long ),浮点数分为单精度浮点数( Single )和双精度浮点数( Double )。有时也把货币型数据( Currency )和字节型数据( Byte )划归数值型数据。

1 )整数( Integer )整数是不带小数点和指数符号的数,在机器内部以 2

字节二进制码形式表示。 VB 中用 ±n[%] 来表示整数,其中% 为整数的类型符,可以省略。如 -123% 、 123% 都表示整数。

Page 5: 3.1   数据类型

2 )长整数( Long )整数的最大值为 32767 ,大于此数,程序运行时就会因为

溢出产生中断。此时可使用长整数。长整数用 4 字节二进制数存储,可以表示更大的整数,其取

值范围为 -2147483648~2147483647 。 VB 中用 ±n& 来表示长整数,其中 & 为长整数的类型符。如 -1234& 、 987654& 都表示长整数。

3 )浮点数浮点数也称为实型数或实数,由符号、指数和尾数组成,分

单精度浮点数( Single )和双精度浮点数( Double ),其指数部分分别用“ E” (或“ e” )和“ D” (或“ d” )表示。

Page 6: 3.1   数据类型

4 )货币型( Currency )货币型属于定点实数或整数,用 8 位字节存储小数点前有 1

5 位,小数点后有 4 位,其余的数字被舍去,其表示形式为在数字后加上“ @” 。

5 )字节型( Byte )

字节型数据用 1 个字节的无符号二进制数存储,取值范围为 0——255 。

Page 7: 3.1   数据类型

2. 字符型数据( String )• 字符型数据是指一切可打印的字符和字符串,它是用双引号括起来的一串字符。• 一个西文字符占一个字节,一个汉字或全角字符占两个字节。在 VB 中有两种类型字符串:变长( String )和定长 (String * n) 字符串。字符串长度 :0~231 个字符

注意:① 空字符串用 "" 表示,而“ " 则表示空格;② 在字符串中必须用两个连续的双引号来表示字符串有一个

双引号。如字符串: abc" 计算机 "abc ,在 VB 中表示为 "abc"" 计算机 ""abc" 。

Page 8: 3.1   数据类型

3. 逻辑型数据( Boolean )又称布尔型,只有 True 和 False 两个值。在计算机内存中占 2 字节,经常用来表示逻辑判断的结果。

当把数值型数据转换为逻辑型数据时, 0 会转换为 Flase ,其它非 0 值转换为 True 。

反之,当把逻辑型数据转换为数值型时, Flase转换为 0 , True 转换为 -1 。

Page 9: 3.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# 都是合法的日期型数据。

Page 10: 3.1   数据类型

5. 对象( Object )类型的数据对象类型的数据( 4 字节)可以引用应用程序中的对象,

主要以变量形式存在。利用 Set 语句,声明为 Object 的变量可以被赋值并被任何对象所引用。

6. 变体( Variant )数据类型

Variant 数据类型是 VB 对所有未定义的变量的缺省数据类型的定义,又称为万用数据类型。变体数据类型对数据的处理完全取决于上下文需要。变体型包括数值型、日期型、对象型、字符型等数据类型。通过VarType函数可以检测 Variant 型变量中保存的具体的数据类型。

Page 11: 3.1   数据类型

3.2 变量与常量

将存放数据的内存单元命名,该内存单元称为变量,其名字就是变量名。变量——程序运行过程中其值可以改变的量。(而常量值不变)。

Page 12: 3.1   数据类型

3.2.1 变量

1. 命名规则① 必须以字母或汉字开头,由字母、数字和下划

线组成,长度不得超过 255 个字符。② 不得使用 VB 中的关键字。③ 不区分大小写。(建议:变量首字母一般大写,

其余用小写。常量全部用大写字母。)

Page 13: 3.1   数据类型

( 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. 变量声明变量声明

Page 14: 3.1   数据类型

( 2 )隐式声明 VB 允许对变量不加声明而直接使用,称为隐式声明。此

时变量类型为变体类型。 但是这样做可能由于变量名的误写而产生不良后果。例如:

Dim x%,y! x=100 y=x/n

对初学者,建议对变量显式声明;或在通用声明段使用”Option Explicit” 强制显式声明

Page 15: 3.1   数据类型

3.2.2 常量

常量——程序运行过程中其值不变的量。 VB 三种常量:直接常量、用户声明的符号常量、系统提供的常量。

1 .直接常量各种类型的常数,其值反映其类型,也可在常数值后紧跟类型符说明其数据类型。例如: 123 、 123& 、 123.45 、 1.234E2 、 123D3 、 &O123 、 &H123 。八进制常数:前缀—— &O ,如: &O123十六进制常数:前缀—— &H ,如: &H123

Page 16: 3.1   数据类型

2. 用户定义的符号常量 用户可以使用 Const 语句来定义常量:

Const 符号常量名 [As 类型 ] = 表达式 符号常量名:命名规则同变量; 表达式:由数值常量、字符串常量以及运算符所组成。

常量一旦声明,其后代码中不能改变其值。– 例如:Const Pi=3.14159Const N as interger=10Const M!=99.9

Page 17: 3.1   数据类型

3. 系统提供的常量 内部或系统定义的常量是 VB 和控件提供的。这些常

量可与应用程序的对象、方法和属性一起使用,在代码中可以直接使用它们。

例如:– WindowState 的值 0 、 1 、 2 对应的常量为: vbNormal 、

vbMinimized 、 vbMaximized 。– 颜色常量: vbred 、 vbgreen 、 vbblue……

Page 18: 3.1   数据类型

3.3 运算符和表达式

3.3.1 运算符(四类)

1 .算术运算符

2 .字符串运算符

3 .关系运算符

4 .逻辑运算符

Page 19: 3.1   数据类型

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

Page 20: 3.1   数据类型

2. 字符串运算符字符串运算符有“ &” 和“ +” 两个,如表所示

字符串运算符

运算符 说明 示例 结果& 连接字符串 "Micro" & "soft" "Microsoft"

+ 求和,或连接字符串 "123"+"456" "123456"

Page 21: 3.1   数据类型

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 比较

Page 22: 3.1   数据类型

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

Page 23: 3.1   数据类型

3.3.2 表达式1.表达式的组成

2 .表达式的书写规则

表达式由变量、常量、运算符、函数和圆括号按一定的规则组成,表达式的运算结果的类型由参与运算的数据类型和运算符共同决定。

根据表达式中运算符的类别可以将表达式分为算术表达式、字符串表达式、日期表达式、关系表达式和逻辑表达式等。

① 乘号( * )不能省略。② 只能使用小括号(),且必须配对。③ 表达式从左到右在同一基准上书写,无高低、大小之分。④ 不能出现非法的字符,如 π。

Page 24: 3.1   数据类型

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

Page 25: 3.1   数据类型

3.4 常用内部函数

3. 字符串函数

2. 转换函数

1. 数学函数

4. 日期和时间函数

5. 格式输出函数

6. Shell函数

Page 26: 3.1   数据类型

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

Page 27: 3.1   数据类型
Page 28: 3.1   数据类型

2. 转换函数 Asc()函数 : 一个字符串首字符的 ASCⅡ码值。 Chr()函数: ASCⅡ码值转换成字符 。 Val()函数:数字字符串转换为数值。 Str()函数:数值转换为字符串。 Hex()函数 :十进制转换成十六进制。 Oct()函数:十进制转换成八进制值。 Int()函数:不大于给定数的最大整数,如: Int(3.6) 结果为 3 。 Fix()函数:取整。如: Fix(-3.6)结果为 -3 。 Round()函数:四舍五入取整。 Lcase()函数:大写转小写。 Ucase()函数:小些转大写。

Page 29: 3.1   数据类型

在立即窗口中操作

Chr()函数: ASCⅡ码值转换成字符 :? Chr(65)

A

Val()函数:数字字符串转换为数值:? Val("1234")+ Val("4321")

5555

例题 2.9

txtResult.Text = Val(txtAdd1.Text) + Val(txtAdd2.Text)

Page 30: 3.1   数据类型

Hex()函数 :十进制转换成十六进制: 256

Page 31: 3.1   数据类型

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

常用字符串函数

Page 32: 3.1   数据类型

Space(N) 返回由指定数目空格字符组成的字符串

Space$(5) ""

String(N,C) 返回包含一个字符重复指定次数的字符串

String$(2, "ABCD") "AA"

表(续)常用字符串函数

Page 33: 3.1   数据类型

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

常用日期函数

Page 34: 3.1   数据类型

3.4.5 格式输出函数( Format )

Format(< 表达式 > , < 格式字符串 >)

Private Sub Form_Click() Print Format(2.71828,”#####.##” End Sub

Page 35: 3.1   数据类型

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)

Page 36: 3.1   数据类型

3.5 vb 程序结构和编码规则编程序如同写文章,有它的书写规则,初学者应严格遵循,否则会出现编译错误。

Page 37: 3.1   数据类型

1. 程序结构通用声明

过程块,不分先后

Page 38: 3.1   数据类型

2. 编码规则( 1 ) VB 代码不区分字符的大小写

– 关键字会自动转换为大写字母开头,后续字母为小写。– 自定义的变量、过程名等,以第一次定义为准,其后的输入自动转换。

( 2 )书写自由– 一行可以书写多条语句,各语句之间用冒号” :” 分隔– 一行书写不完的语句,可以在该行后加上续行符(由空格 +下划线 _组成),然

后换行书写。– 一般一行写一条语句,一行最多 255 个字符,一条语句最多 1023 个字符。

( 3 )注释行以 Rem 或撇号“‘”开头– 只有用撇号引导的注释可以出现在语句之后。– 可使用“编辑”工具栏中的“设置注释块”命令将选定的若干行语句或文字设置

为注释项,也可以使用“解除注释块”命令将选定的若干行解除注释。

Page 39: 3.1   数据类型

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)

Page 40: 3.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