资源预览内容
第1页 / 共20页
第2页 / 共20页
第3页 / 共20页
第4页 / 共20页
第5页 / 共20页
第6页 / 共20页
第7页 / 共20页
第8页 / 共20页
第9页 / 共20页
第10页 / 共20页
亲,该文档总共20页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第四章 过程与函数对于某些多次反复执行的程序段 ,我们可以将它定义成子程序。子程序分为过程和函数。定义在代码窗口中直接定义子过程形式如下 : Public/Private sub 子程序名(参数列表 )语句Exit Sub语句End Subl函数过程形式如下 : Public/Private Function 函数名(参数列表) As 类型 语句函数名=返回值Exit Function语句 函数名=返回值End Functionl形参列表:参数1,参数2,l 参数定义: byval 变量名 as 数据类 型Byval 数据传递方式:值传递,省略时为地址传递Exit sub/Exit function 中途退出过程调用l子程序名参数列表/Call 子程序名(参数列表)l变量名 = 函数名(参数列表)例:过程调用call exchange( a, b)或 exchange( a,b)例:函数调用Print maxnum(a,b)X=maxnum(a,b)例5.1 编一交换两个数的过程。Private Sub jiaohuan(x As Integer, y As Integer)Dim t As Integert = x x = y y = t End Sub形参: x, y 数据传递方式: 地址传递参数传递Private Sub Form_Click() Dim a As Integer, b As Integer a = 10 : b = 20 Print “原值:“; “a1=“; a, “b1=“; b call jiaohuan(a, b)Print “交换后:“; “a1=“; a, “b1=“; bEnd Sub函数的定义和调用lprivate function jch ( n as integer)l dim f as integer,I as integerl f=1l for i=1 to nl f=f*il next il jch=flend function 在表达式中使用计算 m!*n!/(m-n)!jch(m)*jch(n)/jch(m- n)过程的作用域(1) 窗体中的过程lprivate 子程序只能在本窗体中调用lpublic 子程序可以在其它窗体中应用, 但调用方式为 窗体名.过程名 (2) 标准模块中的过程public 可以在任意窗体和模块中使用递归 l用自身的结构来描述自身称为“递归 ”。递归总有一个“结束条件”,此 结束条件称为“边界条件”。例1:五个人论岁数,第一个人说比第二 个人大2岁,第二个人说比第三个人大2岁 ,第三个人说比第四个人大2岁,第四个 人说比第五个人大2岁,第五个说他10岁 ,问每人多大岁数?递归l s(5)=s(4)+2 s(5)=18 s(4)=s(3)+2 s(4)=16 l s(3)=s(2)+2 s(3)=14l s(2)=s(1)+2 s(2)=12l s(1)=10递推回推Li:阶乘5!=4!*5 递推4!=3!*43!=2!*32!=1!*21!=1 边界条件2!=1*2=2 回 推3!=2*3=64!=6*4=24 5!=24*5=120代码如下:Private Function fac(n as integer)if n=1 thenfac=1elsefac=n*fac(n-1)end if End Function菲波那契数列前两项为1,从第三项开始,其值为它前面两 项的和。 Private Function fibo(n As Integer) If n = 1 Or n = 2 Then fibo = 1 Elsefibo = fibo(n - 1) + fibo(n - 2) End If End Function代码如下:Private Sub Command1_Click() Dim n As Integer, i As Integer, k As Integer Picture1.cls n = Val(Text1.Text) For i = 1 To nPicture1.Print fibo(i); “ “;k = k + 1If k = 5 Thenk = 0Picture1.PrintEnd If Next I End Sub常用算法举例l求素数l选择法排序l冒泡法排序l顺序查找要判断一个数x是否是素数,需要判断x是否能 被2至x-1内的某一个自然数整除。若都不能整除,则x是素数。(所以,判断一个数是否为 素数,只要看在2到它的平方根之间有没有约数。 例题:素数l第一次从未排好序的数组中找出最小( 或最大)的,放在第一个位置;第二次 从后面的n1个数中找出最小(或最大 )的,放在第二个位置; 例题:选择排序每次对相邻的两个数进行比较,若不 符合顺序,则交换位置;例题:冒泡排序查找l顺序查找即将关键字与数组中的元素逐一比 较,若相同,查找成功。例题:顺序查找
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号