第八章过程_第1页
第八章过程_第2页
第八章过程_第3页
第八章过程_第4页
第八章过程_第5页
已阅读5页,还剩54页未读 继续免费阅读

下载本文档

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

文档简介

1、过程概述过程概述在在VB6.0中,除了系统提供的内部函数过中,除了系统提供的内部函数过程和事件过程外,用户可自定义过程下列三程和事件过程外,用户可自定义过程下列三种过程:种过程: “Sub” 保留字开始的为子过程保留字开始的为子过程“Function” 保留字开始的为函数过程保留字开始的为函数过程 “Property”保留字开始的为属性过程保留字开始的为属性过程 u过程有子过程和函数过程,它们都是完成某种特定功能的一组程序代码。u不同点: 函数过程结束后将带回返回值 子过程结束不带回返回值。根据子过程的语法格式定义子过程根据子过程的语法格式定义子过程 maxmaxSubSub max(a As

2、 Integer, b As Integer, max(a As Integer, b As Integer, c As Integer)c As Integer) If a b Then If a b Then c = a c = a Else Else c = b c = b End If End IfEnd SubEnd Sub根据函数的语法格式定义函数根据函数的语法格式定义函数 maxmaxFunctionFunction max(a As Integer, b As max(a As Integer, b As Integer) Integer) As IntegerAs Integ

3、er If a b Then If a b Then max = a max = a Else Else max = b max = b End If End IfEnd FunctionEnd Function 在在VB中,中,Sub子过程分为:子过程分为:事件过程事件过程和和通用过程通用过程 1. 事件过程事件过程 (1)窗体事件的语法)窗体事件的语法Private Sub FormPrivate Sub Form_事件名事件名(参数列表参数列表) 语句组语句组End SubEnd Sub (2)控件事件的语法)控件事件的语法Private SubPrivate Sub 控件名控件名_事件

4、名事件名(参数列表参数列表) 语句组语句组 End SubEnd Sub8.1 Sub8.1 Sub过程过程子过程的定义形式如下:子过程的定义形式如下:Public|Private|Static Sub Public|Private|Static Sub 子过程名子过程名(形形参表参表) 语句组语句组 Exit SubExit Sub 语句组语句组End SubEnd Sub 2. 通用过程(通用过程(Sub过程)过程) 说明:说明:(1 1)Public|Private|StaticPublic|Private|Static,缺省时认为是,缺省时认为是publicpublic。(2 2)Su

5、bSub开始,开始,End SubEnd Sub结束。结束。(3 3)形参表:仅表示形参的类型、个数,定义时)形参表:仅表示形参的类型、个数,定义时是无值的,只有在过程被调用时,虚实参结合后才获得是无值的,只有在过程被调用时,虚实参结合后才获得相应的值。过程可以无形式参数,但括号不能省。相应的值。过程可以无形式参数,但括号不能省。 (4 4)Exit SubExit Sub:表示退出子过程,常常是与选择:表示退出子过程,常常是与选择结构(结构(IfIf或或Select CaseSelect Case语句)联用,即当满足一定条语句)联用,即当满足一定条件时,退出子过程。件时,退出子过程。例例 交

6、换两个整型变量值的子过程。交换两个整型变量值的子过程。Private Sub Swap(X As Integer,Y As Private Sub Swap(X As Integer,Y As Integer)Integer)Dim temp As IntegerDim temp As Integer Temp=X : X=Y : Y=TempTemp=X : X=Y : Y=TempEnd SubEnd SubPrivate Sub Form_click()Private Sub Form_click() Dim a%, b% Dim a%, b% a = Val(InputBox(a=)

7、a = Val(InputBox(a=) b = Val(InputBox(b=) b = Val(InputBox(b=) Print a=; a, b=; b Print a=; a, b=; b Call Swap(a, b) Call Swap(a, b) Print a=; a, b=; b Print a=; a, b=; bEnd SubEnd Sub3. 子过程的建立子过程的建立 1) “工具工具”-“添加过程添加过程” ,出现,出现“添加过程添加过程”对对话框(见图),选择过程类型(子过程、函数、属话框(见图),选择过程类型(子过程、函数、属性、事件)及作用范围(公有的性、事

8、件)及作用范围(公有的Public、私有的、私有的Private),单击确定。),单击确定。2)“工程工程”-“添加模块添加模块”-“打开打开”-“输入代码输入代码”3)在窗体模块代码窗口)在窗体模块代码窗口 中直接输入代码。中直接输入代码。4. 4. 过程的调用过程的调用 子过程名子过程名 参数列表参数列表 或或 Call Call 子过程名子过程名( (参数列表参数列表) )说明:说明: (1 1)参数列表称为实参,它必须与形参保持)参数列表称为实参,它必须与形参保持个数相同,位置与类型一一对应。个数相同,位置与类型一一对应。(2 2)调用时把实参值传递给对应的形参。其)调用时把实参值传递

