Visual Basic程序设计与应用开发教程第6章.ppt_第1页
Visual Basic程序设计与应用开发教程第6章.ppt_第2页
Visual Basic程序设计与应用开发教程第6章.ppt_第3页
Visual Basic程序设计与应用开发教程第6章.ppt_第4页
Visual Basic程序设计与应用开发教程第6章.ppt_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

1、第6章 过程,本章内容,6.1 过程概述 6.2 Sub过程 6.3 Function过程 6.4 参数传递 6.5 过程的递归 6.6 变量的作用域 6.7 过程的作用域,6.1 过 程 概 述 (1),1过程的概念及优点 过程是完成一定任务的一个Visual Basic语句块 优点: 过程允许将程序分为不连续的逻辑单元 避免代码重复问题 2过程的调用 从代码中的其他某处调用过程,称为过程调用,6.1 过 程 概 述 (2),3参数 调用过程时,过程需要处理不同的数据。将这些信息作为过程调用的一部分传递给过程,这些信息就称之为参数。 过程可以定义零个或多个参数,而每个参数都代表过程希望传递给

2、它的一个值。 4过程的类型 Sub过程 事件处理过程 Property 过程 Function 过程,6.2 Sub过程(1),6.2.1 事件过程 控件事件过程的格式为 Private|public Sub 控件名_事件名(参数表) End Sub 窗体事件过程的格式为 Private|public Sub Form_事件名(参数表) End Sub,6.2 Sub过程(2),例如: Private Sub Command1_Click() Print Hello End Sub Private Sub Form_Load() Command1.Caption = Hello End Sub

3、 说明: 事件过程只能放在窗体模块中。 为处理事件而编写的程序代码。 可以通过双击对象,然后再在代码视图下选择相应事件的方法来自动生成事件过程。,6.2 Sub过程(3),6.2.2 自定义Sub过程 Sub过程的定义格式如下: Public|Private Sub 过程名(形式参数) Exit Sub End Sub 例如: Public Sub Max(x As Integer,y As Integer) Dim c As Integer If xy Then c=x Else c=y End If Print c End Sub,6.2 Sub过程(4),说明: Public和Priva

4、te表明Sub过程的有效范围,Public的有效范围为整个工程,Private的有效范围为当前模块,默认为Private。 过程名必须符合变量的命名规则。 过程必须以End Sub结束。 可以根据实际情况选择形式参数的类型和个数,当过程无形式参数时,括号不能省略。 使用Exit Sub语句可以强制退出过程。图6-1 添加过程对话框 在Visual Basic中所有的过程都是并列关系,不允许在一个子过程内部再定义一个子过程。,6.2 Sub过程(5),6.2.3 过程的调用 调用方式: Call 过程名(实际参数列表) 过程名 实际参数列表 例如: Sub Area(r As Single) D

5、im s As Single s = 3.14 * r * r MsgBox area= a, b=; b Add a, b Print 调用后a=; a, b=; b End Sub,6.4 参 数 传 递 (3),6.4.2 数组参数 注意以下几点 : 为了把一个数组的全部元素传递给一个过程,应将数组名分别写入形式参数和实际参数列表中,并略去数组的上下界,但括号不能省略 实际参数也应该是数组,且类型应该与形式参数的数组类型一致 数组作为参数时,按地址传递的方式将数组传递给过程 数组作为参数时,数组的上下界可以通过UBound和LBound函数获取 在使用数组参数调用过程时,作为实际参数的数

6、组的大小可以任意定义,6.4 参 数 传 递 (4),【例6.3】编写过程实现数组的生成、首尾对调和输出功能,6.4 参 数 传 递 (5),6.4.3 可选参数 如果需要将某个参数设置为可选参数,必须在该参数前加Optional关键字 Function Max(a As Integer, b As Integer, Optional c As Integer) Dim m As Integer If a b Then m = a Else m = b End If If Not IsMissing(c) Then If m c Then m = c End If End If Max = m

7、 End Function,6.4 参 数 传 递 (6),说明: 一个过程允许定义多个可选参数,所有可选参数必须位于所有参数的最后。 可以通过IsMissing函数检测可选参数是否被省略,如果省略IsMissing函数的结果为True,否则为False。 如果需要为可选参数加上默认值,需要在定义参数时在后面直接加上“=值”的方式即可。 具有可选参数的过程在被调用时,可选参数可以根据情况选择是否输入,如上例中的Max过程通过d=Max(5,9)调用,也可以通过d=Max(5,9,11)调用。,6.5 过程的递归(1),找出过程参数为n和过程参数为n1之间的规律 【例6.4】利用递归过程,计算n

8、! 【例6.5】猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个 第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。,6.6 变量的作用域(1),6.6.1 过程变量 程变量的定义格式为 Dim|Static 变量名 As 例如: Dim a As Integer 注意: 一个过程变量的值无法被另外一个过程访问 在不同的过程内可以使用相同的过程变量名,例如: Sub t1() Dim a As Integer a=5 End Sub Sub t2() Print

9、a End Sub,6.6 变量的作用域(2),6.6.2 模块级变量 定义格式为 Private|Dim 变量名 As 定义位置: 窗体模块或标准模块的声明部分 有效范围 当前模块,6.6 变量的作用域(3),6.6.3 全局变量 全局变量的定义格式为: Public 变量名 As 例如: Public n As Integer 有效范围 整个工程 注意: 标准模块声明的全局变量,在其他模块可直接通过变量名访问 在窗体模块中声明的全局变量,在其他模块中需要通过“窗体名.全局变量名”的方式访问,6.6 变量的作用域(4),6.6.4 变量的同名问题 1作用域不同的变量同名 如果两个同名的变量的作用域不同,在变量访问时,优先访问作用域较小的变量 如果全局变量与模块级变量或是过程变量同名,需要访问全局变量时,可以通过“模块名.全局变量名”的方式访问 2全局变量同名 如果不同模块的两个全局变量同名,可以通过“模块名.全局变量名”的方式访问这两个全局变量,6.6 变量的作用域(5),6.6.5 静态变量 定义格式为 Static 变量名 As 退出过程时,变量所占的内存单元不被释放 例如: Private Sub Form_Click() Static a As Integer 定义静态过程变量a Dim b As Integer 定义普通过程变量b a = a

温馨提示

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

评论

0/150

提交评论