基于STEM教育的枚举算法学习教学设计

2019-12-16 02:59谢永盛苑井孝
山西青年 2019年23期
关键词:枚举水仙花三位数

谢永盛 张 超 王 璐 苏 柏 苑井孝

(西北民族大学,甘肃 兰州 730124)

近些年STEM教育在国内开展的如火如荼,不少国内学者、研究人员针对STEM教育进行了不同程度上的探究,从理论分析到实践验证。STEM教育强调通过跨学科整合,这一集合,不是课程的简单组合,而是把学生学习到的零碎知识与项目工程转变成一个探究世界相互联系的不同侧面的过程,强调学生在“杂乱无章”的学习情境中提升设计能力、合作能力、问题解决能力和实践创新能力[1]。枚举算法起源于原始的计数方法,即数数。其本质是一种列举式搜索的算法,常常借助循环嵌套分支结构和计算机的超强运算能力,一一验证大量可能的答案。

一、找回忘记的密码

(一)情境引入

某人将自己的旅行箱密码忘记了,密码可能是生日也可能是电话号码。同学们列出的多种情况促使当事人想起他的密码是一个三位自然数,并且密码个位数是8,其它位含有1但是不能确定在哪个位置。那么如果要解决上面的问题,我们就要把问题的所有可能解都一一列举出来,并按照问题要求的条件逐个判断每个答案是否是正确的解。

(二)分组讨论

按照项目所学内容可将同学们分成若干组,本项目学习过程中,学习小组可以参考以下活动建议进行合作学习和交流分享。

表1 项目活动建议

图1 找回密码程序

运行结果:108、118、128、138、148、158、168、178、198、218、318、418、518、618、718、818、918。

(三)设计程序

教师可根据学生在课堂上的学习情况开展下一项教学任务。在这个项目中学生们将借助Python程序语言和数学知识来解决问题。Python是一种面向对象、解释型计算机程序设计语言,由Guido van Rossum(吉多·范罗苏姆)于1989年发明,第一个公开发行版发行于1991年。它是一个开源语言,拥有大量的库,可以高效地开发各种应用程序。特点:简单、高级、面向对象、可扩展性、免费开源、可移植性、丰富的库、可嵌入性[2]。这个过程需要每个小组成员的参与,动手敲代码并将本小组的运行结果通过教学平台分享给大家。

图2 寻找三位数中的水仙花数程序

运行结果:153、370、371、407。

在程序中:通过取余运算%判断个位数。如x%10==8成立,则可判断个位数为8;借助逻辑运算符“and”可以判断复杂情况;可使用整除运算(//是整除运算符号)取得该自然数的前两位数,利用in判断前两位中是否有1。程序,见图1。

(四)课堂小结

本节课教师通过项目式学习的方式开展教学,借助找回密码的生活场景吸引学生学习兴趣,融合数学学科知识并通过Python程序语言掌握了枚举算法中的逻辑框架。借助STEM教育理念培养学生的思维能力和动手能力达到预期的教学目标。

二、寻找水仙花数

通过上一个项目——找回忘记的密码的介绍,我们再来感受下寻找水仙花数的教学过程。水仙花数是各位数字的立方之和等于该本身的数,如153=13+53+33。现让求出所有三位数的水仙花数。

(一)分析问题,确定枚举范围

我们根据已有的知识判断出水仙花数的特征和所给问题的数字范围,对该项目逐一给出解决方案。确定枚举对象的取值范围:用i表示该三位数,foriinrange(100,1000);一个三位数的百位上的数用整除的计算方式获

得:用a表示,a=i//100;十位上的数用整除和求余两种计算方式获得:用b表示,b=i//10%10;个位上的数用求余的计算方式获得:用b表示,c=i%10。

(二)确定枚举条件,设计枚举程序

要求水仙花数等于各位数字的立方之和,所以枚举条件是i==a**3+b**3+c**3,程序,见图2。

三、教学反思与总结

在STEM教学理论的指导下,利用算法和编程去优化并解决生活中的问题,这不仅有效提高学生对数学和编程学习兴趣的提升而且也为国内STEM教育的实践探索提供可以研究的视角。人工智能和大数据充斥着生活中的各个方面,从生活中学习再回归到生活中,让学生真正体会到编程的无限乐趣。同时在学习过程中,切实地提升了学生综合运用知识的能力和解决问题的创新能力,逐渐养成STEM素养[3]。

猜你喜欢
枚举水仙花三位数
学习“三位数乘两位数”三要点
摆三位数
基于理解性教学的信息技术教学案例研究
积是三位数还是四位数
数组在处理枚举无规律数据中的应用
水仙花
三位数密码
水仙花
基于太阳影子定位枚举法模型的研究
基于枚举的并行排序与选择算法设计