描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787302566939丛书名: 中国高等院校计算机基础教育课程体系规划教材
谭浩强教授*力作,普通高等教育“十一五”*规划教材,全国高校出版社优秀畅销书一等奖。C 是近年来国内外广泛学习和使用的支持面向对象程序设计的现代计算机高级语言,国内许多高校已陆续开设了C 程序设计课程。但是,由于C 涉及的概念很多,语法比较复杂,内容十分广泛,不少人感到学习难度很大,难以入门。针对这种情况,作者深入研究了C 的内容和初学者的认知规律,专门为已学习过C语言的读者构建了便于学习的教材体系,编写了这本C 面向对象程序设计入门教材。 本书对面向对象程序设计的基本理论概念和C 语言的基本内容作了通俗而详尽的说明,并且把这两方面有机地结合起来。
本书内容包括面向对象程序设计的基本理论概念和C 语言的基本內容,并且把这两方面有机地结合起来。*章介绍面向过程程序设计领域中C 对C的扩充,第二章简要而通俗清晰地介绍了面向对象程序设计的基本知识,在后续各章中由浅入深地介绍怎样编写C 程序,在这过程中自然地具体地介绍了面向对象程序设计方法的应用。
第1章C 的初步知识1
1.1从C到C 1
1.2最简单的C 程序2
1.3C 对C的扩充8
1.3.1C 的输入输出8
1.3.2用const定义常变量11
1.3.3函数原型声明11
1.3.4函数的重载12
1.3.5函数模板14
1.3.6有默认参数的函数16
1.3.7变量的引用17
1.3.8内置函数24
1.3.9作用域运算符25
1.3.10字符串变量26
1.3.11动态分配/撤销内存的运算符new和delete29
1.3.12C 对C功能扩展的小结31
1.4C 程序的编写和实现32
1.5关于C 上机实践33
习题34
第2章类和对象的特性37
2.1面向对象程序设计方法概述37
2.1.1什么是面向对象的程序设计37
2.1.2面向对象程序设计的特点41
2.1.3类和对象的作用42
2.1.4面向对象的软件开发43
2.2类的声明和对象的定义44
2.2.1类和对象的关系44
2.2.2声明类的类型45
2.2.3定义对象的方法47
2.2.4类和结构体类型的异同48
2.3类的成员函数49
2.3.1成员函数的性质49
2.3.2在类外定义成员函数50
2.3.3内置成员函数(inline成员函数)51
2.3.4成员函数的存储方式52
2.4怎样访问对象的成员54
2.4.1通过对象名和成员运算符访问对象中的成员54
2.4.2通过指向对象的指针访问对象中的成员55
2.4.3通过对象的引用来访问对象中的成员55
2.5类和对象的简单应用举例55
2.6类的封装性和信息隐蔽64
2.6.1公用接口与私有实现的分离64
2.6.2类声明和成员函数定义的分离65
2.6.3面向对象程序设计中的几个名词68
习题68
第3章怎样使用类和对象71
3.1类对象的初始化71
3.1.1需要对类对象进行初始化71
3.1.2用构造函数实现数据成员的初始化72
3.1.3用带参数的构造函数对不同对象初始化74
3.1.4在构造函数中用参数初始化表对数据成员初始化76
3.1.5可以对构造函数进行重载77
3.1.6构造函数可以使用默认参数79
3.1.7用构造函数实现初始化方法的归纳82
3.1.8利用析构函数进行清理工作83
3.1.9调用构造函数和析构函数的顺序85
3.2对象数组87
3.3对象指针89
3.3.1指向对象的指针89
3.3.2指向对象成员的指针90
3.3.3指向当前对象的this指针93
3.4共用数据的保护94
3.4.1定义常对象95
3.4.2定义常对象成员96
3.4.3指向对象的常指针97
3.4.4指向常对象的指针变量98
3.4.5对象的常引用101
3.4.6const型数据的小结102
3.5对象的动态建立和释放102
3.6对象的赋值和复制104
3.6.1对象的赋值104
3.6.2对象的复制105
3.7不同对象间实现数据共享108
3.7.1把数据成员定义为静态108
3.7.2用静态成员函数访问静态数据成员110
3.8允许访问私有数据的“朋友”113
3.8.1可以访问私有数据的友元函数113
3.8.2可以访问私有数据的友元类117
3.9类模板118
习题122
第4章对运算符进行重载126
4.1为什么要对运算符重载126
4.2对运算符重载的方法128
4.3重载运算符的规则131
4.4运算符重载函数作为类成员函数和友元函数133
4.5重载双目运算符136
4.6重载单目运算符141
4.7重载流插入运算符和流提取运算符143
4.7.1重载流插入运算符“<4.7.2重载流提取运算符“>>”146
4.8有关运算符重载的归纳148
4.9不同类型数据间的转换149
4.9.1标准类型数据间的转换149
4.9.2把其他类型数据转换为类对象——用转换构造函数150
4.9.3将类对象转换为其他类型数据——用类型转换函数151
习题157
第5章类的继承158
5.1继承与派生158
5.2派生类的声明方式161
5.3派生类的构成161
5.4派生类成员的访问属性163
5.4.1公用继承164
*5.4.2私有继承166
5.4.3保护成员和保护继承169
5.4.4多级派生时的访问属性173
5.5派生类的构造函数和析构函数174
5.5.1简单的派生类的构造函数175
5.5.2有子对象的派生类的构造函数178
5.5.3多层派生时的构造函数181
5.5.4派生类构造函数的特殊形式183
5.5.5派生类的析构函数184
5.6多重继承185
5.6.1声明多重继承的方法185
5.6.2多重继承派生类的构造函数185
5.6.3多重继承引起的二义性问题188
5.6.4在继承间接共同基类时减少数据冗余——用虚基类191
5.7基类与派生类的转换196
5.8继承与组合200
5.9继承在软件开发中的重要意义201
习题202
第6章C 的多态性207
6.1什么是多态性207
6.2一个典型的例子208
6.3利用虚函数实现动态多态性214
6.3.1虚函数的作用214
6.3.2静态关联与动态关联218
6.3.3在什么情况下应当声明虚函数219
6.3.4虚析构函数220
6.4纯虚函数与抽象类221
6.4.1没有函数体的纯虚函数221
6.4.2不能用来定义对象的类——抽象类222
6.4.3应用实例223
习题229
第7章输入输出流230
7.1C 的输入和输出230
7.1.1输入输出的含义230
7.1.2C 的I/O对C的发展——类型安全和可扩展性230
7.1.3C 的输入输出流231
7.2标准输出流236
7.2.1cout,cerr和clog流236
7.2.2标准类型数据的格式输出238
7.2.3用流成员函数put输出字符243
7.3标准输入流244
7.3.1cin流244
7.3.2用于字符输入的流成员函数246
7.3.3istream类的其他成员函数250
7.4对数据文件的操作与文件流253
7.4.1文件的概念253
7.4.2文件流类与文件流对象255
7.4.3文件的打开与关闭256
7.4.4对ASCII文件的操作258
7.4.5对二进制文件的操作263
7.5字符串流269
习题273
第8章善于使用C 工具275
8.1对出现异常情况的处理275
8.1.1异常处理的任务275
8.1.2异常处理的方法276
8.1.3在函数声明中进行异常情况指定283
8.1.4在异常处理中处理析构函数284
8.2用命名空间避免同名冲突286
8.2.1同名冲突286
8.2.2什么是命名空间289
8.2.3使用命名空间解决名字冲突291
8.2.4使用命名空间中的成员的方法293
8.2.5使用无名的命名空间295
8.2.6使用标准命名空间std296
8.3使用早期的函数库297
习题298
附录A常用字符与ASCII码对照表300
附录B运算符与结合性301
参考文献303
▲ 原全国政协副主席、国务委员、国家科委主任、中国工程院院长宋健同志给谭浩强教授的题词
▲ 原全国人民代表大会常务委员会副委员长、中国科学院院长卢嘉锡给谭浩强教授的题词从20世纪70年代末、80年代初开始,我国的高等院校开始面向各个专业的全体大学生开展计算机教育。特别是面向非计算机专业学生的计算机基础教育,牵涉的专业面广、人数众多,影响深远。高校开展计算机基础教育的状况将直接影响我国各行各业、各个领域中计算机应用的发展水平。这是一项意义重大而且大有可为的工作,应该引起各方面的充分重视。
30多年来,全国高等院校计算机基础教育研究会和全国高校从事计算机基础教育的老师始终不渝地辛勤工作,深入探索,努力开拓,积累了丰富的经验,初步形成了一套行之有效的课程体系和教学理念。30年来高等院校计算机基础教育的发展经历了3个阶段: 20世纪80年代是初创阶段,带有扫盲的性质,多数学校只开设一门入门课程;20世纪90年代是规范阶段,在全国范围内形成了按3个层次进行教学的课程体系,教学的广度和深度都有所发展;进入21世纪,开始了深化提高的第3阶段,需要在原有基础上再上一个新台阶。
在计算机基础教育的新阶段,要充分认识到计算机基础教育面临的挑战:
(1) 在世界范围内信息技术以空前的速度迅猛发展,新的技术和新的方法层出不 穷,要求高等院校计算机基础教育必须跟上信息技术发展的潮流,大力更新教学内容,用信息技术的新成就武装当今的大学生。
(2) 我国国民经济现在处于持续快速稳定发展阶段,需要大力发展信息产业,加快经济与社会信息化的进程,这就迫切需要大批既熟悉本领域业务,又能熟练使用计算机,并能将信息技术应用于本领域的新型专门人才。因此需要大力提高高校计算机基础教育的水平,培养出数以千百万计的计算机应用人才。
(3) 从21世纪初开始,信息技术教育在我国中小学中全面开展,计算机教育的起点从大学下移到中小学。水涨船高,这样也为提高大学的计算机教育水平创造了十分有利的条件。
迎接21世纪的挑战,大力提高我国高等学校计算机基础教育的水平,培养出符合信息时代要求的人才,已成为广大计算机教育工作者的神圣使命和光荣职责。全国高等院校计算机基础教育研究会和清华大学出版社于2002年联合成立了“中国高等院校计算机基础教育改革课题研究组”,集中了一批长期在高校计算机基础教育领域从事教学和研究的专家、教授,经过深入调查研究,广泛征求意见,反复讨论修改,于2004年春提出了新的高校计算机基础教育改革思路和课程方案,并编写了《中国高等院校计算机基础教育课程体系2004》(简称CFC 2004),由清华大学出版社出版。之后又陆续推出CFC 2006、CFC 2008和CFC 2014。该课题受到各方面的关注、支持和欢迎,大家一致认为CFC 提出了一个既体现先进又切合实际的思路和解决方案。
为了实现课题研究组提出的要求,必须有一批与之配套的教材。教材是实现教育思想和教学要求的重要保证,是教学改革中的一项重要的基本建设。如果没有好的教材,提高教学质量只是一句空话。要写好一本教材是不容易的,不仅需要掌握有关的科学技术知识,而且要熟悉自己工作的对象,研究读者的认识规律,善于组织教材内容,具有较好的文字功底,还需要学习一点教育学和心理学的知识等。一本好的计算机基础教材应当具备以下5个要素:
(1) 定位准确。要十分明确本教材是为哪一部分读者写的,要有的放矢,不要不问对象,提笔就写。
(2) 内容先进。要能反映计算机科学技术的新成果、新趋势。
(3) 取舍合理。要做到“该有的有,不该有的没有”,不要包罗万象、贪多求全,不应把教材写成手册。
(4) 体系得当。要针对非计算机专业学生的特点,精心设计教材体系,不仅使教材体现科学性和先进性,还要注意循序渐进、降低台阶、分散难点,使学生易于理解。
(5) 风格鲜明。要用通俗易懂的方法和语言叙述复杂的概念。善于运用形象思维,深入浅出,引人入胜。
为了推动各高校的教学,我们愿意与全国各地区、各学校的专家和老师共同奋斗,编写和出版一批具有中国特色的、符合非计算机专业学生特点的、受广大读者欢迎的优秀教材。为此,我们成立了“中国高等院校计算机基础教育课程体系规划教材”编审委员会,全面指导本套教材的编写工作。
这套教材具有以下几个特点:
(1) 全面体现CFC 的思路和课程要求。本套教材的作者多数是课题研究组的成员或参加过课题研讨的专家,对计算机基础教育改革的方向和思路有深切的体会和清醒的认识。因而可以说,本套教材是CFC 的具体化。
(2) 教材内容体现了信息技术发展的趋势。由于信息技术发展迅速,教材需要不断更新内容,推陈出新。本套教材力求反映信息技术领域中新的发展、新的应用。
(3) 按照非计算机专业学生的特点构建课程内容和教材体系,强调面向应用,注重培养应用能力,针对多数学生的认知规律,尽量采用通俗易懂的方法说明复杂的概念,使学生易于学习。
(4) 考虑到教学对象不同,本套教材包括了各方面所需要的教材(重点课程和一般课程;必修课和选修课;理论课和实践课),供不同学校、不同专业的学生选用。
(5) 本套教材的作者都有较高的学术造诣,有丰富的计算机基础教育的经验,在教材中体现了研究会所倡导的思路和风格,因而符合教学实践,便于采用。
本套教材统一规划,分批组织,陆续出版。希望能得到各位专家、老师和读者的指正,我们将根据计算机技术的发展和广大师生的宝贵意见随时修订,使之不断完善。
全国高等院校计算机基础教育研究会荣誉会长
“中国高等院校计算机基础教育课程体系规划教材”编审委员会主任
本书是一本介绍C 面向对象程序设计的入门基础教材。
目前的主流计算机的指令执行是过程导向的,每一个步骤(计算机指令)是依次执行的。因此早期的编程语言也是面向过程的,设计者必须充分地考虑程序的每一个细节,要指定程序在每一环节应执行的动作。
C语言是面向过程的结构化和模块化的语言,C语言是编写UNIX操作系统的语言,功能强大,使用灵活。它在处理小型问题上得心应手,但在处理大型复杂问题时就显得力不从心了。现代计算机应用已经远远超出了科学计算和控制计算机操作的层面,而是更多地去解决各种各样现实生活工作中的复杂问题,比如模拟气象现象,制作文字、图形、视频作品等。为了处理复杂应用程序,计算机科学家提出了面向对象程序设计的理论,并于20世纪末期在C语言的基础上推出支持面向对象的C 语言,为处理复杂应用程序提供了有力的工具。
近年来,国内许多大学的计算机类专业都开设了C 程序设计课程,一些大学的非计算机专业也开设了C 面向对象程序设计课程,许多学过C语言程序设计的人也想了解和学习C 和面向对象程序设计的有关知识。但是,由于C 涉及概念很多,语法比较复杂,内容十分广泛,使不少人感到学习难度较大,难以入门。
应读者的要求,作者在十多年前编著了《C 程序设计》一书,由清华大学出版社出版并向全国发行。该书以未学过C语言的读者为对象,从面向过程入手介绍程序设计的基本知识和方法,然后介绍用C 进行面向对象程序设计的方法。由于内容全面,概念清晰,通俗易懂,该书出版后,受到各校师生的欢迎和好评,几年内发行了70多万册。
目前在大学理工类专业,普遍开设了C语言程序设计的课程,许多学生在学习C语言后希望对C 面向对象程序设计有所了解,以便日后在需要时能较快地进入该领域。很多师生希望我能出版一本以C语言为起点的C 教材。
为此,几年前我在清华大学出版社出版了《C 面向对象程序设计》一书。该书是在《C 程序设计》一书的基础上编写而成的,对于已学习过C语言程序设计的读者,不必再重新学习面向过程程序设计的部分,而可以直接从面向对象程序设计入手。作者将《C 程序设计》一书中介绍面向对象程序设计的内容抽出来改写后单独成书,并且重新写了第1章“从C到C ”,介绍C 面向对象程序设计的初步知识以及C 对C在面向过程程序设计方面的扩展,为以后各章的学习打下基础。这样的安排使本书内容更集中,篇幅更紧凑。该书仍然保持了通俗易懂、贴近读者、容易入门的特点。希望有助于大学生学习C 课程,初步掌握面向对象程序设计的方法。
几年前,作者曾对此书进行过修订,出版了《C 面向对象程序设计(第2版)》,最近根据教学实践的情况,又进行一次全面的修订。这次修订,在保留原书内容全面、概念清晰的优点的基础上,从章节标题到正文都作了不少修改和补充,使之更加通俗易懂,容易学习。现在出版《C 面向对象程序设计(第3版)》,即本书。
在此,对本书的指导思想作以下的说明。
1. 教材要准确定位
首先要明确教材是为什么人写的,他们学习C 的目的是什么,要学到什么程度,不能无的放矢。推出C 的初衷是为了解决大型复杂应用软件开发中遇到的问题,提高软件的开发效率。只有参加过研制相对大型软件的人才会真正体验到C 的优越性。应当说明,本书的主要对象不是C 的专业开发人员,而是高校各专业的大学生和自学现代编程语言的读者,本书不是程序员培训班教材。本书的读者一般并无实际程序开发的经验,将来多数人也不一定成为专业的编程人员。
不可奢望,通过几十小时的学习,就能使一个没有C 程序设计基础的初学者变成一个熟练的C 开发人员。应当有实事求是的分析和估计。
本书的定位是“入门”与“基础”。用有效的方法使读者顺利入门,通过学习,打好基础。通过学习本书,多数读者会有以下收获:①清晰地了解面向对象程序设计的方法以及C 的主要功能与特点;②能够用C 编写简单的面向对象的程序;③能看懂别人编写的规模比较小的C 程序; ④奠定进一步学习和应用的良好基础。也就是从“不知”到“初知”,从“不会”到“初会”。入了门,有了良好的基础,以后提高和应用就不困难了。
2. 要设计合适的教材体系,合理取舍内容
学习C 面向对象程序设计,应当对面向对象的方法和C 的基本特点有基本的了解。
C 面向对象程序设计牵涉面向对象程序设计的理论和C 语言的语法两个方面,都很重要。本书主要介绍C 处理问题的面向对象的思维方式和C 语言的基本内容。我们不是抽象地介绍面向对象程序设计的理论,也不是枯燥地介绍C 的语法,而是以程序设计为中心把这两个方面有机地结合起来。在介绍用C 语言编程的过程中,自然而然地引出面向对象程序设计的有关概念,通过C 编程过程理解面向对象程序设计方法,二者紧密结合,相得益彰。
本书内容系统而全面。面向对象程序设计有4个主要特点:抽象、封装、继承和多态性,在C 语言中都有相应的机制来实现它们。作为教材,不能忽略C 的主要内容,本教材的内容全面涵盖了以上4个方面,提供了详细而通俗的介绍和编程举例。
我们努力使读者通过较短时间的学习,能对面向对象方法和C 有基本和全面的了解,而不是陷于烦琐的细节之中。教材不同于使用手册。手册的任务是提供无所不包的使用细节以备查询,而教材的任务是用容易理解的方法讲清楚有关的基本概念和基本方法。不能把教材写成包罗万象的手册,否则将会使篇幅过大,而且会冲淡重点,主次不分,使读者感到枯燥无味。
本书的做法是:从应用出发,对编程所用到的最基本内容和注意的问题都作了详细的说明,但是并不罗列C 语法中过多的细节,需要时把一些细节列出成表,供用时查阅。希望读者在学习时,要“多理解,勿死记”,以把主要精力放在基本概念和基本方法上。
要深入了解和掌握面向对象程序设计的概念和方法,是一个学习——实践——再学习——再实践的过程,不可能一蹴而就。在初学阶段,要引导读者初步理解面向对象的概念,并由简到繁地学会编写C 程序。奠定了C 编程的初步基础,以后再进一步提高。这样的方法可能符合大多数学习者的情况,降低了学习难度。
3. 概念清晰,深入浅出,化难难点,容易学习
C 不容易学,也不容易教。作者在写作过程中花了很大的精力考虑怎样使读者接受和理解。作者一贯认为:教材编著者应当与读者将心比心,换位思考,要站在读者的角度思考和提出问题,帮助他们解除学习中的困难。要善于把复杂的问题简单化,而不应当把简单的问题复杂化,要善于化解难点,深入浅出。
作者着力使读者对于面向对象的方法和C 的特点有清晰、准确和全面的认识。有一些面向对象的概念,名词很抽象,理论很难懂,有的初学者会被唬住,感到高深莫测。作者用通俗易懂的方法和语言叙述清楚复杂的概念,化解学习中的困难。读者可以看到,在本书中,几乎对每一个新出现的概念,都会用日常生活中的例子加以通俗地说明,一看就懂,很容易理解和入门。
希望读者不要被一大堆高深莫测的名词术语吓住,有些问题看起来很深奥,其实换一个角度去解释就很容易理解,一个通俗的例子就把问题说清楚了。
C 的名词术语很多,一般C 的教材的章节标题都是一些陌生的、深奥莫测的专业词汇,往往使人摸不着头脑,不知道要学的是什么,难以引发学习的兴趣和欲望。作者经过反复思考,改变了标题的写法,不是简单地列出一个名词术语,而是着重说明它是解决什么问题的。例如,原来有一节的标题是“带参的构造函数”,这次作者把它改为“用带参的构造函数对不同对象进行初始化”,读者从标题就可以知道带参的构造函数是为了对象初始化的,从前一节到下一节,前后连贯,承上启下,读者就会想看看究竟是怎样处理的。又如,有一节的标题是“友元”,读者第一次听到这个术语,往往不知所云,这次作者把标题改为“可以访问私有数据的‘朋友’”,通俗易懂,具有目的性和启发性,使读者想去了解和学习。学习的过程不应该是“教师讲什么,学生学什么”的被动式学习,应当形成学生主动思考问题、主动学习的局面。
在各章的叙述中,本书不是先给出一个新概念或新术语,再去解释它,而是先提出需要解决的问题,然后讨论用什么方法去处理它,从而引出新的概念和新的方法。传统的教学三部曲是:“提出概念—解释概念—举例说明”,作者在多年的计算机教学实践中,采用了新的教学三部曲:“提出问题—分析和解决问题—归纳分析”。 在引入每一个程序时,都按照以下几个步骤展开:提出问题—编写程序—运行结果—程序分析。由浅入深,逐步展开。不是先理论后实际,先抽象后具体,先一般后个别,而是从具体到抽象,从实际到理论,从个别到一般,从零散到系统。这样做,符合初学者的认知规律。
4. 教学过程要采取“容易入门,逐步提高”的方法
(1) 精心选择例子。教材中的例题是基础性质的,是为了帮助读者更好地理解某一方面的教学内容而专门编写的,相对简单,容易理解。
作者认为,在初学阶段的例题不宜太复杂,更不宜把一些比较复杂的实际应用的程序直接搬到课堂当作例题。一个实用的C 程序需要考虑许多因素,综合各部分知识,有许多注释行,而且一般是多文件的程序包,读懂这类大型程序往往需要一定的经验。作为教学程序要对问题进行简化,尽量压缩不必要的语句。
本书中的例题的选择原则是:①通过例题能更深入地理解有关的概念和编程方法。②篇幅一般不太长,绝大多数读者能独立读懂程序。③通过程序举例使读者掌握编程的方法和技巧。
(2) 在初步掌握C 编程方法后,后续阶段学习的例题程序会逐渐复杂一些。各章例题的难度是循序渐进的,每一个台阶都不大,读者能在原来的基础上逐步提高。
(3) C 面向对象程序设计的概念较多,语法复杂。有的读者往往把精力放在弄清楚一个个具体问题上,而在学完一章后对全章的内容缺乏整体的概念。建议读者对于教材每一章的内容一定至少认真读两遍,第一遍弄清楚各个部分的内容,不留死角。然后在学完全章后再从头到尾认真看一遍,把各个知识点串成一条线,建立一个整体的概念,知道本章讲了什么,重点在哪里,难点在哪里,在编程中怎样使用它们。在开始学习时是化整为零,各个击破,然后再化零为整,形成整体的认识。凡是这样做的读者都觉得有很大收获。
(4) 不要满足于能看懂例题程序,而应当在学完每一章后自己独立编写比例题难度大一点的程序。在各章最后的习题中,有些题的难度比教材中的例题稍大一些,希望教师能从中选择一些指定学生完成,并通过上机实践,进一步掌握C 的调试与运行的方法。
(5) 在学完本教材各章后,最好学习一些综合的程序实例,以巩固收获,提高编程能力。本书的参考用书《C 程序设计实践指导》,提供了约50个实用或接近实用的程序,教师可以从中选择一些在课堂讲授,或者指定学生自己阅读参考。
(6) 本书便于自学,即使没有老师讲解,读者也能看懂本书的大部分内容。老师可以要求学生先自学,然后在课堂上选择重点内容讲授。有些语法中的具体的规定可以不必讲授,由学生自学。
5. C 教材应当体现C 标准
C 是从C语言发展而来的。多数编译器同时兼容C与C 。C 中有很多语法是继承了C的(当然也有不少改进)。熟悉C编程的人往往会沿用某些C的传统用法,例如,头文件带后缀.h;使用系统库时不使用命名空间;早期的C允许主函数为void类型、主函数可以无返回值等。但是,ANSI C 标准在一些方面有新的规定,例如,要求主函数为int类型,如果程序正常执行则返回0值;系统头文件不带后缀.h;使用系统库时使用命名空间std;增加了字符串类型string等。
虽然C 编译器仍然允许使用从C继承来的一些传统用法,但作者认为,作为教材,应当提倡C 的标准用法。引导读者从一开始就按照C 标准编写程序,养成C 的编程习惯和风格。本书各章都是依据C 标准介绍的,同时也说明允许使用的C的传统用法。在本书中,程序的形式大致如下:#include//头文件不带后缀.h
#include//包含string头文件,以便序中使用字符串变量
using namespace std;//使用系统库时使用命名空间std
int main() //主函数为int类型
{string str; //可以定义字符串变量str
…
return 0; //程序正常执行则返回0
}6. 提供配套的教学资源,满足教学需要
考虑到不同学校、不同专业、不同读者对学习C 有不同的要求,因此我们提供了配套的教学资源,供选用。
除了主教材外,推荐使用以下两本教学参考书:
(1) 《C 面向对象程序设计(第3版)学习辅导》,谭浩强编著,清华大学出版社出版。该书提供主教材各章中的全部习题的解答。由于教材篇幅有限,有些很好的例子无法在教材中列出,因此把它们作为习题,希望读者自己完成,教师也可以从中选择一些习题作为例题讲授。学生除了完成教师指定的习题外,最好把习题解答中的程序看一遍,以更好地理解C 程序,扩大眼界,启迪思路,丰富知识,增长能力。
程序设计是一门实践性很强的课程,只靠听课和看书是学不好的。衡量学习好坏的标准不是“懂不懂”,而是“会不会干”。因此必须强调多编程,多上机实践。在《C 面向对象程序设计(第3版)学习辅导》中,还介绍了运行C 程序的方法。此外,书中还给出上机实践任务,要求学生完成若干次上机实践。
(2) 《C 程序设计实践指导》,陈清华、朱红编著,清华大学出版社出版。该书提供了50多个具有实用价值的C 应用程序。这是为学习教材后进一步深入学习的读者准备的,目的是提高编程能力。该书内容包括: 怎样编写C 应用程序;提供若干不同规模的实际的C 应用程序供分析阅读;安排并指导学生完成1~2个C 应用程序。经过这样的训练,学生的实际能力将会有较大的提高。
此外,本书还提供教材中全部例题的源程序,以便于教师上机和讲授,也便于学生在此基础上调试和修改程序,需要者可在清华大学出版社官网下载。同时,还向使用本书的教师免费提供讲课的电子演示文稿(PPT的素材),以节省教师的备课时间。
本书由谭浩强教授编写,谭亦峰也参加了部分编写工作。全国高等院校计算机基础教育研究会和浩强工作室的各位专家以及全国各高校老师多年来对作者始终给予了热情的支持和鼓励。清华大学出版社对本书的出版十分重视并作了周到的安排,使本书得以在短时间内出版。对于曾经鼓励、支持和帮助过我的朋友,谨表示真挚的谢意。
本书肯定会有不妥之处,诚盼专家和广大读者不吝指正。
谨识2020年5月于清华园
评论
还没有评论。