quick basic

quick basic

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,但去掉了後者的編譯和連接部分。

現狀和特點


微軟在較新版本的Windows中不再集成QBASIC。不過Windows 98的用戶可以在光碟\\TOOLS\\OLDMSDOS目錄中找到它,在Windows 95的光碟中,它存放在\\OTHER\\OLDMSDOS目錄中。微軟網站對它的技術支持只對MS-DOS的授權用戶有效。
QBASIC擁有一個值得稱道的集成開發環境和一個功能強大的集成調試器,這一切在那個時代讓人耳目一新。直到今天,QBASIC依然是許多面向初學者的編程書籍的主題。

改進


和Quick BASIC類似而又不同於微軟其他BASIC的早期實現版本的是,QBASIC是一種結構化的編程語言。和GW-BASIC相比,QBASIC的主要改進是:
擴充了變數和常量的類型
變數名長度:40個字元
增加了長整型、定長字元型變數
可定義數值常量、字元串常量
子程序和函數作為單獨的模塊
不需要行號
註:Quick BASIC簡稱QB,是一種編譯型的語言;qbasic是一種解釋型的語言,和Quick BASIC擁有一樣的語法。同時,為了省時間,QBASIC中的PRINT 語句可以直接用?來代替。

常見語法


條件語句
行if語句: IF 條件 THEN 語句組 ELSE 語句組2
塊if語句
IF 條件 THEN
語句組
ELSE
語句組2
END IF
IF 語句還可如此運用
IF 條件 THEN
語句組
ELSEIF 條件 THEN
語句組2
END IF
多分支語句SELECT用法:
SELECT CASE 變數或字元串
CASE 情況1
語句組
CASE 情況2
語句組2
END SELECT
循環結構語句
1.計數循環
for 控制變數=初值 to 終值 'step語句可有可無,若沒有step語句,則步長為+1
語句體
next 控制變數
其格式有兩種:
(1)
WHILE 條件
循環體
WEND
(2)
DO WHILE 條件
循環體
LOOP
3.直到型循環
DO
循環體
LOOP UNTIL 條件
基本語句
CLS:即Clean the screen,清屏幕
輸入語句:input“顯示的內容”,變數名表
或者“,”改為“;”,改完之後輸入時會多出一個“?”
輸出語句:print “顯示的內容”,變數名表1,“顯示的內容”,變數名表2……
把,改為;時,兩個內容間空1格,否則空14格左右,最後不加分號為換行。
賦值語句 被賦值變數=表達式 'let 可有可無
一維數組的定義:dim 變數名(下標)
二維數組的定義:dim 變數名(下標1,下標2)
代碼示例(賦值,求和運算,並顯示結果)
A=10
B=20
C=A+B
Print C
END
變數
變數長度小於等於40,不允許出現關鍵詞,如Let
數:如15%、-32768、215654#、2.0158e+15、8.545646d+20、-18.75等,變數名為例如a的變數名
字元串:如“15%”、“abc”等,變數名為例如a$的變數名
補充:在QB中還可以幾何畫圖,具體用法如下(詳見QB內部幫助)
SCREEN 12'639*479 16色圖形模式
CIRCLE(100,150),10,4'在x坐標100與y坐標150處畫一個半徑為10的顏色為4(紅色)的圓。
SYSTEM
簡單的雙重循環在冒泡排序程序的運用
CLS
DIM n AS INTEGER
INPUT n
DIM a(n)
FOR i = 1 TO n
INPUT a(i)
NEXT i
FOR i = 1 TO n
FOR j=1 TO i-1
IF a(j) > a(j+1) THEN SWAP a(j), a(j+1)
NEXT j
NEXT i
FOR i = 1 TO n
PRINT a(i)
NEXT i
END
幾種常見的運算語句及函數
加運算:
AB之和=A+B
差運算:
AB之差=A-B
乘運算:
AB之積=A*B
除運算
AB商=A/B
乘方運算
A的B次方=A^B
開方運算
A開方=SQR(A)
交換變數
SWAP 值A,值B
初學者的練習題
1、輸入20個數,求出它們的最大值、最小值和平均值。
2、在1——500中,找出能同時滿足用3除餘2,用5除餘3,用7除餘2的所有整數;
3、如果一個數從左邊讀和右邊讀都是同一個數,就稱為迴文數,例如686就是一個迴文數?喑糖?000以內所有的迴文數。
4、已知數列1、5、12、22、35、...?求出第20個數
5、輸入一個大於1的整數,列印出它的素數分解式。如輸入75,則列印:"75=3*5*5"。
6、輸入10個正整數,計算它們的和,平方和;
7、輸入20個整數,統計其中正、負和零的個數;
8、輸出1——999中能被3整除,且至少有一位數字是5的數;
9、有一個六位數,其個位數字7,現將個位數字移至首位(十萬位),而其餘各位數字順序不變,得到一個新的六位數,假如新數為舊數的4倍,求原來的六位數。
10、有這樣的一個六位數字labcde,將其乘以3后變成abcdel,編程求這個數。
11、試找出6個小於160而成等差數列的素數。
1-1/3+1/5-1/7+……直到某一項的絕對值小於10的-6次方
附加:
我們用一個正整數列來表示一段地方的高度,當一段地方的高度為一個逐一上升的序列時,
我們稱它為一個階梯,例如 4、5、6、7、8 是一個長度為 5 的階梯。現在給定一個正整數列,
請找出它第一個最長的階梯,並將其輸出。如果一個階梯也沒有,輸出“No”。
運行結果示例:
請輸入數列的長度:8
請輸入數列:2 3 2 3 4 4 5 6
結果為 2 3 4

快捷鍵


Ctrl+C+Break:中斷正在運行的程序;
F5:運行程序;
Shift+F5:從第一條語句開始重新運行程序;
F4:當程序中斷運行時,查看運行結果屏幕,再按一次F4則切換回代碼屏幕;
F1:獲得幫助。
F9:斷點(同QB stop 語句,按F5繼續運行)

範例


【1】菜場上一公斤香菇是7.5元,編一個程序,從鍵盤上輸入重量,計算機自動算出其總價
INPUT X
zj=7.5*X
PRINT zj
END
【2】高精度乘法程序
CLS
INPUT a$
INPUT b$
la = LEN(a$)
lb = LEN(b$)
lc = la + lb
DIM a(la), b(lb), c(lc)
FOR i = 1 TO la
a(i) = VAL(MID$(a$, la + 1 - i, 1))
NEXT i
FOR i = 1 TO lb
b(i) = VAL(MID$(b$, lb + 1 - i, 1))
NEXT i
FOR i = 1 TO la
FOR j = 1 TO lb
x = a(i) * b(j): w = i + j - 1
c(w) = c(w) + x MOD 10
c(w + 1) = c(w + 1) + c(w) \ 10 + x \ 10
c(w) = c(w) MOD 10
NEXT j
NEXT i
DO WHILE c(lc) = 0
lc = lc - 1
LOOP
FOR i = lc TO 1 STEP -1
PRINT USING "#"; c(i);
NEXT i
END