Scratch编程从入门到精通
上QQ阅读APP看书,第一时间看更新

1.1 Scratch编程概述

1.1.1 为什么用Scratch编程

在世界上第一台电子计算机ENIAC诞生后,各种编程语言陆续被计算机科学家创造出来。人们通过编程语言能够高效地与计算机系统进行交流,控制计算机按照人们的意愿进行工作。经过不断地发展和完善,一些编程语言与人类的自然语言和数学语言越来越接近,它们被称为高级语言,比如C、C++、Java和Python等就是全世界较为流行的高级语言。

为了利用计算机进行工作,人们使用某种编程语言将解决问题的方法和步骤描述成计算机能够理解和执行的一系列指令,这些指令的集合叫作计算机程序(简称程序,也叫作脚本),这个过程叫作编写程序(简称编程)。

如图1-1-1所示,这是一个使用C语言编写的计算三角形面积的示例程序。从中可以看到,C语言使用英文字符来描述程序的指令(也叫作代码),其他高级语言也是如此。这是由于美国在早期计算机工业的发展中处于主要地位,因此一般的高级语言都是以英语为蓝本进行设计的。

我们还看到在这个C语言程序中,每一行代码都以一个分号结束。如果某一行代码末尾缺少一个分号,那么这个程序在编译时就会出现语法错误。如图1-1-2所示,这是在某个IDE环境中编译时因缺少分号而提示的错误信息。

图1-1-1 计算三角形面积的C语言程序

图1-1-2 编译C语言程序时缺少分号出现的错误信息

和C语言类似,其他高级语言也都有着严格的语法要求和各种编程规则。如果我们编写的程序没有遵守这些“金科玉律”,那么,轻则会收到错误或警告信息,重则可能导致计算机系统宕机。因此,在实际工作中进行编程需要经过专门的学习和训练,由专业程序员负责。

编程爱好者在学习C语言等编程语言时,一开始总是会遇到各种各样的麻烦和困难。尽管在计算机发展史上,很早就出现了诸如BASIC这种专门给普通编程爱好者使用的编程语言,并且在青少年中也有一定的使用量,但是这类编程语言仍然有着严格的语法要求和编程规则,将许多初学者的编程热情浇灭在起步阶段。

近年来,随着全球信息技术的飞速发展,专门为青少年开发的各种高级语言不断涌现,其中以MIT Scratch为代表的图形化编程语言从中脱颖而出,逐渐成为全球流行的、最适合对青少年进行编程教育的新一代编程语言。

如图1-1-3所示,这是使用MIT Scratch语言编写的计算三角形面积的两个程序脚本,它们分别是使用英文和中文进行描述的。这种使用Scratch编写的程序,由代表不同指令的积木块按照一定的逻辑关系组合而成。不需要背记复杂的语法规则,也不用担心程序会出现语法错误而无法运行,或者因为违反某些编程规则而导致程序崩溃。如此一来,就算是初学者也能将精力放在思考程序逻辑上,能够轻松地按照自己的意图选择不同功能的积木块,再将它们拼接组合成自己需要的程序。这种编写程序的方式充满了玩乐高积木般的乐趣。因此,Scratch在2007年一经推出,就像一团熊熊烈火,迅速点燃了全球青少年的编程热情。

图1-1-3 两个计算三角形面积的Scratch程序

这就是本书要向读者讲授的图形化编程语言——Scratch,它是由美国麻省理工学院(MIT)媒体实验室专门为8~16岁青少年设计开发的。使用这个具有魔力的Scratch作为编程工具,能够轻松地创作出各种交互式故事、游戏、动画、音乐、美术作品或其他应用程序,并通过Scratch社区将自己的创意作品分享给全世界的编程爱好者。

1.1.2 从Scratch到Python

近年来,在中小学阶段推广和普及编程教育已成为全球各国的共识。2017年7月,国务院发文指出,将逐步在中小学阶段设置人工智能相关课程和推广编程教育。在全球流行编程教育的趋势之下,作为适合中小学生进行编程入门教育的图形化编程语言,Scratch的影响力日渐扩大,学习Scratch编程的青少年与日俱增。

