《C++程序设计基础教程》学习指南
《C++程序设计基础教程》是针对初学程序设计语言的读者编写的入门教材,预期的读者主要有这样几类: 初学程序设计的自学读者、以此为C++课程教材或参考书的在校学生、以此为参考资料的C++程序员、C++课程教师。针对教师,笔者另外编写了配套的教师用书。对有经验的程序员而言,自然也不必遵循什么学习指导。因此笔者主要是对前两类读者提出一些学习建议,这里首先给出学习本套教材的总体建议,在本书的后续各章中还会有详细的导读。
1. 主教材《C++程序设计基础教程》的学习方法
自学读者,在阅读教材时,应该边阅读、边实践。有条件的,应该坐在计算机前,边阅读边亲自编写每一个例题程序,如果对于某些概念、语法存有疑问,应该立即编写程序予以验证。在完全理解了主教材内容以后,再开始做实验和习题。
对于在校学习C++课程的学生,应按照教师讲课的进度,提前预习教材。所谓预习,并不是要完全看懂,如果都看懂了,就不必听课了。预习的目的是大致浏览一下新的内容,了解哪些是难点、重点,将疑问记下来,听课时就比较主动。下课后要及时复习,然后再写作业。复习时要边看书边看笔记,这时一定要认真阅读书上的内容,要完全搞懂。教师可能不会在课堂上讲解书中的每一个例题,对于教师课上讲的例题和书上的例题,课后复习时都要阅读、上机实践,达到完全理解,要能够自己独立编写例题程序,还要尝试用不同的方法解决问题。做到这些以后,再开始写作业。
对于以上建议有的读者会不以为然,但这是大多数初学者收到事半功倍的途径。笔者在清华大学教C++课就一直是这样要求学生的,也曾经有学生在笔者讲完了上述要求之后,立刻站起来反驳: 你的要求太麻烦了,又要预习又要复习,我们有那么多课程要学,没有时间。但是后来的无数事实证明,想省时间的多半欲速则不达,甚至出现“夹生饭煮不熟”的情况,而一步一个脚印往前走的,走得最从容,总体上花的时间也最少。当然,这只是针对大多数读者的一般建议,具体到每个人,还要根据自己的情况选择合适的方法。
2. 学生用书的使用方法
每学习一章主教材内容,都应该及时通过实验和习题巩固知识、提高实践能力。学生用书中的实验,是针对主教材每一章的重点内容设计的最基本的实践任务,有详细的实验指导,很容易入手,应该首先完成。完成实验之后,可以根据自己的时间和教师的要求,选择部分或全部习题来做。
本书给出了全部习题的答案,这是为了方便没有教师指导的自学读者。但是不少读者在没有深入思考之前就急于看答案,这是有害无益的,这样做不仅不能真正提高自己的编程能力,还会扼杀自己的创造性思维能力。有些学生在临近考试的时候,就来诉苦: 书上的例题和习题解答都能看懂,可是自己写程序就不会下手。仔细一问,这些都是平时急于看习题答案的学生。自学读者纷纷来信喜欢习题解答,而大多数教师(包括笔者自己)都不希望学生看到习题解答。这个矛盾困扰了笔者很久,始终没有找到两全的解决方案。所以本书中给出习题解答,但同时建议学生尽量独立完成习题。
当然,有些章的习题较多,如果读者没有时间全部做完,也可以将一部分习题解答作为例题来学习。
3. 关于编程能力的困惑
学完本套教材之后,许多读者都会遇到这样的困惑: C++语言学会了,但是面对实际问题还是不知道该如何写程序,这是为什么?每个学期末都有很多学生来问笔者这种问题,于是每学期最后一节课,笔者都要举这样的例子: 我们都是以中文为母语的,对中文的掌握可谓精通了。但是是否有能力用中文写出某个项目的实施方案、某个企业的发展规划?恐怕大多数学生做不到,因为只掌握语言是不够的,还需要有相关的专业知识和工作经验。
编写程序的道理也是相同的,就是要用程序语言将需要解决的问题和解决问题的方案描述清楚。仅仅掌握C++语言是不够的,还需要学习解决各类问题的专门方法。为此很多程序语言教材(包括本套教材)都声称: 不仅介绍语言本身而且介绍分析问题和解决问题的方法。但是笔者要说句大实话,这些都只是介绍分析问题和解决问题方法的皮毛。如果只读一本薄薄的书,就什么程序都会写了,学校里还要开设那么多基础课和专业课干什么?比如“高等数学”、“计算方法”、“数据结构”、“软件工程”等。学会一门高级语言只是掌握了一种描述工具,要真正具备较强的分析问题和解决问题的能力,要学的东西还很多,除了认真学习、勤奋实践以外没有捷径可走。所以初学者要给自己定一个现实的目标,掌握一些基本的解决问题方法,能够运用C++语言编写程序解决一些简单问题,并为读者今后继续学习相关课程打开一扇窗户。前 言
计算机程序设计是一门实践性很强的课程,因此仅仅通过阅读教科书或听课是不可能完全掌握的,学习程序设计的最重要环节就是实践。对于自学读者来说,更多一重困难,就是在学习和实践过程中缺乏指导。
凡是学习程序设计的人,往往有这样的感觉: 看书或听课时,对老师讲的和书上写的内容基本上能够理解,但是当需要自己编程时却又无从下手。相信每一个讲授程序设计课程的教师都有过这样的经历: 有些问题,尽管我们在课上再三强调,反复举例,学生还是不能够完全理解,上机时更是错误百出。应该说,这是学习过程中的必然现象。
要想能够把书本上的知识变为自己所具有的能力,所需要的是实践、实践、再实践。在实践环节中,起主导作用的是学习者自己,旁人是无法代劳的,也不能期望有什么一蹴而就的捷径。但是由于学生在实践过程中不能随时随地得到指导,因此花费时间较多,总感觉程序设计课作业负担太重,有的学生甚至因为花四五个小时搞不懂一个简单的程序而失去学习兴趣。像C++这样面向对象的程序设计语言学习起来尤其如此。
本书是在原《C++语言程序设计(第3版)学生用书》的基础上修订编写的,本书作为与《C++程序设计基础教程》配套的学生用书,目的就在于为读者的学习提供一些指导,为提高读者的编程能力助一臂之力,使读者在实践的过程中少些曲折和彷徨,多些成功的乐趣。
本书首先给出一个简要的“学习指南”,其余章节与主教材《C++程序设计基础教程》相对应,每章内容分为三部分: 第一部分是“要点导读”,主要是为自学读者指明学习重点,建议学习方法。第二部分是“实验指导”,每章都有一个精心设计的实验,与《C++程序设计基础教程》相应章内容配合,使读者在实践中达到对主教材内容的深入理解和熟练掌握。每一个实验都包括“实验目的”、“实验任务”、“实验步骤”,实验的完整参考程序可从网上下载(http://rjjsjc.cic.tsinghua.edu.cn) ;第三部分是习题解答,给出了《C++程序设计基础教程》各章习题的参考答案,共171道习题。每个题目可能有多种解法,这里我们仅给出一种参考解法。大部分题目是编程题,我们在解答中给出了主要程序段的源程序清单,有时不是完整的程序,如果需要运行这些语句,只需将它们插入调试程序即可。
这些习题解答和实验内容不仅可以指导读者上机练习,也可以由教师选做例题在课上演示,使教学内容更加丰富。如果读者没有足够的时间一一做完全部习题和实验,可以将剩下的题解作为例题阅读也不失为一种好的选择。
本书中的全部程序都在Windows环境下Visual C++中测试通过。
为了给自学读者更多的帮助,作者将自己在清华大学的教学资源(包括例题源代码、电子教案等)向中国国内读者免费开放,网址是: http://rjjsjc.cic.tsinghua.edu.cn.
参与本书编写工作的还有: 董渊、何江舟、张瑞丰、孟鸿利、田荣牌、李玉山、李超、薛海伟。
感谢读者选择使用本书,欢迎您对本书内容提出意见和建议,我们将不胜感激。作者的电子邮件地址: zhengli@mail.tsinghua.edu.cn,来信标题请包含“C++ book" .
作 者2010年12月于清华大学