Scratch全国少儿编程竞赛获奖作品《多功能计算器》解析上篇–Scratch编程

本文介绍的作品是全国青少年创意编程与智能设计大赛创意编程比赛一等奖获得者周逸城同学的参赛作品。

作品说明

(衷心提醒)如计算质数,请开加速模式(Shift+绿旗)

(开始界面)有普通计算器、质数计算器

(普通计算器)按数字键输入数字,运算符号键改变运算模式,=键计算,AC清零,控制键为白色,数字键为绿色,运算符为红色,变量为黄色,复杂运算符为蓝色,常数为紫色。

(质数计算器)按数字键输入数字,计算键计算所有比输入数字小的质数,查询键查询此数是否是质数,AC清零

正文

说起计算器大家一定不陌生,每个人都用过,最常用的就是各样的实体计算器,像这样最普通的:

还有电脑或手机上的计算器:

今天,我们就在Scratch软件中用代码实现一个计算器,最终的效果是这样的:

别看这个计算器其貌不扬,它可比我们之前使用过的计算器都要强大,因为它除了可以实现基础的计算功能外,还可以进行科学计算甚至质数计算哦。相信周逸城同学的数学课程学习的非常棒,因为要实现计算器的所有功能,就必须对每一种运算符背后的计算逻辑都了如指掌。否则,计算出来的数字就是错的,那谁还会用这个计算器呢?

在解析计算器的代码之前,我们有必要先看一看Scratch软件中的运算模块:

这个模块其中有六条语句,它们支撑起了计算器背后所有的运算逻辑。

前四条语句就不用多介绍了,它们就是数学计算中最最基本的加减乘除运算。

第五条语句的作用是获取第一个数字除以第二个数字后的余数部分。

第六条语句表示数学中的函数运算,绝对值后面跟一个空白格子,意思是对空白格子中输入的数字进行绝对值函数计算,计算的结果就是这条语句所代表的值。如果我们点击绝对值几个字后面的三角符号会弹出一个下拉框:

下拉框里面有很多各种各样的数学函数,我们选择其中一个,就可以对输入的数字做相应的函数计算,计算器中所有科学计算的逻辑都是由这条语句实现的。

好了,了解了这些数学运算语句后,我们就开始解析计算器的代码吧。

点击绿旗

在计算器的首页正式显示之前,周逸城同学给它的作品添加了一个小小的Booting启动动画,让这个多功能计算器就像电脑启动一样,看上去很强大。

实现这个小动画的角色就是它,boot角色:

它一共有两个造型,在代码中不停的切换这两个造型就可以实现小齿轮转动的效果。

这个动画还有一个逐渐透明并消失的效果,它是由虚像特效实现的,代码一开始将角色的虚像特效初始化为0,表示动画完全可见,接着使用重复执行语句重复25次,每次将角色的虚像特效值增加4,这样重复执行的过程完成之后,虚像特效的值就是25×4=100,相对应的,动画就完全透明看不见了。

接着,角色会发送Go的广播,计算器正式的首页就该显示出来了。

Go

计算器首页的显示也是有一个过渡动画的:

这个动画非常像果冻老师小时候玩的红白游戏机的游戏动画,在那时,游戏机的硬件配置远远达不到处理精细动画的要求,所以就通过这种像素式的渐变动画来实现游戏中不同场景的切换,这种效果在Scratch中可以通过像素化特效和虚像特效结合起来实现。

计算器的首页上一共有三个文字按钮和一个背景:

所以,它们都会被加上像素式的渐变动画,就以“质数计算器”这个文字为例,当它接收到Go的广播后代码是这样的:

点击绿旗之后,质数计算器文字的像素化特效和虚像特效都被初始化为200,虚像特效使得文字隐藏完全不可见,如果我们去掉这个效果,就可以看到文字被像素化的初始特效。

当接收到Go的广播后,文字的像素化特效和虚像特效同时发生改变,它们的值从200逐渐减小并变为0,文字最终就显示为正常的状态了。

其它两个文字按钮和背景与质数计算器文字的效果是相同的,所以代码也是一模一样的。

首页的过渡动画就是这样,很简单。接着我们就要看一看作品的核心内容:普通计算器与质数计算器。按照惯例,由简到难,我们先点击普通计算器吧。

普通计算器

点击普通计算器后,代码会发出“普通计算器”的广播,接收这个广播的角色有一大堆,同学们一猜就知道,这些角色一定就是组成计算器的各种零件了。

