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

系统架构设计(十):结构化编程

定义

结构化编程是一种遵循清晰逻辑结构、避免使用 goto 的编程方法。它强调使用有限的三种基本控制结构来组织程序,提高程序的可读性、可维护性和可测试性

它是现代程序设计的基础,被广泛应用于命令式语言(如 C、Pascal、Java)中。

三种基本控制结构

控制结构说明示例语句
顺序结构从上到下依次执行A(); B(); C();
选择结构根据条件执行不同分支if…else、switch
循环结构重复执行代码块for、while、do…while

基本原则

  1. 模块化原则:将程序划分为若干函数/过程模块;
  2. 自顶向下设计:先规划总结构,再细化每层模块;
  3. 逐步求精:由抽象到具体,逐层实现;
  4. 控制结构有限原则:只使用顺序、选择、循环三种控制结构;
  5. 无 goto 原则:避免跳转语句导致程序流程混乱。

优缺点

优点

  • 结构清晰、逻辑明确;
  • 易于阅读、测试和维护;
  • 提高程序的可移植性和可重用性;
  • 便于团队协作开发。

局限性

  • 在面对复杂系统或高复用需求时缺乏抽象能力;
  • 模块粒度可能较粗,函数之间耦合较强;
  • 难以应对对象关系、事件驱动等复杂场景;
  • 不支持数据和行为的封装。

结构化编程与面向对象编程对比

比较维度结构化编程面向对象编程(OOP)
核心思想以过程/函数为中心以对象(数据+行为)为中心
数据管理数据与操作分离数据与操作封装在对象中
可维护性中等较强,支持继承与多态
重用性依赖函数调用支持继承、接口、封装、组合
编程复杂性简单,适合小型程序复杂,适合大型复杂系统

示例

请结合结构化编程思想设计一个学生成绩统计程序,并说明其程序结构。

解答:

主控制模块(main)

  • 负责调用各功能模块,整体程序的执行入口。

输入模块

  • 负责接收用户输入,如学生人数、成绩等。

处理模块

  • 实现成绩统计功能,如求平均值、最高分、最低分;
  • 采用循环结构实现遍历。

输出模块

  • 显示最终结果,采用顺序结构输出信息。

相关文章:

系统架构设计(十):结构化编程

定义 结构化编程是一种遵循清晰逻辑结构、避免使用 goto 的编程方法。它强调使用有限的三种基本控制结构来组织程序,提高程序的可读性、可维护性和可测试性。 它是现代程序设计的基础,被广泛应用于命令式语言(如 C、Pascal、Java&#xff0…...

标准差和方差是什么

标准差和方差是什么 标准差的简单理解 标准差是衡量一组数据**离散程度(即数据的分散或集中程度 )**的统计量。它表示数据集中每个数值与这组数据平均值的偏离程度。 标准差越大,说明数据越分散,波动越大; 标准差越小,说明数据越集中,波动越小 。 可以把数据想象成一群…...

【周输入】510周阅读推荐-3

前文 【周输入】510周阅读推荐-1-CSDN博客 【周输入】510周阅读推荐-2-CSDN博客 本次推荐 目录 前文 本次推荐 算法技术 模型产品 算法技术 vLLM和DeepSpeed部署模型的优缺点_vllm deepspeed-CSDN博客 优点缺点总结vLLM 适用于推理 优化内存管理 高效并行化 功能单…...

Android平台GB28181设备接入与功能支持详解

GB28181协议作为中国国家标准,广泛应用于安防、智慧城市和交通监控等领域。大牛直播SDK提供了全面支持GB28181设备接入的技术方案,能够有效帮助开发者实现设备的快速接入与管理。在本文中,我们将深入介绍大牛直播SDK在Android平台上对于GB281…...

mvc-ioc实现

IOC 1)耦合/依赖 依赖,是谁离不开谁 就比如上诉的Controller层必须依赖于Service层,Service层依赖于Dao 在软件系统中,层与层之间存在依赖。我们称之为耦合 我们系统架构或者设计的一个原则是&#xff…...

Windows 11 C:\Windows\Web\Wallpaper

Windows 11 C:\Windows\Web\Wallpaper 纯色壁纸自定义 没一个好看的...

医疗信息系统安全防护体系的深度构建与理论实践融合

一、医疗数据访问系统的安全挑战与理论基础 1.1 系统架构安全需求分析 在医疗信息系统中,基于身份标识的信息查询功能通常采用分层架构设计,包括表现层、应用层和数据层。根据ISO/IEC 27001信息安全管理体系要求,此类系统需满足数据保密性…...

