资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第,4,章 数据类型、运算符与表达式,沈阳理工大学应用技术学院,0.,本章内容,基本数据类型,常量与变量,变量的作用域,常用内部函数,运算符与表达式,2,1.,基本数据类型,数值型,3,字符串,(String),数值,数据类型,货币,(Currency),变体,(Variant),其他,整型数,整数(,Integer),长整数,(Long),浮点数,单,精度,(Single),双精度,(Double),1.,基本数据类型,字符串,用双引号括起来的一串字符。,例如,:“Canton”,”1+2=?”,”Good Morning”,“”,在,VB,中,分变长字符串,(,长度不固定,),和定长字符串,(,长度固定,),二种。,定长字符串定义变量格式为:,String *,常数,如:,Dim name as String*10,4,1.,基本数据类型,数值,整型数,不带小数部分的数,表示正整数、负整数和零,整数,(,Integer):,2,个字节,长整数,(Long),:,4,个字节,浮点数,表示带有小数部分的数,单精度数,(Single),:,4,个字节,双精度数,(Double),:,8,个字节,5,1.,基本数据类型,货币,专门为处理货币而设计的数据类型,它可最多保留小数点右边,4,位和小数点左边,15,位,变体,是一种可变的数据类型,可以存放任何类型的数据,包括数值、字符串、日期,/,时间等,其他数据类型,字节,(,Byte):1,个字节,布尔(,Boolean):2,个字节,日期(,Date):8,个字节,用两个,“,#,”,符号把日期和时间的值括起来如:,#08/20/2001#,、,#2001-08-20#,对象(,Object):4,个字节,可用来表示应用程序中的对象,6,2.,常量和变量,常量,文字常量,字符串常量 例如:,“,Visual Basic”,“,3+5”,等,数值常量,有,4,种:,整,型,数,,长整型数、货币型数和浮点数,例如,:,123,,,-263,,,235.987E-8,等,布尔常量,(,逻辑常量)有,Ture,和,False,两个值,日期常量 例如:,#05/16/2007#,符号常量,格式:,Public,Private Const,常量名,As,数据类型,=,表达式 例如:,Const PI=3.14159 As Single,7,2.,常量和变量,系统常量,VB,提供可在程序中直接使用,8,2.,常量和变量,变量,变量的命名规则,变量名必须以字母开头;,只能由字母、数字和下划线组成。不能含有小数点、空格等字符;,字符个数不得超过,255,个;,不能使用,VB,的关键字,(,如语句名、函数名等,),。例如,,Print,、,Sub,、,End,等,不区分变量名中字母的大小写,9,2.,常量和变量,变量的命名的注意事项,要见名知义。比如用,sum,(或,s,)代表求和。,尽可能简单明了。,变量名不能与过程名和符号常量名相同。,尽量采用,VB,建议的变量名前缀或后缀的约定来命名。如:,intMax,。,VB,不区分变量名和其他名字中字母的大小写。为便于阅读,每个单词开头的字母一般用大写,例如,PrintText,。,10,2.,常量和变量,变量的类型和定义,用类型说明符来标识,放在变量名的尾部。其中,%,表示整型;,&,表示长整型;,!,表示单精度型;,#,表示双精度型;,表示货币型;,$,表示字符串型。,例如:,Total%Amount#Lname$,定义变量时指定类型,格式:,Declare,变量名,As,类型,其中,“,Declare”,可以是,Dim,、,Static,、,Public,或,Private,“,As,”,是关键字,“类型”是基本数据类型或用户定义类型,11,2.,常量和变量,说明:,Dim,:用于标准模块、窗体模块或过程中定义变量或数组。每次引用时其值会被重新设置,例如:,Dim sum As Integer ,把,sum,定义为整型变量,Static,:定义静态变量和数组变量。每次引用时其值会继续保留,Public,:用于标准模块中定义全局变量或数组,12,3.,变量的作用域,局部变量与全局变量,局部变量,在过程内定义的变量,模块变量(窗体变量和标准模块变量),全局变量,13,3.,变量的作用域,14,名称,作用域,声明位置,使用词句,局部变量,过程,过程中,Dim,或,Static,模块变量,窗体模块或标准模块,模块的声明部分,Dim,或,Private,全局变量,整个应用程序,标准模块的声明部分,Public,或,Global,3.,变量的作用域,默认声明,就是向程序说明要使用的变量,声明变量,(,显式声明,),用,Dim,、,Public,、,Private,或,Static,语句来声明变量,例如:,Dim sum As Integer ,把,sum,定义为整型变量,隐式声明,不加说明就直接使用变量,此时默认的变量类型为变体类型,(Variant),也允许使用类型符来声明变量的类型,如,Num%,,,Sum!,15,4.,常用内部函数,转换函数,用于数据类型的转换,例如:,Val(A12),的值为,0,Val(12A12),的值为,12,【,例,1】,使用转换函数的示例,(,留给学生分析,),16,Private Sub Form_Click()x=123”,y=123 a=Chr(Asc(x)+5)b=Str(Val(x)+5)c=Val(Str(y)+5)Print a,b,c End Sub,运行程序后单击窗体,输出结果如下:,6 128 1235,注,:,检验函数操作可在立即窗口,(CTL+G),中用直接方式执行,4.,常用内部函数,数学函数,三角函数的自变量单位是弧度,如,Sin47,应写成,Sin(47*3.14159/180),函数,Int,是,求小于或等于,x,的最大整数,例如,Int(2.7)=2,Int(-2.5)=-3,当,x0,时就直接舍去小数,若,x,0,则舍去小数位后再减,1,利用,Int,函数可以对数据进行四舍五入。对一个正数,x,可采用如下式子:,Int(x+0.5),用,Rnd,函数返回随机数,先用,Randomize,语句来初始化,生成,a,b,区间范围内的随机整数,可以采用,Int(b-a+1)*Rnd+a),17,4.,常用内部函数,【,例,2】,通过随机函数产生,2,个两位正整数,求和并显示出来,编写的窗体单击事件过程代码如下:,18,再次运行程序,单击窗体后输出另一组结果是:,产生的两个随机数:,18 37,和数:,55,Private Sub Form_Click(),Dim a As Integer,b As Integer,c As Integer,Randomize ,初始化随机数生成器,a=Int(90*Rnd+10),产生,10,99,区间内的随机整数,b=Int(90*Rnd+10),c=a+b ,求两数之和,Print,产生的两个随机数,:;a,b,Print,和数,:;c,End Sub,运行程序,单击窗体后输出结果是:,产生的两个随机数:,56,71,和数:,127,4.,常用内部函数,日期与时间函数,提供某个事件何时发生及持续时间长短的信息,【,例,3】,使用日期,/,时间函数示例,(,留给学生分析,),19,Private Sub Form_Click()x=#1/1/2008#a=x-Date b=Weekday(x)c=Year(Date)d=Month(Date)e=Hour(Time)f=Minute(Time)Print,现在距离,2008,奥运会,还有:,;a;,天,Print 2008,奥运会,是:星期,;b-1 Print,本月份是:,;c;,年,;d;,月,Print,现在是:,;e;,时,;f;,分,End Sub,运行程序后单击窗体,输出结果如下:现在距离,2008,奥运会,还有:,184,天,2008,奥运会,是:星期,1,本月份是:,2007,年,2,月 现在是:,16,时,27,分,4.,常用内部函数,字符串函数,删除空白字符函数,LTrim$(S),RTrim$(S),Trim$(S),字符串截取函数,Left$(S,n),Right$(S,n),Mid$(S,p,n),字符串长度测试函数,Len(S),20,4.,常用内部函数,String$,函数,String$(n,S),空格函数,Space$(n),字符串匹配函数,Instr(f,字符串,1,字符串,2,k),字母大小写转换,Ucase$(S),Lcase$(S),插入字符串语句,Mid$,Mid(,字符串,p,n)=,子字符串,21,4.,常用内部函数,【,例,4】,使用字符串函数示例 先从字符串,a,中找出某个指定字符,(,本例为空格,),,再以此字符为界拆分成两个字符串。,22,Private Sub Form_Click(),Dim a As String,b As String,c As String,n As Integer,a=VisualFoxPro,表示空格,n=InStr(a,),查找空格位置,b=Left(a,n-1),取左边部分,c=Mid(a,n+1),取右边部分,Print b,显示左边部分,Print c,显示右边部分,End Sub,运行程序后单击窗体,输出结果如下:,Visual,FoxPro,4.,常用内部函数,Shell,函数,调用各种应用程序,shell,(命令字符串,窗口类型),命令字符串:可执行文件的名字,窗口类型:,6,种,23,5.,运算符与表达式,算术运算符,指数运算,例如:,82=64,浮点数除法与整数除法,/,和,的区别:,/,用于普通除法;,用于整数除法,如果参加运算的数据含有小数,首先将它们四舍五入,再进行运算,结果去掉小数部分。,例如:,1/2=0.5,,,1,2=0,,,25.58 6.91=3,取模运算,用来求整型数除法的余数,例如:,9 Mod 7,结果为,2,,,25.58 Mod 6.91,结果为,5,24,5.,运算符与表达式,算术运算符的优先级,(,乘方,)-(,求负,)*/Mod+-,同级左到右,25,5.,运算符与表达式,字符串连接,连接符有两个:,&,和,+,都是将两个字符串连接起来,结果是一个字符串,&,专门字符串连接符,,+,可作加法连接符,例如:,“计算机”,&“,网络”的结果是“计算机网络”,“,123”+“45”,的结果是:“,12345”,123&“ABC”,的结果是:“,123ABC”,26,5.,运算符与表达式,关系运算符与逻辑运算符,关系运算符,用一个比较运算符把两个表达式,(,如算术表达式,),连接起来的式子。值为,True(,真,),和,False(,假,),8,种:,=Like Is,数值型、日期型(看成,yyyymmdd,位整数)按数值大小比较。,字符型数据按其,ASCII,码比较。,汉字字符大于西文字符,例:,Print 5 3 True,Print#3/1/2003#3/11/2003#Flase,Print abc=ABC“True,27,5.,运算符与表达式,逻辑运算符,用逻辑运算符把关系表达式或逻辑值连接起来的式子,6,种(按优先级):,Not(,非,),、,And(,与,),、,Or(,或,),、,Xor(,异或,),、,Eqv(,等价,),、,Imp(,蕴含,),例:,Not(23)2=3 And 45+1,两个关系表达式为真,结果为真,3=3 Or 53 “3”=”3”,为真,结果为真,28,5.,运算符与表达式,字符串表达式与日期表达式,字符串表达式,用连接符,&,将字符串常量、字符串变量、字符串函数连接起来的式子,日期表达式:,用运算符,(+,或,-),将算术表达式、日期型常量、日期型变量和函数连接起来的式子,两个日期型数据相减,其结果是一个数值型数据,(,相差的天数,),。,例如:,#8/8/2001#-#6/3/2001#,的结果为:,66,日期型数据加上天数,其结果为一个日期型数据。,例如:,#12/1/2000#+31,的结果为:,#01/01/2001#,日期型数据减去天数,其结果为一个日期型数据。,例如:,#12/1/2000#-32,的结果为:,#10/30/2000#,29,5.,运算符与表达式,表达式的执行顺序,算术运算优先于关系运算,关系运算优先于逻辑运算。,首先进行函数运算,接着进行算术运算,其次序为:,幂,(),取负,(-),乘、浮点除,(*,、,/),整除,(),取模,(Mod),加法和减法,(+,、,-),字符串连接,(&),然后进行关系运算,相等,(=),、不等,(),、小于,(),、小于等于,(=)(,注:,6,个运算符同级,),最后进行逻辑运算,非,(Not),与,(And),或,(Or),异或,(Xor),等价,(Eqv),蕴涵,(Imp),30,5.,运算符与表达式,【,例,5】,判断某一年是否闰年。,判断条件:,年号,(y),能被,4,整除,但不能被,100,整除;,或者能被,400,整除,用逻辑表达式来表示这个条件,写成:,(y Mod 4=0 And y Mod 1000)Or(y Mod 400=0),也可写成:,(Int(y/4)=y/4 And Int(y/100)y/100)Or Int(y/400)=y/400),31,
展开阅读全文