第5章过程.ppt

上传人:王** 文档编号:614231 上传时间:2023-12-08 格式:PPT 页数:52 大小:262.50KB
下载 相关 举报
第5章过程.ppt_第1页
第1页 / 共52页
第5章过程.ppt_第2页
第2页 / 共52页
第5章过程.ppt_第3页
第3页 / 共52页
第5章过程.ppt_第4页
第4页 / 共52页
第5章过程.ppt_第5页
第5页 / 共52页
第5章过程.ppt_第6页
第6页 / 共52页
第5章过程.ppt_第7页
第7页 / 共52页
第5章过程.ppt_第8页
第8页 / 共52页
第5章过程.ppt_第9页
第9页 / 共52页
第5章过程.ppt_第10页
第10页 / 共52页
亲,该文档总共52页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《第5章过程.ppt》由会员分享,可在线阅读,更多相关《第5章过程.ppt(52页珍藏版)》请在优知文库上搜索。

1、第5章 过程第5章 过程5.1 Sub过程5.2 函数过程5.3 参数传递5.4 变量的作用范围引入新课n我们在前面学习过:n可以通过循环结构来反复执行某种操作。n循环结构只能在程序中的某个位置反复进行特定的操作,若该操作需要在程序中的多个位置出现,那么,在需要进行这种操作的地方都需要一个循环结构的出现,这样使得程序的复杂程度增加。n解决上述问题的方法是使用子程序(过程)。nVB提供的系统函数即是函数过程的实例。引入新课nVisual Basic中的自定义过程分为:n以Sub保留字开始的Sub过程。这种过程不直接返回值,但是可以通过参数或模块级变量、全局变量来返回多个值。n以Function保

2、留字开始的函数过程,过程通过函数名可直接返回一个值。5.1 Sub过程n在程序多个位置多次重复出现的操作:n不是计算得到某个结果,而是要完成特定的操作n或需要返回多个结果n则可将这些操作定义为Sub过程(子过程),在程序中需要这些操作的地方,通过调用该Sub过程即可。5.1 Sub过程n建立Sub过程的方法:n利用“工具”菜单下的“添加过程”命令,生成一个Sub过程框架,然后再输入相应的代码。n在代码窗口中直接定义。即:在窗体、模块等的代码窗口,在所有过程之外直接输入Sub过程。5.1 Sub过程n自定义Sub过程的形式如下:Private|Public Sub 过程名(形参列表)局部变量或常

3、量声明 语句块 Exit Sub 语句块End Sub5.1 Sub过程n说明:nPrivate定义过程为局部过程,即该过程只能被过程所在模块的其它过程调用。Public定义过程为全局过程,即该过程可被所有模块中的过程调用。默认为Public。n过程名为过程的标识,其命名规则与变量的命名规则相同。n形参列表:n形式为:形参1 As 类型,形参2 As 类型,n形参只能是变量名或数组名,仅表示参数的个数、类型n形参两边的括号不能省略nExit Sub:表示退出Sub过程5.1 Sub过程n调用Sub过程:nCall 子过程名(实参列表)n子过程名实参列表n说明:n用Call关键字来调用Sub过程

4、时,若有实参,则实参需要用括号括起来;用过程名方式调用子过程,则实参两边的括号可以省略n若要通过实参返回结果,那么,实参只能是与形参同类型的简单变量、数组名、结构类型,而不能是常量、表达式或控件名。5.1 Sub过程n【例5-2】编写一过程实现两个数的交换Sub Swap(x As Integer,y As Integer)Dim t As Integer t=x:x=y:y=tEnd SubPrivate Sub Form_Click()Dim a As Integer,b As Integer a=3:b=4 Print 调用前:a=&a&,b=&b Call Swap(a,b)Print

5、 调用后:a=&a&,b=&bEnd Sub5.1 Sub过程n运行结果5.1 Sub过程n通用过程和事件过程n通用过程n由用户自定义,可放在窗体模块中,也可放在标准模块中n由用户在过程或函数中自行调用n分为Sub过程和函数过程两大类n事件过程n对事件的响应代码,只可以放在窗体模块中n在发生特定事件时由Visual Basic自动调用,也可以被同一模块中的其它过程调用n事件过程框架由系统指定5.1 Sub过程n事件过程的框架:Private|Public Sub 对象名_事件名(参数列表)语句块End Sub5.1 Sub过程n关于过程的调用n通用过程之间、事件过程之间、通用过程与事件过程之间

6、,都可以互相调用。nPublic过程可以被其它模块中的过程调用。若过程名在所有模块范围内唯一时,可以直接使用过程名调用,否则调用过程时,需要在过程名前加上模块名:模块名.过程名(实参列表)5.1 Sub过程5.2 函数过程n函数的定义:Public|Private Function 函数名(形参列表)As 类型 局部变量或常量的声明 语句块 函数名=返回值 Exit Function 语句块 函数名=返回值End Function5.2 函数过程n说明:n函数名命名规则、形参列表形式同Sub过程中相应项的规定nAs 类型:函数返回值的类型n函数名=返回值:在函数中至少要对函数名赋值一次,该值即

7、是函数的运算结果5.2 函数过程n函数的调用:n自定义函数的调用与内部函数的调用相同,格式如下:函数名(实参列表)n函数的返回值将参与表达式的计算5.2 函数过程【例5-3】编写一个求最大公约数的函数过程。Function gcd(m As Integer,n As Integer)As Integer Dim r As Integer,t As Integer If m n Then t=m:m=n:n=t r=m mod n Do While r0 m=n:n=r:r=m mod n Loop gcd=nEnd Function5.2 函数过程n调用求最大公约数函数过程的示例:Privat

