Visual Basic程序设计 教学课件 ppt 作者 王怀彬 第06章
第6章 过 程,6.1 Sub过程,在Visual Basic中,将没有任何返回值的过程定义为Sub过程 。,6.1.1 Sub过程的定义,定义Sub过程的格式: Public| Private Static Sub 子过程名( 形式参 数列表 ) Exit Sub End Sub,说明: (1) Sub过程以Sub开始,以End Sub结束,在Sub和End Sub之间是过程体,用来描述Sub过程的功能。 (2) Public定义的过程为公有过程,可被任何过程调用;Private、Static定义的过程为局部过程,只能在定义此过程的模块中被调用。 (3) 子过程名:必须是Visual Basic中合法的标识符,符合标识符的命名规则。,(4) 形式参数列表:用来表示形参的类型、个数、位置,列表中可以有多个参数,参数之间用“,”分割。过程中可以没有任何形式参数,但括号不能省略。参数的定义格式为: ByVal | ByRef 变量名 () As 类型 , ByVal表示当此过程被调用时,参数是按值传递的;默认或ByRef表示参数是按地址传递的。 (5) Exit Sub 是退出Sub过程的语句,它通常与条件语句联用,即当满足一定条件时退出Sub过程。,6.1.2 Sub过程的创建,Sub过程通常在窗体模块(.FRM)和标准模块(.BAS)中创建。 创建Sub过程有两种方式 一是通过定义直接创建; 二是利用Visual Basic中的工具创建。,6.1.3 Sub过程的调用,Sub过程的调用格式有两种方式: 直接用过程名调用和利用Call语句调用; (1) 直接用过程名调用格式:过程名 实际参数列表; (2) 利用Call语句调用格式:Call 过程名(实际参数列表)。,6.2 Function过程,Function过程也叫函数过程,是过程的另一种形式。在Visual Basic系统中,函数分为内部函数和外部函数。 Function过程和Sub过程不同之处是Function过程将返回一个值,而Sub过程没有返回值。,6.2.1 Function过程的定义,6.2.2 Function过程的创建,创建Function过程同Sub过程,Function过程可以在标准模块和窗体模块中创建. 方法一 通过定义直接创建; 方法二 利用Visual Basic中的工具创建.,6.2.3 Function过程的调用,语句格式如下: Call 函数名(实际参数列表) 函数名 实际参数列表,6.3 过程的参数传递,参数分为两种:形式参数和实际参数,6.3.1 形式参数和实际参数,1形式参数 是指在定义通用过程时,出现在Sub或Function语句中的过程名后面圆括号内的数,是用来接收传送给子过程的数据。当形式参数有多个时,形参表中的各个变量之间用逗号分隔。,2实际参数 实际参数是指在调用Sub或Function过程时,写入子过程名或函数名后括号内的参数,其作用是将它们的数据(数值或地址)传送给Sub或Function过程与其对应的形参变量。 实参可由常量、变量、表达式、数组名(后加左、右括号,如A())组成,实参表中各参数间用逗号分隔。,6.3.2 按值传递和按地址传递参数,1. 按值传递 使用ByVal关键字的形式参数是按值传递的,传递的只是实参的副本,形参值的改变不会影响实参的值。 2. 按地址传递 默认或使用ByRef关键字的形式参数是按地址传递的。此时,形式参数和实际参数共用同一内存单元,过程中对形式参数改变也会影响实际参数的值。,(1) 在Sub和Function过程调用时,若实参是常量或表达式,无论定义时使用按值传递还是按地址传递,此时都采用按值传递的方式进行参数传递的处理。 (2) 当数组作为实际参数传递给过程时,一般采用按地址方式进行传递。 (3) 若形式参数定义是按地址传递,调用时想按值传递,可以将实参变量加上括号,将其转换成表达式。,参数传递时应注意的问题,6.3.3 传递数组,除了可以使用变量作为参数之外,还可以用数组作为参数在 传送数组时,除遵守参数传递的一般规则外,还应注意以下 几点: (1) 每一个过程只能引用一个数组作为参数。 (2) 作为参数的数组只能放在过程所有参数的最后面。 (3) 数组参数只能按地址传递,在形参数组前不能用 ByVal修饰。 (4) 数组参数只能是一维的。 (5) 数组作为形参时,将数组名写入形参列表中,并略去数组的上下界,但数组名后的括号不能省略;实参数组的数据类型必须和形参数组的类型一致,实参数组后面的括号可以省略,但为了便于阅读,建议一般不要省略。,6.4 过程的嵌套与递归调用,在一个过程中调用另一个过程,称为过程的嵌套调用; 过程直接或间接地调用其自身,称为过程的递归调用。,6.4.1 过程的嵌套调用,6.4.2 过程的递归调用,Visual Basic的过程具有递归调用功能。例如,对阶乘的定义: Visual Basic允许在一个Sub子过程和Function过程的定义内部调用自己,即递归Sub子过程和递归Function函数。,6.5 应用举例,6.5.1 查找问题 6.5.2 插入问题,