打造轻负高效优质课堂提升学生编程算法能力

(整期优先)网络出版时间:2021-08-10
/ 2

打造轻负高效优质课堂提升学生编程算法能力

严国平

桐乡市实验小学教育集团城北小学 浙江省桐乡市 314500

【摘要】算法是解决问题的方法和步骤,是计算机编程的核心要素,过去传统的教学方式往往仅仅停留在简单的理论层面,学生无法付诸实施,有效迁移应用。本文依托新课程《循环嵌套》的教学,让学生通过学习原理流程图、依托原理自主探究笔画指令的使用、最后通过循环和嵌套循环画图形的方式,让学生深入了解算法的内涵。通过由浅入深的方式层层递减,步步深入,通过培养学生自我探究的能力,引导学生掌握算法核心内容,达到在理解算法本质的基础上能够学以致用切实解决一些生活中的实际问题,切实提升学生的信息技术核心素养。

【关键词】算法 Scratch 计算思维

在编程教学中,很多时候教师采用传统的教学方式进行授课,教师讲得津津有味,学生听得却是云里雾里,有时候学生感觉似懂非懂,但是一到实际运用时刻却总是六神无主。究其原因,主要是学生在学习编程的时候没有领悟到核心“算法”的真谛,而是仅仅学到了记忆的层次,只习得了低阶的编程能力,为了让学生获得进一步的发展,一线的教师有必要对课堂教学进行探索与改革。

提升算法能力的方式有很多,Scrath这款软件是美国麻省理工大学开发的适用于儿童的编程教学软件,它通过积木搭建式让学生习得编程方面的知识与技能,非常适合小学生学习,笔者借助这一款软件进行教学,不仅仅是为了让学生简单记忆所学的知识,更是通过学以致用的方式让学生提升算法能力这一核心素养,从而促进学生计算思维的深入发展,让学生成为知识的主人。

在《嵌套循环》这一课的教学过程中,笔者采用实例类比、自主探究、小组合作等方式让学生切实提升算法能力,牢牢把握本课的概念、原理、教学重难点,引导学生提升编程算法能力。接下来将以《嵌套循环》这一课为实例开展说明。

一、理解工作原理,培养算法意识

算法本质上来说是解决问题的方法和步骤,只有理解了编程的算法,培养了科学的算法意识,才能学以致用,编写出能完成我们所希望任务的脚本,为了培养起正确的算法意识,具体的课堂操作如下:

(一)生活实例类比,理解程序原理

一个学生上台,朝向向东,面对黑板,然后教师发出指令,让学生往前走,这位学生走到障碍物的时候会自动绕开或者停下来,这个时候,教师提出让学生想一想如果是机器人,它会怎么操作,会不会也跟我们人一样自动停下来或者是绕道呢?

机器人会忠实地执行我们的命令,但是如果我们没有赋予它停下来或者是绕道的指令,它就会很忠实地保持原来的状态直行。通过这样的类比,让学生形象地理解了机器人的工作原理。

(二)流程图构建,强化算法思维

如果我们想让Scratch中的角色画画,那么编程的时候我们的算法是怎么样的呢?我们实际在画画的时候会想当然地认为直接画我们需要的内容就可以了,但是对于电脑而言,没有这么简单,我们可以用流程图的形式清晰地呈现出来。

通过构建流程图可以清晰地呈现程序算法,让学生一目了然地知道要想让Scratch的角色画画,落笔、抬笔这个操作是必不可少的,其实我们自己在画画的时候也是有这个操作的,只不过我们会习惯性地认为这是一项理所当然的操作。

(三)分组自主探究画笔指令,增强算法意识

有了Scratch角色画画的流程图之后,我们应该怎样去落实编程,从而让脚本执行我们所期望的命令呢?这个内容的新授如果教师简单地进行讲解学生可能没有太深刻的印象,也达不到启发学生算法思维的作用。结合实际学情,笔者采用了小组探究合作的方式进行学习,提升学生的自主学习能力,并让学生自己发现问题然后解决问题,这样的方式可以更好地“授人以渔”。这个过程中学生会产生各种各样的问题,画笔的大小设置、位置的初始化、画笔大小颜色增加概念的混淆等等,这些看似简单的问题,在具体编写操作的时候会以各种错误的方式呈现,而通过下述的过程可以有效提升学生的算法能力。

二、巧用循环结构,实践编程算法

(一)撰写完整程序脚本,总结归纳

学生在习得了使用Scratch画图的技能之后,在课堂上笔者将尝试让学生画一画正多边形,让学生把完整的程序写出来,这个程序对于学生来说不是很难,当有不少学生完成之后,教师展示成功的程序代码,让学生总结归纳一下这样的程序代码有什么特点?学生通过观察自己或者其他人的程序,会自然而然地发现程序有很多重复的地方。

笔者向学生询问这些代码有什么样的特点?有没有更好的解决方案呢?通过问题谈话的方式,让学生主动去思考已经编写好的代码的特征,为后续循环命令的新授学习做好铺垫。

(二)程序脚本优化,实践高阶算法

前面程序能够达成我们的要求,但是好的程序不仅仅能完成任务,还应该高效简洁,那么我们现在的程序如何去优化呢?这里有一个比较高级的命令“重复执行”,我们可以尝试使用这个命令来简化我们的程序。

对于重复执行这个指令,通过课堂提问,学生有了多种不同的猜测,有些学生认为是执行1次,有些学生认为是0次,还有些学生认为是无穷次,对于这样的学情呈现,笔者不直接告知学生答案,让学生通过具体的程序去尝试,很好地激发了学生的学习积极性,也让学生对于这类新知有了更深刻的认识。

三、拓展循环,引入嵌套,提升编程算法

(一)引用具体实例,类比循环嵌套

学生在掌握了循环指令之后,需要继续拓展习得嵌套指令,进一步提升算法能力,但是对于“嵌套”这一新的概念学生理解起来有一定的困难,这个时候寻找生活的具体实例进行类比是一个非常不错的方法。为了让学生更容易理解,笔者采用一些生活实例让学生更好地理解。首先笔者预设了工程师在海面上给3个岛屿修路的情境,让学生使用前面所学的知识,使用循环命令修路,这个任务对于学生来说没有太大的难度,学生基本上都能够实现,接着笔者出示一个难度更大的修路任务,但是我们可以让学生通过穷举法全部写出来,这样就可以完成这个任务。重复执行三角形这条线路的代码会出现三次。

(二)编写嵌套程序,提升编程算法技能

在完成了任务之后,让学生讨论我们所用的程序是否有冗余的地方,学生就会发现重复执行三角形线路这段代码重复出现了3次,也就是说可以把这些代码再通过重复的指令简化

重复里面再包含一段重复指令就是嵌套循环,这个概念对于学生来说有些生涩难懂,但是通过具体故事情境的构建,让学生一步一步去编写铺路的程序,习得这个知识技能最后就是一个水到渠成的事了。

四、结语

循环嵌套还可以拓展延伸很多的编程知识,绘制更加复杂精妙的图形。在本课的教学过程中,作者采用任务驱动教学法引导学生通过完成一个又一个的任务,让学生在不知不觉中习得了新的知识提升了编程算法能力,学生小组之间的自主探究合作、算法的解读、应用、拓展一环紧扣一环,从而实现了依托Scratch编程提升了算法能力。


参考文献:

[1]或述,佟燕文.观念的转变:从算法到思维[J].中小学信息技术教育,2018(07/08)

[2]李克东,李颖.STEM教育与跨学

[3〕于旭珩.关于新课程背景下信息技术教师适应性的思考[J].中国信息技术教育,2019(5)

2