【重拾C语言】十二、C语言程序开发(自顶向下、逐步求精;结构化程序设计原则;程序风格)

本文主要是介绍【重拾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 求玉米单产

#include <stdio.h>// 函数声明
double calculateYield(double area, double production);int main() {double area, production, yield;// 输入玉米的种植面积和产量printf("请输入玉米的种植面积(亩):");scanf("%lf", &area);printf("请输入玉米的产量(吨):");scanf("%lf", &production);// 调用函数计算玉米的单产yield = calculateYield(area, production);// 输出计算结果printf("玉米的单产为:%.2lf 吨/亩\n", yield);return 0;
}// 函数定义
double calculateYield(double area, double production) {double yield;// 计算玉米的单产yield = production / area;return yield;
}

        从用户获取种植面积和产量的输入,然后调用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语言中,通常将左括号放在行末,右括号独占一行。例如:

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

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

12.3.2 行文格式、标识符

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

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

  •    

    • 驼峰命名法myVariablecalculateSum

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

    #define PI 3.14159
    #define MAX_VALUE 100

12.3.3 注释及其它

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

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

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

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

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

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

这篇关于【重拾C语言】十二、C语言程序开发(自顶向下、逐步求精;结构化程序设计原则;程序风格)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/211638

相关文章

C语言小项目实战之通讯录功能

《C语言小项目实战之通讯录功能》:本文主要介绍如何设计和实现一个简单的通讯录管理系统,包括联系人信息的存储、增加、删除、查找、修改和排序等功能,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录功能介绍:添加联系人模块显示联系人模块删除联系人模块查找联系人模块修改联系人模块排序联系人模块源代码如下

基于Go语言实现一个压测工具

《基于Go语言实现一个压测工具》这篇文章主要为大家详细介绍了基于Go语言实现一个简单的压测工具,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录整体架构通用数据处理模块Http请求响应数据处理Curl参数解析处理客户端模块Http客户端处理Grpc客户端处理Websocket客户端

使用SQL语言查询多个Excel表格的操作方法

《使用SQL语言查询多个Excel表格的操作方法》本文介绍了如何使用SQL语言查询多个Excel表格,通过将所有Excel表格放入一个.xlsx文件中,并使用pandas和pandasql库进行读取和... 目录如何用SQL语言查询多个Excel表格如何使用sql查询excel内容1. 简介2. 实现思路3

Go语言实现将中文转化为拼音功能

《Go语言实现将中文转化为拼音功能》这篇文章主要为大家详细介绍了Go语言中如何实现将中文转化为拼音功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 有这么一个需求:新用户入职 创建一系列账号比较麻烦,打算通过接口传入姓名进行初始化。想把姓名转化成拼音。因为有些账号即需要中文也需要英

Go语言使用Buffer实现高性能处理字节和字符

《Go语言使用Buffer实现高性能处理字节和字符》在Go中,bytes.Buffer是一个非常高效的类型,用于处理字节数据的读写操作,本文将详细介绍一下如何使用Buffer实现高性能处理字节和... 目录1. bytes.Buffer 的基本用法1.1. 创建和初始化 Buffer1.2. 使用 Writ

深入理解C语言的void*

《深入理解C语言的void*》本文主要介绍了C语言的void*,包括它的任意性、编译器对void*的类型检查以及需要显式类型转换的规则,具有一定的参考价值,感兴趣的可以了解一下... 目录一、void* 的类型任意性二、编译器对 void* 的类型检查三、需要显式类型转换占用的字节四、总结一、void* 的

Python中的可视化设计与UI界面实现

《Python中的可视化设计与UI界面实现》本文介绍了如何使用Python创建用户界面(UI),包括使用Tkinter、PyQt、Kivy等库进行基本窗口、动态图表和动画效果的实现,通过示例代码,展示... 目录从像素到界面:python带你玩转UI设计示例:使用Tkinter创建一个简单的窗口绘图魔法:用

C语言线程池的常见实现方式详解

《C语言线程池的常见实现方式详解》本文介绍了如何使用C语言实现一个基本的线程池,线程池的实现包括工作线程、任务队列、任务调度、线程池的初始化、任务添加、销毁等步骤,感兴趣的朋友跟随小编一起看看吧... 目录1. 线程池的基本结构2. 线程池的实现步骤3. 线程池的核心数据结构4. 线程池的详细实现4.1 初

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟&nbsp;开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚&nbsp;第一站:海量资源,应有尽有 走进“智听