1.1 算法 1
1.1.1 算法的要素 1
第一章 程序设计的概念 1
1.1.2 算法的特征 5
1.2 数据结构 5
1.2.1 数据类型 5
1.2.2 数据结构 7
1.2.3 数据结构与算法 9
1.3 程序设计方法和风格 9
1.3.1 结构化程序设计 11
1.3.2 模块化程序设计 12
1.3.3 逐步细化的设计过程 13
1.3.4 程序的风格 14
1.4.1 算法描述工具 18
1.4 工具 18
1.4.2 程序设计语言 21
习题 22
第二章 程序设计的基本准则 25
2.1 抽象准则 25
2.1.1 模型 25
2.1.2 概念与子概念 27
2.1.3 自顶向下逐步细化 28
2.1.4 数据抽象 29
2.2 结构化准则 30
2.2.1 选择型程序设计 30
2.2.2 循环型程序设计 35
2.2.3 带有GOTO语句的结构 39
2.3.2 PARNAS方法 40
2.3.1 基本概念 40
2.3 局部化与信息隐蔽准则 40
2.3.3 模块间的通讯方式 41
2.3.4 模块的评价 44
习题 48
第三章 算法设计的基本方法 51
3.1 归纳法 51
3.1.1 穷举归纳法 52
3.1.2 枚举归纳法 55
3.1.3 递推 58
3.1.4 递归 64
3.2 分治法 66
3.2.1 二分检索 67
3.2.2 快速排序 68
3.2.3 归并排序 72
3.2.4 快速算法 75
3.3 数值法 77
3.3.1 逼近 78
3.3.2 离散化方法 84
3.3.3 数值方法的一些特点 87
3.4 数字仿真法 92
3.4.1 确定性数字仿真 93
3.4.2 随机性数字仿真 95
3.4.3 数字仿真语言 112
3.5 回溯法 114
习题 117
第四章 应用数据结构 125
4.1 顺序表 127
4.1.1 基本概念 127
4.1.2 顺序表的运算及数组 128
4.1.3 堆栈 132
4.1.4 队列 143
4.2 链表 147
4.2.1 向前链表 147
4.2.2 循环链表 155
4.2.3 双向链表 157
4.3 索引存储 159
4.3.1 索引存储的基本概念 159
4.3.2 “顺序——索引——顺序”存储方法 161
4.3.3 “顺序——索引——链接”存储方法 162
4.3.4 多重索引存储 163
4.4 树与二叉树 165
4.4.1 树结构及其存储 165
4.4.2 二叉树 172
习题 181
5.1.1 程序的可靠性 184
5.1.2 测试及其特征 184
第五章 程序的测试与调试 184
5.1 测试的概念 184
5.1.3 程序错误分类 187
5.2 测试用例设计 190
5.2.1 白箱测试技术 191
5.2.2 黑箱测试技术 193
5.2.3 综合策略 197
5.3 程序测试的层次 197
5.3.1 模块测试 198
5.3.2 整体测试 200
5.3.3 高级测试 200
5.4 程序测试的方式和过程 201
5.4.1 程序的静态分析 201
5.4.3 自动测试工具 202
5.4.2 程序的动态测试 202
5.5 程序调试 203
5.5.1 调试与测试的联系及区别 203
5.5.2 诊断错误的实验方法 204
5.5.3 错误诊断的推理技术 206
5.5.4 错误修改的原则 209
习题 209
第六章 软件开发 211
6.1 软件开发环境 211
6.1.1 软件与软件工程 211
6.1.2 软件生产环境的变迁 212
6.1.3 软件工程支撑环境的基本组成 213
6.2 操作系统 214
6.2.1 操作系统的功能及任务 214
6.2.2 操作系统的发展过程 216
6.2.3 操作系统的分类 220
6.2.4 优良的操作环境——多窗口系统 221
6.3 软件设计的基本技术 222
6.3.1 概述 222
6.3.2 面向过程的设计技术 225
6.3.3 面向对象的设计方法 230
习题 232
附录 233
附录一 CP/M操作系统 233
附录二 UNIX操作系统 235
附录三 MS-DOS操作系统 244
附录四 OS/2操作系统 251
附录五 VAX/VMS操作系统 252
参考文献 254