第 3章 必要的计算机知识 本章学习目标 .了解计算机的硬件构成 .了解软件的意义 .了解程序设计语言 .了解 Scratch编程的六大应用类型 第 3章 必要的计算机知识 本章学习目标 .了解计算机的硬件构成 .了解软件的意义 .了解程序设计语言 .了解 Scratch编程的六大应用类型 3.1计算机的硬件构成 现代计算机( computer)俗称电脑,是一种既可以进行数值计算,又可以进行逻辑运算, 还具有存储记忆功能,能够按照程序运行,自动、高速处理海量数据的现代化智能电子设备。 计算机是 20世纪最重要的发明之一,对人类的生产活动和社会活动产生了极其重要的影 响,并以强大的生命力飞速发展。它的应用领域从最初的军事、科研扩展到社会的各个领域, 已形成了规模巨大的计算机产业,带动了全球范围的技术进步,由此引发了深刻的社会变 革。计算机已遍及学校、企事业单位,进入寻常百姓家,成为信息社会中必不可少的工具。 1930年,美国科学家范内瓦 ·布什造出世界上首台模拟电子计算机。 1946年 2月 14日,由美国军方定制的世界上第一台电子计算机“电子数字积分计算机”( Electronic Numerical Integrator And Calculator,ENIAC)在美国宾夕法尼亚大学问世。ENIAC是人类 历史上真正意义上的第一台电子计算机,占地 170平方米,耗电 150千瓦 /时,造价 48万美元, 每秒可执行 5000次加法或 400次乘法运算,共使用了 18 000个电子管,如图 3-1所示。 图 3-1 操作 ENIAC 计算机由硬件系统和软件系统所组成,没有安装任何软件的计算机称为裸机。 1946 年数学家冯·诺依曼提出计算机硬件构成包括运算器、控制器、存储器、输入设备、输出 设备,如图 3-2所示。 存 储 器 外围设备 CPU 第章必要的计算机知识 3 输入设备 输出设备 运算器 控制器 图 3-2 计算机的硬件构成 . 运算器( Arithmetic Unit):对数据进行各种算术运算和逻辑运算,即对数据进行加工 处理。 . 控制器( Control Unit):整个计算机的中枢神经,其功能是对程序规定的控制信息进 行解释,根据其要求进行控制,调度程序、数据、地址,协调计算机各部分工作及内 存与外部设备的访问等。 . 存储器( Memory):用于存储程序、数据和各种信号、命令等信息,并在需要时提供 这些信息。 . 输入设备( Input Device):计算机的重要组成部分。输入设备与输出设备合称为外部 设备,简称外设。输入设备的作用是将程序、原始数据、文字、字符、控制命令或现 场采集的数据等信息输入到计算机。常见的输入设备有键盘、鼠标、光电输入设备、 磁带机、磁盘机、光盘驱动器等。 . 输出设备( Output Device):同输入设备一样是计算机的重要组成部分,它把计 算机的中间结果或最后结果、机内的各种数据符号及文字或各种控制信号等信息输 出出来。常用的输出设备有显示终端( CRT)、打印机、绘图仪及磁带、光盘刻录 机等。 如果把一台计算机比作一个人,那么硬件就像人的躯体,软件就如人的思想,两者都 非常重要。通过本节的学习,读者对计算机硬件构成有了一些初步的了解,这对学习软件 编程有很好的帮助。 3.2软件的意义 正如前面所说,软件就像人的思想,对于电子设备来说软件是必不可少的组成部分。 比如我们日常使用的智能手机、计算机和其他电子产品,如果没有安装软件,这些电子设 备几乎没有任何用处。软件可以理解为与计算机系统操作有关的计算机程序、规程、规则, 19 零基础学 Scratch 3.0 编程零基础学 Scratch 3.0 编程 以及可能有的文件、文档和数据。从软件开发角度来看,软件 =程序 +数据 +文档,如图 3-3 所示。 图 3-3 软件的基本构成 软件根据其应用范围可分为系统软件和应用软件两大类。 系统软件为使用计算机提供最基本的功能,包括操作系统、语言处理程序、数据 库管理系统和各类服务程序,其中操作系统是最基本的软件。操作系统是管理计算机 硬件与软件资源的程序,同时也是计算机系统的内核与基石。操作系统身负诸如管理 与配置内存、决定系统资源供需的优先次序、控制输入 /输出设备、操作网络与管理文 件系统等基本事务,并提供让用户与系统交互的操作接口。常见的计算机操作系统有 Windows、macOS、Linux等,常见的智能手机操作系统有 Android和 iOS。计算机系统 的大体构成如图 3-4所示。 图 3-4 计算机系统的构成 应用软件是为了某种特定用途而开发的软件。它可以是一个特定的程序,比如一 个图像浏览器,也可以是一组功能联系紧密,能够互相协作的程序集,比如微软的 Office办公套件,还可以是一个由众多独立程序组成的庞大的软件系统,比如数据库 管理系统。 总之,系统软件并不针对某一特定应用领域,它提供计算机系统的基本功能,而应用 软件则相反,不同的应用软件根据不同的用户和所服务的领域提供特定的功能。 20 3.3程序设计语言 程序设计语言是用于编写计算机程序的语言。语言的基础是一组记号和一组规则。根 据规则由记号构成的记号串的总体就是语言。在程序设计语言中,这些记号串就是程序。 程序设计语言取决于三方面的因素,即语法、语义和语用。语法表示程序的结构或形 式,亦即表示构成语言的各个记号之间的组合规律,但不涉及这些记号的特定含义,也不 涉及使用者。语义表示程序的含义,亦即按照各种方法表示的各个记号的特定含义,但不 涉及使用者。语用表示程序与使用者的关系。 自 20世纪 60 年代以来,世界上公布的程序设计语言已有上千种之多,但是只有很小 一部分得到了广泛的应用。从发展历程来看,程序设计语言可分为四代。 第一代是机器语言。机器语言由二进制的 0、1代码指令构成,不同的 CPU具有不同 的指令系统。机器语言程序难编写、难修改、难维护,需要用户直接对存储空间进行分配, 编程效率极低。这种语言已经被逐渐淘汰。 第二代是汇编语言。汇编语言指令是机器指令的符号化,与机器语言指令有着直接的 对应关系,所以汇编语言同样存在着难学难用、容易出错、维护困难等缺点。但是汇编语 言也有自己的优点:可直接访问系统接口,汇编程序翻译的机器语言程序效率高。从软件 工程角度来看,只有在高级语言不能满足设计要求,或不具备支持某种特定功能的技术性 能(如特殊的输入 /输出)时,才使用汇编语言。 第三代是高级语言。高级语言是面向用户的、基本上独立于计算机种类和结构的语言。 其最大的优点是:形式上接近于数学语言和自然语言,概念上接近于人们通常使用的概念。 高级语言的一条命令可以代替几条、几十条甚至几百条汇编语言的指令。因此,高级语言 易学易用,通用性强,应用广泛。当前软件开发主流的高级语言有 Java、C/C++、Python等。 第四代是非过程化语言( 4GL),编码时只需说明“做什么”,而不需要描述算法细节。 数据库查询和应用程序生成器是 4GL的两个典型应用。例如,用户在用数据库查询语言 SQL对数据库中的信息进行复杂操作时只需将要查找的内容在什么地方、根据什么条件进 行查找等信息告诉 SQL,SQL将自动完成查找过程。应用程序生成器则是根据用户的需 求“自动生成”满足需求的高级语言程序。 总之,程序设计语言一直是向着智能化、易用化方向发展。根据 2019年 10月 TIOBE 调查,全球排名前十的编程语言如表 3-1所示。 表 3-1 2019年 10月编程语言流行度排行榜 第章必要的计算机知识 3 排名编程语言流行度对比上月年度明星语言 1 Java 16.884% 0.223% 2015,2005 2 C 16.180% 0.975% 2017,2008 3 Python 9.089% -0.785% 2010,2007,2018 21 零基础学 Scratch 3.0 编程零基础学 Scratch 3.0 编程 22 续表 排名编程语言流行度对比上月年度明星语言 4 C++ 6.229% 0.594% 2003 5 C# 3.860% 0.461% 6 Visual Basic.NET 3.745% 0.454% 7 JavaScript 2.076% -0.052% 2014 8 SQL 1.935% -0.009% 9 PHP 1.909% 0.046% 2004 10 Objective-C 1.501% -0.339% 2012,2011 注:数据来源 TIOBE 3.4Scratch编程的六大应用类型 Scratch不只是适合青少年学习编程的入门工具,它本身就是一种真正的编程语言。 Scratch诞生的意义就在于可以让孩子远离枯燥的代码和符号,由于孩子并不需要明白编程 背后的编译原理,因而可以直接进入思维逻辑的训练,进而提升自己的思考方式。 Scratch 跳过了高级语言中那些繁难的概念和语法,用图形化的表现形式和拖曳操作来完成编程的 核心逻辑和成果交付,既能解决学习曲线过于陡峭的问题,也能让学习的过程不枯燥,且 能及时地获得结果反馈,非常适合青少年学生的心智水平和认知能力。 Scratch采用图形 化编程方式,通过将积木块有序地连到一起,学生们可以给计算机下达指令,比如“让那 个角色在屏幕上移动”或者运用数学知识进行公式计算。 很多家长认为 Scratch编程就是游戏编程,其实这是一个误解。游戏编程只是 Scratch编程的一类应用,它还可以编写艺术、动画、音乐、教程、故事等类型的应用程 序,如图 3-5所示。在后面的章节中将具体介绍 Scratch编程的六大应用类型。 图 3-5 Scratch编程的主要应用类型 3.5本章小结 本章主要讲解编程需要具备的一些计算机基础知识,包括计算机的硬件构成;软件 运行所需要的硬件环境;软件的重要意义;编程语言的发展以及当前的主流编程语言; Scratch编程的六大应用类型。 本章的主要目的是让读者了解一些计算机的基础知识,虽然这些知识与 Scratch编程 没有直接的关系,但掌握这些知识有助于读者对 Scratch编程有更深的理解。 第章必要的计算机知识 3 23 第 5章 Scratch艺术类编程 本章学习目标 .了解艺术与 STEM教育的关系 .掌握电子相册程序的实现方法 .掌握绘制房屋程序的实现方法 .掌握常用的艺术类程序编程技巧 第 5章 Scratch艺术类编程 本章学习目标 .了解艺术与 STEM教育的关系 .掌握电子相册程序的实现方法 .掌握绘制房屋程序的实现方法 .掌握常用的艺术类程序编程技巧 5.1艺术与 STEM的关系 STEM是科学( Science)、技术( Technology)、工程( Engineering)、数学( Mathematics) 的缩写,它是一种教育理念,在美国前总统奥巴马的推动下火遍全球。 《信息爆炸时代的简单思考》( The Organized Mind:Thinking Straight in the Age of Information Overload)的作者丹尼尔·列维廷( Daniel Levitin)说过:单凭艺术、技术或 科学无法解决问题,三者的结合可能才是最具威力的。再去翻开人类历史看看,改变世界 的大都是科技与艺术跨界整合的人,像达 ·芬奇,不仅是科学家、数学家,他的艺术成就 更是冠绝古今,《蒙娜丽莎的微笑》的黄金比例构图,完美诠释了数学与绘画结合带来的 美感;提出相对论的爱因斯坦,不仅是杰出的物理学家,还是优秀的小提琴手,他曾表示 拉小提琴有助于他的理论思考;使苹果产品充满人性化与美感的乔布斯则是从学生时代就 醉心于艺术领域。 在 STEM教育推行几年之后,约翰 ·前田( John Maeda)和乔治特 ·亚克曼( Georgette Yakman)等人认为,学习不能偏重于理工学科,主张在 STEM中加入艺术( Arts), STEAM教育思潮因而慢慢形成,而其跨学科融合的项目式学习(Project-Based Learning, PBL)特性,更使教育向现代化发展成为可能。 越来越多的研究表明,持续的艺术教育对全社会的智力发展至关重要。约翰 ·前田肯 定艺术的重要性,他表示“所有卓越的创新都来自于把不同领域的东西聚合到一起。艺术 不仅仅带领科学达到美的境界,它更能给科学领域不同的启发。” 少儿编程是对科学( Science)、技术( Technology)、工程( Engineering)、艺术( Art) 和数学(Mathematics)知识的综合应用,这个理念可以说与 STEAM教育不谋而合。 5.2艺术类实例一:电子相册 对于电子相册我们都不陌生,通过电子相册我们可以更好地展示数字照片,并可以添 加声音、文字、特效等,使相册内容更丰富多彩。对于 Scratch艺术类编程,就让我们从 制作自己的电子相册开始吧! 5.2.1 设计思路 本电子相册程序要实现的功能有:轮流播放图片、为图片添加特效、播放背景声音。 相册所展示的图片可以通过添加背景造型素材的方式上传,也可以通过创建角色以角色造 型的方式上传。本程序采用添加背景造型素材的方式上传,所以代码添加在舞台背景上。 5.2.2 准备编程素材 要实现电子相册,首先需准备要展示的图片素材,可以是自己拍摄的照片,也可以是 从网上下载的图片。在本程序中,笔者准备了 10张优美的中国风景图片作为电子相册展 示素材。为了让电子相册展示元素更丰富,可以准备自己喜欢的音乐作为背景声音。 5.2.3 编写舞台背景程序 首先,上传电子相册的背景图片,鼠标指向“选择一个背景”按钮,单击“上传背景”, 然后选择已经准备好的图片文件(pic1.jpg、pic2.jpg……pic10.jpg),如图 5-1所示。 第章 Scratch 艺术类编程 5 图 5-1 电子相册图片素材 对图片进行特效处理可使用 Scratch“外观”模块中的专门积木,可以实现的特效有颜色、 鱼眼、漩涡、像素化、马赛克、亮度和虚像,如图 5-2所示。我们将把这七种特效应用在 电子相册的背景图片上。 43 零基础学 Scratch 3.0 编程零基础学 Scratch 3.0 编程 图 5-2 特效选项 首先研究虚像特效,当虚像特效值为 0时,图片没有变化;虚像特效值增大,则图片 变浅,随着虚像特效值不断增大,颜色越来越浅,直至图片变成白色,形成由实到虚的效 果。虚像特效的实现代码如图 5-3所示,代码分析如下。 首先使用“清除图形特效”积木将之前的特效设置清除,开始应用新的特效。然后使 用“下一个背景”积木来切换下一张图片。使用“重复执行( 100)次”积木将虚像特效 每次增加(1)然后等待(0.001)秒。 接着来研究像素化特效。当像素化特效值为 0时,图片没有变化;像素化特效值越大, 则图片像素化效果越明显;随着虚像特效值不断减小,图片像素化效果越不明显,直至恢 复到原有外观。像素化特效的实现代码如图 5-4所示。 图 5-3 实现虚像特效的代码图 5-4 实现像素化特效的代码 分析一下上述代码。首先使用“清除图形特效”积木将之前的特效设置清除,开始应 用新的特效。使用“下一个背景”积木来切换下一张图片。先使用“将【像素化】特效设 定为( 100)”积木,给图片设定最初的像素化特效值。然后使用“重复执行( 100)次” 积木每次将【像素化】特效增加( -1)然后等待( 0.001)秒,逐渐清除像素化特效直至 恢复到图片原有外观。最后使用“等待(1)秒”积木持续显示 1秒恢复后的图片。 44 接着来研究马赛克特效,这是将一张图片分成多个图片的特效。马赛克特效的实现代 码如图 5-5所示。首先使用“清除图形特效”积木将之前的特效设置清除,开始应用新 的特效。使用“下一个背景”积木来切换下一张图片。使用“重复执行( 50)次”积木, 每次将【马赛克】特效增加( 1)然后等待( 0.1)秒来显示逐渐增加的马赛克效果。最后 使用“等待(1)秒”积木持续显示 1秒加入马赛克特效后的图片。 接着来研究鱼眼特效,鱼眼特效给人一种通过广角镜头看图片的感觉,鱼眼特效的实 现代码如图 5-6所示,代码分析如下。 第章 Scratch 艺术类编程 5 图 5-5 实现马赛克特效的代码图 5-6 实现鱼眼特效的代码 首先使用“清除图形特效”积木将之前的特效设置清除,开始应用新的特效。使用“下 一个背景”积木来切换下一张图片。先使用“将【鱼眼】特效设定为( 1000)”积木,给 图片设定初始鱼眼特效值。然后使用“重复执行( 20)次”积木每次将【鱼眼】特效增加 (-50)然后等待( 0.01)秒,逐渐清除鱼眼特效直至恢复到图片原有外观。最后使用“等 待(1)秒”积木持续显示 1秒恢复后的图片。 接着研究颜色特效,颜色特效可以改变图片的色调。颜色特效的实现代码如图 5-7所示。 颜色特效设置数值是有范围的,由实践操作知取值范围为 0~ 199,颜色在绿、蓝、红之 间变化。当取值超过 199时重新从 0开始。代码分析如下。 首先使用“清除图形特效”积木将之前的特效设置清除,开始应用新的特效。使用“下 一个背景”积木来切换下一张图片。先使用“将【颜色】特效设定为( 100)”积木,给 图片设定初始颜色特效值。然后使用“重复执行( 20)次”积木每次将【颜色】特效增加( -5) 然后等待( 0.01)秒,逐渐消除颜色特效直至恢复到图片原有外观。最后使用“等待( 1) 秒”积木持续显示 1秒恢复后的图片。 接着来研究漩涡特效,漩涡特效可让图片围绕其中心点旋转。漩涡特效的实现代码如 图 5-8所示。 45 零基础学 Scratch 3.0 编程零基础学 Scratch 3.0 编程 图 5-7 实现颜色特效的代码图 5-8 实现漩涡特效的代码 分析一下上述代码。首先使用“清除图形特效”积木将之前的特效设置清除,开始使 用新的特效。使用“下一个背景”积木来切换下一张图片。先使用“将【漩涡】特效设定 为(100)”积木,给图片设定初始漩涡特效值。然后使用“重复执行( 100)次”积木每 次将【漩涡】特效增加( -1)后等待( 0.01)秒,逐渐清除漩涡特效直至恢复到图片原有外观。 最后使用“等待(1)秒”积木持续显示 1秒恢复后的图片。 接着来研究亮度特效,亮度特效可改变图片的亮度等级,取值范围是 -100~ 100, 对应的亮度为从黑到白。亮度特效的实现代码如图 5-9所示。 图 5-9 实现亮度特效的代码 分析一下上述代码。首先使用“清除图形特效”积木将之前的特效设置清除,开始使 用新的特效。使用“下一个背景”积木来切换下一张图片造型。先使用“将【亮度】特效 设定为(100)”积木,给图片设定初始亮度特效值为 100,即白色。然后使用“重复执行(100) 次”积木每次将【亮度】特效增加( -1)后等待( 0.01)秒,逐渐清除亮度特效直至恢复 到图片原有外观。最后使用“等待(1)秒”积木持续显示 1秒恢复后的图片。 以上分别讲述了虚像、像素化、马赛克、鱼眼、颜色、漩涡、亮度七大特效的应用, 可以看出它们的用法非常相似,读者在编写程序时可根据需要选择合适的特效。 46 为了能让虚像、像素化、马赛克、鱼眼、颜色、漩涡、亮度这七大特效依次循环应用, 使用“控制”模块里的“重复执行”积木,将上述七大特效的实现代码放进“重复执行” 积木里执行即可。 5.2.4 编写 Ready角色程序 首先需要创建 Ready角色。该角色主要用来完成文字的特效显示,如实现文字大小的 变化特效、颜色的变化特效等。删除默认的小猫角色。鼠标指向“选择一个角色”按钮, 在弹出的列表中选择“绘制”选项,绘制一个新角色造型,在绘制界面选中文本工具,在 文本框输入“Are you ready?”,可以选择自己喜欢的颜色和字体,如图 5-10所示。 第章 Scratch 艺术类编程 5 图 5-10 绘制角色造型 将角色名修改为 Ready,如图 5-11所示。 图 5-11 修改角色名 47 零基础学 Scratch 3.0 编程零基础学 Scratch 3.0 编程 设计该角色的特效只在程序启动时显示,这里通过消息通知机制来实现。 消息也就是信息。消息通知机制指消息发送方向消息接收方发送特定消息,消息接收 方收到该消息后做相应的处理。一般消息发送方是一个,而消息接收方可以是一个也可以 是多个。比如,把学校作为消息发送方,它发出上课铃消息,学生作为消息接收方,接收 到该消息后准备上课。 在舞台背景程序处发消息,在该角色程序中接受消息并进行相应的处理。在舞台背 景程序中新建一个消息,取名为 are you ready,如图 5-12所示,并通过“广播( are you ready)并等待”积木发送该消息。 图 5-12 新建消息 首先来实现文字的颜色特效变化,让文字从原来的黄色逐渐变化为蓝色,实现代码如 图 5-13所示。 图 5-13 文字颜色变化特效的实现代码 分析上述代码。使用“当接收到【 are you ready】”积木表示当接收到 are you ready 消息时,开始执行其下方的代码。使用“将大小设为( 125)”积木表示将角色大小设置 为 125。“显示”积木用来将角色显示在舞台上。使用“移到 x:(0)y:(0)”积木用来 将角色移动到舞台坐标( 0,0)的位置。使用“清除图形特效”积木用来清除之前的特效设置。 48 使用“重复执行( 100)次”积木,每次将【颜色】特效增加( 1)然后等待( 0.01)秒, 也就是每次将角色颜色增加 1并等待 0.01秒。最后使用“隐藏”积木将角色从舞台中隐藏, 也就是不再显示。 接下来实现文字大小变化的特效,即让文字先从大变小,然后从小变大,再从大变小, 再从小变大,实现代码如图 5-14所示。 第章 Scratch 艺术类编程 5 图 5-14 文字大小变化特效的实现代码 分析上述代码。使用“当接收到【 are you ready】”积木,表示当接收到 are you ready 消息时,开始执行其下方的代码。使用“重复执行( 2)次”积木将此积木中的代码分别 重复执行两遍,先使用“重复执行( 25)次”积木,每次将角色大小减小 5并等待 0.01秒; 再使用“重复执行(25)次”积木,每次将角色大小增加 5并等待 0.01秒钟。 最后,为了让电子相册在播放过程中播放美妙的音乐,可以增加舞台背景音乐,可以 选择上传自己喜欢的音乐素材,也可以在 Scratch系统声音素材库中选择声音素材。本例 我们在“声音”页签单击“选择一个声音”按钮,然后在“可循环”标签中选择“ Cave” 声音文件,如图 5-15所示。 图 5-15 选择“Cave”声音文件 49 在电子相册程序中播放背景音乐的代码如图 5-16所示。 零基础学 Scratch 3.0 编程 图 5-16 实现播放“Cave”背景音乐的代码 分析上述代码。“当被点击”积木表示当单击按钮,程序开始运行。“重复执行” 积木用来让程序循环播放 Cave声音文件,并且每次都等待 Cave声音文件播放完之后再重 新播放。 5.2.5 验证程序 前面分别实现了舞台背景程序、 Ready角色程序,至此电子相册程序已经全部完成, 接下来让我们检验一下程序吧! 在舞台区单击 按钮,程序开始运行。在舞台上可以看到这样的场景:漂亮的风景 图片上出现“ Are you ready?”特效文字,伴随着舞台背景音乐,文字忽小忽大,颜色不断 变化,各图片特效依次循环展示,有虚像、像素化、马赛克、鱼眼、颜色、漩涡、亮度等, 如图 5-17所示。 图 5-17 运行电子相册程序 至此,电子相册程序的实现已经讲述完毕。通过该实例的学习,读者完全可以编写出 自己的电子相册程序,可以使用自己的相片素材、音乐素材,并增加自己喜欢的特效,制 做出有趣的电子相册。 50 5.3艺术类实例二:绘制房屋 通过 Scratch编程,我们可以绘制出一个房屋形状,并可以给它增加装饰物来使房屋 更加温馨有趣,此外增加背景音乐会让我们的程序表现力更丰富。接下来,让我们学习通 过编程绘制自己喜欢的房屋吧! 5.3.1 设计思路 要实现绘制房屋的程序,首先,创建一个角色来绘制房屋,包括房屋的侧面、门、窗 户、屋顶等。其次,为了装饰房屋,需要创建另一个角色来实现装饰特效。然后,为了让 房屋在展示时表现力更丰富,在舞台背景程序中增加了音乐。最后,验证程序的效果。本 程序的总体设计思路如图 5-18所示。 第章 Scratch 艺术类编程 5 图 5-18 绘制房屋的设计思路 51 零基础学 Scratch 3.0 编程零基础学 Scratch 3.0 编程 5.3.2 绘制角色实现 可以将绘制房屋分解为绘制侧面、门、屋顶、窗户等。首先来实现房屋角色程序的初 始化代码(程序初始化在计算机编程领域中指为数据对象或变量赋初值的做法),代码如 图 5-19所示。 图 5-19 绘制房屋角色的初始化代码 分析上述代码。单击 开始执行程序,初始设置角色在舞台坐标( -110,-120)处, 默认角色面向 90度方向。使用“将笔的粗细设为( 2)”积木设置画笔的粗细程度。使用 “将笔的颜色设为( 120)”积木设定画笔的颜色。使用“落笔”积木开始绘画。使用“全 部擦除”积木来擦除之前可能残留的图案。最后使用自制积木“ House(20)”绘制房屋。 “House()”积木是房屋角色代码实现的核心,接下来将详细介绍。 由于本程序将要用到自制的新积木,所以先来学习如何自制积木。首先在“代码”页 签中选择“自制积木”,然后单击“制作新的积木”,弹出“制作新的积木”对话框,系 统提示输入积木名称,也就是给新的积木命名。命名原则是名称最好与其功能密切相关, 应能明显通过积木名称了解其主要功能,因此这里给积木命名为 “House”表示绘制房屋。 我们希望能够灵活控制所绘制房屋的大小,这时就需要添加参数。房屋大小一般用数字来 设置,所以在对话框中选择“添加输入项数字或文本”选项,并给参数取名“ number1”, 如图 5-20所示。默认情况下不勾选“运行时不刷新屏幕”复选框,但在有些情况下为了 提升性能也会选择该项。 52 第章 Scratch 艺术类编程 5 第章 Scratch 艺术类编程 5 图 5-20 自制“House(numberl)”积木 参数可以理解为一个变量的名字,后面根据具体情况给这个参数赋值,一般用于函数 调用。 参数,也叫参变量,是一个变量。我们在研究当前问题的时候,关心某几个变量的变 化以及它们之间的相互关系,其中有一个或一些叫自变量,另一个或另一些叫因变量。如 果我们引入一个或一些另外的变量来描述自变量与因变量的变化,引入的变量本来并不是 当前问题必须研究的变量,我们把这样的变量叫作参变量或参数。 通过上面的操作,在代码区创建了“ House(numberl)”积木的定义部分,但此时只 是创建了新积木的头定义,并没有任何具体功能的实现,如图 5-21所示。 图 5-21 自制新积木的头定义 该积木的主要实现目标是绘制出如图 5-22所示的房屋造型,可以将这个大的任务拆 分为多个小的任务来分别实现,比如分别绘制房屋侧面、门、窗户和屋顶等。 图 5-22 房屋的目标造型 53 零基础学 Scratch 3.0 编程零基础学 Scratch 3.0 编程 要绘制如图 5-22中的房屋造型,自制 House积木可以用如图 5-23所示的代码来实现, 分别从左向右依次绘制侧面 1、第 1扇门、侧面 2、第 2扇门以及屋顶和窗户。 图 5-23 自制 House积木的代码 分析上述代码。调用自制“ Side1(number1)”积木绘制房屋左侧面,自制积木 Side1的具体实现稍后介绍。绘制完侧面 1之后绘制第 1扇门,由于坐标发生变化,所以 需要调用“将 x坐标增加(( 1)*(number1))”积木调整 x坐标到绘制门的起始位置。 调用自制“ Door(number1)”积木绘制第 1扇门,自制积木 Door的具体实现稍后介绍。 调整坐标准备绘制侧面 2,调用“将 x坐标增加(( 2)*(number1))”积木调整 x坐 标到绘制侧面 2的起始位置。调用自制“ Side2(number1)”积木绘制房屋右侧面,自制 积木 Side2的具体实现稍后介绍。调整坐标准备绘制第 2扇门,调用“将 x坐标增加(( 4) *(number1))”积木调整 x坐标到绘制第 2扇门的起始位置。调用自制 “Door(number1)” 积木绘制第 2扇门。接下来需要同时调整 x和 y的坐标到合适的位置以便绘制屋顶,所以 调用“将 x坐标增加(( -7)*(number1))”积木调整 x坐标到绘制屋顶的起始位置, 调用“将 y坐标增加(( 5)*(number1))”积木调整 y坐标到绘制屋顶的起始位置。 调用自制“ Roof(number1)”积木绘制屋顶,调用自制“ Window(number1)”积木绘 制窗户,这两个自制积木的具体实现稍后介绍。 侧面 1和侧面 2的绘制方法完全一样,唯一的差别就是边长不同。绘制侧面 1和侧面 2的代码如图 5-24所示。 54 图 5-24 绘制两个侧面的代码 房子中虽然有两扇门,但门的形状和大小都一样,所以可以采用同一套代码来实现。 绘制门的代码如图 5-25所示。 第章 Scratch 艺术类编程 5 图 5-25 绘制门的代码 屋顶由左侧的一个三角形和右侧的一个平行四边形构成,所以绘制屋顶可以分解成绘 制一个三角形( Triangle)和一个平行四边形( Parallelogram),完整的代码如图 5-26所示。 图 5-26 绘制屋顶的代码 55 最后来学习一下如何绘制房屋的窗户。绘制窗口需要绘制两个小正方形,并且还有一 条直线两条斜线,在实现的过程中,要注意绘制的移动坐标,如果坐标位置不当,将不能 正确绘制出想要的图形。绘制窗户的代码如图 5-27所示。 零基础学 Scratch 3.0 编程 图 5-27 绘制窗户的代码 5.3.3 装饰帽子角色实现 我们用帽子角色装饰房屋,使房屋变得更加有趣可爱,所以需要在绘制好房屋后再显 示帽子。首先,需要新建该角色,在角色列表区,单击“选择一个角色”按钮,搜索 “hat”, 选择 Hat1角色,如图 5-28所示。创建好角色后,可以调整角色的大小和位置。 图 5-28 选择帽子角色 56 我们希望实现的效果是,等房屋绘制好之后,自动给房屋添加一顶帽子,并且呈现忽 隐忽现的效果,实现该功能的代码如图 5-29所示。 第章 Scratch 艺术类编程 5 图 5-29 帽子角色的代码 分析上述代码的具体实现。帽子角色在程序开始运行时隐藏,即不显示在舞台上,等 待 2.8秒,绘制好房屋后,再显示在舞台上。为了实现帽子角色在舞台上忽隐忽现的效果, 这里使用虚像特效的循环增加和循环减小。由于帽子角色在程序退出之前需要一直保持忽 隐忽现,所以使用“重复执行”积木来无限循环执行虚像特效。 5.3.4 舞台背景实现 本例的舞台背景程序实现两大功能:一是轮流切换显示的背景图片;二是播放背景音 乐。为背景程序添加图片的操作方法是,通过单击“选择一个背景”按钮,添加喜欢的背 景素材,这里可以选择多个比较符合程序主题的素材。为背景程序添加声音的方法是,在 “声音”页签,单击“选择一个声音”按钮,可以在“可循环”类声音素材中选择一个声 音,如图 5-30所示。 57 零基础学 Scratch 3.0 编程零基础学 Scratch 3.0 编程 图 5-30 选择舞台背景声音素材 舞台背景程序要实现背景图片的切换并播放声音的功能,其代码相对比较简单,如 图 5-31所示。 图 5-31 舞台背景程序的代码 5.3.5 验证程序 前面分别实现了绘制房屋角色、帽子角色和舞台背景程序,接下来让我们检验一下程 序吧。在舞台区单击 按钮,程序开始运行。在舞台上可以看到这样的场景:首先在舞 台上一笔一画绘制出一所房屋造型,接着一顶帽子戴在了房顶上,忽隐忽现,同时背景图 片也在不断切换,还循环播放着背景音乐,如图 5-32所示。 58 第章 Scratch 艺术类编程 5 第章 Scratch 艺术类编程 5 图 5-32 验证绘制房屋程序 至此,绘制房屋的程序已经分析完毕,实现了绘制房屋的预期功能。读者在该程序的 基础上还可以增加更多的实现技巧,比如绘制更有趣的图形;房屋绘制完毕后通过广播消 息方式通知帽子角色开始显示,这样就不需要使用等待积木;等等。更多的实现方法留给 读者完成。 5.4本章小结 本章以 Scratch艺术类程序的编写为主题,并深入、详细地进行了讲解。首先讲解艺 术与 STEM教育的紧密关系;然后以大家比较熟悉的电子相册程序为例,学习虚像、像素 化、马赛克、鱼眼、颜色、漩涡、亮度七大外观特效的应用,文字特效的实现以及消息通 信机制;最后以绘制房屋为例,深入讲述了如何自制积木、传递参数以及通过分而“绘” 之的方式将绘制房屋这个大的任务分解成多个小任务逐步实现。 通过对本章内容的学习,读者应对 Scratch艺术类程序实现有了全面、系统的掌握, 相信读者完全可以编写出属于自己的艺术类程序。 59