跳转到内容

QBasic/数组和类型

来自维基教科书,自由的教科书,共享知识

内置类型

[编辑 | 编辑源代码]

QBasic 有五个内置类型:INTEGER (%), LONG(&) 整数,SINGLE(!) 浮点数,DOUBLE(#) 浮点数和 STRING($) 。QB64 还有两个内置类型:_INTEGER64 (&&) 和 _FLOAT (##)

隐式声明是在变量名称末尾添加类型字符 (%, &, !, #, $, &&, ##)。有关更多信息,请参阅 QBasic/基本数学

显式声明是在首次使用前使用 DIM 语句。

DIM a AS STRING
DIM b AS INTEGER
DIM c AS LONG
DIM d AS SINGLE
DIM e AS DOUBLE
DIM f AS _INTEGER64 'QB64 only
DIM g AS _FLOAT 'QB64 only

如果您既不使用隐式也不使用显式声明,QBASIC 解释器会假定 SINGLE 类型。

用户定义类型

[编辑 | 编辑源代码]

用户定义类型允许您创建自己的数据结构。请注意,自定义类型类似于数组。

 TYPE playertype
  name AS STRING
  score AS INTEGER
 END TYPE

然后,您可以声明该类型下的变量,并访问它们。

DIM playername AS playertype
playername.name = "Bob"
playername.score = 92

上面的示例展示了如何使用自定义类型来维护数据,例如在玩游戏的玩家身上。

数组是存储在单个变量中的值的集合。STRING 是字符数组(因此,例如,char$(1) 表示字符串 char$ 中的第一个字符)。数字数组应使用 DIM 指令定义(除非您对它们进行 DIM,否则它们在每个维度上都限制为 10 个元素)。

默认情况下,QBasic 中的数组的大小是静态的,并且不能在程序中稍后更改。设置此类型数组的代码如下所示

DIM myArray(10) as TYPE 'this is explaining the datatype to be used during program execution in array'

TYPE 可以是任何内置的 QBasic(INTEGER、LONG、SINGLE、DOUBLE、STRING)或用户定义类型。如果未指定,则数组采用由变量名称后缀定义的类型 - INTEGER (%), LONG(&) 整数,SINGLE(!) 浮点数,DOUBLE(#),STRING($) - 或者如果没有,则为 INTEGER。

警告:如果您的数据类型是字符串,则 DIM string(10) 定义的是一个包含 10 个字符的单个字符串,而不是 10 个任意长度的字符串! (10 个最多包含 128 个字符的字符串将定义为 DIM string(10,128)

通过在程序开头发出元命令 '$DYNAMIC,您可以使数组变为动态

 ' $DYNAMIC
 DIM myDynamicArray(5) as INTEGER
 REDIM myDynamicArray(10) as INTEGER

现在这是完全合法的代码。

要释放数组占用的空间,请使用 ERASE 语句。

多维数组

[编辑 | 编辑源代码]

数组不限于一维 - 可以声明一个数组来接受两个参数,以便表示一个值的网格。

 DIM housenames(25,25) as STRING

您不能使用 REDIM 语句来更改数组的维数,即使是动态分配。

非零基址

[编辑 | 编辑源代码]

在大多数语言中,数组从值 0 开始,然后向上计数。在 basic 中,可以索引数组,使其从任何值开始,并结束于任何其他值。

 DIM deltas(-5 TO 5)

您可以使用 OPTION BASE 语句更改默认的下界。

华夏公益教科书