APP下载

C语言教材建设的研究与实践

2009-08-31朱立华

计算机教育 2009年13期

朱立华 俞 琼

摘要:本文详细论述了C语言教材建设的过程和结果,包括教材建设中需要解决的问题、吸收的最新成果,教材的突破点及显著特征,尤其是为解决指针和函数这两个难点所采用的有效方法,通过程序对比法帮助读者理解程序,辅以独特的多媒体教学课件帮助教学及自学。

关键词:C语言教材建设;指针和函数;程序对比法;多媒体教学课件

中图分类号:G642 文献标识码:A

“C语言程序设计”是南京邮电大学新生入校第一学期学习的第一门计算机课程,是后续课程C++语言、数据结构、操作系统等课程的重要先修课,是学习其他高级语言和应用软件的核心基础。因此,这门课程对学生从中学到大学的学习方法和学习习惯的转变,对后续课程的学习兴趣和学习效果的保障,都起着非常重要的作用。如何提高C语言程序课程的教学质量呢?

1面临的问题

C语言程序设计课程目前所面临的问题是:

(1) 理论课时紧,教学任务重。C语言的理论课时为40学时,而C语言概念既庞杂又抽象,要在如此有限的课时内,给刚刚进入大学的学生讲明白是很困难的事。而作为C语言重点和难点的指针和函数部分,对我们以通讯计算机专业为主的学校,又只能加强,不能削弱。这给我们的理论教学提出了更大的挑战。

(2) 上机实验环节薄弱。一是实验学时少,仅16学时;二是实验辅导的师生比相对不足。一个教师一般辅导一个大班,有100多个学生,即使有助教,也不能保证能指点到所有的学生。对于初学者,很多学生得不到老师的及时指点,又羞于提问,因此,问题会越积越多,形成恶性循环,这是一部分学生最后编程能力相对低下的主要原因。

(3) 多媒体教学课件急需改进。由于历史原因,我们的课件还一直停留在基于PPT的电子教案的水平上。而用这种手段,在紧缩的课时内,面对扩招之后层次差距越来越大的学生,把C语言的概念的程序设计方法讲清楚,几乎是不可能的了,课上虽然也在编程环境正直运行程序看,但是初学者难以看到程序运行每一步的结果,不利于帮助学生掌握和理解。

(4) 授课老师年轻化,经验不足。我们课程组每年都有新毕业的博士加盟,他们虽然知识水平高,但需要好的平台提高他们的教学水平,更充分地展示他们的教师水平,更大限度的发挥他们的优势。

要解决上述问题,需要综合采取多种措施,包括教学管理上的改革、实验改革、平时作业方式的改革及考核方式的改革等方面,但是最基础的一件工作必须是有一本好的教材。

2兼收并蓄

那么,什么样的教材才是好教材呢?以怎样的思路来建设一本好教材呢?

我们认为,适应教学需要、适合老师讲解、适合学生学习的教材就是好教材。

目前市场上C语言的教材很多,要想在教材建设上有所突破和建树,吸收他人的先进理念和成功经验是非常重要的,“海纳百川,有容乃大”!同时,又要体现出自己的特色。

我校C语言课程的教学中,先后使用过谭浩强教授主编的《C程序设计》第一版和第二版、哈尔滨工业大学苏小红教授主编的《C语言大学实用教程》第一版和第二版、浙江大学何钦铭教授主编的《C语言程序设计》等多本优秀教材,每本教材都各有特色,为我校的C语言教材建设提供了宝贵的经验。

计算机教育杂志于2008年,以主编专访的形式,以《一项计算机基础课程改革的启示》。为题,连续12期报道了天津师范大学管理学院持续近十年的计算机基础课程改革,从思想方法、教材建设,到课件设计、实验教学组织等多方面都有创新点,始终坚持以辩证唯物主义为指南的原则,使我们受益匪浅,为我们的教材改革提供了开阔的思路。

天津师范大学王立柱教授在《计算机教育》杂志上撰写的“让风神的竖琴鸣响——读李未院士《数理逻辑》一书有感”这篇文章,从理论和实践两个层面帮我们解读了李未院士的三个语言环境的理论,该理论对C语言、C++语言、Java语言和数据结构之间的关系的认识,对解决C语言和教学改革的设计,都有很高的理论指导价值。认清了这个关系,有利于确定C语言作为计算机编程基础课程的具体内容,为后续课程服务就增加了自觉性,减少了盲目性。

我们结合多年的教学经验,决定从建设适合我们教学的C语言教材入手,全面推行课程的改革。这一想法得到了我校专家和领导的积极肯定和大力支持,也得到人民邮电出版社的热情合作。

3重点突破

我们的教材根据C语言的特点,结合专业的要求,重点从C语言最难的指针和函数两部分内容入手,树立教材的主干、精炼教材的内容、锻造教材的结构。注意把辩证法的相互依赖、相互联系的发展的观点运用到解决C语言的难点问题上去。例如对指针和地址的关系问题,我们提出了“指针是类型化的地址;地址是直接引用下的指针”的提纲挈领的深刻的概述。又如,以赋值语句为前提,具体描述了函数调用过程、调用一个有返回值的函数,其过程可以概括为3步赋值:

① 主调函数传递实参,以初始化的形式使被调函数的形参获得初值。

② 被调函数在执行return语句时,将return后的表达式的值赋给系统根据函数返回值类型创建的一个临时变量中。

