《零基础学Scratch 3.0编程》以Scratch 3.0版为编程环境,从简单的“Hello Scratch!”程序开始,逐步深入地介绍Scratch编程的六大应用类型,包括动画类、艺术类、游戏类、音乐类、教程类和故事类,每一类都提供典型案例,并详细地讲解每一个案例的完整代码。通过学习本书,读者可以编写出Scratch任一类型的程序。《零基础学Scratch 3.0编程》对青少年编程等级认证也进行了介绍,并提供1~4级考试的真题分析,让读者对青少年编程等级考试的题型和知识点有所了解。
 
  本书适合从小学到大学各年龄段学生作为学习编程的参考用书,也非常适合作为培训机构指导青少年进行编程培训的指定教材。
 
		 
	
前 言
 
 为什么要学习Scratch编程
 Scratch是由美国麻省理工学院媒体实验室“终身幼儿园团队”针对5~16岁儿童和青少年设计的可视化程序设计语言与开发环境。Scratch的目的是“创作和分享自己的交互故事、游戏、音乐和艺术作品”,重点在于循序渐进地培养青少年的创造性思维、逻辑思维和合作学习的能力,使他们在以后的学习中能养成独立分析、解决问题的习惯。
 Scratch的诞生为信息技术课堂注入了新的元素,实现了从“以技术为核心”向“以学生能力为本”的转变。Scratch编程实践不仅能有效地激发学生对程序设计的学习兴趣,更重要的是锻炼了他们的逻辑思维能力,这种能力会伴随他们的一生。此外,学生在使用Scratch创作的同时,也是构思产品的过程,因而能培养他们的创新精神和探索精神。
 Scratch已被翻译成40多种语言,在超过150个国家被使用,相信读者会很快喜欢上它,并且用它设计出更多自己喜爱的作品。
 关于本书
 目前市面上关于Scratch编程的书非常多,尤其是针对Scratch 2.0版的编程书比比皆是,但介绍Scratch 3.0版的书相对较少,因此作者决定在Scratch 3.0版的基础上进行编写。本书并不是单纯将Scratch 2.0版的编程升级为Scratch 3.0,而是真正从零基础开始,逐步深入分析典型案例,系统讲解相关编程技术,帮助读者实现从Scratch编程“菜鸟”到“高手”的飞跃。
 第1章~第3章主要讲述学习Scratch编程的必要基础。首先,介绍少儿学习编程的意义,代码编程与图形编程的区别;然后,介绍Scratch诞生的意义, Scratch 2.0与Scratch 3.0版之间的区别,如何安装Scratch,以及Scratch的编程环境,并从最基础的“Hello Scratch!”小程序开始,正式开启Scratch编程的学习;最后,介绍编程必须掌握的计算机理论,计算机软件和硬件的组成,主流的程序设计语言和Scratch编程的六大应用类型。
 第4章~第9章主要针对Scratch编程的六大应用类型展开讲解。分别详细介绍编写Scratch动画类、艺术类、游戏类、音乐类、故事类和教程类编程的意义以及所需的编程知识,每种应用类型都提供典型的程序案例并深入分析和讲解其实现过程。通过对典型案例的学习,读者可以举一反三,创作出更多、更好的作品。
 第10章~第12章主要是对Scratch编程更高级知识的扩展。数据结构和算法是编写优秀程序的关键,掌握数据结构应用和算法的合理使用是非常重要的。青少年编程等级考试是对青少年编程水平很好的检测;等级考试真题分析则让读者对等级考试考查的编程知识点有更多的了解。
 致  谢
 本书能够顺利编写完成,离不开妻子默默的支持。书中所有实例都经过李天睿同学的严苛测试,感谢李天睿同学一丝不苟地验证和测试每一段程序,以及反馈的很多优化建议。此外,还要感谢王笑冬、鲍展翔、樊宇轩、李子岚、黎书瑞、陈雪琪等同学提供的优秀编程作品作为本书部分实例的参考。
 学习资源
 在微信平台搜索并关注公众号“相信向上的力量”,可以找到本书所使用的软件安装程序以及所有实例的源代码文件。为方便与读者交流,特建立读者交流QQ群926422876。
 
 阿甘于西安
 
 
