【文档说明】VB程序设计3-VisualBasic语言基础.ppt,共(56)页,274.513 KB,由小橙橙上传
转载请保留链接:https://www.ichengzhen.cn/view-2446.html
以下为本文档部分文字说明:
12VB程序程序代码窗体界面某些信息的说明过程事件过程通用过程Function过程Sub过程3指附在对象上的程序代码,是事件的处理程序,由事件调用。事件过程存储在窗体模块(.frm)中。形式:PrivateSub对象名_事
件过程名([参数列表])……(事件过程代码)EndSub例如:PrivateSubCmdOK_Click()MsgBox“你好”EndSub1、事件过程(Private)4可被共享的代码构成的过程,即该代码可被不同的窗体所共享,或被一个窗体中不同
的事件所共享。由事件过程或其他通用过程调用。形式:[Public/Private][Static]Sub过程名([参数列表])……(语句块)EndSub2、通用过程(Public/Private)5•窗体模块(.FRM)窗体内的事件过程、窗体及窗体中各个控件对象的属性
和相关说明。•标准模块(.BAS)通用过程及相关说明。创建方法:工程→添加模块→输入代码•类模块(不作要求)6工程.VBP窗体模块.FRM标准模块.BAS窗体模块.FRM标准模块.BAS通用声明部分通用声明
部分通用过程部分通用过程部分事件过程部分事件过程部分通用声明部分通用声明部分通用过程部分通用过程部分7<语句定义符>[语句体]语句的一般形式:语句的功能(没有或省略)具体操作和说明例如:DimaAsInteger8•VB代码中不区分字母大小写为了提高程序的可读性,VB对
用户程序代码进行自动转换。对于VB中的关键字,首字母总被转换成大写,其余字母被转换成小写。若关键字由多个英文单词组成,自动将每个单词的首字母转换成大写。9•语句书写自由在同一行上可以书写多条语句,语句间用:(西文冒号)
分隔。单行语句可分若干行书写,在本行后加入续行符空格和下划线“_”。一行允许多达255个字符。例如:X=10:Y=20:Z=30DimNameAsString,AgeAsInteger,SexAs_Boolean,IDAsString10注释有利于程序的维护和调试,方
法有:Rem<注释>必须单独一行书写‘<注释>可单独一行,也可在语句后书写在工具栏上右击,在快捷菜单中选择“编辑”菜单,其中有“设置注释块”、“解除注释块”两个按钮。注释PrivateSubCmd
OK_Click()Rem2003年1月编写如下代码‘若用户单击了确认按钮,则执行下列代码…………EndSub113.2VisualBasic数据类型•整数–整数是不带小数点和指数符号的数,在机器内以二进制补码形式表示。–整型(Integer):整型以两个字节的二进制码表示和参加运算,取值范围为-
32768~32767。–长整型(Long):长整型以四个字节的二进制码表示和参加运算,取值范围为-2147483648~2147483647。123.2VisualBasic数据类型•浮点数–浮点数也称实型数或实数,是带有小数部分的数
值。它由三部分组成:符号、指数和尾数。–单精度型(Single):以4个字节存储,符号1位,指数8位,尾数23位,1位隐含位。用E来表示指数。例如:-9.654E-6–双精度型(Double):以8个字节存储,符号1位,指数11位,尾数52位,1位隐含位。用D来表示指数。例如:-8.573
264907D-15133.2VisualBasic数据类型•字节型(Byte)–字节实际上是一种数值类型,以一个字节的无符号二进制数存储,取值范围为0~255。•布尔型(Boolean)–布尔型是一个逻辑值,用两个字节存储,它
只有两种值,即True(真)或False(假)。•对象型(Object)–对象型数据用来表示图形或OLE对象或其他对象,用4个字节存储。143.2VisualBasic数据类型•字符串型(String)–字符串是一个字符序列,由ASCII字符组成
,包括标准的ASCII字符和扩展ASCII字符及汉字等。–字符串是放在双引号内的若干个字符,长度为0的字符串称为空字符串。–VB中的字符串分为两种,即变长字符串和定长字符串。变长字符串的长度是不确定的,最大长
度不超过231;定长字符串的长度是固定的,最大长度不超过216。153.2VisualBasic数据类型•货币型(Currency)–货币数据类型是为表示钱款而设置的。该类型数据以8个字节存储,精确到小数点后四位,小数点前有15位,小数点后4位以后的
数字将被舍去。–浮点数中的小数点是“浮动”的,而货币类型数据的小数点是固定的。•变体型(Variant)–变体数据类型是一种可变的数据类型,可以表示任何值,包括数值、字符串及日期等。163.2VisualBasic数据类型•日期型(Date)–日期型数据用来表示日
期信息,格式为mm/dd/yyyy或mm-dd-yyyy。–表示范围:1000年1月1日到9999年12月31日。–任何可辨认的文本日期都可以赋值给日期变量。日期文字必须用符号#括起来,如#3/18/2003##12:30:45#17
不同数据类型占用空间比较112123412345678ByteIntegerBooleanLongSingleObjectDoubleDateCurrency字节18•常量——在程序中取值始终保持不变的数据,可以是具体的数值,也可以是专门说明的符号。(10
、PI)•变量——以符号形式出现在程序中,且取值可以发生变化的数据。3.3常量与变量193.3.1常量(1)•数值常量•整型和长整型均有三种表示方式,即十进制,十六进制和八进制。•十进制:0~9,正负号组成。•八进制:0~7,正负号组成。表示时在前面加上&O。如:&O37相当于
十进制数3*8+7=31•十六进制:0~9,A~F,正负号组成。表示时在前面加上&H。如:&H3D相当于十进制数3*16+13=61•浮点型由尾数、指数符号和指数组成。如:单精度:-9.654E-6双精度:3.1415926D820•字符串常
量:不能超过65535个字符。如“Hello”、“1234.343”、“苏州”•逻辑型常量:只有两个(True、False)•日期型常量:#2/25/2003#3.3.1常量(2)21•符号常量[Public|Private]Const常量名[AsType]=
<数值>Public表示常量可在整个工程中使用Private表示常量只在声明的窗体模块或标准模块中使用Type表示常量的类型如:ConstTaxAsSingle=1.05ConstPi=3.1415926PublicConstNumAsInteger=453.3.1常量(3)22窗
体模块Consta1=3.1415926仅在本窗体模块中有效PrivateConstb1=4仅在本窗体模块中有效PublicConstc1=5出错,不能出现在窗体模块中PrivateSubCommand1_Click()Constd1=3该常量仅在本事件过程中有效Priv
ateConste1=4出错,不能在过程中使用PublicConstf1=5出错,只能出现在标准模块中EndSub23Consta2=3该常量在本标准模块中有效PrivateConstb2=4该常量在本标准模块中有效PublicConstc2=5该常量在整个工程中有效P
ublic/PrivateSubFun()Constd3=3该常量仅在本通用过程中有效PrivateConste3=4出错PublicConstf3=5出错EndSub标准模块24类型说明符说明符示例含义%X%Integer&X&Long!X!Single#X#Double@X@Curr
ency$X$String字节、布尔、日期、对象及变体型没有类型说明符。声明常量和变量时也可以使用类型说明符。ConstOne%=1等价于ConstOneAsInteger=1253.3.2变量•变量是内存单元的映射,变量名即为内存单元地址的映射。•一
个有名称的内存位置叫变量。•变量的三要素:–变量名–变量类型–变量的值26变量名的命名规则•变量名只能由字母、数字、汉字和下划线组成•必须以字母开头,大小写等价•长度不超过255•作用域内唯一•不能和V
B保留字重名•不能含有标点符号,类型说明符只能出现在名称的最后27定义变量•显式定义–Dim变量名As类型[,变量名As类型]–Public变量名As类型[,变量名As类型]–Private变量名As类型[
,变量名As类型]–Static变量名As类型[,变量名As类型]•隐式定义–将类型说明符放在变量名最后例如:Country$=“China”,k%=1等价于DimCountryAsString,kAsIntegerCountry=“Ch
ina”:k=1•如果变量未被显式或隐式定义则为变体型。注意:Dima,bAsInteger,则b为整型,而a则为变体型。283.3.3变量作用域与生命周期•过程级变量:又称局部变量。在过程中说明,仅在说明它的过程中有效。•窗体模块级、标准模块级变量:在窗体模块或标准模块的通用声
明中说明,在该窗体模块或标准模块的所有过程内有效。•全局变量:又称公有变量。在窗体模块或标准模块的通用声明中说明,在工程内有效。•使用Dim语句声明变量时,系统自动给该变量赋一个初值。若为数值型,则值为0;若为字符串型,则值为空串;若为布尔型,则值为False。29Dima1AsInteg
er窗体级变量,在该窗体内有效Publicb1AsInteger全局变量,在工程内有效Privatec1AsInteger窗体级变量,在该窗体内有效Staticd1AsInteger出错PublicS1AsStringPrivateS2AsStringPubli
cS3AsString*5出错PrivateS4AsString*5PrivateSubCommand1_Click()Dime1AsInteger过程级变量,只在该事件过程内有效Publicf1AsInteger出错Privateg1AsInteger出错Statich1AsInte
ger静态变量,只在该事件过程内有EndSub窗体模块30Dima2AsInteger模块级变量,在该模块内有效Publicb2AsInteger全局变量,在工程内有效Privatec2AsInteger模块级变量,在该模块内有效Staticd2AsInteger出错Publ
icS1AsStringPrivateS2AsStringPublicS3AsString*5PrivateS4AsString*5Public/PrivateSubFun()Dime2AsInteger过
程级变量,只在该通用过程内有效Publicf2AsInteger出错Privateg2AsInteger出错Statich2AsInteger静态变量,只在该通用过程内有效EndSub标准模块31定长字符串的定义•系统默认的字符串是变长的
。•定长字符串的定义方法为:Dim变量名AsString*size•如果在给定长字符串变量赋值时,字符数未达到定义的长度,则用空格填补;如果字符数超过定义的长度,则多余的部分将会被自动截去。•在标准模块中定长字符串可说明为Public或Private;在窗体模块中只能说明为Privat
e。32OptionExlicit语句•变量可以不用定义就可使用。•没有定义的变量默认为局部变量。•为了安全起见,最好能显式地定义程序中所使用到的变量。•OptionExplicit语句的作用是防止未显式定义的变量直接使用。
•OptionExplicit语句写在(通用)--(声明)下。•可以通过“工具”菜单中的“选项”进行设置333.4常用系统函数•函数是一种特殊的运算。•函数有函数名和参数(部分函数可没有参数)。•函数
的结果有一定的数据类型。•VB的通用函数大体上可分为5类:–算术函数–字符函数–转换函数–日期与时间函数–格式化函数34算术函数•Abs(x)——求绝对值Abs(-10)=10•Atn(x)——求反正切值Atn(0)=0•Cos(x)——求余弦值,参数的单位是弧度Cos(0)=1•Exp(x)—
—求ex的值Exp(1)=2.71828182845905•Hex[$](x)——求对应的十六进制的值Hex(20)=“14”•Log(x)——求自然对数Log(1)=0•Oct[$](x)——求对应的八进制的值Oct(20)=“24”•Rnd(x)——产生一个[0,1)区间内的单精度随机数
•Sin(x)——求正弦值,参数的单位是弧度Sin(0)=0•Sgn(x)——求符号Sgn(-2)=-1Sgn(0)=0Sgn(2)=1•Sqr(x)——求平方根Sqr(4)=2•Tan(x)——求正切
值,参数的单位是弧度Tan(0)=035字符串函数(1)•InStr(C1,C2)——求字符串C2在C1中首次出现的字符位置InStr(“abcd”,“c”)=3•InStrB(C1,C2)——求字符串C2在C1中首次出现的字节位置InStrB(“abcd”,
“c”)=5•LCase[$](C)——将字符串C中的大写字母改为小写字母LCase(“aBcD”)=“abcd”•Left[$](C,N)——返回字符串C左边N个字符Left(“abcd”,3)=“abc”•Len[$](C)——返回字符串C的字符数Len(“abcd”)=4•LenB[$
](C)——返回字符串C的字节数LenB(“abcd”)=8•LTrim[$](C)——去掉字符串C左边的空格LTrim(“abcd”)=“abcd”36字符串函数(2)•Mid[$](C,N1,N2)——求字符串C中从N1位置开始的N2个字符Mid(“abcd”,2,2)
=“bc”•Right[$](C,N)——返回字符串C右边N个字符Right(“abcd”,3)=“bcd”•RTrim[$](C)——去掉字符串C右边的空格RTrim(“abcd”)=“abcd”•Space[$](N)——返回N个空格Space(3)=“”•String[$](N,C)——返
回N个由C字符组成的字符串String(3,“a”)=“aaa”String(3,“abc”)=“aaa”•UCase[$](C)——将字符串C中的小写字母改为大写字母UCase(“aBcD”)=“ABCD”37日期与时间函数•Date[$]——返回系统当前的日期•Now——返
回系统当前的日期和时间•Time[$]——返回系统当前的时间•Weekday(x,C)——返回日期表达式x的星期号(1~7)1~7表示星期日~星期六Weekday(#3/18/2003#)=3Weekday(#3/18/2003#,2)=2
•Day(x)——返回日期表达式x中的日Day(#3/18/2003#)=18•Month(x)——返回日期表达式x中的月Month(#3/18/2003#)=3•Year(x)——返回日期表达式x中的年Year(#3/18/2003#)=200338转换函数•ASC
(x)——以十进制值返回字符x的ASCII码Asc(“a”)=97•CBool(x)——将表达式x转成逻辑值。如果表达式的结果为非零的值,返回True;否则返回False。Cbool(10)=True•CByte(x)——将0~255之间的数转为字节型CByte(97.68)=98•CCur(x)
——将数值型转为货币型•CDate(x)——将有效的日期字符串x转换成为日期型。CDate(“3/18/2003”)=#3/18/2003#•CDbl(x)——将数值型转换成双精度型•Chr[$](x)——返回ASCII码为x的字符Chr(97)=“a”39转换函数•CInt(x)——将
数值型数据x的小数部分四舍五入取整。CInt(3.78)=4•CLng(x)——将数值型转换成为长整型,小数部分四舍五入。•CSng(x)——将数值型转换成为单精度型•CStr(x)——将表达式x转换为字符串CStr
(-123)=“-123”CStr(123)=“123”•CVar(x)——将表达式x转换为变体型•Fix(x)——取x的整数部分Fix(-3.78)=-3•Int(x)——若x为正则取整数部分,若x为负则取小于等于x的整数。In
t(5.6)=5Int(-5.6)=-6•Str[$](x)——将数值数据转换为字符串Str(-123)=“-123”Str(123)=“123”•Val(x)——将字符串x起始部分的数字串转成数值数据Val(“123abc”)=12340
格式化函数•专门用于将数值、日期和时间数据按指定格式输出,但不会改变数据在计算机内部的存储形式。•形式:Format[$](<算术表达式>,fmt$)41•InputBox函数——接收用户通过键盘输入的数据•使用格
式:V=InputBox(Prompt,[Title],[default],[x,y],[Helpfile,Context])Prompt:提示用的文字信息,如果要在提示中分行可用Chr(13)+Chr(10)或vbCrLf。Ti
tle:对话框标题,若缺省则为工程名。Default:显示在用户编辑框中的缺省值,若缺省则为空。x,y:对话框左上角点的坐标。注意:[]内的项目可以省略,但有时逗号不能省略。InputBox函数42V=InputBox(Prompt[,
Title][,default][,x,y][,Helpfile,Context])InputBox函数N=InputBox("请输入你的学号:","程序示例","23001")43MsgBox函数MsgBox函数——向用户发布提示信息,并要求用户作出必要的响应。使用方法:Ans=M
sgbox(Prompt,[Button],[Title],[Helpfile,Context])PrintMsgbox(Prompt,[Button],[Title],[Helpfile,Context])MsgboxPrompt,[Button],
[Title],[Helpfile,Context]注意:后两种方法得不到返回值。逗号有时不能省略。44MsgBox函数Msgbox(Prompt[,Button][,Title][,Helpfile,Context])Pro
mpt:提示用的文字信息。Button:一个数值,为c1+c2+c3+c4,决定按钮的个数和类型。Title:信息框标题。返回值:选择“重试”按钮:返回4选择“确定”按钮:返回1选择“忽略”按钮:返回5选择“取消”按钮:返回2选择“是”按钮:返回6
选择“终止”按钮:返回3选择“否”按钮:返回745参数取值意义C1按钮个数和名称0“确定”按钮1“确定”按钮、“取消”按钮2“终止”按钮、“重试”按钮、“忽略”按钮3“是”按钮、“否”按钮、“取消”按钮4“是”按钮、“否”按钮5“重试”按钮、“取消”按钮
C2图标类型16关闭信息图标32警示疑问图标48警告信息图标64通知信息图标C3缺省按钮0第一个按钮为缺省按钮256第二个按钮为缺省按钮512第三个按钮为缺省按钮C4运行模式0应用程序模式4096系统模式46MsgBox函
数MsgBox(“非法数据!”,48,“提示信息”)48=c1+c2+c3+c4=0+48+0+047其它函数IsNumeric(x)——若x为数值型数据返回True,否则返回False。IsNumeric(“5.6”)=TrueIsNumeric(“5.6
abc”)=FalseRGB(R,G,B):返回一个颜色,R、G、B取0~255之间的数。483.5运算符与表达式•算术运算符^(乘方)-(负号)*(乘)/(除)\(整除)Mod(取余)+(加)-(减)Mod
运算中,结果与被除数同号。•字符运算符+、&:连接——最好用&。•关系运算符=、<>、<、<=、>、>=、Is表达式由运算对象、运算符组成,有返回值。49•逻辑运算符Not(非)、And(与)、Or(或)、Xor(异或)运算符结果说明Not取反,True变False、False变TrueAnd
参与运算的数均为True,结果为TrueOr参与运算的数均为Fasle,结果为FalseXor参与运算的数相同则为False,不同则为True50一个表达式可能含有多种运算,一般的运算顺序如下:•函数运算;•
算术、字符运算:^→负号→*/→\→Mod→+-→&•关系运算;•逻辑运算:Not→And→Or→Xor相同优先级的运算符的结合性都是从左向右。改变运算顺序可使用括号。表达式中只能使用圆括号,且可以嵌套。运算符的优先级与结合性514.5赋值语句执行过程:1.首先计算
等号右边表达式的值。2.然后将此值保存到等号左边的变量中。var可以是变量名(如:student)或属性名(如text1.text)。“=”是赋值号,不是数学中的等号。变量中的值以最近一次赋值为准。赋值语句的形式:var=<表达式>52T
=AA=BB=T上述三条语句实现什么功能?赋值语句举例A=1A=A+1B=3B=B*4A=1A=2x=“Thisisabook”Number%=72Label1.FontSize=8Y=(a+b)/2ABT123T为中间变量5
3赋值语句举例思考:如何实现三个数交换,即A的值给B,B的值给C,C的值给A?ABCT1234T为中间变量54不同数据类型数据的赋值数值类型Integer、LongSingle、DoubleByte逻辑型Boolean字符串型String非O值转换为TrueO值转换为Fal
seTrue转换为负1False值转换为O可能出错转换为字符串形式True转换为字符串“True”False转换为字符串“False”首先转换为数值类型,可能出错55DimbAsBoolean,nAsInteger,
sAsString,mAsSingleb=0将整型数据赋值给逻辑型变量b为Falseb=2将整型数据赋值给逻辑型变量b为Truen=b将逻辑型数据赋值给整型变量n为-1s=b将逻辑型数据赋值给字符串变量s为“True”m=-1012.567s=m将数值数据赋值给字符串变量s为“-
1012.567”n=“12”将字符串数据赋值给整型变量n为12n=“12abc”将字符串数据赋值给整型变量(出错)n=“asds”将字符串数据赋值给整型变量(出错)b=“12”将字符串数据赋值给逻辑型变量b为Trueb=“0”将字符串数据赋值给逻辑型变量b为Falseb=
"asds"将字符串数据赋值给逻辑型变量(出错)56下列语句的执行结果是什么?DimAAsIntegerA=2=3PrintADimAAsIntegerA=2=2PrintADimSAsStringDimAAsInte
gerS=2*A>2PrintSDimAAsIntegerDimBAsIntegerA=B=2PrintA,B