QBasic/附錄
N = ABS(expression returning a numerical value)
返回表示式的“絕對”值,將負數轉換為正數(例如 -4 轉換為 4)
PRINT ABS(54.345) 'This will print the value ABS now as it is (54.345)
PRINT ABS(-43) 'This will print the value as (43)
.
OPEN "file.txt" FOR APPEND ACCESS WRITE
這將設定已宣告到程式中的檔案的訪問許可權。程式設計師可以設定三種設定。這些是
READ - Sets up the file to be read only, no writing. WRITE - Writes only to the file. Cannot be read. READ WRITE - Sets the file to both of the settings above.
FOR APPEND 將檔案開啟為文字檔案並將檔案指標設定為檔案末尾,從而將新的輸出追加到檔案中。如果省略,則 FOR RANDOM 為預設值,它將檔案開啟為一系列固定長度的記錄並將檔案指標設定為檔案開頭。新資料將覆蓋檔案中現有的資料,不會發出警告。
PRINT ASC("t") 'Will print 116
列印括號中找到的字元的 ASCII 程式碼號。如果程式設計師在括號中輸入了字串,則只會顯示字串的第一個字元。
ATN(expression)
內建三角函式的一部分。求值為數字值的表示式將轉換為其反正切。
angle = ATN( B ) angle2 = ATN( 23 / 34 )
BEEP
主機板上的 BIOS 被指示從 PC“揚聲器”發出“嗶”聲。另請參見 SOUND 和 PLAY。
一個更舊、過時的替代方法是使用 : PRINT CHR$(07)
這後來被 BEEP 命令取代。
BLOAD file_path$, memory_offset%
將使用 BSAVE 儲存的檔案載入到記憶體中。
- file_path$ 是檔案位置
- memory_offset 是一個整數,指定要載入檔案的記憶體偏移量
起始記憶體地址由偏移量和最近一次對 DEF SEG 語句的呼叫決定
BSAVE file_path$, memory_offset%, length&
將記憶體區域的內容儲存到可以使用 BLOAD 載入的檔案中
- file_path$ 是檔案位置
- memory_offset 是一個整數,指定要儲存的記憶體偏移量
- length 要複製的位元組數
起始記憶體地址由偏移量和最近一次對 DEF SEG 語句的呼叫決定
CALL ABSOLUTE([argument%, ...,] address%)
將提供的引數(必須為 INTEGER)從左到右壓入堆疊,然後對位於 address 的組合語言例程進行遠呼叫。要使用的程式碼段使用 DEF SEG 設定。通常,QBasic 將壓入引數的地址,但是如果引數前面有 BYVAL,則將壓入引數的值。
請注意,由於 QBasic 從左到右壓入引數,因此如果您例如為三個引數提供三個引數,堆疊將如下所示
SS:SP Return IP +0002 Return CS +0004 Argument 3 +0006 Argument 2 +0008 Argument 1
示例
'POP CX 'POP DX 'POP BX 'POP AX 'MOV [BX], AX 'PUSH DX 'PUSH CX 'RETF A$ = "YZ[Xë•RQ╦" 'Codepage: 437 I% = 42: J% = 0 IF VARSEG(A$) <> VARSEG(J%) THEN STOP 'Both A$ and J% are stored in DGROUP. DEF SEG = VARSEG(A$) CALL ABSOLUTE(BYVAL I%, J%, PEEK(VARPTR(A$) + 3) * 256& OR PEEK(VARPTR(A$) + 2)) PRINT J%
QBasic 不會將 BP 設定為機器語言例程的堆疊幀,而是讓它指向呼叫 QBasic 過程的堆疊幀,如下所示
-???? Variable 3 -???? Variable 2 -???? Variable 1 -???? Return value (only if the procedure is a FUNCTION, absent if a SUB) -0002 BP of calling procedure SS:BP BP of calling procedure (yes, again) +0002 Six bytes referring back to the calling procedure to use when executing END/EXIT SUB/FUNCTION +0008 Argument 3 +000A Argument 2 +000C Argument 1
用 -/+???? 表示的偏移量將取決於變數的大小和存在、返回值和引數。例如,INTEGER 變數將佔用兩個位元組,而 LONG 變數將佔用四個位元組。正如人們可能預期的那樣,考慮到 QBasic 傳遞引數的方式,變數按宣告的相反順序儲存。與呼叫機器語言例程時相反,這裡的引數將始終是地址。對於按值傳遞的引數,將在堆疊上分配空間,並將該空間的地址傳遞給過程。
SELECT CASE expression CASE test1[, test2, ...]: statements [CASE test4[, test5, ...]: statements] [CASE ELSE: statements] END SELECT
執行第一個 CASE 語句後的語句,其中測試匹配表示式。測試可以採用以下形式
expression
expression1 TO expression2
IS {<|<=|=|<>|>=|>} expression
這是一個沒有 CASE 命令的程式示例,它將不同的路徑分配給值
PRINT "1. Print 'path'" PRINT "2. Print 'hello'" PRINT "3. Quit" INPUT "Enter a choice: "; a$ IF a$ = "1" THEN PRINT "path": RUN IF a$ = "2" THEN PRINT "hello": RUN IF a$ <> "3" THEN PRINT "That is not a valid choice.": RUN
這是使用 CASE 命令的程式示例
PRINT "1. Print 'path'" PRINT "2. Print 'hello'" PRINT "3. Quit" INPUT "Enter a choice: "; a$ SELECT CASE a$ CASE "1": PRINT "path": RUN CASE "2": PRINT "hello": RUN CASE IS <> "3": PRINT "That is not a valid choice.": RUN END SELECT
CHAIN filename
這將執行連結到另一個 QBasic 程式。可以使用 CHAIN 語句之前的 COMMON 語句將值傳遞到另一個程式。請注意,除非第二個程式使用 CHAIN 將執行轉移回第一個程式,否則執行不會返回到第一個程式。
CHDIR directoryname
這用於設定工作目錄,也稱為當前目錄。目錄名與 DOS 中的宣告方式完全相同,不支援長檔名。例如
CHDIR "C:\DOS"
請注意,這不會更改當前驅動器,並且每個驅動器都有自己的工作目錄。您可以像這樣設定當前驅動器
SHELL "C:"
這將返回 ASCII 程式碼值的字串字元符號。
name$ = CHR$([ascii character code])
通常用於將字元“載入”到字串變數中,當該字元無法鍵入時(例如 Esc 鍵或 F{n}(功能鍵)或 QBASIC 直譯器將“識別”並執行的字元。以下四個字元不能出現在 QBasic 字串文字中
- 0 空:直到行尾的所有字元都將被刪除,包括此字元。
- 10 換行符:表示行尾。
- 13 回車符:此字元將被刪除。
- 34 引號:表示字串文字的結尾。
這是一些字元程式碼的列表 :-
07 Beep (same as BEEP) 08 Backspace 09 Tab 27 Esc 72 Up Arrow 75 Left Arrow 77 Right Arrow 80 Down Arrow
這將把括號中的內容四捨五入到最接近的整數。
PRINT CINT(4573.73994596)
4574
CIRCLE ([X Coordinate], [Y Coordinate]), [Radius], [Colour],[Start],[End],[Aspect]
允許程式設計師顯示一個圓。與所有圖形命令一樣,它必須與 SCREEN 命令一起使用。
CLEAR
重置所有變數、字串、陣列並關閉所有檔案。QBasic 中的重置命令。
CLOSE
關閉所有開啟的檔案
CLOSE #2
僅關閉以資料流 2 開啟的檔案。其他檔案保持開啟狀態
CLS
清除活動螢幕。擦除所有文字、圖形,將游標重置到左上角(1,1),並將當前背景顏色(必須使用 COLOR 命令設定)應用於整個螢幕。
COLOR [Text Colour], [Background Colour]
這允許您更改下次“列印”到當前輸出視窗時使用的文字和背景顏色。可以這樣做
COLOR 14, 01 PRINT "Yellow on Blue"
您可以選擇十六種顏色
00: Black 08: Dark Grey 01: Dark Blue 09: Light Blue 02: Dark Green 10: Light Green 03: Dark Cyan 11: Light Cyan 04: Dark Red 12: Light Red 05: Dark Purple 13: Magenta 06: Orange Brown 14: Yellow 07: Grey 15: White
這些值是您在 COLOR 命令中輸入的數字。
注意,只有螢幕模式 0、7、8、9、10 支援背景顏色。要以背景顏色“重新繪製”整個螢幕,請使用 CLS 命令。
將變數宣告為“全域性”,這允許跨多個 QBasic 程式/指令碼訪問其值(另請參見 CHAIN 命令)
COMMON SHARED [variablename]
每個宣告 'variablename' 為 COMMON 的程式將共享相同的值。
注意。所有 COMMON 語句必須出現在程式開頭(即在任何可執行語句之前)。
修復變數,使其無法在程式中更改。
CONST (name) {AS (type = INTEGER / STRING)} = (expression or value)
例如 :-
CONST PI = 3.14159265
將值 3.14159265 分配給 PI。
CONST PI2 = 2 * PI
必須在使用 PI 計算 PI2 之前為 PI 分配一個值。通常,所有 CONST 都在程式開頭宣告。
DATA [constant]
與 READ 和 RESTORE 命令一起使用。主要用於處理圖形的程式,此命令允許 QBasic 讀取大量常數。READ 命令訪問資料,而 RESTORE 命令“重新整理”資料,允許再次使用它。
一個系統變數,它始終包含當前日期,以 mm-dd-yyyy 格式表示為字串。像這樣使用它
a$ = DATE$
設定當前段地址。
DEG SEG [=address]
- address 是一個段地址,可以包含 0 到 65535 之間的值。
如果省略 address,DEF SEG 會將當前段地址重置為預設資料段。DEF SEG 由 BLOAD、BSAVE、CALL ABSOLUTE、PEEK 和 POKE 使用
_DEST 設定當前寫入頁面或影像。_DEST image_handle 將目標影像傳送到儲存在長變數 image_handle 中的控制代碼影像。_DESt 0 將目標影像傳送到當前使用的螢幕。
這用於宣告陣列(早期版本的 QBasic 要求所有變數都被定義,而不僅僅是大於 10 的陣列)
DIM [Array Name] ([count],[count], ..)
陣列名稱可以是任何型別(Integer、Double、String 等)。如果未宣告,則假定為單精度浮點數。字串可以使用 $ 符號“宣告”(整數使用 % 符號)。QBASIC 直譯器可以容忍最多 10 個計數的數字陣列,而無需宣告這些陣列。
注意,早期版本的 QBasic 沒有明確地將陣列的內容設定為零(參見 CLEAR 命令)
DIM table%(100,2)
建立一個名為 table% 的整數陣列,包含 100x2 = 200 個條目
DIM form$(5)
建立一個名為 form$ 的字串陣列,包含 5 個字串
DIM quotient(20) AS DOUBLE
建立一個名為 quotient 的陣列,包含 20 個雙精度數字
DO [program] LOOP UNTIL [test condition becomes TRUE]
用於在程式中建立迴圈。[condition] 僅在首次執行 [program] 程式碼後測試(另請參見 WHILE)。例如
num$ = 1 sum$ = 0 DO sum$ = 2 * num$ PRINT sum$ num$ = num$ + 1 LOOP UNTIL num$ = 13
這不起作用,但以下程式碼起作用
num = 1 sum = 0 DO sum = 2 * num PRINT sum num = num + 1 LOOP UNTIL num = 13
DRAW "[string expression]"
用於從當前“游標”位置以當前顏色繪製一條直線。DRAW 定義了線的方向(向上、向下等)和長度(以畫素為單位)。例如:-
SCREEN 7 PSET (50, 50), 4 DRAW "u50 r50 d50 l50"
每個數字前面的字母是方向
U = Up E = Upper-right D = Down F = Lower-right L = Left G = Lower-left R = Right H = Upper-left
繪圖“游標”停留線上段結束的位置。u50 從 50,50 向上繪製,結束於 50,0 r50 從 50,0 向右繪製,結束於 100,0 d50 從 100,0 向下繪製,結束於 100,50 l50 從 100,50 向左繪製,結束於 50,50
因此,顯示的示例將繪製一個紅色的“線框”正方形。
另請參閱 LINE 和 CIRCLE 命令。
注意:從 0,0 到 100,100 的對角線長為 100 * 根號 2 畫素(即 141)
END
表示程式的結束。當 QBasic 看到此命令時,通常會顯示一條語句,提示“按任意鍵繼續”。
END TYPE結束 TYPE 定義。END DEF結束 DEF FN 函式定義。END SUB結束 SUB 過程定義。END FUNCTION結束 FUNCTION 過程定義。END IF結束多行 IF 塊。END SELECT結束 SELECT CASE 塊。
ENVIRON [string expression]
注意:如果您在 Windows 系統上執行 QBasic,則無法使用此命令。
此命令可幫助您在會話期間設定環境變數。退出 QBasic.exe 直譯器後,變數將恢復為其原始值。
此命令檢查指定檔案()中是否還有更多資料值可供讀取。EOF() 返回布林/二進位制值,即 1 或 0。如果尚未到達檔案末尾,則返回 0;如果已讀取檔案中的最後一個值,則返回 1(另請參閱 LINE INPUT)。
OPEN File.txt FOR INPUT AS #1 DO INPUT #1, text$ PRINT text$ LOOP UNTIL EOF(1) END
請注意,由於 INPUT 在到達 UNTIL 之前執行,因此 File.txt 必須至少包含一行文字 - 如果檔案為空,您將收到“錯誤 (62) 輸入超過檔案末尾”錯誤。
ERASE [arrayname] [,]
用於擦除所有已定義的陣列。
系統變數,儲存與處理上一行程式碼相關的數值。如果該行完成且未出現錯誤,則 ERROR 設定為 0。如果該行失敗,則 ERROR 設定為以下所示的值之一。最常用於將程式流重定向到錯誤處理程式碼,例如:-
ON ERROR GOTO [line number / label]
如果 ERROR 非零,則程式流跳轉到指定的行號或標籤。如果 ERROR 為零,則程式流繼續執行下一行。
若要手動測試您的程式並檢查錯誤處理例程是否正常執行,可以手動設定 ERROR:-
ERROR [number]
Set ERROR = number
錯誤號如下所示
1 NEXT without FOR 39 CASE ELSE expected 2 Syntax Error 40 Variable required 3 RETURN without GOSUB 50 FIELD overflow 4 Out of DATA 51 Internal error 5 Illegal function call 52 Bad file name or number 6 Overflow 53 File not found 7 Out of memory 54 Bad file mode 8 Label not defined 55 File already open 9 Subscript out of range 56 FIELD statement active 10 Duplicate definition 57 Device I/O error 11 Division by zero 58 File already exists 12 Illegal in direct mode 59 Bad record length 13 Type mismatch 61 Disk full 14 Out of string space 62 Input past end of file 16 String formula too complex 63 Bad record number 17 Cannot continue 64 Bad file name 18 Function not defined 67 Too many files 19 Yes RESUME 68 Device unavailable 20 RESUME without error 69 Communication-buffer overflow 24 Device timeout 70 Permission denied 25 Device Fault 71 Disk not ready 26 FOR without NEXT 72 Disk-media error 27 Out of paper 73 Advanced feature unavailable 29 WHILE without WEND 74 Rename across disks 30 WEND without WHILE 75 Path/File access error 33 Duplicate label 76 Path not found 35 Subprogram not defined 37 Argument-count mismatch 38 Array not defined
請注意,ERROR 在執行失敗時設定,而不是在“讀取”程式碼時設定 - 因此,例如,在將結果分配給不存在的陣列變數或寫入不存在的檔案之前,會發現“除以 0”錯誤。
允許立即退出子例程或迴圈,而無需處理該子例程或迴圈程式碼的其餘部分
EXIT DEF
退出 DEF FN 函式。
EXIT DO
退出 DO 迴圈,執行繼續執行 LOOP 命令後的下一條命令
EXIT FOR
退出 FOR 迴圈,執行繼續執行 NEXT 命令後的下一條命令
EXIT FUNCTION
退出 FUNCTION 過程,執行繼續執行函式呼叫後的下一條命令
EXIT SUB
退出 SUB 過程。
FOR [variable name] = [start value] TO [end value] {STEP n}
[program code]
NEXT [variable name]
將變數設定為 [起始值],然後執行程式程式碼,並在 Next 語句處將變數遞增 1(或如果指定了 STEP 值,則遞增 STEP 值)。將結果值與 [結束值] 進行比較,**如果不相等**,則程式流將返回到 FOR 語句後的下一行。
例如
FOR a = 200 TO 197 STEP-1 PRINT a NEXT a
200 199 198
使用 STEP 時必須小心,因為很可能使用 STEP 值跨越(結束值),從而導致 FOR 迴圈“永遠”執行(即,直到使用者中止直譯器或發生錯誤),例如:-
FOR a = 200 TO 197 STEP-2 PRINT a NEXT a
200 198 196 194 192 ... 0 -2 -4 ... -32768 ERROR 溢位
GOSUB [subroutine line number / label]
命令處理跳轉到指定的子例程。遇到 RETURN 命令時,處理將返回到此點,並繼續執行 GOSUB 後的下一行。
IF [variable or string] [operator] [variable or string] THEN [command] {ELSE [command]}
比較變數或字串。例如,如果您想檢查使用者輸入的密碼是否為正確密碼,可以輸入
IF a$ = "password" THEN PRINT "密碼正確"
其中 a$ 是使用者輸入的密碼。一些運算子包括
"="- 等於
"<"- 小於(僅在變數或字串為數字值時使用)
">"- 大於(僅在變數或字串為數字值時使用)
"<>"- 不等於
"<="- 小於或等於(僅在變數或字串為數字值時使用)
">="- 大於或等於(僅在變數或字串為數字值時使用)
還可以使用 if 命令對數字值執行操作,然後將它們與其他字串或變數進行比較,例如以下示例
IF a+5 = 15 THEN PRINT "正確"
IF a*6 = b*8 THEN PRINT "正確"
QUICKBasic 支援透過 $INCLUDE 指令使用包含檔案
(Note that the Qbasic interpreter does NOT support this command.)
'$INCLUDE: 'foobar.bi'
請注意,包含指令以撇號、美元符號為字首,並且包含的檔名稱用單引號括起來。
[variable] = INKEY$
當您希望程式使用鍵盤輸入進行操作時,可以使用此命令。檢視以下有關此命令工作原理的示例
a$ = INKEY$ PRINT "Press Esc to Exit" END IF a$ = CHR$(27)
可以將此命令與 CHR$ 命令結合使用,或輸入字母(例如 A)。
INPUT [String Literal] [,or;] [Variable]
顯示字串文字,如果字串文字後面跟有分號,則會顯示問號,並且使用者在按回車鍵之前輸入的內容將輸入到變數中。變數可以是字串或數字。如果使用者嘗試為數字變數輸入字串,則程式將再次要求輸入。字串文字是可選的。如果使用字串文字,則需要使用逗號 (,) 或分號 (;)。
INPUT #n [String Literal] [,or;] [Variable]
從指定的 檔案流 中讀取字串/值(另請參閱 LINE INPUT #)
INPUT #1, a$, b$, n, m
從以 #1 開啟的檔案中讀取 4 個值。a$ 被分配所有文字,直到遇到 ','(逗號)或行尾,b$ 被分配下一個文字段,然後兩個數值被解釋並分配給 n 和 m。
請注意,在檔案中,數字可以用“任何東西”分隔 - 因此,如果在當前檔案“行”上沒有找到數字(對於“n”或“m”),將搜尋檔案的其餘部分,直到找到數字。輸入然後“指向”檔案中的位置,該位置在滿足輸入語句所需的最後一個數字之後(另請參閱“seek #”命令)。
INSTR (start%, Search$, Find$)
返回 Find$ 在 Search$ 中的第一次出現開始處的字元位置,從 Search$ 中的字元位置 'start%' 開始。如果未找到 Find$,則返回 0。start% 是可選的(預設值為 1,Search$ 的第一個字元)。
Pos = INSTR ("abcdefghi", "de")
返回 4
A$ = LEFT$(B$,N)
A$ 被設定為 B$ 的最左邊的 N 個字元。
A$ = LEFT$("Get the start only",6)
返回 "Get th"
另請參閱 RIGHT$()、MID$()。
LET [variable] = [value]
早期的 QBasic.exe 命令直譯器需要使用“LET”命令來將值分配給變數。後來的版本不需要。
LET N = 227 / 99 LET A$="a line of simple text"
等同於 -:
N = 227 / 99 A$="a line of simple text"
LINE ([X], [Y]) - ([X], [Y]), [Colour Number]
用於在 QBasic 中繪製線條。第一個 X 和 Y 用作線條起點的座標,第二個集合用作線條終點的座標。您必須在程式開頭放置一個 SCREEN 命令才能使它工作。
注意。在 SCREEN 13 中,顏色編號 == 調色盤編號
LINE INPUT #1, a$
將以文字字元形式從以流 #1 開啟的檔案中讀取完整的一行,並將其放在 a$ 中。
為了找到“行尾”,QBasic 直譯器搜尋“回車”+“換行”(0x0D、0x0A)字元。當讀取在 UNIX/LINUX 系統上建立的文字檔案(其中“換行”0x0A 單獨用於表示“行尾”)時,LINE INPUT 不會識別“行尾”,並且將繼續輸入,直到到達檔案末尾。對於超過 2k 個字元的檔案,結果是“字串空間不足”錯誤,因為 a$ “溢位”。一種解決方案是使用能夠處理 UNIX 檔案的文字編輯器開啟並“另存為”,然後再嘗試使用 QBasic 處理該檔案。
(注意!本節中的命令指的是一個名為“QB64”的第三方程式。QUICKbasic 或 Qbasic 都不支援_LOADIMAGE、_NEWIMAGE 或 _PUTIMAGE 命令。QUICKbasic 和 Qbasic 都有一個“SCREEN”命令,但它在這些語言中的工作方式與 QB64 中不同。)
_LOADIMAGE("image.jpg")
顯示影像。必須與 SCREEN、_NEWIMAGE 和 _PUTIMAGE 命令一起使用。
示例
DIM rabbit AS LONG SCREEN _NEWIMAGE(800, 600, 32) rabbit = _LOADIMAGE("rabbit.jpg") _PUTIMAGE (100,100), rabbit
DO [Program] LOOP UNTIL [condition]
用於在程式中建立迴圈。此命令在迴圈開始後檢查條件。它與 DO 命令一起使用。
LPRINT [statement or variable]
將文字列印到印表機。LPRINT 命令期望印表機連線到 LPT1(PRN) 埠。如果印表機沒有連線到 LPT1,QBasic 會顯示“裝置故障”錯誤訊息。
如果您的印表機連線到 COM 埠而不是 LPT 埠,請使用 MS-DOS MODE 命令將列印從 LPT1 重定向到 COMx(例如,要重定向到 COM1,請使用以下命令
MODE LPT1=COM1
如果您需要在完成後取消重定向,請使用以下命令
MODE LPT1
a$=MID$(string$,start%[,length%]) MID$(string$,start%[,length%])=b$
在第一個使用中,a$ 被設定為從字串中取出的子字串,從字元 start% 開始,取 Length% 個字元。如果省略 length% ,則取行的其餘部分(即 start% 和所有右側的字元)。
在第二個使用中,string$ 的 length% 個字元被 b$ 替換,從 start% 開始。如果省略 length% ,則替換行的其餘部分(即 start% 和所有右側的字元)。
另請參閱 LEFT$ RIGHT$ LEN
a MOD b
返回 a 除以 b 的整數除法的餘數。
例如,10 MOD 3 返回 1
_NEWIMAGE 用於將長變數設定為螢幕尺寸,或者可以與 SCREEN 命令(請參閱附錄的後面部分)一起使用來直接設定螢幕詳細資訊。它非常有用,因為您可以放大具有 RGB 顏色設定的 SCREEN 模式“13”,如果您發現預設大小太小。
語法:_NEWIMAGE(width,length,screen_mode)
- width 和 length 是長變數,而 screen_mode 是您想要更改的螢幕模式格式。
像,
_NEWIMAGE(1000,1000,24),256
其中,256 是顏色數量
它也用於為要放置的影像(首先使用 LOADIMAGE 載入它)準備視窗螢幕表面。
OPEN "[(path)\8.3 file name.ext]" (FOR {INPUT/OUTPUT} AS #{n})
這將開啟一個檔案。您必須提供 DOS 檔名,例如
OPEN "data.txt" FOR INPUT AS #1
以資料流 #1 的形式開啟現有的檔案 data.txt 進行讀取。由於沒有指定路徑,因此該檔案必須與 QBasic.exe 位於同一個資料夾中 - 否則,處理將因“找不到檔案”錯誤而停止。
OPEN "C:\TEMP\RUN.LOG" FOR OUTPUT AS #2
以資料流 #2 的形式開啟名為 RUN.LOG 的空檔案,該檔案位於 C:\TEMP 資料夾中。任何同名檔案都將被替換。
PALETTE[palette number, required colour]
僅限於 VGA(SCREEN 模式 13),將調色盤條目設定為新的 RGB 顏色。調色盤編號必須在 1-256 範圍內。所需的顏色是從 (required Blue * 65536) + (required Green * 256) + required Red 的總和建立的長整數。
RANDOMIZE TIMER A = INT((RND * 100)) + 1
RANDOMIZE 將為 QBasic 的隨機數生成器設定種子。使用 QBasic 時,通常只使用 RANDOMIZE TIMER 來確保序列在每次執行時保持一致。
該示例是一個數學運算,用於從 1 到 100 獲取一個隨機數。
INT 代表整數,RND 代表隨機數," * " 代表隨機數的選擇範圍。 "+ 1" 只是為了確保選擇的數字是從 1 到 100,而不是 0 到 99。
注意:後續呼叫此函式不能保證相同的隨機數序列。
READ AIM(I)
與 DATA 命令結合使用,此命令允許 QBasic 讀取資料。 這主要用於處理大型資料,如點陣圖。
REM {comments}
' {comments}
當直譯器遇到 REM 或 " ' " (單引號) 作為一行的開頭時,該行的其餘部分將被忽略。
RETURN
表示子程式的結束
RANDOMIZE TIMER A = INT((RND * 100)) + 1
RND 將提供 0 到 1 之間的隨機數。
此示例是一個數學運算,用於獲取 1 到 100 之間的隨機數。 RANDOMIZE TIMER 將初始種子設定為唯一的序列。 INT 代表整數,RND 代表隨機數," * " 代表隨機數的選擇範圍。 "+ 1" 只是為了確保選擇的數字是從 1 到 100,而不是 0 到 99。
在內部,種子是一個 24 位數,以以下方法迭代:rnd_seed = (rnd_seed*16598013+12820163) MOD 2^24
PLAY "[string expression]"
用於在 PC 揚聲器上播放 QBasic 中的音符和樂譜。 音調由字母 A 到 G 表示。 變音符號用 "+" 或 "#" (升調) 或 "-" (降調) 表示,緊跟在音符字母之後。 請參見此示例
PLAY "C C# C C#"
字串表示式中的空格將被忽略。 還有一些程式碼用於設定持續時間、八度音階和速度。 它們不區分大小寫。 PLAY 按字串中出現的順序執行命令或音符。 任何更改屬性的指示器都對該指示器之後的音符有效。
Ln Sets the duration (length) of the notes. The variable n does not indicate an actual duration
amount but rather a note type; L1 - whole note, L2 - half note, L4 - quarter note, etc.
(L8, L16, L32, L64, ...). By default, n = 4.
For triplets and quintets, use L3, L6, L12, ... and L5, L10, L20, ... series respectively.
The shorthand notation of length is also provided for a note. For example, "L4 CDE L8 FG L4 AB"
can be shortened to "L4 CDE F8G8 AB". F and G play as eighth notes while others play as quarter notes.
On Sets the current octave. Valid values for n are 0 through 6. An octave begins with C and ends with B.
Remember that C- is equivalent to B.
< > Changes the current octave respectively down or up one level.
Nn Plays a specified note in the seven-octave range. Valid values are from 0 to 84. (0 is a pause.)
Cannot use with sharp and flat. Cannot use with the shorthand notation neither.
MN Stand for Music Normal. Note duration is 7/8ths of the length indicated by Ln. It is the default mode.
ML Stand for Music Legato. Note duration is full length of that indicated by Ln.
MS Stand for Music Staccato. Note duration is 3/4ths of the length indicated by Ln.
Pn Causes a silence (pause) for the length of note indicated (same as Ln).
Tn Sets the number of "L4"s per minute (tempo). Valid values are from 32 to 255. The default value is T120.
. When placed after a note, it causes the duration of the note to be 3/2 of the set duration.
This is how to get "dotted" notes. "L4 C#." would play C sharp as a dotted quarter note.
It can be used for a pause as well.
MB MF Stand for Music Background and Music Foreground. MB places a maximum of 32 notes in the music buffer
and plays them while executing other statements. Works very well for games.
MF switches the PLAY mode back to normal. Default is MF.
PRINT [Argument] [,or;] [Argument]...
將文字顯示到螢幕上。 引數可以是字串文字、字串變數、數字文字或數字變數。 所有引數都是可選的。
PRINT #[n] [,or;] [Argument]...
將資料儲存到 'OPEN FOR OUTPUT AS #[n]' 的檔案中,或者我們可以使用 ? 符號用於列印命令
PSET ([X coordinate],[Y coordinate]), [Pixel Colour]
此命令顯示畫素,可以一次顯示一個畫素,也可以一次顯示一組畫素。 為了使命令生效,程式中必須包含 SCREEN 命令。
SCREEN [Screen Mode Number]
此命令用於在螢幕上顯示圖形。 根據您想要的解析度,QBasic 中可以使用十種主要型別的螢幕模式。 以下列出了您可以選擇的螢幕模式
SCREEN 0:文字模式,不能用於圖形。 這是文字程式執行的螢幕模式。
SCREEN 1:320 x 200 解析度。 四種顏色
SCREEN 2:640 x 200 解析度。 兩種顏色(黑白色)
SCREEN 7:320 x 200 解析度。 十六種顏色
SCREEN 8:640 x 200 解析度。 十六種顏色
SCREEN 9:640 x 350 解析度。 十六種顏色
SCREEN 10:640 x 350 解析度。 兩種顏色(黑白色)
SCREEN 11:640 x 480 解析度。 兩種顏色
SCREEN 12:640 x 480 解析度。 十六種顏色
SCREEN 13:320 x 200 解析度。 256 種顏色。 (推薦)
注意。 在 SCREEN 13 中,您有一個包含 256 種顏色的調色盤。 調色盤由 Windows 預設,但是您可以使用 PALETTE 命令更改 RGB 值。
SEEK #[file number], 1
將 'input #' 指標重新定位到檔案的開頭。
SGN(expression yielding a numeric value)
生成值的“符號”,如果 < 0 則為 -1,如果為 0 則為 0,如果 > 0 則為 1
'SHELL' 命令用於在 Qbasic 中向命令提示符/Windows Shell 發出命令。 'Shell' 命令與包含任何上述軟體都理解的命令的字串一起使用。 字串中包含的命令與 MS-DOS 的命令很相似
示例:SHELL 可與 'DIR' 命令一起使用,以在某個資料夾或路徑中生成檔案目錄。
SLEEP [n]
執行暫停 n 秒
SOUND [frequency], [duration]
與 BEEP 命令不同,此命令從 PC 揚聲器發出可變頻率和持續時間的音訊。 頻率以赫茲為單位測量,範圍為 37 到 32767。 在頻率部分輸入這些數字中的一個。 持續時間為時鐘滴答,預設值為每秒 18.2 滴答。
將數字值轉換為文字(字串)字元
A$ = STR$(expression yielding a numeric value)
數字值將轉換為文字字元並放置到 A$ 中。 用於將數字轉換為文字字串。
警告。
1) 如果結果為正數,則會新增一個前導空格 (STR$(123) = " 123" 而不是 "123",正如預期的那樣)。 如果結果為負數,則不會用空格替換,而是用 '-' (減號) 替換,即 STR$(-123) = "-123" 而不是 " -123",正如預期的那樣 正數的行為。
2) 轉換小於 0.1 的浮點數 (mumb!, numb#) 時,字串值可能會以“科學計數法”呈現,使用“D”而不是“*10^” (例如“5.nnnnnnD-02”而不是“ .05nnnnnn”或“5.nnnnnn*10^-02”)。 只有在需要保留有效數字時才會發生這種情況 (因此 .03000000 呈現為“ .03”,而 .030000001 變成“ 3.0000001D-02”),再次可能不是您所期望的那樣。
另請參見 CHR$,用於將 ASCII 值轉換為字串字元。
另請參見 LEFT$、MID$、RIGHT$,用於從一行文字中提取子字串。
SYSTEM
.bas 退出,QBasic.exe 直譯器關閉,'控制' 傳遞到命令視窗 c:\ 提示符 (或呼叫 .cmd 指令碼的下一行等)。
注意!:這僅在您使用“/run”引數在命令提示符下啟動程式時有效! (例如:“Qbasic /run MyProg.bas”) 否則,Qbasic 假設您開啟程式是為了進行更改,因此“SYSTEM”會將您帶回到編輯器螢幕。
[Command] [variable] = [value] THEN GOTO [line command value]
與 GOTO 或 IF 條件命令結合使用。 它告訴計算機在滿足特定條件時該怎麼做。
[Command] [Variable] = [Value] TO [Value]
通常用於輸入多個變數。
FOR a = 400 TO 500 PRINT a NEXT a
此示例將列印從 400 到 500 的所有數字。我們無需分別宣告所有值,而可以一次性全部宣告。
USING "format";
用於格式化 PRINT 命令輸出的資料。通常情況下,QBasic 直譯器會將數字列印為 8 個字元,並在必要時新增前導空格。若要更改此行為,可以使用 USING 命令格式化輸出。例如...
IF n > 99 THEN PRINT #1, USING "###"; n; ELSE IF n > 9 AND n<=99
THEN PRINT #1, USING "0##"; n; ELSE PRINT #1, USING "00#"; n;
...將輸出從 0 到 999 的 n,並新增前導零。請注意 n 後面的 ';'。這意味著“不換行”,並且會導致下一個 PRINT #1 在逗號 (',') 之後直接新增資料(Qbasic 自動插入逗號而不是換行符)。
name=VAL([variable$])
將 [變數字串] 的內容轉換為數值,以便在計算中使用。如果 (name) 是 INTEGER 型別,則 VAL 向下取整。另請參見 STR$。
A$ = "2"
B$ = "3"
X = VAL(A$) + VAL(B$)
PRINT A$; " + "; B$; " ="; X
WHILE {NOT} [test condition is true]
[program code to execute]
WEND
測試條件,如果為真(或不為真),則執行 [程式] 程式碼,直到遇到 WEND,此時控制權返回到 WHILE 行。
WHILE NOT (EOF(1)) LINE INPUT #1, A$ PRINT #2, A$ WEND
當檔案 #1 未結束時,讀取每行完整內容並將其寫入檔案 #2。
與 FOR 和 DO 不同,無法從 WHILE 迴圈中 EXIT。

