C++语言程序设计-郑莉-清华大学本科教材(第3版)

所需积分/C币:45 2019-01-15 13:41:22 16.32MB PDF
收藏 收藏
举报

清华大学郑莉教授的第三版本科教材,C++语言程序设计
清华大学计算机基础教育课程系列教材 c++语言程序设计 【第3版) 郑莉董渊张瑞丰编著 清华大学出版社 北京 内容简介 本书将C++语言作为大学生学习程序设计的入门语言,不仅详细介绍了语言本身,而且介绍了常 用的数据结构和算法。全书以面问对象的程序设计方法贯穿始终,每一章都首先阐述面向对象的程序 设计思想和方法,然后引出必要的语法知识,在讲解语法时着重从程序设计方法学的角度讲述其意义和 用途,力求使读者在掌握C++语言的同时,能够对现实世界中较简单的问题及其解决方法用计算机语 高进行描述。针对切学者和自学读者的特点,书中以结合实例讲解基木概念和方法为主.力求将复杂的 慨念用简清浅显的语言来描述,做到深人浅出。在原第2版的基础上增加了对UML建模语言的介绍和 STL及泛型科序设计的内容。 本书语言表达严谨流畅实例丰富,同时配有大量习题适合作为大专院校程序设计课程的入门教 材。与本书配套的《C++语言程序设计(第3版)学生用书》和《C十十语言程序设计(第3版)教师用书》 (电子版}h清华大学出版补出版。 版权所有、删印必究。 本书封面贴有膏华大学出版社激光防伪标签、无标签者不得销售 图书在版编目(CIP数据 C++语言程序设计/郑莉,量渊,张瑞丰编著.-3版一北京:清华大学出版社,2004 (清华大学计算机基础教育课程系列教材 ISBN7-302084564 I.C…Ⅱ.①郑…⑨黄…③张…Ⅲ.C语言-程序设计一高等学校-教材Ⅳ.TP312 中国版本图书馆CIP数据核字(2004)第030721号 出版者:清华大学出版社 地址:北京清华大学学研大厦 htlp://www.tup.com.cn 邮编:100084 社总机:01062770175 客户服务:01062776969 任编:王敏稚 印刷者:北京國马印刷厂 装订者:北京市密云县京文制本装订厂 发行者:新华书店总店北京发行所 开本;I85×260印张:27.25字数:624千字 版次:2003年12月第3版2003年12月第1次印刷 书号:IsBN7302084564/TP·6076 印效:1-8000 定价:34.00元 小书如存在文字不清漏印以及缺页倒页、脱贞等印装质量问题请与清华大学出版社出版部联系 调换。联系电话:(010)627701753103或(010)62795704 清华大学计算机基础教育课程系列教材 序 计算机科学技术的发展不仪极大地促进了整个科学技术的发展,而且明显地加快了 经济信息化和社会信息化的进程。因此,计算机教育在各国备受重视,计算机知识与能力 已成为21世纪人才素质的基本要素之一。 青华大学闫1990年开始将计算机教学纳入基础课的范畴,作为校重点课程进行建设 和管理,并按照“计算机文化基础”、¨计算机技术基础”和“计算机应用基础”三个层次的 课程体系组织教学: 第一层次“计算机文化基础”的教学目的是培养学生掌握在未来信息化社会里更好 地学习、1作和生活所必须具备的计算机基础知识和基本操作技能,并进行计算机文化道 德规范教育。 第二层次“计算机技术基础”是讲授计算机软硬件的基础知识、基本技术与方法,从 耐为学生进一步学习计算机的后续课程,并利用计算机解决本专业及相关领域中的问题 打下必要的基础。 第-层次“计算机应用基础”则是讲解计算机应用中带有基础性、普遍性的知识,讲 解计算机应用与开发中的基本技术、「具与环境。 以上述课程体系为依据设计了计算机基础教育系列课程。随着计算机技术的飞速 发展,计算机教学的内容与方法也在不断更新。近儿年来,清华大学不断丰富和完善教学 内容,在有关课程中先后引入了面向对象技术、多媒体技术、 Internet与互联网技术等。与 此同时,在教材与CA课件建设、网络化的教学环境建设等方面也正在大力开展工作,并 积极探索适应21世纪人才培养的教学模式。 为进一步加强计算机基础教学工作,适应高校正在开展的课程体系与教学内容的改 革.及时反映清华大学计算机基础教学的成果,加强与兄弟院校的交流,清华大学在原有 工作的基础上,重新规划了“清华大学计算机基础教育课程系列教材”。 该系列教材有如下几个特色 育成体系:该系列教材覆盖了计算机基础教学三个层次的教学内容。其中既包 括所有大学生都必须掌握的计算机文化基础,也包括适用于各专业的软硬件基础知识;既 包括基本概念、方法与规范也包括计算机应用开发的工具与环境。 2.内容先进:该系列教材注重将计算机技术的最新发展适当地引入教学中,保持教 学内容的先进性。例如,杀列教材中包括了面向对象与可视化编程、多媒体技术与应用、 internet与互联网技术大型数据库技术等。 C++语言程序设计 3.适应面广:该系列教材照顾了理、I、文等各种类型专业的教学要求。 4.立体配套:为适应教学模式、教学方法和手段的改革,该系列教材中多数都配有 习题集和实验指导、多媒体电子教案,有的还配有CA课件以及相应的网络教学资源 本系列教材源于清华大学计算机基础教育的教学实践,凝聚了工作在第一线的任课 教师的教学经验与科研成果。我希望本系列教材不断完善,不断更新,为我国高校计算机 基础教育做出新的贡献。 注:周远湾,任教育部副部长,原清华大学剧校长、计算机专业教授。 言 1.版次说明 本书第1版于1999年出版第2版于200年出版。第3版是在前两版的基础上,广 泛听取了读者和同行的建议,参考了最新的资料,并根据作者本人在授课过程中的经验而 形成的。 2.本书的编写背景 C++是从C语言发展演变而来的一种面向对象的程序设计语言。C++语言的主要 特点表现在两个方面,一是全面兼容C,二是支持面向对象的方法。 面向对象的程序设计方法将数据及对数据的操作方法封装在一起,作为一个相互依 存、不可分离的整体—对象。对同类型对象抽象出其共性,形成类。类中的大多数数 据,只能用本类的方法进行处理。类通过一个简单的外部接口,与外界发生关系,对象与 对象之间通过消息进行通信。这样,程序模块间的关系简单,程序模块的独立性、数据的 安全性具有良好的保障。同时,通过继承与多态性,使程序具有很高的可重用性,使得软 件的开发和维护都更为方便。 由于面向对象方法的突出优点,目前它已经成为开发大型软件采用的主要方法,而 C++语言是应用最广泛的面向对象的程序设计语言之一。 长期以来,C十+语言被认为是较难使用的专业开发语言,很少被作为入门语言来讲 授。那么C+十语言与面向对象的程序设计方法是否真的是比较高深、难以掌握的技术 呢?答案是否定的。 其实,C语言产生的初期,也只被少数专业开发人员使用。但随着计算机科学的发 展,计算机技术已渗透到各学科的研究和应用之中,C语言已经被各专业的工程技术人员 广泛应用于本专业的科研开发,也被很多学校作为第一门程序设计语言来讲授。C++全 面兼容了C同时提供了比C更严格、更安全的语法。从这个意义上讲,C++首先是一个 更好的C。 C++语言是一个面向对象的编程语言,而面向对象的编程方法(O0P)一度被看作是 一门比较高深的技术。这是因为在面向对象的系统分析(00A)和面向对象的系统设计 (00D)理论出现之前程序员要写一个好的面向对象的程序,首先要学会运用面向对象 的方法来认识问题和描述问题。现在,OOP的匚作比较简单了,认识问题域与设计系统 成分的工作已经在系统分析和设计阶段完成,00P工作就是用一种面向对象的编程语言 把00D模型中的每个成分书写出来。 面向对象方法的出现,实际上是程序设计方法发展的一个返璞归真过程。从本质上 讲,软件开发就是对软件所要处理的问题域进行正确的认识,并把这种认识正确地描述出 C++语言程序设计 来。面向对象方法所强调的基本原则,就是直接面对客观存在的事物来进行软件开发,将 人们在日常生活中习惯的思维方式和表达方式应用在软件开发中,使软件开发从过分专 业化的方法规则和技巧中回到客观世界,回到人们通常的思维。 那么,学习C++语言是否应该首先学习C语言呢?不是的。虽然C++语言是从C 语言发展而来的但是C十+本身是一个完整的程序设计语言,而且它与C语言的程序设 计思想是完全不同的。我们学习的进程不必严格遵循科学技术的发展进程,只有尽快地 掌握最新的理论和技术,才能站到巨人的肩膀上。 因此我们认为,C++语言是可以作为程序设计的人门语言来学习的。 3.本书的特色 本书的特色是内容全面深入浅出、立体配套 本书是一本面向广大初学者的人门教材,自1999年第1版出版以来,已经在清华大 学等数十所大学的不同专业中使用,取得了良好的教学效果。 本书将C++语言作为大学生的计算机编程人门语言,不仅详细介绍语言本身,而且 介绍常用的数据结构和算法、面向对象的设计思想和编程方法以及UML建模语言。全书 以面向对象的程序设计方法贯穿始终,每一章都是首先阐述面向对象的程序设计思想和 方法,由实际问题入手,然后引出必要的语法知识,在讲解语法时着重从程序设计方法学 的角度讲述其意义和用途。本书的宗旨是,不仅要使读者掌握C++语言本身,而且要能 够对现实世弊中较简单的问题及其解决方法用计算机语言进行描述。当然,要达到能够 描述较复杂的问题域还需要学习面向对象的软件工程课等其他课程。 针对初学者和自学读者的特点,本书力求做到深入浅出,将复杂的概念用简洁浅显的 语言娓娓道来。读者还可以通过配套的《C++语言程序设计(第3版)学生用书》,在实 践中达到对内容的深入理解和熟练掌握。而且,作者将自己在清华大学的教学资源,向中 国囡内读者免费开放读者只要通过访问清华大学网络学堂中郑莉的“C++语言程序设 计”课程网页,便可以与清华大学的学生同步享受网上教学资源,如下载电子教案(PDF 文件)和源代码、参与师生讨论等。这样,读者使用本套教材,可以轻松地入门,循序渐进 地提高。访问网上资源的方法稍后详述。 为了方便教师备课,本书配有电子版《C++语言程序设计(第3版)教师用书》,包括 电子教案(P文件)教学要点和考试样题等。 4.内容摘要 第1章绪论:从发展的角度概要介绍了面向对象程序设计语言的产生和特点,面 向对象方法的由来和主要的基本概念,并简单介绍了什么是面向对象的软件工程。最后, 介绍了信息在计算机中的表示和存储以及程序的开发过程。 第2章C十简单程序设计:讲述C十+程序设计的基础知识。首先简要介绍C++ 语言的发展历史及其特点接着讨论构成C++语句的基本部分,如字符集、关键字标识 符和操作符等。此外,还介绍了C++的基本数据类型和自定义数据类型,以及算法的三 种主要控制结构——顺序、选择和循环结构。 第3章函数:讲述C++语言的函数。在面向对象的程序设计中,函数是模块划分 前官 的基本单位,是对处理问题过程的基本抽象单元,是对功能的抽象。同时,使用函数也为 代码的重用提供了技术上的支持。本章主要从应用的角度讲述各种函数的定义和使用方 法,特别是系统函数的使用方法 第4章类与对象:首先介绍面向对象程序设计的基本思想及其主要特点—抽 象、封装继承和多态。接着围绕数据封装这一特点,着重讲解面向对象设计方法的核心 概念一类,包括类的定义、实现以及如何利用类来解决其体问题。最后,简单介绍了如 何用UML语言描述类的特性,在后续章节中,始终以UML语言描述类和对象之间的 关系。 第5章C++程序的结构:讲述标识符的作用域和可见性及变量、对象的生存期 使用局部变量、全局变量、类的数据成员、类的静态成员和友元来实现数据共享,共享数据 的保护,以及使用多文件结构来组织和编写程序解决较为复杂的同题。 第6章数组、指针与字符串:讨论数组、指针与字符串。数组和指针是C++语言 中最常用的复合(构造)类型数据,是数据和对象组织、表示的最主要手段,也是组织运算 的有力工具。本章首先介绍数组指针的基本概念及动态存储分配问题。接着圉绕数据 和对象组织这一问题,着重讲解如何通过使用数组和指针解决数据、函数以及对象之 间的联系和协调。对于字符串及其处理,本章介绍了两种方法——使用字符数组和使 用 stnng类。 第7章继承与派生:讲述类的继承特性。围绕派生过程,着重讨论不同继承方式 下的基类成员的访问控制问题添加构造函数和析构函数;接着讨论在较为复杂的继承关 系中,类成员的惟一标识和访问问题;最后给出类的继承实例—“全选主元高斯消去法 求解线性方程组”和一个“小型公司的人员信息管理系统”。 第8章多态性:讲述类的另一个重要特性—一多态性。多态是指同样的消息被不 同类型的对象接收时导致完全不同的行为,是对类的待定成员函数的再抽象。C十+支持 的多态有多种类型,重载(包括函数重载和运算符重载)和虚函数是其中主要的方式,也 是学习的重点。最后给出类的多态实例“变步长梯形积分算法”和“对一个小型公司 的人员信息管理系统程序的改进”。 第9章群体类和群体数据的组织:群体是指由多个数据元素组成的集合体。群体 可以分为两个大类—线性群体和非线性群体。本章介绍几种常用的群体类模板。 群体的组织问题,指的是对数组元素的排序与查找方法。排序( sorting)又称分类或 整理是将一个无序序列调整为有序的过程。查找( searching)是在一个序列中,按照某种 方式找出需要的特定数据元素的过程。 第10章泛型程序设计与C十+标准模板库:泛型程序设计就是要将程序写得尽可 能通用,同时并不损失效率。本章简单介绍C++标准模板库(STL)中涉及的一些概念、 术语,以及它的结构、主要组件的使用方法。重点介绍容器、迭代器、算法和函数对象的基 本应用。国的是使读者对STL与泛型程序设计方法有一个概要性的了解 第11章流类库与输入/输出:讲述流的概念,然后介绍流类库的结构和使用。就 像C语言一样,C++语言中也没有输入/输出语句,但C++编译系统带有一个面向对象 Ⅵ C++语程序设计 的D0软件包,它就是L0流类库。 第12章异常处理:讲述异常处理问题。异常是一种程序定义的错误,在C++中 异常处理是对所能预料的运行错误进行处理的一套实现机制。ty、 throw和 catch语句就 是C++语言中用于实现异常处理的机制。有了C++异常处理,程序可以向更高的执行 上下文传递意想不到的事件,这样程序能更好地从这些异常事件中恢复过来。 第13章MFC库与 Windows程序开发概述:讲述 Window程序设计的基本思想 和MFC库的基本组成。 5.使用指南及相关资源 作者本人使用本书授课时的讲课学时数为32学时,实验学时数为32学时,课外上机 学时数为32学时,课内外共%6学时,每学时45分钟。建议讲课学时数分配如下: 第1章2学时,第2章4学时,第3章2学时,第4章3学时,第5章2学时,第6章4 学时,第7章3学时,第8章2学时,第9章4学时,第10章2学时,第11章1学时,第12 章1学时第13章2学时 实验学时数的分配请参考配套的《C++语言程序设计(第3版)学生用书》。 与本书配套的教材有:《C++语言程序设计(第3版)教师用书》(电子版)和《C++ 语言程序设计(第3版)学生用书》。 《C++语言程序设计(第3版)学生用书》包含每章的学习指南和习题解答,还设计 了与本书各章配套的实验以帮助读者加深对本书内容的理解,并达到熟练掌握。 《C++语言程序设计(第3版)教师用书》为电子版,包含教学建议、讲课重点、电子 教案( PowerPoint文件)。 作者郑莉在清华大学授课的教学资源位于“清华大学网络学堂",网址是:htp:// lean. tsinghua. edu.cn/。读者请在“本学期课程”栏目中查找郑莉的“C++语言程序设 计”(如果首页未列出,请点击“更多”),找到后点击课程名,然后以用户名“ GUEST”、密 码“gues"登录,即可阅读、下载教学资源。在作者不授课的学期,读者可以查找以往课 程,下载学习资源 本书第1-39、11,12章由郑莉编写,第4-8章由董渊郑莉、张瑞丰共同编写,第 10、13章由张瑞丰郑莉共同编写。傅仕星、田荣牌、孟鸿利孟威、张文举、杨兴朋、王绚 参加了部分编写工作。另外特别感谢谭浩强教授和王行言教授审阅了本书第2版,并提 出了许多宝贵建议。 感谢读者选择使用本书,欢迎您对本书内容提出批评和修改建议,我们将不胜感激。 如需回函请务必写明您的电子邮件地址,作者的联系地址如下: 电子邮件地址:hl@cic.tsinghua.edu.cn 通信地址:北京清华大学计算机与信息管理中心郑莉 邮政编码:100084 作者 2003年12月于清华大学

...展开详情
试读 127P C++语言程序设计-郑莉-清华大学本科教材(第3版)
立即下载 低至0.43元/次 身份认证VIP会员低至7折
    抢沙发
    一个资源只可评论一次,评论内容不能少于5个字
    关注 私信 TA的资源
    上传资源赚积分,得勋章
    最新推荐
    C++语言程序设计-郑莉-清华大学本科教材(第3版) 45积分/C币 立即下载
    1/127
    C++语言程序设计-郑莉-清华大学本科教材(第3版)第1页
    C++语言程序设计-郑莉-清华大学本科教材(第3版)第2页
    C++语言程序设计-郑莉-清华大学本科教材(第3版)第3页
    C++语言程序设计-郑莉-清华大学本科教材(第3版)第4页
    C++语言程序设计-郑莉-清华大学本科教材(第3版)第5页
    C++语言程序设计-郑莉-清华大学本科教材(第3版)第6页
    C++语言程序设计-郑莉-清华大学本科教材(第3版)第7页
    C++语言程序设计-郑莉-清华大学本科教材(第3版)第8页
    C++语言程序设计-郑莉-清华大学本科教材(第3版)第9页
    C++语言程序设计-郑莉-清华大学本科教材(第3版)第10页
    C++语言程序设计-郑莉-清华大学本科教材(第3版)第11页
    C++语言程序设计-郑莉-清华大学本科教材(第3版)第12页
    C++语言程序设计-郑莉-清华大学本科教材(第3版)第13页
    C++语言程序设计-郑莉-清华大学本科教材(第3版)第14页
    C++语言程序设计-郑莉-清华大学本科教材(第3版)第15页
    C++语言程序设计-郑莉-清华大学本科教材(第3版)第16页
    C++语言程序设计-郑莉-清华大学本科教材(第3版)第17页
    C++语言程序设计-郑莉-清华大学本科教材(第3版)第18页
    C++语言程序设计-郑莉-清华大学本科教材(第3版)第19页
    C++语言程序设计-郑莉-清华大学本科教材(第3版)第20页

    试读已结束,剩余107页未读...

    45积分/C币 立即下载 >