当前位置: 首页 > news >正文

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

文章目录

    • 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 画出下列伪码程序的程序流程图和盒图:

STARTIF p THEN WHILE q DO f END DOELSE BLOCK gn END BLOCKEND 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+REND DOIF F>0 THEN PRINT GELSE PRINT KEND IFSTOP

答:(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所示。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

相关文章:

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

文章目录1 假设只有SEQUENCE和DO-WHILE两种控制结构&#xff0c;怎样利用它们完成 IF THEN ELSE操作&#xff1f;2 假设只允许使用SEQUENCE和IF-THEN-ELSE两种控制结构&#xff0c;怎样利用它们完成DO WHILE操作&#xff1f;3 画出下列伪码程序的程序流程图和盒图&#xff1a;4…...

【2.19】算法题2:贪心算法、动态规划、分治

题目&#xff1a;给你一个整数数组 nums &#xff0c;请你找出一个具有最大和的连续子数组&#xff08;子数组最少包含一个元素&#xff09;&#xff0c;返回其最大和。子数组 是数组中的一个连续部分。方法一&#xff1a;贪心算法原理&#xff1a;若当前指针所指元素之前的和小…...

【Redis】Redis 发布订阅通信模式 ( 发布订阅模式 | 订阅频道 | 发布消息 | 接收消息 )

文章目录一、发布订阅模式二、订阅频道三、发布消息四、接收消息一、发布订阅模式 Redis 中 存在一种 发布订阅 消息通信模式 : 消息发布者 : 负责发送消息 , 订阅者需要订阅该发布者频道 ;消息订阅者 : 负责接收消息 ; 订阅者 先 订阅 发布者频道 , 当 发布者 发布消息时 , …...

VNCTF 2023复现

文章目录象棋王子电子木鱼BabyGo象棋王子 签到题&#xff0c;直接在源码中找就ok。 找到一处编码&#xff0c;在控制台输出。 flag为&#xff1a;flag{w3lc0m3_t0_VNCTF_2023~~~} 电子木鱼 需要先理清代码逻辑。 存在三个路由。 一&#xff1a;/路由用来查看当前的功德数量…...

python基础知识有哪些需要背(记住是基础知识)我是初学者

大家好&#xff0c;小编来为大家解答以下问题&#xff0c;一个有趣的事情&#xff0c;一个有趣的事情&#xff0c;今天让我们一起来看看吧&#xff01; 1、python基础知识有哪些需要背&#xff08;记住是基础知识&#xff09;我是初学者 或看好Python的广阔前景&#xff0c;或…...

Linux下TCP连接断开后不释放的解决办法

问题&#xff1a;在开发测试时发现断开与服务器端口后再次连接时拒绝连接。 分析&#xff1a;服务器上查看端口占用情况&#xff0c;假设端口为8888。 netstat -anp |grep 8888 发现端口8888端口显示被占用&#xff08;ip为本机ip确定是上次连接&#xff09;且状态为ESTABLI…...

1.关于嵌入式开发软件工程师的理解

学习嵌入式软件开发&#xff0c;首先要学会使用工具&#xff0c; 包括各种语言&#xff0c;C语言、FPGA、C等各种工具软件&#xff0c;各种芯片开发的IDE环境各种操作系统&#xff0c;Vxworks、Linux、Freertos等计算机基础&#xff0c;基本的框架结构&#xff0c;网络通信等编…...

1760字,让你拿捏 [‘列表‘]

如约而至&#xff0c;紧接着第一篇文章&#xff0c;小编将会陆续把自己精心做的全套Python笔记依次发放给大家&#xff0c;便于大家学习Python、期末备考、巩固基础等(这几期是公众号小插曲&#xff0c;后期发放编程技术的话主要还是会围绕Java来展开&#xff0c;感谢小伙伴们的…...

A562基于android的养老APP

需求信息&#xff1a; 1&#xff1a;家庭信息管理,包括家庭成员基本情况、性别、年龄、关系、工作单位、联系方式&#xff08;手机号码、微信等&#xff09;&#xff1b; 2&#xff1a;个人健康数据管理,包括姓名、性别、年龄、关系、原工作单位、联系方式&#xff08;手机号码…...

java面试题-并发基础

1.多线程的出现是要解决什么问题的? 本质什么?提高程序性能&#xff1a;单线程程序只能按照固定的顺序依次执行每个任务&#xff0c;无法同时处理多个任务。多线程技术可以在同一时间内执行多个任务&#xff0c;从而提高程序的运行效率和响应速度。提高程序的并发性&#xff…...

用纯C语言实现3D空间中的点坐标转化为屏幕二维点坐标,包含主视图、侧视图、俯视图、正等轴投影

要实现3D空间中的点坐标转换为屏幕二维点坐标&#xff0c;需要进行透视变换和投影变换。以下是一些基本的思路和示例代码&#xff0c;可以用于实现主视图、侧视图、俯视图、正等轴投影。 1. 主视图投影 主视图投影是指以一个点作为视点&#xff0c;从一个方向观察物体&#x…...

.sh脚本文件的执行方式

方法1&#xff1a; ./xxx.sh方法2&#xff1a; source xxx.sh方法3&#xff1a; bash xxx.sh方法4: sh xxx.sh初识shell&#xff0c;学习并记录...

Android 基础知识4-2.5View与VIewGroup的概念、关系与区别

1.概念&#xff1a; Android里的图形界面都是由View和ViewGroup以及他们的子类构成的&#xff1a; View&#xff1a;所有可视化控件的父类,提供组件描绘和时间处理方法 ViewGroup&#xff1a; View类的子类&#xff0c;可以拥有子控件,可以看作是容器 Android UI中的控件都是…...

【ESP 保姆级教程】玩转巴法云篇① ——初识巴法云

忘记过去,超越自己 ❤️ 博客主页 单片机菜鸟哥,一个野生非专业硬件IOT爱好者 ❤️❤️ 本篇创建记录 2023-02-19 ❤️❤️ 本篇更新记录 2023-02-19 ❤️🎉 欢迎关注 🔎点赞 👍收藏 ⭐️留言📝🙏 此博客均由博主单独编写,不存在任何商业团队运营,如发现错误,请…...

Python学习-----模块3.0(正则表达式-->re模块)

目录 前言&#xff1a; 导入模块 1.re.match() 函数 &#xff08;1&#xff09;匹配单个字符 &#xff08;2&#xff09;匹配多个字符 (3) 匹配开头和结尾 2.re.search() 函数 3.re.findall() 函数 4.re.finditer() 函数 5.re.split() 函数 6.re.sub() 函数 7.re.sub…...

JSP中http与内置对象学习笔记

本博文讲述jsp客户端与服务器端的http、jsp内置对象与控制流和数据流实现 1.HTTP请求响应机制 HTTP协议是TCP/IP协议中的一个应用层协议&#xff0c;用于定义客户端与服务器之间交换数据的过程 1.1 HTTP请求 HTTP请求由请求行、消息报头、空行和请求数据4部分组成。 请求行…...

Windows Server 2016远程桌面配置全过程

镜像下载 系统镜像网址 本次下载的是 Windows Server 2016 (Updated Feb 2018) (x64) - DVD (Chinese-Simplified) 远程桌面配置 Step 1 在开始菜单搜索服务&#xff0c;打开服务器管理器&#xff0c;点击右上角的管理按钮 Step 2 添加角色控制&#xff0c;点击下一步 S…...

SPI通讯简介

一、基本概念 SPI是串行外设接口(Serial Peripheral Interface)的缩写&#xff0c;是一种高速的&#xff0c;全双工&#xff0c;同步的通信总线&#xff0c;主要应用在EEPROM,FLASH,实时时钟&#xff0c;AD转换器&#xff0c;多MCU间通讯等等&#xff0c;SPI端口可以在多主器件…...

Python 迭代器

迭代器协议 对象必须提供一个 next() 方法&#xff0c;执行该方法要么迭代下一项&#xff0c;要么就引起一个 StopIteration异常以终止迭代&#xff08;只能往后不能往前&#xff09;—— 迭代器协议 协议是一种约定&#xff0c;可迭代对象实现了迭代器协议&#xff08;for、…...

Python语言零基础入门教程(二十七)

Python OS 文件/目录方法 Python语言零基础入门教程&#xff08;二十六&#xff09; 61、Python os.utime() 方法 概述 os.utime() 方法用于设置指定路径文件最后的修改和访问时间。 在Unix&#xff0c;Windows中有效。 语法 utime()方法语法格式如下&#xff1a; os.uti…...

Redis基础操作以及数据类型

目录 Redis基础操作 java中的i是不是原子操作&#xff1f;不是 数据类型 1. list 2. set 3. Hash哈希 4. Zset有序集合 Redis基础操作 set [key] [value] 设置值 &#xff08;设置相同的会将原先的覆盖&#xff09; get [key] 获取值 不能覆盖和替换 ttl [key] 以秒为单…...

自抗扰控制ADRC之反馈控制律(NLSEF)

目录 前言 1.非线性状态误差反馈控制律(NLSEF) 1.1 控制律形式 1.2 控制量的生成(或者说扰动的补偿) 1.2.1补偿形式① 1.2.1补偿形式② 2.仿真分析 2.1仿真模型 2.2仿真结果 前言 前面的两篇博客依次介绍了TD微分跟踪器安排过渡过程、扩张观测器&#xff1a; 自抗扰…...

“生成音乐“ 【循环神经网络】

前言 本文介绍循环神经网络的进阶案例&#xff0c;通过搭建和训练一个模型&#xff0c;来对钢琴的音符进行预测&#xff0c;通过重复调用模型来进而生成一段音乐&#xff1b; 使用到Maestro的钢琴MIDI文件 &#xff0c;每个文件由不同音符组成&#xff0c;音符用三个量来表示…...

能否手写vue3响应式原理-面试进阶

&#xff08;二&#xff09;响应式原理 利用ES6中Proxy作为拦截器&#xff0c;在get时收集依赖&#xff0c;在set时触发依赖&#xff0c;来实现响应式。 &#xff08;三&#xff09;手写实现 1、实现Reactive 基于原理&#xff0c;我们可以先写一下测试用例 //reactive.spe…...

前端工程师leetcode算法面试必备-简单的二叉树

一、前言 本难度的题目主要考察二叉树的基本概念和操作。 1、基本概念 树是计算机科学中经常用到的一种非线性数据结构&#xff0c;以分层的形式存储数据。二叉树是一种特殊的树结构&#xff0c;每个节点最多有两个子树&#xff0c;通常子树被称作“左子树”和“右子树”。 …...

【什么程度叫熟悉linux系统】

一、编译内核 1、Linux系统背景&#xff1a;Ubuntu 2、内核源码kernel.org进行下载 3、解压内核源文件linux-6.1.12.tar.xz、命令&#xff1a;tar -xvf linux-6.1.12.tar.xz 4、进入解压好的文件inux-6.1.12 5、配置内核命令&#xff1a;make menuconfig&#xff08;需要进…...

编译安装MySQL

MySQL 5.7主要特性 随机root 密码&#xff1a;MySQL 5.7 数据库初始化完成后&#xff0c;会自动生成一个 rootlocalhost 用户&#xff0c;root 用户的密码不为空&#xff0c;而是随机产生一个密码。原生支持&#xff1a;Systemd 更好的性能&#xff1a;对于多核CPU、固态硬盘、…...

Kubernetes一 Kubernetes之入门

二 Kubernetes介绍 1.1 应用部署方式演变 在部署应用程序的方式上&#xff0c;主要经历了三个时代&#xff1a; 传统部署&#xff1a;互联网早期&#xff0c;会直接将应用程序部署在物理机上 优点&#xff1a;简单&#xff0c;不需要其它技术的参与 缺点&#xff1a;不能为应…...

SQLServer2000 断电后数据库suspect“置疑”处理

SQLServer2000 断电后数据库suspect“置疑”处理 背景介绍&#xff1a; 前些天加班时候&#xff0c;接到小舅子微信&#xff0c;说一个客户的winXP 机器上sql2000的数据库在断电重启后&#xff0c;数据库执行命令时提示suspect“置疑”错误。小舅子电子工程师&#xff0c;对数…...

多模态机器学习入门Tutorial on MultiModal Machine Learning——第一堂课个人学习内容

文章目录课程记录核心技术Core Technical Challengesrepresentation表示alignment对齐转换translationFusion融合co-learning共同学习总结Course Syllabus教学大纲个人总结第一周的安排相关连接课程记录 这部分是自己看视频&#xff0c;然后截屏&#xff0c;记录下来的这部分的…...

wordpress robot.txt/加强服务保障满足群众急需ruu7

postgresql比mysql的优势&#xff1a;1、稳定性极强&#xff0c;比mysql稳定性更好PostgreSQL 的稳定性极强&#xff0c; Innodb 等引擎在崩溃、断电之类的灾难场景下抗打击能力有了长足进步&#xff0c;然而很多 MySQL 用户都遇到过Server级的数据库丢失的场景——mysql系统库…...

中国建设银行网站首页企业网银/查淘宝关键词排名软件有哪些

刚刚研究了Kmeans。Kmeans是一种十分简单的聚类算法。可是他十分依赖于用户最初给定的k值。它无法发现随意形状和大小的簇。最适合于发现球状簇。他的时间复杂度为O(tkn)。kmeans算法有两个核心点&#xff1a;计算距离的公式&推断迭代停止的条件。一般距採用欧式距离等能够…...

企业怎么做网站建设/google安卓手机下载

在这个系列的***部分里&#xff0c;我们创建了一个电子商务网站&#xff0c;呈示了三类URL:我们通过创建象下面这样一个ProductsController类来处理这些URL&#xff1a;在把上面这个类加到我们的应用中后&#xff0c;asp.net mvc框架就会把进来的URL自动导向到我们的控制器上的…...

做网站的品牌公司/淘宝seo具体优化方法

微博上有个自称“大笨钟V”的家伙&#xff0c;每天敲钟催促码农们爱惜身体早点睡觉。不过由于笨钟自己作息也不是很规律&#xff0c;所以敲钟并不定时。一般敲钟的点数是根据敲钟时间而定的&#xff0c;如果正好在某个整点敲&#xff0c;那么“当”数就等于那个整点数&#xff…...

做网站上传的图片大小/百度关键词查询工具

本发明涉及电机控制领域&#xff0c;尤其涉及一种电机h桥制动电路。背景技术&#xff1a;电动立柱的电机控制一般有两种&#xff0c;一种是h桥的四个开关管控制一个电机的正反转和转速&#xff1b;另一种是通过两个继电器控制电机的正反转&#xff0c;一个开关管控制电机的转速…...

临朐昌大建设/杭州seo建站

站在空无一人略有冷意的街头&#xff0c;突然有种恍如隔世的感觉&#xff1a;这就是传说中橘生淮北则为枳的淮北&#xff1f;咦&#xff0c;我为什么会出现在这里&#xff1f; 于是我陷入了深深的思考。 关于对过去的思考 托尔斯泰说过&#xff1a;幸福的家庭是相似的&#xff…...