书籍详情
像程序员一样思考
作者:V. Anton Spraul
出版社:人民邮电出版社
出版时间:2013-06-01
ISBN:9787115316585
定价:¥49.00
购买这本书可以去
内容简介
编程的真正挑战不是学习一种语言的语法,而是学习创造性地解决问题,从而构建美妙的应用。《像程序员一样思考》分析了程序员解决问题的方法,并且教授你其他图书所忽略的一种能力,即如何像程序员一样思考。全书分为8章。第1章通对几个经典的算法问题切入,概括了问题解决的基本技巧和步骤。第2章通过实际编写C++代码来解决几个简单的问题,从而让读者进一步体会到问题解决的思路和应用。第3到7章是本书的主体部分,分别探讨了用数组、指针和动态内存、类、递归和代码复用来解决问题的途径和实际应用。最后,第8章从培养程序员思维的角度,进行了总结和概括,告诉读者如何才能像程序员一样思考。《像程序员一样思考》选取的话题切中程序员的痛点,针对他们最容易陷入挣扎的领域展开讨论,引发思考。每章后面都给出一些编程习题,使得读者能够应用该章所讨论的概念,训练和提升问题解决的能力。《像程序员一样思考》适合初级到中级的程序员用来提升自己的问题解决能力和应用编程技能的能力,也适合计算机相关专业的学生作为参考书阅读。
作者简介
V. Anton Spraul,讲授入门级编程和计算机科学已经超过15年。本书凝聚了他在多年的开发经历中所提炼的经验和技巧,并在面向许多遭遇瓶颈的程序员的一对一指导中收到了良好的效果。他还是《Computer Science Made Simple》(Broadway)的作者。译者简介徐波,浙江宁波人,熟悉C和C++、Java等编程语言。2002年开始从事计算机技术图书翻译。徐波技术视野广阔,翻译文笔优美。译著有《C专家编程》、《C和指针》等。
目录
目 录
目录
第1章 解决问题的策略 1
1.1 经典难题 2
1.1.1 狐狸、鹅和玉米 3
1.1.2 瓷砖滑块问题 7
1.1.3 数独 11
1.1.4 Quarrasi锁 13
1.2 基本的问题解决技巧 16
1.2.1 总是要制订计划 16
1.2.2 重新陈述问题 17
1.2.3 划分问题 18
1.2.4 从自己所知的开始 19
1.2.5 削减问题 20
1.2.6 寻找类比 21
1.2.7 试验 21
1.2.8 避免陷入挫折感 22
1.3 习题 23
第2章 纯粹的难题 25
2.1 本章所使用的C++简述 25
2.2 输出图案 26
2.3 输入处理 31
2.4 追踪状态 42
2.5 结论 55
2.6 习题 55
第3章 用数组解决问题 59
3.1 数组基础知识概述 60
3.2 用数组解决问题 66
3.3 固定数据的数组 71
3.4 非标量数组 73
3.5 多维数组 75
3.6 决定什么时候使用数组 78
3.7 习题 82
第4章 用指针和动态内存解决问题 85
4.1 指针基础知识回顾 86
4.2 指针的优点 87
4.2.1 运行时确定长度的数据结构 87
4.2.2 可改变长度的数据结构 87
4.2.3 内存共享 88
4.3 什么时候使用指针 89
4.4 内存细节 90
4.4.1 堆栈和堆 90
4.4.2 内存的大小 93
4.4.3 生命期 94
4.5 解决指针问题 95
4.5.1 可变长度的字符串 95
4.5.2 链表 105
4.6 结论和未来的步骤 113
4.7 习题 114
第5章 用类解决问题 117
5.1 类的基础知识回顾 118
5.2 使用类的目的 119
5.2.1 封装 120
5.2.2 代码的复用 120
5.2.3 问题的细分 121
5.2.4 信息隐藏 121
5.2.5 可读性 123
5.2.6 表达能力 123
5.3 创建一个简单的类 124
5.3.1 问题:班级花名册 124
5.3.2 基本的类框架 125
5.3.3 支持方法 129
5.4 具有动态数据的类 132
5.5 需要避免的错误 147
5.5.1 假类 147
5.5.2 单功能 148
5.6 习题 148
第6章 用递归解决问题 151
6.1 递归基础知识回顾 151
6.2 头递归和尾递归 152
6.3 大递归思路 160
6.4 常见的错误 163
6.4.1 过多的参数 164
6.4.2 全局变量 165
6.5 把递归应用于动态数据结构 166
6.5.1 递归和链表 167
6.5.2 递归和二叉树 169
6.6 包装器函数 172
6.7 什么时候选择递归 175
6.8 习题 179
第7章 通过代码复用解决问题 181
7.1 良好的复用和不良的复用 182
7.2 组件基础知识回顾 183
7.3 创建组件的基础知识 186
7.3.1 探索式学习 186
7.3.2 根据需要学习 190
7.4 选择组件类型 198
7.5 习题 204
第8章 培养程序员的思维 207
8.1 创建自己的总体计划 207
8.1.1 扬长避短 208
8.1.2 制订总体计划 214
8.2 处理任何问题 215
8.2.1 问题:绞型者作弊程序 216
8.2.2 寻找作弊方法 217
8.2.3 绞型者作弊所需要的操作 218
8.2.4 初始设计 220
8.2.5 开始编写化码 221
8.2.6 对初始结果的分析 229
8.2.7 解决问题的艺术 230
8.3 学习新的编程技能 231
8.3.1 新语言 231
8.3.2 已经熟悉的语言的新技巧 234
8.3.3 新代码库 235
8.3.4 上课 235
8.4 结论 236
8.5 习题 237
目录
第1章 解决问题的策略 1
1.1 经典难题 2
1.1.1 狐狸、鹅和玉米 3
1.1.2 瓷砖滑块问题 7
1.1.3 数独 11
1.1.4 Quarrasi锁 13
1.2 基本的问题解决技巧 16
1.2.1 总是要制订计划 16
1.2.2 重新陈述问题 17
1.2.3 划分问题 18
1.2.4 从自己所知的开始 19
1.2.5 削减问题 20
1.2.6 寻找类比 21
1.2.7 试验 21
1.2.8 避免陷入挫折感 22
1.3 习题 23
第2章 纯粹的难题 25
2.1 本章所使用的C++简述 25
2.2 输出图案 26
2.3 输入处理 31
2.4 追踪状态 42
2.5 结论 55
2.6 习题 55
第3章 用数组解决问题 59
3.1 数组基础知识概述 60
3.2 用数组解决问题 66
3.3 固定数据的数组 71
3.4 非标量数组 73
3.5 多维数组 75
3.6 决定什么时候使用数组 78
3.7 习题 82
第4章 用指针和动态内存解决问题 85
4.1 指针基础知识回顾 86
4.2 指针的优点 87
4.2.1 运行时确定长度的数据结构 87
4.2.2 可改变长度的数据结构 87
4.2.3 内存共享 88
4.3 什么时候使用指针 89
4.4 内存细节 90
4.4.1 堆栈和堆 90
4.4.2 内存的大小 93
4.4.3 生命期 94
4.5 解决指针问题 95
4.5.1 可变长度的字符串 95
4.5.2 链表 105
4.6 结论和未来的步骤 113
4.7 习题 114
第5章 用类解决问题 117
5.1 类的基础知识回顾 118
5.2 使用类的目的 119
5.2.1 封装 120
5.2.2 代码的复用 120
5.2.3 问题的细分 121
5.2.4 信息隐藏 121
5.2.5 可读性 123
5.2.6 表达能力 123
5.3 创建一个简单的类 124
5.3.1 问题:班级花名册 124
5.3.2 基本的类框架 125
5.3.3 支持方法 129
5.4 具有动态数据的类 132
5.5 需要避免的错误 147
5.5.1 假类 147
5.5.2 单功能 148
5.6 习题 148
第6章 用递归解决问题 151
6.1 递归基础知识回顾 151
6.2 头递归和尾递归 152
6.3 大递归思路 160
6.4 常见的错误 163
6.4.1 过多的参数 164
6.4.2 全局变量 165
6.5 把递归应用于动态数据结构 166
6.5.1 递归和链表 167
6.5.2 递归和二叉树 169
6.6 包装器函数 172
6.7 什么时候选择递归 175
6.8 习题 179
第7章 通过代码复用解决问题 181
7.1 良好的复用和不良的复用 182
7.2 组件基础知识回顾 183
7.3 创建组件的基础知识 186
7.3.1 探索式学习 186
7.3.2 根据需要学习 190
7.4 选择组件类型 198
7.5 习题 204
第8章 培养程序员的思维 207
8.1 创建自己的总体计划 207
8.1.1 扬长避短 208
8.1.2 制订总体计划 214
8.2 处理任何问题 215
8.2.1 问题:绞型者作弊程序 216
8.2.2 寻找作弊方法 217
8.2.3 绞型者作弊所需要的操作 218
8.2.4 初始设计 220
8.2.5 开始编写化码 221
8.2.6 对初始结果的分析 229
8.2.7 解决问题的艺术 230
8.3 学习新的编程技能 231
8.3.1 新语言 231
8.3.2 已经熟悉的语言的新技巧 234
8.3.3 新代码库 235
8.3.4 上课 235
8.4 结论 236
8.5 习题 237
猜您喜欢