APP下载

程序设计模块化,计算思维深度化

2022-04-23万诗强

中国信息技术教育 2022年8期
关键词:脚本程序设计积木

万诗强

如何在小学阶段培养学生的计算思维,一直是信息技术教研活动中的热门话题。编程教育也一直是培养学生计算思维的极佳方式。因此,小学阶段的编程学习不应仅让学生掌握编程技能,更应聚焦于培养学生的计算思维。这就要求教师在实际教学中围绕计算思维的抽象、分解、建模、评估等内涵要素来设计教学,启迪学生,从而让计算思维的培养落到实处。笔者在一线教学中发现模块化程序设计思想对培养学生计算思维的抽象、分解等内涵能力至关重要。下面,笔者以苏科版小学五年级图形化编程课为例,阐述如何在教学中渗透模块化程序设计思想,深化学生的计算思维。

● 自顶向下,模块化分解问题

制作游戏是小学阶段图形化编程的一种经典应用,也是学生非常感兴趣的编程创作形式。一个游戏的制作往往需要实现很多复杂的功能,在实际教学中,如果在学生体验完一个游戏后就要求他们制作,学生往往难以下手。究其原因,主要是学生面对复杂问题时,缺少自顶向下分解问题的能力,而这种能力正是计算思维内涵中“分解”的体现。学生的困境主要表现在两个方面:一是编程前难以分清各子功能,理清各子功能之间的关系;二是编程时难以将子功能的自然语言表述“翻译”成具体的编程脚本。针对第一个困境,教师可以借助模块化程序设计思想来引导学生,将复杂问题分解为子问题;对于第二个困境,教师需要将子问题表述的“粒度”细分,分解到便于学生构建底层逻辑的程度,即帮助学生构建自然语言与编程指令之间的对应关系,然后再让学生结合认知水平尝试构建子模块,解决子问题。

例如,在讲授《吃豆子游戏》一课时,游戏中需要实现豆子从舞台上方随机掉落的功能,这样的功能描述是比较笼统的。笔者首先引导学生将复杂的功能尝试分解为两大子功能,即①在舞台上方随机出现,②不停地下降;其次根据子功能的描述引导学生构建具体的子模块脚本,利用移动坐标、随机数控件实现第一个子功能;最后利用减小Y坐标、重复执行控件实现豆子下降(如图1)。这样自顶向下的引导,能让学生体会到模块化分解任务的优势,体验模块化分解复杂问题、模块化实现子功能的过程,这是对学生计算思维中“分解”内涵的一种培养。

● 重读脚本,模块化理解程序

课堂中,在学生完成某一部分任务的脚本编写后,教师可以在适当的时机引导学生重读脚本,在重读过程中要经常提问学生对某一段程序的理解,如这个脚本片段实现了什么功能?谁能用自己的话概括一下这段脚本的作用?这样的引导有助于学生从模块化视角重读脚本、理解程序,长此以往,學生眼中看到的就不再是一个个具体底层指令搭建成的脚本,而是基于模块的脚本,每一个模块就对应了之前分析的子功能,这也让学生对程序脚本有了更加抽象化的认识。

例如,在讲授《花朵缤纷》一课时,笔者发现很多学生缺乏对程序脚本模块化的认识。如图2所示,脚本1是利用图章、旋转以及重复5次完成的一朵五瓣花瓣的绘制,脚本2是升级功能时部分学生的错误脚本,笔者原本希望利用随机数和移动坐标指令完成在舞台上随机开花的功能,但不少学生会把移动随机位置指令放到重复5次里,这样就破坏了原本的“开花”功能——整个花散开了。究其原因,是学生对重复5次的理解不够模块化、抽象化。随后笔者调整教学设计,增加了引导学生重读“重复5次”这段脚本的环节,让学生用自己的语言概括这段重复5次的功能——印出一朵花。学生在这个过程中就有了对程序脚本模块化的认识,在后续的功能升级中,就很少有“花开散”的现象出现了。

● 交流展评,模块化评估功能

笔者提倡“自顶向下的问题模块化”“重读脚本的程序模块化”是帮助学生构建程序设计模块化思想的两大引导策略,但并不意味着有了这两种引导,学生便不再犯错。在实际的教学中,如果学生编写的程序还是存在模块关系混淆等问题,就需要教师组织学生进行及时交流展评,逐一评估子功能。由于每一个子模块都是实现某个子功能的,所以在评估功能时,要提供给学生模块化思想。学生若能以模块化的视角去审视脚本与子功能之间的关系,便能又一次加深对功能与脚本之间对应关系的认识,并养成“逐段”调试程序的习惯,也就进一步深化了计算思维。

