基于编程项目学习培养小学生核心素养
2019-06-19孙玉玲
孙玉玲
新版普通高中信息技术课程标准详细阐述了什么是信息技术学科核心素养,对信息意识、计算思维、数字化学习与创新、信息社会责任这四个核心要素进行了具体描述。其中,计算思维是采用计算机方式界定问题,运用合理的算法形成解决问题的方案,并迁移到与之相关的其他问题解决中;数字化学习与创新是指将信息技术作为工具,去学习和创新。结合教学内容与所教学生学情分析,本课主要从计算思维与创新意识两个方面来培养学生的学科核心素养。
需求分析
软件需求分析是一个项目的开端,也是项目实施最重要的关键点。据有关机构调查表明,我们设计的软件产品存在不完整性、不正确性等问题,其中80%以上是需求分析错误所导致的,而且由需求分析错误造成的根本性功能问题尤为突出。因此,一个项目的成功,软件需求分析是关键的一步。
1.理解需求
需求决定程序的设计。在进行程序设计之前,先弄明白客户的需求是什么是很重要的。在编程教学中,让学生明白这个程序是做什么的,实现什么功能,对学生更好地理解程序、编写程序帮助很大。
2.描述需求
原则上,需求描述应陈述程序应该做什么,而不包括程序应该如何实现。常用描述需求的方式有结构化自然语言、程序设计语言描述和图形化符号。由于结构化自然语言存在二义性,表述时比较烦琐,而用程序设计语言描述用户又不容易理解,描述结果不直观,所以我们采用了数据流图描述。数据流图(DFD,Data Flow Diagram)是非常方便的工具,图示直观,适合于事物处理软件的开发,如图1所示。
3.分析需求
根据程序功能描述,可以确定角色有哪些行为。用多分支结构语句“如果……那么……”,来确定什么条件下执行什么语句。用思维导图把程序结构表示出来,这里仅展示部分指针角色行为设计,如图2所示。
总体设计
要对整个程序进行总体设计,需要划分功能模块,进行总体流程设计。
1.划分功能模块
对程序的顺序结构、分支结构做了粗略分解,形成了各个分功能模块。该项目包括背景设计、指针指向模块、指针抽中对象输出模块、抽中神秘大奖额外奖励模块、得分与计时等。这里仅展示指针指向模块的思维导图,如图3所示。
2.总体流程设计
该环节主要是为了便于用户理解程序设计思路,根据程序运行先后顺序,设计出模块之间的逻辑关系,设计出总体程序流程图,如图4所示。
编程实现
完成总体设计后,就开始着手编写程序,让项目得以实施。先进行算法设计,让每个功能模块通过合理的程序步骤分解,得以实现该功能。然后用合适的程序语言编写程序。
1.算法设计
这一环节属于程序设计的核心部分,若想把程序要实现的功能与程序语句对应起来,重点是要有合理的算法设计。可以使用流程图来表达算法设计思考结果。图5所示的是“抽奖机”程序中指针指向某个角度时的处理办法流程图。
2.编写程序
编写程序时,要考虑选用何种编程语言。这里选用图形化编程工具——编程猫源码编辑器。经过前面的学习,学生已经掌握了源码编辑器的常用语句与逻辑结构。根据算法设计流程图,让学生开始着手编写“抽奖机”程序。编写好程序后,让学生运行程序,根据运行结果,判断程序是否符合程序的功能设计要求。得分超过设定值时部分程序代码界面如下页图6所示。
3.调试程序
在程序编写过程中,需要大量地调试程序,因为在编写程序时,会出现各种各样的小bug,例如,有的学生不小心写错了变量名,有的学生程序语句放在了错误的循环语句里,有的学生把程序语句的先后顺序混淆了,等等。这些问题都会引起程序的运行结果与我们的功能设计不一致,所以,调试程序是很重要的。而且调试程序也可检测我们对整个程序的逻辑结构是否清晰,对程序语句使用是否熟练。
同时,在程序编写过程中,学生对程序进行再次改编,编写出了各式各样的抽奖机,有的学生编写了励志少女必备清单抽奖机,有的学生編写了有为青年get技能抽奖机,热爱小动物的学生编写了宠物pet抽奖机。学生在编程过程中,开动脑筋,把自己的兴趣爱好加入到编程内容中,学生在掌握编程思想的同时,进行编程形式和内容的创新,落实信息技术学科核心素养中关于创新的要求,这样不仅让编程学习更加有趣,而且把编程作为一个表达思维的工具,能激发学生更多更好的创意。
分享拓展
在学生做好作品后,让学生彼此间分享交流,碰撞出思维的“火花”,促进学生对作品进行优化,产生更新的作品。通过交流与同伴间的欣赏,提高学生的自信心,使其在编程学习中获得更多的成就感。通过分享交流,学生的思想更加开放,能够分辨出同学与自己的作品的优点与缺点,进行取长补短。
采用源码编辑器除了可以在学生之间通过分享作品网址、提交作品的方式进行交流,还可以发布作品到社区,与更多的人进行互动交流,并且可以进行点赞,发表评论,对作品进行改编等,进一步激发学生的创作热情。例如,在抽奖机游戏中,有的学生提出当抽中特殊大奖时,加入学生录音欢呼音效,切换界面出现胜利鼓等;有的学生提出当得分达到设定值时,出现酷炫界面等,让程序更加好玩。
项目教学引发的思考
1.花时间引导学生分析和设计
“抽奖机”程序从最基本的“食物抽选机”(让转盘旋转,出现主食、饮料、甜品三种食物组合提示)到后来的“幸运大转盘”(转盘转动,抽中某种鲜花,即出现相应花语与祝福语),再到后来的“幸运大转盘”升级版——“神秘大奖”,有倒计时与得分情况,有抽中神秘大奖的各种创意设计,让学生从基本的程序结构出发,不断增添新的功能、新的程序效果。引导学生分析要实现某种程序功能,可以用到哪种结构和语句,思考有没有其他方法可以达到同样的效果。在教学中,要注意引导学生多思考程序的逻辑结构与算法思想,让学生学会举一反三,触类旁通。
2.小步调地设计与编程
一般来说,先分析功能再进行程序设计,再编写程序代码,是一个先后有序的过程。但是在编程教学中,我们并不总是严格按照这样的步骤来进行教学,因为进行功能模块设计与总体设计,需要花费大量的时间。我们在教学中,先编写基本的程序框架,实现简单的功能,再逐步地增加程序难度,丰富程序功能,这符合学生的认知习惯,可以让学生更快地适应程序编写流程。
3.开展小组合作学习
让学生开展小组合作学习,集合团队的力量,让更多的创意涌出,通过沟通促进学生进行更多的思考,让学生体会到合作的力量。同时,在小组间实行竞争模式,激励组员勇争先锋小组,在不同小组间形成你追我赶的学习氛围,在竞争中快乐学习。
4.线上线下多渠道互助学习
利用现在便利的互联网终端技术,让学生在课余时间,在家中的电脑软件上进行编程创作,或者在家长的手机上下载编程Nemo APP,在手机上进行程序编写。教师与学生进行在线交流,有问题及时进行引导。在编程猫社区论坛里,也可以发布学习帖,进行作品分享与问题求助。