vb语言第7章教案

上传人:tian****1990 文档编号:74526137 上传时间:2019-01-28 格式:PPT 页数:40 大小:660KB
返回 下载 相关 举报
vb语言第7章教案_第1页
第1页 / 共40页
vb语言第7章教案_第2页
第2页 / 共40页
vb语言第7章教案_第3页
第3页 / 共40页
vb语言第7章教案_第4页
第4页 / 共40页
vb语言第7章教案_第5页
第5页 / 共40页
点击查看更多>>
资源描述

《vb语言第7章教案》由会员分享,可在线阅读,更多相关《vb语言第7章教案(40页珍藏版)》请在金锄头文库上搜索。

1、第 7 章,过程,本章主要内容,第7章 过 程,退出,前面已经使用了很多过程,例如 按钮事件过程、窗体装载事件过程等。 过程是完成某种特殊功能的一组独立的程序代码。 VB应用程序是由过程组成的。两大类过程: 事件过程 Sub过程 通用过程 Function过程 事件过程是VB应用程序的主体 通用过程是独立于事件过程之外,可供其他过程调用的程序段,Private Sub Command1_Click() End Sub,Private Sub Form_Load() End Sub,过程有两个重要作用:一是把一个复杂的任务分解为若干个小任务,可以用过程来表达,从而使任务更易理解,更易实现,将来更

2、易维护;二是代码重用,使同一段代码多次复用。,过程的作用,过程调用示例 把相同的任务编成相对独立的“子过程” 当事件过程需要执行这个任务时,可使用调用语句(如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 程序运行结果 ,Priva

3、te Sub mysub1(n) Print String(n, “*“) End Sub Private Sub mysub2() Print “*“; Tab(30); “*“ End Sub,7.1.1 Sub过程,例7.1,参数n,无参数,1. Sub过程定义格式: PrivatePublic Static Sub 过程名(参数表) 语句块 Exit Sub End Sub 2. 调用Sub过程有以下两种方法: (1) 使用Call语句。格式: Call 过程名(实参表) (2) 直接使用过程名,格式: 过程名实参表 例如,调用名为mysub1的过程: Call mysub1(30)

4、mysub1 30,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! =“; s End Sub 程序运行结果: 5! + 10! 3628920,Private Sub Jc(n As Integer, t As Long) Dim i As Integer

5、t = 1 For i = 1 To n t = t * i Next i End Sub 注意参数n及t的调用情况,例7.2 计算5! + 10!,例7.2,1. Function过程定义格式: Private | Public | Static Function 函数名(参数表) As 数据类型 语句块 函数名表达式 Exit Function End Function 2. Function过程的调用方法: 一般采用直接调用的方法 像使用VB内部函数一样,只需写出函数名和相应的参数即可 例如: s = Max(a, b) Print Max(s, c),7.1.2 Function过程

6、能从过程中直接返回一个值,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(InputBo

7、x(“输入第三个数“) 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 If End Function,例7.3 输入三个数,求出它们的最大数,例7.3,调用,调用,通用过程(Sub/Function)过程可以保存在两种模块中: 窗体模块(.frm)和标准模块(.bas) (1) 在窗体模块中创建通用过程: 可以在代码窗口中直接键入来创建Sub过程 选择“工具”菜单中的“添加过程”命令 (2) 在标准模块中创建通用过程

8、: 选择“工程”菜单中的“添加模块”命令 保存为一个独立的“.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,在窗体上已经建立了一个文本框Tx

9、t1和一个 命令按钮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 a = 3 End Sub A. 16 B. 17 C. 15 D. 9,请回答问题,想一想,思考题,答案:B,参数传递可以实现调用过程和被调过程之间的信息交换

10、两种方式:按值传递和按地址传递 7.2.1 形参与实参 形式参数(简称形参) 在被调过程中的参数。出现在Sub过程和Function过程中 形式参数可以是变量名和数组名 实际参数(简称实参) 在调用过程中的参数。过程调用时实参数据会传递给形参 形参表和实参表中的对应变量名可以不同,但实参和形参的个数、顺序以及数据类型必须相同,7.2 参数传递,定义过程和调用过程的示例: 调用过程:Call Mysub(100, “计算机“ , 1.5) 定义过程:Sub Mysub(t As Integer,s As String,y As Single) “形实结合”是按照位置结合的,即第一个实参值(100

11、)传送给第一个形参t,第二个实参值(“计算机”)传送给第二个形参s,第三个实参值(1.5)传送给第三个形参y。 数组可以作为形参出现在过程的形参表中,1. 按地址传递:关键字ByRef (或缺省)。形参与实参使用相同的内存地址单元,这样通过过程就可以改变变量本身的值 2. 按值传递:按值传递(关键字ByVal)。传递参数值而不是传递它的地址,在通用过程中对形参的任何操作都不会影响实参,7.2.2 按地址传递和按值传递,按地址传递 t = 10 示例 Call test2(t) Print t ( t 值为5) t与s是 Sub test2(s As Integer) 同一个变量 s = s -

12、 5 End Sub,调用时, t 值传给 s,返回时, s 值传给 t 双向传值,按值传递 x = 10 示例 Call test1(x) Print x (x 值为10) y与x是 Sub test1(ByVal y As Integer) 不同变量 y = y + 5 End Sub,调用时, x 值传给 y,返回时, y 值不传给 x 单向传值,设置两个通用过程Test1和Test2,分别按值传递和按地址传递 Private Sub Form_Load() Dim x As Integer Show x = 5 Print “执行test1前,x=“; x Call test1(x)

13、Print “执行test1后,test2前,x=“; x Call test2(x) Print “执行test2后,x=“; x End Sub,Sub test1(ByVal t As Integer) t = t + 5 End Sub Sub test2(s As Integer) s = s - 5 End Sub,运行结果 执行Test1前,x=5 执行Test1后,Test2前,x=5 执行Test2后,x=0,例7.4 参数传递方式示例,例7.4,按值传递,按地址传递,在一个过程(Sub过程和Function过程)中调用另外一个过程。 例7.5 输入两个数n、m,求组合数Cn

14、m 的值 Cnm =,n! m!(n-m)!,7.3 过程的嵌套调用,例7.5,Private Sub Form_Load() Show m = Val(InputBox(“输入m的值“) n = Val(InputBox(“输入n的值“) If m n Then MsgBox “输入数据错误“, 0, “检查错误“ End End If Print “组合数是:“; Calcomb(n, m) End Sub Private Function Calcomb(n, m) Calcomb = Jc(n) / (Jc(m) * Jc(n - m) End Function Private Fun

15、ction Jc(x) t = 1 For i = 1 To x t = t * i Next i Jc = t End Function,程序中,采用了过程的嵌套调用方式。在事件过程Form_Load()中调用了Calcomb过程,而在Calcomb过程中调用了三次jc过程。,调 用,调 用,过程的嵌套调用,a=Calcomb(n,m),b=Jc(n),事件过程 Form_Load,Function过程 Calcomb(n,m),Function过程 Jc(x),变量的作用域(空间)和生存期(时间) 7.4.1 代码模块的概念 应用程序包括窗体文件(.frm)、模块文件(.bas)和类模块(.cls),7.4 变量的作用范围,局部变量、模块级变量和全局变量 1. 局部变量 在一个过程内部用Dim或Static声明的变量称为局部变量。只能在本过程中有效。在一个窗体中,不同过程中定义的局部变量可以同名。例如,在一个窗体中定义 Private Sub Command1_Click() Dim Sum As Integer Sum = 1 . . . End Sub Private Sub Command2_Click() Dim Sum As Si

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

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