结构化程序转换:IF-THEN-ELSE与DO-WHILE的互换
需积分: 0 61 浏览量
更新于2024-08-04
收藏 1.81MB DOCX 举报
"这篇文档是关于软件工程第六章的内容,主要讨论了如何使用不同的控制结构来实现等效的逻辑操作,以及如何将非结构化程序转换为结构化程序。"
在编程中,控制结构是程序流程的基础,它们决定了代码的执行顺序。在描述的问题中,提到了两种基本的控制结构:SEQUENCE(顺序执行)和DO-WHILE循环。通过这些基础结构,可以实现更复杂的逻辑操作,比如IF-THEN-ELSE。
1. 将IF-THEN-ELSE转换为DO-WHILE操作:
提供的解答通过设置一个标志变量K来实现。首先执行一个DO-WHILE循环,当满足条件时执行程序块1,然后更新K。接着进入第二个DO-WHILE循环,这次在不满足条件时执行程序块2,同样更新K。这样的设计确保了至少会执行一次程序块1或程序块2,与IF-THEN-ELSE的行为一致。
2. 反过来,将DO-WHILE转换为SEQUENCE和IF-THEN-ELSE:
使用一个标签和GOTO语句来模拟DO-WHILE循环。在IF-THEN-ELSE结构中,如果条件满足则执行程序块并跳转回标签,否则执行ELSE部分的程序块。
3. 流程图和盒图绘制:
提供的伪代码包含了一个IF-THEN-ELSE结构,其中根据条件p选择执行WHILE循环或直接执行BLOCK内的g和n。流程图和盒图的绘制需要可视化表示这段代码的流程,流程图通常使用箭头表示控制流,盒图则使用矩形框表示程序块。
4. 非结构化程序的分析与转换:
非结构化程序通常包含多入口或多出口的代码块,这违反了结构化编程的原则。图6.18的程序因其循环结构有两个出口而被认为是非结构化的。要将其转换为结构化程序,可以通过添加标识变量(如flag)来控制流程,或者重新设计控制结构,避免多重出口。
- 不使用flag的转换可能涉及嵌套的IF-THEN-ELSE结构,确保每次循环只有一条退出路径。
- 使用flag的转换则是在循环内部设置一个变量,当满足特定条件时改变flag,从而决定是否继续循环或跳出。
5. Ashcroft_Manna技术:
这是一种将非结构化程序转化为结构化程序的方法,主要通过引入新的控制结构(如CASE或UNTIL)以及辅助变量。在给定的例子中,非结构化的IF嵌套被转换为DO-CASE结构,辅助变量I用于跟踪执行路径。
总结来说,本章内容探讨了控制结构的灵活性和转换,以及如何通过结构化编程原则提高代码的可读性和维护性。无论是通过巧妙地使用现有结构,还是引入新的结构,目标都是为了使程序更加清晰和易于理解。
2022-12-24 上传
2022-08-08 上传
2022-08-08 上传
2020-07-19 上传
2021-09-21 上传
2021-10-12 上传
2024-11-18 上传
m0_74181340
- 粉丝: 0
- 资源: 1
最新资源
- 深入浅出:自定义 Grunt 任务的实践指南
- 网络物理突变工具的多点路径规划实现与分析
- multifeed: 实现多作者间的超核心共享与同步技术
- C++商品交易系统实习项目详细要求
- macOS系统Python模块whl包安装教程
- 掌握fullstackJS:构建React框架与快速开发应用
- React-Purify: 实现React组件纯净方法的工具介绍
- deck.js:构建现代HTML演示的JavaScript库
- nunn:现代C++17实现的机器学习库开源项目
- Python安装包 Acquisition-4.12-cp35-cp35m-win_amd64.whl.zip 使用说明
- Amaranthus-tuberculatus基因组分析脚本集
- Ubuntu 12.04下Realtek RTL8821AE驱动的向后移植指南
- 掌握Jest环境下的最新jsdom功能
- CAGI Toolkit:开源Asterisk PBX的AGI应用开发
- MyDropDemo: 体验QGraphicsView的拖放功能
- 远程FPGA平台上的Quartus II17.1 LCD色块闪烁现象解析