VB第七章过程

上传人:简****9 文档编号:113492644 上传时间:2019-11-08 格式:PPT 页数:51 大小:410KB
返回 下载 相关 举报
VB第七章过程_第1页
第1页 / 共51页
VB第七章过程_第2页
第2页 / 共51页
VB第七章过程_第3页
第3页 / 共51页
VB第七章过程_第4页
第4页 / 共51页
VB第七章过程_第5页
第5页 / 共51页
点击查看更多>>
资源描述

《VB第七章过程》由会员分享,可在线阅读,更多相关《VB第七章过程(51页珍藏版)》请在金锄头文库上搜索。

1、第7章 过 程,在设计一个规模较大、复杂程度较高的程序时,为简化程序设计,将程序分割成较小的逻辑部件,VB通常把这种逻辑部件称为过程。,Sub过程不返回值,Function过程返回一个值,7. 1 Sub过程,在VB中有两种Sub过程,即事件过程和通用过程。,711 事件过程,事件过程分为窗体事件过程和控件事件过程两种。,1定义窗体事件过程,Private Sub Form_事件名(参数列表) 局部变量和常数声明 语句块 End Sub,Private Sub Form_Click( ) Print “这是一个VB的演示程序!“ End Sub,为窗体及窗体上的各种对象编写的,用来响应由用户或

2、系统引发的各种事件的程序代码。,该事件过程只能在它自己的窗体模块中被调用,2定义控件事件过程,Private Sub 控件名_事件名(参数列表) 局部变量和常数声明 语句块 End Sub,Private Sub Cmd_Click( ) Print “这是一个VB的演示程序!“ End Sub,例如,在窗体中设置了一个名为Cmd的命令按钮控件,它的对应单击事件过程如下:,4. 事件过程的调用,3建立事件过程,7.1.2 通用过程,一个应用程序中多个窗体可以共享的或一个窗体内不同的事件过程可共享的程序代码,称为“通用过程”。,公有过程可以被应用程序中的任一过程调用,而私有过程只能被同一模块中的

3、过程调用,1定义通用Sub过程,Private | PublicStatic Sub 过程名(参数列表) 局部变量和常量声明 语句块 Exit Sub 语句块 End Sub,A. Sub过程以Sub语句开头,以End sub语句结束。在sub和End sub之间是描述过程操作的语句块,称为子程序体或过程体。,BYVal:表明其后的形参是按值传递参数或称为“传值”(Passed by Value)参数,若缺省或用“ByRef”替代,则表明参数是按地址传递(传址)参数或称为“引用”(Passed by Reference)参数。,B.参数列表中的参数称为形式参数,形式参数格式为:,ByValBy

4、Ref 变量名 ( ) As数据类型,变量名( ):变量名为合法的VB变量名或数组名。若变量名后无括号,则表示该形参是变量,否则是数组。,Private Sub Exam1(ByVal X as Integer, Y as Integer) Y=Y+8 X=X+Y Print X,Y End Sub,2建立Sub过程 创建通用过程的方法有两种。,7.3 过程调用,7.3.1 事件过程的调用,P131. 例,7.3.2 Sub过程的调用,(1)执行Call语句,VB将控制传递给由“过程名”指定的Sub过程,开始执行它。,VB有两种方式调用Sub过程。一种是把过程名放在Call语句中,一种是把过程

5、名作为一个语句来使用。,1用Call语句调用Sub过程,Call 过程名(实在参数表),(2)实在参数是传送给被调用的Sub过程的变量、常数或表达式。如果被调用的程序是一个有参过程,在一般情况下,实在参数的个数、类型和顺序,应与被调用过程的形式参数相匹配。,P133. 例7-2,Private Sub Command1_Click() Dim Inta As Integer, St As String Inta = Text1.Text Call Factor(Inta, St) Text2.Text = St End Sub Private Sub Factor(ByVal N As Int

6、eger, S As String) Dim I As Integer For I = 1 To N - 1 If N Mod I = 0 Then S = S & Str(I) Next I End Sub,2把过程名作为一个语句来用 调用过程的语法如下:,过程名 实参1,实参2,与第一种方式相比,它有两点不同: (1)去掉关键字call; (2)去掉“实在参数表”的括号。,7.2 Function过程定义,Function过程的语法如下:,Private | Public Static Function 函数名(参数列表)As数据类型 局部变量和常数声明 语句块 函数名表达式 Exit F

7、unction 语句块 函数名表达式 End Function,C.在函数体内可以含有多个Exit Function语句,程序执行Exit Function语句时,提前退出Function过程,返回调用点。,例71 编写一个求n!的函数过程。 Private Function Fact(ByVal N as Integer) As Long Dim K As Ingeger Fact=1 If N=0 Or N=1 Then Exit Function else For K=1 To N Fact=Fact * K Next K End If End Function,7.3. 3 调用Fun

