|
| ||||||||||||||||||
|
| ||||||||||||||||||
|
| ||||||||||||||||||
|
|
||||||||||||||||||
|
|
||||||||||||||||||
|
一、什么是变量和常量 变量(Variab]e)和常量(Constant)是用来存储数据的,它们记载了程序运行过程中需要用 到的一些数据。但是,变量和常量是有区别的,它们的区别是:变量的值是根据程序运行的需要而可以随时改变的,而常量的值在程序运行过程中则是不可改变的。 变量和常量都具有名称和数据类型两个特性。每一个变量或常量都有一个能唯一识别的名称,我们可以通过这个名称来使用这个变量或常量。变量和常量数据类型则是由其值的类型决定的。 在vB中,用变量表示可以更改数值的数据或不知道初始值的数据,用常量表示在整个程序中事先设置的、其值不会改变的数据。一般对于程序中使用的常数,能够用常量表示的尽量使用常量表示。这样可以用有意义的符号来表示数据,增强程序的可读性;而且如果要一次性改动程序中存在的全部某个常数时,不需要在程序中通过“查找”来进行修改,可以只改变与这个常数对应的常量的值即可,增强了程序的可维护性。 在vB中常量可以分为两类:用户自定义常量和系统内部常量。顾名思义,用户自定义常量就是指用户由于某种需要而自己定义的常量:系统内部的常量一般是由应用程序提供的,例如在Visual Basic和Visua Basic for Applications的对象库中均列出了很多内部常量。 二、VB的内部常量 VB为我们提供了很多内部常量,以方便我们编程。例如用来表示真假的布尔型常量"True”和“False”就是比较常用的两个内部常量,在VB中用—1代表真(实际上只要是非。整数都可以用来表示真),0代表假,而VB已经替我们定义了这两个常量。因此我们在编程时可以不必记真是什么数、假又是什么数,只需要己住比较容易记忆的英语单词:True和False即可。因此下面两个语句是完全等价的: Textl.Enabled=False Textl.Enabled=0 使用内部常量的好处不只是易于记忆,而且当我们在程序编辑窗口中编写程序代码遇到需要使用内部常量时,VB会自动为我们列出相应的可供选择的常量。这时,我们只要用光标键选择相应的常量或输入该常量的前几个字符VB自动选择要输入的常量,然后按空格键或回车键就可以输入相应的常量了。当输入“=”时,将会自动弹出两个常量“False”和“True”供我们选择。若在此时输入了字母“f”,则常量“False’’将会反相显示,表示要输入的可能是这个常量,如果这时按下了空格键或回车键,常量“False”就会输入到该行中;同样,若输入了字母“t”并按下了空格键或回车键,则输入的就是常量“True”。 在编程中应尽量使用常量,这样可以使我们的编程更加方便,而且在程序中注重使用常量也是一种良好的编程习惯。 三、变量和常量的作用域 变量和常量不仅具有值和类型,而且还有作用域。作用域就是指变量和常量在程序中起作用的范围。按变量作用域的不同可以把变量分为:过程级变量、模块级变量、全局变量以及静态变量几种;按常量作用域的不同可以把常量分为:过程级常量、模块级常量、全局常量。
过程是模块的基本组成部分,是VB代码的最小单元。过程级变量和常量只能在过程中定义,它的作用范围只限于定义它的过程之内。也就是说,一个过程级变量或常量只能被定义它的过程使用,别的过程无权访问该变量或常量。因此,可以在不同的过程中使用同名的过程级变量,它们是互不影响的。当过程结束时,过程级变量所占用的内存空间就会自动释放。
在一个模块中通常包含了多个过程。模块级的变量和常量为该模块中所有过程所共有,也就是说模块中的所有过程都可以访问属于该模块的模块级变量和常量。因此,可以利用模块级变量在过程之间进行相关数据的传递。模块级的变量和常量是在各模块的“(声明)”部分定义的。
在一个工程中通常可能包含着多个模块,全局变量和常量则是为该工程中所有模块所共有的。有些需要各个模块的不同过程中传递信息,这时就要用到全局变量、常量。对于全局变量和常量,该工程内的任一过程都可以对其访问。全局变量和常量一般是在标准模块的“(声明)”部分定义的。
静态变量也是在过程中定义的。它与普通的过程级变量有些类似,但又有很大的区别。当某一个过程被多次调用时,每调用一次,这个过程中的所有过程级变量的内容都被清除(数值型变为零,字符型变为空),这种变量称为动态变量;而静态变量却与之相反,无论过程被调用多少次,静态变量会保留上次调用后的值。 这里简要介绍了变量和常量的使用范围,在编程时要合理的安排。另外,在没有必要的情况下尽量少用甚至不用模块级变量及全局变量,因为使用这些变量将使得程序的可读性下降且容易造成混乱而导致程序出错。 四、变量和常量的命名规则 变量的命名必须是以英文字母或汉字开头,并且其中不能包含如:!、#、@等这样的特殊字符。 下面举几个例子,如:sum、a3x、成绩、b8、age_O,这几个变量名都是正确的,符合变量的命名规则。而诸如:5xc、a。!x、d/f,这几个变量名都是错误的,5xc错在第一个是数字、a。!x和d/f则是包含了非常符号。 在同一作用范围内的变量名必须是唯一的。也就是说,变量不能重复定义,否则在运行程序时就会弹出错误提示。 在VB是不区分变量名大小的。实际上我们在定义了变量以后,则不论在何处出现该变量其大小写仍是定义时的状态,而且无论你在输入该变量时使用的是大写还是小写。 为了增强程序的可维护性和可读性,还应注意对变量命名最好能体现出该变量的作用及类型。用适当的英文单词或直接使用汉字对变量命名,可以使人们对变量的作用一目了然。例如:表示姓名的变量名为“Name”、几个数之和的变量命名为“Sum"、表示长度的变量命名为“Len”等等。 关于如何体现变量的类型,可以使用相关的前缀,一般是各种数据类型英文单词的前几个字母,如:整型(int)、长整型(lng)、单精度(sng)、双精度(dbl)、字符型(str)、日期型(dt)、布尔型(bln)、变体型(vnt)。 常量的命名规则基本上和变量是一致的。通常情况下,为了区别常量和变量,一般变量用小写字母表示,常量用大写字母表示。但这并非是规定,变量也可以是大写,常量也可以是小写。 五、基本数据类型 变量和常量是用来存储数据的,而数据具有不同的类型,这就决定了变量和常量也具有不同的类型。在vB中主要有以下几种数据类型:数值型、字符型、日期型、布尔型、对象型、变体型。下面我们来分别说明这几种数据类型:
数值型是用来存放数字的数据类型的,因此也可以称之为数字型。 数值型的数据又可以分为几种子类型,其取值范围、占用内存长度情况如下表所示。
一般情况下,普通的整型数据已经可以满足需要了,因此Integer是最常用的类型。但有时计算量比较大时,就需要用到长整型了。另外,整型和长整型只能存储整数,如果要存储小数就需要用到单精度型或双精度型了。字节型用于存储比较小的整数,它的优点是运算速度快占用的存储空间少。 在编程时可根据需要来选择相应类型。因为整型数据的运算速度明显快于浮点型,而且占用的存储空间也比浮点型少,所以要尽量使用整型和长整型,这样可以提高程序的运算速度和效率,当然,在运算精度要求比较高的情况下,也要适当的使用浮点型数据。
字符型是用来存储文本的数据类型。该类型的数据要用双引号(“”)括起来,如:“Text"、 "abc、“Caption”。字符型的数据也可以称为字符串。字符串可以分为两种:一种是定长字符串,另一种是变长字符串。定长字符串所占用的存储间即是该字符串的长度,而变长字符串所占用的存储空间是字符串的长度再加上l0个字节,所谓字符串的长度就是指字符串中所有字符所占用的存储空间。其中,每一个英文字符占一个字节,而一个汉字或全角字符占用两个字节。定长字符串最多可存储65535个字节的内,而变长字符串最多可存储2G个字节的内容。
日期型占用8个字节的存储空间,可存储从100年1月1日到9999年12月31日之间的日期如果要表示2002年7月13日,可以使用如下的格式:“02-07-13”。
布尔型数据只有两个取值,即:真(—1,True),假(0,False)。该类型的数据用来表示真假、是否等信息,通常也称之为逻辑型。
对象型是对VB中的对象的引用,可以用这种类型的变量访问实际的对象。也就是说,可以用对象型变量来代替实际的对象名。例如我们在程序中如下的代码: Dim X As CommandButton Set x=commandl 那么,在此之后凡是“commandl”出现的地方都可以用“x”代替,如下面两行语句是完全等价的: Commandl.Caption=“OK” X.Caption=“OK” 这两行语句的作用都是把命令按钮的标题信息改为“OK”,其效果是一样的。 对象型变量占用4个字节的存储空间。
变体型变量是VB中最灵活的数据类型,它可以存储任何类型的数据,在处理不同类型的数据时VB会自动完成相应的类型转换。例如可以将字符串“abc”存到一个变体型变量中,也可以将数字存到该变量中。 变体型变量所占用的存储空间是非常大的:一个存储数字的变体型变量要占用16个字节而存储字符串的该类型变量所需要的存储空间是字符串的长度再加上22个字节。 使用变体型变量在给我们带来很大方便的同时,也带来了安全的隐患。由于类型不明确使用时很容易出错,而且该类型的变量要消耗大量存储空间。因此,要适当的使用变体型变量过多的使用会使程序变得混乱且容易出错。 |
||||||||||||||||||
|
|
|
| |