第4章 VB程序设计基础.ppt
第4章 VB程序设计基础,本章内容及要求:,4.1数据类型4.2常量和变量4.3变量的作用域4.4常用内部函数4.5字符处理与字符串函数4.6运算符与表达式,4.1 数据类型,数据是信息在计算机内的表现形式,也是程序处理的对象。VB提供了系统定义的基本数据类型,还允许用户定义自己的数据类型。,4.1 数据类型,一、基本数据类型,1.字符串型String字符串是一个字符序列,由ASCII字符组成。字符串通常要用双引号括起来。例如:“Hello!”湖南省衡阳市“8888”*”“”空字符串“有一个空格的字符串若字符串中有双引号,例如ABD“XYZ,则用连续两个双引号表示,即:ABDXYZ“,4.1 数据类型,VB中的字符串分为两种:变长字符串和定长字符串。变长字符串的长度是不确定的,可以从0231(约21亿)个字符。定长字符串含有确定个数的字符,最大长度不超过216(65535)个字符。,4.1 数据类型,2.数值型数值型数据分为整型数和浮点数两类。(1)整型数整型数是不带小数点和指数符号的数,在机器内部以二进制补码形式表示。正数的补码和它的二进制形式(即源码)相同;负数的补码为该数的绝对值的二进制形式取反加1。例如,整型数4,-4分别以下面的形式存放:(最高位为符号位,其中0为正,1为负)4 0000000000000100-41111111111111100整数的运算速度快,而且比其他数据类型占据的内存少。,4.1 数据类型,整型数又分为整数和长整数:整数Integer以2个字节(16位)的二进制数存储,取值范围为-32,76832,767。长整数Long以4个字节(32位)的二进制数存储,取值范围为-2,147,483,6482,147,483,647。,4.1 数据类型,思考:为什么16位整数Integer的取值范围为-32,76832,767?,4.1 数据类型,注意:16位整数Integer如果超出了这个取值范围(-32,76832,767),数据便会溢出。请看下面的代码:,Private Sub Form_Load()Dim a As Integera=32767a=a+1MsgBox aEnd Sub,4.1 数据类型,(2)浮点数浮点数也称实数,是带有小数部分的数值。分为单精度浮点数和双精度浮点数。单精度Single以4个字节(32位)存储,可以精确到7位十进制数。其中符号占1位,指数占8位,其余23位表示尾数,还有一个附加的隐含位。其负数的取值范围为-3.402823E+38-1.401298E-45,正数的取值范围为1.401298E-45 3.402823E+38。表示形式为:n.nEm 其中n.n是尾数,m是指数(以10为底的幂)例:-123.4E-3或-123.4e-3,相当于-0.12341.2345E3或1.2345e3,相当于1234.5,4.1 数据类型,双精度Double以8个字节(64位)存储,可以精确到15到16位十进制数。其中符号占1位,指数占11位,其余52位表示尾数,还有一个附加的隐含位。表示形式为:n.nDm 其中n.n是尾数,m是指数(以10为底的幂)例:123.4567D3或123.4567d+3,相当于123456.7,4.1 数据类型,(3)货币型Currency货币数据类型通常用于表示钱款。以8个字节(64位)存储,精确到小数点后面4位(小数点前面有15位)。在小数点后4位以后的数字将被舍去。其取值范围为-922,337,203,685,477.5808-922,337,203,685,477.5807浮点数中的小数点是“浮动”的,小数点可以出现在数的任何位置,而货币型数据的小数点是固定的,因此称为定点数据类型。,4.1 数据类型,(4)字节型Byte以1个字节(8位)的无符号二进制数存储,其取值范围为0255。注:在实际应用中,应根据需要使用数据类型。能用整型就不要用浮点型或货币型;如果要求的精度不高,则应使用单精度变量。这样不仅节省内存空间,而且可以提高处理速度。,4.1 数据类型,3.布尔型Boolean布尔型数据是一个逻辑值,用2个字节存储,它只取两个值:True/False。布尔型变量的默认值为False。将逻辑数据转换成整型时:True为-1,False为0;其它数据转换成逻辑数据时:非0为True,0为False。例如,下面的代码定义一个布尔型变量,并输出该变量:Dim mybln As Booleanmybln=3MsgBox mybln,4.1 数据类型,4.日期型Date 日期型数据占用8个字节,以浮点数形式存储。小数点左边的数值表示日期(距离1899-12-30的天数),小数点右边的数值表示时间。日期型数据的日期表示范围:100年1月1日9999年12月31日,时间表示范围:0:00:0023:59:59。日期常数必须用“#”符号括起来。例如:下面的几种日期型数据的格式都是合法的:#9/1/2009#或#2009-09-01#September 1,2009#08:30:00 AM#2002-5-4 14:30:00 PM#,4.1 数据类型,5.变体型Variant变体数据类型是一种可变的数据类型,可以表示任何值,包括数值、字符串、日期/时间等。当变体数据为数值时,以16个字节存储,最大可达Double的取值范围;当变体数据为字符时,以22字节+字符串长,与变长String有相同的取值范围。6.对象型Object对象型数据作为32位(4个字节)地址来存储,该地址可以引用程序中的任何对象。,4.1 数据类型,7.Decimal数据类型Decimal数据以12个字节存储,最多支持29个有效数位,在内存中的表示形式比浮点数更精确。适用于要求使用大量有效的整数及小数位数,并且不能容忍舍入误差的财务计算。Decimal数据类型只能在变体类型(Variant)中使用,不能把一个变量声明为Decimal类型。,4.1 数据类型,二、用户定义的数据类型,用户自定义类型,也称为记录类型,通过Type语句来实现,其语法格式如下:Type 数据类型名元素名As 类型名元素名As 类型名 End Type,4.1 数据类型,例如:对于一个学生的“学号”、“姓名”、“性别”、“年龄”、“入学成绩”等数据,为了处理数据的方便,常常需要把这些数据定义成一个新的数据类型(如Student类型)Type Student Xh As String Xm As String Xb As String Nl As Integer Score As Single End Type,二、用户定义的数据类型,4.1 数据类型,使用Type语句,应注意以下几点:1.记录类型的定义必须放在模块(包括标准模块和窗体模块)的声明部分,在使用记录类型之前,必须用Type语句加以定义。2.一般情况下,记录类型在标准模块中定义,其变量可以出现在工程的任何地方。当在标准模块中定义时,关键字Type前可以有Public(默认)或Private;而如果在窗体模块中定义,则必须在前面加上关键字Private。3.在记录类型中不能使用动态数组。,4.1 数据类型,下面的代码声明了一个Student类型变量st,然后为其各个元素赋初值,最后输出:Private Sub Form_Load()Dim st As Student st.Xh=20050001 st.Xm=王一 st.Xb=男 st.Nl=17 st.Score=92.5 MsgBox 学号:&st.Xh&Chr(10)&姓名:&st.Xm&Chr(10)&性别:&_ st.Xb&Chr(10)&年龄:&st.Nl&Chr(10)&入学成绩:&st.Score End Sub,4.2 常量和变量,一、常量,在VB中有三类常量:普通常量、符号常量和系统常量1.普通常量 普通常量指的是具体的常数,其类型有字符串型、整型、浮点型、布尔型、日期型等。,不同类型的数据可以常量的形式出现,也可以变量的形式出现。常量在程序运行过程中其值不会发生变化。而变量的值是可变的,它代表内存中指定的存储单元。,4.2 常量和变量,整型常数有3种形式:十进制:由八进制数字(09)组成。如125,0,-89。八进制:由八进制数字(07)组成。以&或&O(字母O)开头,以&结尾。例如:&O25&表示八进制整数25,即(25)8,等于十进制数21。十六进制:由十六进制数字(09及AF)组成。以&H开头,以&结尾。例如:&H25表示十六进制整数25,即(25)16,等于十进制数37。VB中的颜色数据常常用十六进制整数表示。,4.2 常量和变量,VB在判断常量类型时存在多义性。例如,值3.01可能是单精度类型,也可能是双精度类型或货币类型。为了显式地指明常数的类型,可以在常数后面加上类型说明符。%整型&长整型!单精度浮点数#双精度浮点数货币型$字符串型字节、布尔、日期、对象及变体类型没有类型说明符。,4.2 常量和变量,2.符号常量 在程序中,某个常量多次被使用,则可以使用一个符号来代替该常量,这样不仅在书写上方便,而且有效地改进了程序的可读性和可维护性。VB中使用关键字Const 声明符号常量。其格式如下:Const 常量名 As 类型|类型符号=表达式,常量名=表达式 注:表达式由普通常量、算术和逻辑运算符组成,但不能使用变量及函数。例如:Const Maxchars=254,Maxbue=Maxchars+1 注意顺序Const PI#=3.1415926 等价于:Const PI As Double=3.1415926,4.2 常量和变量,3.系统常量VB系统提供了应用程序和控件的系统定义常数。例如,要将文本框Text1的前景颜色设置为红色,可以使用下面的语句:Text1.ForeColor=vbRed这里的vbRed就是系统常量,这比直接使用16进制数来设置要直观得多。又如,窗口状态属性WindowsState可取0,1,2三个值,对应三种不同状态。在程序中使用语句:Myform.WindowsState=vbMaxmized,将窗口最大化,显然要比使用语句Myform.WindowsState=2 易于阅读和理解。,4.2 常量和变量,二、变量,变量是在程序运行时,其值不断发生改变的量。一个变量对应着计算机内存中的一块存储单元。例如,有两个存储单元,名称分别为User和Password,存放的值分别为“管理员”和“111”,如图所示:也可以将这两个存储单元的值改为“普通用户”和“222”:,4.2 常量和变量,1.变量命名规则只能由英文字母、汉字、数字和下划线组成,中间不能出现空格或小数点等;例如:变量名file_name是合法的,而file name是非法的。必须以字母或汉字开头,最后一个符号可以是类型说明符;例如:book3、a%这两个变量名是合法的;而3book是非法的。VB中不区分变量名的大小写;例如,Hello、HELLO、hello指的是同一个名字。,4.2 常量和变量,变量名长度可达255个字符;VB中的关键字不能单独作为变量名;VB关键字包括预定义语句(If,For,Loop等)、操作符(And,Mod等)和函数(Int,Sqr等)。例如,Print是非法变量名,但Print_3或Print3是合法的。为了增加程序的可读性,可在变量名前加一个缩写的前缀来表明该变量的数据类型。变量名一般大小写混合使用。例如:strAbc(字符串变量)intCount(整型变量),思考与练习 1.下列哪个符号不能作为VB中的变量名?(1)ABCabc(2)b1234(3)28wed(4)cmd2.下列符号哪一个是VB中的合法变量名?(1)x23(2)8xy(3)END(4)x8B,变量命名规则,4.2 常量和变量,2.变量的声明在VB程序中,使用变量前,一般要先声明变量的名称和数据类型。VB中可以强制显式声明变量,方法是在窗体模块、标准模块和类模块的通用声明段中添加语句:Option Explicit也可以设置为自动添加,方法是:选择“工具”“选项”“要求变量声明”。建议在程序设计的开始就设置。,4.2 常量和变量,变量的声明可以采用三种方式:用声明语句显式声明变量用DefType语句声明变量隐式声明变量(1)用声明语句显式声明变量格式:Dim|Static|Public|Private 变量名 As 数据类型,4.2 常量和变量,Dim 用于在标准模块、窗体模块中定义模块级变量或在过程中定义局部变量。例如:Dim Str As StringDim Total As IntegerDim Var1 As String,Var2 As Double 定义多个变量Dim Var1,Var2 As Integer注意:该语句并不能把两个变量同时定义为整型,4.2 常量和变量,可以使用类型说明符来替代As语句:Dim Str$Dim Total%Dim Var1$,Var2#则在引用该变量时可以省略类型说明符。例如,下面两个语句都是正确的:Var1=This is a stringVar1$=This is a string“,4.1 数据类型,用As String 可以定义变长字符串变量,也可以定义为定长字符串变量。变长字符串变量:其长度取决于赋给它的字符串常量的长度。例如:Dim Namevar As String 定义为变长字符串变量 Namevar=“湖南省衡阳市”定长字符串变量:事先定义字符串的长度,在程序运行过程中,始终保持其长度不变。当给它赋值时,不足的部分用空格填满;多出的字符被截去。例如:Dim MyName As String*4 定义为定长字符串变量MyName=“湖南省衡阳市,4.2 常量和变量,StaticStatic用于在过程中定义静态变量,每次引用该变量定义时,其值会继续保留。由Dim定义的变量称为自动变量,每次引用该变量定义时,变量值会被重新设置(数值变量设置为0,字符串变量设置为空)。例如:下面的程序中变量Var1和Var2的值会相同吗?Private Sub Form_Click()Dim Var1 As IntegerStatic Var2 As IntegerVar1=Var1+1Var2=Var2+1Print Var1,Var2End Sub每单击一次窗体,静态变量Var2累加1,而自动变量Var1会被置0,4.2 常量和变量,Public用来在标准模块中定义全局变量。Private用来在标准模块、窗体模块的声明部分定义模块级变量。,4.2 常量和变量,(2)用DefType语句声明变量用DefType语句可以在标准模块、窗体模块的声明部分定义变量,且只对它所在的模块起作用。一般格式:Def Type 字母范围Type可以是Int、Lng、Sng、Dbl、Cur、Str、Byte、Bool、Date、Obj、Var。DefType语句中说明的字母、以及以该字母开头的变量名都是那种类型的变量名。例如:DefDbl L-P凡是变量名以字母L到P开头的变量都定义为双精度型。类型说明符(%&#!$)总是比DefType语句优先起作用。,4.2 常量和变量,(3)隐式声明变量VB允许用户不显式声明变量而直接使用,系统临时为新变量分配存储空间并使用,这就是隐式声明。所有隐式声明的变量都是Variant数据类型。VB根据程序中赋予变量的值来自动调整变量的类型。,下面的程序中使用的变量a,b,Total都没有事先定义:Private Sub Form_Click()Total%=0a=10:b=20Total=a+bPrint“Total=;TotalEnd Sub,4.3 变量的作用域,每个变量都有它的作用范围,即作用域。根据变量在VB应用程序中的定义位置和所使用的定义语句的不同,可以分为局部变量、模块变量和全局变量。VB应用程序的构成,4.3 变量的作用域,在过程(事件过程或通用过程)内定义的变量叫做局部变量,其作用域是它所在的过程。因此,在不同的过程中可以定义相同名字的局部变量。局部变量在过程内用Dim、Static定义,例如:Sub Command1_Click()Dim Tempnum As IntegerStatic Total As DoubleEnd Sub,一、局部变量Local,4.3 变量的作用域,模块变量包括窗体变量和标准模块变量。窗体变量可用于该窗体内的所有过程(事件过程或通用过程)。当同一窗体内的不同过程使用相同的变量时,必须定义窗体层变量。窗体层变量不能隐式声明。方法是:在程序代码窗口的“对象”框中选择“通用”,并在“过程”框中选择“声明”。标准模块中模块层变量的声明和使用与窗体层变量类似。,二、模块变量Module,4.3 变量的作用域,默认情况下,模块级变量对该模块中的所有过程都是可见的,但对其他模块不可见。模块级变量在模块的声明部分用Private、Dim声明。例如:Private intTemp As Integer或 Dim intTemp As Integer,4.3 变量的作用域,全局变量的作用域最大,可以在工程的每个模块、每个过程中使用。全局变量必须在标准模块的声明部分中声明,不能在过程或窗体模块中声明;并且,全局变量必须用Public或Global语句声明,不能用Dim语句声明。例如:Public intNumber As Integer,三、全局变量Public,4.3 变量的作用域,对于局部变量来说,可以不用Dim或Static定义,而是在需要时直接给出变量名(不建议)。默认声明只适用于局部变量,模块级变量和全局变量必须用Dim或Public语句显式声明。默认声明局部变量,有可能使程序出现无法预料的结果,而且较难查出错误。为了安全起见,最好能显式地声明程序中使用的所有变量。下面通过实例说明。,四、默认声明(隐式声明),4.4 常用内部函数,VB提供了上百种内部函数,要求掌握表4.4中常用函数的功能及使用:数学函数、转换函数、日期和时间函数、随机数函数。函数调用方法:函数名(参数列表)有参函数 函数名 无参函数说明:(1)使用内部函数要注意参数的个数及其参数的数据类型;(2)要注意函数的定义域(自变量或参数的取值范围);(3)要注意函数的值域。,4.4 常用内部函数,常用的数学函数有:Sin(x)Cos(x)Tan(x)Atn(x)Abs(x)Sgn(x)Sqr(x)Exp(x)说明:(1)在三角函数中的自变量是以弧度为单位。如:sin300 sin(3.14159/180*30)(2)sqr(x)函数要求自变量 x=0(3)Exp(x)函数要求自变量x不能超过709.782712893,否则函数的值就会超出实数在计算机中的表示 范围,导致错误发生。,一、数学函数,4.4 常用内部函数,常用转换函数见表4.4,相关说明如下:(1)要区别两个取整函数int()和fix()Fix(N)为截断取整,即去掉小数后的数。Int(N)为不大于N的最大整数。例如:Fix(9.59)=9,Int(9.59)=9 Fix(-9.59)=-9,Int(-9.59)=-10(2)Asc(Abcd)值为:65(只取首字母的AscII值)(3)Val(“abc123”)值为:0,Val(1.2sa10)值为1.2 注意:Val()函数只将最前面的数字字符转换为数值。,二、转换函数,4.4 常用内部函数,1.Date、Now、Time函数Date函数:返回当前系统日期。语法:DateNow函数:返回当前系统日期和时间。语法:NowTime函数:返回当前系统时间。语法:Time2.Year、Day、Month函数(年、月、日)Year函数:返回年份。语法:Year(Now)Day函数:返回年份。语法:Day(Now)Month函数:返回年份。语法:Month(Now)3.Hour、Minute、Second函数(时、分、秒)Hour函数:返回小时。语法:Hour(Now)Minute函数:返回分钟。语法:Minute(Now)Second函数:返回秒。语法:Second(Now),三、日期和时间函数,4.4 常用内部函数,语法:Rnd(number)Rnd函数可以省略参数和括号。返回0 1)(即包括0,但不包括1)之间的单精度随机数。,四、随机数函数Rnd,4.4 常用内部函数,若要产生1100的随机整数,则可通过下面的表达式来实现:Int(Rnd*100)+1 包括1和100Int(Rnd*99)+1 包括1,但不包括100思考:怎样产生N,M区间的随机数?,Int(Rnd*(M-N+1)+N,4.4 常用内部函数,当应用程序不断地重复使用随机数时,同一序列的随机数会反复出现,用Randomize语句可以消除这种情况,其格式为:Randomize(x)功能:初始化随机数生成器。如省略参数,则用系统计时器返回的值作为新的种子值。例如:下段程序每次运行,将产生不同序列的20个10,99之间的随机整数。Private Sub Form_click()Randomize For i=1 To 20 Print Int(Rnd*90)+10;Next i PrintEnd Sub,4.5 字符处理与字符串函数,ANSI方式:早前的版本采用。西文字符用一个字节编码,中文字符用两个字节编码。一个中文字符相当于两个西文字符。UniCode方式:4.0以后的版本采用。中西文字符统一编码,一个英文字符或一个汉字都看作一个字符,均用两个字节编码。Print Len(BASIC程序设计)9Print LenB(“BASIC程序设计”)18注:VB6.0中,LenB 返回的是用于存储字符串的字节数,而不是返回字符串中字符的数量。,一、VB的字符处理机制,4.5 字符处理与字符串函数,为了实现ANSI与UniCode之间的转换,VB提供了一个转换函数StrConv,格式如下:新字符串=StrConv(待转换字符串,转换格式)其中,“转换格式”可以取值为:vbUnicode(值为64)将ANSI转换为 UniCodevbFromUnicode(值为128)将UniCode转换为 ANSI例4.1编写程序,测试StrConv函数功能。,一、VB的字符处理机制,4.5 字符处理与字符串函数,1.去空格函数Ltrim$(字符串):去除字符串左边的空白字符;$可以省略。RTrim$(字符串):去除字符串右边的空白字符;Trim$(字符串):去除字符串两边的空白字符。例如:a$=Good Morning b$=LTrim$(a$)c$=RTrim$(b$)Print b$;c$;ABC“输出结果:Good Morning Good MorningABC,二、字符串函数,4.5 字符处理与字符串函数,2.字符串截取函数左部截取:Left$(字符串,n)返回字符串的前n个字符。例:Left$(“ABCDEF”,4)中部截取:Mid$(字符串,p,n)从第p个字符开始,向后截取n个字符。n可以省略,此时,将从第p个字符开始向后截取到字符串的末尾。例如:Mid$(“ABCDEFGHIJK”,3,4)右部截取:Right$(字符串,n)返回字符串的最后n个字符。例:Right$(“ABCDEFGHIJK”,4),二、字符串函数,4.5 字符处理与字符串函数,3.字符串长度测试函数格式:Len(字符串):返回字符串的长度(长整型值)。Len(变量名):返回存储变量所需的字节数。例如:Len(“ABCDEFGHIJK”)返回11Len(testvar%)返回2Len(testvar!)返回4Len(testvar#)返回8,二、字符串函数,4.5 字符处理与字符串函数,4.String$函数格式:String$(n,ASCII码)或String$(n,字符串)当为ASCII码时,返回由该ASCII码对应的n个字符;当为字符串时,返回由第一个字符组成的n个字符。例如:a$=String$(5,65)b$=String$(5,-)c$=String$(5,abcd)Print a$;b$;c$输出结果:AAAAA-aaaaa,二、字符串函数,4.5 字符处理与字符串函数,5.空格函数格式:Space$(n)返回n个空格。例如:a$=a+Space(4)+b“输出结果:ab,二、字符串函数,4.5 字符处理与字符串函数,6.字符串匹配函数格式:InStr(首字符位置,字符串1,字符串2,n)该函数在“字符串1”中查找“字符串2”,如果找到,就返回“字符串2”的第一个字符在“字符串1”中的位置。“字符串1”的第一个字符的位置为1。例如:a$=Microsoft Visual Basicx=InStr(a$,Visual)Print x输出结果:11,二、字符串函数,格式:InStr(首字符位置,字符串1,字符串2,n)说明:“字符串2”的长度必须小于65,535个字符;InStr的返回值是一个长整型数。在不同的条件下,函数的返回值也不一样(见表4.5)。“首字符位置”是可选的。如果有,则从该位置开始查找,否则从起始位置开始查找。自变量n是可选的,用来指定字符串比较方式。该自变量的取值可以是0、1或2。0:进行二进制比较,区分字母的大小写;默认为0。1:比较时忽略大小写;2:对数据库中的信息进行比较。,4.5 字符处理与字符串函数,也可以通过语句限定:Option Compare BinaryOption Compare TextOption Compare Database,4.5 字符处理与字符串函数,7.字母大小写转换格式:Ucase$(字符串):小写字母转换为大写字母Lcase$(字符串):大写字母转换为小写字母例如:a$=Microsoft Visual Basicb$=UCase$(a$)c$=LCase$(a$)Print b$,c$输出结果:MICROSOFT VISUAL BASIC microsoft visual basic,二、字符串函数,4.5 字符处理与字符串函数,8.插入字符串语句Mid$格式:Mid$(字符串,位置,L)=子字符串该语句把从“字符串”的“位置”开始的字符用“子字符串”代替。如果含有L自变量,则替换的内容是“子字符串”左部的L个字符。“位置”和L均为长整型数。Dim MyString,FirstWord,LastWord,MidWordsMyString=“Mid Function Demo”建立一个字符串。FirstWord=Mid(MyString,1,3)返回 Mid。LastWord=Mid(MyString,14,4)返回 Demo。MidWords=Mid(MyString,5)返回 Funcion Demo。,4.运算符与表达式,运算是对数据的加工。最基本的运算形式常常用一些简洁的符号来描述,这些符号称为运算符。被运算的数据,称为运算量。由运算符和运算量组成表达式。运算量可以是常量,也可以是变量,还可以是函数。例如:A+3,T+Sin(a),PI*r*r。运算符和表达式的类型可以分为以下4种:算术运算符与算术表达式字符运算符与字符表达式关系运算符与关系表达式逻辑运算符与逻辑表达式,4.运算符与表达式,一、算术运算符与算术表达式,(a=3),4.运算符与表达式,1.幂运算用于计算乘方和方根,运算符为“”。例如:102结果为10010-2 结果为0.01250.5结果为58(1/3)结果为2注意:幂运算符优先级最高。当指数是一个表达式时,必须加上括号。例如,X的Y+Z次方必须写作X(Y+Z),不能写作XY+Z。,4.运算符与表达式,2.“/”与“”浮点除法运算符“/”用来计算两个数或表达式的商,并返回相应的浮点数。例如:3/2的值是1.5。整数除法运算符“”在运算前把两个运算量四舍五入转换成整数,然后计算两个运算量的商,并返回结果的整数部分。例如:25.636.78的值为。,4.运算符与表达式,3.取模运算Mod取模运算即求余数,在运算前把两个运算量四舍五入转换成整型数,然后对两个运算量进行除法运算,并返回余数(第一个操作数整除第二个操作数的余数)。例如:7 Mod 4结果为3 25.68 Mod 6.99先把25.63和6.78转化为26和7,再求得余数为,4.运算符与表达式,4.算术运算符的优先级,思考与练习5+10 mod 10 9/3+2 2,步骤:=5+10 mod 10 3+4=5+10 mod 3+4=5+1+4=10,4.运算符与表达式,字符串连接符:“”和“+”“”:用于强制将两个表达式作为字符串连接。“+”:当连接符两边的表达式都为字符串时,将两个字符串连接;如果一个是字符串而另一个是数字,则进行相加。例如:ABCD+EFGHI 结果为:ABCDEFGHI“VB”&“程序设计教程”结果为:VB程序设计教程,二、字符运算符与字符表达式,例:100+123 结果为 223100+123 结果为 100123“Abc”+123 出现“类型不匹配”的错误提示 100&123 结果为 100123 100&123 结果为 100123 Abc&123 结果为 Abc123 Abc&123 结果为 Abc123,注意:使用运算符“&”时,变量与运算符“&”之间应加一个空格。这是因为符号“&”还是长整型的类型定义符,如果变量与符号“&”接在一起,VB系统先把它作为类型定义符处理,因而就会出现语法错误。,4.运算符与表达式,关系运算符也称比较运算符,用来对两个表达式的值进行比较。关系表达式的结果是一个布尔值,即True(成立)或False(不成立)。,三、关系运算符与关系表达式,数值的比较:应避免对两个浮点数直接作“相等”或“不相等”的比较。例如:1.0/3.0*3.0=1.0,在计算机上执行时可能会给出假值。可以改写为:Abs(1.0/3.0*3.0-1.0)“189”,按数值比较,结果为False。数值型与不能转换成数值型的字符型比较,如:77 sdcd,不能比较,系统出错。,字符串的比较:两个字符串的比较,从第1个字符开始,按字符的ASCII码值逐一进行比较,ASCII码值大的字符所在的字符串大。例:ABCDE ABRA 结果为 False 常见的字符值的大小关系如下:“空格”“数字”“大写字母”“小写字母”“所有汉字”Like运算符用来比较字符串表达式和SQL表达式中的样式,主要用于数据库查询。Is运算符用来比较两个对象的引用变量,主要用于对象操作。,4.运算符与表达式,逻辑运算也称布尔运算。用逻辑运算符连接两个或多个关系式,组成一个布尔表达式。,四、逻辑运算符与逻辑表达式,4.运算符与表达式,如果对数值进行逻辑运算,操作数都要转换成二进制值逐位进行逻辑运算(0当False,1当True)。例如:63 And 16 结果为1600000000 01111111 And00000000 00010000关系表达式与逻辑表达式常常用在条件语句与循环语句中,作为条件控制程序的流程走向。,四、逻辑运算符与逻辑表达式,思考与练习 例:征兵的条件是:男性(sex),年龄(age)在18-20之间,身高(size)在1.65m以上;或者女性(sex),年龄(age)在16-18之间,身高(size)在1.60m以上。请写成VB的条件表达式。,答:设性别sex值True代表男,sex值False代表女。(sex=True And age=18 And age=1.65)Or(Not sex And age=16 And age=1.60),4.运算符与表达式,表达式的一般执行顺序:函数运算算术运算符连接运算符关系运算符逻辑运算符在书写表达式时,应注意以下几点:乘号“*”不能省略,例x 乘以y 应写成:x*y可以用括号改变优先顺序,并且括号必须成对出现;运算符不能相邻。例a+*b是错误的。,五、表达式的执行顺序,(b-sqr(b*b-4*a*c)/(2*a),