0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

模塊化程序設(shè)計(jì)-2

汽車電子技術(shù) ? 來(lái)源:玉工講技術(shù) ? 作者: 玉素甫·買買提 ? 2023-02-21 16:17 ? 次閱讀

人們常把程序稱為計(jì)算機(jī)的靈魂。1976年瑞士計(jì)算機(jī)科學(xué)家Niklaus Wirth在他的驚世之作中提出了一個(gè)著名的公式:

程序 = 算法 + 數(shù)據(jù)結(jié)構(gòu)

從今天的觀點(diǎn)來(lái)看,它只能是對(duì)過(guò)程化程序的一個(gè)抽象定義,對(duì)面向?qū)ο蟮某绦蚨詣t不盡然。不過(guò)對(duì)我們學(xué)習(xí)C語(yǔ)言這樣的面向過(guò)程的程序設(shè)計(jì)語(yǔ)言而言,是完全適用的。同時(shí),C語(yǔ)言也能實(shí)現(xiàn)封裝、繼承、多態(tài)等面向?qū)ο箫L(fēng)格的編程。從個(gè)人經(jīng)驗(yàn)來(lái)看,當(dāng)我理解用C語(yǔ)言編寫(xiě)面向?qū)ο蟮娘L(fēng)格的編程案例后,面向?qū)ο缶幊讨凶屓嗣曰蟮哪切┏跏蓟?、this、方法(函數(shù))多層次調(diào)用等概念恍然大悟,再也不感到恐懼和迷惑了。本文主要討論面向過(guò)程編程常用的模塊兒化程序設(shè)計(jì)思想。

圖片

圖1 實(shí)現(xiàn)虛擬機(jī)原理

1、我們?cè)谟?jì)算機(jī)“大樓”的第幾層

計(jì)算機(jī)這個(gè)大樓的基礎(chǔ)是量子力學(xué)及半導(dǎo)體物理,自從圖靈提出了理論模型,布爾創(chuàng)立了布爾代數(shù),香農(nóng)的碩士論文證明布爾代數(shù)可以用繼電器的開(kāi)關(guān)電路實(shí)現(xiàn)之后,隨著晶體管的發(fā)明,計(jì)算機(jī)的電路才有可能微型化。計(jì)算硬件電路完成以后,還需要軟件的支持,對(duì)程序語(yǔ)言的需求就凸顯出來(lái),最早的機(jī)器語(yǔ)言及匯編語(yǔ)言,后來(lái)慢慢出現(xiàn)的C, C++這樣的高級(jí)語(yǔ)言等非常適合系統(tǒng)級(jí)編程,也是近距離觀看和理解編程思想有效手段之一。

圖片

圖2 計(jì)算機(jī)“大樓”的層次

在圖2中各層具體含義為:1F量子力學(xué)、2F晶體管、3F邏輯電路、4F計(jì)算機(jī)體系結(jié)構(gòu)、5F匯編語(yǔ)言、6F高級(jí)語(yǔ)言、7F應(yīng)用程序。從這點(diǎn)可以看出,作為高級(jí)語(yǔ)言的C/C++在第六層(6F)。其中第三層(3F邏輯電路,即布爾代數(shù)可以用繼電器的開(kāi)關(guān)電路實(shí)現(xiàn))是我們連接軟件世界和電路(電子電氣)世界必經(jīng)之路。工業(yè)和自控領(lǐng)域,繼電器是理解二次側(cè)回路和低壓電路的必備概念,在后續(xù)文章中進(jìn)一步討論。

2、模塊兒化程序設(shè)計(jì)

模塊化程序設(shè)計(jì)就是進(jìn)行大型程序設(shè)計(jì)的一種有效措施。其基本思想是將一個(gè)大的程序按功能進(jìn)行分割成一些模塊,使每一個(gè)模塊都成為功能單一、結(jié)構(gòu)清晰、接口簡(jiǎn)單、容易理解的小程序。C語(yǔ)言是一種提供如下一些支持模塊化軟件開(kāi)發(fā)的功能:

(1)函數(shù)式的程序結(jié)構(gòu):程序整體由一個(gè)或多個(gè)函數(shù)組成。每個(gè)函數(shù)都具有各自獨(dú)立的功能和明顯的界面。

(2)允許通過(guò)使用不同存儲(chǔ)類別的變量,控制模塊內(nèi)部及外部的信息交換。