8、e Sub Form_Click()Dim x As Integer,y As Integer,z As Integer x=36:y=54 Print x&和&y&的最大公约数是:;z=gcd(x,y)Print zEnd Sub5.2 函数过程【例5-4】编写一个HuiWen函数,用于判断一个字符串是否是“回文”。Function HuiWen(str1 As String)As String Dim L As Integer,k As Integer Dim Ls As String,Rs As String L=Len(str1):k=1 Do Ls=Mid(str1,k,1)Rs=M

9、id(str1,L-k+1,1)If Ls Rs Then Exit Do k=k+1 Loop While k L/2,是回文,不是回文)End Function5.2 函数过程Private Sub Form_Click()Dim s As String s=InputBox(请输入任意字符串)Print s;HuiWen(s)End Sub5.2 函数过程n函数过程与Sub过程的区别n函数过程必须有返回值,函数名有类型(即是返回值的类型),必须在函数体中对函数名赋值来作为返回值nSub过程可以没有返回值,过程名没有类型,不能在Sub过程中对过程名赋值n一般来说,若程序有一个返回值时,使用

10、函数过程来设计较为直观;若没有返回值,或有多个返回值时,习惯使用Sub过程。5.2 函数过程n参数问题n形参是过程与主调程序交互的接口,通过形参从主调程序中获得传递过来的初值,通过形参也能把计算结果返回给主调程序n形参没有具体的值,只代表参数的个数、位置、类型;只能是简单变量、数组名,不能是常量、数组元素、表达式。5.2 函数过程5.3 参数传递n形参是指在定义Sub或函数过程时,在过程名后的圆括弧中出现的变量名、数组名列表。用于引用主调程序中传递过来的数据。n实参是指主调程序在调用过程时,在过程名后给出的常量、变量、表达式或数组。用于把数据传递给被调用的过程。n被形参引用的实参,其排列次序与

11、形参的排列次序一致,与参数的名字没有关系。5.3 参数传递n参数的传递有两种方式:nByRefn传地址方式,也叫引用。默认的参数传递方式。n形参与实参共用相同的存储单元,因而,在被调函数中修改了形参的值,那么,主调函数对应的实参的值也同样发生了变化。即:可以通过参数向主调程序返回多个结果。nByValn传值方式。n实参和形参对应于不同的存储单元,因而,传值方式只能把值从实参传递给形参,而不能通过形参返回结果。n如果实参是常量或表达式,则默认采用传值方式。5.3 参数传递【例5-5】分别用传值和引用方式编写变量交换过程。Sub Swap1(ByVal x As Integer,ByVal y A

12、s Integer)Dim t As Integer t=x:x=y:y=tEnd SubSub Swap2(ByRef x As Integer,ByRef y As Integer)Dim t As Integer t=x:x=y:y=tEnd Sub5.3 参数传递Private Sub Form_Click()Dim a As Integer,b As Integer a=1:b=2 Swap1 a,b Print a=&a&,b=&b a=1:b=2 Swap2 a,b Print a=&a&,b=&bEnd Sub5.3 参数传递n参数传递方式使用传值还是引用?n若被调用过程需要通

13、过形参把结果返回给主调程序,那么,参数传递方式需要使用引用方式。这时,实参必须是与形参同类的变量名(简单变量、数组、结构),而不能是常量或表达式。n若不希望被调过程修改实参的值,则参数传递方式应采用传值方式。5.3 参数传递n数组参数的传递:n数组作为参数传递时,总是采用引用方式传递。n在形参列表中的数组只需要给出数组名,并在数组名后加上一对空的圆括号,而不需要指出数组的上、下界。n在调用过程时,实参中的数组只需要给出数组名,即可传递整个数组给被调过程。n数组中的一个元素可以当作是简单变量来作为实参传递给形参。n通过LBound和UBound函数可以确定实参的下、上界。5.3 参数传递【例】编

14、写一个过程Sort,使用选择排序算法对数组中的元素按升序排列。Option Base 1Sub Sort(x()As Integer)Dim i As Integer,j As Integer Dim k As Integer,t As Integer For i=LBound(x)To UBound(x)-1 k=i For j=i+1 To UBound(x)If x(k)x(j)Then k=j Next t=x(i):x(i)=x(k):x(k)=t NextEnd Sub5.3 参数传递Private Sub Form_Click()Dim a(50)As Integer,b(20)

15、As Integer Dim i As Integer Cls Randomize For i=1 To 50 a(i)=Int(Rnd*100)Print a(i);If i Mod 10=0 Then Print Next Print Sort a For i=1 To 50 Print a(i);If i Mod 10=0 Then Print Next Print Randomize For i=1 To 20 b(i)=Int(Rnd*100)Print b(i);If i Mod 10=0 Then Print Next Print Sort b For i=1 To 20 Pri

16、nt b(i);If i Mod 10=0 Then Print NextEnd Sub5.3 参数传递n对上述排序程序进行修改,使得:n通过第2个参数来指定要排序的元素的个数n通过第3个参数来指定按升序还是降序排序n取值为True:按升序排列n取值为False:按降序排列5.3 参数传递Option Base 1Sub Sort(x()As Integer,n As Integer,d As Boolean)Dim i As Integer,j As Integer Dim k As Integer,t As Integer For i=LBound(x)To n-1 k=i For j=i+1 To n If d And x(k)x(j)Or Not d And x(k)x(j)Then k=j Next t=x(i):x(i)=x(k):x(k)=t NextEnd Sub5.3 参数传递Private Sub Form_Click()Dim a(20)As Integer,i As Integer Cls Randomize For i=1 To 20 a(i)=Int(Rnd

展开阅读全文
相关资源
猜你喜欢
相关搜索

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

copyright@ 2008-2023 yzwku网站版权所有

经营许可证编号:宁ICP备2022001189号-2

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