资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,第,4,章,Visual Basic,程序设计基础,主讲人(制作人):钱瑛,2008-01-20,江南大学信息工程学院计算机基础部,本章主要内容,Visual Basic,语言字符集及编码规则,数据类型,常量和变量,运算符和表达式,常用内部函数,学习重点,清楚各种常用数据类型,掌握其表示以及各类数据在内存中的存放形式,了解自定义数据类型,理解常量和变量的概念、掌握其定义和使用,掌握各类运算符、表达式和常用内部函数的功能和使用方法,4.1.1,Visual Basic,语言字符集,VB,语言字符集与其他高级程序设计语言的字符集类似,包含字母、数字和专用字符三大类,共计89个字符:,字母:大写英文字母,AZ;,小写英文字母,az,数字:09,专用字符:共计27个,见表4-1,4.1.2 编码规则(1),Visual Basic,中的语句是执行具体操作的指令,,每条语句以回车键结束,。在一般情况下,输入程序时要求按行书写,,一行上书写一条语句,一句一行,。,Visual Basic,允许使用复合语句行,即在,同一行上书写多条语句,则各语句间必须用冒号“,:,”隔开,;注意:一个语句行的长度最多不能超过1023个字符,且在一行的实际文本之前最多只能有256个前导空格。,Visual Basic,允许,一条较长的语句分多行书写,但必须在续行的行末加入续行符“,_,”(,一个空格和下划线,),,表示下一行与该行属于同一个语句行;一个逻辑行最多只能有25个后续行。,4.1.2 编码规则(2),VB,代码不区分字母的大小写,VB,代码中必须使用,西文标点,VB,标识符的命名规则:,必须,以字母或汉字开头,,由,字母、汉字、数字或下划线,组成,字符必须并排书写,不能出现上下标形式,长度小于等于255个字符,不可以是系统关键字,不能包含空格、西文标点符号和类型说明符,%、&、!、#、$,在作用域范围内必须唯一,注意:虽然,VB,中可以使用汉字进行标识符命名,但是为了书写方便,一般不使用汉字,4.1.2 编码规则(3),使用注释增加程序的可读性。注释语句格式:格式1:,Rem,注释内容,格式2:,注释内容,说明:注释语句是非执行语句,仅仅对相应位置上的代码起到注释作用。格式1中的关键字,Rem,和注释内容之间必须用空格隔开;注释内容中可以包含任意字符(西文、中文等);格式1是以单独注释语句形式出现;格式2在使用时较格式1更加灵活,可以以单独注释语句形式出现,也可直接出现在某行语句后面进行注释,但是续行符后面不能加注释。,4.2 数 据 类 型,数值数据类型,字符数据类型,String,逻辑数据类型,Boolean,日期数据类型,Date,对象数据类型,Object,变体数据类型,Variant,注意点,注1:数据类型问题,选用,什么类型,满足数据的表示要求,如何用,最节约、最有效率,的方法表示数据原则:能用占用较少字节的类型尽量使用占用字节较少的数据类型,注2:对象属性类型,Width、Height、Top、Left,属性取值为,数值类型,Caption、Text,属性取值为,字符串类型,Visible、Enabled,属性取值为,布尔类型,1,Integer,和,Long,用于保存带有符号的、不带小数点和指数符号的整数,存放整数的字节最高位是符号位。整数运算速度快、精确,但表示数的范围小。,整数的表示形式为,n%,或,n&,Integer,型整数能表示,-32768,+,32767,范围内的整数,,%,是,Integer,整型的类型说明符,可省略,Long,型整数能表示-2147483648,2147483647范围内的整数,,&,是,Long,长整型的类型说明符。,356、+356、-356、356%合法,Integer,型常量,35689、-1246978、356&合法,Long,型常量,2,Single、Double,用于保存浮点实数(带有小数部分的数值),浮点实数表示数的范围大,但有误差,且运算速度慢。,单精度浮点数精度为7位,双精度浮点数精度为1516位。,单精度型和双精度型常量有两种表示形式,即,小数,形式和,指数,形式。,指数形式由,符号,、,指数,和,尾数,3部分组成,单精度浮点数和双精度浮点数的,指数,分别用“,E,”(,或“,e”),和“,D,”(,或“,d”),来表示,含义为“,乘以10的幂次,”。,2,Single、Double,单精度型表达形式:,n!、,nE,m、n.,nE,m,双精度型表达形式:,n.n、n#、,nD,m、n.,nD,m,其中,,n、m,是无符号整数,-2.15!、0.123!、0.34625,E+3、2.34E8、123.4E-3,表示合法的单精度数,-346.25、1234567.89、90.3#、3,D10、1.2D-6、0.34625E+3#,表示合法的双精度数,2,Single、Double,单精度型和双精度型常量的小数形式若超出有效位数,进行小数部分的截取;若整数部分超出有效位数,自动转为指数形式表示。,当幂为正数时,正号可以省略,2.34,E8,等价于2.34,E+8,3D10,等价于3,D+10,同一个实数有多种表示形式,-346.25可以表示为-3.4625,D+2、-0.34625D+3、-34.625D+1、-3462.5D-1、-34625.D-2,等,一般将-3.4625,D+2,称为“规格化指数形式”,默认情况的,直接实型常数都是双精度类型,-346.25与-346.25#是等价的双精度类型常数。,3,Currency,货币数据类型是为表示钱款而设置的,是定点实数或整数,精确到,小数点后4位,和,小数点前15位,,用于货币运算。,表示形式在数字后加,符号,-346.25、2346、0.1234都是合法的货币数据形式,。,4,Byte,字节实际上是一种数值类型,以1个字节的无符号二进制数存储。,说明,不同类型的数据取值的范围、所适应的运算不同,在内存中所分配的存储单元数目也不同,因此正确地区分和使用不同的数据类型,不仅可满足处理问题表示数据的要求,而且可使程序运行时占用较少的内存,确保程序运行的正确性和可靠性,Visual Basic,规定在数值型常数后加类型说明符可以改变数据的类型,从而改变数据在内存中的存储空间大小。,3456%、3456&、3456!(或0.3456,E+4)、3456#(,或3456.0、0.3456,D+4、0.3456E+4#)、3456,都表示与3456同值的数据,但是类型不同在计算机内存中所占用的空间不同。,4.2.2 字符数据类型,String,字符串是字符序列,由西文字符、汉字和标点符号组成,在,VB,中字符串常量两端用,双引号,括起,456,VB,程序设计,“01/02/2008,PM-12:30:24,说明:,(1),是长度为0(既不含任何字符)的字符串,称为空字符串(或,空串,)。,(2)若字符串中有双引号,可用连续的两个双引号表示字符串中的,示例如下:,学习,VB,课程 表示字符串:学习,VB,课程,(3),Visual Basic,中的字符串变量有定长和变长两种,在定义时是有区别的。,4.2.3 逻辑数据类型,Boolean,逻辑数据类型又称布尔类型,用于逻辑判断,只有,True,和,False,两种取值,描述“真/假”、“对/错”、“是/否”、“开/关”等两种状态信息。,Enabled、Visible、,FontBold,等就是取值为,True,或,False,的逻辑型属性,因此常常与条件判断语句配合,获取对象的状态信息。,4.2.4 日期数据类型,Date,日期型数据以8个字节的浮点数值表示,可以表示的日期范围为公元100年1月1日9999年12月31日,时间范围为0:00:0023:59:59。,日期型数据的两种表示法:,任何在字面上表示日期和时间的字符,两端用“,#,”括起来,#3/8/2008#,#3-8-2008#,#,March 8 2008#,#2008-3-8 20:20:20 PM#,数值表示:数值的整数部分表示距离,1899年12月30日,的天数,小数部分表示时间,0为午夜,0.5为中午12点,,负数,代表的是,1899年12月31日,之前的日期和时间。,4.2.5 对象数据类型,Object,对象型数据用来表示图形、,OLE,对象或其他对象,也可以使用对象型数据的属性和方法。,4.2.6 变体数据类型,Variant,变体数据类型是一种可变的数据类型,可以表示任何值,包括数值、字符串、日期/时间等。变量如果不加类型说明,系统默认为变体型(,Variant),,可使用,VarType,函数检测变体型变量中保存的数值究竟是何类型。,Variant,类型的变量还可以包含,Empty(,未赋值)、,Null(,未知或缺少的值,常见于数据库)和,Error(,出现错误时的值)3个特殊值,可以使用,IsEmpty,函数来测试一个,Variant,变量是否被赋过值,使用,IsNull,函数来测试一个,Variant,变量是否具有,Null,值。,4.3 常量和变量,4.3.1 数据的存储,程序运行时,使用的各种类型数据都是存放在内存单元中,并且给内存单元取名,计算机就是通过内存单元名来访问其中的数据。,内存中的存储单元分为静态存储区和动态存储区。静态存储区中的存储单元一旦分配,要到应用程序结束时才释放空间;动态存储区中的单元则可以在应用程序执行中释放,数据也可以被多次更新。,VB,中数据都有,常量,和,变量,形式。常量是存放在静态存储区的常量区中的数据。常量区一旦放入数据就不允许用户修改,即,常量,在程序执行期间,,其值是不发生变化,的,直到数据单元被释放。变量是存储单元的代号,对应于存放在动态存储区的单元或静态存储区的非常量区;程序执行过程中,使用变量来暂时存放程序中有用的数据,,变量,的,内容可以允许多次更新,(存入新的数据)。,4.3.2 常量,根据表示形式可以将常量分为,直接常量,和,符号常量,1直接常量(字面常量),直接常量可从形式上判断其类型和大小,#3/8/2008#为日期型常量,230.0为,Double,型常量,asdf,、230.0,为字符串常量,可以在常量值后加类型说明符(%、&、!、#、)来说明常数的数据类型,345%为,Integer,类型常量,在,VB,中的整型常量中,默认是用十进制表示的数值,八进制,常数在数值前加,&,O,,,如&,O567,&O777,等,十六进制,常数在数值前加,&,H,,,如&,H189,&HFFFF,等。,VB,中的颜色数据常用十六进制整数表示,如&,H0000FF00,表示绿色。,2符号常量,Visual Basic,中的符号常量分为用户自定义符号常量和系统符号常量。,Const,语句,用户自定义,符号常量,来代替指定的值格式:,Private|Public,Const,常量名,As,类型名,=表达式,Const PI As Double=3.1415926535,声明,PI,为双精度符号常量,值为3.1415926535,Const NATIONALDAY As Date=#10/1/1949#,声明,NATIONALDAY,为日期常量,值为1949年10月1日,Const a As Integer=5,b As Double=12.5 ,一句语句中定义多个常量,中间用逗号隔开,Const,语句格式说明,常量名的命名遵循,Visual Basic,标识符的命名规则,符号常量名常常使用大写字母。,As,类型名:说明该符号常量的数据类型,若缺省,则由其右侧表达式的数据类型决定常量类型。,用户也可以在常量名后加类型说明符,定义该常量的类型,Const PI,#,=3.1415926535 ,声明,PI,为,双精度,符号常量,值为3.1415926535,表达式可以由运算符、常量(直接常量和已定义的符号常量)组成,必须具有一个确定的值;注意,该表达式中绝对不允许使用变量、函数。,Const TAXMIN!=0.05,Const TAXMAX!=10*TAXMIN,Const,语句格式说明,Public,选项只能用在标准模块的通用部分,表示该符号常量可以在整个应用程序中使用,,Private,选项则可用在模块(包括窗体模块和标准模块)的通用部分,表示该符号常量可以在该模块范围内使用。默认情况为,Private。,符号常量一旦声明,在之后的代码中只能引用,不能再次定义或赋值。,(2)系统符号常量,VB,系统本身提供了一些符号常量,存放于系统的对象库中。,如,vbOK,、,vbRed,、,vbYes,等,用户可以在“对象浏览器”中查看,Visual Basic for Applications(VBA)、ActiveX,控件,、,Microsoft Excel,和,Microsoft Project,等提供对象库的应用程序也提供了符号常量,这些符号常量可与应用程序的对象、方法和属性一起使用,为避免不同对象中同名变量的混淆,在引用时使用2个小写字母前缀,区分引用哪个对象库中符号常量,vb,表示引用,VB,和,VBA,中的符号常量,xl,表示引用,Excel,中的符号常量,db,表示引用,Data Access Object,中的符号常量,(2)系统符号常量,在使用时既可以使用系统符号常量,也可以直接使用系统符号常量对应的数值。,Form1.,BackColor,=,vbRed,Form1.,BackColor,=255,Form1.,BackColor,=&HFF,以上3条语句执行时都能将窗体的背景色更新为红色,显然使用系统符号常量,vbRed,,,程序代码的可读性更强。,4.3.3 变量,在程序运行过程中,内存单元中数据值可以改变的称为变量。一个变量必须有一个名字和相应的数据类型,通过名字来引用一个变量,而数据类型则决定了该变量的存储方式和在内存中占据存储单元的大小,变量名实际上是一个符号地址,程序编译连接时,由系统给每一个变量分配一个内存地址,在该地址的存储单元中存放变量的值。在程序中从变量中取值,实际上是通过变量名找到相应的内存地址,从其存储单元中取数据。注意变量名和变量值这两个概念的区别。,4.3.3 变量,在,Visual Basic,中,变量有两种形式,即对象的,属性变量,和,内存变量,创建对象时,,Visual Basic,系统会自动为它创建一组变量即属性变量,并为每一个属性变量设置其默认值。这类变量可供程序员直接使用,如引用其值或赋予新值,本章讨论的是,内存变量,,它是用户根据需要所声明的。,1变量的声明(显式声明),与符号常量一样,要求变量“,先声明,后使用,”。声明变量就是定义变量名和变量数据类型,从而决定系统为它分配多少存储单元存放数据。,(1)在定义变量时指定其数据类型,格式:,Declare,变量名,As,类型名,说明:,Declare,可以是,Dim、Public、Private、Static,Dim,用于在模块的通用部分定义模块级变量以及在过程中定义过程级变量,。,Private,用于在模块的通用部分定义模块级变量。,Public,用于在模块的通用部分定义全局变量。,Static,用于过程中定义过程级静态变量。,(1)在定义变量时指定其数据类型,说明:,仅在某个过程中使用的变量,就在该过程中用,Dim,声明定义,若要在多个过程中使用公共变量,则必须在模块的通用部分用,Dim、Private、Public,声明定义此变量,变量名遵循,Visual Basic,标识符的命名规则。命名时应尽量有意义,做到“顾名思义”。,Sum、Ave_Score、,PersonId,是合法的变量名,可在变量名前加一个缩写的前缀来表明该变量的数据类型,intSum,、,sngAveScore,、,strPersonId,As,类型名:类型名可以是基本数据类型和用户定义的类型,也可以省略,省略后变量为默认数据类型(默认情况下为变体型),但变体型占用内存空间较多,执行效率低,Public a As Integer ,定义一个,Integer,型全局变量,a,Dim d ,定义一个变体型变量,d,等价,Dim d As Variant,(1)在定义变量时指定其数据类型,说明:,定义字符串类型的变量:,Dim,字符串变量名,As String,变长字符串变量,Dim,字符串变量名,As String*,字符数,定长字符串变量,定长字符串变量的长度,由*号后面的字符数决定,若赋予变量的字符数少于指定的字符数,则尾部用空格补足;若超过指定的字符数,系统自动截去尾部超出部分的字符。,Dim strExpress1 As String ,定义变长字符串变量,strExpress1,Dim,strId,As String*8,定义定长字符串变量,strId,存放8个字符,一条声明语句可将多个声明组合起来,在这种格式下,即使几个变量的类型一致,也必须分别用“,As,类型名”声明各自的类型。,Dim,YourName,As String*20,BillsPaid,As Currency,Dim i As Long,j As Long,Private a,b,c As Integer ,这里,a,和,b,为,Varient,型,,c,为,Integer,型,(2)用类型说明符定义变量,对于具有类型说明符的数据类型,采用简单格式定义变量:,Declare,变量名,类型说明符,说明:,Declare,可以是,Dim、Public、Private、Static,中的任意关键字,基本类型的类型说明符(%、&、!、#、)在表4-2类型说明符列中列举出,变量名与类型说明符之间没有空格,Dim i&,J#,K!,定义长整型变量,i,,双精度变量,J,,单精度变量,K,2,变量的默认声明(隐式声明),Visual Basic,系统允许用户不作声明而直接使用变量,这样的变量是过程级的变体型变量,只能在过程中使用。,以下事件过程中的变量,a,未经声明定义,Private Sub Form_Click()a=Val(Text1.Text)Print aEnd Sub,代码等价于,Private Sub Form_Click(),Dim a As Variant,a=Val(Text1.Text)Print aEnd Sub,3,Option Explicit,强制显式声明,Visual Basic,系统提供了强制用户对变量进行强制显式声明的措施:,在模块代码窗口的通用部分开头直接输入,Option Explicit,语句,执行,“工具”菜单的“选项”命令,,在“编辑器”选项卡中,选中“,要求变量声明,”复选框,,,Visual Basic,系统就自动生成语句,Option Explicit,,并加到模块的声明部分,通过对变量进行强制显式声明,凡是发现程序中使用未经显式声明的变量,系统将自动显示一个“变量未定义”错误警告信息框。,4变量默认数据类型的设置,VB,系统允许用户在声明变量前,自行设置或修改变量默认的数据类型。,格式:,Def,Type,字母范围,说明:,(1),DefType,语句放在模块声明部分的开头,设置指定字母范围开头的变量的默认数据类型,(,2),Def,是系统关键字,,,Type,是基本数据类型标志,,用以下格式分别表示各基本类型:,Byte、Int、,Lng,、,Sng,、Dbl、Cur、Str、,Bool,、Date、,Obj,、,Var,。,注意,在,Def,和类型标志之间不能有空格,(3)字母范围采用“字母-字母”的形式表示,其中字母可以,是,AZ,中的任何一个(大小写均可)。语句中说明的字母可以作为该类型的变量名,而且以该字母开头的变量名也是那种类型的变量。,4变量默认数据类型的设置,说明:,(4),DefType,语句不允许重复定义,例1,DefSng,C-F ,该语句定义后,CF,以及凡是用,CF,开头命名的变量默认类型是单精度型,Dim a As Integer,b,c As Double,d,f,定义,a,为整型变量,b,为变体型变量,c,为双精度型变量,d,和,f,均为单精度型变量,例2:若要将模块中的变量的默认类型全部设置为单精度型,可以在模块的通用部分按如下方法定义,DefSng,A-Z,Dim a As Integer,b,c As Double,d,f,定义,a,为整型变量,c,为双精度型变量,b、d,和,f,均为单精度型变量,5变量的赋值,给变量赋值实际就是将数据放入指定变量的内存空间。使用声明语句定义一个变量,后,,Visual Basic,系统会自动给变量赋予一个默认的初始值。,(1),数值,类型变量的初值为,0,(2),字符串,型变量的初值为,空串,(“”),(3),布尔,类型变量的初值为,False,(4),日期,类型变量的初值为,#1899-12-30 0:00:00#,(5),变体,类型变量的初值为,Empty,赋值语句,格式:,变量名=表达式,Let,变量名=表达式,作用:将赋值运算符“=”右侧表达式的值赋给左侧的变量。,说明:,(1)两种格式完全等价,通常,采用第1种格式,(2)左侧的变量包括属性变量和内存变量,(3)表达式包括常量(直接常量和已定义的符号常量)、变量、对象属性、函数形式以及由它们与运算符的组合形式。,赋值注意以下问题,(1)给变量赋值的语句兼有计算和赋值双重功能,即,先,完成赋值号,右侧表达式的计算,,然,后,将计算好的表达式的值,赋给左侧的变量,。,a=12.4+56.12,先计算右侧表达式,后将计算结果赋给左侧变量,a,(2),在某一个时刻,变量的内存单元只能存放一个数据,要修改数据则采用赋值的方法实现。注意,变量总是按语句执行次序,存放最近一次赋值的数据。,赋值注意以下问题,(3)一般要求赋值号两边的数据类型一致,这样才能完成正确的赋值,即赋值号左侧的数据一般情况下只能接收与它类型相同的表达式的值。当赋值时表达式的值的类型并不完全和变量类型相同时,系统根据自动转换的原则将值转换成与变量相同的类型后赋值,一旦自动转换失败,则赋值也失败,系统出错,赋值注意以下问题,(4),Variant,数据类型可在不同场合代表不同数据类型。当指定变量为,Variant,变量时,,,Visual Basic,会自动完成各种必要的类型转换。,(5)区分赋值号和关系运算符中的判等号。在,Visual Basic,中,系统会根据等号所处的位置来区分是赋值号还是判等号:仅在赋值语句最左端的等号是赋值号,其余的均为判等号。判等号所在的表达式一般不能单独以语句的形式出现,而赋值号则是以赋值语句形式出现;赋值号两边的数据是不能随便相互交换的,否则可能运行出错或产生逻辑上的错误,而判等号两边的数据是可以相互交换的。,4.4 运算符和表达式,碰到具体问题时,不光是要表示待处理的数据,而且还要运用有效的方案处理数据、解决问题。例如,已知三边,求三角形的面积。与数学中一样,计算机语言中,对数据的加工处理称为运算(即操作);被运算的对象,即数据,称为操作数(或运算量);用运算符或操作符来描述最基本的运算形式。因此合理地运用运算符描述对哪些数据、以何种顺序、进行什么样的操作,是本节学习的关键。,Visual Basic,中定义了丰富的运算符,包括算术运算符、字符串运算符、关系运算符和逻辑运算符和对应的表达式。,4.4.1 算术运算符和表达式,1算术运算符,+,加,-,减(负号),*,乘,/,除,整除(取商的整数部分、要求操作数为整型数据),Mod,取余运算(要求操作数为整型数据),乘方运算符,&,字符串连接运算,4.4.1 算术运算符幂运算,用来计算乘方和方根,5 2 5的平方,5 3 5的立方,即5*5*5,结果为125,5 -3 5的立方的倒数,即1/125,结果为0.008,25 0.5 25的平方根,结果为5,125 (1/3)125的立方根,注意,由于幂运算的运算优先级最高,当指数部分是一个表达式,必须加上括号,否则上述表达式125 1/3,将先完成125 1运算,后进行除3运算,即改变了原运算顺序。,4.4.1 算术运算符整除和取余运算,整除(,)运算是整数之间的除运算,其结果是,商的整数部分,(即普通除运算结果的整数部分),所以又称为商取整除法,8 5,8整除5,结果为1,取余(,Mod,),运算是整数之间的取余运算,结果为第1个操作数整除第2个操作数后所得的,余数部分,。取余运算结果的正负号始终与第一个操作数的符号相同,8,Mod 5,结果为3,8,Mod 5,结果为3,-8,Mod 5,结果为-3,-8,Mod 5,结果为-3,算术运算符注意问题,(1)算术运算符要求参与运算的操作数是数值型,运算结果也是数值型;若操作数是表示数值的字符串或逻辑型,则按自动转换的原则转换成数值类型后参与运算。,2*“3.14”*3,数值字符串3.14“转换为3.14参与算术运算,结果是18.84,“3,D2”+20 5,数值字符串3,D2“,转换为300.0参与算术运算,结果是315.0,False+10 True,逻辑值,False,转换为0、,True,转换为-1参与算术运算,结果是11,算术运算符注意问题,(2)除(取相反数)为单目运算符外,其余的算术运算符均为双目运算符。,(3)在算术运算中若操作数的数据类型相同,则运算结果的数据类型也为该类型;若数据类型不一致,具有不同的数据精度,则,Visual Basic,根据精度大小(数值型数据按精度大小从小到大排序为,IntegerLongSingleDoubleCurrency),,将精度低的数据转换成精度高的数据类型后进行运算,规定运算结果的数据类型以精度高的数据类型为准,256+890 加号两侧操作数均为,Integer,型,运算结果也是,Integer,型,483*12.3!乘号左侧操作数为,Integer,型,右侧为,Single,型,运算结果以精度高的,Single,型为准,算术运算符特例,当,Long,型数据与,Single,型数据运算时,结果为,Double,型数据,除法和幂运算的结果总是,Double,型,与操作数类型无关,整除()和取余(,Mod),运算时,若操作数为实数,则先对其进行四舍六入五成双的取整,然后完成整除或取余,结果仍为整型或长整型,4 3,幂运算的结果是,Double,型,8.5 5.56,先将操作数8.5和5.56进行四舍六入五成双的取整,分别得到8和6,整除结果是1,8.5,Mod 5.56,先将操作数8.5和5.56进行取整,分别得到8和6,取余结果是2,2算术表达式,由算术运算符、圆括号、函数、常量和变量组成的式子称为算术表达式,算术表达式的值是数值型的。,0.5*,g*t 2+v0*t,(x%Mod 10)*10+x%10,算术表达式的值是有类型的,所以也存在着值的溢出(超出取值范围)现象,运算时要注意。,235+32760 出错“溢出”,表达式的值也是,Integer,型,32995超出了整型数据的范围,提醒:在合理选择数据类型描述数据时,不仅要从描述数据目前的值考虑,还要从它参与的运算角度、运算结果等方面考虑,3日期型表达式,日期型数据是一种特殊的数值型数据,它们之间只能进行加(+)、减()算术运算。日期型表达式由算术运算符“+”、“”、算术表达式、日期型常量和变量、函数组成。一般有以下3种情况:,(1)两个日期型数据进行减法运算,结果是一个数值型数据(两个日期相差的天数)。#05/09/2008#-#05/01/2008#表达式值为8,(2)一个日期型数据与一数值型数据进行加法运算,结果是一个日期型数据。#05/01/2008#+8值为日期型数据#05/09/2008#,(3)一个日期型数据与一数值型数据进行减法运算,结果是一个日期型数据。#05/09/2008#-8 表达式值为日期型数据#05/01/2008#,4.4.2 字符串运算符和字符串表达式,Visual Basic,中的字符串运算符主要用来将两个字符串连接成一个字符串,,Visual Basic,提供了两个字符串的连接符,即“&”和“+”。,“&”和“+”是双目运算符,用来将两个字符串首尾连接的,连接结果仍为字符串类型。优先级相同,但低于算术运算符。,江南大学&信息工程学院 连接结果为江南大学信息工程学院,江南大学+信息工程学院 连接结果为江南大学信息工程学院,字符串变量,a,中存放的内容是&,a,若,a,中的内容为,VB,,则连接结果为字符串变量,a,中存放的内容是,VB,注意问题,(1)使用运算符“&”时,操作数与“&”之间必须加上一个空格分隔。因为符号“&”还是长整型数据的类型定义符,若操作数与符号“&”连接在一起,,VB,系统优先将它作为长整型数据类型符处理,继而就会出现语法错误,(2)“+”与“&”运算符在使用时的区别如下:,“&”运算在连接运算前,系统自动先将两边的非字符串类型数据转换成字符串型数据,然后再进行连接操作,运算符“+”两边仅当都是字符串类型数据时,才进行字符串的连接操作;否则系统将运算符“+”用作算术运算符,进行求和运算:若其中一个操作数是数值型或逻辑型,另一个操作数是数字字符串或逻辑型,则系统会自动将数字字符串和逻辑型转换为数值型,然后进行算术求和运算;否则系统由于无法自动将操作数转换为数值型,则出现“类型不匹配”的出错信息,“+”与“&”运算符例1,VB&6,连接结果为:,VB6,125.6&25,连接结果为:125.625,True&125.6,连接结果为:,True125.6,VB+6,连接结果为:,VB6,VB+6,出错“类型不匹配”,125.6+25 连接结果为:125.625,125.6+25 求和结果为:150.6,125.6+25 求和结果为:150.6,125.6+25 求和结果为:150.6,True+125.6,连接结果为:,True125.6,True+125.6,求和结果为:124.6,True+125.6,求和结果为:124.6,True+125.6,出错“类型不匹配”,“+”与“&”运算符例2,Dim i As Integer,J As String,K As String,L As Integer,J=Program:i=12:K=12:L=24,Print i+K,结果为24,Print J+K,结果为,program12,Print J+I,出错:类型不匹配,Print i+L&J,先进行,i,与,L,的求和运算,然后与,J,完成字符连接运算,结果为36,Program,Print i+L&K+L,先进行,i,与,L、K,与,L,的求和运算,然后完成字符连接运算,结果为3636,Print i+L&J+L J,与,L,进行求和运算时出错:类型不匹配,4.4.3 关系运算符和关系表达式,关系运算用于对两个数据进行比较,,比较结果为逻辑值,“,True,”,或“,False,”,关系运算符,小于,大于,=,大于等于,不等于,=,等于,Like,字符串匹配,Is,用来比较两个对象的引用变量,4.4.3 关系运算符和关系表达式,关系运算的规则如下,(1)所有关系运算符的优先级相同,但低于算术和字符串运算符,(2)两个数值型数据按大小比较,(3)日期型数据按日期的早晚比较,晚日期大于早日期,(4)两个字符型数据,按,ASCII,值,比较:,从,第一个字符,开始,依次比较对应位置字符,的,ASCII,码值,直到遇到第一对,ASCII,码不相等的字符为止,,,ASCII,码,值,大的字符串大。若两字符串相等,则字符串中的每个字符都相等且字符串长度也相等,;汉字字符大于西文字符,“,0”“9”,“A”“Z”,“a”“z”,48,65,97,汉字,57,90,122,4.4.3 关系运算符和关系表达式,关系运算的规则如下,(5)数值型数据与可转换为数值型的数据比较,按数值大小比较。数值型数据不能与无法转换为数值型的数据比较,系统出错,77 6.0 按数值比较,结果为,True,-3 False,按数值比较,结果为,True,77 “ABC”,无法比较,系统出错“类型不匹配”,(6)数学中判断,x,是否在,a,b,区间内,习惯上写成,axb,,但在,Visual Basic,中不能写成,a=x=b(,该表达式的含义:先判断,a,是否小于等于,x,,然后再将判断的逻辑结果与,b,进行比较),而应采用即将介绍的逻辑“,And”,与运算描述:,a=x And x=b,4.4.3 关系运算符和关系表达式,关系运算的规则如下,(7),Like,运算符用来比较字符串表达式和,SQL,表达式中的样式,与通配符“?”、“*”、“#”、字符列表、!字符列表结合使用,主要用于数据库模糊查询。其中:,“?”表示任何单一字符,“*”表示零个或多个字符,“#”表示任何一个数字(09),字符列表表示字符列表中的任何单一字符,!字符列表表示不在字符列表中的任何单一字符,表示姓名,StrName,变量中姓周的教师,,StrName,Like“,周*”,表示姓名,StrName,变量中不出现周字的教师,,StrName,Like“!,周*,(8),Is,运算符用来比较两个对象的引用变量,主要用于对象操作,本书不做介绍。此外,,Is,运算符还,在,Select Case,语句中使用(见第7章)。,4.4.4 逻辑运算符和逻辑表达式,逻辑运算是对逻辑值进行的运算,结果是逻辑型值,True,/,False,逻辑运算符,Not,逻辑非,And,逻辑与,Or,逻辑或,Xor,逻辑异或,Eqv,等价,Imp,蕴含,逻辑运算符的优先次序:,Not And Or,Xor,Eqr,Imp,逻辑运算符的运算规则和优先级,逻辑运算符说明,(1)逻辑运算符除,Not,运算是单目运算外,其余都是双目运算,(2)逻辑运算符两侧的操作数是逻辑型数据(,True,或者,False),,则运算结果也是逻辑型值,(3)逻辑运算符的运算优先级,低于,算术、字符、关系运算符,若,a=6,r=1,x=5,b=True,,则逻辑表达式:,x 2 Or b,先进行,x=2*3.14159*r And x 5 Or Not b,先进行2*3.14159*,r,算术表达式的计算,然后再进行关系运算,最后再进行,Not、And、Or,逻辑运算,运算结果为,False,逻辑运算符说明,(4),VB,中最常用的逻辑运算符是,Not、And,和,Or,,经常用于条件和循环语句,构造比较复杂的表达式进行逻辑判断。由,And,连接的条件表达式,必须,全部满足为真,,整个表达式才为,真,;,Or,连接的条件表达式,只要,满足其中之一为真,,整个表达式即为,真,;,学校推选三好学生,必须同时满足德育(,D)、,智育(,Z)、,体育(,T),名次均在班级前三名,D=3 And Z=3 And T=3 ,此处分别用,D、Z、T,表示德育、智育、体育的名次,必须使用,And,连接这些条件,D=3 Or Z=3 Or T y 0 x y And y 0,4.4.5 表达式的构造与计算,3表达式的计算,(1)表达式值的类型 表达式通过运算后有一个结果,运算结果的类型由数据和运算符共同决定。,(2)优先级比较。,同类运算符的优先级。前面介绍各种运算符时,指出了各类运算符中运算符的优先级,优先级为1的运算比优先级2的优先级高,依次类推;相同优先级的,按从左至右的出现顺序执行运算。在运算时,需要严格遵守优先顺序执行运算。,不同类运算符的优先级。在各种不同类型的运算中,优先顺序为算术运算,字符运算,关系运算,逻辑运算,圆括号可以改变优先顺序或使表达式更清晰。当表达式中含有括号时,总是先执行括号内表达式的值;对于多重括号,总是由内到外。,4.5 常用内部函数,函数调用格式:,函数名(参数列表
展开阅读全文