VB程序设计过程和函数PPT学习教案_第1页
VB程序设计过程和函数PPT学习教案_第2页
VB程序设计过程和函数PPT学习教案_第3页
VB程序设计过程和函数PPT学习教案_第4页
VB程序设计过程和函数PPT学习教案_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、会计学1VB程序设计过程和函数程序设计过程和函数6.1 子过程的定义与调用6.2 函数的定义与调用6.3 子过程与函数的参数传递6.4 变量、过程的作用域6.5 递归6.6 常用算法举例第1页/共53页第2页/共53页第3页/共53页 VB VB中的过程有两种中的过程有两种: : (1) (1) 系统提供的系统提供的内部函数过程内部函数过程和和事件过程事件过程。 (2) (2) 用户根据应用的需要而设计的过程。用户根据应用的需要而设计的过程。 在在VBVB中根据应用的要求可分为几种类型的自定义中根据应用的要求可分为几种类型的自定义过程过程: : (1) (1) 以以“SubSub”保留字开始的

2、子过程。保留字开始的子过程。 (2) (2) 以以“FunctionFunction”保留字开始的函数过保留字开始的函数过程。程。 (3) (3) 以以“PropertyProperty”保留字开始的属性过保留字开始的属性过程。程。 (4) (4) 以以“EventEvent”保留字开始的事件过程。保留字开始的事件过程。 本 书 仅 讨 论 以本 书 仅 讨 论 以 “ S u bS u b ” 开 头 的 子 过 程 和 以开 头 的 子 过 程 和 以“FunctionFunction”开头的函数过程。开头的函数过程。 第4页/共53页第5页/共53页函数函数Function参数1参数2返

