App Inventor编程教程-第1课-前言-少儿编程教育网

想象一下,你像往常一样,正在一条熟悉的路上慢跑,突然被一个念头打动——一款全新的杀手级移动应用!一路上,你甚至忘记了回家的时间,迫不及待地想把这个想法付诸实现。但是该从哪里下手呢?此时的你,并不是一名程序员,而要想成为程序员,怎么也得花上几年的时间,而时间就是金钱,而且......甚至,到了那个时候,可能早已有人把它做出来了。于是就这样,你的灵感胎死腹中了。

现在来设想一个全然不同的世界,在那里,创建应用不需要有多年编程经验,艺术家、科学家、人道主义者、卫生保健工作者、律师、消防员、马拉松运动员、足球教练以及来自各行各业的人们,他们都可以自己动手创建应用。设想一下,在这个世界里,不必雇用专业程序员,就可以把想法转变为应用的原型;你还可以创建只属于你个人的应用,利用移动计算技术来满足自己独特的需求。

这就是App Inventor的世界,一个用于创建移动应用的可视化编程工具。实践证明,这种基于“块”语言的可视化编程方法,显著地降低了为安卓设备开发应用的门槛,就连孩子们也能用够运用自如。让我们敞开来想象一下,把视频游戏里的角色替换成你和你的朋友;或者做一款“买牛奶”的应用,当你下午3点钟之后路过某个超市时,手机会主动提醒你买牛奶;或者是一款问答应用,把它作为一种别出心裁的求婚方式,发给你的那一位,“问题4:你愿意嫁给我吗?如果愿意,按下按钮发送短信”。真的有人创建了一个类似的App Inventor应用来求婚,而对方居然说“愿意”!

 

面向手机的块语言

App Inventor是一款采用拖拽操作的可视化编程工具,主要用于构建运行在安卓平台上移动应用。首先,App Inventor提供了基于Web的图形化的用户界面设计工具,可以设计应用的外观,然后,再像玩拼图游戏一样,将“块”语言拼在一起,来定义应用的行为。

图0-1显示的代码块,来自于一款应用的早期版本,它的开发者Daniel Finnegan是一名从未学过编程的大学生。你能猜出这是一款什么样的应用吗?

App Inventor编程教程-第1课-前言-少儿编程教育网

图0-1 一段学生编写的代码
这是一款短信“应答机”应用。开车时启动它,就可以对收到的短信进行自动回复。

很明显,相比传统的程序代码,这些代码块更容易理解,于是你立刻被深深地吸引住,结合自己的切身体会,你的问题也来了:能不能将收到的短信大声地读出来?我能自定义回复内容吗?能不能做一个像“美国偶像”那样的应用,让人们用短信来投票?以上所有问题的答案都将是肯定的。这本书就是要告诉你怎么来做。

 

用App Inventor做什么?

可做的事情简直是太多了!

把开发当作游戏

为手机写应用本来就很有意思,而使用App Inventor则更增添了探索和发现的乐趣。只需在Web浏览器中打开App Inventor,连上手机,并像图0-1中那样把一些块拼在一起,立即就能在手机上看到你的应用,并且能够与之交互。于是你开始编程,你会发邮件给朋友们,让他们发短信来测试你的应用;或者用刚写好的应用来控制一个乐高NXT机器人;再或者拔下手机,走到户外,去验证一下应用中的位置传感器是否有效。

创建原型应用

对一款应用有了灵感,是吗?那就快速地创建一个原型,切莫随手记在餐巾纸上,或者干脆让它随风飘散。什么是原型呢?它是你构思的模型,是有待进一步完善的作品。用文字来表达想法,就像是写一篇散文给你的朋友或爱人;而用App Inventor创建一个原型,就像是写给风险投资人的一首诗。因此我们说,对于移动应用的开发来说,App Inventor就像一张电子餐巾纸。

构建个性化应用

目前,在移动应用的世界里,我们只能被动接受那些推送过来的应用。你就没有抱怨过吗?我们更期待那种个性化的应用,或者至少让我们能够有所取舍。使用App Inventor,你就可以创建出更贴近自己需求的应用。例如,第三章的打地鼠游戏中,有一个随机移动的地鼠,每次触碰到它你都可以增加得分,你完全可以把教程中地鼠替换成你想要的形象,比如你弟弟妹妹的照片,或者随便什么你能想到的东西,只要你喜欢!同样,在第八章的出题应用中,我们给出的问题都与美国总统有关,你可以轻而易举地将那些问题替换成你感兴趣的问题,比如,你最喜爱的音乐、你的家族历史,等等。

开发完整的应用

App Inventor不只是一个原型开发工具或界面设计器,它也可以用来创建各种完整的应用。它所使用的块语言提供了所有基础的编程指令,如循环语句及条件语句等,只不过是以“块”的方式来呈现而已。

教学

无论是对于初中、高中还是大学的学生,App Inventor都是一个非常出色的教学工具。它的出色不仅仅是对计算机科学而言,对于数学、物理、工商管理以及几乎任何其他学科来说,它也是一个了不起的工具。重要的是在创造中学习,而不是死记公式,例如,你创建了一个寻找最近医院(或商场)的应用;又比如,用马丁•路德•金和马尔科姆•X的视频或演讲的录音片段来创建一个多媒体的问答应用,远比写一段黑人历史的文章来得生动。我们坚信App Inventor以及本书将成为你学习中贯穿始终的强有力的工具。

 

