在App Inventor手机编程中引导学生创新思维培养
——校本课程案例实践思考
2018-06-05
(扬州大学附属中学 江苏扬州 225000)
一、App Inventor是什么
App Inventor 原是Google实验室(Google Lab)的一个子计划,是一个完全在线开发的Android编程环境,抛弃复杂的程式代码而使用积木式的堆叠法来完成您的Android程式。目前由麻省理工学院行动学习中心负责推广使用。
二、编程围绕创意构思
手机在今天,已成为我们生活的一部分,然而对大多数人来说它就是一个黑箱系统,内部的运作机制复杂且难以捉摸。然有一部分人又知道了Android系统是一个开放的系统,最初的App Inventor设计者就是有了这样的想法,才开始了手机亦可用于教育的想法。
App Inventor开发过程主要分三部分:组件设计、逻辑设计和运行调试(如图1),学生围绕创意构思来实现程序,通过开发把学生从消费者转变为创造者。能够亲手为自己的手机创建应用,这让学生感到有趣和振奋!同时可以帮助学生理解计算机科学的概念。
三、校本课程案例案例分析
1.流程图助力程序编写
程序编写的核心是算法设计和代码的实现。而算法是既是数学及其应用的重要组成部分,也是计算科学的重要基础.随着现代信息技术的飞速发展,算法在科学技术、社会发展中发挥着越来越大的作用,并日益融入社会生活的许多方面,算法思想也正在成为普通公民的常识,成为现代人应具备的一种基本数学素养。算法和程序框图的核心是程序框图是三种基本逻辑结构,在高中数学中属必修内容,所以在App Inventor讲解中,一开始结合流程图给学生讲解程序的实现过程并通过块装化拼接实现程序,既可以便于学生理解,又清晰显示程序结构。
项目一顺序结构:《随机学号呼叫》此案例是在浙江大学吴明辉教授的原创案例基础之上修改后而成。当我点下点名按钮后随机产生一个学号,再由手机内的文本语音转换读出数字即学号。流程图如图2。
项目二分支结构:《摇一摇虚拟抢红包》此案例是我在去年上半年在外校借班上课给青海省的信息技术教师上的一节示范课的案例,最初设计也是一个顺序结构程,两行代码就可以实现,但后来当我引入我的课堂后,我的学生提出图换了,就回不到程序最初界面。我就将分支结构引入了程序设计,如果图片是重奖信息(7.jpg),否则按下换成开始图片即hongb1.jpg,否则就让图片属性为重奖图片即7.jpg。分支结构流程图如图3.有了此流程图学生自己通过代码拖拽就实现了逻辑设计。在此基础上结合项目一,进一步让红包图片变化更多。代码实现如图4.
图2
图3
图4
2.巧用手机传感器
手机程序开发不同于计算机最大的优势就是手机本身自带的传感器,当然不同的手机型号传感器种类也有差别。但通常加速度传感器、位置传感器、距离传感器和计时器还是有的。利用手机传感器可以让我们的App Inventor程序开发更加趣味和实用。
图5
例如上述的项目二:《摇一摇虚拟抢红包》,除了按钮功能,我们还让学生通手机的加速度传感器,当加速度传感器被晃动时,也能实现换图即抢红包。并且在此项目中还加上了计时器,通过计时器自动换图。具体逻辑代码见图5.
再例如,项目三用到的手机的短信收发器和位置传感器,一开始就是一个指南针使用的是方向传感器,是因有一次培训时间多了半个小时,就讲了个小项目《指南针》,后来因为种种原因我又改进增加了一屏,并加了定位功能,主要是针对老人迷路时发出自己的定位信息,在下文会有描述。通过手机定位可以将自己的位置发送自己的子女或亲人。这个已程序已改版多次,每次不同的学员都会增加一些新想法,使其理念加实用了。主要功能逻辑代码见如图6。
图6
3.简单手游编写激发学生学习热情
腾讯大数据在中国手游行业2016年中报告中显示,49%的用户安装了手游APP。用户日均手游使用时长约32分钟,日均打开手游的次数约3.3次。手游已经成为很多人娱乐的一部分。游戏化学习是教育示来发展的一个趋势,调查显示开发一些小游戏更能激发学生的学习热情。目前市面上用Unity 3D开发的手游较多,而App Inventor,更适合简单小游戏开发,当然也更适合初学者。
图7
项目四:《打地鼠》游戏灵感来自一款经典的街机游戏Whac-AMole,其中的小动物会突然从洞中冒出,玩家则用木槌击打它们,击中得分。原创于App Inventor团队的成员最初设计组件界面极其简单,尽管如此学生在完成后,还是乐此不疲的点击,在学生的要求下,我和学生一起改版了如图7,使得玩家更能体验感更好。
项目五:《变速弹球》此案例原创于浙大吴明辉教授,游戏主要是使用图像精灵组件和画布组件实现简单动画类游戏;通过列表、列表选择框、对话框组件的应用来改变球速;并通过反弹处理与碰撞处理来判断得分与游戏结束。我和学生也修改了结速条件。这样增加游戏难度。组件设计时,学生也修改了界面。图8为部分逻辑代码。
图8
四、源于生活的创新思维
创新在我们国家出现频率非常高的一个词,每个人都念念有词,同时,创新它又是一个非常古老的词。创新原意有三层含义,一个,更新。第二,创造新的东西。第三,改变。创新思维是指以新颖独创的方法解决问题的思维过程,通过这种思维能突破常规思维的界限,以超常规甚至反常规的方法、视角去思考问题,提出与众不同的解决方案,从而产生新颖的、独到的、有社会意义的思维成果。
在App Inventor的编写过程中,从最初项目一我演示学生模仿到后来项目三我与学生一起分析,界面设计则是学生自主完成,我会提供所要考虑的组件,学生提出一些修改意见。到了项目四以后,我和学生分析、讨论这样过程既可以增强学生的自主性,又可以拓展学生与我的思路,也可以算是师生间的头脑风暴。
在与学生教与学的过程中,我个人也在不断调整改新,犹记两年前我第一次给学生开设此课程时,第一个案例是会叫的小猫,当年的学生兴奋不已,可是今年这一届学生我演示此程序时反映平平。当我演示随机叫号程序时,学生反映明显兴趣更浓,所以吴教授的案例成了我的项目一。
而项目三的调整是源于一个真实事件,同事顾老师好友的老父随他同学移澳洲Perth,当地华人较少,没多久外出迷路,不会英文的老人,跟儿子说不出自己在哪里,也没有办法的当地人沟通,最后花了近五个小时,由当地警方送回。顾老师和我聊起此事,彼时顾老师也刚开始接触App Inventor,他说有没有可能写个小应用,我们俩商讨后就做了一个姑且叫做定制版的应用发给了他同学。没几天他同学在微信里说,能不能做成手动输手机号的?原来我们做的这个应用,是把他同学手机号直接绑定的,现在好些分在海外的朋友想要给父母装上这个小应用。于是我们就有了上述项目三的代码;去年8月在淮安给当地老师培训时,有一个老师又修改了我的这个程序,不用手动输号码了,直接调用自己的通讯录即可。有想法就会有改变,近期我给学生培训时,我就只给了思路,让他们自己去解决。学生经常会给我一些意想不到的灵感。
再例如感恩节前一天的课,我带着学生做了一个简易计步器,我对他们说:回去送给你们的爸爸或妈妈作为感恩节礼物,也让他们知道你们学了些什么。X下图是我的学生的作品截图。
我常常对学生说,生活处处是学问,,细节之处见真章。我和你们(学生)现阶段的层次所能达到的创新则是而通过自己的努力去改变、改善。