过程是vb的基本组成单位

上传人:kms****20 文档编号:57135968 上传时间:2018-10-19 格式:PPT 页数:50 大小:221KB
返回 下载 相关 举报
过程是vb的基本组成单位_第1页
第1页 / 共50页
过程是vb的基本组成单位_第2页
第2页 / 共50页
过程是vb的基本组成单位_第3页
第3页 / 共50页
过程是vb的基本组成单位_第4页
第4页 / 共50页
过程是vb的基本组成单位_第5页
第5页 / 共50页
点击查看更多>>
资源描述

《过程是vb的基本组成单位》由会员分享,可在线阅读,更多相关《过程是vb的基本组成单位(50页珍藏版)》请在金锄头文库上搜索。

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; 3)Static表示静态“局部”变量,变量一经定义,在整个程序运行期间不会被重新初始化,不能使用在“通用”-“声明”字段中;,6.1.2 通用子过程(用户自定义),4)过程名的命名规则与变量名一样,即第一个字符必须是字母或汉字,后面由字母、汉字、数字或下划线组成,不能使用VB中的关键字;过程名不要重名; 5)形参列表:这个列表的功能再于接收必要的数据信息,建立与主调程序之间的关系;参数的个数可以为零个

4、、1个甚至多个;参数间用逗号分隔;括号不可省略; 6)形参列表的形式: (ByVal a As Integer, ByRef b As Integer),6.1.2 通用子过程(用户自定义),7)End Sub标志Sub过程执行结束,程序将返回调用该Sub过程的语句处继续执行; 8)过程不能嵌套定义。 Private Sub Command1_Click() Call P() End Sub,Private Sub () Print “输出结果为:” End Sub,6.1.2 通用子过程(用户自定义),Sub子过程的建立方法 1)利用命令建立(不常用) 进行“代码窗口”; 执行“工具”菜单中

5、的“添加过程”命令; 在出现的对话框中进行设置。,6.1.2 通用子过程(用户自定义),Sub子过程的建立方法 2)直接在代码窗口中生成 进行“代码窗口”; 选择“通用”-“声明”,光标停留在所有过程外面的空白行处; 按Sub子过程的定义规则输入Private Sub 过程名(参数) 按回车键,即可创建一个空的Sub子过程。,6.1.2 通用子过程(用户自定义),Sub子过程的过程体代码: 子过程的功能主要是在过程体内完成的,过程名主要是为找到这个过程而提供路线的; 子过程的代码和事件过程的代码类似;如: Private Sub Change(x1 As Integer,x2 As Integ

6、er) Dim Temp As Integer Temp = x1 x1 = x2 x2 = Temp End Sub,6.2 定义Function过程,Function过程又称函数过程; 在第三章中,我们学习了大量的VB系统函数,这些函数用户只可以使用,不可以修改; VB提供的Function过程,就是让用户可以自己创建特殊功能的函数,用户自定义函数。,6.2 定义Function过程,定义Function过程的形式如下: Private|PublicStatic Function 函数名(参数列表)As 数据类型 局部变量和常数声明 语句块 函数名=表达式 Exit Function 语句

7、块 函数名=表达式 End Function,6.2 定义Function过程,定义Function过程说明: 1)Function过程以Function语句开头,以End Function结束;中间代码部分为函数体; 2)函数名有返回值,其值类型由As 数据类型指定; 3)函数名不同于子过程名,在VB中,为函数名赋予了存储值的功能,而过程名不可以,所以函数体内一般都会至少为函数名赋值一次;如果不赋值,函数返回值默认为0或空; 4)函数中途可以利用Exit Function退出。,6.2 定义Function过程,例如,求n! Private Function fac%(ByVal n As

8、Integer) Dim i As Integer If n0 Then fac = -1:Exit Function Else fac = 1 For i = 1 To n fac = fac*i Next i End If End Function,6.2 定义Function过程,例如,求gcd(m, n)最大公约数 Private Function gcd%(ByVal m%,ByVal n%) Dim r%,t% If m0 m = n n = r r = m Mod n Loop gcd = n End Function,Private Sub Change(x1%, x2%) D

