版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第6章简易编程工具:Scratch目录6.1 Scratch是什么?6.2 Scratch 能做什么?6.3 Scratch实战演练6.4 在网络上共享你的作品6.5 总结重点和难点重点:认识Scratch的界面,并创建第一个Scratch程序。了解并掌握Scratch八个模块组的基本功能。难点: 掌握Scratch八个模块组的基本功能。综合运用Scratch模块,编写较复杂程序。6.1 Scratch是什么?6.1.1认识Scratch6.1.2 如何安装Scratch6.1.3 Scratch的界面6.1.4 创建我的第一个Scratch程序6.1.1 认识ScratchScratch是一
2、种带有图形界面的可视化编程语言,能让用户创建带交互性的故事、动画、游戏、音乐及视频。它提供了一些具有独特功能的模块(Block),将条件选择结构、循环结构、事件驱动、变量使用、图像和声音的使用等程序设计基本功能模块化允许编程者以类似搭积木的方式把这些模块拼合在一起来编写脚本,从而完成程序设计的过程。Scratch的思想是“想法程序分享” Imagine-Program-Share6.1.1 认识Scratch图6.1 Scratch程序示例6.1.2 如何安装Scratch在安装Scratch之前要先安装Java,以Windows系统下Java的安装为例:进入 网站,然后点击“免费Java下载
3、”按钮,进入相应页面后,点击“同意并开始免费下载”按钮,接着跟随安装向导的提示完成安装即可。Scratch的安装程序可以从 下载,进入网站后,点击“Download Scratch”按钮,根据不同的操作系统选择相应的链接进行下载。下载完成后双击安装文件ScratchInstaller1.4.exe,就可以开始安装,安装过程和其他Windows应用程序类似。6.1.3 Scratch的界面菜单栏模块分组角色区域选项卡6.1.3 Scratch的界面界面右侧白色部分就是舞台区域,即显示程序内容的窗体。单击舞台右上方的绿色旗子可以执行绿旗控制的脚本单击旁边的红色圆圈则表示停止全部脚本舞台区域的下方是
4、角色列表区域,列出了当前作品中所包含的全部角色。Scratch里的一个角色一般是指一个实体,由三个部分构成:造型:用来显示角色外观的图片,一个角色可以有一个或者多个造型。声音:可以作为程序的背景声音,也可以在某个特定的时候播放。脚本:即角色的行为。一个角色可以有自身的行为,例如移动、旋转、隐藏、大小变化等;也可以与其他角色发生交互行为,例如交谈、碰撞等。 6.1.3 Scratch的界面界面中间是角色区域,当前角色的基本信息都在这个区域的顶端显示;基本信息下方的三个选项卡分别是脚本、造型和声音界面左侧是模块区域,包含了八组按功能划分的模块,分别是动作、外观、声音、画笔、控制、侦测、数字和逻辑运
5、算、变量。6.1.4 创建我的第一个Scratch程序【例6-1】让我们创建一个小猫跟我们打招呼的Scratch程序吧。设计程序,让小猫往前走20步后,伴随着鼓声配乐说“你好!”;然后后退20步,伴随着鼓声配乐说“很高兴认识你!”。创建步骤:1. 新建Scratch项目:点击“文件”菜单的“新建”项,新建一个Scratch项目2. 给角色改名:选中角色列表区域的“角色1”,在界面中间顶端文本框中修改其名字,例如改为“喵呜”图6.3 给角色改名6.1.4 创建我的第一个Scratch程序3. 编辑角色的脚本:(1)往前移动20步:点击左上角的“动作”模块分组,从下方出现的一系列模块中选择“移动1
6、0步”模块,拖到中间的角色区域;并把数字10改为20。(2)鼓点配乐:点击“声音”模块分组,从下方面板中选择“弹奏鼓声48 0.2拍”模块,拖到角色区域“移动20步”的下方,让它们连在一起。(3)说“你好!”:点击“外观”模块分组,从下方面板中选择“说你好2秒”,连接到“弹奏鼓声”的下方。(4)请自行完成后退20步,伴随着鼓声配乐说“很高兴认识你!”。脚本段如图6.4:图6.4 “小猫打招呼”脚本段6.1.4 创建我的第一个Scratch程序4. 点击执行:单击刚才编辑好的脚本段,运行该程序。5. 程序的保存:确认程序无误后,点击“文件”菜单的“存档”项或者“另存为”,选择合适的目录,输入文件
7、名,可保存当前的Scratch项目。Scratch文件的默认扩展名为“.sb”。提高要求:如何让小猫前进后退的动作不停地重复?如何让程序点击绿旗后开始?如果删除两个说话的模块,小猫会如何动作?6.2 Scratch 能做什么?Scratch提供了100多种模块,这些模块按功能可以分为八个组,在模块列表中用不同的颜色表示。6.2.1 三类基本模块6.2.2 动作、外观、声音模块组6.2.3画笔模块组6.2.4 变量、数字和逻辑运算模块组6.2.5 控制、侦测模块组6.2.1 三类基本模块从总体来看,Scratch的100多个模块大概可以分为以下三类:堆模块、启动模块和侦测模块。堆模块是指顶部有个
8、凹槽,底部有个凸起的模块。多个堆模块可以上下拼接在一起组成一个脚本段,部分堆模块通过在输入框输入数值来进行配置。启动模块是指顶部是条曲线,底部有个凸起的模块,这种模块一般只能放在脚本段的最上面。侦测模块是指两侧为圆头或者尖头的模块,一般被用于向其他模块提供数值或文本类型的数据。侦测模块可以被镶嵌到有相同形状输入框的其他模块上。启动模块堆模块侦测模块6.2.2 动作、外观、声音模块组1. 动作模块可以控制角色的旋转、朝向、移动和位置,其中:(1)“面向.”模块:使角色面向鼠标指针或者其他角色。(2)“移到.”模块:将角色移动到鼠标指针或者其他角色的位置上。(3)“碰到边缘就反弹”:当角色到达舞台
9、边缘时,旋转到反方向。(4)“X座标”:角色所在位置的X坐标,取值范围为-240240,如果把前面的复选框勾选,则在舞台显示数值。(5)“Y座标”:角色所在位置的Y坐标,取值范围为-180180。(6)“方向”:角色面向的方向,0表示向上,90表示向右,-90表示向左,180表示向下。6.2.2 动作、外观、声音模块组2. 外观模块可以改变角色或背景的造型、颜色、大小及是否显示,还可以在气泡框中显示文字。其中:(1)“切换到造型”:可以切换角色的造型,而角色的造型可以通过角色区域的造型选项卡进行导入和编辑(2)“说你好2秒”:以指定的时间在气泡框中显示相应的文本。(3)“下移1层”:将角色向下
10、移动指定的层数,以便隐藏在其他角色的下面。6.2.2 动作、外观、声音模块组3. 声音模块具有播放音乐、敲打鼓点、选择乐器、调节音量、调整节拍等功能,其中:(1)“播放声音喵”:播放下拉列表中的一个声音,并同时执行下一个模块,下拉列表中的声音可以通过录音或者角色区域的声音选项卡进行导入。(2)“停止0.2拍”:在播放声音时,暂停指定的节拍。(3)“将节奏设定为60bpm”:将角色的节奏设定为每分钟指定的节拍。6.2.2 动作、外观、声音模块组【例6-2】“沙漠漫步”,苍凉的沙漠中,几只小动物在悠扬的音乐声中悠闲地散步。碰到舞台边缘时,还会优雅地转个身,继续漫步。分析思路:(1)导入背景图、新的
11、角色及背景 音乐。(2)搭建角色的脚本段。 重点关注:散步的初始方向是左还是右?散步的速度如何?散步到舞台边缘该如何转身?(3)如何播放背景音乐呢?(4)运行作品及保存。6.2.2 动作、外观、声音模块组创建步骤:(1)新建一个Scratch项目:点击“文件”菜单“新建”项。(2)导入背景图和背景音乐。点击Scratch界面右下方角色列表区域的舞台缩略图,然后选择界面中间角色区域的“多个背景”选项卡,删掉原来的白色“背景1”。接着点击“导入”按钮,这时会打开Scratch自带的Backgrounds背景资源文件夹窗口,从中选择一张图片,然后点击下方的“确定”按钮。本例中选择的是“Nature”
12、文件夹中的“desert”图片。单击“声音”选项卡,然后点击“导入”按钮,打开Scratch自带的声音资源窗口,可以从中选择一个声音文件,也可以用自己准备的其他音乐。本例中选择的是“Electronic”文件夹中的“SpaceRipple”文件6.2.2 动作、外观、声音模块组(3)创建新的角色。 在角色列表区域中先删除原来的小猫角色,然后点击 从文件夹中导入新角色。本例中选择的是“Animals”文件夹中的两张图片。修改新角色的名称,并拖放其在舞台上的位置。(4)编辑角色脚本,让角色动起来点击角色列表区域中兔子角色的缩略图,从控制模块分组中,把“当绿旗被点击”和“重复执行”模块拖入脚本区域,
13、并从动作模块分组中把“移动1步”和“碰到边缘就反弹”模块嵌入到“重复执行”模块中。在编写第二个“河马”角色的脚本段时, 可以直接把“兔子”的脚本段拖拽到 角色列表区域中“河马”角色的缩略 图上。图6.9 兔子角色的脚本段6.2.2 动作、外观、声音模块组(5)编辑舞台脚本,播放背景音乐 把“当绿旗被点击”和“重复执行”模块拖入脚本区域,从声音分组中把 拖入“重复执行”模块中。 因为本例选中的“SpaceRipple”文件有5秒的播放时间,因此从“控制”分组中选择“等待1秒” ,放置在播放声音模块后,并把1改为5。等待声音文件播放完毕后再开始下一次的播放。(6)作品的运行及保存 点击舞台右上角的
14、小绿旗运行脚本, 确认满意后可点击“文件”菜单的 “存档”项保存作品到指定位置。图6.10 播放声音的脚本段6.2.3画笔模块组 画笔模块可以绘制线段和图形,包含落笔和起笔、设定画笔颜色和大小、图章等功能。(1)“落笔”:落下角色的画笔,之后角色移动时将会绘制出线条。(2)“停笔”:停下角色的画笔,之后角色移动时将不绘制线条。(3)“将画笔的颜色值设为0”:将画笔的颜色设定为指定的值,颜色的范围是0(红色)100(蓝色)。(4)“将画笔的色度设定为50”:将画笔的色度设定为指定的值。值越小颜色越深。(5)“图章”:将角色印在舞台上(不包含角色的虚象特效)。6.2.3画笔模块组【例6-3】用Sc
15、ratch完成一个简单的用鼠标绘画的画板程序。当鼠标按下时,可以进行绘图;鼠标放开时则停止绘图。图6.11 简单画板程序示例6.2.3画笔模块组分析思路:(1)首先在每次绘图之前,都需要把舞台上原有的画笔痕迹清空; 其次需要新建一个虚拟的画笔角色,这个角色可以自行绘制一个小黑点,也可以导入一张画笔的图片。(2)拼接“移到鼠标”和“落笔”这两个模块,可以在鼠标所在位置画一个点;而重复执行这两个动作即可实现绘图。 因为简单而言,一个复杂图像是由很多条很短的直线连接组成,而直线又是由很多个紧密相连的点构成。重复执行“在鼠标处画点”这个动作,随着鼠标的移动即可实现绘图功能。而“在鼠标处画点”这个动作,
16、又是由“移到鼠标”和“落笔”两个动作组成。(3)如何实现按下鼠标绘图,放开鼠标则停止绘图呢?要利用“控制”分组中的“如果否则”模块,并嵌入“侦测”分组中的“按下鼠标?”模块进行条件判断。6.2.3画笔模块组创建步骤:(1)新建一个Scratch项目:点击“文件”菜单“新建”项。(2)新建“画笔”角色:先删除原有的小猫角色1,然后点击界面右下角的 按钮绘制新角色“画笔”,在绘图编辑器中绘制一个小黑点即可。(3)编写脚本:点击“画笔”角色,进入其脚本区域。如果不考虑鼠标是否按下,编写好的脚本应该如图6.12。但该脚本是无法控制何时落笔及何时停笔的,该如何修改呢?图6.12 不考虑鼠标是否按下的脚本
17、6.2.3画笔模块组利用“控制”分组中的“如果否则”模块,嵌入“侦测”分组中的“按下鼠标?”模块可以判断鼠标是否按下。修改后的脚本段如图6.13。脚本执行时,首先将舞台上的画笔全部清除,接着是一个无穷循环,中间嵌入了一个分支模块,如果鼠标键按下则将 “画笔”角色移动到鼠标光标位置,然后将画笔设置为落笔状态;否则,即鼠标键没有按下则将画笔设置为停笔状态。提高要求: 如何设置画笔的颜色和线条粗细呢?图6.13 修改后的脚本6.2.4 变量、数字和逻辑运算模块组变量模块组: 变量模块组允许新建多个变量和链表,并对其进行操作。变量用来存储数据,参与运算,也可作为条件或循环模块的判断条件。链表是一种数据
18、集合,里面的数据元素可以是数值也可以是文本字符串,对链表可以有加入、删除、插入、替换等操作。(1)“新建一个变量”:新建一个变量,新建了变量后才会显示和变量相关的模块。新建变量需要输入变量的名字。(2)“变量1”:返回对应变量的值,勾选复选框可以显示在舞台上。(3)“新建一个链表”:新建一个链表。 (4)“链表1”:返回链表里的值,通过复选框勾选可以显示在舞台上。(5)“将东西加入链表链表1”:添加指定的数字或文本到链表的尾部。(6)“链表1包含东西”:判断指定链表中有没包含指定值,如果有则返回真,否则返回假。6.2.4 变量、数字和逻辑运算模块组2. 数字和逻辑运算模块组 数字和逻辑运算模块
19、组具有算术运算、生成随机数、比较运算、逻辑运算、文本操作等功能,也可嵌入到其他模块中有相应形状的输入框中。(1)“.30,则程序停止执行。6.2.5 控制、侦测模块组创建步骤:(1)新建项目,给舞台添加合适的背景,并从文件夹导入两个新角色“大鱼”和“小鱼”。在“变量”模块组中新建两个变量score和time,并勾选前面的复选框。(2)大鱼脚本如下图:图6.18 大鱼脚本段 6.2.5 控制、侦测模块组(3)小鱼脚本如图: 运行该脚本段后,先将得分score变量清零,接着把小鱼下移一层,使得碰到大鱼的时候会显示在大鱼的下方。 然后开始重复执行:把小鱼移到一个随机坐标(x,y),接着等待0.9秒,
20、让玩家有时间把鼠标移动过去,通过修改这个数值可以控制小鱼的移动速度。接着根据“侦测”模块组的“碰到”模块,来控制当碰到大鱼时所发生的动作。图6.19 小鱼脚本段 6.2.5 控制、侦测模块组(4)计时的脚本可以放在大鱼角色中编辑,如下图所示: 点击绿旗运行后,先将计时器归零。 然后重复执行: 先将变量time的值设定为计时器; 然后用“数字和逻辑运算”中的 “大于”模块判断,如果计时器大于 30秒,则停止全部脚本。提高要求:当30秒时间用完时,能否在屏幕上显示“Game Over!”?图6.20 计时脚本段6.3 Scratch实战演练6.3.1 数学运算6.3.2 趣味程序“健康秤”6.3.
21、3 冒泡法排序6.3.4 后缀表达式求值6.3.1数学运算 Scratch中提供了基本的加减乘除等算术运算和变量的新建、修改、显示及隐藏等操作,利用这些功能,我们可以进行一些基本的数学运算。例如多个数求和或求乘积、求最大值最小值等。【例6-6】 求多项式的和 S=1+2+3+100分析思路:(1)这类多项式求和可以用循环实现,首先分析循环次数,100个数求和,需要重复执行100次,可以利用“控制”模块组中的“重复执行 10次”模块。6.3.1数学运算(2)然后分析每次的循环体是什么,即每次需要重复执行的动作有哪些。本例中,用变量i来表示每次要在s上增加的项,于是先把i加到变量s上,即让变量s的
22、值增加i;再把变量i增加1,实现i值的递增。算法如下:重复执行100次 将变量 s的值增加 i 将变量 i 的值增加 1继续循环(3)接着分析变量i和变量s的初始值分别应该是多少?很明显,变量i应该从1开始,而变量s的初始值应该设定为0。这两个模块应该放在循环开始前执行。(4)最后考虑当循环结束后,如何把变量s输出。可以利用“说你好2秒”这个模块。6.3.1数学运算创建步骤:(1)首先拖入启动事件:把“当绿旗被点击”模块拖入到角色的脚本区域(2)新建两个变量i和s:点击“新建一个变量”,分别创建变量i和变量s,并把两个变量前的复选框取消勾选,使其不在舞台上显示。(3)设定i和s的初始值:把变量
23、i的值设定为1,把变量s的值设定为0,拼接在启动模块的下方。(4)搭建循环:拖入“重复执行10次”模块,并把次数改为100。在循环内部,先“将变量s的值增加i”,接着“将变量i的值增加1”。6.3.1数学运算(5)输入结果s:在循环模块的外面,拼接上“说你好2秒”模块,并把变量s嵌入到“你好”的位置。(6)运行并保存:点击舞台右上角的绿旗运行脚本段,观察输出结果是否为5050,如果正确,保存程序。最后的脚本段如下图所示:提高要求: 求s=123410 ,该如何实现? 图6.21 求和脚本段 6.3.1数学运算【例6-7】 某次歌手大奖赛,有10个评委现场打分,分数范围0100,求去掉最高分和最
24、低分后,歌手的平均得分是多少?分析思路:(1)首先假设10个分数的总和是s,最高分用max变量表示,最低分用min变量表示,最终的平均得分用变量a表示,则a=(s-max-min)/8 ,这是最终的得分(2)接着来分析,如何求10个分数的总和呢?这个问题有点类似【例6-6】,区别在于循环次数只有10次,而且每个分数是要在循环内部用“侦测”模块组中的“询问并等待”模块获得,然后把每次的“回答”加到变量s上。算法如下:重复执行10次 询问“评委的打分是?”并等待 将变量s的值增加“回答”继续循环6.3.1数学运算(3)步骤2求出来的和s还需要去掉一个最高分和最低分,我们接下来分析如何求最高分max
25、。先设定max的值是分数范围里的最小值0,然后每次输入一个分数后,把这个分数和max做个比较:如果新的分数大于最大值max了,则把max的值更新为这个分数。这样经过10次重复执行,max里的值就变成10个分数中的最大值了。拼接上步骤2的算法如下:max的值设定为0重复执行10次 询问“评委的打分是?”并等待 将变量s的值增加“回答” 如果“回答” max,那么就把max的值设定为“回答”继续循环6.3.1数学运算 求最低分min的算法类似,但min的初始值应该设定为分数范围内的最高分100,并且比较语句应该改为:如果“回答”max”模块嵌入到条件位置,并在“如果”模块内部,放入“将变量max的
26、值设定为回答”。min的判断和更新过程类似,请自行完成。(4)求变量s和变量a的值: 在循环模块外,拼接上“将变量s的值设定为s-max-min”模块,其中“s-max-min”是用两个“.-.”相减模块镶嵌而成。然后“将变量a的值设定为s/8”,其中“s/8”是一个相除模块。6.3.1数学运算(5)结果的输出:最终平均分a的输出利用“说a 2秒”模块,其中“a”是把变量a嵌入其中。最后的脚本段如图所示:提高要求: 如何保证评委的打分始终在0100之间? 图6.22 评委打分脚本段6.3.2 趣味程序“健康秤” 【例6-8】“健康秤”是一个根据身高和体重来评价你是否健康的趣味小程序。 舞台上的
27、角色询问你的身高(以厘米为单位)和体重(以公斤为单位),然后根据公式来对数值进行计算比较后,做出相应的评价。如果你的体重超过标准体重的1.1倍,给出“您的体重已超标,请加强锻炼!”的评语;如果体重小于标准体重的90%,则给出“您的体重未达标,请注意营养!”的评语;如果体重在标准体重的90%1.1倍之间,则给出“您的身材非常标准!”的评语。标准体重的计算公式是:标准体重=身高-105。请自行设计舞台背景、音乐和角色造型。参考界面如图所示:6.3.2 趣味程序“健康秤”图6.23 健康秤 参考界面6.3.2 趣味程序“健康秤”分析思路:(1)首先是身高和体重数据的输入:利用“询问并等待”模块让用户
28、输入相应数据,并保存在变量“身高”和“体重”中。(2)这个程序的主体可以分为三种情况:如果体重标准体重的1.1倍,输出“您的体重已超标”;如果体重标准体重* 1.1 或 体重标准体重* 1.1 则 提示“您的体重已超标” 结束如果 如果 体重标准体重* 1.1 或 体重标准体重* 1.1”和“体重标准体重* 0.9”两种情况的判断,并拼入相应的“说2秒”模块,进行信息提示。6.3.2 趣味程序“健康秤”图6.24 健康秤脚本段6.3.3冒泡法排序 冒泡法排序是一种比较简单、易懂的排序算法。以从小到大排序为例,冒泡法的主要思想是: 扫描原始序列的数据(一般用数组元素来表示原始序列),将相邻两个数
29、进行比较:把较大的数调到后面,小的数则像比较轻的气泡一样调到前面。 如果有n个数用冒泡法排序,则要进行n-1轮排序,并且在其中的第i轮排序中,要进行n-i次两两比较。从小到大排序的冒泡算法描述如下:i=1 循环当i=n-1 时 j=1 循环当j第j+1项,则交换 第j项 和第j+1项 j增加1 继续回到j循环 i增加1 继续回到i循环6.3.3冒泡法排序【例6-9】输入5位同学的期末成绩,并从低到高对其排序。 由于Scratch里没有数组这种形式,因此我们用其提供的链表结构来模拟数组,链表中的一项就相当于数组中的一个元素。Scratch除了提供链表的新建及删除功能外,还提供了:把元素加入链表(
30、默认加入到最后一项)删除链表的某一项把元素插入到链表的指定位置把链表中的某一项替换为某个元素获得链表的指定项获得链表的长度判断链表中是否包含某元素等功能。6.3.3冒泡法排序分析思路:(1)首先要把5个成绩数据添加到链表中:利用“询问”和“回答”模块让用户输入数据,并将回答加入到新建的链表中。这样的行为重复5次即可把5个数据加入到链表中。由于Scratch是不会自动清空链表的,因此在添加数据前,需要放置一个模块删除链表中的全部项。算法如下:删除链表中的全部项重复执行5次 询问“你的成绩是?”并等待 将“回答”加入到链表继续循环6.3.3冒泡法排序(2)实现冒泡算法:用变量i来控制是第几轮排序,
31、用变量j来控制第i轮排序中是第几次两两比较。其中i的范围是1 n-1,j的范围是 1 n-i。循环的控制可以用“重复执行直到”模块,表示重复执行模块内的脚本直到条件成立才停止。修改上面提到的冒泡算法如下: 将变量i的值设定为1 重复执行直到in-1 将变量j的值设定为1 重复执行直到jn-i 如果链表的第j项 第j+1项,则交换 第j项 和第j+1项 将变量j的值增加1 继续回到j循环 将变量i的值增加1 继续回到i循环6.3.3冒泡法排序 现在问题集中在,如果链表的第j项 第j+1项,如何实现“交换 第j项 和第j+1项”?Scratch中的链表没有提供直接的交换操作,我们采用的办法是:先把
32、第j项插入到j+2的位置,再删除第j项。请自行修改上面的算法。(3)让冒泡的过程可见: 上述的算法在scratch中执行是一眨眼的功夫,我们无法直观地看到冒泡交换的详细过程,因此在“继续回到j循环”和“继续回到i循环”前面分别插入一个控制模块组中的“等待1秒”模块,让每次循环的速度变慢,由此来观察冒泡法排序的进行过程。6.3.3冒泡法排序创建步骤:(1)新建一个链表“成绩”,勾选链表前的复选框,使其显示在舞台上,方便我们观察冒泡排序的过程。(2)添加5个成绩到链表中: 在脚本区域拖入“当绿旗被点击”模块,把“变量”模块组中的“删除链表成绩的全部项”模块拼到下方,先清空“成绩”链表。然后重复执行
33、5次,每次先“询问你的成绩是?并等待”,接着“把回答加入链表成绩”。这样用户输入的5个成绩就被添加到“成绩”链表中,每次新添加的数据自动变为链表的最后一项。(3)实现冒泡算法: 先新建两个变量i和j,经过前面的分析我们知道i的范围是1到4重复执行,因此在上述脚本的后面拼接上“将变量i的值设定为1”模块,接着拖入“重复执行直到”模块,在条件位置嵌入“i 4”模块。6.3.3冒泡法排序在这个“重复执行直到i 4”模块内部,j的变化范围是从1到5 - i重复执行,因此首先“将变量j的值设定为1”,然后拖入模块“重复执行直到j 5 - i”。模块内部放入一个“如果”模块,该模块的条件由“链表成绩的第j
34、项链表成绩的第j+1项”组合而成。如果该条件成立,则交换第j项和第j+1项。即在模块内部先拼接上“将链表成绩的第j项插入到链表成绩的第j+2位置”模块,再拼上“删除链表成绩的第j项”模块。“如果”模块的下方,连上“将变量j的值增加1”模块和“等待1秒”模块。并在“重复执行直到j 5 - i”模块下方拼上“将变量i的值增加1”模块和“等待1秒”模块。6.3.3冒泡法排序最后的脚本段如图:图6.25 冒泡法排序脚本段6.3.4后缀表达式求值几乎所有的程序设计语言都具有表达式计算求值的功能,因此表达式求值是程序设计语言编译中的一个基本问题。简单来说就是,每种程序设计语言都需要考虑如何让计算机能够快速
35、准确的对一个表达式进行求值。以算术表达式为例,常见的表示形式有中缀、前缀和后缀表达式。(1)中缀表达式:把运算符放在两个操作数的中间。我们日常生活中最常见就是这种形式,例如a*b+(c-d)/f。中缀表达式虽然比较符合我们的日常书写习惯,但存在运算符的优先权与结合性的问题,使得中缀表达式不太容易被计算机解析。6.3.4后缀表达式求值(2)前缀表达式:把运算符放在两个操作数的前面。(3)后缀表达式:把运算符放在两个操作数的后面。后缀表达式使计算机能轻松的对表达式进行解析求值,因此在计算机科学中被普遍使用。前后缀表达式有以下三个公共特征:(1)操作数的顺序与等价的中缀表达式中操作数的顺序一致;(2
36、)不需要括号;(3)操作符的优先级不相关。6.3.4后缀表达式求值下表列出了几个中缀表达式对应的后缀表达式:中缀表达式后缀表达式a+bab+a+b*cabc*+a*b*c+c*dab*c*cd*+(a+b)*(c-d)*e+f)ab+cd-e*f+*a+(b-c/d)*eabcd/-e*+6.3.4后缀表达式求值在计算机中,一般用堆栈结构来实现对后缀表达式的求值,堆栈的主要特点是“先进后出”,接下去介绍对后缀表达式求值的方法:(1)从左到右读入后缀表达式,若读到的是操作数,将它压入堆栈;(2)若读到的是运算符,就从栈中连续弹出两个元素,进行相应的运算并将结果压入栈中;(3)当读入结束符时,栈顶
37、元素就是计算的结果。6.3.4后缀表达式求值【例6-10】编写程序,输入一个后缀表达式对其求值,当输入“=”号时,把结果输出。 例如输入后缀表达式5342/-1*+ ,并输入“=”,最终输出的结果应该是对应中缀表达式5+(3-4/2)*1的值,即为6。 假设只有加减乘除“+”、“-”、“*”、“/”这四种基本运算。6.3.4后缀表达式求值在Scratch中编写一个对后缀表达式求值的程序,主要考虑以下几点:(1)用链表模拟堆栈: Scratch中没有严格的堆栈结构,因此我们用链表来模拟堆栈的“先进后出”,每次只对链表的第一项进行操作。(2)“压入堆栈”操作的实现: 当读到操作数时,将它插入到链表
38、的第一项,就实现了“压入堆栈”的动作。(3)用“保存”+“删除”模拟“弹出”操作: 当读到的是运算符时,如何弹出两个元素呢?我们采用的办法是:先把链表的第一项保存到一个变量中,再删除链表的第一项;接着继续保存第一项到另一个变量中,再删除第一项。(4)用“=”号来模拟结束符: 当读到的是“=”号这个结束符时,直接把链表的第一项输出就是结果了。6.3.4后缀表达式求值分析思路:(1)首先是后缀表达式的输入:在输入前,先清空链表;然后重复执行“询问并等待”模块,用户每次在输入框中输入后缀表达式从左往右的一个字符。该字符被自动放入“回答”模块。(2)其次是对新输入字符的处理,可以分成三种情况: 如果新
39、输入的回答是“=”号:用“说.2秒”模块把链表的第一项输出;并停止运行脚本。 如果新输入的回答是“+”或“-”或“*”或“/”,分下面两步操作: a. 弹出链表中的两个元素:先将链表的第一项保存到一个变量x中,再删除链表的第一项;这时原来的第二项就变为第一项,接着继续保存第一项到另一个变量y中,再删除第一项。6.3.4后缀表达式求值b. 根据不同的运算符,进行不同的运算,并把结果加入到链表的第一项。这里特别要注意的是根据“先进后出”的特点,第二个弹出的变量y其实是先被输入到链表中的。因此当进行减法和除法运算时,正确的结果应该是y-x 和 y/x。如果是“+”号,则把x+y加入到链表第一项;如果
40、是“-”号,则把y-x加入到链表第一项;如果是“*”号,则把x*y加入到链表第一项;如果是“/”号,则把y/x加入到链表第一项。如果新输入的回答是操作数:将回答插入到链表的第一项。 但操作数的判断在Scratch里较难进行,因此我们采用的是用一个“如果否则”模块来判断回答是否为运算符,如果是,进行相应的操作;它的否则部分,就意味着新输入的回答是一个操作数了。 6.3.4后缀表达式求值创建步骤:(1)新建一个链表“表达式”, 用来保存输入的操作数和计算结果,并勾选前面的复选框使其显示在舞台,方便观察求值的过程;新建两个变量x和y,用来保存当读到运算符时弹出的两个操作数。(2)在脚本区域拖入“当绿
41、旗被点击”模块,在其下方拼接上“删除链表表达式的全部项”。(3)接下去拖入重复执行模块:进入模块内部首先连上“询问输入的字符是?并等待”模块,用户输入的字符被自动存入“回答”模块。接着根据“回答”的三种情况处理。输入了“=”号时:先拼上一个“如果”模块,条件位置嵌入“回答= =”模块。在“如果”模块的内部,首先输出结果,“说链表表达式的第1项2秒”;然后“停止执行这个脚本”模块。6.3.4后缀表达式求值输入了运算符时:在上面的“如果”模块后,拼上一个“如果否则”模块,条件位置嵌入三个“或”模块组合而成的“回答= + 或 回答= - 或回答= * 或 回答= /”模块。在“如果”模块的内部,先弹
42、出两个操作数:“将变量x的值设定为链表表达式第1项”,“删除链表表达式第1项”;“将变量y的值设定为链表表达式第1项”,“删除链表表达式第1项”;这样栈顶的两个操作数分别保存在变量x和y中。其中y里面保存的是先输入的操作数。接着用4个“如果”模块,分别判断运算符的四种情况:继续拼入“如果回答= +”模块,该模块内部拼入“将x+y插入到链表表达式第1项”模块。其余情况请自行完成,特别注意当碰到“-”和“/”号时x和y的顺序问题。输入的是操作数时:在上面的“如果否则”模块中的“否则”部分,拼入“将回答插入到链表表达式的1位置”。6.3.4后缀表达式求值图6.27 后缀表达式求值脚本段6.4 在网络上共享你的作品 Scratch作品只能运行于Scratch的集成开发环境中或者是Scratch的网站 。 Scratch网站可以很方便的上传、观看、下载作品,因此接下来我们讲解下如何把自己的作品上传到Scratch网站上,和别人分享。(1)要在Scratch网站上查看和运行Scratch作品,需要使用支持 Java 的浏览器。访问Scratch 网站并单击任何一个Scratch作品,如果能打开观看该作品则说明浏览器是支持Java的,否则就要根据网站的提示向导先安装Java。(2)注册账号。要把自己的作品上传
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年体育赛事临时租场合同
- 2024灯光亮化工程设计合同
- 2024年度劳务派遣服务合同(安装工人)
- 2024年建筑工程劳务分包协议书
- 深海剪影课件教学课件
- 2024年幕墙工程质量保修合同
- 2024年度新能源技术研发与转让合同
- 2024年度房产市场监管合同:不动产市场调控配合
- 2024年度观白活力中心房地产项目环境影响评估合同
- 2024年度塔吊配件采购供应合同
- 新人教版七年级上册生物全册知识点(期末复习用)
- 2023乌鲁木齐法院书记员真题
- 金属切削原理与刀具夏云才课后参考答案
- 2024年江苏南通市如皋市有线如皋分公司招聘笔试参考题库含答案解析
- 记叙文阅读:小说-2023年中考语文复习练(江苏)(解析版)
- 提高生产流程效率加快产品交付速度
- 部编版六年级上语文阅读技巧及解答
- 斯派克max操作手册
- 项目四 三人表决器ppt课件
- 结合子的机械加工工艺规程及铣槽的夹具设计
- 林武樟 完整阳宅讲义 笔记版[方案]
评论
0/150
提交评论