[软件工程导论(第六版)]第6章 详细设计(课后习题详解)

news2024/9/22 15:46:45

文章目录

    • 1 假设只有SEQUENCE和DO-WHILE两种控制结构,怎样利用它们完成 IF THEN ELSE操作?
    • 2 假设只允许使用SEQUENCE和IF-THEN-ELSE两种控制结构,怎样利用它们完成DO WHILE操作?
    • 3 画出下列伪码程序的程序流程图和盒图:
    • 4 图给出的程序流程图代表一个非结构化的程序,问:
    • 5. 研究下面的伪码程序:
    • 6 用Ashcroft-Manna技术可以将非结构化的程序转换为结构化程序,下图是一个转换的例子。
    • 7. 某交易所规定给经纪人的手续费计算方法如下:总手续费等于基本手续费加上与交易中的每股价格和股数有关的附加手续费。如果交易总金额少于1000元,则基本手续费为交易金额的8.4%;如果交易总金额在1000元~10000元之间,则基本手续费为交易金额的5%,再加34元;如果交易总金额超过10000元,则基本手续费为交易金额的4%加上134元。当每股售价低于14元时,附加手续费为基本手续费的5%,除非买进、卖出的股数不是100的倍数,在这种情况下附加手续费为基本手续费的9%。当每股售价在14元到25元之间时,附加手续费为基本手续费的2%,除非交易的股数不是100的倍数,在这种情况下附加手续费为基本手续费的6%。当每股售价超过25元时,如果交易的股数零散(即不是100的倍数),则附加手续费为基本手续费的4%,否则附加手续费为基本手续费的1%。
    • 8 画出下列伪码程序的流图,计算它的环形复杂度。这个程序的逻辑有什么问题吗?
    • 9 把统计空格程序的Jackson图(图6-26)改画为等价的程序流程图和盒图。
    • 10 人机对话由操作员信息和系统信息交替组成。假设一段对话总是由操作员信息开始以系统信息结束,用Jackson图描绘这样的人机对话过程。


1 假设只有SEQUENCE和DO-WHILE两种控制结构,怎样利用它们完成 IF THEN ELSE操作?

答:
转化如下:

K=1
DO WHILE(条件 AND K EQ 1) 
	程序块1 
	K=K+1
END DO
DO WHILE((NOT 条件)AND K EQ 1) 
	程序块2 
	K=K+1
END DO

2 假设只允许使用SEQUENCE和IF-THEN-ELSE两种控制结构,怎样利用它们完成DO WHILE操作?

答:
转化如下:

label:IF(条件) THEN 程序块 GOTO label
ELSE 程序块
END IF

3 画出下列伪码程序的程序流程图和盒图:

START
	IF p THEN 
		WHILE q DO 
			f 
		END DO
	ELSE 
		BLOCK 
			g
			n 
		END BLOCK
	END IF
STOP

流程图
在这里插入图片描述

盒图
在这里插入图片描述

4 图给出的程序流程图代表一个非结构化的程序,问:

在这里插入图片描述
(1)为什么说它是非结构化的?
(2)设计一个等价的结构化程序。
(3)在(2)题的设计中使用附加的标志变量flag了吗?若没用,再设计一个使用flag的程序;若用了,再设计一个不用flag的程序。

答:
(1)图示的程序的循环控制结构有两个出口,显然不符合狭义的
结构程序的定义,因此是非结构化的程序。
(2)使用附加的标志变量flag,至少有两种方法可以把该程序改造为等
价的结构化程序,图6-16描绘了等价的结构化程序的盒图。
在这里插入图片描述

(3)不使用flag把该程序改造为等价的结构化程序的方法如图6-17所示。
在这里插入图片描述

5. 研究下面的伪码程序:

LOOP:Set I to(START+FINISH)/2
IF TABLE(I)=ITME goto FOUND
IF TABLE(I)<ITME Set START to(I+1)
IF TABLE(I)>ITME Set FINSH to (I-1)
IF (FINSH-START)>1 goto LOOP
IF TABLE(START)=ITEM goto FOUND
IF TABLE(FINSH)=ITEM goto FOUND
Set FLAG to 0
Goto DONE
FOUNDSet FLAG to 1
DONEEXIT

