试议医学院校中《C程序设计》教学方法的运用
2009-03-31王金社
王金社
【摘 要】《C语言程序设计》一直是计算机专业及相关专业的专业的基础课。C语言是一门高级程序设计语言。为解决C 语言在教学中的重点和难点,作者结合多年的教学经验, 从三个方面对教学方法的改进进行了讨论, 以期提高教学效果。
【关键词】C 语言 程序设计 教学方法
《C语言程序设计》是计算机各类专业的基础课程。全国计算机等级考试、全国计算机应用技术证书考试(NIT)和各学校组织的大学生计算机统一考试等都将C 语言列入了考试范围。C语言是一门高级程序设计语言,学会运用C 语言编写程序解决实际问题,有利于提高学生的思维能力,同时对学习其他语言课程具有很大的帮助。由于医学院校学生基础较薄弱, 在学习中普遍认为C 语言语法多, 枯燥难懂, 全部课程完成后, 感觉知识零乱, 只能看懂程序, 而不会编写程序, 不会应用C 语言解决实际问题。
在教学过程中教师应将要讲解问题尽量简单化, 使学生先了解语句的用途, 在此基础上再去了解其相应的规则。C语言初学者首先遇到的问题是毫无头绪, 不知从何处下手。他们即使在课堂上认真的聆听了老师的讲述或者是认真的阅读了书上的例子, 但在上机输入这些程序后, 会出现各种各样的问题。以往大多数同学在学完C 语言后, 普遍反映看得清程序的设计代码意义, 但遇到实际问题就无从下手, 不知所措。这种情形将降低他们学习好C 语言的信心、学习兴趣以及学习主动性。事实上出现这种问题对于C 语言初学者来说是很正常的。教师要做的是找到一种好的方法, 使学生在短暂的课堂学习时间内对C 语言知识进行积累, 使学生少出现这种问题。要做到这一点, 就必须要求学生, 从小程序入手, 一步步的实践和学习。
一、注意方式方法, 尽量提高学生的学习兴趣
现在常用于实验教学的是Microsoft Visual C++6.0。该系统能够指出程序中错误的位置和类型, 这样学生上机调试程序时就能发现并纠正语句错误,解决了对TurboC不是很熟悉的同学操作不方便的问题。《C语言程序设计》的特点是实践性强,对于医学院校学生而言, 普遍存在学生抱怨程序设计太难、太深奥、不好学、畏惧阅读程序、编写程序无从下手等问题。这是因为每一个C 语言程序必须经历算法设计、书写程序、调试运行的三个过程与其它有直观操作和概念的课程相比较, 显得比较抽象、复杂。因此, 针对学生的畏难情绪, 调动学生学习的积极性, 要学会用学生生活中的小实例来结合C 语言教学。比如,银行的存取款系统就是用C语言来实现的;在学校就餐时使用的磁卡收费系统同样也是用C语言编写的;学生玩的网络游戏也是用C语言来实现的。学好C 语言可以修改、编写自己喜欢的游戏,于是他们明白了C 语言离我们很近,而且很有用。这样,既可以培养学生学习的兴趣,充分调动他们学习的主动性,也可以为C 语言一些章节的实例讲解作好准备。
二、启发式教学, 激起学生的编程热情
谁都爱听故事, 但并非谁都爱学编程, 那些抽象的概念和复杂的算法常把学生搞得痛苦不堪。因此, 把爱听的故事和不爱学的程序结合起来就是教学的一大特色。学生听到的是一段故事、一个比喻、一则笑话, 记下的是故事所含的概念和算法。例如,讲解交换两个变量的值的时,为了启发学生理解该算法,我引入儿时帮妈妈打酱油的故事。假如妈妈让我们把油瓶子和醋瓶子调换过来, 该怎么做呢? 先拿出个空瓶子, 把酱油倒在空瓶子里, 然后把醋倒在已经空了的酱油瓶子里,最后,将酱油倒入醋瓶子。设有两个瓶子a和b,分别盛放酱油和醋,要求将它们互换。因此,引入中间变量c, 代表空瓶子。
#include
main()
{int a,b,c;
scanf(“%d %d”,&a,&b);
printf(“a=%d,b=%d\n”,a,b);
c=a; a=b; c=b;
printf(“a=%d,b=%d\n”,a,b);}
程序输入:22 33
程序输出结果为:
a=22,b=33
a=33,b=22
程序学会了, 大家对学习编程也产生浓厚的兴趣, 取得很好的教学效果。同时,乘热打铁,要求学生独立完成类似的程序,学思结合,学思并重。例如,写一个程序判断某年是不是闰年。什么是闰年? 中文说每四年一闰,但每一百年不闰;并且还要每四百年一闰。这样的表达式要写成程序有些费劲, 如果用英文表达,闰年的标准是满足两种情况之一:如果( if) 它能被4 整除, 并且(&&) 不能被100 整除;或者( ||) 能被400 整除。什么是整除? 就是余数(mod==0) 为零。我们知道其英文表达方式, 很容易写出下列程序:
#include
main()
{int year;
scanf(“%d”,&year);
if(year%4==0&&year%100! =0||year%400==0)
printf(“%d is a leap year”,year);
else
printf(“%d is not a leap year”,year);}
C 语言课程中的知识点大都是比较枯燥的, 所以老师在授课时,应该把枯燥无味的知识点和我们日常生活中的例子联系起来, 这样学生理解起来容易,老师讲授起来也轻松。比如,老师在讲授指针的概念的时候, 这一章节是C 语言中的难点, 如果老师就按课本上知识点讲,很多学生都被讲蒙了。这个时候可以引入我们日常生活中学生宿舍的例子,假如我们要找张三,来到101 房间,里面存放着一张纸条“104 房间”,这样我们可以到104 房间找到张三,101 房间存放的是张三所在房间的号码(地址),可以间接通过101 房间找到张三。或者,如果我们知道张三104房间的,可以直接到104 房间找到人。这样,就可以比较形象的给同学讲清楚指针的概念,让同学理解起来更容易。另外,课堂上老师授课时,还应注意循序渐进的授课思路,不能认为讲的程序越难学生学起来越有兴趣,如果上来就讲太难的程序,很多同学直接就不想接着往下听了,很容易打击同学的学习积极性。在C 语言教学中, 双重循环和函数调用是难点, 所以这两个知识点老师应该精讲、细讲。在讲解双重循环时, 很多书上会有菱形星号的输出图形的题目,这个时候,老师可以先给学生讲正方形的星号图形如何输出,再看直角三角形星号图形输出,再看等腰三角形星号图形输出,这样菱形星号图形输出就可以让同学课下自己去实现了。
在函数调用时,要给学生讲清楚形参和实参的区别,后面讲了指针后,回顾前面讲的传值调用,根据指针存储地址的特点,再讲授函数传地址调用。
三、鼓励学生经常上机,提高学生动手实践能力
学习计算机语言必须将理论与实践相结合, 学好程序的关键是动手与动脑编写程序,亲自上机调试程序是提高编程能力的捷径。针对初学者上机编程常会出现错误而不会调试的特点,教师在讲解程序时,可以运用多媒体教室或计算机网络教室向学生演示程序从编辑、编译、链接到运行的全过程, 对常见的错误进行调试改错,让学生对程序设计有一个直观的了解,同时学会一些程序改错与调试的基本方法。在教学过程中,选择例题应注意由易到难,逐步深入,结合实际,融会贯通。课堂教学是传授知识的重要途径,因而,动手能力的培养更不容忽视。
对于计算机课程来说,动手能力的培养就是上机实践。在C 语言的教学过程中,上机实践这一环节是特别重要的。首先,它是消化课堂教学内容的最好途径,能将所学的知识有效织起来;其次,能提高学生分析问题和解决问题的能力,培养程序和调试程序的能力。因此,C 语言的上机实践是必不可少的。对于C 语言上机实验课,可采用两种方法, 上机调试和现场编程。一是老师在讲授完理论课后就给同学布置上机题目,让学生在课下自己编写, 上课时把自己课下编写的程序调试运行。二是如果大多数学生都能顺利运行,老师现场布置和本次课密切相关的程序,让学生现场自己编,这样可以提高一些程度好的同学的学习积极性,同时程度差的同学调试成功老师提前布置好的作业,也有成就感。另外,在上机时要督促学生在上课时间内完成任务。当学生碰到问题时,不立即解答,而是进行提示。先让其思考、分析后再回答学生。前期实验时,解决学生的基本语法问题,后期则只解决算法问题,不解决语法问题。这样,可以让学生自己找简单语法问题,自己解决不了的向其他学生求教。这样,可以给学生一定的压力,避免有的学生不自己思考,有问题就问,到了学期结束,连最简单的语法错误自己都解决不了(并不是不懂,而是学习态度问题)。这样,也可以让一部分同学在帮同学解决问题的同时,自己又加深对知识点的理解。实验结束后, 要求写好实验报告, 写好小结。自我分析上机出现的问题和解决的方法, 通过本次上机学到了哪些知识, 又有哪些不足。这样,即可以锻炼学生的表达能力,又可以让学生课下对上课所学知识有一个清晰的回顾,有一个思考的过程。
以上是笔者结合多年教学的一点经验体会,实际上在教学过程中应注意的问题还有很多。一个《C程序设计》教师要想成功,其关键就在于对教学内容(教什么)和教学方法(如何教)进行合理的组合。但是,现实中由于教学目的、教学内容及学生情况等因素的千差万别,没有哪一种教学模式或方法是普遍适用的,惟一的原则就是根据实际情况采用合适的教学模式和教学方法。
参考文献:
[1]谭浩强.C语言程序设计(第二版)[M].北京:清华大学出版社,1999.
[2]谭浩强.C语言程序设计上机辅导[M].北京:清华大学出版社,1999.