开篇:润墨网以专业的文秘视角,为您筛选了一篇任务驱动法在C语言教学中的应用与探讨范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!
摘 要 文章针对C语言教学的现状,将任务驱动法应用于C语言教学过程中,充分发挥教师主导和学生的主体作用,培养学生学习兴趣及分析解决问题的能力,切实提高教学效果。
关键词 任务驱动法 C语言 程序设计 案例教学
中图分类号:G424 文献标识码:A DOI:10.16400/ki.kjdks.2016.05.057
Abstract In view of the status of C language teaching, task-driven method will be applied to the teaching process. Because of this, task-driven method can play teacher-led and student-centered, and improve students' interest in learning and analytical problem-solving skills. Practice has proved that the application of the teaching method was beneficial to achieve good teaching results.
Key words task-driven method; C language; program design; case teaching
1 C语言教学现状
C语言作为计算机编程的一种常用语言,具有语言功能丰富、使用灵活、程序的可移植性好、执行效率高等优点。①目前,很多高校都将C语言程序设计作为一门重要的计算机基础课来开设。然而,在教学中,大多采用传统的教学方式,以教师的教为中心,学生处于被动接收状态,学习缺乏主动性,整体学习效果不理想。由于C语言的语法细节多,很多教师都做到了面面俱到,学生初学时会觉得枯燥无味,当学生被大量的语法细节淹没时,对后续的编程阶段也产生了很大的负面作用,很多学生只是简单模仿。这就造成了这样一种现象,对于教师的讲解能听懂,但是遇到问题不会独立思考。而随着需要解决的问题越来越复杂,学生的挫败感也越来越强,最终导致对课程完全失去兴趣。
因此,改进教学方式,提高学生的学习兴趣,培养学生的编程能力,对于提高C语言的教学质量具有重要意义。
2 任务驱动教学法
建构主义学习理论认为应当将学生作为教学的主体,强调学习是一个主动的过程,而教师作为教学的引导者,激发学生的学习动机。②“任务驱动教学法”正是一种建立在建构主义学习理论基础上的教学法,它认为教学应当以解决问题、完成任务为主,使学生处于积极的学习状态,主动去探究,通过对问题的理解提出解决方案,在解决问题的过程中获得新经验,再和原有的知识经验相互作用,从而不断地充实丰富自己的知识体系。③
C语言的教学目标正是需要学生可以独立地进行编程,解决一个个的问题,为将来软件的开发打下扎实的基础。在C语言程序设计的教学过程中引进任务驱动教学法,可以使学生在一个个有趣的任务下展开学习,当一个任务完成时,学生会获得成就感,继而可以更有学习的动力和信心,逐步形成良性循环,最终培养学生独立探索、解决问题的能力,能真正运用好C语言技术。
3 任务驱动法教学设计
在将任务驱动法应用到教学中时,基本包含以下四个部分:任务的设计、任务的分析、任务的实施和任务的评价。④四个部分相辅相成,贯穿于整个教学过程中。
其中,任务的设计非常重要,可以说是任务驱动教学中最为关键的一步,任务设计的好坏直接决定了教学目标是否能成功实现。在设计时,要根据不同的章节、涵盖的知识点等内容设置不同的任务。要以激发学生的学习兴趣为出发点,对于学生来说,如果任务太难会打击积极性,太容易又会失去求知欲,所以,要特别注意任务的合理性、层次性、趣味性、知识面的覆盖性,遵循从简单逐渐过渡到复杂的原则,及时将难点与重点分散,充分调动学生的好奇心和求知欲。
例如,在讲解循环时,可以用求一个正整数的逆数的例子。这时候就可以分层次地设计任务。从易到难,设计成递进形式。任务设计如下:
(1)先求一个三位正整数的逆(输入365,输出563)。
(2)求一个四位正整数,或者五位正整数的逆数。
(3)不限定位数,求任意一个正整数的逆数。
接下来是任务的分析和实施。从第一层任务开始,对于明确的三位数,学生们都会采用将百,十,个位数一个个分离出来再重组成一个数的方法,尽管算式不太一样,但基本方法都一致,核心代码类似如下:
a=x/100;
b=(x-a*100)/10;
c=x % 10;
y=c*100+b*10+a;
在三位数已经解决的基础上,进行任务(2),继续将问题扩展到四位数,或者五位数,这时,大部分学生会继续沿用三位数的解决方法,定义4个或者5个变量存放不同位上的数再重新组合,但也有学生开始思考如果一个数很大、位数很多的时候,这种方法是否合适。
对于完成的任务教师作出评价和总结,肯定正确的思路,并抛出新的问题,将任务(3)提出,给出一个正整数,不限定位数,如何求?学生们开始思考、分析、讨论,有学生会提出先计算一个数的位数,然后再采用上述的方法,但随即就会有其他学生否定,认为这种方法太过繁琐,当位数很多的时候需要定义很多的变量,很多的计算式,几乎是人工完成计算,不能称之为算法。
这个时候,旧的知识已经不够,教师就可以对任务作出分析,引导、提示学生,对于任意一个数都可以很方便求出的应该是个位数,只要对10取余就可以,而接下来如何让原本的十位数、百位数等也成为个位数呢?学生在思考讨论后得出结论,假设变量为x,对它重复进行a = x%10,x = x/10的运算,直到x=0为止,就可以将一个数的各位全部分离出来。教师对此可作出评价和反馈,肯定学生正确的思路,到此为止,问题解决了一半,学生的兴趣也被充分地调动起来,教师就可以继续分析,提示学生,如果说整除10可以将一个数的高位逐渐移到低位,那么每次取余的数如何将它逐渐移到高位去呢?根据上面的分析,学生可以很容易得出y = y*10+a的式子。这个时候,教师就可以把while循环的一般形式作出介绍,学生很容易就能写出程序段如下:
while(x>0)
{
a=x%10;
x=x/10;
y=y*10+a;
}
这样就很自然地从旧的知识过渡到了新的知识,在对任务作出总结后,教师再继续讲解while循环的结构,使用时的一些注意事项等内容,学生就能很快地接受新知识。这个例子体现了任务的层次性,从易到难,从特殊到一般,在这里涵盖了基本的算术运算和循环的知识点。学生在一步步解决问题的过程中体会到了乐趣,也对新知识的掌握更加牢固了。
除了层次性以外,也可以设计一些趣味性的任务,让学生感觉在玩中学,带着兴趣去思考,效果自然会好于只接受枯燥的理论知识。例如,在讲解数组时设计猜数字的游戏任务来引入二分法查找,在讲解循环时提出“鸡兔同笼”问题,讲解迭代法时提出“兔子生小兔子”(斐波拉契数列)问题,讲解递归时提出小猴子吃桃问题,等等。让学生在一次次完成有趣的任务时自然地接受新知识,往往会事半功倍。
回顾上面的教学案例,可以将任务驱动法归纳为一个教学设计流程图。如图1所示。
可以注意到,在以上任务实施的过程中也包含了任务的分析。对任务的分析应具有针对性和启发性,鼓励学生自己思考,自己解决问题。当学生提出思路和想法时,尽量顺着学生的思路去分析,肯定其中正确的方法,对于错误的方案要指出原因或者直接采用错误思路得出结果,然后反过来让学生去找出错误的原因,并且让学生自己去继续修正。这样既提高了学生分析问题、解决问题的能力,同时也充分鼓励了学生的创新意识。
同样,对任务的评价和反馈也贯穿其中,对于积极思考、顺利完成的学生给予充分的肯定,对于没有完成的学生也要给予鼓励和帮助。对于任务完成时采用的各种方法都给予一定的点评,表扬有创新的学生。另外,在总结的过程中也要注意查漏补缺,让学生了解自己掌握的知识和进度。同时将完成任务的过程中出现的普遍问题再次强调、讲解,帮助学生理清脉络,达到巩固已有知识点的目的,并能掌握新的知识点。
4 结论
与传统的教学模式相比,任务驱动模式优势明显,在这种教学方式下,学生成为了学习的主体,学生主动参与、不断地探索创新,很大程度上调动了学生的学习积极性,提高了学生独立分析和解决问题的能力,同时也充分促进了师生互动。当然,在这种模式下也要注意任务的量和难度,避免有学生“吃不饱”,有学生“吃不下”。
通过教学实践表明,任务驱动教学法在C语言教学中的应用效果良好,是一种高效可行的教学方法。随着教学改革的不断深入,这种教学法将会得到更为广泛的应用。
注释
① 谭浩强.C程序设计(第4版)[M].北京:清华大学出版社,2013.
② 肖晓霞,罗铁清.建构主义学习理论在C语言教学中的应用研究[J].湖南师范大学教育科学学报,2012(6):100-102,120.
③ 林惠标.任务驱动法在C程序设计教学中的应用[J].新课程研究(中旬刊),2011(5):98-100.
④ 杨冬风,陈争光.任务驱动式教学模式在C语言程序设计课程中的应用[J].现代农业科技,2015(4):326-327.