用伪代码模拟洗衣机的运转流程
今天的软导课又学到了不少“骚操作”,其中就包括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
thenrecord timewater_in_switch(open)get_water_volume()if enoughthentiemlimitwater_in_switch(close)motorrun(left)motorrun(right)motorrun(stop)water_out_switch(open)get_water_volume()if emptythenwater_out_switch(close)return timemusic
3.结合生活实践
现实生活中,洗衣机存在多种模式,比如“正常洗衣”与“快速洗衣”,这取决于用户自己的时间安排,因此应该加入模式选择的功能。
4.结合3中的观点继续完善
check wrong
if success
thenread mod //mod1为正常洗衣 mod2为快速洗衣record timewater_in_switch(open)get_water_volume()if enoughthenif mod=mod1 then timelimit=tiemlimit1if mod=mod2 then timelimit=tiemlimit2water_in_switch(close)motorrun(left)motorrun(right)motorrun(stop)water_out_switch(open)get_water_volume()if emptythenwater_out_switch(close)return timemusic
好了,整个设计洗衣机的过程终于告一段落了,希望大家能认识到Pseudocode和Top-down design的好处~~
(强行校徽水印)
相关文章:

使用 PHP 在站点上构建类似 Twitter 的系统
2019独角兽企业重金招聘Python工程师标准>>> 如果您曾经留意过,就会知道 Twitter 是 Web 2.0 世界最大的轰动事件之一。简单来说,Twitter(Twitter.com 上提供的一个服务)是一个简单的微博客服务,用户可以发…
Python中的变量以及赋值语句
列表的拷贝区别。 就是在Python中的任何的变量只是一个单纯的名字。名字只是数据的一个贴纸,名字可以来回的变动 赋值语句: 变量就像临时的“存储器”(就像厨房中的锅碗瓢盆),它的强大之处就在于,我们在操…

UE4制作程序背景游戏 Make a game with Procedural Backgrounds in UE4
使用虚幻引擎4蓝图创建一个程序背景的游戏 你会学到什么 学习虚幻引擎4要领 使用程序切片创建标高 保存并加载某些游戏元素 创造一个无止境的跑步者角色 创建和完成游戏的良好习惯和实践 MP4 |视频:h264,1280720 |音频:AAC,44.1 KHz 语言:英…

android pop3与imap方式接收邮件(javamail)
需要下载3个jar包:mail.jar/ activation.jar/ additionnal.jar 1.pop3/** * 以pop3方式读取邮件,此方法不能读取邮件是否为已读,已经通过测试 * */ private void getEmail() { List<Map<String, Object>> list new A…

什么是条件组合覆盖_物史政组合分析,新高考最终受益者丨选科17期
导读,规划物理历史政治是新高考33模式下存在的选科组合,为了给马上面临选科问题的高一、高二考生提供有效帮助,自主选拔在线选科模型解读第17期就来分析一下该组合的学科特性、适合人群、优势劣势、专业覆盖及往年选考情况。说明:…

进击时代!王雪红的谦卑与坚守
节前,HTC董事长王雪红发表了一封内部信,王雪红在心中表示,2015年,HTC不仅要在质量、创新能力与工作效率方面更进步,并表示,“我们未来企业成长的动能不仅包含智能手机,还会加入新的领域如RE、虚…
Python中的过滤器
寄语:新的有一天,开始了,让我们把内心的一些想法都放一放,努力去学习吧。 《Python基础教程(第2版,修订版))》 Assignment 赋值 Variable 变量 Nan是一种特殊的简写 not a numb…

UE4材质着色器全面学习教程
你会学到什么 通过所有着色器类型和设计的实际演示,学习创建材质 要求 对虚幻的基本理解会有所帮助 了解纹理的一般知识(不仅限于UE4)也很有用 描述 在这个系列中,我将带你设置大量不同的材料,教你如何以实用的方式使用虚幻4材料系统。我们…

codeforces #310 div1 C
操作无论是U还是L,都会使原图形分裂成两个图形,且两个图形的操作互不影响 我们又发现由于操作点只可能在下斜线上,如果将操作按x排序 那么无论是U还是L,都会将操作序列完整分割成两半,且两个操作序列互不影响 这样我们…

硬盘温度70度正常吗_70多岁老年人原来血压160,现在130正常吗?医生为你分析实情...
70多岁的老年人,原来有高血压,高压160左右,现在是130左右,正常吗?这个问题问的太过笼统,我们只好通过这个问题,来分享一些老年高血压患者血压控制的一些知识点,希望能够对老年人的高…

使用python愉快地做高数线代题目~
今天接触到了python,发现真是极易上手啊!对比c语言是什么鬼东西 诶,等下,看完教学文章发现TA在下面写了这句话 如果做了前面的内容你可能已被吸引了,觉得c语言真的是废材! 不。。。不是的。。。python 基础库几乎都…