虽然接收广播的角色众多,但是代码都一样,只有一条,就是显示。

其实在点击绿旗的时候,计算器所有零件的位置都已经设置好了,我们点击文字后只是将它们显示出来。

这时候,一个完整的计算器界面就展示在我们的面前。

大家回想一下使用计算器的流程,比如要计算13+24=?,我们先在计算器的键盘上按下1,再按下3,接着按+号,再按下2和4,最后按=号结果就显示出来了。所以呢,分析代码我们也按照这个流程,但是果冻老师要将分析过程分为两个部分,一个部分是键盘按键,另一个部分是屏幕显示。

首先,来看第一个部分,键盘按键。

键盘按键

还是以计算13+24=?为例,第一步我们需要按下键盘上的1键。

无论是用鼠标点击屏幕上计算器的1键还是按下电脑键盘上的1键,都会发出1的广播。

那是谁接收这个1的广播呢?就是=号这个角色。

它接收到1的广播后,会设置“后”这个变量的值。

后变量相对应的还有一个前变量,它们分别用于存储运算符前后两边的数值。前、后两个变量在程序运行时都被初始化为0,所以在按下1按键后,根据后变量的赋值公式,得出它的值应该是0×10+1=1,就是说,按下1键后,后变量现在存的值是1。

按照流程,接着我们要按下数字3。

数字3的代码逻辑与数字1基本上是一模一样的,不同的是它最后会发出3的广播。

那接收3这个广播的角色仍然是=号,并且代码也是一样的。

虽然代码是一样的,可是运行之后“后”变量存储的值可不一样。因为在按下3键之前,后变量的值已经是1了,所以根据赋值公式按下3后,后变量的值就变成了1×10+3=13,这不就是我们要计算的第一个数字吗?!

好了,+号前面的数字我们输入完毕了,按照流程,接下来要按下+号。

点击它:

从代码中我们可以得出,+号只能通过鼠标点击,不能像数字一样通过键盘按键操作,这是为什么呢?因为制作Scratch软件的叔叔阿姨没有给我们开发这个功能呀!

接收+这个广播的角色还是=号。

按下+号后,第一步将运算符号这个变量设置为+,接着把后变量中保存的数字13赋值给前变量,因为13是+号前面的数字,然后再将后变量重置为0。

最后两行代码是按下=号的处理逻辑,我们暂时还没有到这一步,所以暂且不表。

好了,数字13与+号的代码我们都分析完了,接着就要输入+号后面的数字24,这又是两个数字2与4,它们和1、3的代码都是类似的,当我们按下2和4两个数字后,这时前变量存储的是数字13,后变量存储的是数字24,最后,按下=号键求出这两个数字的和,这就涉及到刚刚代码中的最后两行了。

当使用鼠标点击屏幕上的=号键或者按下电脑键盘上的空格键后,代码就会计算前、后两个变量值的和,也就是计算13+24=37,并将37这个值保存在结果的变量中。

同时,代码中发送了=的广播,并且角色自己会接收这个广播,将结果即37这个数字保存在得数这个变量中,得数它主要是用于屏幕显示的一个变量。

那接下来我们就来分析计算器的另一个部分:屏幕显示。

屏幕显示

计算器的显示部分指的是它顶部的屏幕位置,这部分所涉及到的角色与键盘按键一样特别特别多。

那为什么需要这么多的角色呢?我们看一看下面的图就知道了:

果冻老师将屏幕显示分成了四个部分,A部分显示运算符前面的数字,B部分显示运算符后面的数字,C部分显示运算的结果,还有一个部分就是运算符。

比如说B部分我们要显示数字1,那么就需要一个角色;如果要显示数字13,那么就需要两个角色,显示数字1用一个,显示数字3用一个;如果要显示数字138,那么就需要三个角色。我们的计算器最多支持显示的数字位数是12位,所以就需要12个角色。

同理,A和C部分与B部分一样也支持12位显示,所以光是显示数字我们就需要12×3=36个角色。

那这么多的角色应该如何排列组合,如何操控它们显示出正确的数字呢?这就是我们接下来要学习的内容。

还是以屏幕的B部分为例,当计算器启动之后,它首先显示为一个0。

这个0就是角色屏显r1:

除了这个0外,后面的其它0都暂时被隐藏掉了。