(3)具有編譯預(yù)處理功能,為程序的調(diào)試、移植提供了方便,也支持了模塊化程序設(shè)計(jì)。

無(wú)論涉及的問(wèn)題是復(fù)雜還是簡(jiǎn)單,規(guī)模是大還是小,用C語(yǔ)言設(shè)計(jì)程序,任務(wù)只有一種,就是編寫(xiě)函數(shù),至少也要編寫(xiě)一個(gè)main()函數(shù)。對(duì)新手來(lái)說(shuō),無(wú)論面向過(guò)程還是面向?qū)ο蟮木幊?,最終的難點(diǎn)在于函數(shù)編寫(xiě)(一般在面向?qū)ο缶幊讨薪凶龇椒ǎ?。因此?strong>編寫(xiě)程序關(guān)鍵點(diǎn)在于將復(fù)雜問(wèn)題分解成多個(gè)函數(shù)或?qū)ο蠛螅鸩骄帉?xiě)其中的運(yùn)算操作語(yǔ)句和流程控制語(yǔ)句。

執(zhí)行C程序就是執(zhí)行相應(yīng)的main()函數(shù)。即從它的main()函數(shù)的第一個(gè)前花括號(hào)開(kāi)始,依次執(zhí)行后面的語(yǔ)句,直到最后的后花括號(hào)為止。其它函數(shù)只有在執(zhí)行main()函數(shù)的過(guò)程中被調(diào)用時(shí)才執(zhí)行。如圖3所示:

圖片

圖3 將功能改為函數(shù)的過(guò)程

3、重新理解編程中的函數(shù)

高級(jí)語(yǔ)言中“函數(shù)”的概念和數(shù)學(xué)中“函數(shù)”的概念不完全相同。在英語(yǔ)中“函數(shù)”與“功能”是同一個(gè)單詞即function。高級(jí)語(yǔ)言中的“函數(shù)”實(shí)際上是“功能”的意思。當(dāng)需要完成某一個(gè)功能時(shí),就用一個(gè)函數(shù)(可以是標(biāo)準(zhǔn)庫(kù)函數(shù)或自己設(shè)計(jì)的函數(shù))去實(shí)現(xiàn)它。在進(jìn)行程序設(shè)計(jì)時(shí),我們先集中考慮main()函數(shù)中的算法(相當(dāng)于做事情前后順序和處理步驟)。當(dāng)main()中需要使用某一功能時(shí),我們就先寫(xiě)上一個(gè)調(diào)用具有該功能的函數(shù)的表達(dá)式(或后綴為括號(hào)的具體函數(shù)名稱)。這時(shí)的函數(shù)相當(dāng)于一個(gè)黑盒子,如圖4所示。

圖片

圖4 函數(shù)代表著具有輸入輸出接口系統(tǒng)或黑盒子

我們只須知道它具有什么功能或作用,如何與程序通信(輸入什么,返回什么),別的東西我們先不去處理它。圖4好比“信號(hào)與系統(tǒng)”課程中的“系統(tǒng)”的抽象,但函數(shù)代表的系統(tǒng)輸入和輸出不是信號(hào)而是數(shù)據(jù)(當(dāng)然信號(hào)也能用數(shù)據(jù)標(biāo)識(shí))。

如同設(shè)計(jì)一部機(jī)器一樣,當(dāng)需要在某處使用一個(gè)部件時(shí),我們就先把它畫(huà)上,并標(biāo)明它的功能以及安裝方法,至于如何制造先不用考慮,因?yàn)橐苍S它可以直接購(gòu)買來(lái)。設(shè)計(jì)完main()的算法并檢驗(yàn)無(wú)誤后,我們開(kāi)始考慮它所調(diào)用的函數(shù)。在這些被調(diào)用的函數(shù)中,若在庫(kù)函數(shù)中可以找到(像制造機(jī)器時(shí),庫(kù)房中已有的零部件),那就直接使用,否則再動(dòng)手設(shè)計(jì)這些函數(shù)。這樣設(shè)計(jì)的程序從邏輯關(guān)系上就形成圖5所示的層次結(jié)構(gòu)。

圖片

圖5 C語(yǔ)言程序的層次結(jié)構(gòu)

