C语言学习笔记:结构化程序设计思想

news2024/11/26 15:37:04

✨博文作者:烟雨孤舟
💖 喜欢的可以 点赞 收藏 关注哦~~

✍️ 作者简介: 一个热爱大数据的学习者

✍️ 笔记简介:作为大数据爱好者,以下是个人总结的学习笔记,如有错误,请多多指教!

目录

自顶向下分析问题

逐步求精

函数实现

模块化设计  

结构化编码主要原则  


对于一个具体问题,一般按照结构化程序设计方法来组织函数,主要原则可以概括为“自顶向下,逐步求精,函数实现”

 

自顶向下分析问题

把大的复杂的问题分解成小问题后再解决,面对一个复杂的问题,首先进行整体分析,按照组织或功能将问题分解成子问题,若子问题仍然复杂也继续分解,直到容易解决为止。
自顶向下的方法有助于后续的模块化设计与测试,以及系统的集成。

逐步求精

对于复杂的问题,其中大的操作应该将其分解为更小的子步骤序列,逐步明晰实现过程。

函数实现

通过逐步求精,把程序要解决的全局目标分解成局部目标,在进一步分解成具体的小目标,把最终的小目标通过函数来实现。

模块化设计  

在这个阶段,需将模块组织成良好的层次系统,顶层模块调用其下层模块以实现程序的完整功能,每个层次模块外调用更下层的模块,从而完成程序的一个子功能,最下层的模块完成更具体的功能。
模块化设计时要遵循模块独立性的原则,即模块之间的联系应尽量简单。体现在:
1.一个模块只能完成一个指定的功能
2.模块之间只能通过参数进行调用。
3.一个模块只有一个入口和一个出口
4.模块内慎用全局变量
模块化设计使程序结构清晰,易于设计和理解,有利于大型软件的开发。
c语言中,模块一般通过函数来实现,一个模块对应一个函数。在设计模块时,模块中包含的语句一般不要超过50行,以便于程序的阅读。
例:
    学生成绩统计程序的层次结构图为
                学生成绩统计程序
    成绩输入    成绩输出    数据查找    数据成绩
    模块化设计为:
    (1)设计5个函数,每个函数完成一项功能,代表一个模块。包括main函数、成绩输入函数、成绩输出函数、数据查找函数、数据成绩函数
    (2)模块之间的调用关系为:主函数main()函数、依次调用成绩输入函数、成绩输出函数、数据查找函数、数据成绩函数,完成计算功能。

结构化编码主要原则  

1.经模块化设计后,每个模块都可以独立编码。编码时应选用顺序、选择、循环3种控制结构,对于复杂问题可以通过3种结构的组合、嵌套实现,以清晰表明程序的逻辑结构。
2.对变量、函数、常量等命名时,要见名知意,有助于对函数变量或功能的理解
3.在程序中增加适量的必要的注释,增加程序的可读性
4.要有良好的程序视觉组织,利用缩进格式,一行写一条语句,呈现出程序语句的阶梯方式,使程序逻辑结构层次分明、结构清晰
5.程序要清晰易懂,语句构造简单明了。
6.程序有良好的交互性,输入有提示,输出有说明

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

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

相关文章

基于51单片机设计的呼吸灯

一、项目介绍 呼吸灯是一种常见的LED灯光效果,它可以模拟人类呼吸的变化,使灯光看起来更加柔和和自然。51单片机是一种广泛使用的微控制器,具有体积小、功耗低、成本低等优点,非常适合用于控制LED呼吸灯。本项目的呼吸灯将使用PWM(脉冲宽度调制)技术控制LED亮度,从而实…

HX8358A功放IC规格书

HX8358A AB /D 类切换,最高7V供电10W 输出功率,单通道音频功率放大器 概要 HX8358A是一款FM无干扰、带防破音AB/D类可切换、高效率、无滤波器的10W单声道音频功率放大器。超低的EMI非常适合应用于带FM功能的便携式设备中。 HX8358A的单端输入架构和极高的PSRR有效地提高了HX835…

程序员一眼就会爱上的 7 个网站

作为程序员,您可以经常发现并学习最新的工具,这些工具可以帮助您提高知识、跟上新兴技术并与其他程序员建立联系。今天给大家分享7个非常有意思的网站。 HackerRank 地址:https://www.hackerrank.com/ HackerRank提供各种编码挑战和竞赛&am…

C国演义 [第三章]

第三章 组合分析步骤递归函数的返回值和参数递归结束的条件单层逻辑 组合总和 III 组合 力扣链接 给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以按 任何顺序 返回答案。 示例 1: 输入:n 4, k 2 输出&#xff1…

【STM32训练—WiFi模块】第二篇、STM32驱动ESP8266WiFi模块获取天气

目录 第一部分、前言 1、获取心知天气API接口 2、硬件准备 第二部分、电脑串口助手调试WIFI模块获取天气 1、ESP8266获取天气的流程 2、具体步骤 第三部分、STM32驱动ESP8266模块获取天气数据 1、天气数据的解析 1.1、什么函数来解析天气数据? 2.1、解析后…

【MySQL数据库】MySQL索引

MySQL索引、事务与存储引擎 一、索引1.1索引的概念1.2索引的作用1.3索引的工作原理1.4索引的副作用1.5索引的应用场景 二、索引的创建与分类2.1普通索引,最基本的索引类型,没有唯一性之类的限制。2.2唯一索引2.3 主键索引2.4组合索引2.5全文索引 三、删除…

JMeter源码解析之结果收集器