从上面的代码中可以看到,程序会不停的判断我们是否按下计算器的数字按键,如果按下了就改变后这个变量的值,屏显r1角色同时就会改变造型,显示为相应的数字。

屏显r1角色0-9编号的造型对应0-9的数字:

所以,我们要显示数字3,只需要换成3这个编号的造型就行了。

我们知道,当计算器启动的时候,后这个变量被初始化为0,所以屏显r1角色也对应显示为0。

那如果后变量中保存的是数字13,应该怎么显示呢?

根据上面的代码,数字13的第一个字符是1,所以屏显r1角色显示1。而数字3就需要屏显r2角色来显示了。

屏显r2角色的代码相比多了一个判断条件,就是后变量中存储的数字必须超过一位,r2角色才会显示,否则它会一直隐藏。我们根据这个原理可以推断出r3角色需要数字超过两位才显示,r4角色需要超过三位等等。

r2角色其它的代码和造型与r1角色类似,不同的是它显示的是后变量值的第2个字符,就是数字13中的3,那以此类推,如果我们要显示数字1358,那r3角色就负责显示5,r4角色就负责显示8。

屏幕B部分的显示原理就是这样的,并且A与C部分的显示过程与B部分都是一样的。

好了,计算器的第二个部分屏幕显示到这里就介绍完了,是不是还蛮简单的?

清除

不知道同学们有没有注意到计算器上有两个按键叫做AC和CE,它们分别表示全部清除(AllClear)和清除输入(ClearEntry)。全部清除的意思就是将计算器归0,所有的数字都显示为0,就像刚启动一样。而清除输入类似于电脑键盘的退格键,比如我们输入了数字17,如果按下CE键,那么就会将7删除掉,屏幕上变为显示1。

AC和CE键的代码是如何实现的呢,下面我们就来看一看。

首先,AC键,全部清除,很简单,只需要将所有的变量都重置为0就可以了,因为屏幕上的数字都是根据变量的值显示的。

而CE键就稍稍有点麻烦了,它需要一个计算公式来实现退格的功能。

还是以一个例子来说明吧,就以刚才的数字17为例,它总共有两位,当我们按下CE键后,代码首先会取出第2位的数字7,然后再用17-7=10,最后用10÷10=1,这样就实现了退格的功能。

这个逻辑对不对呢?我们再用个数字验证一下,这次选择数字859,它有三位,所以按下CE键后首先会取出第3位的数字9,然后再用859-9=850,最后用850÷10=85。没有问题,这就是退格键的效果。

