计算机 2 ( 加减乘除 )
这篇文章会延伸“计算机 1 ( 显示数字 )”的范例,在 Scratch 里使用函数、分身、变数、清单、广播消息、逻辑判断、变换造型...等积木,实作一个可以真的可以进行加减乘除的计算机。
打开范例
本篇教学为“计算机 1 ( 显示数字 )”一文的延伸,请先打开范例进行编辑。
积木程序原理 ( 按键 )
从左侧积木清单,新增 a、num2 两个变数,以及 icon_list 和 num_list 两个清单。
- 变数 a:取得对应清单的项目。
- 变数 num2:记录要计算的数字,和 num 变数搭配。
- icon_list:记录加减乘除符号。
- num_list:记录数字。
因为数字和加减乘除的符号有一对一的对应性,但又不属于同一个种类,所以使用两个清单分别记录,再根据一对一的顺序取出,就能进行计算。
新增一个名为“清空”的函数,在点击绿旗时执行函数,清空函数内容如下:
- 删除 num_list 和 icon_list 的内容。
- 设定变数 num 和 num2 为 0 ( 计算机起始值为 0 )。
- 设定变数 a 为 1,使用清单记录时,从第一个项目开始。
修改“当分身产生”的程序:
- 删除 icon 变数,改成“添加造型名称到 icon_list”。
- 新增“添加 num 到 num_list”( 将目前画面上的数字加入 num_list )。
- 新增“广播消息 input 并等待”( 让画面显示数字,等待完整显示后再进行下一个动作 )。
- 如果是点击符号按键,就将 num 设为 x ( 后续判断使用 )。
- 如果是点击数字按键,额外判断如果 num 为 x,也将变数 num 设为对应的造型。
设定变数 num 为 x,主要作为判断是否按下数字键,因为到时候会透过 icon_list 和 num_list 两个清单来判断要进行哪些数字的计算。
新增一个名为“计算”的函数 ( 勾选执行完毕再更新画面 ),编辑函数内容:
- 判断如果 num_list 的长度如果大于 0,表示已经有数字在等待计算。
- 将变数 a 设为 1 ( 准备从清单的第一个项目开始 )。
- 设定 num2 为清单的第 a 个项目。
- 使用重复次数积木,重复“num_list 长度 - 1”次 ( 因为 a 从 1 开始 )。
- 设定 num 为 num2 计算后的数值。
新增一个名为“判断加减乘除等于”的函数 ( 勾选执行完毕再更新画面 ),编辑函数内容:
- 判断如果 num_list 的 a-1 项目数值是 x 不成立 ( 表示该项目为数字 )。
- 如果 icon 的 a 项目是加号,执行:
- num2 等于“num2 + num_list 的 a+1 项目数值”。
- 如果 icon 的 a 项目是减号,执行:
- num2 等于“num2 - num_list 的 a+1 项目数值”。
- 如果 icon 的 a 项目是乘号,执行:
- num2 等于“num2 x num_list 的 a+1 项目数值”。
- 如果 icon 的 a 项目是除号,执行:
- num2 等于“num2 / num_list 的 a+1 项目数值”。
因为按下加减乘除或等于时,必须先计算出前面数值的运算结果,所以数值清单 num_list 使用 ( a、a+1 ),而 icon_list 使用的是 a。
新增一个名为“判断按下 AC” 的函数 ( 勾选执行完毕再更新画面 ),编辑函数内容:
- 如果 icon_list 的长度为 0,表示还没有按过加减乘除,就执行清空函数,让画面归零。
- 如果 icon_list 的第 a 项为 AC,表示按下了 AC,执行清空函数。
按照下图修改“计算”函数内容,执行对应函数:
“计算”函数完成后,修改“当分身产生”积木,加入执行“计算”函数积木。
积木程序原理 ( 符号 )
点击“符号”角色,将原本程序里的 icon 变数换成 icon_list 的第 a 项。
积木程序原理 ( 数字 )
点击“数字”角色,因为计算时可能会有“小数点”,所以要针对小数点的“间距”做调整:
- 修改“显示数字”函数:
- 加入判断如果造型名称为“.”,表示该项目为小数点,就让 x 只移动 10 点,否则就移动 40 点 ( 小数点和右边数字的间距 )。
- 修改“当分身产生”程序:
- 加入判断如果造型名称为“.”,表示该项目为小数点,就让 x 改变 -15 点 ( 小数点往左边移动 15 点 )。
完成结果
完成后,点击绿旗,舞台上就会出现一个计算机,可以进行简单的加减乘除计算。
范例解答
范例解答:计算机 ( 显示数字 )
延伸练习
如果已经熟悉了计算机 ( 显示数字 )的原理,还可以尝试更多好玩的作法:
- 再进行除法时,会出现小数点太多的状况,尝试修改为四舍五入到小数点两位 ( 解答 )
微信扫码关注
抖音扫码关注