vb程序设计教程第三版第三章第6章
发布时间:2021-06-05
发布时间:2021-06-05
vb程序设计教程第三版第三章
第6章 变量与过程的作用范围6.1 概 述在第2章我们介绍了VB应用程序(通常称为 工程)的组织结构,它由窗体模块、标准模块和类 模块组成。VB程序代码就保存在窗体模块文件 (*.Frm)、标准模块文件(*.Bas)或类模块文 件(*.Cls)中。它们形成了工程的一种模块层次 结构,如下图所示。
vb程序设计教程第三版第三章
一个应用程序的组成结构
vb程序设计教程第三版第三章
6.1.1 窗体模块(文件扩展名为 .FRM ) 文件扩展名为 窗体模块。窗体模块可以包含处理事件的过程、 窗体模块。窗体模块可以包含处理事件的过程、 通用过程以及变量、常数、 通用过程以及变量、常数、类型和外部过程的窗体 级声明。如果要在文本编辑器中观察窗体模块, 级声明。如果要在文本编辑器中观察窗体模块,则 还会看到窗体及其控件的描述, 还会看到窗体及其控件的描述,包括它们的属性设 置值。 置值。写入窗体模块的代码是该窗体所属的具体应 用程序专用的; 用程序专用的;它也可以引用该应用程序内的其它 窗体或对象。 窗体或对象。
vb程序设计教程第三版第三章
6.1.2 标准模块(文件扩展名为.BAS) 它们可以包含变量、常数、类型、外部 过程和全局过程的全局(在整个应用程序范围内有 效的)声明或模块级声明。写入标准模块的代码不 必绑在特定的应用程序上,则在许多不同的应用 程序中可以重用标准模块。
vb程序设计教程第三版第三章
6.1.3 类模块(文件扩展名为 .CLS) 在 Visual Basic 中类模块是面向对象编 程的基础。可在类模块中编写代码建立新对象。 这些新对象可以包含自定义的属性和方法。实际 上,窗体正是这样一种类模块,在其上可安放控 件,可显示窗体窗口。
vb程序设计教程第三版第三章
6.2 过程的作用域概念[Public|Private] Sub 子过程名([形式参数列表]) ….. End Sub 通用子过程和函数过程既可写在窗体模块中也可写在 标准模块中,在定义时可选用关键字Private(局部)和 Public(全局),来决定它们能被调用的范围。
vb程序设计教程第三版第三章
按过程的作用范围来划分,过程可分为: 模块级过程 全局级过程 1、窗体/模块级过程: 加Private关键字的过程,只能被定义的窗体或模块 中的过程调用。 2、全局级过程: 加Public关键字(或缺省)的过程,可供该应用程 序的所有窗体和所有标准模块中的过程调用。
vb程序设计教程第三版第三章
总结归纳过程的定义及作用域如下表
vb程序设计教程第三版第三章
6.3 变量的作用域概述: 在VB中,由于可以在过程中和模块中声明变 量,根据定义变量的位置和定义变量的语句不同, 变量可以分为: 局部变量(过程级变量) 窗体/模块级变量(私有的模块级变量,能被本 模块的所有过程和函数使用) 全局级变量(公有的模块级变量)。
vb程序设计教程第三版第三章
6.3.1 过程级变量——局部变量局部变量: 在过程内用声明的变量,只能在本过程
中使 用。 在过程内部使用 Dim 或者 Static 关键 字来声明的变量,只在声明它们的过程中才能被 访问或改变该变量的值,别的过程不可访问。所 以可以在不同的过程中声明相同名字的局部变量 而互不影响。
vb程序设计教程第三版第三章
例: Private Sub Form_Load() Dim n% n= 10 End Sub Private Sub From_Click() Dim n% Print “n=“;n End Sub 程序运行后单击窗体,其输出结果是什么?
vb程序设计教程第三版第三章
6.3.2 窗体/模块级变量窗体/模块级变量: 在“通用声明”段中用Dim语句或用Private语句声明 的变量,可被本窗体/模块的任何过程访问。但其他模块 却不能访问该变量。
例如:在“通用声明”段声明如下变量 Private s As String Dim a As Integer,b As Single
vb程序设计教程第三版第三章
6.3.3 全局变量全局变量也称公有的模块级变量,在窗体模 块或标准模块的顶部的“通用”声明段用Public 关键字声明,它的作用范围是整个应用程序,即 可被本应用程序的任何过程或函数访问。
例如: Public a As Integer,b As single ,
vb程序设计教程第三版第三章
3种变量声明及使用规则如下表:
vb程序设计教程第三版第三章
6.3.4 关于多个变量同名一、公用变量与局部变量同名在不同过程中定义同名变量,它们互不影响,但若 在一过程中定义使用了与全局变量同名的变量,则就应注意。
vb程序设计教程第三版第三章
Public Temp As Integer ' 定义全局变量 Private Sub Form_Load() Temp = 1 ' 将全局变量Temp 的值设置成 1 End Sub Private Sub Command1_Click() Dim Temp As Integer ' 定义局部变量 Temp = 2 ' 将局部变量Temp 的值设置成 2 Print "temp="; Temp Print "temp="; Form1.Temp End Sub Private Sub Command2_Click() Print "temp="; Temp End Sub
vb程序设计教程第三版第三章
二、全局变量同名如果不同模块中的全局变量使用同一名字,则通过 同时引用模块名和变量名就可以在代码中区分它们。 例如,如果有一个在 Form1 和 Module1 中都声明了 公用的 Integer 变量 intX,则把它们作为 Module1.intX 和Form1.intX 来引用便得到正确值。也就是说如果不 同模块中的全局变量使用同一名字,引用时就需要使 用“模块名.变量名”的形式来区分它们。
vb程序设计教程第三版第三章
6.3.5 静态变量 概念除作用域之外,变量还有存活期,在这一期间变 量能够保持它们的值。 在应用程序的存活期内一直保持模块级变量和全 局变量的值。但是,对于Dim声明的局部变量仅当过程执 行期间存在,当一个过程执行完毕,它的局部变量的值就 已经不存在,而且变量所占据的内存也被释放。当下一次 执行该过程时,它的所有局部变量将重新初始化。
局部变量的存活期由其定义的关键词来决定。
vb程序设计教程第三版第三章
局部变量声明:Dim声明:随过程的调用而分配存贮单元,变量的初 始化;过程体结束,变量的内容自动消失,存贮单元释 放。 Static声明,每次调用过程,变量保持上次调用结束时 的值。 声明形式: Static
变量名 [AS 类型] Static Function 函数过程名([参数列表]) [As 类型] Static Sub 子过程名[(参数列表) ] 注意:过程名前加Static,表示该过程内的局部变量都是 静态变量。
vb程序设计教程第三版第三章
例: 有一个人编了下面一段程序,想用变量n记录单击窗 体的次数。 Private Sub Form_Click() Dim n As Integer n=n+1 Print "已单击次数:"; n & "次" " "; " " End Sub 分析程序运行后多次单击窗体的输出结果: 要记录单击窗体次数,如何实现?并比较使用 模块变量和静态变量的差别。
vb程序设计教程第三版第三章
例题:Private Sub Form_Click() Dim i% ,isum% For i = 1 To 5 isum = sum(i) Print isum, , Next i End Sub Private Function sum(n As Integer) Dim j As Integer j=j+n sum = j End Function Static j As Integer
1
2
3
4
5
结果如何?