当前所在位置:珠峰网资料 >> 计算机 >> 计算机等级考试 >> 正文
2015年计算机等级考试二级VB复习指导(10)
发布时间:2011/1/7 9:57:58 来源:城市学习网 编辑:ziteng

  3.2.1 变量的命名规则

  不同的变量是通过变量名标识的。在命名变量时,有很大的灵活性,例如,可以将用来保存产品价格的变量命名为X,也可以将其命名为Price或其他名称。

  在较大型的程序中,最好用带有一定描述性的名称来命名对象,如将表示价格的变量命名为Price ,将表示年龄的变量命名为Age等,这样会使得程序易于阅读与维护。

  在VB中,变量的命名还需要遵循以下几条规则:

  变量名必须以字母或汉字开头。例如,abc.姓名、年n3和ff28等变量名都是合法的,而3abc.#xy和+uu等变量名是非法的。

  不能在变量名中出现句号、空格或者嵌入!、@、#、$、%、&等字符。例如,#, d%等变量名是合法的,而r%R, a#bc和a be等变量名是非法的。

  不能使用VB的关键字作为变量的名字。关键字是VB内部使用的词,是该语言的组成部分。例如,print, dim和For等都是非法变量名。

  变量名不得超过255个字符。

  变量名在变量的有效范围内必须是唯一的。

  变量名不区分大小写。例如,变量ABC, Abc和aBc表示同一变量。

  除名称外,变量还有数据类型。变量的数据类型决定了如何将变量的值存储到计算机的内存中。所有的变量都具有数据类型,以决定它能够存储哪种类型的数据。例如,某个变量的数据类型为整型(存放整数),但是如果在代码中将一个字符串赋给它,则运行程序时会出现类型不匹配的错误,并弹出消息框,提示用户类型不匹配。在声明变量时可指定它的数据类型。

  1.数值型数据类型

  VB支持6种数值型数据类型,分别是Byte(字节型)、Integer(整型)、Long(长整型)、Single(单精度浮点型)、Double(双精度浮点型)和Currency(货币型).

  如果知道变量总是存放整数(如12)而不是带小数点的数字(如3.57),就应当将它声明为Integer类型或Long类型。整数的运算速度较快,而且比其他数据类型占据的内存要少。在Far```Next循环内作为计数器变量使用时,整数类型尤为高效。

  如果变量包含小数,则可将它们声明为Single, Double或Currency变量。

  浮点数值可表示为mmmEeee或mmmDeee形式。其中mmm是假数,而eee是指数(以10为底的幂).Single数据类型的最大正数值为3.402823E+38 ,即3.4乘以10的38次方;Double数据类型的最大正数值是1.797b9313486232D+308即1.8乘以10的308次方。用D将数值文字中的假数部分和指数部分隔开,就会导致将该值作为Double数据类型来处理。同样,用这种方式使用E,也会导致将该值作为Sings.数据类型来处理。

  Currency数据类型的定点实数保留小数点右面4位和小数点左面15位,适用于货币计算。浮点(Single和Double)数比Currency的有效范围人得多,但有可能产生小的进位误差。

  Byte数据类型主要用于存储二进制数。

  所有数值变量都可相互赋值。在将浮点数赋予整数之前,VB会将浮点数的小数部分四舍五入,而不是将小数部分去掉。

  在使用变量前,一般要先声明变量名及其类型,以决定系统为变量分配的存储单元。在VB中可以通过以下几种方式来声明变量及其类型;

  1.使用Dim语句

  使用Dim语句声明变量的一般形式如下:

  Dim变量名AS数据类型。

  例如:

  Dim Nuber As Integer

  Dim Count As Single

  Dim Name as String

  也可以使用数据类型的类型符来替代As子句。例如,上述3个声明语句也可写成:

  Dim Number%

  Dim Count!

  Dim Name$

  注意:变量名与类型符之间不能有空格

  一条Dim语句也可以声明多个变量,每个变量都需要有自己的声明类型,并且各变量之间以逗号隔开。例如,可以将上面的3条语句改写成一条语句:

  Dim Number As Integer, Count As Single, Name As String

  如果忽略了Dim语句中的As子句,则VB将变量的类型认为是变体型。

  例如下面语句声明的Myv变量的数据类型是变体型:

  Dim Myv

  在默认情况下,字符串变量是不定长的,随着对字符串变量赋予新的数据,它的长度可增可减,也可以将字符串变量声明为定长的。声明一个定长字符串变量的语法如下:

  Dim变量名As String*长度

  例如,声明一个长度为50个字符的字符串变量,可用下列语句:

  Dim Name As Strring*50

  如果赋给该定长字符串变量的字符少于50个,则用空格将Name变量的不足部分填满。因为定长字符串用空格填充尾部多余的空间,所以在处理定长字符串时可发现,删除空格的Trim和Rtrim函数是很有用的。如果赋给的字符串的长度大于50,则VB会自动截去超出部分的字符。

  例如,编写窗体的Click事件过程如下:

  Private Sub From_Click()

  Dim strl As String

  Dim str2 As String * 4

  Dim str3 As String * 2

  Str1="中华人民共和国"

  Str2="中华人民共和国"

  Str3="中华人民共和国"

  Print str1

  Print str2

  Print str3

  End Sub

  在该段代码中,声明了3个字符串变量。其中Strl为不定长字符串变量,Str2和Str3为定长字符串变量,并且长度分别为4和2.为这3个字符串变量赋予相同的值"中华人民共和国".然后使用Print语句在窗体上分别打印出各字符串变量。 [NextPage]   运行该程序,单击窗体,则窗体上打印出3行文字,如图3.3所示。由于字符串变量Str2最多能存储4个字符,因此,字符串"中华人民共和国"的后3个字符被截去。同理,Str3中只存储了两个字符,其他字符被截去。
  2.隐式声明
  在VB中,也可以不事先声明而直接使用变量,这种方式称为隐式声明。上述使用Dim语句声明变量的方式称为显式声明。所有隐式声明的变量都是变体型数据类型。
  在使用一个变量之前并不必先声明这个变量。例如,不必在使用变量TempVal之前先声明它:
  Function safeSqr(num)
  TempVal=Abs(num)
  SsfeSqr=Sqr(TempVal)
  End Function
  VB用这个名字自动创建一个变量,使用这个变量时,可以认为它就是显式声明的。虽然这种方法很方便,但是如果把变量名拼错了的话,系统会认为它是另一个新的变量,从而会导致一个难以查找的错误。
  如果知道变量确实总是存储特定类型的数据,最好还是先声明变量的数据类型,这样VB会以更高的效率处理这个数据。例如,存储人名的变量最好声明成字符串数据类型,因为名字总是由字符组成的。
  为了避免写错变量名引起的麻烦,可以在【代码】窗口的声明段中加入语句:
  Option Explicit
  这样,在代码中只要遇到一个未经显式声明就当成变量的名字,Visual Basic都会弹出错误警告。
  例如,编写一段代码如图3.4所示,其中声明了变量s1,而没有声明变量s2,运行该程序,单击窗体,则弹出编译错误消息框,提示用户变量未定义。如果删除option Explicit语句,再次执行程序,则不会再出现变量未定义的错误。
  也可以将系统定制为总要求显式声明变量。执行【工具】菜单中的【选项】命令,打开如图3.5所示的【选项】对话框,在【编辑器】选项卡中选中【要求变量声明】复选框。这样就在任何新建的模块中自动插入如Option Explicit语句,但不会在已经建立起来的模块中自动插入。所以在工程内部,只能用手工方法向现有模块添加Option Explicit语句。
  注意:Option Explicit语句的作用范圈仅限于语句所在模块,所以,对每个需要强制式变量声明的窗体棋块和标准摸块,都必须将Option Explicit语句放在它们各自的声明段中。
 [NextPage]  一个变量声明后,并不是在任何地方都能使用它。每个变量都有它的作用域。变量的作用域决定了哪些子过程和函数过程可使用该变量。变量的声明方式和声明位置决定了它的作用域。
  在理解变量的作用域之前,首先需要了解一个应用程序的组成。一般应用程序的组成如图3.6所示。
  关于在工程中添加窗体与模块的操作在第2章中已经介绍过了。本书只涉及到窗体模块和标准模块。标准模块主要要来定义一些公用的变量和过程,以供各窗体模块中的事件过程引用。
  变量的作用域可分为3个层次:局部变量、模块级变量和全局变量。表3.2中列出了变量的作用范围及使用规则。
  注意:如不加特别说明,模块是指对窗体模块与标准模块的统称。
  1.局部变量。
  局部变量是指在过程内部使用Dim语句或Static语句声明的变量。在过程内不加声明而直接使用的变量也是局部变量。我们知道,一个应用程序包含若干个模块,模块中又包含若干个过程。对于局部变量,只能在声明它的过程中使用,本模块的其他过程以及其他模块均不可访问。
  在不同的过程中可以声明相同名称的变量,它们相互独立,互不干扰。
  2.模块级变量。
  模块级变量是指在模块的任何过程之外,即在模块的声明部分使用Dim语句或Private语句声明的变量。可被本模块的任何过程访问。
  3.全局变量。
  全局变量是指在模块的任何过程之外,即在模块的"通用声明"段使用Public语句声明的变量。可被本模块的任何过程访问。需要注意的是。在窗体模块声明的全局变量,在访问时需要在变量名前加窗体名。而在标准模块中声明的全局变量可以直接访问。
  例如,在窗体模块中定义了四个变量A、B、C和D,如图3.7示。则A为全局变量,B为模块级变量,C和D为局部变量。
  需要说明的是,在VB中作用域不同的变量的名称可以相同,并且作用域小的变量的优先级高。
  在过程中,既可以使用Dim语句声明局部变量,也可以使用Static语句声明局部变量。并且Static语句的一般形式与Dim语句相同:
  Static变量名As数据类型。
  使用Static语句声明的变量称为静态变量,它与用Dim语句声明的变量的不同之处在于:当一个过程结束时,过程中所用到的静态变量的值会保留,下次再调用此过程时,变量的初值是上次调用结束时被保留的值。
  [NextPage]   对于使用Dim语句声明的局部变量,随过程的调用而分配存储单元,并进行变量的初始化。一旦过程结束,变量的内容自动消失,占用的存储单元也被释放。因此,每次调用过程时,变量都将重新初始化。
  下面,用一个实例来说明静态变量的特点。
  实例3.1静态变量
  在【代码】窗口中编写窗体的Click事件过程如下:
  Private Sub Form_Click()
  Dim Sum As Integer
  Print Sum
  Sum= Sum +1
  End Sub
  运行程序,在窗体上单击数次,窗体上显示的数字始终是0,如图3.8所示。
  将上述代码中的Dim替换成Static,如下所示:
  Private Sub Form_Click()
  Static Sum As Interger
  Print Sum
  Sum=Sum + 1
  End Sub
  再次运行程序,则每单击一次窗体。

广告合作:400-664-0084 全国热线:400-664-0084
Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号
珠峰网 版权所有 All Rights Reserved