18.2.1 系统流程图基本处理
系统流程图一般含有变换、合并、划分、分类、更新5种基本的处理。
1.变换
把输入单据变换成磁盘文件,或把磁盘文件变换成输出单据,或把某一磁盘文件的内容由一个介质文件传送到另一个介质文件。
一般在进行输入变换的同时,还可对输入的数据进行形式性的逻辑检查,如数据输入错误、含有非法字符、数据类型错误等。另外一个方面,是对输入的数据结合外部文件进行合法性检查,如数据值不存在、数据值的越界等。
2.合并
把多个文件合并为一个文件。
3.划分
划分是合并的逆操作,将合并工序的输入文件与输出文件对调即可。
4.分类(排序)
分类(排序)是按指定的键(关键字)以升序或降序改变原文件的记录排列顺序。分类也可和输入或输出操作一起进行。
5.更新
更新是将多个文件作为输入,根据关键项目进行对照,对文件内容进行修正、删除、增加等改写工作。一般更新的内容先要写入一个临时文件,在一定的工作时间后(一般在系统中都会进行说明,如一个月),为了提高系统的处理效率,一般要将该文件进行全部的清理或者部分清理。
18.2.2 系统流程图解题要点
系统处理流程是事务之间相互关系及处理的先后次序的表示,数据是事务的处理依据,也是事务的处理结果,因此可以从处理和数据两个角度出发,对系统流程图进行分析与问题的解答。
1.处理角度
根据处理在流程图中的作用及位置,一般将处理分成系统目标处理和基本处理两大类。
l 系统目标处理:在系统流程图中一般要对系统所需要完成的目标进行文字性的定义和描述,那么在流程图中应该有一个与之对应的处理,该处理能够覆盖系统所给定的目标。
l 基本处理:流程图中除覆盖系统目标的处理外,还有一些为系统目标处理服务的基本处理,主要包括两个方面:一是为了处理的正确性,设计一些处理,以检查输入数据的数据项及数据的值域,以及检查数据的正确性和一致性等;二是为了处理的效率,如提高处理速度、减少文件冗余度等引进了一些处理。
2.数据角度
使用数据是处理的依据,产生数据是处理的结果,所以数据的使用和产生应该与处理相互匹配。对于流程图中的数据,应该主要注意下面几个方面的描述。
l 最初的输入数据与最终的输出数据:它确定了系统的处理目标,以及从输入到输出之间数据的演变过程。根据数据的演变与流程,关于从输入到输出应有哪些数据就比较清楚了,其作用也可以从演变方面了解。
l 数据存储要求:在数据演变的过程中,一些数据经多个“处理”后得到最后结果,每加工处理一次就产生一个新数据,通过对这些数据作用的分析,确定哪些数据应作为文件形式出现,哪些是中间使用的临时数据,这样就能得出各数据的存储要求。
l 数据结构设计:输入/输出数据的结构与系统的问题有关,而中间数据的结构除与输入/输出数据有关外,还与处理有关。在设计的过程中,应该考虑各种数据之间的联系,保证数据的一致性。
18.3 程序流程图
程序流程图也称为程序框图,是一种常用的算法表达工具,具有严格的时间顺序,先做什么
事,然后做什么事,最后做什么事,有起始点和终止点,同时也能反映循环过程。它独立于任何一种程序设计语言,其特点是直观、清晰。
18.3.1 程序流程图的控制结构
为了使用流程图描述结构化程序,必须限制流程图只能使用如下的5种控制结构。且任何复杂的程序流程都由这5种基本控制结构组合或嵌套而成。
l 顺序型:几个连续的加工步骤依次排列构成。
l 选择型:由某个逻辑判断式的取值决定选择两个加工中的一个。
l while型循环:在循环控制条件成立时,重复执行特定加工,其特点是特定加工可以不执行,而直接执行while循环的下一加工。
l until型循环:重复执行某些特定加工,直到控制条件成立,其特点是特定加工至少要执行一次。
l case型循环:列举多种加工情况,根据控制变量的取值,选择执行其一。
18.3.2 程序流程图解题要点
在程序流程图中已经确定了算法、变量及数据结构。在程序流程图的解题过程中,首先要根据程序说明,明确程序的功能,再结合不完整的程序流程图,弄清程序中所使用的算法和数据结构,完成问题的回答。一般可以归纳成以下3个步骤:
①阅读程序说明,了解程序功能,以及完成该功能的算法和数据结构有关的变量说明。
②阅读流程图,了解程序流程图的基本框架结构与所需要实现的功能,推断变量作用与作用范围,进一步确定所使用的算法和数据结构。
③针对具体的问题,结合变量、算法及数据结构,分析程序框架,确定问题的答案。
18.4 历年例题分析
例题1(2003年试题1)
n号房时间阅读下列算法说明和流程图,如图18-3所示,回答问题1至问题3,将解答填入答题纸的对应栏内。
【算法说明】
某旅馆共有N间客房。每间客房的房间号、房间等级、床位数及占用状态分别存放在数组ROOM、RANK、NBED和STATUS中。房间等级值为1、2或3。房间的状态值为0(空闲)或l(占用)。客房是以房间(不是床位)为单位出租的。
本算法根据几个散客的要求预订一间空房。程序的输入为:人数M,房间等级要求R(R=0表示任意等级都可以)。程序的输出为:所有可供选择的房间号。
流程图如图18-3所示,描述了该算法。
图18-3 例题1流程图
【问题1】
假设当前该旅馆各个房间的情况如表18-3所示。
表18-3 旅馆房间情况表
序号i | ROOM | RANK | NBED | STATUS |
1 | 101 | 3 | 4 | 0 |
2 | 102 | 3 | 4 | 1 |
3 | 201 | 2 | 3 | 0 |
4 | 202 | 2 | 4 | 1 |
5 | 301 | 1 | 6 | 0 |
【问题1】
当输入M=4,R=0时,该算法的输出是什么?
【问题2】
等级为R的房间每人每天的住宿费为RATE(R),RATE为数组。为使该算法在输出每个候选的房间号RM(J)后,再输出这批散客每天所需的总住宿费DAYRENT(J),如图18-3所示的流程图的β所指框中的最后处应增加什么处理?
【问题3】
如果限制该算法最多输出K个可供选择的房间号,则在如图18-3所示的流程图的α所指的判断框应改成什么处理?
例题1分析
【问题1】
结合题干可知:M=4,R=0的意思是有4个人想订一间任意等级的房间。在上表查符合条件的房间,102、202号房已经订出,不合要求,201号房只能住3个人,不符合条件,所以可选房间为101和301,算法输出为101,301。
【问题2】
应是RATE(BANK(I))*M→DAYRENT(J)。
BANK(I)用于取出房间等级数。RATE(BANK(I))按房间等级算出每人每天的住宿费,M是散客的人数。
【问题3】
为I > N OR J=K,其中,I>N 也可以写成I=N+1; J=K也可以写成J>=K。
也就是说,只要是已经有K个满足条件的房间,不管后面的房间是不是满足条件就直接退出程序。
例题1参考答案
【问题1】算法输出为101,301。
【问题2】RATE(BANK(I))*M→DAYRENT(J)
【问题3】为I > N OR J=K,其中,I>N 也可以写成I=N+1;J=K也可以写成J>=K。
例题2(2004年试题1)
【说明】
某基于微处理器的住宅系统,使用传感器(如红外探头、摄像头等)来检测各种意外情况,如非法进入、火警、水灾等。
房主可以在安装该系统时配置安全监控设备(如传感器、显示器、报警器等),也可以在系统运行时修改配置,通过录像机和电视机监控与系统连接的所有传感器,并通过控制面板上的键盘与系统进行信息交互。在安装过程中,系统给每个传感器赋予一个编号(即id)和类型,并设置房主密码以启动和关闭系统,设置传感器事件发生时应自动拨出的电话号码。当
系统检测到一个传感器事件时,就激活警报,拨出预置的电话号码,并报告关于位置和检测到的事件的性质等信息。
【问题1】
如图18-4所示,数据流图(住宅安全系统顶层图)中的A和B分别是什么?
【问题2】
如图18-5所示,数据流图(住宅安全系统第0层DFD图)中的数据存储“配置信息”会影响图中的哪些加工?
【问题3】
如图18-6所示,将数据流图(加工4的细化图)中的数据流补充完整,并指明加工名称、数据流的方向(输入/输出)和数据流名称。
【数据流图1-1】
图18-4 住宅安全系统顶层图
【数据流图1-2】
图18-5 住宅安全系统第0层DFD图
【数据流图1-3】
图18-6 加工4的细化图
【问题4】
请说明逻辑数据流图(Logical Data Flow Diagram)和物理数据流图(Physical Data Flow Diagram)之间的主要区别。
例题2分析
本题是一道分层数据流图的题。解答此类问题最关键的一点就是要细心,把题目看清,不要丢掉任何一个条件。还有就是解题有一定的技巧,从一些常规的入口作为突破口,会事半功倍。现在我们就利用分层数据流图的数据流的平衡原则(即父图和子图(加工图)的一致性)来解题。
子图是其父图中某一部分内部的细节图(加工图)。它们的输入/输出数据流应该保持一致。就像你看到地上有只蚂蚁有6条细细的腿,中间是一个小黑点,你想看得更清楚一些就拿个放大镜看。这时,你能看到它的头、触角、身体和比较粗的腿,但是你看到的一定还是6条腿,不是7条,也不是3条。子图也是如此,在上一级中有几个数据流,它的子图也一定有同
样的数据流,而且它们的输送方向是一致的(也就是说原图有3条进的数据流、2条出的,子图同样也是)。
用这一条原则可以轻松地解决问题3。在0层图中,“4 监控传感器”模块有1条输入数据流—“传感器状态”和3条输出数据流—“电话拨号”、“传感器数据”和“告警类型”。但在加工4的细化图中,我们只看到了输出数据流“告警类型”。所以很快我们就知道此加工图少了“传感器状态”、“电话拨号”、“传感器数据”这3条数据流。加工4的结构非常清晰,所以我们只需把这3条数据流对号入座即可:“电话拨号”应是“4.5 拨号”的输出数据流;“传感器状态”应是作为“4.4 读传感器”处理的输入数据流;“传感器数据”应该是经“4.1显示格式”处理过的数据流,所以作为“4.1 显示格式”的输出数据流。
发布评论