vb(过程和变量的作用域)

合集下载

【作用】浅谈VB60中变量过程的定义调用及作用域

【作用】浅谈VB60中变量过程的定义调用及作用域

【关键字】作用浅谈VB 6.0中变量、过程的定义、调用及作用域(呼伦贝尔学院信息科学分院,内蒙古海拉尔021008)摘要:在VB6.0这种面向对象的可视化程序设计中,深刻的理解和掌握变量的声明及作用域和过程的定义、调用及作用域极为重要,本文结合实例分别来介绍。

关键词:VB 6.0;变量;过程;作用域;调用中图分类号:TP312 文献标识码:A 文章编号:1007—6921(XX)07—0088—021 变量的声明及作用域1.1 变量的声明变量是程序执行过程中,其值可以改变的量用来存放程序中所需的数据。

它的命名规则是以字母或汉字开头,后可跟汉字、字母、数字或下划线组成,长度小于等于255个字符;不能用VB中的关键字;不区分大小写。

变量的声明分为显式声明和隐式声明(变量声明也称变量定义)。

显式声明格式:Public|Private|Dim|Static 变量名[AS 类型]或Public|Private|Dim|Static变量名类型符。

注:由关键字Static声明的变量为静态变量,其他方式声明的为动态变量。

静态变量的值在整个程序的运行中可以一直保留,而动态变量每次调用过程时都会重新初始化。

隐式声明变量:未进行上述的声明而直接使用,其类型为Variant 类型,赋值后由值的类型决定变量的类型。

建议不使用。

注意:由于VB允许隐式变量的使用,如果同一变量拼写出错,在隐式声明中无法查出,初学者可以在通用声明处加Option Explic语句可强制显式声明变量,要求所有变量必须先声明后使用。

1.2 变量的作用域变量的作用域是指变量的有效作用范围,即变量可以被访问的范围。

VB中变量的作用域分为:局部变量:在过程内用声明的变量,只能在本过程中使用。

窗体/模块级变量:在“通用声明”段中用Dim语句或用Private语句声明的变量,可被本窗体/模块的任何过程访问。

全局变量:在“通用声明”段中用Public语句声明的变量,可被本应用程序的任何过程或函数访问。

VB第8章 过程

VB第8章 过程

教案讲稿第八章过程[旧课复习]:复习内容:1.常用控件的使用,个人信息2.计时器Interval属性,Timer事件复习目的:加强控件和计时器的使用复习时长:大约5分钟[新课导入]:导入方式:通过调用函数引入函数的概念导入目的:增强学生的学习主动性导入时长:大约5分钟[新课讲授]:重点:掌握函数过程的概念,掌握sub过程的概念难点:变量的作用域和生产周期方法:运用多媒体辅助教学,采用案例教学和任务驱动等教学法。

8.1 过程概述VB应用程序是由各种过程组成的,但在为一个实际问题编写代码的过程中,会遇到一些比较复杂的问题,而利用简单的内部函数过程和事件过程往往不能解决此类问题。

此时根据应用的复杂程度,往往需要将应用程序按功能或目的划分为若干个模块,而根据具体情况又可将各个模块继续划分为子模块,直到一个适当的难度为止,即将问题自上而下逐步细化,分层管理。

将模块划分为子模块主要有如下优点:(1)便于调试和维护。

将一个复杂的问题分解为若干个子问题,降低每一个子问题的复杂程度,使每一个子问题的功能相当稳定,便于程序的调试和维护。

(2)提高了代码的利用率。

当多个事件过程都需要使用一段相同的程序代码时,可将这段代码独立出来,作为一个独立的过程。

它可以单独建立,也可以被其他事件过程调用,成为一个可重复使用的独立的过程,提高代码的使用率。

一个VB工程包括工程文件(.Vbp)、窗体文件(.Frm)、窗体的二进制数据文件(.Frx)、标准模块(.Bas)、类模块(.Cls)、资源文件(.Res)、ActiveX 控件文件(.Ocx)、用户控件(.Ctl)和属性页模块(.Pag)、其他ActiveX 控件文件、设计器可插入对象等部件和引用。

VB大致的应用程序模块结构如图8-1 所示图8-1VB应用程序模块结构8.2 函数过程8.2.1函数过程的定义Function函数过程的定义与Sub子过程的定义类似,但不同的是Function 函数过程的定义语句中需要有返回函数值的语句。

vb变量的声明及作用域

vb变量的声明及作用域

Vb变量一、不指定变量类型,直接使用,如Private Sub Form_Load()a = 2b = 3c = a + bMsgBox cEnd Sub这时的变量类型是variant(变体型),由vb自动指定数据类型和进行类型转换如果指定变量类型,用dim进行声明,如Private Sub Form_Load()Dim a As Integer, b As Integer, c As Integera = 2b = 3c = a + bMsgBox cEnd Sub如果我们不对变量声明而是直接使用,如果拼错变量名的时候,vb就会自动创建一个新的变量。

为了防止这种情况的发生,vb提供了option explicit语句,就必须使用dim声明所有的变量。

