QBASIC提供的数据类型Word文件下载.docx
《QBASIC提供的数据类型Word文件下载.docx》由会员分享,可在线阅读,更多相关《QBASIC提供的数据类型Word文件下载.docx(39页珍藏版)》请在冰豆网上搜索。
QBASIC中的常量
QBASIC程序处理的数据有数值型数据和字型符据两大类。
QBASIC中的运算量有常量、变量、数组和数组元素、标准函数和自定义函数等。
常量是指不能改变的数据。
例如2.8、-38、685都是常量,因为2.8就是2.8,不会变成别的数。
在QBASIC中,可以用两种类型的常量:
数值常量和字符串常量。
数值常量就是数学中常用到的常数,数值常量有整型常量和实型常量两类。
1.整型常数(即整数)
整数是由若干个数字组成的序列,可以有数值符号。
如-123,+456,-12345,+0,-0等都是合法的整数形式。
2.实型常量(即实数)
(1)日常记数法
即十进制小数形式。
由若干个数字组成序列,可以有小数点和数值符号。
例如:
2.9,-4.01等都是合法的QBASIC实数形式。
这种形式的实数又称为"
定点实数"
因为这些实数中的小数点的位置是固定的。
(2)科学记数法
即用指数形式表示一个实数。
用英文字母"
E"
(或"
e"
)来表%示以10为底的幂数。
例如654.321E0代表654.321×
100,65.4321E1代表65.4321×
101……
一个实数可以表示为多种指数形式,如654.321可以表示为6.54321E2,65.4321E1,654.321E0,上面这几种指数形式中小数点的位置不是固定的,所以称为"
浮点型实数"
QBASIC允许使用双精度实数类型。
单精度实数最多提供7位有效数字,而双精度实数可以达到16位有效数字。
单精度数用末尾带"
1"
符号的十进制定点表示,或用"
D"
代表指数的底。
如123456.7890123#和12.34567890123D4都是双精度实数。
("
与"
的含义相同)
请注意:
用指数形式表示一个实数时,指数部分由以下三部分组成:
①字母"
;
②指数的符号(正数也可以省略"
+"
号);
③不超过3位的整数。
计算机是以不同的形式和字节数来存放整数、单精度占2个字节,占4个字节双精度数。
在程序中怎样区分数据的类型呢?
①凡范围在-32768~32767之间且小数点的常数均作为整数对待。
%"
作为整型数的符号。
%②对于超过-32768~32767范围而在-2147483648(即-2#31$~%2147483647(即2×
31-1)的范围之间不带小数点的常数,作为"
长整型常量"
也可以加一个"
&
符号以标明"
是一个长整型"
用一个双撇号("
)括起来的若干个合法字符称为字符串常量。
例如"
Name"
Hello!
,等都是合法的字符串常量,应说明的是:
字符串量不包括双撇号本身。
双撇号只是字符串的"
定界符"
,表示字符串的起止限界。
用一个符号代替一个常量,用来表示在程序中多次用到的同一数据,例如,圆的半径π=3.1416用CONST语句来定义符号常量:
CONSTpi=3.1416则程序中的3.1416都可以用pi来代替。
例:
使用符号常量
CONST
pi=3.1416
r=5
length=2*pi*r
area=pi*r*r
volume=4/3*pi*r*r*r
PRINT"
length="
;
length,"
area="
area,"
volume="
volume
END
运行结果如下:
length=31.416area=78.54volume=532.6
如果需要计算精度提高,使pi=3.14159,则只须将此程序第一行改为:
CONSTpi=3.14159即可,其余各行中的符号常量pi都会自动改为3.14159。
QBASIC中的变量
在程序执行过程中,其值可以发生变化的量称为变量。
每一个变量都应该有一个名字,即变量名。
在同一程序模块中,不能有两个同名的变量,也就是变量名必须是唯一的。
/1.QBASIC对变量名有以下规定:
①变量名的第一个字符必须是字母;
②变量名中第2个字符及其后的各字符可以是字母、数字或小数点;
③变量名的长度范围为1~40个字符;
④表示变量类型的符号(如%、!
、#、&
、$)应作为最后一个字符;
⑤不应该用QBASIC的保留字作为变量名使用(如语句定义符和函数名等均属保留字,QBASIC保留字见附录);
⑥大小写字母等效;
⑦变量名中不可有空格。
/2.变量的类型
1).在变量名的末尾加类型定义字符
分别用%、&
、!
、#、$作为整型、长整型、单精度实型、双精度型、字符串型变量的类型定义符。
2).用DIM语句和类型名来指定变量的类型
QBASIC还提供另一种方法来指定变量的类型。
它规定了一些类型名:
INTEGER(整型)、LONG(长整型)、SINGLE(单精度型)、DOUBLE(双精度型)、STRING(字符串型)。
用DIM语句来指定变量属于上述几种类型之一。
例如:
DIMtotalASLONG
表示指定变量total为长整型变量。
注意用DIM语句定义变量的类型时不能加类型定义符。
运算符和表达式
QBASIC有三类运算符:
①算术运算符,用来进行算术运算;
②关系运算型,用来比较两个运算量的大小;
③逻辑运算符,用来进行逻辑运算。
与此相应,有三种表达式,即算术表达式,关系表达式和逻辑表达式。
/1.算术运算符
QBASIC的算术运算符有下面几种
运算符含义:
+加,-减,*乘,/除,\整除,MOD求余,^乘方
①"
\"
,是整除。
如果参加运算的量(除数或被除数)是实数,则先按四舍五入原则变成整数,然后相除取商的整数部分。
②MOD的作用是求两个整数相除后的余数。
如果参加运算的量为实数,则先按四舍五入变成整数,再相除求余。
③^是乘方运算符。
2^3就是算术中的2#3$。
用QBASIC运算符和括号将若干运算量(包括常量、变量、函数、数组元素等)连接起来的式子称为QBASIC表达式。
如果参加运算的是数值型数据,则为算术表达式,其值是一个数值。
在一个表达式中可能包括多个运算符,按以下规则优先顺序:
①正负号最优先,它是"
单目运算符"
②先乘除,后加减;
③乘方优先于乘除;
④函数优先于加减,但次于乘除;
⑤可以用括号改变以上优先顺序,括号最优先。
/2.不同类型数据的混合运算
QBASIC规定:
同类型的数据互相运算,结果值的类型不会变。
整型数据与实型数据互相运算,其结果为实型。
整型与长整型运算的结果为长整型。
单精度与双精度运算的结果为双精度型。
注意:
数值型数据与字符串型数据不能进行混合运算。
QBASIC基本程序设计结构
QBASIC提供了顺序结构、选择结构和循环结构三种基本程序设计结构。
一个顺序结构中的各部分是按出现的先后次序执行的。
最基本的顺序结构是由一些非控制转移语句组成的。
LETa=6:
b=8:
h=4
LETs=(a+b)*h/2
PRINTa,b,h,s
END就是一个顺序结构,而下面的程序段就不是顺序结构,因为它反复执行第1至第3行,存在控制转移。
FORk=1TO10
sum=sum+k*k
NEXTk
END?
赋值语句(LET语句)
/1.赋值语句的一般格式
赋值语句的一般格式为:
[LET]变量名=表达式方括弧[]内的部分是"
可选项"
变量名"
,可以是数值变量,也可以是字符串变量。
表达式"
可以是数值型表达式或字符串表达式。
但变量的类型应与表达式的类型一致。
/2.赋值语句的作用
赋值语句的作用是将一个数据赋予一个变量。
LETarea=SQR(s*(s-a)*(s-b)*(s-c))
可以看到,赋值语句有运算功能。
用LET语句求出的表达式的值是保留在变量内存中的,在程序中可以多次反复引用。
应该特别说明:
赋值语句中的"
="
,不是数学上的"
等于"
号,它是"
赋值号"
,其作用是将赋值号右边的值赋给它左边的变量。
/3.对变量的赋值操作
①数值变量的初始值一律为0,字符串变量的隐含初始值为"
空串"
,即不含任何字符,长度为0。
②一个变量在程序执行期间可以先后有多个不同的值,但在每一个瞬时一个变量只能有一个唯一的值。
赋值语句:
LETa=a+1
含义是:
将变量a的原值取出来,加上1,再送回到变量a中去。
③若将一个变量的值赋给另一个变量,前一变量的值保持不变。
④关于不同类型的数值数据问题。
如果被赋值的数值变量与右侧的数据属不同类型,则以赋值号的变量的类型为准。
下面举一例说明赋值语句的应用。
例交换两个变量的值。
LETa=4
LETb=5
a="
a,"
b="
b
LETc=a
LETa=b
LETb=c
运行结果为:
a=4b=5
a=5b=4
此例中,在实现a和b的值交换时,用了第三个变量c。
在QBASIC中有一个变量数值交换语句(SWAP语句)。
其格式如下:
SWAP变量名1,变量名2
其功能是交换两个相同类型的变量所存储是数据。
上例用此语句后变为:
SWAPa,b
END运行结果相同,但程序语句减少了两句。
输出语句(PRINT语句)
/1.PRINT语句的一般格式
PRINT语句的一般格式为:
PRINT(输出项表列)
所谓"
输出项表列"
,是指需要输出的数据项。
输出项可以是一个,或是多个,故称"
表列"
PRINT2.2341,123456789&
,3%,12345
arerage="
aver
PRINTSIN(x),COS(x)
Beijing"
"
Shanghai"
Chongqing"
以上4个PRINT语句都是合法的。
/2.PRINT语句的作用
1).输出数值计算的结果
可以用PRINT语句输出常数、数值变量、数学函数的值,PRINT语句有计算和输出的双重功能。
PRINT3*2^3*SPR(16)
输出结果为:
96
输出单精度和双精度数据。
LETsum!
=1.2345678#
LETsun#=1.23456789012345#
PRINTsum!
sum#
运行时输出如下:
1.2345681.23456789012345
由于sum!
是实型变量,只能容纳7位有效数字,故在最后一位四舍五入后输出1.234568,而sum#是双精度变量,可以容纳长达15~16位有效数字,故输出1.23456789012345。
2).输出字符串数据
用PRINT语句可以输出用户指定的字符串。
常用来输出带说明性的文字。
输出字符串。
Thetotalmoneyoffoodis:
80+75+91+56+63
输出为:
Thetotalmoneyoffoodis:
365
此例表明,可以在一个PRINT语句中既包含字符串,又包含数值数据。
3).输出系统中某些信息
QBASIC提供了一些系统函数,可以用PRINT语句输出有关信息。
PRINTTIME$,DATE$
运行输出如下:
2:
51:
1804-21-1998
注:
TIME$是"
时间函数"
,DATE$是"
日期函数"
/3PRINT语句的输出格式
1).按标准格式输出
QBASIC规定在屏幕输出时,每一行划分为5个标准输出区,每一区占14列,可显示14个字符。
如果在PRINT语句的输出表列中各输出项间以逗号分隔,即按标准格式将每一输出项从左到右依次输出到一个输出区中。
2).按紧凑格式输出
如果在各输出项间不以逗号分隔,而以分号分隔,则以"
紧凑格式"
输出。
如果输出项是字符串,则各输出项之间无间隔地连续输出。
连续输出字符串。
This"
is"
a"
Qbasic"
porgram"
.
输出结果如下:
ThisisaQbasicprogram
ThisisaQbasicprogram.
可以看出,第一个PRINT语句,各个字符串之间无空格。
第二个PRINT语句,各个字符串在双撇号中自己设置空格,打印的各个字符串之间就有了所设置的空格。
如果用PRINT语句输出数值,且输出项之间用分号分隔,则在输出完一个数值后空一格,然后再接着输出一个数值。
例输出数值。
PRINT-1;
-2;
-3;
-4
PRINT1;
2;
3;
4
-1 -2 -3 -4
1 2 3 4
第一个PRINT语句,输出的均为负数,在-1与-2之间有一个空格,称为"
尾随空格"
,用来分隔两个数值。
第二个PRINT语句,输出的均为正数,则符号位置留空,1与2之间共有2个空格。
其中一个是1的"
,另一个2的符号位(留空)。
3).用TAB函数控制输出位置和用SPACE$函数插入空格
除了标准格式输出和紧凑格式输出外,还可以用TAB函数控出输出位置,例如:
PRINTTAB(5);
BASIC"
TAB(5)的作用是:
使当前输出位置移到5列,从第5列开始输出"
4).在PRINT语句的末尾使用分隔符
如果PRINT语句末尾没有分号或逗号,则在输出完PRINT语句所指定的输出项后,自动换行。
如果结尾是逗号,下一个PRINT语句的输出项从本行下一个输出区接着输出,如果是分号,则以紧凑格式在本行接着输出,如果在PRINT语句中没有指出任何输出项,表示输出一个"
空行"
,这种PRINT语句称"
空PRINT语句"
键盘输入语句(INPUT语句)
QBASIC提供了一种"
键盘输入语句"
,即INPUT语句,它的特点是:
变量的值是在程序运行过程中由用户从键盘输入。
INPUT语句输出三种书的价格。
例用INPUT语句输出变量的值:
INPUTbook1,book2,book3
AVER=(book1+book2+book3)/3
average="
运行这个程序,屏幕上出现一个"
?
,它的意思是询问用户"
变量的值是什么?
,此时用户应输入3个变量。
程序运行情况如下:
28,18,26<
Enter>
输出结果:
average=24/有关INPUT语句,应注意以下几点:
①INPUT语句的一般格式:
INPUT[提示字符串{,|;
}]输出变量表列上面的一般格式中花括弧{}的含义是从其中的两项或多项中选一。
②执行INPUT语句时从键盘输入的数据的数目应与INPUT语句中变量的个数一致。
③从键盘输入的数据,只能常量,而不能是变量、函数或表达式。
④输入的数据之间用逗号分隔,不能用分号或空格作间隔符号。
⑤执行INPUT语句时的显示信息的输入的数据只在屏幕上显示而不能打印在纸上,如果想将执行INPUT语句时的信息保留下来,可以在程序中加入LPRINT语句。
读数语句(READ)和置数语句(DATA)s
READ语句的一般格式为:
ERAD变量表列
DATA语句的一般格式为:
DATA常量表列
在READ语句的各变量之间和DATA语句的各常量之间用逗号分隔。
READ语句是"
读数语句"
,它的作用是从DATA语句读入数据赋给READ语句中的变量。
/1有关READ语句和DATA语句的说明:
①READ和DATA语句是相辅相成互为依存的。
②在没有RESTORE语句的情况下,此时DATA语句中的数据只被读取一次,其数据个数不应少于READ语句中变量的个数。
③DATA语句可以放在程序中的任何位置。
④并不是一个READ语句对应一个DATA语句,可以有多个READ语句,也可以有多个DATA语句,READ语句顺序从DATA语句中读数。
因此,DATA语句中所置的数据总个数应不少于READ语句中变量的总个数。
⑤DATA语句中的数,只能是常量而不能是表达式(包括变量、函数),下面的DATA语句不合法:
DATA25/43,TAN(1/3),(5+6/7)*3/2恢复数据指针语句(RESTORE语句)
RESTORE语句的作用是使数据区的数据指针从当前位置返回到数据区的开头或某一DATA语句的开头,即恢复数据指针先前的位置。
RESTORE语句的一般格式为:
RESTORE[{行号|标号}]
RESTORE语句不仅能使指针恢复到初始位置,也能使指针恢复到某一个DATA语句的开头处:
在RESTORE语句中指定DATA语句的行号或标号。
例RESTORE语句使数据指针恢复到指定位置。
READa,b,c,d,e
RESTOREb
READf,g,h,i
RSTOREc
READj,k,m
RESTOREa
READn,p,q
PRINTa,b,c,d,e,f,g,h,i,j,k,m,n,p,q
a:
DATA1,2,3
b:
DATA4,5
c:
DATA6,7,8,9,10
三个DATA语句中的数据依次排列如图所示。
数据指针的初始位置如图①所示。
执行完第一个READ语句后,a、b、c、d、e的值为1、2、3、4、5。
指针移至②位置。
执行第一个RESTORE语句,该语句指定指针应恢复到标号为b的DATA语句的第一个数据(即数4)处,即将指针移到③位置,指针指向数4。
再读f、g、h、i,从③所指的数开始读,分别读得4、5、6、7。
指针称至④位置。
执行第二个RESTORE语句,使指针恢复到标号为c的DATA语句的第一个数据(即数6)处,指针移至⑤处,即指针指向数6。
下一个READ语句从⑤位置开始读数,j、k、m分别主动性是6、7、8。
指针移至⑥处,下一个RESTORE语句使指针恢复到标号为a的DATA语句的第一数处,即图中的①位置,再读n、p、q,n、p、q的值为1、2、3,指针移到位置⑦。
@q41!
所以,执行PRINT语句时输出:
1 2 3 4 5
4 5 6 7 6
7 8 1 2 3
结束语句(END语句)和暂停语句(STOP语句)
/结束语句(END语句)
END语句的作用是使程序结束运行。
END语句也可以放在程序中任何位置。
一个程序可以有一个以上的END语句,但运行程序时,只有一个起作用,即执行其中任一个END语句都使程序结束。
END语句的使用
a=3
b=5
c=2
p=b*b-4*a*c
IFp<0THENEND
x1=(-b+SQR(p))/(2*a)
x2=(-b-SQR(p))/(2*a)
x1="
x1,"
x2="
x2
程序中有两个END语句,一个内嵌在IF语句中。
IF语句的作用是:
若b2-4ac<0则使程序结束;
如果b2-4ac>0,则在计算和输出x1,x2后程序结束。
/2暂停语句(STOP语句)
STOP语句使程序暂停,而不是结束。
程序暂停执行后可以使其继续运行。
STOP语的使用。
STOP
x1=(-b+SQR(p))/(2-a)
x2=(-b-SQR(P))/(2*a)
按F5键使程序运行。
在计算出p的值之后,执行STOP语句使程序暂停。
此时可按F6键激活"
命令窗口"
结束语句(END语句)和暂停语句(STOP语句)即(immediate窗口),在该窗口内输入以下命令:
printp
此时命令窗口中状况如图所示。
-----------------Immediate----------------
------------------------------------------
在调试程序时可以在程序中设几个STOP语句,即设置若干个"
断点"
,使运行一段程序后暂停一下,检查已得到的数据是否正确,如无问题则继续运行,如有问题及时修改程序