第1章 准备好学习 C++
第1章 准备好学习 C++
1.1 C++ 是一种接近生活的高级算法语言
学习程序设计语言的目的是要编写计算机软件程序,然后把软件程序输入给计算机,让计算机运行软件程序去解决生产、生活、工作等方面的实际问题。C++语言也不例外,它是多种程序设计语言中的一种,并且是一种高级程序设计语言,所谓高级,是指它接近于人类生活中的语言。人类用 C++ 语言去表达、描述和处理事情与人本身的做法是很接近的,所以,人类运用 C++ 语言是比较直接、方便和容易的。那么,C++ 语言的特性是什么呢?它有什么优势呢?为什么要学习 C++ 呢?本节会一一进行介绍。
1.1.1 C++的特性
C++的主要特性是:用 C++语言编写程序,就像写文章一样,文章是由一个个字、词组成一个句子,又由若干个句子组成一篇文章,C++程序也是一样,由一个个关键字、名字、代号等组成一条语句,又由若干条 C++语句组成一篇 C++文章——C++程序;另外,文章有议论文、应用文、散文、诗歌等体裁,C++程序也有多种程序结构。总之,编写 C++程序与写文章是相近的。
此外,编写 C++ 程序的思路与人想事情、做事情的思路是很接近的。
例如,计算一个式子 $ t=5+6 $,并且写出 t 的答案。
C++的核心程序部分是这样表达的:
t=5+6,
cout<<"t="<<t,
程序运行结果是:
t=11,
可以看出,这与人的想法、做法很接近,t=5+6 是完全一样的,cout 对应于“答”,计算机会把双引号引起的字符信息原样显示出来,即 t=,接着又把答案显示在等号后,所以运行结果就是 t=11。其实,只要能将人的思路对应到 C++ 的字、语句、结构(这个例子采用的是顺序结构,即先计算,再写答案)上,C++程序就编写出来了。
C++还有一些技术上的特性,例如,支持数据封装、类的继承、函数的多态等,这些都暂时不用知道得那么清楚,因为要编写成功的C++程序,这些技术特性自然会体现在其中。
1.1.2 C++的优势
从上述 C++ 的特性可以看出,C++ 有如下一些优势:
1)编写 C++程序十分方便、容易,只要将人做事的思路、步骤进行适当的转换,就能形成 C++程序。
2)C++语言简洁、结构紧凑、运用灵活。
3)C++语言易学、易懂。
4)C++语言应用广泛。
1.1.3 学习 C++ 的必要性和重要性
学习 C++ 语言,是为了用这种功能强大的语言创造计算机的脑袋——计算机软件程序,要是计算机没有了这个脑袋,想象一下计算机会变成什么——一台死机器,同样,全自动电饭锅、全自动洗衣机、自动化装置等,也都是这样的结局。
学习 C++ 的必要性和重要性就在这里了。
作者了解过一些学生,他们迷上了 C++ 就像迷上了电脑游戏,其乐趣还胜于玩电脑游戏。在一道道 C++ 编程题的创作过程中,你主动指挥计算机动作,而计算机在你的指挥下,乖乖地按你的命令运行,得到了你心想事成的结果。这些学生感受到了真正的乐趣,从与他们的交谈中,看得出他们内心的那份喜悦,那份向往,那份追求,在他们的作业反馈、教学反馈中,也颇有同感。所以,C++ 的伟大之处,在于你可以通过它指挥计算机动作,即做到机随人行,这在后面的学习中会有越来越深的体会。
1.2 C++的难处
不是说 C++ 易学、易懂、易运用吗?怎么又说学习 C++ 有难处了呢?是的,任何事情都有它的难、易两面性。同样一件事情,不同的人去做,其难易程度就不同。下面来分析 C++ 究竟难在哪里,为什么大部分学习者都认为 C++ 难学。
1.2.1 C++本身的难处
C++语言具有众多的优点和技术性能,伴随而来的则是复杂的知识,包括丰富的运算符、数据类型,众多的名词术语和规定,许多已编好的 C++标准函数、模板,可以直接访问内存地址,进位位操作,指针,面向对象的程序设计等,这往往使得初学者望而却步。
1.2.2 人为造成的学习 C++ 的难处
社会上都说 C++ 难学,一传十,十传百,不难也认为难了,特别是对于初学者,人云亦云,乍一看,那么多名词术语,确实难,这种先入为主的观念是造成 C++ 难学的原因之一。
作者通过多年来在教学实践中与学生的交流,以及在网络上获取的信息,总结出了C++难学的最主要原因:学习者的学习目的不正确,学习意志不坚强。例如,一些学习者是为考试、为学分、为文凭而学,即不是真的想学,而是应付着学,这是学不好的。另外,在学习C++的过程中碰到问题、困难时,部分学习者还会表现出学习意志上的不坚强,甚至打退堂鼓,这当然不可能学好了。
还有就是教的方法不当,例如,有些教师没有充分备好课,没有很好地引导学生去学,等等,也会造成 C++ 难学。
此外,一些学习者的学习方法不当也会造成 C++ 难学。例如,一开始就直接用 C++ 写语句,而不是先把人的做法想通,人都想不通,机怎么随人行呢?还有就是不愿意写提纲、画流程图,不愿意纸上谈兵,一开始就在电脑上编程,想到一句就敲入一句,这也不可能很好地掌握 C++。另有些学习者学了不记,不实践,不独立编程,而是依赖于从书上、网上找程序,没有充分调动大脑的主动性去学,没有亲自从头到尾去编写程序,这也等于没有真正学习 C++,结果肯定是没法掌握 C++。
一般 C++ 的课程学习是安排在大学一年级或大学二年级,这一阶段的大学生大多数还是以高中时期的机械记忆方式为主,而不是以理解记忆为主,再加上现在很多 C++ 题目答案在网上比比皆是,所以学生只要找到相应的题解,基本上不用怎么理解就可以应付学习了,但换了药(实际问题)之后,平时只会处理换汤不换药问题的学习者就无从下手了。所以学习 C++ 最重要的是自主解题,勤学多练,学用结合,巩固提高。此外,有的学习者还是立足于学例题、用例题的方式,热衷于搞题海战术,但例题弄得再明白,有可能还是不会自己编写程序,因为你只会跟着别人的思路走,而没有培养好自己的编程设计思路,所以,就很难做到独立编程。
在网上了解到,在些学习者以为数学和英语要学得好才能学好 C++。这基本没有直接的关系,虽说 C++ 的关键字、语句等都是用英语写的,但和学英语至少要记 3000 个以上的单词相比就少得多,因为 C++ 中常用的字(关键字和保留字)就那么几十个,至于 C++ 标准函数名和类名等,在使用时查表就知道了,不需要记。关于数学方面,一般都知道或可以查到数学公式、算法及解题过程,只要学习者把人的解题过程用 C++ 语言来实现就行了。
还在网上了解到,有的学习者介绍他们的入门方法是这样的:通过学习 C++ 的知识和读懂 C++ 程序的案例,然后转换成人日常能接受的自然语言去学习。这是弄反了思维过程。应该是人先有想法,产生了日常自然语言,再去编写 C++ 程序,这样,才符合人的思维逻辑。而不是反过来,先有了结果(程序),再去思考人的想法。
在网上,又有学习者说:在编写程序时,先记录自己想的自然语言,然后写程序代码,再将程序代码转变为流程图。通过这样的过程提高自己的抽象逻辑思维能力。这就绕了个大圈子,有些步骤也弄反了。实际上,大可不必这么麻烦,按照本教材中介绍的“人定胜机,机随人行”法则,先把人解决问题、处理问题的想法和做法想通,然后通过提纲或简易流程图或流程图记录下来(即自然语言),再用 C++语言对号入座填写到流程图中的相应位置,则程序就出来了。接下来,用人脑跟踪运行,再进行上机调试、运行,则计算机就可以帮助读者完成任务了。该过程相当于写一篇文章,即先写提纲(或流程图),再写文章(程序),对于提纲大家是会写的,就是将人做事的过程和步骤用文字进行描述,剩下的问题是怎样将其转换成 C++程序,只要读者认真学习,用心记住 C++语句的基本功能,并学会按功能转换使用 C++语句即可。另外,在程序编写中,并没有太多的抽象,而主要是分解和细化,所以,读者不要把 C++想得那么高深。
也就是说,难处大多是人的学习态度、学习思路造成的,或是由于学习方法不当造成的。事实上,学习 C++ 并不难。
有的学习者一开始学 C++, 就想用 C++ 的工具编写程序,但由于工具较多、书写较长、代号也较多,实现起来相当不容易。因此,要踏实学好 C++ 语言的知识和编程思想,打好软件设计基础,并用 C++ 知识和编程思想去融会贯通、举一反三,这样,即使再复杂的程序、再多 C++ 工具的理解和应用都不成问题,加之努力学习和勤奋实践,学习者就会熟能生巧、运用自如了。
1.3 化难为易地学习 C++ 之精髓
1.2 节讲了 C++ 本身存在的难处和人为造成的学习 C++ 的难处,本节将讲解如何把 C++ 的难化为易,并道出学习 C++ 的精髓——“寓德于教(学),以德促教(学),人定胜机,机随人行”的十八字方针。教师应遵循“寓德于教,以德促教,人定胜机,机随人行”的十六字方针教学,学习者应遵循“寓德于学,以德促学,人定胜机,机随人行”的十六字方针学习 C++。
1.3.1 道德品质好,成才的基本条件
从古至今,大凡是有成就、成大器的人士,无一不是德高望重的人,所以人的道德品质决定了人的思想意识,决定了人的一言一行,决定了人的善恶好坏,决定了人的素质高低,也决定了人的事业成败。
学习者应该具备良好的道德品质,因为只有具备了良好的道德品质,才会在思想上树立起远大的目标、信念,才会不畏艰险、努力学习、勤于思索、勇于创新、积极进取、淡泊名利、团结协作,积极参加各种创新项目和社会实践活动,学到较多的知识,无私地为人类、为社会做贡献,从而成为高素质的创新人才,成为社会的有用之才,成为祖国合格的接班人。
归根到底,培养高素质创新人才的关键在于培养人的道德品质,只有这个基础打好了,高楼大厦的根基稳固了,才能通过日后的添砖加瓦,将整栋高楼大厦建成。所以,以道德品质为引领去培养高素质的创新人才是极其必要和重要的,以道德品质为引领去学好各种知识和本领同样是极其必要和重要的。
总之,要把学习 C++ 当做是日后为祖国、为人民多做贡献而积累知识和本领,要树立这样的远大目标和理想去学习,这样才能在心中有一盏明灯,才能在思想上把 C++ 化难为易。在学习的过程中,无论大家碰到什么困难,都不要气馁,要勤学苦练、勇攀高峰,这样才能学好 C++。
所以说,道德品质好,是学好 C++ 的关键,是把 C++ 化难为易的关键,是成才的基本条件。
1.3.2 心有灵 “C” 一点通
除了以高尚的道德品质引领 C++ 的学习外,在具体学习 C++ 知识时,还要做到老老实实、谦虚谨慎、勤学苦练,因为科学知识是来不得半点虚伪的。
学习者在学习 C++ 时要摒弃那种只用 C++ 解决数学题和只研究 C++ 语法题的观念,而应把学习 C++ 的视野扩大,将 C++ 与日常生活中的问题切实地联系起来。
国有国法,家有家规,学习 C++ 就必须按照 C++ 的语法、规则、要求去做,如若逆之,C++ 这个裁判就会出示黄牌或红牌警告,程序就会调试不通。所以掌握好 C++ 的语法、规则、要求是势在必行的,即必须要在心中装有 C++ 这个灵丹妙药才行得通,否则,就寸步难行了。
怎样才能达到心有灵“C”一点通呢?应该把 C++的关键字、语句及语法规则、程序结构、数据结构牢牢记住,要记住它们的功能、用法,并能熟练运用。当然,不是一下子就能把 C++的所有知识学会、记住的,不能有急功近利、急于求成的心态,饭要一口一口地吃,仗要一个一个地打,学习 C++必须要从容镇静、戒骄戒躁、严谨细致、前后联系、相互借鉴地学,要学一点、记一点、用一点、消化体会一点、联系一点、总结一点、提高一点,再学一点、再记一点、再用一点、再消化体会一点、再联系一点、再总结一点、再提高一点,依此循环往复,日积月累,C++这个知识球就会像滚雪球一样,越滚越大,心中的灵“C”就会越来越多,最终能达到融会贯通、运用自如的境界。
往往许多学习者学了不记或记不牢 C++ 的关键字、语句等知识,即脑袋空空,当然在编写程序时就困难重重,不知道该用什么词来造句,也不知道要造哪些句,不知道文章的总体结构应怎样设置等,结果就是编不出程序。就像小学生学中文一样,先学文字,再学词组,进而是学语法、造句,这些基本知识学到一定程度了,才有能力写文章,掌握 C++ 这门高级算法语言自然也应该遵循学中文的规律。
所以,一定要边学边用、边用边记、认真体会、总结提高,方能达到心有灵“C”一点通。
不但要学懂 C++ 知识,还要学会学习、运用 C++ 的方法,不是单纯地为了学习而学习,而是要达到举一反三、事半功倍的效果。
1.3.3 人定胜机,机随人行
人脑聪明还是电脑聪明?自然是人脑聪明,计算机的硬件和软件均是人设计制造出来的,人肯定比电脑聪明,肯定胜于电脑。所以应坚定不移地树立起“我一定能学好C++,我一定会成为C++高手”这个信念,这个信念会使你的精神堡垒更加坚固,当学习中遇到困难时,这个信念会站出来说:“不用怕,人定胜机”,会给你信心,给你勇气,助你成功;当你编写程序时,这个信念会支撑你:“人定胜机,我比电脑强,我一定能编写出程序,我一定会成功的!”。
“人定胜机”体现了人自信、自立、自强的精神,体现了不达目的誓不罢休的锐意进取精神。
电脑能运行是由于它既有硬件又有软件,而软件是人编写出来的,电脑的运行完全按照人的旨意运作,所以,机器是随人行的。如果要机器正确运行,则首先人设计的程序要正确;如果要使程序的逻辑正确,则人的设计思路得正确;如果要做到设计思路正确,则要求人要想通自己的做法。反过来说就是,编写程序时,人要先想通自己是怎么做的,不要先想C++,就只想人是怎么做的,然后就让机器跟着怎么做,即将人的做法转换成C++程序去处理事情,这就是“机随人行”了。
此外,还要求人要胆大心细,不要前怕狼,后怕虎,要大胆尝试,勇于创新,因为机器始终要乖乖地服从人的命令和指挥的,所以,不要怕电脑,而要信人脑!
总之,化难为易地学习 C++ 的原则就是:道德品质引领跑,人定胜机树立牢,C++ 知识把握好,机随人行成功笑!
1.4 思考题
- 你准备好学习 C++ 了吗?从哪些方面去准备?学习目的明确吗?
- 你学习 C++ 的计划是怎样的?是否切实可行?