QBASIC語言的數據類型
QBASIC語言的數據是QBASIC程式的處理基礎和運算對象。能夠熟練掌握QBASIC語言的數據類型、形態和運算特點,是正確使用 QBASIC語言行程式設計的基礎。
1、QBASIC語言的數據類型
QBASIC程式所處理的數據基本類型有數值型數據和字元型數據。QBASIC語言的數據類型分類如右圖所示。
2、QBASIC語言的數據形態
QBASIC語言的數據形態,也有常數、常量、變數、函式、表達式五種;但是,不同類型的 QBASIC數據,有各自不同的表現形態。常數是其他各種形態的取值基礎。
3、QBASIC語言的數據運算
QBASIC語言中的運算量有常量、變數、數組和數組元素、標準函式和自定義函式等。對數值型數據可以進行加、減、乘、除等數值運算,得到的結果也是數值型的。
除數值運算外,還有非數值運算,例如建立職工檔案、查找職工姓名等,這時 QBASIC程式處理的就是非數值型數據。最常見的非數值型數據就是字元型數據。
常量和變數
常量
常量是指在程式執行過程中,其值永遠不能改變的數據。例如 5.4、10.3、2等都是常量。在 QBASIC語言中有兩種類型的常量:數值常量和字元串常量。
1、數值常量
數值常量又包括整型常量和實型常量兩類。
(1)整型常量
整型常量只包括阿拉伯數字(0~9),不能在數字之間出現分位符號。如-54、+32等都是合法的QBASIC整型常量;而12,000,45,698,-56,000等都是不合法的QBASIC整型常量。
整型常量又分為常規整型(簡稱“整型”)常數和長整型常數兩種。
“整型”常數是指取值範圍在-32768~32767之間的整數或該範圍內帶有後綴“%”的數。存儲時“整型”常量占2個字元。例如:333、453%等。
注意:在 QBASIC語言中,帶有後綴“%”的“整型”常量與數學中常用的百分數的表示方法是不同的。比如百分之三十,在QBASIC語言中只能表示成0.3 或 30/100。
長整型常量是指取值範圍為-2147483648~2147483647 之間的整數或該範圍內帶有後綴“&”的數。存儲時長整型常量占4個字元。例如:4400、14525&等。
有後綴“&”的數。存儲時長整型常量占4個字元。例如:4 400、14 525&等。
(2)實型常量
QBASIC語言中的實數有單精度實型和雙精度實型兩種,它們分別又分為兩種:日常計算法和科學計算法。
① 單精度實型和雙精度實型常量。單精度實型常量指不超過7位有效數字的小數或該範圍內帶有後綴“!”的數或以科學計算法(“E”或“e”為底的)表示的浮點數,存儲時占 4個位元組。例如:3.45、333.34、645.23!、33e2 等。
雙精度實型常量指達到15位有效數字的小數或該範圍內帶有後綴“#”的數或以科學計算法(“D”或“d”為底的)表示的浮點數,存儲時占 8 個位元組。例如:134 345 143.34、343 525 000#、343.d23等。
② 單精度實型和雙精度實型常量用指數形式表示的規則。在QBASIC語言中,一個指數形式表示的常量由數字部分和冪數部分(指數部分)組成。
QBASIC語言規定,指數部分(冪數部分)應由三個部分組成。
① 字母“E”或“e”或“D”或“d”。
② 指數的符號“+”或“-”(“+”可以省略)。
③ 不超過3位的整數。
如,123456E-2,8764.23785D+306 是合法的,而4.6E3.5,-7654321D -6.3是不合法的。
(3)類型區分方法
在程式中出現常數時,QBASIC語言區分方法如下:
① 凡範圍在-32768(即-2 )~32767(即2 -1)之間且不帶小數點的或該範圍內後綴為“%”的常數均作為“整型”常數。
② 凡範圍在-2147483648(即-2 )~2147483647(即2 -1)的範圍之間不帶小數的或該範圍內後綴為“&”的常數,作為“長整型”常數對待。
③ 單精度浮點型常數。
●不超過7位且帶小數點的常數。
●末尾加“!”的不超過7位數字的十進制小數。
●用“E”或“e”表示指數部分的浮點實數。
④ 雙精度浮點型常數。
●多於7位且包含小數點的常數。
●末尾加“#”的常數。
●用“D”或“d”表示指數部分的浮點實數。
2、字元串常量
由一對雙引號括起來的零個或多個合法字元(通常為ASCII字元)稱為字元串常量。例如〞CHINA〞,〞QBASIC〞,〞DOS 6.0〞等都是合法的字元串常量。注意,〞〞為空串,而〞 〞為含一個空格字元的字元串常量,兩者是不同的。字元串常量在書寫時,兩端的雙引號不可省略,而在輸出時兩端的雙引號並不輸出。例如,PRINT〞QBASIC〞的結果為QBASIC。
3、符號常量
符號常量就是用一個符號代替一個常量。在QBASIC語言中,常用CONST語句來定義符號常量。使用符號常量有三個優點:
① 程式的可讀性好。符號常量用的符號應該“見名知義”,使人閱讀程式時容易了解該常量是什麼含義。
② 便於程式的修改。如果程式多處用到某一常量,若不用符號常量,修改時容易漏改,而用符號常量便可以做到“一改全改”。
③ 便於程式的書寫。如果程式多處用到某一位數較多的常量時,書寫麻煩還容易出錯,而使用符號常量只在定義時書寫一次就行了。
變數
在QBASIC程式的執行過程中,其值可以改變的量稱為變數。
1、變數名
QBASIC 語言規定:變數名以字母打頭,由字母、數學、小數點和下劃線組成的,長度為1~40 個字元的字元串。變數名可以不區分大小寫(即大小寫字母等效)。
QBASIC 語言的保留字(如語句定義符和函式名等)不能作為變數名。必要時,變數的類型符可以寫在變數名的後面。在給變數命名時,應儘量做到“見名知義”。建議變數名最好不使用小數點,長度儘量不超過8個字元為宜。
每一個變數都在記憶體中占據一定的存儲單元。變數名實際上就是變數的地址符號,而變數的值就是以該變數名為符號地址的存儲單元的內容。
2、變數的類型
每一個變數都是用來存儲數據的,依數據的類型不同,變數也相應地分為不同的類型。就基本類型而言有,整型變數、長整型變數、單精度型變數、雙精度型變數、變長字元串型變數和定長字元串型變數。說明或定義變數類型的方法有兩種:
(1)變數名加類型符
用 %, &, !, #, $ 分別作為整型、長整型、單精度型、雙精度型和字元串型變數的類型字義符,如sum%,Fact&, price!,dou#,str$分別是整型、長整型、單精度型、雙精度型和字元串型變數。其中,規定單精度型變數的類型符可省略不寫,如X,A,B等都是單精度型變數,這種情況用得最多。另外,定長字元串型變數不能用加類型符的方法定義,只能用DIM語句定義。
(2)DIM語句定義類型
除了可以在變數名的末尾加類型定義符外,QBASIC 語言還提供另一種方法來指定變數的類型。它規定的類型名有:INTEGER(整型)、LONG(長整型)、SINGLE(單精度型)、DOUBLU(雙精度型)、STRING(字元串型)等。用DIM語句來指定變數的類型。
(3)說明
① 單精度型變數名可以有類型定義符“!”,也可以沒有。如X!和X兩者等價。
② 一個變數名末尾加上類型定義符後,該類型定義符就成為變數名的一部分,要整體引用。如 sum%是整型變數,如果不寫%而只寫 sum,則與sum%不是同一個變數,sum是實型變數。
③ 一個單(雙)精度常數在表示形式上有定點數形式與浮點指數形式之分;但單精度型變數沒有定點形式與浮點形式之分。在記憶體中一律以規範化的指數形式存儲。
④ 在寫程式時,應事先大致估計所用的數值變數的數值範圍,然後定義恰當的類型。
⑤ 字元串變數有兩種類型,可變長的和固定長度的。
標準函式
QBASIC 語言提供的標準函式包括數值函式、字元串函式和系統函式等。下表中列出了一些最常用的數值函式(或數學函式)。
函式 | 功能 | 說 明 |
SIN(x) | 正弦函式 | 自變數單位為弧度 |
COS(x) | 餘弦函式 | 自變數單位為弧度 |
TAN(x) | 正切函式 | 自變數單位為弧度。 |
ATN(x) | 反正切函式 | 函式值的單位為弧度 |
LOG(x) | 以e 為底的對數函式 | x 值應為正數 |
EXP(x) | 以e 為底的指數函式 | e≈2.71828 |
SQR(x) | 平方根函式 | x應大於或等於0 |
ABS(x) | 絕對值函式 | 例如ABS(-4)=4,ABS(4)=4 |
INT(x) | 得到一個不大於x的最大整數 | 例如 INT(-8.6)=-9,INT(8.6)=8 |
說明:
① 函式的自變數X是個形式參數,調用函式時要用實際參數代替形式參數。實際參數可以是一個常量、變數或表達式。
② 調用一個函式不能單獨作為一個語句,只是作為一個表達式或表達式的一部分。一個數學函式的值是一個數值,它可以參加運算。
運算符和表達式
QBASIC 語言的運算符分算術運算符、關係運算符和邏輯運算符,相對應的有算術表達式、關係表達式和邏輯表達式。
算術運算符和算術表達式
1、算術運算符
QBASIC語言的算術運算符有下面幾種
運算符 | 含義 | 舉例 |
+ | 加 | 4+3,結果為7 |
- | 減 | 6-3,結果為3 |
* | 乘 | 5*3,結果為15 |
/ | 除 | 5/4,結果為1.25 |
\ | 整除 | 5\4,結果為1 |
MOD | 求余 | 5MOD4,結果為1 |
^ | 乘方 | 2^4,結果為16 |
在混合運算時,按優先權從高到低順序如下:
^(乘方) → -(取相反數)→*(乘),/(除)→ \(整除)→ MOD(求余) →+(加),-(減)
對\,MOD,^三個運算符的說明:
① A^0 = 1,其中 0^0=1是對數學的補充定義。
② 0^B = 0(B>0)。
③ B為正整數時,A ^B =(A * A * … * A)(B個);B為負整數時,要求A≠0,A^B =1/(A * A * … * A)(|B|個)。
④ B為非零實數時,除了②以外,要求A>0:A^B = EXP(B * LOG(A))。對於\和MOD要求餘數的符號和被除數的符號相同。
2.算術表達式
表達式的基本概念是用運算符(可以使用括弧)連線運算量形成的式子。用算術運算符(可以使用括弧)連線數值運算量(包括常量、變數、函式等)形成的式子稱為算術表達式,其值是一個數值。在進行表達式運算時要注意各運算符的優先權順序。
關係運算符和關係表達式
1、關係運算符
QBASIC語言提供的關係運算符(又稱關係比較符)有如下六種:<(小於), >(大於),<=(小於等於), >=(大於等於),=(等於), < >(不等於)。關係運算符的優先權是相同的,即無先後次序可言。
2、關係表達式
關係表達式是指由一個關係運算符連線兩個算術表達式(或兩個字元串表達式)形成的式子。例如A+B>C; I<=B;B*B-4*A*C>=0都是合法的關係表達式。
所謂字元串表達式是指用字元串連線運算符“+”連線字元串量(包括字元串的常量、變數、函式和數組元素等)形成的式子。如,“SUB”,“ABC”+“CDE”,“A”+“student”。
關係表達式的值是一個邏輯值,即“真”或“假”。例如,3<5,9<>8,“ABC”=“ABC”的值均為“真”;3>5,9=8的值均為“假”。
在QBASIC語言中,沒有專門設定邏輯型常量和邏輯型變數,而是用數值來代表邏輯值。
規定以“0”代表“假”,以“-1”代表“真”。
邏輯運算符和邏輯表達式
1、邏輯運算符
QBASIC語言提供了3個邏輯運算符,按優先權從高到低如下:NOT(邏輯非)→AND(邏輯與)→OR(邏輯或)。NOT為一元邏輯運算符,AND和OR都是二元邏輯運算符。
2、邏輯表達式
一個邏輯表達式是用邏輯運算符連線關係表達式(或其他邏輯量)形成的式子。關係表達式是邏輯表達式的特例。
不同類型運算符的優先次序
通常同類型的數據進行運算,結果的類型不變。但關係運算不同,兩個數值量或兩個字元串經過關係運算後,結果是一個邏輯值。
一個邏輯表達式內可能包括算術運算符、關係運算符和邏輯運算符,這三類運算符的優先權從高到低為:算術運算符→關係運算符→邏輯運算符 。