第3章VB语言基础_第1页
第3章VB语言基础_第2页
第3章VB语言基础_第3页
第3章VB语言基础_第4页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第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)。² 字节型

2、数据在内存中占1个字节,无符号,取值范围为0255。² 整型数据在内存中占2个字节,可以表示1个带符号的整数,取值范围为-32768+32767。² 长整型数据在内存中占4个字节,可以表示1个带符号的整数,取值范围为-231+231-1² 单精度型数据在内存中占4个字节,可以表示1个带符号的实数。有效数字精确到7位,表示数的范围为-3.402823E38+ 3.402823E38² 双精度型数据在内存中占8个字节,可以表示1个带符号的实数。有效数字精确到15位或16位十进制数。² 货币型数据采用8个字节存放。可以表示1个带符号的实数,但小数部分

3、保留4位有效数字,整数可以达到15位精确数字。² 日期型数据表示由年、月、日组成的日期信息或由时、分、秒组成的时间信息。用符号“#”表示日期型数据。² 逻辑数据类型采用2字节存储,逻辑数据类型只有两个值:True(真)、False(假)。² 字符数据类型用于表示字符的数据。存储时根据实际情况安排字节数,是不定长的。字符可以包括西文字符和中文字符及其他可以表示出来的形式。VB中字符型数据以Unicode码存放,一个西文字符和中文字符均占2个字节。² 对象型数据用来表示图形、OLE对象或其他对象,占用4个字节。² 变体数据类型(Variant)可存

4、放任何类型的数据,由所赋值的类型所决定。当一个变量没有说明类型时就会被默认为变体数据类型。(2)自定义类型它是用户根据需要,将不同的标准数据类型集合在一起的数据类型。自定义数据类型是结构类型,类似于数据库中的记录结构、C语言中的结构类型。具体使用时用Type语句定义,结构如下:Type 自定义类型名 元素名(下标) As 类型名 元素名(下标) As 类型名End Type2. 常量常量是在程序运行过程中固定不变的量。常量有三类:(1)直接常量字符串常量是用双引号括起来的一串字符。这些字符可以是除双引号和回车、换行符以外的任何ASCII字符。如:“DATE”、”123”、”+”、”!”逻辑常量

5、只有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/2

6、0/2002#, #14:20:30#,#03/05/2005 20:30# 货币常量:可以是整数,也可以是小数(但只保留4位小数)。例如(50,50.756)(2)系统内部常量内部常量是VB和控件提供的。可与应用程序的对象、方法和属性一起使用,编程时也可以直接使用。(3)用户定义常量用户定义符号常量使用Const语句。格式:Const <常量名> As <数据类型>=<表达式>例如:Const Max=2343. 变量在程序运行过程中其值可以发生改变的量称为变量。变量分为:属性变量和用户声明变量。(1)变量的命名规则 必须以字母或汉字开头,由字母、汉字、数

7、字或下划线组成,长度不能超过255个字符 不能使用VB中的关键字。 VB中字母不区分大小写,以第一次出现的变量形式为准。 必要时可以在变量名前加前缀或变量名后加后缀以说明变量的类型。 尽量避免使用汉字作为变量名。(2) 变量声明语句格式:Dim|Private|Static|Public <变量名> AS <类型名>说明: 变量名表示所定义的对象,命名要符合变量命名规则 一个定义语句可以同时定义多个变量。 Dim用于在标准模块、窗体模块或过程中定义变量。 Private在窗体模块或过程中声明变量为局部变量。 Static用于在过程中声明变量为静态变量。 Public用于

8、在标准模块中定义全局变量。 As <类型>: 用于说明该变量的类型,若省略则定义该变量为变体类型。4. 运算符运算符是表示数据进行什么运算的符号。运算符可分成算术运算符、关系运算符、逻辑运算符和字符串运算符四大类。运算符及其优先级如下表所示。名称运算符优先级算术运算符(取负)*、/Mod+、从上到下依次降低字符运算符、关系运算符=、>、<、>=、<=、< >、Like、Is逻辑运算符NotAndOrXorEqvImp优先级从左到右依次降低5. 表达式表达式是数据之间运算关系的表达形式,由常量、变量、函数等数据和运算符组成。单个常量或变量也可以看作

9、是表达式。(1)书写规则:从左到右在一行上书写,无高低区分;表达式中的运算可以用圆括号括起,以改变运算的优先级或增加表达式的清晰度。不能使用方括号或花括号,圆括号可以出现多个,但必须配对。(2)表达式值的类型:在算术表达式中,出现不同的数据类型时,应向精度高的数据类型转换。6. VB的函数函数是用来实现数据处理过程中的特定的运算与操作。函数可分为内部函数和用户自定义函数。内部函数是由VB本身提供的,也称标准函数。内部函数调用方法:函数名(<自变量>),自变量称为参数,不同的函数其自变量都有其规定的数据类型。函数一般都有一个返回值,也有相应的数据类型。(1) 数学函数:常用数学函数如

10、下表所示函数形式函数名称及含义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)右取字符串

