第3章VB语言基础3.
1基本要求1.
掌握VB的数据类型和变量的定义及赋值方法;2.
掌握各种运算符的用法和表达式的建立方法;3.
掌握常用内部函数的用法;4.
掌握输入/输出函数及VB的输入输出方法.
3.
2知识点1.
VB数据类型(1)标准数据类型它是系统定义的数据类型.
主要有字节型(Byte)、整型(Integer)、长整型(Long)、单精度型(Single)、双精度型(Double)、货币型(Currency)、字符数据类型(String)、日期数据类型(Date)、逻辑数据类型(Boolean)、对象数据类型(Object)、变体数据类型(Variant).
字节型数据在内存中占1个字节,无符号,取值范围为0-255.
整型数据在内存中占2个字节,可以表示1个带符号的整数,取值范围为-32768-+32767.
长整型数据在内存中占4个字节,可以表示1个带符号的整数,取值范围为-231-+231-1单精度型数据在内存中占4个字节,可以表示1个带符号的实数.
有效数字精确到7位,表示数的范围为-3.
402823E38-+3.
402823E38双精度型数据在内存中占8个字节,可以表示1个带符号的实数.
有效数字精确到15位或16位十进制数.
货币型数据采用8个字节存放.
可以表示1个带符号的实数,但小数部分保留4位有效数字,整数可以达到15位精确数字.
日期型数据表示由年、月、日组成的日期信息或由时、分、秒组成的时间信息.
用符号"#"表示日期型数据.
逻辑数据类型采用2字节存储,逻辑数据类型只有两个值:True(真)、False(假).
字符数据类型用于表示字符的数据.
存储时根据实际情况安排字节数,是不定长的.
字符可以包括西文字符和中文字符及其他可以表示出来的形式.
VB中字符型数据以Unicode码存放,一个西文字符和中文字符均占2个字节.
对象型数据用来表示图形、OLE对象或其他对象,占用4个字节.
变体数据类型(Variant)可存放任何类型的数据,由所赋值的类型所决定.
当一个变量没有说明类型时就会被默认为变体数据类型.
(2)自定义类型它是用户根据需要,将不同的标准数据类型集合在一起的数据类型.
自定义数据类型是结构类型,类似于数据库中的记录结构、C语言中的结构类型.
具体使用时用Type语句定义,结构如下:Type自定义类型名元素名[(下标)]As类型名……[元素名[(下标)]As类型名]EndType2.
常量常量是在程序运行过程中固定不变的量.
常量有三类:(1)直接常量①字符串常量是用双引号括起来的一串字符.
这些字符可以是除双引号和回车、换行符以外的任何ASCII字符.
如:"DATE"、"123"②逻辑常量只有True和False两个值.
③整型常量:有三种形式,例如:49(十进制)、&H4A(十六进制,以&H开头)、&O47(八进制,以&O或&开头).
④长整型常量:有三种形式,例如:82459(十进制)、&H884A&(十六进制,以&H开头,以&结尾)、&O6647&(八进制,以&O或&开头,以&结尾).
⑤单精度常量:有三种形式,例如:123.
5,1.
235E+2,123.
5!
⑥双精度表示方法:有2种形式,例如:123.
5#,1.
235D+2⑦日期常量:用"#"号括起来,例如:#12/20/2002#,#14:20:30#,#03/05/200520:30#⑧货币常量:可以是整数,也可以是小数(但只保留4位小数).
例如(50@,50.
756@)(2)系统内部常量内部常量是VB和控件提供的.
可与应用程序的对象、方法和属性一起使用,编程时也可以直接使用.
(3)用户定义常量用户定义符号常量使用Const语句.
格式:Const[As]=例如:ConstMax=2343.
变量在程序运行过程中其值可以发生改变的量称为变量.
变量分为:属性变量和用户声明变量.
(1)变量的命名规则①必须以字母或汉字开头,由字母、汉字、数字或下划线组成,长度不能超过255个字符②不能使用VB中的关键字.
③VB中字母不区分大小写,以第一次出现的变量形式为准.
④必要时可以在变量名前加前缀或变量名后加后缀以说明变量的类型.
⑤尽量避免使用汉字作为变量名.
(2)变量声明语句格式:Dim|Private|Static|Public[AS]说明:①变量名表示所定义的对象,命名要符合变量命名规则②一个定义语句可以同时定义多个变量.
③Dim用于在标准模块、窗体模块或过程中定义变量.
④Private在窗体模块或过程中声明变量为局部变量.
⑤Static用于在过程中声明变量为静态变量.
⑥Public用于在标准模块中定义全局变量.
⑦As:用于说明该变量的类型,若省略则定义该变量为变体类型.
4.
运算符运算符是表示数据进行什么运算的符号.
运算符可分成算术运算符、关系运算符、逻辑运算符和字符串运算符四大类.
运算符及其优先级如下表所示.
名称运算符优先级算术运算符^-(取负)*、/\Mod+、-从上到下依次降低字符运算符+、&关系运算符Like、Is逻辑运算符NotAndOrXorEqvImp优先级从左到右依次降低5.
表达式表达式是数据之间运算关系的表达形式,由常量、变量、函数等数据和运算符组成.
单个常量或变量也可以看作是表达式.
(1)书写规则:从左到右在一行上书写,无高低区分;表达式中的运算可以用圆括号括起,以改变运算的优先级或增加表达式的清晰度.
不能使用方括号或花括号,圆括号可以出现多个,但必须配对.
(2)表达式值的类型:在算术表达式中,出现不同的数据类型时,应向精度高的数据类型转换.
6.
VB的函数函数是用来实现数据处理过程中的特定的运算与操作.
函数可分为内部函数和用户自定义函数.
内部函数是由VB本身提供的,也称标准函数.
内部函数调用方法:函数名(),自变量称为参数,不同的函数其自变量都有其规定的数据类型.
函数一般都有一个返回值,也有相应的数据类型.
(1)数学函数:常用数学函数如下表所示函数形式函数名称及含义Abs(x)绝对值函数Cos(x)余弦函数Exp(x)指数函数,即exLog(x)以e为底对数函数,即logeXRnd(x)随机函数,产生[0,1)内的一个数Sin(x)正弦函数Sgn(x)符号函数Sqr(x)平方根函数Tan(x)正切函数(2)字符串函数:字符串函数的格式及基本功能如下列表格所示.
函数形式函数名称及含义Len(X)字符串长度函数LenB(X)字符串字节数函数InStr(N,X1,X2,[M])匹配位置函数StrComp(X1,X2,[M])字符串比较函数Left$(X,N)左取字符串函数Mid$(X,N,M)中取字符串函数Right$(X,N)右取字符串函数Ltrim$(X)去左空格函数Trim$(X)去前后空格函数Rtrim$(X)去右空格函数Space$(X)空格填充函数String$(N,X)字符填充函数InStrRev(X1,X2,N,M)匹配位置反查函数Join(A,X)合并数组为串函数Replice$(X,X1,X2)字符串替换函数Split$(X1,X2)分隔串为数组函数StrReverse$(X)字符串反序函数(3)数据类型转换函数函数形式函数名称及含义Asc(C)取ASCII值函数Val(C)字符串转换函数Fix(N)截尾取整函数Hex$(N)转十六进制函数Int(N)返回不大于N的最大整数Oct(N)转八进制函数Chr$(N)ASCII码值转字符串函数Lcase(C)大写转小写函数Ucase(C)小写转大写函数Str(N)数值转字符串函数(4)日期和时间函数函数形式函数名称及含义Date()取系统日期函数DateSerial(Y,M,D)日期设置函数DateValue(C)日期设置函数DateAdd(G,N,T)增减日期函数DateDiff(G,T1,T2)间隔日期函数Day(C)取日期函数Month(C)取月份函数Year(C)取年份函数Now返回系统日期时间函数Time()取系统当前时间函数WeekDay(C)返回星期代号函数(5)随机函数与随机数语句①随机函数格式:Rnd([x]),用于产生一个0-1之间的single类型的随机数.
②产生指定区间的随机数的方法为:(0,x)区间的随机浮点数:Rnd*x(m,n)区间的随机浮点数:m+Rnd*(n-m)[i,j]区间的随机整数:Int(i+Rnd*(j-i+1))③随机数语句格式:Randomize[expN1],用于根据一套算法产生随机数,以消除同一序列的随机数可能会反复出现的情况.
若省略参数,则用系统时钟返回的值作为参数.
7.
VB程序的书写(1)VB程序是以行为单位编写的,由若干语句行组成.
(2)通常情况下,VB程序代码每行写一条语句,每个语句写在一行中,一行中最多容纳254个字符,并按Enter键结束.
(3)如果需要在同一行内写多条语句时需要使用冒号":"作为分隔符.
(4)如果一条语句很长或其他原因需要写成多行时,要使用续行标记"_",是一个空格加一个下划线字符.
8.
变量定义语句(Dim)(1)语句格式:Dim[AS][,[AS]](2)作用:为每个变量命名、指定类型.
(3)说明:定义的变量只是在运行时才在内存中分配相应的空间,如果没有定义,同时系统又可以默认时,变量的类型是变体类型,可以根据具体使用的情况转换为对应的类型.
9.
赋值语句(Let)(1)格式:[Let]变量名=表达式(2)功能:将表达式的值赋给变量或某个带有属性的对象.
(3)说明:变量名为变量或属性的名称.
"="是赋值号,不是数学中的等号.
先计算表达式的值,然后再将结果赋给变量.
"="两边的类型必须一致或相容.
如果变量是Variant类型,则表达式可以是任何类型.
10.
打印语句(Print)(1)格式:[对象名称.
]Print[表达式表][,|;](2)功能:在窗体、图片框、打印机等对象中输出信息.
(3)说明:与打印语句一起使用的分隔符号有";"、","和函数Tab(n)、Space(n)、Chr(10)、Chr(13).
11.
注释语句(Rem或')(1)格式:Rem注释内容或'注释内容(2)作用:是对程序适当增加一些说明以便阅读理解程序.
(3)说明:注释语句是非执行语句,也就是说注释语句的出现不会影响到程序的运行.
12.
清除语句(Cls)(1)格式:[对象.
]Cls(2)作用:在相应的对象上清除打印语句和绘图语句等形成的输出.
(3)说明:对象可以是窗体、图片框和立即窗口,若省略对象则在窗体上清除.
13.
输入设计(1)直接赋初值:在程序中使用赋值语句给变量或控件属性赋值.
(2)通过文本框(Text)控件传送初值(3)交互方式赋初值:就是利用输入对话框(InputBox)输入数据.
格式:InputBox(提示[,标题][,默认输入值][,])其中,提示为对话框显示的信息,不能省略;标题为对话框标题;默认输入值当在输入对话框中无输入时作为输入内容.
:给出输入对话框在窗体中的位置.
14.
输出设计(1)使用Print命令或绘图命令直接打印输出或绘图输出.
(2)通过给文本框的Text属性或标签的Caption属性赋值输出(3)使用MsgBox语句或MsgBox()函数用于打开一个信息框,等待用户选择一个按钮.
MsgBox函数返回所选按钮的整数值;若不需要返回值,则可使用MsgBox语句.
MsgBox()函数格式:变量[%]=MsgBox(提示[,按钮][,标题])MsgBox语句形式:MsgBox提示[,按钮][,标题]其中,提示为对话框显示的信息,不能省略;标题为对话框标题;按钮是整型表达式,决定信息框按钮的数目和类型及出现在信息框上的图标类型.
3.
3疑难解析1.
逻辑表达式书写错误,在VB程序中没有造成语法而是逻辑错数学中表示变量x在一定数值范围内,写成,在VB中对应的表达式应该写作x>1andx""AndNotIsNumeric(Text2.
Text)Then即可.
3.
同时给多个变量赋值,在VB程序中没有造成语法错而是逻辑错同时给x、y、z三个整型变量赋初值,如果写成如下赋值语句:x=y=z=1,在C语言中,可以实现同时对多个变量赋值;在FORTRAN等其他语言中会提示语法错.
但在VB中,既不会提示语法错,也不会实现应有的功能,它是一种逻辑错误.
VB中规定,一个赋值语句只能给一个变量赋值,上述三个"="的含义分别是:最左边一个"="表示赋值号,另二个"="为关系运算符.
因此,VB先求关系表达式y=z=1的值,然后赋给x;VB中默认数值型变量的初值为0,所以表达式y=z=1的值为0,x赋得的值为0,y、z的值默认为0.
4.
标准函数名写错VB提供了很多标准函数,如IsNumeric()等.
如将IsNumeric写成IsNummeric,系统会提示"子程序或函数未定义",如图3-2所示,并将该写错的函数名选中提醒用户修改.
图3-2编译错误提示框5.
如何声明局部变量和窗体级变量,它们有何区别在VB程序中,除了大量的控件对象外,还要使用一些变量,暂时存放一些中是结果.
这些变量的声明可以放在过程外的"通用声明"段,称为窗体级变量;也可以放在过程中,称为局部变量.
初学者往往对一个变量应该声明为局部变量还是窗体级变量,感觉难以确定.
其实,只要弄清楚它们的区别,就容易把握了.
局部变量和窗体级变量的区别:窗体级变量在本窗体的所有过程中均可使用;而局部变量仅在变量声明所在的过程中可使用,也即随着本过程的执行而分配到存储空间,当执行到EndSub语句,分配的内存空间被回收,变量的值也就丢失.
3.
4典型例题例3-1编写程序,用InputBox函数输入一个字符串,然后按与输入的字符相反的次序用Msgbox函数输出这个字符串.
如输入字符串为"abcdefgh",则输出为"hgfedcba".
解答:新建工程,在窗体上添加1个命令按钮,并编写如下单击事件过程.
PrivateSubCommand1_Click()DimiStrAsString,outStrAsStringDimiAsIntegeriStr=InputBox("请输入字符序列:")Fori=0ToLen(iStr)-1outStr=outStr+Mid(iStr,Len(iStr)-i,1)NextiMsgBoxoutStr,,"输出结果:"EndSub例3-2随机产生n个两位正整数(n由输入对话框输入,且n>0),求出其中的偶数之和,并在标签框Label1上显示.
程序写在命令按钮command1的click事件中.
解答:新建工程,在窗体上添加1个命令按钮,并编写如下单击事件过程.
PrivateSubCommand1_Click()DimnAsIntegerDimiAsInteger,SumAsLongn=Val(InputBox("Pleaseinputainteger","InputNvalue"))Sum=0Fori=1TonRndData=(10+Int(90*Rnd))IfRndDataMod2=0ThenSum=Sum+RndDataEndIfNextiLabel1.
Caption=SumEndSub例3-3利用inputbox输入三角形三条边的长度a,b,c,计算并显示三角形的面积.
公式为:,其中s=(a+b+c)/2,程序界面参如图3-3.
图3-3例3-3的程序运行界面解答:新建工程,在窗体上添加1个命令按钮,并编写如下单击事件过程.
PrivateSubCommand1_Click()Dima!
,b!
,c!
,s!
,area!
re:a=inputBox("请输入三角形第一条边长a:")b=inputBox("请输入三角形第二条边长b:")c=inputBox("请输入三角形第二条边长c:")ifNotisNumeric(a)OrNotisNumeric(b)OrNotisNumeric(c)Or(a+b)<=cOr(a+c)<=bOr(b+c)<=aThenMsgBox("输入了不合法数据,请重输入")GoToreEndifs=(a+b+c)/2area=Sqr(s*(s-a)*(s-b)*(s-c))PrintSpc(5);"三角形三条边长分别为:"PrintSpc(5);"a=";a;",b=";b;",c=";cPrintSpc(5);"其面积为:";areaEndSubPrivateSubCommand2_Click()ClsEndSub3.
5练习与思考习题3-1阅读下列程序,写出运行结果.
程序如下:PrivateStaticSubCommand12_Click()DimxAsInteger,sAsIntegerx=Val(InputBox("请输入一个正整数="))Ifx<5Thens=s*xElses=s+xEndIfDebug.
Print"s="+Str(s)EndSub程序运行时连续三次单击Command12,且输入的数是5,2和4时,窗体上输出结果是习题3-2用inputbox输入一个正实数,用Print方法在一行上显示出它的平方和平方根、立方和立方根,每个数保留三位小数,之间有间隔.
如图3-4.
图3-4习题3-2的程序运行界面习题3-3随机产生一个三位正整数,然后逆序输出,产生的数与逆序数同时显示.
如:246642,如图3-5.
图3-5习题3-3的程序运行界面习题3-4改错题:下列Command1的单击事件过程的功能是,从一堆一分、二分、五分的硬币中取出20枚,使其总值为60分,要求输出取法的数量及每一种取法的一分、二分、五分的个数.
程序中有4处错误,请改正过来.
hostslim美国独立日活动正在进行中,针对一款大硬盘荷兰专用服务器:双E5-2620v2/4x 1TB SATA硬盘,活动价60美元月。HostSlim荷兰服务器允许大人内容,不过只支持电汇、信用卡和比特币付款,商家支持7天内退款保证,有需要欧洲服务器的可以入手试试,记得注册的时候选择中国,这样不用交20%的税。hostslim怎么样?HostSlim是一家成立于2008年的荷兰托管服务器商,...
Virmach商家我们是不是比较熟悉?速度一般,但是人家价格低,而且机房是比较多的。早年的时候有帮助一个有做外贸也许需要多个机房且便宜服务商的时候接触到这个商家,有曾经帮助够买过上百台这样的低价机器。这里需要提醒的,便宜但是速度一般,尤其是中文业务速度确实不快,如果是外贸业务,那肯定是没有问题。这几天,我们有看到Virmach推出了夏季优惠促销,VPS首年8折,最低年付仅7.2美元,多机房可选,如...
DMIT怎么样?DMIT是一家美国主机商,主要提供KVM VPS、独立服务器等,主要提供香港CN2、洛杉矶CN2 GIA等KVM VPS,稳定性、网络都很不错。支持中文客服,可Paypal、支付宝付款。2020年推出的香港国际线路的KVM VPS,大带宽,适合中转落地使用。现在有永久9折优惠码:July-4-Lite-10OFF,季付及以上还有折扣,非 中国路由优化;AS4134,AS4837 均...