《Visual Basic 程序设计语言》一书中给数组下的定义“数组是由一系列具有相同变量名、相同数据类型的下标变量构成的有序的排列”。
在这先说以下下标变量。
在vb中,把每一个a(i)叫做下标变量,其实就像数学中的一串数据a1,a2,···简化为{a(i)}这样每个位置上就代表了相应的数据。
下标变量的规定:
1、用法和普通变量用法一样
2、必须写在一行上,而且下标要放在小括号里,避免和普通常量冲突哈
3、下标可以是常数、数值变量、算术表达式,太人性化了哈
4、下标值为整数,出现小数的时候会自动取整。
通过数组定义我们不难看出,数组就是一个体操队形(一维的是一行若干列,二维的是两行若干列···),它的作用就是简化程序设计,使大量数据快速准确的被处理。如何来进行处理呢?那就接着学习数组的声明和应用吧!
数组分为固定数组和动态数组。(什么时候使用固定数组,什么时候使用动态数组呢?先总结后思考,不急!!!嘻嘻)
固定数组,顾名思义就是指数组元素的个数固定不变的数组。因为我们考虑数组的时候主要用到数组的数组名、数组维数、数组大小、数组类型以及作用范围,所以当我们声明的时候我们自然而然的就会想到这几方面。
固定数组的声明:
1、建立公用数组,在模块的通用声明段中用public语句来声明
格式:public 数组名<维数说明> [as 类型]
2、建立模块级数组,在模块的通用声明段用private语句声明
格式:private|dim 数组名<维数说明> [as 类型]
3、建立局部数组,在过程中用private语句声明
格式:private|dim 数组名<维数说明> [as 类型]
声明的时候应该要注意点细节方面的东西:
1、数组名的命名
2、作用域要考虑清楚哈(谁定义谁使用)
3、缺省类型是variant处理。
4、维数指定的时候可以用to关键字,也可以用option base n来控制下界。
数组应用:
声明一个数组之后就可以使用数组,意思就是在使用前必须声明,这和变量和过程函数一样,都是必须先声明才能使用。其实我理解的数组的使用就是对数组元素进行赋值、表达式运算、输入和输出等操作。
《Visual Basic程序设计》一书中说道要我们在数组使用的时候要注意以下几点:
1、在同一过程中,不能声明与简单变量同名的数组(这点应该都会理解如果与简单变量一样就重复了使用的时候就会出现混乱的情况)
2、声明数组后,数值型的元素初始化为0,字符串初始化为空字符串
3、使用数组元素时,数组名、数组的数据类型、维数必须与声明的时候一致
4、使用数组元素的时候,下标值应该在数组声明时指定的范围之内。
之所以要总结注意事项就是要让自己有一个认识,就是注意的东西是细节的东西,如果细节掌握不好,那大局观再大也没有用。
我们之所以使用数组就是为了要进行大量的数据处理,是程序更加简单,快捷。在数组的应用中出现了一维数组、二维数组、字符串数组、可变数组和记录数组。
当我们进行数组应用的时候循环语句是不能分隔开来的,有数组的运算大部分就要用到循环语句,首先说一维数组的一个经典例子--排序(选择和冒泡)。这两种排序方法要比较的来记忆,选择的思想是从所有的里面找到最大的给第一个下标变量(从大到小排序),之后剩下的再比较出最大的给第二个下标变量,以此类推。而冒泡的思想是小数沉底,大数上浮--参加比较的两个元素是相邻的,每轮比较找出最小的放在本轮的后面,以此类推。
这两种思想是我们要掌握的,可以延伸到生活和其他方面的学习。
还有就是我认为这两种方法的重要的代码块要记住:
选择:for i=1 to 9 forj=i+1 to 10 if a(i)<a(j) then t=a(i): a(i)=a(j):a(j)=t
end if next j next i
冒泡:for i=1 to 9 forj=1to 10-i if a(j)<a(j+1) then t=a(j): a(j)=a(j+1):a(j+1)=t
end if next j next i
字符串数组:
字符串数组是存放字符串的一种下标变量的集合。
字符串数组是为了处理诸如人名、书名、国名、银行账户、电话号码等字符串型数据。
假设我们给十个国家进行排序的话,我们就要进行字符串之间的比较,这种比较的规则是将两个字符串从左向右逐个字符相比较,知道能够比较出大小为止,两个字符大小是通过比较其对应的ASCII码来去确定的
可变数组:
数组的数据类型是vaiant类型,可以存放不同类型的数据。但是这种数据类型使空间的浪费随着数组的增大而加剧。所以就出现了记录数组。当然要用记录数组就要定义一个自定义的数据类型,存放各个不同数据类型字段的简单变量集合在一起形成了记录类型。
说完了固定数组,该说动态数组了。既然有固定数组做铺垫我想动态数组学习起来就容易多了,我自己总结了动态数组的三个特点:1、不定性(元素的个数、数组维数、数组的上下界不定)2、动态分配性(调用redim语句动态分配数组的维数、上下界、数组的大小)3、保守性(在redim语句中使用preserve选择项,可以保持数组中原有的数据不变)(什么?你说那个preserve记不住?我告诉你那个词的意思是1、保护2、防护,维护、3、保存4、保持维持5、保留,留存,记住了吗?)
行了,通过这三个特点,动态数组就已经印在脑子里了。这篇博客上面我给我自己提到了一个问题就是什么时候使用动态数组而什么时候使用固定数组,这个问题的答案也就是这三个特点的具象。
控件数组:
控件数组就是由一组相同类型的控件组成,而且我总结的具有以下四个特点
1、同名异号(就是每个元素具有相同的控件名字即控件数组名,以索引号index来标识每个控件)
2、同属性事件(每个控件有相同的一般属性和共用相同的事件过程)
3、系统资源占用率少(添加控件数组所占系统资源,比直接添加同样数目的相同类型的控件所占系统要少)
4、动态添加(动态添加控件数组,是在有控件组的机制下添加的,添加时会用到new 语句,添加出来的控件是不可见的,必须要在代码段上使其可见)
以上是我自己理解的控件数组的理解,另外我想了一下控件数组的索引号,我感觉这个知识点很重要,因为只要用到索引号的选择就几乎要用到选择语句if-endif 和select-case语句。
而且控件数组一般用在例如计算器、棋类的程序中。