目录 前言: 一、JMeter结果收集器概述 二、单机模式 三、分布式模式 四、总结 前言: JMeter是一款著名的开源性能测试工具,JMeter提供了多种结果收集器,以帮助用户对性能测试结果数据进行收集、整理和分析。 一、JMeter结果…

Mysql数据库初体验及管理

Mysql数据库初体验及管理 一、数据库相关概念1.数据库的组成2.数据库管理系统3.数据库系统 二、数据库的发展1.第一代数据库2.第二代数据库3.第三代数据库 三、主流的数据库介绍四、关系型数据库1、介绍2、实体3、关系4、属性非关系型数据库 五、Mysql数据库管理1、库和表2、常…

Excel 2021入门指南:详细解读常用功能

软件安装:办公神器office2021安装教程,让你快速上手_正经人_____的博客-CSDN博客 一、 新建工作表 打开Excel 2021后,可以看到左上角的“文件”选项,在弹出的菜单中选择“新建”选项,然后可以选择使用空白工作表或者…

工具-自动获取/校对XpathHelper/XpathHelperPlus/XPathHelperWizard插件轻松配置xpath规则

目录 一、xpath插件功能对比1.1、应用的范围1.2、不依赖插件,依赖谷歌开发者工具1.3、XpathHelper/XpathHelperPlus/XPathHelperWizard插件功能特点 二、安装XpathHelper插件以及用法2.1、安装XpathHelperPlus插件2.2、XpathHelperPlus插件使用方法 三、安装XPathHe…

自然语言处理: 第二章Word2Vec

一. 理论基础 维度很高(与语料库有关),计算复杂稀疏性,浪费计算效率,只有一个元素是1 其他都是0缺乏语义信息,无法衡量语义相似度无法处理未知单词 而在One-Hot的基础上,Word2Vec 是一种分布式表达字/词的方式&#x…

Java|注解之定义注解

Java语言使用interface语法来定义注解(Annotation),它的格式如下: public interface Report {int type() default 211;String level() default "211";String value() default "211"; } 注解的参数类似无参数…

华为OD机试真题 JavaScript 实现【比赛评分】【2023 B卷 100分】,附详细解题思路

一、题目描述 一个有N个选手参加比赛&#xff0c;选手编号为1~N&#xff08;3<N<100&#xff09;&#xff0c;有M&#xff08;3<M<10&#xff09;个评委对选手进行打分。打分规则为每个评委对选手打分&#xff0c;最高分10分&#xff0c;最低分1分。 请计算得分最…

Android 音视频开发核心知识点笔记整合

很多开发者都知道Android音视频开发这个概念&#xff0c;音视频开发不仅需要掌握图像、音频、视频的基础知识&#xff0c;并且还需要掌握如何对它们进行采集、渲染、处理、传输等一系列的开发和应用&#xff0c;因此&#xff0c;音视频开发是一门涉及到很多内容的领域。 随着5G…

开战在即!与全球伙伴一起打造你的数据应用,TiDB Future App Hackathon 2023 来啦!

2023 TiDB Future App Hackathon 来啦&#xff01;本届 Hackathon 的主题为&#xff1a;Code, Innovate & Build Amazing Data Applications —— 释放你的创造力、构建突破性的应用、在全球范围内寻找你的队友、体验最新最 in 的 Serverless 技术&#xff0c;更有 总计 $3…

马原第一章复习1.

一.物质的存在方式 《德法年鉴》 完成从唯物到唯心 从革命主义等到共产主义的过度 为创立马克思理论提供了根本前提《德意志形态》 首次阐述了历史唯物主义的基本观点《共产党宣言》标志着马克思主义的公开问世 也是第一个无产阶级政党的党纲《资本论》阐述剩余价值学说 解释生…

【推荐】Oracle Live SQL——在线 Oracle SQL 测试工具

最近回答了几个 CSDN “学习”功能里“问答”区的一些专业相关问题&#xff0c;回答过程中采用严谨的方式&#xff0c;在 Oracle Live SQL 上进行验证测试。这个很好用的 Oracle APEX 应用我使用好几年了&#xff0c;虽然近年来已转行 MySQL 和国产数据库领域&#xff0c;但仍然…

链表与顺序表的区别以及扩展计算机硬件的存储体系

好久没有更新文章了&#xff0c;在忙学校的事情时我还是比较怀念大家一直以来对我的关注和鼓励&#xff0c;接下来我会继续更新数据结构相关的文章&#xff0c;也请大家多多支持&#xff0c;十分感谢。正文来了&#xff1a; 首先说明一点&#xff0c;我在举例和比较时所使用的是…

【2023,学点儿新Java-02】计算机硬件与软件 | CPU、内存、硬盘概览 | 科学使用键盘——“指法” | 软件——计算机的灵魂 | 人机交互方式

前情回顾&#xff1a; 【2023&#xff0c;学点儿新Java-01】从查看本机 jdk版本 开始 | Java基础全程脉络图、Java工程师全程技术路线、Java职业晋升路线图 我们见到的太阳 是八分钟前的太阳&#xff0c;见到的月亮 是一点三秒之前的月亮&#xff0c;见到一英里之外的建筑&…

【Docker 安装 Zipkin】—— 每天一点小知识

&#x1f4a7; D o c k e r 安装 Z i p k i n \color{#FF1493}{Docker 安装 Zipkin} Docker安装Zipkin&#x1f4a7; &#x1f337; 仰望天空&#xff0c;妳我亦是行人.✨ &#x1f984; 个人主页——微风撞见云的博客&#x1f390; &#x1f433; 《数据结构与算法》…