Scratch是青少年编程教育的起点,而不是终点。为使Scratch能够被8~16岁的青少年学习和理解,Scratch开发团队刻意限制Scratch编程语言的功能和特性,保持Scratch简单易学的特色。因为Scratch的设计初衷是帮助青少年学习编程,而不是进行专业软件开发。

编程思想是灵魂,编程语言只是躯壳。当青少年通过Scratch掌握基本的编程思想之后,可以选择转向Python等具备完整编程特性的高级语言,就可以开发更为复杂的网络应用程序、数据库应用程序或人工智能应用程序,等等。

那么,从Scratch到Python应该如何前进呢?下面我们给出一个学习路径的建议供读者参考。

第1步:在中文界面下学习Scratch编程

在国内,8岁的儿童正处于小学低年级阶段,很多地方是从小学三年级起开设英语课。无论是汉字或英文,低龄儿童都存在认知上的困难,而Scratch图形化的特性有助于少年儿童学习编程。由于少儿编程教育在国内尚未普及,目前较为普遍的做法是家长通过教材自学编程之后再教自己的孩子。对多数人而言,在英文界面下进行Scratch编程有一定的困难,而Scratch对简体中文或其他众多语言的支持能把编程变得简单。如图1-1-3中右边的程序是在简体中文界面下编写的,Scratch指令积木块上的文字采用简体中文表示,对大多数家长来说更容易阅读和理解。同时,也可以减少为Scratch程序添加注释。因此,推荐初学者先在简体中文界面下学习Scratch编程。

第2步:在英文界面下学习Scratch编程

在简体中文界面下学习并掌握Scratch编程之后,就可以切换到英文界面下进行编程。当然,如果初学者有一定的英文基础,完全可以跳过第1步,直接使用全英文进行编程。

在英文界面下进行Scratch编程,是为以后学习Python等高级语言做准备。这是因为Python等高级语言的编程是基于文本的、使用英文关键字编写程序代码。所以,初学者在中文界面下掌握Scratch编程之后,作为一个过渡阶段,需要切换到英文界面去适应在英文环境中进行编程。

如图1-1-4所示,这是在Scratch英文界面下编写的插入排序算法的程序脚本。我们把它的积木块的图形去除,只保留文字,将其转为文本型的脚本,之后再把它和使用Python语言编写的插入排序算法脚本进行对比,如图1-1-5所示。从文本的角度进行对比,可以看到Scratch和Python的程序是很相似的。因此,初学者先学习Scratch编程,在掌握基本的编程思想之后,再转向学习Python等高级语言编程,学习曲线会比较平缓。

图1-1-4 用Scratch编写的插入排序算法

图1-1-5 用Scratch和Python编写的插入排序算法

第3步:学习Python或其他高级语言编程

在通过Scratch走上编程之路后,可以继续学习Python、C/C++、Java等高级语言。

在众多的高级语言中,Python是一个不错的选择。它有着庞大的社区支持,各种技术资料非常丰富。同时,它有众多的编程库能够实现对各种新技术的支持,比如当下火热的人工智能和机器学习领域,都能找到相应的Python库。无论是客户端、云端,还是物联网终端,都能看到Python的身影,可以说,Python的应用无处不在。总之,Python的优点很多,在此不一一列举。

对Python或者其他高级语言编程知识的讲授已经超出本书的范畴,读者可以购买相关图书进行学习。

1.1.3 Scratch的主要版本

2007年5月,Scratch的第一个版本发布,它基于Squeak平台和Smalltalk语言开发,可以运行于Windows、Mac OS X和Debian/Ubuntu等操作系统。目前仍然有不少用户使用的版本是Scratch 1.4,如图1-1-6所示。如果你的计算机硬件配置较低或者使用的是Windows XP操作系统,则可以安装使用Scratch 1.4编辑器。

2013年5月,Scratch 2.0发布,它是基于Adobe Flash平台重新开发的,分为在线版和离线版。Scratch 2.0是目前较为流行的版本,如图1-1-7所示。在支持Adobe Flash Player插件的浏览器(IE、Edge、Firefox、Safari或Chrome等)中可以直接运行Scratch 2.0在线编辑器,不需要安装到用户的计算机上;而在安装有Adobe AIR运行环境的操作系统(Windows、Mac OS X或Linux)中,可以运行Scratch 2.0离线编辑器。在编写本书时,Scratch 2.0的最新版本是458.0.1。

