第七章 过程(何国斌版本)

上传人:我*** 文档编号:137684806 上传时间:2020-07-11 格式:PPT 页数:60 大小:1.09MB
返回 下载 相关 举报
第七章 过程(何国斌版本)_第1页
第1页 / 共60页
第七章 过程(何国斌版本)_第2页
第2页 / 共60页
第七章 过程(何国斌版本)_第3页
第3页 / 共60页
第七章 过程(何国斌版本)_第4页
第4页 / 共60页
第七章 过程(何国斌版本)_第5页
第5页 / 共60页
点击查看更多>>
资源描述

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

1、第七章 过程,7.1 通用过程 7.2 常用算法举例,7.1 通用过程 7.1.1 通用过程概念 7.1.2 参数传递 7.1.3 过程的嵌套与递归调用 7.1.4 变量、过程的作用域,引例:已知多边形的各条边的长度,要计算多边形的面积。,求三角形面积 的代码重复 使用了三次,解决办法:对于重复使用的程序段,可以自定义一个过程,供多次调用,7.1.1 通用过程概念及分类,Sub过程(子过程) Function过程(函数过程 ),7.1.1.1 Sub过程,1.Sub过程的定义 利用代码窗口直接定义通用过程 其格式为: Private | Public Static Sub 过程名 (参数表)

2、语句组 Exit Sub 语句组 End Sub,利用“工具”菜单下的“添加过程”命令定义过程,2. Sub过程的调用 直接使用过程名调用Sub过程,即把过程名作为一个语句来使用,格式如下: 过程名 参数列表 使用Call语句调用Sub过程。格式如下 Call 过程名 (参数列表),例2: 编写Sub过程求s=1!+2!+n!。,7.1.1.2 Function过程,1.Function过程的定义 Public|PrivateStatic Function 函数名 (形参表) As 数据类型 语句组 函数名 = 表达式 Exit Function 语句组 函数名 = 表达式 End Funct

3、ion,2.Function过程的调用,其格式为: 变量名=Function过程名(参数列表),例3: 编写Function过程求s=1!+2!+n!。,7.1.2 参数传递,7.1.2.1 形式参数与实际参数的概念,形式参数(简称形参)是指在定义过程时,在过程头(指Sub或Fuction语句行)的参数列表中出现的变量名和数组名,在过程体中被引用。 实际参数(简称实参)是调用过程时,在过程名后的参数列表中出现的变量名、数组名、常量或表达式。,7.1.2.2 参数按地址传递和按值传递 1.按地址传递参数 2.按值传递参数,1.按地址传递参数,例如,创建一个工程,编写一个交换两变量值的函数过程Sw

4、ap: Private Function Swap(x As Integer, y As Integer) Dim tmp As Integer tmp = x: x = y: y = tmp End Function,然后编写窗体的Load事件过程,调用该函数过程: Private Sub Form_Load() Dim a As Integer, b As Integer Show a = 10: b = 15 Print 调用交换函数过程前:a=; a, b=; b Swap a, b Print 调用交换函数过程后:a=; a, b=; b End Sub,2. 按值传递参数,例如,把

5、上面调用交换变量值的函数过程Swap修改为按值传递参数: Private Sub Form_Load() Dim a As Integer, b As Integer Show a = 10: b = 15 Print 调用交换函数过程前:a=; a, b=; b Swap (a), (b) 按值传递参数 Print 调用交换函数过程后:a=; a, b=; b End Sub,例: 用DoLoop循环编写一个求阶乘的函数过程Fact,并求1!+2!+n!的值。,7.1.2.3 传递数组参数(按地址传递),例: 编写一个Sub过程,实现对数组元素从小到大排序。,例7-7: 编写一个Sub过程,

6、实现对数组元素从小到大排序。,7.1.3 过程的嵌套与递归调用,7.1.3.1 过程的嵌套调用,7.1.3.2 过程的递归调用,使用递归调用的条件是: 可以把要解决的问题转化为一个新的问题,而这个新的问题的解法仍与原来的解法相同,只是所处理的对象有规律地递增或递减。 可以用上述转化过程使问题得到解决。 有一个明确的结束递归的条件,例7-9:采用递归方法计算n!(n0)。 分析:自然数n的阶乘可以递归定义为:,递归调用的执行过程分两部分进行:,Fact(4)=4*fact(3),Fact(3)=3*fact(2),Fact(2)=2*fact(1),Fact(1)=1*fact(0),Fact(

7、0)=1,Fact(4)=4*6,Fact(3)=3*2,Fact(2)=2*1,Fact(1)=1*1,边界条件,例7-10: 用递归调用方法求两个正整数n和m的最大公约数。 分析:通过辗转相除求两个整数最大化的方法,也可以采用递归调用方法来求解,递归终止的条件是余数为0。,7.1.4 变量、过程的作用域,7.1.4.1 代码模块的概念 1窗体模块 2标准模块 3类模块,7.1.4.2 变量的作用域 1过程级变量 2模块级变量,7.1.4.3 变量的生成期 1.动态变量 2.静态变量 例7-11,7.1.4.4 过程的作用域 例7-12 1模块级过程 2全局过程 3调用其他模块中的过程,7.

