自顶向下、逐步求精的算法设计
2015-07-01 10:29
489 查看
采用自顶向下、逐步求精的方法来解决班级平均成绩的问题。这种方法对于开发结构良好的程序是必要的,自顶(top)顶指的是一条描述程序总体功能的伪代码语句:
确定测验中的班级平均成绩
顶是一个程序有效的完整的描述。但是顶很少能将编写一个Java程序所需的细节充分地表达出来。因此,我们现在开始求精过程。先将顶划分成一系列的更小的任务,并将它们按照执行的先后顺序列出来。第一步求精的结果如下:
初始化变量
输入、求测验成绩的累加和并统计成绩个数
计算并打印平均成绩
这一步求精只采取了顺序结构------上面列出的步骤将按顺序一个接一个地执行。
逻辑分段通常是程序员在自顶向下过程中第一步求精时所需的。为了进行下一个层次的求精,我们要提交明确的变量。
————————————————————————————————————————————————————
初始化变量
将累加和初始化为0
将计数器初始化为0
————————————————————————————————————————————————————
只有变量total和counter需要在使用前进行初始化,变量average和grade不必初始化,因为它们的值在计算或输入时将会被取代。
需要一个循环结构连续输入每一个成绩。由于事先并不知道有多少个成绩需要处理,因此我们采用标记控制的循环。用户每次输入一个合法的成绩,在输入最后一个合法的成绩之后,用户舒服标记值。程序在每个成绩输入之后都要检测它是不是标记值,并且在用户输入标记值后终止循环。上述伪码语句的第二步求精结果为:
————————————————————————————————————————————————————
输入第一个成绩(可能为标记)
当用户还未输入标记是
将该成绩加到运行累加和上
将1加到计数器上
输入下一个成绩(可能为标记)
——————————————————————————————————————————————————————
在伪码中,我们并没有将组成while的循环结构用一对花括号括起来,只是简单的缩进。伪码只是一种非正式的程序开发工具。
(注: 许多程序在逻辑上可以分为三段“一个是初始段,用于初始化变量;一个是处理段,用于读入数据值并对程序变量做出相应的调整;以及一个终止段,用于计算及输出最终结果)。
——————————————————————————————————————————————————————
将累加和初始化为0
将计数器初始化为0
输入第一个成绩(可能为标记)
当用户还未输入标记是
将该成绩加到运行累加和上
将1加到计数器上
输入下一个成绩(可能为标记)
如果计数器不等于0
将平均成绩设置成累加和除以计数器
打印平均成绩
否则
打印”没有输入成绩“
————————————————————————————————————————————————————————
代码如下:
确定测验中的班级平均成绩
顶是一个程序有效的完整的描述。但是顶很少能将编写一个Java程序所需的细节充分地表达出来。因此,我们现在开始求精过程。先将顶划分成一系列的更小的任务,并将它们按照执行的先后顺序列出来。第一步求精的结果如下:
初始化变量
输入、求测验成绩的累加和并统计成绩个数
计算并打印平均成绩
这一步求精只采取了顺序结构------上面列出的步骤将按顺序一个接一个地执行。
逻辑分段通常是程序员在自顶向下过程中第一步求精时所需的。为了进行下一个层次的求精,我们要提交明确的变量。
————————————————————————————————————————————————————
初始化变量
将累加和初始化为0
将计数器初始化为0
————————————————————————————————————————————————————
只有变量total和counter需要在使用前进行初始化,变量average和grade不必初始化,因为它们的值在计算或输入时将会被取代。
需要一个循环结构连续输入每一个成绩。由于事先并不知道有多少个成绩需要处理,因此我们采用标记控制的循环。用户每次输入一个合法的成绩,在输入最后一个合法的成绩之后,用户舒服标记值。程序在每个成绩输入之后都要检测它是不是标记值,并且在用户输入标记值后终止循环。上述伪码语句的第二步求精结果为:
————————————————————————————————————————————————————
输入第一个成绩(可能为标记)
当用户还未输入标记是
将该成绩加到运行累加和上
将1加到计数器上
输入下一个成绩(可能为标记)
——————————————————————————————————————————————————————
在伪码中,我们并没有将组成while的循环结构用一对花括号括起来,只是简单的缩进。伪码只是一种非正式的程序开发工具。
(注: 许多程序在逻辑上可以分为三段“一个是初始段,用于初始化变量;一个是处理段,用于读入数据值并对程序变量做出相应的调整;以及一个终止段,用于计算及输出最终结果)。
——————————————————————————————————————————————————————
将累加和初始化为0
将计数器初始化为0
输入第一个成绩(可能为标记)
当用户还未输入标记是
将该成绩加到运行累加和上
将1加到计数器上
输入下一个成绩(可能为标记)
如果计数器不等于0
将平均成绩设置成累加和除以计数器
打印平均成绩
否则
打印”没有输入成绩“
————————————————————————————————————————————————————————
代码如下:
相关文章推荐
- Java环境变量设置
- 编写Bash Shell通过gnuplot绘制系统性能数据图的方法
- nginx+thinkphp下解决不支持pathinfo模式
- Oracle-锁表、解锁
- 高效工作的信息搜集及管理术
- qstring arg()使用
- 如何看待Java中的Import ???
- 淘宝的尺码和颜色选择
- 《自己动手写框架7》:关于框架体系与战术的思考
- hra控件自动绑定
- 索引学习
- MQTT3.1与UDP时效性分析
- [置顶] android studio快捷键集合
- Java 集合框架
- 为什么互联网企业热衷做智能硬件?
- 日经社説 20150701 成長と財政両立の宿題は山積みだ
- Android使用sqlliteOpenhelper更改数据库的存储路径放到SD卡上
- ruby, gem install 出现网络错误
- Velocity宏定义的坑与解决办法
- phpcms-v9中建立wap手机站点