Scratch做个计算器

来源 :电脑报 | 被引量 : 0次 | 上传用户:gang_zai1314
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  计算器大家都用过,今天我们用Scratch编写一个计算器程序。它可以计算两个数之间的加减乘除运算,还有清除键C。点击所有按钮有音效,当输入错误时还有错误音效提示(如图1)。



  1. 素材准备
  为了方便,数字按钮0~9和清除键C我们使用Scratch内置的数字和字母角色。运算符号是在Scratch里手工绘制的。这个程序只完成了计算器的最基本功能,没有考虑美化工作,为了美观可以导入更好看的按钮角色。
  2. 算法分析及设置变量
  程序中需要的变量是根据算法需求来设置的。我们在编写程序前需要分析算法,同时确定必要的变量,在程序编写过程中如果发现需要添加临时变量时再临时添加。
  我们从1+2=3这个基础算式开始分析,这个算式中除了等号外的每个块实际计算时都可能发生变化,所以都需要一个单独变量存储,这就确定了主要变量有:“X、Y、运算符、答”。(如图2)。



  3. 观察程序运行图(如图1),运算过程和结果的显示是通过大字显示的变量实现的,需要一个“显示信息”变量,作为计算器的显示屏。这个变量需要勾选显示,并在舞台中右键设置为大字显示(如图3)。



  4. 分析正常运算时的操作步骤,先输入前数X,再输入运算符,接着输入后数Y,点等号计算结果。
  那么怎样判断输入的数字是需要存入前数X还是后数Y呢,这就需要一个记录是否已经输入运算符的变量“判断前后数字”,变量在程序开始时为0,当点击某个“运算符号”角色时,将这个变量设为1。之后输入的任意数字就存入Y直到点击“等于”角色(如图4)。



  5. 在测试程序时我发现有个Bug。当点击“等于”计算出结果后,再点击数字会在结果后继续输入数字。
  为了解决这个问题,我额外添加了一个变量,用来判断是否已经点过“等号”了。这个变量是“等待清除指示”,初始化时设为0,点击“等号”后设为1。然后除了复位键C和等号外的所有角色再添加一层判断,如果“等待清除指示=0”那么开始正常执行,否则意味着已经有计算结果无需执行并播放报错音。
  6. 程序初始化和复位键C
  在程序开始时需要对这些变量赋值。
  无论前数X、后数Y还是答案初始值都不能是0,因为输入的数字和结果可能就是0。为了给程序判定这些值处于初始状态,我们给它们一个英文作为初始值,就用电脑报的简称“cpcw”吧,其实任意英文都可以。
  “显示信息”初始时应该什么都不显示,所以删除其中的数字设定为“空”。
  这些初始值在清除键C上编程设置,因为程序开始和计算完按C键重置时都需要这样初始化,所以同样的语句在点击绿旗和点击角色时都需要执行一次(如图5)。



  这里我们为变量赋值为空是一个重要的知识点,请注意体会。
  7. 数字角色编程
  以数字键1为例,为0到9的数字键编程。完全编写好1之后,直接拖动代码块到另外的角色上(这个角色会抖动)放开就可以复制代码到同类角色上了。
  点击数字1时,需要将数字1显示出来并根据当前情况将数值1赋值给前数X或后数Y。
  如果“判断前后数字=0”成立,说明还没有输入过运算符,现在点击的数字都需要赋值给前数X。在赋值给前数X时,判断“X=cpcw”是否成立,成立说明X还是第一次赋值,需要先给X赋值为“空”。如果X里已经有数值,需要将1添加到X的末位。并显示X(如图6)。



  否則赋值给后数Y(如图7)。



  在完成基础功能后,外层再添加条件判断“等待清除指示=0”,等于0说明没有点击过等号可以执行,否则停止执行并播放错误提示音E Elec Bsaa。避免计算出结果后还可以输入数字的Bug(如图8)。



  提示音需要在声音中找E Elec Bsaa并添加。拖放操作可以复制给其他需要用到这个错误提示音的角色。
  由于需要判断的情况很多,在实际编写过程中代码是在完成基础赋值和显示功能后不断完善的,所以后续的情况判断就一层层包裹在核心功能之外了。看起来结构比较复杂,可以拆开一部分一部分的理解。
  将1的代码块通过拖放操作复制给其他数字角色,修改图7中标红圈的3个位置为相应数字即可。这三处表示赋值给X、Y和显示信息末位。
  8. 运算符角色编程
  当点击运算符号后,把“判断前后数字”赋值为1,表示已經输入了运算符号,这样以后再按数字会把数值赋给后数Y。
  根据点击符号不同,为变量“运算符”赋值“+、-、×、÷”。
  以加号为例,运算符号总是在后数Y之前输入,所以判断当“Y=cpcw”也就是后数Y还没有输入的情况下,修改显示信息的值为“连接‘显示信息’和‘+’”。否则后数已经输入播放错误提示音(如图9)。



  9. 等号编程
  点击等号后,将“等待清除指示”设为1,表示已经执行过运算了,不能再继续输入数字了。
  判断如果“答=cpcw”表示,变量“答”处于初始状态。可以进行后续计算,根据不同的运算符号判断执行相应的运算过程。否则发出错误提示音。
  以加法为例,点击等号后,根据“运算符=+”判定需要进行加法运算,将“答”设为“X+Y”的结果。
  将“显示信息”设为“‘显示信息’和‘=’”,把等号加入显示屏。
  将“显示信息”设为“‘显示信息’和‘答’”,把加法计算结果加入显示屏。
  其他运算方式以此类推。
  10. 测试和优化
  回顾我编写这个计算器的过程,更多的精力花在了处理各种不按套路输入引发的各种错误,俗称的找Bug上面了。
  我先编写了数字1和加号和等号加法的部分,很快就实现了1+1=2的基本计算和正常显示。
  然后开始各种胡乱点击测试异常,并解决测试过程中遇到的Bug。基本改好之后才复制代码给其他数字和符号,开始下一轮测试。
  比如没有输入前数X就可以输入加号或已经输入后数Y之后还可以继续点加号,导致计算结果错误。解决办法就是添加“X=cpcw不成立”且“运算符=0”的判断,表示已经输入了X且没有输入运算符。添加“Y=cpcw”的判断,表示后数Y还没有输入。只有这些条件都成立时,才允许输入运算符号。
  又比如在计算出结果后还可以输入数字的Bug。解决办法就是加入了一个新的变量“等待清除指示”记录是否已经点击过等号。这个解决办法引入了新的变量,是不是还可以在不引入新变量的基础上更巧妙地解决还需要更多的思考。
  虽然表面上只是程序中的一条判断或一个辅助变量,但那背后都是为了解决Bug掉的头发啊,我秃了也变强了。
  链接:https://pan.baidu.com/s/
  1AoWxsbkb22eP5STc91SYRg
  提取码:p30l