THE END
1.「Mac玩转仓颉内测版45」小学奥数篇8排列组合计算本篇将通过Python和Cangjie双语讲解如何计算排列与组合。这道题目旨在让学生学会使用排列组合公式解决实际问题,并加深对数学知识和编程逻辑的理解。 关键词 小学奥数 Python + Cangjie 排列与组合 一、题目描述 编写一个程序,计算从n个不同元素中取r个元素的排列数和组合数。用户输入n和r,程序输出排列数和组合数,分https://blog.csdn.net/weixin_44217688/article/details/144333614
2.组合数计算器组合计算器解决从N项中选M项及类似情形的组合问题。您可以选择项目总数N和选择的项目数M,选择是否具有顺序以及元素是否可以选择多次,然后按计算按钮。组合计算器将计算在给定输入的情况下可以从 N 中选择 M 的方式的数量。另请查看以下组合问题的示例。 支持的函数和运算 https://zh.numberempire.com/combinatorialcalculator.php
3.神奇的数学魔术计算器魔术片段 吴老师:请你任意说出一个三位数。 观众:685。 吴老师:好,685,我继续按下“+”,请你继续说一个三位数。 观众:124。 吴老师:好的,我按下124,在接着按“×”,请你再说一个三位数。 观众:365。 吴老师:我按下365,如果我按下“=”,计算器会显示什么呢? https://www.meipian.cn/2anhlfqm
4.计算器如何计算排列组合(计算器如何计算排列组合)问题:计算器如何计算排列组合 答案:排列组合是数学中的一个重要概念,广泛应用于概率论、统计学和计算机科学中。排列是指从n个不同元素中取出m(m≤n)个元素,按照一定的顺序排成一列的过程;组合则是指从n个不同元素中取出m(m≤n)个元素,但与排列不同,它不考虑元素的顺序。在总分总的结构下,首先需要了解计算https://www.zaixianjisuan.com/jisuanzixun/jisuanqiruhejisuanpailiezuhe.html
5.排列组合计算器下载排列组合计算器官方版下载v2.0排列组合计算器是一款体积小巧的排列组合的工具,它具有较高的准确性和易用性,在这里用户只要通过该软件录入相应的数值,它就能够帮助用户快速计算出所有结果。这款软解压缩得到exe文件后,直接运行即可,小编以前学概率论的时候,最基础的概念就是排列组合,计算起来可不算轻松,今天小编给大家带来一款不错的计算器,排列组https://www.32r.com/soft/26546.html
6.排列组合计算器排列组合计算器免费下载排列组合计算器是根据高中数学排列组合计算公式对排列组合进行计算的数学排列组合计算器网页在线计算工具。 下载地址 小明计算器查看 工资年终奖个税计算器查看 保税平衡计算器查看 排列组合计算器是一个方便计算排列组合的小工具,解压缩得到exe文件后,直接运行 http://downza.cn/soft/222577.html
7.排列组合计算器绿色版排列组合计算器下载v2.0绿色汉化版排列组合计算器是一款可以帮助用户超级计算排列组合的小工具,绿色无需安装,解压缩得到exe文件后,直接运行键即可。 排列组合计算器使用方法 排列(Pnm(n为下标,m为上标)) 数n的阶乘:n!=n(n-1)(n-2)2×1 Pnm=n×(n-1)(n-m+1);Pnm=n!/(n-m)!(注:!是阶乘符号);Pnn(两个n分别为上标和http://www.kkx.net/soft/35214.html
8.排列组合计算器V1.0下载软件大小:10 KB 软件语言:简体中文 更新时间:2024-08-17 授权:免费软件 适用平台:Win8,Win7,WinXP 推荐度:6分 无病毒 点击查看大图 软件介绍 排列组合计算器是一个方便计算排列组合的小工具,解压缩得到exe文件后,直接运行 排列组合计算器下载地址 普通下载https://www.xiazaiba.com/html/48230.html
9.数学排列组合公式计算器数学排列组合公式计算器(排列组合数学排列组合公式计算器是一款实用的数学工具,可以帮助你快速计算排列组合,为学习数学排列组合的同学带来方便。 软件别名:排列组合计算器 软件热度:1652 软件类型:国产软件 开发商:互联网 软件语言:简体中文 软件平台:Win 软件版本:新版 软件大小:48 KB 授权方式:免费软件 http://www.down123.ren/soft/13944/
10.排列组合计算器工具v1.0中文绿色免费版排列组合计算器是一个方便计算排列组合的小工具,解压缩得到exe文件后,直接运行 排列组合计算方法 排列(Pnm(n为下标,m为上标)) 数n的阶乘:n!=n(n-1)(n-2)2×1 Pnm=n×(n-1)(n-m 1);Pnm=n!/(n-m)!(注:!是阶乘符号);Pnn(两个n分别为上标和下标) =n!;0!=1;Pn1(n为下标1为上https://www.iteye.com/resource/weixin_39840914-11489135
11.快速排列组合计算器"排列组合计算器 "是一款应用程序,可让您轻松进行数学和统计学中常用的排列组合计算。使用这款应用程序,即使不擅长数学计算的人也能轻松进行计算。 这款应用程序配备了执行排列和组合计算的功能。在排列计算中,您可以找出从 n 个元素中选出 r 个元素的情况数。而在组合https://apps.apple.com/cn/app/%E5%BF%AB%E9%80%9F%E6%8E%92%E5%88%97%E7%BB%84%E5%90%88%E8%AE%A1%E7%AE%97%E5%99%A8/id6448662601?see-all=customers-also-bought-apps
12.排列组合计算器下载排列组合计算器V2.3绿色汉化版下载排列组合计算器是九点小编为大家推荐的一种方便实用的在线工具,可以帮助用户在处理排列、组合、置换等问题时快速进行计算,避免繁琐的手工计算过程。通过简单的输入数据,即可得到相应的结果,该工具广泛应用于数学、统计学、概率论、计算机科学等领域。同时,排列组合计算器还可根据不同学科领域的要求,在结果中提供不同的http://www.9a9m.com/soft/3257.html
13.排列组合计算器庚武排列组合计算器 http://www.mathsisfun.com/combinatorics/combinations-permutations-calculator.htmlhttps://www.cnblogs.com/wucg/p/3567076.html