为什么要用App Inventor?

很多人说App Inventor之所以易用,是因为它采用了可视化操作界面,以及可拖拽的块语言。但这背后究竟意味着什么呢?为什么App Inventor会易于使用?

无需记忆和输入指令

对于初学者来说,学习编程面临的最大困难有两个:一是要输入代码,二是要面对那些计算机弹出的令人费解的错误信息。这种困难给他们带来的挫折感,往往使很多初学者还来不及体会解决逻辑性问题的乐趣,就中途放弃了。

你要做的只是选择

在App Inventor中,组件和代码块被分门别类地放在不同的抽屉中,触手可得。编程的过程,就是找到这些块,把它们拖到程序中,来实现你所预想的功能,不需要记住那些指令或查阅参考手册。

限定代码块之间的匹配

同那些让程序员感到挫败的神秘错误信息相比,App Inventor的块语言从一开始就排除了很多犯错的机会。例如,如果一个代码块要求你输入数字,你就就无法输入数字以外的任何字符。这虽然不能消除所有的错误,但起码会排出很多低级错误。

事件的即时处理

传统的编程语言,在它们诞生的那个年代,编写程序就是按照特定的顺序输入一组命令,就像厨师照着菜谱的流程做菜一样。但是在图形化的用户界面中,特别是在移动应用中,程序将不再按照某个特定的顺序执行,而是由那些随时可能发生事件(例如,收到短信或来电)触发运行。因此,大多数的程序都不再采用这种菜谱的模式,取而代之的是对事件的处理。事件处理程序的工作方式是:“当某事件发生时,做某事。”在传统的语言如Java中,你要了解类、对象,以及一种叫做事件侦听器的特殊对象,每个侦听器代表一个事件,而在App Inventor中,你可以拖拽出一个“事件块”来表示"户点击按钮"或“收到短信”之类的事件。

 

适合创建哪些类型的应用?

用App Inventor可以创建各种不同类型的应用。只需发挥你的想象力,就能创建出各种既有趣又实用的应用来 。

游戏

一般人们都会从简单的应用开始,例如,第3章的“打地鼠”游戏,或者第2章的油漆桶应用(在朋友的脸上绘画),等等。然后随着不断进步,就可以开始按照自己的想法做一些更复杂的游戏,如吃豆子、太空侵略者等。你甚至可以使用手机中的传感器,通过倾斜手机让来控制游戏中角色的移动(第5章)。

教学类应用

App Inventor不仅限于制作简单的游戏,也可用于创建信息和教育类应用。第8章的总统问答应用可以帮助学生们在考试前更好地复习,第10章的出题与答题应用,允许用户为自己定制一份考卷(想想那些长途旅行的家长们会多么喜欢这个应用!)

位置感知应用

因为App Inventor提供了访问GPS位置传感器的功能,因此可以构建一个定位应用——知道自己在哪儿;也可以建一个停车定位应用,帮你记住停车位置(第7章);或者一个找人的应用,在音乐会或大型会议时,显示你的朋友或同事的位置;或者一个定制的导游应用,为你所在学校、工作场所或博物馆预置游览路线。

高科技应用

您还可以创建以下类型的应用:条码扫描、聊天、听力练习(文字识别)、音乐播放、音乐制作(第9章)、视频播放、检测手机的方向和加速度、拍照以及拨打电话,等等。如果把智能手机比喻为一把功能多样的瑞士军刀,那么编写程序就是操作这把刀的技术,而App Inventor让这门技术更易于掌握。

短信应用

开车不发短信(第4章)就是一个短信类应用的简单案例,你还可以编写一个自动问候的应用,定时给你的亲友们发送诸如“想念你”之类的短信,或者类似于“广播中心”(第11章)那样的应用,帮助协调大型活动,再或者,像“美国偶像”节目那样的投票应用,让你的朋友通过短信来投票,等等。所有这些类型的应用都可以用App Inventor来实现。

控制机器人的应用

第12章是一个机器人控制类应用,教你如何编写程序来控制乐高机器人。你的手机可以充当机器人的遥控器,或者说你的程序就是机器人的“大脑”,可以伴随它到处游走。机器人与手机之间通过蓝牙通信,你也可以使用App Inventor的蓝牙组件创建其他类似的应用,来控制周围的蓝牙设备。

复杂应用

App Inventor大大降低了编程的门槛,让你在短时间内就可以创建出很炫的高科技应用,但这门语言的功能并不简单,它提供了循环、分支以及其的语言要素与逻辑结构,可以编写出逻辑复杂的应用程序。在尝试创建应用的过程中,你会惊奇地发现解决这些逻辑问题是多么的有趣。

基于Web的应用

App Inventor也提供了应用与Web之间的通信手段。你可以写一个应用,从Twitter或RSS订阅中抓取数据,或者访问亚马逊网上书店,通过扫描条码来查询一本书的线上价格。