
1.1.1 通用问题解决策略
要为解决特定问题(类似提供指引或创建计算机程序)制定适当的计划,通常应用以下通用的问题解决策略:
1)尽可能完全理解问题。如果没有完全理解问题,那么要制定切实可行的计划是很困难的,甚至是不可能的。
2)设计解决问题的行动计划,并且提供精确的逐步操作指南。
3)实行计划。
4)检讨结果。计划是否可行?是否解决了给定的问题?
当然,在这个过程的任何阶段,你可能注意到某个执行步骤存在缺陷而不得不返回到以前的步骤再评估或修正。
现在,我们把这个问题解决策略应用于相对简单的程序设计问题。假如你的朋友要求你编写一个简单程序为她玩彩票挑选数字。当我们还没有准备好实际编写JavaScript程序时,我们可以使用通用问题解决策略讨论这个问题的基本解决方法。
1)理解问题。首先,你需要知道一些事情:要选择多少个数?每个数的范围是什么?你要向你的朋友询问这些问题。针对这个例子,假定彩票需要6个数,每个数的范围是1~40,并且每个数都是整数。
2)设计行动计划。你的程序需要选择6个数并且每个数不小于1和不超过40。此时,计算机(也就是程序)的指令包括下列事情:
·挑选一个1~40之间的整数。
·重复5次。
3)实行计划。在这个例子中,可以编写程序表示第2步的计划,从而选出6个1~40之间的整数。
4)检讨结果。然而在检查时,程序可能生成以下整数序列:21、36、9、9、9、8,显然需要修正第2步以确保不出现重复的数。新的第2步可能如下所示。
5)设计行动计划(修正)。
·挑选一个1~40之间的整数。
·挑选另一个1~40之间的整数。
·检查确定新的数与前面的数不同。
·如果这两个数相同,选择另一个数。
·重复执行,直到选择6个不同的整数。
现在,你必须重复第3和4步。在设计行动计划期间,你可能发现你没有足够的信息,导致你不能完全理解问题。要么在实行计划步骤时要么在检讨结果步骤时,你就会发现不得不修改计划。当应用这种问题解决策略时,针对前面步骤的修正几乎是不可避免的。这种问题解决的过程是一个循环过程,因为在达到满意的解决效果之前经常要回到开始或者重做前面的工作。