码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【重拾C语言】十二、C语言程序开发(自顶向下、逐步求精;结构化程序设计原则;程序风格)


    目录

    前言

    12.1 求玉米单产——自顶向下、逐步求精

    12.1.1 自顶向下、逐步求精  

    12.1.2 求玉米单产

    12.2 结构化程序设计原则

    12.2.1 顺序

    12.2.2 选择

    12.2.3 循环

     12.2.4 模块化

    12.3 程序风格

    12.3.1 程序风格

    12.3.2 行文格式、标识符

    12.3.3 注释及其它


    前言

            在C语言程序开发中,可以使用自顶向下、逐步求精的方法解决问题,遵循结构化程序设计原则,同时注重良好的程序风格,这可以帮助开发者编写可读性强且易于维护的代码。

    12.1 求玉米单产——自顶向下、逐步求精

    12.1.1 自顶向下、逐步求精  

            自顶向下、逐步求精(Top-down, stepwise refinement)旨在通过分解问题和逐步细化解决方案来进行程序设计。它是一种结构化的方法,使程序的设计更加有条理和可维护。

    • 自顶向下的设计方法
      • 首先从整体的角度考虑问题,然后逐步细化为更小的子问题。这种方法通常从一个主要函数或模块开始,然后逐步将其分解为更小、更具体的子函数或模块。这种分解过程可以一直进行,直到达到足够小和具体的层次为止。
    • 逐步求精
      • 指在分解问题的同时,逐步添加必要的细节和功能。通过逐步求精,可以逐渐完善每个子函数或模块的实现,确保其功能正确并满足设计的需求。这种方法可以降低程序开发的复杂度,使得问题的解决变得更加可控和可预测。
    • 实现步骤:
      • 确定主要函数或模块:从整体的角度考虑问题,确定程序的主要功能和入口点。
      • 分解为子函数或模块:将主要函数或模块分解为更小、更具体的子函数或模块,每个子函数或模块负责解决一个特定的子问题。
      • 设计接口:定义每个子函数或模块的输入和输出接口,确保它们能够正确地交互和协作。
      • 逐步实现和调试:逐步实现每个子函数或模块的功能,确保其正确性和可靠性。在实现过程中,可以通过逐步调试和测试来验证每个子函数或模块的正确性。
      • 整合和测试:将所有子函数或模块整合到一个完整的程序中,并进行综合性的测试,确保整体的功能和性能符合设计要求。

    12.1.2 求玉米单产

    1. #include
    2. // 函数声明
    3. double calculateYield(double area, double production);
    4. int main() {
    5. double area, production, yield;
    6. // 输入玉米的种植面积和产量
    7. printf("请输入玉米的种植面积(亩):");
    8. scanf("%lf", &area);
    9. printf("请输入玉米的产量(吨):");
    10. scanf("%lf", &production);
    11. // 调用函数计算玉米的单产
    12. yield = calculateYield(area, production);
    13. // 输出计算结果
    14. printf("玉米的单产为:%.2lf 吨/亩\n", yield);
    15. return 0;
    16. }
    17. // 函数定义
    18. double calculateYield(double area, double production) {
    19. double yield;
    20. // 计算玉米的单产
    21. yield = production / area;
    22. return yield;
    23. }

            从用户获取种植面积和产量的输入,然后调用calculateYield()函数来计算玉米的单产,并将结果输出到屏幕上。

    12.2 结构化程序设计原则

            结构化程序设计原则是指在编写程序时应遵循的一些基本原则,例如模块化、顺序、选择和循环结构等,以便提高程序的可读性、可维护性和可测试性。

    12.2.1 顺序

    【重拾C语言】二、顺序程序设计(基本符号、数据、语句、表达式、顺序控制结构、数据类型、输入/输出操作)-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/m0_63834988/article/details/133519484        包括顺序程序设计的基础知识,包括基本符号、数据、语句、表达式、顺序控制结构、数据类型以及输入/输出操作等。

    12.2.2 选择

    【重拾C语言】三、分支程序设计(双分支和单分支程序设计、逻辑判断、多分支程序设计、枚举类型表示;典型例题:判断闰年和求一元二次方程根)_QomolangmaH的博客-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/m0_63834988/article/details/133523113        介绍了分支程序设计的相关内容,包括双分支和单分支程序设计、逻辑判断(布尔类型的使用)、多分支程序设计和枚举类型的表示,以及一些典型例题,包括判断闺年和求一元二次方程根。

    12.2.3 循环

    【重拾C语言】四、循环程序设计(后判断条件循环、先判断条件循环、多重循环;典例:计算平均成绩、打印素数、百钱百鸡问题)_QomolangmaH的博客-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/m0_63834988/article/details/133554967

            本文介绍了循环程序设计,以计算平均成绩为例,介绍3种不同的循环方法:并使用多重循环计算全班每人平均成绩。此外,还介绍了打印素数、百钱百鸡问题两个经典例题。

     12.2.4 模块化

            模块化程序设计——函数,包括如何定义函数、函数的调用形式和过程、参数传递(值传递和指针传递)、函数结果的返回以及函数原型的使用。具体的程序设计实例有打印字符图形和验证哥德巴赫猜想。

    【重拾C语言】五、模块化程序设计——函数(定义、调用、参数传递、结果返回、函数原型;典例:打印字符图形、验证哥德巴赫猜想)_QomolangmaH的博客-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/m0_63834988/article/details/133580009?spm=1001.2014.3001.5501

            下文重新讨论了函数,主要介绍了指针、数组、结构体作参数;函数值返回指针、结构体,以及C语言作用域相关知识。

    【重拾C语言】九、再论函数(指针、数组、结构体作参数;函数值返回指针、结构体;作用域)-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/m0_63834988/article/details/133797827?spm=1001.2014.3001.5501

    12.3 程序风格

            程序风格是指编写代码时应遵循的一些规范和约定,以确保代码的一致性和可读性。这可能包括行文格式、标识符命名规范、注释规范等。

    12.3.1 程序风格

    1. 缩进:使用统一的缩进风格,通常是使用4个空格或者一个制表符进行缩进。缩进可以使代码结构更清晰,便于阅读。

    2. 括号位置:在C语言中,通常将左括号放在行末,右括号独占一行。例如:

      1. if (condition)
      2. {
      3. // code block
      4. }
    3. 空格使用:在运算符、逗号、分号等符号周围使用空格,可以增加代码的可读性。例如:

      1. int sum = a + b;
      2. for (int i = 0; i < n; i++)
      3. {
      4. // code block
      5. }
    4. 行长度限制:每行代码应尽量保持在80个字符以内,以便于在终端或编辑器中显示。如果一行过长,可以使用换行符\将其分成多行。

    12.3.2 行文格式、标识符

    1. 大小写:C语言区分大小写,建议使用小写字母命名变量、函数和类型,使用大写字母命名宏定义。

    2. 标识符命名:命名标识符时应具有描述性,易于理解。可以使用驼峰命名法或下划线命名法。

    •    

      • 驼峰命名法:myVariable, calculateSum

      • 下划线命名法:my_variable, calculate_sum
    1. 常量命名:对于常量,可以使用全大写字母,多个单词之间使用下划线分隔。例如:

      1. #define PI 3.14159
      2. #define MAX_VALUE 100

    12.3.3 注释及其它

    1. 注释:使用注释对代码进行解释和说明,以增加代码的可读性。可以使用单行注释(//)或多行注释(/* ... */)。注释应描述代码的功能、目的、输入输出等重要信息。例如:

      1. // 计算两个数的和
      2. int sum = a + b;
    2. 文件注释:在文件开头添加注释,描述文件的功能、作者、日期等信息。

    3. 函数注释:在每个函数的定义之前添加注释,描述函数的功能、参数、返回值等信息。

    4. 避免使用全局变量:全局变量会增加代码的复杂性,不利于代码的维护和重用,应尽量避免使用全局变量。

    5. 模块化设计:将代码划分为多个函数或模块,每个函数或模块负责一个具体的功能,提高代码的可读性和可维护性。

    6. 错误处理:在代码中应考虑错误处理机制,例如检查函数返回值,处理可能发生的错误情况。

  • 相关阅读:
    STL中最常见的三种容器vector、list、map对比分析
    MySQL8实现主从备份
    基于Bert迁移学习点击未知弹框
    Web自动化css选择器定位法实现
    day3_QT
    目标检测的yolov3、4、5、6总结
    【Vue】通过事件发布订阅实现跨组件传值
    Revit插件“土建模块”的生成圈梁功能使用
    Spring Cloud | 实现Eureka Server 高可用服务注册中心全套解决方案
    论文解读(USIB)《Towards Explanation for Unsupervised Graph-Level Representation Learning》
  • 原文地址:https://blog.csdn.net/m0_63834988/article/details/133825033
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号