电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

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

42页
  • 卖家[上传人]:E****
  • 文档编号:89183898
  • 上传时间:2019-05-20
  • 文档格式:PPT
  • 文档大小:268KB
  • / 42 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、第8章 变量与过程的作用范围,第8章 变量与过程的作用范围,在VB中,应用程序是由若干个过程组成的,这些过程一般保存在窗体文件(.frm)或标准模块文件(.bas)中。变量在过程中是必不可少的。根据变量或过程所处的不同位置,可被访问的范围是不相同的。变量与过程可被访问的范围称为变量与过程的作用域。,8.1 代码模块的概念 在建立VB的应用程序时,应首先设计代码的结构。VB应用程序的结构通常如图8-1所示。 图8-1 VB应用程序的结构,VB将代码存储在3种不同的模块中:窗体模块(窗体)、标准模块(模块)和类模块。在这3种模块中都可以包含声明(常数、变量、动态链接库DLL的声明)和过程(Sub、Function、Property过程)。它们形成了工程的一种模块层次结构,可以较好地组织工程,同时也便于代码的维护,如图8-2所示。 图8-2 工程中的模块,8.1.1 窗体模块 每个窗体对应一个窗体模块,窗体模块包含窗体及其控件的属性设置、窗体变量的说明、事件过程、窗体内的通用过程、外部过程的窗体级声明。 窗体模块保存在扩展名为.frm的文件中。默认时应用程序中只有一个窗体,因此有一个以.fr

      2、m为扩展名的窗体模块文件。如果应用程序有多个窗体,就会有多个以.frm为扩展名的窗体模块文件。 如果要在文本编辑器中观察窗体模块,则还会看到窗体及其控件的描述,包括它们的属性设置值,如图8-3所示。窗体模块中也可以引用该应用程序内的其他窗体或对象。 从“工程”菜单中执行“添加窗体”命令,可以添加新窗体模块。,8.1.2 标准模块 标准模块保存在扩展名为.bas的文件中,缺省时应用程序中不包含标准模块。标准模块可以包含公有或模块级的变量、常数、类型、外部过程和全局过程的全局声明或模块级声明。缺省时,标准模块中的代码是公有的,任何窗体或模块中的事件过程或通用过程都可以调用它。写入标准模块的代码不必绑在特定的应用程序上,在许多不同的应用程序中可以重用标准模块。在标准模块中可以存储通用过程,但不能存储事件过程。 从“工程”菜单中执行“添加模块”命令,可以在工程中添加标准模块。,8.1.3 类模块 在VB中,类模块(文件扩展名为.cls)是面向对象编程的基础。程序员可在类模块中编写代码建立新对象,这些新对象可以包含自定义的属性和方法,可以在应用程序内的过程中使用。实际上,窗体本身正是这样一种类模

      3、块,在其上可安放控件、可显示窗体窗口。 类模块与标准模块的不同之处在于标准模块仅仅含有代码,而类模块既含有代码又含有数据,类模块可以视为没有物理表示的对象。,8.2 变量的作用范围 变量的作用范围(作用域)指变量能被某一过程识别的范围。当一个应用程序中出现多个过程或函数时,在它们各自的子程序中都可以定义自己的常量、变量。这时,自然会提出一个问题,这些常量或变量是否在程序中到处可用?回答是否定的。 在VB中,可以在过程或模块中声明变量,根据声明变量的位置,变量分为两类:过程级变量(Procedure level)和模块级变量(Module level)。 按照作用范围分类,过程级变量属于局部变量,而模块级变量则属于全局变量。,8.2.1 过程级变量 在一个过程内部使用Dim或Static关键字声明变量时,只有该过程内部的代码才能访问或改变该变量的值,因此被称为“过程级变量”。过程级变量的作用范围限制在该过程内部。例如: Dim a As Integer, b As Single Static s As String 如果在过程中未作说明而直接使用某个变量,该变量也被当成过程级变量。用St

      4、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前“; 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

      5、); b; Tab(34); c End Sub Sub Prod() 通用过程 Dim a As Integer, b As Integer, c As Integer 过程级局部变量,图8-7 程序运行结果 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 模块级变量 在模块的通用段中声明的变量属于模块级变量。模块级变量分为私有和公有。 1. 私有的模块级变量 私有的模块级变量在声明它的整个模块的所有过程中都能使用,但其他模块却不能访问该变量。声明方法是在模块的通用段中使用Private或Dim关键字声明变量。例如: P

      6、rivate s As String Dim a As Integer, b As Single 在模块的通用段中使用Private或Dim作用相同,但使用Private会提高代码的可读性。,2. 公有的模块级变量 公有的模块级变量在所有模块中的所有过程中都能使用。它的作用范围是整个应用程序,因此公有模块级变量属于全局变量。声明方法是在模块的通用段中使用Public关键字声明变量。例如: Public a As Integer, b As Single 全局变量是指在所有程序(包括主程序和过程)中都可以使用的内存变量。就像在一个过程中定义的变量一样,在子过程中可以任意改变和调用全局变量,当子过程执行完后,其值又带回主程序。 把变量定义为全局变量虽然很方便,但这样会增加变量在程序中被无意修改的机会,因此,如果有更好的处理变量的方法,就不要声明全局变量。另外,用Const语句定义的符号常量也能声明为全局的。,【例8-2】公有的模块级全局变量示例。 Public a As Integer, b As Integer, c As Integer 写在“(通用)”的“(声明)”中 Private

      7、 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; 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 +

      8、 b Print “Sum子过程“; Tab(14); a; Tab(24); b; Tab(34); c End Sub 程序的运行结果如图8-8所示。从程序的运行结果可以看出,在模块级中用Public声明的全程变量a、b、c,在各过程中都能访问和修改。,8.2.3 变量的生存期 从变量的作用空间来说,变量有作用范围;从变量的作用时间来说,变量有生存期。 假设过程内部有一个变量,当程序运行进入该过程时,要分配给该变量一定的内存单元,一旦程序退出该过程,变量占有的内存单元是释放还是保留,根据变量在程序运行期间的生命周期,把变量分为静态变量(Static)和动态变量(Dynamic)。静态变量不释放内存单元,动态变量释放内存单元,有时候可能需要某些局部变量是静态变量,而其他变量则为动态变量。,【例8-3】下面程序说明了Static关键字的作用。 Private Sub Form_Activate() Dim i As Integer For i = 1 To 6 TestSub Next i End Sub Sub TestSub() Dim x As Integer, m As Str

      9、ing 图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或“,它们的值总是不变。 为使过程中所有的局部变量为静态变量,可在过程头的起始处加上Static关键字。例如: Static Function RunningTotal (num) 这就使过程中的所有局部变量都变为静态,无论它们是用Static、Dim或Private声明的还是隐式声明的。,8.3 过程的作用范围 过程也有作用的范围(作用域),在VB中,过程的作用域分为模块级(或称文件级)和全局级(或称工程级)。 8.3.1 模块级过程 模块级过程是在某个模块(文件)内定义的过程。如果在Sub或Function前加关键字Private,则该过程只能被在本模块(文件)中定义的过程调用。即其作用域为本模块(文件)。,8.3.2 全局级过程 全局级过程是在定义过程时,在Sub或Function前加关键字Public(可以默认)。全局级过程可被整个应用程序所有模块(文件)中定义的过程调用。即其作用域为整个应用程序(工程)。,8.3.3 调用其他模块中的过程 在工程中的任何地方都能调用其他模块中的全局过程。调用其他模块中的过程的各种技巧,取决于该过程是在窗体模块中、类模块中还是标准模块中。 (1) 调用窗体中的过程 所有窗体模块的外部调用必须指向包含此过程的窗体模块。如果在窗体模块Form1中包含SomeSub过程,则可使用下面的语句调用Form1中的过程: Call Form1.SomeSub( arguments ),(2) 调用类模块中的过程 与窗体中调用过程类似,在类模块中调用过程要调用与过程一致并且指向类实例的变量。例如,DemoClass是类Class1的实例: Dim DemoClass as New Class1 DemoClass.SomeSub 不同于窗体的

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

      点击阅读更多内容
    最新标签
    发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2 2022年小学体育教师学期工作总结 2022年家长会心得体会集合15篇
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.