⑴ C語言keil模塊化 編程 需要注意哪些
模塊化編程是指將一個龐大的程序劃分為若干個功能獨立的模塊,對各個模塊進行獨立開發,然後再將這些模塊統一合並為一個完整的程序。這是C語言面向過程的編程方法,可以縮短開發周期,提高程序的可讀性和可維護性。
在單片機程序里,程序比較小或者功能比較簡單的時候,我們不需要採用模塊化編程,但是,當程序功能復雜、涉及的資源較多的時候,模塊化編程就能體現它的優越性了。如前面我們寫過的HT1380驅動程序、獨立按鍵掃描程序和12864程序,每一個程序都是只用一個源文件編寫就能完成,但是,當您製作一個12864液晶日歷的時候,需要用到HT1380驅動程序、獨立按鍵掃描程序和12864顯示程序,如果把這三個程序全部集中在一個源文件里,將導致主體程序臃腫且雜亂,這樣做並非不可取,只是降低了程序可讀性、可維護性和代碼的重用率。如果把這三個程序當做三個獨立的模塊放到你的主體工程進行模塊化編程,效果就不一樣了。
實際上,模塊化編程就是模塊合並的過程,就是建立每個模塊的頭文件和源文件並將其加入到主體程序的過程。主體程序調用模塊的函數是通過包含模塊的頭文件來實現,模塊的頭文件和源文件是模塊密不可分的兩個部分,缺一不可。所以,模塊化編程必須提供每個模塊的頭文件和源文件。下面我們以一個簡單的例子(主體程序實現指示燈閃爍,延時模塊實現延時功能)來演示模塊化編程。
有些程序員為了省事,只建立模塊的源文件,不建立頭文件,在主體工程里直接將源文件包含進來,建議大家不要採取這樣的做法,這是一種不符合C語言標準的做法,是一種冒險方法。只包含一個源文件可能沒事,同時包含多個源文件的時候問題就會出現。
⑵ TIA Portal(博圖)模塊化編程
一、模塊化編程
模塊化編程是把程序分成若干個程序塊,每個程序塊含有一些設備和任務的邏輯指令。
二、執行
在組織塊(OB1)中的指令決定控製程序的模塊的執行。模塊化編程功能(FC)或功能塊(FB)。它們控制著不同的過輪世程任務,例如:操作模式,診斷或實際控製程序。這些塊相當於主循環程序的子程序。
三、優點和缺點
在模塊化編程中,在主循環程序和被調用的塊之間仍沒有數據的交換。但是,每個功能區被分成不同的塊。這樣就易於幾個人同時編程,而相互之間沒有沖突。另外,把程序分成若干小塊,將易於對程序調試和查找故障。OB1中的程序包含有調用不同塊螞桐鎮的指令。由於每次循環中不是所有的塊都執行,只有需要時才調用有關的程序悶粗塊,這樣,CPU 將更有效地得到利用。一些用戶對模塊化編程不熟悉,開始時此方法看起來沒有什麼優點,但是,一旦理解了這個技術,編程人員將可以編寫更有效和更易於 開發的程序。
⑶ requirejs模塊化編程怎麼理解
一、javascript模塊化編程
目前,通行的Javascript模塊規范共有兩種:CommonJS和AMD。
1、commonjs
2009年,美國程序員Ryan Dahl創造了node.js項目,將javascript語言用於伺服器端編程,這標志」Javascript模塊化編程」正式誕生。
在瀏覽器環境下,沒有模塊也不是特別大的問題,畢竟網頁程序的復雜性有限;但是在伺服器端,一定要有模塊,與操作系統和其他應用程序互動,否則根本沒法編程。
node.js的模塊系統,就是參照CommonJS規范實現的。在CommonJS中,有一個全局性方法require(),用於載入模塊。
假定有一個數學模塊math.js,就可以像下面這樣載入。
var math = require('math');
然後,就可以調用模塊提供的方法:
var math = require('math');
math.add(2,3); // 5
因為這個系列主要針對瀏覽器編程,不涉及node.js,所以對CommonJS就不多做介紹了。我們在這里只要知道,require()用於載入模塊就行了。
2、AMD
AMD是」Asynchronous Mole Definition」的縮寫,意思就是」非同步模塊定義」。它採用非同步方式載入模塊,模塊的載入不影響它後面語句的運行。所有依賴這個模塊的語句,都定義在一個回調函數中,等到載入完成之後,這個回調函數才會運行。
模塊定義
define(id?, dependencies?, factory);
其中:
id: 模塊標識,可以省略。
dependencies: 所依賴的模塊,可以省略。
factory: 模塊的實現,或者一個JavaScript對象。
模塊載入
AMD也採用require()語句載入模塊,但是不同於CommonJS,它要求兩個參數:
require([mole], callback);
第一個參數[mole],是一個數組,裡面的成員就是要載入的模塊;第二個參數callback,則是載入成功之後的回調函數。如果將前面的代碼改寫成AMD形式,就是下面這樣:
require(['math'], function (math) {
math.add(2, 3);
});
math.add()與math模塊載入不是同步的,瀏覽器不會發生假死。所以很顯然,AMD比較適合瀏覽器環境。
目前,主要有兩個Javascript庫實現了AMD規范:require.js和curl.js。本系列的第三部分,將通過介紹require.js,進一步講解AMD的用法,以及如何將模塊化編程投入實戰。
二、requirejs模塊化編程
require.js載入的模塊,採用AMD(非同步模塊定義規范) 規范。也就是說,模塊必須按照AMD的規定來寫。
require.js的兩個重要的特點:
1、實現js文件的非同步載入,避免網頁失去響應
2、管理模塊之間的依賴性,便於代碼的編寫和維護
載入requirejs:
<script src="js/require.js" data-main="js/main"></script>
data-main屬性的作用是,指定網頁程序的主模塊。在上例中,就是js目錄下面的main.js,這個文件會第一個被require.js載入。由於require.js默認的文件後綴名是js,所以可以把main.js簡寫成main。
main.js常見實例:
require.config({
paths: {
moleA: '',
moleB:'',
moleC:''
}
});
require(['moleA', 'moleB', 'moleC'], function (moleA, moleB, moleC){
// some code here
});
1、require.config
require.config用來配置一些參數,它將影響到requirejs庫的一些行為。
require.config的參數是一個JS對象,常用的配置有baseUrl,paths等。
這里配置了paths參數,使用模塊名「jquery」,其實際文件路徑jquery-1.7.2.js(後綴.js可以省略)。
我們知道jQuery從1.7後開始支持AMD規范,即如果jQuery作為一個AMD模塊運行時,它的模塊名是「jquery」。注意「jquery」是固定的,不能寫「jQuery」或其它。
註:如果文件名「jquery-1.7.2.js」改為「jquery.js」就不必配置paths參數了。
如果將jQuery應用在模塊化開發時,其實可以不使用全局的,即可以不暴露出來。需要用到jQuery時使用require函數即可。
2、require()函數
require()函數接受兩個參數。第一個參數是一個數組,表示所依賴的模塊,上例就是['moleA', 'moleB',
'moleC'],即主模塊依賴這三個模塊;第二個參數是一個回調函數,當前面指定的模塊都載入成功後,它將被調用。載入的模塊會以參數形式傳入該函數,從而在回調函數內部就可以使用這些模塊。
⑷ C語言的模塊化編程還是不太理解,還請各位大神指點!
C語言是面向過程的語言。
把一件事情分多步驟,細分,這樣更有條理。比如今天你要最晚餐。
第一種方法:你要考慮:去買菜;,去哪裡買,買什麼,坐什麼交通工具去買,怎麼回來,煮飯做飯,用什麼廚具,蒸的?煮的?炒的?做哪種家裡人覺得好吃,以及洗碗,打掃衛生等等
這沒有覺得這種方法很亂。第二種方法就是先分塊:
首先我要考慮的問題(1)買菜(2)做飯(3)洗碗 就6個字,3大塊,不用考慮過多,先把整件事情的步驟列出。然後再在每一塊細分。(1)買菜;(1.1)去哪裡買(1.2)買什麼。這樣第一大塊(買菜)裡面又有兩塊(1.1 和 1.2),當然還可以細分,對於(1.1)去哪裡買 再細分 (1.1.1)交通工具 等等。
是不是覺得做個晚餐 還要弄得這么惡心, 一步一步的來? 一開始我也是這樣想的,但是你用C語言編程,這樣就會很方便,很清晰的。