今天的软导课又学到了不少“骚操作”,其中就包括Pseudocode和Top-down design。
不如现在就借着介绍洗衣机的运转流程向大家介绍一下这两个简单的东西。
题目如下
仔细观察您洗衣机的运作过程,运用Top-down设计方法和Pseudocode 描述洗衣机控制程序。
假设洗衣机可执行的基本操作如下:
water_in_switch(open_close) // open 打开上水开关,close关闭
water_out_switch(open_close) // open 打开排水开关,close关闭
get_water_volume() //返回洗衣机内部水的高度
motor_run(direction) // 电机转动。left左转,right右转,stop停
time_counter() // 返回当前时间计数,以秒为单位
halt(returncode) //停机,success 成功 failure 失败
1)请使用伪代码分解“正常洗衣”程序的大步骤。包括注水、浸泡等
2)进一步用基本操作、控制语句(IF、FOR、WHILE等)、变量与表达式,写出每 个步骤的伪代码
3)根据你的实践,请分析“正常洗衣”与“快速洗衣”在用户目标和程序上的异同。 你认为是否存在改进(创新)空间,简单说明你的改进意见?
4)通过步骤3),提取一些共性功能模块(函数),简化“正常洗衣”程序,使程序 变得更利于人类理解和修改维护。
例如:
wait(time) //等待指定的时间;
注水(volume,timeout) //在指定时间内完成注水,否则停机;
排水(timeout)。
等子程序
1.“正常洗衣”程序的大步骤
注水→浸泡→转动→排水 (我这个洗衣机没有脱水功能= =)
water_in_switch(open)
get_water_volume()
water_in_switch(close)
motorrun(left)
motorrun(right)
motorrun(stop)
water_out_switch(open)
get_water_volume()
water_out_switch(close)
2.进一步完善
从上面的伪代码中,我们可以知道这些大步骤跟现实生活的洗衣机还是有很大差距的,我们不如继续进行改善。
下面我为它添加计时功能,各大步骤的时间限制功能,注水高度限制功能,结束音乐,以及故障停机功能。
check wrong
if success
then
record time
water_in_switch(open)
get_water_volume()
if enough
then
tiemlimit
water_in_switch(close)
motorrun(left)
motorrun(right)
motorrun(stop)
water_out_switch(open)
get_water_volume()
if empty
then
water_out_switch(close)
return time
music
3.结合生活实践
现实生活中,洗衣机存在多种模式,比如“正常洗衣”与“快速洗衣”,这取决于用户自己的时间安排,因此应该加入模式选择的功能。
4.结合3中的观点继续完善
check wrong
if success
then
read mod //mod1为正常洗衣 mod2为快速洗衣
record time
water_in_switch(open)
get_water_volume()
if enough
then
if mod=mod1 then timelimit=tiemlimit1
if mod=mod2 then timelimit=tiemlimit2
water_in_switch(close)
motorrun(left)
motorrun(right)
motorrun(stop)
water_out_switch(open)
get_water_volume()
if empty
then
water_out_switch(close)
return time
music
好了,整个设计洗衣机的过程终于告一段落了,希望大家能认识到Pseudocode和Top-down design的好处~~
(强行校徽水印)