跳轉到內容

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 語句更改預設的下界。

華夏公益教科書