11、函数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$

12、(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),用于产生一个01

13、之间的single类型的随机数。 产生指定区间的随机数的方法为:(0,x)区间的随机浮点数:Rnd*x(m,n)区间的随机浮点数:m+Rnd*(n-m)i,j区间的随机整数:Int(i+Rnd*(j-i+1) 随机数语句格式:RandomizeexpN1,用于根据一套算法产生随机数,以消除同一序列的随机数可能会反复出现的情况。若省略参数,则用系统时钟返回的值作为参数。7. VB程序的书写(1)VB程序是以行为单位编写的,由若干语句行组成。(2)通常情况下,VB程序代码每行写一条语句,每个语句写在一行中,一行中最多容纳254个字符,并按Enter键结束。(3)如果需要在同一行内写多条语句时需要使

14、用冒号”:”作为分隔符。(4)如果一条语句很长或其他原因需要写成多行时,要使用续行标记”_”,是一个空格加一个下划线字符。8. 变量定义语句(Dim)(1)语句格式:Dim <变量1> AS <类型>,<变量2> AS <类型>(2)作用:为每个变量命名、指定类型。(3)说明:定义的变量只是在运行时才在内存中分配相应的空间,如果没有定义,同时系统又可以默认时,变量的类型是变体类型,可以根据具体使用的情况转换为对应的类型。9. 赋值语句(Let)(1)格式:Let 变量名 = 表达式(2)功能:将表达式的值赋给变量或某个带有属性的对象。(3)说明:

15、变量名为变量或属性的名称。“=”是赋值号,不是数学中的等号。先计算表达式的值,然后再将结果赋给变量。“=”两边的类型必须一致或相容。如果变量是Variant类型,则表达式可以是任何类型。10. 打印语句(Print)(1)格式:对象名称.Print 表达式表,|;(2)功能:在窗体、图片框、打印机等对象中输出信息。(3)说明:与打印语句一起使用的分隔符号有“;”、“,”和函数Tab(n)、Space(n)、Chr(10)、Chr(13)。11. 注释语句(Rem或)(1)格式:Rem 注释内容或 注释内容(2)作用:是对程序适当增加一些说明以便阅读理解程序。(3)说明:注释语句是非执行语句,也

16、就是说注释语句的出现不会影响到程序的运行。12. 清除语句(Cls)(1)格式:对象.Cls(2)作用:在相应的对象上清除打印语句和绘图语句等形成的输出。(3)说明:对象可以是窗体、图片框和立即窗口,若省略对象则在窗体上清除。13. 输入设计(1)直接赋初值:在程序中使用赋值语句给变量或控件属性赋值。(2)通过文本框(Text)控件传送初值(3)交互方式赋初值:就是利用输入对话框(InputBox)输入数据。格式:InputBox(提示,标题,默认输入值,<x ,y>)其中,提示为对话框显示的信息,不能省略;标题为对话框标题;默认输入值当在输入对话框中无输入时作为输入内容。<

17、x,y>: 给出输入对话框在窗体中的位置。14. 输出设计(1)使用Print命令或绘图命令直接打印输出或绘图输出。(2)通过给文本框的Text属性或标签的Caption属性赋值输出(3)使用MsgBox语句或MsgBox()函数用于打开一个信息框,等待用户选择一个按钮。MsgBox函数返回所选按钮的整数值;若不需要返回值,则可使用MsgBox语句。MsgBox()函数格式:变量% = MsgBox(提示,按钮,标题)MsgBox语句形式:MsgBox 提示,按钮,标题 其中,提示为对话框显示的信息,不能省略;标题为对话框标题;按钮是整型表达式,决定信息框按钮的数目和类型及出现在信息框上

18、的图标类型。3.3 疑难解析1. 逻辑表达式书写错误,在VB程序中没有造成语法而是逻辑错数学中表示变量x在一定数值范围内,写成,在VB中对应的表达式应该写作x>1 and x<=2,但如果误写作1<x<=2的话,在其他语言中会产生语法错,并有相应错误提示,而在VB中不产生语法错,当然也不会有相应提示,程序能运行,但不管x的值如何,表达式的值恒为True。显然,结果是不正确的,这是一种逻辑错误,是在程序调试中最难发现的一类错误。为什么上述表达式的值恒为True呢?因为在VB中,当两个不同类型的变量或常量参加运算时,会自动向精度高的类型转换。逻辑型常量True转换为数值型时

19、,其为-1,逻辑型常量False转换为数值型时,其为0,表达式True+3的值为2;数字字符与数值类型运算时,会转换为数值型,表达式"1" + 1的值为2。这样,表达式1<x<=2在计算时,先根据x的值计算1<x,其结果要么为True,要么为False,进一步求值时,以-1或0与2比较,所以结果恒为True。2. 数据合法性检查中引起程序的死循环在数据输入时,经常需要对输入的数据做合法性检查,以确保程序运行的正确性。如:对输入的成绩数据要求是数字,否则删除原输入的内容,并将焦点仍定位于该文本框。例如,下面有一个要实现成绩输入的简单程序,语文成绩输入至文本框

20、text1,数学成绩输入至文本框text2,程序界面如图3-1所示。图3-1 程序界面要实现合法性检查功能,分别在Text1_LostFocus、Text2_LostFocus事件过程中编写如下代码:Private Sub Text1_LostFocus() If Not IsNumeric(Text1.Text) Then Text1.Text = "" Text1.SetFocus End IfEnd SubPrivate Sub Text2_LostFocus() If Not IsNumeric(Text2.Text) Then Text2.Text = "

21、;" Text2.SetFocus End IfEnd Sub程序运行时,当在语文成绩框Text1中输入非数字字符时,焦点在数学成绩框Text2中不停地闪动,程序产生死循环。这是因为:当Text1输入结束,鼠标单击Text2时,激发了Text1_LostFocus事件,焦点到达Text2;但由于这时Text1中的数据是非数字的,必然会调用Text1.SetFocus方法,使焦点从Text2回到Text1;而又激发了Text2_LostFocus事件,此时,Text2中还未输入任何数据,IsNumeric(Text2.Text)值为False,必然会调用Text2.SetFocus方法

22、,使焦点从Text1回到Text2,如此就产生了死循环。通过分析,只要Text2有默认值就不会产生死循环,因此解决Text1输入错时产生死循环的方法是,把Private Sub Text2_LostFocus()事件过程中If的条件表达式改为:If Text2.Text<> "" And Not IsNumeric(Text2.Text) Then即可。3. 同时给多个变量赋值,在VB程序中没有造成语法错而是逻辑错同时给x、y、z三个整型变量赋初值,如果写成如下赋值语句:x=y=z=1,在C语言中,可以实现同时对多个变量赋值;在FORTRAN等其他语言中会提示语

23、法错。但在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. 如何声明局部

24、变量和窗体级变量,它们有何区别?在VB程序中,除了大量的控件对象外,还要使用一些变量,暂时存放一些中是结果。这些变量的声明可以放在过程外的“通用声明”段,称为窗体级变量;也可以放在过程中,称为局部变量。初学者往往对一个变量应该声明为局部变量还是窗体级变量,感觉难以确定。其实,只要弄清楚它们的区别,就容易把握了。局部变量和窗体级变量的区别:窗体级变量在本窗体的所有过程中均可使用;而局部变量仅在变量声明所在的过程中可使用,也即随着本过程的执行而分配到存储空间,当执行到End Sub语句,分配的内存空间被回收,变量的值也就丢失。3.4 典型例题例3-1 编写程序,用InputBox函数输入一个字符串

25、,然后按与输入的字符相反的次序用Msgbox函数输出这个字符串。如输入字符串为“abcdefgh”,则输出为“hgfedcba”。解答:新建工程,在窗体上添加1个命令按钮,并编写如下单击事件过程。Private Sub Command1_Click() Dim iStr As String, outStr As String Dim i As Integer iStr = InputBox("请输入字符序列:") For i = 0 To Len(iStr) - 1 outStr = outStr + Mid(iStr, Len(iStr) - i, 1) Next i M

26、sgBox outStr, , "输出结果:"End Sub例3-2 随机产生n个两位正整数(n由输入对话框输入,且n>0),求出其中的偶数之和,并在标签框Label1上显示。程序写在命令按钮command1的click事件中。解答:新建工程,在窗体上添加1个命令按钮,并编写如下单击事件过程。Private Sub Command1_Click() Dim n As Integer Dim i As Integer, Sum As Long n = Val(InputBox("Please input a integer", "Input

27、 N value") Sum = 0 For i = 1 To n RndData = (10 + Int(90 * Rnd) If RndData Mod 2 = 0 Then Sum = Sum + RndData End If Next i Label1.Caption = SumEnd Sub例3-3 利用inputbox输入三角形三条边的长度a,b,c,计算并显示三角形的面积。公式为:,其中s=(a+b+c)/2 ,程序界面参如图3-3。图3-3例3-3的程序运行界面解答:新建工程,在窗体上添加1个命令按钮,并编写如下单击事件过程。Private Sub Command1_

28、Click() Dim a!, b!, c!, s!, area!re: a = inputBox(请输入三角形第一条边长a:) b = inputBox(请输入三角形第二条边长b:) c = inputBox(请输入三角形第二条边长c:) if Not isNumeric(a) Or Not isNumeric(b) Or Not isNumeric(c) Or (a + b) <= c Or (a + c) <= b Or (b + c) <= a Then MsgBox (输入了不合法数据,请重输入) GoTo re End if s = (a + b + c) / 2 area = Sqr(s * (s - a) * (s - b) * (s - c) Print Spc(5); 三角形三条边长分别为: Print Spc(5); a=; a; ,b=; b; ,c=; c Print Spc(5); 其面积为:; areaEnd SubPrivate Sub Command2_Click() ClsEnd Sub3.5 练习与思考习题3-1 阅读下列程序,写出运行结果。程序如

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论