过程与函数讲稿.ppt
《过程与函数讲稿.ppt》由会员分享,可在线阅读,更多相关《过程与函数讲稿.ppt(43页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、关于过程与函数关于过程与函数第一页,讲稿共四十三页哦 Visual Basic函数分为函数分为内部函数内部函数和和自定义函数自定义函数,自定义函数自定义函数是用户是用户根据需要用根据需要用Function关键字定义的函数过程关键字定义的函数过程。6.1.1 函数过程函数过程(Function过程过程)的定义的定义Public|PrivateStaticFunction 函数名函数名()As 函数名函数名=返回值返回值 Exit Function 函数名函数名=返回值返回值 End Function函数体6.1 Function过程过程第二页,讲稿共四十三页哦Function定义定义示例示例(两
2、种方式两种方式)第三页,讲稿共四十三页哦调用形式:调用形式:函数名函数名(实参列表实参列表)说说明明:在在调调用用时时实实参参和和形形参参的的数数据据类类型型、顺顺序序、个个数数必必须须匹匹配配。函数调用只能出现在表达式中,其功能是求得函数的返回值。函数调用只能出现在表达式中,其功能是求得函数的返回值。6.1.2 函数的调用函数的调用Private Sub Form_Click()Dim x%,y%,z%x=Val(InputBox(输入一个正整数输入一个正整数x:)y=Val(InputBox(输入一个正整数输入一个正整数y:)z=gcd(x,y)Print x&与与&y&的最大公约数为的最
3、大公约数为:&zEnd Sub第四页,讲稿共四十三页哦例例6.2 打印出打印出100到到200之间的所有素数之间的所有素数 Function IsPrime(n%)As Boolean Dim k%IsPrime=True 先假定先假定n是素数是素数 For k=2 to n-1 If n mod k=0 Then IsPrime=False 确定确定n是是不不素数,返回素数,返回False Exit Function 退出函数退出函数,也可用也可用Exit For或或k=n End If Next k For循环正常结束时,循环正常结束时,n是素数,返回是素数,返回TrueEnd Funct
4、ionPrivate Sub Form_Click()Dim i%,k%k=0 k用来记录素数的个数,初始值为用来记录素数的个数,初始值为0 For i=100 to 200 If IsPrime(i)Then Print i;k=k+1 If k Mod 10=0 Then Print 书中印刷错误 End If Next iEnd SubFor i=101 to 199 Step 2 偶数不可能是素数偶数不可能是素数 第五页,讲稿共四十三页哦 在在程程序序中中调调用用一一个个函函数数,而而在在函函数数中中又又调调用用另另外外的的函函数数,这这种种程程序序结结构构称称为为函函数数的的嵌嵌套套
5、调调用用。嵌嵌套套调调用用的的执行过程如下图所示:执行过程如下图所示:6.1.3 函数的函数的嵌套调用嵌套调用第六页,讲稿共四十三页哦例例6.3 牛顿迭代法牛顿迭代法求解高次方程的根求解高次方程的根Function Funx#(ByVal x#)Funx=3*x*x*x-4*x*x-5*x+13 求函数的值求函数的值End FunctionFunction Fun1x#(ByVal x#)Fun1x=9*x*x-8*x-5 求导函数的值求导函数的值End FunctionFunction Newton#()Dim x x=8 随意指定一个初值随意指定一个初值 Do x=x-Funx(x)/Fu
6、n1x(x)牛顿迭代公式牛顿迭代公式 Loop Until abs(Funx(x)=0.000001 Newton=xEnd FunctionPrivate Sub Form_Click()Print 方程方程3*x3-4*x2-5*x+13=0的根为的根为:;Newton()End Sub第七页,讲稿共四十三页哦6.1.4 函数的函数的递归调用递归调用第八页,讲稿共四十三页哦递归函数的递归函数的三个要点三个要点 要有一个要有一个结束结束递归的递归的条件条件。递归递归结束时结束时,要有一个,要有一个明确的值明确的值。要有一个求值的要有一个求值的递归公式递归公式,且递归能,且递归能向向结束条件结
7、束条件 的的方向方向发展发展。例例6.4 用递归算法求一个正整数的阶乘。Private Function fac(n As Integer)As Long If n=1 Or n=0 Then 结束递归的条件结束递归的条件 fac=1 结束递归时,函数的值为结束递归时,函数的值为1 Else fac=n*fac(n-1)递归公式递归公式 End IfEnd FunctionPrivate Sub Command1_Click()Dim k%k=Val(InputBox(输入一个正整数输入一个正整数k)Print k&!=&fac(k)End Sub第九页,讲稿共四十三页哦递归函数的执行过程第十
8、页,讲稿共四十三页哦递归程序递归程序示例示例能够用能够用递推算法递推算法解决的问题,大多数都能用解决的问题,大多数都能用递归算法递归算法来实现来实现!猴子吃桃问题猴子吃桃问题Private Function tao(m As Integer)As Integer If m=7 Then 第第7天只剩下一个桃天只剩下一个桃 tao=1 结束递归时,函数的值为结束递归时,函数的值为1 Else tao=2+2*tao(m+1)递归公式递归公式 End IfEnd Function 求求最大公约数的函数最大公约数的函数Private Function gcd2%(ByVal m%,ByVal n%)
9、If m Mod n=0 Then gcd2=n Else gcd2=gcd2(n,m Mod n)End IfEnd Function第十一页,讲稿共四十三页哦6.2 Sub过程过程6.2.1 Sub过程的定义过程的定义 Public|PrivateStatic Sub 过程名过程名(形参表形参表)语句语句块块 1 Exit Sub 语句语句块块 2End Sub 说说明明:的的命命名名规规则则与与变变量量名名规规则则相相同同。过过程程名名不不返返回值,回值,不不能能当变量使用当变量使用。第十二页,讲稿共四十三页哦Sub过程的调用形式:过程的调用形式:子过程名子过程名 参数列表参数列表 Ca
10、ll 子过程名子过程名(参数列表参数列表)说明:说明:(1)参数列表参数列表称为实参或实元,它必须与形参保持个称为实参或实元,它必须与形参保持个数相同,位置与类型数相同,位置与类型一一对应一一对应。(2)调用时把)调用时把实参值实参值传递给传递给对应的对应的形参形参。6.2.2 过程的调用过程的调用或或Private Sub Swap(ByRef x%,y As Integer).Call swap(a,b)Swap a,b第十三页,讲稿共四十三页哦例例6.5 交换两个变量值的Sub过程Private Sub Swap(x%,y As Integer)Dim temp As Integer t
11、emp=x:x=y:y=tempEnd SubPrivate Sub Command1_click()Dim a%,b%a=15 :b=20 Print Before Swap(a,b):a=;a,b=;b Call swap(a,b)Print After Swap(a,b):a=;a,b=;bEnd SubBefore Swap(a,b):a=15 b=20After Swap(a,b):a=20 b=15第十四页,讲稿共四十三页哦1、形式参数、形式参数 在在定义定义过程过程时时,出现在,出现在Sub或或Function语句中的语句中的过程名过程名或或函数名函数名后面的园括号内的后面的园括
12、号内的参数参数,只能只能是简单是简单变量变量或或数组名数组名,它,它没有没有值,值,等待等待传传递递。6.3 过程过程之间之间参数的参数的传递传递2、实际参数、实际参数 在在调调用用Sub或或Function过过程程时时,写写在在过过程程名名或或函函数数名名后后括括号号内内的的参参数数。实参实参可以是可以是常量常量、变量名、表达式变量名、表达式或或数组名数组名。Private Sub Swap(x%,y As Integer).End SubCall swap(a,b)实参实参的的个数个数与与类型类型,要,要按顺序按顺序与与形参一一对应形参一一对应匹配匹配!第十五页,讲稿共四十三页哦6.3.1
13、 单向的传值方式第十六页,讲稿共四十三页哦6.3.2 双向的传地址方式 实参实参必须是必须是变量变量。如果实参是。如果实参是常量常量或或表达式表达式,只能只能实现实现单向的值传递单向的值传递!Call swap(a,b+0)Call swap(a),b)第十七页,讲稿共四十三页哦例例6.6 传值与传地址的区别Private Function fx(ByVal x As Integer)x=x+x fx=xEnd FunctionPrivate Function fy(ByRef y As Integer)y=y+y fy=yEnd SubPrivate Sub command1_click()
14、Dim a%,b%a=10 :b=15 print fx(fx(a);fy(fy(b);a;bEnd Function程序的运行结果为:程序的运行结果为:40 60 10 30第十八页,讲稿共四十三页哦6.3.3 数组数组参数的传递参数的传递 Private Sub Sort(x()As Intefer)Dim i%,j%,m%,t%For i=LBound(X)To UBound(X)-1 m=i For j=i+1 To UBound(X)If X(m)X(j)Then m=j Next j t=X(i):X(i)=X(m):X(m)=t Next iEnd SubDim A%(1 To
15、10)Call Sort(A()或或 Sort A()Call Sort(A)或或 Sort AByVal?不能指定形参数组的维数及其下标不能指定下标第十九页,讲稿共四十三页哦6.3.4 可选参数可选参数与与可变参数可变参数的传递的传递 Private Function max1%(a%,b%,c%,Optional d)max1=a If max1 b Then max1=b If max1 c Then max1=c If Not IsMissing(d)Then If max1 d Then max1=d End IfEnd FunctionPrivate Sub Command1_Cl
16、ick()Print 可可选选参数的参数的应应用用 Print max1(7,5,8)=;max1(7,5,8)Print max1(7,2,3,9)=;max1(7,2,3,9)End Sub变体类型变体类型的可选参数可选参数d只能只能有有三个三个或或四四个个实参实参1.可选参数可选参数 测试函数测试函数第二十页,讲稿共四十三页哦2.可变参数可变参数Private Function max2(ParamArray d()max2=d(LBound(d)For Each x In d If max2 x Then max2=x Next xEnd FunctionPrivate Sub Com
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 过程 函数 讲稿
限制150内