VisualBasic可视化程序设计主要内容VB的数据类型常量变量变量的作用域运算符和表达式的使用内部函数教学目标掌握常量的分类和符号常量的定义方法掌握变量的命名规则、定义方法和作用域掌握运算符和表达式的功能和用法了解基本数据类型和用户定义数据类型掌握常用内部函数教学内容3.1VB的数据类型3.2变量与常量3.3运算符与表达式3.5VB的常用内部函数3.5例子3.1VB的数据类型-基本数据类型数据类型关键字类型符前缀占字节数范围字节型Bytebyt10~255整型Integer%int2-32768~32767长整型Long&Lng4-2147483648~2147483647单精度型single!sng4负数:-3.402823E38~-1.401298E-45正数:1.401298E-45~3.402823E38双精度型Double#dbl8负数:-1.7969313486231E308~-4.94065645841247E正数:4.94065645841247E-324~1.79769313486231E+308货币型Currency@cur8-922337203685477.5808~922337203685477.5807日期型Date(time)dtm801,01,100~12,31,9999(00:00:00~23:59:59)逻辑型Booleanbln2True与False字符型String$str0~65535对象型Objectobj4任何对象引用变体型Variantvnt上述任何有效范围3.1VB的数据类型-基本数据类型1.数值型整型:Integer(%)和Long(&),存放整数浮点型(实型):单精度型Single(!)和双精度型Double(#)存放带小数的数值例:单精度数-6.25E8表示-6.25×108双精度数7.878D-6表示7.878×10-6货币型Currency(@):一种精确的定点类型数据支持15位整数和4位小数如:3.4@,565@字节型(Byte):存放无符号整数,取值范围0~255例3.1乘法器,数据类型不同结果不同3.1VB的数据类型-基本数据类型2.日期型(Date)日期型变量可存放日期和时间日期型常数的表现形式:#mm/dd/yyyyhh:mm:ss#日期型数据的输出格式取决于系统的区域设置例:DimdAsDate'声明日期型变量DD=#10/14/2009#'日期型变量赋值PrintD‘输出日期型变量的值3.1VB的数据类型-基本数据类型3.逻辑型(Boolean)逻辑型数据的取值:True或False,例:DimBoolRAsBooleanBoolR=68PrintBoolR'输出:False4.字符串型(String)VB字符串是由双引号括起来的一串字符不含任何字符(长度为0)的字符串称为空串String型变量有变长和定长之分,例:DimNameAAsString'声明变长字符串变量DimNameBAsString*20'声明定长字符串变量3.1VB的数据类型-基本数据类型5.对象型(Object)声明对象变量后,用Set语句指定实际引用的对象例,窗体上有命令按钮Command1,执行如下语句,可将该按钮的显示文字改为OKDimaAsObject'声明a为对象型变量Seta=Command1'指定a引用Command1命令按钮a.Caption=“OK”'与Command1.Caption等价6.变体型(Variant)变体:在程序运行期间可存放不同类型的数据。例:DimX'X缺省为Variant类型X=17'X被赋予字符串17X=X–2'X被赋予数值15X=A&X'X被赋予字符串A153.1VB的数据类型-自定义数据类型在模块的“通用”声明段声明[Private|Public]Type数据类型名元素名1As类型名元素名2As类型名……EndTypePublic:声明的类型在工程中所有模块的任何过程中可用Private:声明的类型只能在当前模块中使用声明自定义数据类型后,可使用该类型。例DimstudTempAsstudent'声明为student类型变量访问自定义数据类型的变量:变量名.成员名,如:studTemp.id=“030005”studTemp.xm=“李斌”3.2变量与常量-常量1.直接常量由数据形式表示的常量。例如:数值型–10,56&,22.4e逻辑型–True,false日期型–#14/10/2009#字符型–“name”3.2变量与常量-常量2.符号常量(1)内部常量由应用程序和控件提供。例如:Form1.BackColor=vbBlue‘vbBlue是表示蓝色的内部常量查看系统预定义常量:“视图→对象浏览器”3.2变量与常量-常量(2)自定义符号常量命名:遵循标识符命名的规则声明格式:[Public|Private]Const常量名[As类型]=表达式例:ConstconMaxAsInteger=9'声明Integer型常量ConstconDate=#10/14/2009#'声明Date型常量ConstCodeName=ASCII'声明String型常量有效范围:局部常量、模块常量、全局常量声明常量的表达式中不能出现函数调用和循环引用例:错误的常量声明ConstconS=Sqr(10)ConstconA=conB+10,conB=conA+13.2变量与常量-变量1.变量的命名规则标识符:变量、常量、类型、过程、函数、以及其它对象的名字。命名规则:由字母、汉字、数字或下划线组成,第一个字符必须是字母或汉字。长度不超过255个字符。其中,窗体、控件和模块的标识符长度不能超过40个字符。不要与VB中的关键字同名最好能“见名知义”3.2变量与常量-变量2.变量的声明通过类型符号:直接在变量名后面加上类型符号S&=10‘声明S为长整型变量使用声明语句Dim变量名[As类型]Dim变量名[类型符]例如,下面两条声明语句的效果相同:DimaAsInteger,bAsLong,cAsSingle,dAsDoubleDima%,b&,c!,d#若省略类型说明,被声明的变量为Variant型。例如:Dima,b'a和b均为变体型变量DimS1,S2AsString*6'S1为变体型变量,S2为定长字符串3.2变量与常量-变量3.变量的隐式及显式声明不声明就用的变量被隐式声明为Variant,初值Empty强制进行变量的显式声明“通用”声明段中加上语句:OptionExplicit“工具→选项”→“编辑器”对新模块起作用遇到未经声明的变量包括输错的变量,系统会发出错误警告3.2变量与常量-变量4.变量的有效范围(1)局部变量:在一个过程内部声明的变量有效范围限于声明它的过程自动变量:用Dim声明,变量值只在过程执行期间才存在静态变量:用Static声明,变量值在程序运行期间一直存在[例3.2]统计单击窗体的次数PrivateSubForm_Click()StaticintCountAsIntegerintCount=intCount+1PrintintCountEndSub单击窗体3次将Static改为Dim3.2变量与常量-变量(2)模块变量:“通用”声明段用Private或Dim语句声明可被该模块中的任何过程所访问[例3.3]PrivateaAsInteger,bAsInteger'声明模块变量PrivateSubCommand1_Click()DimintTempAsInteger'声明局部变量a=10:b=20Printa和b内容交换前:;a;bintTemp=a:a=b:b=intTemp'变量交换EndSubPrivateSubCommand2_Click()Print:Printa和b内容交换后:;a;bEndSub3.2变量与常量-变量(3)全局变量:标准模块的声明段用Public或Global声明有效范围是整个工程的所有模块说明:标准模块:只含有程序代码的文件,扩展名为.bas添加标准模块:“工程→添加模块”如果在窗体模块的“通用”声明段用Public声明变量,其它模块可通过如下方式引用该变量:窗体模块名.变量名3.3运算符与表达式-运算符1.赋值运算符格式:[let]variable=表达式例如,Dimaasstring*5a=“china”cmdDisplay.Caption=“显示文本”注意:两端的数据类型应该匹配,不匹配时,应进行转换。下列赋值语句是不合法的:g%=“visualbasic6.0”X+y=aX=y=z=13.3运算符与表达式-运算符2.算术运算符优先级运算运算符举例结果高低乘方^2^38取负--2^3-8乘、除*/5*3/27.5整除\5*3\27求余Mod5*3Mod21加、减+-10-3+(-2)53.3运算符与表达式-运算符2.字符串运算符运算符:&和+例:VB=“Visual”+“Basic”'连接为字符串“VisualBasic”label1.Caption=第&Str(N)&条记录'Str为数值型转字符型函数。若N为1,标签上显示“第1条记录”说明:使用+号,要求连接的两个表达式均为字符串型使用&号,连接的两个表达式可以为任何类型,但结果为字符串型,如“当前日期” /14/2009#3.3运算符与表达式-运算符3.关系运算符运算运算符举例结果等于=Hello=helloFalse不等于HellohelloTrue大于HellohelloFalse大于等于=45+10=55True小于aabTrue小于等于=45+10=55True比较对象变量Is字符串匹配Like“abcdeLike“*cd*TrueIs:判定两个Object类型的变量是否引用同一个对象Like:判定左边的字符串是否与右边的字符串匹配3.3运算符与表达式-运算符4.逻辑运算符Not(取反):表达式为True时,结果为False;反之亦然。例如,Not(45),结果为TrueAnd(与):两个表达式均为True时,结果为True例如,(45)And(87),结果为FalseOr(或):两个表达式均为False时,结果为False例如,(45)Or(87),结果为TrueXor(异或):两个表达式一真一假时,结果为True,否则为假例如,(6=7)Xor(72),结果为TrueEqv(等价):两个表达式结果相同时为True,否则为假例如,(3〉5)Eqv(“a”“b”),结果为FalseImp(蕴含):第一个表达式为真,第二个表达式为假,结果为假,否则为真例如,(5=5)Imp(1020),结果为False3.3运算符与表达式-表达式表达式:用运算符和圆括号将常量、变量、函数和常数连接起来组成的有意义的式子。如,数值表达式Cos(180*Pi/180)*100逻辑表达式(N=0)And(NMod20)运算优先顺序(从高到低):函数→算术运算(乘方→取负→乘/除→整除→求余→加/减)→字符串运算符→关系运算符→逻辑运算符(Not→And→Or)用括号可以改变运算顺序乘方和负号相邻时,取负优先。例如:2^-2的结果是0.25,相当于2^(-2)日期表达式是用运算符(+或-)将算术表达式、日期型常量、日期型变量和函数连接起来的式子。以下3种运算方式:(1)两个日期型数据相减,其结果是一个数值型数据(相差的天数)。例如:#8/8/2008#-#6/3/2008#的结果为:66(2)日期型数据加上天数,其结果为一个日期型数据。例如:#12/1/2008#+31的结果为:#01/01/2009#(3)日期型数据减去天数,其结果为一个日期型数据。例如:#12/1/2008#-32的结果为:#10/30/2008#3.3运算符与表达式-表达式3.4常用内