8、ction过程,调用Function过程的语法如下:,变量名=Function 过程名 (实在参数表),VB也允许像调用Sub过程那样调用Function过程。,P134. 例7-3,7.3.4 调用其他模块中的过程,1窗体中的过程 从窗体模块的外部调用窗体中的公有过程,必须用窗体的名字作为调用前缀,指明包含该过程的窗体模块。,在应用程序的任何地方都能调用其他模块中的公有(全局)过程。,假定在窗体模块FrmX中含有一个公有Sub过程TestSub,则在窗体FrmX以外的模块中用下面语句就可以正确地调用该过程: Call FrmX. TestSub(实参表),C.如果在其他模块中调用公有过程,则

9、必须指定它是哪一个模块的公有过程。,2 标准模块中的过程,A.如果过程名是唯一的即在应用程序中不再有同名过程存在。则调用该过程时不必加模块名。,B.如果在两个以上的模块中都含有同名过程,那么调用同一模块内的公有过程时,可以不加 模块名。,假定在标准模块Modulel和Module2中都含有同名过程CommonSub,在Module1中用下面语句 Call CommonSub (实在参数) 调用的是Module1中的CommonSub过程,而不会是Module2的CommonSub过程。,例如,在Module1 中调用Module2中的CommonSub,则可用下面语句实现: Call Modu

10、le2CommonSub(实参表),VB中使用的过程,子程序过程 (Sub Procedure),函数过程 (Function Procedure),Sub过程不返回值,Function过程返回一个值,7.4 参数的传递,出现在Sub过程和Function过程的形参表中的变量名、数组名称之为形式参数。,在调用一个有参数的过程时,首先进行的是“形实结合”,即按值传递或按地址传送方式,实现调用程序和被调用的过程之间的数据传递。,8.4.1 形参与实参,1形参,实参是在调用Sub或Function过程时,传送给相应过程的变量名、数组名、常数或表达式,它们包含在过程调用的实参表中。,2实参,Priva

11、te Sub Form_Click( ) Dim X As String, Y As Integer Call Count(Y, X) End Sub Private Sub Count(M As Integer, N As String) End Sub,实参,形参,在“形实结合”时,形参表中和实参表中的参数的个数要相同,对应位置的参数类型要一致。,在过程调用传递参数时,形参表与实参表中的对应变量名可以不必相同,因为“形实结合”是按对应“位置”结合。,Private Sub Form_Click() Dim X As String, Y As Integer Call Count(Y, X)

12、 End Sub Private Sub Count(M As Integer, N As String) End Sub,在VB中参数值的传递有两种方式,按值传递 (Passed by Value),按地址传递 (Passed by Reference),7.4.2 按值传递参数(Passed by Value),过程调用时,VB给按值传递参数分配一个临时存储单元,将实参变量的值拷贝到这个临时单元中去。也就是说,按值传递参数时,传递的只是实参变量的副本。,Private Sub Form_Click() Dim M As Integer, N As Integer M = 15: N = 2

13、0 Call value(M, N) Print “M=“; M, “N=“; N End Sub Private Sub value(ByVal X As Integer, ByVal Y As Integer) X = X + 20 Y = X + Y Print “X=“; X, “Y=“; Y End Sub,35,55,按地址传递参数时,形参和实参共用内存的同一“地址”,即共享同一个存储单元。这样在被调过程中的形式参数值一旦被改变,相应的实参值也跟着被改变了。,7.4.3 按地址传递参数(passed by Reference),Private Sub Form_Click( ) D

14、im M As Integer, N As Integer M = 15: N = 20 Call value(M, N) Print “M=“; M, “N=“; N End Sub Private Sub value( X As Integer, ByVal Y As Integer) X = X + 20 Y = X + Y Print “X=“; X, “Y=“; Y End Sub,X,参数传递例,35,55,例. P139,Private Sub Form_Click( ) Dim a(5) As Integer, i As Integer For i = 1 To 3 a(i)

15、= 2 * i Print a(i); Next i Print For i = 1 To i Call sub1(a(i), i) Print i Next i End Sub Public Sub sub1(x As Integer, p As Integer) If x - p 3 Then p = p + p Else p = p + 1 End If End Sub,参数例,如果与按地址传递参数结合的实参是与其类型不一致的常数或表达式时,VB会按要求进行数据类型转换,然后将转换后的值传送给参数。,Private Sub Form_Click() Dim S As Single S =

16、 125.5 Call Convert(S), “12“ + “.5“) End Sub Private Sub Convert(Inx As Integer, Sing As Single) Inx = Inx * 2 Sing = Sing + 23 Print “Inx=“; Inx, “Sing=“; Sing End Sub,例. P140a,如果与按地址传递参数结合的实参是变量(简单变量、数组元素),那么它们的类型必须完全一致。,定义过程时,VB允许把数组作为形参出现在形参表中。,7.4.4 数组参数,形参数组只能是按地址传递的参数。对应实参也必须是数组,且数据类型必须和形参数组的数据类型相一致。调用过程时把要传递的数组名放

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业/管理/HR > 管理学资料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号