您的位置:首页 > 其它

自顶向下,逐步求精

2017-11-27 20:27 253 查看
自顶向下:是将复杂、大的问题划分为小问题,找出问题的关键、重点所在,然后用精确的思维定性、定量地去描述问题。逐步求精:是将现实世界的问题经抽象转化为逻辑空间或求解空间的问题。复杂问题经抽象化处理变为相对比较简单的问题。经若干步抽象(精化)处理,最后到求解域中只是比较简单的编程问题。

采用自顶向下、逐步求精的方法来解决班级平均成绩的问题。这种方法对于开发结构良好的程序是必要的,自顶(top)顶指的是一条描述程序总体功能的伪代码语句:

确定测验中的班级平均成绩

顶是一个程序有效的完整的描述。但是顶很少能将编写一个Java程序所需的细节充分地表达出来。因此,我们现在开始求精过程。先将顶划分成一系列的更小的任务,并将它们按照执行的先后顺序列出来。第一步求精的结果如下:

**初始化变量

输入、求测验成绩的累加和并统计成绩个数

计算并打印平均成绩**

这一步求精只采取了顺序结构——上面列出的步骤将按顺序一个接一个地执行。

逻辑分段通常是程序员在自顶向下过程中第一步求精时所需的。为了进行下一个层次的求精,我们要提交明确的变量。

**初始化变量

将累加和初始化为0

将计数器初始化为0**

只有变量total和counter需要在使用前进行初始化,变量average和grade不必初始化,因为它们的值在计算或输入时将会被取代。

需要一个循环结构连续输入每一个成绩。由于事先并不知道有多少个成绩需要处理,因此我们采用标记控制的循环。用户每次输入一个合法的成绩,在输入最后一个合法的成绩之后,用户舒服标记值。程序在每个成绩输入之后都要检测它是不是标记值,并且在用户输入标记值后终止循环。上述伪码语句的第二步求精结果为:

**输入第一个成绩

当用户还未输入标记是

将该成绩加到运行累加和上

将1加到计数器上

输入下一个成绩**

以下是伪码

*将累加和初始化为0

将计数器初始化为0

输入第一个成绩(可能为标记)

当用户还未输入标记是

将该成绩加到运行累加和上

将1加到计数器上

输入下一个成绩(可能为标记)

如果计数器不等于0

将平均成绩设置成累加和除以计数器

打印平均成绩

否则

打印”没有输入成绩“*

ps:洗衣机中的“自顶向下、逐步求精”的伪码

1选择洗衣模式:对应水位,注水时间

2注水, 水位计计水位

3浸泡, 计时器计时

4电机转动, 左3次,右3次

5排水, 水位计计水位

6电机转动(脱水)

7结束
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: