第5章 过程(精品).ppt
《第5章 过程(精品).ppt》由会员分享,可在线阅读,更多相关《第5章 过程(精品).ppt(64页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 如同常量的定义一样,有时不仅仅是几个数字反复如同常量的定义一样,有时不仅仅是几个数字反复出现在程序中,而且是很多段代码在做几乎同样的事,出现在程序中,而且是很多段代码在做几乎同样的事,如果有一些通用的代码可供调用的话,那么程序就会简如果有一些通用的代码可供调用的话,那么程序就会简练得多,而且更为清晰,这就是过程与函数。练得多,而且更为清晰,这就是过程与函数。VbVb中使用中使用的过程分为子程序过程、函数过程和属性过程。的过程分为子程序过程、函数过程和属性过程。5 5 5 5 过过过过 程程程程过程过程子程序过程(子程序过程(SUBSUB)函数过程(函数过程(FUNCTIONFUNCTION)
2、事件过程事件过程通用过程通用过程窗体过程窗体过程控件过程控件过程9.1 9.1 通用过程通用过程通用过程通用过程通用过程通用过程过程过程过程过程事件过程事件过程事件过程事件过程 (1 1)打开代码窗口(双击控件或窗体,单击查看)打开代码窗口(双击控件或窗体,单击查看代码)代码)选择对象和事件选择对象和事件输入代码输入代码保存保存 1、建立事件过程、建立事件过程加入对发生事件进行处理的代码的过程,称为事件过程。加入对发生事件进行处理的代码的过程,称为事件过程。加入对发生事件进行处理的代码的过程,称为事件过程。加入对发生事件进行处理的代码的过程,称为事件过程。事件过程事件过程事件过程事件过程 (2
3、 2)“工具工具”菜单菜单“添加过程添加过程”(如下图)(如下图)输入代码输入代码保存保存 (1)控件事件过程形式:)控件事件过程形式:事件过程事件过程事件过程事件过程Private Sub Private Sub 控件名控件名_ _事件名事件名 (argumentlistargumentlist)语句块语句块End SubEnd Sub说明:说明:(1 1)控控件件名名必必须须与与窗窗体体中中某某个个控控件件相相匹匹配配,否否则则为为通通用用过过程程且该过程也属于私有过程。且该过程也属于私有过程。(2 2)argumentlistargumentlist 指指的的是是参参数数列列表表,所所谓
4、谓参参数数,就就是是指指过过程程操操作作所所需需的的指指导导条条件件。有有无无参参数数由由事事件件本本身身决决定定,用用户户不不可可以以自行添加。自行添加。2 2 2 2、定义事件过程、定义事件过程、定义事件过程、定义事件过程Private Sub Private Sub FormForm_ _事件名事件名 (argumentlistargumentlist)语句块语句块EndSub2)窗体事件过程形式:)窗体事件过程形式:事件过程事件过程事件过程事件过程说明:说明:(1 1)Private Private 表明该过程的使用范围是模块级的,在该窗体之表明该过程的使用范围是模块级的,在该窗体之外
5、是不可见的。外是不可见的。(2 2)不论定义的窗体名称为什么,均用)不论定义的窗体名称为什么,均用Form Form 或或MIDFORMMIDFORM(多文(多文档界面窗体)表示。档界面窗体)表示。(3 3)事件由事件由VBVB提供。注意部分事件的发生顺序:提供。注意部分事件的发生顺序:InitializeInitialize 、Load Load、ActivateActivate、GotFocusGotFocus事件的发生顺序是依次的。事件的发生顺序是依次的。事件过程事件过程事件过程事件过程Initialize:Initialize:初始化事件,是在窗体被加载(初始化事件,是在窗体被加载(L
6、oadLoad)之前,)之前,窗体被配置的时候触发。窗体被配置的时候触发。Load Load:加载事件,:加载事件,VBVB把窗体从磁盘或从磁盘的缓冲区读把窗体从磁盘或从磁盘的缓冲区读入内存时发生。入内存时发生。ActivateActivate:激活事件,是在窗体已经被装入内存,变成被:激活事件,是在窗体已经被装入内存,变成被激活的窗体时触发。激活的窗体时触发。GotFocusGotFocus:获得焦点事件,在窗体成为当前焦点时触发。:获得焦点事件,在窗体成为当前焦点时触发。例题例题例题例题 事件过程事件过程事件过程事件过程演示源程序 引例引例1 1:编程时经常要用到两个数的交换,可以将其编:
7、编程时经常要用到两个数的交换,可以将其编写成过程。写成过程。将多次被重复使用的程序段设计成一个具有一定功能的将多次被重复使用的程序段设计成一个具有一定功能的独立程序段,即为通用过程。独立程序段,即为通用过程。5.1.15.1.1通用过程通用过程通用过程通用过程通用过程通用过程通用过程通用过程代码如下:代码如下:Public Sub Public Sub swap(xswap(x,y),y)Dim t As Integer Dim t As Integer t=x t=x x=y x=y y=t y=tEndSub 通用过程通用过程通用过程通用过程1 1、建立、建立SUBSUB过程过程 在窗体模
8、块:在窗体模块:(1 1)打开代码编辑器窗口)打开代码编辑器窗口选择工具菜单选择工具菜单选择添加过程选择添加过程(2 2)在代码编辑器窗口中选择)在代码编辑器窗口中选择“通用通用声明声明”在标准模块:在标准模块:(1 1)打开)打开“工程工程”菜单中菜单中“添加模块添加模块”选择选择“新建新建”打开模块代码窗口打开模块代码窗口选择工具菜单选择工具菜单选择添加过程选择添加过程(2 2)打开)打开“工程工程”菜单中菜单中“添加模块添加模块”选择选择“新建新建”打开模块代码窗口打开模块代码窗口输入过程名回车输入过程名回车形式如下:形式如下:Private/Private/PublicStaticPu
9、blicStatic Sub Sub 过程名过程名 (参数列表参数列表)局部变量和常量声明局部变量和常量声明 语句块语句块 Exit SubExit Sub 语句块语句块 End SubEnd Sub2.2.2.2.通用过程的定义通用过程的定义通用过程的定义通用过程的定义:通用过程通用过程通用过程通用过程Public Sub swap(x,y)Dim t As Integer t=x:x=y:y=tEnd Sub例例通用过程通用过程通用过程通用过程说明:说明:(1 1)Private/PublicPrivate/Public可缺省,若缺则系统默认为可缺省,若缺则系统默认为PublicPubli
10、c。StaticStatic如果不省则指定过程中的局部变量为如果不省则指定过程中的局部变量为“静态静态”变量。变量。(2 2)过程名命名规则和变量名相同,且不能重名。)过程名命名规则和变量名相同,且不能重名。(3 3)参数列表中的参数是形式参数,可以是变量名或数组名)参数列表中的参数是形式参数,可以是变量名或数组名(此时要加(),参数可以省略,但是外层()不可省,若有(此时要加(),参数可以省略,但是外层()不可省,若有多个参数,则用逗号分开。多个参数,则用逗号分开。(4)形参变量的类型如果被说明为)形参变量的类型如果被说明为“String”,它只能是不定,它只能是不定长的。而在调用该过程时,
11、对应的实在参数可以是定长的字符串长的。而在调用该过程时,对应的实在参数可以是定长的字符串型变量或字符串型数组元素。如果形参是字符串数组,则没有此型变量或字符串型数组元素。如果形参是字符串数组,则没有此限制。限制。(5)过程体中)过程体中ExitSub可以有多个,执行到此语句,立即退出可以有多个,执行到此语句,立即退出该过程。该过程。Sub过程不可以嵌套。过程不可以嵌套。3.SUB过程调用过程调用通用过程通用过程通用过程通用过程格式格式1 1:CALL CALL 过程名过程名 (实参表)(实参表)格式格式2 2:过程名:过程名 实参实参1 1,实参实参2 2,说明:(说明:(1 1)过程名是被调
12、用过程的名字,当调用程序执)过程名是被调用过程的名字,当调用程序执行到此代码时,行到此代码时,VBVB将开始执行被调用过程。将开始执行被调用过程。(2 2)实实参参是是传传送送给给被被调调用用过过程程的的变变量量、常常数数或或表表达达式式。实实参参的的个个数数和和类类型型、顺顺序序应应与与被被调调过过程程的的形形参参相相匹匹配配,且且每每个个参参数数之之间间应应用用逗逗号号分分隔隔。对对于于格格式式1 1,若若被被调调过过程程无无参参数数,则则(实实参参表表)可可以以省省略略。而而格格式式2 2,不不论是否有参数,实参列表均不需要加括号。论是否有参数,实参列表均不需要加括号。例例1:调用两数交
13、换过程:调用两数交换过程 通用过程通用过程通用过程通用过程Private Sub Private Sub swap(xswap(x,y),y)Dim t As Integer Dim t As Integer t=x:x=y:y=t t=x:x=y:y=tEnd SubEnd 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)a=Val(Text1.Text)b=Val(Te
14、xt2.Text)b=Val(Text2.Text)swap a,b swap a,b 或或 call swap(call swap(a,ba,b)Text1.Text=a Text1.Text=a Text2.Text=b Text2.Text=bEnd SubEnd Sub例例2:将以前学过的冒泡排序改写成过程调用的形式:将以前学过的冒泡排序改写成过程调用的形式通用过程通用过程通用过程通用过程 Private Sub Private Sub bubble_sort(sortbubble_sort(sort()As Integer)()As Integer)Dim i As Integer,
15、j As Integer Dim i As Integer,j As Integer,Temp As IntegerTemp As Integer For i=1 To For i=1 To UBound(sortUBound(sort)-1)-1 For j=1 To For j=1 To UBound(sortUBound(sort)-i)-i If If sort(jsort(j)sort(jsort(j+1)Then+1)Then Temp=Temp=sort(jsort(j)sort(jsort(j)=)=sort(jsort(j+1)+1)sort(jsort(j+1)=Temp+
16、1)=Temp End If End If Next j Next j Next i Next i End Sub End Sub 通用过程通用过程通用过程通用过程 Option ExplicitOption Explicit :Option Base 1 Option Base 1 Private Sub Command1_Click()Private Sub Command1_Click()Dim number(10)As Integer,i As Integer Dim number(10)As Integer,i As Integer Randomize Randomize For i
17、=1 To 10 For i=1 To 10 number(inumber(i)=Int(100-1)*)=Int(100-1)*RndRnd)+1)+1 Text1=Text1=Text1Text1&number(inumber(i)&)&“”Next i Next i Call Call bubble_sort(numberbubble_sort(number)For i=1 To 10 For i=1 To 10 Text2=Text2=Text2Text2&number(inumber(i)&)&“”Next i Next i End Sub End Sub5.1.2FUNCTION5
18、.1.2FUNCTION函数函数FUNCTIONFUNCTION函数的建立与定义函数的建立与定义函数的建立与定义函数的建立与定义FUNCTIONFUNCTION函数的调用函数的调用函数的调用函数的调用调用其它模块中的过程调用其它模块中的过程调用其它模块中的过程调用其它模块中的过程常量常量常量常量1.FUNCTION1.FUNCTION1.FUNCTION1.FUNCTION函数的建立函数的建立函数的建立函数的建立FunctionFunction函数的建立与函数的建立与SUBSUB类似。类似。2.FUNCTION2.FUNCTION2.FUNCTION2.FUNCTION函数的定义函数的定义函数
19、的定义函数的定义Private/Private/PublicStaticPublicStatic Function Function 函数名函数名 (参数列表参数列表)as as 数据类型数据类型 局部变量和常量声明局部变量和常量声明 语句块语句块 函数名函数名=表达式表达式 Exit Function Exit Function 语句块语句块 函数名函数名=表达式表达式 End End FunctionFunction FUNCTION FUNCTION FUNCTION FUNCTION函数的建立与定义函数的建立与定义函数的建立与定义函数的建立与定义 FUNCTION FUNCTION F
20、UNCTION FUNCTION函数的建立与定义函数的建立与定义函数的建立与定义函数的建立与定义说明:说明:Function函数和Sub过程的区别:两者的主要区别是有无返回值。SUB过程没有返回值,而Function函数有返回值。注意事项:函数中“函数名=表达式”语句功能是给函数名赋值,通常情况下在函数体内至少要对函数名进行一次赋值,若缺省,则返回对应类型的缺省值。因为函数有返回值,所以过程名也有类型。“As 数据类型”指定函数类型,若缺省,默认为变体型。而SUB过程名没有值,因而也没有类型,且在子过程体内也不能对子过程名赋值。只要能定义成函数过程的就一定能定义成子过程,反之不一定。格式如下:
21、格式如下:格式格式1 1:函数名(:函数名(实参表实参表)格式格式2 2:CALL CALL 函数名(实参)函数名(实参)格式格式3 3:函数名:函数名 实参实参 FUNCTIONFUNCTIONFUNCTIONFUNCTION函数的调用函数的调用函数的调用函数的调用说明:通常用第一种比较多,用后两种方法调说明:通常用第一种比较多,用后两种方法调用函数时用函数时VBVB放弃函数的返回值。放弃函数的返回值。例题例题例题例题1 1、试将两数交换的、试将两数交换的SUBSUB过程改写成过程改写成FUNCTIONFUNCTION过程过程2 2、编写一段求三角形面积的函数,并多次调用。、编写一段求三角形
22、面积的函数,并多次调用。Public Function Public Function area(xarea(x,y,z)As Single,y,z)As Single Dim p As Single Dim p As Single p=1/2*(x+y+z)p=1/2*(x+y+z)area=area=Sqr(pSqr(p*(p-x)*(p-y)*(p-z)*(p-x)*(p-y)*(p-z)End Function End Function FUNCTION FUNCTION FUNCTION FUNCTION函数的调用函数的调用函数的调用函数的调用调用调用调用调用 Private Sub
23、 Command1_Click()Private Sub Command1_Click()Dim a As Single,b As Single,c As Single,d Dim a As Single,b As Single,c As Single,d As Single,e As Single,f As Single,s1 As As Single,e As Single,f As Single,s1 As Single,s2 As SingleSingle,s2 As Single a=a=InputBoxInputBox(输入输入a a:)b=b=InputBoxInputBox(输
24、入输入b b:)c=c=InputBoxInputBox(输入输入c c:)d=d=InputBoxInputBox(输入输入d d:)e=e=InputBoxInputBox(输入输入e e:)f=f=InputBoxInputBox(输入输入f f:)s1=s1=area(aarea(a,b,c):s2=,b,c):s2=area(darea(d,e,f),e,f)Text1.Text=Val(s1+s2)Text1.Text=Val(s1+s2)End Sub End Sub FUNCTION FUNCTION FUNCTION FUNCTION函数的调用函数的调用函数的调用函数的调用函
25、数调用函数调用试分别用试分别用Sub Sub 和和FunctionFunction编写求某级数部分和的过程,并调用之。编写求某级数部分和的过程,并调用之。Private Sub js2(s As Single,x As Integer)Private Sub js2(s As Single,x As Integer)Dim k As Integer,t As Double Dim k As Integer,t As Double t=1 t=1 Do Do k=k+1 k=k+1 t=t*k/(x+k)t=t*k/(x+k)s=s+t s=s+t Loop Until t=10(-6)Loop
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第5章 过程精品 过程 精品
限制150内