APP下载

计算思维之抽象与分解

2015-09-10王鸣九

中国信息技术教育 2015年23期
关键词:爪子按钮算法

王鸣九

2006年,周以真教授系统地提出了计算思维的定义、概念和特征。从2010年5月起,计算思维开始融入大学计算机基础课程,以培养高素质的研究型人才。而在中学信息科技课程中,各地教师也已开展了诸多实践,除了融入原有的计算机编程课程外,广州、深圳、重庆的很多教师以Scratch、Kodu等为载体,将计算思维的培养融入其中,以此来体现学科价值。笔者所在学校近年来也一直在开展计算思维融入初中信息技术课的实践研究,本案例所描述的是利用Scratch载体,结合传感器,针对计算思维的抽象、分解、算法和纠错等核心概念开展教学实践。

案例描述

这是七年级Scratch课程中的一个案例,学生将通过三课时的学习,利用Scratch及其外设传感器,通过程序设计来模拟现实生活中的抓娃娃机。在第一课时,学生们已经接触了Scratch传感器,并学习了如何将滑杆应用到Scratch作品中。本文重点探讨第二课时中关于计算思维的落实,主要体现在以下几个教学环节。

1.抽象

首先,笔者请学生描述生活中抓娃娃机的游戏过程,学生一般会给出如下描述:通过摇动手柄来控制爪子前后左右移动,然后对准要抓的娃娃后,按下按钮爪子就会下降,当下降到一定高度后,爪子就会合上,无论是否抓到娃娃,爪子都会回到出口处的上方。接着,结合PPT,如图1所示,笔者依次抛出这样四个问题,请学生思考:第一,爪子是由什么控制的?第二,手柄可以让爪子在什么方向上移动?第三,如何让爪子下降?第四,爪子何时会上升?

学生们稍作思考便能回答,且答案也近乎统一,即爪子是由手柄控制的,手柄可以前后左右移动,当按下按钮时爪子会下降,当下降到一定高度时爪子会上升。

笔者抛出这四个问题目的在于引导学生通过观察、思考,将现实生活中的对象,与计算机中处理的对象进行一一对应。如图2所示,手柄和按钮对应Scratch传感器上的滑杆和按钮;爪子和娃娃对应Scratch中的角色。

此环节就体现了计算思维中的“抽象”概念——将现实生活中的对象转为计算机可以处理的对象,将一个现实问题转变为计算机可以处理的问题。而采用的教学策略是层层提问,促进学生思考,引导学生去描述现象和问题。

2.分解

计算思维中分解的概念是将一个复杂的大问题分解为若干个易于解决和实现的小问题。

在这个案例中,爪子的行为最复杂,直接让学生去编程实现是很困难的。为了帮助学生理清思路,如图3所示,笔者将爪子的行为分解为五个步骤:左右移动、下降、合上、回到原位、松开。当学生拿到学习单后,就要去思考:在什么情况下,爪子左右移动;在什么情况下,爪子会下降;又是在什么情况下,爪子会合上……

学生通过思考和课堂交流,了解到爪子的一系列行为都是有触发条件的,而他们的脑中对这些条件的认识也变得清晰了:当调节滑杆时,爪子可以左右移动;当按下按钮时,爪子会开始下降;当下降到一定高度时,爪子会合上;当爪子合上后,开始上升并回到原位;当回到原位后,爪子开始松开。

在引导学生对案例进行分解时,笔者采用的教学策略是提供学习支架,以“当……时候,爪子做……”的形式设计表格,启发学生思考,进行课堂交流,引导学生发现每一个行为都是有对应的触发条件的,同时也为进一步提炼算法打下基础。

3.算法

计算思维中另一个重要的概念就是算法,算法是有穷规则的集合,是用规则制定了某一特定类型问题的运算序列,或者是任务执行与问题求解的一系列步骤。而算法又有很多种描述方式,在经过抽象和分解后,学生们已经可以用自然语言去描述这个案例。但仅凭借自然语言,学生在Scratch中进行程序设计是很困难的,因为分支和循环是很难用自然语言描述清楚的,因此,借助流程图描述算法就是笔者采取的教学策略。

