鄢颖
摘 要:C语言是编程语言中较为流行的一种计算机高级语言。随着计算机的发展及普及,C语言在各行各业的应用越来越广泛。许多学校把C语言作为编程的入门语言,C语言程序设计课程已成为计算机教育的一门必修专业基础课。本文结合笔者多年从教该课程的经验,从教学手段、教学方法等方面进行探讨、研究和改革,在实践中取得了显著的教学效果。
关键词:C语言 教学方法 教学改革 上机实验
一、背景
C语言是国内外应用广泛的计算机语言,它不仅具备高级语言可移植性好、易用性强等优点,又兼顾了低级语言高效、可直接对硬件操作等大部分功能,是计算机编程人员应掌握的一种程序设计工具。C语言程序设计是各高等院校、技工院校计算机及相关专业重要的专业基础课,该课程既能体现学生的逻辑思维能力和推导能力,又能培养学生的创新精神。但由于C语言功能强大,使用灵活,内容抽象、枯燥,特别是对于数学和英语基础比较差的学生来说,普遍存在着阅读程序困难、编写程序无从下手等问题,并产生不同程度的抵触心理。因此对于担任该课程的老师来说,如何教好这门课程,使学生逐步掌握程序设计的思路及方法,并能灵活运用高级语言进行程序设计,是这一门课程的目的和宗旨。
二、C语言程序设计课程教学现状分析
C语言程序设计课程的掌握情况对后续课程有着至关重要的影响,通常将其作为学生的第一门程序设计语言课程。许多学生此前并未接触过程序设计语言,对算法、数据结构和程序设计一无所知,一开始对C语言很好奇,但随着教学内容的深入,大量抽象概念、术语、语法规则的记忆及枯燥无味的例题分析,使学生产生畏难情绪,逐渐失去学习热情;还有一部分学生虽然课堂上听得懂,但自己编程时却无从下手,或者编写的程序错误多,无法分析出错原因,所以对学习失去了信心;甚至还有个别学生认为C语言已过时、实用性不强,不如面向对象的C++语言或JAVA语言,导致在学习过程中积极性不高。
目前,大多数教师的C语言课程的教学仍然停留在传统的教学模式上,过度注重语法、算法等细节,以教师“教”为中心,满堂灌。学生在教师的指导下被动地接受。教师只能保证所授知识的系统性,却不能充分发挥学生的学习自主性,无法培养学生的创新能力和逻辑思维能力。
三、C语言程序设计课堂教学改革探索
根据C语言自身的特性,我们从教学手段、教学方法等方面进行了一系列的探索及改革,启发并训练学生的编程思维,以期能进一步提高该课程的教学效果。
1.以激发学生的学习兴趣为先导
兴趣是最好的老师,是学生主动学习的主要动力。教师将学生引入C语言课堂时,首先要强调C语言的重要性。第一节课的教学可为学生介绍C语言在日常工作中的应用,如各种大型管理软件(人事管理、图书馆管理等)、系统软件(如Windows)都可用C语言实现,让学生了解该课程与社会的关系;通过实例展示一个用C语言编写的动画程序(如满屏雪花飞舞),抓住学生的眼球,改变学生只有Flash等软件才能制作动画的观念;选择简单的数学题目,在计算机上用C语言真正实现数学计算过程。通过演示实用性强的案例能提高学生的学习兴趣,使他们体会到C语言的奇妙。随着课程的深入,可引入趣味性强的算例,如杨辉三角、百元百鸡、猴子吃桃、水仙花数等,逐渐培养学生的分析及推导能力,激发学习热情。
新课内容讲授完毕,要及时布置相应的课堂练习,这样既能加深学生对该知识点的理解,又不会使学生感到课堂枯燥无味。可让个别学生直接在讲台上的计算机中编写、运行及调试程序,其余学生独自书写程序后相互进行讨论、点评,以便教师能够及时发现学生每节课的掌握情况,从而对症下药。教师不可拘泥于一种算法,若发现学生有独特新颖的算法,应鼓励学生积极展示个人的编程思路。鼓励与肯定可使学生增强自信,也可加强学生不断创新的意识。
2.开发智力,引导学生自主学习
在教学过程中,应以开发学生的能力为主,充分利用程序设计及算法自身的思维方法进行教学。教师要引导学生将知识加以引申,使学生能够触类旁通,识一山而知千峰。如在讲解同一类问题时不要逐题讲解,而应该积极拓展学生思维,在讲解一两个典型例题的基础上,启发学生总结归纳出求解这一类问题的基本算法。例如求1+2+3+4+……+98+99+100是循环结构必讲的经典例题,经过算法分析,程序思路为:引入三个变量,s变量存放累加和,在未累加求和前其初值为0,i表示已累加的项数,其初值为1,t表示求和多项式中的某一项,其初值也为1。当累加的项数小于等于100时,每当i自增1得到求和多项式中的某一项t后将其累加到s中。讲授完该例后,可让学生分析下面例题的解题思路:2/1,3/2,5/3,8/5,13/8,21/13,……求这个数列的前20项之和。经过分析,学生得知两个例题解题思路相同,只是循环结束的条件以及t的增值方法不同而已。通过以上两个典型例题的讲解,教师还可以要求学生重新设定范例中各单项式的值而演变成其他的累加问题,如求100个数的偶数和、奇数和、各数的立方和等,引导学生归纳求若干项和的这类问题的通用算法。针对以上问题在选用循环语句的过程中,教师可以点拨学生分别用WHILE循环、DO-WHILE循环及FOR循环编写同一个题目。这样,教师虽然只讲解了一个例题,学生却学会了同类问题的解决方法,举一反三,从而开发了学生的智力,培养了学生自己学习、自己研究的习惯和能力。
3.灵活运用多种教学方法
(1)传统教学手段与现代化教学手段相结合。传统的黑板板书不利于教师书写程序,既浪费时间又达不到预期的效果,必须将板书与多媒体技术有机结合起来。在课堂教学中,课件的使用能大大优化教学过程,丰富课堂内容,使教学过程更形象、直观、生动。课件的制作要符合学生的年龄及心理要求,以吸引学生的注意力;课前将概念、程序代码制作成课件,课堂上即时进行调试和运行程序。我们要充分利用多媒体课件,但不能过度依赖课件,教师在使用课件的同时,应将部分重点、难点内容通过板书展示,板书与课件的结合有利于学生抽象思维和编程能力的提高。
(2)任务驱动教学方法。任务驱动教学方法是一种建立在建构主义学习理论基础上的教学法,教师根据课程内容布置具体的任务活动,学生在教师的帮助下完成既定任务,以此掌握课程内容,达到教学目的。教学中应基于“以教师为主导,以学生为主体”的教学模式,通过案例和问题引入主题,重点讲解程序设计的思想和方法,并穿插介绍相关的语法知识。比如讲Switch分支语句时,先向学生提问:如何把百分制成绩转换成等级,即90分以上为“优秀”、80~90分为“良好”,70~80分为“中等”,60~70分为“及格”,60分以下为“不及格”?回顾if语句,用if-else的嵌套可以实现,但学生会发现程序比较复杂,且容易出错,这时引入新的课题Switch分支语句,先将Switch语句的一般形式板书出来,然后对Switch语句的执行过程进行课件动画分解讲解,进而分析上述例题的解题思路,给出源程序代码,在讲解代码的过程中对Switch语句的注意事项加以强调。这种教学有助于激发学生的求知欲望,培养学生分析问题、解决问题的能力,缩短了学习周期。
(3)对比式教学方法。C语言的概念比较复杂,教学过程中教师通过对比的方式对相似的程序代码或相关的概念进行分析比较,进而明确差异,而后归纳总结,将会收到事半功倍的效果。例如函数这一章涉及的概念较多,主调函数、被调函数、实际参数、形式参数、局部变量、全局变量等。这些概念容易混淆,若对比讲解,学生就很容易理解了。
4.重视上机实验教学
C语言程序设计是一门实践性较强的课程,既要求学生掌握程序编写的基础知识,更强调学生能够独自上机调试运行程序,因此培养学生的实践动手能力尤为重要。上机实操课时应不少于该课程总学时的50%,在上机实验课中必须做到循序渐进,对所学的每一部分内容都应要求学生完成一定数量的上机实验。不能盲目地将课本上的例题作为上机实验,学生无法理论联系实际。上机习题既要有基础题目,又要有趣味性与实用性的题目。实验时,教师对学生的问题给予提示,启发学生自己思考并解决问题。自行编写的程序在上机调试运行中,会有很多意想不到的错误,通过改正这些错误,可使学生逐步提高对C语言语法的理解能力。学期末应安排综合性强、知识点涵盖范围广的实验,学生根据要求查阅相关书籍资料,完成实验原理、实验步骤后交由教师批阅,师生讨论后学生分组完成实验。每节实验课教师均应做好上机成绩登记,课后学生需完成实验报告。上机实验还应作为期末课程考试的考核内容,重点测试学生程序改错、编写程序、调试程序等综合能力,上机考试的分值不应低于总分的30%。
四、小结
教学方法多种多样,因人而异,教学过程是一个需要不断精益求精的过程,只有因材施教,使学生建立程序设计及软件工程的整体框架,提高学生分析问题与解决问题的能力,才能达到教学的真正目的。
参考文献:
[1]谭浩强.C程序设计(第二版)[M].北京:清华大学出版社, 2011.
[2]楼俊君.C语言程序设计的教学研究[J].黑龙江科技信息,2008(27).
[3]徐大华.《程序设计C语言》教学思考与探讨[J].信息技术,2010(12).
[4]马新.C语言程序设计课程教学方法与手段的改革与实践[J].科技信息,2010(33).
[5]叶健华,黎峰.“项目驱动+案例教学”模式在C语言教学中的应用[J].济南职业学院学报,2009(3).
(作者单位:广东省粤东高级技工学校)