vb变量与过程的作用范围.ppt
《vb变量与过程的作用范围.ppt》由会员分享,可在线阅读,更多相关《vb变量与过程的作用范围.ppt(42页珍藏版)》请在咨信网上搜索。
1、第第8 8章章 变量与过程的作用范围变量与过程的作用范围1第第8 8章章 变量与过程的作用范围变量与过程的作用范围 在在VB中中,应应用用程程序序是是由由若若干干个个过过程程组组成成的的,这这些些过过程程一一般般保保存存在在窗窗体体文文件件(.frm)或或标标准准模模块块文文件件(.bas)中中。变变量量在在过过程程中中是是必必不不可可少少的的。根根据据变变量量或或过过程程所所处处的的不不同同位位置置,可可被被访访问问的的范范围围是是不不相相同同的的。变变量量与与过过程程可可被被访访问问的的范围称为变量与过程的作用域。范围称为变量与过程的作用域。v8.1 代码模块的概念代码模块的概念 在在建建
2、立立VB的的应应用用程程序序时时,应应首首先先设设计计代代码码的的结结构构。VB应用程序的结构通常如图应用程序的结构通常如图8-1所示。所示。图图8-1 VB应用程序的结构应用程序的结构 VB将将代代码码存存储储在在3种种不不同同的的模模块块中中:窗窗体体模模块块(窗窗体体)、标标准准模模块块(模模块块)和和类类模模块块。在在这这3种种模模块块中中都都可可以以包包含含声声明明(常常数数、变变量量、动动态态链链接接库库DLL的的声声明明)和和过过程程(Sub、Function、Property过过程程)。它它们们形形成成了了工工程程的的一一种种模模块块层层次次结结构构,可可以以较较好好地地组组织
3、织工工程程,同同时时也也便便于于代代码码的的维维护护,如图如图8-2所示。所示。图图8-2 工程中的模块工程中的模块8.1.1 8.1.1 窗体模块窗体模块 每每个个窗窗体体对对应应一一个个窗窗体体模模块块,窗窗体体模模块块包包含含窗窗体体及及其其控控件件的的属属性性设设置置、窗窗体体变变量量的的说说明明、事事件件过过程程、窗窗体体内内的的通通用过程、外部过程的窗体级声明。用过程、外部过程的窗体级声明。窗窗体体模模块块保保存存在在扩扩展展名名为为.frm的的文文件件中中。默默认认时时应应用用程程序序中中只只有有一一个个窗窗体体,因因此此有有一一个个以以.frm为为扩扩展展名名的的窗窗体体模模块
4、块文文件件。如如果果应应用用程程序序有有多多个个窗窗体体,就就会会有有多多个个以以.frm为为扩展名的窗体模块文件。扩展名的窗体模块文件。如如果果要要在在文文本本编编辑辑器器中中观观察察窗窗体体模模块块,则则还还会会看看到到窗窗体体及及其其控控件件的的描描述述,包包括括它它们们的的属属性性设设置置值值,如如图图8-3所所示示。窗体模块中也可以引用该应用程序内的其他窗体或对象。窗体模块中也可以引用该应用程序内的其他窗体或对象。从从“工工程程”菜菜单单中中执执行行“添添加加窗窗体体”命命令令,可可以以添添加加新新窗窗体体模块。模块。8.1.2 8.1.2 标准模块标准模块 标标准准模模块块保保存存
5、在在扩扩展展名名为为.bas的的文文件件中中,缺缺省省时时应应用用程程序序中中不不包包含含标标准准模模块块。标标准准模模块块可可以以包包含含公公有有或或模模块块级级的的变变量量、常常数数、类类型型、外外部部过过程程和和全全局局过过程程的的全全局局声声明明或或模模块块级级声声明明。缺缺省省时时,标标准准模模块块中中的的代代码码是是公公有有的的,任任何何窗窗体体或或模模块块中中的的事事件件过过程程或或通通用用过过程程都都可可以以调调用用它它。写写入入标标准准模模块块的的代代码码不不必必绑绑在在特特定定的的应应用用程程序序上上,在在许许多多不不同同的的应应用用程程序序中中可可以以重重用用标标准准模模
6、块块。在在标标准准模模块块中中可可以以存存储储通通用过程,但不能存储事件过程。用过程,但不能存储事件过程。从从“工工程程”菜菜单单中中执执行行“添添加加模模块块”命命令令,可可以以在在工工程程中中添添加标准模块。加标准模块。8.1.3 8.1.3 类模块类模块 在在VB中中,类类模模块块(文文件件扩扩展展名名为为.cls)是是面面向向对对象象编编程程的的基基础础。程程序序员员可可在在类类模模块块中中编编写写代代码码建建立立新新对对象象,这这些些新新对对象象可可以以包包含含自自定定义义的的属属性性和和方方法法,可可以以在在应应用用程程序序内内的的过过程程中中使使用用。实实际际上上,窗窗体体本本身
7、身正正是是这这样样一一种种类类模模块块,在其上可安放控件、可显示窗体窗口。在其上可安放控件、可显示窗体窗口。类类模模块块与与标标准准模模块块的的不不同同之之处处在在于于标标准准模模块块仅仅仅仅含含有有代代码码,而而类类模模块块既既含含有有代代码码又又含含有有数数据据,类类模模块块可可以以视视为为没没有物理表示的对象。有物理表示的对象。v8.2 变量的作用范围变量的作用范围 变变量量的的作作用用范范围围(作作用用域域)指指变变量量能能被被某某一一过过程程识识别别的的范范围围。当当一一个个应应用用程程序序中中出出现现多多个个过过程程或或函函数数时时,在在它它们们各各自自的的子子程程序序中中都都可可
8、以以定定义义自自己己的的常常量量、变变量量。这这时时,自自然然会会提提出出一一个个问问题题,这这些些常常量量或或变变量量是是否否在在程程序序中中到到处处可可用?回答是否定的。用?回答是否定的。在在VB中中,可可以以在在过过程程或或模模块块中中声声明明变变量量,根根据据声声明明变变量量的的位位置置,变变量量分分为为两两类类:过过程程级级变变量量(Procedure level)和和模块级变量(模块级变量(Module level)。)。按按照照作作用用范范围围分分类类,过过程程级级变变量量属属于于局局部部变变量量,而而模模块块级变量则属于全局变量。级变量则属于全局变量。8.2.1 8.2.1 过
9、程级变量过程级变量 在在一一个个过过程程内内部部使使用用Dim或或Static关关键键字字声声明明变变量量时时,只只有有该该过过程程内内部部的的代代码码才才能能访访问问或或改改变变该该变变量量的的值值,因因此此被被称称为为“过过程程级级变变量量”。过过程程级级变变量量的的作作用用范范围围限限制制在在该该过过程程内部。例如:内部。例如:Dim a As Integer,b As SingleStatic s As String 如如果果在在过过程程中中未未作作说说明明而而直直接接使使用用某某个个变变量量,该该变变量量也也被被当当成成过过程程级级变变量量。用用Static说说明明的的变变量量在在应
10、应用用程程序序的的整整个个运运行行过过程程中中都都一一直直存存在在,而而用用Dim说说明明的的变变量量只只在在过过程程执执行时存在,退出过程后,这类变量就会消失。行时存在,退出过程后,这类变量就会消失。过过程程级级变变量量属属于于局局部部变变量量,只只能能在在建建立立的的过过程程内内有有效效,即即使使是是在在主主程程序序中中建建立立的的变变量量,也也不不能能在在被被调调用用的的子子过过程程中使用。中使用。【例【例8-1】过程级局部变量示例。】过程级局部变量示例。Private Sub Form_Activate()Dim a As Integer,b As Integer,c As Integ
11、er 过程级局部变量 a=5:b=3 Print 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 调用Sum前;Tab(14);a;Tab(24);b;Tab(34);c Call Sum Print 调用Sum后;Tab(14);a;Tab(24);b;Tab(34);cEnd SubSub Prod()通用过程Dim a As Integer
12、,b As Integer,c As Integer 过程级局部变量图图8-7 程序运行结果程序运行结果 c=a*b Print Prod子过程;Tab(14);a;Tab(24);b;Tab(34);cEnd SubSub Sum()通用过程 Dim a As Integer,b As Integer,c As Integer 过程级局部变量 c=a+b Print Sum子过程;Tab(14);a;Tab(24);b;Tab(34);cEnd Sub 程程序序的的运运行行结结果果如如图图8-7所所示示。从从上上面面程程序序的的运运行行结结果果可可以看出,主程序中的变量没有带到子过程中。以看
13、出,主程序中的变量没有带到子过程中。8.2.2 8.2.2 模块级变量模块级变量 在在模模块块的的通通用用段段中中声声明明的的变变量量属属于于模模块块级级变变量量。模模块块级级变量分为私有和公有。变量分为私有和公有。1.私有的模块级变量私有的模块级变量 私私有有的的模模块块级级变变量量在在声声明明它它的的整整个个模模块块的的所所有有过过程程中中都都能能使使用用,但但其其他他模模块块却却不不能能访访问问该该变变量量。声声明明方方法法是是在在模模块的通用段中使用块的通用段中使用Private或或Dim关键字声明变量。例如:关键字声明变量。例如:Private s As StringDim a As
14、 Integer,b As Single 在在模模块块的的通通用用段段中中使使用用Private或或Dim作作用用相相同同,但但使使用用Private会提高代码的可读性。会提高代码的可读性。2.公有的模块级变量公有的模块级变量 公公有有的的模模块块级级变变量量在在所所有有模模块块中中的的所所有有过过程程中中都都能能使使用用。它它的的作作用用范范围围是是整整个个应应用用程程序序,因因此此公公有有模模块块级级变变量量属属于于全全局局变变量量。声声明明方方法法是是在在模模块块的的通通用用段段中中使使用用Public关关键键字声明变量。例如:字声明变量。例如:Public a As Integer,b
15、 As Single 全全局局变变量量是是指指在在所所有有程程序序(包包括括主主程程序序和和过过程程)中中都都可可以以使使用用的的内内存存变变量量。就就像像在在一一个个过过程程中中定定义义的的变变量量一一样样,在在子子过过程程中中可可以以任任意意改改变变和和调调用用全全局局变变量量,当当子子过过程程执执行行完后,其值又带回主程序。完后,其值又带回主程序。把把变变量量定定义义为为全全局局变变量量虽虽然然很很方方便便,但但这这样样会会增增加加变变量量在在程程序序中中被被无无意意修修改改的的机机会会,因因此此,如如果果有有更更好好的的处处理理变变量量的的方方法法,就就不不要要声声明明全全局局变变量量
16、。另另外外,用用Const语语句句定定义义的符号常量也能声明为全局的。的符号常量也能声明为全局的。【例【例8-2】公有的模块级全局变量示例。】公有的模块级全局变量示例。Public a As Integer,b As Integer,c As Integer 写在“(通用)”的“(声明)”中Private 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
17、);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;Tab(34);c Call Sum Print 调用Sum后;Tab(14);a;Tab(24);b;Tab(34);cEnd Sub图图8-8 程序运行结果程序运行结果Sub Prod()通用过程 c=a*b Print Prod子过程;Tab(14);a;Tab(24);b;Tab(34);cEnd SubSub Sum()通用过程 c=a+b Print Sum子过程;Tab(14)
18、;a;Tab(24);b;Tab(34);cEnd Sub 程程序序的的运运行行结结果果如如图图8-8所所示示。从从程程序序的的运运行行结结果果可可以以看看出出,在在模模块块级级中中用用Public声声明明的的全全程程变变量量a、b、c,在在各各过过程中都能访问和修改。程中都能访问和修改。8.2.3 8.2.3 变量的生存期变量的生存期 从从变变量量的的作作用用空空间间来来说说,变变量量有有作作用用范范围围;从从变变量量的的作作用时间来说,变量有生存期。用时间来说,变量有生存期。假假设设过过程程内内部部有有一一个个变变量量,当当程程序序运运行行进进入入该该过过程程时时,要要分分配配给给该该变变
19、量量一一定定的的内内存存单单元元,一一旦旦程程序序退退出出该该过过程程,变变量量占占有有的的内内存存单单元元是是释释放放还还是是保保留留,根根据据变变量量在在程程序序运运行行期期间间的的生生命命周周期期,把把变变量量分分为为静静态态变变量量(Static)和和动动态态变变量量(Dynamic)。静静态态变变量量不不释释放放内内存存单单元元,动动态态变变量量释释放放内内存存单单元元,有有时时候候可可能能需需要要某某些些局局部部变变量量是是静静态态变变量量,而其他变量则为动态变量。而其他变量则为动态变量。【例【例8-3】下面程序说明了】下面程序说明了Static关键字的作用。关键字的作用。Priv
20、ate Sub Form_Activate()Dim i As Integer For i=1 To 6 TestSub Next iEnd SubSub TestSub()Dim x As Integer,m As String图图8-9 程序运行结果程序运行结果 Static y,n x=x+1:y=y+1 m=m&*:n=n&*Print x=;x;y=;y,m=;m,n=;nEnd Sub 程序的运行结果如图程序的运行结果如图8-9所示。所示。说说明明:x、y、m、n都都是是过过程程TestSub中中的的局局部部变变量量,y、n被被说说明明为为Static变变量量,每每次次调调用用保保
21、持持上上一一次次的的值值,y、n的的值值会会变变化化;x、m是是动动态态变变量量,每每次次调调用用都都被被重重新新初初始始化化为为0或或,它们的值总是不变。,它们的值总是不变。为为使使过过程程中中所所有有的的局局部部变变量量为为静静态态变变量量,可可在在过过程程头头的的起始处加上起始处加上Static关键字。例如:关键字。例如:Static Function RunningTotal(num)这这就就使使过过程程中中的的所所有有局局部部变变量量都都变变为为静静态态,无无论论它它们们是是用用Static、Dim或或Private声明的还是隐式声明的。声明的还是隐式声明的。v8.3 过程的作用范围
22、过程的作用范围 过过程程也也有有作作用用的的范范围围(作作用用域域),在在VB中中,过过程程的的作作用用域分为模块级(或称文件级)和全局级(或称工程级)。域分为模块级(或称文件级)和全局级(或称工程级)。8.3.1 8.3.1 模块级过程模块级过程 模模块块级级过过程程是是在在某某个个模模块块(文文件件)内内定定义义的的过过程程。如如果果在在Sub或或Function前前加加关关键键字字Private,则则该该过过程程只只能能被被在在本本模模块块(文文件件)中中定定义义的的过过程程调调用用。即即其其作作用用域域为为本本模模块块(文件)。(文件)。8.3.2 8.3.2 全局级过程全局级过程 全
23、全局局级级过过程程是是在在定定义义过过程程时时,在在Sub或或Function前前加加关关键键字字Public(可可以以默默认认)。全全局局级级过过程程可可被被整整个个应应用用程程序序所所有有模模块块(文文件件)中中定定义义的的过过程程调调用用。即即其其作作用用域域为为整整个个应应用程序(工程)。用程序(工程)。8.3.3 8.3.3 调用其他模块中的过程调用其他模块中的过程 在在工工程程中中的的任任何何地地方方都都能能调调用用其其他他模模块块中中的的全全局局过过程程。调调用用其其他他模模块块中中的的过过程程的的各各种种技技巧巧,取取决决于于该该过过程程是是在在窗窗体模块中、类模块中还是标准模
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- vb 变量 过程 作用 范围
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【天****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【天****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。