App Inventor编程开发集锦2-计算器-第3课-实现连续运算-少儿编程教育网

第3课 编写代码——实现连续运算

一、代码修改

按照第一节中对连续运算功能的描述,我们需要对点击算符过程进行修改,即,点击算符不仅要执行【前数=后数、后数=0、算符=具体算符】三项操作,还要兼具等号的功能,计算出此前输入项的运算结果,这里我们需要依据某个条件来判断此次输入的算符是算符,还是等号算符,这个条件就是全局变量算符的当前值:如果算符=“”,则此次输入的算符就仅仅是算符,如果算符≠空,则此次输入的算符是等号算符。修改过的代码如图2-10所示。

App Inventor编程开发集锦2-计算器-第3课-实现连续运算-少儿编程教育网
图2-10 修改点击算符过程以适应连续运算
这里要注意最后一行代码,原来该行代码在“如果...则”分支中,但在点击等号过程中执行了【算符=“”】的操作,因此需要重新将算符设置为本次输入的算符。

二、测试及代码修正

对代码进行测试,如果是连续输入数字、算符、数字、算符...,程序能够正确运行,但是,当中间输入等号之后,再输入算符、数字、等号后,计算结果则是错误的。

我们需要找到错误的原因。通过模拟程序执行过程、跟踪变量值的方法,可以帮我们找到原因。问题出在输入等号之后,此时: 前数=计算结果 后数=0 算符=“”

接下来输入算符,由于算符=“”,因此执行点击算符过程的“如果...则”分支,第一行代码为【前数=后数】,注意这时后数=0,因此前数并没有保留住原来的计算结果,而是被改写为0,因此后面的计算结果必然是错误的。我们为点击算符过程添加一个条件语句,来排除掉上述错误,代码如图2-11所示。

App Inventor编程开发集锦2-计算器-第3课-实现连续运算-少儿编程教育网
图2-11 当后数=0时,只改写算符的值
为了确保我们的限定条件不会给程序埋下隐患,我们分析了所有后数=0的情况,如表2-2所示,我们逐一对照,来判断限定条件是否会限制了合理的操作。

表2-2 后数=0的所有可能情况 App Inventor编程开发集锦2-计算器-第3课-实现连续运算-少儿编程教育网

  • 表中第1、2两条,当屏幕初始化或用户点击C之后,前数、后数均为0,此时点击算符键,再输入后数、等号(包括等号算符,下同),相当于做一次前数为零的运算,这在逻辑上是合理的,可以完成一次合理的运算;
  • 表中的第3条,当用户点击CE后,前数不变,后数为0,此时点击算符键,不改变前数,只改写算符值,此后再输入后数及等号,可以完成一次合理的运算;
  • 第4条,用户点击算符键后,后数为零,此时,如果用户再次点击算符键,不改变前数的值,只改变算符的值,相当于后输入的算符覆盖了前面输入的算符,这样,此后再输入后数及等号,可以完成一次合理的运算;
  • 第5条,用户输入等号后,前数为运算结果,后数为零,算符为空,此时用户点击算符键,不改变前数的值,只改写算符的值,这样,此后再输入后数及等号,可以完成一次合理的运算。

以上分析虽然显得有些罗嗦,但不失为一种保障程序完备性的方法。在人类思维及机器逻辑之间存在着一个鸿沟,缜密的思考与分析,是跨越这道鸿沟的唯一方法,这是计算器应用给我们留下的经验。