【VB开源代码栏目提醒】:本文主要为网学会员提供“vb过程绝对有用 - 其它资料”,希望对需要vb过程绝对有用 - 其它资料网友有所帮助,学习一下!
第六章 过 程6.1 函数过程的定义与调用6.2 子过程的定义与调用6.3 参数传递6.4 递 归6.5 综合应用 1 n m例:已知 Cn ,求 C 4 的值。
mn - m 7 k1 1: k2 1: k3 1 n 7: m 4 For i 1 To n k1 k1 i Next i For i 1 To m k2 k2 i Next i For i 1 To n - m k3 k3 i Next i s k1 / k2 / k3 2 本章目录过程的引入: 使同类的操作不重复编写,写一次多次用 把一项复杂的
工作分成简单的功能块,分而治之过程: 完成一段独立功能,可供其他过程使用。
调用过程: 子过程: Sprg1 调用Sprg1 调用Sprg1 子过程: Sprg2 调用Sprg2 3 本章目录常用过程分类: 内部函数标准函数) Function过程 自定义函数过程 事件过程 Sub过程 自定义子过程1)过程是一段程序
代码,是相对独立的逻辑模块。
2)一个完整的
VB应用程序由若干过程和模块组成。
Sub子过程:完成一定的操作和功能,无返回值。
Function函数过程:完成一定的操作和功能,并且可 将数据处理的结果返回。
4 本章目录 6.1 函数过程的定义和调用例6.1:已知多边形各条边的长度,计 b算多边形的面积。
a S1 c计算多边形面积,可将多边形分解成 e S2 d g S3若干个三角形。
计算三角形面积的公 f式如下: 1area cc xc y c z c x y z 2 5 本章目录 6.1 函数过程的定义和调用定义函数过程area:Function areax y z As Single Dim c c 1 / 2 x y z area Sqrtc c - x c - y c - zEnd Function Sub command1_click 调用函 … 输入若干个三角形边长 数过程 Sareaabcareacdeareaefg Msgbox面积 S End Sub 6 本章目录 6.1 函数过程的定义和调用6.1.1 函数过程的定义 在窗体、模块等的
代码窗口把插入点放在所有现有过程之外,直接输入函数过程。
定义函数过程的形式如下:Public Private Function 函数名形参As 类型 变量声明 语句块 函数名表达式End Function 7 本章目录 6.1 函数过程的定义和调用 Public 全局函数过程,可被程序任何模块调用 Private 仅供本模块中的其它过程调用 形参或称哑元 只能是变量或数组名 ,仅表示参数的个数和类型,无值。
例6.2 编写一个求最大公约数的函数过程 。
Function gcd m n As Integer If m n Then t m: m n: n t Do while n0 r m Mod n : m n: n r Loop gcd m End Function 8 本章目录 6.1 函数过程的定义和调用6.1.2 函数过程的调用调用形式:函数过程名参数列表参数列表称为实参或实元:必须与形参个数相同,位置与类型一一对应。
可以是同类型的常量、变量、表达式。
9 本章目录 6.1 函数过程的定义和调用Sub Form_Click Dim x y z x 124: y 24 z gcdx y MsgBox最大公约数是 zEnd Sub Function gcd m n As Integer If m n Then t m: m n: n t 程序 Do while n0 运行 r m Mod n : m n: n r 流程 Loop gcd m End Function 10 本章目录 6.1 函数过程的定义和调用例6.3 编一函数,统计字符串中汉字的个数。
分析:在
VB中,字符以Unicode码存放,每个汉字和英文是一个字符、占有两个字节,区别是汉字的机内码最高位为1,若利用Asc函数求其码值为小于0(以补码表示),而西文字符的最高位为0,Asc函数求其码值为大于0。
11 本章目录 6.2 子过程的定义与调用6.2.1 引例以下情况使用函数过程存在不便: 不是为了获得某个函数值,而是为了某种功能的处理。
要获得多个结果。
VB中提供了使用更灵活的子过程。
例6.4编一过程,对Label1控件进行移动,通过参数Tag的值(1或-1)决定移动方向。
该过程不是为了计算获得某个结果,而是进行对控件移动的处理。
12 本章目录 6.2 子过程的定义与调用6.2.2 子过程的定义子过程定义的方法类似函数过程,形式如下:Public Private Sub 子过程名 参数
列表 局部变量或常数定义 语句 Exit Sub 语句End Sub子过程名、形参同函数过程中对应项的规定,当无形参时不要括号。
13 本章目录 6.2 子过程的定义与调用1. 子过程与函数过程的区别 把某功能定义为函数过程还是子过程,没有严格的规定。
一般若
程序有一个返回值时,函数过程直观;当有多个返回值时,习惯用子过程。
函数过程必须有返回值,函数名有类型。
子过程名没有值,也没有类型,不能在子过程体内对子过程名赋值。
14 本章目录 6.2 子过程的定义与调用2.参数
问题 形参是过程与主调程序交互的接口,从主调程序获得初值,或将计算结果返回给主调程序; 不要将过程中所有使用过的变量均作为形参; 形参没有具体的值,只代表了参数的个数、位置、类型; 形参只能是简单变量、数组名,不能是常量、数组元素、表达式。
15 本章目录 6.2 子过程的定义与调用例6.5:找定冠词的ProcThe子过程。
Sub ProcTheByVal s ByRef Count ……End Sub ……Call ProcTheText1.Text n …… 16 本章目录 6.2 子过程的定义与调用6.2.3 子过程调用子过程的调用是一句独立的调用语句,有两种形式: Call 子过程名实参列表 子过程名 实参列表用Call关键字时,若有实参,则实参必须用圆括号括起,无实参圆括号省略。
注意:若实参要获得子过程的返回值,则实参只能是变量与形参同类型的简单变量、数组名、结构类型,不能是常量、表达式,也不能是控件名。
17 本章目录 6.2 子过程的定义与调用例6.6 分别编一个统计字符串S中定冠词The出现个数的子过程和函数过程,并分别调用。
处理方法:利用InStr函数反复在字符串S找The子串。
分析:当定义好函数过程后,要改为子过程,只要将函数过程的返回结果作为子过程的形参,即在子过程中增加一个参数。
18 本章目录 6.3 参数传递6.3.1 形参与实参 在参数传递中,一般是按位置传送,按实参的位置次序与形参的位置次序对应传送,与参数名没有关系。
按位置传送是最
常用的参数传递方法,如在调用标准函数时,用户根本不知道形参名,只要关心形参的个数、类型、位置,例如Mid函数形式: Mid字符串,起始位,取几位调用语句:sMidThis is
VB ,9,2则s中的结果为“
VB”。
19 本章目录 6.3 参数传递6.3.2 传地址与传值 缺省关键字实参与形参的结合有传地址ByRef和传值ByVal两种方法。
传地址方式 当调用一个过程时,它将实参的地址传递给形参。
因此在被调过程体中对形参的任何操作都变成了对相应实参的操作,实参的值就会随过程体内对形参的改变而改变。
传值方式 当调用一个过程时,
系统将实参的值复制给形参,实参与形参断开了联系。
在过程体内对形参的任何操作不会影响到实参。
20 本章目录