第3版前言

程序设计是计算机专业十分重要的一门课程,是实践性非常强的一门课程,也应该是一门非常有趣、让学生很有成就感的课程,但在教学过程中,很多学生的反应是听懂了,但不会做,以至于最后丧失了兴趣。我们认为主要的问题是,在教学过程中教师过分重视程序设计语言本身,强调理解语言的语法,而没有把重点放在解决问题的方法上。

本书以介绍基本的程序设计思想、概念和方法为基础,强调算法、抽象等重要的程序设计思想,并选择C++为教学语言。C++是业界非常流行的语言,它使用灵活,功能强大,既支持过程化的程序设计,又支持面向对象的程序设计,可以很好地体现程序设计的思想和方法。本书旨在强调思想,C++语言服务于这个目标,因此,对于C++的一些特殊的成分和技巧,本书将不予重点介绍。

本书是作者根据多年来在上海交通大学讲授“程序设计”课程的经验,并参考近年来国内外经典的程序设计类图书之后编写而成的。下面介绍本书的特点。

■ 相比于程序设计语言,本书更强调如何解决问题,强调程序设计的思想和方法。它以C/C++为语言环境,全面介绍结构化程序设计和面向对象的程序设计的方法。

■ 注意培养学生良好的程序设计风格,讲解了该如何进行变量/函数的命名、程序的排版、常用语句的组合等。

■ 本书采用以应用引出知识点的方法,让学生先知道学习的目的,提高学生的学习兴趣。特别是尽可能地利用计算学科中的经典问题,如汉诺塔、八皇后问题等,使学生在学习程序设计的过程中不断加深对计算学科的了解。

■ 本书内容丰富,覆盖面广,有一定难度。但是,本书在内容的安排上采用了模块化的结构,某些难度较大的内容用*号进行标注,学习时可以先略过,不会影响整个知识的连贯性。教师可以根据学生实际情况选讲部分内容。

■ 讲解深入。例如对函数的调用、变量的作用域、递归的处理等,本书都解释了计算机内部的处理过程,使学生不仅知其然,还知其所以然。

■ 强调解决问题的方法。介绍了常用的算法设计方法,包括枚举法、贪婪法、分治法、回溯法和动态规划。

■ 衔接数据结构课程。对数据结构常用的工具做了详细的介绍,例如链接结构、容器和迭代器等。

■ 本书每一章都设有“编程规范及常见错误”小节。“编程规范”旨在指导学生养成良好的程序设计风格,“常见错误”总结了初学者常犯的错误。

■ 追随语言的发展,引入C++11新增加的功能。

■ 本书提供人邮学院慕课平台作支撑,操作方法见改版说明。另外,书中的重难点知识处,均放置了二维码,学习者可扫描二维码打开教学视频进行在线学习。

本书得以顺利地编写和出版,首先要感谢上海交通大学电信学院程序设计课程组的各位老师,是大家经常在一起的讨论使我们不断加深对程序设计的理解;还要感谢那些可爱的学生们,是他们与我们在课上和课后的互动,使我们了解他们的困惑,以及学习难点。

编 者
2016年5月