3、回值返回值过程过程Sub函数:既有输入又有输出:如数控机床、打爆米函数:既有输入又有输出:如数控机床、打爆米花的机器花的机器过程:只有输入没有输出:如光驱过程:只有输入没有输出:如光驱参数n第6页/共53页第7页/共53页第8页/共53页第9页/共53页 在在VBVB中用中用Sub Sub 语句定义的过程叫做子过程。语句定义的过程叫做子过程。可按下列格式定义子过程:可按下列格式定义子过程: Sub Sub 子过程名子过程名 ( ( 形式参数列表形式参数列表 ) 语句序列语句序列 End SubEnd Sub 第10页/共53页第11页/共53页 子过程只能作为语句被调用,不能作为表达式被子过程

4、只能作为语句被调用,不能作为表达式被调用调用( (即不能把子过程赋值给某个变量即不能把子过程赋值给某个变量) )。可以用下。可以用下列两种方法调用子过程:列两种方法调用子过程: Call Call 子过程名子过程名( ( 实际参数列表实际参数列表 ) )或或 子过程名子过程名 实际参数列表实际参数列表 以上两种调用方法功能完全一致。注意,当使用以上两种调用方法功能完全一致。注意,当使用 Call Call 语法时,参数必须在括号内。语法时,参数必须在括号内。 Call sub1Call sub1(2 2,3 3)或或 sub1 2sub1 2,3 3 第12页/共53页Private Sub

5、()Print “输出结果为:”End Sub第13页/共53页第14页/共53页第15页/共53页第16页/共53页第17页/共53页第18页/共53页函数可以作为表达式来调用。格式为:函数可以作为表达式来调用。格式为:函数名函数名 (实际参数列表)(实际参数列表) 如果函数要直接作为语句来使用,则必须按如果函数要直接作为语句来使用,则必须按照子过程的方式来调用,当然此时也就不能利用函数照子过程的方式来调用,当然此时也就不能利用函数的返回值了。的返回值了。例如下列三条语句都可以调用前面定义的函例如下列三条语句都可以调用前面定义的函数数Fun1Fun1: Print fun1(2, 3)Pri

6、nt fun1(2, 3) Call fun1(2, 3) Call fun1(2, 3) fun1 2, 3 fun1 2, 3 第19页/共53页第20页/共53页PrivateSubChange(x1%,x2%)DimTempAsIntegerTemp=x1x1=x2x2=TempEndSub第21页/共53页第22页/共53页定义函数定义函数调用函数调用函数第23页/共53页定义过程定义过程调用过程调用过程第24页/共53页Private Function Area!(a!, b!, c!)Dim t!t = (a+b+c)/2Area = Sqr(t*(t-a)*(t-b)*(t-c

7、)End Function第25页/共53页Private Sub Area (a!, b!, c!, s!)Dim z!z = (a+b+c)/2s = Sqr(z*(z-a)*(z-b)*(z-c)End Sub第26页/共53页第27页/共53页值nend ifnend function第28页/共53页第29页/共53页n要一致。要一致。第30页/共53页第31页/共53页第32页/共53页Private Sub Command1_Click()Dim x%,y%x = 12y = 21Call Exchange(x,y)Print “主过程中:“;x,yEnd Sub第33页/共53

8、页第34页/共53页第35页/共53页1.1.参数传递方式参数传递方式 过程的参数有两种传递方式:过程的参数有两种传递方式:传值(传值(ByValByVal)传地址(传地址(ByRefByRef)(默认方式默认方式)。)。 按值传递参数按值传递参数: :在形式参数前加上关键字在形式参数前加上关键字ByValByVal表示指定按值传递参数。调用时实际参数仅将值表示指定按值传递参数。调用时实际参数仅将值传递给形式参数,传递给形式参数,形式参数的任何改变不会影响形式参数的任何改变不会影响实际参数。实际参数。 第36页/共53页第37页/共53页【例6-4】下列程序运行后,每次单击窗体就会显示“a=3

9、”,“b=8”。 Option Explicit Dim a As Long Dim b As Integer Sub s(c As Long) c = c + 1 End Sub Sub Form_Click() a = 2 b = 8 s a Print a=; a s (b) Print b=; bEnd Sub 说明:本例中,圆括号用于将实际参数由变量b转换为表达式,即按值传递(s(b),否则就是按址传递(s a)。第38页/共53页2.2.可选参数可选参数 在形式参数前加上关键字Optional可以指定该形式参数为可选参数。可选参数在过程调用时可以不提供与可选参数对应的实际参数。可选

10、参数可以指定默认的缺省值。3.3.命名参数命名参数 实际参数使用“形式参数名:= 实际参数”的格式即为命名参数。命名参数出现的位置可以与定义时的顺序无关。但需注意非命名参数仍需按定义时的位置出现,所以非命名参数在定义时应排在第一个命名参数之前。4.4.数组作为参数和返回值数组作为参数和返回值 数组可以作为实际参数传递到过程中。此时形式参数应为Variant类型或与实际参数类型完全相同的数组类型。作为形式参数的数组应为可变数组,用数组名跟空的圆括号表示。函数的返回值也可以是数组,此时类型说明为Variant类型或“As 类型()”。第39页/共53页【例例6-76-7】下列程序运行后,单击窗体时

11、显示“9”、 “8”、“7”。 Option Explicit Function f(a() As Long) As Long() f = a End Function Sub Form_Click() Dim b() As Long Dim c(2) As Long c(0) = 9 c(1) = 8 c(2) = 7 b = f(c) print b(0) b()=f(c() print b(1) Print f(c)(2) 函数表达式直接带数组下标代表数组元素 End Sub第40页/共53页5.5.可变个数参数可变个数参数 将最后一个形式参数声明为Variant类型的数组,同时在前面加

12、上ParamArray关键字,就变成可变个数的参数;调用过程时可输入任意个数的参数,输入的参数转变为数组的元素;也可以省略该参数。ParamArray 关键字不能与 ByVal或ByRef一起使用,也不能在参数列表中出现Optional。【例例6-86-8】下列程序运行后,每次单击窗体就会显示“6”。 Option Explicit Function f(a, ParamArray b() f = a + b(0) + b(1) End Function Sub Form_Click() Print f(1, 2, 3) End Sub 注意:在用可变个数参数时,实参个数不能少于使用的形参个数

13、。第41页/共53页第42页/共53页n Print 第1次调用静态过程en e 0n Printn Print 第2次调用静态过程en e 0nEnd Sub运行结果如图所示。 第43页/共53页第44页/共53页第45页/共53页n Num = Val(InputBox(请输入天数:)n Label1.Caption = 桃子数量为: & Eat(Num)nEnd SubnPrivate Function Eat(N As Integer) 递归函数nIf N = 1 Thenn Eat = 1n Elsen Eat = 2 * Eat(N - 1) + 2n End IfnEnd

14、 Function第46页/共53页n辗转相除法,是计算两个数最大公约数的传统算法。步骤如下:n(1)如果a L Then j = 0 Next i code = aEnd Function Private Sub Form_click() Dim a() As Byte Dim b() As Byte Dim c() As Byte a = 用于加密的密码 b = 密码 Print 加密前的明文:; a a = code(a, b) 将原文与密码进行异或运算,实现对原文的加密 Print 加密后的密文:, a a = code(a, b) 将密文与密码进行异或运算,实现对密文的解密 Print 解密后的明文:, aEnd Sub第49页/共53页n str2n = numn End Function第50页/共53页nDim fx As Doublenfx = a(0)nFor i = 1 To UBound

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论