9、给对应的形参。其中值传递(形参前有中值传递(形参前有ByValByVal说明)时实参的值说明)时实参的值不随形参的值变化而改变。而地址传递时实不随形参的值变化而改变。而地址传递时实参的值随形参值的改变而改变。参的值随形参值的改变而改变。例:调用上面定义的例:调用上面定义的SwapSwap子过程的形式:子过程的形式: Swap a,bSwap a,b Call Swap(a,b) Call Swap(a,b)Private Sub CmdOK() Call Swap(a,b) Swap a,bEnd SubPrivate Sub Swap(x%,y%) Dim temp% Temp=X X=Y

10、Y=TempEnd Sub 过程调用的执行过程:过程调用的执行过程:Sub S (x As Single, y As Single)t = xx = t / yy = t Mod yEnd SubPrivate Sub Form_Click()Dim a As SingleDim b As Singlea = 5: b = 4S a, bPrint a, bEnd Sub下面是有效的调用是下面是有效的调用是(A) F1 N+M (B) F1 M (C) F1 5 (D) F1 M+58.2 Function过程过程与子过程不同的是函数过程将返回一个值与子过程不同的是函数过程将返回一个值 。 1

11、.1.函数过程(函数过程(FunctionFunction过程)的定义过程)的定义Public|Private|Static Function Public|Private|Static Function 函数名函数名()As)As 函数名函数名= =返回值返回值 Exit Function Exit Function 函数名函数名= =返回值返回值 End FunctionEnd Function函数体函数体说明:说明:(1 1)Public|Private|StaticPublic|Private|Static,缺省时认为是,缺省时认为是publicpublic。(2 2)Function

12、Function开始,开始,End FunctionEnd Function结束。结束。 (3 3)函数名:命名规则与变量名规则相同。)函数名:命名规则与变量名规则相同。(4 4)函数名)函数名= =返回值返回值, ,在函数体内,函数的返回值在函数体内,函数的返回值就是通过对函数名的赋值语句来实现的,返回值只有就是通过对函数名的赋值语句来实现的,返回值只有一个。一个。(5 5)ASAS类型:是指函数返回值的类型,若省略,类型:是指函数返回值的类型,若省略,则函数返回变体类型值(则函数返回变体类型值(VariantVariant)。)。 (6 6)Exit FunctionExit Functi

13、on:表示退出函数过程,常常:表示退出函数过程,常常是与选择结构(是与选择结构(IfIf或或Select CaseSelect Case语句)联用,即当语句)联用,即当满足一定条件时,退出函数过程。满足一定条件时,退出函数过程。2.2.函数的调用函数的调用调用形式如下:调用形式如下: 函数名(实参列表)函数名(实参列表)说明:说明: 在调用时实参和形参的数据类型、顺在调用时实参和形参的数据类型、顺序、个数必须匹配。函数调用只能出现在序、个数必须匹配。函数调用只能出现在表达式中,其功能是求得函数的返回值。表达式中,其功能是求得函数的返回值。调用调用maxmax函数过程。函数过程。Private

14、Sub Command1_Click()Private Sub Command1_Click() Dim x%, y%, z% Dim x%, y%, z% x = Val(Text1.Text) x = Val(Text1.Text) y = Val(Text2.Text) y = Val(Text2.Text) z = max(x, y)z = max(x, y) Text3.Text = Str(z) Text3.Text = Str(z)End SubEnd Sub例:例:输入圆的半径,计算它的面积。编写函数实现求输入圆的半径,计算它的面积。编写函数实现求圆的面积。效果如图:圆的面积。

