460 likes | 888 Views
第二章 QBASIC 程序设计初步. 本 章 重 点. 掌握编制 QBASIC 程序的基本规则 掌握常量及变量的基础概念 在算术表达式中灵活使用标准函数 掌握 PRINT, LET, INPUT. BASIC 语言的发展 初期 BASIC(1964~70 初) 小型机上使用 多用户分时系统 编译方式 微机 BASIC(1975~80 年代中期) 在 ROM 中 解释方式 结构化 BASIC(80 年代中期) 三种基本结构 模块化 True BASIC 、Quick BASIC 、QBASIC. Visual BASIC(1991,MS)
E N D
本 章 重 点 • 掌握编制QBASIC程序的基本规则 • 掌握常量及变量的基础概念 • 在算术表达式中灵活使用标准函数 • 掌握PRINT, LET, INPUT
BASIC语言的发展 • 初期BASIC(1964~70初) • 小型机上使用 • 多用户分时系统 • 编译方式 • 微机BASIC(1975~80年代中期) • 在ROM中 • 解释方式 • 结构化BASIC(80年代中期) • 三种基本结构 • 模块化 • True BASIC 、Quick BASIC 、QBASIC
Visual BASIC(1991,MS) • for Windows • 用于开发Windows应用软件
QBASIC 源程序的构成 例:求方程ax2+bx+c=0的实根。 a=5,b=3,c=4 Let a=5:let b=3 let c=4 let d=b^2-4*a*c if d<0 then goto a let x1=(-b+sqr(d))/(2*a) let x2=(-b-sqr(d))/(2*a) print x1,x2 a:end • 由若干语句行组成 • 按执行顺序排列语句 • 程序以“END”结束 • 语句前可有“行标号” • 一个语句行可由多个 语句组成(:) • 语句 语句定义符 语句体
QBASIC语言的基本字符 • 英文字母 • 阿拉伯数字 • 符号 • 标点符号 • 类型说明符 • 算术运算符(+、-、×、/、\ 、) • 关系运算符(>、 < 、= 、>=、 <=、 <>) • 逻辑运算符(NOT、AND、OR)
QBASIC的常量与变量 整数 实数 数值常量 • 常量:其值在程序执行中总也不变的量 整 数:不带小数点 类型 表示方法 有效范围 字节 -32768~32767间的数 -32768~32767 2 整数 或上述之间末尾带% 不在整数范围而在 -231~231-1间的数 或末尾带& 长整数 4 -231~231-1
实 数:带小数点的数 实数记数法: • 日常记数法:定点实数 • 科学记数法:浮点实数 • 用E(或e)表示底数10 • 数字部分紧挨在E的左边,指数部分写在E的右边 • 正指数可以省略正号 • 指数部分不能用括号 • 不能省略数字部分
实数表示法:单精度和双精度 类型 表示方法 有效位数 有效范围 字节 定点 单精度 <=7位的小数 <=7位带 !的数 -9999999!~9999999! 4 7 单精度 浮点数 数字部分<=7位 底用E表示的指数 -3.402823E38 ~3.402923E38 7 4 定点 双精度 7位<小数<=15位 或末尾带 # 的数 15 8 双精度 浮点数 数字部分<=15位 底用D表示的指数 15 8
字符串常量:由双引号括起来的若干个字符 “QBASIC”,“A” • 符号常量:由CONST定义的符号 如: CONST pi=3.14159 LET r=10 LET l=2*pi*r LET s=pi*r*r PRINT l,s END 比较 pi 与 r 的使用方法, 各是什么量? 1.pi与r都可以被多次 引用 2.当要改变pi与r值时, 只需修改前两条语句 3.pi不能再次赋值,因 为它是常量。r可再次 赋值,因为它是变量。
变量:在程序执行过程中其值可变化的量 • 与常量不同的是变量占用一定的存储单元 • 变量有名字,称为变量名 • 变量名以字母开头,后跟字母或数字 • 变量名长度为 1~40 个字符 • 变量名中不能有空格 • 不允许用QBASIC的保留字作变量名 • 变量名中不计大小写 • 紧接变量名后可以带有表示变量类型的符号 如:a%,a!
用DIM语句指定变量类型 DIM 变量名 AS 类型名 • 变量名后面不能带有类型定义符 • 类型名: INTEGER LONG SINGLE DOUBLE STRING 例:DIM a AS INTEGER
例 age% 整 型: 2 字节 DIM age AS INTEGER a& 长整型: 4 字节 DIM a AS LONG rate , rate! 4 字节 单精度: DIM rate AS SINGLE sum# 双精度: 8 字节 DIM sum AS DOUBLE name$ 变长字符串: 实际字符个数 DIM name AS STRING 定长字符串: DIM code AS STRING *6 n
QBASIC 的标准函数 • 全部标准函数见附录3 • 常用数学函数见133页表2.3 • 不能随意造函数 • 自变量部分必须用圆括号括起来 • 自变量可以是常量、变量或表达式 • 三角函数的自变量应为弧度 例:sin(3.14/4)+sqr(x^2)-int(3/2)+abs(y)
标准函数 功 能 SIN(X) 求X的正弦值 X单位为弧度 CON(X) 求X的余弦值 X单位为弧度 SQR(X) 求X的平方根 ABS(X) 求X的绝对值 LOG(X) 求X的自然对数 EXP(X) 求e的X次幂
标准函数 功 能 INT(X) 求不大于X的最大整数 FIX(X) 取X的整数部分 SGN(X) 符号函数 1 当x>0 SGN(X)= 0 当x=0 -1 当x<0 RND(X) 产生(0,1)区间的一个随机数
算术表达式 QBASIC 的算术表达式 关系表达式 逻辑表达式 • 算术运算符 + 、- 、* 、/ 、\ 、MOD 、^ • 整除及取余时,分别将参加运算的两个量四舍五入为整数,再取商的整数部分或余数。 如: 7 \ 2 = 3 50.4 \ 2.6 = 16 82.27 mod 4.63 = 2
算术表达式 用算术运算符将常数、数值变量及数学函数连接起来的有意义的式子。 • 不要漏写乘号 “ * ” • 要用合法的变量名 • 所有字符写在一行上 • 只能使用圆括号
表达式举例 1/3 (x+y)^(1/3) b/(3*a) Sinπx+ln x sin(3.14*x)+log(x) (c+b)/(c+d) ex -cos350 exp(x)-cos(35*3.14/180)
括号 正负号 函数 乘方 乘除 整除 取余 加减 • 运算顺序 例: -2*sin(3.14/6) - 5 mod 3*4\5 5 2 1 6 3 4 7 8 结果:-2
不同类型数据的混合运算 • 结果为占内存较多的类型 • 单精度型与长整型占字节数相同,结果为双精度 • 数值型数据与字符串型数据不能进行运算
输出语句(PRINT) • 功能:用来在显示器上输出信息 • 格式:PRINT [输出项表列] • 各项之间以“,”或“;”间隔 • 输出项可以是:数值型或字符串型的常量、变量、函数或表达式 • “输出项表列”后面没有任何符号时,则输出指针换行到下一行的起始位置
PRINT 语句的作用 • 输出计算结果 例:输出-5及其绝对值、正弦值、立方值和其单精度值 • 原样输出字符串,具有说明或注释作用 例:求88,98,69,77的平均值 例:求3x+6y的值,其中x=3,y=7 • 数值型数据前面有一个符号位
PRINT 语句的输出格式 • 按标准格式输出 • 5个区,14列/区 • 输出项间以“,”分隔(例) • 一个PRINT语句有5个以上输出项时,则输出完5个项之后,到下一行第一个标准位置输出
按紧凑格式输出 • 输出项间以“;”分隔 • 输出项为数值时,前面有一个符号位,后面有一个“尾随空格” • 输出项为字符串时,前后没有符号位,即无间隔地输出。 • 在PRINT语句末尾使用分隔符 • 表示执行完本PRINT语句后,输出不换行,按标准或紧凑格式接着输出下一个PRINT的输出项。 • QB4-1,QB4-2,QB4-3
用TAB函数控制输出位置 • TAB(X) • 在X位置输出其后的输出项 • X可以是数值、赋了值的变量或算术表达式。 • X不能取负值,也不能超过每行的列数 • 一个PRINT语句中有多处用到TAB函数时,X的值应由小到大 • TAB函数与它的前后项之间用分号隔开 • QB4-4 • SPACE$函数 • LPRINT语句
第二节 赋值语句(LET) • 格式 [LET] 变量名=表达式 • 赋值语句的作用 • 运算功能 PRINT语句求出的表达式的值只能即时输出,不能再次引用。 LET语句求出的表达式的值保留在变量中,在程序中可以多次引用。 PRINT语句也有运算功能。这两种运算功能有什么区别呢?
LET语句使用说明 • LET中“=”的含义是赋值(赋值号) • 变量的类型应与表达式值的类型一致 LET A=3-1 LET B$=“BASIC” • 表达式中的变量没赋值时,如果是数值变量则为0,如果是字符串变量则为空串。 • 赋值号左边只能是变量,不能是表达式 LET 3=A:LET A+B=C
对同一个变量多次赋值时,其值为后一次得到的值对同一个变量多次赋值时,其值为后一次得到的值 A=9:A=10:A=2 • 不能用一个赋值语句连续赋值 A=B=C=8 • “=”两端类型不一致时,则以“=”左端的变量的类型为准。 LET A=1234.123456 单精度实型 双精度常数
结果为 4 • LET B%=3.645 • LET C&=12345 • LET D%= 12345678 • LET E#=1.12345 结果为 12345 溢出错误 结果为 1.1234 500 000 000 00
第三节 键盘输入语句(INPUT) • 格式 INPUT [提示串,|;]变量表列 • INPUT语句的作用 • 在程序运行过程中由用户从键盘输入数据。QB4-5 • INPUT语句的使用说明 • 变量表列中有多个变量时,变量之间用“,”分隔 INPUT a,b,c • 变量表列的末尾不能有符号 INPUT a,b,c, ×
INPUT “r=”;r 相当于下面两条语句 • PRINT “r=”; • INPUT r • INPUT语句中提示串后面的“;”改成“,”,则不输出“?” QB4-6 • 执行INPUT语句时从键盘输入的数据个数应与变量表列中变量的个数一致 QB4-7 • 从键盘上输入的数据只能是常量
第四节 读数/置数语句(READ/DATA) • 格式 READ 变量表列 DATA 数据表列 • READ/DATA语句的作用 • 在程序中批量给变量赋值 • DATA语句是非可执行语句,编译时按顺序将DATA语句中的数据放在内存的一个数据区中。 • READ语句从数据区中读入数据赋给各变量 READ a,b,c DATA 2,3,4
READ/DAT语句使用说明 • READ/DATA语句中的变量之间以及数据之间应以“,”分隔 • READ/DATA语句的末尾不能有符号 • 有READ语句则一定要有DATA语句,但两个语句的个数不一定相同 • 一个程序中DATA语句中数据的总个数应不少于READ语句中变量的总个数,否则: Out of DATA
READ/DAT语句使用说明 • DATA语句可以放在程序中的任意位置,甚至可以放在END语句的后面 • READ a • DATA 1,2,3,4,5 • READ b,c • PRINT a,b,c 1 2 3 4 5 a=1 b=2 c=3
READ/DAT语句使用说明 • DATA语句中的数只能是常量 DATA 3/4,sqr(3),exp(2),3+4× • DATA语句中数据的顺序、类型必须和READ语句中变量的顺序、类型一致。 READ a,b$,c,d$ DATA 2000,“November”,23,“Tuesday”
第五节 恢复数据指针语句(RESTORE) • 格式 RESTORE [标号] • RESTORE语句的作用 • 使数据区的指针从当前位置返回到数据区的开头或某DATA语句的开头 • 用于重复使用数据区中某一些数据
1 k1:data 1,2 read a,b,c,d,e restore k2 k2:data 3 read a restore read a k3:data 4,5 print a,b,c,d,e end 2 3 4 5 a=1 a=3 a=1 b=2 c=3 d=4 e=5
REM、END和STOP语句 • 注释语句REM • 非可执行语句 • 注释信息可以不加引号 • 一般用于调试程序 • 结束语句END • 非可执行语句 • 程序运行时,遇到一个END语句就结束。QB2-7 • 暂停语句STOP • 程序暂停后可继续运行
第七节 顺序程序设计举例 • 鸡兔同笼问题。 已知鸡兔的总头数h,总脚数f,求鸡兔各有多少只。 设鸡x只,兔y只。 ∵ x+y=h 2x+4y=f ∴ x=(4h-f)/2 y=h-x
用LET语句 h=5:f=16 x=(4*h-f)/2 y=h-x print x,y end qb4-8
用INPUT语句 input “heads and foots”;h,f x=(4*h-f)/2 y=h-x print “chickens=“;x,”rabbits=“;y end qb4-9
用READ/DATA语句 read h, f x=(4*h-f)/2 y=h-x print x, y data 5, 16 end qb4-10
本章小结: • 掌握QBASIC源程序的构成 • 掌握常量与变量的表示 • 掌握常用几个标准函数 • 熟练QBASIC中表达式的写法
本章习题 • 66页 6, 8-12, 14
QBASIC 上机指导 • QBASIC 的组成 • MS-DOS 5.0 以上版本提供 • QBASIC.EXE 、QBASIC.HLP • 启动QBASIC • “basic/qbasic” • 程序窗口:用来编辑和运行程序 窗口的标题为源程序名 • 命令窗口:用来执行单个程序 窗口的标题为Immediate • 活动窗口:当前正在使用的窗口