3.1 数据类型

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

Upload: tana

Post on 21-Jan-2016

94 views

Category:

Documents


0 download

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

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