背景:                 
[本书目录] [图书首页] [本书讨论区]  
链接地址:http://www.17xie.com/read-6161.html    注册17xie 一起来写书 实现您的出书梦想!

之间。例如下标变量a2.3),系统将下标按四舍五入自动取整后,即a2)进行使用。

4)下标变量的类型就是数组的类型,所有下标变量都具有一样的类型。

5)下标变量像简单变量一样,可以被赋值和引用。引用数组元素时的下标值应该在下限与上限之间,否则系统将显示“Subsript out range”(下标超出范围)的出错信息。

8.2  定义数组语句DIM

若要使用下标变量,必须先定义数组。一个数组,包括数组名称、数组维数、数组单元数等因素。在使用数组时,要将以上内容告诉计算机,以便开辟足够的内存单元来存储数据。在Quick BASIC中用下面的语句来完成这一工作,称为“建立”(“说明”、“定义”)一个数组。

8.2.1  DIM语句的格式和功能

格式:

DIMSHARED]〈数组〉[(〈维数定义〉)][AS〈类型说明词〉][,〈数组名〉[(〈维数定义〉)][AS〈类型说明词〉]]…

功能:建立一维或多维数组。

8.2.2  DIM语句的维数定义

数组中的〈维数定义〉如下:

1)下标变量的单元数和维数由数组名后跟用括号起来的下标的下界和上界组成。其格式为:

[〈下标下界1TO]〈下标上界1〉[,[〈下标下界2TO]〈下标上界2〉[,…]]

其中下界和上界表示该维的最小和最大下标值,通过关键字TO连接起来代表下标的取值范围,且下界和关键字TO 可以省略,若省略了下界和关键字TO,下标的取值范围是0到上界(若没有OPTION BASE语句的作用),即等价于:0 TO上界。

例如:

DIM a3TO5AS LONG         表示定义了有3个数组元素的一维数组a

DIM a-1TO10AS LONG        表示定义了有12个数组元素的一维数组a

DIM a10AS LONG            表示定义了有11个数组元素的一维数组a

2)多维数组的各个维下标界值之间,用逗号隔开。例如:

DIM X-2 TO 2,-1.2 TO 2         表示定义了有20个数组元素的二维数组x

DIM X23                 表示定义了有12个数组元素的二维数组x

DIM X234              表示定义了有60个数组元素的三维数组x

3)下标的下界默认为0。例如:

a20)表示数组a的上界为20,下界为0,该数组就有a0,a1,,a20,21个数组元素。

b5,5)表示数组的两个维,每维的下界为0,上界为5,该数组就有:

b0,0,b0,1,b0,5

b1,0,b1,1,b1,5

  

b5,0,b5,1, b5,5

66列共36个元素。

8.2.3  DIM语句的使用说明

1)在DIM语句中AS〈类型说明词〉表明数据的类型,可以为基本数据类型或用户定义类型。例如:

DIM  a3 TO 5AS LONG

DIM  x2AS STRING,y4AS DOUBLE

也可以在数组名后加类型说明符实现相同的功能。例如:

DIM  a&3 TO 5

DIM  x$2,y#4

2SHARED为全程属性选择项。若选择了该属性,模块中的所有过程都能共用该数组,即说明该数组变量是一个全程变量,它不同于SHARED语句。

3DIM不但能定义说明数组,分配数组存储空间,而且还能将数组进行初始化,使得数值数组元素初始化为零,字符串元素初始化为空。

4DIM语句是非执行语句,可放在程序的任何部分,但必须放在使用该数组之前,遵守“先说明后使用”的原则,否则会出现出错信息“Array already dimensioned”。一般认为DIM语句放在程序的头部较好。

DIM语句本身不具备再定义功能,即不有直接使用DIM语句对已经定义了的数组进行再定义,否则会出现“数组已定义”的错误。

5)在程序中引用数组的时候,要特别注意下标的值不能超出说明语句定义的上、下界。

例如:

DIM a3

FOR i=2 TO 4

READ ai

NEXT

DIM中定义的存储单元是a0)、a1)、a2)、a3),而下面的语句引用数组的存储单元是a2)、a3)、a4),当读到a4)时,下标超出定义的范围,系统统将给出超界错误信息“Subscript out of range”(下标出界)。

8.2.4  OPTION BASE语句

