ImageVerifierCode 换一换
格式:PPT , 页数:54 ,大小:617KB ,
资源ID:10289827      下载积分:10 金币
验证码下载
登录下载
邮箱/手机:
图形码:
验证码: 获取验证码
温馨提示:
支付成功后,系统会自动生成账号(用户名为邮箱或者手机号,密码是验证码),方便下次登录下载和查询订单;
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/10289827.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请。


权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4009-655-100;投诉/维权电话:18658249818。

注意事项

本文(Visual Basic 程序设计基础:第四章 函数与过程.ppt)为本站上传会员【可****】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

Visual Basic 程序设计基础:第四章 函数与过程.ppt

1、单击此处编辑母版标题样式,gejinhuan,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,第四章 函数与过程,2,4.1,过程的编写与调用,内部函数是,VB,事先定义好的函数,我们可以直接拿过来用,但内部函数并不能解决所有的问题,有很多地方需要我们亲自动手,编写,自定义的函数或者过程。,过程,函数,子过程,内部函数,自定义函数,事件过程,自定义子过程,2025/5/16 周五,3,gejinhuan,自定义函数的引入,Private Sub Form_click(),Dim a As Integer,temp As Integer,a=InputBox(please in

2、put a number),temp=1,For i=2 To a,temp=temp*i,Next i,Print temp,End Sub,2025/5/16 周五,4,gejinhuan,自定义函数的引入,Private Sub Form_click(),Dim a As Integer,temp As Long,a=InputBox(please input a number),temp=fact(a),Print temp,End Sub,Private Function fact(k As Integer)As Long,Dim i As Byte,fact=1,For i=2 T

3、o k,fact=fact*i,Next i,End Function,5,4.1.1,自定义函数的编写与调用,定义方式,Function,函数名,(,形参列表,),As,End Function,:,Public|PrivateStatic,,,不能是,Dim,。,(,形参列表,),:,表示在调用时传递给函数的参数的变量列表,,圆括号必须要有。有返回类型,关键字,Function,与,End Function,相呼应。,形参列表,的声明语法:,ByVal|ByRef,变量名,As,类型,6,4.1.1,自定义函数,Private Sub command1_Click(),Dim m&,n&,

