任务驱动式C语言程序设计教学方法实践
2014-03-27吕俊龙陈春燕
吕俊龙,陈春燕
(1.蚌埠学院 计算机科学与技术系,安徽 蚌埠 233030;2.蚌埠医学院 计算机教研室,安徽 蚌埠 233030)
任务驱动式C语言程序设计教学方法实践
吕俊龙1,陈春燕2
(1.蚌埠学院 计算机科学与技术系,安徽 蚌埠 233030;2.蚌埠医学院 计算机教研室,安徽 蚌埠 233030)
C语言作为计算机专业的基础课程,对激发学生的编程兴趣,养成良好的编程习惯,有着至关重要的作用.研究这门课程的教学方法对于提高教学质量和学生的专业技能都有着重要的意义.本文研究任务驱动式教学法,从任务设计、任务分析、任务实施和任务评价四个方面介绍任务驱动教学法,对任务驱动模式在计算机教学中的运用做了分析和阐述,实践表明,任务驱动法应用于C语言的教学效果良好.
任务驱动;C语言;程序设计;教学方法
1 引言
教学方法是教师和学生为了实现共同的教学目的,完成共同的教学任务,在教学过程中运用的方式和手段的总称[1].根据不同的教学内容选择不同的教学方法,不同学科的知识内容和学习要求不同,一门学科的不同阶段的内容与要求也不一致,这些都要求教学方法的学则具有多样性和灵活性.
C语言程序设计是计算机程序设计的基础课程,是计算机等相关专业的专业课,学习本门课程的目地,主要激发学生的编程兴趣,养成良好的编程习惯.当前主流语言很多是从C语言衍生出来的,如:C++,C#等,C语言是编程的基础.目前,C语言的教学存在有很多弊端,导致学生学习积极性不高,学习效率低下.C语言程序设计课程是语法和算法相结合的一门课程,教师授课往往会把重点放在学生不感兴趣的语法规则上,以讲授理论为主,上机练习只是验证理论的手段.C语言是一门实践性很强的课程,学生上实验课前不做任何准备,对要调试的程序不理解,程序出错后没有分析错误的能力,把上机调试程序变成打字练习.本文结合时间教学经验,提出采用任务驱动教学模式[2]改善教学环节的效果,并将其应用于实践,取得了较好的效果.
2 任务驱动式教学方法
C语言的知识点比较零碎,如果刚开始就让学生记各种语法,学生会误认为学习C语言和其他的记忆类课程没有区别,而且容易失去兴趣.刚开始给学生讲解时,应该以解决某个问题,实现某项任务为驱动,从而展开各个知识点.
“任务驱动教学法”是一种建立在建构主义理论基础上的教学方法[3],将以传授知识为主的教学理念,转变为以解决问题,完成任务为主的多维互动式的教学理念,让学生在完成任务的同时获得知识.将一节课的教学目标和教学内容通过一项或几项具体任务的完成来实现.这种教学方式以学生为主体,教师为主导,有利于培养学生的发散性思维、和创造性思维.任务驱动教学法一般包括情景创设、确定任务、自主学习、协同学习、学习评价、总结提高几个阶段.
2.1 任务确定
任务驱动教学法首先需要解决的是确定任务,选择与当前学习主题密切相关的真实性事件或问题(任务)作为学习的中心内容,让学生面临一个需要立即去解决的现实问题.在授课开始,提出问题,指出该问题的难点,围绕授课内容引导学生进行思考.任务设计的好坏直接影响教学效果,一个较好的任务,不仅要用到已学的知识点,还要能引出新的内容.在设计任务时有以下三个原则[4]:
第一,任务要有以引力,能够激发学生的学习欲望.
第二,任务的难度要适中,要根据学生的实际情况及现有的知识水平,设计合理的任务.每个任务所包含的知识点不宜过多,否则学生会因为难度太大,解决不了而有挫败感,降低了学生的学习积极性.任务也不宜太过简单,这样达不到教学大纲的要求.
第三,任务要能够扩展.由简单的任务逐渐的过渡到较难的任务.如在讲解数组时,现提出一个问题,在一维数组当中找出一个最小值,并把它与数组的第一个元素交换.进而在提出,在剩下的元素中找出一个最小值,把它与数组的第二个元素交换.一个有n个元素的数组经过n趟查找最小值,就会变成一个有序数组.
2.2 教师引导
针对要完成的任务,把它转换为数学模型[5],即提取出要解决的关键问题,即程序要实现的功能.把要求解的问题转化为利用存储单元读入数据,然后计算数据,最后输出结果这样一个过程.同时设计好数据和中间结果的存储结构,确定要使用的变量函数.教师要逐步的引导学生,先用自然语言描述案例的求解过程,再按照结构化程序设计的思想,将自然语言描述的过程转换为流程图,设计算法采用自顶向下的方法逐步求精.
2.3 自主学习
学生需要根据流程图,把算法中的每一步转换成一条或多条具体的语句.在编写代码的过程中学生要逐渐的掌握准确的语言及语法规则,学会把自然语言描述的算法转化为C语言描述.学生在写代码的时候难免会出现很多问题,包括语法错误、逻辑错误,这时不急于帮助学生找到错误并且给他指出来.而是要让他们反复的阅读、运行程序,自己能够把错误找出来.编写代码时必须要遵循C语言的基本规范和表达逻辑,严格遵守程序语句和函数等的书写格式,避免语言表达的二义性和非语法错误,提高编写代码的质量.
这时也可以让学生分成小组,以小组为单位进行学习,可以取长补短,在遇到问题时多人共同解决,更容易找到问题所在.一个人孤立学习容易丧失学习兴趣,学习小组的方式大家共同学习,容易培养学生的团队精神,激发学生向问题的广度和深度搜索.目前我校机房设施较好,但师生比较低,故可以采取分组学习的方式.
2.4 任务推进
任务驱动式的教学方法,要求设定的任务能够按难度推进.在学习到while循环时,有一类型非常典型的题目如:
这类问题的解决方法是相同的,我们可以先从简单的题1开始,学生很容易就能够想到题1的解决方法,每次循环结束分母加1为下一次循环做准备.题2与题1不同的是分母不是累加而是做阶乘,题3要求每次累加前要把每一项乘以-1.题4分母的规律要稍微的难分析一点,但是学生在前3题的基础上做题4,只要引导学生分析清楚分母的规律,这个题目就迎刃而解.
2.5 学习评价
学生完成任务后,教师要及时评价学生完成任务的情况.对顺利完成任务的学生要给予充分的肯定,点评所用方法的优缺点.对没有完成任务的学生也要给予鼓励,分析他们方案的不足.老师客观具体积极的评价,能增强学生的学习信心,保持学习的积极性,激发学习兴趣.需要特别指出的是,对学生学习效果的评价,不应该只对学生进行横向的比较,特别是对于后进生,更应该关心学生学习过程中的点滴进步,鼓励学生有更大的进步.
3 趣味性教学贯穿始终
兴趣与爱好是最好的老师,初次接触C语言,很多学生也会感到好奇,随着课程的深入,很容易使学生产生枯燥无味的感觉.因此采用一些趣味的程序,把学生的好奇心转化为学习兴趣激发学生的学习积极性.
在课堂教学中,以解决某一个实际的问题,在解决问题完成任务的同时,使学生掌握知识,并且不觉得枯燥乏味[6].在讲到循环结构的嵌套时有一个非常典型的问题“百钱百鸡”问题.这是中国古代数学家提出的问题:“鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一;百钱买百鸡,翁,母,雏各几何?”学生拿到这个题目后会觉得很新颖,也觉得很简单,好像马上就能够做出答案来.这个问题转化成数学模型,很快就能够得到一个三元一次方程组,但是只有两个方程,这个方程组有多个解,看似很简单的问题,想要用手工的方法解出全部解,还是花费很多的时间的.这个题目本身解法不难,但是要把几百组数据依次的代入方程,这正好符合程序设计的思想,用循环来解决.用两个嵌套的循环语句,穷举所有的可能性,在此过程中讲解循环语句的具体用法.这样在完成这个任务的同时,学生就掌握了循环嵌套的用法,以及穷举法的思想,学生也不觉得课堂枯燥乏味,能够更好的激发学生的学习兴趣,教学效果也会事半功倍.
4 结束语
针对我校C语言教学存在的问题,在教学过程中应用了任务驱动式的教学方法,在很大程度上改善了过去单纯强调语法、知识掌握的教学模式,增强了学生学习C语言的积极性,教学过程中培养学生的主动学习意识和团队精神.经过多个班级的教学试验表明,任务驱动式教学方法非常适合C语言的教学,学生学习热情高涨,使学生养成了良好的程序设计习惯,取得了很好的教学效果.
〔1〕刘晓燕,申艳梅.“C语言程序设计”教学方法探析[J].计算机教育,2010(6):94-96.
〔2〕熊春荣.“C语言程序设计”课程案例驱动教学模式的研究与实践[J].玉林师范学院学报(自然科学),2010,31(5):119-121.
〔3〕宋加涛,王蔚,杨忠秀,任小波.任务驱动法在 C语言实验教学中的应用研究[J].合肥工业大学学报(社会科学版),2010,24(2):5-8.
〔4〕宋文琳.任务驱动教学法在C语言程序设计课程中的应用[J].计算机时代,2012(10):53-54.
〔5〕森干,李莉.医学信息管理专业案例驱动式C语言程序设计教学方法实践 [J].医学信息,2011,24(9):5606-5608.
〔6〕郭慧敏,詹林超.将C语言趣味化教学进行到底——提高C语言课程教学效果方法之我见 [J].电脑知识与技术,2010,6(28):8030-8032.
G642
A
1673-260X(2014)02-0027-02
安徽省优秀青年人才基金项目(2010SQRL126);安徽省蚌埠学院自然科学基金项目(2011ZR 11);安徽省蚌埠学院工程研究中心项目(BBXYGC2012B04).