Option explicit这一语句要写在声明段中,而不是写在过程中,如使用了option explicit语句,当未声明变量时,vb会弹出错误警告,如二、变量的作用域1、局部变量局部变量在过程内部定义,用dim或者是private定义,本模块的其他过程和其他模块的过程不能访问,只能应用在本过程中。

如单击command1按钮时的运行效果,i的值是8,此变量在本过程中被访问执行单击command2按纽时的运行效果,i的值是空,说明i是command2_click()事件过程中的值,而不能访问command1_click(),这两个i是不同的i,所以在不同的过程中可以声明相同名字的局部变量,它们各自独立互不干扰2、模块级变量模块级的变量在通用段处声明,用dim或者是private进行定义,不管是在窗体模块form中,还是在标准模块module中,对于本模块中的所有过程都有效。

下面的例子,首先设置程序的入口为sub main(),执行时module1中的i的值是0,而form1中的i的值都是8,说明模块级的私有变量仅在本模块中使用,对于其他模块不可用3、全局变量全局变量用public进行定义,所有模块都可以访问。

第4章 VVB NET过程与变量

第4章 VVB NET过程与变量

编写按钮的Click事件过程,通过调用Gcd 过程计算得到任意两个数的最大公约数。
Private Sub btnGcd_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnGcd.Click num1 = Val(txtFirst.Text) num2 = Val(txtSecond.Text) txtGcd.Text = Gcd(num1, num2) End Sub
过程可以被其他过程调用,当一个过程调用另一 个过程时,控制权将会转移到后一个过程,当后 一个过程的代码执行完毕时,它将控制权返回给 调用它的过程。
4.1 Sub过程的创建与调用
知识点1 Sub过程的创建 1. 声明Sub过程的语法格式如下: [访问修饰符] Sub 过程名 ( [形参列表] ) [ 语句块1 ] [ Exit Sub ] [ 语句块2 ] End Sub 说明:见P81表4-1
Private Sub btnByRef_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnByRef.Click num1 = Val(txtNum1.Text) num2 = Val(txtNum2.Text) Call Swap2(num1, num2) Label2.Text = "传地址方式" txtResult1.Text = num1 txtResult2.Text = num2 End Sub
√任务2 使用Function过程求最大公约数和最小公倍数
要求:编写一个求最大公约数的Function 过程, 调用这个过程求任意两个正整数的最大公约数 和最小公倍数。

VB实验13 递归过程及变量作用域

VB实验13 递归过程及变量作用域

上一页
下一页
退 出
第7 页 Visual Basic程序设计实验指导
实验13-1
目的和要求 预备知识
上一页
【要求】 (1)编写一个计算阶乘的递归函数过程。 ( 2 )通过 InputBox 函数输入 n 的值,调用 求阶乘的递归函数过程,计算n的阶乘,并按指定 格式输出结果。
下一页
退 出
第8 页 Visual Basic程序设计实验指导
上一页
下一页
退 出
第15页 Visual Basic程序设计实验指导
实验13-3
目的和要求 预备知识
上一页
【要求】 (1)通过InputBox函数,输入x和n的值。 (2)编写一个递归函数过程,求数列第n项的 值。
下一页
退 出
第16页 Visual Basic程序设计实验指导
实验13-3
目的和要求 预备知识
第17页 Visual Basic程序设计实验指导
实验13-3
目的和要求 预备知识
上一页
下一页
退 出
【实验步骤】 (1)界面设计 请参照图13-3所示的界面设计窗体。 (2)完善程序代码 (3)运行工程并保存文件 运行程序,输入x=1,n=7,观察运行结果,最 后将窗体文件保存为 F13-3.frm,工程文件保存为 P13-3.vbp。
第13页 Visual Basic程序设计实验指导
实验13-2
目的和要求 预备知识
上一页
下一页
退 出
【实验步骤】 (1)界面设计 请参照图13-2所示的界面设计窗体。 (2)完善程序代码 (3)运行工程并保存文件 运行程序,单击“求解”按钮,观察运行结果, 最后将窗体文件保存为 F13-2.frm ,工程文件保存 为P13-2.vbp。

VB6.0中变量的作用域及参数传递

VB6.0中变量的作用域及参数传递
1 绪 论

