《第7章 过程课件.ppt》由会员分享,可在线阅读,更多相关《第7章 过程课件.ppt(28页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、LOGO第第7章章 过程过程 (时间:(时间:1次课,次课,2学时)学时)第第7章章 过程过程 v7.1 子过程子过程 v7.2函数过程函数过程 v7.3 参数传递参数传递 v7.4变量的作用范围变量的作用范围 第7章 过程学习目的与要求:学习目的与要求:Visual Basic是在是在BASIC,GW-BASIC,Quick BASIC等语言的基础上发展起来的,我们首先必须熟悉其等语言的基础上发展起来的,我们首先必须熟悉其集成开发环境和编程特点,以及相关的基本编程概念。本集成开发环境和编程特点,以及相关的基本编程概念。本章对这方面的内容进行介绍,使读者初步认识章对这方面的内容进行介绍,使读者
2、初步认识 visual basic6.0快速开发工具,并了解其发展历史;了解快速开发工具,并了解其发展历史;了解visual basic的有关特点,熟悉开发环境;学习并了解的有关特点,熟悉开发环境;学习并了解Visual Basic可视化编程过程中的有关概念;初步掌握可视化编程过程中的有关概念;初步掌握Visual Basic进行程序开发的一般过程。进行程序开发的一般过程。 7.1 子过程子过程 在在Visual Basic中,有两类子过程:事件过中,有两类子过程:事件过程和通用过程。程和通用过程。7.1.1事件过程事件过程7.1.2通用过程通用过程7.1.2通用过程通用过程1.声明通用过程就
3、是编写一个能够实现预期功能的语声明通用过程就是编写一个能够实现预期功能的语句块。其语法格式如下:句块。其语法格式如下:vPrivate|PublicStatic()vvv vEnd Sub程中,通用过程可以被其他过程调用,这程中,通用过程可以被其他过程调用,这样会提高代码的利用率。通用过程又分为子过程和函数过样会提高代码的利用率。通用过程又分为子过程和函数过程。程。 7.1.2通用过程通用过程2.程序示例程序示例v例例7-1 声明一个通用过程。声明一个通用过程。vPublic Sub Root(x As Single, y As Single)v Dim a,b,c As Singlev a=
4、2v b=8v c=5v If b*b-4*a*c0 Thenv Exit Subv Elscv Y=-b/2*a+Sqr(b*b-4*a*c)/2*av End IfvEnd Sub7.1.2通用过程通用过程2.程序示例程序示例v例例7-2声明一个无参数的通用过程。声明一个无参数的通用过程。vPublic Sub ChangForm() 把窗体移到屏幕把窗体移到屏幕的左上角的左上角v Form1.Top=0v Form1.Left=0v Form1.Caption=OK把窗体的标题把窗体的标题栏改为栏改为OKvEnd Sub7.1.2通用过程通用过程3.创建新的通用过程创建新的通用过程建立新
5、过程有两种方法建立新过程有两种方法:v)使用)使用添加过程添加过程对语框建立过程对语框建立过程v2)在)在代码编辑器代码编辑器窗口中输入窗口中输入7.1.2通用过程通用过程v4.调用通用过程调用通用过程 在其它过程中这些已经声明的通用过程被称在其它过程中这些已经声明的通用过程被称为对通用过程的调用。要执行一个过程,必须调用为对通用过程的调用。要执行一个过程,必须调用该过程。与函数过程不同,通用过程不能返回一个该过程。与函数过程不同,通用过程不能返回一个值,因此不能在表达式中调用通用过程,调用通用值,因此不能在表达式中调用通用过程,调用通用过程必须是一个独立的语句。但是,与过程必须是一个独立的语
6、句。但是,与Function过程一样,通用过程也可以修改传递给它们的任何过程一样,通用过程也可以修改传递给它们的任何变量的值。调用通用过程有以下两种方法。变量的值。调用通用过程有以下两种方法。7.1.2通用过程通用过程4.调用通用过程调用通用过程1)调用通用过程的方式)调用通用过程的方式12)调用通用过程的方式)调用通用过程的方式27.2函数过程函数过程v 函数是过程的另一种形式,它除了具备通用过程的功能和用函数是过程的另一种形式,它除了具备通用过程的功能和用法外,主要目的是为了进行计算并返回一个结果值。用户在法外,主要目的是为了进行计算并返回一个结果值。用户在编写程序时,只需写出一个函数名并
7、给定参数就能得出函数编写程序时,只需写出一个函数名并给定参数就能得出函数值。当在程序中需要多次用到某一公式或要处理某一函数关值。当在程序中需要多次用到某一公式或要处理某一函数关系,而又没有现成的内部函数可以使用时,自己可以定义一系,而又没有现成的内部函数可以使用时,自己可以定义一些所需的函数并调用它们,这样的函数称为用户定义函数些所需的函数并调用它们,这样的函数称为用户定义函数(User Defined Function)。用户定义函数与内部函)。用户定义函数与内部函数一样,可以在程序中或函数嵌套中使用。数一样,可以在程序中或函数嵌套中使用。 7.2函数过程函数过程1.声明函数过程声明函数过程
8、 其语法格式如下:其语法格式如下:v Private/PublicStatic()Asv v =v Exit Functionv v =v End Function7.2函数过程函数过程2.调用函数过程调用函数过程v 因为函数过程包含通用过程的所有功能,所以调用通用过程的方法都可因为函数过程包含通用过程的所有功能,所以调用通用过程的方法都可以用来调用函数过程方法如下。以用来调用函数过程方法如下。v 第一种方法,第一种方法,Call()v 第二种方法,第二种方法,()。v 但是,这两种方法都省略了函数的返回值。返回值是函数过程最重要的但是,这两种方法都省略了函数的返回值。返回值是函数过程最重要的
9、功能,也是通用过程所不具备的功能。要使用函数的返回值,必须使用功能,也是通用过程所不具备的功能。要使用函数的返回值,必须使用下面的第三种方法。下面的第三种方法。v 第三种方法,把函数用于赋值语句、表达式中或作为实参数以调用其他第三种方法,把函数用于赋值语句、表达式中或作为实参数以调用其他过程。过程。7.3 参数传递参数传递v调用过程或函数的目的,就是在一定的要求下完成调用过程或函数的目的,就是在一定的要求下完成某一工作或计算某一函数值。外界要把要求告诉过某一工作或计算某一函数值。外界要把要求告诉过程或函数说明,或者反过来,过程或函数说明把某程或函数说明,或者反过来,过程或函数说明把某些结果报告
10、给外界,这就是过程或函数说明与外界些结果报告给外界,这就是过程或函数说明与外界的通信。的通信。v过程(或函数)说明与外界的数据通信有两种方式:过程(或函数)说明与外界的数据通信有两种方式:通过非局部变量或通过参数。在过程体中使用非局通过非局部变量或通过参数。在过程体中使用非局部变量(如全局变量),就是直接处理外界的量。部变量(如全局变量),就是直接处理外界的量。由于这种量在过程内、外都能用,通信不成问题。由于这种量在过程内、外都能用,通信不成问题。本节主要讨论参数的传递。本节主要讨论参数的传递。7.3.1形式参数和实际参形式参数和实际参1.形参表形参表v 形式参数是指在定义通用过程时,出现在通
11、用过程或函形式参数是指在定义通用过程时,出现在通用过程或函数语句中的变量名,是接收传送给子过程值的变量。形数语句中的变量名,是接收传送给子过程值的变量。形参表中的各个变量之间用逗号分隔,形参表中的变量可参表中的各个变量之间用逗号分隔,形参表中的变量可以是:以是:v (1)后面跟左、右圆括号的数组名(或括号内有数)后面跟左、右圆括号的数组名(或括号内有数字),一般表示数组的维数;字),一般表示数组的维数;v (2)除定长字符串之外的合法变量名,即在形参表中)除定长字符串之外的合法变量名,即在形参表中只能用如只能用如x As String之类的变长字符串作为形式参之类的变长字符串作为形式参数,不能
12、用如数,不能用如x As String*10之类的定长字符串作为之类的定长字符串作为数,但定长字符串要作为实际参数传递给过程。数,但定长字符串要作为实际参数传递给过程。7.3.1形式参数和实际参形式参数和实际参2.实参表实参表 实际参数是指在调用通用过程或函数过程中,实际参数是指在调用通用过程或函数过程中,给通用过程或函数过程的常量、变量或表达式。给通用过程或函数过程的常量、变量或表达式。实参表可由常量、表达式、有效的变量名(后跟实参表可由常量、表达式、有效的变量名(后跟左、右括号)组成,实参表中各参数用逗号分隔。左、右括号)组成,实参表中各参数用逗号分隔。7.3.2按值传递和按地址传递按值传
13、递和按地址传递v在过程调用中,参数的传递有两种模式:按值在过程调用中,参数的传递有两种模式:按值传递和按地址传递。如果在声明过程中,形式传递和按地址传递。如果在声明过程中,形式参数前加变量字参数前加变量字ByVal,则规定在调用此过程,则规定在调用此过程时,该参数是按值传递的。如果形式参数前加时,该参数是按值传递的。如果形式参数前加变量字变量字ByRef,则规定在调用此过程时,该,则规定在调用此过程时,该参数是按地址传递的。参数是按地址传递的。7.3.2按值传递和按地址传递按值传递和按地址传递v1.按值传递参数按值传递参数v2.按地址传递参数按地址传递参数7.3.3使用参数使用参数1.使用可选
14、的参数使用可选的参数v在过程的形参表中加入在过程的形参表中加入Optional关键字,就关键字,就可以指定过程的形式参数为可选的参数。如果可以指定过程的形式参数为可选的参数。如果指定了可选参数,则参数表中此参数后面的其指定了可选参数,则参数表中此参数后面的其他参数也必定是可选的,并且每个参数都要用他参数也必定是可选的,并且每个参数都要用Optional关键字来声明。关键字来声明。7.3.3使用参数使用参数2.提供可选参数的默认值提供可选参数的默认值v 也可以给可选参数指定默认值。也可以给可选参数指定默认值。v 例例7-11 在下面的程序中,如果未将可选参数传递到函数过程,则返在下面的程序中,如
15、果未将可选参数传递到函数过程,则返回一个默认值。回一个默认值。v Sub ListText(x As String, Optional y As Integer=12345)v List1.AddItem xv List1.AddItem yv End Subv Private Sub Command1_Click()v strName=yourname 未提供第未提供第2个参数个参数v Call ListText(strName) 添加添加yourname和和12345v End Sub7.3.3使用参数使用参数3.使用不定数量的参数使用不定数量的参数v一般情况下,过程调用中的参数个数应等于
16、过程说一般情况下,过程调用中的参数个数应等于过程说明的参数个数。可用明的参数个数。可用ParamArray关键字指明,关键字指明,过程将接受任意个数的参数。过程将接受任意个数的参数。 7.3.4程序举例7.3.4程序举例程序举例v 例例7-13 利用参数传递技术传递常量和表达式。如果实际参数为数值型利用参数传递技术传递常量和表达式。如果实际参数为数值型数据(可为常量、变量或表达式),则形式参数必须使用数值变量。数据(可为常量、变量或表达式),则形式参数必须使用数值变量。v Private Sub Form_Click()v Clsv Dim x As Integer, y As Integer
17、v x = 4: y = 3v Call test(5, x, y + 1) 5传递数值,传递数值,x传递地址,传递地址,y+1传递传递数值数值v Print 主程序主程序, 5, x, yv End Subv Sub test(a As Integer, b As Integer, c As Integer)v Print 子程序子程序, a, b, cv a = 2: b = 3: c = 4v End Sub7.3.4程序举例程序举例v程序运行结果如下图所示。程序运行结果如下图所示。7.4变量的作用范围变量的作用范围v 当一个应用程序中出现多个过程或函数时,在它们各当一个应用程序中出现多
18、个过程或函数时,在它们各自的子程序中都可以定义自己的常量名、变量名。然自的子程序中都可以定义自己的常量名、变量名。然而,这些名字在程序中是否到处可用?回答是否定的。而,这些名字在程序中是否到处可用?回答是否定的。变量的作用范围指变量能被某一过程识别的范围。作变量的作用范围指变量能被某一过程识别的范围。作用范围有局部变量或全局变量。用范围有局部变量或全局变量。v 在在Visual Basic中,由于可以在过程中和模块中声中,由于可以在过程中和模块中声明变量,因此根据声明变量的位置,变量分为两类:明变量,因此根据声明变量的位置,变量分为两类:过程变量(过程变量(Procedure Level)和模
19、块级变量)和模块级变量(Module Level)7.4.1过程级变量过程级变量v在一个过程内部声明变量时,只有该过程内部在一个过程内部声明变量时,只有该过程内部内的代码才能访问或改变该变量的值。过程级内的代码才能访问或改变该变量的值。过程级变量的作用范围限制在该过程内。在过程内部变量的作用范围限制在该过程内。在过程内部使用使用Dim或或Static关键字声明变量,例如:关键字声明变量,例如:vDim a As Integer, b As SinglevStatic s As String7.4.2模块级变量模块级变量v在模块中声明的变量属于模块级变量。模块级在模块中声明的变量属于模块级变量。
20、模块级变量分为两种:变量分为两种:v1.私有的模块级变量私有的模块级变量v2.公有的模块级变量公有的模块级变量7.4.2模块级变量模块级变量1.私有的模块级变量私有的模块级变量v 私有的模块级变量在声明它的整个模块中的所有过程私有的模块级变量在声明它的整个模块中的所有过程中都能使用,但其他模块去不能访问该变量。一般在中都能使用,但其他模块去不能访问该变量。一般在模块的声明中使用模块的声明中使用Private或或Dim关键字来声明变量,关键字来声明变量,例如:例如:v Private s As Singlev Dim a As Single, b As Singlev 在模块声明中使用在模块声明
21、中使用Private或或Dim关键字声明变量是关键字声明变量是等效的。为了与过程级变量区别明显,建议使用等效的。为了与过程级变量区别明显,建议使用Private。7.4.2模块级变量模块级变量2.公有的模块级变量公有的模块级变量v公有的模块级变量在所有模块中的所有过程中都能公有的模块级变量在所有模块中的所有过程中都能使用。它的作用范围是整个应用程序,因此公有的使用。它的作用范围是整个应用程序,因此公有的模块级变量属于全局变量。一般在模块的声明中使模块级变量属于全局变量。一般在模块的声明中使用用Public关键字来声明变量,例如:关键字来声明变量,例如:vPublic a As Integer, b As Single