8、2 常用算法举例,例: 数制转换。编写一函数过程,实现一个十进制整数转换成216任意进制字符串。,例:顺序查找。,例: 加密和解密。 简单的加密算法:将每一个字母加一序数,例如加序数5,这时“A”“F”,“a”“f”,“B”“G”“Y”“D”,“Z”“E”。,The End,习题7 一单选题 1假设已通过下列Sub语句定义了Mysub过程。若要调用该过程,可以采用 语句。 Sub Mysub(x As Integer) A. s=Mysub(2) B. Mysub(32000) C. Print Mysub(120) D. Call ysub(40000),2要使过程调用后返回两个参数s和t,

9、下列的过程定义语句中,正确的是 。 A. Sub MySub1(ByRef s,ByVal t) B. Sub MySub1(ByVal s,ByVal t) C. Sub MySub1(ByRef s,ByRef t) D. Sub MySub1(ByVal s,ByRef t),3以下程序段运行后,单击窗体显示的结果是 。 Private Sub Form_Click() Dim b As Integer, y As Integer Call Mysub2(3, b) y = b Call Mysub2(4, b) Print y + b End Sub Public Sub Mysub2

10、(x, t) t = 0 For k = 1 To x t = t + k Next End Sub A. 13 B. 16 C. 19 D. 21,4. 下列程序段运行后,单击窗体时显示的结果是 。 Public Sub Mysub3(ByVal x As Integer, y As Integer) x = y + x y = x Mod y End Sub Private Sub Form_Click() Dim a As Integer, b As Integer a = 11: b = 22 Call Mysub3(a, b) Print a; b End Sub A. 33 11

11、B. 11 11 C. 11 22 D. 22 11,5下列程序运行后,单击窗体时显示的结果是 。 Public Sub Mysub4(x As Integer) x = 3 * x - 1 If x 5 Then x = x + 9 Print x; End Sub Private Sub Form_Click() x = 1 Mysub4 3 + x Print x End Sub A. 20 1 B. 20 14 C. 11 1 D. 11 14,6在窗体模块的通用段中声明变量时,不能使用 关键字。 A. Dim B. Public C. Private D. Static,7. 使用P

12、ublic Const语句声明一个全局的符号常量时,该语句应在 。 A. 事件过程中 B. 窗体模块的通用段中 C. 标准模块的通用段中 D. 通用过程中,8. 下列论述中,正确的是 。 A. 用户可以定义通用过程的过程名,也可以定义事件过程的过程名。 B. 一个工程中只能有一个Sub Main过程 C. 窗体的Hide方法和Unload方法的作用完全相同。 D. 在一个窗体文件中用Private定义的通用过程,可以被其他窗体调用,二填空题 1下列程序段运行后,单击窗体时显示的结果是 。 Public Function Fn1(x) As String k = Len(x) Fn1 = Mid

13、(x, 2, k - 2) End Function Private Sub Form_Click() Dim a As String, b As String, s As String a = ABCDEFG: b = 12345 s = Fn1(a) + Fn1(b) Print Fn1(Fn1(Fn1(s) End Sub,2在窗体上已经建立了3个文本框(Text1,Text2及Text3)和一个命令按钮(Command1),运行程序后单击命令按钮,则在文本框Text1中显示的内容是 ,在文本框Text2中显示的内容是 ,在文本框Text3中显示的内容是 。 Public Sub MyS

14、ub5(x, ByVal y) a = x + y x = a + y y = 2 * x End Sub Private Sub Command1_Click() Dim b As Integer, c As Integer b = 1: Call MySub5(b, c) c = a + b: Call MySub5(c, b) a = a + c Text1.Text = a Text2.Text = b Text3.Text = c End Sub,3运行下列程序段后,单击窗体,显示结果是 ,再次单击窗体时,显示结果是。去掉Static Temp语句后,单击窗体,显示结果是,再次单击窗

15、体时,显示结果是。 Private Function Fn2(t As Integer) Static Temp Temp = Temp + t Fn2 = Temp End Function Private Sub Form_Click() s = Fn2(1) + Fn2(2) + Fn2(3) Print s End Sub,4设在窗体(启动窗体)上有一个命令按钮Command1,在该按钮的Click事件过程中已经写了一些代码,完成一定的功能,现要使程序运行时自动执行该按钮的功能,请在空白处填入合适的语句。 Private Sub Form_Load() End Sub,5从键盘输入一个

16、十进制正整数(小于32767),利用过程To_hex的递归调用将该数转换为十六进制数。完善下列程序,使之求出正确结果。 Public Sub To_hex(n As Integer) Dim r As Integer, ch As String ch = 0123456789ABCDEF r = n Mod 16: n = n 16 If Then To_hex ( ) End If Print Mid( ); End Sub Private Sub Form_Load() Dim n As Integer Show n = Val(InputBox() To_hex (n) End Sub,上机编程练习6,1设计一个能检查字符串是否为数字字符串的通用过程,调用该过程检验3个框中输入的字符是否都是数字。如果都是数字,求这3个数

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

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

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