化 或 面 向对 象 的 可视 化 程 序 设计 中 , 深 刻 理 解 和 正确 使 用 变 量 及 参 数 传 递 十 分 重 要 。本 文主 要 介 绍 V B 中变 量 的作 用 域 及 参 数 传 递 的形 式 , 并 结 合 实例 予 以浅 析 。 VB面 向 对 象 程序 设计 语 言 具 有功 能 强 大 、 容 易 学 习 掌 握 等特 点 。 在 教 学 中发 现 , 不少学生在 学 习 V B的 过 程
量。V B中 变量 可 以 分 为 3类 : 局部变量 、 模 块 变 量 及 全 局 个 应 用 程 序 往 往 是 由若 干 功 能 相 对 独 立 , 又 相 互 联 变量 ,其 中模 块 变 量 包 括 窗 体 模 块 变 量 和 标 准 模块 变 量 。 系 的子 程 序 组 成 , 程 序 中 必 然 耍 用 变量 来 存 储 数 据 , 子 程 各 变量 位 于 不 同 的层 次 。 序 之 间又 要 相 互 传 递 数 据 来 实 现 程 序 功 能 , 因此 , 在 结 构 2 . 1局 部 变 量 过 程 级 变 量 只 有 在 声 明 它 们 的 过 程 中
p r i v a t e s u b c o mm a n d1 c l i c k 0
_
作 者简 介 : 庞 新法( 1 9 6 2 一) , 男, 陕 西礼 泉 人 , 副教授 , 研 究 方 向为
摘要:本文主要 阐述 了变量 的生存期和作用域的 问题 , 因为它们 是程序 中引用 变量 的依据 同时对 同名 变量 的处理进行 了讨论 ,
并 结 合 实 例进 行 了分 析 , 旨在 程 序 设 计 时 , 能正 确 的 定 义和 引用 变 量 。

vb变量与过程的作用范围

vb变量与过程的作用范围

VB将代码存储在3种不同的模块中:窗体模块(窗体)、 标准模块(模块)和类模块。在这3种模块中都可以包含声 明(常数、变量、动态链接库DLL的声明)和过程(Sub、 Function、Property过程)。它们形成了工程的一种模块 层次结构,可以较好地组织工程,同时也便于代码的维护, 如图8-2所示。
第8章 变量与过程的作用范围
精品课件
第8章 变量与过程的作用范围
在VB中,应用程序是由若干个过程组成的,这些过程 一般保存在窗体文件(.frm)或标准模块文件(.bas)中。 变量在过程中是必不可少的。根据变量或过程所处的不同 位置,可被访问的范围是不相同的。变量与过程可被访问 的范围称为变量与过程的作用域。
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
过程级变量属于局部变量,只能在建立的过程内有效, 即使是在主程序中建立的变量,也不能在被调用的子过程 中使用。
【例8-1】过程级局部变量示例。
Private Sub Form_Activate()
Dim a As Integer, b As Integer, c As Integer 局部变量
' 过程级
❖8.1 代码模块的概念

vb过程和变量的作用域

vb过程和变量的作用域

Dim Z As Integer ′窗体级变量 窗体级变量 Sub S() Dim Z As Integer ′局部变量 局部变量 Z=Z+2 Print Z End Sub Private Sub Command1_Click() Z=Z+2 Call S Print Z End Sub
第一次单击Command1 第一次单击 2 2 第二次单击Command1 第二次单击 2 4 第三次单击Command1 第三次单击 2 6
24
过程的作用域及过程定义、 过程的作用域及过程定义、调用规则
【例】:某工程有两个窗体Form1和Form2,每个窗体各有 某工程有两个窗体Form1和Form2, Form1 两个命令按钮 窗体模块Form1 Form1: 窗体模块Form1: Public Sub aa ("这是窗体Form1中的过程 这是窗体Form1中的过程") MsgBox ("这是窗体Form1中的过程") End Sub 可以省略 Private Sub Command1_Click() Call aa 在本窗体模块 End Sub 中调用过程aa 中调用过程 Private Sub Command2_Click() Form2.Show End Sub Public能被本应用程序中其它模块调用, Public能被本应用程序中其它模块调用,过 能被本应用程序中其它模块调用 程名必须唯一
2、窗体的隐藏与卸载 、
语句: (1)Unload语句:从内存删除窗体 ) 语句 Unload <窗体名称 窗体名称> 窗体名称 说明: 当窗体卸载之后,所有在运行时放到该窗体上的控件 都不再是可访问的。在设计时放到该窗体上的控件将 保持不变 在卸载窗体时,只有显示的部件被卸载。与该窗体模 块相关联的代码还保持在内存中。 方法: (2)Hide方法:隐藏,没有删除 ) 方法 隐藏, [窗体名称 Hide 窗体名称.] 窗体名称

VB过程与作用域_VB编程

VB过程与作用域_VB编程

