游戏化学习在《 C程序设计 》的应用与实践*
2015-10-21李文锦
李文锦
【摘 要】游戏化学习有利于提高学生的学习兴趣,改善教学效果。本文讨论了《C程序设计》教学和实践环节存在的问题以及通过引入游戏化学习进行改善的方法,最后具体阐述游戏案例的设计和游戏化学习的实践方法。
【关键词】游戏化学习;C程序设计;游戏案例设计
中图分类号:G642.1 文献标识码:A 文章编号:1671-0568(2015)20-0076-02
基金项目:本文受中国计量学院教改项目“游戏化学习在《C程序设计》课程中的应用”(编号:HEX2014037)资助。
《C程序设计》课程是是计算机专业学生入校后最先接触的一门程序设计语言课,其重要性和基础性不言而喻。这门课程学的好与坏在一定程度上影响学生对专业的认同度和对后续语言课学习的信心。
笔者从事C程序设计教学多年,发现在教学过程中以教师为主导讲授语法规则,讲解例题的方式,会导致课堂呆板枯燥,学生注意力很容易转移分散,教学效果较差。为了改进目前的教学现状,提高学生的学习兴趣,增加学生和教师的互动,结合学生普遍爱玩游戏的现状,考虑采用学生普遍感兴趣的游戏案例作为载体,教学过程中,注重与学生学习自信心和自主探究能力的培养,实现“寓教于乐”。
本文探讨如何将游戏化学习引入《C程序设计》的教学中,并结合课堂教学和实验教学的实例来分析游戏案例的设计和应用方法。
一、游戏化教学在C程序设计中应用的基本方法
将游戏化学习引入到《C程序设计》的教学和实践环节中,具体可以从以下几个方面入手:
1.认真分析研究教学内容,确定每部分教学内容的学习目标,以此目标为前提选择或者设计适用于该内容的游戏案例,如在讲解双重循环结构时引入邮票组合游戏,在讲解递归时引入汉诺塔游戏等。在教学过程中进行实践,并观察学生对每个游戏案例的接受程度,对于学生接受度和参与度都不高的案例要重新进行选择和设计,争取通过好的游戏案例达到理论教学中的教与学的良性互动。
2.分析每部分教学内容的实验题目,除布置基本的训练学生掌握语法或者算法的题目外,设计1~2个有趣味性的游戏程序设计,如在选择结构编程练习中简易计算器的开发,在循环结构编程练习中加入猜数字游戏设计,在一维数组编程练习中加入猜牌术游戏等。这些游戏程序设计的开发有一定的难度,鼓励学生结成兴趣小组,互帮互助共同完成,在此过程中学生的学习自主性和团队协作精神都得到大幅提高。
3.设计与C程序设计相关的课程实践的任务,针对学生基础不同、接受能力不同等特点,设计出包含基础型、提高型、设计型等三种课程设计的任务,力求做到覆盖知识点,切合实际、生动有趣。在设计型的设计中可以加入贪吃蛇、五子棋、打字游戏等,这些任务有一定难度,可以给出基本的设计思路以及使用到的库函数,让学生在此基础上完成。学生可以根据自己的能力選择完成“基础型+提高型”或设计型的题目,有目的、分层次地培养学生的实践能力。
4.考核方式的设计:平时成绩和实验成绩的计算采用游戏化积分制,学生在整个课程的学习过程中可以通过出勤、回答问题、作业、网上互动等方式赚取积分,从而提高学生的整个学习过程的参与度。
二、课堂教学中的游戏案例设计与分析
双重循环是程序结构与语句部分的重点和难点,很多学生单重循环的基础知识不牢,导致对带有双重循环的程序理解困难。因此,在课堂上讲解双重循环的内容时,可以设计如下游戏:
【案例1】:邮票组合游戏
游戏内容:老师手中有四张8角的邮票和三张1.2元的邮票,想得到3.6元的邮资,有几种组合方案?
实施方法:
请学生A先取0张8角邮票,1.2元的邮票分别取0、1、2、3张,形成了四种组合,接下来,取1张8角邮票,1.2元的邮票分别取0、1、2、3张,形成了四种组合,再取2张8角邮票,1.2元的邮票分别取0、1、2、3张,形成四种组合,接下来取3张8角邮票,1.2元的邮票分别取0、1、2、3张,形成四种组合,最后取4张8角邮票,1.2元的邮票分别取0、1、2、3张,形成四种组合,共计20种组合,计算每种组合的邮资,如为3.6元,就是解。得到的解是0张8角邮票和3张1.2元邮票或者3张8角邮票和1张1.2元邮票。
请学生B先取0张1.2角邮票,0.8元的邮票分别取0、1、2、3、4张,形成了五种组合,接下来,取1张1.2角邮票,0.8元的邮票分别取0、1、2、3、4张,形成了五种组合,再取2张1.2角邮票,0.8元的邮票分别取0、1、2、3、4张,形成了五种组合,最后取3张1.2角邮票,0.8元的邮票分别取0、1、2、3、4张,形成了五种组合,共计20种组合,得到的解是1张1.2元邮票和3张3张8角邮票或者3张1.2元邮票和0张8角邮票。
分析方法:游戏结束之后,对该游戏的过程进行分析,帮助学生理出编程的思路。
不同张数和面值的邮票组成的邮资可用公式计算:w=0.8*m+1.2*n其中m为8角的邮票张数,n为1.2元的邮票张数。由游戏内容可知,8角的邮票可以分别取0、1、2、3、4张,1.2元的邮票可以分别取0、1、2、3张。学生A的游戏过程用8角邮票的张数控制外循环,1.2元邮票的张数控制内循环。学生B的游戏过程用1.2元邮票的张数控制外循环,8角邮票的张数控制内循环,同一个游戏,不同的解法,可以用不同的程序完成,得到解的次序也不同。
分析完毕,请学生完成两种不同方案的代码。由于学生参与了游戏的实施过程,对双循环的执行步骤理解得更加深入,增加了趣味性,触类旁通,对于其他双循环的程序能够更好的分析和理解。
代码清单:
解法一:
#include
int main()
{int m,n,w;
for(m=0;m<=4;m++)
for(n=0;n<=3;n++)
{ w=m*0.8+n*1.2;
If(w==3.6) printf(“8角邮票%d张1.2元邮票%d张”,m,n);}
}
解法二:
#include
int main()
{int m,n,w;
for(m=0;m<=3;m++)
for(n=0;n<=4;n++)
{ w=m*1.2+n*0.8;
If(w==3.6) printf(“1.2元邮票%d张8角邮票%d张”,m,n);}
}
三、实践教学中的游戏案例设计与分析
在一维数组的实验环节,对应教学大纲和教学内容可以考虑布置如下基础题目:
1. 一维数组的排序。
2.在一组数中查找某一个数。
3.选出一组数中的最大值最小值。
除此之外,可以设计如下游戏,让学生尝试编程,提高学生动手实践的兴趣。
【游戏案例】:猜牌游戏
游戏内容:魔术师手中有一叠预先排好顺序的13张红桃,牌面朝下。他对观众说:我可以不看牌,通过数数猜出牌面的数字,你们相信么?然后,魔术师将最上面的那张牌数为1,把它翻过来正好是红桃A,将红桃A放在桌子上。第二次数1、2,按顺序从上到下数手上剩余的纸牌,并把第一张牌放在这叠牌的下面,第二张牌翻开恰好是红桃2,也将它放在桌子上。第三次数1、2、3,把前面两张依次放在这叠牌的下面,再翻第三张牌恰好是红桃3。这样依次将13张牌翻出来,全部正确。请推出原来牌面的顺序。
案例分析:可以利用倒推的方法:在桌上放13個空箱子围成一圈,从1开始顺序编号,将红桃A放入1号盒子中,从下一个空箱子开始对空的箱子进行计数,当数到第二个空箱子时,将红桃2放入空箱子中,然后再从下一个空箱子开始对空箱子计数,顺序放入红桃3、4、5…,直到13张牌都放完。计数的过程中需要跳过非空的箱子,只对空箱子计数。最终箱子中的纸牌的顺序,就是魔术师手中原来的牌面顺序。
实施方法:该游戏案例考察选择结构、双重循环、一维数组的使用,覆盖的知识点全面,是一个比较综合的实践题目。在案例分析的基础上,鼓励学生分组实际玩一下这个游戏,然后在游戏的过程中一起讨论找出求解的方法,最后编程实现。这个游戏案例可以最为附加题目,完成的学生将在本次实验中得到10分的附加分,通过类似的鼓励机制,激发学生学习的热情和接受挑战的勇气。
综上所述,通过在14级计算机专业两个班和电信专业两个班的《C程序设计》教学中引入游戏化学习方法,这些班级在课堂学习态度、实验任务的自主完成率、期中调查问卷对课程的满意度、期末考试成绩等四个方面均有大幅提高。实践表明:把游戏案例加入到抽象的理论讲解中,打破了课堂的沉闷氛围,增加教师与学生的互动,提高了学生的学习兴趣,同时在实践环节加入与该节教学目标相关的游戏程序设计,有利于提高学生学习的自主性和创新能力。
参考文献:
[1]肖红玉,孙玮,黄静.游戏化学习在程序设计课程实验教学中的探讨与实践 [J].价值工程,2011,(1).
[2]张逸琴.游戏引入策略在C 语言算法教学中的应用[J].广东技术师范学院学报,2006,(4).
[3]杨雪萍. 职业学校《C语言编程》游戏化展示研究[D].南京:南京师范大学,2011.
[4]李茜.游戏化教学法在高职程序设计课程中的应用探索[J].广西经济管理干部学院学报,2013,(2).
(编辑:郝婵)