游戏在《数据结构》课堂教学中的应用

2022-04-02 03:32张学钦,李英
电脑知识与技术 2022年33期
关键词:数据结构动画游戏

张学钦,李英

摘要:折半查找算法是《數据结构》课程的一个重要算法,讲授时通过引入“猜价格”游戏以及形象、直观的动画演示来调动学生学习的兴趣点和积极性,营造良好的学习氛围。对学生学习满意度的调查结果表明,游戏融入折半查找算法教学具有事半功倍的效果。

关键词:折半查找算法;游戏;动画

中图分类号:TP3          文献标识码:A

文章编号:1009-3044(2022)33-0177-04

随着计算机应用领域的不断扩大,人们对数据结构的重视程度空前高涨。《数据结构》课程中的排序、查找算法是经典的、重点的算法。然而非常枯燥,教师难讲,学生课程也缺乏兴趣[1]。如果将教学与游戏巧妙地结合,对折半查找算法的教学将会是一个不错的教学思路。

1游戏对折半查找算法教学的适用性分析

1.1 游戏融入教学可以模拟实际的场景,使学生对知识的理解更深入

通过游戏可以将复杂、枯燥的知识通过形象的模拟来进行展示,使学生对折半查找算法的印象更深刻、理解更深入,进而为后续的算法实现环节打下良好的基础。

1.2 开拓学生的创新思维

在计算机发展日新月异的今天,为了满足 IT 企业的需求,适应市场需要,计算机专业必须开拓学生的创新思维。游戏的引入,可以使整个教学过程趣味性十足,学生发挥的想象力可以得到充分地发挥,进而可以开拓学生的创新思维[2]。

2折半查找算法的教学设计

2.1折半查找算法的基本思想

对已按关键字排序的序列,首先用待查找数据与数列中间元素比较,如果相等,则查找成功;如果不相等,则根据比较结果,来确定后续查找在哪半边进行,以此类推,直到查找成功,或者找不到待查找数据为止[3]。

2.1.1折半查找算法的基本思路

单纯文字描述算法思想不够直观,我们举例如下:已知如下 11 个数据元素的数组(6, 13, 19, 23, 37, 58, 64, 75, 82, 88, 92),现要查找关键字data为 23 和 85的元素。Low:查找区间的下界, high:查找区间的上界,mid:查找区间的中间位置,mid=(low+high)/2。

(1) k=23 的折半查找过程,如下所示:

① [1,11],mid=6,23<58, high=mid-1;

② [1,5],mid=3,23>19,low=mid+1;

③ [4,5], mid=4,23=23,查找成功;

(2) k=85 的折半查找过程,如下所示:

① [1,11],mid=6,58<85,low=mid+1;

② [7,11],mid=9,82<85,low=mid+1;

③ [10,11],mid=10,88>85,high=mid-1;

④ [10,9]low>high,查找失败;

2.1.2折半查找算法的实现

算法描述:

1)输入:待查找关键字data;

2)输出:若匹配成功,输出满足条件的数据元素下标;否则;输出“查找失败”;

3)运算过程:

a)计算中间值

mid=(low+high)/2;

b)移动操作:若 data<array[mid],high 指向 mid 前一个元素,即high=mid-1;若data>array[mid],low=mid+1;

c)循环条件:low<=high;

d)结束条件:data=arrray[mid]或low>high;

根据以上算法的关键点分析,通过C 语言程序实现折半查找算法:

#include<stdio.h>

int main()

{

int array[11]={5,13,19,21,37,56,64,75,80,88,92},low,high,mid,data;

printf("请输入待查找的数:");

scanf("%d",&data);

low=0;

high=10;

while(low<=high)

{

mid=(low+high)/2;

if(data==array[mid])

{

printf("查找成功!%d在第%d个位置\n",data,mid+1);

break;

}

else if(data<array[mid])

high=mid-1;

else

low=mid+1;

}

if(low>high)

printf("查找失败!\n");

return 0;

}

2.1.3折半查找算法实现过程中常见问题分析