函数过程的调用
在Visual Basic 2005中调用Function过程的方法和调用任
何内部函数的方法是一样的, 当然也可以像调用Sub过
程那样调用函数过程。所以调用函数过程有两种方法: (1)<函数过程名> [ (<实参列表>) ]。
(2)Call <函数过程名> [ (<实参列表>) ]。
2. 传址
传址是把实参变量(可以是简单变量、数组元素、数组和结构等)的 地址传送给被调过程。因此实参变量的地址和与之结合的形参地 址是相同的,也就是说形参和实参共用内存的同一“地址”,即 共享同一个存储单元。这样在被调过程中的形式参数值一旦被改 变,相应的实参值也跟随着被改变了。显然,在传递调用时,实 际参数必须是变量,常量或表达式,否则无法传址。
过程的嵌套与递归
在一个过程(子过程或函数过程)中调用另外一个过程,称为过程的 嵌套调用;而过程直接或间接地调用其自身,则称为过程的递归 调用。 1、过程的嵌套调用 不可以在定义的一个过程的代码中定义另外一个过程,但可以在一个 过程中调用另外一个过程,这种调用方式称为过程的嵌套调用。 2、过程的递归调用 递归调用是指一个过程直接或间接调用自己本身。递归是一种十分有 用的程序设计技术。由于很多的数学模型和算法设计方法本来就 是递归的,所以用递归过程描述它们比用非递归方法简洁易读, 可理解性好,算法的正确性证明也比较容易。 在递归调用中,一个过程执行的某一步要用到它自身的前面一步或前 若干步的结果。
小结
本章首先介绍了Visual Basic 2005的过程:子过程(Sub)和函数过程
(Function)以及两者的区别,接下来讨论了过程参数的两种传递
方式:传值和传址。然后介绍了过程的嵌套调用与递归调用,最 后介绍了变量和过程的作用域。 重点及难点: (1)子过程和函数过程的声明、调用方法; (2)参数的ByVal和ByRef两种传递方式; (3)过程的嵌套与递归调用; (4)变量与过程的作用域。

关于在VB中变量的作用域及生命周期

关于在VB中变量的作用域及生命周期

关于在VB中变量的作用域及生命周期近日,连续碰到好几个朋友,询问有关VB中变量的声明以及作用域的问题,结合自己的理解和经验,写一篇文章,仅供参考,不当之处请指正。

一.VB应用程序的组成:为了了解变量的作用域,有必要回顾,在一个完整的VB工程项目中,包括了哪些组成部分?通常一个完整的VB程序里,会包括:窗体模块(.Frm文件)、标准模块(.Bas文件)和类模块(.Cls文件),见下图:根据变量的作用范围(作用域)可分为3个层次:局部变量(私有变量)、模块级变量和全局变量(公共变量)。

下面来详细说明三种变量的作用范围及使用规则。

二.局部变量:1.局部变量的作用域:顾名思义,就是只能在局部范围内被程序代码识别和访问的变量。

这类变量就是在过程(或函数)里,用Dim关键字进行声明的变量。

例如:在窗体上添加一个按钮,单击按钮,完成的功能是:输入2个数,计算并输出它们的和。

完整的代码如下:Option ExplicitPrivate Sub Command1_Click()Dim x As Single ‘声明局部变量Dim y As Single ‘声明局部变量Dim R As Single ‘声明局部变量x = Val(InputBox("请输入第1个加数:"))y = Val(InputBox("请输入第2个加数:"))R = x + yEnd Sub这里,是在按钮Command1的单击事件过程Click()里编写代码,用Dim声明了三个变量x、y、R,它们就属于局部变量。

它们只能被这个过程访问使用。

其它的过程里访问不到它们,甚至在一个程序的任何其它地方都访问不到它们。

这就是局部变量的作用域。

而且,这些变量只有在该过程的执行阶段才会存在,也就是说当系统执行这一段代码的时候:从Private Sub Command1_Click()进入过程的时候起,这3个变量才是存在的,当执行结束,从End Sub退出这段代码后,这些变量就消失了,这就是所谓的变量的生命周期。

vb第8章 变量与过程的作用范围

vb第8章 变量与过程的作用范围

End Type 说明: 说明: (1)在窗体模块中必须使用 )在窗体模块中必须使用Private,在标准 , 模块中可以使用Private或Public(可以省略表 模块中可以使用 或 ( 示公有)。 示公有)。 用户类型名>是用户定义数据类型名 (2) <用户类型名 是用户定义数据类型名, ) 用户类型名 是用户定义数据类型名, 但不是变量,命名与变量命名规则相同。 但不是变量,命名与变量命名规则相同。 (3)用户定义类型中类型名是字符串型时必 ) 须是定长的。 须是定长的。
8.2 变量的作用范围
根据声明变量的位置分为 – 过程级变量 过程级变量(Procedure level) – 模块级变量 模块级变量(Module level) 8.2.1 过程级变量 过程级变量: 定义位置: 定义位置:一个过程的内部 定义关键字:可用Dim或Static 定义关键字:可用 或 说明: 说明:
第8章 变量与过程的 作用范围
8.1 代码模块的概念
窗体模块(.frm): 窗体模块
一个窗体对应于一个窗体模块
标准模块(.bas) 标准模块
包含公有或模块级的变量、常数、类型、过程 包含公有或模块级的变量、常数、类型、
类模块 (.cls)
可以编写代码建立新对象, 可以编写代码建立新对象,包含自定义的属性 和方法。属性中包含数据。所以类模块中包括 和方法。属性中包含数据。 代码和数据,不像在标准模块中只包含代码。 代码和数据,不像在标准模块中只包含代码。
8.5.2 创建用户定义类型 [Private|Public] Type <用户类型名 用户类型名> 用户类型名
<字段名 字段名1> As <类型名 类型名1> 字段名 类型名 <字段名 字段名2> As <类型名 类型名2> 字段名 类型名 …… &ln> 字段名 类型名 数据项

VB过程和变量的作用域

