




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1第5章 过 程 n掌握子过程(掌握子过程(Sub过程)的定义、调用;过程)的定义、调用;n掌握函数过程(掌握函数过程(Function过程)的定义、调用;过程)的定义、调用;n掌握值传递、地址传递的传递规则;掌握值传递、地址传递的传递规则;n理解递归的概念。理解递归的概念。本章要求:本章要求:本章重点:本章重点:n Sub过程及过程及Function过程的定义与调用过程的定义与调用;n 过程调用中数据的传递。过程调用中数据的传递。25.1 Sub过程过程在在VBVB中,可以使用两种类型的过程:中,可以使用两种类型的过程: SubSub 过程和过程和 FunctionFunction 过程过程
2、 SubSub 过程也称为子过程,过程也称为子过程, FunctionFunction 过程也称为过程也称为函数过程函数过程3定义定义SubSub过程过程格式:格式:Public|PrivateStatic Sub 过程名过程名(形参表形参表) 语句块语句块End Sub说明:说明:(1 1)过程名:过程名:命名规则与变量名规则相同。命名规则与变量名规则相同。(2 2)形参表:形参表:仅表示形参的类型、个数、位置,定义时是仅表示形参的类型、个数、位置,定义时是无值的,只有在过程被调用时,无值的,只有在过程被调用时,形实参结合形实参结合后才获得相应后才获得相应的值,过程可以无形式参数,但括号不能
3、省。的值,过程可以无形式参数,但括号不能省。5.1.1建立建立Sub过程过程4(3 3) PrivatePrivate 设定过程是私有过程,只能被本模块或本窗体中的设定过程是私有过程,只能被本模块或本窗体中的其他过程调用;其他过程调用;(4) PublicPublic 设定过程是公有过程,可以被其他模块设定过程是公有过程,可以被其他模块或窗体或窗体的程的程序调用。默认是序调用。默认是PublicPublic。(5 5) StaticStatic 表示在每次调用过程时,变量的值保持不变;如果表示在每次调用过程时,变量的值保持不变;如果省略省略StaticStatic,则在每次调用过程时,过程内部
4、的变,则在每次调用过程时,过程内部的变量被初始化。量被初始化。5方法方法1 1: 通过菜单通过菜单“工具工具添加过程添加过程”命令,出现命令,出现“添加添加过程过程”对话框,选择过程类型(子程序、函数)及作对话框,选择过程类型(子程序、函数)及作用范围(公有的、私有的),单击确定后得到一个子用范围(公有的、私有的),单击确定后得到一个子过程或函数定义的结构框架,如:过程或函数定义的结构框架,如:Public Sub Sort( )End Sub6方法方法2 2: 在窗体代码窗口的在窗体代码窗口的“通用通用”段,或标准模块代码段,或标准模块代码窗口中,直接输入过程关键字和过程名,按回车窗口中,直
5、接输入过程关键字和过程名,按回车键后系统自动加上键后系统自动加上End SubEnd Sub。7 例例5.1 5.1 定义一个在窗体打印字符串的过程。该过程有定义一个在窗体打印字符串的过程。该过程有一个参数,用于指定打印的行数。一个参数,用于指定打印的行数。 Public Sub PrStr(ByVal n As Integer)Public Sub PrStr(ByVal n As Integer) Dim i As Integer Dim i As Integer For i = 1 To n For i = 1 To n Print Hello World Print Hello Wor
6、ld Next i Next iEnd SubEnd Sub Private Sub Form_Click() Private Sub Form_Click() call PrStr(5) call PrStr(5) PrStr 5 PrStr 5End SubEnd Sub85.1.2 调用调用Sub过程过程 1.使用使用Call语句调用过程语句调用过程 格式:格式: Call 过程名过程名 (实际参数表)(实际参数表) 使用使用Call语句调用过程时,如果过程本身没有参数,语句调用过程时,如果过程本身没有参数,则实际参数和括号可以省略;否则应给出相应的实则实际参数和括号可以省略;否则应给出
7、相应的实际参数,并把参数放在括号里。际参数,并把参数放在括号里。92.2.将过程名作为语句使用将过程名作为语句使用格式:格式: 过程名过程名 实际参数表实际参数表例如例如, ,调用例调用例5.15.1定义的定义的PrStrPrStr过程,可以用以下语句过程,可以用以下语句: : CALL PrStr CALL PrStr(5 5)或或 PrStr 5PrStr 510例例5.1-1 编一个输出一个直角三角形图案的自定义过编一个输出一个直角三角形图案的自定义过程。程。 Public Sub Output_TrianglePublic Sub Output_Triangle ( (n%n%, ,
8、ch$ch$) ) Dim i%, j% Dim i%, j% For i = 1 To For i = 1 To n n For j = 1 To i For j = 1 To i Print Print chch; ; Next j Next j Print Print Next i Next i End Sub End SubPrivate Sub Form_Click()Private Sub Form_Click() Output_Triangle 10, Output_Triangle 10, * * End SubEnd Sub115.1.3 通用过程和事件过程通用过程和事件过程
9、n在在VBVB中,过程可分为通用过程和事件过程两大类。中,过程可分为通用过程和事件过程两大类。n事件过程也是事件过程也是SubSub过程,它是一种特殊的过程,它是一种特殊的SubSub过程,过程,附加在窗体和控件上。附加在窗体和控件上。控件事件过程的定义格式:控件事件过程的定义格式:Private Sub Private Sub 控件名控件名_ _事件名事件名( (参数表参数表) ) 语句语句End SubEnd Sub窗体事件过程的定义格式:窗体事件过程的定义格式:Private Sub Form_Private Sub Form_事件名事件名( (参数表参数表) ) 语句语句End Sub
10、End Sub12n通用过程与事件过程的区别:通用过程与事件过程的区别:n通用过程不与对象相关,是用户创建的一段共享通用过程不与对象相关,是用户创建的一段共享代码。代码。n通用过程可以放在标准模块和窗体模块中,而事通用过程可以放在标准模块和窗体模块中,而事件过程只能放在窗体模块中。件过程只能放在窗体模块中。n不同模块中的过程(包括通用过程和事件过程)不同模块中的过程(包括通用过程和事件过程)可以互相调用。可以互相调用。13Private Sub Command1( ) Call Swap(a,b) Swap a,bEnd SubPrivate Sub Swap(x%,y%) Dim temp%
11、 Temp=X X=Y Y=TempEnd Sub 过程调用的执行过程:过程调用的执行过程:145.2 Function过程过程5.2.1 外部函数过程的定义格式:外部函数过程的定义格式:Public|PrivateStaticFunction 函数名函数名()As 函数名函数名=返回值返回值End FunctionVBVB中的函数分为中的函数分为内部函数和外部函数内部函数和外部函数,内部函数是系,内部函数是系统内的函数,外部函数是用户用统内的函数,外部函数是用户用FunctionFunction关键字自己关键字自己定义的函数。定义的函数。15说明:说明:(1 1)函数名:函数名:命名规则与变
12、量名规则相同。命名规则与变量名规则相同。(2 2)形参数列表:形参数列表:形参的定义与子过程相同。形参的定义与子过程相同。 (3 3)ASAS类型:类型:是指函数返回值的类型,若省略,则是指函数返回值的类型,若省略,则函数返回变体类型值(函数返回变体类型值(VariantVariant)。)。 (4 4)在函数过程中通常要对函数名赋值。)在函数过程中通常要对函数名赋值。16例例5.2 5.2 定义一个判断整数是否是素数的函数过程。定义一个判断整数是否是素数的函数过程。 Private Function IsPrime(n As Integer) As Boolean IsPrime = Tru
13、e For i = 2 To Sqr(n) If n Mod i = 0 Then IsPrime = False Exit For End If Next iEnd FunctionPrivate Sub Command1_Click()Private Sub Command1_Click() Dim i% Dim i% For i = 2 To 100 For i = 2 To 100 If IsPrime(i) Then Print i If IsPrime(i) Then Print i Next i Next iEnd SubEnd Sub175.2.2 调用调用Function过程
14、过程调用形式:调用形式: 函数过程名(实参列表)函数过程名(实参列表)说明:说明:n 在调用时实参和形参的数据类型、顺序、个数必在调用时实参和形参的数据类型、顺序、个数必须匹配。须匹配。n 函数调用可以出现在函数调用可以出现在表达式或表达式或print语句语句中,其功中,其功能是求得函数的返回值或打印函数值。能是求得函数的返回值或打印函数值。18Private Sub Command1_Click()Private Sub Command1_Click() Dim i% Dim i% For i = 2 To 100 For i = 2 To 100 If IsPrime(i) Then Pr
15、int i If IsPrime(i) Then Print i Next i Next iEnd SubEnd Sub195.3 5.3 参数传递参数传递调用一个过程时,必须把实参的相关数据传递给被调调用一个过程时,必须把实参的相关数据传递给被调过程中的形参,完成形参与实参的结合,这一过程叫过程中的形参,完成形参与实参的结合,这一过程叫做参数传递,也叫做虚实结合。做参数传递,也叫做虚实结合。5.3.1 5.3.1 形参与实参形参与实参n 形参:是指在定义形参:是指在定义SubSub过程或过程或FunctionFunction过程时,出过程时,出现在现在过程名或函数名后面圆括号内的参数过程名或
16、函数名后面圆括号内的参数,若有多个,若有多个形参,用逗号分隔。形参,用逗号分隔。 n 实参:是指在调用实参:是指在调用SubSub过程或或FunctionFunction过程时,出过程时,出现在子过程名或函数名后括号内的参数。现在子过程名或函数名后括号内的参数。20n在参数传递过程中需要保证实参与形参数量相同、在参数传递过程中需要保证实参与形参数量相同、顺序对应、类型一致顺序对应、类型一致 。调用语句:调用语句:Call Output_Triangle(10, Call Output_Triangle(10, * *)定义语句:定义语句:Public Output_Triangle(Publi
17、c Output_Triangle(n%n%, , ch$ch$) )215.3.2 5.3.2 传址与传值传址与传值1. 1. 传址方式传址方式n定义过程时,默认情况下参数是按地址传递的,定义过程时,默认情况下参数是按地址传递的,也可加也可加“ByRefByRef”关键字指定按关键字指定按地址传递地址传递。n按地址传递是指把实参变量的内存地址传递给被按地址传递是指把实参变量的内存地址传递给被调用过程。主调过程的实参与被调过程的形参共调用过程。主调过程的实参与被调过程的形参共享同一存储单元,实质上形参与实参是同一个变享同一存储单元,实质上形参与实参是同一个变量。在被调过程中改变形参的值,相应实
18、参的值量。在被调过程中改变形参的值,相应实参的值也被更改。也被更改。22例例5.3 5.3 编写程序,分析程序运行结果。编写程序,分析程序运行结果。Public Sub Exchange1(x%, ByRef y%)Public Sub Exchange1(x%, ByRef y%)t = x: x = y: y = tt = x: x = y: y = tPrint x=; x, y=; yPrint x=; x, y=; yEnd SubEnd SubPrivate Sub Command1_Click()Private Sub Command1_Click()Dim a%, b%Dim
19、a%, b%a = 50: b = 100a = 50: b = 100Print a=; a, b=; bPrint a=; a, b=; bCall Exchange1(a, b)Call Exchange1(a, b)Print a=; a, b=; bPrint a=; a, b=; bEnd SubEnd Sub232. 传值方式传值方式n 定义过程时,定义过程时,形参前加形参前加“ByValByVal”关键字指定参关键字指定参数按数按值传递值传递. .n按值传递是指传送实参的值,而不是地址给被调按值传递是指传送实参的值,而不是地址给被调用过程中的形参。用过程中的形参。n被调用的过程
20、并没有访问实参的地址,如果过程被调用的过程并没有访问实参的地址,如果过程改变了形参的值,则所做变动不会影响对应实参改变了形参的值,则所做变动不会影响对应实参的值的值 。24Private Sub Command1_Click()Private Sub Command1_Click()Dim a %, b%Dim a %, b%a = 50: b = 100a = 50: b = 100Print a=; a, b=; bPrint a=; a, b=; bCall Exchange2(a, b)Call Exchange2(a, b)Print a=; a, b=; bPrint a=; a,
21、 b=; bEnd SubEnd SubPublic Sub Exchange2(ByVal x%, ByVal y%)Public Sub Exchange2(ByVal x%, ByVal y%)t = x: x = y: y = tt = x: x = y: y = tPrint x=; x, y=; yPrint x=; x, y=; yEnd SubEnd Sub 例例5.4 5.4 修改例修改例5.35.3的函数,将参数改为按值传递的函数,将参数改为按值传递 253.3.传递方式的选择传递方式的选择 在定义过程时,参数传递方式的选择可以参考以在定义过程时,参数传递方式的选择可以参考
22、以下几点:下几点:(1 1)用)用FunctionFunction过程可以通过过程名返回值,但只过程可以通过过程名返回值,但只能返回一个值;能返回一个值;SubSub过程不能通过过程名返回值,过程不能通过过程名返回值,但可以通过参数返回值,并可以返回多个值。但可以通过参数返回值,并可以返回多个值。(2 2)当需要用)当需要用SubSub过程返回值,其相应的参数应选用过程返回值,其相应的参数应选用传址方式;如果形参是数组或自定义类型则只能传址方式;如果形参是数组或自定义类型则只能用传址方式。用传址方式。(3 3)传值方式中,形参是一个真正的局部变量,不)传值方式中,形参是一个真正的局部变量,不会
23、对程序的运行产生干扰。会对程序的运行产生干扰。265.3.3 5.3.3 数组作过程的参数数组作过程的参数n 在定义过程时,数组可以作为形参出现在形参表中。在定义过程时,数组可以作为形参出现在形参表中。数组参数以带圆括号的数组名表示。数组参数以带圆括号的数组名表示。n 数组可以作为形参,数组可以作为形参,只能采用按地址传递方式。只能采用按地址传递方式。n 使用数组参数,要求调用时实参也必须是数组名。使用数组参数,要求调用时实参也必须是数组名。 n 由于形参数组在被调用前,下标上下界是不确定的,由于形参数组在被调用前,下标上下界是不确定的,在定义过程的代码中可以用在定义过程的代码中可以用LBou
24、nd和和UBound函数求函数求出数组下标的上下界。出数组下标的上下界。 27例例5.6 5.6 定义一个函数过程,用于求数组元素的最小值。定义一个函数过程,用于求数组元素的最小值。调用函数,分别求数组调用函数,分别求数组a a、b b的最小值。的最小值。Public Function FindMin%(m%( )Public Function FindMin%(m%( ) Dim a %, b %, i% Dim a %, b %, i% a = LBound(m) a = LBound(m) b = UBound(m) b = UBound(m) Min = m(a) Min = m(a)
25、 For i = a To b For i = a To b If m(i) Min Then Min = m(i) If m(i) 1 Then Fac = n * Fac(n - 1) Else Fac = 1 End IfEnd FunctionPrivate Sub Form_Click() Dim num% num = Val(InputBox(请输入小于请输入小于171的整数:的整数:) If num = 0 Then Print num & !=; Fac(num) End IfEnd Sub32递归求解有两个条件:递归求解有两个条件:(1) (1) 有明确的结束递归的边
26、界条件有明确的结束递归的边界条件( (又称终止条件又称终止条件) )以以及结束时的边界值;及结束时的边界值;(2) (2) 给出递归的表达形式,并且这种表达式向终止条给出递归的表达形式,并且这种表达式向终止条件变化,在有限的步骤内达到终止条件。件变化,在有限的步骤内达到终止条件。n VBVB递归过程的函数体一般由两个或两个以上的分递归过程的函数体一般由两个或两个以上的分支构成,其中至少有一个分支是非递归的,并且支构成,其中至少有一个分支是非递归的,并且递归分支的参数应朝非递归分支的方向发展。递归分支的参数应朝非递归分支的方向发展。335.5 5.5 过程的应用过程的应用例例5.10- 5.10
27、- 数制转换。定义一个函数过程实现十进制数数制转换。定义一个函数过程实现十进制数转换成二进制数、八进制数、十六进制数等的功能。转换成二进制数、八进制数、十六进制数等的功能。在进行程序设计时,应尽可能采用模块化设计,即把在进行程序设计时,应尽可能采用模块化设计,即把基本的功能抽象出来定义为基本的功能抽象出来定义为SubSub过程或过程或FunctionFunction过程。过程。34Private Function TrDec$(ByVal idec%, ibase%)Private Function TrDec$(ByVal idec%, ibase%)Dim sR$, iR%Dim sR$,
28、 iR%strR = strR = Do While idec 0Do While idec 0 iR = idec Mod ibase iR = idec Mod ibase If iR = 10 Then If iR = 10 Then sR = Chr$(65 + iR - 10) & sR sR = Chr$(65 + iR - 10) & sR Else Else sR = iR & sR sR = iR & sR End If End If idec = idec ibase idec = idec ibaseLoopLoopTrDec = sRTr
29、Dec = sREnd FunctionEnd Function35Private Sub Command1_Click()Private Sub Command1_Click()Dim Trin%Dim Trin%Trin = InputBox(Trin = InputBox(输入一个十进制数:输入一个十进制数:)Print Print 十进制数:十进制数:; Trin; TrinPrint Print 二进制数为:二进制数为:; TrDec(Trin, 2); TrDec(Trin, 2)Print Print 八进制数为:八进制数为:; TrDec(Trin, 8); TrDec(Tri
30、n, 8)Print Print 十六进制数为:十六进制数为:; TrDec(Trin, 16); TrDec(Trin, 16)End SubEnd Sub36例例5.12- 设计一个求两个数最大公约数的函数。设计一个求两个数最大公约数的函数。Function GCD(ByVal m%, ByVal n%)Dim i%If m n Then i = mElse i = nEnd IfDo While m Mod i 0 Or n Mod i 0 i = i - 1LoopGCD = iEnd Function37Private Sub Command1_Click() Dim G1%, G2
31、% G1 = Val(Text1.Text) G2 = Val(Text2.Text) Text3 = GCD(G1, G2)End Sub38例例5.13 5.13 编写过程,用下面的公式计算编写过程,用下面的公式计算的近似值:的近似值: 输出当输出当n=500,1000,5000,10000,20000时时 的近的近似值似值 。121) 1(.715131141nn39Public Function pi#(nPublic Function pi#(n#)#) Dim t#, x# Dim t#, x# For i = 1 To n For i = 1 To n x = (-1) (i -
32、 1) / (2 x = (-1) (i - 1) / (2 * * i - 1) i - 1) t = t + x t = t + x Next i Next i pi = t pi = t * * 4 4End FunctionEnd FunctionPrivate Sub Command1_Click()Private Sub Command1_Click()Dim x#Dim x#x = Val(InputBoxx = Val(InputBox(请输入请输入n n的值:的值:)Print pi(xPrint pi(x) )End SubEnd Sub40Public Sub sort(
33、a()Dim i%, j%, p%n = UBound(a)For i = 1 To n - 1 p = i For j = i + 1 To n If a(j) 2 Thenf = f(n - 1) + f(n - 2)Elsef = 1End IfEnd FunctionPrivate Sub Command1_Click()Dim n%, i%n = InputBox(n=)For i = 1 To nPrint f(i);Next iEnd Sub43nVBVB的程序结构是一种完全模块化的程序结构。的程序结构是一种完全模块化的程序结构。n模块(模块(ModuleModule)是相对独立
34、的程序单元,)是相对独立的程序单元,VBVB的代码的代码都存储在模块中,所有模块属于同一个工程,但每都存储在模块中,所有模块属于同一个工程,但每个模块又相对独立,并用一个单独的文件保存。个模块又相对独立,并用一个单独的文件保存。n在在VBVB中主要有三种模块:窗体模块、标准模块和类中主要有三种模块:窗体模块、标准模块和类模块。模块。n本节主要介绍标准模块、窗体模块和一个特殊的本节主要介绍标准模块、窗体模块和一个特殊的SubMainSubMain过程。过程。 5.65.6Visual BasicVisual Basic工程结构工程结构44n一个完整的一个完整的VBVB应用程序由工程文件(扩展名应
35、用程序由工程文件(扩展名.vbp.vbp)组成组成 ,在此工程中含有标准模块(扩展名,在此工程中含有标准模块(扩展名为为.bas.bas)、窗体模块(扩展名为)、窗体模块(扩展名为.frm.frm)和类模块)和类模块(扩展名为(扩展名为.cls.cls)。)。45n窗体模块窗体模块(.frm(.frm) ),是,是VBVB应用程序的基本组成部分,应用程序的基本组成部分,用于建立应用程序的用户界面。用于建立应用程序的用户界面。 n窗体模块可以包含事件过程、通用过程以及变量、窗体模块可以包含事件过程、通用过程以及变量、常数的窗体级声明。常数的窗体级声明。n如果在文本编辑器(如记事本程序)中观察窗体
36、模如果在文本编辑器(如记事本程序)中观察窗体模块,会看到窗体及其控件的描述,包括它们的属性块,会看到窗体及其控件的描述,包括它们的属性设置值。写入窗体模块的代码是该窗体所属的具体设置值。写入窗体模块的代码是该窗体所属的具体应用程序专用的。应用程序专用的。n若窗体中的对象含有二进制属性,保存该窗体时将若窗体中的对象含有二进制属性,保存该窗体时将自动生成同名的二进制数据文件自动生成同名的二进制数据文件(.frx)。 5.6.1 5.6.1 窗体模块窗体模块46n在窗体模块中,可以调用标准模块中的过程,也可在窗体模块中,可以调用标准模块中的过程,也可以调用其他窗体模块中的公用过程。以调用其他窗体模块
37、中的公用过程。n标准模块中的过程可以直接调用(如果过程名唯标准模块中的过程可以直接调用(如果过程名唯一)。一)。n调用其他窗体模块中的公用过程,则必须加上过程调用其他窗体模块中的公用过程,则必须加上过程所在的窗体名字,其格式为:所在的窗体名字,其格式为: 窗体名窗体名.过程名(参数列表)过程名(参数列表)47n标准模块标准模块(.bas)(.bas)是应用程序内其他模块访问的声明是应用程序内其他模块访问的声明和过程的容器。和过程的容器。n标准模块可以包含变量、常数、类型、外部过程的标准模块可以包含变量、常数、类型、外部过程的全局(在整个应用程序范围内有效)声明或模块级全局(在整个应用程序范围内
38、有效)声明或模块级声明。声明。 n在在VBVB工程中,有时在窗体的不同事件过程中存在要工程中,有时在窗体的不同事件过程中存在要执行的公共代码。这时可将这些公用代码(通常是执行的公共代码。这时可将这些公用代码(通常是SubSub过程或过程或FunctionFunction过程)在标准模块文件中定义。过程)在标准模块文件中定义。5.6.2 5.6.2 标准模块标准模块48标准模块的建立有三种方法:标准模块的建立有三种方法:(1 1)选择)选择“工程工程添加模块添加模块”命令。命令。(2 2)从工具栏上单击)从工具栏上单击“添加窗体添加窗体”按钮右侧的下拉箭按钮右侧的下拉箭头,在弹出的列表中选择头,
39、在弹出的列表中选择“添加模块添加模块”选项。选项。(3 3)在工程资源管理器中选中)在工程资源管理器中选中“工程工程”选项,单击右选项,单击右键打开快捷菜单,选择键打开快捷菜单,选择“添加添加”项下的项下的“添加模块添加模块”选项。选项。n创建标准模块后会打开标准模块窗口,可以进行变创建标准模块后会打开标准模块窗口,可以进行变量、常数、类型、外部过程的声明。量、常数、类型、外部过程的声明。49n一般情况下,整个应用程序从设计时的第一个窗一般情况下,整个应用程序从设计时的第一个窗体开始执行。体开始执行。n如果需要从其他窗体开始执行应用程序,则可选如果需要从其他窗体开始执行应用程序,则可选择择“工
40、程工程工程属性工程属性”命令指定启动窗体。命令指定启动窗体。n在实际应用中,有时在启动窗体之前需要检测计在实际应用中,有时在启动窗体之前需要检测计算机的当前状态,然后根据结果决定启动哪一个算机的当前状态,然后根据结果决定启动哪一个窗体,这就需要在启动程序时执行一个特殊的过窗体,这就需要在启动程序时执行一个特殊的过程程Sub MainSub Main。nSub MainSub Main建立在标准模块中,一个工程只能有一建立在标准模块中,一个工程只能有一个个Sub Main过程。过程。 5.6.3 SubMain5.6.3 SubMain过程过程505.7.15.7.1变量的作用域变量的作用域 5
41、.75.7变量的作用域和生存期变量的作用域和生存期 1.1.局部变量局部变量n 在过程内部使用在过程内部使用DimDim语句或语句或StaticStatic语句声明的变量。语句声明的变量。n 在过程内不加声明而直接使用的变量也是局部变量。在过程内不加声明而直接使用的变量也是局部变量。n 局部变量的作用域为定义该变量的过程体内。局部变量的作用域为定义该变量的过程体内。n 在不同的过程中可以声明相同名称的局部变量。在不同的过程中可以声明相同名称的局部变量。 51例:例:Private Sub Form_Load() Dim n% n为局部变量为局部变量 n= 10 Print n=;nEnd Su
42、bPrivate Sub From_Click() Dim n% Print n=;nEnd Sub程序运行后单击窗体,其输出结果是什么?程序运行后单击窗体,其输出结果是什么?522. 窗体窗体/模块级变量模块级变量n 在窗体或模块的在窗体或模块的 “ “通用声明通用声明” ”段中用段中用Dim语句或语句或Private语句声明的变量。语句声明的变量。n 可被本窗体可被本窗体或或模块的任何过程访问。但其他模块却模块的任何过程访问。但其他模块却不能访问该变量。不能访问该变量。Dim n% Dim n% 在通用中声明在通用中声明Private Sub Form_Load()Private Sub
43、Form_Load() n= 10 n= 10End SubEnd SubPrivate Sub Form_Click() Private Sub Form_Click() Print n=;n Print n=;nEnd SubEnd Sub例:例:533. 3. 全局变量全局变量n 全局变量是指在一个窗体或模块的全局变量是指在一个窗体或模块的“通用声明通用声明”段中,用段中,用PublicPublic语句声明的变量。语句声明的变量。n 全局变量的作用域是整个工程范围,可被工程全局变量的作用域是整个工程范围,可被工程的任何过程访问。的任何过程访问。n 在窗体模块声明的全局变量,在访问时需要在在窗体模块声明的全局变量,在访问时需要在变量名前加窗体名。而在标准模块中声明的全局变量名前加窗体名。而在标准模块中声明的全局变量可以直接访问。变量可以直接访问。543种变量声明及使用规则如下表:种变量声明及使用规则如下表:554. 4. 同名不同级的变量引用规则同名不同级的变量引用规则n 在一个过程中定义的局部变量与窗体或模块级变在一个过程中定义的局部变量与窗体或模块级变量、全局变量可以同名。量、全局变量可以同名。n 对于同名变量,系统实际引用的变量优先级是:对于同名变量,系统实
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 文化创意产业实习生就业指导合同范本
- 茶楼户外园林景观装修设计与施工合同
- 智能家居社区场地使用权转让合同
- 疫情防控场地租赁安全管理与应急措施协议
- 互联网平台电商代理销售服务合同
- 2024届广东省江门市名校中考数学模拟预测题含解析
- 四川公司财务管理制度
- 二手车展销会活动方案
- 云上德育活动方案
- 云南农民工讨薪活动方案
- 耕地占补平衡动态监管系统培训讲解
- 电大可编程控制器应用实训 形考任务2
- 实验设计与数据处理
- 语C圈洗白手册
- GB/T 1931-2009木材含水率测定方法
- 【不做为不担当自查报告】不作为不担当自查报告教师
- NB∕T 33009-2021 电动汽车充换电设施建设技术导则
- 熊春锦先生校勘的《德道经》
- 滑板项目选材指标与标准
- YTHG 金 属 波 纹 涵 管
- 有机化学第九章醛和酮
评论
0/150
提交评论