过程PPT教学课件

上传人:文*** 文档编号:447639 上传时间:2018-10-22 格式:PPT 页数:29 大小:749.50KB
返回 下载 相关 举报
过程PPT教学课件_第1页
第1页 / 共29页
过程PPT教学课件_第2页
第2页 / 共29页
过程PPT教学课件_第3页
第3页 / 共29页
点击查看更多>>
资源描述
过程的定义,过程的调用,数组参数的传递送,变量与过程的作用范围的作用范围,嵌套及递归调用,1.5 过 程,1.引例 编写一个两个数交换的过程供多次调用。 Swap (x,y)子过程的定义 主调程序调用Swap子过程 Public Sub Swap(x, y) Private Sub Form_Click() Dim t Dim a, bt = x a = 10x = y b = 20y = t Call Swap (a, b) End Sub Print “a=“;a,“,b=“; b End Sub,一、 过程的定义,将程序分割成较小的逻辑部件就可以简化程序设计任务,称这些部件为过程,它们可以变成增强和扩展 Visual Basic 的构件。VB中有两类过程,一类是内部过程,另类是外部过程,每类过程又可分为函数过程和事件过程。内部过程是由系统提供的、不需要用户编写、可直接用过程名调用的程序段。外部过程是由用户根据自己的需要定义和编写的、可供事件过程多次调用的程序段。过程的使用,一方面将大的程序分成离散的逻辑单元,方便程序的调试;另一方面,方便了其他的程序或过程的调用。,1. 利用“添加过程”对话框定义,图7-1 “添加过程”对话框,1.选择”工具”菜单中的”添加过程”命令,打开”添加过程”对话框,如图7-1所示。 2. 按图设置名称、类型及范围。,操作提示,2. 直接在代码窗口定义在窗体或标准模块的代码窗口之外,输入Sub子过程名或 Function函数过程即可。 函数过程的语法格式为:Public|Private|FriendStaticFunction()As函数过程名 =Exit Function = End Function,子过程的语法格式为:Private | Public | Friend Static Sub () Exit Sub End Sub,二、过程的调用,1. Sub过程的调用 使用Call语句调用过程Call语句的格式为:Call 过程名() 将过程名作为语句使用如果省略 Call 关键字而直接将过程名作为语句使用,也必须省略 外面的括号。,函数过程的调用使用Call语句调用Function过程同Sub过程一样,同样可以使用Call语句调用Function过程,这时的Function过程返回值的过程实质上相当于Sub过程,调用后,将返回所有在参数列表中列出的参数的值。使用函数名过程调用Function过程与Sub过程不同,不能单独将Function过程作为一个语句使用。,3. 编程举例例7-1:分别用函数过程和ub过程编写求三角形的面积的程序。(说明:边长从三个文本框中输入,如果符合构成三角形的条件,则调用该过程计算面积),Private Function triarea(x As Double, y As Double, z As Double) as doubleDim s As Double, area As Doubles = (x + y + z) / 2area = Sqr(s - x) * (s - y) * (s - z) * s)triarea = area End Function Private Sub Command1_Click()Dim a As Double, b As Double, c As Double, s As Doublea = Val(Text1.Text): b = Val(Text2.Text): c = Val(Text3.Text)If a + b c And b + c a And c + a b ThenPicture1.Print “ 面积 =“; triarea(a, b, c)elsePicture1.Print “ 不能构成三角形 “endifEnd Sub,定义函数过程 triarea,调用函数triarea,Private Sub triarea(area As Double, x As Double, y As Double, z As Double)Dim s As Doubles = (x +y + z) / 2area = Sqr(s - x) * (s - y) * (s - z) * s) End Sub Private Sub Command1_Click()Dim a As Double, b As Double, c As Double, s As Doublea = Val(Text1.Text): b = Val(Text2.Text): c = Val(Text3.Text)If a + b c And b + c a And c + a b ThenCall triarea(s, a, b, c) 使用Call关键字,实际参数用括号括起来Picture1.Print “ 面积 =“; sElsePicture1.Print “ 不能构成三角形 “End If End Sub,定义sub过程 triarea,调用过程triarea,Sub过程和Function函数过程中的中的参数称为形式参数(简称形参),在程序中调用Sub过程和Function函数过程时中称为实际参数。过程调用的过程,就是实参与形参结合的过程。,三、 参数传送,1. 按位置传送按位置传送就是实参的次序与形参的次序应匹配,位置次序一一对应。如在例7-1中实参与形参按址结合的示意图见图7-2。,图7-2 实参与形参按址结合的示意图,(1) 形参与实参的传送方式,2. 指名传送 指名传送就是显式地指出与形参相结合的实参,将形参与实参用“:=”连接起来,这样,就不必要求形参与实参按位置次序一一对应。 如 Call mysub(a ,b (),“王大虎“ ,d ) 与 Call mysub(x:=a ,yarray:=b (),zstr:=“王大虎“ ,w:=d ) 以及 Call mysub(yarray:=b (),x:=a ,w:=d ,zstr:=“王大虎“) 是等价的。,1. 传址vb在参数传递过程中,将实参的地址传送给被调用过程的形参,使形参与实参具有相同的地址,从而达到实参与形参共享存储单元。 在VB中,默认情况下实参与形参是按传址方式传递数据的。,1.5.2 传址与传值,Private Sub triarea(area As Double, x As Double, y As Double, z As Double)Dim s As Doubles = (x +y + z) / 2area = Sqr(s - x) * (s - y) * (s - z) * s)x=100:y=200:z=150 End Sub说明:在过程体中修改形参x,y,z则对应的实参a,b,c分别改变为100,200,150,2. 传值传值就是通过传送实参的值而不是传送地址的方法给被调用过程中的形参。系统把需要传送的实参复制到一个临时单元中,然后再把该临时的地址传送给形参。这样,被调用的过程并没有访问实参的地址,因而也就不会改变实参的值。在VB中,区分传址与传值的标志为:传值时,在形参前加上ByVal,传址时,在形参前加上ByDef或者是默认。,3. 传送方式的选择传址方式的效率比传值要高,但形参并不是一个真正的局部变量,有可能对程序的运行产生干扰。传值方式的效率虽然较低,但形参是一个真正的局部变量,不会对程序的运行产生干扰。,实参为数组时,参数传送采用“按地址传送”方式下面通过一个例子来说明: 例7-求数组元素的和。, sums End Sub,&函数过程: Public Function sum(p()Dim m%, n%For m = LBound(p, 1) To UBound(p, 1)For n = LBound(p, 2) To UBound(p, 2)sum = sum + p(m, n)Next nNext m End Function,1.5.4. 过程的作用域,1. Vb工程文件的组成,四、 变量与过程的作用范围,窗体/模块级过程,在某个窗体或标准模块中定义的Sub过程或函数过程前加上Private关键字,则该过程只能被包含过程的窗体或标准模块中的过程调用。,全局级过程,在某个窗体或标准模块中定义的Sub过程或函数过程前加上Pulbic关键字或缺省,则该过程为全局级过程,可以被应用程序的所有窗体或标准模块中的过程调用,private,public,public,private,private,public,public,private,private,public,public,private,private,public,public,private,Vb应用程序,窗体模块,标准模块,FUNCTION,SUB,注意:跨窗体或跨模块调用全局过程时需加过程名 如:call form2.sub2 call module2.sub1,. 过程作用域图示,1.5.4.2 变量的作用域,1局部变量(动态变量)局部变量是只能在一个函数或过程中访问的变量,其他过程或函数不能访问此变量的数据。,2. 窗体/模块级变量,窗体/模块级变量是指在一个窗体/模块的任何过程之外,即在“通用声明”段中用Dim或Private语句声明的变量。,3. 全局变量,全局变量是指在一个模块的任何过程之外声明的变量,即在“通用声明”段中用Public语句声明的变量。,Vb应用程序,窗体模块,标准模块,FUNCTION,SUB,FUNCTION,SUB,FUNCTION,SUB,FUNCTION,SUB,声明部分,声明部分,声明部分,声明部分,Private x as integer 或Dim x as integer,public x as integer,Private x as integer 或Dim x as integer,dim,dim,dim,dim,. 变量作用域图示,1.5.4.3 变量的生存期,1. 动态变量动态变量指程序执行到变量所在的过程时,系统才根据变量的类型给分配存储单元,程序执行退出过程后,该变量所分配的存储单元被释放,变量的值不保留。,Static As Static Function ()As Static Sub (),在过程名前加上Static关键字,表明该过程的变量都是静态变量。,2. 静态变量静态变量指程序执行退出过程后,该变量所分配的存储单元不被释放,变量的值仍保留,再次执行该过程时,静态变量的值仍然存在,可以继续使用。其定义形式如下:,例7-3:下面程序中有三个同名的变量wv,通过三次运行看结果的变化。 Public wv As Integer Private Sub Command1_Click()Dim wv As Integerwv = wv + 3Call wholesubPrint “Command1事件过程的wv=“; wv, “全局的wv=“; Form1.wv End Sub Public Sub wholesub()Static wv As Integerwv = wv + 1Form1.wv = wv + 5Print “wholesub过程的wv=“; wv, “全局的wv=“; Form1.wv End Sub Private Sub Form_Load()wv = 1 End Sub,点击三次command1后的运行结果如下,五、 嵌套及递归调用,1. 过程的嵌套调用,Call sub1,Call sub2,sub1,sub2,图示说明了嵌套调用的过程,通俗地讲,递归就是一个过程调用过程本身。在递归调用中,一个过程执行的某一步可能要用到它自身上面调用的结果。递归分为两种类型,一种是直接递归,即在过程中调用过程本身;种是间接递归,即间接地调用一个过程。,2. 递归调用,Call sub2,sub1,sub2,Call sub1,Call sub1,sub1,间接,直接,例:求阶乘Factorial(n)=n!的函数(本例求170内的阶乘)Private Sub Command1_Click()Dim myn As Doublemyn = InputBox(“请输入小于171的数“)If myn =0ThenPrint myn factorial(myn)End If End Sub Public Function factorial(n As Double) As DoubleIf n 1 Thenfactorial = n * factorial(n - 1)Elsefactorial = 1End If End Function,例7.1分别编一计算某级数部分和的子过程和函数过程,并调用。级数为: 精度为:,函数过程实现求部分级数和 Function jishu1(x!, eps#) As Double Dim n%, s#, t#n = 1: s = 0: t = 1Do While (Abs(t) = eps)s = s + tt = t * x / nn = n + 1Loopjishu1 = s End Function,子过程实现求部分级数和 Sub jishu2(s#, x!, eps#)Dim n%, t# n = 1: s = 0: t = 1 Do While (Abs(t) = eps)s = s + tt = t * x / nn = n + 1 Loop End Sub,f1 = jishu1(2#, 0.000001) 调用函数过程 Call jishu2(f2, 2#, 0.000001) 调用子过程 或 jishu2 f2,2#,0.00001,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 中学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!