VB过程和变量的作用域

VB过程和变量的作用域VB中,过程是指一段完成特定任务的代码块,而变量则是用于存储数据的容器。

过程和变量的作用域则决定了它们能够被访问或使用的范围。

在VB中,有三种不同的作用域:过程级、模块级和全局级。

1.过程级作用域:过程级作用域是指变量的作用域限制在其所在的过程中。

在过程内声明的变量只在该过程的代码块中可见,超出该过程的范围就无法被访问。

过程级作用域适用于只在特定过程中使用的临时变量。

举个例子,在一个过程中声明如下的变量:```Sub SampleProcedureDim x As Integer'...End Sub```在上面的代码中,变量x只在SampleProcedure过程内部可见。

如果在该过程外部的其他过程或模块中尝试访问x,程序会报错。

2.模块级作用域:模块级作用域是指变量的作用域限制在其所在的模块中。

在模块的任何地方声明的变量,都可以被同一模块内的其他过程使用。

模块级作用域适用于多个过程之间需要共享数据的情况。

举个例子,在一个模块中声明如下的变量:```Dim x As IntegerSub Procedure1'使用变量xEnd SubSub Procedure2'修改变量x的值End Sub```在上面的代码中,变量x可以在Procedure1和Procedure2两个过程中使用和修改。

这是因为x的作用域限定在整个模块内。

然而,在其他模块中声明的变量,无法被本模块中的过程访问。

3.全局级作用域:全局级作用域是指变量的作用域在整个程序中都可见和访问。

全局变量可以在程序的任何地方声明,并且在程序执行期间一直存在,即使当前的过程已经结束。

全局变量适用于多个模块或过程之间需要共享数据的情况。

举个例子,在程序的任何地方声明如下的全局变量:```Public x As IntegerSub Procedure1'使用变量xEnd SubSub Procedure2'修改变量x的值End Sub```在上面的代码中,变量x可以在Procedure1和Procedure2两个过程中使用和修改。

VB第7章过程

VB第7章过程

6
第七章 过程
6.1 引言
1. 引例 2. 过程的定 义与使用
2)过程的定义与使用
定义过程
首先用户必须自定义一个子过程,这个子过 程通常可以完成一个特定的功能,该子过程以一 个名字来标识,可以被其他过程调用,其名字后 面的变量表称为形式参数。
用户自定义子过程与事件过程的区别是: 事件过程的名字是有一定规律的,且不能 改变,即控件名_事件名,而用户自定义 的过程名则由用户自己定义。事件过程的 参数是由系统根据事件给出,面用户自定 义的过程则是根据用户的需要。
辽宁科技大学 < Visual Basic 程序设计>教学课件③ 2007-2
10
第七章 过程
6.2 Sub过程
2)Sub过程的调用
1. Sub过程 的定义 2. Sub过程 的调用
格式:
Call 过程名 (实参列表) 或 过程名 实参列表
说明: ① 实参的个数、类型、顺序应与相应的形参保 持一致,子过程中如果没有形参,则调用中 也无实参。 ② 第2种调用方式与第1种相比,结果一样,只 是去掉Call和一对括号( )。
辽宁科技大学 < Visual Basic 程序设计>教学课件③ 2007-2
9
第七章 过程
6.2 Sub过程
1)Sub过程的定义
1. Sub过程 的定义 2. Sub过程 的调用
Sub过程说明 (1) 在VB中,Sub过程又称为子过程。 (2)子过程名、参数列表、语句块等与函数过程 的要求基本相同。 (3)子过程定义格式中“Sub过程名”和“End Sub”是必不可少的,子过程由“Sub”开始定义, 由End Sub结束,在这两者之间的程序便是能完 成某个功能的程序主体。 (4)在子过程中如果没有形参,调用时括号() 必须省略。

《VB程序设计》第四章第六节变量和过程的作用范围

《VB程序设计》第四章第六节变量和过程的作用范围

《VB程序设计》第四章第六节变量和过程的作用范围第六节变量和过程的作用范围一、变量的作用范围变量的作用范围是指变量有效的范围。

根据定义变量的位置和定义变量的语句的不同,在VB中变量可以分为过程级变量、模块级变量和全局变量。

1.过程级变量过程级变量只有在声明它们的过程中才有效,也称为局部变量。

用户无法在其他过程中访问或改变该变量的值。

用Dim或者Static 关键字来声明它们。

语法:Dim 变量名 As 数据类型Static 变量名 As 数据类型对任何临时的计算;采用局部变量是最佳选择。

例如,有十来个不同的过程,每个过程都包含变量名为i的变量。

只要每个i都被声明为局部变量,那么每个过程只识别它自己的变量i,改变它自己的变量i的值,而不会影响别的过程中的变量i。

在Sub过程中显式定义的变量(使用Dim语句)都是局部变量,而没有在过程中显式定义的变量,除非其在该过程外更高级别的位置显式定义过,否则也是局部变量。

可以使用Option Explicit 语句来强制显式定义变量。