其他文献
小说范本  《侠隐阁》的战斗与主要玩法等内容基本都延续了前辈《侠客风云传》,或者更早的《武林群侠传》,毕竟都是“同一门派”,“武学招式”大体相同再正常不过了。游戏以玩家们所接触过的学院生活为主,辅以动漫等画风元素可算是《侠隐阁》最突出的变化,游戏的故事主要围绕着“侠隐阁”这所武侠学院中导师和学生们的日常生活,以及修炼所展开,当然学院周边的村落和城镇也是故事展开的环境之一,这种带有学院生活元素的内容
期刊
摘要:目的:乳腺癌中西医结合治疗的临床效果进行观察和分析。方法:选取我院2011年1月到2013年12月收治的42例乳腺癌患者作为研究对象,采用随机的方法将患者均分成两组,分别为对照组和治疗组,对于对照组的患者进行西医综合治疗,对于治疗组的患者在采用与对照组患者相同的治疗结果的基础上,增加中药辅助,对两组患者的治疗效果进行观察和分析。结果:治疗组患者的临床治疗效果明显好于对照组患者的,两组患者之间
期刊
摘要:本文主要是为了阐述在临床上如何护理妊娠期高血压综合征病人及其护理结果。通过随机选取2011年6月--2014年6月期间在我院接受治疗的30例患有妊娠高血压综合征患者,并对其进行临床上的精心护理。30例患者平均分成两组,一组是对照组,另一组作为观察组,分析对比两组间的临床护理疗效。最终得出结果,经过不同护理后观察组的孕妇顺产率以及新生儿的Apgar评分远远高于另一组,二者的差异均具有统计学意义
期刊
摘要:目的:分析和研究大肠癌致低位肠梗阻临床治疗效果。方法:我们选取2011年1月—2014年1月大肠癌致低位肠梗阻患者68例,将其按住院编号顺序分为观察组与对照组,每组各有患者34例。对照组患者采用Ⅰ期手术方法进行治疗;观察组患者采用先行内镜肠梗阻减压导管置入,择期行Ⅰ期手术方法进行治疗,将两组患者治疗效果进行比较。结果:观察组患者治疗有效率高于对照组;观察组患者死亡例数低于对照组P<0.05。
期刊
摘要:目的:探讨中医对糖尿病的临床治疗效果。方法:对该从院2013年8月—2014年6月收治的160例糖尿病患者,随机分为两组,观察组在常规治疗的基础上外加中医治疗,对照组运用常规治疗,对比两组临床治疗效果。结果:治疗组的临床治疗效果明显优于对照组,差异有统计学意义(P<0.05)。结论:对于糖尿病而言,在常规治疗方式的基础上外加中医疗法不仅安全和可靠,且具有相当显著的临床治疗效果,值得现代临床中
期刊
摘要:目的:观察小剂量干扰素联合利巴韦林治疗丙型肝炎失代偿期肝硬化患者的安全性和有效性。方法:26例丙型肝炎失代偿期肝硬化患者采用小剂量干扰素a-2b联合利巴韦林治疗。初始剂量为100万U隔日1次,皮下注射,利巴韦林用量为600~900mg/d,视患者耐受情况逐渐提高干扰素剂量至300万U,隔日1次,皮下注射,根据早期应答结果及病人情况调整治疗方案。结果:治疗48周时26例患者中有18例为完全病毒
期刊
“大杯”當然更好  当晚的荣耀Play4T发布会,主角自然是荣耀Play4T系列,荣耀Play4T系列包括荣耀Play4T和荣耀Play4T Pro。其中,荣耀Play4T Pro拥有6GB+128GB和8GB+128GB两个版本,售价分别是1499元和1699元;荣耀Play4T只有6GB+128GB一个版本,售价为1199元;荣耀Play4T Pro也在各渠道开启销售,标准版则后续上市销售。 
期刊
2014年,罗切斯特大学的 Joseph Choi 发明的隐身光学设备  世界上已经出现了各式初级隐身技术,虽然还够不上哈利波特同款,但在某些情况下还是挺好用的。  那么,看穿别人衣物的火眼金睛技术有没有出现呢?最近,一加手机推出的新手机OnePlus 8 Pro,它的“秋意”滤镜具有“透视”功能,能够看穿某些材料。  这个消息一出,网友炸了:它能不能看穿人的衣服呢?  经各路网友测试,该手机只能
期刊
誠然,在2020年的移动平台,笔记本综合性能得到了极大提升,这是非常令人感到兴奋的。依稀记得,几年前牛叔评测U系列轻薄本,还是清一色的双核四线程处理器,而现在,4000元价位入门机型都是六核十二线程的规格了,相当给力。  不过在游戏本独显领域,现在5000元价位的入门级别游戏本,显卡还是GTX 1650。GTX 1650作为入门级别独显,被一些预算足够的高端玩家鄙视。但现实情况是,不少人预算的确就
期刊
摘要:目的:对彩超在乳腺疾病诊断方面的临床价值进行分析。方法:以我院2011年1月-2014年1月收治240例乳腺疾病患者为研究对象,进行彩色多普勒超声检查,总结不同病种的发生率。结果:经过对240例乳腺疾病患者进行彩超检查发现,乳腺增生117例,发生率为48.75%,发生率显著高于其他疾病,P<0.05,差异具有统计学意义。结论:对乳腺疾病患者进行彩色多普勒超声检查,具有实用性强、操作简便、诊断
期刊