数组中每维的下标上界数不超过10的情况下,可以不用DIM语句进行说明,系统会自动给每维分配11个存储单元。

例如,一维数组a10)有11个存储单元,二维数组b10,10)有11×11121个存储单元。

DIM语句之前有下界选择语句OPTION BASE时,数组的下界就由该语句来确定。

格式:OPTION BASE n

功能:定义所有数组下标的下界。

说明:格式中的n是数字01,即选择01作数组下标下界。不能随意选用其他任何数。

通常习惯用1作下界,则程序如下

OPTION BASE 1

DIM a20,b5,5

这样,数组a的下界为1,共有20个元素;数组b的下界为1,共有25个元素。

别我,如果定义的是多维数组,那么下标下界的确定对每一维都起作用。例如对三维数组x2,3,4)用OPTION BASE 1定义下标下界,那么该数组的每一维的下标下界均为1

OPTION BASE 1

DIM x2,3,4

这样定义后数组x的数组元素个数为24个。

8.2.5  求数组下标下界和上界的函数

格式:

LBOUND(〈数组名〉[,维])

UBOUND(〈数组名〉[,维])

功能:LBOUND函数返回数组指定维的下标下界;UBOUND函数返回数组指定维的下标上界。

被测试的数组必须是用DIM语句或者REDIM语句定义过的,否则系统将给出“Array not define”(数组未定义)的出错信息。

语句中的[,维]为任选项,指的果检测的维,其值为1到数组维数的一个整数。当语句中这一选项超出此范围时,系统将给出“Subscript out of range”(下标出界)的信息。此选项省略时,默认为第一维。

另外,一个LBOUNDUBOUND语句只能检测一个数组某一维的下标下界或者上界。

8.2.6  应用示例

[8-1]  将下列字符存放到数组中,并以倒序打印出来。字符是

a,b,q,r,s,t,w,xy,e,m,n

问题分析:把这12个字符存放在数组a$12)中,首先依次读取,然后利用FOR循环,设步长为-1,初值为12,终值为1实现倒序输出。

程序为:

'EXAMPLE 1

REM   字符倒序输出

CLS

DIM a$12

PRINT "原来字符顺序为:"

FOR x=1 TO 12

READ a$x

PRINT a$x);""

NEXT x

PRINT

PRINT "倒序输出结果为:"

FOR x=12 TO 1 STEP -1

PRINT a$x);""

NEXT x

DATA a,b,q,r,s,t,w,x,y,e,m,n

END

程序运行结果为:

原来字符顺序为:a b q r s t w x y e m n

倒序输出结果为:n m e y x w t s r q b a

[8-2]  随机产生10个二位整数,放入数组a,从中选出一个最大的和最小的数打印出来。

问题分析:设用nm来存放选出的最大数和最小数。由于m要存放最小的数,预存放一个较大的数,其值要大于数组中所有的数,所以赋初值为100n要存放最大的数,预先存放一个较小的数,其值要小于数组中所有的数,所以赋初值为-100

把随机产生的整数,依次与nm比较:

ai>n,则把ai)的值放入n中;若ai<m,则把ai)的值放入m中。

程序如下:

'EXAMPLE 2

REM       打印最大最小数

DIM a10

m=100:n=-100

PRINT "随机产生的10个二位整数是:"

FOR i=1 TO 10

ai=INTRND*90+10

PRINT ai);

NEXT I

PRINT

FOR I1 TO 10

IF ai>n THEN n=ai

IF ai<m THEN m-ai

NEXT i

PRINT "最大数n="n,"最小数m="m

END

程序运行结果为:

随机产生的10个二位整数是:

26   39   56   90   82   91   20   18   25   48


字数:4258    最后更新:1年以前 [08-16 19:34]我爱钱 修改
本页编辑者:我爱钱  
[前一页]:第八章 数组  [后一页]:第八章
[在本页中加入书签] [收藏本书] [推荐本书]
  17xie论坛 > 本书讨论区 > 本页评论   (共0条)
发表评论

用户名称 匿名发表
评论内容
验证码

关于我们 | 版权声明 | 免责声明 | 诚聘英才 | 联系我们 | 合作伙伴 | 友情链接 | 广告合作 | 提交意见
Copyright © 2007 17xie.com 互联网协同写书平台 京ICP备08002671号