黄博军
《C语言程序设计》课程的教学目标是使学生掌握程序设计思想,根据”任务驱动型课程”设计并编写程序,适合”任务驱动式教学”方式。其教学可根据”任务->程序->结果”的流程,将任务驱动方式概括归纳为二种形式,即:正向任务驱动式、逆向任务驱动式。
一、两种任务驱动教学方式定义
1、正向任务驱动
(1)对应学生学习阶段:初级阶段---认知程序。
(2)任务驱动方式:根据任务编写程序,运行程序,得出结果。
(3)任务驱动目标:已知程序清单,完成程序运行结果,并对结果进行分析。
2、逆向任务驱动
(1)對应学生学习阶段:中级阶段---剖析程序
(2)任务驱动方式:根据结果完成程序填空,运行程序,得出结果。
(3)任务驱动目标:已知程序结果,完成程序填空,并对运行结果进行验证。
二、正向任务驱动式
正向任务驱动式是在任务和程序已知的情况下,只需运行程序,得出结果,再对结果进行分析来完成任务。其任务形式是”任务->程序->?”,需要完成结果,故称为正向任务驱动。
教学一例:
1、提出任务:(1)求5!的值。(2)问s设定为什么类型的数据变量可以容纳积值?
要求:通过程序运行和结果分析,实现对程序的理解和对知识点的掌握。
2、给出条件:给出二组程序。给出条件。
方法一:
#include
main( )
{ int s;
s=5*4*3*2*1;
printf(“s=%d”,s); }
方法二:
#include
main( )
{ float s;
s=5*4*3*2;
printf(“s=%f”,s); }
要求:通过运行程序,记录结果,达到看懂程序。
3、收集学生对求5!任务解决的方法及结果分析。
方法一:输出结果:s=120
方法二:输出结果:s=120.000000
两种方法运行结果一致。
同学们得出:s变量设定为int和float类型时都可以容纳正确积值。
要求:在对结果分析后,学生应该掌握数据变量与容纳数据大小之间的关系。
4、任务驱动反思:”任务->程序->?”的任务驱动形式难度系数小,多用于知识入门阶段。任务通过结果对比完成。在新知识入门阶段学习中,有利于同学们熟悉程序,掌握知识点。同时可以提高学生学习兴趣,树立学习自信心。
要求:教师应归纳知识要点。
三、逆向任务驱动式
逆向任务驱动式是在任务和结果已知的情况下,需要补写程序,运行程序,再对结果进行验证来完成任务。其任务形式是”任务->?->结果”,需要完成填空,故称为逆向任务驱动。
教学一例:
1、提出任务:求1+2+ … +99+100的值。(1)对程序填空(共2空);(2)运行程序,记录结果,并验证结果。
要求:通过程序补写和结果验证,实现掌握循环控制语句的使用方法。
2、给出条件:部分程序和输出结果已给出。
#include
main( )
{ int i=1,sum=__⑴__;
while(i<=100)
{ sum=sum+i; __⑵__ ; }
printf("sum=%d\n",sum); }
给出结果:sum=5050
要求:重点掌握循环控制变量i的初值、终值和步长值设定,以及用于累加和变量的初值清零工作。
3、收集学生对任务解决的方法及结果分析。
方法一填空:(1)0 (2)i=i+1
程序运行结果:sum=5050(程序运行结果和给出结果一致)
结论:这部份同学认识到,变量sum用于存放累加值,初值应清零。
因此:⑴空填0;而数列每项值是加1递增,因此:⑵空填i=i+1。
方法二填空:(1)1 (2)i=i+1
程序运行结果:sum=5051(程序运行结果和给出结果不一致,计算结果错误。)
结论:少数同学忽视了变量sum初值应该清零。
因此:⑴空填1 ;而数列每项值是加1递增,因此:⑵空填i=i+1。
要求:在完成程序填空后,学生应该掌握循环控制变量初值、终值、步长值的设定方法。
4、任务驱动反思:”任务->?->结果”的任务驱动形式难度系数中,多用于知识巩固阶段。任务通过程序填空和结果验证实现。
要求:教师应归纳知识要点。循环控制变量三要素(初值、终值、步长值)的设定是完成任务的重要前提。
四、结尾语
课堂中教师要以学生为主体,为学生创设情境,让学生去感知、去认识、去发现、去体会,让学生在创设情境中,充分展露学习知识的思维过程,不受任何阻碍的畅所欲言,理思路,说理由,表方法,在平和的学习环境中,学生的思维始终保持活跃的状态,让学生去感受成功与失败,这就是任务驱动式教学的魅力。