计算机应用在数据处理方面占有相当大的比重,而数据处理类的问题往往都有两个特点,一是数据量大;二是这些数据之间都在某些方面存在一定的内在联系。在前面章节中,由于解决问题所用的数据不多,用简单变量就可以进行存取和处理。但是在实际工作中,常常遇到大批的数据需要处理,例如学生成绩的统计、人口普查的数据处理、农业实验观测值等等。如果仍然用简单变量来存取和处理,很不方便,甚至是不可能处理的。为了解决这一问题,需要引入一个重要的数据结构—数组。本章内容:
n 数组和数组单元的基本概念
n 定义数组语句DIM
n 静态数组和动态数组
n 利用数组进行查找数据
本章内容在的实际运用作用很突出,对于基本概念知识要熟悉。
在现实生活中,有着各种各样的数据,这些数据在所讨论的问题中可分为两类:一类是仅与其取值有关,与其所在的位置无关;而另一类,不仅与其取值有关,并且与其所在的位置也密切相关。前面我们所讲过的变量都是简单变量,如a,i,x等,并可以给简单变量一个某种数据类型的数值,各个简单变量是各自独立的,与其所在的位置无关。利用简单变量可以解决不少问题,但是,如果在程序设计中仅使用简单变量,势必受到简单变量单独性和无序性的限制,而难于或无力解决那些数据不仅与取值有关,而且与其所在位置也有关的较复杂的问题,如体育比赛的成绩,就隐含着名次和成绩。要想方便地解决这类问题,通常要借助功能更强的变量—下标变量,即数组结构。
数组是一种最简单实用的数据结构。所谓数据结构,就是将多个变量(数据)人为地组成一定的结构,以便于处理大批量、相对有一定内在联系的数据,例如,某班有40名学生,考试8门课程,现要求将有考试成绩保存起来以供处理:显示、求总分、求每让课程的平均分、排名次等。很显然,对这320个原始数据用简单变量来存放,并进行相应的处理是不现实的,必须采用一种新的结构,即数组。
在Quick BASIC中,为了确定各数据与数组中每一单元的一一对应关系,必须给数组中这些数编号即顺序号(用下标来指出顺序号)。因此,可以说,将一组排列有序的、个数有限的变量作为一个整体,用一个统一的名字来表示,则这些有变量的全体称为数组;或者说,数组是用一个名字代表顺序排列的一组数,顺序号就是下标变量的值。而简单变量是没有序的,无所谓谁先谁后数组中的单元是有排列的顺序的。
有序性和无序性就是下标变量和简单变量之间的重要区别。
在同一数组中,构成该数组的成员称为数组单元(或数组元素、下标变量)。数组里面的每一个数据用数组单元名来标识。在Quick BASIC中,引用数组中的某一单元,要指出数组名和用括号括起来的数组单元在数组中的位置(顺序号)的下标。因此,数组单元又称“带下标的变量”,简称“下标变量”。例如:
a(3) 代表a数组中顺序号为3的那个单元。
x(10) 代表x数组中顺序号为10的那个单元。
下标不变量中下标的数称为数组的维数。
如果数组中的所有元素,能按行、列顺序排成一行,也就是说,使用一个下标便可以确定它们各自所处的位置,这样的数组称为一维数组。因此,一个下标的下标变量,构成一维数组。
如果数组中的所有元素,能按行、列顺序排成一个矩阵,换句话说,必须用两个下标才能确定它们各自所处的位置,这样的数组称为二维数组。因此,两个下标的下标变量,构成二维数组。
依次类推,3个下标的下标变量,构成三维数组。有多少个下标的下标变量,就构成多少维的数组,如四维数组、五维数组等。通常又把二维以上的数组称为多维数组。
一般来讲,数组元素的下标的个数,就是该数组的维数;反之,一个数组的维数一经确定,那么它的元素的下标的个数也就随之确定了。
a(10) 为一维数组
x(2,3) 为二维数组
b(4,5,6) 为三维数组
为了区分各个不同的数组,必须给每个数组取一个名字。数组名的命名规则与简单变量的命名规则一样,即由1~40个字符组成,组成的字符可以是字母、数字或小数点,并且必须以字母开头。例如:a,x,xscj%等
Quick BASIC中数据有各种类型,相应的数组也有各种类型。说明数组类型的方法有两种:
(1)用类型说明符说明数组类型。即数组名的最末一个字符以下的特定字符表示该数组的类型,见表8-1。
表8-1 数组类型
|
符 号 |
数 组 类 型 |
例 子 |
|
% |
整型 |
x%(8),nuber%(5,8) |
|
& |
长整型 |
a&(10),deh&(2,3,5) |
|
! |
单精度型 |
sum!(5),plusc!(4,6) |
|
# |
双精度型 |
yp#(4),pl#(10,20) |
|
$ |
字符型 |
a$(5),tele$(6,10) |
注意:在这5个符号中,只有单精度型的类型说明符“!”可以省略,例如sum!(5)和plusc!(4,6)与sum(5)和plusc(4,6)一样都是单精度型。所以,凡是没有类型说明符的,其类型就隐含说明为单精度型。
(2)用DIM语句中的关键字AS说明数组类型,见表8-2。
表8-2 用类型说明词说明数组类型
|
语 句 |
定 义 数 组 类 型 |
|
INTEGER |
整型 |
|
LONG |
长整型 |
|
SINGLE |
单精度型 |
|
DOUBLE |
双精度型 |
|
STRING |
字符型 |
例如:
将数组x定义为整型数组:
DIM x(-9 TO40)AS INTEGER
将数组a定义为长整型数组:
DIM a(20)AS LONG
将数组numb定义单精度型数组:
DIM numb(4,5)AS SINGLE
将数组gszi定义为双精度型数组:
DIM gizi(2,3,4)AS DOUBLE
将数组tele定义为字符型数组:
DIM tele(-2 TO 2,-3 TO 4)AS STRING
组成数组的各个元素一般均为变量,由于这些变量共同使用一个变量名,即所在的数组名,因此必须要有下标才能相互区别,故数组元素又称为下标变量。
在Quick BASIC中下标变量的格式为
〈数组名〉(〈一标表〉)
其中〈一标表〉是指一个或者几个下标(代表一维或者几维),各下标之间应该用逗号分隔。
在使用下标变量时有以下说明:
(1)下标变量由数组名后跟用括号起来的下标组成,例如a(4),b(2,3)等等。
(2)下标可以是常量、变量或表达式,例如x(i),a(2+n,n-1)等
(3)下标值若为非整数,系统将按四舍五入自动取整,其值的范围在-32768到32767之间。例如下标变量a(2.3),系统将下标按四舍五入自动取整,其值的范围在-32768到32767