和Scratch 1.4相比,Scratch 2.0可谓是焕然一新,它新增的功能主要有:提供更为友好的图形用户界面;升级内置的声音编辑器和图像编辑器;通过支持矢量图形而改善舞台画面的质量;在线版提供的书包功能可以方便地管理常用的图片、声音等素材和脚本;增加视频侦测功能,可以实现手势控制等简单的体感技术应用。最为重要的是增加克隆功能和自定义过程功能,这能极大简化复杂应用程序的编写,提高代码的复用程度,使在Scratch 2.0中能够学习和应用面向对象和模块化的编程思想,有利于以后转向其他高级语言的学习。

图1-1-6 用Scratch 1.4编辑器创作FishChomp游戏项目

图1-1-7 用Scratch 2.0离线编辑器创作“雷电战机”游戏项目

本书内容和示例程序基于Scratch 2.0编写,读者可以根据自己的情况选择使用Scratch 2.0在线编辑器或者Scratch 2.0离线编辑器进行编程学习。

另外,从MIT Scratch官方WIKI得知,Scratch的下一个重大版本是Scratch 3.0,它将基于HTML 5技术重新开发。从MIT Scratch官网公布的有关Scratch 3.0的消息来看,本书所讲授的内容同样适用于Scratch 3.0。

1.1.4 Scratch项目概述

一般来说,Scratch编程指的是使用Scratch编辑器创作交互式故事、动画、游戏或其他应用程序等各种类型的Scratch项目。

一个Scratch项目(Project),通常由舞台(Stage)、角色(Sprite)、脚本(Script)和声音(Sound)等基本要素构成(见图1-1-8),它就像是在剧场的舞台上表演一出话剧(项目),演员(角色)们按照剧本(脚本)的描述在舞台上进行各种表演(运动、对话、改变外观等)。

图1-1-8 Scratch项目的构成要素

Scratch中的角色通常包括脚本(Script)、造型(Costume)和声音(Sound)3个组成部分。我们创作Scratch项目时,主要工作就是给角色设计合适的造型,并编写控制角色行为的脚本。

所谓脚本,就是使用Scratch的功能积木按照一定的逻辑关系组合而成的指令集合。每个角色都拥有自己的脚本,它让角色获得“思想”,使角色能够以各自的方式在舞台中运动、变化或是与其他角色和用户进行交互等。脚本是Scratch项目中最重要的部分,就像是一场正在演出的话剧(项目),如果某个演员(角色)弄错了自己的剧本(脚本),那么就会导致演出失败。严格来说,Scratch编程指的是使用Scratch提供的各种指令积木构建舞台或角色的控制脚本。

所谓造型,其实就是一个图像,Scratch支持PNG、SVG、GIF、BMP和JPG等多种格式的图片作为造型。例如,使用支持透明效果的PNG图片作为造型,可使角色自然融合于舞台背景之中;使用支持无损缩放的SVG矢量图片作为造型,可保证角色在舞台中被放大而不会失真。一个角色可以拥有多个造型,可以在项目运行中通过脚本切换为不同的造型,但在同一时刻只能使用一个造型。角色的造型犹如演员的服饰,演员在表演话剧时可按照剧情需要更换不同的服饰。

一个角色可以拥有自己的声音,在项目运行中通过脚本播放声音效果,可使角色显得活灵活现。Scratch支持使用MP3、WAV、AU和AIF等多种格式的音频文件为角色添加声音,也可以给舞台添加声音。

Scratch的舞台是一个封闭的矩形区域,它提供了一个给角色活动的虚拟世界,被脚本控制的角色能够在舞台中运动或者与其他角色和用户交互等。一个Scratch项目只有一个舞台,舞台可以拥有自己的脚本,拥有多个声音和多个背景。与话剧在表演中可以根据剧本要求更换舞台的背景一样,可以在Scratch项目运行中通过脚本为舞台切换不同的背景,但在同一时刻,在舞台上只能显示一个背景。背景其实就是一个图像,Scratch支持多种格式的图片作为舞台的背景。