0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

模块化程序设计-2

汽车电子技术 来源:玉工讲技术 作者: 玉素甫·买买提 2023-02-21 16:17 次阅读

人们常把程序称为计算机的灵魂。1976年瑞士计算机科学家Niklaus Wirth在他的惊世之作中提出了一个著名的公式:

程序 = 算法 + 数据结构

从今天的观点来看,它只能是对过程化程序的一个抽象定义,对面向对象的程序而言则不尽然。不过对我们学习C语言这样的面向过程的程序设计语言而言,是完全适用的。同时,C语言也能实现封装、继承、多态等面向对象风格的编程。从个人经验来看,当我理解用C语言编写面向对象的风格的编程案例后,面向对象编程中让人迷惑的那些初始化、this、方法(函数)多层次调用等概念恍然大悟,再也不感到恐惧和迷惑了。本文主要讨论面向过程编程常用的模块儿化程序设计思想。

图片

图1 实现虚拟机原理

1、我们在计算机“大楼”的第几层

计算机这个大楼的基础是量子力学及半导体物理,自从图灵提出了理论模型,布尔创立了布尔代数,香农的硕士论文证明布尔代数可以用继电器的开关电路实现之后,随着晶体管的发明,计算机的电路才有可能微型化。计算硬件电路完成以后,还需要软件的支持,对程序语言的需求就凸显出来,最早的机器语言及汇编语言,后来慢慢出现的C, C++这样的高级语言等非常适合系统级编程,也是近距离观看和理解编程思想有效手段之一。

图片

图2 计算机“大楼”的层次

在图2中各层具体含义为:1F量子力学、2F晶体管、3F逻辑电路、4F计算机体系结构、5F汇编语言、6F高级语言、7F应用程序。从这点可以看出,作为高级语言的C/C++在第六层(6F)。其中第三层(3F逻辑电路,即布尔代数可以用继电器的开关电路实现)是我们连接软件世界和电路(电子电气)世界必经之路。工业和自控领域,继电器是理解二次侧回路和低压电路的必备概念,在后续文章中进一步讨论。

2、模块儿化程序设计

模块化程序设计就是进行大型程序设计的一种有效措施。其基本思想是将一个大的程序按功能进行分割成一些模块,使每一个模块都成为功能单一、结构清晰、接口简单、容易理解的小程序。C语言是一种提供如下一些支持模块化软件开发的功能:

(1)函数式的程序结构:程序整体由一个或多个函数组成。每个函数都具有各自独立的功能和明显的界面。

(2)允许通过使用不同存储类别的变量,控制模块内部及外部的信息交换。

(3)具有编译预处理功能,为程序的调试、移植提供了方便,也支持了模块化程序设计。

无论涉及的问题是复杂还是简单,规模是大还是小,用C语言设计程序,任务只有一种,就是编写函数,至少也要编写一个main()函数。对新手来说,无论面向过程还是面向对象的编程,最终的难点在于函数编写(一般在面向对象编程中叫做方法)。因此,编写程序关键点在于将复杂问题分解成多个函数或对象后,逐步编写其中的运算操作语句和流程控制语句。

执行C程序就是执行相应的main()函数。即从它的main()函数的第一个前花括号开始,依次执行后面的语句,直到最后的后花括号为止。其它函数只有在执行main()函数的过程中被调用时才执行。如图3所示:

图片

图3 将功能改为函数的过程

3、重新理解编程中的函数

高级语言中“函数”的概念和数学中“函数”的概念不完全相同。在英语中“函数”与“功能”是同一个单词即function。高级语言中的“函数”实际上是“功能”的意思。当需要完成某一个功能时,就用一个函数(可以是标准库函数或自己设计的函数)去实现它。在进行程序设计时,我们先集中考虑main()函数中的算法(相当于做事情前后顺序和处理步骤)。当main()中需要使用某一功能时,我们就先写上一个调用具有该功能的函数的表达式(或后缀为括号的具体函数名称)。这时的函数相当于一个黑盒子,如图4所示。

图片

图4 函数代表着具有输入输出接口系统或黑盒子

我们只须知道它具有什么功能或作用,如何与程序通信(输入什么,返回什么),别的东西我们先不去处理它。图4好比“信号与系统”课程中的“系统”的抽象,但函数代表的系统输入和输出不是信号而是数据(当然信号也能用数据标识)。

如同设计一部机器一样,当需要在某处使用一个部件时,我们就先把它画上,并标明它的功能以及安装方法,至于如何制造先不用考虑,因为也许它可以直接购买来。设计完main()的算法并检验无误后,我们开始考虑它所调用的函数。在这些被调用的函数中,若在库函数中可以找到(像制造机器时,库房中已有的零部件),那就直接使用,否则再动手设计这些函数。这样设计的程序从逻辑关系上就形成图5所示的层次结构。

图片

图5 C语言程序的层次结构

这个层次结构的形成是自顶向下的。这种方法称为自顶向下、逐步细化的程序设计方法。这种方法允许人在进行程序设计时, 每个阶段都能集中精力解决只属于当前模块的算法,暂不考虑与之无关的细节, 从而能保证每个阶段所考虑的问题都是易于解决的,设计出来的程序成功率高,而且程序层次分明、结构清晰。

