首页 > 图书中心 >图书详情

C++语言程序设计(第5版)

提供课件、代码,咨询QQ:2301891038(仅限教师)普通高等教育“十一五”规划教材;普通高等教育精品教材,“十二五”普通高等教育本科国家规划教材;北京市高等教育精品教材;清华大学优秀教材特等奖;中国高校科学技术奖二等奖;国家精品在线开放课程、国家精品资源共享课教材

作者:郑莉,董渊
定价:79.80
印次:5-3
ISBN:9787302566915
出版日期:2020.11.01
印刷日期:2021.06.21

本书以面向对象的程序设计思想为主线,以通俗易懂的方法介绍C++语言,引导读者以最自然的方式,将人类习惯的面向对象的思维方法运用到程序设计中。主要内容包括程序设计基础知识、类与对象的基本概念、继承与多态、输入输出流,以及泛型程序设计。此外,本教材还介绍了一些常用数据结构基础知识,使得读者学习本书后,能够解决一些简单的实际问题。整套教材语言生动、流畅,深入浅出。适用于各类学校的C++语言程序设计课程。

more >

前言 一、 版本说明 本书第1版于1999年出版,第2版于2001年出版,第3版于2003年出版,第4版于2010年出版。第5版是在前4版的基础上,广泛听取了读者和同行的建议,参考了最新的资料,并根据作者本人在授课过程中的经验修订而成。第5版的主要修改是增加了C++11、C++14的部分语法,并按照新的C++标准重新修订更新了原有内容。 本书第1版于2001年获得中国高校科学技术奖二等奖;第3版于2005年获得北京市高等教育精品教材奖、2008年获得清华大学优秀教材特等奖;第4版于2011年获得教育部普通高等教育国家级精品教材奖。同时,本书也是国家级教学成果二等奖、北京市教学成果一等奖和二等奖成果的重要组成部分。该书于2008年和2011年分别获评教育部“普通高等教育‘十一五’国家级规划教材”和“‘十二五’普通高等教育本科国家级规划教材”。该书英文版于2019年由德国德古意特公司正式出版。 二、 本书的编写背景 C++语言是从C语言发展演变而来的一种面向对象的程序设计语言。C++语言的主要特点表现在两方面: 一是兼容C语言,二是支持面向对象的方法。 面向对象的程序设计(ObjectOriented Programming,OOP)方法将数据及对数据的操作方法封装在一起,作为一个相互依存、不可分离的整体——对象。对同类型对象抽象出其共性,形成类。类中的大多数数据,只能用本类的方法进行处理。类通过一个简单的外部接口,与外界发生关系,对象与对象之间通过消息进行通信。这样,程序模块间的关系简单,程序模块的独立性、数据的安全性具有良好的保障,通过继承与多态性,使程序具有很强的可重用性,使得软件的开发和维护都更为方便。 由于面向对象方法的突出优点,目前它已经成为开发大型软件时所采用的主要方法。而C++语言是应用最广泛的面向对象的程序设计语言之一。 长期以来,C++语言被认为是较难使用的专业开发语言,所以有很多老师和学生也都认为C++语言作为大学第一门程序设计课是很难的。C++语言与面向对象的程序设计方法真的很难吗?不是的! 其实C语言产生的初期,也只被少数专业开发人员使用。但随着计算机科学的发展,计算机技术已渗透到各学科的研究和应用中,C语言已经被各专业的工程技术人员广泛应用于本专业的科研开发,也被很多学校作为第一门程序设计语言来讲授。C++语言兼容了C语言的主要语法和特点,同时提供了比C语言更严格、更安全的语法,更适合开发大型复杂程序。从这个意义上讲,C++语言首先是一个更好的C语言。 C++语言是一个面向对象的编程语言,而面向对象的编程方法一度被看作是一门比较高深的技术。这是因为在面向对象分析(ObjectOriented Analysis,OOA)和面向对象设计(ObjectOriented Design,OOD)理论出现之前,程序员要写一个好的面向对象的程序,首先要学会运用面向对象的方法来认识问题和描述问题。现在,OOP的工作比较简单了,认识问题域与设计系统成分的工作已经在系统分析和设计阶段完成,OOP工作就是用一种面向对象的编程语言把OOD模型中的每个成分书写出来。 面向对象方法的出现,实际上是程序设计方法发展的一个返璞归真的过程。软件开发从本质上讲,就是对软件所要处理的问题域进行正确的认识,并把这种认识正确地描述出来。面向对象方法所强调的基本原则,就是直接面对客观存在的事物来进行软件开发,将人们在日常生活中习惯的思维方式和表达方式应用在软件开发中,使软件开发从过分专业化的方法、规则和技巧中回到客观世界,回到人们通常的思维。 那么,学习C++语言是否应该首先学习C语言呢?不是的,虽然C++语言是从C语言发展而来的,但是C++语言本身是一个完整的程序设计语言,完全适合作为程序设计的入门语言来学习。 三、 本书的特色 本书的特色是内容全面、深入浅出、灵活剪裁、立体配套。在学堂在线平台(https://next.xuetangx.com)上,有与本书配套的国家精品在线开放课程“C++语言程序设计基础”和“C++语言程序设计进阶”,这两门在线课程合起来是清华大学本科生“C++语言程序设计”课程的在线版,包括了校内授课的全部内容、与校内学生作业相同的在线自动评测的编程练习题,可下载PDF格式的讲稿、全部例题的源代码。 对于使用本书作为教材的老师,可以联系清华大学出版社向教师提供参考讲稿(pptx格式和PDF格式的演示文稿,含课堂练习题)、课堂讨论题目和参考答案(可用于混合式教学的翻转课堂)。 使用本书的教师、学生和自学读者,可以同时使用配套的《C++语言程序设计(第5版)学生用书》,其中有习题的参考解答、实验指导。 本书是面向广大初学者的教材,也是为大学的“计算机程序设计”课程教学量身定制的,这类课在多数学校一般只有32~48讲课学时和同等的实验学时,所以本书包含了标准C++的主要内容,但是C++的语法并没有100%涵盖,对泛型程序设计和STL库只做了简单介绍。 自1999年第1版出版以来,本书已经在清华大学等100多所学校的不同专业中使用,取得了良好的教学效果。 本书将C++语言作为大学生的计算机编程入门语言,不仅详细介绍了语言本身,而且介绍了常用的数据结构和算法、面向对象的设计思想和编程方法、UML建模语言。全书以面向对象的程序设计方法贯穿始终,每章都是首先阐述面向对象的程序设计思想和方法,由实际问题入手,然后引出必要的语法知识,在讲解语法时着重从程序设计方法学的角度讲述其意义和用途。编写本书的宗旨是,不仅要使读者掌握C++语言本身,而且要能够对现实世界中较简单的问题及其解决方法用计算机语言进行描述。当然,要达到能够描述较复杂的问题域还需要学习“面向对象的软件工程”等其他课程。 针对初学者和自学读者的特点,本书力求做到深入浅出,将复杂的概念用简洁浅显的语言娓娓道来。不同学校可以针对自身的教学特点,选择不同的章节组合进行教学。如果学时较少,可以只选择第1~8章、第11章。每章的深度探索也是选学内容,可以根据不同专业的教学需求进行选择。 作者本人使用本书讲授的清华大学本科生课程,有讲课32学时和48学时两种,实验课学时数均为32学时,课外学时数为32学时,每学时45分钟。建议讲课学时数至少32学时,分配如下: 第1章2学时,第2章4学时,第3章2学时,第4章4学时,第5章2学时,第6章 4学时,第7章 2学时,第8章 2学时,第9章4学时,第10章 2学时,第11章2学时,第12章2学时。 如果课程安排的讲课学时超过32学时,可以酌情在课上穿插安排课堂练习、课堂讨论等。 实验学时数的分配请参考配套的《C++语言程序设计(第5版)学生用书》。 四、 内容摘要 第1章绪论。从发展的角度概要介绍了面向对象程序设计语言的产生和特点;面向对象方法的由来和主要的基本概念;并简单介绍了什么是面向对象的软件工程。最后,介绍了信息在计算机中的表示和存储以及程序的开发过程。 第2章C++语言简单程序设计。讲述C++语言程序设计的基础知识。首先简要介绍C++语言的发展历史及其特点;接着学习构成C++语句的基本部分:字符集、关键字、标识符、操作符等。还有C++语言的基本数据类型和自定义数据类型,以及算法的控制结构:顺序、选择和循环结构。“深度探索”介绍变量的实现机制和C++语言表达式的执行原理。 第3章函数。讲述C++语言的函数。在面向对象的程序设计中,函数对处理问题过程的基本抽象单元,是对功能的抽象。同时,使用函数也为代码的重用提供了技术上的支持。我们主要从应用的角度讲述各种函数的定义和使用方法。“深度探索”介绍运行栈与函数调用的执行、函数声明与类型安全。 第4章类与对象。首先介绍面向对象程序设计的基本思想及其主要特点:抽象、封装、继承和多态。接着围绕数据封装这一特点,着重讲解面向对象设计方法的核心概念——类。其中包括类的定义、实现以及如何利用类来解决具体问题。最后,简单介绍了如何用UML描述类的特性。“深度探索”介绍位域、用构造函数定义类型转换,以及对象作为函数参数和返回值的传递方式。 第5章数据的共享与保护。讲述标识符的作用域和可见性及变量、对象的生存期;使用局部变量、全局变量、类的数据成员、类的静态成员和友元来实现数据共享,共享数据的保护,以及使用多文件结构来组织和编写程序,解决较为复杂的问题。“深度探索”介绍常成员函数的声明原则,代码的编译、连接与执行过程。 第6章数组、指针与字符串。讨论数组、指针与字符串。数组和指针是C++语言中最常用的复合(构造)类型数据,是数据和对象组织、表示的最主要手段,也是组织运算的有力工具。本章首先介绍数组、指针的基本概念,动态内存分配以及动态数组对象。接着围绕数据和对象组织这一问题,着重讲解如何通过使用数组和指针解决数据、函数以及对象之间的联系和协调。对于字符串及其处理,本章重点介绍string类。“深度探索”介绍指针与引用的联系、指针的安全性隐患及其应对方案,以及const_cast的应用。 第7章类的继承。讲述类的继承特性。围绕派生过程,着重讨论不同继承方式下的基类成员的访问控制问题、添加构造函数和析构函数。接着讨论在较为复杂的继承关系中,类成员的唯一标识和访问问题。“深度探索”介绍组合与继承的区别与联系、派生类对象的内存布局,以及基类向派生类的转换及其安全性问题。 第8章多态性。讲述类的另一个重要特性——多态性。多态是指同样的消息被不同类型的对象接收时导致完全不同的行为,是对类的特定成员函数的再抽象。C++语言支持的多态有多种类型,重载(包括函数重载和运算符重载)和虚函数是其中主要的方式。“深度探索”介绍多态类型与非多态类型的区别、运行时类型识别机制,以及虚函数动态绑定的实现原理。 第9章模板与群体数据。群体是指由多个数据元素组成的集合体。群体可以分为两大类:线性群体和非线性群体。本章介绍模板的基础语法和几种常用的群体类模板。 本章讨论的群体的组织问题,指的是对数组元素的排序与查找方法。排序(sorting)又称分类或整理,是将一个无序序列调整为有序序列的过程。查找(searching)是在一个序列中,按照某种方式找出需要的特定数据元素的过程。 最后“深度探索”介绍模板的实例化机制、为模板定义特殊的实现、模板元编程简介和可变参数模板简介。 第10章泛型程序设计与C++语言标准模板库。泛型程序设计就是要将程序写得尽可能通用,同时并不损失效率。本章简单介绍C++语言标准模板库(STL)中涉及的一些概念、术语,以及它的结构、主要组件的使用方法。重点介绍容器、迭代器、算法和函数对象的基本应用。目的是使读者对STL与泛型程序设计方法有一个概要性的了解。“深度探索”深入介绍深层复制与浅层复制的问题;还介绍了STL组件的类型特征与STL的扩展问题;以及Boost库。 第11章流类库与输入输出。讲述流的概念,然后介绍流类库的结构和使用。就像C语言一样,C++语言中也没有输入输出语句。但C++编译系统带有一个面向对象的I/O软件包,它就是I/O流类库。“深度探索”介绍宽字符、宽字符串与宽流,以及对象的串行化问题。 第12章异常处理。讲述异常处理问题。异常是一种程序定义的错误,在C++语言中,异常处理是对所能预料的运行错误进行处理的一套实现机制。try、throw和catch语句就是C++语言中用于实现异常处理的机制。有了C++异常处理,程序可以向上层模块传递异常事件,这样程序能更好地从这些异常事件中恢复过来。“深度探索”介绍异常安全性问题和避免异常发生时的资源泄露。 五、 作者分工 本书前4版的合作作者董渊、何江舟编写的内容仍继续作为本版的重要内容。另外,王勇、梁嘉骏参与了本版教材的编写工作,对全部例题按照C++11、C++14标准进行了重新调试,补充了部分新的语法内容。 感谢读者选择使用本书,欢迎您对本书内容提出意见和建议,我们将不胜感激。作者的电子邮件地址为zhengli@tsinghua.edu.cn,来信标题请包含“C++ book”。 作者2020年8月于清华大学

more >
扫描二维码
下载APP了解更多

同系列产品more >

Java语言程序设计(第3版)

郑莉 张宇
定 价:79.90元

查看详情
数据结构算法解析

殷人昆
定 价:158元

查看详情
高级计算机网络(第2版)

徐恪、徐明伟、李琦
定 价:89元

查看详情
数值分析与算法(第3版)

喻文健
定 价:59元

查看详情
物联网与智能卡技术基础

王爱英
定 价:45元

查看详情
图书分类全部图书
more >
  • 郑莉,清华大学计算机科学与技术系教授;主讲MOOC“C++语言程序设计”、“Java程序设计”;国家精品资源共享课负责人;全国高等学校计算机教育研究会副理事长;全国高等院校计算机基础教育研究会副会长;全国信息技术标准化技术委员会教育技术分技术委员会秘书长。主要研究方向:计算机教育、教育信息化、软件工程,主持和参加多项国家863、支撑计划课题和教育部课题。
    主编出版教材20余部,其中《C++语言程序设计》获教育部自然科学奖和国家精品教材称号。《C++语言程序设计》、《Java语言程序设计》(本MOOC配套教材)为“十二五”普通高等教育本科国家规划教材
    起草教育信息化相关国家标准5部、国际标准1部。
    获教学成果奖、北京市教学成果奖、教育部自然科学奖、教育部科技进步奖、北京市科技进步奖、电子学会科技进步奖等9项国家、教育部、北京市奖励。
  • 本书的特色是内容全面、深入浅出、灵活剪裁、立体配套。在学堂在线平台(https://next.xuetangx.com)上,有与本教材配套的国家精品在线开放课程“C++语言程序设计基础”、“C++语言程序设计进阶”,这两门在线课程合起来是清华大学本科生“C++语言程序设计”课程的在线版,包括了校内授课的全部内容、与校内学生作业相同的在线自动评测的编程练习题,可下载PDF格式的讲稿、全部例题的源代码。
more >
  • 目录

    第1章绪论1

    1.1计算机程序设计语言的发展1

    1.1.1机器语言与汇编语言1

    1.1.2高级语言2

    1.1.3面向对象的语言2

    1.2面向对象的方法2

    1.2.1面向对象方法的由来2

    1.2.2面向对象的基本概念3

    1.3面向对象的软件开发5

    1.3.1分析5

    1.3.2设计5

    1.3.3编程5

    1.3.4测试6

    1.3.5维护6

    1.4信息的表示与存储6

    1.4.1计算机的数字系统6

    1.4.2几种进位记数制之间的转换8

    1.4.3信息的存储单位10

    1.4.4二进制数的编码表示11

    1.4.5定点数和浮点数14

    1.4.6数的表示范围14

    1.4.7非数值信息的表示15

    1.5程序开发的基本概念15

    1.5.1基本术语15

    1.5.2完整的程序过程16

    1.6小结17

    习题17

    第2章C++语言简单程序设计18

    2.1C++语言概述18

    2.1.1C++语言的产生18

    2.1.2C++语言的特点19

    2.1.3C++语言程序实例19

    2.1.4字符集20

    2.1.5词法记号20

    2.2基本数据类型和表达式22

    2.2.1基本数据类型23

    2.2.2常量24

    2.2.3变量26

    2.2.4符号常量28

    2.2.5constexpr与常量表达式28

    2.2.6运算符与表达式29

    2.2.7语句38

    2.3数据的输入与输出38

    2.3.1I/O流38

    2.3.2预定义的插入符和提取符38

    2.3.3简单的I/O格式控制39

    2.4算法的基本控制结构40

    2.4.1用if语...

精彩书评more >

标题

评论

版权所有(C)2019 清华大学出版社有限公司 京ICP备10035462号 京公网安备11010802013248号

联系我们 | 网站地图 | 法律声明 | 友情链接 | 盗版举报 | 人才招聘