版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、7.1 通用过程7.2 常用算法举例 第七章 过程7.1 通用过程 7.1.1 通用过程概念 7.1.2 参数传递 7.1.3 过程的嵌套与递归调用 7.1.4 变量、过程的作用域第七章 过程 引例:已知多边形的各条边的长度,要计算多边形的面积。第七章 过程通用过程a ab bd df fg ge ec cs3s3s2s2s1s1求三角形面积的代码重复使用了三次 解决办法:对于重复使用的程序段,可以自定义一个过程,供多次调用第七章 过程通用过程 7.1.1 通用过程概念及分类第七章 过程通用过程 Sub过程(子过程) Function过程(函数过程 ) 7.1.1.1 Sub7.1.1.1 S
2、ub过程过程第七章 过程通用过程1.Sub过程的定义 利用代码窗口直接定义通用过程其格式为: Private | Public Static Sub 过程名 (参数表) 语句组 Exit Sub 语句组 End Sub利用“工具”菜单下的“添加过程”命令定义过程第七章 过程通用过程2. Sub过程的调用 直接使用过程名调用Sub过程,即把过程名作为一个语句来使用,格式如下: 过程名 参数列表 使用Call语句调用Sub过程。格式如下 Call 过程名 (参数列表)第七章 过程通用过程例2: 编写Sub过程求s=1!+2!+n!。第七章 过程通用过程7.1.1.2 Function7.1.1.2
3、 Function过程过程1.Function过程的定义 Public|PrivateStatic Function 函数名 (形参表) As 数据类型 语句组 函数名 = 表达式 Exit Function 语句组 函数名 = 表达式 End Function第七章 过程通用过程2.Function过程的调用 第七章 过程通用过程 其格式为: 变量名=Function过程名(参数列表)例3: 编写Function过程求s=1!+2!+n!。第七章 过程通用过程7.1.2 7.1.2 参数传递参数传递第七章 过程通用过程(参数传递)7.1.2.1 7.1.2.1 形式参数与实际参数的概念形式参
4、数与实际参数的概念第七章 过程通用过程(参数传递) 形式参数(简称形参)是指在定义过程时,在过程头(指Sub或Fuction语句行)的参数列表中出现的变量名和数组名,在过程体中被引用。 实际参数(简称实参)是调用过程时,在过程名后的参数列表中出现的变量名、数组名、常量或表达式。7.1.2.2 7.1.2.2 参数按地址传递和按值传递参数按地址传递和按值传递 1.1.按地址传递参数按地址传递参数 2.2.按值传递参数按值传递参数第七章 过程通用过程(参数传递)1.按地址传递参数 例如,创建一个工程,编写一个交换两变量值的函数过程Swap: Private Function Swap(x As I
5、nteger, y As Integer) Dim tmp As Integer tmp = x: x = y: y = tmpEnd 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=; bEnd Sub第七章 过程通用过程(参数传递)2. 按值传递参数 例如,把上面调用
6、交换变量值的函数过程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=; bEnd Sub第七章 过程通用过程(参数传递)例: 用DoLoop循环编写一个求阶乘的函数过程Fact,并求1!+2!+n!的值。第七章 过程通用过程(参数传递)7.1.2.3 传递数组参数(按地址传递)第七章 过程通用过程(参数传递) 例例:
7、: 编写一个编写一个SubSub过程,实现对数组元素过程,实现对数组元素从小到大排序。从小到大排序。例例7-7: 7-7: 编写一个编写一个SubSub过程,实现对数组元素过程,实现对数组元素从小到大排序。从小到大排序。第七章 过程通用过程(参数传递)7.1.3 7.1.3 过程的嵌套与递归调用过程的嵌套与递归调用第七章 过程通用过程(过程的嵌套与递归调用)7.1.3.1 7.1.3.1 过程的嵌套调用过程的嵌套调用第七章 过程通用过程(过程的嵌套与递归调用)7.1.3.2 7.1.3.2 过程的递归调用过程的递归调用 第七章 过程通用过程(过程的嵌套与递归调用)使用递归调用的条件是: 可以把
8、要解决的问题转化为一个新的问题,而这个新的问题的解法仍与原来的解法相同,只是所处理的对象有规律地递增或递减。 可以用上述转化过程使问题得到解决。 有一个明确的结束递归的条件 例例7-9:7-9:采用递归方法计算采用递归方法计算n!(nn!(n0)0)。分析:自然数分析:自然数n n的阶乘可以递归定义为:的阶乘可以递归定义为:0)!1(1 , 01!nnnnn第七章 过程通用过程(过程的嵌套与递归调用)递归调用的执行过程分两部分进行:Fact(4)=4Fact(4)=4* *fact(3)fact(3)Fact(3)=3Fact(3)=3* *fact(2)fact(2)Fact(2)=2Fac
9、t(2)=2* *fact(1)fact(1)Fact(1)=1Fact(1)=1* *fact(0)fact(0)Fact(0)=1Fact(0)=1Fact(4)=4Fact(4)=4* *6 6Fact(3)=3Fact(3)=3* *2 2Fact(2)=2Fact(2)=2* *1 1Fact(1)=1Fact(1)=1* *1 1边界条件边界条件第七章 过程通用过程(过程的嵌套与递归调用)例7-10: 用递归调用方法求两个正整数n和m的最大公约数。 分析:通过辗转相除求两个整数最大化的方法,也可以采用递归调用方法来求解,递归终止的条件是余数为0。第七章 过程通用过程(过程的嵌套与递
10、归调用)7.1.4 7.1.4 变量、过程的作用域变量、过程的作用域第七章 过程通用过程(变量、过程的作用域)7.1.4.1 7.1.4.1 代码模块的概念代码模块的概念 1 1窗体模块窗体模块 2 2标准模块标准模块 3 3类模块类模块第七章 过程通用过程(变量、过程的作用域)7.1.4.2 7.1.4.2 变量的作用域变量的作用域 1 1过程级变量过程级变量 2 2模块级变量模块级变量7.1.4.3 7.1.4.3 变量的生成期变量的生成期 1. 1.动态变量动态变量 2.2.静态变量静态变量例例7-117-11第七章 过程通用过程(变量、过程的作用域)7.1.4.4 7.1.4.4 过程
11、的作用域过程的作用域 例例7-12 7-12 1 1模块级过程模块级过程 2 2全局过程全局过程3 3调用其他模块中的过程调用其他模块中的过程7.2 7.2 常用算法举例常用算法举例 第七章 过程通用过程(常用算法举例)例: 数制转换。编写一函数过程,实现一个十进制整数转换成216任意进制字符串。第七章 过程通用过程(变量、过程的作用域)例:顺序查找。例:顺序查找。第七章 过程通用过程(变量、过程的作用域)例: 加密和解密。 简单的加密算法:将每一个字母加一序数,例如加序数5,这时“A”“F”,“a”“f”,“B”“G”“Y”“D”,“Z”“E”。第七章 过程通用过程(变量、过程的作用域)习题
12、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,下列的过程定义语句中,正确的是 。 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
13、 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 + bEnd SubPublic Sub Mysub2(x, t) t = 0 For k = 1 To x t = t + k NextEnd Sub A. 13 B. 16 C. 19 D. 214. 4. 下列程序段运行后,单击窗体时显示的结果下列程序段运行后,单击窗体时显示的结果是是
14、。Public Sub Mysub3(ByVal x As Integer, y As Integer)Public Sub Mysub3(ByVal x As Integer, y As Integer) x = y + x x = y + x y = x Mod y y = x Mod yEnd SubEnd SubPrivate Sub Private Sub Form_ClickForm_Click()() Dim a As Integer, b As Integer Dim a As Integer, b As Integer a = 11: b = 22 a = 11: b = 2
15、2 Call Mysub3(a, b) Call Mysub3(a, b) Print a; b Print a; bEnd SubEnd Sub A. 33 11 B. 11 A. 33 11 B. 11 1111 C. 11 22 D. 22 11 C. 11 22 D. 22 115 5下列程序运行后,单击窗体时显示的结果下列程序运行后,单击窗体时显示的结果是是 。Public Sub Mysub4(x As Integer)Public Sub Mysub4(x As Integer) x = 3 x = 3 * * x - 1 x - 1 If x 5 Then x = x + 9
16、If x 5 Then x = x + 9 Print x; Print x;End SubEnd SubPrivate Sub Private Sub Form_ClickForm_Click()() x = 1 x = 1Mysub4 3 + xMysub4 3 + x Print x Print xEnd SubEnd Sub A. 20 1 B. 20 14 A. 20 1 B. 20 14 C. 11 1 D. 11 14 C. 11 1 D. 11 146 6在窗体模块的通用段中声明变量时,不能在窗体模块的通用段中声明变量时,不能使用使用 关键字。关键字。 A. Dim A. Di
17、m B. Public B. Public C. Private C. Private D. Static D. Static第七章 过程通用过程(习题)7. 7. 使用使用Public ConstPublic Const语句声明一个全局的符语句声明一个全局的符号常量时,该语句应在号常量时,该语句应在 。 A. A. 事件过程中事件过程中 B. B. 窗体模块的通用段中窗体模块的通用段中 C. C. 标准模块的通用段中标准模块的通用段中 D. D. 通用过程中通用过程中第七章 过程通用过程(习题)8. 下列论述中,正确的是 。 A. 用户可以定义通用过程的过程名,也可以定义事件过程的过程名。
18、B. 一个工程中只能有一个Sub Main过程 C. 窗体的Hide方法和Unload方法的作用完全相同。 D. 在一个窗体文件中用Private定义的通用过程,可以被其他窗体调用第七章 过程通用过程(习题)二填空题1下列程序段运行后,单击窗体时显示的结果是 。 Public Function Fn1(x) As String k = Len(x) Fn1 = Mid(x, 2, k - 2)End FunctionPrivate Sub Form_Click() Dim a As String, b As String, s As String a = ABCDEFG: b = 12345
19、s = Fn1(a) + Fn1(b) Print Fn1(Fn1(Fn1(s)End Sub2在窗体上已经建立了在窗体上已经建立了3个文本框个文本框(Text1,Text2及及Text3)和一和一个命令按钮个命令按钮(Command1),运行程序后单击命令按钮,则在文,运行程序后单击命令按钮,则在文本框本框Text1中显示的内容是中显示的内容是 ,在文本框,在文本框Text2中显示的中显示的内容是内容是 ,在文本框,在文本框Text3中显示的内容是中显示的内容是 。 Public Sub MySub5(x, ByVal y) a = x + y x = a + y y = 2 * xEnd
20、SubPrivate 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 = cEnd Sub3运行下列程序段后,单击窗体,显示结果是运行下列程序段后,单击窗体,显示结果是 ,再次单击窗体时,显示结果是,再次单击窗体时,显示结果是。去掉。去掉Static Temp语句后,单击窗体,显示结果语句后,单击窗体,显示结果是是,再次单击窗体时,
21、显示结果,再次单击窗体时,显示结果是是。 Private Function Fn2(t As Integer) Static Temp Temp = Temp + t Fn2 = TempEnd FunctionPrivate Sub Form_Click() s = Fn2(1) + Fn2(2) + Fn2(3) Print sEnd Sub4 4设在窗体设在窗体( (启动窗体启动窗体) )上有一个命令按钮上有一个命令按钮Command1Command1,在该按钮的,在该按钮的ClickClick事件过程中已经事件过程中已经写了一些代码,完成一定的功能,现要使程序写了一些代码,完成一定的功
22、能,现要使程序运行时自动执行该按钮的功能,请在空白处填运行时自动执行该按钮的功能,请在空白处填入合适的语句。入合适的语句。Private Sub Private Sub Form_LoadForm_Load()() End SubEnd Sub5从键盘输入一个十进制正整数从键盘输入一个十进制正整数(小于小于32767),利用过程,利用过程To_hex的递归调用将该数转换为十六进制数。完善下列程序,的递归调用将该数转换为十六进制数。完善下列程序,使之求出正确结果。使之求出正确结果。Public Sub To_hex(n As Integer) Dim r As Integer, ch As St
23、ring ch = 0123456789ABCDEF r = n Mod 16: n = n 16 If Then To_hex ( ) End If Print Mid( );End SubPrivate Sub Form_Load() Dim n As Integer Show n = Val(InputBox() To_hex (n)End Sub上机编程练习61设计一个能检查字符串是否为数字字符串的通用过程,调用该过程检验3个框中输入的字符是否都是数字。如果都是数字,求这3个数字之和并把结果显示在第4个文本框中。2编写一个标准模块,该模块包含一个能比较3个数大小和送回大数的Sub过程。
24、调用该过程来求6个数的最大数。利用文本框控件数组和文本框来分别输入数据和输出最大数。3窗体上含有两个文本框窗体上含有两个文本框(Textl及及Text2)、一个列表框一个列表框(Listl)和一个命令按钮和一个命令按钮(Commandl)。程序运行后,用户在文本。程序运行后,用户在文本框框Textl中输入一个字符串,其中包含若中输入一个字符串,其中包含若干个英文单词,单词之间用空格分隔。干个英文单词,单词之间用空格分隔。单击命令按钮后,分解出这些单词,并单击命令按钮后,分解出这些单词,并依次显示在列表框依次显示在列表框Listl中,单词个数显中,单词个数显示在文本框示在文本框Text2。完善下
25、列程序代码。完善下列程序代码。Private Sub Command1_Click() Dim s As String s = Trim(Text1.Text) List1.Clear n = Getword(s) Text2.Text = nEnd SubPublic Function Getword(s As String) As Integer n = 0 Do While n = Len(s) p = InStr(s, Space(1) n = n + 1 If p = 0 Then List1.AddItem s s = Else List1.AddItem Left(s, p -
26、1) s = Mid(s, p + 1) End If Loop Getword = nEnd Function4用递归方法编写计算用递归方法编写计算xn的过程的过程(n为正为正整数整数),精确到小数点后,精确到小数点后2位。位。5创建一个工程,由创建一个工程,由3个窗体个窗体Forml,Form2和和Form3组成。组成。Forml用于输入用户名和密码用于输入用户名和密码(假设用假设用户名和密码分别为户名和密码分别为“username”和和“password”),输,输入正确时显示入正确时显示Form2,连续三次输入错误时显示,连续三次输入错误时显示Form3。在。在Forml中单击中单击“结束结束”按钮时结束程序运按钮时结束程序运行。行。Form2中用文本框显示中用文本框显示“欢迎你使用本系统欢迎你使用本系统”,单击单击“返回返回”按钮回到按钮回到Forml;Form3中用文本框显中用文本框显示示“对不起,请向管理员查询对不起,请向管理员查询”,单击,单击“退出退出”按按钮结束程序运行。钮结束程序运行。6创建一个工程,由两个窗体创建一个工程,由两个窗体Forml和和Form2组成,用户界面如图组成,用户界面如图7-36
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 播商课程设计
- 边缘计算安全传输技术方案课程设计
- Agent框架定制开发课程设计
- RFM模型客户价值分析关键策略课程设计
- 基于图嵌入的欺诈交易检测核心思想课程设计
- 臭豆腐制作课程设计
- 律师助理岗位招聘考试试卷及答案
- 2026年中学新时代教师职业行为十项准则学习课件
- 城乡夏季全域防灾体系建设
- 定制家具工程招标方案范本
- 《自动化综合实训》高职电类专业全套教学课件
- 【MOOC】《现代管理科学基础》(南京邮电大学)章节中国大学慕课答案
- 私人股权担保协议书
- 我们的组织我了解(课件)-二年级上册综合实践活动苏少版
- LY/T 3396-2024植物新品种近似品种筛选指南
- 制造业工厂经营分析报告
- 《元器件焊接》课件
- 煤系固废利用课件
- 审计人员的沟通与心理调适
- 原创蓝色矢量安徽省政区地图模板可编辑中国地图PPT模板
- 田麦久运动训练学
评论
0/150
提交评论