要求:
(1)画出程序流程图。
(2)程序是结构化的吗?说明理由。
(3)若此程序是非结构化,设计一个等价的结构化程序并画出流程图。
(4)此程序的功能是什么?它完成预定功能有什么隐含的前提条件吗?

(1)该程序流程图如图所示。
在这里插入图片描述

(2)该程序不是结构化的,结构化的程序只有一个入口和一个出口,而该程序的流程图中有两个出口。

(3)等价的结构化程序的流程图如图所示。
在这里插入图片描述

(4)此程序有二分查找的功能,它完成预定功能的隐含前提条件是现有序列为从小到大顺序排好的有序序列。

6 用Ashcroft-Manna技术可以将非结构化的程序转换为结构化程序,下图是一个转换的例子。

在这里插入图片描述
(1)能否从这个例子总结出Ashcroft Manna技术的一些基本方法?
(2)进一步简化图6-20(b)给出的结构化设计。

答:
(1)从这个例子中看出,Ashcroft-Manna技术的基本方法是:当待改造的程序含有嵌套的非结构化的IF语句时,改造后的程序中增加DO_CASE语句和DO_UNTIL语句,并增加一个辅助变量I,I的初始值为1。最外层的IF语句在I=1时执行,执行完这个IF语句后把I赋值为随后应该执行的内层IF语句所对应的CASE标号值。DO-CASE语句的最大分支数(可执行的最大标号值)等于IF语句的个数。当执行完最内层的IF语句之后,把I赋值为可执行的最大标号值加1,而DO-UNTIL循环的结束条件就是I等于这个值。
(2)进一步简化后的结构化程序的流程图如图所示。
在这里插入图片描述

7. 某交易所规定给经纪人的手续费计算方法如下:总手续费等于基本手续费加上与交易中的每股价格和股数有关的附加手续费。如果交易总金额少于1000元,则基本手续费为交易金额的8.4%;如果交易总金额在1000元~10000元之间,则基本手续费为交易金额的5%,再加34元;如果交易总金额超过10000元,则基本手续费为交易金额的4%加上134元。当每股售价低于14元时,附加手续费为基本手续费的5%,除非买进、卖出的股数不是100的倍数,在这种情况下附加手续费为基本手续费的9%。当每股售价在14元到25元之间时,附加手续费为基本手续费的2%,除非交易的股数不是100的倍数,在这种情况下附加手续费为基本手续费的6%。当每股售价超过25元时,如果交易的股数零散(即不是100的倍数),则附加手续费为基本手续费的4%,否则附加手续费为基本手续费的1%。

要求:
(1)用判定表表示手续费的计算方法。
(2)用判定树表示手续费的计算方法。

答:令P代表交易的总金额,Q代表每股的售价,n代表交易的股数。
(1)判定表如图所示。
在这里插入图片描述

(2)判定树如图所示。
在这里插入图片描述

8 画出下列伪码程序的流图,计算它的环形复杂度。这个程序的逻辑有什么问题吗?

C EXAMPLE
LOOP:DO WHILE Z>0 
	A=B+1; 
	IF A>10 
		THEN X=A 
		ELSE Y=Z 
	END IF 
	IF Y<5 
		THEN PRINT X,Y 
		ELSE IF Y=2 
			THEN GOTO LOOP 
			ELSE C=3 
			END IF 
	END IF 
	G=H+R
	END DO
	IF F>0 
		THEN PRINT G
		ELSE PRINT K
	END IF
	STOP

答:(1)先画出图示。
① 该伪码的流程图如图6-24所示。
在这里插入图片描述
② 根据该程序流程图,可得该程序流图如图6-25所示
在这里插入图片描述
(2)计算
环形复杂度V(G)=流图中的区域数=流图中判定结点数目+1=5+1=6
(3)分析
该算法问题在于控制最外层循环的变量Z不仅没有经过初始化,并且在该循环内部没有任何有可能改变Z的语句。因此,该段代码中的WHILE循环部分代码要么不会执行,要么可能出现死循环。

9 把统计空格程序的Jackson图(图6-26)改画为等价的程序流程图和盒图。

在这里插入图片描述

答:(1)等价的程序流程图如图6-27所示。
在这里插入图片描述
(2)等价的盒图如图6-28所示
在这里插入图片描述

