第三步转译:从逻辑图示到代码实现

2023-08-30 10:54王小玉
中国信息技术教育 2023年16期

王小玉

摘要:本文以“身边的算法”项目为主题,通过将算法逻辑图示转成编程代码,聚焦编程学习中算法的实现环节,引导学生在分析任务需求的基础上,对问题进行描述和表达,并用图示化的方式描述算法,最后根据逻辑图示进行编程解决问题。

关键词:算法教学;编程教学;三步转译编程教学法

中图分类号:G434  文献标识码:A  论文编号:1674-2117(2023)16-0012-03

编程教育是教育技术层面的一个重要分支,开展编程教育活动能够使计算思维具体化。目前,国内中小学大多都开展了编程教学,但编程课堂的教学形式主要为讲—练、讲—演—练等,可是编程的学习不同于软件使用技能的学习,软件学习重在技术的使用,而编程学习重在思维和问题解决能力的培养。因此,编程教学需要在教学方式上进行改变。

“身边的算法”项目简介

“身边的算法”是《义务教育信息科技课程标准(2022年版)》(以下简称“新课标”)中第三学段(5~6年级)中的内容,包括算法的描述、算法的执行、算法的效率等。通过本模块的学习,学生能熟悉一些常用的算法描述风格与方式,理解算法执行的流程;能利用自然语言、流程图等方式,针对简单问题,尝试设计求解算法,并通过程序进行验证。新课标在教学提示中提到,从学生的生活体验或《九章算术》等典籍中的适当问题出发,将算法学习的要点贯穿问题求解的过程,让学生在不同算法的具体讨论中养成算法思维,避免空洞地讲授抽象概念。

1.学生的心理认知

五、六年级的学生认知发展处于具体形象思维到逻辑抽象思维的过渡阶段,并且该阶段的学生思维发展比较依赖于生活,而游戏化教学体验具有趣味性、挑战性、体验性和交互性等特征,非常适合低龄学生,因此本项目选择了他们熟悉的数学问题“鸡兔同笼”和可参与的“打砖块”游戏,激发学习兴趣。同时,学生的思维以形象思维为主,他们对自己动手实践的体验印象深刻,所以可将流程图示编程转换成可执行的程序,让学生在此过程中通过观察、语言描述、逻辑图示、动手实践到最后解决问题享受学习成功的喜悦。随着理论思维和自我认知的发展,这个阶段的学生已经不满足于被动地接受知识,对课堂活动表现出来极大的热情,更希望参与课堂表现自我,所以可通过设计课堂分享活动和讨论流程图环节让学生充分参与课堂。

2.项目内容框架

根据该学段学生的特点,充分考虑到新课标弱化编程语言和具体的完整代码实现,更加重视算法思想和用编程思维解决问题的设计原理。本项目选择了Mind+图形化编程软件,积木式的编程环境使得编程学习更易被学生接受。为了让学生能够深入理解“身边的算法”,本项目共设计了6个课时的教学内容。课时内容如图1所示。

第三步转译“从逻辑图示到代码实现”的具体教学实施

1.解决“鸡兔同笼”问题中第三步转译的具体实施

“鸡兔同笼”是数学中的一个十分经典的问题,教师向学生出示《孙子算经》中鸡兔同笼问题:“今有雉兔同笼,上有三十五头,下有九十四足,问雉兔各几何?”请学生完成学习单上的表格(如下表),找出鸡和兔子分别有多少只。

(1)自然语言建模

学生分小组讨论:要解决“鸡兔同笼”问题,可以怎么设计算法?

算法A:假设鸡有35只,兔子0只,算出脚的只数,然后假设鸡有34只,兔子2只,算出脚的只数以此类推,也能找出鸡和兔子分别有多少只。

算法B:假设35只全都是鸡,那么有70只脚,因为鸡有2只脚,兔子有4只脚,那么多出来的24只脚都是兔子的另外两只脚,所以兔子的数量是24/2=12只,鸡有23只。

算法C:假设鸡有x只,兔子有y只,y=35-x,同时2*x+4*y=94,将y=35-x代入,计算得出鸡的数量,然后兔子数量为35减去鸡的数量。

算法D:让鸡和兔子分别抬起一只脚,那么剩下一半的脚47只,剩下的脚47减去兔子和鸡的头35得到的应该就是兔子的数量12只,最后算出鸡的数量23。

(2)框图梳理逻辑

学生四人一组,根据第一步的算法A的描述,完成学习单上的流程图(如图2)。

(3)功能代码表达

学生根据流程框图,利用图形化编程软件完成程序编写,将算法转化成为可执行的程序(如图3、图4)。

2.打砖块游戏程序编写中第三步转译的具体实施

将打砖块的游戏程序转换成.exe文件,让学生先玩一玩,然后请学生分别说一说其中木板、小球和砖块的动作效果以及变量的变化情况,并完成学习单。

(1)自然语言建模

木板效果描述:左右键控制木板左右移动;

小球效果描述:当绿旗被点击的时候,移到舞台下面某一位置,朝着向上的随机方向移动,如果碰到砖块反弹回来,如果碰到木板也反弹,如果碰到边缘也反弹,如果碰到底部的红色线条就停止游戏;

砖块效果描述:当绿旗被点击的时候,砖块克隆16个自己,以4*4的形式分布在舞台上,如果砖块被小球打中则砖块消失;

变量分数描述:如果小球打中砖块,分数加1。

(2)框图梳理逻辑

引导学生将复杂问题细化分解成多个子问题并逐一解决,最终实现整体问题解决。请学生四人一组自行根据语言描述绘制各个角色的流程图,通过算法的方式解构游戏,将复杂问题形式化。

(3)功能代码表达

学生根据流程和框图,利用图形化编程软件完成程序编写,将算法转化成为可执行的程序(如图5、图6)。新课标中提到,不要求每个算法问题都由学生编程实现,阅读理解、修改运行等也都是有意义的体验,并且由于本游戏程序具有一定的难度,因此,笔者在课堂上将程序半成品发送给学生,学生可根据自己的能力选择从零开始或在半成品基础上搭建脚本。

3.教学反思

纵观整个项目的教学环节,笔者发现学生根据自己绘制的流程图能够快速地完成程序编写,因此可以明确,学生理解了解决该类问题的算法的工作流程。

在项目活动开展过程中,大部分学生能够跟随课堂进度学习和编程,但是有小部分学生对框图和流程图比较陌生,需要教师的进一步讲解。

通过这轮教学实践,在学生根据流程图示進行编程的环节,编程效率有了非常大的提升,在编程过程中学生们也很少有畏难情绪。

结语

算法是计算思维的核心要素之一。三步转译编程教学法的第三步“从逻辑图示到代码实现”,通过程序解决问题,让学生经历问题解决的一般过程,理解算法,感知计算机解决问题的思想方法,这在一定程度上有助于在编程教学中提升学生的计算思维和问题解决能力。

参考文献:

中华人民共和国教育部.义务教育信息科技课程标准(2022年版)[S].北京:北京师范大学出版社,2022:6.