- 1、本文档共11页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验2基于visio的系统HIPO图和程序流程图
实验2:基于VISIO的系统HIPO图和程序流程图目的:1)掌握HIPO画法2)掌握数据流程图画法内容:1)本文附录图3-25、教材P66图4.32)本文附录图3-44、图3-45、图3-47图3-25 销售管理系统的HIPO图例题1(1994年软件设计师试题)阅读下列说明和流程图,如图3-44所示,回答问题1和问题2,把解答写在答案的对应栏里。【说明】流程图3-45用来将数组A中的n(n2)个数经变换后存储到数组B中。变换规则如下:(1)若A中有连续t个相同的元素(t1),则在B存入t和该元素的值。(2)若A中有连续t个元素(t1),其中每个元素都与相邻的元素不相同,则在B中存入t和这t个元素的值。例如:A={3,3,3,3,5,5,7,6,3,6,2,2,2,2,1,2}则变换后B={4,3,2,5,-4,7,6,3,6,4,2,-2,1,2}流程图中,逻辑变量C用来区分正在进行连续相同元素的计数还是连续不等元素的计数,Ki用来记录数组B存放t或-t的元素的下标。【问题1】填充流程图中的①至⑤,使之成为完整的流程图。【问题2】如果删除流程图中的判断框t:1,那么,当数组A={5,5,4,4}时,经改变后的流程图的变换,数组B将会有什么样的元素值?图3-44 例题1流程图分析:首先应仔细地阅读说明部分,了解程序实现什么样的功能。程序实际上是完成一个数组的变换。例如:A={3,3,3,3,5,5,7,6,3,6,2,2,2,1,2}则变换后;B={4,3,2,5,-4,7,6,3,6,4,2,-2,1,2}也就是说,A中有4个“3”,所以在B中写入“3”的个数t(即4),再写入该元素值(即3),A中接下来是两个“5”,所以在B中添加数据“2,5”;再下来是4个相邻但不同的数“7,6,3,6”,所以在B中写入-t(即-4),再写入t个元素值(即7,6,3,6),后面的依次类推。通过上面的分析,我们已经了解了程序要实现的功能,现在开始分析程序流程。从整体上看,此程序的分支比较多,用到的变量也比较多。这种情况下,最好是自己手动地把数据代到程序中去,手动地模拟程序运行。这样,能让你最快地了解到程序的算法结构。题目中其实已近为考生提供了相当便利的条件,有一个实例,可以就用提供的实例来手动运算。所以,A(1)=A(2)=3 C=’true’ K1=1 B(2)=A(1),这一句是把A(1)赋值给B(2),当A的前t个元素相等时,B(1)保存t的值,B(2)保存该元素,元素值为A(1),当A中连续t(t1)个元素都与其相邻的元素不相同时,则在B(1)中存入-t,B(2)保存这t个元素中的第1个元素即A(1)。所以不管什么情况,B(2)都应该等于A(1)。接着看下一步,2→K,暂时不管空①,继续往下看,2→i,因为in,所以,A(i-1)=A(i)(C值为’true’),再接着执行t=t+1,i=i+1……当i=5时,A(i-1)A(i),又因为C值为’true’,所以t→B(K1)。因为K1=1,B(K1)是存储连续相同数字的个数的,按我们的实例,现在的t应等于4,再往前推算,可以知道t应有初值1,所以空①应填1→t。再往下走,K1= K+1,此时的K1=3,为下一次记录t或是-t做准备,A(i)→ B(K1+1)。与前面的B(2)=A(1)类似,为下一轮的解析做准备。K=K+2t=1,到此,空④其实不用去搞复杂的分析和推敲,细心一点儿就能一下写出来。因为这里必须填’true’→C,如果不填这句,程序的两大分支将永远不能执行。同理可得空③应填’false’→C。空②所在的分支是当有n个连续不等数后接有相同的两个数时才执行的分支。前面已经说过B(K1)是用来存储t或-t的,但这里应该注意一点,t是否符合题目的要求。当判断A(i-1)=A(i)成立时,t计数到了第i-1个元素,但按题目的要求,A(i-1)不能计入n个不同的数中,所以空②应填1-t。空⑤是直接从i:n的判断分支出去的一部分,如果in则执行那一部分分支。其实可以不看底下的大段程序,只要n=1(当然,这个题出题时考虑不够周全,没有考虑到n=1时会产生数组溢出,正确的做法应是把这种情况归到A(1)A(2)这个分支,但我们做题时可以这么考虑),又因为当C为’true’时B(K1)=t,所以C为’false’时应填:B(K1)=-t。问题2,前面已经把所有的空都填好了,所以此题只需把数组,代入到删除了的程序中手动运行即可得到答案:B={2,5,0,2,4}。参考答案【问题1】①1-t ②1-t ③true-c ④false-c ⑤-t-B(K1)【问题2】B={2,5,0,2,4}例题2(1993年软件设计师试题)阅读下列说明和流程图,如图3-45所示,
文档评论(0)