2.模块级变量按照默认规定,模块级变量对该模块的所有过程都有效,在模块中的任何过程都可以访问该变量,但其他模块的过程则不可用。

可在窗体模块和标准模块顶部用Dim或者Private 关键字声明模块级变量。

语法:Dim 变量名 As 数据类型Private 变量名 As 数据类型通过在代码窗口单击过程列表框的“通用”后,在窗体模块(Form1)中声明模块级变量Temp。

3.全局变量全局变量的作用范围可以是应用程序的所有过程,也称为公用变量。

全局变量可以在模块顶部的声明段用Public关键字声明模块级变量。

语法:Public 变量名 As 数据类型通过菜单“工程”来添加模块,然后在添加的标准模块(Modulel)的顶部声明全局变量Max。

[例Ex_FormArgu2]在[例Ex FormArgu1]人员管理系统中在进入窗体 frmSecond后分别计算正式员工或临时员工的平均工资,计算平均工资与[例Ex _AverScore]中相同。

变量的声明和作用域——VB

变量的声明和作用域——VB

变量的声明和作⽤域——VB⼀、声明变量变量在使⽤前,必须在代码中进⾏声明,即创建该变量。

在使⽤变量之前,⾸先需要声明变量。

就是说,必须事先告诉编译器在程序中使⽤了哪些变量,及这些变量的数据类型以及变量的长度。

这是因为在编译程序执⾏代码之前编译器需要知道如何给语句变量开辟存储区,这样可以优化程序的执⾏。

声明变量有两种⽅式:隐式声明、显式声明。

隐式声明:变量可以不经声明直接使⽤,此时VB给该变量赋予缺省的类型和值。

这种⽅式⽐较简单⽅便,在程序代码中可以随时命名并使⽤变量,但不易检查。

显式声明:⽤声明语句创建变量。

强制显式声明变量:为了避免写错变量名引起的⿇烦,⽤户可以规定,只要遇到⼀个未经明确声明就当成变量的名字,VB都发出错误警告。

⽅法是----强制显式声明变量。

要强制显式声明变量,只须在类模块、窗体模块或标准模块的声明段中加⼊这条语句: Option Explicit这条语句是⽤来规定在本模块中所有变量必须先声明再使⽤,即不能通过隐式声明来创建变量。

在添加Option Explicit语句后,VB将⾃动检查程序中是否有未定义的变量,发现后将显⽰错误信息。

如果要⾃动插⼊Option Explicit语句,⽤户只要在“⼯具”菜单中选取“选项”命令,然后单击“选项”对话框中的“编辑器”选项卡,再选中“要求变量声明”选项,如下图这样VB就会在任何新模块中⾃动插⼊Option Explicit语句,但只会在新建⽴的模块中⾃动插⼊。

所以对于已经建⽴的模块,只能⽤⼿⼯⽅法向现有模块添加Option Explicit语句(只有再重新启动VB,这项功能才有效)。

⼆、变量的作⽤域变量的作⽤域指的是变量的有效范围。

为了能正确地使⽤变量的值,应当明确可以在程序的什么地⽅访问该变量。

VB中变量可以分为3类:局部(Local)变量、模块(Module)变量及全局(Public)变量,其中模块变量包括窗体模块变量和标准模块变量。

VB 第八章过程

VB 第八章过程

调用形式: 函数名(实参列表)
说明: 在调用时实参和形参的数据类型、顺序、个数必须匹配。 函数调用通常出现在表达式中,其功能是求得函数的返回值。
例题8-3 计算多边形的面积(见下页)
8.2 Function过程
Private sub form_click()
Dim a!,b!,c!,d!,e!,f!,g!,s1!,s2!,s3!
事件 过程
声明 部分
Sub 过程
Function 过程
8.3 变量、过程的作用域
按过程的作用范围来划分,过程可分为:
窗体/模块级过程:
加Private关键字的过程,只能被定义的窗体或模 块中 的过程调用。
全局级过程
加Public关键字(或缺省)的过程,可供该应用程序的
所有窗体和所有标准模块中的过程调用。
是作用于某个对象的,是VB应用程序的主体。
通用过程和具体的对象没有内在关联,通常又分为下列几种: (1)Sub过程,又叫子过程或子程序,它不返回值。 (2)Function过程,又叫函数过程,它有返回值。
8.1 sub 过 程
1.Sub过程的定义
Sub过程的语法如下:
[ Private | Public ] [ Static] Sub 过程名([参数列表]) [局部变量和常数声明] 语句块 [Exit Sub] 语句块 End Sub 说明:过程是以Sub开头,以End Sub结束的一段程序,在 这两句之间是语句块,称为“过程体”或“子程序体”。
程中有效。在一个窗体中,不同过程中定义的局部变量可以同名。
例:
Private Sub Form_Load() Dim n% n= 10 End Sub Private Sub From_Click() Dim n% Print “n=“;n End Sub

vb变量与过程的作用范围

