目录 1
序言 1
0.1 QuickBASIC语言 1
0.2 QuickBASIC环境 1
0.3 使用本手册 2
0.3.1 程序设计专题选讲 2
0.3.2 BASIC便览 2
0.3.3 附录 2
0.4 文档约定 3
0.5 本手册程序设计风格 4
第一部分 程序设计专题选讲 5
第一章 流程控制结构 5
1.1 改变语句执行的顺序 5
1.2 布尔表达式 6
1.3 判别结构 8
1.3.1 IF…THEN…ELSE语句块 9
1.3.2 SELECT CASE语句 11
1.4 循环结构……………………………………………………………………………(1?)1.4.1 FOR…NEXT循环 16
1.4.2 WHILE…WEND循环 21
1.4.3 DO…LOOP循环 21
1.5.1 支票簿结算程序 26
1.5 应用示范 26
1.5.2 回车换行过滤程序 27
第二章 SUB过程和FUNCTION过程 30
2.1 过程:程序设计的构件 30
2.2 SUB过程和FUNCTION过程的比较 30
2.2.1 SUB和GOSUB的比较 31
2.2.1.1 局部变量和全局变量 31
2.2.1.2 在多模块程序中的用法 31
2.2.1.3 在不同的变量集上的操作 31
2.2.2.2 对传送给过程的变量进行修改 32
2.2.2.1 局部变量和全局变量 32
2.2.2 FUNCTION和DEF FN的比较 32
2.2.2.3 在过程定义范围内调用过程本身 33
2.2.2.4 在多模块程序中的用法 33
2.3 过程的定义 33
2.4 过程的调用 34
2.4.1 调用FUNCTION过程 34
2.4.2 调用SUB过程 35
2.5 把变元传送给过程 36
2.5.1 参数和变元 36
2.5.2 传送常量和表达式 37
2.5.3.1 传送简单变量 38
2.5.3 传送变量 38
2.5.3.3 传送数组个别元素 39
2.5.3.2 传送整个数组 39
2.5.3.4 数组界函数的使用 40
2.5.3.5 传送一个完整的记录 40
2.5.3.6 传送单个记录元素 41
2.5.4 用DECLARE语句检查变元 41
2.4.4.1 QuickBASIC不生成DEC LARE语句的情况 42
2.5.4.2 在QuickBASIC环境外部开发程序 42
2.5.4.3 使用包括文件进行申明 43
2.5.5 按参考传送变元 45
2.5.4.4 在Quick库内申明过程 45
2.5.6 按值传送变元 46
2.6 用SHARED实现变量共享 47
2.6.1 和模块中的特定过程共享变量 47
2.6.2 和模块中的所有过程共享变量 48
2.6.3 不同模块的变量共享 50
2.6.4 变量串用问题 52
2.7 自动变量和STATIC变量 53
2.8 用STATIC语句保持局部变量的值 53
2.9.1 阶乘函数 54
2.9 递归过程 54
2.9.2 调整堆栈的大小 55
2.10 用CHAIN把控制转到另一个程序 55
2.11 应用示范:递归搜索目录(WHEREIS.BAS) 57
第三章 文件和设备I/0 60
3.1 在屏幕上显示文本 60
3.1.1 屏幕上的行与列 60
3.1.2 用PRINT显示文本和数 60
3.1.3 用PRINT USING显示格式化输出 62
3.1.4 跳过空格和前进到特定列 62
3.1.6 建立文本视见窗 63
3.1.5 改变行数和列数 63
3.2 从键盘输入 65
3.2.1 INPUT语句 65
3.2.2 LINE INPUT语句 66
3.2.3 INPUT$函数 66
3.2.4 INKEY$函数 67
3.3 控制文本光标 67
3.3.1 光标定位 68
3.3.2 改变光标的形状 68
3.4 使用数据文件 69
3.3.3 确定光标位置 69
3.4.2 顺序存取文件和随机存取文件 70
3.4.3 打开数据文件 70
3.4.1 数据文件的组织方式 70
3.4.3.1 BASIC的文件号 71
3.4.3.2 BASIC的文件名 71
3.4.4 关闭数据文件 72
3.4.5 使用顺序文件 72
3.4.5.1 顺序文件中的记录 72
3.4.5.2 将数据存入新的顺序文件 74
3.4.5.5 将数据写入顺序文件的其它方式 75
3.4.5.3 从顺序文件中读取数据 75
3.4.5.4 向顺序文件添加数据 75
3.4.5.6 将数据从顺序文件中读出的其它方式 77
3.4.6 使用随机存取文件 78
3.4.6.1 随机文件中的记录 78
3.4.6.2 向随机文件添加数据 79
3.4.6.3 顺序地读取数据 82
3.4.6.4 用记录号检索记录 83
3.4.7 二进制文件I/O 84
3.4.7.1 二进制存取和随机存取的比较 84
3.4.7.2 用SEEK对文件指针定位 85
3.5 利用设备进行工作 87
3.5.1 设备I/O与文件I/O之间的区别 87
3.5.2 通过串行端口进行通讯 88
3.6 应用示范 89
3.6.1 万年历 89
3.6.2 建立随机存取文件的索引(INDEX.BAS) 92
3.6.3 终端仿真程序(TERMINAL.BAS) 97
第四章 字符串处理 100
4.1 定义字符串 100
4.2.2 定长字符串 101
4.2.1 变长字符串 101
4.2 变长和定长字符串 101
4.3 字符串结合 102
4.4 字符串比较 103
4.5 字符串查找 104
4.6 检索部分字符串 105
4.6.1 从字符串左侧检索字符 105
4.6.2 从字符串右侧检索字符 106
4.6.3 从字符串的任意部位检索字符 107
4.7 产生字符串 107
4.9 字符串和数 108
4.8 改变字母大小写 108
4.10 字符串修改 109
4.11 应用示范:把字符串转换成数(STRTONUM.BAS) 109
第五章 图形 110
5.1 运行图形程序的要求 110
5.2 象素和屏幕坐标 111
5.3 画基本图素:点、线、方框和园 112
5.3.1 用PSET和PRESET画点 112
5.3.2 用LINE画直线和方框 113
5.3.2.1 使用STEP选项 113
5.3.2.2 画方框 114
5.3.2.3 画虚线 115
5.4 用CIRCLE画圆和椭圆 116
5.4.1 画圆 116
5.4.2 画椭圆 116
5.4.3 画弧 118
5.4.4 画饼形图 119
5.4.5 利用方位比确定所画的图形的比例 120
5.5 定义图形视见窗 121
5.6 使用WINDOW重新定义视见窗坐标 123
5.6.2 跟踪物理和观察坐标 125
5.6.1 坐标对的次序 125
5.7 利用颜色 126
5.7.1 选择图形输出的颜色 127
5.7.2 修改前景和背景颜色 127
5.7.3 利用PALETTE和PALETTE USING改变颜色 129
5.8 为图形着色 131
5.8.1 着色 131
5.8.2 用图案着色:贴面 133
5.8.2.1 在不同屏幕模式中贴面图案的大小 133
5.8.2.2 在屏幕模式2中建立单色图案 133
5.8.2.3 在屏幕模式1中建立多色图案 135
5.8.2.4 在屏幕模式8中建立多色图案 138
5.9 DRAW:图形宏语言 139
5.10 动画基本技术 141
5.10.1 用GET贮存图象 141
5.10.2 用PUT使图形移动 143
5.10.3 用GET和PUT实现动画 146
5.10.4 利用屏幕页面实现动画 150
5.11 应用示范 151
5.11.1 条线图生成程序(BAR.BAS) 151
5.11.2 用数学方法生成的图形的颜色 155
5.11.3 图案编辑程序(EDPAT.BAS) 161
6.1 错误捕捉 167
6.1.1 激活错误捕捉 167
第六章 错误和事件捕捉 167
6.1.2 编写错误处理例行程序 168
6.1.2.1 用ERR标识错误 168
6.1.2.2 从错误处理例行程序返回 169
6.2 事件捕捉 170
6.2.2 用陷阱检测事件 171
6.2.3 指定要捕捉的事件和激活事件捕捉 171
6.2.1 用轮询方式检测事件 171
6.2.4 BASIC可捕捉的事件 172
6.2.5 暂停或中止事件捕捉 172
6.2.6 捕捉击键 173
6.2.6.1 捕捉用户自定义的键 174
6.2.6.2 捕捉用户定义的组合键 174
6.2.7 捕捉音乐事件 176
6.3 在SUB和FUNCTION过程中的错误和事件捕捉 178
6.4 跨模块捕捉 178
6.4.1 跨模块事件捕捉 178
6.4.2 跨模块错误捕捉 179
6.5 捕捉用BC命令编译的程序中的错误和事件 181
6.6 应用示范:捕捉文件访问错误(FIL ERR.BAS) 182
第七章 利用模块进行程序设计 184
7.1 为何使用模块 184
7.2 主模块 185
7.3 仅包含过程的模块 185
7.4 生成仅含过程的主模块 186
7.5 装入模块 186
7.6 多模块中DECLARE语句的用法 186
7.9 模块的编译和连接 187
7.7 从两个或多个模块中存取变量 187
7.8 程序开发过程中模块的应用 187
7.10 Quick库 188
7.10.1 Quick库的建立 188
7.11 做好模块化程序设计工作的提示 189
第二部分 BASIC便览 190
第八章 语句和函数摘要 190
第九章 快速参照表 209
9.1 流向控制语句摘要 209
9.2 BASIC过程中使用的语句摘要 210
9.4 文件I/O语句摘要 211
9.3 标准I/O语句摘要 211
9.5 字符串处理语句和函数摘要 212
9.6 图形语句和函数摘要 213
9.7 捕捉语句和函数摘要 214
附录A 把BASICA程序转换成QuickBASIC 216
A.1 源文件格式 216
A.2 QuickBASIC禁用的语句和函数 216
A.3 需要修改的语句 216
A.4 编辑程序在处理制表符Tab方面的差别 217
B.1 QuickBASIC特点 218
附录B 和QuickBASIC以前版本的差别 218
B.1.1 QuickBASIC4.5的新特点 219
B.1.2 QuickBASIC4.0的特点 219
B.1.2.1 用户定义的类型 219
B.1.2.2 支持IEEE格式和数学协处理器 219
B.1.2.3 IEEE格式数的范围 220
B.1.2.4 PRINT USING和IEEE格式数 220
B.1.3 用/MBF对老版程序重新编译 220
B.1.4 对文件和程序进行转换 220
B.1.5.5 FUNCTION过程 222
B.1.5.4 二进制文件I/O 222
B.1.5.3 对输入的语法检查 222
B.1.5.2 定长字符串 222
B.1.5 QuickBASIC其它特点 222
B.1.5.1 长整数(32比特) 222
B.1.5.10 插入和重打模式 223
B.1.5.12 递归 223
B.1.5.11 WordStar式键盘命令 223
B.1.5.13 在分别编译过程中的出错列表 223
B.1.5.9 ProKey,SideKick及SuperKey兼容性 223
B.1.5.8 内存中的多模块 223
B.1.5.7 与其它语言兼容性 223
B.1.5.6 对CodeView调试程序的支持 223
B.1.5.14 在独立编译过程中的汇编语言列表 224
B.2 环境的差别 224
B.2.1 选择命令和选项 224
B.2.2 窗口 224
B.2.3 新菜单 224
B.2.4 菜单命令 224
B.2.5 编辑键修改 225
B.3 在编译和调试方面的差别 225
B.3.1 命令行差别 225
B.3.5 调试 226
B.3.4 关于包括文件的限制 226
B.3.3 用户库和BUILDLIB 226
B.3.2 独立编译的差别 226
B.4 对BASIC语言的修改 227
B.5 文件兼容性 230
附录C QuickBASIC的限制 230
附录D 键盘扫描代码和ASCII代码 232
D.1 键盘扫描代码 232
D.2 ASCII字符代码 233
附录F 元命令 235
附录E BASIC保留字 235
F.1 元命令语法 236
F.2 处理附加的源文件:$INCLUDE 236
F.3 已定维数组内存分配:$STATIC和$DYNAMIC 236
附录G 从DOS下编译和连接 237
G.1 BC,LINK和LIB 237
G.2 编译和连接过程 237
G.3 用BC命令进行编译 238
G.3.1 指定文件名 238
G.3.2 利用BC命令选项 239
G.3.1.3 路径名 239
G.3.1.2 文件扩展名 239
G.3.1.1 大写和小写字母 239
G.4 连接 240
G.4.1 LINK的默认值 241
G.4.2 指定要连接的文件 242
G.4.3 指定要连接的库 242
G.4.4 连接命令LINK的内存要求 243
G.4.5 和混合语言程序的连接 243
G.4.6 利用LINK选项 244
G.4.5.3 在扩充的运行态模块中对DGROUP的参考 244
G.4.5.2 在汇编语言子程序中的静态数组分配 244
G.4.5.1 QuickBASIC程序中的Pascal和FORTRAN模块 244
G.4.6.1 观察选项表(/HE) 245
G.4.6.2 在连接过程中的暂停(/PAU) 245
G.4.6.3 显示连接程序处理信息(/I) 245
G.4.6.4 阻止连接程序给出提示(/B) 245
G.4.6.5 建立Quick库(/Q) 246
G.4.6.6 对可执行文件的包装(/E) 246
G.4.6.7 使节段包装失效(/NOP) 246
G.4.6.8 忽视通常的BASIC库(/NOD) 246
G.4.6.9 忽视词典(/NOE) 246
G.4.6.10 设置最大节段数(/SE) 246
G.4.6.11 建立映象文件(/M) 247
G.4.6.13 对相邻节段进行包装(/PAC) 248
G.4.6.14 利用Code View调试程序(/CO) 248
G.4.6.15 区别大小写(/NOI) 248
G.4.7 其它LINK命令行选项 248
G.4.6.12 在映象文件中包括行号(/LI) 248
G.5 管理独立的库:LIB 249
G.5.1 运行LIB 249
G.5.2 对LIB常用的响应 250
G.5.3 交叉参考列表文件 251
G.5.4 命令符号 251
G.5.5.3 区分符号的大小写 252
G.5.5.4 设置页面的大小 252
G.5.5 LIB选项 252
G.5.5.2 忽略扩充词典 252
G.5.5.1 忽略符号的大小写 252
附录H 建立和使用Quick库 254
H.1 库的类型 254
H.2 Quick库的优点 254
H.3 建立Quick库 255
H.3.1 建立Quick库需要的文件 255
H.3.3.3 建立Quick库 256
H.3.3.2 装入需要的文件 256
H.3.3 从环境内部建立Quick库 256
H.3.3.1 卸载不需要的文件 256
H.3.2 建立Quick库 256
H.4 Quick库的用法 257
H.4.1 装Quick库 257
H.4.2 Quick库中的浮点算术运算 258
H.4.3 考察Quick库的内容 258
H.5 系统提供的库(QB.QLB) 258
H.6 文件扩展名.QLB 258
H.8.1 建造Quick库 259
H.8 在Quick库中使用其它语言的例行程序 259
H.7 从命令行建库 259
H.8.2 在第一代码节段中有前导零的Quick库 260
H.8.3 例行程序B_OnExit 260
H.9 对Quick库的内存考虑 261
H.10 建立紧凑的可执行文件 261
附录I 出错报文 261
I.1 出错报文显示 262
I.2 调用,编译态,运行态出错报文 263
I.3 连接中的出错报文 280
I.4 库出错报文 287