Compose笔记(二十五)--Brush

这一节主要了解一下Compose中Brush,在Jetpack Compose里,Brush是一个重要的 API,它用于定义填充图形的颜色渐变或图案,能够为界面元素添加丰富的视觉效果。简单总结如下: 1 常见场景 填充形状(圆形、矩形等) 创建渐变…...

Spring Web MVC————入门(3)

今天我们来一个大练习,我们要实现一个登录界面,登录进去了先获取到登录人信息,可以选择计算器和留言板两个功能,另外我们是学后端的,对于前端我们会些基础的就行了,知道ajax怎么用,知道怎么关联…...

HTML 属性详解

HTML 属性详解 HTML(HyperText Markup Language)是创建网页的标准标记语言。在HTML中,元素可以通过属性来扩展其功能。属性是元素的一个特性,它提供了关于元素的额外信息。本文将详细介绍HTML中的常见属性,帮助您更好地理解和运用HTML。 一、HTML属性的基本概念 HTML属…...

NC61 两数之和【牛客网】

文章目录 零、原题链接一、题目描述二、测试用例三、解题思路3.1 排序双指针3.1 散列 四、参考代码4.1 排序双指针4.2 散列 零、原题链接 NC61 两数之和 一、题目描述 二、测试用例 三、解题思路 3.1 排序双指针 基本思路:   先对序列进行排序,然后…...

Java生成可控的Word表格功能开发

在日常办公自动化与系统集成场景中,生成结构化的Word文档已成为一种刚性需求,尤其是带有格式规范、内容动态填充的Word表格(Table)。本文将围绕如何利用Java开发一个可控的Word表格生成功能模块展开,涵盖技术选型、代码实现、边界控制与常见问题处理等方面,帮助开发者快速…...

Node.js中的洋葱模型

文章目录 前言 前言 Node.js中的洋葱模型是一种中间件执行机制,主要用于处理HTTP请求和响应的流程控制。该模型通过层层包裹的中间件结构,实现请求从外到内穿透、响应从内向外返回的顺序执行。以下从核心概念、实现原理、框架差异及实际应用等方面解析&…...

Spring Boot 中 MyBatis 与 Spring Data JPA 的对比介绍

一、核心概念 MyBatis 定义:基于 SQL 的持久层框架,提供灵活的 SQL 映射和自定义查询能力。 特点: 开发者手动编写 SQL(XML 或注解)。 支持动态 SQL、复杂查询优化。 轻量级,对数据库控制力强。 Spri…...

如何分析动态采样引起的计划不稳定 | OceanBase SQL 调优实践

这篇博客涉及两个知识点,一个是动态采样,另一个是 DAS 执行。 用户的问题和相关结论 我们看看用户在OceanBase 社区论坛发帖中提出的疑问及其所得出的结论。 问题:收集统计信息之前,为什么会出现计划不稳定的情况? …...

如何实现RTSP和RTMP低至100-200ms的延迟:直播SDK的技术突破

在实时音视频传输中,低延迟是直播应用的核心技术要求之一。无论是在线教育、远程医疗,还是实时互动直播,延迟过大会影响用户体验,甚至导致应用无法正常使用。大牛直播SDK(SmartMediaKit)在RTSP和RTMP播放器…...

symfonos: 2靶场

symfonos: 2 来自 <https://www.vulnhub.com/entry/symfonos-2,331/> 1&#xff0c;将两台虚拟机网络连接都改为NAT模式 2&#xff0c;攻击机上做namp局域网扫描发现靶机 nmap -sn 192.168.23.0/24 那么攻击机IP为192.168.23.182&#xff0c;靶场IP192.168.23.253 3&…...

【图像生成大模型】Step-Video-T2V:下一代文本到视频生成技术

Step-Video-T2V&#xff1a;下一代文本到视频生成技术 引言Step-Video-T2V 项目概述核心技术1. 视频变分自编码器&#xff08;Video-VAE&#xff09;2. 3D 全注意力扩散 Transformer&#xff08;DiT w/ 3D Full Attention&#xff09;3. 视频直接偏好优化&#xff08;Video-DPO…...

C语言中的指针:从基础到进阶实战

指针是C语言中最具特色且功能强大的特性之一。它们不仅是内存管理的核心工具&#xff0c;还能帮助程序员实现复杂的数据结构和高效算法。本文将从指针的基础知识入手&#xff0c;逐步深入探讨其高级应用&#xff0c;结合实际示例&#xff0c;助你掌握指针的精髓。 一、指针的基…...