15、效果如图: 8.3 过程中的参数传递过程中的参数传递分类:形参与实参分类:形参与实参1、形参、形参 是指在是指在定义定义通用过程时,出现在通用过程时,出现在SubSub或或FunctionFunction语语句中的变量名后面圆括号内的数,是用来接收传送给句中的变量名后面圆括号内的数,是用来接收传送给子过程的数据,形参表中的各个变量之间用逗号分隔。子过程的数据,形参表中的各个变量之间用逗号分隔。 2 2、实参、实参 是指在是指在调用调用SubSub或或FunctionFunction过程时,写入子过程名过程时,写入子过程名或函数名后括号内的参数,其作用是将它们的数据或函数名后括号内的参数,其作用

16、是将它们的数据(数值或地址数值或地址)传送给)传送给SubSub或或FunctionFunction过程与其对应过程与其对应的形参变量。的形参变量。 3、参数传递:、参数传递: 地址传递与值传递地址传递与值传递地址传递:地址传递: 形参得到的是实参的形参得到的是实参的地址地址,形参与实参,形参与实参共用共用存储单元,形参值的改变同时也存储单元,形参值的改变同时也改变改变实参的值。实参的值。值传递:值传递: 形参得到的是实参的形参得到的是实参的值值,形参与实参,形参与实参各自各自占用存储单元,形参值的改变占用存储单元,形参值的改变不会影响不会影响实参的值。实参的值。Private Sub Cmd

17、OK_Click() Dim a%,b% a = 10: b = 20 Swap1 a, b 传传 值值 Print A1=; a, B1=; b a = 10: b = 20 Swap2 a, b 传地址传地址 Print A2=; a, B2=; bEnd SubSub Swap2(x%, y%) Dim Temp% Temp = x x = y y = Temp End SubSub Swap1(ByVal x%, ByVal y%) Dim Temp% Temp = x: x = y: y = TempEnd Sub值传递的执行过程如下图:值传递的执行过程如下图:通过地址传递数据的执行

18、过程通过地址传递数据的执行过程 数组参数的传递数组参数的传递数组作参数是通过传数组作参数是通过传地址地址方式传送。方式传送。在传送数组时,应注意以下几点:在传送数组时,应注意以下几点: 1为了把一个数组的全部元素传送给一个过程,为了把一个数组的全部元素传送给一个过程,应将数组名分别写入形参表中,并略去数组的上下应将数组名分别写入形参表中,并略去数组的上下界,但括号不能省略。界,但括号不能省略。Private Sub Sort(a() As single) End Sub调用调用Sort()函数过程的形式如下:函数过程的形式如下: Sort b( ) 或或 Call Sort( b() ) Su

19、b sum(Sub sum(test() test() As Integer)As Integer) c = 0 c = 0 For Each i In test For Each i In test c = c + test(i) c = c + test(i) Next i Next i Print c Print cEnd SubEnd SubPrivate Sub Command1_Click()Private Sub Command1_Click() Dim a(3) As Integer Dim a(3) As Integer For i = 1 To 3 For i = 1 To

20、 3 a(i) = i a(i) = i Next i Next i sum sum a()a()End SubEnd Sub1 1、私有过程:、私有过程: 加加PrivatePrivate关键字的过程,只能被定义的窗体或模关键字的过程,只能被定义的窗体或模块中的过程调用。块中的过程调用。2 2、公共过程:、公共过程: 加加PublicPublic关键字(或缺省)的过程,可供该应用关键字(或缺省)的过程,可供该应用程序的所有窗体和所有标准模块中的过程调用。程序的所有窗体和所有标准模块中的过程调用。按过程的作用范围来划分,过程可分为:按过程的作用范围来划分,过程可分为: 私有过程私有过程 公共公

