资源预览内容
第1页 / 共50页
第2页 / 共50页
第3页 / 共50页
第4页 / 共50页
第5页 / 共50页
第6页 / 共50页
第7页 / 共50页
第8页 / 共50页
第9页 / 共50页
第10页 / 共50页
亲,该文档总共50页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第7章,过程,本章主要内容,第7章 过 程,退出,VB应用程序是由过程组成的,过程是完成某种特殊功能的一组独立的程序代码。两大类过程。 事件过程 Sub过程 通用过程 Function过程 事件过程是VB应用程序的主体 通用过程是独立于事件过程之外,可供其他过程调用的程序段,过程调用示例 把相同的任务编成相对独立的“子过程” 当事件过程需要执行这个任务时,可使用调用语句(如Call)实行调用。子过程执行完后,会返回事件过程中调用语句Call的后续语句继续执行 通用过程又分为Sub(子程序)过程和Function(函数)过程,7.1 通用过程,例7.1 使用Sub过程的示例1 Private Sub Form_Load() Show Call mysub1(30) Call mysub2 Call mysub2 Call mysub2 Call mysub1(30) End Sub 程序运行结果,Private Sub mysub1(n) Print String(n, *)End SubPrivate Sub mysub2() Print *; Tab(30); *End Sub,7.1.1 Sub过程,例7.1,1. Sub过程定义格式: PrivatePublic Static Sub 过程名(参数表) 语句块 Exit Sub End Sub 2. 调用Sub过程有以下两种方法: (1) 使用Call语句。格式: Call 过程名(实参表) (2) 直接使用过程名,格式: 过程名实参表 例如,调用名为SubCal的过程: Call SubCal(10) SubCal 10,Sub过程的定义和调用,因为计算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 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!,例7.2,1. Function过程定义格式:Private | Public | Static Function 函数名(参数表) As 数据类型 语句块 函数名表达式 Exit Function End Function 2. Function过程的调用方法: (1)直接调用 像使用VB内部函数一样,只需写出函数名和相应的参数即可 例如: s = Max(a, b) Print Max(s, c) (2)用Call语句调用 与调用Sub过程一样来调用Function过程,例如: Call Max(a, b) 当用这种方法调用Function过程时,将会放弃返回值,7.1.2 Function过程,Function max(m, n) As Single End Function,Function过程,把求两个数中的大数编成Function过程,过程名为Max 本例采用InputBox函数输入三个数,判断出最大数后采用Print直接输出在窗体上。程序代码:Private Sub Form_Load() Show Dim a As Single, b As Single, c As Single Dim s As Single a = Val(InputBox(输入第一个数) b = Val(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.3 输入三个数,求出它们的最大数,例7.3,通用过程(Sub/Function)过程可以保存在两种模块中: 窗体模块(.frm)和标准模块(.bas) (1) 在窗体模块中创建通用过程: 可以在代码窗口中直接键入来创建Sub过程 选择“工具”菜单中的“添加过程”命令 (2) 在标准模块中创建通用过程: 选择“工程”菜单中的“添加模块”命令 保存为一个独立的“.bas”文件 举例:把例7.3的函数max(m, n)存放在模块文件中,创建通用过程的方法,Private Sub Form_Load() Show p = 1: m = 5 Call Sub1(p) Call Sub1(m) End Sub Private Sub Sub1(x) If x 1 Then x = x - 1 x = x * 4 Print x; End Sub A. 4 15 B. 4 16 C. 4 4 D. 4 20,请回答问题:下列程序段的输出结果?,想一想,思考题,答案:B,在窗体上已经建立了一个文本框Txt1和一个命令按钮Comd1,运行程序后单击命令按钮,则在文本框Txt1中显示的内容是 Dim a As Integer 模块级变量 Private Sub Comd1_Click() Dim b As Integer, c As Integer a = 1: b = 10 Call MySub(b, c) Txt1.Text = a + b + c End Sub Sub MySub(x, y) y = x Mod 7 + a End Sub A. 16 B. 7 C. 15 D. 9,请回答问题,想一想,思考题,答案:C,参数传递可以实现调用过程和被调过程之间的信息交换 两种方式:按值传递和按地址传递7.2.1 形参与实参 形式参数(简称形参) 在被调过程中的参数。出现在Sub过程和Function过程中 形式参数可以是变量名和数组名 实际参数(简称实参) 在调用过程中的参数。过程调用时实参数据会传递给形参 形参表和实参表中的对应变量名可以不同,但实参和形参的个数、顺序以及数据类型必须相同,7.2 参数传递,定义过程和调用过程的示例:调用过程:Call Mysub(100, 计算机 , 1.5)定义过程:Sub Mysub(t As Integer,s As String,y As Single) “形实结合”是按照位置结合的,即第一个实参值(100)传送给第一个形参t,第二个实参值(“计算机”)传送给第二个形参s,第三个实参值(1.5)传送给第三个形参y。 数组可以作为形参出现在过程的形参表中,输入若干个(不超过100)个学生的成绩,求出平均分、最高分及最低分 本例采用InputBox函数来输入成绩,计算结果直接输出到窗体上,例7.4 求出学生成绩的平均分、最高分及最低分,例7.4,Private Sub Form_Load() Dim jc(100) As Integer, x As Integer,n As Integer, _ sum As Long, max As Integer, min As Integer n = 0 Do While True x = Val(InputBox(请输入第 min End Sub,Sub Caljc(k As Integer, darray() As Integer, _ s As Long, m As Integer, n As Integer) Dim i As Integer s = darray(1) : m = darray(1) : n = darray(1) If k = 1 Then Exit Sub For i = 2 To k s = s + darray(i) If m darray(i) Then n = darray(i) Next i End Sub,1. 按地址传递 VB默认的数据传递方式 按地址传递(关键字ByRef):把实参变量的内存地址传递给被调过程(如Sub过程),即形参与实参使用相同的内存地址单元,这样通过过程就可以改变变量本身的值 2. 按值传递 按值传递(关键字ByVal):通过常量传递实际参数,即传递参数值而不是传递它的地址 因为通用过程不能访问实参的内存地址,因而在通用过程中对形参的任何操作都不会影响实参,
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号