vb变量与过程的作用范围
从变量的作用空间来说,变量有作用范围;从变量的作 用时间来说,变量有生存期。
假设过程内部有一个变量,当程序运行进入该过程时, 要分配给该变量一定的内存单元,一旦程序退出该过程, 变量占有的内存单元是释放还是保留,根据变量在程序运 行期间的生命周期,把变量分为静态变量(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 String Static y, n x = x + 1: y = y + 1 m = m & "*": n = n & "*" Print "x="; x; " y="; y, "m="; m, "n="; n End Sub
8.3.1 模块级过程
模块级过程是在某个模块(文件)内定义的过程。如果 在Sub或Function前加关键字Private,则该过程只能被在 本模块(文件)中定义的过程调用。即其作用域为本模块 (文件)。
8.3.2 全局级过程
全局级过程是在定义过程时,在Sub或Function前加关键 字Public(可以默认)。全局级过程可被整个应用程序所 有模块(文件)中定义的过程调用。即其作用域为整个应 用程序(工程)。
过程级变量属于局部变量,只能在建立的过程内有效, 即使是在主程序中建立的变量,也不能在被调用的子过程 中使用。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

按过程的作用范围来划分,过程可分为: 按过程的作用范围来划分,过程可分为: 模块级过程 全局级过程 1、窗体/模块级过程: 、窗体 模块级过程 模块级过程: Private关键字的过程 关键字的过程, 加Private关键字的过程,只能被定义的窗体或模 块中 的过程调用。 的过程调用。 2、全局级过程: 、全局级过程: 关键字( 加Public关键字(或缺省)的过程,可供该应用程序的 关键字 或缺省)的过程, 所有窗体和所有标准模块中的过程调用。 所有窗体和所有标准模块中的过程调用。 用例7.1来说明过程的作用域
总结归纳过程的定义及作用域如下表(教材 总结归纳过程的定义及作用域如下表(教材Pg.163) )
几点说明:(教材Pg.164) 几点说明:(教材 :(教材 )
7.3 变量的作用域
概述: 概述: 在 VB中 , 由于可以在过程中和模块中声明变 中 根据定义变量的位置和定义变量的语句不同, 量,根据定义变量的位置和定义变量的语句不同, 变量可以分为: 变量可以分为: 局部变量(过程级变量) 局部变量(过程级变量) 窗体/模块级变量(私有的模块级变量, 窗体 模块级变量(私有的模块级变量,能被本 模块级变量 模块的所有过程和函数使用) 模块的所有过程和函数使用) 全局级变量(公有的模块级变量) 全局级变量(公有的模块级变量)。
7.1.3 类模块
(文件扩展名为 .CLS) 文件扩展名为 在 Visual Basic 中类模块是面向对象编程的基 可在类模块中编写代码建立新对象。 础 。 可在类模块中编写代码建立新对象 。 这些新 对象可以包含自定义的属性和方法。 实际上, 对象可以包含自定义的属性和方法 。 实际上 , 窗 体正是这样一种类模块, 在其上可安放控件, 体正是这样一种类模块 , 在其上可安放控件 , 可 显示窗体窗口。 显示窗体窗口。
例: Private Sub Form_Load() Dim n% n= 10 End Sub Private Sub From_Click() Dim n% Print “n=“;n End Sub 程序运行后单击窗体,其输出结果是什么? 程序运行后单击窗体,其输出结果是什么?
7.3.2 窗体 模块级变量 窗体/模块级变量
7.2 过程的作用域
概念
[Public|Private] Sub 子过程名 形式参数列表]) 子过程名([形式参数列表 形式参数列表 ….. End Sub 通用子过程和函数过程既可写在窗体模块中也可写在 通用子过程和函数过程既可写在窗体模块中也可写在 窗体模块中 标准模块中,在定义时可选用关键字Private 局部) Private( 标准模块中, 在定义时可选用关键字Private ( 局部 ) 和 Public(全局),来决定它们能被调用的范围。 Public(全局) 来决定它们能被调用的范围。
补充例题: 补充例题:
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 1 Static j As Integer 结果如何? 结果如何?
2
3
4
5
7.4 多重窗体与多模块程序设计
一个稍微复杂的应用程序, 不仅有多个窗体, 一个稍微复杂的应用程序 , 不仅有多个窗体 , 还可能 有标准模块和类模块,如下图所示。 有标准模块和类模块,如下图所示。
局部变量的存活期由其定义的关键词来决定。 局部变量的存活期由其定义的关键词来决定。
局部变量声明: 局部变量声明:
Dim声明:随过程的调用而分配存贮单元,变量的初 声明:随过程的调用而分配存贮单元, 声明 始化;过程体结束,变量的内容自动消失,存贮单元释放。 始化;过程体结束,变量的内容自动消失,存贮单元释放。 Static声明,每次调用过程,变量保持上次调用结束时 声明,每次调用过程, 声明 的值。 的值。 声明形式: 声明形式: Static 变量名 [AS 类型 类型] Static Function 函数过程名 参数列表 [As 类型 函数过程名([参数列表 参数列表]) 类型] Static Sub 子过程名 参数列表 子过程名[(参数列表 参数列表)]
Байду номын сангаас
7.3.5 静态变量 概念
除作用域之外,变量还有存活期, 除作用域之外,变量还有存活期,在这一期间变量能 够保持它们的值。 够保持它们的值。 模块级变量和 在应用程序的存活期内一直保持模块级变量 在应用程序的存活期内一直保持模块级变量和全局变 的值。但是,对于Dim声明的局部变量 声明的局部变量仅当过程执行期 量的值。但是,对于Dim声明的局部变量仅当过程执行期 间存在,当一个过程执行完毕, 间存在,当一个过程执行完毕,它的局部变量的值就已经 不存在,而且变量所占据的内存也被释放 变量所占据的内存也被释放。 不存在,而且变量所占据的内存也被释放。当下一次执行 该过程时,它的所有局部变量将重新初始化。 该过程时,它的所有局部变量将重新初始化。
注意:过程名前加Static,表示该过程内 注意:过程名前加 , 的局部变量都是静态变量。 的局部变量都是静态变量。
有一个人编了下面一段程序,想用变量 记 例7.2 有一个人编了下面一段程序,想用变量n记录单击 窗体的次数。 窗体的次数。 Private Sub Form_Click() Dim n As Integer n = n + 1 Print "已单击次数:"; n & "次" 已单击次数: 已单击次数 次 End Sub 分析程序运行后多次单击窗体的输出结果: 分析程序运行后多次单击窗体的输出结果: 要记录单击窗体次数,如何实现? 要记录单击窗体次数,如何实现?并比较使用模块 变量和静态变量的差别。 变量和静态变量的差别。 教材P168 例7.3 教材
例如: 例如: Public a As Integer,b As single ,
3种变量声明及使用规则如下表: 种变量声明及使用规则如下表: 种变量声明及使用规则如下表
7.3.4 关于多个变量同名
一、公用变量与局部变量同名
在不同过程中定义同名变量,它们互不影响, 在不同过程中定义同名变量,它们互不影响,但若在一 过程中定义使用了与全局变量同名的变量,则就应注意。 过程中定义使用了与全局变量同名的变量,则就应注意。 注意:在过程中,如果定义了与模块级变量( 注意:在过程中,如果定义了与模块级变量(在通 用部分使用Private或Dim声明的变量),则在该过程内 或 声明的变量), 用部分使用 声明的变量),则在该过程内 不能引用同名的模块级变量。例如,上面的例子中, 不能引用同名的模块级变量。例如,上面的例子中,如 果将定义全局变量的语句Public Temp As Integer改为 果将定义全局变量的语句 改为 Private Temp As Integer 则在 则在Command1的单击事件中就 的单击事件中就 不使用模块级的Temp变量。 变量。 不使用模块级的 变量
一个应用程序的组成结构
7.1.1 窗体模块
(文件扩展名为 .FRM ) 文件扩展名为 窗体模块。 窗体模块。窗体模块可以包含处理事件的过 通用过程以及变量、常数、 程、 通用过程以及变量 、 常数、 类型和外部过程 的窗体级声明。如果要在文本编辑器中观察窗体 的窗体级声明 。 模块,则还会看到窗体及其控件的描述, 模块 , 则还会看到窗体及其控件的描述, 包括它 们的属性设置值。写入窗体模块的代码是该窗体 们的属性设置值。 所属的具体应用程序专用的; 所属的具体应用程序专用的 ;它也可以引用该应 用程序内的其它窗体或对象。 用程序内的其它窗体或对象。
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
7.1.2 标准模块
(文件扩展名为.BAS) 文件扩展名为. 文件扩展名为 它们可以包含变量、 常数、 类型、 它们可以包含变量 、 常数 、 类型 、 外部过程 和全局过程的全局(在整个应用程序范围内有效的 在整个应用程序范围内有效的) 和全局过程的全局 在整个应用程序范围内有效的 声明或模块级声明。 声明或模块级声明 。 写入标准模块的代码不必绑 在特定的应用程序上, 在特定的应用程序上 , 则在许多不同的应用程序 中可以重用标准模块。 中可以重用标准模块。
窗体/模块级变量: 窗体 模块级变量: 模块级变量 通用声明”段中用Dim语句或用 语句或用Private语句声明的 在“通用声明”段中用 语句或用 语句声明的 变量,可被本窗体/模块的任何过程访问。 但其他模块却 变量, 可被本窗体 模块的任何过程访问。 模块的任何过程访问 不能访问该变量。 不能访问该变量。 例如: 通用声明” 例如:在“通用声明”段声明如下变量 Private s As String Dim a As Integer,b As Single ,
7.3.3 全局变量
全局变量也称公有的模块级变量 , 在窗体模块 全局变量 也称公有的模块级变量, 也称公有的模块级变量 或标准模块的顶部的“通用”声明段用Public关键 或标准模块的顶部的“通用”声明段用 关键 字声明, 它的作用范围是整个应用程序, 字声明 , 它的作用范围是整个应用程序 , 即可被 本应用程序的任何过程或函数访问。 本应用程序的任何过程或函数访问。
相关文档
最新文档