资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第三章数据表示及基本运算,*,数据类型,什么是数据?,什么是数据的类型?,如:数值型、字符型等,*,布尔型数据,(Boolean),什么是布尔型数据?,布尔型数据用于表示双值数据,常用于逻辑判断。,布尔型数据的值是什么样的?,布尔型数据的值仅有两种,即,True(,真,),或,False(,假,),。这种值通常称为逻辑值,用两个字节存储。,布尔型数据能与数值型数据转换吗?,当把数值型数转换为布尔型时,,0,会转换为,False,,其他非,0,值转换为,True,。当把布尔值转换为数值型时,,False,转换为,0,,,True,转换为,1,。,数值型数据,(Numeric),什么是数值型数据?,数值型数据一般用来表示可以进行算术运算的数据,如,12,,,-9.6,等。,通常在高级程序设计语言中,数值型数据如何分类?,整型:即数学运算中的整数,整型又可分为整型和长整型,浮点型:即数学运算中的实数,浮点型可分为单精度和双精度浮点型。,*,*,数值型数据的分类,(1),整型数,(Integer),:,整型数是不含小数和指数的数,其取值范围为,32768,32767,,即,-2,15,2,15,-1,。在内存中占,2,个字节(,16,位)。例如,,-10,,,21,,,100,,,-5007,等都是整型数。,(2),长整型数,(Long),:,长整型数的数字组成与整型数相同,其取值范围为,-2147483648,2147483647,,即,-2,31,2,31,-1,。在内存中要占,4,个字节,(32,位,),。,*,(3),单精度浮点型数,(Single),:,浮点数也称为实型数或实数,是带小数部分的数值。,单精度浮点数以,4,个字节,(32,位,),存储,可精确到,7,位十进制数。单精度数的,负数取值范围为,-3.402823E+38,-1.401298E-45,正数的取值范围为,1.401298E-45,3.402823E+38,。,单精度数可用定点形式和浮点形式来表示:,定点形式就是我们在数学中常用的小数形式。例如:,5.347,,,-0.125,等。,浮点形式是用科学计数法,即以,10,的整数次幂表示数,以“,E”(,或“,e”),来表示底数,10,。例如,,1.25E+11,表示,1.2510,11,,而,-2.1234E-15,表示,-2.123510,-15,等。,数值型数据的分类,*,(4),双精度浮点型数,(Double),:,用,8,个字节,(64,位,),存储,可表示最多,15,或,16,位有效数字的数。,双精度数的负数取值范围为,-,1.79769313486232D+308,-4.94065645841247D-324,正数的取值范围为,4.94065645841247D-324,1.79769313486232D+308,双精度数也有定点和浮点两种形式,注意其浮点形式中是用“,D”(,或“,d”),来代表指数的底数,例如,,3.645D+11,,,-1.25978D51,,,2.13434D-28,等。,数值型数据的分类,*,字符串型数据,(String),哪些数据是字符串型数据?,字符串型数据是指一切可打印的字符或字符的序列。,字符串型数据一般用来表示文字类的数据,如:姓名、地址、身份证号、编码等。,形式,用双引号括起来的若干个字符。,字符串中所含的字符可以是除双引号和回车符之外的任何,ASCII,字符,如,“,Good”,、“,101”,、“,I am student”,。“中国的长城太伟大了!”。,*,字符串分为两种类型,在一些高级程序设计语言中,字符串还可以按长度是否变化分为两种类型:,变长字符串,变长字符串是指字符的长度是不固定的,它的长度可随时变化。其长度不能超过,20,亿个字符。缺省为变长字符串。,定长字符串,定长字符串是指它在程序执行过程中,始终保持其长度不变的字符串。其长度不能超过,65535,个字节。,例如,可规定学生学号的长度为,10,位,如果不足,10,位则用空格将不足的部分填满,如果长度超,10,位则截去超出部分的字符。,*,其他类型数据,(1),货币型,(Currency),:,是为表示货币而设置的。,该类型数据以,8,个字节,(64,位,),存储,精确到小数点后,4,位,小数点前最多可有,15,位有效数字,取值范围为,-922337203685477.5808,922337203685477.5807,注意:,与浮点数不同,货币型数据的小数点是固定的,因此又称为定点数据类型。,*,(2),日期,(Date),型数据:,日期型数据用来表示日期和时间,可以表示多种格式的日期和时间。,日期型数据用两个“,#”,符号把表示日期和时间的值括起来,就像字符串数据用双引号括起来一样。例如,,#10/28/2001#,、,#10-28-2001#,、,#10/28/2001 10:46:01 pm#,等。,日期型数据在内存中占,8,个字节,(64,位,),,可以表示日期的范围从公元,100,年,1,月,1,日至,9999,年,12,月,31,日。而时间从,0:00:00,到,23:59:59,。,其他类型数据,*,(3),对象,(Object),型数据:,对象型数据可用来表示图形或,OLE,对象或其他对象,用,4,个字节存储。,(4),变体,(Variant),型数据:,变体型数据是一种可变的数据类型,可以表示任何值,包括数值、字符串、日期等。,变体型数据表示数值型数据时,占用,16,个字节的存储空间,最大可达,Double,类型的取值范围。,表示字符串时,则占用的存储空间等于字符串的长度。,其他类型数据,*,用户自定义类型,在编程时,有时需要将某些相关的具有不同类型的数据组织到一个数据类型中,这种数据类型称为用户自定义类型。在,Visual Basic,中,允许将基本数据类型按需要组合起来,用,Type,语句创建自定义数据类型。,其格式为:,Type,用户类型元素,As,类型,用户类型元素,As,类型,End Type,其中:,用户类型名,是用户定义的数据类型名。,用户类型元素,可以是任何基本数据类型(但不能是数组),也可以是用户定义的数据类型,如果类型是字符串,则必须是定长字符串。,例如,我们可以定义一个名称为,Student,的自定义类型,用以记录与学生成绩相关的多项数据:,Type student,class as String*10,num As String*6,name As String*6,sex As Boolean,chinese as integer,End Type,*,在程序执行过程中,常量的值不发生变化,而变量的值是可以变化的。,例如,我们按公式计算,T=3.5X+2Y,时,,3.5,和,2,就是常量,而,T,就是变量。,X,和,Y,是常量还是变量呢,这要根据程序设计的实际情况来确定。,变量和常量,*,变量,什么是变量?,存放一项数据的内存空间,可以看做一个存储单元,通过名字可以访问指定位置中的所存放的数据。,从计算机程序设计的角度上来说,一个有名称的内存位置称为变量。,变量的命名规则,变量名只能由字母、数字和下划线等组成。,变量名的第一个字符必须是字母,最后一个字符可以是类型符。,组成变量名的字符数不得超过,255,个字符。,不能用该语言的保留字当作变量名。,例如,,合法的变量名,Count,,,Chinese_Score,,,Age%,非法的变量名,8a,,,A+B,,,Dim,*,变量命名时的注意事项:,取名最好使用有明确实际意义、容易记忆以及通用的变量名,即要见名知义。比如用,sum,代表求和、,Student_Num,代表学生学号等。,变量名不宜过长,太长不便于阅读和书写。,变量名不能与过程名和符号常量名相同,更不能用该语言的关键字做变量名。,尽量采用所用高级程序设计语言建议的变量名前缀或后缀的约定来命名,以便区分变量的类型,如,intMax,,,strName,。,不区分字母的大小写,*,变量的声明,为什么要声明变量,?,声明变量就是用一个语句来定义变量的类型。声明变量的语句并不把具体数据分配给变量,而是告知变量将包含什么类型的数据。,Visual Basic,中变量声明的常用语句为:,Dim,语句,Dim As,,,As,例如:,Dim Count As Integer,Dim Total As Double,当然也可以用一个,Dim,定义多个变量。,用,As String,可以定义变长字符串,也可以定义定长字符串。例如:,Dim Sex As String,Dim Name As String*10,*,定义自定义类型的变量,如果定义自定义类型的变量,需要先定义自定义类型:,Type People,Name As String*10,Sex As String*1,Age As Integer,End Type,再定义该类型的变量:,Dim Child As People,Child,中所含的,Name,、,Sex,、,Age,称为,Child,的成员(元素),对记录变量中各成员的引用格式为“变量,.,元素”,如,Child.Name,,,Child.Age,。,*,有关变量定义的其它说明,定义过的变量的初值,使用声明语句建立一个变量后,,Visual Basic,自动将数值类型的变量赋初值,0,,将字符或,Variant,类型的变量赋空串,将布尔型的变量赋,False,。,其它变量声明语句,Public,:用来在标准模块中定义全局变量或数组;,Static,:用于在过程中定义静态变量及数组;,Private,:用来声明局部变量。,这些声明语句将在第七章给予介绍。,*,常量,常量的定义,常量是指在程序运行过程中始终保持不变的常数、字符串等。,常量有两种表达形式,直接常量,直接常量就是在程序代码中,以直接明显的形式给出的数据。,符号常量,如果在程序中多次出现同一个数据,为了改进代码的可读性和可维护性,应该使用符号常量,即给某一特定的值赋予一个名字,以后用到这个值时就用名字代表,就像数学中用,来代表,3.1415926,、用,e,来表示,2.71828,一样。,*,直接常量,分类,字符串常量,在程序中字符串常量就是用来表示已知的、其值在程序运行过程中不会改变的字符串型数据的。如:“,Result=”,、“,Error!”,等。,布尔常量,日期常量,数值常量,这类常量在程序中的出现形式,就是数学意义上的常数。如果按所表示的常数的精度和形式来分,有整数、长整数、定点数和浮点数等类型。,*,符号常量,什么是符号常量,就是用一个名称来表示一个特定的值,这个值可以是数值或字符串。符号常量应该先定义,后使用。,优点:,一是要修改常量的值时,无须在所有出现该常量的地方一一修改,提高了程序的可维护性;,二是用常量名来指代常量值,增加了程序的可读性。,如何定义符号常量?,定义符号常量的一般格式为:,Const =,=,例如:,Const PI=3.14,定义后的,PI,在程序中就代表,3.14,这个值了。例如:,S=PI*R*R,如果希望,PI,的值精度更高一点,如使用,3.1415927,,只要直接修改符号常量,PI,的值即可。,*,函数,什么是函数?,在高级程序设计语言中,就事先设计好了许多用于进行特定计算的小程序,称之为函数。例如求,x,的正弦值等。,如何使用函数?,使用一个函数时,要给出函数名以及进行计算所必须的参数,就能得到相应的计算结果,即函数值。,函数的分类:,内部函数,在高级程序设计语言中事先设计好的内部函数也称标准函数,常用函数有:转换函数、数学函数、字符串函数、日期与时间函数、随机数函数。,用户自定义函数。,用户自定义函数是用户根据自己的计算需要而临时定义的函数。,*,常用内部函数,*,常用内部函数,*,常用内部函数,日期和时间函数的自变量,Now,是一个内部变量,不需要用户定义。用它做自变量,可以使日期和时间函数返回当前系统的日期和时间。,*,常用内部函数,用,Rnd,函数可以返回随机数。当一个应用程序不断地重复使用随机函数时,同一序列的随机数会反复出现。用,Randomize,语句可以消除这种情况,其格式为:,Randomize(x),这里,x,是一个整型数,它是随机数发生器的“种子数”,当种子数不同时可以获得不同的随机数序列,,x,也可以省略。,*,运算符和表达式,表达式由什么构成?,表达式由,运算符,和,操作数,构成,运算符有单目运算符、双目或三目运算符等,运算对象也称为操作数,前面介绍的常量、变量和函数都可以作为运算对象(操作数)。,根据表达式的值的数据类型将表达式分为若干类:,算术表达式,字符串表达式,逻辑表达式,日期表达式,*,算术表达式,什么是算术表达式?,算术表达式由算术运算符、数值型常量、数值型变量、数值型函数及括号组成。算术表达式的结果为一数值。,Visual Basic,中的算术运算符,+,:加法运算,如,3+5,、,a+b,;,-,:减法运算,如,25-3,、,x-1,。也称取负运算符,如,-x,、,-3,;,*:乘法运算,相当于数学中的,“,”,,如,3*5,、,2*a,;,/,:浮点除法运算,相当于数学中的,“,”,,如,35/7,、,a/b,;,:乘方运算,也称指数运算,如,(x+y)2,、,xa,;,其中,加,(+),、减,(,),、乘,(*),、浮点除,(/),、取负,(,),、乘方,(),运算的含义与数学中的基本相同。只有取负,(,),为单目运算,其他均为双目运算。,*,算术表达式,Visual Basic,中的算术运算符,:整数除法,如,5 3,、,a b,;,整数除法运算符,(),执行整除运算,结果为商的整型值。如,12 5,的值为,2,,而不是,2.4,。,整数除法的操作数一般为整型值,当操作数带有小数时,首先四舍五入为整型或长整型数,然后进行整除运算。其运算结果被截断为整型或长整型数,不进行四舍五入处理。例如:,x=53,y=25.656.5,运算结果为:,x=1,,,y=3,。,*,算术表达式,Visual Basic,中的算术运算符,Mod,:取模运算,如,14 Mod 3,;,Mod,用来求余数,其结果为第一个操作数整除以第二个操作数所得的余数。例如,,8 Mod 5,的结果为,3,。同理,,14 Mod 3,的结果为,2,。,在书写表达式时,应注意到和数学中表达式的区别:,(1),每个符号占,1,格,所有符号都必须一个一个并排写在同一横线上,不能在右上角写幂次方或右下角写下标。因此,应该将,x,2,写成,x2,,,x,1,+x,2,写成,x1+x2,。,(2),乘法运算符不能省略,,2x,应该写成,2*x,。,(3),所有括号都用小括号,没有大括号和中括号,例如,,2*(3+2*(10,2),是正确的,而,2*3+2*(10,2),是非法的。,算术运算符的优先级,在,Visual Basic,中上述算术运算符按从高到低的优先顺序为:,(,取负,),*,或,/,Mod,+,或,(,减法,),例如:,5*3/2,20+(3+52),在表达式求值时,先计算,(3+52),的值,这里又要先计算,52,的值,其值为,25,,则括号内的值等于,28,。再计算机,5*3/2,的值,为,7.5,。最后计算,7.5,20+28,的值,得到整个表达式的值为,15.5,。,*,字符串表达式,连接运算,在,Visual Basic,中,有两个字符串连接运算符,即“,+”,和“,&”,。它们作用相同,因为“,+”,也可以作为加法运算符,而“,&”,专门作为连接符,为避免混淆,推荐使用“,&”,。,字符串表达式连接运算格式为:,&,。,如果要把多个字符串连接起来,每两个字符串之间都要用“,&”,号分隔。例如:,Please&sit down,,,How&are&you!,表达式的结果分别为,Pleasesit down,,,How are you!,。,*,日期表达式,日期型数据是一种特殊的数值型数据,它们之间只能进行加,(+),、减,(-),运算。,(1),两个日期型数据相减,结果是一个数值型数据,(,两个日期相差的天数,),。例如:,#10/15/2001#-#8/15/2001#,结果为数值型数据,即,61(,天,),。,(2),日期型数据可以加上,(,或减去,),一个表示天数的数值型数据,其结果仍然为一日期型数据。例如:,#8/15/2001#+30,#8/15/2001#,30,结果为日期型数据,前者为,2001,年,9,月,14,日,后者是,2001,年,7,月,16,日。,*,关系表达式,关系运算符,也称比较运算符,用来对两个表达式的值进行比较,比较结果是一个布尔值:真,(True),或假,(False),。,程序设计语言一般都提供了以下,6,种关系运算符:,关系运算符的优先级别相同,它们低于算术运算符,但高于逻辑运算符。,关系运算符两侧的数据类型必须完全一致。例如,下面都是合法的关系表达式:,37.5,,”,a”=(,大于等于,),=(,等于,),(,不等于,),(,小于,),(,大于,),*,注意,(1),关系运算符低于算术运算符,,如计算表达式“,(x+2)(b,2)”,值与“,x+2b-2”,是一样的,即同为真或同为假。,(2),数值型数据按其数值大小进行比较,日期型数据可看成“,yyyymmdd”,的整数形式进行数值比较,字符型数据按其,ASCII,码值进行比较。例如:,3#12/19/2004#,结果为,False,”a”b”,结果为,True,*,注意,(3),注意关系表达式与数学不等式的区别,如数学表达式:,xyz,,并不能写成,x=y=z,,其含义为:,x=y,且,y 5 And 4 4 And 1 ,结果为,True,*,逻辑表达式,(2)Or(,或,),。,对两个表达式进行比较,如果其中某一个表达式的值为,True,,结果为,True,。只有两个表达式的值均为,False,时,结果才为,False,。例如:,2+3 5 Or 3 8 ,结果为,False,Not(3 8),结果为,True,*,逻辑表达式,Xor(,异或,),Xor(,异或,),是指如果两个表达式同时为,True,或同时为,False,,结果为,False,,否则为,True,。,Eqv(,等价,),Eqv(,等价,),与异或正好相反,即如果两个表达式同时为,True,或同时为,False,,结果为,True,,否则为,False,。,Imp(,蕴含,),Imp(,蕴含,),则是指当第一个表达式为,True,,且第二个表达式为,False,时,结果为,False,。,*,逻辑表达式,逻辑运算符的优先顺序为:,NotAndOrXorEqvImp,。也就是说,逻辑非,(Not),级别最高,逻辑蕴含,(Imp),级别最低。逻辑运算符的优先级别低于关系运算符,更低于算术运算符。,表,3.2,逻辑运算真值表,a,b,a And b,a Or b,Not a,a Xor b,a Eqv b,a Imp b,True,True,True,True,False,False,True,True,True,False,False,True,False,True,False,False,False,True,False,True,True,True,False,True,False,False,False,False,True,False,True,True,*,混合表达式的执行顺序,一个表达式可能含有多种运算,计算机按一定的顺序对表达式求值。一般规定的顺序是:,(,1,)函数运算;,(,2,)算术运算;,(,3,)关系运算;,(,4,)逻辑运算。,注意,您可以用括号改变优先顺序,强制表达式的某些部分优先执行;,字符串连接符“,&”,优先级在所有算术运算符之后,而在关系运算符之前;,指数和负号相邻时,负号优先,如对于表达式,3-2,,即表达,3(-2),。,*,习题,*,习题,*,习题,*,习题,*,习题,
展开阅读全文