4、c&,t&,i%,Dim FacN&,FacM&,FacNM&,m=Val(InputBox(,请输入,m,的值,组合公式,),n=Val(InputBox(,请输入,n,的值,组合公式,),If n m Then,t=n,n=m,m=t,End If,FacN=1,For i=1 To n,FacN=FacN*i,Next i,FacM=1,For i=1 To m,FacM=FacM*i,Next i,FacNM=1,For i=1 To n-m,FacNM=FacNM*i,Next i,c=FacN/(FacM*FacNM),label1.Caption=Str(c),End Sub,7

5、可以将代码中功能重复的部分用自定义函数来编写,这将大大提高编程的效率。,Private Sub CmdOk_Click(),Dim m&,n&,c&,t&,m=Val(InputBox(,请输入,m,的值,组合公式,),n=Val(InputBox(,请输入,n,的值,组合公式,),If n m Then,t=n,n=m,m=t,End If,c=,Fac(n)/(Fac(m)*Fac(n-m),LblResult.Caption=Str(c),End Sub,Private Function,Fac(ByVal k As Long)As Long,Dim F&,i%,F=1,For i=1

6、 To k,F=F*i,Next i,Fac=F,End Function,4.1.1,自定义函数,调用方式,2025/5/16 周五,8,gejinhuan,实例,4-3,显示,1,1000,之间的素数。,要求编制函数过程,用于判断一个整数是否是素数。,2025/5/16 周五,9,gejinhuan,自定义过程(,SUB,)的引入,注意,Msgbox,函数的用法,=MsgBox(prompt,,,button,,,title,),比如:,i=MsgBox(,“,请关机,“,0+64+0,”,关机确认,),如果有时候,并不需要用到返回值,,仅仅是一个操作过程的话,那就引入自定义过程。,比如:

7、MsgBox,“,请关机,“,0+64+0,”,关机确认,10,Sub,子过程名,(,形参列表,),End Sub,:,Public|PrivateStatic,,不能是,Dim,。,(,形参列表,),:,表示在调用时传递给子过程的参数的变量列表,,圆括号必须要有。没有返回类型,关键字,Sub,与,End Sub,相呼应。,形参列表,的声明语法:,ByVal|ByRef,变量名,As,类型,4.1.2,自定义子过程(,SUB,),Private Sub swap(a,b),Dim t,t=a,a=b,b=t,End Sub,11,4.1.2,自定义子过程,Private Sub Form_C

8、lick(),Dim First!,Second!,Temp!,First=InputBox(,请输入第一个数:,First),Second=InputBox(,请输入第二个数:,Second),Print,初始值:,First=;First,Second=;Second,If First Second Then,swap First,Second,End If,Print,交换后:,First=;First,Second=;Second,End Sub,Private Sub swap(a,b),Dim t,t=a,a=b,b=t,End Sub,12,4.1.2,自定义子过程(,SUB,)

9、调用方式,两种调用方式:,(1),子过程名 实参列表,(2),Call,子过程名 (实参列表),使用,Call,关键字时,参数两边要加圆括号。,省略,Call,关键字,则必须省略参数两边的圆括号。,13,自定义子过程与自定义函数的异同,区别:,(,1,)子过程以关键字,Sub,开始,函数以关键字,Function,开始。,(,1,)子过程没有返回值,没有类型;,函数有返回值,有类型。,(,2,)调用时,子过程是一条独立的语句;,但函数不能作为独立的语句加以调用,,必须参与表达式运算,。,相同点:,(,1,)都属于过程。,(,2,)都能实现相同的功能。,过程,函数,子过程,内部函数,自定义函数

10、事件过程,自定义子过程,14,形参:,在函数定义中的参数列表称为形参。形参标明了调用自定义的函数或者过程所需参数的个数、位置和类型。形参仅仅是一个符号,是要被实际数据所代替的。,实参:,实际参与运算的数据就是实参。,参数传递:,程序在调用函数或过程时,实参代替形参的过程。,4.2,参数传递,15,4.2,参数传递,参数传递有两种方式:,按地址传递、按数值传递,形参前加“,ByRef,”,关键字或什么都不加的为按地址传递,,形参前加“,ByVal,”,关键字的是按数值传递。,2025/5/16 周五,16,gejinhuan,4.2.1,按值传递,形参变量名前的修饰符是,Byval,调用时,创

11、建形参,用实参的表达式的值复制给形参变量,调用结束,形参变量被取消。它是一种,单向传递,,即对形参的改变不会导致对实参变量的任何改变。,17,4.2.1,参数传递,按数值传递,Private Sub Form_Click(),Dim First!,Second!,Temp!,First=InputBox(,请输入第一个数:,First),Second=InputBox(,请输入第二个数:,Second),Print,初始值:,First=;First,Second=;Second,Print,If First Second Then,Call swap(First,Second),End If

12、Print,交换后:,First=;First,Second=;Second,End Sub,Private Sub,swap(,ByVal,a,ByVal,b),Dim t,t=a,a=b,b=t,End Sub,形参,实参,2025/5/16 周五,18,gejinhuan,4.2.2,按地址传递,按地址传递的形参变量名前的修饰符是,Byref,如果形参变量名前不做任何说明默认是,Byref,按地址传递时,过程中对形参变量值的改变即是对实参变量的改变,即,双向传递,。,19,Private Sub Form_Click(),Dim First!,Second!,Temp!,First=I

13、nputBox(,请输入第一个数:,First),Second=InputBox(,请输入第二个数:,Second),Print,初始值:,First=;First,Second=;Second,Print,If First Second Then,Call swap(First,Second),End If,Print,交换后:,First=;First,Second=;Second,End Sub,Private Sub,swap(a,b),Dim t,t=a,a=b,b=t,End Sub,Private Sub,swap(,ByRef,a,ByRef,b),Dim t,t=a,a=b,

14、b=t,End Sub,4.2.2,参数传递,按地址传递,按数值传递,将复印件上交,原件永远不受影响,按地址传递,将原件上交,改的就是原件,实参,形参,20,例:,单击,Command1,后的运行结果,Private Sub ss(ByVal x as integer,ByRef y%,z%),x=x+1,y=y+1,z=z+1,End Sub,1 3 4,Private Sub Command1_Click(),Dim A%,B%,C%,A=1,B=2,C=3,Call ss(A,B,C),Print A;B;C,End Sub,21,数组为参数,Private Function tim(n

15、)As Integer),Dim t%,i%,t=1,For i=LBound(n)To UBound(n),t=t*n(i),Next i,tim=t,End Function,Private Sub Command1_Click(),Dim a(3)As Integer,Dim k As Integer,j As Integer,For j=LBound(a)To UBound(a),a(j)=InputBox(,请输入,a(&j&),的值,数组输入,),Next j,k=tim(a(),Print k,End Sub,形参的语法:,ByRef,数组名,()As,类型,无论是形参还是实参

16、都应省略其维数,!形参括号不能省略!实参括号可以省略。,数组参数在传递时,只能按地址传递,!,2025/5/16 周五,22,gejinhuan,数组为参数,Private Sub Command1_Click(),Dim a(3)As Integer,Dim k As Integer,j As Integer,For j=0 To 3,a(j)=InputBox(,请输入,a(&j&),的值,数组输入,),Next j,k=tim(a(),3),Print k,End Sub,Private Function tim(n()As Integer,L As Integer)As Long,

17、Dim t%,i%,t=1,For i=0 To L,t=t*n(i),Next i,tim=t,End Function,也可以这样自定义该函数,23,1,、过程的编写不能嵌套。,2,、如果在调用时该形参对应的实参是一个表达式,则按值传递方式调用过程。,3,、形参是数组时,只能是地址传递。,小结,:,前个例子里如果改成,Call ss(A,B,1,C),则输出结果为,1 2 4,24,4.3,多模块程序设计,工程文件,(*.vbp),窗体模块,文件,(*.frm),类模块,文件,(*.cls),标准模块,文件,(*.bas),函数过程、子过程、,事件过程,函数过程、子过程,过程的相互调用与通

18、信必然会涉及到,过程的作用域以及变量的作用域和生存期的问题。,25,4.3.1,过程的作用域,用两个限定词加以区分:,Private,、,Public,当过程前的限定词为,Private,,则表明此过程只能被本模块中其他的过程所调用,我们称之为,模块级过程,。,当过程前的限定词为,Public,,则表明此过程不仅能被本模块所调用,也可以被其他模块中的过程所调用,我们称之为,全局过程,。,过程作用域:,过程能被调用的范围。,26,4.3.1,过程的作用域,过程前没有限定词时,,默认为,Public,。,Public,Sub swap(x%,y%),Dim T%,T=x,x=y,y=T,End S

19、ub,(标准模块),Private,Sub Form_Click(),Dim a%,b%,T%,a=InputBox(,请输入第一个数:,a),b=InputBox(,请输入第二个数:,b),Print,初始值:,a=;a,b=;b,If a b Then Call,swap,(a,b),Print,交换后:,a=;a,b=;b,End Sub,Private,Sub Command1_Click(),Form2.Show,End Sub,(,Form1,模块),Private,Sub Form_Click(),Dim p%,q%,T%,p=InputBox(,请输入第一个数:,p),q=In

20、putBox(,请输入第二个数:,q),Print,初始值:,p=;p,q=;q,If p q Then Call,swap,(p,q),Print,交换后:,p=;p,q=;q,End Sub,(,Form2,模块),27,4.3.1,过程的作用域,思考:,(,1,)如果,swap,在标准模块中是用,Private,定义的,,是否能被,Form1,和,Form2,调用?,(,2,)如果,swap,是在,Form1,中用,Private,定义的,,是否能被,Form1,和,Form2,调用?,(,3,)如果,swap,在在,Form1,中用,Public,定义的,,是否能被,Form1,和,F

21、orm2,调用?,(,4,)如果在两个标准模块里都有,swap,过程,,这时应该如何调用?,28,4.3.1,过程的作用域(调用规则),29,4.3.2,变量的作用域和生存期,变量的,作用域,:变量能被使用的,范围,。,变量的,生存期,:变量从产生到消亡的,时间,。,按照声明变量的,位置,和,限定词,的不同,变量分为三种:,局部变量、模块级变量、全局变量。,2025/5/16 周五,30,gejinhuan,回顾变量声明的格式,显示声明变量的,格式,:,as ,Dim,、,Static,、,Public,、,Private,31,什么样的变量才叫局部变量?,局部变量的作用域和生存期,局部变量,

22、以,Dim,声明,动态,变量,以,Static,声明,静态,变量,用,Dim,或,Static,在,过程内,声明的变量称为局部变量。,2025/5/16 周五,32,gejinhuan,局部变量的作用域和生存期,局部变量的作用域:,只能在声明它的本过程中使用,而不能,被其它过程使用。,局部变量的生存期:,若是动态变量,生存期为变量所在过程的执行期,因此,过程结束,变量的值自动消失,;若是静态变量,生存期为整个应用程序的运行期,,过程结束,变量还会保持当前的值,。,33,局部变量的作用域和生存期,Private Sub Command1_Click(),Dim n As Integer,n=10

23、Print n,End Sub,Private Sub Command2_Click(),Dim n As Integer,n=20,Print n,End Sub,假设在工程,1,的,Form1,窗体中定义了如下两个,事件过程,:,打开工程,1,2025/5/16 周五,34,gejinhuan,Private Sub Command2_Click(),Static i As Integer,i=i+10,Print Spc(5);i,End Sub,Private Sub Command1_Click(),Dim i As Integer,i=i+10,Print i,End Sub,局

24、部变量的作用域和生存期,假设在工程,1,的,Form1,窗体中定义了如下两个,事件过程,:,打开工程,1,35,要活用静态变量(,Static,),例如:,有一个人编了下面一段程序,想用变,量,n,记,录单击窗体的次数。,Private Sub Form_Click(),Dim n As Integer,n=n+1,Print,已单击次数:,;n&,次,End Sub,36,什么样的变量才叫,模块级变量,?,模块级变量的作用域和生存期,用,Private,或,Dim,在,模块内,的“,通用声明,”段声明的变量。,在我这里,2025/5/16 周五,37,gejinhuan,模块级变量的,作用域

25、只能在声明它的,本模块,中使用,即能,被本模块中的其它过程使用。,模块级变量的,生存期:,整个应用程序的运行期。,模块级变量的作用域和生存期,38,Private Z As Integer,Private,Sub S(),Z=Z+2,Print Z,End Sub,Private Sub Command1_Click(),Z=Z+2,Call S,Print Z,End Sub,模块级变量的作用域和生存期,打开程序,程序执行时,鼠标单击命令按钮,1,一次,会在窗体上看到什么?,39,什么样的变量才叫全局变量?,全局变量的,作用域,:能被这个应用程序中所有模块的所有,过程使用。,全局变量的,

26、生存期,:整个应用程序的运行期。,全局变量的作用域和生存期,用,Public,限定词在,模块内,的“,通用声明,”段声明的变量。在编程时,,全局变量越少越好,。,40,Rem Form1,Public i As Integer,Private Sub Command1_Click(),i=i+1,Print i,End Sub,Private Sub Command2_Click(),Form2.Show,End Sub,Rem Form2,Private Sub Command1_Click(),i=Form1.i+1,Print i,End Sub,全局变量的作用域和生存期,假设在工程,1

27、中的,Form1,当中定义,Command1_Click,事件和,Command2_Click,事件,,在,Form2,当中定义的另外一个,Command1_Click,事件。,打开程序,41,变量的,重名,问题:,我们可以在,不同的作用域,内声明具有,相同名称,的变量。它们是毫无关联的不同变量,不会相互影响。,如果发生,作用域重叠,,就应该采取,“就近原则”,。,即首先看这个变量在本过程中是否有声明它的语句,有则为局部变量;若无,再看这个变量在本模块中是否有声明它的语句,有则为模块级变量或者是全局变量。,4.3.2,变量的作用域和生存期,42,Private Sub Command1_Cl

28、ick(),Dim X As Integer,Y As Integer,Z As Integer,X=2,Y=3,Z=X+Y,Call S,Print X,Y,Z,End Sub,Private,Sub S(),Dim X As Integer,Y As Integer,Z As Integer,X=1,Y=2,Z=X+Y,Print X,Y,Z,End Sub,在工程,1,的,Form1,窗体中定义了,Command1_Click,事件过程和自定义了一个,S,子过程,4.3.2,变量的作用域和生存期,打开程序,43,4.3.2,变量的作用域和生存期,Private,i,As Integer,

29、Private Sub Command1_Click(),Static,i,As Integer,i,=,i,+10,Print,i,End Sub,Private Sub Command2_Click(),Print,i,End Sub,再来看一个例子:,打开程序,我俩是一家,44,如果想在含有局部变量的过程中使用重名的,全局变量,,可以在变量名前,加上模块名,。,Public i,As Integer,Private Sub Command1_Click(),Static i As Integer,Form1.i,=,Form1.i,+10,Print i,End Sub,Private

30、Sub Command2_Click(),Print i,End Sub,4.3.2,变量的作用域和生存期,45,Private x%,y%,z%,Private Sub Form_click(),Dim x as integer,x=1,y=2,Call AA(y+1),z=BB(x),Print x,y,z,End Sub,Private,Sub AA(byval z%),y=z+x,z=x+y,End Sub,Private,Function BB,(y%),y=y+1,BB=x+y,End function,综合应用例子:,232,注意,:所有形参都是局部变量,打开程序,2025/5/

31、16 周五,46,gejinhuan,练习题,1,、工程的扩展名是,?,2,、对象的三要素是,?,3,、输入对话框,inputbox,的返回值的类型是?,4,、,Int(Rnd*100),表示的数的范围是?,5,、,Print,“,5*5,”,的执行结果是?,6,、表达式,16/2-23*7 Mod 9,的值是?,7,、,x,大于5小于10,和,a,和,b,中有且只有一个为,0,的表达式怎么写?,8,、用,Inputbox,函数为数组,B,的所有元素,B(0),、,B(1),、,B(9),依次赋值的语句怎么写?,9,、数组名作为参数,相应的形参传递方式是?,10,、函数名在函数体中必须被赋值?

32、2025/5/16 周五,47,gejinhuan,程序阅读题:,1,、,Private Sub form_click(),Dim a As Integer,s As Integer,a=5:s=0,Do While a a(j)Then,m=a(i):,?,:a(j)=m,End If,Next j,i,For i=1 To 30,If a(i)Mod 2 0 Then Print a(i);,Next i,End Sub,以下程序产生,30,个,两位,随机整数、并按,从小到大,的顺序存入数组,a,中,再将其中的,奇数,按从小到大的顺序在窗体中用,紧凑,格式输出。,2025/5/16 周五,52,gejinhuan,程序设计题,1,单击命令框按钮,弹出输入对话框,提示输入一元二次方程的系数,a,b,c,,判断,是否大于等于,0,,弹出消息框给用户说明有无实数解。,2025/5/16 周五,53,gejinhuan,程序设计题,2,编程,输入,x,值,按下式计算并输出,y,值,x+3 x3,Y=f(x)=x,2,1=x=3,x 0 x1,0 x=0,2025/5/16 周五,54,gejinhuan,程序设计题,3,编制通用函数过程,计算,Double,类型一维数组所有元素的平均值。,

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服