中每个字符占1个字节。下面我们介绍一下如何定义变量应注意的事项。定义变量的方法大致有三种:
(1)用类型说明符定义变量
把类型说明符放在变量的末尾,可以定义不同的变量类型。其中“%”表示整型、“&”表示长整型、“!”表示单精度型,“#”表示双精度型,“$”表示字符串型。如:RESULT%、RESULT&、RESULT!、RESULT#、RESULT$等。
(2)用declare变量名AS类型格式来定义变量
其中的“declare”可以是DIM、COMMON、REDIM、SHARED或STATIC。“类型”可以是INTEGER(整型)、LONG(长整型)、SINGLE(单精度型)、DOUBLE(双精度型)、STRING(字符串型)或用户自定义的类型。例如:
DIM A AS LONG
是把A定义为长整型变量。
使用AS STRING子句可以说明变长字符串,也可以说明定义长字符串。变长字符串的长度取决于赋给它的字符串常量的长度。定长字符串的长度通过“*数值”来确定。比如:
DIM STRING1 AS STRING
DIM STRING2 AS STRING *6
记录类型可以使用TYPE语句定义,也可以使用记录类型定义变量。
[例3-3] 定义记录类型。
TYPE InventoryItem '记录类型名定义
Description AS STRING *20 '该数据项(域)为字符串型
Number AS STRING *10
Quantity AS LONG '该数据项(域)为长整型
Orderpoint AS LONG
END TYPE
DIM CurrentItem AS InventoryItem,
PreviousItem AS InventoryItem
为了程序的易读性和指定记录类型变量中的某个元素,需要使用“变量名.元素名”这样的格式。当使用AS子句说明了一个变量时,则变量的每次说明都必须使用AS子句。例如:
CONT MAXEMPLOYEES=300
DIM EmpNames(MAXEMPLOYES)AS STRING
COMMON EmpNames()AS STRING
……
(3)使用DEF type语句定义变量类型
格式:
DEF type[-字母][,字母[-字母]]……
其中的“DEF”是保留字;type是类型标志,它可以是INT、SNG、DBL、LNG或STR,分别表示整型、单精度型、双精度型、长整型和字符串型。注意在DEF和类型标志之间不要包含空格。其中的“字母”可以是英文字母的A~Z中的任意一个(不区分大小写)。例如:
DEFDBL L-P
其中,L、M、N。O、P都可以作为双精度变量而LIMIT、Number Pointer等也同样是双精度变是名。在类型说明语句中定义的字母可以作为该类型的变量名,而且以该字母开头的变量名,也对应那种类型的变量。
类型说明语句一般放在程序或模块的开头。当整个模块的变量都使用整型时,可以这样说明:
DEFINT A-Z
Quick BASIC在执行程序时只扫描一次文本,当变量在程序中出现时,它的类型就不再改变了。以上介绍了三种定义变量类型方法,表4-3列出了各种变量类型的定义方法和存储要求。
表4-3 各种变量类型的定义方法和存储要求
|
变量类型 |
类型说明符 |
AS type名 |
占用内存(字节) |
|
整型 |
% |
INTEGER |
2 |
|
长整型 |
& |
LONG |
4 |
|
单精度型 |
! |
SINGLE |
4 |
|
双精度型 |
# |
DOUBLE |
8 |
|
变长字符串 |
$ |
STRING |
实际字符个数 |
|
定长字符串 |
$ |
STRING*NUM |
NUM |
在定义变量类型时,我们应当注意:
n 变量名相同但类型说明符不同时,所表示的是不同的变量,如ZH%、ZH&、ZH#是三个不同的变量。
n 当一个变量没有类型说明符时,将默认是单精度变量。
n 在实际应用中,应当根据需要设置变量的类型。但应在达到自己目的情况下尽量节约内存空间,以提高处理速度。
n 类型说明符(%、&、!、#、$)总比DEF type语句优先起作用。
Quick BASIC的运算符大致可以分为算术运算符、关系运算符、逻辑运算和字符串运算符。下逐一介绍各运算符及其运算规则。
Quick BASIC的算术运算符主要有加法、减法、乘法、除法、整数除法、浮点除法、取模、取负和指数等,表4-4中列出了各算术运算符及其在运算中的优先级(由高到低)。
因为我们对于Quick BASIC的算术运算已经很熟悉了,在这里我们只向读者介绍整数除法与取模运算。
当操作数带有小数时,首先被四舍五入为整数或长整数,然后再进行整除运算。但操作数必须在-21417483648.5到+2147483647.5的范围内,其运算结果被截断为整数(INTEGER、LONG)不进行舍入处理。例如:
X=14\6
Y=68.56\3.47
运算的结果X为2;Y值的运算首先将68.56变为69,再把3.47变为3后进行整除,结果为23。
表4-4 算术运算符及在运算中的优先级
|
含义 |
运算符 |
表达式举例 |
|
指数 |
^ |
a^b |
|
取负 |
- |
-a |
|
乘法 |
* |
a*b |
|
浮点除法 |
/ |
a/b |
|
整数除法 |
\ |
a\b |
|
取模 |
MOD |
a MOD b |
|
加法 |
+ |
a+b |
|
减法 |
- |
a-b |
取模运算的结果是一个整型数值,此值为整数除法的余数。例如:
X=8 MOD 3
结果为2。
Y=26.782 MOD 4.586
的结果为1(首先将26.482变为26,再将4.586变为5,然后进行26/5运算结果为5余1,所以结果为1)。
在Quick BASIC中,关系运算可以进行对象的大小比较,使用关系运算符既可以进行数值的比较,也可以进行字符串的比较。有关Quick BASIC中的关系运算符及其含义见表4-5所示。数值比较一般是对两个算术表达式的值进行比较。例如:
a+b>c/d
如果a+b的值大于c/d的值,则表达式的值为真(-1),否则为假(0)。
在编程时,关系运算常常作为条件判断使用。
[例3-4] 关系运算作条件判断。
a=100
IF a<>100 THEN?"Not Equal"ELSE?"Equal"
END
因为a等于100,所以招待后输出“Equal”
表4-5 关系运算符及其含义列表
|
运算符 |
测试关系含义 |
a=b |
|
= |
相等 |
a=b |
|
< >或>< |
不相等 |
a< >b或a><b |
|
< |
小于 |
a<b |
|
> |
大于 |
a>b |
|
<= |
小于或等于 |
a<=b |
|
>= |
大于或等于 |
a>=b |
逻辑运算一般用逻辑运算符连接两个或多个关系式,组成一个布尔表达式,其结果也为一个逻辑值。在Quick BASIC中的逻辑运算符主要包含:
NOT 逻辑非 XOR 异或
AND 逻辑与 EQV 等价
OR 或 IMP 蕴含
逻辑运算的规则如表4-6所示: