1、Scratch与创意计算 教师培训,上海师范大学 信息与机电工程学院 计算机系王旭卿 ,普陀区教育学院,2014年3月4月,培训内容,1,2,3,4,Mitch Resnick 让我们教孩子编码吧,2012年TED讲座,MIT媒体实验室 终身幼儿园研究小组 (Lifelong Kindergarten Group) 主任 开发Scratch的负责人 Mitchel Resnick教授,“当今,年轻人有很多与新技术互动的经历但他们却很少有机会使用新技术去创建或表达自己”,数字时代也需要“脱盲”,Resnick列举教孩子编码的好处,“这样他们就能不仅是读 新技术,而且能创造新技术。”,Read a
2、nd Create,在学习中编程,在编程中学习 Learning to code, coding to learn,掌握问题求解技能和项目设计策略,设 计,用新技术表达自我,表达,数字流畅能力,这些技能不仅在各专业领域受用无穷,更是在生活中也不可或缺的能力,从编写代码到创意计算,第一讲 Scratch编程简介,1.Scratch编程特点 2.开发动机与意图 3.集成开发环境 4.编程环境与语言设计 5.Scratch与21世纪能力培养,可视化图块式编程工具,Scratch,面向8至16岁的儿童和青少年 可视化程序设计语言与开发环境,文本编程工具(VB、Java、C#、Python),Scrat
3、ch编程特点,Scratch编程特点,1,2,3,4,5,6,1. “搭积木”式的程序设计模式,编程选择、拖拉、拼搭彩色代码块(或称为指令块 Code Block) 代表不同命令或行为 组成可执行的代码堆(脚本) 控制程序逻辑,Scratch作品的组成,作品可以保存为本地文件(.sb),也可以上传到Scratch官网,与同伴分享,控制,2. 程序操控丰富媒体素材,包含程序逻辑的脚本(Script) 控制角色(二维图形对象)在舞台(背景)上移动。,摆弄性编程方式(Tinkering),以不同的顺序和组合方式来拼搭指令块、组成脚本堆,边执行程序,边观察执行效果。 Scratch 编程环境和编程语言
4、支持 自上而下的规划、设计 自底向上的摆弄,3. 低门槛、高界限与宽空间 low-floor / high-ceiling / wide-walls,前两个编程语言的特征是Papert提出的,创作类型丰富的交互式多媒体作品,4. 深厚的分享特性,Scratch官网:http:/scratch.mit.edu/,在线社区是青少年使用编程工具和分享编程作品的社交情境,Scratch社交平台分享(上传)作品 观看、下载、研究作品 给予评论、关注好友 赞、收藏,Scratch 2.0网站的社交交互性更强,5. 与真实世界无缝衔接,利用Scratch操控外部设备,创建虚实结合的作品:S4A作品:智能红绿
5、灯,支持中文、免费使用,软件启动几秒后,自动测试操作系统版本,变换为简体中文的界面 Scratch 2.0:云平台创作环境、离线编辑器,Scratch的开发,1、开发历程 2、开发缘起 3、开发意图,开发历程,MIT媒体实验室的“终身幼儿园研究小组”历时四年开发 2007年5月Scratch软件首度公开 Scratch官网投入使用 早期版本为1.4版 Scratch2.0已上线,离线编辑器Beta版可下载使用,开发缘起,满足课外计算机活动俱乐部经济弱势青少年的需求和兴趣 让学生把可编程性添加到控制媒体的活动 提升青少年的技术流畅性technology fluency 鼓励青少年通过探究和同伴分
6、享进行学习,非直接教学,Scratch的推广:从课外到学校,开发Scratch的灵感来源,嘻哈音乐主持人(hip-hop DJ)善于混搭和刮擦唱片来创建新颖、独特的音乐。,Scratch,“搓盘”、“搓碟”,DJ利用唱片反转的声响做音乐的技巧 百度百科,Scratch也试图让用户用预制的代码块拼搭/堆叠在一起去控制图形、照片、音乐、声音、文字等,组合成独特的创造品。,Scratch的开发理念,基于西蒙派珀特(Logo发明者)的建造主义观点 学生通过创建制品建构知识 学生与同伴、专家互动 提供学生知识建构的环境 信息技术工具是认知工具,注:使用Scratch内置工具画图、录制解说或拍摄照片,开发
7、意图之一:鼓励创意表达,“我们的目的不是要创建电脑程序编写大军,而是帮助电脑使用者表达自己。” SCRATCH项目的负责人(凯伦.布雷南),想法 Idea,编程 Program,互动媒体作品 Interactive Project,开发意图之二:鼓励探究,快速入门,观看【入门指南Getting Started Guide S14_cn.pdf】 跟着做 移动、跳舞、变色、响应按键、增加角色、说话、角色变换造型,Scratch的集成开发环境(IDE),1、舞台,指示鼠标在舞台上的坐标,舞台为作品中角色之间的互动或者角色与用户之间的互动提供了场地,舞台的坐标系统,2、角色 Sprite,Actor
8、,底色透明的二维图像 默认角色为小猫 角色包含三部分要素 脚本:控制行为 造型:改变外观 声音:导入录音,3、角色列表,舞台和角色都是Scratch控制的对象 先选舞台或某个角色才能对它的脚本、造型和声音进行编辑 舞台也有三部分要素(脚本、造型和声音),4、新增角色,用内置绘图编辑器绘制角色 导入角色 随机选一个角色,导入角色(带脚本的/不带脚本),5、代码块区,四种八类代码块 四种不同形状 八类不同颜色 125个代码块,四种形状代码块 句法可视化,使用读出数,舞台上显示侦测代码块或变量的值,拖拉、拼搭代码块,白色高亮条表示可以插入,插入点,查看代码块帮助,右击代码块,快捷菜单上选“帮助”,6
9、、脚本区编辑脚本,脚本块(代码堆)内,代码块至上而下顺序执行; 多个脚本块可并行执行;,脚本区编辑造型,创建一个造型,复制再修改-类似造型,脚本区编辑声音,录制故事中的人物对话 导入背景音乐等,7、当前角色信息区,角色命名 角色坐标 角色方向(拖动蓝线可修改方向值) 旋转风格,角色位置加锁,演示模式播放作品时角色不能被拖动,8、工具条,复制角色 删除角色 放大角色 缩小角色,9、菜单,方便上传作品,10、启动和结束程序按钮,绿旗提供一条同时启动多个脚本的捷径 点击绿旗启动所有以 开头的脚本块,三段脚本分别控制一个角色的不同行为(分而治之),并行执行。,11、绘图编辑器,详细的Scratch I
10、DE介绍,浏览官网文档【参考指南Reference Guide_14_zh-cn.pdf】,匠心独运的 编程环境和语言设计,Scratch编程环境的 设计思路,采用图块式编程的好处,编程环境的设计思路,单一窗口用户界面 活动性和摆弄性 让执行过程可视化 无出错信息 让数据变得具体 使命令集最少化,2. Scratch是活动的和可摆弄的,Scratch总是活动的,可摆弄:多种探究代码块功能的途径,单击:测试代码块的功能 在脚本区测试 在代码区测试 单击参数代码块,可以在卡通似的“交谈泡泡”中显示它们的返回值。,可摆弄:多种探究代码块功能的途径,代码块自带默认参数,给出应用示范 查看代码块的帮助信
11、息,Scratch是可摆弄的,支持自底向上、分而治之的脚本编写方式 测试一个代码块 组装和测试代码堆(脚本块) 再组合成更大的执行单元,测试中的脚本块,可以保留在脚本区中,保存在作品文件中 如同在文本编程语言中已注释掉的代码一样,2.让Scratch执行过程可视化,让执行过程可视化、实时反馈,提供脚本执行的即时反馈 执行过程可视化 执行结果(数据)可视化,反馈可视化:显示脚本的执行,正在执行的脚本,被发亮的白色边框包围脚本遇到错误(如被0除),那么边框就会变成红色,引发错误的代码块就会用红色高亮/突出显示。,显示代码块的执行顺序和控制流向,单步执行,观察脚本执行过程 没用单步,Scratch也
12、更新代码块执行结果 代码块的结果是排除故障的可视化线索,4. 无出错信息,Scratch没有出错信息,代码块只用有意义的方式粘合在一起通过让所有的代码块故障弱化(failsoft)来消除运行时的错误 输入超出范围时,在限定的范围内做合理的事,消除出错信息不是消除错误,编写脚本时仔细思考,做想要的事情 排除故障,检查那些不符合设计预期的脚本,5. 让数据变得具体,变量可观察、可操纵,变量显示为舞台上的变量监视器 帮助学生建立变量是如何工作的心理图示 监视器是方便的读出器,或者使用可选的滑竿来控制,链表的监视器,快速的动画可以呈现链表操作的结果,例如,当链表元素被访问时,该元素的索引就会闪烁。,S
13、cratch编程语言的设计思路,编程语言的设计思路,1. 句法(可视化积木块),句法的可视化:代码块形状和组合规则,堆代码块,堆代码块被堆叠,创建代码块序列,叫做代码堆/脚本块 凹槽和凸起(notches and bumps)会粘合在一起,像拼图块一样,控制结构代码块,嵌套代码块序列的代码块 是一个不可分离的单元 循环代码块或分支代码块的结束臂是控制结构的组成部分,它不会被错放位置 嵌套封闭的代码块序列,侦测代码块,像操作数 不可以像堆代码块一样插入代码堆 作为代码块的参数嵌入,组成表达式,启动代码块,把事件(如启动、鼠标单击、按键)与处理事件的代码堆连接起来,参数插槽(parameter s
14、lots),参数插槽的形状表明了参数的类型(数值、字符串和布尔逻辑) 有些参数插槽(具有白色背景)允许用户输入来自键盘的值。,参数插槽,具有下拉菜单或是颜色选择器 接收侦测代码块,可视化反馈,拼搭时,呈现序列插入点(堆代码块)或者参数插槽目的地(侦测代码块),拆散代码堆,抓住代码堆的顶部代码块,拖拉整个代码堆 抓住代码堆中间的一个代码块,分离下方的代码堆,2. 数据类型,Scratch有三种一级数据类型,布尔逻辑、数值和字符串 用在表达式、存储为变量或用内置函数返回的类型,参数插槽的形状 数据类型 三种参数插槽形状侦测代码块的形状 返回的类型两种函数代码块形状:布尔逻辑和数值/字符串。 Scr
15、atch变量不分类型,可以包含数值或字符串。,侦测代码块可插入参数插槽中,布尔逻辑参数插槽最严格,只接受布尔型函数代码块 数值和字符串参数插槽不太严格,可接受任何类型的函数代码块 如果需要的话,可以强制参数转为目标类型,Scratch变量容纳任何数据类型,无需在创建变量时指定变量的类型 自动根据情境在数值和字符串之间进行转换,3. 角色:Scratch对象模型,角色是对象,角色封装了状态(变量)和行为(脚本) Scratch是基于对象的语言而不是面向对象的语言 既没有类也没有继承,代码块只针对角色操作,角色不能调用诸如移动其他角色的代码块 用面向对象的术语,每个代码块的隐含接受者就是在其中出现
16、的角色,每个角色有它独立的脚本集合,容易理解 编辑脚本只影响到脚本出现的那个角色,管理具有相同行为的多个角色,使用图章工具创建脚本的多个副本 实现把某个角色的脚本集合复制到其他角色,4. 角色间的通讯和共享,广播机制支持角色间通讯和同步,任何角色都可以广播一个消息(任意的字符串) 广播会触发开始于“当我接收”触发器代码块的所有角色,Scratch广播模式,一对多 一个给定的广播会触发许多脚本(可能多个角色的) 松散耦合 它并不关心有多少个接收者 异步 广播消息后,不必等待被触发的脚本完成,类似于启动一个线程 同步 所有被触发的脚本完成前等待,角色可以被共享,角色是自立的,只与其他角色松散地耦合
17、 在不破坏依赖关系的前提下,可以保存角色文件,以便角色在项目间移动,共享角色鼓励代码复用和合作,把角色导入到自己的项目中 学习新的代码块和编程技巧 共享角色促进合作 合作开发时,每个人独立开发角色,然后把那些角色整合在一起,以创建最后的作品,5. 并行(多线程),角色同时做几件事,所有这些脚本可以同步执行,并行控制机制,以一种避免大多数竞争条件(race condition)的方式把并行控制建立到它的线程模型中 通过限制线程切换发生的地方来实现,线程切换只发生在两个地方: 显式等待的代码块(例如,等待1秒) 在循环结束 线程切换不能在没有等待语句的代码序列中间发生,或者在检测if代码块中间发生
18、,没有消除所有的同步问题,当多个脚本由一个事件或广播触发,那些脚本的执行顺序不是用户所期望的 指定脚本的执行顺序:让事件触发一个脚本,然后以所期望的次序再触发其他脚本,Scratch与21世纪学习能力培养,Scratch有助于培养21世纪学习技能,Scratch核心思想,在探究、即时反馈中学习编程,掌握基于设计的创作方法,Scratch提供了知识和能力迁移的基础,国内教师提出Scratch教学的目标,逻辑推理能力 调试、修改程序 把想法变成为程序 持续的专注力,制作作品的基本步骤,新建项目 增添项目的背景 增添角色 导入音乐文件 用脚本为各角色加入程序逻辑 调试程序 保存项目,制作作品(害羞的Wiggly),观察一个简单示例【Mr. Wigglys Dance】 分析如何实现,