当前位置:首页 期刊杂志

从《C Primer Plus》看国内外计算机专业C程序设计课程教学方法的区别

时间:2024-05-07

王艳会 钟诚

[摘 要] 本文通过比较国内外C语言程序设计教材,分析国内外C语言程序设计课程教学方法的不同以及各自的优点。根据这些比较和分析,结合国内C语言程序设计课程的学时安排和学生知识基础,提出了进一步提高C语言程序设计课程教学效果的改进办法。教学实践表明,这些改进办法可行且有效。

[关键词] C语言程序设计;计算机专业教学;国外教材

[中图分类号]G642   [文献标志码] A [文章编号] 1008-2549(2020) 05-0106-02

工欲善其事,必先利其器。C程序設计是计算机类专业的专业基础课,是面向对象程序设计、数据结构、操作系统等十余门专业基础课和专业主干课的先修课程。该课程的学习效果的好坏直接影响到后续课程的学习。如果C语言掌握不好,后续课程的学习难免流于形式;反之,如果在C语言课程的学习中获得了本专业应有的程序设计能力,后续课程的学习将会有深刻的理解和实践应用能力。从这种角度看,C语言程序设计课程不仅是计算机类专业本科课程学习的开始,而且也是后续课程的学习和实践的工具。因此C语言课程的教学方法研究对于计算机专业的教学有着不言而喻的重要性。对于一门课程,教材很大程度上是教学理念和教学方法的反映,C语言亦是如此。近二十余年来,国内优秀的C语言教材层出不穷,其中更是不乏影响深远的经典教材。这些教材为国内的C语言教学提供了包含丰富教学经验的教学思路、教学内容和教学理念,适合国内学生的知识基础,是国内C语言教学方法的代表。纵观国外的计算机专业C语言教学领域,也有很多优秀的C语言教材,其中以《C Primer Plus》、《C and Pointer》、《The C Programming Language》等为代表,其中的讲授思路和内容和国内却有着诸多不同,也自然对应着一些与国内不同的教学方法。这些国外教材当然是根据国外计算机专业学生的知识基础等情况编写,但其中某些方面亦可以作为国内借鉴,从而进一步提高国内C语言课程的教学效果,增强学生的程序设计能力。本文从国外经典教材《C Primer Plus》出发,比较国内外教材,分析国内外C语言程序设计课程的教学内容、教学目标和教学思路的不同,然后根据我国计算机专业本科生的知识基础,适当借鉴国外教学思想,提出改进该课程教学方法的些许浅见。

一 国内外教材的区别

(一)对语法的介绍

几乎所有国内教材习惯将语法划分为多个组成部分,如数据类型、过程控制语句、函数、数组以及指针,等。每部分内容由对应章节介绍。在每个章节中,相应语法内容会被详尽地、彻底地介绍。学生在掌握这些语法后做这些语法的应用练习,即编写程序。以数组和指针为例,在数组和指针章节中,数组的定义、初始化、使用、二维数组、地址、存储方式、字符串、指针、指针间接引用、二级指针、指针数组和数组指针等语法被全部介绍。在《C Primer Plus》中,数组的定义等基本语法在《循环语句》中附带介绍,指针的定义等基本语法在《函数》中附带介绍。国内教材的出发点是首先让学生掌握扎实的语法基础,然后进行编程能力的锻炼;《C Primer Plus》则是引导学生逐步编写由易到难的程序,在使用的过程中介绍需要的语法。简言之,国内教材的做法是先学再做,大步推进;而国外教材的做法是在做中学,小步快行。相比之下,国内教材的做法可以使用较少学时让学生掌握语法基础并具备一定的程序设计能力,但学习难度较高;而国外教材的做法使学生在用中学,在教的过程中引导学生养成良好的编程习惯,学习难度较低,但需要更多的学时。两种教材的不同是由国内外高校计算机专业学生、课程和学时安排的不同导致的。国外教材因为课程学时多,可以以较慢的进度引导学生边用边学,从而保证教学效果;而国内计算机专业开设课程较多,单门课程不可能安排太多学时,另外学生学习更为勤奋,能够接受少学时、大容量的课时,所以国内教材按内容严格划分为较少章节,单课时内容更为紧凑。另外,《C Primer Plus》对语法的介绍非常全面,而国内教材仅介绍必需的语法,这也和课程教学学时的差别有关。

(二)编程环境和编译器

多数国内教材会指定一种编程软件,常见的有Turbo C(TC)和Visual C++(VC);《C Primer Plus》没有采用特定的编程软件。指定编程工具的好处是可以让学生尽快进入编程环节,省去了摸索编程软件使用方法的过程。但是指定编程软件也导致不能介绍没有被特定编译器采用的语法,从而导致介绍语法不全面,甚至导致介绍的语法陈旧。如Visual C++的所有版本仅支持ANSI C 1989的语法,ISO C 1999和ISO C 2011中的语法就不能介绍;而Turbo C甚至连最初的ANSI C 1989都不支持。这样指定特定编程软件的做法会导致所介绍的C语言语法或者太旧,或者仅是某一种编译器的“方言”。而《C Primer Plus》没有指定任何一种编程软件,因此可以毫无顾忌地介绍全面的语法,但这样需要学生自己寻找编程软件,而且需要自己摸索使用方法,如果该过程不顺利,可能影响学生的学习心理,失去兴趣,而且很多编程软件是英文版的,对部分英语水平欠佳的中国学生来说也是一个与C语言内容本不相关的障碍。

