VB程序设计-过程和函数

上传人:平*** 文档编号:46214044 上传时间:2018-06-24 格式:PPT 页数:53 大小:1.19MB
返回 下载 相关 举报
VB程序设计-过程和函数_第1页
第1页 / 共53页
VB程序设计-过程和函数_第2页
第2页 / 共53页
VB程序设计-过程和函数_第3页
第3页 / 共53页
VB程序设计-过程和函数_第4页
第4页 / 共53页
VB程序设计-过程和函数_第5页
第5页 / 共53页
点击查看更多>>
资源描述

《VB程序设计-过程和函数》由会员分享,可在线阅读,更多相关《VB程序设计-过程和函数(53页珍藏版)》请在金锄头文库上搜索。

1、VB程序设计唐四薪6.1 子过程的定义与调用6.2 函数的定义与调用6.3 子过程与函数的参数传递6.4 变量、过程的作用域6.5 递归6.6 常用算法举例第6章 过程与函数本节课要求1 . 掌握Sub过程、Function函数的定义和调用2. 理解Sub过程和Function函数的区别3. 掌握编写过程和函数的一般流程引入过程和函数的目的1.依据结构化程序设计的思想,实现模块化的程序设计当需解决的问题规模较大、复杂时,可以按功能细分成一 个一个小的功能模块,这样的小程序段,在VB中被称为 过程;2. 简化程序中多处重复出现处理相同功能的程序段的设计问题过程的定义:过程是一段能完成一个或多个特

2、定 功能的独立的程序段,并可以被其他过程调用特点:功能独立;可被调用VB中的过程有两种:(1) 系统提供的内部函数过程和事件过程。(2) 用户根据应用的需要而设计的过程。在VB中根据应用的要求可分为几种类型的自定义过 程:(1) 以“Sub”保留字开始的子过程。(2) 以“Function”保留字开始的函数过程 。(3) 以“Property”保留字开始的属性过程 。(4) 以“Event”保留字开始的事件过程。本书仅讨论以“Sub”开头的子过程和以 “Function”开头的函数过程。 过程和函数在VB中,过程有两种,一种是Sub子过程,一种 是Function函数。两者的区别在于:Sub子

3、过程只执行程序而不返回值,而Function函数执行程序后会返回值。函数Function和过程Sub的区别函数 Function参数1参数2返回值过程 Sub函数:既有输入又有输出:如数控机床、打爆米花 的机器过程:只有输入没有输出:如光驱参数n打爆米花建立函数的一般过程Function 函数名(形式参数1,形式参数2, ) End Function输入:?输出:? Function 打爆米花(粮食,糖精) 打爆米花=爆米花 End Function6.1.1 子过程的定义在VB中用Sub 语句定义的过程叫做子过程。 可按下列格式定义子过程:Sub 子过程名 ( 形式参数列表 )语句序列End

4、 Sub子过程的定义Sub sub1 (a as long, b as long)c = a+bprint cEnd Sub形式参数列表由若干个形式参数构成,参数之间用逗号 分隔。每个形式参数按下列格式定义::形式参数名 As 类型名省略类型说明则表示是Variant类型。子过程中可以使用Exit Sub语句跳出子过程。 6.1.2 子过程的调用子过程只能作为语句被调用,不能作为表达式被调 用(即不能把子过程赋值给某个变量)。可以用下列两 种方法调用子过程:Call 子过程名( 实际参数列表 )或 子过程名 实际参数列表 以上两种调用方法功能完全一致。注意,当使用 Call 语法时,参数必须在

5、括号内。 Call sub1(2,3)或 sub1 2,3 6.1.2 通用子过程 7)End Sub标志Sub过程执行结束,程序将返回 调用该Sub过程的语句处继续执行; 8)过程不能嵌套定义。 Private Sub Command1_Click() Call P() End SubPrivate Sub () Print “输出结果为:” End Sub事件过程事件过程的调用:当有事件发生时,系统会自动调用与事件相对应的事件过程。事件过程是与对象相关联的,是对象对事件做出的响应。事件过 程的名称由对象名、下划线、事件名连接而成。 Sub过程(子程序)Sub子程序的语法如下:Sub 子程序

6、名(形式参数1,形式参数2,) End Sub调用子程序的两种方式:(1)Call 子程序名(实际参数1,实际参数2, ) (2)子程序名 实际参数1,实际参数2,Function函数Function函数的语法如下:Function 函数名(形式参数1,形式参数2, ) End Function调用函数变量= Function 函数名(参数1,参数2,) 函数可以向变量一样引用和参与运算6.2 定义Function过程定义Function过程说明:1)Function过程以Function语句开头,以End Function结束;中间代码部分为函数体;2)函数名有返回值,其值类型由As 数据类

7、型指定;3)函数体内一般都会至少为函数名赋值一次;如果 不赋值,函数返回值默认为0或空;4)函数中途可以利用Exit Function退出。Function函数返回值的方式与Sub过程不同的是,Function函数通过函数名返回 一个值,这个值是在过程的语句中赋给函数名的。Function mySquare(intA,intB)intA和intB是形式参数 Dim lngSum lngSum=intA2+intB2 mySquare=lngSum End Function函数可以作为表达式来调用。格式为:函数名(实际参数列表)如果函数要直接作为语句来使用,则必须按照 子过程的方式来调用,当然此

