第1章 按部就班的方式 1
1.1 什么是程序语言 2
1.2 什么是程序 4
1.3 什么是调试和排错 4
1.4 形式化语言和自然语言 6
1.5 第一个程序 8
1.6 术语 11
第2章 变量和类型 12
2.1 更多的打印 12
2.2 值 14
2.3 变量 14
2.4 赋值 15
2.5 打印变量 16
2.6 关键字 18
2.7 操作符 18
2.8 操作符的执行顺序 20
2.9 对字符的操作 20
2.10 组合句 21
2.11 术语 22
第3章 函数 23
3.1 浮点数 23
3.2 把double类型转换成int类型 25
3.3 数学函数 25
3.4 组合 27
3.5 增加新的函数 27
3.6 定义和调用函数 30
3.7 具有多个函数的程序 31
3.8 形式参数和实际参数 31
3.9 参数和变量的局部性 33
3.10 带有多个参数的函数 34
3.11 具有结果的函数 35
3.12 术语 35
第4章 条件和递归 36
4.1 求余(模除)运算 36
4.2 条件执行 36
4.3 选择执行 37
4.4 链式条件 38
4.5 嵌套条件 39
4.6 返回语句 40
4.7 递归 40
4.8 无穷递归 43
4.9 递归调用函数的堆栈图 43
4.10 术语 44
第5章 “开花结果”的函数 45
5.1 返回值 45
5.2 程序的“逐渐生长” 48
5.3 组合 51
5.4 重载 52
5.5 布尔值 53
5.6 布尔变量 53
5.7 布尔操作符 54
5.8 布尔函数 55
5.9 从main函数中返回 56
5.10 多重递归 57
5.11 确信跳跃 60
5.12 另一个例子 60
5.13 术语 61
第6章 重复 63
6.1 多次赋值 63
6.2 重复 64
6.3 while语句 64
6.4 表格 66
6.5 两维表 69
6.6 封装和泛化 70
6.7 函数 71
6.8 进一步封装 72
6.9 局部变量 72
6.10 进一步泛化 73
6.11 术语 75
第7章 字符串和其他 77
7.1 字符串容器 77
7.2 pstring变量 78
7.3 从字符串中提取字符 79
7.4 长度 79
7.5 遍历 80
7.6 运行错误 81
7.7 find函数 81
7.8 我们自己设计find函数 82
7.9 循环和计数 83
7.10 加一和减一操作符 84
7.11 字符串的连接 85
7.12 改变pstring类型字符串 87
7.13 比较pstring字符串 87
7.14 字符的分类 88
7.15 另外的pstring函数 90
7.16 术语 90
第8章 结构 91
8.1 组合数据 91
8.2 Point对象 91
8.3 对实例变量的存取 93
8.4 对结构数据的操作 93
8.5 结构数据用作参数 94
8.6 参数的值传递 95
8.7 参数的引用传递 96
8.8 矩形 97
8.9 从函数中返回结构 99
8.10 以引用传递的方式传递其他类型的参数 99
8.11 程序执行时的输入 100
8.12 术语 103
第9章 更多的结构 104
9.1 时间(Time)结构类型 104
9.2 打印Time 105
9.3 函数作用的分类 105
9.4 无瑕作用 106
9.5 const参数 108
9.6 改动作用 109
9.7 填入作用 110
9.8 哪一种更好 111
9.9 发展型风格vs规划型风格 111
9.10 泛化处理 112
9.11 算法 113
9.12 术语 114
第10章 数组 115
10.1 数组元素的存取 116
10.2 数组的拷贝 118
10.3 for循环 118
10.4 数组的长度 119
10.5 随机数 120
10.6 统计 122
10.7 随机数数组 122
10.8 计数 123
10.9 检验其他数值出现的次数 124
10.10 频率直方图 126
10.11 一次遍历解决问题 127
10.12 随机数的种子 128
10.13 术语 128
第11章 成员函数 130
11.1 对象和函数 130
11.2 成员函数print 131
11.3 隐含变量的存取 133
11.4 另一个例子 134
11.5 再一个例子 135
11.6 复杂的例子 136
11.7 构造器函数 136
11.8 初始化还是构造器 138
11.9 最后一个例子 139
11.10 头文件 140
11.11 术语 143
第12章 对象数组 145
12.1 各种组合 145
12.2 扑克牌对象 145
11.3 printCard函数 147
12.4 equals函数 150
12.5 isGreater函数 151
12.6 扑克牌数组 153
12.7 printDeck函数 155
12.8 顺序法搜索 156
12.9 两分法搜索 157
12.10 一整副牌和一部分牌 160
12.11 术语 161
第13章 数组对象 162
13.1 枚举(Enumerate)类型纸牌 162
13.2 选择(switch)语句 164
13.3 一副纸牌 165
13.4 另一个构造器 167
13.5 Deck类中的成员函数 167
13.6 洗牌 169
13.7 选择排序 171
13.8 一手牌 172
13.9 洗牌和发牌 174
13.10 混合排序(mergesort) 174
13.11 术语 178
第14章 类和确认标志 179
14.1 数据封装与私有(private)数据 179
14.2 什么是类 180
14.3 复数 182
14.4 存取函数 184
14.5 复数的显示输出 186
14.6 复数的加法 187
14.7 复数的乘法 188
14.8 确认标志 189
14.9 前提 190
14.10 私有函数 192
14.11 术语 194
第15章 面向对象编程 195
15.1 程序设计语言及风格 195
15.2 成员函数和独立函数 196
15.3 当前对象 196
15.4 复数 196
15.5 第一个复数函数 197
15.6 另一个复数函数 199
15.7 具有改动作用的函数 200
15.8 运算符重载和“<<” 201
15.9 “=”操作符 203
15.10 在成员函数内调用成员函数 204
15.11 小心无大错 205
15.12 继承 206
15.13 通告类(Message class) 206
15.14 面向对象的程序设计 210
15.15 术语 211
第16章 指针和引用 212
16.1 什么是指针,什么是引用 213
16.2 如何申明指针和引用 213
16.3 地址操作符 214
16.4 指针与引用的赋值 215
16.5 空指针 218
16.6 动态内存分配 219
16.7 从函数中返回指针和引用 221
16.8 术语 224
第17章 模板 225
17.1 模板的语法 226
17.2 模板和类 227
17.3 模板使用中易犯的错误 228
17.4 术语 228
第18章 链表 229
18.1 对象间的引用 229
18.2 节点(Node)类 229
18.3 链表是聚集器 233
18.4 链表与递归 235
18.5 无穷链表 236
18.6 原义含糊定理 237
187 针对节点的成员函数 238
18.8 对链表进行改动 238
18.9 “外包装”和“内贤助” 240
18.10 LinkedList(链表)类 241
18.11 真实量 242
18.12 术语 243
第19章 堆栈 244
19.1 抽象数据结构 244
19.2 一种抽象数据结构——堆栈 245
19.3 pstack类中的堆栈 245
19.4 后缀表达式 247
19.5 语法分析 248
19.6 抽象数据结构的实施 251
19.7 运用数组实施堆栈 252
19.8 变动数组大小 253
19.9 术语 256
第20章 队列和优先队列 257
20.1 队列抽象数据结构 258
20.2 装饰板 259
20.3 链接队列 260
20.4 循环缓冲区 263
20.5 优先队列 267
20.6 优先队列的数组实施 268
20.7 高尔夫球手 270
20.8 把优先队列模板化 273
20.9 术语 276
第21章 树 277
21.1 树的节点 277
21.2 创建树 279
21.3 周游一棵树 279
21.4 表达式树 280
21.5 表达式树的遍历 282
21.6 用数组实施树 283
21.7 术语 288
第22章 堆 290
22.1 堆的概念 290
22.2 操作分析 291
22.3 合并排序(mergesort)的分析 293
22.4 附加消耗 295
22.5 优先队列的实施 296
22.6 堆的定义 297
22.7 从堆中删除元素 300
22.8 向堆中添加元素 302
22.9 堆中操作的时间特性 302
22.10 堆排序 303
22.11 术语 305
第23章 文件输入/输出和矩阵 306
23.1 流(Streams) 307
23.2 从文件中输入 307
23.3 向文件输出 309
23.4 对输入内容进行语法分析 310
23.5 对数值进行语法分析 312
23.6 集合(Set)类数据结构 313
23.7 pmatrix数据结构 317
23.8 城市之间距离的数组 319
23.9 合乎要求的距离数组 320
23.10 术语 323
附录A 太过完美的洗牌 324
A.1 52张纸牌的洗牌 324
A.2 n张纸牌的AB顺序洗牌 326
A.3 n张纸牌的BA顺序洗牌 328
A.4 52张纸牌AB方式洗牌程序代码 329
附录B 与C++编程环境混个脸熟 335
B.1 C++语言简历 335
B.2 下载和安装C++语言 336
B.3 下载和安装SciTE 340
B.4 配置SciTE 341
B.5 SciTE的功能 343
B.6 配置pclasses 344
附录C pclasses参考 345
附录D GNU Free Documentation License 346