阿甘:毕业于北京大学,获得硕士学位。曾就职于华为、三星电子等全球500强企业,有14年软件行业工作经历,有三年Scratch少儿编程研究和培训经验,擅长C/C++/Scratch编程。著作有《经典C面试真题精讲》、《ARM嵌入式Linux系统开发从入门到精通》。
 
第1章  少儿为什么要学习编程  //  1
 1.1  少儿编程的现状  //  1
 1.2  编程能为孩子带来什么  //  2
 1.3  代码编程与图形编程的区别  //  3
 1.4  本章小结  //  4
 第2章  初识Scratch编程  //  5
 2.1  什么是Scratch  //  5
 2.2  Scratch 2.0与3.0版的区别  //  6
 2.3  安装Scratch  //  8
 2.3.1  在Windows系统中安装Scratch 3.0  //  8
 2.3.2  在macOS系统中安装Scratch 3.0  //  10
 2.4  开启你的第一个Scratch作品  //  11
 2.4.1  Scratch环境介绍  //  11
 2.4.2  角色移动与旋转  //  13
 2.4.3  “Hello Scratch!”小程序  //  15
 2.5  本章小结  //  17
 第3章  必要的计算机知识  //  18
 3.1  计算机的硬件构成  //  18
 3.2  软件的意义  //  19
 3.3  程序设计语言  //  21
 3.4  Scratch编程的六大应用类型  //  22
 3.5  本章小结  //  23
 第4章  Scratch动画类编程  //  24
 4.1  动画的基本原理  //  24
 4.2  动画类实例一:交通信号灯  //  26
 4.2.1  准备编程素材  //  26
 4.2.2  编写程序  //  27
 4.2.3  验证程序  //  30
 4.2.4  保存程序  //  31
 4.3  动画类实例二:和谐沙滩  //  32
 4.3.1  准备需要的素材  //  33
 4.3.2  编写舞台背景程序  //  33
 4.3.3  编写海鸟角色程序  //  35
 4.3.4  编写鸭子角色程序  //  38
 4.3.5  编写海狮角色程序  //  39
 4.3.6  验证程序  //  40
 4.4  本章小结  //  41
 第5章  Scratch艺术类编程  //  42
 5.1  艺术与STEM的关系  //  42
 5.2  艺术类实例一:电子相册  //  43
 5.2.1  设计思路  //  43
 5.2.2  准备编程素材  //  43
 5.2.3  编写舞台背景程序  //  43
 5.2.4  编写Ready角色程序  //  47
 5.2.5  验证程序  //  50
 5.3  艺术类实例二:绘制房屋  //  51
 5.3.1  设计思路  //  51
 5.3.2  绘制角色实现  //  52
 5.3.3  装饰帽子角色实现  //  56
 5.3.4  舞台背景实现  //  57
 5.3.5  验证程序  //  58
 5.4  本章小结  //  59
 第6章  Scratch游戏类编程  //  60
 6.1  电子游戏的发展与分类  //  60
 6.2  游戏类实例一:贪吃蛇  //  60
 6.2.1  设计思路  //  61
 6.2.2  蛇角色实现  //  61
 6.2.3  食物角色实现  //  63
 6.2.4  炸弹角色实现  //  66
 6.2.5  舞台背景实现  //  67
 6.2.6  验证程序  //  68
 6.3  游戏类实例二:射击害鸟  //  69
 6.3.1  设计思路  //  69
 6.3.2  害鸟角色实现  //  70
 6.3.3  益鸟角色实现  //  72
 6.3.4  子弹角色实现  //  73
 6.3.5  发射器角色实现  //  75
 6.3.6  舞台背景实现  //  75
 6.3.7  验证程序  //  77
 6.4  本章小结  //  78
 第7章  Scratch音乐类编程  //  79
 7.1  音乐类程序介绍  //  79
 7.2  音乐类实例一:演奏儿歌
 《小星星》  //  82
 7.2.1  设计思路  //  82
 7.2.2  演奏角色实现  //  82
 7.2.3  舞台背景实现  //  86
 7.2.4  验证程序  //  87
 7.3  音乐类实例二:测试绝对音感  //  89
 7.3.1  设计思路  //  89
 7.3.2  播放角色实现  //  89
 7.3.3  玩家角色实现  //  92
 7.3.4  验证程序  //  96
 7.4  本章小结  //  98
 第8章 Scratch故事类编程  //  99
 8.1  故事类程序介绍  //  99
 8.2  故事类实例一:守株待兔  //  99
 8.2.1  设计思路  //  100
 8.2.2  创作故事剧本  //  100
 8.2.3  舞台背景实现  //  101
 8.2.4  兔子角色实现  //  102
 8.2.5  农夫角色实现  //  104
 8.2.6  树木角色实现  //  106
 8.2.7  验证程序  //  107
 8.3  故事类实例二:家庭趣事  //  107
 8.3.1  设计思路  //  108
 8.3.2  创作家庭趣事的剧本  //  109
 8.3.3  添加舞台背景图片  //  109
 8.3.4  儿子角色实现  //  111
 8.3.5  爸爸角色实现  //  113
 8.3.6  妈妈角色实现  //  115
 8.3.7  “与爸爸”按钮角色实现  //  116
 8.3.8  “与妈妈”按钮角色实现  //  118
 8.3.9  验证程序  //  118
 8.4  本章小结  //  120
 第9章  Scratch教程类编程  //  121
 9.1  教程类程序介绍  //  121
 9.2  教程类实例:新型冠状病毒  //  122
 9.2.1  需求分析  //  122
 9.2.2  设计思路  //  123
 9.2.3  舞台背景程序  //  123
 9.2.4  “主页”角色实现  //  126
 9.2.5  “病毒介绍”角色实现  //  130
 9.2.6  “传播途径”角色实现  //  132
 9.2.7  “如何预防”角色实现  //  134
 9.2.8  “返回”角色实现  //  135
 9.2.9  验证程序  //  136
 9.3  本章小结  //  139
 第10章  基本数据结构  //  140
 10.1  数据结构介绍  //  140
 10.2  数据结构应用  //  141
 10.2.1  数组应用  //  141
 10.2.2  链表应用  //  142
 10.2.3  队列应用  //  145
 10.2.4  栈应用  //  147
 10.2.5  树简介  //  148
 10.2.6  图简介  //  149
 10.2.7  堆简介  //  149
 10.2.8  散列表简介  //  150
 10.3  本章小结  //  151
 第11章  算法入门  //  152
 11.1  算法简介  //  152
 11.2  常见算法应用  //  153
 11.2.1  递推算法应用:斐波那契数列  //  153
 11.2.2  递归算法应用:汉诺塔  //  155
 11.2.3  排序算法应用:冒泡排序  //  159
 11.2.4  贪心算法应用:兑换货币  //  161
 11.3  本章小结  //  164
 第12章  青少年编程等级认证  //  165
 12.1  青少年编程等级介绍  //  165
 12.1.1  青少年编程教育等级评测  //  165
 12.1.2  全国青少年软件编程等级考试  //  166
 12.2  全国青少年软件编程等级考试真题
 讲解  //  166
 12.2.1  一级真题分析  //  166
 12.2.2  二级真题分析  //  168
 12.2.3  三级真题分析  //  171
 12.2.4  四级真题分析  //  172
 12.3  本章小结  //  175
 参考文献  //  176