以爪子的左右移动和下降这两个行为为例,在自然语言描述的基础上,笔者给出流程图如图4所示,虚线框中的条件判断和循环结构,对应到Scratch中,就是“重复执行直到传感器按下按钮”。在按下按钮之前,都是由滑杆来控制爪子的移动,而左右移动,在计算机中对应的就是爪子的x坐标发生变化,因此,可以通过设定爪子的x坐标来实现水平移动。

因为学生程序设计经验不足,所以给出流程图以及Scratch中对应的脚本,这样能够帮助学生更有效、更规范地描述算法,引导学生在Scratch中找到对应代码块,进行脚本编写。同样,判断爪子何时合上以及判断是否碰到娃娃,笔者给出如图5所示的流程图。

与爪子左右移动同理,所谓爪子下降,就是将爪子的y坐标减小,这是一个重复执行的过程,结束的条件是下降到一定高度,用y坐标小于某一个数值来实现。而当爪子合上后,需要进行一次判断,如果碰到了娃娃,那么就进行广播,以便“告知”娃娃在接收到这个广播后可以执行的后续行为,如跟随爪子。

4.纠错

其实,当学生在Scratch中编写脚本进行程序设计时,纠错是始终伴随其中的。当学生运行程序,发现与预期不同的情况发生时,纠错的行为就开始了,他们会去寻找到底哪里出现了问题,纠错是通过测试和调试去实现的,纠错同样是计算思维的概念之一。

在这个环节中,笔者采用的教学策略有两种,一是提供传感器使用微视频,二是指导学生学会添加注释。有的学生对传感器上的滑杆和按钮如何应用还不清楚,那么,就可以在Moodle平台上下载微视频教学资源并反复观看,从而解决Scratch中传感器的使用问题。

部分学生有些功能是实现了,但是在运行观察中发现存在问题,而想要寻找问题出在哪里的时候,却因为代码块数量的增加很难快速查找定位。对此,应指导学生学会为代码块添加注释功能,根据代码所实现的功能添加注释(如图6),这样便于排错过程中快速定位,寻找问题所在。

案例反思

1.本案例的优点及不足

本案例最显著的优点就在于抽象和分解这两个环节,笔者通过问题设计、层层提问、提示引导,帮助学生把一个现实生活中的问题转变为可以用计算机处理的问题,并且将复杂的大问题分解为多个简单的小问题,让学生在解决问题中培养计算思维。

笔者之所以选择“抓娃娃机”,也是出于对学生最近发展区的考虑,这个例子是学生生活中熟悉并且能够很好理解的,所以在引导学生对案例进行抽象和分解时,学生有很高的参与度。

这节课的不足之处在于,笔者仅考虑了案例本身的难点,却忽视了学生接触Scratch只有半个学期,编程经验不足这样一个事实,因此,没能充分预设,在编程环节没有给予学生更多帮助。任务是明确的,学生也清楚最终成品应该是怎样的,但在对作品进行反复运行和纠错时就显得很费力,没有能够获得及时的辅导。

2.从计算思维角度进行教学设计的一般方法

类似的案例也有不少,如利用传感器的滑杆制作平板接球游戏,利用传感器的光感信号控制发射子弹制作射击游戏等。

虽然案例的内容和实现作品的技术手段各不相同,但可以得出此类教学设计的一般方法,即选择案例→抽象建模→分解问题→形成算法→纠错调试。

第一步,案例的选择要贴近学生认知,对案例的熟悉程度和理解程度是对问题抽象和分解的基础。

第二步,帮助学生将现实生活中的对象转换为计算机可以处理的对象,将一个现实问题转变为一个计算机可以处理的问题,也就是抽象的过程。

第三步,分解问题,引导学生将一个大而复杂的问题分解为若干个更易实现和解决的小问题。

第四步,在分解的基础上,针对每个小问题,形成解决问题的算法。

第五步,运行程序进行观察和测试,对出现的异常现象进行纠错,而纠错的过程会反复进行。

相信各地对计算思维开展研究的教师们,在思考和实践计算思维与信息科技课程融合中也会有很多案例,笔者由衷地希望可以相互学习和交流。

猜你喜欢

爪子按钮算法
Travellng thg World Full—time for Rree
奇怪的“爪子脸”
死循环
带爪子的鞋子
学习算法的“三种境界”
算法框图的补全
算法初步知识盘点
你想要爪子吗
爪子
内心不能碰的按钮