③ 主调函数如果需要这个返回值,就从这个临时变量取值。

同时,教材对指针和函数的每一个概念都进行了需求分析和编程实验的检验,例如:“耗尽”动态空间资源的实验;一种“野”指针的实验;数组指针和指针变量的基类型不一样时的实验;一个函数两次被调用,其自变量空间可能不同的实验等。

这些精心设计的内容将会帮助学生理解和掌握C语言中最核心和精华的内容。C语言的内容很多,对于有些知识点,只要介绍常规的内容就可以,不必讲得过细过繁琐,会让学生产生畏难情绪,例如:printf中格式控制符的多种组合表示。还有些知识点,并不是编程时的常规用法,例如,y=++x+++x+++x运算结束后,x和y 的值是多少。事实上,这一结果跟编译器有关,不同的环境下结果可能会不一样。像这样的问题,只要告诉学生有这么一种现象存在就可以了,而不必在教材中连篇累牍地花太多笔墨。

4特色鲜明

我们的教材遵循的逻辑关联性还在于前后知识的连贯性上,以表格的形式、全书采用对比的方法,用设计过的程序和正在设计的程序作对比。这种方法不仅使学生通过前后对照的方式更容易接受新知识,而且使得教材有限的版面承载了最大的信息容量。例如,循环控制结构和非循环控制结构的程序对比,把主函数格式和自定义函数的格式对比,把标准输入输出和文件输入输出对比等。下面列出教材中的几张表作说明,如表1和表2所示。

我们的教材第一章就独具特色。为了引入高级程序设计语言,从最低级的机器语言开始,重点讲解操作码、操作数、子程序调用过程、断点地址、入口地址等概念,使学生了解程序最底层的调用和运行基于什么原理,从而很自然地引出为什么需要发展到高级程序设计语言。用计算机技术本身发展的规律和要求引出C语言的概念,符合本学科发展的规律,使学生在课程的一开始就对程序底层知识有所了解,从而慢慢进入C语言的美妙世界。

为了突出教材内容的连贯性,同时包括更多的知识点,教材增加了多达10个附录,把零散而实用性强的内容包含其中。从“常用字符与ASCII码对照表”和“C语言的关键字”,到“常用的ANSI C标准库函数”和“C程序设计常见错误及解决方案”,应有尽有。特别是“C程序设计常见错误及解决方案”,是作者结合多年的教学经验,对初学者易犯的错误分析原因,提供解决的办法。设计这样的附录有两个目的:一是方便学习时查找,二是避免琐碎的内容干扰教材的主线。

教材配备有两个版本,可以动态演示教材中每个程序的独具特色的多媒体教学课件。既提供PPT+单个程序动态演示的课件,又提供全书所有程序的动态演示整合在一起的课件。既方便教师在教学中发挥自己的特长和个性,又方便学生课后自学。动态演示整合版的课件三级菜单与教材三级目录一一对应;直观展示程序运行每一步骤和环节,既可助教又可助学,有助于解决学生能力参差不齐与课程内容多、课时不足,算法复杂抽象、难以理解的矛盾;模拟程序调试过程,弥补了实验课时的不足。既便于学生自学,也为教师搭建了可以充分展示自己的平台,多媒体课件如图1所示。

5结束语

我们学校每年有3000多学生学习C语言课程,有二十多位教师从事C语言课程的教学工作,教材的改革必将使学生和教师都体会到坚持辩证唯物主义方法的意义。如《计算机教育》刊物主编所言:“我们共同努力,来落实邓小平同志提出的‘熟悉马克思主义的基本理论,从而加强我们工作中的原则性、系统性、预见性和创造性”。我们坚信,沿着这个方向走下去,一定能够在计算机教育领域里真正有所作为,我们的学生必定成为教育的最大受益者。

参考文献:

[1] 奚春雁. 一项计算机基础课程改革的启示[J]. 计算机教育,2008(1)-(12).

[2] 王立柱. 让风神的竖琴鸣响——读李未院士《数理逻辑》一书有感[J].计算机教育,2008(13):21-26.

[3] 李未. 数理逻辑[M].北京:科学出版社,2007.

[4] 谭浩强. C程序设计[M].1版.北京:清华大学出版社,1991.

[5] 谭浩强. C程序设计[M].2版.北京:清华大学出版社,1999.

[6] 苏小红. C语言大学实用教程[M].北京:电子工业出版社,2005.

[7] 苏小红. C语言大学实用教程[M].2版.北京:电子工业出版社,2007.

[8] 何钦铭. C语言程序设计[M].北京:高等教育出版社,2008.

[9] 王立柱. C/C++与数据结构(上册)[M].3版.北京:清华大学出版社,2008.

[10]朱立华. C语言程序设计[M].北京:人民邮电出版社,2009.

Study on C Language Teaching Material and Its Practice

ZHU Li-hua, YU Qiong

(College of Computer, Nanjing University of Posts and Telecomunications, Nanjing 210003, China)

Abstract: The paper expound the process and result of building up C language teaching material, including the problem to be dealt with, the latest resources assimilated, the breakthrough points and the distinguishing features, in particular the effective method used to solve the difficulties of pointer and function, the comparing techniques of programming as a reader assistant , peculiar teaching multimedia courseware as lecture and self-study facilities.

Key words: building up C language teachint material;pointer and function;the comparing techniques of programming;teaching multimedia courseware.