1 计算机与计算机科学 1
1.1 计算机系统的组成 1
1.2 电子计算机的发展简史 3
1.3 计算机科学 4
2 算法的设计与分析 6
2.1 算法的概念 6
2.2 算法的表示 7
2.2.1 赋值指令 7
2.2.2 循环指令,输出指令 9
2.2.3 跟踪 11
2.2.4 条件指令 14
2.2.5 算法的三种基本结构 19
2.2.6 算法的两种图形表示 20
2.3 几种典型的算法 24
2.3.1 直接计算 24
2.3.2 枚举 25
2.3.3 递推 29
2.3.4 迭代 31
2.3.5 递归 33
2.4 结构化设计方法 33
2.4.1 自顶向下设计 33
2.4.2 算法的表达风格 43
2.5 算法的分析 44
2.5.1 执行时间函数 45
2.5.2 执行时间分析 47
2.6 小结 50
2.7 习题 50
3 计算机系统与语言 53
3.1 数据在计算机中的表示方法 53
3.1.1 位权 53
3.1.2 数系的转换 54
3.1.3 比特、字节和字 57
3.1.4 数在计算机中的定点表示法 57
3.1.5 数在计算机中的浮点表示法 58
3.1.6 字符和字符串的表示 59
3.2 数字计算机的硬件组成 59
3.2.1 中央处理器 61
3.2.2 主存贮器 62
3.2.3 辅助存贮器 63
3.2.4 输入输出子系统 64
3.3 程序设计语言的概念 65
3.3.1 机器语言 65
3.3.2 汇编语言 67
3.3.3 高级语言的特征 69
3.4 系统软件 70
3.4.1 翻译程序 70
3.4.2 操作系统 71
3.5 小结 75
3.6 习题 75
4 PASCAL的简单数据类型与程序结构 76
4.1 PASCAL语言的基本成分 76
4.1.1 字符 76
4.1.2 词 77
4.2 数据类型 79
4.2.1 整型 80
4.2.2 实型REAL 84
4.2.3 字符型CHAR 86
4.2.4 布尔型 87
4.2.5 枚举型 88
4.2.6 子界型 89
4.3 变量说明与常量定义 90
4.3.1 变量说明 90
4.3.2 常量和常量定义 91
4.4 PASCAL程序的基本结构 92
4.5 赋值语句与表达式 95
4.6 输入输出语句 99
4.6.1 输入语句 100
4.6.2 输出语句 102
4.7 简单的PASCAL程序 105
4.8 小结 108
4.9 习题 108
5 PASCAL的控制结构 112
5.1 复合语句 112
5.2 重复性语句 113
5.2.1 当语句 113
5.2.2 重复语句 117
5.2.3 循环语句 120
5.3 条件语句 124
5.3.1 如果语句 124
5.3.2 情况语句 130
5.4 臭名昭著的转语句 133
5.5 综合应用举例 136
5.6 小结 142
5.7 习题 143
6 PASCAL的结构数据类型 147
6.1 一维数组 147
6.1.1 一维数组的类型定义与变量说明 147
6.1.2 一维数组的操作 149
6.1.3 一维数组应用举例 151
6.2 二维数组 157
6.2.1 二维数组的类型定义与变量说明 158
6.2.2 二维数组的操作 159
6.2.3 二维数组应用举例 160
6.3 字符串类型 163
6.3.1 串类型的定义与串变量的说明 163
6.3.2 字符串的操作 164
6.3.3 字符串应用举例 165
6.4 记录 168
6.4.1 记录的类型定义与记录变量的说明 168
6.4.2 记录变量的操作 170
6.4.3 数据的构造 171
6.4.4 开域语句 181
6.4.5 记录的变体部分 183
6.5 集合 186
6.5.1 集合的类型定义与集合变量的说明 187
6.5.2 集合的构造与运算 188
6.6 数组、记录和集合的顺序存贮结构 192
6.6.1 数组存贮结构 193
6.6.2 记录存贮结构 194
6.7 小结 194
6.8 习题 194
7 PASCAL的函数与过程 198
7.1 函数 198
7.1.1 函数说明 199
7.1.2 函数的引用 201
7.2 过程 204
7.2.1 过程说明 204
7.2.2 过程调用 205
7.3 值参数与变量参数 206
7.4 存贮分配 208
7.5 程序的层次结构 212
7.5.1 层次结构的产生 212
7.5.2 标识符的作用域 213
7.5.3 调用关系 216
7.6 函数的副作用 217
7.7 递归 218
7.8 程序设计举例 221
7.9 小结 225
7.10 习题 225
8 动态数据结构 228
8.1 指针类型与动态变量 228
8.1.1 指针类型与指针变量 228
8.1.2 动态变量 229
8.1.3 利用指针反映动态变量之间的关系 230
8.2 链表 232
8.2.1 链表的建立 232
8.2.2 访问链表中的元素 234
8.2.3 链表元素的插入与删除 237
8.3 堆栈与队列 243
8.3.1 堆栈的操作 244
8.3.2 队列的操作 245
8.4 二叉树 247
8.4.1 二叉树的遍历 248
8.4.2 二叉树的插入与删除 254
8.5 小结 258
8.6 习题 258
9 排序及文件 262
9.1 查找 262
9.2 排序技术 265
9.2.1 选择排序 265
9.2.2 交换排序 267
9.2.3 插入排序 274
9.3 合并 275
9.4 文件 277
9.4.1 PASCAL文件的定义与说明 278
9.4.2 PASCAL文件的使用 279
9.5 小结 292
9.6 习题 292
10 数值算法——方程求解 295
10.1 数值算法的基本概念 295
10.1.1 误差的概念 295
10.1.2 数据误差对计算结果的影响 297
10.1.3 算法的数值稳定性 299
10.2 非线性代数方程的数解法 301
10.2.1 简单迭代法 301
10.2.2 牛顿(Newton)迭代法 305
10.3 线性方程组的数值解法 308
10.3.1 高斯消去法 309
10.3.2 选主元的高斯消去法 313
10.3.3 三角分解法 316
10.3.4 迭代法 318
10.4 常微分方程的数值解法 322
10.4.1 台劳方法 322
10.4.2 线性多步法 324
10.4.3 稳定性 329
10.4.4 变步长方法 333
10.4.5 算法 334
10.5 小结 334
10.6 习题 335
11 数值算法——插值、拟合与求积 337
11.1 插值 337
11.1.1 拉格朗日插值 337
11.1.2 牛顿插值 342
11.1.3 高次插值的缺点及分段低次插值 348
11.1.4 曲线拟合的最小二乘法 350
11.2 数值积分 352
11.2.1 基本概念 353
11.2.2 牛顿—柯特斯(Newton-Cotes)公式 354
11.2.3 复合求积 358
11.2.4 步长的自动选择 360
11.2.5 龙贝格(Romberg)方法 362
11.3 小结 366
11.4 习题 366
12 软件工程 368
12.1 软件工程的概念 368
12.1.1 软件生命期 368
12.1.2 软件的质量标准 370
12.2 需求分析 372
12.2.1 数据流图 372
12.2.2 数据词典 375
12.2.3 小说明 377
12.3 软件设计 379
12.3.1 程序的模块结构 379
12.3.2 设计阶段的任务 384
12.3.3 概要设计 385
12.3.4 详细设计 390
12.4 编程 390
12.5 测试 391
12.5.1 测试的目的与特性 392
12.5.2 测试方法 395
12.6 维护 398
12.7 小结 399
12.8 习题 399
参考文献 400