Visual Basic程序设计教程 第2版 教学课件 ppt 作者 刘瑞新 电子教案 第8章 变量与过程的作用范围

上传人:E**** 文档编号:89183898 上传时间:2019-05-20 格式:PPT 页数:42 大小:268KB
返回 下载 相关 举报
Visual Basic程序设计教程 第2版 教学课件 ppt 作者 刘瑞新 电子教案 第8章 变量与过程的作用范围_第1页
第1页 / 共42页
Visual Basic程序设计教程 第2版 教学课件 ppt 作者 刘瑞新 电子教案 第8章 变量与过程的作用范围_第2页
第2页 / 共42页
Visual Basic程序设计教程 第2版 教学课件 ppt 作者 刘瑞新 电子教案 第8章 变量与过程的作用范围_第3页
第3页 / 共42页
Visual Basic程序设计教程 第2版 教学课件 ppt 作者 刘瑞新 电子教案 第8章 变量与过程的作用范围_第4页
第4页 / 共42页
Visual Basic程序设计教程 第2版 教学课件 ppt 作者 刘瑞新 电子教案 第8章 变量与过程的作用范围_第5页
第5页 / 共42页
点击查看更多>>
资源描述

《Visual Basic程序设计教程 第2版 教学课件 ppt 作者 刘瑞新 电子教案 第8章 变量与过程的作用范围》由会员分享,可在线阅读,更多相关《Visual Basic程序设计教程 第2版 教学课件 ppt 作者 刘瑞新 电子教案 第8章 变量与过程的作用范围(42页珍藏版)》请在金锄头文库上搜索。

1、第8章 变量与过程的作用范围,第8章 变量与过程的作用范围,在VB中,应用程序是由若干个过程组成的,这些过程一般保存在窗体文件(.frm)或标准模块文件(.bas)中。变量在过程中是必不可少的。根据变量或过程所处的不同位置,可被访问的范围是不相同的。变量与过程可被访问的范围称为变量与过程的作用域。,8.1 代码模块的概念 在建立VB的应用程序时,应首先设计代码的结构。VB应用程序的结构通常如图8-1所示。 图8-1 VB应用程序的结构,VB将代码存储在3种不同的模块中:窗体模块(窗体)、标准模块(模块)和类模块。在这3种模块中都可以包含声明(常数、变量、动态链接库DLL的声明)和过程(Sub、

2、Function、Property过程)。它们形成了工程的一种模块层次结构,可以较好地组织工程,同时也便于代码的维护,如图8-2所示。 图8-2 工程中的模块,8.1.1 窗体模块 每个窗体对应一个窗体模块,窗体模块包含窗体及其控件的属性设置、窗体变量的说明、事件过程、窗体内的通用过程、外部过程的窗体级声明。 窗体模块保存在扩展名为.frm的文件中。默认时应用程序中只有一个窗体,因此有一个以.frm为扩展名的窗体模块文件。如果应用程序有多个窗体,就会有多个以.frm为扩展名的窗体模块文件。 如果要在文本编辑器中观察窗体模块,则还会看到窗体及其控件的描述,包括它们的属性设置值,如图8-3所示。窗

3、体模块中也可以引用该应用程序内的其他窗体或对象。 从“工程”菜单中执行“添加窗体”命令,可以添加新窗体模块。,8.1.2 标准模块 标准模块保存在扩展名为.bas的文件中,缺省时应用程序中不包含标准模块。标准模块可以包含公有或模块级的变量、常数、类型、外部过程和全局过程的全局声明或模块级声明。缺省时,标准模块中的代码是公有的,任何窗体或模块中的事件过程或通用过程都可以调用它。写入标准模块的代码不必绑在特定的应用程序上,在许多不同的应用程序中可以重用标准模块。在标准模块中可以存储通用过程,但不能存储事件过程。 从“工程”菜单中执行“添加模块”命令,可以在工程中添加标准模块。,8.1.3 类模块

