版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 在设计一个规模较大、复杂程度较高的程序时,往在设计一个规模较大、复杂程度较高的程序时,往往根据需要按功能将程序分解成若干个相对独立的部分,往根据需要按功能将程序分解成若干个相对独立的部分,然后对每个部分分别编写一段程序。这些程序段称为程然后对每个部分分别编写一段程序。这些程序段称为程序的逻辑部件,用这些逻辑部件可以构造一个完整的程序的逻辑部件,用这些逻辑部件可以构造一个完整的程序,这样极大地简化了程序设计任务。序,这样极大地简化了程序设计任务。Visual Basic 2005通常把这种逻辑部件称为过程。通常把这种逻辑部件称为过程。 Visual Basic 2005中有中有4种过程:种过程
2、:Sub(子)过程、(子)过程、Function(函数)过程、(函数)过程、Property(属性)和(属性)和Event(事(事件)过程。其中属性过程与事件过程比较复杂,本章主件)过程。其中属性过程与事件过程比较复杂,本章主要介绍要介绍Sub过程和过程和Function过程。过程。本章学习目标本章学习目标 (1)熟练掌握子过程和函数过程的声明、调用方法。)熟练掌握子过程和函数过程的声明、调用方法。(2)理解参数的两种传递方式。)理解参数的两种传递方式。(3)理解过程的嵌套与递归调用。)理解过程的嵌套与递归调用。(4)理解变量与过程的作用域。)理解变量与过程的作用域。事件过程事件过程 事件过程
3、是在响应事件时执行的代码块。事件过程一般由事件过程是在响应事件时执行的代码块。事件过程一般由Visual Basic 2005自动创建,用户不能增加或删除。在缺省情况下,事件过程自动创建,用户不能增加或删除。在缺省情况下,事件过程是私有的,并通常附加在窗体和控件上。例如:是私有的,并通常附加在窗体和控件上。例如:命令按钮控件命令按钮控件Button1的的Click事件:事件:Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click E
4、nd Sub 其中:其中:(1)Button1_Click为过程名。为过程名。(2)ByVal sender As System.Object,这个参数包含一个引用,它指,这个参数包含一个引用,它指向引发事件的对象,因为向引发事件的对象,因为Click事件可以发生在多个控件上,使用事件可以发生在多个控件上,使用这个参数可以告知过程是哪个控件引发了事件。这个参数可以告知过程是哪个控件引发了事件。(3)ByVal e As System.EventArgs,该参数包含发送对象要提供的任,该参数包含发送对象要提供的任何参数,对何参数,对Click事件来说,没有提供任何参数。但对于事件来说,没有提供任
5、何参数。但对于OnMouseMove这样的事件,则提供了鼠标指针的坐标。这样的事件,则提供了鼠标指针的坐标。(4)Button1.Click表示对象表示对象Buuton1的的Click 事件。事件。通用子过程通用子过程 通用子过程是指必须由其他过程调用的代码块。通用子过程由用户自通用子过程是指必须由其他过程调用的代码块。通用子过程由用户自己创建,完成指定的任务,它不与任何特定的事件相联系,只能己创建,完成指定的任务,它不与任何特定的事件相联系,只能由别的过程来调用。在一个程序中,通用子过程可以被其他过程由别的过程来调用。在一个程序中,通用子过程可以被其他过程调用,这样大大提高了代码的利用率。调
6、用,这样大大提高了代码的利用率。1. 通用子过程的声明通用子过程的声明通用子过程的语法格式如下:通用子过程的语法格式如下: Public | Private | Protected | Friend | Protected Friend Sub ( ) Exit Sub End Sub通用子过程的调用通用子过程的调用 声明了一个通用子过程后,可以使用以下方法进行调用:声明了一个通用子过程后,可以使用以下方法进行调用:(1)Call () 。(2) () 。显然,第二种方法比第一种方法要简洁,在实际编程中,显然,第二种方法比第一种方法要简洁,在实际编程中,一般采用第二种调用方式。一般采用第二种调
7、用方式。函数过程函数过程 Visual Basic 2005包含了许多的内部函数,在前面已经介包含了许多的内部函数,在前面已经介绍过,用户在编写程序时,只需要写出一个函数名并给绍过,用户在编写程序时,只需要写出一个函数名并给定参数就能得出函数值。定参数就能得出函数值。 这里介绍的函数是通用子过程的另一种形式,当子过程的这里介绍的函数是通用子过程的另一种形式,当子过程的执行需返回一个值时,把它写成函数就比较简单,如执行需返回一个值时,把它写成函数就比较简单,如【例【例5-1】,使用子过程实现代码比较繁琐,若改用函】,使用子过程实现代码比较繁琐,若改用函数过程,其代码要显得简洁得多。数过程,其代码
8、要显得简洁得多。由用户自己创建的函数,称为自定义函数。由用户自己创建的函数,称为自定义函数。函数过程的定义函数过程的定义 自定义函数过程的语法格式如下:自定义函数过程的语法格式如下: Public | Private | Protected | Friend | Protected Friend Function ( ) As Return 返回值返回值 (或者:(或者: = 返回值)返回值) Exit Function Return 返回值返回值 (或者:(或者: = 返回值)返回值)End Function说明:说明: Public | Private | Protected | Frie
9、nd | Protected Friend 为访问权限。为访问权限。 类似于变量声明,它声明了从调用过程传递进来的值,指明了传送过程的类似于变量声明,它声明了从调用过程传递进来的值,指明了传送过程的变量个数和类型,各形参之间用逗号分隔。变量个数和类型,各形参之间用逗号分隔。 As 指明函数返回值的数据类型。指明函数返回值的数据类型。 Return返回值(或者:返回值(或者: = 返回值)是给函数返回一个值的语句。返回值)是给函数返回一个值的语句。函数过程的调用函数过程的调用 在在Visual Basic 2005中调用中调用Function过程的方法和调用任何过程的方法和调用任何内部函数的方法
10、是一样的,内部函数的方法是一样的, 当然也可以像调用当然也可以像调用Sub过程过程那样调用函数过程。所以调用函数过程有两种方法:那样调用函数过程。所以调用函数过程有两种方法: (1) () 。(2)Call () 。同样,第二种方法比第一种方法要简洁,在实际编程中,同样,第二种方法比第一种方法要简洁,在实际编程中,一般采用第一种调用方式。一般采用第一种调用方式。子过程与函数过程的区别子过程与函数过程的区别 (1)定义函数过程以)定义函数过程以Function开头,而定义子过程则以开头,而定义子过程则以Sub开头。开头。(2)当过程只有一个返回值时,可以使用函数过程;当过程有多个)当过程只有一个
11、返回值时,可以使用函数过程;当过程有多个返回值时,返回值时, 就应当使用子过程。就应当使用子过程。(3)函数是通过函数名回送一个返回值,在函数的形式参数表后面)函数是通过函数名回送一个返回值,在函数的形式参数表后面要说明函数(即返回值)的类型。而子过程的结果由参数送回,要说明函数(即返回值)的类型。而子过程的结果由参数送回,不需要指明类型。不需要指明类型。(4)函数体中至少要包括一个给函数返回值的语句(赋值语句或)函数体中至少要包括一个给函数返回值的语句(赋值语句或Return语句),而子过程不能给过程名赋值或使用语句),而子过程不能给过程名赋值或使用Return语句。语句。(5)函数过程的调
12、用出现在表达式中,而子过程的调用必须作为一)函数过程的调用出现在表达式中,而子过程的调用必须作为一个单独的语句。个单独的语句。参数传递参数传递 在调用一个有参数的过程,首先进行的是在调用一个有参数的过程,首先进行的是“形实结合形实结合”,即按传值传递(简称传值)或按地址传递(简称传址,即按传值传递(简称传值)或按地址传递(简称传址,也称引用传递)方式,实现调用程序和被调用的过程之也称引用传递)方式,实现调用程序和被调用的过程之间的数据传递。通过参数传递,间的数据传递。通过参数传递,Sub过程或过程或Function过过程就能根据不同的变量执行同种任务。程就能根据不同的变量执行同种任务。 形式参
13、数与实际参数形式参数与实际参数 形式参数(简称形参)是指在定义通用过程时,出现在形式参数(简称形参)是指在定义通用过程时,出现在Sub或或Function中的变量。形式参数表的各个变量之间中的变量。形式参数表的各个变量之间用逗号分开。用逗号分开。实际参数(简称实参)是指在调用实际参数(简称实参)是指在调用Sub或或Function过程时,过程时,传送给传送给Sub或或Function 过程的常量、变量或表达式。实过程的常量、变量或表达式。实参表可由常量、表达式、有效的变量名、数组名组成,参表可由常量、表达式、有效的变量名、数组名组成,同样,实参表中各参数也用逗号分开。同样,实参表中各参数也用逗
14、号分开。按值传递与按址传递按值传递与按址传递 1. 传值传值传值是传值是Visual Basic 2005默认的传递方式,此时传递的只是实参变量默认的传递方式,此时传递的只是实参变量的副本。如果在被调过程中改变了形参值,只影响副本,而不会的副本。如果在被调过程中改变了形参值,只影响副本,而不会影响实参变量本身。当要求变量按值传送时,则在定义过程时使影响实参变量本身。当要求变量按值传送时,则在定义过程时使用用ByVal关键字指出参数的传递方式。关键字指出参数的传递方式。2. 传址传址传址是把实参变量(可以是简单变量、数组元素、数组和结构等)的传址是把实参变量(可以是简单变量、数组元素、数组和结构
15、等)的地址传送给被调过程。因此实参变量的地址和与之结合的形参地地址传送给被调过程。因此实参变量的地址和与之结合的形参地址是相同的,也就是说形参和实参共用内存的同一址是相同的,也就是说形参和实参共用内存的同一“地址地址”,即,即共享同一个存储单元。这样在被调过程中的形式参数值一旦被改共享同一个存储单元。这样在被调过程中的形式参数值一旦被改变,相应的实参值也跟随着被改变了。显然,在传递调用时,实变,相应的实参值也跟随着被改变了。显然,在传递调用时,实际参数必须是变量,常量或表达式,否则无法传址。际参数必须是变量,常量或表达式,否则无法传址。过程的嵌套与递归过程的嵌套与递归 在一个过程(子过程或函数
16、过程)中调用另外一个过程,称为过程的在一个过程(子过程或函数过程)中调用另外一个过程,称为过程的嵌套调用;而过程直接或间接地调用其自身,则称为过程的递归嵌套调用;而过程直接或间接地调用其自身,则称为过程的递归调用。调用。1、过程的嵌套调用、过程的嵌套调用不可以在定义的一个过程的代码中定义另外一个过程,但可以在一个不可以在定义的一个过程的代码中定义另外一个过程,但可以在一个过程中调用另外一个过程,这种调用方式称为过程的嵌套调用。过程中调用另外一个过程,这种调用方式称为过程的嵌套调用。2、过程的递归调用、过程的递归调用递归调用是指一个过程直接或间接调用自己本身。递归是一种十分有递归调用是指一个过程
17、直接或间接调用自己本身。递归是一种十分有用的程序设计技术。由于很多的数学模型和算法设计方法本来就用的程序设计技术。由于很多的数学模型和算法设计方法本来就是递归的,所以用递归过程描述它们比用非递归方法简洁易读,是递归的,所以用递归过程描述它们比用非递归方法简洁易读,可理解性好,算法的正确性证明也比较容易。可理解性好,算法的正确性证明也比较容易。在递归调用中,一个过程执行的某一步要用到它自身的前面一步或前在递归调用中,一个过程执行的某一步要用到它自身的前面一步或前若干步的结果。若干步的结果。 变量与过程的作用域变量与过程的作用域 变量的生存期从给变量分配内存空间开始,到该变量使用完毕并释放内存空间
18、时结束。变量的生存期从给变量分配内存空间开始,到该变量使用完毕并释放内存空间时结束。变量的作用域即变量的作用范围。变量的作用域即变量的作用范围。1. 变量的生存期变量的生存期1)动态变量动态变量是指程序运行后进入变量所在的子程序后,才分配该变量的内存单元的变量。动态变量是指程序运行后进入变量所在的子程序后,才分配该变量的内存单元的变量。经过处理退出该过程后,该变量占用的内存单元自动释放,其值消失,其内存能被经过处理退出该过程后,该变量占用的内存单元自动释放,其值消失,其内存能被其他变量占用。用其他变量占用。用Dim声明的变量属于动态变量。使用声明的变量属于动态变量。使用Dim关键字在过程中声明
19、的关键字在过程中声明的局部变量,局部变量, 在过程执行结束后变量的值不被保留,在每一次重新执行过程时,变在过程执行结束后变量的值不被保留,在每一次重新执行过程时,变量会被重新声明。量会被重新声明。2)静态变量 静态变量是指程序运行进入该变量所在的子程序,修改变量的值,退出该子程序后,静态变量是指程序运行进入该变量所在的子程序,修改变量的值,退出该子程序后,其值仍被保留,即变量所占内存单元没有释放。当以后再次进入该子程序,原来变其值仍被保留,即变量所占内存单元没有释放。当以后再次进入该子程序,原来变量的值可以继续使用。使用量的值可以继续使用。使用Static关键字在过程中声明的局部变量,就属于静
20、态变关键字在过程中声明的局部变量,就属于静态变量。静态变量在过程退出后仍然可以保持原来的值。量。静态变量在过程退出后仍然可以保持原来的值。变量的作用域变量的作用域根据变量的作用域,在根据变量的作用域,在Visual Basic 2005中,变量可以分为代码块级中,变量可以分为代码块级变量、过程级变量、模块级变量和公用变量,这四种变量的作用域及变量、过程级变量、模块级变量和公用变量,这四种变量的作用域及其使用规则如表其使用规则如表5-4所示。所示。 变量级别变量级别作用域作用域声明位置声明位置使用语句使用语句代码块级代码块级变量变量代码块内代码块内代码块内代码块内Dim过程级变过程级变量量过程中过程中过程中过程中Dim 或或 Static模块级变模块级变量量模块的声明模块的声明段内段内类或模块中所有过类或模块中所有过程之外程之外Dim 或或 Pri
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度新能源电动车研发与生产承包合同
- 2024年度建筑企业融资租赁合同
- 04年物流仓储服务合同范本
- 2024年度农业保险服务合同
- 紧身套衫市场需求与消费特点分析
- 2024年度技术转让合同转让技术范围与技术保密
- 2024年度大数据分析服务合同:某数据公司与某金融机构之间的大数据分析服务合同
- 2024年度混凝土输送泵车租赁合同书
- 蚕丝被市场发展预测和趋势分析
- 2024年度教育培训合同及服务协议
- 关于转发《中铁一局集团工程项目部突发事件舆论危机处置工作预案》
- 【高中政治】在和睦家庭中成长+课件+届高考政治一轮复习统编版选择性必修二法律与生活
- 2023湖南长沙市食品药品检验所公开招聘普通雇员19人模拟备考预测(共1000题含答案解析)综合试卷
- 浅析1980年代“现代派”小说的历史意蕴及现实意义
- 数值课件第章非线性方程求根
- 马来西亚民俗与禁忌
- 图消防安全三自主两公开一承诺公示牌模板
- 农业合作社全套报表(已设公式)-资产负债表-盈余及盈余分配表-成员权益变动表-现金流量表
- TCADERM 5016-2023 骨髓腔输液技术要求
- 学生常见病防治工作制度
- 高速公路施工交通组织专项方案
评论
0/150
提交评论