如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
第6章过程结构化的程序中,经常将一个较大的程序划分成若干个较小的程序模块,每个模块只完成一个或若干个功能。这些模块通过执行一系列语句完成一个特定的操作,称为“过程”。程序中使用过程的好处:过程可使大程序分解成多个逻辑单元,容易编写、调试。一个程序中的过程可以为另一个程序使用。VB中过程分为两类:子程序过程(Sub过程)和函数过程(Function过程)。Sub过程分为:事件过程和通用过程Sub过程分为:事件过程和通用过程6.1过程-Sub过程6.1过程-Sub过程6.1.3Sub过程的调用方法1.用Call语句调用Sub过程格式:Call过程名[<实参表>]<实参表>是实际参数列表,参数之间用逗号分隔。实参的作用是:将使用中的实际值传送给被调用过程中的形参,供其计算;或从过程中接收经过程计算的结果,实现数据传递。说明:(1)实参的个数、数据类型、顺序都应与被调用过程的形参一一对应匹配。(2)若无参数,可以省略过程名后的括号。2.直接使用过程名调用格式:过程名[实参[,实参]…]说明:若用Call调用子程序,参数必须用括号括起来;若不用Call来调用,则参数不能用括号括起来。[例1]用随机函数生成表中数据,计算总分并输出。PrivateSubCommand1_Click()'单击“输出”定义数组和变量ForI=1To5用随机函数生成表中数据NextIPrint_Line'调用画线过程PrintTab(10);"数学";Tab(20);"物理";Tab(30);"化学"Print_Line'调用画线过程ForI=1To5打印表中数据,并统计各科总分NextIPrint_Line'调用画线过程PrintTab(10);Math(0);Tab(20);Phy(0);Tab(30);Chem(0)Print_Line'调用画线过程EndSub将Print_Line过程改写如下:PrivateSubPrint_Line(nAsInteger)DimIAsIntegerPrintTab(10);ForI=1TonPrint"-";NextIPrintEndSub函数也属于过程。它与子过程的根本区别是可以返回一个值给调用程序。其定义方法同过程相似,也有两种。1.利用“添加过程”对话框定义打开窗体或模块的代码窗口,单击“工具”菜单,选择“添加过程”,然后在对话框的“类型”中选择“函数”即可。2.直接在代码窗口定义进入代码窗口后,在左侧显示对象名的下拉列表框中选择“通用”,在右侧显示过程的下拉列表框中选择“声明”,然后输入Function及函数名即可。6.2过程-Function过程说明:(1)函数过程以Function开头,以EndFunction结束,两者之间是描述函数操作的语句块为“函数体”。(2)函数名命名规则与变量名规则相同。但不能与系统的内部函数或其他通用子过程同名,也不能与已定义的全局变量和本模块中模块级变量同名。(3)在函数体内,函数名可以当变量使用,函数的返回值就是通过对函数名的赋值语句来实现的。(4)如果函数体内没有给函数名赋值,则返回对应类型的缺省值,数值函数返回0,字符串函数返回空字符串,变体型函数返回Empty。(5)As类型:是指函数返回值的类型,若省略,则函数返回变体类型值(Variant)。(6)ExitFunction:表示退出函数过程,常常是与选择结构(If或SelectCase语句)联用,即当满足一定条件时,退出函数过程。(7)形参数列表:形参的定义与子过程完全相同。(8)函数过程内部不得再定义Sub过程或Function过程。例:一个计算圆面积的函数过程(farea):PrivateFunctionfarea(a)AsSingle’r→aConstpi=3.1416farea=a*a*pi’计算面积EndFunction函数通过函数名返回计算值,子过程通过形参返回计算值。调用计算圆面积的函数过程(farea)PrivateSubCommand1_Click()DimrAsSingler=Val(InputBox("输入半径R"))Print"半径:";rPrint"圆面积:";Int(farea(r)*10)/10EndSub[例2]计算例如定义了下面一个过程:SubSwap2(x%,y%,s$)…EndSub可以用下面的语句调用该过程:CallSwap2(a%,y%,"Student")6.3.2按值传递参数(ByVal)按值传递参数(PassedByValue)时,是将实参变量的值复制一个到临时存储单元中,如果在调用过程中改变了形参的值,不会影响实参变量本身,即实