过程是VB程序基本组成单位.ppt课件_第1页
过程是VB程序基本组成单位.ppt课件_第2页
过程是VB程序基本组成单位.ppt课件_第3页
过程是VB程序基本组成单位.ppt课件_第4页
过程是VB程序基本组成单位.ppt课件_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

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

文档简介

1、第六章 过程过程是VB的根本组成单位,一些复杂的义务可以分解成为根本的过程来担任完成!过程的作用 当需处理的问题规模较大、复杂时,可以按功能细分成一个一个小的功能模块,这样的小程序段,在VB中被称为过程; 过程是VB程序的根本组成单位。义务事件过程子过程函数过程过程的分类 VB过程分为子过程(Sub)、函数过程(Function)、属性过程(Property)三种。 本书我们主要学习子过程和函数过程。 考试时,要严厉区分子过程和函数过程的用法。 引例6.1 定义Sub子过程 我们早就运用过子过程,由于在VB中每一个事件过程都是子过程; VB程序是从某个事件过程首先驱动开场的。 本章主要学惯用户

2、自定义子过程的定义方法。6.1.1 事件过程 Private Sub 对象名_事件名(参数列表部分变量和常量的声明语句块Exit Sub语句块End Sub 事件过程原型用户不能改动; 事件过程是私有的6.1.2 通用子过程(用户自定义过程) Private|Public Static Sub 过程名(形参列表部分变量和常量的声明语句块Exit Sub语句块End Sub 通用子过程的作用在于将反复出现的程序段或功能较复杂的程序段独立或细分出来的小的程序段,即为经过子过程。6.1.2 通用子过程(用户自定义) 子过程定义阐明:子过程定义阐明: 1子过程以子过程以Sub开场,开场,End Sub

3、终了,终了,中间可以利用中间可以利用Exit Sub中途退出过程中途退出过程; 2以以Private定义的子过程是私有的,定义的子过程是私有的,只允许本模块内的过程调用;用只允许本模块内的过程调用;用Public定义的子过程是公有的,允许定义的子过程是公有的,允许被整个工程中的恣意过程调用;系统被整个工程中的恣意过程调用;系统缺省为缺省为Public; 3Static表示静态表示静态“部分变量,变量部分变量,变量一经定义,在整个程序运转期间不会一经定义,在整个程序运转期间不会被重新初始化,不能运用在被重新初始化,不能运用在“通用通用-“声明字段中;声明字段中;6.1.2 通用子过程(用户自定义

4、)4过程名的命名规那么与变量名一样,即第一个字符必需是字母或汉字,后面由字母、汉字、数字或下划线组成,不能运用VB中的关键字;过程名不要重名;5形参列表:这个列表的功能再于接纳必要的数据信息,建立与主调程序之间的关系;参数的个数可以为零个、1个甚至多个;参数间用逗号分隔;括号不可省略;6形参列表的方式:(ByVal a As Integer, ByRef b As Integer)6.1.2 通用子过程(用户自定义)7End Sub标志Sub过程执行终了,程序将前往调用该Sub过程的语句处继续执行;8过程不能嵌套定义。Private Sub Command1_Click()Call P()En

5、d SubPrivate Sub ()Print “输出结果为:End Sub6.1.2 通用子过程(用户自定义) Sub子过程的建立方法 1利用命令建立不常用 进展“代码窗口; 执行“工具菜单中的“添加过程命令; 在出现的对话框中进展设置。6.1.2 通用子过程(用户自定义) Sub子过程的建立方法 2直接在代码窗口中生成 进展“代码窗口; 选择“通用-“声明,光标停留在一切过程外面的空白行处; 按Sub子过程的定义规那么输入Private Sub 过程名(参数) 按回车键,即可创建一个空的Sub子过程。6.1.2 通用子过程(用户自定义) Sub子过程的过程体代码: 子过程的功能主要是在过

6、程体内完成的,过程名主要是为找到这个过程而提供道路的; 子过程的代码和事件过程的代码类似;如: Private Sub Change(x1 As Integer,x2 As Integer) Dim Temp As Integer Temp = x1 x1 = x2 x2 = Temp End Sub6.2 定义Function过程 Function过程又称函数过程; 在第三章中,我们学习了大量的VB系统函数,这些函数用户只可以运用,不可以修正; VB提供的Function过程,就是让用户可以本人创建特殊功能的函数,用户自定义函数。6.2 定义Function过程 定义Function过程的方

7、式如下: Private|PublicStatic Function 函数名(参数列表)As 数据类型部分变量和常数声明语句块函数名=表达式Exit Function语句块函数名=表达式 End Function6.2 定义Function过程 定义Function过程阐明: 1Function过程以Function语句开头,以End Function终了;中间代码部分为函数体; 2函数名有前往值,其值类型由As 数据类型指定; 3函数名不同于子过程名,在VB中,为函数名赋予了存储值的功能,而过程名不可以,所以函数体内普通都会至少为函数名赋值一次;假设不赋值,函数前往值默以为0或空; 4函数中

8、途可以利用Exit Function退出。6.2 定义Function过程 例如,求n! Private Function fac%(ByVal n As Integer) Dim i As IntegerIf n0 Then fac = -1:Exit FunctionElsefac = 1For i = 1 To nfac = fac*iNext iEnd If End Function6.2 定义Function过程 例如,求gcd(m, n)最大公约数 Private Function gcd%(ByVal m%,ByVal n%) Dim r%,t%If mn Then Call C

9、hange(m, n) 前面定义的r = m Mod nDo While r0m = nn = rr = m Mod nLoopgcd = n End FunctionPrivate Sub Change(x1%, x2%)Dim Temp As IntegerTemp = x1x1 = x2x2 = TempEnd Sub6.3 过程调用 除了事件过程是由运用者发出动作触发外,多数过程都是要间接的由事件过程或其他过程调用才可以运用。6.3.2 Sub过程调用Sub子过程调用方法:1用Call语句调用Sub过程Call 过程名(实参表)阐明:过程名为被调用过程的名字;实参与形参是对应的,个数、

10、类型一一对应;在过程定义的列表中为形参,在调用时,为实参;实参可以是详细的值、或有值的变量、属性,而形参那么是担任接纳实参值的。2直接将过程写成语句方式:过程名 实参表阐明:这种调用方式,不用加Call;同时要将实参表的括号去掉并与过程名之间加一个空格。6.3.2 Sub过程调用 编写一个子过程,打印杨辉三角形。Private Sub YH(n As Integer) Dim a() As Integer, i%, j% Redim a(1 To n, 1 To n) For i = 1 To n For j = 1 To i If j=1 Or i=j Then a(i,j) = 1 Els

11、e a(i,j) = a(i-1,j)+a(i-1,j-1) End If Print Tab(6*j-Len(Cstr(a(i,j)+1);a(i,j); Next j Print Next iEnd Sub6.3.3 调用Function过程 调用Function过程的方法比较简单,与VB内部函数的调用方法一样,即在表达式中写出它的称号和相应的参数; v = 函数名(实参列表) Print 函数名(实参列表) 当然也可以用Call语句方式,此时将放弃函数名前往值的功能,功能与子过程一致6.3.4 调用其他模块中的过程 当一个过程可以被其他模块调用时,首先要求这个过程为Public公有的。

12、1调用窗体模块中的公有过程Call 窗体名.子过程名(实参表 2调用规范模块中的公有过程,在没有重名的前提下,可直接调用:Call 子过程名(实参表 否那么,Call Module1.子过程名(实参表例题 编写一个求恣意三角形面积的函数Private Function Area!(a!, b!, c!)Dim t!t = (a+b+c)/2Area = Sqr(t*(t-a)*(t-b)*(t-c)End Function例题 编写一个求恣意三角形面积的子过程Private Sub Area (a!, b!, c!, s!)Dim z!z = (a+b+c)/2s = Sqr(z*(z-a)*

13、(z-b)*(z-c)End Sub6.4.1 形参与实参 形参:置于过程定义时,参数列表中的变量或数组;在过程被调用前,系统不对其分配空间; 实参:当程序中想调用某过程时,所提供的实践值; 当实参和形参结合的时候,形参才被分配空间,接纳由实参传送过来的值; 形参、实参个数、类型、位置要一致。6.4.1 形参与实参 常见的错误 Private Sub F1(a%,b%) . End Sub Private Sub Command1_Click()Dim x!,y!x = 3.14:y = 123Call F1(x,y) Call F1(x) End Sub6.4.23 参数传送方式 传值ByV

14、al 传址ByRef或省略默许 区别1:形参定义前面放的关键字不一样; 区别2:形参接纳到的值不一样; 区别3:形参对实参的影响不一样6.4.23 参数传送方式 例如:两个数的交换) Private Sub Exchange(ByVal a%, ByVal b%) Dim t% t = a a = b b = t Print a,b End SubPrivate Sub Command1_Click()Dim x%,y%x = 12y = 21Call Exchange(x,y)Print “主过程中:“;x,yEnd Sub6.4.23 参数传送方式 阐明: 形参前加ByVal时表示传值 不

15、加或加ByRef时表示传址 传值是一方向的 传址是“双方向的6.4.23 参数传送方式Private sub add(x as integer, y as integer, z as integer)z=x+yx=x+1y=y+1print “子过程中子过程中 & x & y & zEnd subPrivate sub Form_Click()dim a as integer, b as integer, c as integera=3:b=2:c=1add a, b, c 或者写成或者写成Call add(a,b,c)print “外部过程中外部过程中 & a

16、 & b & cEnd sub6.4.23 参数传送方式Private sub add( ByVal x as integer, ByVal y as integer, ByVal z as integer)z=x+yx=x+1y=y+1print “子过程中子过程中 & x & y & zEnd subPrivate sub Form_Click()dim a as integer, b as integer, c as integera=3:b=2:c=1add a, b, cprint “外部过程中外部过程中 & a & b &am

17、p; cEnd sub6.4.23 参数传送方式以下程序运转后,单击以下程序运转后,单击Command1结果为:结果为:Private Sub Command1_Click( ) a = 10:b = 20 Call xy1(a, b) Print a,b xy2 a, b Print a,bEnd SubPublic Sub xy1(x, ByVal y) x = x+y y = x-y x = x-yEnd SubPublic Sub xy2(ByVal x, y) x = x+y y = x-y x = x-yEnd sub6.4.4 数组元素参数 在某些问题中,会将数组中的某个值或者全

18、部元素传送给形参 编写一个子过程:求恣意一维数组中存放数据的乘积 程序6.4.4 数组元素参数 编写一个函数求恣意数组中的最大值Private Function Max%(a%()Dim i%,m%m = a(LBound(a)For i = LBound(a)+1 To UBound(a)If ma(i) Then m = a(i)Next iMAX = mEnd Function6.4.4 数组元素参数 编写一个子过程求恣意数组中的最大值Private Sub Max(a%(), ByRef m%)Dim i%m = a(LBound(a)For i = LBound(a)+1 To UB

19、ound(a)If ma(i) Then m = a(i)Next iEnd Sub 程序6.4.5 对象参数 对象参数的传送为传址6. 5 嵌套过程和递归过程 嵌套过程并非嵌套定义过程,在VB中不可以嵌套定义过程,这里指嵌套调用过程,即在一个被调用过程中还可以调用另一个过程 递归是指程序的递推与回归 调用是本章中一个非常重要的概念,调用伴随着等待系统会保管“现场,等待从被调用过程前往调用过程。6.5.1 嵌套过程书中的例子本人看 求恣意三角形面积 程序Sub Command1_Click() Call F1(y) Print yEnd SubSub F1 (x) x=4*F2(x-1)End

20、 SubFunction F2 (x) F2=3*F3(x-1)End SubFunction F3 (x) F3=2*xEnd Sub6.5.2 递归过程 递归过程属于嵌套调用过程的一种特殊情况;在VB中,允许某过程本人调用本人,这样调用被称为递归调用,递归包括递推式和终止值两个缺一不可的条件。 程序6.5.2 递归过程Function fac%(n%) If n=1 then fac = 1 Else fac=n*fac(n-1) End IfEnd functionFunction fac%(n%) If n=1 then fac = 1 Else fac=n*fac(n-1) End

21、IfEnd functionFunction fac%(n%) If n=1 then fac = 1 Else fac=n*fac(n-1) End IfEnd function递推递推Sub Form_Click() k% = 3 x = fac(3)End Sub6.5.2 递归过程 求最大公约数求最大公约数 Private Function gcd(ByVal m%,ByVal n%)If m Mod n=0 Thengcd = nElsegcd = gcd(n, m Mod n)End If End Function0Mod)Mod,gcd(0Mod),gcd(nmnmnnmnnm6

22、.5.2 递归过程记住: 假设上述求阶乘的函数中少了 : If n = 0 or n = 1 Then fac = 1 即仅有语句:fac = n * fac(n - 1) 程序运转将呵斥何结果?由此可见构成递归的构造如下:递归终了条件及终了时的值;能用递归方式表示,并且递归向终止条件开展。6. 6 变量的作用域 变量的作用域,即变量起作用的范围和生存期 变量的作用域在VB中分三个级别:过程级、模块级、工程级6. 6 变量的作用域 过程级:指在某过程内定义的变量,定义时可以利用Dim和Staic两个关键字,这种级别的变量又称为部分变量 模块级:指在窗体的通用声明和规范模块中用Dim和Priva

23、te定义的变量 工程级:指在窗体的通用声明和规范模块中用Public定义的变量,这个级别的变量又称为全局变量。6. 6 变量的作用域 过程级的作用域:仅在定义它的过程中起作用 模块级的作用域:对定义它的窗体或规范模块中的全部过程都起作用 工程级的作用域:对整个程序中的恣意窗体恣意模块中的过程都起作用6. 6 变量的作用域 同名变量的运用:当变量的级别不一样时,可以同名 同名在运用上以最内层为主 特殊情况下,需求指出属于哪个窗体或模块 Form1.x Module1.y。6. 7 综合运用a(1) a(2) a(3) a(4) a(5) a(6) a(7) a(8)1122334455667788假设n = 3 -a(1) a(2) a(3) a(4) a(5) a(6) a(7) a(8)6677881122334455Private S

温馨提示

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

评论

0/150

提交评论