21、共过程过程变量的作用域变量的作用域 在在VBVB中,由于可以在过程中和模块中声明变中,由于可以在过程中和模块中声明变量,根据定义变量的位置和定义变量的语句不量,根据定义变量的位置和定义变量的语句不同,变量可以分为:同,变量可以分为:局部变量(过程级变量)局部变量(过程级变量)窗体窗体/ /模块级变量(私有的模块级变量,能模块级变量(私有的模块级变量,能被本模块的所有过程和函数使用)被本模块的所有过程和函数使用)全局变量(公有的模块级变量)。全局变量(公有的模块级变量)。一、一、 过程级变量过程级变量局部变量局部变量 局部变量:在过程内用声明的变量,只能在本过程中局部变量:在过程内用声明的变量,

22、只能在本过程中使用。使用。 在在过程内部过程内部使用使用 Dim 或者或者 Static 关键字来声明的变关键字来声明的变量,只在声明它们的过程中才能被访问或改变该变量的量,只在声明它们的过程中才能被访问或改变该变量的值,别的过程不可访问。所以可以在不同的过程中声明值,别的过程不可访问。所以可以在不同的过程中声明相同名字的局部变量而互不影响。相同名字的局部变量而互不影响。 Dim声明:随过程的调用而分配存贮单元、变量的声明:随过程的调用而分配存贮单元、变量的初始化;过程体结束,存贮单元释放。初始化;过程体结束,存贮单元释放。 Static声明,每次调用过程,变量保持上次调用结束声明,每次调用过

23、程,变量保持上次调用结束时的值。时的值。 变量的作用域变量的作用域例:例:Private Sub Form_Load()Private Sub Form_Load() Dim n% Dim n% n= 10 n= 10End SubEnd SubPrivate Sub Form_Click() Private Sub Form_Click() Dim n% Dim n% Print “n=“;n Print “n=“;nEnd SubEnd Sub程序运行后单击窗体,其输出结果是什么?程序运行后单击窗体,其输出结果是什么?二、窗体二、窗体/ /模块级变量模块级变量 窗体窗体/模块级变量:在模块

24、级变量:在“ “通用通用声明声明” ”段中用段中用Dim语句或用语句或用Private语句声明的变量,可语句声明的变量,可被本窗体被本窗体/模块的任何过程访模块的任何过程访问。但其他模块却不能访问问。但其他模块却不能访问该变量。该变量。 例如:在例如:在“ “通用声明通用声明” ”段声段声明如下变量明如下变量:Private s As StringDim a As Integer例:例:Dim n%Dim n% Private Sub Form_Load()Private Sub Form_Load() n= 10 n= 10End SubEnd SubPrivate Sub form_Cli

25、ck()Private Sub form_Click() Print “n=“;n Print “n=“;nEnd SubEnd SubPrivate Sub Command1_Click()x = 4y = 4z = 6Call s1(x, y)Print x + y + z;Call s2(x, y)Print x + y + zEnd Sub当模块级变量与过程级变量同名时,过当模块级变量与过程级变量同名时,过程级变量生效程级变量生效三、三、 全局变量全局变量 全局变量也称公有的模块级变量,在窗全局变量也称公有的模块级变量,在窗体模块或标准模块的顶部的体模块或标准模块的顶部的“通用通用”声

26、明段用声明段用Public关键字声明,它的作用范围是整个应用关键字声明,它的作用范围是整个应用程序,即可被本应用程序的任何过程或函数访程序,即可被本应用程序的任何过程或函数访问。问。例如:例如: Public a As Integer,b As single3种变量声明及使用规则如下表:种变量声明及使用规则如下表:Public Temp As IntegerPublic Temp As Integer 定义全局变量定义全局变量Private Sub Form_Load()Private Sub Form_Load() Temp = 1 Temp = 1 将全局变量将全局变量Temp Temp

27、的值设置成的值设置成 1 1End SubEnd SubPrivate Sub Command1_Click()Private Sub Command1_Click()Dim Temp As IntegerDim Temp As Integer 定义局部变量定义局部变量 Temp = 2 Temp = 2 将局部变量将局部变量Temp Temp 的值设置成的值设置成 2 2 Print temp=; Temp Print temp=; Temp Print temp=; Form1.Temp Print temp=; Form1.TempEnd SubEnd SubPrivate Sub Command2_Click()Private Sub Command2_Cli

温馨提示

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

评论

0/150

提交评论