作 者: 钱能 著
出 版 社: 清华大学出版社
出版时间: 2005-9-1 字 数: 891000 版 次: 2 页 数: 551 印刷时间: 2005-9-1 定价:¥39.50 纸 张: 胶版纸 I S B N : 9787302114642
本书荣获教育部全国高校优秀教材奖!以C++标准为蓝本,从过程化编程的基本描述,到对象化编程的方法展开,乃至高级编程的实质揭示,形成一条自然流畅的主线,通俗易懂,形象风趣。本书在内容结构上自成体系,并以独特的描述手法,辐射到计算机专业其他诸课程,体系严谨,结构独特。
本书特色:
1、第二版全方位改版,代码全部以标准C++重写,风格独特,极具模仿价值;文字诙谐生动,通俗易懂。
2、自成体系,结构独特,整体关联,辐射计算机各门课程。
3、引领读者由欣赏书中的初级精彩到享受国外经典名著的内在精彩。
4、观点鲜明,客观褒贬C++,对术语的见解独到。
5、C++内部特性和抽象编程并重,强化编程实践,以实际编程能力衡量计算机水平。
第一部分为程序设计基础,分四章,包括概述,基本编程语句,数据类型和计算表达。其中基本编程语句和数据类型为重点,它们一个为算法描述的基础,一个为数据结构和抽象数据类型描述的基础。
第二部分为过程化程序设计,分三章,包括函数机制,性能和程序结构。其中函数机制和程序结构是重点,前者描述过程,后者描述过程组织。
第三部为分面向对象编程基础,实际上就是基于对象的编程方法,分四章,包括类,对象生灭,继承和基于对象编程。前三章对类机制作了全面描述,后一章是基于对象方法的一个归纳和实例。
第四部分为高级编程,分四章,包括多态,抽象类,模板,异常。多态和抽象类是面向对象编程的核心内容,模板论述了泛型编程,异常则强化了面向对象编程中的可靠性和容错性。
钱能,1984年毕业于上海复旦大学计算机软件专业;1988年获电子工业部优秀科技青年称号;两次获得浙江省级优秀教学成果奖二等奖。
1999年在清华大学出版社出版 “C++程序设计系列教材” 的第一批,共三种:《C++程序设计教程》、《C++程序设计实验指导》及《C++程序设计习题及解答》。
2002年,《C++程序设计教程》一书获得国家教育部评选的全国高校优秀教材二等奖。目前该书累计销量已超过400000册,深受高校师生的欢迎。
指导学生多次在ACM/ICPC亚洲预赛北京赛区中获得铜奖以上成绩;2004年指导学生在ACM/ICPC亚洲预赛北京赛区中获得排名第8。
从事《程序设计》、《数据结构》、《离散数学》、《算法与设计》、《编程与技巧》等专业基础类课程教学,及算法研究,教学经验丰富。
第一部分 基础编程
第1章 概述
1.1 程序设计语言
1.2 C++前史
1.3 C++
1.3.1 褒贬C
1.3.2 C继承者
1.3.3 标准C++
1.4 C++编程流程
1.4.1 编程过程
1.4.2 最小样板程序
1.4.3 编程风格
1.5 程序与算法
1.5.1 程序
1.5.2 算法
1.5.3 编程与结构
1.6 过程化程序设计
1.6.1 基于过程的程序设计
1.6.2 结构化程序设计
1.7 对象化程序设计
1.7.1 基于对象的程序设计
1.7.2 面向对象的程序设计
1.8 目的归纳
1.9 练习1
第2章 基本编程语句
2.1 说明语句
2.1.1 变量定义
2.1.2 函数声明和定义
2.1.3 初始化与赋值
2.2 条件语句
2.2.1 if语句
2.2.2 条件表达式
2.2.3 switch语句
2.2.4 if或switch语句
2.3 循环语句
2.3.1 for循环结构
2.3.2 for循环
2.3.3 while循环
2.4 循环设计
2.4.1 字符图形
2.4.2 素数判定
2.5 输入输出语句
2.5.1 标准I/O流
2.5.2 流状态
2.5.3 文件流
2.6 转移语句
2.6.1 break语句
2.6.2 continue语句
2.7 再做循环设计
2.7.1 逻辑判断
2.7.2 级数逼近
2.8 目的归纳
2.9 练习2
第3章 数据类型
3.1 整型
1.3.1 二进制补码
1.3.2 整型数表示范围
1.3.3 编译器与整数长度
1.3.4 整数字面值
1.3.5 整数算术运算
3.2 整数子类
3.2.1 字符型
3.2.2 枚举型
3.2.3 布尔型
3.3 浮点型
3.3.1 浮点数表示
3.3.2 浮点型表示范围
3.4 C-串与string
……
第4章 计算表达
第二部分 过程化编程
第5章 函数机制
第6章 性能
第7章 程序结构
第三部分 面向对象编程技术
第8章 类
第9章 对象生灭
第10章 继承
第11章 基于对象编程
第四部分 高级编程
第12章 多态
第13章 抽象类
第14章 模板
第15章 异常
附录
附录A 语法导读
附录B 标准模板库导用
附录C 参考文献
第1章 C++程序设计基础
1.1 为什么要学习C++程设计
1.2 过程化序设计和面向对象程序设计
1.3 简单的输出和输入方法
1.4 标识符
1.5 布尔类型
1.6 培养良好的编程风格
1.7 格式化输出
1.8 格式化输入
1.9 函数的缺省参数
1.10 引用作函数参数
1.11 函数重载
1.12 内存的动态分配和释放
1.13 string类型
1.14 STL矢量
思考与练习
课程设计之一
第2章 文件操作
2.1 文件的基本概念
2.2 打开文件和关闭文件
2.3 采用流操作符读写文件
2.4 流对象做参数
2.5 出错检测
2.6 采用函数成员读写文件
2.7 多文件操作
2.8 二进制文件
2.9 随机访问文件
2.10 输入输出文件
思考与练习
课程设计之二
第3章 类的基础部分
3.1 过程化程序设计与面向对角程序设计的区别
3.2 类的基本概念
3.3 定义函数概念
3.4 定义函数成员
3.5 类的多文件组织
3.6 私有函数成员的作用
3.7 内联函数
3.8 构造函数和析构函数
3.9 对象数组
3.10 类的应用举例
3.11 抽象数组类型
……
第4章 类的高级部分
第5章 继承、多态和虚函数
第6章 异常处理
第7章 模板
参考文献
《C++程序设计教程》内容循序渐进、难点分散、概念清晰、语言通俗、例题丰富,部分章节末尾提供了涵盖该章节主要知识点的综合例题。《C++程序设计教程》中部分章节带有“*”属于提高内容。《C++程序设计教程》适合理工科高等学校本科生使用,也可作为工程技术人员学习面向对象程序设计语言的自学教材。
插图:
C++语言是广泛使用的面向对象程序设计语言。本章作为C++程序设计的入门章节,首先结合实例介绍c++程序的概貌。然后针对其特点,介绍c++中的基本语法单位、数据类型、相关运算,以及常量、变量、表达式、语句等基础知识,最后介绍简单的输入/输出方法。学习目标了解面向过程语言C及面向对象语言c++的各自特点。了解c++语言的概貌、程序构成。理解各种基本数据类型的概念,掌握使用方法。理解变量及常量的概念,掌握定义与表示方法。理解常用运算符的含义、优先级、结合性,掌握使用方法。理解表达式的构成规则、表达式的左值和右值的含义,正确书写各类表达式。理解类型转换概念,掌握数据类型转换规则,正确使用显式类型转换。
1.1 C++概述
C++语言是在c语言的基础上发展起来的。C语言是在20世纪70年代初由贝尔实验室的Dennis Richie等人在B语言的基础上开发出来的,且最初是作为UNIX操作系统的开发语言被人们所认识的。20世纪70年代末,随着微型计算机的发展,C语言开始移植到非UNIX环境中,并逐步脱离UNIX系统成为一种独立的程序设计语言。1988年,美国国家标准协会(AmericaIl National Standards Institute,ANSI)对C语言进行了标准化,产生了ANSI C,成为以后众多c语言版本的基础。
当时与其他高级语言相比,C语言具有一些独特的特点。
①作为一种高级语言,它能直接访问物理地址和进行位运算,所以能直接对计算机硬件进行操作。也就是说,C语言既具备高级语言的结构和编程环境,又提供类似于汇编语言对系统资源的操纵能力及程序执行效率,适于解决有实时性要求的问题。
⑦C语言有丰富的运算符和数据类型,表达式类型多样化,可以方便地实现在其他语言中较难实现的运算,对各种不同类型的程序设计都有良好的适应性。
C++语言是从C语言继承发展而来的一种优秀的面向对象的程序设计语言,其严密的语法和强大的功能影响了随后出现的一些编程语言(如Java和C#等)。随着软件工程技术和面向对象程序设计技术的发展,C++语言迅速成为主流的面向对象的程序设计语言,是编写系统软件和应用软件的通用语言,自然也成为国内外高校计算机及电类专业“高级语言程序设计”课程的首选教学语言。
C++程序设计作为计算机基础课程,其教学目的是使学生掌握C++程序设计的原理、方法,为许多专业后续课程(如数据结构、操作系统、编译原理、数据库等)的学习打下程序设计基础,同时也是这些专业的学生今后开展计算机研究、应用,使用计算机解决实际问题,需要掌握的重要表达工具和开发工具。
为了完成上述教学目标,本教材在内容的取舍、章节安排、例题选择上具有以下特点。
(1)内容新颖实用。本教材的内容以IS014882 C++语言标准为基础(实践环境为VisualC++6.0)。该标准中将引入的模板库引入了标准库STL,使用模板类代替传统的C++中定义的类;新版的STL。中体现了泛型程序设计,实现了算法与数据结构的分离,提高了通用性和复用性。在突出面向对象关键技术的同时,这些体现软件设计新技术的内容作为专门章节给予介绍。
(2)突出面向对象。C++是从面向过程的C语言继承发展来的。教学实践中发现许多学生难以接受面向对象的思想、方法。因此在本教材的第4章就引入了类与对象的概念。将类的继承与派生这两个极其重要的概念分列为两章。其目的就是尽早使学生接触类与对象,建立面向对象的概念,接受并掌握面向对象的精髓,培养学生根据实际问题抽象出类的能力,进而掌握面向对象的程序设计。
(3)强调能力培养。语言是工具,学习语言的目的在于应用。为了提高学生综合运用C++相关概念、技术进行程序设计的能力,教材注重分析问题和解决问题能力的培养,以及算法设计、程序设计能力的培养。在第2章的一节专门介绍了常用算法;例题设计上考虑前后章节的联系;从第4章开始每一章最后给出一个综合性实例,从题目的要求分析、算法设计、数据结构设计到最后的程序设计都有详细分析介绍,各章留有大量习题供课后练习。
(4)叙述深入浅出。C++语言理论性强、概念多且复杂。对于初学者确有一定学习难度。本教材作为课程建设的一项重要内容,在化难为易方面做了不少尝试:章节安排符合语言内在的逻辑关系,由浅入深;复杂概念采用简洁浅显的语句叙述;精心设计、选择范例;图文表并茂;综合性例题详细分析;各章明确学习目标、结束处进行总结。
前言
编写背景 教育部高教司早在“八五”期间已经把计算机基础教学纳入高校的重要基础课程中,提出了“加强工科非计算机专业计算机基础教学工作的几点意见”,对计算机基础教学的地位和任务(培养目标)、课程体系和教学内容、教学方法和手段、师资和教材建设以及基础硬件设施的建设等多方面提出了指导性的意见。 其中最重要的一点是提出了计算机基础教学的三层次教学模式(即计算机文化基础、计算机技术基础和计算机应用基础)和课程体系。高级程序设计语言类课程属于课程体系的第二个层次。 经过多年的教学实践,教育部高教司于2003年又提出了“进一步加强高校计算机基础教学的几点意见(征求意见稿)”(俗称计算机基础教育白皮书),针对计算机基础教学的现状与发展,提出了计算机基础教学改革的指导思想;按照分类、分层次组织教学的思路,提出了计算机基础课教学内容的知识结构与课程设置。在附件中给出了六门计算机基础教学的典型核心课程,并给出了这六门课程的教学大纲。这六门课程包括:大学计算机基础、计算机程序设计基础(含C和C++)、计算机硬件技术基础(微机原理与接口、单片机原理与应用)、数据库技术与应用、多媒体技术与应用、网络技术与应用。 另外,全国高校计算机基础教育研究会成立了“高等院校计算机基础教育改革课题研究组”。该研究组于2004年出版了课题报告《中国高等院校计算机基础教育课程体系2004》(简称CFC 2004),对国内计算机基础教育进行了全面的总结和系统研究,是指导计算机教育改革的重要文件。 本书正是依据上述“白皮书”中给出的“计算机程序设计基础(C++)”的大纲编写而成,同时也满足CFC 2004中所给的C++语言的主要内容。 编写内容和教学要求 目前,各大专院校非计算机专业,尤其是电类专业,普遍选用程序设计语言C++作为程序设计教学的第一语言。为什么要选用面向对象的程序设计语言C++呢?因为目前市场上绝大部分通用的计算机软件开发工具都是基于面向对象的编程工具,如Visual C++、Delphi、Java和C# .NET等。随着计算机应用的普及,迫切需要大专院校学生具备面向对象的编程能力才能够适应社会的需求。本书就是为了满足这个层次的学生需求而编写的。本书内容是使用面向对象通用软件开发工具的基础。 本书第1~9章是结合C++语言的基本语法,介绍传统的面向过程的程序设计。内容包括C++语言基本数据类型、基本运算、基本输入/输出、结构化流程控制语句、函数、编译预处理、数组、结构体、指针和链表等内容,基本上是传统的C程序设计语言的内容。第二部分第10~15章是面向对象的程序设计,以面向对象的三大特点为主线,讲述类和对象的基本概念,类的封装、继承和多态,函数模板和类模板,并讲述了输入/输出流类体系、文件操作等内容。 本书作者主张的教学理念是注重程序设计算法的教学,注重对学生算法思路的逻辑训练,而不拘泥于语法要素的细枝末节。本书通俗易懂,各章节配有大量的例题和习题,主要是针对各章的教学难点和重点以及各种算法而设计的。在选择例题和习题时,尽量涵盖目前程序设计语言课程的各种算法类型。使初学者拿到习题后,能够在本书例题中找到相似的例子,这样对于初学者来说,解题就不是一件非常困难的事情了。除了进行课本教学外,教师还可以根据实际情况选择安排课程设计,选用适合不同层次学生的课程设计题目,加强学生动手编制较大规模程序的能力。有关课程设计的书可参考机械工业出版社出版的《C++程序设计课程设计》(ISBN: 7-111-14565-8)。 本书第1、2、9~14章由王珊珊编写,第5~8章由臧洌编写,第3、4、15章由张志航编写,全书由王珊珊负责统稿。 讲述本书全部内容的建议学时为:理论教学56学时,课程设计16学时(内容另行安排),上机实验60学时。本书的实验环境是Visual C++ 6.0,本书中全部的例题和习题均在该环境中通过编译和运行。 本书可能会存在疏漏、不妥和错误之处,恳请广大读者指正。
钱能,1984年毕业于上海复旦大学计算机软件专业;1988年获电子工业部优秀科技青年称号;两次获得浙江省级优秀教学成果奖二等奖。
1999年在清华大学出版社出版 “C++程序设计系列教材” 的第一批,共三种:《C++程序设计教程》、《C++程序设计实验指导》及《C++程序设计习题及解答》。
2002年,《C++程序设计教程》一书获得国家教育部评选的全国高校优秀教材二等奖。目前该书累计销量已超过400000册,深受高校师生的欢迎。
指导学生多次在ACM/ICPC亚洲预赛北京赛区中获得铜奖以上成绩;2004年指导学生在ACM/ICPC亚洲预赛北京赛区中获得排名第8。
从事《程序设计》、《数据结构》、《离散数学》、《算法与设计》、《编程与技巧》等专业基础类课程教学,及算法研究,教学经验丰富。