這個(gè)層次結(jié)構(gòu)的形成是自頂向下的。這種方法稱為自頂向下、逐步細(xì)化的程序設(shè)計(jì)方法。這種方法允許人在進(jìn)行程序設(shè)計(jì)時(shí), 每個(gè)階段都能集中精力解決只屬于當(dāng)前模塊的算法,暫不考慮與之無(wú)關(guān)的細(xì)節(jié), 從而能保證每個(gè)階段所考慮的問(wèn)題都是易于解決的,設(shè)計(jì)出來(lái)的程序成功率高,而且程序?qū)哟畏置鳌⒔Y(jié)構(gòu)清晰。

4、結(jié)束語(yǔ)

函數(shù)不僅代表功能,也可以代表人或其他任何對(duì)象的抽象。一個(gè)部門(mén)的組織架構(gòu)也用一個(gè)C語(yǔ)言多層次函數(shù)來(lái)描述。一個(gè)職責(zé)和任務(wù)沒(méi)有劃分清楚組織架構(gòu)就像一個(gè)設(shè)計(jì)不合格的程序結(jié)構(gòu)。許多大型軟件系統(tǒng)包含了相當(dāng)豐富的功能,意味著需要編寫(xiě)相當(dāng)數(shù)量的函數(shù)來(lái)實(shí)現(xiàn)可供從事某種領(lǐng)域工作的人員使用。比如說(shuō),數(shù)據(jù)中心基礎(chǔ)設(shè)施大致上可分為電源、電氣、暖通、弱電、消防(氣消)、裝修、自控、柴油發(fā)電機(jī)組等。為了建設(shè)方方便,我們也可以將部分功能放到機(jī)房工程模塊里。因此,怎么的劃分各功能模塊及其接口是某種程度上決定著軟件系統(tǒng)性能、可擴(kuò)展性和靈活性。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 計(jì)算機(jī)
    +關(guān)注

    關(guān)注

    19

    文章

    7494

    瀏覽量

    87981
  • 布爾代數(shù)
    +關(guān)注

    關(guān)注

    0

    文章

    10

    瀏覽量

    7863
  • 半導(dǎo)體物理
    +關(guān)注

    關(guān)注

    0

    文章

    5

    瀏覽量

    6414
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    模塊化程序

    現(xiàn)在大家寫(xiě)程序都是模塊化嗎,就是不同的模塊放在不同的文件夾里。比如所有的h文件放一起,所有的h文件聲明一起,主程序只有一小段就行,很好的,就是剛開(kāi)始學(xué)習(xí)
    發(fā)表于 11-12 15:15

    VerilogHDL模塊化程序設(shè)計(jì)

    VerilogHDL模塊化程序設(shè)計(jì)中文期刊文章作  者:向兵作者機(jī)構(gòu):[1]綿陽(yáng)職業(yè)技術(shù)學(xué)院,四川綿陽(yáng)621000出 版 物:《科技資訊》 (科技資訊)年 卷 期:2017年 第27期摘  要
    發(fā)表于 05-04 12:06

    嵌入式模塊化程序設(shè)計(jì)的相關(guān)資料分享

    模塊化程序設(shè)計(jì)是指在進(jìn)行程序設(shè)計(jì)時(shí)將一個(gè)大程序按照功能劃分為若干小程序模塊,每個(gè)小程序模塊完成一
    發(fā)表于 11-09 08:20

    C語(yǔ)言模塊化程序設(shè)計(jì)理解

    程序設(shè)計(jì)語(yǔ)言,在模塊的劃分上主要依據(jù)功能(依功能進(jìn)行劃分在面向?qū)ο笤O(shè)計(jì)中成為一個(gè)錯(cuò)誤,牛頓定律遇到了相對(duì)論),C語(yǔ)言模塊化程序設(shè)計(jì)需理解如下概念: ?。?)
    發(fā)表于 12-15 06:34

    C語(yǔ)言模塊化程序設(shè)計(jì)需理解哪些呢

    (依功能進(jìn)行劃分在面向?qū)ο笤O(shè)計(jì)中成為一個(gè)錯(cuò)誤,牛頓定律遇到了>相對(duì)論), C語(yǔ)言模塊化程序設(shè)計(jì)需理解如下概念:(1) 模塊即是一個(gè).c文件和一個(gè).h文件的結(jié)合,頭文件(.h)中是對(duì)于該模塊
    發(fā)表于 12-15 06:04

    嵌入式系統(tǒng)的微模塊化程序設(shè)計(jì)有何作用

    什么是嵌入式系統(tǒng)的微模塊化程序設(shè)計(jì)?嵌入式系統(tǒng)的微模塊化程序設(shè)計(jì)有何作用?
    發(fā)表于 12-24 06:35

    模塊化程序設(shè)計(jì)簡(jiǎn)單解釋

    模塊化程序設(shè)計(jì)模塊化程序設(shè)計(jì)是指在進(jìn)行程序設(shè)計(jì)時(shí)將一個(gè)大程序按照功能劃分為若干小
    發(fā)表于 02-23 06:05

    模塊化程序設(shè)計(jì)

    模塊化程序設(shè)計(jì)思想,單片機(jī)c語(yǔ)言的模塊化設(shè)計(jì),方便移植,將程序封裝備用。
    發(fā)表于 03-22 15:29 ?9次下載

    模塊化程序設(shè)計(jì)

    模塊化程序設(shè)計(jì),利用c語(yǔ)言的移植性好特點(diǎn),更好的利用c語(yǔ)言。
    發(fā)表于 03-23 09:25 ?0次下載

    C語(yǔ)言指針用作函數(shù)參數(shù)模塊化程序設(shè)計(jì)以及增量測(cè)試方法的程序

    本文檔的主要內(nèi)容詳細(xì)介紹的是C語(yǔ)言指針用作函數(shù)參數(shù)模塊化程序設(shè)計(jì)以及增量測(cè)試方法的程序
    發(fā)表于 12-25 08:00 ?1次下載
    C語(yǔ)言指針用作函數(shù)參數(shù)<b class='flag-5'>模塊化</b><b class='flag-5'>程序設(shè)計(jì)</b>以及增量測(cè)試方法的<b class='flag-5'>程序</b>

    電賽模塊化程序案例下載

    電賽模塊化程序案例下載
    發(fā)表于 05-26 09:41 ?12次下載

    嵌入式軟件開(kāi)發(fā)之模塊化程序設(shè)計(jì)(三)

    模塊化程序設(shè)計(jì)是指在進(jìn)行程序設(shè)計(jì)時(shí)將一個(gè)大程序按照功能劃分為若干小程序模塊,每個(gè)小程序模塊完成一
    發(fā)表于 11-03 21:06 ?10次下載
    嵌入式軟件開(kāi)發(fā)之<b class='flag-5'>模塊化</b><b class='flag-5'>程序設(shè)計(jì)</b>(三)

    c++程序設(shè)計(jì)_基于proteus的51單片機(jī)開(kāi)發(fā)實(shí)例30-模塊化程序設(shè)計(jì)

    1. 基于proteus的51單片機(jī)開(kāi)發(fā)實(shí)例30-模塊化程序設(shè)計(jì)1.1. 實(shí)驗(yàn)?zāi)康?b class='flag-5'>模塊化程序設(shè)計(jì)不知不覺(jué)我們的51單片機(jī)開(kāi)發(fā)實(shí)例已經(jīng)進(jìn)行到第三十篇了,是時(shí)候進(jìn)行一個(gè)總結(jié)和反思了,總結(jié)什
    發(fā)表于 11-21 15:36 ?13次下載
    c++<b class='flag-5'>程序設(shè)計(jì)</b>_基于proteus的51單片機(jī)開(kāi)發(fā)實(shí)例30-<b class='flag-5'>模塊化</b><b class='flag-5'>程序設(shè)計(jì)</b>

    嵌入式軟件架構(gòu)設(shè)計(jì)之模塊化

    模塊化程序設(shè)計(jì)是指在進(jìn)行程序設(shè)計(jì)時(shí)將一個(gè)大程序按照功能劃分為若干小程序模塊,每個(gè)小程序模塊完成一
    的頭像 發(fā)表于 02-15 14:42 ?1006次閱讀
    嵌入式軟件架構(gòu)設(shè)計(jì)之<b class='flag-5'>模塊化</b>

    模塊化程序設(shè)計(jì)案例DCIM-3

    在設(shè)計(jì)較復(fù)雜的程序時(shí),一般采用自頂向下的方法,將問(wèn)題劃分為幾個(gè)部分,各個(gè)部分再進(jìn)行細(xì)化,直到分解為較好解決問(wèn)題為止。利用函數(shù),不僅可以實(shí)現(xiàn)程序模塊化,使得程序設(shè)計(jì)更加簡(jiǎn)單和直觀,而且
    的頭像 發(fā)表于 02-21 16:23 ?1421次閱讀
    <b class='flag-5'>模塊化</b><b class='flag-5'>程序設(shè)計(jì)</b>案例DCIM-3