李李
【摘要】本文通过S4A编程平台结合开源硬件制作智能红外温控风扇的实例来探索初中阶段程序设计教学的一种思路:重算法和结构,轻代码和语法,结合开源硬件将程序结构和算法融入学生的日常生活实例中,培养学生的算法思维,让学生真正体验程序设计的实用性和乐趣。
【关键词】程序设计;S4A 开源硬件;程序结构;算法
【背景】
程序设计是苏科版初中信息技术8年级第4章的教学内容。教材选取的是Visual Basic语言。主要教学内容目标是了解控制结构(选择结构、顺序结构、循环结构)和算法。VB作为一门面向对象的高级语言,虽然继承了Basic的简单易学特點,然而对于大部分初中学生来讲,学习VB依然有较大的难度。同时,教材中选取的教学实例和编程练习基本是数学问题,这就让学生(尤其是害怕数学的学生)学习时感叹程序设计就像在做数学题——抽象、枯燥。教师很难达到预期的教学效果。
义务教育初中阶段的程序设计教学并不是要将学生都培养成编程高手,《初中信息技术课程标准》指出:要让学生认识使用信息技术解决问题的意义,掌握运用信息技术解决问题的基本过程,能根据任务的需要提出解决问题的方案,并能逐步实现。由此可见,初中阶段的程序设计是要培养学生学习程序设计的兴趣,不以代码编写训练为要义,而以程序设计方法和算法思想的体验为旨归。强调从生活实际问题出发,让学生既能体验并熟悉信息技术环境的优势,又能通过设计算法和程序结构的实现,要在程序学习中培养学生利用编程解决问题的能力。
如何才能让学生对程序设计有兴趣,不畏惧?如何才能落实程序设计教学主旨?
由此,我想到了选修教材里的机器人和物联网模块。可不可以淘汰VB,选择基于可视化编程语言Scratch的S4A结合机器人和物联网传感器内容进行程序设计教学呢?
【实验设计】
基于开源硬件的智能红外温控风扇的程序设计教学。预备完成风扇模型组装,传感器与编程板链接的学件。课程的设计淡化传感器原理性知识和数字模拟接口的参数设置的讲解。从程序结构和算法出发,注重通过程序设计的理解解决实际问题。
教学情境:随着气温的升高,风扇又重新回归我们的生活。生活中的风扇总是需要人操作开关来设定它的工作状态。有没有方法,实现一个智能的风扇,当气温达到一定数值,有人在的时候才启动工作状态,并能随着气温的变化自动调整风速;当人离开时,自动进入关机状态,节约能源呢?
教学目标:通过实现智能红外温控风扇程序的编写和调试,理解程序的三种基本结构,即顺序结构、分支结构、循环结构,并能利用三种结构结合算法编写程序解决实际生活中的问题。
准备:硬件(风扇模型、温度传感器、红外传感器、开源Arduino编程板);软件(Scratch for Arduino)
教学设计基于开源硬件组合使用,从程序基本结构出发,采取任务驱动形式。
任务一:实现智能风扇温度控制功能
即风扇通过温度传感器判定外界气温是否满足风扇工作的条件。
学生拼接温度感应传感器、直流减速电机和开源Arduino编程板,使用传感器采集环境信息,在S4A(Scratch for Arduino)中编程,用分支(选择)结构语句设计完成智能风扇的温度感应功能;用循环结构实现风扇持续工作。
任务二:实现智能风扇温度红外控制功能
在任务一基础上调整硬件组合,添加红外传感器,用分支嵌套修改程序,完成智能风扇的红外控制功能。
任务三:实现智能风扇挡位自动调节。
用顺序结构实现档位,用分支嵌套结构在程序中完成随温度变化调节风速挡位功能。
每个任务环节,请小组展示作品,并交流程序设计心得。学生通过风扇的工作状态调试程序,直观体验实验现象,很好地理解了程序设计的三种基本结构。这在过去用VB教学是很不容易达到的。
【思考】
基于开源硬件的程序设计教学,主旨是让学生参与程序设计的学习。以程序设计为基础,以算法为核心。不强调代码编写训练,而以学生的程序设计方法和算法思想的体验为旨归。强调从生活实际问题出发,让学生既能体验并熟悉信息技术环境的优势,又能通过设计算法和程序结构的实现,以感悟理解算法和程序设计在解决生活问题中的地位和作用。
因此,初中阶段普及性的程序设计的教学,笔者认为可以从这几方面入手。
一、选择合适的程序设计平台
选择一款适合义务教育阶段一般学生心智的程序语言对于提高学生学习兴趣,顺利实施常态化程序设计教学尤为重要。选择S4A(Scratch for Arduino)作为编程平台,是因为S4A是使Arduino开源硬件平台能够简单编程的Scratch修改版。可以理解为能够连接硬件的Scratch。它的编程界面高度近似于Scratch。S4A(Scratch for Arduino)类似积木的指令操作简单、直观,让我们找到了程序设计教学的突破口。
1.基于Scratch的S4A是可视化编程
与VB等编程语言相比,S4A以“所见即所得”的编程思想为原则,力图实现程序与结果的同步显示。编写的程序执行的时候,直接反应在链接的硬件上,化抽象为具体,大大提高了学习者的学习兴趣。
2.基于Scratch的S4A指令模块化,容易上手
基于Scratch的S4A和Scratch一样有八大指令模块,并且具有不同的外形和颜色。初学者无须花费大量的时间去记忆枯燥的语法,只需将左侧所需指令块拖入右侧的脚本区,如果两个指令块可以合为一体,就说明语法正确,否则就代表两个指令块不能直接相连,学生只需将右侧多余的指令块拖到左侧指令块区即代表删除。这样的设计,可以让学生省去大量的程序调试时间,集中精力进行结构和算法的优化和完善。
3. S4A与外部传感器无缝连接,可以有效结合物联生活
Scratch for Arduino (S4A)是Scratch的修改版本,它提供了一系列新的传感器模块与输出模块,并通过它们连接Ardunio开发板,而且它可以连接多块开发板并显示出多个独立的开发窗口,让使用者可以轻松搭建与生活实际紧密联系的作品。
S4A作为一款提供传感器模块接口的图形化编程软件,以此为基础的程序设计教学既有利于降低学生的思维难度,又有利于学生的思维从具体形象逐步发展过渡到抽象阶段。从无形中消弭了学生学习的畏难情绪,为程序设计教学奠定了良好的软件环境。
学生结合硬件和图形化编程调试,有效地理解了程序的结构以及算法对于执行结果的效率。
二、重算法和结构,轻代码和语法
程序设计课程作为信息技术教学的一部分,不仅能提高学生的动手能力,也有助于学生思维能力的培养。过去教學一到程序设计部分,学生都倒吸一口冷气,觉得好高深,好困难,一堂课下来,兴趣完全缺失。在实际的教学中,学生对于VB的接受和认可度很低。教材中选取的教学实例和编程练习基本是数学问题,这就让学生(尤其是害怕数学的学生)学习时感叹程序设计就像在做数学题——抽象、枯燥。的确,VB这款成人化编程软件由于命令冗长、结构复杂、逻辑思维抽象等特点,并不太适合义务教育阶段一般的中小学生学习。
义务教育初中阶段信息技术课程的 “程序设计”章节的基本定位:以程序设计为基础,以算法为核心。不以代码编写训练为要义,而以程序设计方法和算法思想的体验为旨归。
因为计算机语言和开发平台日新月异,很可能现在学的编程语言等到学生将来深造或者工作时早已淘汰。但万变不离其宗的是算法和结构。义务教育阶段就是一个基础教学阶段,是打根基,修内功。
算法是程序设计的灵魂,程序设计教学首重算法。
算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。程序设计教学中算法的教学有助于学生计算思维的培养。
在程序设计教学中,让学生理解顺序结构、循环结构、选择结构三种基本结构。这三种结构将伴随程序设计,学生能在基于开源硬件的程序设计中灵活应用,深化理解。
三、程序设计实例趣味化、生活化
新课程倡导学生要自主、合作、探究学习。学习的动力来源于兴趣驱动,适当的教学内容能最大限度地吸引学生。
随着物联网技术的发展,生活中的智能化产品越来越多。学生们在接纳的同时,内心深处其实隐藏着对于智能设备功能实现的好奇。心理学研究表明,当学习内容和学生熟悉的生活情境越贴近,学生自觉接纳的程度越高。
例如,本课选择的智能风扇,原型是生活中常见的物品,每个学生都使用过。然而,加上温控、红外传感器,配合程序就能实现无须人工干预的智能化行为。这种直观显现能极大地激发学生学习的兴趣。
生活中还有很多这样的例子,比如倒车雷达、自动感应门、火焰报警器、声控楼道灯……
基于开源硬件的程序设计,教学可以将程序结构和算法思维融入学生的日常生活实例中,让学生自己动手解惑、释疑,体验程序设计在现实应用中的作用,培养学生的算法思维,让学生真实体验程序设计的乐趣。
【参考文献】
[1]伍冬莉. 创客教育下中学scratch程序设计教学模式探究[J]. 课程教育研究,2017(6).
[2]王同聚. Scratch与机器人共融在教学中的应用与实践——以中小学机器人教学为例[J].中小学信息技术教育,2015(8):76-79.