Docker总结
2019独角兽企业重金招聘Python工程师标准>>> 查看docker的子命令,直接敲docker或完整的docker help就可以了: bash-3.2$ docker Usage: docker [OPTIONS] COMMAND [arg...] A self-sufficient runtime for linux containers. Options:-D, --debugfalse …
Python中的对象,类,super()函数
对象:(1)外观的特征 (2)正在做的事情 比如:那个穿蓝色衣服的正在打球的帅哥 类:属性(静态的变量)方法(函数)是对对象的近似 类名约定是以大写字…

Blender赛车动画制作学习教程 Learn Race Car Animation with Blender
使用Blender 2.93创建您自己的惊人汽车动画 你会学到什么 Blender的界面和导航 建模 UV制图 材料 动画 照明设备 渲染 合成 要求 下载并安装Blender。免费下载和免费用于任何目的。 MP4 |视频:h264,1280720 |音频:AAC,44.1 KHz,2 Ch 语言&…

数据结构-线性表的顺序结构
1 #include "stdio.h"2 #include "stdlib.h"3 4 typedef int ElemType; //线性表存储基本类型5 typedef int Status; //基本操作函数类型6 #define LIST_INT_SIZE 50 //线性表初始化存储空间分配量7 #define LISTINCREMENT 10 //线…

项目背景怎么描述_课程游戏背景下幼儿户外活动的组织和实施 ——记岱山县课程项目实施组活动...
课程游戏背景下幼儿户外活动的组织与实施——记岱山县课程项目实施组活动为了深入推进园本化课程实施的实践与研究,加强项目组幼儿园课程的建设与实施,提升项目组幼儿园课程质量。11月23日,县课程项目实施组活动在东沙镇中心幼儿园开展。本次…

兔子生兔子递归的理解
重要的是找规律! 古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 月份 兔子对数 1 …

美团App首页实现之Category_HeaderView可翻页实现
一。主要实现功能:自定义indicator,侧滑页面切换页面内容,indicator跟着变化;二。实现步奏:1.自定义ViewPagerIndicator①:定义三个不同颜色的画笔②:在画布上画三个静态圆③:改变CX…

爬虫与浏览器的区别,爬虫产生(出自简书)
一篇文章了解爬虫技术现状 - 简书https://www.jianshu.com/p/fbdad6f77d0c 需求万维网上有着无数的网页,包含着海量的信息,无孔不入、森罗万象。但很多时候,无论出于数据分析或产品需求,我们需要从某些网站,提取出我们…

Unity2D游戏开发和C#编程大师班
本课程采用现代游戏开发的最新内容和最新技术(Unity 2D 2022) 学习任何东西的最好方法是以一种真正有趣的方式去做,这就是这门课程的来源。如果你想了解你看到的这些不可思议的游戏是如何制作的,没有比这门课更好的起点了。我们确保本课程具备从初学者(即…

python实训总结报告书_20172304 实验四python综合实践报告
20172304 实验四python综合实践报告 姓名:段志轩 学号:20172304 指导教师:王志强 课程:Python程序设计 实验时间:2020年5月13日至2020年6月14日 实验分析 本次是使用python来进行软件开发,python是一个有很…

Tornado框架
Tornado介绍Tornado 是 FriendFeed 使用的可扩展的异步非阻塞式 web 服务器及其相关工具的开源版本。这个 Web 框架看起来有些像web.py(豆瓣用这个写的) 或者 Google 的 webapp,不过为了能有效利用非阻塞式服务器环境,这个 Web 框…

重组系统分区时设置系统盘
在快速分区那里选择另外一个模式,并且只选一个主分区

Javascript:DOM动态创建元素实例应用
<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Dom:动态创建元素</title> </head> <body><ul id"demo1"> </ul> <input type"text" id"t…

上帝和面向对象的七天
上帝用7天创造了“面向对象” |【Python之父客串】http://bbs.fishc.com/thread-102596-1-1.html(出处: 鱼C论坛) 第一天: 计算机的诞生使得人类使用汇编语言进行编程,上帝说这个太复杂了,于是将编译的秘密告诉约翰.巴克斯.于是巴克斯创造了…

Maya游戏角色绑定入门学习教程 Game Character Rigging for Beginners in Maya
准备好开始为游戏制作自己的角色动画了吗? 你会学到什么 了解Maya的界面 优化并准备好你的模型,为游戏做准备 了解关节以及如何使用它们来构建健壮的角色骨骼,以便在任何游戏引擎中制作动画 了解IK和FK系统之间的区别 组织我们的3d场景以获得…

KMP算法简单分析
定义问题 字符串匹配是这样一个问题: 对于两个包含且仅包含字母表∑中的字母的串P,T,计算出所有有效的**移进**s使得P[1..|P|] T[s1..s|P|]。(|P|为P的长度)。 或者说:求出在什么位置P被T完全包含。 为了表达方便,定…

mysql查询并设置高亮_Thinkphp3.2.3设置MySql主从读写分离后,简单调用主数据库查询
图/文:迷神Thinkphp是一款不错的国产框架,使用范围广,应用也比较多。随着网站访问增大往往需要使用mysql主从同步功能,本身Thinkphp自带了主从读写分离的功能了。但是我们经常有一个场景就是某些特定的查询需要从主库进行查询&…

Microsoft Store无法联网解决方法
设置 网络 代理 关闭