VB语言程序设计过程.ppt
《VB语言程序设计过程.ppt》由会员分享,可在线阅读,更多相关《VB语言程序设计过程.ppt(67页珍藏版)》请在三一办公上搜索。
1、过程第七章,本章内容,引言,在VB中的两种过程:(1)由系统提供过程系统提供的内部函数过程(如sqr函数)和事件过程(click事件)。(2)由用户自定义过程用户根据实际应用的需要而自行设计的过程,这样的过程称为“通用过程”,引言,通用过程分为两类:函数过程:以Function保留字开始的过程。子程序过程:以Sub保留字开始的过程;,例5.19 求解s=1!+2!+3!+10!的值,采用两种不同解法(1)解法一:采用两重循环,外循环10次,每次循环计算一次阶乘,把每次阶乘值累加起来,即得求解结果。Dim s As Long,t As Long s=0 For j=1 To 10 计算10个阶乘
2、 t=1 计算1个阶乘前,先赋初值 For k=1 To j 计算j!,需要循环j次 t=t*k 连乘j次 Next k s=s+t 把每次计算得到的阶乘值t累加 Next j Print s,阶乘n!(n!123n)Private Sub Form_Load()Show Dim t As Long,s As Long,i As Integer t=1 For i=1 To 5 t=t*i Next i s=t,例7.2 计算5!+10!,t=1 For i=1 To 10 t=t*i Next i s=s+t Print 5!+10!=;sEnd Sub,因为计算5!和10!都要用到阶乘n!
3、(n!123n)所以把计算n!编成Sub过程。Private Sub Form_Load()Show Dim y As Long,s As Long Call Jc(5,y)s=y Call Jc(10,y)s=s+y Print 5!+10!=;sEnd Sub程序运行结果:5!+10!3628920,Private Sub Jc(n As Integer,t As Long)Dim i As Integer t=1 For i=1 To n t=t*i Next iEnd Sub 注意参数n及t的调用情况,例7.2 计算5!+10!,过程有两个重要作用:一是把一个复杂的任务分解为若干个小任
4、务,可以用过程来表达,从而使任务更易理解,更易实现,将来更易维护;二是代码重用,使同一段代码多次复用。,过程的作用,过程调用示例 把相同的任务编成相对独立的“子过程”当事件过程需要执行这个任务时,可使用调用语句(如Call)实行调用。子过程执行完后,会返回事件过程中调用语句Call的后续语句继续执行,通用过程,例7.1 Sub过程示例 Private Sub Form_Load()Show Call mysub1(30)Call mysub2 Call mysub2 Call mysub2 Call mysub1(30)End Sub 程序运行结果,Private Sub mysub1(n)P
5、rint String(n,*)End SubPrivate Sub mysub2()Print*;Tab(30);*End Sub,Sub过程,参数n,无参数,Sub过程的定义,格式:StaticPublic|PrivateSub 过程名(参数表列)语句块Exit Sub语句块End Sub功能:定义一个以为名的Sub过程。(1)在VB中,Sub过程又称为子过程。(2)在子过程中如果没有形参,调用时括号()必须省略。Call mysub2 或 mysub2,Sub过程的调用,格式:Call 过程名(实参列表)或 过程名 实参列表说明:实参的个数、类型、顺序应与相应的形参保持一致,子过程中如果
6、没有形参,则调用中也无实参。第2种调用方式与第1种相比,结果一样,只是去掉Call和一对括号()。例如,调用名为mysub1的过程:Call mysub1(30)mysub1 30,函数过程,StaticPublic|Private Function 函数过程名(参数列表)As 类型 语句块 函数名=返回值 Exit Function 语句块 函数名=返回值 End Function功能:定义一个以为名的Function过程。,函数过程体,函数过程说明,1.As 类型:返回值的类型2.函数名=返回值 函数过程必须返回函数值,而函数名就代表了函数值,在函数体内至少对函数名赋值一次。若不赋值则默认
7、返回值为0或空串或空值。函数名本身就是变量。,函数过程的调用,形式:变量名=函数过程名(实参列表)或 print 函数过程名(实参列表)功能:调用一个已定义的Function过程。,jiechen(5)jiechen(6)jiechen(7),a=jiechen(5)b=jiechen(6)c=jiechen(7)Print jiechen(5)+jiechen(6)+jiechen(7),将n!的Sub过程改为Function过程。Private Sub Form_Load()Show Dim s As Long s=Jc(5)+Jc(10)Print 5!+10!=;sEnd Sub,Fu
8、nction Jc(n As Integer)As Long Dim i As Integer,t as Long t=1 For i=1 To n t=t*i Next i Jc=tEnd Function,例7.3 计算5!+10!,Function Jc(n%)As Long Dim i As Integer Jc=1 For i=1 To n Jc=Jc*i Next iEnd Function,因为计算5!和10!都要用到阶乘n!(n!123n)所以把计算n!编成Sub过程。Private Sub Form_Load()Show Dim y As Long,s As Long Cal
9、l Jc(5,y)s=y Call Jc(10,y)s=s+y Print 5!+10!=;sEnd Sub,Private Sub Jc(n As Integer,t As Long)Dim i As Integer t=1 For i=1 To n t=t*i Next iEnd Sub,例7.2 计算5!+10!,把求两个数中的大数编成Function过程,过程名为MaxPrivate Sub Form_Load()Show Dim a As Single,b As Single,c As Single Dim s As Single a=Val(InputBox(输入第一个数)b=Va
10、l(InputBox(输入第二个数)c=Val(InputBox(输入第三个数)s=max(a,b)Print 最大数是:;max(s,c)End Sub,Function max(m!,n!)As Single If m n Then max=m Else max=n End IfEnd Function,调用,调用,例7.4 输入三个数,求出它们的最大数,实参传给形参(am),通过函数名max带回一个结果,把求两个数中的大数编成Sub子过程,过程名为MaxPrivate Sub Form_Load()Show Dim a As Single,b As Single,c As Single
11、Dim s As Single,m As Single a=Val(InputBox(输入第一个数)b=Val(InputBox(输入第二个数)c=Val(InputBox(输入第三个数)Call max(a,b,s)Call max(s,c,m)Print 最大数是:;mEnd Sub,Sub max(m!,n!,t!)If m n Then t=m Else t=n End IfEnd Function,例7.4 输入三个数,求出它们的最大数,函数过程与Sub过程的区别,(1)函数名是一个变量,它有值,有类型,在函数体中至少赋值一次,并通过它可带回一个结果;而Sub过程名,它无值,无类型,
12、在Sub过程体内不能赋值,不能通过它带回结果。注意:Sub过程若要带回结果,必须通过形参与实参的地址传递得到结果,调用时可得到多个参数值。,函数过程与Sub过程的区别,(2)调用时,子过程调用是一句独立的语句。格式:Call 过程名(实参列表)或 过程名 实参列表函数过程不能作为单独的语句加以调用,必须参与表达式运算。变量名=函数过程名(实参列表)或 print 函数过程名(实参列表),a=jiechen(5)b=jiechen(6)c=jiechen(7)Print jiechen(5)+jiechen(6)+jiechen(7),说明:(1)如果仅仅为实现一个动作,而无任何返回结果,只能用
13、Sub子过程实现。(2)如果需要返回一个结果,既可用函数过程实现也可用子过程实现。(3)如果需要返回多个结果,可用函数过程实现也可用子过程实现,同时必须结合其他的形式,如全局变量、传地址(实参形参间的传递)等。,函数过程与Sub过程,函数过程定义的方法,自定义函数过程有两种方法:(1)利用“工具”菜单下的“添加过程”命令定义,生成一个函数过程的框架。(2)利用代码窗口手工输入代码的方式建立函数过程。,通用过程(Sub/Function)过程可以保存在两种模块中:窗体模块(.frm)和标准模块(.bas)(1)在窗体模块中创建通用过程:可以在代码窗口中直接键入来创建Sub过程 选择“工具”菜单中
14、的“添加过程”命令(2)在标准模块中创建通用过程:选择“工程”菜单中的“添加模块”命令 保存为一个独立的“.bas”文件 举例:把例7.3的函数max(m,n)存放在模块文件中,创建通用过程的方法,参数的传递,参数传递:指主调过程的实参传递给被调过程的形参。形参:是指在定义过程时出现在参数列表中的变量名或数组名,这些变量名只能在过程内部使用,形式参数不能是常量。实参:是调用过程中已组织好的准备传给形参的常量、变量、表达式或数组控件对象等。,定义过程和调用过程的示例:调用过程:Call Mysub(100,计算机,1.5)定义过程:Sub Mysub(t As Integer,s As Stri
15、ng,y As Single)“形实结合”是按照位置结合的,即第一个实参值(100)传送给第一个形参t,第二个实参值(“计算机”)传送给第二个形参s,第三个实参值(1.5)传送给第三个形参y。,参数传递的方式,地址传递:缺省或加“ByRef”,形参得到的是实参的地址,当形参值改变时实参的值也改变,也叫双向传递。值传递:在形参前加“ByVal”,形参得到的是实参的值,形参值的改变不会影响实参的值。也叫单向传递。注意:无论哪种传递,实际参数必须与定义过程时的形式参数在个数、类型、顺序上保持一一对应。,设置两个通用过程Test1和Test2,分别按值传递和按地址传递Private Sub Form_
16、Load()Dim x As Integer Show x=5 Print 执行test1前,x=;x Call test1(x)Print 执行test1后,test2前,x=;x Call test2(x)Print 执行test2后,x=;xEnd Sub,Sub test1(ByVal t As Integer)t=t+5End SubSub test2(s As Integer)s=s-5End Sub,运行结果执行Test1前,x=5执行Test1后,Test2前,x=5执行Test2后,x=0,例7.5 参数传递方式示例,按值传递,按地址传递,传递方式示意图,5,Form_Loa
17、d(),test1(),x,t,实参,形参,(a)值传递,5,x,s,(b)地址传递,实参和形参共享单元,0,Form_Load(),test2(),5,10,因为计算5!和10!都要用到阶乘n!(n!123n)所以把计算n!编成Sub过程,采用Print直接在窗体上输出结果。Private Sub Form_Load()Show Dim y As Long,s As Long Call Jc(5,y)s=y Call Jc(10,y)s=s+y Print 5!+10!=;sEnd Sub程序运行结果:5!+10!3628920,Private Sub Jc(n As Integer,t A
18、s Long)Dim i As Integer t=1 For i=1 To n t=t*i Next iEnd Sub 注意参数n及t的调用情况,例7.2 计算5!+10!,把求两个数中的大数编成Sub子过程,过程名为MaxPrivate Sub Form_Load()Show Dim a As Single,b As Single,c As Single Dim s As Single,m As Single a=Val(InputBox(输入第一个数)b=Val(InputBox(输入第二个数)c=Val(InputBox(输入第三个数)Call max(a,b,s)Call max(s
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VB 语言程序设计 过程

链接地址:https://www.31ppt.com/p-5451994.html