预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共53页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

VB程序设计6.1子过程的定义与调用 6.2函数的定义与调用 6.3子过程与函数的参数传递 6.4变量、过程的作用域 6.5递归 6.6常用算法举例本节课要求引入过程和函数的目的VB中的过程有两种: (1)系统提供的内部函数过程和事件过程。 (2)用户根据应用的需要而设计的过程。 在VB中根据应用的要求可分为几种类型的自定义过程: (1)以“Sub”保留字开始的子过程。 (2)以“Function”保留字开始的函数过程。 (3)以“Property”保留字开始的属性过程。 (4)以“Event”保留字开始的事件过程。 本书仅讨论以“Sub”开头的子过程和以“Function”开头的函数过程。过程和函数函数Function和过程Sub的区别打爆米花建立函数的一般过程6.1.1子过程的定义子过程的定义6.1.2子过程的调用6.1.2通用子过程事件过程Sub过程(子程序)Function函数6.2定义Function过程Function函数返回值的方式6.2定义Function过程6.2定义Function过程过程和函数需注意的几点函数和过程的相互转换函数和过程的相互转换例题例题过程实例函数的实例5.7参数传递5.7.1形参与实参6.4.1形参与实参5.7.2参数传递方式6.4.2~3参数传递方式6.4.2~3参数传递方式6.4.2~3参数传递方式6.3子过程与函数的参数传递2.可选参数 在形式参数前加上关键字Optional可以指定该形式参数为可选参数。可选参数在过程调用时可以不提供与可选参数对应的实际参数。可选参数可以指定默认的缺省值。 3.命名参数 实际参数使用“形式参数名:=实际参数”的格式即为命名参数。命名参数出现的位置可以与定义时的顺序无关。但需注意非命名参数仍需按定义时的位置出现,所以非命名参数在定义时应排在第一个命名参数之前。 4.数组作为参数和返回值 数组可以作为实际参数传递到过程中。此时形式参数应为Variant类型或与实际参数类型完全相同的数组类型。作为形式参数的数组应为可变数组,用数组名跟空的圆括号表示。函数的返回值也可以是数组,此时类型说明为Variant类型或“As类型()”。【例6-7】下列程序运行后,单击窗体时显示“9”、“8”、“7”。 OptionExplicit Functionf(a()AsLong)AsLong() f=a EndFunction SubForm_Click() Dimb()AsLong Dimc(2)AsLong c(0)=9 c(1)=8 c(2)=7 b=f(c) printb(0) b()=f(c()) printb(1) Printf(c)(2) ’函数表达式直接带数组下标代表数组元素 EndSub5.可变个数参数 将最后一个形式参数声明为Variant类型的数组,同时在前面加上ParamArray关键字,就变成可变个数的参数;调用过程时可输入任意个数的参数,输入的参数转变为数组的元素;也可以省略该参数。ParamArray关键字不能与ByVal或ByRef一起使用,也不能在参数列表中出现Optional。 【例6-8】下列程序运行后,每次单击窗体就会显示“6”。 OptionExplicit Functionf(a,ParamArrayb()) f=a+b(0)+b(1) EndFunction SubForm_Click() Printf(1,2,3) EndSub 注意:在用可变个数参数时,实参个数不能少于使用的形参个数。6.4变量、过程的作用域PrivateSubForm_Click() Print"第1次调用过程b" b Print Print"第2次调用过程b" b Print Print"第1次调用静态过程e" e0 Print Print"第2次调用静态过程e" e0 EndSub 过程如果直接或间接地调用了自身,这就是递归过程。 例【6-12】求n!的递归函数。 PublicFunctionFN(nAsInteger)AsInteger ifn=1Then FN=1 Else FN=n*FN(n-1) Endif EndFunction 可见递归是一个不断自己调用自己的过程【例6-13】一只猴子一天从山上摘来一袋桃子,从这天开始,它每天都要把袋中的桃子平分为二堆,吃掉其中的一堆,然后再从剩下的桃中拿出一个解谗,等到第10天,它发现袋中只有一只桃可吃,问猴子总共摘了多少桃。 程序如下(运行结果如下图): PrivateSubCommand1_Click() DimNumAsInteger Num=Val(InputBox("请输入天数:")) Label1.Caption="桃子数量为:"&Eat(Num) EndSub Privat