4、在VB中,类模块(文件扩展名为.cls)是面向对象编程的基础。程序员可在类模块中编写代码建立新对象,这些新对象可以包含自定义的属性和方法,可以在应用程序内的过程中使用。实际上,窗体本身正是这样一种类模块,在其上可安放控件、可显示窗体窗口。 类模块与标准模块的不同之处在于标准模块仅仅含有代码,而类模块既含有代码又含有数据,类模块可以视为没有物理表示的对象。,8.2 变量的作用范围 变量的作用范围(作用域)指变量能被某一过程识别的范围。当一个应用程序中出现多个过程或函数时,在它们各自的子程序中都可以定义自己的常量、变量。这时,自然会提出一个问题,这些常量或变量是否在程序中到处可用?回答是否定的。

5、在VB中,可以在过程或模块中声明变量,根据声明变量的位置,变量分为两类:过程级变量(Procedure level)和模块级变量(Module level)。 按照作用范围分类,过程级变量属于局部变量,而模块级变量则属于全局变量。,8.2.1 过程级变量 在一个过程内部使用Dim或Static关键字声明变量时,只有该过程内部的代码才能访问或改变该变量的值,因此被称为“过程级变量”。过程级变量的作用范围限制在该过程内部。例如: Dim a As Integer, b As Single Static s As String 如果在过程中未作说明而直接使用某个变量,该变量也被当成过程级变量。用St

6、atic说明的变量在应用程序的整个运行过程中都一直存在,而用Dim说明的变量只在过程执行时存在,退出过程后,这类变量就会消失。 过程级变量属于局部变量,只能在建立的过程内有效,即使是在主程序中建立的变量,也不能在被调用的子过程中使用。,【例8-1】过程级局部变量示例。 Private Sub Form_Activate() Dim a As Integer, b As Integer, c As Integer 过程级局部变量 a = 5: b = 3 Print Print Tab(15); “a“; Tab(25); “b“; Tab(35); “c=a*b“ Print “调用Prod前

7、“; Tab(14); a; Tab(24); b; Tab(34); c Call Prod Print “调用Prod后“; Tab(14); a; Tab(24); b; Tab(34); c Print Print “调用Sum前“; Tab(14); a; Tab(24); b; Tab(34); c Call Sum Print “调用Sum后“; Tab(14); a; Tab(24); b; Tab(34); c End Sub Sub Prod() 通用过程 Dim a As Integer, b As Integer, c As Integer 过程级局部变量,图8-7 程

8、序运行结果 c = a * b Print “Prod子过程“; Tab(14); a; Tab(24); b; Tab(34); c End Sub Sub Sum() 通用过程 Dim a As Integer, b As Integer, c As Integer 过程级局部变量 c = a + b Print “Sum子过程“; Tab(14); a; Tab(24); b; Tab(34); c End Sub 程序的运行结果如图8-7所示。从上面程序的运行结果可以看出,主程序中的变量没有带到子过程中。,8.2.2 模块级变量 在模块的通用段中声明的变量属于模块级变量。模块级变量分为

9、私有和公有。 1. 私有的模块级变量 私有的模块级变量在声明它的整个模块的所有过程中都能使用,但其他模块却不能访问该变量。声明方法是在模块的通用段中使用Private或Dim关键字声明变量。例如: Private s As String Dim a As Integer, b As Single 在模块的通用段中使用Private或Dim作用相同,但使用Private会提高代码的可读性。,2. 公有的模块级变量 公有的模块级变量在所有模块中的所有过程中都能使用。它的作用范围是整个应用程序,因此公有模块级变量属于全局变量。声明方法是在模块的通用段中使用Public关键字声明变量。例如: Publ

10、ic a As Integer, b As Single 全局变量是指在所有程序(包括主程序和过程)中都可以使用的内存变量。就像在一个过程中定义的变量一样,在子过程中可以任意改变和调用全局变量,当子过程执行完后,其值又带回主程序。 把变量定义为全局变量虽然很方便,但这样会增加变量在程序中被无意修改的机会,因此,如果有更好的处理变量的方法,就不要声明全局变量。另外,用Const语句定义的符号常量也能声明为全局的。,【例8-2】公有的模块级全局变量示例。 Public a As Integer, b As Integer, c As Integer 写在“(通用)”的“(声明)”中 Private

