借助流程图提升学生编程能力的实践探索
2024-06-18夏华杰邓雪芳
[摘 要] 中小学生的思维尚未发展成熟,面对较为复杂的编程问题往往感到束手无策。流程图以直观呈现思路的优势帮助学生理解程序,从而更好地完成学习任务。文章以此为背景,对流程图在编程课中的运用进行研究,提出了教育案例生活化、任务分析流程化、专项功能模块化、问题解决多样化等策略,希望能够为一线教师带来新的教学思路。
[关键词] 流程图;编程教学;小学科学;科学教学
随着科技的发展,数字化和人工智能渗透在生活的方方面面,这一切的基础是编程。流程图是一种用规定的图形、指向线及文字说明来准确、直观表示算法的可视化学习工具,可以将复杂的、不可视的思维过程和思维方式清晰地呈现出来,是编程教学中非常好用的辅助工具。
一、生活化案例促进学生对编程逻辑的理解
在数字科技时代,信息科技课程的落地一定要突出“解决问题”。
题1:早晨出门前查一下天气预报。如果下雨,就带伞上班;如果不下雨,就不带伞上班。
题中出现两个如果,意味着给了两种选择,会产生两种结果。这个情境可以更好地帮助学生理解选择结构的意义和用法。
根据案例的逻辑可以画出流程图(图1) ,它清晰地表明了程序是由上至下执行的,在输入S的值后,出现了两个执行分支。决定最终执行走向的是S和Y的关系。如果S=Y,那么输出“带伞上班”,否则就输出“不带伞上班”。
二、流程化分析培养学生解决实际问题的能力
实际生活中的问题总是多而复杂的。学生需要运用流程化分析将任务分解为一系列实施步骤,再将每一个步骤分解为若干可处理的子问题,分开进行解决。
下面以编写旅馆送餐机器人的程序来例证流程化分析的有效性:首先,分析送餐机器人需要实现的功能;只要输入房间号,它就能自动到达对应的房间门口。按照事件发生的顺序,其运行大致可以分为五个执行步骤,依次是接收指令—行进到电梯口—坐电梯—从楼梯到对应的房间—回到初始位置。至此,完成了第一步的分解。在所有功能中,机器人乘坐电梯上下的过程最为复杂,需要重点突破。假设房间号为变量S,酒店房间号的第一位代表楼层信息,如果S的第一位为1,就是在一层,直接按照设定的路线到相应的房间,否则就要通过电梯到达相应的楼层。机器人需不断接收电梯的楼层信息,判断是否到达了指定楼层,如果没到达指定楼层就继续坐电梯;如果到达了,则根据预设的路线走到相应的房间。据此,可分析并画出流程图(图2)。
这是电梯上行的算法。当然,若要同时实现电梯的上行和下行功能,就需要用到流程图的嵌套。但这样的流程图画起来非常复杂,学生也难理解。较好的解决方案是让学生分别画出电梯上行的流程图和下行的流程图,然后将两个流程图放在一起作对比。通过绘制、对比,学生会发现两个流程图只有细微的区别,上行执行的是楼层递增的算法F=F+1,下行的程序执行的是楼层递减的算法F=F-1。经历了这样的探究过程,学生分析问题、解决问题的能力都得到了极大提升,为项目的推进打下坚实的基础。
在此案例中,酒店的房间很多,如果挨个给每个房间编写程序,其工作量太大。可以先编写从楼梯到左侧第一个房间的程序,调试完成后将其设为模块一。从楼梯到第二个房间必须经过第一个房间,因此模块二只需要在模块一后面补充从第一个房间到第二个房间的一小段程序即可。根据这个思路很快就可以完成一层楼的程序设计。由于每层楼的结构大致相同,其他楼层可以直接引用第一个楼层的程序模块。每层特殊的房间单独处理即可。程序模块化将功能点统合成一个整体,方便学生调用和修改。在这种思路指导下建立起来的系统结构灵活,支持多人协作,可以灵活地进行组合和分解,因其焦点分散而大大提高了系统的健壮性和灵活性,所以更易进行改造升级。
通过上面的案例不难看出,流程化分析将多维要求平面化、序列化、可视化,为解决复杂问题提供了一条可行的路径,大大提高了学生解决实际问题的能力。
三、多样化求解激发学生的创新思维
心理学研究表明,创新多产生于解决不确定性问题的探究过程中。在编程教学中鼓励“一题多解”能拓展学生的思路,培养和发挥学生的创造力。如以下案例中,正是因为有了探究过程,激发了学生的创新思维,学生给出了三种不同的解法。
题2:编写一个程序,判断出输入的三个数中的最小值。
方法一:如图3所示,输入三个数,先用第一个数和其他两个数进行比较,如果它是最小数,就将它的赋值给变量min并输出,否则就进入下一轮的比较。第二轮用第二个数与其他两个数比较,如果它是最小的,就将它的赋值给变量min,否则就进行第三轮比较。最后用第三个数和其他两个数比较,通过三轮比较找到其中最小的数,将它的赋值给变量min并输出。这个思路就是要一个个对比, 烦琐但有效。在面对少量数的比较时,我们也常会采用这种方法。
方法二:如图4所示,设第一个数为a,第二个数为b,第三个数为c。先将a和b比较,将其中较小的数赋值给min,再用min和c进行比较,将其中较小的数赋值给min。最后输出min的值就可以了。这个思路就像打擂台,两个数比较,谁小谁留下,然后用留下的数和第三个比较,留下其中较小的数,最后留下的就是三个数中的最小值。
方法三:如图5所示,设第一个数为a,第二个数为b,第三个数为c。先将a赋值给min,然后用min和b比较,将其中较小的数赋值给min,再用min和c进行比较,将其中较小的数赋值给min。这种方法就像守擂赛。先指定一个数为擂主,其他的数和它比较,谁小就成为新的擂主,一轮一轮比下去,比到最后,那个“擂主”就是我们要找的最小的数。
流程图可清晰地展示思维的整个过程,包括输入、处理和输出以及其中的每一个环节之间的逻辑关系,揭示思维发展的路径。学生可以在流程图的引导下灵活进行思维的发散和聚焦,用自己的创意来完成作品。从本案例看,三种方法都有自己的道理,教师不能轻易去肯定或否定。但要引导学生理解采用不同方法解决同一问题时会存在时间、效率上的巨大差别。
一题多解的分析让学生的眼界更宽广,思维更灵活,在这个过程中学生能自然认识到提高算法效率的必要性。此案例只进行了三个数的比较,似乎每种方法都是可行的,如果参与比较的数的量特别巨大,就要用到更高级的算法。中小学阶段暂时不必深入了解,但教师可以将这个问题作为一个驱动性任务留给学生,以激发学生持续探究的欲望。
四、标准化框图提升学生合作学习的效率
“独学而无友,则孤陋而寡闻。”我们从某种经历中得出经验后,就会不自觉地将这种经验套用在其他事上,次数多了,惯性就产生了,从而形成“路径依赖”。
在编程实践中,如果程序运行后没有得到想要的效果,肯定是哪里出错了。设计者本人如果已经经过认真思考和多次检查,但仍然找不到问题所在,很可能是陷入了某种“路径依赖”或者自身在此处有认知盲区。这时候应及时和同学或老师沟通,通过合作解决问题。在沟通中,由于学生不是专业的编程人员,常常无法准确表达出自己的设计思路和疑问,被求助者则需要从设计者的表达中努力找寻设计的原理和逻辑,借以分析判断出问题所在。流程图采用标准化的框线来制图,被求助者通过它就能清楚地了解设计者的思路和程序运行的逻辑,极大地提高了合作学习的效率。
五、结语
流程图绘制简单,可以清晰地描述完整的流程框架和思维过程,帮助学生厘清思路,触发创作灵感。“看图说话”的教学方式符合小学生的认知特点。学生通过绘图、读图、议图相结合的方式学习编程能更好地理解和掌握算法,发现和处理系统运行中的错误和瑕疵。《义务教育信息科技课程标准(2022年版)》中四次提到流程图,可见,充分肯定了其在思维提升和教育引导中的作用。
参考文献
[1]魏晓风,蒋家傅,钟红,等.我国中小学编程教育发展的路径思考[J].中国教育信息化,2018(24):1-4,9.