10 人机对话由操作员信息和系统信息交替组成。假设一段对话总是由操作员信息开始以系统信息结束,用Jackson图描绘这样的人机对话过程。

答:人机对话过程如图6-29、6-30、6-31、6-32所示。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/357391.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C/C++每日一练(20230219)

目录 1. 用队列实现栈 2. 判断是否能组成三角形 3. 只出现一次的数字 II 附录 栈&#xff08;Stack&#xff09;和队列&#xff08;Queue&#xff09;的异同 1. 栈和队列的相同点 2. 栈和队列的不同点 1. 用队列实现栈 请你仅使用两个队列实现一个后入先出&#xff08;…

基于FFmpeg和Screen Capturer Recorder实现屏幕和声音的录制

当我们看到一些精彩的视频画面&#xff0c;但无法下载时&#xff0c;可以通过录屏的方式将视频和音频录制下来。 这个时候我们需要安装采集视频和音频的工具screen-capture-recorder。 以下是在windows10环境下&#xff0c;基于FFmpeg和Screen Capturer Recorder实现屏幕和声音…

带噪学习-概述

在实际应用的时候&#xff0c;我们的样本不会是完全干净的&#xff0c;即存在噪声样本。那使用存在噪声的样本时&#xff0c;我们如何更有效的进行模型学习呢&#xff1f;Label Dependent Nose样本选择&#xff08;Sample Selection&#xff09;第一种很直接的想法&#xff0c;…

PDDON在线画图是如何惊艳到你的?

1. 简介 PDDON是一款支持低代码(lowcode)的免费在线画图工具。可用于绘制架构图、流程图、UML、网络拓扑图、韦恩图、鱼骨图、思维导图、BPMN等&#xff0c;并且支持对象建模、数据库建模、代码/脚本生成。 PDDON与市面上现有的画图工具对比有哪些优势呢&#xff1f; 完全免费…

SpringJDBC的框架

JDBC框架概述目录概述需求&#xff1a;设计思路实现思路分析1.Spring 编程式事务管理2.方法&#xff1a;3.Marks4.网页解析器5.步骤src性能参数测试&#xff1a;参考资料和推荐阅读Survive by day and develop by night. talk for import biz , show your perfect code,full bu…

【pytorch】nn.SmoothL1Loss 函数使用

SmoothL1 Loss1、Smooth L1 Loss2、nn.SmoothL1Loss 函数使用1、Smooth L1 Loss 本方法由微软rgb大神提出&#xff0c;Fast RCNN论文提出该方法 1&#xff09;假设x为预测框和真实框之间的数值差异&#xff0c;常用的 L1 loss、L2 Loss 和 smooth L1 loss 定义分别为&#xf…

浅谈Spring中事务管理器

由于事务部分代码在设计上整体比较简单&#xff0c;我自己觉得它在设计上没有什么特别让我眼前一亮的东西&#xff0c;所以下文更多的是侧重执行流程&#xff0c;能理解事务管理器等一众概念以及相关的变量含义&#xff0c;真正遇到Bug会调试&#xff0c;知道在什么地方打断点就…

前端FileReader对象实现图片file文件转base64

1、file转base64具体代码 // 图片file转base64方法&#xff08;file文件&#xff0c;回调函数&#xff09;fileToBase64(file, callback) {// 创建FileReader对象&#xff08;不兼容IE&#xff09;let reader new FileReader();// 将file转为base64 &#xff08;异步操作&…

如何正确选择好用的投票平台微信公众平台投票链接链接投票平台

“年度人物楷模”网络评选投票_免费链接投票_作品投票通道_扫码投票怎样进行现在来说&#xff0c;公司、企业、学校更多的想借助短视频推广自己。通过微信投票小程序&#xff0c;网友们就可以通过手机拍视频上传视频参加活动&#xff0c;而短视频微信投票评选活动既可以给用户发…

driver.js web 新手交互引导工具库

前言 最近逛技术论坛发现了 driver.js 这个库&#xff0c;相信很多人在app中都碰到过功能引导的&#xff0c;这个库就可以用来做这个功能。web段项目很少见到功能引导的&#xff0c;但是用在uniapp 、浏览器插件 中感觉还是十分不错的&#xff0c;因此打算来简单学习一下&…