在算法实现过程中,移动操作环节是关键;若 data<array[mid],high 指向 mid 前一个元素,即high=mid-1;若data>array[mid],low=mid+1;可是有些同学容易遗漏移动操作,编写出如下的程序 [5]:

#include<stdio.h>

int main()

{

int array[11]={5,13,19,21,37,56,64,75,80,88,92},low,high,mid,data;

printf("请输入待查找的数:");

scanf("%d",&data);

low=0;

high=10;

while(low<=high)

{

mid=(low+high)/2;

if(data==array[mid])

{

printf("查找成功!%d在第%d个位置\n",data,mid+1);

break;

}

else if(data<array[mid])

high=mid;

else

low=mid;

}

if(low>high)

printf("查找失败!\n");

return 0;

}

若按上面程序执行,会产生两个问题:一是当待查找关键字 data 不存在时,low<=high 永远成立,查找过程将永不停歇;其二是若查找关键字 data=6或者data=92,查找过程则陷入死循环,又无法找到正确的位置,这就需要教师们在教学过程中反复强调移动操作的重要性。

2.2 教学目标

知识目标:掌握可以实现折半查找的两个前提以及折半查找的基本思想;

能力目标:具备一定的逻辑思维能力和从具体问题中提炼出算法的能力;

操作性目标: 能通过计算机语言编写程序实现折半查找算法;

情感目标: 提升学生参与意识,培养学生自主探索问题的能力,让学生在自主探究的过程中深刻感受算法思想在解决实际问题时的重要性和魅力,以激发学生的学习热情。

2.3教材分析

教学重点:折半查找算法的基本思想;

教学难点:由折半查找算法思想到程序代码的转换。

2.4学情分析

学习对象是计算机科学与技术学院大一新生,同学们对数组的相关知识和顺序查找算法已经有一定的认识。但由于刚接触编程,对编程积极性不够高,基础相对欠缺,加上折半查找算法逻辑性比较强。所以在教学过程中應尽量想办法调动学生学习的兴趣点和积极性。

2.5教学策略

首先,寓教于乐,通过精心设计的“猜价格”游戏来调动学生的学习积极性和兴趣点,启发学生去探索游戏背后的科学原理;另外,通过算法动画的展示,将游戏环节中的猜价格方法进一步提升到算法原理中,可以激发学生学习编程的热情,也可以为后续的算法实现环节打下良好的基础。

2.6教学方法

本课采用游戏体验法、动画直观演示法和启发式教学法三种方法相结合的方式来完成。

2.7教学过程设计

首先,通过对前一节顺序查找内容的回顾,总结出顺序查找的优缺点;然后,通过一个“猜价格”游戏暖场,引导学生去探索游戏背后的科学原理,进而导入新课;接下来结合一个具体的案例,配合动画详细讲解折半查找的基本原理。然后,提炼出折半查找算法,绘制出折半查找算法的流程图,并设计出动画效果,使流程图当中的每一步都有与之对应的代码同步出现。相信,通过这种方法来完成算法实现这一环节的讲解,可以让同学们更清晰、更透彻地理解算法代码,并且可以激发学生对编程的热情和信心。随后,对本节课的内容进行总结,提醒学生本节课应该注意的关键点。再通过一道思考题,让学生更深刻地去感受折半查找在实际生活的用途和高效性,最后,布置作业让学生对本节课的知识进行巩固。

2.8多媒体课件设计的重要性

老师们进行教学设计时,往往都会对知识导入、教学目标(包含知识目标、能力目标、情感目标、操作目标等)、教学重点与难点、教学策略等方面耗费大量的时间与精力,却忽略多媒体课件的设计,然而课件的色彩搭配、动画效果、视频等往往会给学生带来一场非常震撼的视觉盛宴,进而吸引学生的注意力,使教学效果事半功倍。

2.9 《折半查找算法》教学设计的依据