9、im Temp As Integer Temp = x1 x1 = x2 x2 = Temp End Sub,6.3 过程调用,除了事件过程是由使用者发出动作触发外,多数过程都是要间接的由事件过程或其他过程调用才能够使用。,6.3.2 Sub过程调用,Sub子过程调用方法: 1)用Call语句调用Sub过程 Call 过程名(实参表) 说明:过程名为被调用过程的名字;实参与形参是对应的,个数、类型一一对应;在过程定义的列表中为形参,在调用时,为实参;实参可以是具体的值、或有值的变量、属性,而形参则是负责接收实参值的。 2)直接将过程写成语句形式: 过程名 实参表 说明:这种调用形式,不用加Ca

10、ll;同时要将实参表的括号去掉并与过程名之间加一个空格。,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 Else 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

11、i End Sub,6.3.3 调用Function过程,调用Function过程的方法比较简单,与VB内部函数的调用方法一样,即在表达式中写出它的名称和相应的参数; v = 函数名(实参列表) Print 函数名(实参列表) 当然也可以用Call语句形式,此时将放弃函数名返回值的功能,功能与子过程一致,6.3.4 调用其他模块中的过程,当一个过程可以被其他模块调用时,首先要求这个过程为Public公有的。 1)调用窗体模块中的公有过程 Call 窗体名.子过程名(实参表) 2)调用标准模块中的公有过程,在没有重名的前提下,可直接调用: Call 子过程名(实参表) 否则,Call Modul

12、e1.子过程名(实参表),例题,编写一个求任意三角形面积的函数,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,6.4.1 形参与实参,形参:置于过程定义时,参数列表中的变量或数组;在过程被调用前,系统不对其分配空间; 实参:

13、当程序中想调用某过程时,所提供的实际值; 当实参和形参结合的时候,形参才被分配空间,接收由实参传递过来的值; 形参、实参个数、类型、位置要一致。,6.4.1 形参与实参,常见的错误 Private Sub F1(a%,b%) . End Sub Private Sub Command1_Click() Dim x!,y! x = 3.14:y = 123 Call F1(x,y) Call F1(x) End Sub,6.4.23 参数传递方式,传值(ByVal) 传址(ByRef或省略默认) 区别1:形参定义前面放的关键字不一样; 区别2:形参接收到的值不一样; 区别3:形参对实参的影响不一

14、样,6.4.23 参数传递方式,例如:(两个数的交换) Private Sub Exchange(ByVal a%, ByVal b%) Dim t% t = a a = b b = t Print a,b End Sub,Private Sub Command1_Click() Dim x%,y% x = 12 y = 21 Call Exchange(x,y) Print “主过程中:“;x,y End Sub,6.4.23 参数传递方式,说明: 形参前加ByVal时表示传值 不加或加ByRef时表示传址 传值是单方向的 传址是“双方向的”,6.4.23 参数传递方式,Private su

15、b add(x as integer, y as integer, z as integer) z=x+y x=x+1 y=y+1 print “子过程中” & x & y & z End sub Private sub Form_Click() dim a as integer, b as integer, c as integer a=3:b=2:c=1 add a, b, c 或者写成Call add(a,b,c) print “外部过程中” & a & b & c End sub,6.4.23 参数传递方式,Private sub add( ByVal x as integer, By

16、Val y as integer, ByVal z as integer) z=x+y x=x+1 y=y+1 print “子过程中” & x & y & z End sub Private sub Form_Click() dim a as integer, b as integer, c as integer a=3:b=2:c=1 add a, b, c print “外部过程中” & a & b & c End sub,6.4.23 参数传递方式,下列程序运行后,单击Command1结果为: Private Sub Command1_Click( ) a = 10:b = 20 Call xy1(a, b) Print a,b xy2 a, b Print a,b End Sub,Public Sub xy1(x, ByVal y) x = x+y y = x-y x = x-y End Sub Public Sub xy2(ByVal x, y) x = x+y y = x-y x = x-y End sub,

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

当前位置:首页 > 生活休闲 > 科普知识

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