程序员修炼之道:程序设计入门30讲 高清pdf完整版[8MB]
本书收录了与程序设计基础知识相关的30个问题。它们是部分初次接触编程的读者共有的问题。这些问题的答案并不复杂,但是消化吸收它们却不是一个简单的过程。这需要读者培养计算思维,学习从程序的视角看问题。当你可以回答本书所有的问题时,相信你已经越过了程序设计的道门槛。
本书分为6部分,分别是:入门学堂、内存模型、初窥算法、面向对象、认识程序、编程之道。在入门学堂这部分中,主要介绍程序设计基础的知识,例如如何编写个Java程序、个C++程序,学习调试程序等。在内存模型这部分中,我们将学习指针、引用、栈和堆、参数传递等内存相关的知识。初窥算法部分围绕基础的数据结构和算法展开,如链表、递归算法、搜索算法等。在面向对象这部分中,我们将围绕面向对象程序设计的三大特性展开学习。认识程序部分则介绍更多程序设计方面的知识,如异常处理机制、输入输出流、多线程编程等。编程之道部分讲述提升代码质量的方法,编程不仅是一项工程性的工作,更是一项艺术工作,这一部分就围绕程序设计的艺术性来展开。
本书面向所有计算机相关专业的学生,也面向所有对程序设计感兴趣的入门学习者,只要对本书中的任何问题感到疑惑,并且想知道背后答案的读者,都可以阅读本书。
目录
一、入门学堂 1
1. #include, using namespace std, int main 分别是什么意思?我的 第一个C程序 1
2. import, public static void main, String[] args分别是什么意思? 我的第一个Java程序 5
3. 什么是数据类型? 9
4. 如何阅读项目源码? 14
5. 如何调试程序? 16
二、内存模型 24
6. 变量和对象存储在哪里?理解栈和堆 24
7. 什么是stackoverflow异常? 30
8. 指针究竟是什么? 34
9. Java中的引用与C中的指针有什么区别? 39
10. 为什么C++中new之后要delete,Java中却不需要? 42
11. 明明是值传递,可对象为什么发生了变化? 48
三、初窥算法 51
12. 如何编写链表? 51
13. 从斐波那契到汉诺塔,如何编写递归算法? 56
14. 从深度优先到广度优先,如何编写搜索算法? 61
15. 什么是位运算?位运算究竟有什么用? 67
四、面向对象 74
16. 为什么要编写类?这么做是不是使问题更复杂了? 74
17. 组合还是继承?如何选择? 81
18. 为什么静态方法不能调用非静态成员? 90
19. Java为什么不支持多继承? 94
20. 为什么要定义接口?接口有什么用? 97
五、认识程序 105
21. Java中的异常处理机制有什么优点? 105
22. throws还是try…catch?异常处理原则 109
23. 什么是输入流和输出流?装饰器模式的应用 113
24. 为什么需要多线程编程? 121
25. 修改同时发生该听谁的?锁 126
26. 编译、链接、运行,程序是怎样跑起来的? 132
27. 为什么我写的都是黑框程序?图形界面是怎样写出来的? 137
28. 什么是回调函数? 142
六、编程之道 149
29. 如何正确地编写注释? 149
30. 应该培养哪些良好的编程习惯? 155
参考文献 161