8、时也就不能利用函数的 返回值了。例如下列三条语句都可以调用前面定义的函数 Fun1:Print fun1(2, 3)Call fun1(2, 3)fun1 2, 3 6.2.2 函数的调用6.2 定义Function过程例如,求n! Private Function fac%(n As Integer) If n0m = nn = rr = m Mod nLoopgcd = nEnd FunctionPrivate Sub Change(x1%, x2%) Dim Temp As Integer Temp = x1 x1 = x2 x2 = Temp End Sub过程和函数需注意的几点过程的

9、定义不可以嵌套函数和过程必须先定义才能使用使用自定义过程的两个步骤:定义过程和调用过程函数和过程的相互转换写函数首先要确定函数的输入和输出 Private Sub Command1_Click() Print sum(5, 3) End Sub Function sum(x, y) s = x + y sum = s End Function定义函数调用函数函数和过程的相互转换Private Sub Command1_Click() Call sum(5, 3, s) Print s End Sub Sub sum(x, y, s) s = x + y End Sub定义过程调用过程例题编写一

10、个求任意三角形面积的函数Private Function Area!(a!, b!, c!) Dim t! t = (a+b+c)/2 Area = Sqr(t*(t-a)*(t-b)*(t-c) End Function例题编写一个求任意三角形面积的子过程Private Sub Area (a!, b!, c!, s!) Dim z! z = (a+b+c)/2 s = Sqr(z*(z-a)*(z-b)*(z-c) End Sub过程实例定义Sub过程判断手机号码格式是否正确并调用它 Sub IsTel (tel)if len(tel)=11 and IsNumeric(tel) then

11、Print “手机号码格式正确“elsePrint “格式不正确,请重新输入“end ifend SubCall IsTel(“13388888888“)调用Sub过程 函数的实例限制标题显示的内容长度的函数 ,如果输入的字符串(tit)长度大于指定的长 度(n),则返回按指定的长度截取前面部分并加省略号的字符串,如果长度 小于等于指定长度,则返回原字符串。 function title(tit,n)if len(tit)n thentitle=left(tit,n) as (b)Print “b=“; b End Sub 说明:本例中,圆括号用于将实际参数由变量b转换为表达式,即按 值传递(

12、s(b),否则就是按址传递(s a)。2.可选参数在形式参数前加上关键字Optional可以指定该形式参数为可选参 数。可选参数在过程调用时可以不提供与可选参数对应的实际参数。 可选参数可以指定默认的缺省值。3.命名参数实际参数使用“形式参数名:= 实际参数”的格式即为命名参数 。命名参数出现的位置可以与定义时的顺序无关。但需注意非命名参 数仍需按定义时的位置出现,所以非命名参数在定义时应排在第一个 命名参数之前。4.数组作为参数和返回值数组可以作为实际参数传递到过程中。此时形式参数应为 Variant类型或与实际参数类型完全相同的数组类型。作为形式参数 的数组应为可变数组,用数组名跟空的圆括

13、号表示。函数的返回值也 可以是数组,此时类型说明为Variant类型或“As 类型()”。6.3 子过程与函数的参数传递【例6-7】下列程序运行后,单击窗体时显示“9”、 “8”、“7”。Option ExplicitFunction f(a() As Long) As Long()f = aEnd FunctionSub Form_Click()Dim b() As LongDim c(2) As Longc(0) = 9c(1) = 8c(2) = 7b = f(c)print b(0)b()=f(c()print b(1)Print f(c)(2) 函数表达式直接带数组下标代表数组元 素

14、End Sub6.3 子过程与函数的参数传递5.可变个数参数将最后一个形式参数声明为Variant类型的数组,同时在前面加上 ParamArray关键字,就变成可变个数的参数;调用过程时可输入任意个 数的参数,输入的参数转变为数组的元素;也可以省略该参数。 ParamArray 关键字不能与 ByVal或ByRef一起使用,也不能在参数列表 中出现Optional。【例6-8】下列程序运行后,每次单击窗体就会显示“6”。Option ExplicitFunction f(a, ParamArray b()f = a + b(0) + b(1)End FunctionSub Form_Click

15、()Print f(1, 2, 3)End Sub注意:在用可变个数参数时,实参个数不能少于使用的形参个数。6.3 子过程与函数的参数传递6.4 变量、过程的作用域 1.过程的作用域定义过程时在过程名前加关键字Private,则该 过程为私有过程,仅在定义该过程的模块内有效,其 他模块的过程不能调用该过程。如果没有加关键字 Private或加了关键字Public,则该过程为公共过程 ,在整个工程内有效,其他模块内的过程可以调用该 过程。调用当前过程所在模块定义的过程可以直接使用 过程名。调用其他窗体模块或其他标准模块定义的过 程,使用“模块名.过程名”的格式。Private Sub Form_

16、Click()Print “第1次调用过程b“bPrintPrint “第2次调用过程b“bPrintPrint “第1次调用静态过程e“e 0PrintPrint “第2次调用静态过程e“e 0 End Sub6.4 变量、过程的作用域 运行结果如图所示。 过程如果直接或间接地调用了自身,这就是 递归过程。例【6-12】求n!的递归函数。 Public Function FN(n As Integer) As Integer if n=1 Then FN=1 Else FN=n*FN(n-1) End if End Function 可见递归是一个不断自己调用自己的过程6.5 递归【例6-13】一只猴子一天从山上摘来一袋桃子,从这天开始,它每天都要把 袋中的桃子平分为二堆,吃掉其中的一堆,然后再从剩下的桃中拿出一个解 谗,等到第10天,它发现袋中只有一只桃可吃,问猴子总共摘了

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号