【时时三省】(C语言基础)三种基本结构和改进的流程图

ops/2025/2/22 20:05:18/

山不在高,有仙则名。水不在深,有龙则灵。 ----CSDN 时时三省

传统流程图的弊端

传统的流程图用流程线指出各框的执行题序,对流程线的使用没有严格限制。因此,使用者可以不受限制地使流程随意地转来转去,使流程图变得毫无规律,阅读时要花很大精力去追踪流程,使人难以理解算法的逻辑。这种情况如图所示

 这种如同乱麻一样的算法称为BS型算法,意为一碗面条毫无头绪

为了提高算法的质量,使算法的设计和阅读方便,必须限制箭头的滥用,即不允许无规律地使流程随意转向,只能顺序地进行下去,但是,算法上难免会包含一些分支和循环,而不可能全部由一个个顺序框组成。

为了解决这个问题,人们规定出几种基本结构,然后由这些基本结构按一定规律组成一个算法结构(如同用一些基本预制构件来搭成房屋一样),如果能做到这一点,算法的质量就能得到保证和提高

三种基本结构

以下用3种基本结构作为表示一个良好算法的基本单元。

( 1 )顺序结构。

 ( 2 )选择结构。

 注意:无论p条件是否成立,只能执行A框或B框之一,不可能既执行A框又执行B框。无论走哪一条路径,在执行完A或B之后,都经过b点,然后脱离本选择结构。A或B两个框中可以有一个是空的,即不执行任何操作,如图

 ( 3 )循环结构。

①当型( while型)循环结构。

②直到型( until型)循环结构。

 以上3种基本结构,有以下共同特点:

( 1 )只有一个人口。

( 2 )只有一个出口。

请注意,一个判断框有两个出口,而一个选择结构只有一个出口。不要将判断框的出口和选择结构的出口混淆。

( 3 )结构内的每一部分都有机会被执行到。也就是说,对每一个框来说,都应当有一条从人口到出口的路径通过它。

( 4 )结构内不存在“死循环”(无终止的循环)

由以上3种基本结构顺序组成的算法结构,可以解决任何复杂的问题。由基本结构所构成的算法属于“结构化”的算法,它不存在无规律的转向,只在本基本结构内才允许存在分支和向前或向后的跳转。

其实,基本结构并不一定只限于上面3种,只要具有上述4个特点的都可以作为基本结构。人们可以自己定义基本结构,并由这些基本结构组成结构化程序。例如

 也可以将这样的结构定义为基本结构。

 图示的是一个多分支选择结构,根据给定的表达式的值决定执行哪一个框。


http://www.ppmy.cn/ops/160592.html

相关文章

非常简洁的一个 Excel 导出封装,生成多个 Excel 文件并打包成 zip 通过浏览器下载

分享链接:https://github.com/xcjiu/php-excel 数据转换成 Excel 导出应用 非常简洁的一个 excel 导出封装,只要查询速度快,一百万数据量几十秒可导出并下载,生成多个 excel 文件并打包成 zip 通过浏览器下载 服务器临时生成的文…

计算机专业知识【深入理解 IP 地址与子网掩码:从 /27 到不同 CIDR 表示】

在计算机网络里,IP 地址和子网掩码是构建网络通信的基石。像 “135.21.128.0/27” 这种表述很常见,其中的 “/27” 以及它与 “1/24”、“8/24” 等不同 CIDR 表示法的差异,可能会让初学者感到困惑。接下来,我们就详细展开说说。 …

pikachu之CSRF防御:给你的请求加上“网络身份证”

CSRF防御:给你的请求加上“网络身份证” 上集回顾 ​在上一章节中,我们化身“遥控黑客”,用GET请求和POST表单把CSRF漏洞玩得风生水起,体验了“隔空改签名”等骚操作。今天,我们将从攻击者变身防御者,揭秘…

2.6学习

misc buu-[GXYCTF2019]佛系青年 得到一个压缩包,需要密码才能解密010查看一下是真加密还是伪加密。看到是伪加密,将90改为00,得到文件 解压后是一个压缩包和一个文本文件,打开文本文件,看到最下方有一段密文&#x…

论文概览 |《Urban Analytics and City Science》2023.10 Vol.50 Issue.8

本次给大家整理的是《Environment and Planning B: Urban Analytics and City Science》杂志2023年10月第50卷第8期的论文的题目和摘要,一共包括21篇SCI论文! 论文1 Advances in geospatial approaches to transport networks and sustainable mobility …

Spring统一功能处理:拦截器、响应与异常的统一管理

目录 一.拦截器 二.统一数据返回格式 三.统一异常处理 一.拦截器 拦截器是Spring框架提供的核功能之,主要来拦截的请求,在指定法前后,根据业务需要执预先设定的代码。 也就是说,允许开发员提前预定义些逻辑,在的请…

Vue.prototype 详解及使用

简介: 在 Vue.js 开发中,Vue.prototype 是一个强大的特性,允许开发者向所有 Vue 实例添加全局方法或属性。 一、Vue.prototype 的作用与原理 原型链继承 Vue 实例通过原型链继承 Vue.prototype 上的属性和方法。当在原型上添加属性或方法后…

[文末数据集]ML.NET库学习010:URL是否具有恶意性分类

文章目录 ML.NET库学习010:URL是否具有恶意性分类项目主要目的和原理项目概述主要功能和步骤总结数据集地址ML.NET库学习010:URL是否具有恶意性分类 项目主要目的和原理 项目主要目的: 本项目的目的是通过分析URL的特征,构建一个机器学习模型来判断给定的URL是否具有恶意…