新华书店直发 全新正版 急速发货 开票联系客服
¥ 40.48 6.8折 ¥ 59.9 全新
库存282件
作者谭浩强 著
出版社清华大学出版社
ISBN9787302481447
出版时间1991-07
装帧平装
开本16开
定价59.9元
货号29468777
上书时间2024-10-21
▲ 原全国政协副主席、国务委员、国家科委主任、中国工程院院长宋健同志为谭浩强教授题词▲ 原全国人民代表大会副委员长、中国科学院院长卢嘉锡给谭浩强教授的题词▲ *副部长吴启迪给谭浩强教授的贺信▲ 中国科学院资深院士、中国计算机学会名誉理事长张效祥给谭浩强教授的题词
前言
20世纪90年代以来,C语言迅速在全世界普及推广。无论在中国还是在世界各国,“C语言程序设计”始终是高等学校的一门基本的计算机课程。C语言程序设计在计算机教育和计算机应用中发挥着重要的作用。作者于1991年编著了《C程序设计》一书,由清华大学出版社出版。该书针对初学者的特点和认知规律,精选内容,分散难点,降低台阶,例题丰富,深入浅出。出版后受到广大读者的热烈欢迎。许多读者说: “C语言原来是比较难学的,但自从《C程序设计》出版后,C语言变得不难学了。”根据C语言的发展和教学的实践,作者先后对该书进行了3次大的修订,累计重印200多次,发行超过1400万册,平均每年印刷50万册,成为我国广大初学者学习C语言程序设计的主流用书。国内许多介绍C语言的书籍以本书为蓝本。本书曾荣获原电子工业部优秀教材一等奖、全国高等院校计算机基础教育研究会优秀教材一等奖、全国高校出版社优秀畅销书特等奖和“十二五”普通高等教育本科规划教材,这是对我的莫大鼓励和鞭策。在此书再版之际,作者想对学习程序设计问题提出以下几点看法。一、 关于C程序设计教学的指导思想〖*2〗1. 为什么要学习程序设计大学生不能满足于只会用办公软件,应当有更高的要求,对于理工科的学生尤其如此。计算机的本质是“程序的机器”,程序和指令的思想是计算机系统中基本的概念。程序设计是软件开发人员的基本功。只有懂得程序设计,才能进一步懂得计算机,真正了解计算机是怎样工作的。通过学习程序设计,学会进一步了解计算机的工作原理,更好地理解和应用计算机,掌握用计算机处理问题的方法,培养计算思维,提高分析问题和解决问题的能力,具有编制程序的初步能力。即使将来不是计算机专业人员,由于学过程序设计,理解软件生产的特点和生产过程,就能与程序开发人员更好地沟通与合作,开展本领域中的计算机应用,开发与本领域有关的应用程序。因此,无论计算机专业学生还是非计算机专业学生,都应当学习程序设计知识,并且把它作为进一步学习与应用计算机的基础。2. 为什么选择C语言进行程序设计,必须用一种计算机语言作为工具,否则只是纸上谈兵。可供选择的语言很多,各有特点和应用领域。C语言功能丰富,表达能力强,使用灵活方便,应用面广,目标程序效率高,可移植性好,既具有高级语言的优点,又具有低级语言的许多特点,既适于编写系统软件,又能方便地用来编写应用软件。有人以为C 语言出现后,C语言就过时了,会被淘汰了,这是一种误解。C 是为处理较大规模的程序开发而研制的大型语言,它比C语言复杂得多,难学得多。事实上,将来并不是每个人都需要用C 编制大型程序。C语言是更为基本的。美国一位资深软件专家写了一篇文章,题目是《对计算机系学生的建议》,是经验之谈,可供参考。他说: “大学生毕业前要学好C语言,C语言是当前程序员共同的语言。它使程序员互相沟通,比你在大学学到的‘现代语言’(比如ML语言、Java语言、Python语言或者正在教授的流行语言)都更接近机器。”他指出: “不管你懂得多少延续、闭包、异常处理,只要你不能解释为什么while(s =t )的作用是复制字符串,那你就是在盲目无知的情况下编程,就像一个医生不懂基本的解剖学就盲目开处方。”C语言更适合解决某些小型程序的编程。C语言作为传统的面向过程的程序设计语言,在编写底层的设备驱动程序和内嵌应用程序时,往往是更好的选择。现在大多数高校把C语言作为门计算机语言进行程序设计教学,这是合适的,有了C语言的基础,需要时再进一步学习C 语言,也是很容易过渡的。3. 怎样处理好算法和语言的关系进行程序设计,要解决两个问题: (1) 要学习和掌握解决问题的思路和方法,即算法。(2) 学习怎样实现算法,即用计算机语言编写程序,达到用计算机解题的目的。因此,课程的内容应当主要包括两个方面: 算法和语言。算法是灵魂,不掌握算法,编程就是无米之炊。语言是工具,不掌握语言,编程就成了空中楼阁。二者都是必要的,缺一不可。作者的做法是: 以程序设计为中心,把二者紧密结合起来,既不能孤立地、抽象地研究算法,更不能孤立地、枯燥地学习语法。算法是重要的,但本课程不是专门研究算法与逻辑的理论课程,不可能系统全面地介绍算法;也不是脱离语言环境研究算法,而是在学习编程的过程中介绍有关的典型算法,引导学生思考怎样构造一个算法。编写程序的过程就是设计算法的过程。语言工具也是重要的,掌握基本的语法规则是编程的基础,如果不掌握必要的语法规则,连简单的程序也编不出来,或者编出来的程序错误百出,无法运行。但是掌握C语言绝不能靠死学死记,就像熟读英语的语法不一定会写英文文章,只靠字典学不好外语一样。如果你去看C语言标准文本,可能感觉如看“天书”一样,恐怕只有计算机专家才能看懂。绝不能把程序设计课程变成枯燥地介绍语法的课程,学习语法要服务于编程。在30年前我们编写《BASIC语言》时就已经遇到了这个问题,我们坚决摒弃了孤立地介绍语法的做法,而是以程序设计为中心,把算法与语言紧密结合起来。不是根据语言规则的分类和顺序作为教学和教材的章节和顺序,而是从应用的角度切入,以编程为目的,以编程为主线,从初学者的认知规律出发,由浅入深,由易到难,构建了教材和教学的体系。一开始就让学生看懂简单的程序,编写简单的程序,然后逐步深入。语法规则不是通过孤立的学习而是在学习编程的过程中学到的。随着编程难度的逐步提高,算法和语法的学习同步趋于深入。学生在富有创意、引人入胜的编程中,学会了算法,掌握了语法,把枯燥无味的语法规则变成生动活泼的编程应用。事实证明这种做法是成功的。多年来,我们坚持和发展了这种行之有效的方法,取得了很好的效果。近年来许多学校的经验表明,按照这种思路进行教学,教师容易教,学生容易学,效果很好。二、 关于本书内容的选择原则与具体安排1. 本书是一本介绍怎样用C语言进行程序设计的教材,目的是学习编写程序,C语言是工具,掌握语言工具是为了编程。因此本书章节的安排不是以语言作为主线,而是以怎样编程作为主线。在由浅入深介绍编程的过程中自然而然地介绍C语言的有关内容,二者紧密结合,同步深入。本书不是C语言的使用说明手册,不可能也没必要详细介绍C语言的全部内容,更不可能详细介绍所有细节。只能介绍基本的内容,使读者能顺利地用C语言编写小规模的程序。在教学中,常用到的就介绍,不常用甚至用不到的就不介绍(或在教材中列出这些内容,使读者有个印象,以后用到时可以查阅)。如果读者今后有需要,可以在此基础上继续深入,并在实践中掌握有关语言工具的细节。 2. 程序设计课程存在以下实际问题: (1) 许多学校把程序设计放在一年级,学生缺乏必要的计算机基础知识;(2) 学时不是很多,一般只有四五十学时。(3)本书的读者大多数将来不一定从事专业的编程工作。学习C程序设计不能脱离实际。课程的作用是使读者了解什么是程序设计,了解计算机高级语言的特点和使用方法,能用C语言编写出规模不大的程序。有了这个基础,以后需要时可以进一步深入和提高,有能力用任何一种语言编写出实用程序。3. 教材必须做到定位准确,取舍恰当,结构合理,概念清晰,循序渐进,易于理解,善于把复杂的问题简单化,能用通俗易懂的方法和语言阐述清楚复杂的概念。作者认为: 只有明白“不明白的人为什么不明白”的人才是明白人。这是作者三十多年来从事教学和编著教材一贯坚持的理念,并且取得了很好的效果,受到广大师生的肯定和欢迎。在本书中仍然充分体现这一特点。4. 根据教学实践的反馈,在本书第四版出版时已作了较大的修改,这次修订是在第四版的基础上进行的,为了教学的延续性,第五版基本保持第四版的基本结构和内容,并作了适当的精简和补充。具体安排如下: (1) 第1章中简要介绍了程序设计的初步知识。但是由于篇幅关系以及学生基础不同,没有单独加设一章系统介绍计算机基本知识。有些需要用到的知识(如补码、地址、路径、数制转换等),可在教学中随时补充(讲到哪,就补到哪)。这样可以尽早切入C语言编程,始终以编程为主线。(2) 在第三版中第3章“数据类型、运算符与表达式”内容涉及数据在计算机中的存储形式,初学者一开始就接触这些内容容易感到枯燥难学。在第四版中对这部分内容进行了精简,不再单独设章,把其中基本的、必须了解的内容结合在第3章“简单的C程序设计”中介绍,降低了学习难度。在这次修订中又进一步精简,对于输入输出格式,主要介绍基本、常用的内容,对其他格式,有些在随后陆续结合程序介绍,有的不作具体介绍,只列表给出,使读者有全面了解,以后用到时可以查阅。(3) 在第四版中,已把“位运算”和“预处理指令”这两章内容从教材移入《C程序设计(第四版)学习辅导》一书中。在这次修订中为减少篇幅,把第四版中的第11章“常见错误分析”也移放到《C程序设计(第五版)学习辅导》一书中,供读者自学参考。(4) 在第三版的“结构体与共用体”一章中有设计链表(链表的建立、插入、删除和输出等)的内容,对于非计算机专业学生来说,难度较大。作者认为,这部分内容对非计算机专业可以不作为基本要求,在第四版中已对这部分内容作了精简,只对链表作简单的介绍,读者对之有一定了解即可。考虑到这部分对计算机专业学生是需要的,我们把有关链表的详细内容作为习题供选做,并在《C程序设计(第五版)学习辅导》一书的习题解答中给出完整的程序,供需要者参考。(5) 专门编写了“C程序案例” 一章,综合应用各章的知识。其中提供了不同难度、不同类型的程序。阅读这些程序,可以使学生了解怎样去编写应用程序,提高自己的编程能力。这部分内容安排在《C程序设计(第五版)学习辅导》一书中,供需要者参考。5. 加强算法。专设一章(第2章)介绍算法的概念、算法的特点、表示算法的工具以及怎样设计算法,并通过一些简单的例子说明怎样构造一个算法。使读者有一个初步的、基本的了解。在以后各章中,由浅入深地结合例题介绍各种典型的算法,并且用C语言表示此算法,写出程序并运行。这样就使算法与程序紧密结合,便于验证算法的正确性。学习时不会觉得抽象,而会觉得算法具体有趣,看得见,摸得着,有利于启发思维,培养科学思维方法。在各例题中,在提出问题后,都先进行分析问题,讨论解题思路,也就是构造算法,然后才是根据算法编写程序,而不是先列出程序再解释程序,从中了解算法。这样做,更符合读者的认知规律,使读者更容易理解算法,也引导读者在处理任务时先考虑算法再编程,而不是坐下来就写程序,养成良好的编程习惯。6. 指针是C语言的一大特点,也是重点和难点,是作者下功夫多的部分。指针这一部分概念比较复杂,应用相当灵活,很多初学者觉得指针很抽象,很难掌握,这成为学习C语言的拦路虎。如果没有清晰的思路和深入的理解,是难以真正掌握指针的。作者认为,应该用清晰易懂的语言使读者明白指针的本质,绝不能让读者一知半解,囫囵吞枣。作者明确指出“指针就是地址”。很多读者反映,这是画龙点睛,把指针讲透了,抓住了问题的本质。有了这个明确的认识,很多不清楚的问题都迎刃而解了,觉得指针不再难理解、难掌握了。作者根据初学者的特点,用通俗易懂的方法讲清楚了指针是什么,并且通过大量的例子说明怎样通过用指针有效地处理问题。在这次修订中,作者对“指针就是地址”作了更深入具体的分析和叙述,使之更加容易理解,更加有说服力,解决了读者学习中的一大困惑。在这一章中,既有基本的讲解和通俗的比喻,又有具有深度的编程技巧。从原理到应用,由浅到深,步步深入,不同程度的读者都能从中得到启迪与裨益。许多学校的老师对学生说,如果对指针不明白,看清华版的《C程序设计》就明白了。希望读者认真学好这一章。7. 更加通俗易懂,容易学习。作者充分考虑到广大初学者的情况,精心设计体系,适当降低门槛,尽量少用深奥难懂的专业术语,便于读者入门。没有学过计算机原理和高等数学的读者也完全可以掌握本书的内容。本书采用作者提出的“提出问题—解决问题—归纳分析”教学三部曲,先具体后抽象,先实际后理论,先个别后一般;而不是先抽象后具体,先理论后实际,先一般后个别。在介绍每个例题时,都采取以下的步骤: 给出问题—解题思路—编写程序—运行结果—程序分析—有关说明,使读者很容易理解。即使没有教师讲解,读者也能看懂本书的内容,就有可能做到,教师少讲,提倡自学,上机实践。8. 本教材是按照C 99标准进行介绍的(目前许多教材是按照C 99标准介绍的),以符合C语言的发展,使程序更加规范。C 99是在C 89的基础上扩充一些功能而推出的。C 99和C 89是兼容的,用C 89编写的程序在C 99环境下仍然可以运行。C 99所增加的有些功能和规定是为了在编制比较复杂的程序时方便使用和提高效率。对初学者暂时用不到的,本书不作介绍,以免增加学习难度,可以在将来深入编程时再逐步了解和使用。9. 程序的编译和运行环境,早多用Turbo C,后来多用Visual C 6.0。用Visual C 6.0是比较方便的。但由于在Windows 7以上的系统中不支持Visual C 6.0,因此许多用户改用Visual Studio 2008或2010。我们在《C程序设计(第五版)学习辅导》一书中既介绍Visual C 6.0的使用方法,也介绍用Visual Studio 2010编译和运行C程序的方法,供读者参考使用。10. 为了帮助读者学好C程序设计,作者精心编著了《C程序设计(第五版)学习辅导》,作为本书的配套用书。内容包括以下4个部分。部分: 《C程序设计(第五版)》全部习题的参考解答。提供了130多个程序,可以作为学习《C程序设计(第五版)》的补充例题,对于读者拓宽视野、丰富知识和提高编程能力很有好处。第二部分: 深入学好C程序设计。包括4章: (1) 预处理指令。系统介绍了C语言中的预处理指令,是对教材的补充。(2) 位运算。系统介绍了C语言的位运算,是对教材的补充。(3) 常见错误分析。作者总结了初学者学习时常出现的35种错误,对初学者避免错误会有帮助。(4) C程序应用案例。通过3个应用实例(个人所得税计算、学生试卷分数统计和电话订餐信息处理)了解怎样用C语言编写能供实用的程序。第三部分: C语言程序上机指南。包括: (1) 怎样用Visual C 6.0运行C程序。(2) 怎样用Visual Studio 2010运行C程序。详细介绍这两种使用方法,尤其是Visual Studio 2010,是很多读者希望了解和使用的,但介绍它的教材较少。第四部分: 上机实践指导。包括3章: (1) 程序的调试与测试。(2) 上机实验的目的和要求。(3) 实验安排。具体安排了12个实验,给出题目和具体要求。该书内容丰富,是对教材的重要补充。对于希望学好C程序设计的读者是很好的参考读物。三、 怎样学习C程序设计1. 要着眼于培养能力。C语言程序设计并不是一门纯理论的课程,而是一门应用的课程。应当注意培养分析问题的能力、构造算法的能力、编程的能力和调试程序的能力。2. 要把重点放在解题的思路上,通过大量的例题学习怎样设计一个算法,构造一个程序。初学时更不要在语法细节上死背死抠。一开始就要学会看懂程序,编写简单的程序,然后逐步深入。语法细节是需要通过较长期的实践才能熟练掌握的。初学时,不宜过早地使用C语言的某些容易引起错误的细节(如不适当地使用 和--)。3. 掌握基本要求,注意打好基础。在学校学习阶段,主要是学习程序设计的方法,进行程序设计的基本训练,为将来进一步学习和应用打下基础。不可能通过几十小时的学习,由一个门外汉变成编程高手,编写出大型而实用的程序,要求应当实事求是。如果学时有限,有些较深入的内容可以选学或自学,把精力放在基本、常用的内容上,打好基本功。4. 要十分重视实践环节。光靠听课和看书是学不会程序设计的,学习本课程既要掌握概念,又必须动手编程,还要亲自上机调试运行。读者一定要重视实践环节,包括编程和上机,要既会编写程序,又会调试程序。学得好与坏,不是看你“知不知道”,而是“会不会干”。考核方法应当是编写程序和调试程序,而不应该只采用是非题和选择题。5. 要举一反三。学习程序设计,主要是掌握程序设计的思路和方法。学会使用一种计算机语言编程,在需要时改用另一种语言应当不会太困难。不能设想今后一辈子只使用在学校里学过的某一种语言。无论用哪一种语言进行程序设计,其基本规律是一样的。在学习时一定要活学活用,举一反三,掌握规律,在以后需要时能很快地掌握其他新的语言进行编程。 6. 要提倡和培养创新精神。教师和学生都不应当局限于教材中的内容,应该启发学生的学习兴趣和创新意识。能够在教材程序的基础上思考更多的问题,编写难度更大的程序。在本书每章的习题中,包括了一些难度较大的题目,建议学生尽量选做,学会自己发展知识,提高能力。7. 如果对学生有较高的程序设计要求,应当在学习本课程后安排一次集中的课程设计环节,要求学生独立完成一个有一定规模的程序。8. 从实际出发,区别对待学习本课程的有计算机专业学生,也有非计算机专业的学生;有本科生,也有专科(高职)学生;有重点大学的学生,也有一般大学的学生。情况各异,要求不同,必须从实际出发,制订出切实可行的教学要求和教学方案,切忌脱离实际的一刀切。例如,对计算机专业学生的要求应当比非计算机专业高,尤其是对算法的要求应当高一些,不仅会用现成的算法,还应当会设计一般的算法。好能在学完本课程后独立完成一个有一定规模的程序。对高职学生的要求应不同于本科生,更不应照搬重点大学的做法,不宜在算法上要求太高,而应切实掌握语言工具,具有较强的动手和实践能力,例如编码能力和调试能力。对基础较好、学生程度较高的学校,可以少讲多练,强调自学,有的内容课堂上可以不讲或少讲,指定学生自学。引导学生通过自学和实践发展知识,尽可能完成一些难度较高的习题。9. 为了满足不同的需要,出版不同层次的C程序设计教材全国各校的情况不同,学生的基础和学习要求也不尽相同,不可能都采用同一本教材。教材应当满足多层次多样化的要求。许多学校的老师认为《C程序设计》是一本经过长期教学实践检验的优秀教材,其内容与风格已为广大师生所熟悉,希望在《C程序设计》的基础上组织不同层次的教材,供不同对象选用。作者与清华大学出版社反复研究,决定出版C程序设计的系列教材,包括以下3种: (1) 《C程序设计(第五版)》,即本书。本书系统全面,内容深入,讲解详尽,包含了许多其他教材中没有的内容,尤其是针对编程实践中容易出现的问题作了提醒和分析,是学习C语言程序设计的理想教材,适合程度较高、基础较好的学校和读者使用。(2) 《C程序设计教程(第2版)》。以《C程序设计》一书的内容为基础,适当减少内容,突出重点,紧扣基本的要求,适合学时相对较少的本科院校使用。该书已被*正式列为“十二五”普通高等教育本科规划教材。(3) 《C语言程序设计(第3版)》。内容更加精练,要求适当降低,写法上更加通俗易懂,适合应用型大学和程度较好的高职院校使用。该书亦已列为普通高等教育“十一五”规划教材和2009年度普通高等教育精品教材。10. 为了帮助广大读者更好地掌握本书的内容,我们组织制作了与本书配合使用的数字资源,将在近期内陆续推出,供各高校教学使用。
在本书出版之际,作者衷心感谢全国高等院校计算机基础教育研究会和全国各高校教师多年来始终不渝的关心与鼎力支持,感谢广大读者给予我的理解与厚爱,感谢清华大学出版社三十多年来的密切合作与支持。没有这一切,我不可能取得今天的成就。我永远感谢曾经帮助和支持过我的、相识的和不相识的同志和朋友。薛淑斌、谭亦峰高级工程师参加了本书内容的研讨并编写了部分程序,南京大学的金莹副教授参加了本次修订工作并负责制作与本书配合的数字资源。由于作者水平有限,本书肯定会有不少缺点和不足,热切期望得到专家和读者的批评指正。
谭浩强谨识2017年5月于清华园对使用本教材的建议1. 本书是作为高等学校学生学习C程序设计的教材,对象是没有学过计算机程序设计的大学生。本书既注重概念清晰,使读者建立起对程序设计和C语言的清晰理解,又注意引导学生学以致用,使学生在较短的时间内初步学会用C语言编写程序,具有初步的编程知识和能力,而不是仅停留在理论知识层面上。虽然如此,本书与就业上岗前的职业培训教材是有区别的,也不是供软件开发人员使用的手册和技术规范,本书带有基础的性质,主要帮助学生学习程序设计方法,学习怎样去编写程序,为以后的进一步提高与应用打好基础。如果读者准备从事软件开发工作,可以在学习本书的基础上进一步学习有关专业知识。2. 本书系统全面,内容丰富,供基础较好的学校和学生学习。本书很适合自学,建议采取课堂讲授与自学相结合的方法。在课堂上教师主要介绍编程思路和怎样用C语言去实现算法,不要孤立地一一介绍语法的细节,但是要在介绍程序时重点指出关键之处以及容易出错的地方。要求学生通过自学教材和上机实践来理解程序设计方法,学会正确使用C语言工具,具有初步编程能力。语法不是靠讲和背学会的,而是在实践中掌握的。3. 作者专门编写的“常见错误分析”(《C程序设计(第五版)学习辅导》第13章)中列举了初学者在编程序时常出现的错误,这是作者在多年教学实践中收集和总结出来的,是很有价值的,希望教师和同学能充分利用这个资源。教师可以结合教学提醒学生避免出现类似的错误。学生在学习过程中可以随时翻阅,了解在什么情况下容易出错。在经过一段时间的编程和上机实践后,再系统地阅读一下,回顾和总结自己易出错的问题,这样可以减少错误,提高编程效率。4. 要善于利用习题。本书各章中的习题包括不同类型、不同程度的142道题目。其中有些题目的难度高于书中的例题,这样做的目的是使学生不满足于已学过的内容,而要举一反三,善于发展已有知识,提倡创新精神,培养解决问题的能力。有的专家和读者说,如果能独立地完成全部习题,他的C语言学习就过关了。希望教师能指定学生完成各章中有一定难度的习题。希望学生能尽量多做习题,以提高自己的水平。在《C程序设计(第五版)学习辅导》一书中,提供了绝大多数习题的参考解答,列出了程序。对于比较难的习题,除了给出程序外,还作了比较详细的说明。这些习题解答实际上是作者对本教材例题的补充,希望读者能充分利用它。学生即使没有时间自己做全部习题,如果能把全部习题的参考解答都看一遍,而且都能看懂,也会很有收获,能扩大眼界,丰富知识。教师也可以挑选一些习题解答在课堂上讲授,作为补充例题。5. 预处理指令往往是C程序中必要的部分,尤其是用#include指令来包含头文件和用#define指令定义符号常量。在本教材中结合编写程序,介绍了怎样使用这两种预处理指令。在《C程序设计(第五版)学习辅导》一书中,专门有一章系统、详细地介绍各种预处理指令的使用,以供使用参考。教师可在介绍#include指令和#define指令时说明还有其他预处理指令,请同学们自己学习参考
由谭浩强教授著、清华大学出版社出版的《C程序设计》经过近
— 没有更多了 —
以下为对购买帮助不大的评价