11、 Sub Form_Activate() 事件过程 a = 5: b = 3 Print Tab(15); “a“; Tab(25); “b“; Tab(35); “c=a*b“ Print “调用Prod前“; Tab(14); a; Tab(24); b; Tab(34); c Call Prod Print “调用Prod后“; Tab(14); a; Tab(24); b; Tab(34); c Print Print Tab(15); “a“; Tab(25); “b“; Tab(35); “c=a+b“ Print “调用Sum前“; Tab(14); a; Tab(24); b;

12、 Tab(34); c Call Sum Print “调用Sum后“; Tab(14); a; Tab(24); b; Tab(34); c End Sub,图8-8 程序运行结果 Sub Prod() 通用过程 c = a * b Print “Prod子过程“; Tab(14); a; Tab(24); b; Tab(34); c End Sub Sub Sum() 通用过程 c = a + b Print “Sum子过程“; Tab(14); a; Tab(24); b; Tab(34); c End Sub 程序的运行结果如图8-8所示。从程序的运行结果可以看出,在模块级中用Publ

13、ic声明的全程变量a、b、c,在各过程中都能访问和修改。,8.2.3 变量的生存期 从变量的作用空间来说,变量有作用范围;从变量的作用时间来说,变量有生存期。 假设过程内部有一个变量,当程序运行进入该过程时,要分配给该变量一定的内存单元,一旦程序退出该过程,变量占有的内存单元是释放还是保留,根据变量在程序运行期间的生命周期,把变量分为静态变量(Static)和动态变量(Dynamic)。静态变量不释放内存单元,动态变量释放内存单元,有时候可能需要某些局部变量是静态变量,而其他变量则为动态变量。,【例8-3】下面程序说明了Static关键字的作用。 Private Sub Form_Activa

14、te() Dim i As Integer For i = 1 To 6 TestSub Next i End Sub Sub TestSub() Dim x As Integer, m As String 图8-9 程序运行结果 Static y, n x = x + 1: y = y + 1 m = m n End Sub 程序的运行结果如图8-9所示。,说明:x、y、m、n都是过程TestSub中的局部变量,y、n被说明为Static变量,每次调用保持上一次的值,y、n的值会变化;x、m是动态变量,每次调用都被重新初始化为0或“,它们的值总是不变。 为使过程中所有的局部变量为静态变量,可

15、在过程头的起始处加上Static关键字。例如: Static Function RunningTotal (num) 这就使过程中的所有局部变量都变为静态,无论它们是用Static、Dim或Private声明的还是隐式声明的。,8.3 过程的作用范围 过程也有作用的范围(作用域),在VB中,过程的作用域分为模块级(或称文件级)和全局级(或称工程级)。 8.3.1 模块级过程 模块级过程是在某个模块(文件)内定义的过程。如果在Sub或Function前加关键字Private,则该过程只能被在本模块(文件)中定义的过程调用。即其作用域为本模块(文件)。,8.3.2 全局级过程 全局级过程是在定义过

16、程时,在Sub或Function前加关键字Public(可以默认)。全局级过程可被整个应用程序所有模块(文件)中定义的过程调用。即其作用域为整个应用程序(工程)。,8.3.3 调用其他模块中的过程 在工程中的任何地方都能调用其他模块中的全局过程。调用其他模块中的过程的各种技巧,取决于该过程是在窗体模块中、类模块中还是标准模块中。 (1) 调用窗体中的过程 所有窗体模块的外部调用必须指向包含此过程的窗体模块。如果在窗体模块Form1中包含SomeSub过程,则可使用下面的语句调用Form1中的过程: Call Form1.SomeSub( arguments ),(2) 调用类模块中的过程 与窗体中调用过程类似,在类模块中调用过程要调用与过程一致并且指向类实例的变量。例如,DemoClass是类Class1的实例: Dim DemoClass as New Class1 DemoClass.SomeSub 不同于窗体的

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号