由于学生的基础不同,理解问题的能力也参差不齐,《数据结构》课程内容又非常枯燥,要想提高学生学习的积极性与主动性,就必须改变过去以教师为中心“满堂灌”的教学模式。针对《数据结构》课程的特点,考虑到学习对象是大一新生,缺乏足够的编程热情、好奇心强、活泼、爱玩等实际情况,结合折半查找算法的教学目标,决定采用游戏体验法、动画直观演示法和启发式教学法三种方法相结合的方式来完成折半查找算法的教学。首先,通过游戏暖场可以让学生积极参与到课堂中来,以最大限度地激发学生的学习热情。接着,运用启发式教学引入本节课的主题——折半查找。然后,结合一个具体的实例配合形象、直观的动画展示出折半查找算法的基本思想及其实现的详细过程,将游戏环节中的“猜价格”方法进一步融合到折半查找算法原理中,一定可以激发学生学习的热情和信心。

2.10 教学效果调查

2.10.1 调查问卷和测试

为了调查此教学设计的效果,老师通过在问卷星上发布问卷,让学生填写自己对这一节课的感受和各项教学目标达成度,并对老师的教学方法提出相应的意见和建议。 通过问卷星平台反馈结果可以看出,90% 以上的学生认为本次课堂注意力高度集中,学习兴趣浓厚,对用折半查找算法实现课后作业非常有信心。随后,对学生进行折半查找算法知识的测试。结果证实, 85%以上的学生成绩达到优秀。调查结果表明,游戏融入本节课的教学,收到了良好的教学效果。

2.10.2访谈

问卷调查和测试完成后,选取成绩相对较好和成绩相对较差的学生进行访谈,以更好地改进教学。调查结果出乎意料,好多同学把没布置的课后习题也编程实现了,还有相当一部分学生已经开始迫不及待地学习其他查找、排序算法。充分说明引入游戏来讲授折半查找算法能充分调动学生的学习兴趣和编程热情,能提高学生的学习主动性。

3总结与展望

3.1 总结

游戏教学要求任课教师要时刻牢记游戏不以玩乐为目的,游戏规则的设计要紧紧围绕教学目标和内容,规则要能精准地传达给学生。教学设计往往都会包含知识回顾与导入、教学目标(包含知识目标、能力目标、情感目标、操作目标等)、教学重点与难点、教学策略、板书、教态、课件、作业等方面[1]。 优秀的教学设计可以让学生体会到学习的快乐,能激发学生学习的热情,进而能够取得良好的教学效果。

3.2 展望

本次教学设计仅选择了《数据结构》课程中的折半查找算法,并且仅仅是针对计算机软件工程专业大一新生进行实验教学,课程内容和学习对象都不够全面。以后的教学中,力争早日让游戏教学贯穿到《数据结构》课程各个章节中,并且尽可能多地在其他学习对象中开展,让研究结果更有普遍性意义。

在以后的教学设计中,还要尽可能多地融合课程思政元素,在培养学生专业能力的同时,关注学生身心健康发展,实现育人的理想效果。另外,还要采用线上线下混合式教学模式,让学生真正变为学习的主体,融合传统课堂教学与在线学习的优势,以获得最佳的教学效果和学习效果[6]。

参考文献:

[1] 王晓燕,李亚.游戏在教学中的应用——《停止等待协议》的教学设计[J].南阳师范学院学报,2015,14(12):69-72.

[2] 李明,马平.游戏设计在人机工程学课堂教学中的应用[J].黑龙江科技信息,2012(29):172,69.

[3] 严蔚敏,李冬梅,吴伟民.数据结构:C语言版[M].2版.北京:人民邮电出版社,2022.

[4] 何丽莉,白洪涛.折半查找算法实例教学及问题分析[J].教育现代化,2016,3(16):68-70.

[5] 呂国光,张燕.关于游戏教学的若干研究[J].韶关学院学报,2011,32(3):130-134.

[6] 胡钰,耿植林,普运伟,等.以问题为导引的线上线下混合式教学模式探究[J].计算机教育,2022(2):73-78.

【通联编辑:朱宝贵】

猜你喜欢
数据结构动画游戏
做个动画给你看
动画发展史
“翻转课堂”教学模式的探讨——以《数据结构》课程教学为例
爆笑游戏
我是动画迷
TRIZ理论在“数据结构”多媒体教学中的应用
《数据结构》教学方法创新探讨