行为模拟:发展低年级算法学习新思维
2024-07-25姚晓燕
在信息科技课程教学中,最被大家关注的内容之一是“算法”及算法如何认知、验证及设计。本期解码,我们一起从一线的视角探讨低年级学生如何开展算法教学,解读用生活中的行为模拟来提高学生算法认知的策略与意义。
摘要:本文介绍了通过行为模拟发展低年级学生算法学习新思维的方法。该方法将编程概念与日常生活场景结合,通过角色扮演、故事剧场和互动游戏等活动形式具象化编程思维,通过行为触发和问题建构,帮助学生形成从具体行为到抽象思维的过渡,以更好地理解和应用编程概念与结构,培养算法学习新思维。
关键词:行为;算法;思维
中图分类号:G434 文献标识码:A 论文编号:1674-2117(2024)13-0020-04
编程,作为一种与计算机沟通的艺术,要求将解决问题的方法与步骤由自然语言精准地转换为程序语句,然而对低年级的学生来说,理解这种转换具有一定难度。他们往往能听懂编程的概念,可一旦面对实际问题,却感到无从下手,这是因为他们的抽象思维能力和问题解决能力还在发展阶段,对复杂的编程逻辑和抽象的编程概念还不能完全理解和掌握。因此,笔者在低年级的算法教学中利用“行为模拟”对学生进行思维训练,将编程概念与学生熟悉的日常生活场景相结合,通过角色扮演、故事剧场和互动游戏等活动形式,降低学习门槛,帮助学生完成从具体行为到抽象思维的过渡。通过每节编程课上的“行为模拟”促进“思维活动”,不仅有助于学生更好地理解和掌握编程知识,还能够提高他们的编程兴趣和自信心。
利用行为触发问题建模,发展高阶抽象思维
在编程的世界里,算法不仅是解决现实问题的关键,更是对现实问题的高度抽象化和建模化的展现。问题建模是一种将现实世界的问题转换为可以通过计算或算法来解决的模型的过程。算法教学的目标是引导学生学习如何将一个复杂的现实问题抽象化,识别出问题的关键因素,并将这些因素表达为计算模型,这样的教学有助于培养学生独立运用已有知识的能力,以及在面对新问题时创造性地思考和解决问题的高阶抽象思维。对于低年级的学生而言,理解这些无形的编程概念与程序结构,往往是一个巨大的认知挑战。然而,通过行为模拟的方式可以将编程概念以更为直观、生动的方式展现给学生,为他们搭建一座从“具体行为”到“抽象思维”的桥梁,使其通过实践操作和亲身体验,逐步掌握编程的精髓。
1.行为对问题建模的增益
在学习过程中,教师可以通过设计具体的行为模拟任务,为学生提供从实践操作逐步过渡到抽象理论思维的实践平台,通过这些任务,学生可以从具体的行为操作入手,通过亲身实践逐步感知、分析和总结其中的规律,进而转向更为抽象的理论思维。学生在解决问题的过程中需要创建问题的抽象表示,这种表示可以是视觉的图形、言语化的描述,也可以是通过肢体动作来模拟的行为过程,即问题建模。它可以帮助学生理解程序是如何反映和模拟现实世界中的事物和过程的,使学生能够更好地把握编程概念并运用它们解决问题。同时,学生可以更直观地感受到抽象思维在解决实际问题中的重要作用,有助于对算法语言的理解。
2.行为驱动问题建模设计范例
范例1:在讲解计数循环中的累加器时,学生第一次接触for循环和s=s+1语句,很难理解,于是,笔者设计了如下的故事剧。
①课堂设情境。利用微机室的排布优势,笔者站在一排电脑桌旁,拍着第一张电脑桌,说“这是1号山洞”,并放下一朵花,继续往前走,当说“这是2号山洞”时,也放下一朵花,就这样,一直走到6号山洞,学生的注意力逐渐被吸引。这时笔者突然转身,对学生说“我是一只小兔子”,这句话立刻引起学生的极大兴趣,他们好奇地盯着我,想要知道接下来会发生什么。
②采花寓累加。笔者说:“我拿着花篮来采花,大家看,我的花篮是空的。”笔者走到1号山洞,拿起花放到花篮里,问学生:“我的花篮里有几朵花?”学生回答:“一朵。”笔者往前迈一步,又拿起2号山洞的花,问“这样,我的花篮里有几朵花?”“两朵。”“对,在一朵基础上加一,共两朵花……”
就这样,笔者一直走到6号山洞,问“我走到6号山洞,采了一朵花,这样,我的花篮里一共有几朵花?”“5+1=6,6朵花。”“那我再往前迈一步,还有花让我采吗?”“没有了,因为只有6个山洞。”“好的,我的采花行动圆满结束!”
③绘图理算法。就这样,学生跟随笔者的演绎,模拟走完了for(i=1;i<=6;i++)s=s+1的全过程。笔者又走回讲台,回顾整个算法的模拟过程。
④行为转代码。笔者让学生扮演小兔子模拟整个过程,有了板书与活动参与,学生对计数循环for语句和s=s+1累加器有了初步的理解。笔者又提出一个问题:“如果1号山洞1朵花,2号山洞2朵花,3号山洞3朵花……我们该如何用语句来表达呢?”笔者请学生模拟采花过程,学生发现山洞里花的数量与山洞编号之间的关系,很容易总结出s=s+i的语句。
通过上述问题建模方法,学生以有趣的方式参与到编程学习中,将编程概念与实际情境相结合,不仅理解了复杂编程概念,而且深化了对循环语句如何控制程序流程的认知,当学生能够通过自己的努力,将一个复杂的现实问题转化为一个简单的编程问题时,会非常有成就感。这种成就感会激发他们的学习动力,使他们更加积极地投入到编程学习中,从而形成一个正向的学习循环。同时,通过问题建模,学生需要将实际问题中的关键信息和逻辑关系提取出来,形成简洁明了的抽象模型,通过不断地练习和反思,学生逐渐掌握了如何有效地进行抽象概括,提高了对问题本质的理解和把握能力,并将具体的解决方案进行提炼和升华,形成一般性的规律和方法,实现了高级抽象思维的养成。
利用行为激发问题建构,发展深度逻辑思维
问题建构是基于问题模型提出并实施解决方案的过程,它涵盖了从问题识别到解决方案实施的完整环节。在算法学习中,不仅要求学生能够创建有效的程序来解决问题,还需要他们能评估这些方案的实际效果,并做出必要的优化调整。因此,教师应当引导学生深入分析问题的各个层面,理解其中各组成部分之间的复杂关系,并将问题分解为更小、更易处理的子问题,从而完成问题建构。在这一过程中,行为模拟的应用可以帮助学生更直观地观察算法是如何处理这些子问题的,并理解其背后的逻辑原理。在实际问题解决的过程中,学生需要综合运用所学的逻辑知识,不断尝试和调整算法,以寻求最佳解决方案。这个过程不仅锻炼了学生的算法应用能力,还促进了他们深度逻辑思维的发展。通过不断地分析和优化算法,学生将逐渐具备深入剖析问题本质、识别隐藏条件和潜在约束的能力,从而设计出更完善的算法解决方案。
1.行为辅助,实现思维具象化
将编程逻辑与日常生活中的具体动作相结合,使得学生能够更直观地感受到编程逻辑的运作过程,从而更容易掌握编程的核心要义,同时,也能激发学生的好奇心,引导他们在学习的过程中主动探索、主动思考。
2.行为导向,引领问题有效建构
范例2:针对复杂的双重循环概念,可以借助生活场景和动作帮助学生理解建构问题。
①运动体验双重循环。笔者请全体学生起立并听从指令,一起完成四组运动,每组动作包括点头、拍手、拍肩三个动作。当学生们开心地做完四组动作后,笔者开始分析活动流程,并板书:做第一组运动,要做点头、拍手、拍肩这三个动作,做第二组运动,也要重复这三个动作,第三组、第四组同样也要重复这三个动作,这就是双重循环。
②角色扮演深化理解。笔者接着让学生举例,一个学生当导演,其他五个学生搬好板凳坐到讲台上。当导演的学生让第一个同学过来,给他一块糖,让他回去,再让第二个同学过来,给他一块糖,让他回去,又让他过来,又给他一块糖,又让他回去,接着让第三个同学过来,每次给他一块糖,让他回去,这组动作重复了三次,让第四个同学过来,这组动作重复了四次,第五个同学也重复了这个动作五次……然后,当导演的学生开始提问:“我每次重复的动作是什么?”“过来,给糖,回去。”(其他学生说)“对,这就是循环体,s=s+1,第一个同学重复这组动作一次,第二个同学重复这组动作两次,第三个……”学生们开始齐声复述刚才的活动场景。
学生举的例子更具可操作性,让他们更加深刻地理解了双重循环的概念,并在他们心中建立起一个关于如何识别和实现双重循环的明确模型。这种互动和实践,不仅让抽象的理论知识变得生动有趣,还极大地提升了学生的学习兴趣和参与度。程序结构不再是计算机编程中的一个理论概念,它已经深深根植于学生的日常行为和逻辑思维。
3.行为助力,搭建问题与思维框架
为了帮助学生更好地进行问题建构,教师可以设计一些具有层次性和挑战性的任务,这些任务可以包括一些实际问题或者有趣的编程挑战,旨在让学生在实际操作中不断尝试、调整和完善自己的解决方案,从而有效锻炼自己的逻辑思维和问题解决能力。同时,教师提供及时的反馈和指导,帮助学生发现并纠正自己的思维误区和错误,这不仅可以让学生在错误中学习,还能帮助他们建立正确的编程思维框架。通过不断地试错与反思,学生可以逐渐掌握问题解构和思维构建的技巧。
经历问题建构的过程,学生不仅能够理解问题的表面,更能深入挖掘问题的本质和内在联系。他们需要思考问题的核心需求,并设计合适的算法和程序来实现这些需求,这一过程充分锻炼了学生的逻辑推理和归纳思维能力,有助于他们在面对复杂问题时能够迅速找到突破口并制订出切实可行的解决方案。通过问题建构的系统训练,学生可以逐渐形成自己的编程思维体系,形成独立分析、解决问题的能力,更有效地推动深度思维能力的提升。
利用行为实践驱动问题探索,系统发展创新思维
编程思维的培养不局限于对程序编写技能的训练,它更是一种综合性的技能,涵盖了逻辑推理、问题分析与解决能力等多个方面,当学生对程序设计有基础认知后,教师可以进一步通过问题实践来引导学生,以实现其创新思维的系统养成。
1.行为实践中的问题设计
问题实践是将算法知识应用于解决实际问题的过程,教师可以设计一些具有挑战性和创新性的问题实践任务,让学生综合运用所学的算法知识来解决实际问题,这些问题可以来自日常生活、科学实验、社会热点等,具有一定的现实意义和应用价值。在解决实际问题的过程中,学生需要迅速定位问题的关键点,并找到合适的解决方案,这不仅能够锻炼逻辑思维能力,还能够提高问题分析和解决能力。同时,通过不断尝试和迭代,学生还可以发掘新的算法和策略,培养系统创新思维的能力。
2.行为实践中的学习设计
以排列组合为例,这部分内容对低年级的学生来说更是思维的极限挑战,特别是组合公式的理解更是难上加难。为了帮助学生更好地理解这一概念,笔者设计了以下学习活动:
上课伊始,笔者对第一排的5个男生说:“老师需要3个同学帮我去总务处领这学期微机室的灭火器,我应该如何选人呢?因为小圣是班长,所以,我一定要让他带头,那么就是从剩下的4个同学中选2人就可以了。但如果我一定不让小圣去,那就是从剩下的4个同学中选3位。”笔者回到讲台,利用板书和学生一起梳理这段陈述,如果一定让小圣去,那就是,如果一定不让小圣去,就是,那么,从5个同学里选3人去拿灭火器的方案数就是,也就是,这是组合的一个公式,也是编程中处理问题的一种方法。
3.利用行为引导学生发展系统创新思维
通过理论与实践的结合,不仅能够增强学生解决实际问题的能力,还能帮助他们深刻理解编程思维和算法设计的核心概念。学生在面对复杂问题时需要从整体到局部,从抽象到具体,进行全面思考和规划。他们需要考虑到问题的各个方面和可能的影响因素,从而设计出全面而有效的解决方案。这种系统性的思考方式,有助于学生在面对未知领域和复杂问题时,能够迅速找到切入点,提出创新的想法和解决方案。此外,问题实践还能帮助学生深入理解编程思维和算法设计的核心概念。通过实际应用,学生可以更加直观地感受到算法的力量和编程的魅力,从而增强对编程学习的兴趣和动力。同时,他们还能在实践中不断调整和优化自己的设计方案,提高算法的效率和准确性。
总的来说,通过行为模拟进行低年级算法教学,不仅可以将编程思维具象化,让学生在轻松愉快的氛围中掌握编程的基本概念和方法,提高他们的学习兴趣和积极性,让他们充分享受编程带来的乐趣和挑战,而且可以在问题解决中培养学生的高阶抽象思维、深度逻辑思维、系统创新思维,帮助他们实现自我超越和发展。在行为模拟的引导下,学生能够主动思考、积极探索,将所学算法知识灵活应用于实际场景中,从具体到抽象,从简单到复杂,循序渐进地掌握编程知识,这不仅符合学生的认知发展规律,还有助于学生建立起完整的知识体系和思维框架,全面提升信息素养和能力,为他们未来的学习和生活奠定坚实的基础。
参考文献:
[1]董永建.信息学奥赛一本通:C++版[M].北京:科学技术文献出版社,2013.
[2]顾锋.基于数学建模问题的高阶抽象思维能力培养探析[J].数学之友,2023,37(15):2-4.
[3]秦娟.高级思维教学的核心指向[M].上海:华东师范大学出版社,2021.