1、上午7时55分11秒,1,VB9-过程,第九章 过程,m! 问题的提出:求Cmn= 。n!(m-n)!,Dim I As Integer Sum1 = 1 : Sum2=1 : Sum3=1 For I = 1 To m : Sum1 = Sum1 * I : Next I For I = 1 To n : Sum2 = Sum2 * I : Next I For I = 1 To m-n : Sum2 = Sum3 * I : Next I S = Sum1 / ( Sum2 * Sum3 ) Print S,上午7时55分11秒,2,VB9-过程,第九章 过程,m! 问题的提出:求Cmn=
2、 。n!(m-n)!,为了实现代码的共用,提高程序的易理解性和易维护性,我们采用模块化的程序设计方法,将应用程序分解成若干个模块,每个模块具有简单的功能,与其它模块尽可能独立。,上午7时55分11秒,3,VB9-过程,第九章 过程,VB中的过程分类如下:,控件过程:自动建立,代码由用户编写通用过程:由用户建立并编写代码内部函数:由系统建立并由系统提供代码,Function过程Sub过程,过程,上午7时55分11秒,4,VB9-过程,第九章 过程,VB中的使用通用过程的优点:,提高程序的易读性,符合结构化程序设计原则。 提高程序的可维护性,改变通用过程内部的程序,不会影响到其它过程和模块。 简化
3、程序。,上午7时55分11秒,5,VB9-过程,第九章 过程,通用过程的特点:,通用过程都有具有规定的功能。 通用过程不响应用户事件和系统事件。 通用过程定义后不会被执行,只有在事件过程或其它通用过程调用时才被执行。 通用过程中可以执行规定的操作,也可以求解计算结果。,上午7时55分11秒,6,VB9-过程,第九章 过程,过程的有关术语:,定义:编写通用过程代码称为过程的定义。 调用:运行通用过程的称为调用。 调用过程:调用通用过程的过程称为调用过程。 被调过程:被其它过程调用的通用过程称为被调过程。 参数:在用过程中,需要接收数据和返回结果,这些都是通过参数的传递来实现的。,上午7时55分1
4、1秒,7,VB9-过程,9.1 Function过程,Function过程可以使用参数,参数是用来接收原始数据的。Function过程可以返回一个结果,是通过语句来实现的。,上午7时55分11秒,8,VB9-过程,一、Function过程的定义,1. Function过程的定义格式,格式: Public|Private|Static Function()As 类型 = Exit Function 语句组 = End Function,上午7时55分11秒,9,VB9-过程,一、Function过程的定义,(1)关键字Private、Public、Static分别表示通用过程为私有的、公共的和静
5、态的。 (2)形参表列出了函数过程用来接收数据的形参。 (3)形参只能是变量或动态数组。 (4)As 类型指定了Function过程返回值的类型 。 (5)函数过程的返回值通过语句:函数过程名=表达式 来实现。 (6)可以使用Exit Function语句从Function过程中退出。 (7)形参不能在过程内部重新定义。,2. Function过程的定义说明,上午7时55分11秒,10,VB9-过程,一、 Function 过程的定义,(1) 直接在代码窗口输入。,3. Function 过程的定义方法,(2)在代码窗口使用“添加”命令 。,上午7时55分11秒,11,VB9-过程,一、Fun
6、ction过程的定义,4. Function过程的定义举例 1,Function Average (x, y, z ) As DoubleDim S As DoubleS = ( x + y + z ) / 3Average = S End Function,求3个形参的平均值,上午7时55分11秒,12,VB9-过程,一、Function过程的定义,4. Function过程的定义举例 2,Function Fact (N As Integer ) As LongDim I As Integer, F As LongF = 1 For I = 1 To N F = F * I Next IF
7、act = F End Function,求形参N的阶乘值,上午7时55分11秒,13,VB9-过程,一、Function过程的定义,4. Function过程的定义举例 3,Function Fun (x, y, z )Fun = Sqr( Abs(x 3 + y 3 + z 3) End Function,上午7时55分11秒,14,VB9-过程,二、Function过程的调用,1. Function过程的调用格式,格式: ( ),调用Function过程时,将实参的值按顺序传递给形参,从调用过程转到Function过程去执行。 在Function过程中遇到 Exit Function 语
8、句或Function过程结束时,返回调用过程的调用处继续执行。,上午7时55分11秒,15,VB9-过程,二、Function过程的调用,2. Function过程的调用说明,(1)调用时,实参的数量与形参数量相等,类型与相应的形参一致 。(2)调用Function过程时,实参可以是常量、变量、数组和表达式 。,上午7时55分11秒,16,VB9-过程,二、Function过程的调用,3. Function过程的调用举例,要求:计算整数N的阶乘,计算阶乘用Function过程实现,N的值由用户从文本框中输入。,文本框输入N的值;标签输出计算结果; “计算”按钮的单击事件调用Function过程
9、求N!并输出计算结果 。,过程代码设计:一个形参接收原始数据,函数类型为长整型(可以计算12及以下阶乘)。,上午7时55分11秒,17,VB9-过程,二、Function过程的调用,3. Function过程的调用举例,通用过程代码: Private Function Fact(N As Integer) Dim I As Integer ,F As Long F = 1 For I = 1 To N : F = F * I : Next I Fact = F End Function,调用代码: Private Sub Command1_Click() Dim N As Integer N
10、= Val(Text1.Text) Label3.Caption = Str(Fact(N) End If,上午7时55分11秒,18,VB9-过程,三、Function过程的应用举例,例1. 利用Function过程求组合数,界面设计:两个文本框输入m和n的值;另一文本框输出计算结果; “计算”按钮的单击事件中三次调用Function过程求阶乘并输出计算结果。,过程代码设计:一个形参接收原始数据,函数类型为双精度型,可以计算任何数的阶乘(系统允许)。,其中的求阶乘用Function过程实现,m,n的值由用户从文本框中输入。,上午7时55分11秒,19,VB9-过程,二、Function过程的
11、调用,通用过程代码: Private Function Fact(n As Integer) As Double Dim I As Integer,Dim F As Double F = 1 For I = 1 To n :F = F * I : Next I Fact = F End Function,调用代码: Private Sub Command1_Click() M = Val(Text1.Text) :N = Val(Text1.Text) c = Fact(m) / (Fact(n) * Fact(m - n) Label3.Caption = Str(c) End If,上午7
12、时55分11秒,20,VB9-过程,三、Function过程的应用举例,例2. 利用Function过程求最大公约数,界面设计:两个文本框输入M和N的值;一个标签输出计算结果; 命令按钮的单击事件中调用Function过程求最大公约数并输出计算结果。,过程代码设计:二个形参接收原始数据,函数类型为整型。,其中的求最大公约数Function过程实现,M,N的值由用户从文本框中输入。,上午7时55分11秒,21,VB9-过程,二、Function过程的调用,通用过程代码: Private Function hcf(m As Integer, n As Integer) As Integer R =
13、 m Mod n Do While R 0 m = n : n = R : R = m Mod n Loop hcf = n End Function,调用代码: Private Sub Command1_Click() Label4.Caption = Str(hcf(m, n) End Sub,上午7时55分11秒,22,VB9-过程,三、Function过程的应用举例,例4. 编写一个Function过程,功能是其功能是生成一个字符串的反向字符串。,界面设计:二个文本框分别输入原始字符串和显示转换后的字符串。“转换”按钮的单击事件中调用函数转换并输出反向字符串 。,过程代码设计:使用Mi
14、d函数依次从形参的后面取一个字符连接到一个字符串变量中 。,上午7时55分11秒,23,VB9-过程,二、Function过程的调用,通用过程代码: Function Converse(S As String) As String L = Len(S) 测出原始字符串的长度 TemStr = “” For I=1 To L:TemStr=TemStr & Mid(S, L-I+1, 1): Next I Converse = TemStr End Function,调用代码: Private Sub Command1_Click() S = Text1.TextText2.Text = Con
15、verse(S) End Sub,上午7时55分11秒,24,VB9-过程,9.2 Sub过程,Function过程只能返回一个函数值,如果需要过程返回多个值时,必须使用Sub过程。 Sub过程也是一种通用过程,又叫做子程序或者子过程。 Sub过程通过形参接收原始数据,同时也是通过形参返回计算结果。,上午7时55分11秒,25,VB9-过程,一、Sub过程的定义,1. Sub 过程的定义格式,格式: Public|Private|Static Sub () Exit Sub 语句组 End Sub,上午7时55分11秒,26,VB9-过程,一、 Sub过程的定义,(1)关键字Private、P
16、ublic、Static分别表示通用过程为私有的、公共的和静态的(见9.5、9.6)。 (2)形参表中的形参可以用来接收原始数据,也可以用来返回结果。 (3)形参只能是变量或动态数组。 (4)Sub过程可以返回0个或多个函数值。 (5)可以使用Exit Sub语句从Sub过程中退出。 (6)形参不能在过程内部重新定义。,2. Sub过程的定义说明,上午7时55分11秒,27,VB9-过程,一、 Sub过程的定义,(1) 直接在代码窗口输入。,3. Sub过程的定义方法,(2)在代码窗口使用“添加”命令 。,上午7时55分11秒,28,VB9-过程,一、 Sub 过程的定义,4. Sub 过程的
17、定义举例 1,Sub Average (x, y, z, Average ) Dim S As SingleS = ( x + y + z ) / 3Average = S End Sub,求3个数的平均值,上午7时55分11秒,29,VB9-过程,一、 Sub 过程的定义,4. Sub过程的定义举例 2,Sub Fact ( N As Integer, F As Long )Dim I As IntegerF = 1 For I = 1 To N F = F * I Next I End Sub,求形参N的阶乘值,上午7时55分11秒,30,VB9-过程,一、 Sub 过程的定义,4. Su
18、b 过程的定义举例 3,Sub Fun (x, y, z, Max, Min )Max = x : Min = x If y Max Then Max = yIf y Max Then Max = zIf z Min Then Min = z End Sub,求3个数中的最大值和最小值,上午7时55分11秒,31,VB9-过程,一、 Sub 过程的定义,4. Sub 过程的定义举例 4,输出7行由*组成的正三角形,Sub F ( ) Dim I As Integer For I = 1 To 7PrintFor J = 1 To 2*I-1Pirnt “*“;Next JNext IEnd S
19、ub,上午7时55分11秒,32,VB9-过程,二、Sub过程的调用,1. Sub过程的调用格式,格式1: Call ( ),调用Sub过程时,将实参的值按顺序传递给形参,从调用过程转到Sub过程去执行。 在Sub过程中遇到 Exit Sub 语句或Sub过程结束时,返回调用过程的调用处继续执行。 调用时使用关键字Call则过程名后加圆括号,不使用关键字Call,则过程名后不加圆括号,格式2: ,上午7时55分11秒,33,VB9-过程,二、 Sub过程的调用,2. Sub过程的调用说明,(1)调用时,实参的数量与形参数量相等,类型与相应的形参一致 。 (2)调用Sub过程时,实参可以是常量、
20、变量、数组和表达式 。,上午7时55分11秒,34,VB9-过程,三、 Sub过程的应用举例,例1. 利用Sub过程求整数N的阶乘,界面设计:一个文本框输入N的值;标签输出计算结果; “计算”按钮的单击事件中调用Sub过程求阶乘并输出计算结果。,过程代码设计:一个形参接收原始数据,一个形参返回计算结果。,其中的求阶乘用Function过程实现,N的值由用户从文本框中输入。,上午7时55分11秒,35,VB9-过程,二、Function过程的调用,通用过程代码: Private Sub Fact(N As Integer, F As Long) Dim I As Integer F = 1 Fo
21、r I = 1 To N : F = F * I : Next I End Sub,调用代码: Private Sub Command1_Click() N = Val(Text1.Text) Call Fact(N, Ff) Label3.Caption = N & “!=“ & Str(Ff) End Sub,上午7时55分11秒,36,VB9-过程,三、 Sub过程的应用举例,例2. 编写一个Sub过程,求1+2+3+N之和。,界面设计:一个文本框输入K的值;一个文本框输出计算结果; “求和”按钮的单击事件中调用多次Sub过程求连加和。,过程代码设计:一个形参接收原始数据,一个形参返回计
22、算结果。,调用Sub过程求 1+(1+2)+(1+2+3)+(1+2+3+4+K)之和。,上午7时55分11秒,37,VB9-过程,二、Function过程的调用,通用过程代码: Sub Sum(n As Integer, S As Integer) S = 0 For I = 1 To n : S = S + I : Next I End Sub,调用代码: Private Sub Command1_Click() S = 0 : K = Val(Text1.Text) For I = 1 To K Call Sum(I, S1) S = S + S1 Next I Text2.Text =
23、 Str(S) End Sub,上午7时55分11秒,38,VB9-过程,三、 Sub过程的应用举例,例3. 编写一个Sub过程,将3个整数按照从大到小(降序)排序。,过程代码设计:三个形参既接收原始随机数,又返回排序结果。,界面设计:一个文本框显示3个随机数;一个文本框显示排序后的结果; “排序前”按钮的单击事件产生3个随机数,“排序后”按钮的单击事件调用Sub过程并显示结果。,上午7时55分11秒,39,VB9-过程,二、Function过程的调用,通用过程代码: Private Sub Sort(A As Integer, B As Integer, C As Integer) Dim
24、T As Integer If A B Then : T = A: A = B: B = T : End If If A C Then : T = A: A = C: C = T : End If If B C Then : T = B: B = C: C = T : End If End Sub,调用代码: Private Sub Command1_Click() Sort X, Y, Z Text2.Text = Str(X) & Str(Y) & Str(Z) End Sub,上午7时55分11秒,40,VB9-过程,9.3 过程的嵌套,在一个过程的执行期间又调用了另一个过程,称为过程的
25、嵌套调用。过程嵌套调用的原则是:在调用结束后仍返回到调用处。,上午7时55分11秒,41,VB9-过程,9.3 过程的嵌套,调用S1,调用过程,调用S2,子过程S1,子过程S2,上午7时55分11秒,42,VB9-过程,例:求:1!+2!+3!+20!,其中求阶乘和连续求和都用过程实现。,求连续和的过程需要一个接收数据的形参(该形参就是项数n)和一个返回结果的形参。,求阶乘的Sub过程需要一个接收数据的形参和一个返回结果的形参。,9.3 过程的嵌套,上午7时55分11秒,43,VB9-过程,二、Function过程的调用,求阶乘通用过程代码: Function Fact(n As Intege
26、r) As Double F = 1 For I = 1 To n : F = F * I : Next I Fact = F End FunctionEnd Sub,求和通用过程代码: Function Sigma(n As Integer) As Double Sum = 0 For I = 1 To n :Sum = Sum + Fact(I) : Next I Sigma = Sum End Function,调用代码: Private Sub Command1_Click() Text1.Text = Str(Sigma(20) End Sub,上午7时55分11秒,44,VB9-过
27、程,9.4 参数的传递,从前面的例子中可以看到,在过程中有一个很重要的概念就是参数。调用通用过程时,需要使用参数接收原始数据,也需要使用参数返回计算结果。,上午7时55分11秒,45,VB9-过程,一、 形参和实参,在调用过程时使用的参数称为实际参数,简称实参。 实参可以是常量、变量、数组和表达式。,在定义过程时使用的参数称为形式参数,简称形参。 形参只参是变量或者动态数组。,在调用过程时,照顺序将各实参的值传给形参,完成虚实结合,然后用实参执行被调用的过程。,上午7时55分11秒,46,VB9-过程,二、 按值传递和按地址传递,地址就是内存单元的编号,就像生活中的房间号一样,便于系统对内存进
28、行管理。,1. 地址的概念,变量在定义后,系统就会在内存中为变量分配存储单元并记下相应的地址。当用户对变量进行访问时,系统会根据内存单元的编号(即地址)找到相应的存储单元,进行数据的存取操作。,上午7时55分11秒,47,VB9-过程,二、 按值传递和按地址传递,按值传递就是将实参的值传递给形参,而不传递实参的地址,是一种单向传递方式 。,被调用的函数中如果形参的值发生变量,不会影响到实参变量的值 。,2. 参数按值传递,当实参为常量或表达式时,传递总是按值传递 。 当实参为变量时,在形参前加关键字ByVal则为单向传递。,上午7时55分11秒,48,VB9-过程,二、 按值传递和按地址传递,
29、2. 参数按值传递(实参为常量,单向传递),Function F (N , M ) N = N + 2M = M * MF = M + N End Function,Private Sub Form_Click ( ) Z = F( 3 , 5 ),程序运行结果为:,30,Print Z End Sub,上午7时55分11秒,49,VB9-过程,二、 按值传递和按地址传递,2. 参数按值传递(实参为变量,单向传递),Function F (ByVal N , ByVal M ) N = N + 2M = M * MF = M + N End Function,Private Sub Form_
30、Click ( ) X = 3Y = 5Z = F( X , Y ),程序运行结果为:,3 5 30,Print X, Y, Z End Sub,上午7时55分11秒,50,VB9-过程,二、 按值传递和按地址传递,按值传递就是将实参的地址传递给形参,实参与形参共享同一存储单元 。,因为共享存储单元,当被调函数中如果形参的值发生变化时会影响到调用过程中实参变量的值 。,3. 参数按地址传递,当实参为变量时,默认的传递是按地址传递 。 当实参为变量时,在形参前加关键字ByRef,也表示则按地址传递。,上午7时55分11秒,51,VB9-过程,二、 按值传递和按地址传递,3. 参数按地址传递(实参
31、为变量,默认双向传递),Function F ( N , M ) N = N + 2M = M * MF = M + N End Function,Private Sub Form_Click ( ) X = 3Y = 5Z = F( X , Y ),程序运行结果为:,5 25 30,Print X, Y, Z End Sub,上午7时55分11秒,52,VB9-过程,二、 按值传递和按地址传递,3. 参数按地址传递(实参为变量,双向传递),Function F (ByRef N, ByRef M ) N = N + 2M = M * MF = M + N End Function,Priva
32、te Sub Form_Click ( ) X = 3Y = 5Z = F( X , Y ),程序运行结果为:,5 25 30,Print X, Y, Z End Sub,上午7时55分11秒,53,VB9-过程,二、 按值传递和按地址传递,4. 参数按地址传递举例(形参X,Y均为单向传递),Function Power (X, ByVal Y ) Result = 1Do While Y0Result = Result * XY = Y 1LoopPower = Result End Function,Private Sub Form_Click ( ) Dim I As IntegerFo
33、r I = 1 To 5Print Power(5, I),Next I End Sub,程序运行结果为:,5 25 125 625 3125,上午7时55分11秒,54,VB9-过程,二、 按值传递和按地址传递,4. 参数按地址传递举例(形参X单向传递,Y按地址传递),Function Power (X, Y ) Result = 1Do While Y0Result = Result * YY = Y 1LoopPower = Result End Function,Private Sub Form_Click ( ) Dim I As IntegerFor I = 1 To 5Print
34、 Power(5, I),Next I End Sub,程序运行结果为:,5 5 5 5 死循环,上午7时55分11秒,55,VB9-过程,三、 参数传递举例,编写三个Sub过程:LetArray过程产生0,99之间的随机数并赋给一维数组;SortArray过程实现数组从大到小排序;PrintArray过程输出数组元素。,代码设计:三个过程都需要使用数组作实参。LetArray过程通过形参数组返回结果;SortArray过程作形参的数组既接收原始数据,又返回排序后的结果;PrintArray过程中形参数组只接收原始数据。,上午7时55分11秒,56,VB9-过程,二、Function过程的调用
35、,求阶乘通用过程代码: Function Fact(n As Integer) As Double F = 1 For I = 1 To n : F = F * I : Next I Fact = F End FunctionEnd Sub,求和通用过程代码: Function Sigma(n As Integer) As Double Sum = 0 For I = 1 To n :Sum = Sum + Fact(I) : Next I Sigma = Sum End Function,调用代码: Private Sub Command1_Click() Text1.Text = Str(
36、Sigma(20) End Sub,上午7时55分11秒,57,VB9-过程,9.5 代码模块,Visual Basic的应用程序由三种模块组成,这三种模块是:窗体模块(.frm文件)、标准模块(.bas文件)、类模块(.cls文件)。,窗体模块在创建窗体时产生,包含各种事件过程、Function过程和Sub过程。,标准模块由用户建立并编写代码,标准模块中可以包含Function过程和Sub过程 。,类模块是面向对象编程的基础,可以从类模块中编写代码建立新对象。,上午7时55分11秒,58,VB9-过程,9.5 代码模块,应用程序 工程文件(.vbp),窗体模块 (.frm)文件,类模块 (.
37、cls)文件,标准模块 (.bas)文件,Function过程,Sub过程,事件过程,Function过程,Sub过程,上午7时55分11秒,59,VB9-过程,一、 窗体模块,窗体模块是应用程序的基础。窗体模块文件为*.frm,是一个文本文件。窗体文件的内容包括对窗体及窗体中的控件属性的描述,也包括窗体中事件过程及通用过程的代码。 当用户在窗体上添加一个控件时,窗体文件中就会详细记录该控件的位置、尺寸、属性值等信息 。,上午7时55分11秒,60,VB9-过程,二、 标准模块,标准模块中可以建立通用过程。标准模块可以包含变量、常量和各种声明。 缺省情况下,标准模块中的代码是公有的,其它任何窗
38、体和或模块中的事件过程或通用过程都可以调用它。 标准模块不与任何窗体相关联,标准模块中不可以包含事件过程。,1. 标准模块,上午7时55分11秒,61,VB9-过程,二、 标准模块,(1)通过菜单操作 执行“工程”菜单中的“添加模块”命令。(2)使用工具栏操作 在“新建”工具栏中选择“添加模块”,2. 标准模块的建立,上午7时55分11秒,62,VB9-过程,二、 标准模块,标准模块可以被窗体模块或其它通用模块调用,调用方法与窗体模块中通用过程的调用方法相同。,3. 标准模块的使用,上午7时55分11秒,63,VB9-过程,三、 过程的作用域,在不同位置、使用不同的关键字定义的过程,允许被访问
39、的范围也不同,称为过程的作用域。 VB中的过程分为模块级和全局级。 定义过程时使用关键字Private,则所定义的过程为模块级,只能为本模块中的其它过程所调用。 定义过程时使用关键字Public,则所定义的过程为全局级,可以被应用程序所有窗体模块和所有标准模块所调用。,上午7时55分11秒,64,VB9-过程,三、 过程的作用域,窗体模块中定义的全局过程时,需要加上被调过程所在的窗体名称 。 调用标准模块中定义的全局过程时,可以直接使用过程名,但过程名必须是唯一的,否则也需要加上标准模块名称 。 在窗体模块或标准模块中定义的通用过程默认为Public。,上午7时55分11秒,65,VB9-过程
40、,三、 过程的作用域,上午7时55分11秒,66,VB9-过程,9.6 变量的作用域和生存期,变量有多种属性:变量的类型、变量的名称、变量的作用域、变量的生存期。 变量的类型表示了变量所存储数据的类型及范围; 变量的名称作为引用变量的标识; 变量的作用域表示变量的起作用的位置范围; 变量的生存期是指变量在内存中占用某个存储空间的时间范围 。,上午7时55分11秒,67,VB9-过程,一、 变量的作用域,变量的作用域决定了在应用程序中哪些过程中可以访问该变量。 根据作用域不同,变量分为局部变量、模块级变量和全局变量。,上午7时55分11秒,68,VB9-过程,一、 变量的作用域,局部变量的作用范
41、围为过程 。 在过程内部使用关键字Dim、Static声明的变量或者在过程内部未声明而直接使用的变量都是局部变量 。,1. 局部变量,上午7时55分11秒,69,VB9-过程,一、 变量的作用域,Sub S( )Dim X, Y, Z X = 1 : Y = 2 : Z = X + YPrint X, Y, Z End Su,1. 局部变量,Private Command1_Click( )Dim X, Y, Z X = 2 : Y = 3 : Z = X + Y Call S Print X, Y, Z End Sub,程序运行结果为:,1 2 3,2 3 5,上午7时55分11秒,70,V
42、B9-过程,一、 变量的作用域,模块级变量的作用范围为模块 。 在窗体模块或标准模块顶部声明段使用关键字Dim、Private声明的变量的变量都是模块级变量 。,2. 模块级变量,上午7时55分11秒,71,VB9-过程,一、 变量的作用域,全局变量的作用范围为整个应用程序 。 在标准模块或窗体模块顶部声明段使用关键字Public声明的变量的变量是全局变量 。 全局变量在应用程序运行时被初始化。,3. 全局变量,上午7时55分11秒,72,VB9-过程,二、 变量的生存期,变量的生存期决定了当过程执行之后变量是否释放它所占的存储单元。,根据变量的生存期,将变量分为动态变量和静态变量 。,上午7
43、时55分11秒,73,VB9-过程,二、 变量的生存期,在声明变量时不使用关键字Static声明的变量都是动态变量。使用之后释放所占的存储单元。,1. 动态变量,过程级的动态变量是在过程被执行时分配存储单元并初始化。,模块级的动态变量是在模块被执行时分配存储单元并初始化。,全局级的动态变量是在应用程序被执行时分配存储单元并初始化。,上午7时55分11秒,74,VB9-过程,二、 变量的生存期,使用关键字Static声明的变量为静态变量 。,2. 静态变量,静态变量只在应用程序运行时赋一次初值,在应用程序运行期间一直保留该变量的值,直到退出应用程序时才释放存储单元。,上午7时55分11秒,75,VB9-过程,二、 变量的生存期,