(三)例题和习题

国内教材例题多有较深数学背景,如方程求根二分法,级数逼近,等。这类题目需要考虑的情况较少,但往往有较复杂的流程控制,有利于锻炼学生的分析问题、整理编程思路的能力,但对于全面考虑问题的习惯养成帮助不大。《C Primer Plus》的例题多为与生活相关的、与数学不相关或数学基础浅显的例题,如银行本息计算、电费计算、整数方幂计算,等。这类题目的过程控制较为简单,但可能出现的情况较多,对于分析问题、整理编程思路的能力的锻炼促进作用较小,但可以引导学生考虑到可能发生的各种情况,编写出健康的程序。简言之,即国内教材所选例题注重培养学生坚韧的分析解决较难问题的能力,而国外教材所选例题偏重培养学生全面考虑问题的习惯。二者各有所长。国内教材之所以能够选择数学理论较深的例题,一个很大的原因是国内多数学生有着扎实的数学基础,能够理解例题所解决的问题,而正是学生的这种基础,让国内教材有了培养学生刻苦分析编写较复杂控制过程程序的条件,所培养出的学生中确实有较大比例人数擅长这种复杂程序的编写,但这也恰恰将少数数学基础不够好的学生挡在了C语言的大门之外。

在课后习题方面,国内教材常常给出包括选择题、填空题、程序分析题和程序设计题等的较全面的题型,对概念性内容有着比重较大的涉及。《C Primer Plus》课后习题类型仅有程序分析题和程序设计题,仅锻炼学生读程序和编程序的能力,对概念性的语法涉及较少。

综上所述,在语法方面,国内教材以语法的介绍为思路,且大多只介绍必需的语法,并通过习题强化对这些语法的掌握,然后开始对编程思维的训练;国外教材以编写程序所涉及语法的逐层拓展为思路,但对语法的介绍极为全面,这些语法在习题部分却没有很全面地覆盖,也就是说,国外教材对语法的介绍虽然全面,但其中很大的部分属于了解性质。从学习难度分析,国内教材先语法后编程,是走了一道“陡坡”,学习难度较高,但若学生能够坚持,则可以在较短时间内取得明显效果;而国外教材随着编程的拓展临时介绍需要的语法,让语法围着学生转,降低了学生的学习难度,是一道“缓坡”,但需要相对较长的学时。从培养效果分析,國内教材强调学生应该能够编写思路较复杂程序的能力,而国外教材的程序复杂程度有限,重点突出考虑问题的全面性方面的引导。在这些方面,国内外的教材各有所长。从语法标准角度分析,国内教材普遍标准陈旧,绝大部分教材还在采用ANSI C1989作为语法标准,而国外教材普遍采用ISO C1999或ISO C2011标准。标准的陈旧是有编译器的陈旧导致的。很多教材采用了不支持C99标准语法的Visual C++和只有在Windows98、2000、XP等老旧系统下才能运行的Turbo C。在这方面,国内部分教材略显不足。

二 改进建议

第一,国内教材仅介绍必需的语法,更适合中国计算机专业本科生的计算机基础,也更有利于将有限的学时用到程序设计思维的锻炼上,但是在语法介绍过程中以语法内容划分章节,虽然所需学时较少,但是学习难度相对较高。因此在基本语法的讲授环节,可以以学习过程中学生所编写的程序的规模的进展调整语法的讲授顺序,介绍当时需要的语法,如介绍循环语句时可先简要介绍数组的基本语法,无须涉及地址以及存储方式等较深内容,让学生先用起来。如果因此导致所需学时增加,可以减少字符串输入输出和格式输入输出函数等不重要内容的学时。

第二,Turbo C和Visual C++仅支持C89,语法标准较陈旧,而且现在广泛使用的Windows 7和Windows8操作系统对这两种编程环境的支持并不好。另外,从保护知识产权和节省费用的角度考虑,也应尽量选择开源软件。Dev Cpp对上述要求均能很好地满足。另外,Dev Cpp是大部分国际和国内程序设计比赛的指定编程环境,使用它也有利于学生参加各类相关比赛;而且Dev Cpp可采用MinGW编译器,是Linux操作系统GNU的Windows版本,这也有利于学生以后在Linux操作系统中从事嵌入式开发。

第三,课堂习题尽量不涉及较深奥的数学原理。如果涉及,应先将所涉及的数学背景以通俗的方式讲解明白,避免部分数学基础不好的学生因为对数学的恐惧而失去对C语言的兴趣。在C语言课程后期,可以将数独、彩票等简单数字游戏或现实生活中的问题作为本课程的综合练习项目。

参考文献:

[1]普拉塔. C Primer Plus(第5版)中文版[M]. 云巅工作室,译.北京:人民邮电出版社,2005.

[2] Kenneth A.Reek. C和指针(中文版)[M]. 徐波,译.北京:人民邮电出版社,2008.

[3]Brian W.Kernighan,Dennis M.Retchie.The C Programming Language(第二版)[M]. 徐宝文,译.北京:机械工业出版社,2001.

(责任编辑: 王义祥)

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!