第六章 过程精选文档.ppt
《第六章 过程精选文档.ppt》由会员分享,可在线阅读,更多相关《第六章 过程精选文档.ppt(90页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第六章 过程本讲稿第一页,共九十页一、过程与模块的概念一、过程与模块的概念1.1.过程过程2.2.独立功能的子程序。独立功能的子程序。两类:两类:系统系统提供的内部提供的内部函数过程和事件过程函数过程和事件过程;用户用户根据自己需要定义的根据自己需要定义的通用过程。通用过程。通用过程作用通用过程作用:程序模块化,结构清晰,易于修改和维护。程序模块化,结构清晰,易于修改和维护。1.1.可用于在程序中多处调用。可用于在程序中多处调用。本讲稿第二页,共九十页通用过程通用过程 函数过程函数过程(Function)(Function)(有返回值)(有返回值)通用过程通用过程 子过程子过程 (Sub)(S
2、ub)(没有返回值)(没有返回值)属性过程属性过程(Property)(Property)事件过程事件过程(Event)(Event)按作用域分通用过程:按作用域分通用过程:公有过程(公有过程(PublicPublic):):可被应用程序任意过程调用可被应用程序任意过程调用 私有过程(私有过程(PrivatePrivate):):只能被同一模块中的过程调用只能被同一模块中的过程调用 本讲稿第三页,共九十页2.2.模块模块 将不同类型的代码组织到一起而提供的一种结构。将不同类型的代码组织到一起而提供的一种结构。(1 1)窗体模块()窗体模块(.frm.frm):每个窗体对应一个窗体模块每个窗体对
3、应一个窗体模块(2 2)标准模块()标准模块(.bas.bas):多窗体中共享的代码):多窗体中共享的代码 可保存通用过程、相关说明(全局变量、可保存通用过程、相关说明(全局变量、模块级变量)模块级变量)“工程工程”+“”+“添加模块添加模块”(3 3)类模块()类模块(.cls.cls):创建新的对象类的属性、):创建新的对象类的属性、事件、方法等事件、方法等本讲稿第四页,共九十页 1 1、定义、定义SubSub子过程子过程(被调过程被调过程)Public|PrivatePublic|PrivateStaticStaticSubSub 子过程名子过程名(参数列表参数列表)局部变量或常数定义局
4、部变量或常数定义局部变量或常数定义局部变量或常数定义 语句块语句块语句块语句块 Exit Sub Exit Sub Exit Sub Exit Sub 语句块语句块 End Sub End Sub 说明:说明:过程体过程体形式参数二二.Sub.Sub 子过程的定义及其调用子过程的定义及其调用本讲稿第五页,共九十页 过程名过程名:(与变量命名规则相同)(与变量命名规则相同)不要与不要与VB 关键字关键字同名同名 不要与不要与WINDOWS API函数函数重名重名 不能与同一级别的变量不能与同一级别的变量重名重名注注意意:参数列表形式参数列表形式:ByVal 变量名变量名 ()As 类型类型 _
5、,ByVal 变量名变量名 ()As 类型类型 参数参数也称为也称为形参形参,无参过程名后的无参过程名后的()不可缺省不可缺省 ByVal 参数是值传递(参数是值传递(Passed By Value),缺省缺省ByVal:引用传递(引用传递(ByRef),即地址传递),即地址传递(Passed By Reference)Sub子过程不能嵌套定义子过程不能嵌套定义本讲稿第六页,共九十页 例如:例如:Private Sub exl(ByVal x As Integer,y As Integer)Private Sub exl(ByVal x As Integer,y As Integer)x=x+
6、2 y=y+x*2 y=y+x*2 Print x,y Print x,yEnd SubPrivate Sub swap(x As Integer,y As Integer)Dim temp As Integer If x y Then temp=x:x=y:y=tempEnd If End Sub本讲稿第七页,共九十页2 2、建立、建立SubSub子过程子过程(有两种方法有两种方法):):在在VBVB中,利用中,利用“工具工具”菜单下的菜单下的“添加过程添加过程”命令定义命令定义 利用代码窗口直接定义利用代码窗口直接定义 在窗体在窗体/标准模块中:插入点放在现有过程标准模块中:插入点放在现有
7、过程之外之外,或在或在“通用说明通用说明”处处 键入:键入:Private Sub Private Sub 过程名,回车过程名,回车 注意:注意:建立建立FunctionFunction函数过程的方法与建立函数过程的方法与建立SubSub子过程相同子过程相同 例例本讲稿第八页,共九十页3 3、SubSub子过程的调用子过程的调用(主调过程主调过程)调用格式:调用格式:子过程名子过程名 参数列表参数列表 或或 CALL CALL 子过程名子过程名(参数列表参数列表)实在参数本讲稿第九页,共九十页举例举例.输入两个整数输入两个整数,按从大到小输出。按从大到小输出。Private Sub swap(
8、x As Integer,y As Integer)过程定义过程定义,交换两个变量值交换两个变量值 Dim temp As Integer (被调过程被调过程)If x y Then temp=x:x=y:y=tempEnd IfEnd SubPrivate Sub Command1_Click()(Private Sub Command1_Click()(主调过程主调过程主调过程主调过程)Dim a As Integer,b As Integer Dim a As Integer,b As Integer a=Val(Text1.Text):b=Val(Text2.Text)a=Val(Te
9、xt1.Text):b=Val(Text2.Text)If ab Then If ab Then call swap(a,b)call swap(a,b)End If End If Print a,b Print a,bEnd Sub End Sub 形式参数x,y 实在参数a,b 过程的调用过程的调用过程的调用过程的调用,或或或或swap a,b swap a,b 调用调用调用调用点点点点本讲稿第十页,共九十页过程调用的执行:过程调用的执行:主调过程中执行到过程调用语句时,转去执行被调过程,执行结束后,返回主调过程中本次调用的调用点,继续执行调用点的后序语句。主调过程Call 过程1(参数列
10、表)结束被调过程1结束调用点本讲稿第十一页,共九十页 参数列表参数列表:称为称为实参或实在参数实参或实在参数,它必须与它必须与 形参保持形参保持个数相同个数相同,位置与类型位置与类型一一一一对应。对应。参数传递参数传递:调用时把实参的值或地址传递给形参;调用时把实参的值或地址传递给形参;多个参数间用逗号分隔。多个参数间用逗号分隔。过程调用过程调用注意事项注意事项:本讲稿第十二页,共九十页 调用子过程的形式有两种:调用子过程的形式有两种:若用若用CallCall关键字关键字时时,实参必须用圆括号括起实参必须用圆括号括起,且左括号且左括号与过程名间不能有空格;若实参为空,则可省略括号。与过程名间不
11、能有空格;若实参为空,则可省略括号。若用若用过程名过程名则无则无()(),且第一个参数与过程名间要有,且第一个参数与过程名间要有空格。空格。例:例:swap a,bswap a,bcall swap(a,b)call swap(a,b)当参数是数组时当参数是数组时,形参在参数声明时应省略其维数形参在参数声明时应省略其维数,但但括号括号不能省。不能省。若形参变量的类型为若形参变量的类型为StringString,则只能是不定长的。,则只能是不定长的。过程允许嵌套调用。过程允许嵌套调用。过程调用过程调用注意事项注意事项:本讲稿第十三页,共九十页过程嵌套调用的执行:过程嵌套调用的执行:主调过程Cal
12、l 过程1(参数列表)结束被调过程2结束调用点被调过程1 Call 过程2(参数列表)结束本讲稿第十四页,共九十页例例6-16-1,求组合数,求组合数 定义求阶乘的定义求阶乘的Sub子过程子过程facPrivate Sub fac(ByVal n As Integer,f As Long)过程定义过程定义 Dim i As Integer f=1 For i=1 To n f=f*i Next iEnd Sub本讲稿第十五页,共九十页“=”的的click事件事件Private Sub Command1_Click()Dim m As Integer,n As Integer Dim fm As
13、 Long,fn As Long Dim fmn As Long m=Val(txtm):n=Val(txtn)fac m,fm 计算计算m的阶乘的阶乘 Call fac(n,fn)计算计算n的阶乘的阶乘 Call fac(m-n,fmn)计算计算m-n的阶乘的阶乘 txtResult=Str(fm/(fn*fmn)End Sub见见 求组合数求组合数.vbp本讲稿第十六页,共九十页 三三.Function.Function函数过程的定义及其调用函数过程的定义及其调用 函数过程是函数过程是带有返回值带有返回值的特殊过程。的特殊过程。1 1、定义、定义Public|PrivateStaticPu
14、blic|PrivateStatic Function Function Function Function 函数名函数名(参数列表参数列表 )AS AS 类型类型 局部变量或常数定义局部变量或常数定义局部变量或常数定义局部变量或常数定义 语句块语句块语句块语句块 函数名函数名函数名函数名=表达式表达式表达式表达式 Exit Function Exit Function Exit Function Exit Function 语句块语句块语句块语句块 函数名函数名函数名函数名=表达式表达式表达式表达式 End Function End Function 说明:说明:函数体函数体本讲稿第十七页,
15、共九十页 函数体中一般至少要有一个函数体中一般至少要有一个“函数名函数名=表达式表达式”的语句给函数名赋值的语句给函数名赋值 如果没有如果没有“函数名函数名=表达式表达式”,则返回对应类型,则返回对应类型 的的缺省值缺省值 在函数体内,可以像使用简单变量一样使用函数在函数体内,可以像使用简单变量一样使用函数名名 Function函数过程不能嵌套定义函数过程不能嵌套定义本讲稿第十八页,共九十页 例例6-2 6-2 求圆面积的函数过程:求圆面积的函数过程:Private Function Cir(ByVal r As Single)As Single Const PI=3.1415926 Cir=
16、PI*r*rEnd Function本讲稿第十九页,共九十页 例例6 6-3 3 求求N N阶乘的函数过程:阶乘的函数过程:Private Private Function Fact(ByVal N As Integer)As Long Dim k As Integer Fact=1 If N=0 Or N=1 Then Exit Function Else For k=1 To N Fact=Fact*k Next End IfEnd Function本讲稿第二十页,共九十页2 2、FunctionFunction函数过程的调用函数过程的调用:调用格式:调用格式:变量名变量名=函数过程名函数
17、过程名(参数列表参数列表)注意:注意:必须给实参加括号必须给实参加括号 如无实参,括号也可省略如无实参,括号也可省略 例如:例如:调用例调用例6-36-3,求两个圆面积之和,求两个圆面积之和 Sum=Cir(20)+Cir(30)Sum=Cir(20)+Cir(30)本讲稿第二十一页,共九十页 比较函数过程与比较函数过程与SubSub子过程子过程 不同之处:不同之处:函数过程通过函数名有返回值,因此函数过程通过函数名有返回值,因此定义时有返回值的类型说明。定义时有返回值的类型说明。Sub Sub子过程通过变量返回值子过程通过变量返回值 相同点:相同点:完成某种特定功能的一组程序代码。完成某种特
18、定功能的一组程序代码。本讲稿第二十二页,共九十页 例如:调用例例如:调用例6-36-3求阶乘的函数过程,求例求阶乘的函数过程,求例6-16-1中的组合数。中的组合数。Private Sub Command1_Click()Dim m As Long Dim n as Integer m=Val(txtm)n=Val(txtn)txtResult=Fact(m)/(Fact(n)*Fact(m-n)End Sub本讲稿第二十三页,共九十页例例6-5 6-5 求求1-1001-100之间的孪生素数之间的孪生素数(素数值相差素数值相差2)2)求素数的求素数的primeprime函数过程:函数过程:P
19、rivate Function prime(ByVal m As Integer)As Boolean Dim i As Integer,t As Boolean i=2 t=True Do While t And i=Sqr(m)If m Mod i=0 Then t=False Else i=i+1 End If Loop prime=tEnd Function本讲稿第二十四页,共九十页窗体的单击事件调用窗体的单击事件调用prime函数过程函数过程:Private Sub Form_click()Dim k As Integer,j As Integer j=3 Do While j=99
20、 If prime(j)And prime(j+2)Then k=k+1 Print“第第”;k;“对对”,j;Tab(20);j+2 End If j=j+2 LoopEnd Sub用用For循环如何实现?循环如何实现?本讲稿第二十五页,共九十页四、参数的传递四、参数的传递1.1.形参和实参形参和实参2.2.按值传递与按地址传递按值传递与按地址传递3.3.数组参数的传递数组参数的传递参数传递:参数传递:调用时把实参的值或地址传递给形参。调用时把实参的值或地址传递给形参。本讲稿第二十六页,共九十页1.1.形参和实参形参和实参 (1 1)形参(形式参数)形参(形式参数)出现在出现在被调过程被调过
21、程(定义定义SubSub子过程或子过程或FunctionFunction函数过程函数过程)的的形参表中的形参表中的变量名(变量名(除定长字符除定长字符串变量外串变量外)、数组名。)、数组名。在调用时给形参分配内存。在调用时给形参分配内存。(2 2)实参(实在参数)实参(实在参数)出现在出现在主调过程主调过程(调用调用SubSub子过程或子过程或FunctionFunction函数函数)中中调用时调用时,传递给相应的过程或传递给相应的过程或函数的变量名、数组名、常量、表达式。函数的变量名、数组名、常量、表达式。本讲稿第二十七页,共九十页举例举例.输入两个整数输入两个整数,按从大到小输出。按从大到
22、小输出。Private Sub swap(x As Integer,y As Integer)过程定义过程定义,交换两个变量值交换两个变量值 Dim temp As Integer (被调过程被调过程)If x y Then temp=x:x=y:y=tempEnd IfEnd SubPrivate Sub Command1_Click()Private Sub Command1_Click()Dim a As Integer,b As Integer Dim a As Integer,b As Integer a=Val(Text1.Text):b=Val(Text2.Text)a=Val(
23、Text1.Text):b=Val(Text2.Text)If ab Then If ab Then call swap(a,b)call swap(a,b)End If End If Print a,b Print a,bEnd Sub End Sub 形参x,y(地址传递)实参a,b 过程的调用过程的调用过程的调用过程的调用,或或或或swap a,b (swap a,b (主调过程主调过程主调过程主调过程)本讲稿第二十八页,共九十页求组合数求组合数 定义求阶乘的定义求阶乘的Sub子过程子过程facPrivate Sub fac(ByVal n As Integer,f As Long)过程
24、定义过程定义 Dim i As Integer f=1 For i=1 To n f=f*i Next iEnd Sub形参n,f 本讲稿第二十九页,共九十页 求求N N阶乘的函数过程:阶乘的函数过程:Private Private Function Fact(ByVal n As Integer)As Long Dim k As Integer Fact=1 If n=0 Or n=1 Then Exit Function Else For k=1 To n Fact=Fact*k Next End IfEnd Function形参n 本讲稿第三十页,共九十页Private Sub Comm
25、and1_Click()主调过程主调过程 Dim m As Long Dim n as Integer m=Val(txtm)n=Val(txtn)txtResult=Fact(m)/(Fact(n)*Fact(m-n)End Sub实参m,n,m-n函数调用函数调用本讲稿第三十一页,共九十页注意:注意:实参必须与形参保持实参必须与形参保持个数相同,位置与类型个数相同,位置与类型 一一一一对应对应。多个参数间用逗号分隔。多个参数间用逗号分隔。2 2、参数的传递、参数的传递实参实参 形参形参形实结合形实结合参数传递:参数传递:调用时把实参的值或地址传递给形参。调用时把实参的值或地址传递给形参。本
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第六章 过程精选文档 第六 过程 精选 文档
限制150内