1,C語言程序的結(jié)構(gòu)特點

為橋東等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務(wù),及橋東網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為成都做網(wǎng)站、網(wǎng)站制作、橋東網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!
一個C語言程序通常由一個預(yù)處理語句開始,如#include〉stdio.h〉,它表示,在編譯語言程序前,用指明的文件取代改預(yù)處理語句,通余好常文件名是帶有后綴為.h的磁盤文件.編譯時,它將從磁盤中讀出并插入到原來的預(yù)處理程序語句中.即預(yù)處理語句被指明的包含文件(頭文件)代替.
頭文件通常是在程序中被調(diào)用函數(shù)的說明語句和該函數(shù)用到的一些符號常量的宏定義.如在程序中經(jīng)常調(diào)用一些標準庫函數(shù)時,系統(tǒng)提供了相應(yīng)的頭文件,他們其中的一些內(nèi)容是對該函數(shù)的說明及該函數(shù)用到的符號常量的宏定義等,如對fgets()的說明放在頭文件stdio.h中,再蓋頭文件包含了對fgets()函數(shù)的說明:
char *fgets(char *s,int n,FILE *stream)
對符號常量的定義:
#define NULL 0
當然還包含了一些其他的標準I/O函數(shù)的說明和宏定義等.用戶也可以建立自己的頭文件豎喚鉛,在程序開頭用include進行包含就行了:
#include"文件名"
注意此時用" "符號來包括,它與 #include〉文件名〉的區(qū)別是查找的路徑不同.前者表示現(xiàn)在當前目錄中查找該文件,如果找不到,再到系統(tǒng)指定的目錄中查找.而后者只在系統(tǒng)的制定目錄中查找(一般是include\目錄),若找不到,便報錯.所以用#include"文件名"的形式常用于用戶自己寫的包含文件,他們通常放在和用戶程序同一個目錄下.當然在這種形式中,文件名也可用文件路徑代替,這時,編譯器就去用戶指定的目錄去查找包含文件.文件包含也可以用在程序行中,如:
main()
{
...
#include "myc.c"
...
}
其中myc.c時用戶的c文件,編譯時,它將從磁盤中取出,插入到該位置處.
一些在程序中常用到的常量也用編譯預(yù)處理命令#define來定義,如在真假判斷時,常用符號常量TURE和FALSE表示真和假,這時可以用一下定義:
#define TURE 1
#define FALSE 0
將以上代碼寫在程序的開頭,編譯時在程序中出現(xiàn)TURE的地方都用1代替,出現(xiàn)FALSE的地方用0代替.
一個完整的C程序,總是由main()函數(shù)開始,它像一個大型樂曲的引子,由鏈巧此引出許多樂章(執(zhí)行不同的功能的函數(shù));main()函數(shù)又像一個大型建筑的框架,它顯示了要完成這個建筑的輪廓,這些輪廓就是由一個個函數(shù)調(diào)用勾畫出來的.因此可以說一個C程序是由一個個的模塊堆砌起來的,這些模塊的最小元素是函數(shù).當然,模塊也可以是一個源程序,它又有許多的函數(shù)組成.所以c程序的設(shè)計是一種模塊化的設(shè)計,是許多的函數(shù)的堆砌.因此在應(yīng)用程序的設(shè)計中,應(yīng)將一個個的功能用一個個的函數(shù)來實現(xiàn).下面就談?wù)労瘮?shù)的使用.
turbo C的函數(shù)的使用
Turbo C2.0提供了400多個標準的庫函數(shù),每個函數(shù)都完成一定的功能.當程序執(zhí)行這些功能時,只要調(diào)用這些函數(shù)即可,用戶不必再自己寫這些函數(shù)了.這些庫函數(shù)包括輸入輸出函數(shù),數(shù)學(xué)函數(shù),字符串處理函數(shù),內(nèi)存函數(shù),與BIOS和Dos有關(guān)的接口函數(shù),屏幕函數(shù)和圖形函數(shù),過程控制函數(shù)和目錄函數(shù)等.這些函數(shù)在我的主頁上都能查到,歡迎來查詢.
當標準庫函數(shù)中沒有用戶要用的函數(shù)時,就必須自己設(shè)計了,設(shè)計函數(shù)的原則是:
1,函數(shù)不應(yīng)處理太多的功能,要保持函數(shù)的小型化,功能單一化.
2,一個函數(shù)要保持自己的獨立性,如同一個黑匣子一樣,有進有出.
3,在函數(shù)中多使用復(fù)合語句,使函數(shù)也具有結(jié)構(gòu)化,并且可以提高執(zhí)行效率和節(jié)省存儲空間.
4,在主函數(shù)前,要羅列出所有使用自定義函數(shù)的原型說明,這有利于在大型程序設(shè)計中追蹤要調(diào)用的函數(shù)設(shè)置是 否正確.
5,在程序適當?shù)牡胤郊尤胱⑨?用/*...*/包含的語句)這便于程序的閱讀和調(diào)試.
6,采用層次的書寫程序格式,按程序的不同功能分層次.
這樣一個函數(shù)編譯后,其內(nèi)部定義的程序代碼與數(shù)據(jù)與另一個函數(shù)的程序代碼和數(shù)據(jù)不會相互影響,因此在函數(shù)中要使用局部變量,即它的生存期指維持在調(diào)用該函數(shù)并執(zhí)行時,也就是說函數(shù)被激活時.要盡量少用或不用全局變量,它將破壞函數(shù)的獨立性.函數(shù)的這種設(shè)計方法類似于面向?qū)ο笤O(shè)計方法中的封裝性.
C大型軟件程序的設(shè)計步驟
C語言作為結(jié)構(gòu)化的程序設(shè)計語言,易采用自頂向下的設(shè)計方法,即開始咱不涉及問題的實質(zhì)和具體的解決步驟,而只是從問題的全局出發(fā),給出一個概括性的抽象描述.例如編寫一個信號處理程序,它要求對信號數(shù)據(jù)經(jīng)過數(shù)字處理后進行圖形顯示并存盤.因而程序大輪廓應(yīng)該是:
1,信號數(shù)據(jù)的輸入
2,信號預(yù)處理
3,信號進行數(shù)字處理
4,進行顯示
5,進行存盤
接著對各項功能進行細分,例如對于信號的輸入,又可分為:
1.通過com1或com2由RS-232接口進行輸入
2.由磁盤數(shù)據(jù)文件輸入
對信號預(yù)處理又可分為:
1.對信號進行反序排列
2.用窗函數(shù)預(yù)處理
對數(shù)字處理又可分為:
1.求快速傅立葉變換
2.求功率譜
對用窗函數(shù)處理又可分為:
1.海明窗處理函數(shù)
2.漢寧窗處理
3.布拉格曼窗處理
其他功能依此類推.
在此細化的基礎(chǔ)上再進行細化,以至于成為一個個單獨的功能,便于用一個個函數(shù)來實現(xiàn).
下面就是設(shè)計一個個函數(shù)的實質(zhì)性階段.要定義變量,要選區(qū)標準函數(shù),要確定算法,這是構(gòu)造程序的基本單元.當一個個函數(shù)都設(shè)計完了以后,便可將這些函數(shù)在主函數(shù)中堆砌起來,并用主函數(shù)做總控程序,完成對他們的參數(shù)傳遞,控制選擇對這些函數(shù)的調(diào)用,形成一個完整的實用的信號處理程序.
大程序的設(shè)計風(fēng)格
當一個程序較大時,可將一個程序分成幾個部分,每一個部分可單獨編成一個源文件,這些源文件可進行單獨編譯成.obj文件,然后將這些文件組合成一個較大的程序.通常可采用如下方法:
1.include方法
例如,一個程序分成兩個源文件,既由a1.c和a2.c兩個源程序組成,這時候可將a1.c寫成:
#include〉stdio.h〉
#include"a2.c"
main()
{
...
strcpy(s1,s2);
a2();
...
}
而a2.c可寫成:
#include〉string.h〉
void a2()
{
....
}
然后在制作一個project文件,內(nèi)容為:a1.c a2.c
設(shè)這個工程文件名為:a1.prj,其中文件中各文件名的后綴可省略,先后順序也無關(guān),它只影響編譯時的順序.者可在Turbo c的編輯狀態(tài)下寫成,并存盤為a2.prj文件.然后用Alt+p選擇Project菜單中的Project_name項,填寫生成的a1.prj文件名.然后按F9,即可生成a1.exe可執(zhí)行文件.
當用匯編語言與C語言混合編程時,則要將匯編語言子程序單獨編譯生成.obj文件,然后制作工程文件,再進行對C程序的編譯和連接.關(guān)于這方面的介紹可參考Turbo c2.0的命令行編譯.
若程序還需要一些其他的被編譯的程序或庫文件,這些文件時C語言的標準庫不能提供的,則也可將它們的名字放在Project文件中.如:
mymain
myfunc
secial.obj
other.lib
當用F9進行編譯連接時,對后綴為.obj的文件只進行連接,對后綴為.lib的庫文件不會進行編譯,只是進行連接,這樣當進行外部調(diào)用時,就只會對庫進行檢索.
當多個源文件制作成project 文件時,一個.c的源文件依賴于其他的.c源文件,若它們之間用一個頭文件來進行接口,這時應(yīng)用括號將這些頭文件擴起來(頭文件之間可用逗號,空格或分號間隔),這樣一旦頭文件改變時,它們將被重新編譯,例如:有一個主程序名為mymian.c,它包含頭文件為:myfuncs.h,而另一個文件是myfuncs.c
這樣當project文件的內(nèi)容寫成如下形勢時:
mymain.c(myfuncs.h)
myfuncs.c(myfuncs.h)
若一旦myfuncs.h被修改,則對該project文件進行編譯時,mymain.c及myfuncs.h將被重新編譯
本文題目:窗函數(shù)c語言 窗函數(shù)怎么用
文章來源:http://chinadenli.net/article17/dsphidj.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站、網(wǎng)站設(shè)計、企業(yè)建站、動態(tài)網(wǎng)站、網(wǎng)頁設(shè)計公司、網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)