例如,在《小猫出题》一课中,程序的功能比较清晰,经过适当的引导学生是能够将“小猫出题”分解为“出题”“询问”“判断正误”三个子功能的。如图3脚本1所示,三段脚本是三个子功能的具体实现。但在实际教学中,笔者发现不少学生对三段脚本之间的逻辑关系的理解有些混乱,图3脚本2是一位学生的典型错误脚本,该学生将“询问”的指令放到了“出题”模块中。这时,如果教师还是一味地从程序脚本视角讲解逻辑关系,则很容易让学生的理解更不清晰。既然如此,何不让学生展示作品、相互评估功能呢?在展示过程中,学生会发现每次答题输入正确答案后程序输出却显示错误,笔者引导学生以模块化的视角去审视脚本,依次评估功能,学生很快发现了加数2每次在用户提交后会改变,进而发现脚本模块之间的混乱问题。这时,笔者告诉学生,编程过程中出现问题很正常,关键是要学会将脚本与子功能对应起来,依次去评估功能是否正常。这样,学生计算思维中的“评估”能力就得到了进一步的发展。

● 课例统整,模块化重构作品

程序的模块化不但能让脚本便于阅读、理解,还有利于脚本代码的复用。这取决于学生对脚本抽象化理解的程度。学习程序设计是一个循序渐进的过程,在学习之初,学生能初步以模块化视角理解程序便是打好了基础;随着学习的深入,在学生掌握“定义新积木”这一技能后,笔者认为有必要对学过的复杂脚本进行回顾、重构,这既有助于学生深化模块化程序设计思想,也有助于学生今后在遇到相似问题时进行计算思维的建模。

例如,《画城堡》一课的重点是学习新建积木块和使用积木块的作用,难点是理解积木块的作用并在程序设计中灵活使用积木块。在图形化编程中定义积木块是实现模块化程序设计的一种有效方法,要想用好积木块还得先理解模块化的程序设计思想。笔者在讲授完《画城堡》一课后,安排了一节课例统整的练习课,首先带领学生回顾《画多边形》一课中的拓展练习,如图4脚本1所示,让学生观察图形中有没有重复出现的基本图形、是否可以用新建积木块来简化原来的脚本。经过一番点拨后,大部分学生可以完成新建“画正方形”积木块来简化脚本,实现积木块的复用,如图4脚本2所示。在这样的脚本重构中,学生能够进一步体会到“积木块”在模块化程序设计中的作用。在此基础上,笔者还设计了几组类似的“风车型”图案,如图4拓展图形所示,大部分学生遇到相似问题很快识别出了基础图形,并着手创建基础图形的积木块,在原有脚本基础上稍作修改便完成了图形的绘制。可见,这类问题在学生脑海中建立了模型,学生的计算思维也得到了进一步的深化。

● 结束语

随着技术的不断发展,编程语言、编程平台会不断更新,但思维层面的训练是一脉相承的。模块化程序设计思想是一种分而治之的解决问题之道,这种设计思想与计算思维的内涵能力培养有很密切的关联性。而渗透模块化程序设计思想的编程教学是从抽象到具体再到抽象的过程,具体讲是从“问题的抽象认知”到“模块的具体分解”再到“脚本的抽象理解”的过程。因此,在小学图形化编程教学中渗透模块化程序设计思想,有利于计算思维的培养在小学阶段落地,使学生的计算思维走向深度化。

参考文献:

[1]陈勇.打开技术“黑箱”,让思维走向深刻——以“走进图像识别”一课为例[J].中国信息技术教育,2021(09):48-50.

[2]谢忠新,曹杨璐.中小学信息技术学科学生计算思维培养的策略与方法[J].中国电化教育,2015(11):116-120.

[3]黄雨蓓.基于模块化程序设计思想的Scratch教学实践——以《花朵缤纷》一课为例[J].中国信息技术教育,2020(08):41-43.

猜你喜欢

脚本程序设计积木
基于OBE的Java程序设计个性化教学研究
项目化教学在Python程序设计课程中的应用
C++程序设计课程教学改革研究
堆积木
医学专业“Python程序设计”课程教学改革总结与思考
自动推送与网站匹配的脚本
有趣的积木
玩积木
举一反三新编
捕风捉影新编