C++是一门计算机语言,其内涵和外延相当丰富,被称为范式语言。也就是说,你一旦熟练掌握了该语言(不是一般程度的掌握),那么学Java(纯面向对象语言)只需要3天(掌握其语法和使用),其他绝大多数语言的掌握,也是不费吹灰之力。
学好C++需要知道自己目前需要准备和注意哪块知识,以及某些能力对学习编程课到底学什么C++的影响,学好C++最关键的东西。
学好C++需要知道自己目前需要准备和注意哪块知识,以及某些能力对学习编程课到底学什么C++的影响,学好C++最关键的东西。
工具/原料
∙ 基本功
数学(随着深入学习,你会需要更高深的数学知识)、英语(用于查最新资料以及养成编写程
数学(随着深入学习,你会需要更高深的数学知识)、英语(用于查最新资料以及养成编写程
序的正确命名习惯)
∙ 什么人不适合学C++
没有人不适合学C++,只是学到的程度不同;可以确切的说,只要引导得当,初中学生也能学会(甚至是自学),但是越往后,对于复杂的内在逻辑关系和底层知识,就需要更加深厚的计算机理论、数学功底了;就比如从小到大你都在学数学,只是学习的深度和高度不同而已。它不像量子力学,最低门槛是大学物理;也不像数学分析,最低门槛是高中数学。你只要坚持不懈,就能在你现有的基础上一定程度的掌握它。
没有人不适合学C++,只是学到的程度不同;可以确切的说,只要引导得当,初中学生也能学会(甚至是自学),但是越往后,对于复杂的内在逻辑关系和底层知识,就需要更加深厚的计算机理论、数学功底了;就比如从小到大你都在学数学,只是学习的深度和高度不同而已。它不像量子力学,最低门槛是大学物理;也不像数学分析,最低门槛是高中数学。你只要坚持不懈,就能在你现有的基础上一定程度的掌握它。
∙ 学好C++的学习意义上的好处
比如,设计一个复杂的游戏,先要设计游戏引擎,游戏引擎涉及到的最关键内容是设计模式和内在机制,不乏数据结构等等理论知识包含于其中。而C++是一门优先于库、框架设计的语言,导致它本身很适合这方面的实现。学会C++后,对以后的一系列理论知识的学习将会非常有实践意义的好处(计算机科学是不允许纯理论事情发生的,比如堪比计算机界的牛顿的高德纳,不仅理论能力超强,编程语言实践功底也相当了得)。
比如,设计一个复杂的游戏,先要设计游戏引擎,游戏引擎涉及到的最关键内容是设计模式和内在机制,不乏数据结构等等理论知识包含于其中。而C++是一门优先于库、框架设计的语言,导致它本身很适合这方面的实现。学会C++后,对以后的一系列理论知识的学习将会非常有实践意义的好处(计算机科学是不允许纯理论事情发生的,比如堪比计算机界的牛顿的高德纳,不仅理论能力超强,编程语言实践功底也相当了得)。
∙ 学好C++的工作优势
目前大多数应聘单位一致认为,能熟练掌握C++的人(达到真正意义上的完全熟练或精通通常需要7-10年的编码积淀),对于复杂工作都能很轻松的胜任,而无论他们的开发工作是否需要用到C++。
步骤/方法
1. 选书,市面上的书非常多,在此不想作任何推荐,因为意义不大,每本书都因人而异。最重要的是:你要到你习惯的书,翻开C++入门书后,能够看得懂或者比较习惯于它里面的文字描述(偶尔出现不懂的专业术语可以暂时留着,继续往下看)。
2. 选书2,由于C++是一门实践性很强的语言课程,所以在选书的时候最好到这种书:书中有详细关于使用C++上机软件的步骤(我们称这种软件为IDE(集成开发环境),比如Visual C++ 6.0/.Net , DevC++ ,Intel C++ 等等)。如右图所示为VS2008IDE.
3. 学习之初,买到书之后,就应该按书上去操作IDE,熟悉并能操作基本的功能。比如新建、保存、另存为,以及各种常识性内容:文件后缀的意义.cpp为源文件,.h为头文件,.c为专门的C语言源文件,以及生成的exe文件放在什么目录下,等等。
4. 学习之初2,熟悉了IDE的使用后,再继续看书,把每一段可以编译并运行的代码输入IDE编辑区,编译运行,看效果是否是预料之中,并小范围修改代码,改写后再看,达到对代码的一个感性认知与理性认知的结合。
5. 长途跋涉,对书的咀嚼很重要,最好一字不漏,因为对于一个陌生事物,你一旦遗漏,可能要耗费很多精力在搞清楚后续内容上,但,记住,只是让你不要遗漏书中所描述的内容,不是说遇到实在不太理解的东西后就驻足不前,你把问题都记下,继续往后看,时刻试图去用后面的东西联系前面的困惑,看是否能有所突破。
6. 切记,学C++最重要的是把你所见到的代码在IDE上写一遍,运行并反复改动代码,达到对你遇到的所有代码都有一个功能-语法的对应。你知道改后的效果,并要以此格式去类推。
7. 思维要清晰,如何能够清晰?客观,如何能够客观?不要把东西想复杂化了。比如一个语
法,你只需要关心它能产生什么作用(尽量用自己通俗的逻辑去接纳它),而对于它的其他隐藏作用和未知的东西,你暂时不用考虑。所见即所得。
8. 化简,化简很重要,解决问题的时候,当问题对你来说看似复杂,你应该分清主次,并把最关键的内容抽象出来,当做独立的问题,并思考你能否解决。再扩展回归到复杂问题。
9. 与、或、非、相等、不等;这几个逻辑术语,能够让你的所有疑问都消除,当你写的程序错误率很高时,要学会前因后果分析,以及灵活运用注释,把不相干的注释掉,看最后哪条语句才是病句。最后还需要学会调试工具(初期可以用输出语句来代替出错点检测)。
10. 好了,接下来,也是最重要的总结了,只要你能把握,就能够初难后易,贯通到底:
① 独立思考解决程序问题,当你的思维能够习惯性地考虑到足够多的可能性后,你会习惯越来越容易的解决别人难以把握的问题。
② 逆向思维,由于程序所体现的东西是二元性质的,即不是这样,就是那样,永远不会模凌两可,所以你从结果可以一步一步倒推到原因。
③ 坚信你所学到的C++内容能够解决你所遇到的所有你需要解决的程序设计问题。其实仅仅从逻辑上来说,你学完任何入门C++书的前7章基本能解决逻辑上绝大部分问题了。很多高深的经典问题比如TSP和寻路等等(当然,可能你还需要一些数据结构知识),但是
你应该相信,即使你没学过多少后续理论,也能在一定程度上局部解决你遇到的任何程序设
计逻辑题。
11. 注意事项:
∙ 初学者常犯的错误是:
∙ 分号忘记
∙ 大括号不匹配,中括号不匹配,小括号不匹配(你应该先打括号,再填入内容:切记,高手都这样)。如果你不这么做,会出现这样的困惑:((()()()((()()((((()()((... 这个右边你能一眼看出要补充多少右括号吗?以及哪个括号对应哪个括号?
∙ 赋值'=' 与等于 '==' 混淆。
∙ 作用域问题:没声明就使用变量,没初始化就是用变量,变量名冲突(同一个作用域一样的变量名字被声明了)等等。
∙ if语句大括号体内范围不明确,最好不论是if、for、while,只要涉及到大括号的语法结构,都不要省略,并明确在视觉上对称,以免混淆哪个应该在哪个包括区域内。
∙ 指针,要清晰指针和一般变量的区别和使用方法,怎么弄清?不断的写代码,改代码,测试,所见即所得,至少你写的代码得到的结果不会和理论相悖,并能验证你对它们的理解是否有误。
∙ 类和对象,需要通过写代码去不断验证你对重载、继承、多态、内联、友元、静态、指针对象等等概念的理解和它们之间的正确关系。
∙ 模板,同样少不了你要不断敲代码改写代码去验证你所认为的是否和实际相符合。改变认知的过程及其重要,学习就是不断构造认知,以及修正观点的过程。
1. 学C++最灵魂的地方:在不断通过写代码并编译、链接运行去【验证】你的认知和实际客
观情况是否符合的前提下,你要和书的作者达到一个程度的默契,只有达到一定程度的默契,你才能够看最少的内容,领会最多的东西。通常国外C++入门书会讲得更加详细,你就有更多时间来深入了解作者的【意图】,为什么呢?如果一本书的作者想通过这本书表达什么的意图都被你知道了,你不就知道了最为核心的东西吗?那么围绕核心去思考总是最高效的。 (以上文字你可以总结为: 验证 + 意图)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论