版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第4章数据、表达式与简单程序设计基本要点:掌握程序代码的书写规则、数制与数据类型、不同类型常量的表示方法、系统内部常量、用户定义常量的定义方法;全面掌握运算符与表达式、公共函数、inputbox函数与msgbox函数。重点:数制与数据类型、不同类型常量的表示方法、系统内部常量、用户定义常量的定义方法;运算符与表达式,公共函数、inputbox函数与msgbox函数。难点:数据类型、公共函数、inputbox函数与msgbox函数。4.1VB语言字符集及编码规则一、VB的字符集l
字母:大写英文字母A—Z;小写英文字母a—z。l
数字:0一9;l专用字符:共27个,二、编码规则与约定
(一)、编码规则1.VB代码中不区分字母的大小写。2.在同一行上可以书写多条语句,但语句间要用冒号“:”分隔。
例如:x=10:y$="visualbasic":z=20
3.若一个语句行不能写下全部语句,或在特别需要时,可以换行。换行时需在本行后加入续行符,1个空格加下划线“_”。例如:Dimstudent_nameAsString,student_numberAsString,computerAs_Integer,englishAsInteger4.一行最多允许255个字符。5.注释以Rem开头,也可以使用单引号“‘”,注释内容可直接出现在语句的后面。例如(1)PrivateSubForm_Click()
Rem
响应单机事件的过程
Print"ok"EndSub(2)PrivateSubForm_Click()'响应单机事件的过程
Print"ok"'响应单机事件的过程EndSub6.在程序转向时需用到标号,标号是以字母开始而以冒号结束的字符串。(二)、约定1.为了提高程序的可读性,对于VB中的关键字其首字母大写,其余字母小写2.注释有利于程序的维护和调试
Rem开始或单撇‘。例如:’ThisisaVBREMThisisaVB在6.0中新增了“块注释/取消块注释”(视图-工具栏-编辑)3.通常不使用行号4.对象名命名约定:每个对象的名字由3个小写字母组成的前缀(指明对象的类型)和表示该对象作用的缩写字母组成。4.2
数据类型一.标准数据类型4.2.1.标准数据类型(P43)1.数值数据类型①Integer型和Long型用于保存整数②Single型和Double型用于保存浮点实数③Currency型是定点实数,保留小数点右边4位和小数点左边15位,一般用于货币计算④Byte型用于存储二进制数。所有数值型变量均可相互赋值。在将浮点数赋值给整数之前,VB自动将浮点数的小数部分四舍五入,而不是将小数部分去掉。但当小数位恰好是0.5时,则舍入到靠近它的偶数。2.字符数据类型String类型用于存放字符型数据。在VB中,一个字符串通常要用双引号括起来。例如:“Thisisabook.”在VB中,字符串型变量可分两种:变长字符串和定长字符串。DimStr1AsStringStr1为变长字符串型变量DimStr1AsStringStr2为定长字符串型变量,可存放20个字符3.日期(Date)数据类型表示日期范围从公元100年1月1日~9999年12月31日,而时间范围从0:00:00~23:59:59。日期型数据必须用号码符“#”括起来,其标准格式有3种:●#月/日/年#例如#3/18/1999#●#时:分:秒AM或PM#例如#8:05:37AM#●#月/日/年时:分:秒AM或PM#例如#5/20/199921:05:37PM#注:VB也可以识别一些非标准格式的日期。如:#January1,1997#、#1Jan,97#、#1985-5-2010:28:00PM#、#99,2,8#、#5/20/99#不过,输入这些非标准的日期之后,VB将自动将其转换为标准格式的日期。
VB不能识别包含“年、月、日”文字信息的日期格式,如#1998年2月8日#就是错误的4.逻辑(Boolean)数据类型Boolean类型通常称为布尔类型或逻辑型。逻辑型变量主要用于表示逻辑半段的结果,只有两个值True或False。将逻辑数据转换成整型或长整型时:True为-1,False为0;将整型或长整型数据转换成逻辑数据时:非0为True,0为False。5.对象(Object)数据类型6.变体(Variant)数据类型4.3常量和变量4.3.1常量在程序运行过程中,其值不能被改变的量称为常量。在VB中有三类常量:普通常量符号常量系统常量。一、普通常量
VB中的普通常量包括数值型常量、字符型常量、逻辑型常量、日期/时间型常量。
1.
数值型常量一般的数值型常量由正负号、数字和小数点组成,正数的正号可以省略。VB中的数值型常量有整型数、长整型数、定点数、浮点数四种表示方式。①整型(Integer)数:表示-32768至32767之间的整数例如:1011020
②长整型数(Long):表示-2,147,483,648至2,147,483,647之间的整数例如:长整型常数的书写:3294521
通常我们说的整型常量指的是十进制整数,但VB中可以使用八进制和十六进制形式的整型常数,因此整型常数有如下三种形式:
1)十进制整数。如125,0,-89。202)八进制整数。以&或&O(字母O)开头的整数是八进制整数,如&O25表示八进制整数25,即(25)8,等于十进制数21。3)十六进制。以&H开头的整数是十六进制整数,如&H25表示十六进制整数25,即(25)16,等于十进制数37。VB中的颜色数据常常用十六进制整数表示。③定点数:定点数是正的或负的带小数点的数,如1.234、-0.345.货币型数也是定点数,如345.789@。④实数/浮点数浮点数分为单精度浮点数和双精度浮点数。浮点数由尾数、E(或D)和指数三部分组成。例如+1234.56E+123、+0.23456E-120、-9.654E6、-1234.56D+123。字母E(单精度)或D(双精度)代表乘上10的幂次;尾数是实数;指数是整数。注:浮点数书写时,E或D前面的尾数和后面的指数均不能省略。例如E-5、1E都是非法的浮点数。1)单精度实型(Single):有效数为7位表示-3.37E+38至3.37E+38之间的实数
2)双精度实型(Double):有效数为15位常量的表示:1)十进制小数形式。它是由正负号(+,-)、数字(0~9)和小数点(.)或类型符号(!、#)组成,即±n.n,±n!或±n#,其中n是0~9的数字。例如0.123、.123、123.0、123!、123#等都是十进制小数形式。2)指数形式。(单精度E,双精度D)±nE±m
或±n.nE±m,±nD±m
或±n.nD±m
例:1.25E+3和1.25D+3相当于1250.0或者1.25×103。2.字符型常量把一串字符用””括起来,就构成一个字符型常量。例如“ABC”,“abcdefg”,“123”,“0”,“VB程序设计”等。(“VisualBasic程序设计”的字符串长度是17,由11个英文字母、2个空格和4个汉字组成)说明:(1)字符串中的字符可以是所有西文字符和汉字、标点符号等;(2)""表示空字符串,而""表示有一个空格的字符串;(3)若字符串中有双引号,例如ABD"XYZ,则用连续两个双引号表示,即:"ABD""XYZ”3.逻辑型常量只有两个取值True或False。4.日期/时间型常量日期/时间型常量必须用号码符“#”括起来。例如#3/18/1999#、#5/20/199921:05:37PM#二.符号常量在程序中,某个常量多次被使用,则可以使用一个符号来代替该常量,这样不仅在书写上方便,而且有效地改进了程序的可读性和可维护性。VB中使用关键字Const声明符号常量。其格式如下:Const常量名[As类型|类型符号]=常数表达式例如ConstPI#=3.1415926535等价于ConstPIAsDouble=3.1415926535ConstNew%=50表示New是整型符号常量
ConstmaxAsInteger=55Const语句课同时定义多个符号常量,各符号常量之间用逗号隔开。如
ConstMax=130,Min=120,PI=3.1415926三、系统常量
VB系统提供了应用程序和控件的系统定义常数。它们存放于系统的对象库中,在“对象浏览器”中的VisualBasic(VB)和VisualBasicforapplications(VBA)对象库中列举了VisualBasic的常数例如,vbCrLf等于Chr(13)+Chr(10),代表回车换行。要将文本框Text1的前景颜色设置为红色,可以使用下面的语句:
Text1.ForeColor=vbRed
这里的vbRed就是系统常量。这比直接使用16进制数来设置要直观得多。又如,窗口状态属性WindowsState可取0,1,2三个值,对应三种不同状态。在程序中使用语句:最大
Myform.WindowsState=vbMaximized
将窗口极大化,显然要比使用语句
myform.WindowsState=2易于阅读和理解。一.变量的命名规则
1.以字母或汉字开头,后可跟字母、数字或下划线组成.例如:am、dc124、W_99为合法的变量名,、3a、print为不合法的变量名。
2.长度不超过255个字符;不能使用VB中的关键字;
3.VB中不区分变量名的大小写.4.为了增加程序的可读性,可在变量名前加一个缩写的前缀来表明该变量的数据类型。例如:strAbc,(字符串变量)
intCount,(整型变量)
dblx(双精度变量)
sngYz
(单精度变量)4.3.2变量二.变量声明
1.用Dim语句显式声明变量形式:Dim变量名[AS类型] Dim变量名[类型符]例
DimintCountAsinteger,sumAssingle等价于DimintCount%,sum!DimsngReAsSingle,intKyAsInteger声明sngRe为单精度型,intKy为整型DimsngRe!,intKy%注:变量名与类型符之间不能有空格DimstrNameAsString声明strName为不定长字符串DimstrAddressAsString*50声明strAddress为长度50的定长字符串DimxAsInteger,yAsinteger,zAsinteger等于Dimx%,y%,z%注:变量被定义后,VB自动给每个变量赋一个初值。数值型变量赋的初值为0;字符或Variant型变量赋的初值是空串;布尔型变量赋的初值是False;日期型变量赋的初值是0:0:0;若为变体型,则初始值为空值(Empty)2.用类型说明符隐式声明变量隐式声明变量是指在变量名后加上一个用于规定变量类型的说明字符,来声明变量的类型。形式为:变量名类型符注:这里变量名与类型符之间不能有空格。例如:Num%=10Country1$=”China”VisualBasic允许用户在编写应用程序时,不声明变量而直接使用,系统临时为新变量分配存储空间并使用,这就是隐式声明。所有隐式声明的变量都是Variant数据类型。VisualBasic根据程序中赋予变量的值来自动调整变量的类型。VB没有规定变量在使用前一定要先声明。对于没有声明便使用的变量,VB将其自动视为可变类型变量。例1下面是一个很简单的程序,其使用的变量a,b,Sum都没有事先定义。PrivateSubForm_Click()Sum=0a=10:b=20Sum=a+bPrint"Sum=";SumEndSub例2PrivateSubCommand1_Click()DimrAsIntegerr=5Print"圆的半径:";r;"cm"Print"圆的周长:";2*3.1415*r;"cm"Print"圆的面积:";3.1415*r^2;"cm"EndSub3.强制显式声明——OptionExplicit语句良好的编程习惯都应该是“先声明变量,后使用变量”,这样做可以提高程序的效率,同时也使程序易于调试。VisualBasic中可以强制显式声明,可以在窗体模块、标准模块和类模块的通用声明段中加入语句:OptionExplicit4.4运算符与表达式
4.4.1算数运算符和算数表达式(ia=3)5+10mod10\9/3+2^2结果:109\3*3=19/3*3=9算术运算符^→–(取负)→*和/→\→Mod→+和–→&用算数运算符和圆括号将操作数连接起来的式子叫算数表达式。操作数可以是常量、变量或函数等。使用圆括号来改变运算次序。如X+(A/3)+(X+Y)^2-5.5Mod2注:①VB中允许不同数据类型的操作数出现在同一表达式中,系统将自动进行数据类型的转换,VB规定运算结果的数据类型以精度高的数据类型为准。即:
Integer<Long<Single<Double<Currency但当Long型数据与Single型数据运算时,结果为Double型数据②除(/)运算的操作数可以是整数或浮点数,运算结果的类型总是Double型。例如
17/53.43.6/1.82(尽管输出结果显示是2,但仍是Double型数据)19/2.57.610/33.333333333
33333③整除(\)运算时,一般要求操作数为整数,若操作数中有浮点数,则必须先对小数部分按四舍五入原则进行处理,然后再进行整除。如9\4=231.77\5.8=53\1.4999=33\1.5=1④取模(Mod)运算就是求两个数相除后的余数,若操作数中有浮点数,则必须先对小数部分按四舍五入原则进行处理,然后再进行运算,运算结果的符号取决于左操作数的符号。如
24Mod7=331.77Mod5.8=28.6Mod3=0-5Mod2=-1-5Mod-2=-15Mod-2=1书写时两个操作数与Mod之间要留有空格⑤进行除(包括整除)运算除数为0时,或进行乘方运算指数为负而底数为0时,都会产生算数溢出的错误信息。4.4.2字符串运算符与字符串表达式
字符串运算符有:&、+
例如:"ABCD"+"EFGHI"结果为:ABCDEFGHI“VB”&“程序设计教程”结果为:VB程序设计教程说明:当连接符两旁的操作量都为字符串时,上述两个连接符等价。它们区别是:
+:运算符两边的操作数应均为字符型。若均为字符型则进行算术运算。若一边为字符型另一边为数值型,则系统自动将字符串转换为数值,进行算术运算;若系统无法将该字符串转换为数值,则出错。如“1234”+51239 “1234”+“5” “12345” “Basic”+5运行时出错
&:运算符两边的操作数不管是字符型还是数值型,进行连接操作前,系统先将操作数转换成字符型,然后再连接。如 “Basic”&5 “Basic5” “1234”&5 “12345” “1234”&“5” “12345”例:"100"+123'结果为223"100"+"123"'结果为100123"Abc"+123'出错
"100"&123'结果为100123100&123'结果为100123"Abc"&"123"'结果为Abc123"Abc"&123'结果为Abc123
注意:使用运算符“&”时,要在运算符“&”两边输入空格。这是因为符号“&”还是长整型的类型定义符,如果变量与符号“&”接在一起,VB系统先把它作为类型定义符处理,因而就会出现语法错误。
4.4.3关系运算符与关系表达式
关系运算符都是双目运算,是用来比较两个运算量之间的关系,关系表达式的运算结果为逻辑量,True或False。
VB中的关系运算符如下表所示。
运算符含义优先级实例结果<小于所有关系运算优先级相同。低于算术运算的加“+”,减“-”运算,高于逻辑非“Not”运算。15+10<20False<=小于或等于10<=20True>大于10>20False>=大于或等于"This">="That"True=等于"This"="That"False<>不等于"This"<>"That"TrueLike字符串匹配"This"Like"*is"TrueIs对象比较Command1IsCommand1
True关系运算的规则如下:(1)当两个操作式均为数值型,按数值大小比较,如果两端的值可满足关系运算符,则结果为True,否则为False。(2)字符串比较,则按字符的ASCII码值(数字<大写字母<小写字母)从左到右按照“逐个比较,遇大则大,长大短小,完全相同才是相等”的原则进行。例:"ABCDE">"ABRA" 结果为False(3)数值型与可转换为数值型的数据比较,如:29>"189"按数值比较,结果为False12345=”12345”结果为True(4)数值型与不能转换成数值型的字符型比较,如:77>"sdcd"不能比较,系统出错
12345=”abc”(5)关系运算符的优先级相同,运算时从左至右依次进行。(6)对浮点数进行比较时,因为计算机的运算误差,可能会得到不希望的结果。因此应避免直接判断两个浮点数是否相等,而应改成对误差的判断。例如:Abs(num1-num2)<1E-6只要num1与num2的差小于一个很小的数(这里是10的-6次方),就认为是相等了。(7)“Like”运算符是VB6.0新增加的。通常与通配符一起使用对sql数据库进行模糊查找。其使用格式为:”abcdefghi”Like“a*f???”结果为True4.4.4逻辑运算符与逻辑表达式
Not逻辑非为单目运算符(要求一个操作数),其它为双目运算符。条件表达式1And条件表达式2条件表达式均为T结果为T
条件表达式1Or条件表达式2条件表达式有一个T结果为T说明:(1)逻辑运算符的优先级不相同,Not(逻辑非)最高,但它低于关系运算。(2)VB中常用的逻辑运算符是Not、And和Or。它们用于将多个关系表达式进行逻辑判断。例如,数学上表示某个数在某个区域时用表达式:10≤X<20,用VB程序中应写成:
X>=10AndX<20(3)参与逻辑运算的量一般都应是逻辑型数据,如果参与逻辑运算的两操作数是数值量,则以数值的二进制值逐位进行逻辑运算(0当False,1当True)。如11AND7(11的二进制数为1011,而7的二进制数为0111,对它们逐位进行AND逻辑与运算,得到二进制数0011,结果为十进制数3)(4)所有逻辑运算符都不是界符,在输入代码时,要在逻辑运算符两边输入空格关系表达式与逻辑表达式常常用在条件语句与循环语句中,作为条件控制程序的流程走向。例
(1)数学上判断x是否在[a,b]区间时,习惯上写为a≤x≤b,但在VB中应该写为
a<=xAndx<=b(2)用逻辑表达式表示闰年的条件(闰年的条件是符合二者之一①能被4整除但不能被100整除②能被400整除)(YearMod4=0AndYearMod100<>0)OrYearMod400=0(3)若优秀学生的条件是年龄(Age)小于20岁,三门功课成绩(M1、M2、M3)的总分高于280分,其中有一门要大于95分
Age<20And(M1+M2+M3)>280AndM1>95OrM2>95OrM3>954.4.5日期型表达式日期型数据是一种特殊的数值型数据,只能有下面3种情况:1.一个日期型数据可以相减:DateB-DateA结果是一个数值型整数(两个日期相差的天数)。例如:#05/08/2009#-#05/01/2009#其结果为数值:72.一个日期型数据(DateA)与一数值数据(N)可作加法运算:DateA+N其结果仍是一个日期型数据。例如:#05/01/2009#+7其结果为日期型数据:#05/08/2009#3.一个日期型数据(DateA)与一数值数据(N)可作减法运算:DateA-N其结果仍是一个日期型数据。例如:#05/08/2009#-7其结果为日期型数据:#05/01/2009#4.4.6运算符的执行顺序
表达式中出现了多种不同类型的运算符时,其运算符优先级如下:
算术运算符>字符运算符>关系运算符>逻辑运算
说明:
1.当一个表达式中出现多种运算符时,首先进行算术运算符,接着处理字符串连接运算符,然后处理比较运算符,最后处理逻辑运算符,在各类运算中再按照相应的优先次序进行。
2.可以用括号改变优先顺序,强令表达式的某些部分优先运行。括号内的运算总是优先于括号外的运算。对于多重括号,总是由内到外。算术运算符^
→
–
→
*和/
→
\
→Mod
→
+和–
→
&和+
3.表达式的书写中需注意的问题
(1)运算符不能相邻,一般两个相邻运算符之间必须用括号分开。例x*(-y)不能写为x*-y。(2)乘号不能省略。例x乘以y应写成:x*y
(3)括号必须成对出现,均使用圆括号。(4)表达式从左到右在同一基准并排书写,不能出现上下标(5)要注意各种运算符的优先级别,为保持运算顺序,在写VB表达式时需要适当添加括号(),若用到库函数必须按库函要求书写。
如:
(b-sqr(b*b-4*a*c))/(2*a)(a+b)/(a-b)
VB提供了上百种内部函数(库函数),要求掌握这些常用函数的功能及使用。调用方法:
函数名(参数列表)有参函数函数名无参函数说明:(1)使用库函数要注意参数的个数及其参数的数据类型(2)要注意函数的定义域(自变量或参数的取值范围)例如:sqr(x)要求:x>=0
约定:下列叙述中,N表示数值表达式,C表示字符表达式,D表示日期表达式;另外,凡是函数名后有$符号者,表示函数返回值为字符串。4.5常用内部函数
1.数学函数常用的数学函数见表所示
Abs(N)Cos(N)Sin(N)Exp(N)Log(N)Sqr(N)Rnd[(N)]Sgn(N)
说明:(1)在三角函数中的自变量是以弧度表示。弧度=度数*3.14159/180
如:sin300sin(300*3.14159/180)(2)VB只提供求以e为底的自然数对数的函数Log(x),若要求以其它数为底数的对数,应使用换底公式。例如求以10为底的常用对数lgx可表示为log(x)/log(10)
(3)Rnd函数返回0~1(包括0和不包括1)之间的双精度随机数。产生某个范围内的随机整数,可使用公式:Int((上界—下界+1)*Rnd)+下界若要产生1-100的随机整数:Int(Rnd*100)+1
怎样产生[N,M]区间的随机整数?答案:int((m-n+1)*rnd)+n
例PrivateSubForm_Click()Dimd1AsInteger,d2AsIntegerd1=Int((6-1+1)*Rnd+1)d2=Int((6-1+1)*Rnd+1)Print"你掷了一个"&d1&"和一个"&d2Print"两个骰子的点数之和为;"&(d1+d2)EndSub4.5.2类型转换函数(1)要区别两个取整函数int()和fix()
Fix(N)为截断取整,即去掉小数后的数。
Int(N)不大于N的最大整数。
N>0与int(N)相同,当N<0时,int(N)与fix(N)-1相等。例如:Fix(9.59)=9,Int(9.59)=9Fix(-9.59)=-9,Int(-9.59)=-10
思考:如何实现四舍五入取整?答案:cint(9.59)=10,cint(-9.59)=-10
(2)Asc("Abcd")值为:65(只取首字母的Ascii值)(3)Val("abc123")值为:0,Val("1.2sa10")值为1.2
注意:Val()函数只将最前面的数字字符转换为数值。(4)Str函数和Cstr函数当使用Str函数将数值型数据转换成字符串时,其结果字符串的第一个字符一定是空格或是正负号。例如:X=Str(123)X的值为”123”,注意字符串包含一前导空格,暗示有一正号X=Str(-123.456)X的值为”-123.456”X=Str(+123.456)X的值为”+123.456”若用Cstr函数也可以将数值型数据转换成字符串,但其结果字符串是直接将数值型数据两边加上双引号而得。例如:Cstr(123)的值为”123”(此时字符串不包含前导空格)。因此,Len(Str(123))的值为4,而Len(Cstr(123))的值为3
例PrivateSubCommand1_Click()PrintChr(Asc("A"))PrintAsc("ABCDEF")PrintTrim(Str(Asc("ABCDEF")))Print"显示在上一行"+Chr(13)+Chr(10)+"显示在下一行"注:等效于Print"显示在上一行"+vbCrLf+"显示在下一行"EndSub
注:Chr(13)和Chr(10)分别代表回车和换行,完全等效于VB内部常量vbCrLf。3.字符串操作函数(常用的字符串函数见表)
说明:如果返回是字符型,则函数后有“$”字符。当然一般可以不写,习惯都写上。例如:
len("Thisisabook!")15Left$("ABCDEFG",3)"ABC"Mid$("ABCDEFG",2,3)"BCD"InStr(2,“ABCDEFGEF”,“EF”)5(第一次出现的位置)
InStr(6,“ABCDEFGEF”,“EF”)8(第二次出现的位置)函数名功能说明例结果Now系统当前的日期和时间Now99/05/2011:26:30AMDate系统当前的日期(年-月-日)Date1999-05-20Time系统当前的时间(hh:mm:ss)Time11:26:30AMYear(D)年份(yyyy)Year(#2/9/99#)1999Month(D)月份(1-12)Month(“99,05,01”)5Day(D)月中第几日(1-31)Day(#2/9/99#)9Weekday(D)星期几(1-7),1表示星期日Weekday(#2/9/99#)34.5.4日期与时间函数掌握:Time()Date()NowYear()Month()Day()注意:当日期函数中的参数为数值型时,表示相对于1899年12月30日为前后的天数。例如,Year(365)表示相对于1899年12月30日为0天后365天的年代号,所以值为1900.例如:PrivateSubForm_Click()Print"今天是"+Str(Year(Date))+"年"+Str(Month(Date))+"月"+Str(Day(Date));"日"PrintPrint"现在是北京时间"&TimeEndSub4.5.5格式化输出函数使用格式:Format$(表达式[,“格式字符串”])功能:格式化输出函数Format主要用于屏幕显示或打印时对输出项的内容进行格式描述,以满足不同输出格式的要求,常常用在print方法中。使用形式:printFormat$(表达式[,“格式字符串”])表达式:可以是数值、日期或字符串型表达式。格式字符串:表示输出表达式时采用的输出格式。不同数据类型所采用的格式字符串是不同的。(1)数值型数据格式化注意:对于符号:0与#,当数值的实际位数比格式控制给定的位数多时,系统将按四舍五入返回给定的位数。如:Format(3.14159,“###.#00”),其值为3.142符号功能说明数值表达式格式化字符串显示结果#用于表示一个数字位。若实际数值的位数小于符号位数,数字前后不加01234.5671234.56712“#####.####”“###.##”“#.##”1234.5671234.57120功能同#。只是当实际数值的位数小于符号位数,数字前后加01234.5671234.56712“00000.0000”“000.00”“0.00”01234.56701234.5712.00.小数点占位符。常与#和0格式符配合使用1234“000.000”1234.000,千分位符号占位符1234.567“##,##0.0000”1,234.5670%数值乘以100,加百分号。常放在格式字符串的末尾1234.5678“####.##%”123456.78%$常放在格式字符串的开头,以使在输出的数值前加一个$符号1234.567“$####.##”$1234.57+常放在格式字符串的开头,用以在输出的数值前加正号-1234.567“+####.##”-+1234.57-常放在格式字符串的开头,用以在输出的数值前加负号1234.567“-####.##”-1234.57E+指数形式输出0.123450.12345“0.00E+00”“00.00E+00”1.23E-0112.35E-02E-与E+作用相似1234.5671234.567“#.##E-00”“##.##E-00”1.23E0312.35E02(2)日期和时间型数据格式化缺省日期格式为:“mm/dd/yy”,时间格式:“hh:mm:ss”
如:PrintFormat(Now),其值为2008-03-1010:07:10类型符号功能说明日d显示日期(1—31),个位前不加0dd显示日期(01—31),个位前加0ddd显示星期缩写(Sun——Sat)dddd显示星期全名(Sunday——Saturday)ddddd显示完整日期(日、月、年)缺省格式为mm/dd/yy月m显示月份(1——12),个位前不加0mm显示月份(01——12),个位前加0mmm显示月份缩写(Jan——Dec)mmmm显示月份全名(January——December)年y显示一年中的天(1——366)yy两位数显示年份(00——99)yyyy四位数显示年份(0100——9999)季q季度数(1——4)星期w星期为数字(1——7,1为星期日)ww一年中的星期数(1——53)时h显示小时(0——23),个位前不加0hh显示小时(00——23),个位前加0分m在h后显示分(0——59),个位前不加0mm在h后显示分(00——59),个位前加0秒s显示秒(0——59),个位前不加0ss显示秒(00——59),个位前加0tttt显示完整时间(小时、分、秒)缺省格式为hh:mm:ssAM/PMam/pm用12小时制显示时间,中午前AM(或am),中午后PM(或pm)。和h格式符一起使用A/Pa/p同“AM/PM”,中午前A(或a),中午后P(或p)例PrivateSubCommand1_Click()DimmytimeAsDate,mydateAsDateFontSize=10FontBold=Truemytime=#9:01:35AM#mydate=#7/1/1999#PrintTab(4);Format(mydate,"mm-dd-yy")PrintTab(4);Format(mydate,"mmmm-yy")PrintTab(4);Format(mytime,"h/m/sAM/PM")PrintTab(4);Format(mytime,"hh:mm:ssA/P")PrintTab(4);Format(Now,"yyyy年m月dd日hh:mm:ss")PrintTab(4);Format(Date,"dddd,mmmm,yyyy-mm-dd")EndSub(3)字符串类型数据格式化字符串格式化是指将字符串按“格式字符串”指定的格式输出。符号功能说明字符串表达式例格式化字符串显示结果@字符占位符。实际字符位数小于符号位数时,字符前加空格“ABab”“@@@@@@”ABab!与@一起使用,当实际字符位数小于符号位数时,强制字符后加空格“ABab”“!@@@@@@”ABab&字符占位符。实际字符位数小于符号位数时,字符前不加空格“ABab”“&&&&&&&”ABab<强制小写。将所有字母以小写显示“ABcd”“<”Abcd>强制大写。将所有字母以大写显示“ABcd”“>”ABCD4.6用户交互函数和过程
4.6.1InputBox函数变量名=InputBox[$](提示信息[,标题][,缺省][,x坐标][,y坐标])
其中:提示信息:该项为一字符串表达式(≤255个字符),不可以省略。若信息太长需要进行多行显示,必须在每行行末加回车Chr(13)和换行符Chr(10),或直接加回车换行控制符vbCrLf。X坐标、y坐标:是对话框左上角点相对于屏幕(注意,不是窗体)的坐标。
例如:有下列语句如下:
Dimx%x=Val(InputBox(“请输入一个数”,“输入框”,100))
语句执行后打开如下对话框。缺省值标题题提示注:Inputbox函数的函数值是字符串类型。例1.PrivateSubCommand1_Click()Dimmj,djmj=Val(InputBox("商品房面积"))dj=Val(InputBox("每平米价格"))Print"商品房面积";mjPrint“每平米价格”;djPrint"商品房价格";dj*mj;"元"EndSub(程序中mj和dj都定义为可变类型变量,而要求输入商品房面积和每平米价格的Inputbox函数的结果是字符串类型,因此需要加Val把字符串转换成数值。)例2PrivateSubForm_Click()DimstrnameAsString*40,strtmpAsString*40strname="输入你的姓名"+vbCrLf+"然后单击确定"strname=InputBox(strname,"输入框程序示例","******",100,100)PrintstrnameEndSub2.MsgBox函数和MsgBox过程(message的缩写)函数形式:变量[%]=MsgBox(提示[,按钮[+图标][+缺省按钮][+模式]][,标题])过程形式:MsgBox
提示[,按钮[+图标][+缺省按钮][+模式]][,标题]图标标题提示信息命令按钮说明:1“标题”和“提示”与InputBox函数中对应的参数相同;2“按钮(C1)+图标(C2)+缺省按钮(C3)+模式(C4)”是整型表达式,决定信息框按钮数目、出现在信息框上的图标类型及操作模式(见表)
3若程序中需要返回值,则使用函数,否则可调用过程。例如:前一页的图用下面的语句实现
PrintMsgBox(“注意:你输入数据不正确”,50,“错误提示”)
根据选择的不同,有3、4、5三个结果。按钮按钮、图标、缺省按钮、模式的值如下(P58)
根据用户所选按钮,函数返回1—7的整数值,其含义如下表(P58)例1.PrivateSubForm_Load()DimMsgPromptAsString,MsgTitleAsStringDimMsgStyleAsInteger,iAsIntegerMsgPrompt="输出信息对话框"MsgStyle=1+48+0(也可以写成MsgStyle=vbOkCanael+vbExclamation+vbDefaultButton1或直接写成MsgStyle=49)MsgTitle="输出对话框"i=MsgBox(MsgPrompt,MsgStyle,MsgTitle)Ifi=1Then
MsgBox"确定"Else
MsgBox"取消"EndIfEndSub例2.(口令:zhang)
PrivateSubCommand1_Click()DimiAsIntegerIfText1.Text="zhang"Then
MsgBox"口令输入正确",vbInformation,"消息框程序示例"Else i=MsgBox("口令输入错误",5+48,"输入口令") Ifi=4Then Text1.Text="" Text1.SetFocus Else End EndIfEndIfEndSub补充说明:1.变量作用域作用范围局部变量窗体/模块级变量全局变量
窗体标准模块声明方式Dim、StaticDim、PrivatePublic声明位置在过程中窗体/模块的“通用声明”段窗体/模块的“通用声明”段能否被本模块其他过程存取不能能能能否被其他模块存取不能不能能,但在变量名前加窗体名能,如果不唯一则需加模块名2.VB中常用数据类型的初始值(1)初值为0%,&,!,#,byte,@(2)逻辑型:false(3)字符串:空(定长串为定长空)(4)日期型:0:00:003.不同数据类型数据的赋值(1)如果变量与表达式都是数值型,系统先求出表达式值,再将其转换为变量类型最后赋值。
eg.K%=3.45*6‘四舍五入取整结果:k=21k&=17524*2‘%*%=%结果:溢出
k&=190^2‘^为double型结果:k=36100(2)如果变量是字符型,表达式为数值类型,则系统把表达式的值转换为字符型赋值给变量。
eg.A$=2.3e5printa结果:“230000”
(3)对于小数(如:小数0.5)系统默认是double型(4)不同类型的数值数据运算时其结果的类型与数值范围最大的数据类型一致
eg.a%=30:b%=40:c%=50Printa*b*c*1&‘%*%=%结果:溢出
Print1&*a*b*c’&*%=&结果:60000练习:强制显式说明:OptionExplicit语句在模块中使用该语句,当遇到未经显式说明的变量
时,就会发出错误警告OptionExplicitPrivateSubCommand1_Click() DimcurSalaryAsSingle
curSalary=3000
…
curSalry=curSalry+500EndSubVB接受许多种日期时间格式例:下面的Date/Time值全部有效。
#3-6-9313:20##March27,19931:20am##Apr-2-93##14April1993##12/18/1999#可以用逗号分隔多个常量声明
ConstPi=3.14,Max=9,MyStr="Hello"'用先前定义过的常量定义新常量
ConstPi2=Pi*2使用:在程序中引用如:AREA=Pi*R^2
在程序中不可修改如:Pi=3.14系统定义符号常量
VB内部已定义,可以直接使用的常量查看内部常量:
视图→对象浏览器→选择库、类、成员如:库VBRUN
类ColorConstants
ShapeConstants
成员Vbred
例:PrivateSubForm_Activate()ConstAAsString="各种常量的使用"Form1.BackColor=vbGreenForm1.ForeColor=vbRedForm1.FontSize=14PrintAEndSub例:在窗体中放置按钮Command1和Command2DimaAsIntegerPrivateSubCommand1_Click()a=a+10PrintaEndSubPrivateSubCommand2_Click()a=a+15PrintaEndSub
运行程序,观察结果将DimaAsInteger放到过程内,再运行,观察结果。去除Dim,比较使用OptionExplicit与不使用的结果。例:将以下表达式写成VB合法的表达式
(xy)za1+a2a-b+a(-b)a1+a2a^(-b)+a*(-b)
(x^y)^z
a^(1/n)
y/(-x)+x/(-y)A/(4+(8/(3+B))1.乘方运算例:10^210的平方,结果为10010^(-2)10的平方的倒数,结果为0.0125^0.525的平方根,结果为58^(1/3)8的立方根,结果为22^2^3运算顺序从左到右,结果为64(-8)^(-1/3)错误,当底数为负时,指数必须是整数2.整数除法例:10\4结果为225.68\6.99先四舍五入再整除,结果为33.取模运算例:10Mod4结果为225.68Mod6.99先四舍五入再求余数,结果为5
11Mod–4结果为3-11Mod5结果为-1-11Mod-3结果为-2字符串运算符与字符串表达式字符串运算符有两个:&+例:"Hello"&"World"结果为"HelloWorld""Check"&123结果为"Check123"123&456结果为"123456""123"&456结果为"123456"123+456结果为579"123"+"456"结果为"123456""Check"+123错误例:将以下条件写成VB布尔表达式
1.m1-n1≤j≤m1+n12.X<-5或X>53.M和N之一为5,但不能同时为54.-100<k<100,且K为偶数
5.的定义域1.(J>=M1-N1)And(J<=M1+N1)2.(X<-5.0)Or(X>5.0)3.((M=5)And(N<>5))Or((M<>5)And(N=5))4.(K>-100)And(K<100)And(KMod2=0)5.(X<>0)And((X-1.0)*(X-2.0)>=0.0)表达式的运算顺序
()→函数运算→算术运算→关系运算→布尔运算数学函数例:Fix(45.67)结果为45Int(45.67)结果为45Fix(-2.89)结果为-2Int(-2.89)结果为-3Abs(-4)结果为4Log(10)结果为2.30258509299405Sgn(3)结果为1Sgn(-6)结果为-1Sgn(0)结果为0例:求sin300
Sin(a*3.14/180)例:判断一个整数Y能否被另一个整数X整除如果INT(Y/X)=Y/X则整除例:常用对数log10X的求法用换底公式log10X=Ln(X)/Ln(10)
即LOG(X)/LOG(10)例:求e3
正确:EXP(3)
错误:e^3(错)字符串函数例:LTrim("∪∪∪ABC")结果为"ABC"表示空格RTrim("ABC∪∪∪")结果为"ABC"Trim("∪∪∪ABC∪∪∪")结果为"ABC"Left("ABCDE",2)结果为"AB"Right("ABCDE",2)结果为"DE"Mid("ABCDE",2,3)结果为"BCD"Mid("ABCDE",2,6)结果为"BCDE"例:Len("ABCDE")结果为5String(3,"ABC")结果为"AAA"String(3,65)结果为"AAA"
InStr("ABCDECDE","DE")结果为4InStr(5,"ABCDECDE","DE")结果为7
UCase("Abc")结果为"ABC"
LCase("ABc")结果为"abc"转换函数例:Asc("A")结果为65
Asc("ABC")结果为65Chr(65)结果为"A"Str(123)结果为"∪123"Str(-123)结果为"-123"Val("123")结果为123Val("123AB")结果为123Val(".123AB")结果为.123Val("a123AB")结果为0格式输出函数例:Format(123.45,"0000.000")结果为"0123.450"Format(123.45,"0.0")结果为"123.5"Format(123.45,"####.###")结果为"123.45"Format(123.45,"#.#")结果为"123.5"Format(0.123,".##")结果为".12"Format(0.123,"0.##")结果为"0.12"
Format("HELLO","<")结果为"hello"
Format("Thisisit",">")结果为"THISISIT"
注:经Format函数格式化后的结果为字符串类型例:Format(123)+Format(456)结果为"123456"区别:Str(123)+Str(456)结果为"∪123∪456"本章小结:1.常用数据类型整型:Integer%
长整型:Long&
单精度:Single!
双精
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论