前言FOREWORD



本书参照ACM和IEEE CS Computing Curricula 2020(简称CC2020)以及全国高等学校计算机教育研究会编制的《计算机核心课程规范——计算机程序设计(征求意见稿)》(简称《规范》)的要求,力图通过教学,使学生掌握结构化程序设计方法和面向对象程序设计方法,掌握C++程序设计语言的语法、语义和语用,能够熟练运用C++语言解决一般问题。此外,通过课程学习,学生可以掌握学习高级程序设计语言的一般方法,养成良好的程序设计风格,对软件工程有初步的认识。本书虽然以讲授C++为主,但并非单纯讲授一门语言,而是更加强调对程序设计方法的掌握和程序设计风格的养成,为学生今后继续学习其他高级程序设计课程打下坚实的基础。
本书的编写参照CC2020和《规范》的知识体系,覆盖或涉及其中的程序设计基础(PF)、程序设计语言(PL)、算法和复杂性(AL)3个领域(area)的多个知识单元(unit)。由于部分知识单元的内容将在其他课程(如“数据结构”“算法设计与分析”“编译原理”等)中详细介绍,因此本书并未深入讲解。
本书覆盖或涉及《规范》要求的所有基础知识点、面向对象程序设计扩展知识点以及泛型程序设计扩展知识点。
本书覆盖或涉及CC2020的如下知识。
(1) 程序设计基础:
● 程序设计基本结构。
● 算法和问题求解。
● 基本数据结构。
● 递归。
● 事件驱动程序设计。
(2) 程序设计语言:
● 程序设计语言概论。
● 声明和类型。
● 抽象机制。
● 面向对象程序设计。
(3) 算法和复杂性:
● 算法策略。
● 基本算法。
本书参考了国外著名高校教材,结合国内高校教学的需求和学生的特点,力求形成如下特色。
(1) 注重知识的系统性和连贯性。本书面向大学本科计算机类专业的学生,参照CC2020和《规范》的要求,在教学内容上注意与后续课程(如“数据结构”“算法设计与分析”“编译原理”“软件工程”等)的衔接。
(2) 突出程序设计方法,强调严密的逻辑思维。本书并非单纯讲授C++程序设计语言,而是在介绍C++程序设计语言的基础上,系统地讲解程序设计方法,包括结构化程序设计方法和面向对象程序设计方法,特别是后者。程序设计方法是本书的讲授重点。因此,在本书的示例程序中,一般都配有分析、解释和经验总结等,帮助学生领会程序设计的方法和思想。
(3) 注重实践能力的培养。本书提供丰富的典型例题,每章之后配有难易和综合程度各不相同的习题。书中还适当地穿插介绍一些编程技巧和软件设计经验,使学生能够从实践的角度更好地学习和掌握C++程序设计方法。本书还提供了配套的线上实训和教师用PPT,供读者免费使用,相关资源可从清华大学出版社官网http://www.tup.com.cn下载。
(4) 注重程序设计风格的养成。良好的程序设计风格是保证软件质量的基础。本书除了有专门章节介绍程序设计风格外,始终突出对程序设计风格的要求,并介绍了从分析、设计到编程实现良好程序设计风格的方法。书中的示例程序即按照这种方法实现,在变量命名、源程序格式等方面都贯彻统一的风格。
C++是当今最流行的一种高效实用的高级程序设计语言,应用十分广泛。C++也是一门复杂的语言,与C语言兼容,既支持结构化程序设计方法,也支持面向对象程序设计方法,因而成为编程人员使用最广泛的工具。在学习C++的基础上,可以进一步学习其他程序设计语言,C++架起了通向强大、易用、真正的应用软件开发的桥梁。本书分为两部分: 第一部分包括第1~9章,是程序设计基础部分,主要介绍C++程序设计语言、程序结构和结构化程序设计基础;第二部分包括第10~15章,是面向对象程序设计部分,它建立在C++程序设计基础之上,讲述了面向对象程序设计方法。书中带的章节为选讲内容,可以根据实际情况取舍。
本书是作者根据在国防科技大学多年从事教学和实践的经验与体会编写而成的,适合作为高等学校“程序设计基础”或“高级语言程序设计”课程的教材,也可供广大读者自学参考。由于作者水平有限,书中难免存在缺点和错误,恳请广大读者批评指正。

作者
于国防科技大学计算机学院
2023年1月