4、结束语

函数不仅代表功能,也可以代表人或其他任何对象的抽象。一个部门的组织架构也用一个C语言多层次函数来描述。一个职责和任务没有划分清楚组织架构就像一个设计不合格的程序结构。许多大型软件系统包含了相当丰富的功能,意味着需要编写相当数量的函数来实现可供从事某种领域工作的人员使用。比如说,数据中心基础设施大致上可分为电源、电气、暖通、弱电、消防(气消)、装修、自控、柴油发电机组等。为了建设方方便,我们也可以将部分功能放到机房工程模块里。因此,怎么的划分各功能模块及其接口是某种程度上决定着软件系统性能、可扩展性和灵活性。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 计算机
    +关注

    关注

    19

    文章

    7386

    浏览量

    87646
  • 布尔代数
    +关注

    关注

    0

    文章

    10

    浏览量

    7857
  • 半导体物理
    +关注

    关注

    0

    文章

    5

    浏览量

    6404
收藏 人收藏

    评论

    相关推荐

    模块化程序

    现在大家写程序都是模块化吗,就是不同的模块放在不同的文件夹里。比如所有的h文件放一起,所有的h文件声明一起,主程序只有一小段就行,很好的,就是刚开始学习
    发表于 11-12 15:15

    VerilogHDL模块化程序设计

    VerilogHDL模块化程序设计中文期刊文章作  者:向兵作者机构:[1]绵阳职业技术学院,四川绵阳621000出 版 物:《科技资讯》 (科技资讯)年 卷 期:2017年 第27期摘  要
    发表于 05-04 12:06

    嵌入式模块化程序设计的相关资料分享

    模块化程序设计是指在进行程序设计时将一个大程序按照功能划分为若干小程序模块,每个小程序模块完成一
    发表于 11-09 08:20

    C语言模块化程序设计理解

    程序设计语言,在模块的划分上主要依据功能(依功能进行划分在面向对象设计中成为一个错误,牛顿定律遇到了相对论),C语言模块化程序设计需理解如下概念:  (1)
    发表于 12-15 06:34

    C语言模块化程序设计需理解哪些呢

    (依功能进行划分在面向对象设计中成为一个错误,牛顿定律遇到了>相对论), C语言模块化程序设计需理解如下概念:(1) 模块即是一个.c文件和一个.h文件的结合,头文件(.h)中是对于该模块
    发表于 12-15 06:04

    嵌入式系统的微模块化程序设计有何作用

    什么是嵌入式系统的微模块化程序设计?嵌入式系统的微模块化程序设计有何作用?
    发表于 12-24 06:35

    模块化程序设计简单解释

    模块化程序设计模块化程序设计是指在进行程序设计时将一个大程序按照功能划分为若干小
    发表于 02-23 06:05

    模块化程序设计

    模块化程序设计思想,单片机c语言的模块化设计,方便移植,将程序封装备用。
    发表于 03-22 15:29 9次下载

    模块化程序设计

    模块化程序设计,利用c语言的移植性好特点,更好的利用c语言。
    发表于 03-23 09:25 0次下载

    C语言指针用作函数参数模块化程序设计以及增量测试方法的程序

    本文档的主要内容详细介绍的是C语言指针用作函数参数模块化程序设计以及增量测试方法的程序
    发表于 12-25 08:00 1次下载
    C语言指针用作函数参数<b class='flag-5'>模块化</b><b class='flag-5'>程序设计</b>以及增量测试方法的<b class='flag-5'>程序</b>

    电赛模块化程序案例下载

    电赛模块化程序案例下载
    发表于 05-26 09:41 12次下载

    嵌入式软件开发之模块化程序设计(三)

    模块化程序设计是指在进行程序设计时将一个大程序按照功能划分为若干小程序模块,每个小程序模块完成一
    发表于 11-03 21:06 10次下载
    嵌入式软件开发之<b class='flag-5'>模块化</b><b class='flag-5'>程序设计</b>(三)

    c++程序设计_基于proteus的51单片机开发实例30-模块化程序设计

    1. 基于proteus的51单片机开发实例30-模块化程序设计1.1. 实验目的模块化程序设计不知不觉我们的51单片机开发实例已经进行到第三十篇了,是时候进行一个总结和反思了,总结什
    发表于 11-21 15:36 13次下载
    c++<b class='flag-5'>程序设计</b>_基于proteus的51单片机开发实例30-<b class='flag-5'>模块化</b><b class='flag-5'>程序设计</b>

    嵌入式软件架构设计之模块化

    模块化程序设计是指在进行程序设计时将一个大程序按照功能划分为若干小程序模块,每个小程序模块完成一
    的头像 发表于 02-15 14:42 943次阅读
    嵌入式软件架构设计之<b class='flag-5'>模块化</b>

    模块化程序设计案例DCIM-3

    在设计较复杂的程序时,一般采用自顶向下的方法,将问题划分为几个部分,各个部分再进行细化,直到分解为较好解决问题为止。利用函数,不仅可以实现程序模块化,使得程序设计更加简单和直观,而且
    的头像 发表于 02-21 16:23 1310次阅读
    <b class='flag-5'>模块化</b><b class='flag-5'>程序设计</b>案例DCIM-3