深度学习推理引擎---ONNX Runtime

一、基础概念 1. 什么是ONNX Runtime&#xff1f; 定位&#xff1a;由微软开发的跨平台推理引擎&#xff0c;专为优化ONNX&#xff08;Open Neural Network Exchange&#xff09;模型的推理性能设计。目标&#xff1a;提供高效、可扩展的推理能力&#xff0c;支持从云到边缘的…...

JAVA Spring MVC+Mybatis Spring MVC的工作流程*,多表连查

目录 注解总结 将传送到客户端的数据转成json数据 **描述一下Spring MVC的工作流程** 1。属性赋值 BeanUtils.copyProperties(addUserDTO,user); 添加依赖&#xff1a; spring web、mybatis framework、mysql driver Controller和ResponseBody优化 直接改成RestControl…...

ctr查看镜像

# 拉取镜像到 k8s.io 命名空间 sudo nerdctl --namespace k8s.io pull nginx:1.23.4 # 验证镜像是否已下载 sudo nerdctl --namespace k8s.io images 下载镜像到k8s.io名称空间下 nerdctl --namespace k8s.io pull zookeeper:3.6.2 sudo ctr image pull --namespace k8s.io …...

VueUse/Core:提升Vue开发效率的实用工具库

文章目录 引言什么是VueUse/Core&#xff1f;为什么选择VueUse/Core&#xff1f;核心功能详解1. 状态管理2. 元素操作3. 实用工具函数4. 浏览器API封装5. 传感器相关 实战示例&#xff1a;构建一个拖拽上传组件性能优化技巧与原生实现对比常见问题解答总结 引言 在现代前端开发…...

数字格式化库 accounting.js的使用说明

accounting.js 是一个用于格式化数字、货币和金额的轻量级库&#xff0c;特别适合财务和会计应用。以下是其详细使用说明&#xff1a; 安装与引入 通过 npm 安装&#xff1a; bash 复制 下载 npm install accounting 引入&#xff1a; javascript 复制 下载 const accounting …...

​Docker 网络

目录 ​前言 ​1. Docker 网络模式​ ​2. 默认 bridge 网络详解​ ​​&#xff08;1&#xff09;特点​ ​​&#xff08;2&#xff09;操作示例​ ​3. host 网络模式​ ​​&#xff08;1&#xff09;特点​ ​​&#xff08;2&#xff09;操作示例​ ​4. overlay…...

【论文阅读】A Survey on Multimodal Large Language Models

目录 前言一、 背景与核心概念1-1、多模态大语言模型&#xff08;MLLMs&#xff09;的定义 二、MLLMs的架构设计2-1、三大核心模块2-2、架构优化趋势 三、训练策略与数据3-1、 三阶段训练流程 四、 评估方法4-1、 闭集评估&#xff08;Closed-set&#xff09;4-2、开集评估&…...

基于多头自注意力机制(MHSA)增强的YOLOv11主干网络—面向高精度目标检测的结构创新与性能优化

深度学习在计算机视觉领域的快速发展推动了目标检测算法的持续进步。作为实时检测框架的典型代表,YOLO系列凭借其高效性与准确性备受关注。本文提出一种基于多头自注意力机制(Multi-Head Self-Attention, MHSA)增强的YOLOv11主干网络结构,旨在提升模型在复杂场景下的目标特征…...

vue3 elementplus tabs切换实现

Tabs 标签页 | Element Plus <template><!-- editableTabsValue 是当前tab 的 name --><el-tabsv-model"editableTabsValue"type"border-card"editableedit"handleTabsEdit"><!-- 这个是标签面板 面板数据 遍历 editableT…...

关于机器学习的实际案例

以下是一些机器学习的实际案例&#xff1a; 营销与销售领域 - 推荐引擎&#xff1a;亚马逊、网飞等网站根据用户的品味、浏览历史和购物车历史进行推荐。 - 个性化营销&#xff1a;营销人员使用机器学习联系将产品留在购物车或退出网站的用户&#xff0c;根据客户兴趣定制营销…...

Linux的进程概念

目录 1、冯诺依曼体系结构 2、操作系统(Operating System) 2.1 基本概念 ​编辑 2.2 目的 3、Linux的进程 3.1 基本概念 3.1.1 PCB 3.1.2 struct task_struct 3.1.3 进程的定义 3.2 基本操作 3.2.1 查看进程 3.2.2 初识fork 3.3 进程状态 3.3.1 操作系统的进程状…...