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

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

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

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

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

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

第八章子程序和函数在VB中,的Sub子过程分为:事件过程和通用过程 8.2.1事件过程 (1)窗体事件的语法 PrivateSubForm_事件名(参数列表) <语句组> EndSub (2)控件事件的语法 PrivateSub控件名_事件名(参数列表) <语句组> EndSub子过程的定义形式如下: [Public|Private][Static]Sub子过程名([形参表]) <局部变量或常数定义> <语句组> [ExitSub] <语句组> EndSub (2)形式参数列表:形式参数通常简称“形参”,仅表示形参的类型、个数、位置,定义时是无值的,只有在过程被调用时,虚实参结合后才获得相应的值。 (3)过程可以无形式参数,但括号不能省。 (4)参数的定义形式: [ByVal|ByRef]变量名[()][As类型][,…], ByVal表示当该过程被调用时,参数是按值传递的;缺省或ByRef表示当该过程被调用时,参数是按地址传递的。8.2.3子过程的建立8.2.4过程的调用 1子过程的调用 子过程名[参数列表] 或 Call子过程名(参数列表) 2函数过程的调用 变量名=函数过程名([参数列表]) 说明: (1)参数列表称为实参或实元,它必须与形参保持个数相同,位置与类型一一对应。 (2)调用时把实参值传递给对应的形参。其中值传递(形参前有ByVal说明)时实参的值不随形参的值变化而改变。而地址传递时实参的值随形参值的改变而改变。(3)当参数是数组时,形参与实参在参数声明时应省略其维数,但括号不能省。 (4)调用子过程的形式有两种,用Call关键字时,实参必须加圆括号括起,反之则实参之间用“,”分隔。 例:调用上面定义的Sawp子过程的形式: Swapa,b CallSwap(a,b) 说明: (1)函数名:命名规则与变量名规则相同。但不能与系统的内部函数或其它通用子过程同名,也不能与已定义的全局变量和本模块中模块级变量同名。 (2)在函数体内,函数名可以当变量使用,函数的返回值就是通过对函数名的赋值语句来实现的,在函数过程中至少要对函数名赋值一次。 (3)AS类型:是指函数返回值的类型,若省略,则函数返回变体类型值(Variant)。 (4)ExitFunction:表示退出函数过程,常常是与选择结构(If或SelectCase语句)联用,即当满足一定条件时,退出函数过程。 (5)形参数列表:形参的定义与子过程完全相同。8.3.2函数的调用8.4过程的作用域1、窗体/模块级过程: 加Private关键字的过程,只能被定义的窗体或模块中的过程调用。 2、全局级过程: 加Public关键字(或缺省)的过程,可供该应用程序的所有窗体和所有标准模块中的过程调用。总结归纳过程的定义及作用域如下表(教材Pg.163)8.5过程之间参数的传递2、实际参数 实际参数是指在调用Sub或Function过程时,写入子过程名或函数名后括号内的参数,其作用是将它们的数据(数值或地址)传送给Sub或Function过程与其对应的形参变量。 实参可由常量、表达式、有效的变量名、数组名(后加左、右括号,如A())组成,实参表中各参数用逗号分隔。传址与传值 传址:形参得到的是实参的地址,当形参值的改变同时也改变实参的值。 传值:形参得到的是实参的值,形参值的改变不会影响实参的值。PrivateSubCmdOK_Click() a%=10:b%=20:Swap1a,b‘传值 Print"A1=";a,"B1=";b a=10:b=20:Swap2a,b'传地址 Print"A2=";a,"B2=";b EndSub值传递的执行过程如下图:8.6高级用法(数组做为参数)2.被调过程可通过Lbound和Ubound函数确定实参数组的上、下界。 3.当用数组作形参时,对应的实参必须也是数组,且类型一致。 4.实参和形参结合是按地址传递,即形参数组和实参数组共用一段内存单元。 例如:定义了实参数组b(1to8),给它们赋了值,调用Sort()函数过程的形式如下: Sortb()或CallSort(b()) 实参数组后面的括号可以省略,但为便于阅读,建议一般不要省略为好。调用时形参数组a和实参数组b虚实结合,共用一段内存单元,如下所示。因此在Sort()过程中改变数组a的各元素值,也就相当于改变了实参数组b中对应的元素的值,当调用结束时,形参数组a成为无定义。 b(1)b(2)b(3)b(4)b(5)b(6)b(7)b(8) a(1) a(2)a(3)a(4)a(5)a(6)a(7)a(8) 参数为数组时虚实结合示意图补充例题:编写判断一个整数是不是素数写函数过程。如果给定的整数是素数,则返回逻辑值True,否则返回FalsePrivateSubForm_Cli