《C程序设计》——一本难得的好教材
2009-06-18王新王智广
王 新 王智广
摘要:“C语言程序设计”是信息类专业、特别是计算机专业的专业基础课,是计算机编程的主要语言之一。本文针对谭浩强先生的《C程序设计》一书,从学习对象、书的结构、叙述特点等方面进行探讨,说明了该书既是所有学习、使用C语言人的必读教材和主要参考书,也是当今国内培养计算机专业人士的摇篮,同时又是学习C语言的最经典教材。
关键词:C语言;程序设计;经典教材;计算机教育
中图分类号:G642 文献标识码:B
1引言
只要人们提到学习C语言,都会不由自主地和谭浩强三个字联系在一起,特别是20世纪80年代以后的学生,都是在谭老师的《BASIC程序设计》、《FORTRAN语言》、《C程序设计》的指引下走过来的。特别是20世纪的90年代中后期,全国非计算机专业学生的计算机应用能力等级考试,将C语言纳入到考试的范畴,C语言便进入大学计算机公共基础课的讲堂,谭老师的《C程序设计》因为系统性强、通俗易懂、例题丰富,并且实用性强,很适合初学者,瞬时风靡各大高校,成为许多理工科专业学生书包中的必备书籍。多年的一线教学体会,我始终推荐该书为使用教材或主要参考书。
2适用各类学习对象
笔者从20世纪90年代中期开始讲授C语言,至今已有15年,授课对象有计算机专业和非计算机专业的学生,也有大专生和社会上成人教育的函授学员,使用的教材主要是谭老师的《C程序设计》,从第一版到第二版、第三版,同学们都觉得这本书好,从没有学生对选用这本教材提出异议。事实上,国内许多高校的非计算机专业用谭老师的书作为“C语言程序设计”课的教材,而且许多高校的计算机专业同样也用谭教授的书作为“C语言程序设计”课的教材,自学C语言程序设计的读者更是不约而同地选择谭教授的书作为叩开C语言大门的入门书。
最初学习C语言的主要是计算机专业学生,而且大都是作为第二语言开设的,后来才逐渐演变成作为第一语言,而部分非计算机专业的学生也有这种历程。当C语言作为第一语言开设后,《C程序设计》的第二版便增加了“算法”,并安排在第二章(C语言概述之后),使学生首先掌握常用算法(如求一批数的累加和、累乘积,判断某年是否为闰年,判断一个大于等于3的正整数是否为素数等算法)的编程思想,而后再讲解具体的语法定义、规则,以及算法的具体实现,将程序语言的讲解与算法的分析有机地结合起来,同时知识的讲解有螺旋式上升的趋势,非常符合初学者的认知规律,受到各种学习对象的欢迎。记得有一年上成教的课,当时成教教材管理部门选用了其他教材并发给了学生,笔者在第一次上课时便将谭老师的《C程序设计》作为主要的参考书推荐给了学生。上了两次课后,许多同学反映:“老师,我们这本教材没有谭浩强那本讲得清楚”,笔者后来向成教学院的有关人员提出下一届更换教材的建议,以后使用的教材都是谭老师的《C程序设计》这本教材。
3内容全面、结构清晰
《C程序设计》一书涵盖了程序设计基础知识和C语言程序设计的全部内容,并介绍了大量常用算法。在C语言中,数据类型丰富,运算符也比较多,程序设计自由度大,这些都给初学者带来了较大的学习难度。本书从C语言的结构开始,从最简单的输出“This is a C program.”、“求两数之和”、“求两个数中最大者”实例出发,将基本的程序结构中应至少有一个输出、最简单的变量定义和使用、C程序是由函数构成的知识点讲解得非常清晰,只要懂点英文,就能读懂程序。进而介绍具体的数据类型、运算符、表达式、基本的输入输出函数,使初学者很快就能编写出比较简单的程序,看到自己的学习效果,很有成就感。而后开始介绍稍复杂的程序结构(选择结构、循环结构)和数据类型(数组),并结合图例讲解和实现常用的算法。在函数一章通过利用前面的讲过的实例复习已学的知识点,同时也降低了学习函数的难度。在读者会编写基本的C程序后,才开始介绍C语言的特色部分,如编译预处理、指针、结构体、共同体、位运算文件等,将C语言程序设计的知识点全部展开,难度逐渐地增加,而没有采取在讲解函数之前先讲解指针的做法。这种循序渐进、螺旋式的教学内容安排非常符合认知规律。
4深入浅出、讲解透彻
大学教材是供人们使用的,它既用于老师教,又供学生自学,也可作为有关人员的参考用书。它不但要强调基础知识和系统的完整性,而且也能使人通过自学就可能进入一个新的发展领域。这就要求一本好的教材既要内容完整,同时又必须能够做到深入浅出,讲解透彻。《C程序设计》一书各个章节的编写通过提出问题、分析问题、解决问题,然后再归纳总结的方法,将复杂难懂的抽象概念与实际应用实例结合,与形象的比喻科学地结合,使其变得容易理解,并与计算机的基础知识相结合。如在讲解递归算法时先用求人的年龄问题来讲解递推和回归的过程,而后才讲解经典的汉诺塔问题,同时给出了详尽的数学公式推导过程,并配以图例说明。又如在介绍指针概念中“间接访问”一词时,使用了生动的比喻:“为安全起见,将A钥匙放到另一抽屉B中锁起来,若果需要打开A抽屉,就需要先找出B钥匙,打开B抽屉,取出A钥匙,再打开A抽屉,取出A抽屉中之物,这就是‘间接访问。”这使读者不仅理解了“间接访问”概念,也加深了对指针概念的理解。再如在介绍变量的存储类型时、介绍指针时都对计算机的存储管理作了清楚的论述。
该书的内容重点突出,难点分散,对C语言中最基本和常用的部分进行了详细的分析和讲解,凡是涉及的内容,都讲得非常透彻、详尽。
5例题难易适度、习题丰富、教学资料齐全
多年的课堂教学过程中,总能体会到本书中例题和习题选择的难度非常适宜,如讲解循环结构时选用计算“1+2+…+100”作为入门的例题,习题中便有计算“1!+2!+…+ 20!”之和,既有相似之处又有新旧知识(循环结构的使用和前面介绍的数据类型及其表示范围)的结合。另外本书通过丰富的习题来丰富常用的实用算法。如在循环一章的习题中将迭代法和二分法引入,通过求方程的根来理解其算法含义和实现过程,在数组一章的习题中引入了“筛选法”、“选择排序法”、“杨辉三角形”等。
计算机程序设计是一门实践性很强的课程,学习时不仅仅需要选择合适的例题,还需要编写足够代码量的程序,仅靠阅读教教材或听课是不可能掌握编程技能的。总有人抱怨说:“课堂上听得很明白,就是课下编程困难”,而学习程序设计最重要的环节就是实践。《C程序设计》一书中每章都附有大量的各种类型习题,并且有配套的习题解答,这不仅有利于学生开阔视野,丰富知识,而且有益于复习、巩固、加深理解和掌握课上所学的知识,提高他们的学习兴趣,培养自学能力,也便于教师设计实验课的教学内容。近年来谭老师讲授《C程序设计》的教学录像也已成为很多教师讲课前的观摩学习课程。
6强调应用意识和应用技能
教材要起一种引导作用,要强调应用意识和应用技巧,应特别注意学科间的联系。《C程序设计》一书将实际生活中数学问题的解决算法、工程应用的常用数值分析方法均作为本书的实例和习题,这不仅有助于培养学生的逻辑思维,而且也有助于学生分析问题和解决问题的应用能力。正因如此,初学程序设计的学生可以达到熟练运用C语言进行小规模应用开发的能力,许多非计算机专业的人士通过自学这本教材,打下了程序设计的基础,后来便使用C语言开发出本专业的应用软件。
7结论
大学教材非常重要。谭老师为人们写下了诸如《BASIC语言》、《FORTRAN语言》、《C程序设计》等深受广大教师和学生欢迎的经典之作。谭老师的《C程序设计》一书对我国普及C语言程序设计起了很大的推动作用,他为计算机教育的普及不懈地努力,取得了巨大的成就,功不可没,真正做到了“桃李满天下”。
参考文献:
[1] 谭浩强. C程序设计[M].3版. 北京:清华大学出版社,2005.
[2] 杨选辉. 对高校教材建设的几点看法[J]. 计算机教育,2007(13).