QBASIC是BASIC(Beginner's All-purpose Symbolic Instruction Code,初學者通用指令代碼)語言的壹個變種,由美國微軟公司開發,1991年隨MS-DOS 5.0推出。它不能被編譯成獨立的可執行文件,源代碼在集成開發環境(IDE)中先被編譯成中間代碼,然後中間代碼在IDE中被解釋執行。它被設計用來代替GW-BASIC,並被集成在MS-DOS 5.0及其更高版本(包括Windows 95)中。QBASIC基於微軟稍早推出的QuickBASIC 4.5,但去掉了後者的編譯和連接部分。
Basic語言是計算機高級語言的壹種,它簡單、易學、好用,被廣大計算機用戶所青睞。Basic語言的表達式與數學中的表達式相似,語句與自然語言相仿,極容易被初學者掌握,而Basic語言的最新發展Visual Basic 6.0、7.0,其友好的可視化編程界面、強大的面向對象編程能力及其網上發行和網上查詢的功能,不僅能使用戶方便而輕松地編寫出具有任何功能的應用程序,而且更好地適應了網絡時代的到來。
微軟在較新版本的Windows中不再集成QBASIC。不過Windows 98的用戶可以在光盤的\TOOLS\OLDMSDOS目錄中找到它,在Windows 95的光盤中,它存放在\OTHER\OLDMSDOS目錄中。微軟網站對它的技術支持只對MS-DOS的授權用戶有效。
QBASIC擁有壹個值得稱道的集成開發環境和壹個功能強大的集成調試器,這壹切在那個時代讓人耳目壹新。直到今天,QBASIC依然是許多面向初學者的編程書籍的主題。
[編輯本段]語法
和Quick BASIC類似而又不同於微軟其他BASIC的早期實現版本的是,QBASIC是壹種結構化的編程語言。和GW-BASIC相比,QBASIC的主要改進是:
擴充了變量和常量的類型
變量名長度:40個字符
增加了長整型、定長字符型變量
可定義數值常量、字符串常量
提供了新的選擇結構
條件語句
IF <條件> THEN <語句組1> ELSE <語句組2>
多分支語句SELECT
改進了循環結構
增加以下兩個循環語句:
WHILE循環
WHILE <條件>
<循環體>
WEND
DO循環
DO WHILE <條件> <循環體> LOOP
子程序和函數作為單獨的模塊
不需要行號
代碼示例(賦值,求和運算,並顯示結果)
LET A=10
LET B=20
LET C=A+B
PRINT C
在編寫程序時為了節省時間,可以不用寫LET;並且,PRINT在編寫程序時直接用“?”代替。有壹點非常重要,在參加競賽時,程序第壹行必須是CLS!
[編輯本段]快捷鍵
F5:運行程序(其功能等於run)及繼續運行被中斷的程序;
Ctrl+Break:中斷正在運行的程序;
Shift+F5:從第壹條語句開始重新運行程序;
F4:當程序中斷運行時,查看運行結果屏幕,再按壹次F4則切換回代碼屏幕;
F1:獲得幫助。
F2:切換主程序或SUB、FUNCTION。
[編輯本段]範例
範例1:
菜場上壹公斤香菇是7.5元,編壹個程序,從鍵盤上輸入重量,計算機自動算出其總價
INPUT X
SUM=7.5*X
PRINT SUM
END
範例2:
賣西瓜,10千克以下每千克1.4元,10千克以上每千克0.7元,輸入要買多少千克(必須為自然數),輸出需要多少錢。
INPUT X
IF X<>FIX(X) THEN ? "NO":GOTO 1
IF X>10 THEN SUM=10*1.4+(X-10)*0.7 ELSE SUM=X*1.4
PRINT SUM
END
範例3:
輸入10個字母,比較大小,輸出最大的壹個
DIM A$(10)
FOR I=1 TO 10
INPUT A$(I)
NEXT I
B$=A$(1)
FOR I=2 TO 10
IF B$<A$(I) THEN B$=A$(I)
NEXT I
PRINT B$
END
上面的那些程序都太水了,我在此編了壹個超長的畫圖程序:
DRAWTOOL.BAS
CLS
DO
SCREEN 1
SCREEN 0
PRINT TAB(16); "Draw tool"
PRINT STRING$(40, "*")
PRINT "Help:"
PRINT "Press highlighted letter."
FOR I = 1 TO 8
READ S$, S
GOTO PrintHLWord
PrintHLWordBack:
NEXT I
RESTORE
DATA "HorizontalBAR", 1, "UprightBAR", 1, "CrossBARs", 1, "BiasBAR1", 8
DATA "BiasBAR2", 8, "DiagonalBARs", 1, "DiffuseBARs", 2, "Exit", 1
ElseKey:
K$ = INPUT$(1)
SELECT CASE UCASE$(K$)
CASE "H"
GOTO HorizontalBAR
HorizontalBARBack:
CASE "U"
GOTO UprightBAR
UprightBARBack:
CASE "C"
GOTO CrossBARs
CrossBARsBack:
CASE "1"
GOTO BiasBAR1
BiasBAR1Back:
CASE "2"
GOTO BiasBAR2
BiasBAR2Back:
CASE "D"
GOTO DiagonalBARs
DiagonalBARsBack:
CASE "I"
GOTO DiffuseBARs
DiffuseBARsBack:
CASE "E"
END
CASE ELSE
GOTO ElseKey
END SELECT
LOOP
END
PrintHLWord:
IF S = 1 THEN
COLOR 15
PRINT LEFT$(S$, 1);
COLOR 7
PRINT MID$(S$, 2)
ELSE
COLOR 7
PRINT LEFT$(S$, S - 1);
COLOR 15
PRINT MID$(S$, S, 1);
COLOR 7
PRINT MID$(S$, S + 1)
END IF
GOTO PrintHLWordBack
HorizontalBAR:
SCREEN 1
FOR I = 1 TO 200
PSET (I, 100)
DO: LOOP WHILE INKEY$ = ""
NEXT I
SCREEN 0
GOTO HorizontalBARBack
UprightBAR:
SCREEN 1
FOR I = 1 TO 200
PSET (100, I)
DO: LOOP WHILE INKEY$ = ""
NEXT I
SCREEN 0
GOTO UprightBARBack
CrossBARs:
SCREEN 1
FOR I = 1 TO 200
PSET (I, 100)
PSET (100, I)
DO: LOOP WHILE INKEY$ = ""
NEXT I
SCREEN 0
GOTO CrossBARsBack
BiasBAR1:
SCREEN 1
FOR I = 1 TO 200
PSET (I, I)
DO: LOOP WHILE INKEY$ = ""
NEXT I
SCREEN 0
GOTO BiasBAR1Back
BiasBAR2:
SCREEN 1
FOR I = 1 TO 200
PSET (I, 200 - I)
DO: LOOP WHILE INKEY$ = ""
NEXT I
SCREEN 0
GOTO BiasBAR2Back
DiagonalBARs:
SCREEN 1
FOR I = 1 TO 200
PSET (I, I)
PSET (I, 200 - I)
DO: LOOP WHILE INKEY$ = ""
NEXT I
SCREEN 0
GOTO DiagonalBARsBack
DiffuseBARs:
SCREEN 1
FOR I = 1 TO 200
PSET (I, 100)
PSET (100, I)
PSET (I, I)
PSET (I, 200 - I)
DO: LOOP WHILE INKEY$ = ""
NEXT I
SCREEN 0
GOTO DiffuseBARsBack
路程圖:
CLS
輸入
計算
輸出
END
QBASIC下載地址:
4.0版/irrwd/download/program/vb/qb40.zip
4.5版/development/linetools/qb45.zip
4.0版的地址中有許多QB程序例子,比如SINEWAVE.BAS,可以畫出正弦波。