《探秘C++ 如何像计算机科学家一样思考》PDF下载

  • 购买积分:12 如何计算积分?
  • 作  者:(美)Allen Downey,(美)Jonah Cohen,(美)Paul Bui著;张平译
  • 出 版 社:杭州:浙江大学出版社
  • 出版年份:2004
  • ISBN:7308040356
  • 页数:347 页
图书介绍:本书自浅入深,全面介绍C++编程语言的变量,类型,方法,条件,循环,类和对象,以及数据结构内容,链表,堆栈,队列,优先队列,树,堆,矩阵和集合。

第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