VB程序设计与应用第3章:数据类型及其运算_第1页
VB程序设计与应用第3章:数据类型及其运算_第2页
VB程序设计与应用第3章:数据类型及其运算_第3页
VB程序设计与应用第3章:数据类型及其运算_第4页
VB程序设计与应用第3章:数据类型及其运算_第5页
已阅读5页,还剩62页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1

第3章数据类型及其运算3.1数据类型3.2常量3.3变量3.4表达式3.5常用内部函数3.6编写代码2

第3章数据类型及其运算

3.1数据类型

3.1.1标准数据类型

Variant(变体型)和用户定义类型等。

Integer(整型)

Long(长整型)

Single(单精度浮点型)

Double(双精度浮点型)

Currency(货币型)

Boolean(布尔型)

Byte(字节型)也可用于数值计算。

Decimal(存储为96位无符号的整型形式)

Date(日期型)

String(字符串型)

Object(对象型)3

1、字符串(String)

字符串是放在双引号中的,

空字符串:长度为0的称为空字符串。

字符串的分类

变长字符串变长字符串长度不确定,范围0~231个

定长字符串定长字符串含有确定个数的字符,最大长度不超过216个字符4

String型变量用于存储字符串,列:

DimSAsStringS="Database"String型变量缺省是可变长度的字符串变量。也可以声明固定长度String型变量,语法是:Dim/Private/Public/StaticvariablenameString*size52、数值型

整数:整型和长整型

数值型

浮点数:单精度和双精度

1)整数

(1)整型(Integer)(2字节)

取值范围为-32768—32767(2)长整型(Long)(4字节)取值范围为-2147483678--21474836776

2)浮点数(实型数或实数)

(1)单精度型(Single)(4字节):可以精确到7位十进制数;

负数:-3.402823E+38~-1.40129E-45

正数:1.40129E–45~3.402823E+38

(2)双精度型(Double)(8字节):可以精确到15或16位十进制数;

负数:-1.797693134862316D+308~-4.94065D-324

正数:

4.94065D-324~1.797693134862316D+30873、货币(Currency)货币数据类型是为表示钱款而设置的。以8个字节(64位)存储,精确到小数点后4位(小数点前有15位。取值范围:-922337203685477.5808~922337203685477.58074、变体(Variant)变体数据类型是一种可变的数据类型,可以表示任何值,包括数值、字符串、日期/时间等。85、字节(Byte)

1个字节的无符号二进制数,取值范围0~255。6、布尔(Boolean)

逻辑值,用两个字节存储。取值True(真)或False(假),默认为False。7、日期(Date)日期型存储为IEEE64位(8个字节)浮点值形式格式:mm/dd/yyyy或mm-dd-yyyy,9日期文字必须以数字符号(#)括起来,例:#9/10/200112:30:00pm#在输出年份时通常只输出后两位。

例:2000年输出是“00”。8、对象(Object)表示图形或OLE对象或其他对象,4个字节。9、Decimal

96位无符号整型,并除以一个10的幂数,称为变比因子,该变比因子决定了小数点右面的数字位数。10数据类型存储空间取值范围Byte(字节型)1个字节2~255Boolean(布尔型)2个字节True或FalseInteger(整形)2个字节-32768~32767Long(长整形)4个字节-2147483648~2147483647Single(单精度型)4个字节Double(双精度型)8个字节11数据类型存储空间Currency(货币型)8个字节Decimal12个字节Date(日期型)8个字节Object(对象型)4个字节String(字符串型、变长)10个字节加字符串长度String(字符串型、定长)字符串长度Variant(变体型、数字)16个字节Variant(变体型、字符)22个字节加字符串长度123.1.2自定义类型

在模块级别中使用,用于定义包含一个或多个元素的用户自定义的数据类型。使用形式:

Type自定义类型名 元素名[([下标])]As类型名 元素名[([下标])]As类型名

...EndType说明:

(1)Type…EndType关键字;(2)元素名

表示自定义类型中的一个成员;(3)下标

表示该成员是一个数组;(4)类型名

表示该成员的标准数据类型。13

例如:对于一个学生的“学号”、“姓名”、“性别”、“年龄”、“日期”、“入学成绩”等数据,为了处理数据的方便,常常需要把这些数据定义成一个新的数据类型(如StuIT类型)。TypeStuIT StNoAsInteger NameAsString*30 StsexAsString*1 SdateAsDate ScoreAsSingleEndType此时就可以在某过程的变量声明时使用该类型

DimStudentasStuIT‘变量Student为自定义类型StuIT表示Student中的某个元素形为:元素名.变量名,如要表示学生的姓名为:Student.Name14注意:

(1)记录类型中的元素可以是字符串,但必须是定长字符串。(2)使用记录类型之前,必须用Type语句定义,记录类型在标准模块中定义,其变量可出现在工程的任何地方,在窗体模块中定义,则加关键字Private。(3)在记录类型中不能含有数组。(4)在随机文件操作中,记录类型数据有着重要的作用。3.2常量

在程序运行过程中,其值不能被改变的量称为常量。在VB中有三类常量:直接常量(普通常量)用户自定义符号常量系统保留常量。3.2.1、直接常量

1.

整型常量

(1)整型(Integer):表示-32768至32767之间的整数例如:1011020表示±n[%]

(2)长整型(Long):表示-2,147,483,648至2,147,483,647之间的整数例如:长整型常数的书写:23&16

通常我们说的整型常量指的是十进制整数,但VB中可以使用八进制和十六进制形式的整型常数,因此整型常数有如下三种形式:

1)十进制整数。如125,0,-89。202)八进制整数。以&或&O(字母O)开头的整数是八进制整数,如&O25表示八进制整数25,即(25)8