js 防抖函数 节流函数

某些事件中(如 onresize onscroll onkeydown onkeyup onmousemove …)&#xff0c;会连续触发函数的执行&#xff0c;如果函数执行一些耗时的操作(如请求数据…)&#xff0c;会影响性能&#xff0c;也有可能造成服务器压力。这时可以用 防抖函数 或 节流函数解决这种问题。 防…

分布式环境下的服务器时钟同步问题解决办法

一、分布式集群场景下时钟不同步会有什么问题&#xff1f; 如上面的示意图所示&#xff0c;分布式集群场景下如果各个服务器时间不一致&#xff0c;可能导致同一时间产生的数据&#xff0c;在处理过程中和数据库中&#xff0c;保存成了不同的时间&#xff0c;造成数据混乱。 …

大数据之Phoenix环境搭建

文章目录前言一、下载Phoenix安装包二、上传并解压三、拷贝服务包到各个hbase的lib目录下四、修改hbase的配置文件五、重启HBase集群六、连接Phoenix客户端前言 #博学谷IT学习技术支持# 本篇文章主要介绍Phoenix的环境搭建&#xff0c;Phoenix支持使用SQL语句操作HBase&#x…

JavaWeb6-线程常用方法

目录 1.线程等待join&#xff08;共有3个方法重载&#xff09; 1.1.public void join() 1.2.public void join(long millis) 2.线程终止 2.1.通过自定义标记符来中断&#xff08;常用&#xff09; 2.2.调用 interrupt() 方法来中断&#xff08;常用&#xff0c;最推荐使用…

Ubuntu安装落雪音乐LX Music

网址&#xff1a; https://lxmusic.toside.cn/ 以 .deb 结尾的文件为在 Linux 系统上运行的版本&#xff0c;软件还有 .rpm/AppImage/pacman 格式的 Linux 包&#xff0c;但没有上传到网盘&#xff0c;可自行到项目发布页面下载。 在Ubuntu上安装比较简单。 安装成功 打开音乐…

maven多环境配置

maven多环境配置 参考网址: https://mp.weixin.qq.com/s/-e74bd2wW_RLx7i4YF5M2w https://mp.weixin.qq.com/s/3p53kBHqys58QdMme6lR4A 项目地址 https://gitee.com/shao_ming314/maven-profile-dir 项目说明 该项目基于目录进行多环境配置 , 具体的配置文件在 src/resource…

【Opencv--自适应图像二值化】cv2.adaptiveThreshold()

【Opencv–adaptiveThreshold】自适应阈值图像二值化 文章目录【Opencv--adaptiveThreshold】自适应阈值图像二值化1. 介绍2. adaptiveThreshold函数2.1 函数调用2.2 补充说明3. 代码示例4. 效果4.1 原图&#xff08;ori.img&#xff09;4.2 处理后5. 参考1. 介绍 在这里 cv2.…

ArcGIS Enterprise on Kubernetes 11.0安装示例

博客主页&#xff1a;https://tomcat.blog.csdn.net 博主昵称&#xff1a;农民工老王 主要领域&#xff1a;Java、Linux、K8S 期待大家的关注&#x1f496;点赞&#x1f44d;收藏⭐留言&#x1f4ac; 目录安装前置条件基本安装解压文件生成秘钥执行安装脚本配置DNS方法一方法二…

快速上手:Prometheus和Grafana入门教程

目录一、简介二、安装Prometheus2.1 二进制安装2.2 添加到system服务2.3 访问UI三、安装Granfa3.1 Docker部署Mysql3.2 Docker部署Grafana3.3 访问UI3.4 添加Prometheus为数据源四、安装Exporter收集数据4.1 node_exporter 服务器监控下载解压启动node_exporter服务与整合Prome…

聚类-理论补充2

目录 一。拉普拉斯矩阵的定义 二。谱聚类算法&#xff1a;未正则拉普拉斯矩阵 三。谱聚类算法&#xff1a;随机游走拉普拉斯矩阵 四。谱聚类算法&#xff1a;对称拉普拉斯矩阵 五。进一步思考 六。随机游走和拉普拉斯矩阵的关系 七。标签传递算法 一。拉普拉斯矩阵的定义 …