,等于十进制数21。

3)十六进制。以&H开头的整数是十六进制整数,如&H25表示十六进制整数25,即(25)16

,等于十进制数37。VB中的颜色数据常常用十六进制整数表示。172、实数1)单精度实型(Single):有效数为7位2)双精度实型(Double):有效数为15位常量的表示:1)十进制小数形式。它是由正负号(+,-)、数字(0~9)和小数点(.)或类型符号(!、#)组成,即±n.n,±n!或±n#,其中n是0~9的数字。例如0.123、.123、123.0、123!、123#等例如123.45123.45!1.2345E+2都表示同值的单精度数。2)指数形式。±nE±m或

±n.nE±m,±nD±m或

±n.nD±m

例:1.25E+3和

1.25D+3相当于1250.0或者1.25×103。182、实数1)单精度实型(Single):有效数为7位2)双精度实型(Double):有效数为15位常量的表示:1)十进制小数形式。它是由正负号(+,-)、数字(0~9)和小数点(.)或类型符号(!、#)组成,即±n.n,±n!或±n#,其中n是0~9的数字。例如0.123、.123、123.0、123!、123#等例如123.45123.45!1.2345E+2都表示同值的单精度数。2)指数形式。±nE±m或

±n.nE±m,±nD±m或

±n.nD±m

例:1.25E+3和

1.25D+3相当于1250.0或者1.25×103。195、日期常量日期(Date)型数据按8字节的浮点数来存储,表示日期范围从公元100年1月1日~9999年12月31日,而时间范围从0:00:00~23:59:59。一种在字面上可被认作日期和时间的字符,只要用号码符“#”括起来,都可以作为日期型数值常量。例:#09/02/99#、#January4,1989#,#2002-5-414:30:00PM#都是合法的日期型常量。

20

类型说明符

%:整形;

&:长整形;

!:单精度;

#:双精度;

@:货币型;

$:字符串型。字节、布尔、日期、对象及变体类型没有类型说明符。213.2.2用户自定义符号常量在程序中,某个常量多次被使用,则可以使用一个符号来代替该常量,这样不仅在书写上方便,而且有效地改进了程序的可读性和可维护性。

VB中使用关键字Const声明符号常量。其格式如下:

Const常量名

[As类型]=常数表达式

或:Const[类型符号]=常数表达式例如:

ConstPIAsDouble=3.1415926535等价于:

ConstPI#=3.141592653522

符号常量格式:

Const

常量名=表达式[,常量名=表达式]…

功能:定义一个符号常量来表示表达式的值。

说明:“常量名”:按变量构成规则命名

“表达式”:由数值常量或字符串、算术运算符(指数运算符除外)、逻辑运算符组成。

23

例:ConstPI=3.141593

ConstPI2=2*PI

ConstCOUNTRY$=“China”

注意:

(1)声明符号常量视可在常量名后面加上类型说明符。

(2)在程序中引用符号常量时可省略类型说明符。

(3)类型说明符不是符号常量的一部分;24

用户自定义常量前需要声明,其语法是:

[Public/Private]Const

常量名[As类型]

=常量表达式例:Const

conMaxPlanetsAsInteger=9Const

numPeopleAsInteger=19253.2.3系统保留常量

VB系统提供的应用程序和控件的系统定义常数。它们存放于系统的对象库中,在“对象浏览器”中的VisualBasic(VB)和VisualBasicforapplications(VBA)对象库中列举了VisualBasic的常数

例如,要将文本框Text1的前景颜色设置为红色,可以使用下面的语句:

Text1.ForeColor=vbRed

这里的vbRed就是系统常量。这比直接使用16进制数来设置要直观得多。例3-1:P513.3变量3.3.1变量的含义在VisualBasic中执行应用程序期间,用变量临时存储数据。在VisualBasic中,变量有两种形式

属性变量

内存变量什么是变量?一个有名称的内存单元称为变量。在程序执行期间,用变量临时存储数值。变量的值可以发生变化。每个变量都有名称和数据类型。273.3.2、变量的命名规则(1)必须以字母开头,由字母、汉字、数字或下划线组成。例如xyz、h_12等变量名都是正确的;而5f、*123是非法的。(2)不能在变量名中出现句点“.”、空格或者嵌入字符:!、@、#、$、%、&(3)长度不得超过255个字符。(4)不能使用VB的关键字。关键字是语言的组成部分,其中包括预定义语句(例如If、For等)、函数(Abs、Sqr等)和操作符(Or、Mod等)。注意:在同一个范围(范围是可以引用变量的域,如一个过程、一个窗体等)内,变量名必须是唯一的。28变量命名规则(1)名字只能由字母、数字和下画线组成;(2)名字的第一个字符必须是字母或汉字;(3)名字的有效字符为255个;(4)不可以包含小数点或者内嵌的类型声明字符;(5)不能用VisualBasic的保留字作变量名。(6)不区分大小写。(7)不能与过程名或符号常量同名。例:intMax

strNameStudent1MyName

不区分大小写;变量名应便于识别、记忆。293.3.3变量的声明1.用Dim语句显式声明变量形式:Dim变量名[AS类型]

Dim变量名[类型符]

例:

DimabAsinteger,sumAssingle

等价于Dimab%,sum!2.隐式声明

VisualBasic允许用户在编写应用程序时,不声明变量而直接使用,系统临时为新变量分配存储空间并使用,这就是隐式声明。所有隐式声明的变量都是Variant数据类型。VisualBasic根据程序中赋予变量的值来自动调整变量的类型。例如:30

下面是一个很简单的程序,其使用的变量a,b,Total都没有事先定义。PrivateSubForm_Click()Total=0a=10:b=20Total=a+bPrint“Total=";TotalEndSub如:DimSomeValue‘SomeValue没有指定类型,是Variant类型SomeValue=”18”‘SomeValue值为字符型“18”SomeValue=SomeValue–15‘现在SomeValue值为数值型“3”31(1)声明变量格式:Dim|Private|Static|Public<变量名>[As<类型>]•

Dim:在窗体模块、标准模块或过程中声明变量。•

Private:在窗体模块或过程中声明变量,使变量仅在该模块或过程中有效。•

Static:在过程中定义静态变量,即使该过程结束,也仍然保留变量的值。•

Public:在标准模块中声明全局变量,使变量在整个应用程序中有效。32(2)隐式声明可变类型。易出错、浪费空间。(3)强制显式声明在模块的声明段中使用语句:OptionExplicit

如果设置:工具→选项→编辑器→

要求变量声明则在后续模块中自动插入OptionExplicit。例:DimSumAsLongDimAddressAsStringDimNoAsString*8DimPriceAsCurrencyDimNum,TotalAsInteger'Num为可变类型

DimAverageAsSingle333.强制显式声明——OptionExplicit语句

良好的编程习惯都应该是“先声明变量,后使用变量”,这样做可以提高程序的效率,同时也使程序易于调试。VisualBasic中可以强制显式声明,可以在窗体模块、标准模块和类模块的通用声明段中加入语句:

OptionExplicit例3-2:P5434例:在窗体中放置按钮Command1和Command2。

DimaAsIntegerPrivateSubCommand1_Click()a=a+10PrintaEndSubPrivateSubCommand2_Click()a=a+15PrintaEndSub

运行程序,观察结果。将DimaAsInteger放到过程内,再运行,观察结果。去除Dim,比较使用OptionExplicit与不使用的结果。3.3.4变量的赋值格式:<变量名>=<表达式>功能:先计算<表达式>的值,再将此值赋给变量3.4表达式2.4.1算术运算符

操作数:常量、变量、函数、对象运算符:圆括号算术运算符(算术表达式)字符串运算符(字符串表达式)关系运算符(关系表达式)布尔运算符(布尔表达式)运算符:()^*/\(整除)Mod(求余)+-优先级:()→^→*/→\→Mod→+-

书写:表达式中乘号不能省略,括号不分大、中、小,一律采用圆括号,无[],无{}36例:将以下表达式写成VB合法的表达式:(xy)za1+a2a-b+a(-b)a1+a2a^(-b)+a*(-b)(x^y)^za^(1/n)y/(-x)+x/(-y)371.乘方运算例:10^210的平方,结果为10010^(-2)10的平方的倒数,结果为0.0125^0.525的平方根,结果为58^(1/3)8的立方根,结果为22^2^3运算顺序从左到右,结果为64(-8)^(-1/3)错误,当底数为负时,指数必须是整数2.整数除法例:10\4结果为225.68\6.99先四舍五入再整除,结果为33.取模运算例:10Mod4结果为225.68Mod6.99先四舍五入再求余数,结果为53811Mod–4结果为3-11Mod5结果为-1-11Mod-3结果为-23.4.2字符串表达式字符串运算符有两个:&+例:"Hello"&"World"结果为"HelloWorld""Check"&123结果为"Check123"123&456结果为"123456""123"&456结果为"123456"123+456结果为579

"123"+"456"结果为"123456""Check"+123错误393.4.3日期表达式日期表达式是用运算符(+或-)将算术表达式、日期型常量、日期型变量和函数连接起来的式子。(1)两个日期型数据相减,其结果是一个数值数据(两个日期相差的天数)例如:#1/10/2003#-#1/10/2002#结果为365(2)日期型数据加(或减)天数,其结果为一个日期型数据。例如:#2/10/2003#+20结果为#3/02/2003##1/10/2003#-20结果为#12/21/2002#403.4.4关系运算符与关系表达式1.比较运算符

<(小于)<=(小于或等于)

>(大于)>=(大于或等于)

=(等于)<>(不等于)2.表达式:<表达式1><比较运算符><表达式2>3.如何比较数值比较:按数值大小日期比较:按整数yyyymmdd的值比较单字符比较:按ASCII码大小比较

""<"0"<"1"<…<"9"<"A"<"B"<…"Z"<"a"<"b"<…<"z"

字符串比较:较短字符串补足空格,从左开始比。4.比较结果:TrueFalse41例:45<35结果为False45=45结果为True4<>3结果为True"abc">“abcd"结果为False"计算机"<="计算机系"结果为True3.4.5逻辑运算符与逻辑表达式1.布尔运算符:NotAndOr2.布尔表达式:

<关系表达式1><布尔运算符><关系表达式2>3.优先级:Not→And→Or42比较两个运算量之间的关系,关系表达式的运算结果为逻辑量。若关系成立,结果为True,若关系不成立,结果为False。

VB中的关系运算符如下表所示。运算符含义优先级实例结果<小于所有关系运算优先级相同。低于算术运算的加“+”,减“-”运算,高于逻辑非“Not”运算。15+10<20False<=小于或等于10<=20True>大于10>20False>=大于或等于"This">="That"True=等于"This"="That"False<>不等于"This"<>"That"TrueLike字符串匹配"This"Like"*is"TrueIs对象比较

43关系运算的规则如下:(1)当两个操作式均为数值型,按数值大小比较。(2)字符串比较,则按字符的ASCII码值从左到右一一比较,直到出现不同的字符为止.。例:"ABCDE">"ABRA" 结果为False(3)数值型与可转换为数值型的数据比较,如:29>"189",按数值比较,结果为False。(4)数值型与不能转换成数值型的字符型比较,如:77>"sdcd",不能比较,系统出错。44三、逻辑运算符与逻辑表达式

逻辑运算符:Not,And,OrXor45说明:(1)逻辑运算符的优先级不相同,Not(逻辑非)最高,但它低于关系运算。(2)VB中常用的逻辑运算符是Not、And和Or。它们用于将多个关系表达式进行逻辑判断。例如:数学上表示某个数在某个区域时用表达式:

10≤X<20

用VB程序中应写成:

X>=10AndX<20

如果写成如下形式将是错误的:

10<=x<20或

10<=xOrx<20

46

例:用人单位招聘秘书:年龄小于40岁,女性,学历专科或本科:写成条件VB的表达式:年龄<=39性别=“女”学历=“专科”学历=“本科”47四、字符串运算符与字符串表达式

字符串运算符有:&、+

。功能是字符串连接例如:

"ABCD"+"EFGHI"'结果为:ABCDEFGHI“VB”&“程序设计教程”'结果为:VB程序设计教程说明:当连接符两旁的操作量都为字符串时,上述两个连接符等价。它们区别是:

+(连接运算):两个操作数均应为字符串类型;

&(连接运算):两个操作数既可为字符型也可为数值型,当是数值型时,系统自动先将其转换为数字字符,然后进行连接操作。48例:"100"+"123"'结果为

100123"Abc"+123'出错"100"&123'结果为

100123100&123'结果为

100123"Abc"&"123"'结果为

Abc123"Abc"&123'结果为

Abc123

注意:使用运算符“&”时,变量与运算符“&”之间应加一个空格。这是因为符号“&”还是长整型的类型定义符,如果变量与符号“&”接在一起,VB系统先把它作为类型定义符处理,因而就会出现语法错误。49例:A=10:B=8:C=6。

Not(A>B)结果为FalseNot(B>A)结果为TrueA>BAndB>C结果为TrueB>AAndB>C结果为FalseA>BOrB>C结果为TrueB>AOrB>C结果为TrueA<BOrB=C结果为False50例:将以下条件写成VB布尔表达式:

1.m1-n1≤j≤m1+n1;

2.X<-5或X>5;

3.M和N之一为5,但不能同时为5;

4.-100<k<100,且k为偶数;

5.的定义域。511.(J>=M1-N1)And(J<=M1+N1)2.(X<-5.0)Or(X>5.0)3.((M=5)And(N<>5))Or((M<>5)And(N=5))4.(k>-100)And(k<100)And(kMod2=0)5.(x<>0)And((x-1.0)*(x-2.0)>=0.0)3.4.6表达式的运算顺序

()→函数运算→算术运算→字符运算→关系运算→逻辑运算3.5常用内部函数函数分内部函数、用户自定义函数。

VB提供了上百种内部函数(库函数),要求掌握这些常用函数的功能及使用。调用方法:

函数名(参数列表)有参函数

函数名无参函数

说明:(1)使用库函数要注意参数的个数及其参数的数据类型(2)要注意函数的定义域(自变量或参数的取值范围)例如:sqr(x)要求:x>=0

(3)要注意函数的值域。如:exp(23773)的值就超出实数在计算机中的表示范围。(4)参数可以是常量、变量或表达式。若有多个参数,参数之间以逗号分隔。函数的使用:函数在表达式中被调用。533.5.1数学函数

常用的数学函数见表2-2所示

Abs(N)Cos(N)Sin(N)Exp(N)Log(N)Sqr(N)Rnd[(N)]Sgn(N)

说明:(1)在三角函数中的自变量是以弧度为单位。如:sin300sin(3.14159/180*30)

(2)Rnd函数返回0~1(包括0和不包括1)之间的双精度随机数。若要产生1-100的随机整数:Int(Rnd*100)+1

提问:怎样产生[N,M]区间的随机数?

(3)例:判断一个整数Y能否被另一个整数X整除。如果INT(Y/X)=Y/X则整除

54数学函数例子:Fix(45.67)结果为45Int(45.67)结果为45Fix(-2.89)结果为-2Int(-2.89)结果为-3Abs(-4)结果为4Log(10)结果为2.30258509299405Sgn(3)结果为1Sgn(-6)结果为-1Sgn(0)结果为0553.5.2字符串函数(常用的字符串函数见P59表3-3)说明:如果返回是字符型,则函数后有“$”字符。当然一般也可以不写,习惯都写上。例如:

len("Thisisabook!")15Left$("ABCDEFG",3)"ABC"Right("ABCDEFG",3)“EFG"Mid$("ABCDEFG",2,3)"BCD“

Ucase("ABcd")"ABCD"

Lcase("ABcd")"abcd"Trim("Abcd")"ABcd"String(5,"A")"AAAAA"

InStr(2,“ABCDEFGEF”,“EF”)5(第一次出现的位置)56例:常用对数log10X的求法。用换底公式log10X=Ln(X)/Ln(10)

即LOG(X)/LOG(10)例:求e3。正确:EXP(3)

错误:e^3(错)3.5.2字符串函数例:LTrim("∪∪∪ABC")结果为"ABC"表示空格RTrim("ABC∪∪∪")结果为"ABC"Trim("∪∪∪ABC∪∪∪")结果为"ABC"Left("ABCDE",2)结果为"AB"Right("ABCDE",2)结果为"DE"Mid("ABCDE",2,3)结果为"BCD"Mid("ABCDE",2,6)结果为"BCDE"57例:Len("ABCDE")结果为5String(3,65)结果为"AAA"InStr("ABCDECDE","DE")结果为4InStr(5,"ABCDECDE","DE")结果为7UCase("Abc")结果为"ABC"LCase("ABc")结果为"abc"583.5.3日期、时间函数

常用的日期时间函数见表3-4

掌握:Time()Date()Now()Year()Month()Day()3.5.4转换函数例:Asc("A")结果为65

Asc("ABC")结果为65

Chr(65)结果为"A"

Str(123)结果为"∪123"

Str(-123)结果为"-123"Val("123")结果为123Val("123AB")结果为123Val(".123AB")结果为.123Val("a123AB")结果为0593.5.5条件函数1.IIf函数

格式:IIf(<条件>,表达式1,表达式2)

功能:当条件成立,返回表达式1的值,当条件不成立,则返回表达式2的值例子:Max=Iif(a>b,a,b)2.Choose函数格式:Choose(<数值型变量>,<值1>,<值2>,…,<值n>)

功能:当<数值型变量>取整后值为1时,返回<值1>,当值为2时,返回<值2>,以此类推。例子:OP=Choose(n,”+”,”-”,”×”,”÷”)603.5.6格式输出函数使用格式:Format$(表达式[,“格式字符串”])

功能:按用户指定格式返回表达式,常常用在print方法中。使用形式:print

Format$(表达式

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论