王成
摘 要 隨著計(jì)算機(jī)網(wǎng)絡(luò)的不斷應(yīng)用,在其軟件的編程中,對(duì)于C語言的編程中,有助于計(jì)算機(jī)軟件的更新,并且能夠加快計(jì)算機(jī)在各行各業(yè)的使用范圍,因此在本文對(duì)C語言進(jìn)行研究,分別從編程的技巧以及對(duì)于C語言計(jì)算機(jī)軟件編程實(shí)驗(yàn)案例進(jìn)行了具體的分析,促使計(jì)算機(jī)軟件在不斷的更新。
關(guān)鍵詞 C語言 軟件編程 實(shí)驗(yàn)探討
中圖分類號(hào):TP3 文獻(xiàn)標(biāo)識(shí)碼:A
1 C語言的概述
在各種計(jì)算機(jī)編程語言中,C語言屬于一門高級(jí)語言,它是一切計(jì)算機(jī)語言的基礎(chǔ),擁有高級(jí)語言和低級(jí)語言的特點(diǎn),靈活方便,簡(jiǎn)潔緊湊;而且它的語法限制不嚴(yán)格,程序員在設(shè)計(jì)時(shí)程序書寫自由。不僅能夠編寫系統(tǒng)軟件,同時(shí)還可以編寫應(yīng)用軟件,能夠適應(yīng)于多種操作系統(tǒng),應(yīng)用廣泛,可移植性強(qiáng)??傊?,C語言對(duì)于信息技術(shù)的發(fā)展具有十分重要的作用和價(jià)值。
2基于C語言的計(jì)算機(jī)軟件編程實(shí)驗(yàn)研究
2.1C語言的編程技巧
(1)靈活運(yùn)用指針
在C語言編程的時(shí)候,指針是一種特殊類型的變量,它能夠幫助程序員有效的表達(dá)和解決程序設(shè)計(jì)過程中遇到的復(fù)雜問題,熟練掌握指針是必要的。指針具有三要素:指針名以及指針類型和值。在編程時(shí),指針和一般變量名相同,但是在類型以及值上具有區(qū)別,另外,指針不僅能夠被用于表示數(shù)組,還可以被作為函數(shù)的參數(shù)返回值。
(2)C 語言的特有函數(shù)
在C語言編程的時(shí)候,有時(shí)需要用到一些特有函數(shù)。函數(shù)都具有一定的功能,同時(shí)函數(shù)名也反映了該函數(shù)的功能。在進(jìn)行函數(shù)定義時(shí),程序員需要把函數(shù)的名字、返回值類型以及參數(shù)名等各項(xiàng)都進(jìn)行定義。另外,因?yàn)閹?kù)函數(shù)是由C 編譯系統(tǒng)提供的,這些函數(shù)均是系統(tǒng)首先定義好的,在程序調(diào)用的時(shí)候,程序員只需利用“#include 指令”把與之相關(guān)的頭文件包含到所用文件中即可。
(3)算法技巧
在程序設(shè)計(jì)的過程中,算法是程序的靈魂,因此,掌握一定的算法技巧是必不可少的。通常情況下,算法不僅可以用自然語言表示,有的時(shí)候也利用流程圖表示。需要注意的是,利用流程圖表示算法時(shí),程序設(shè)計(jì)員必須熟練掌握常用的流程圖符號(hào)。且“數(shù)學(xué)乃是計(jì)算機(jī)之母”,牢固的數(shù)學(xué)知識(shí)同樣能夠提升編程效率。
(4)位運(yùn)算以及文件知識(shí)
相比其他計(jì)算機(jī)高級(jí)語言的運(yùn)算方法,位運(yùn)算作為C 語言的重要特色,具有獨(dú)特性和唯一性。位運(yùn)算是以二進(jìn)制位為對(duì)象,然后結(jié)合相關(guān)程序要求進(jìn)行各種運(yùn)算。文件包含有數(shù)據(jù)文件以及程序文件,是計(jì)算機(jī)不可缺少的,程序設(shè)計(jì)員在進(jìn)行編程時(shí),需要把所寫的程序存儲(chǔ)的文件之中,這樣可以便于程序員查找數(shù)據(jù),提升查找效率。
2.2 C語言和匯編語言混合的程序設(shè)計(jì)案例分析
(1)混合的軟件編程方法
隨著信息技術(shù)的不斷發(fā)展和應(yīng)用,在軟件開發(fā)過程中,大多時(shí)候需要使用兩種語言混合編程,有效地提高了程序的開發(fā)效率。通常情況下,混合的軟件編程方法有兩種,具體如下:
①把匯編語句嵌入C語言程序中。例如,把a(bǔ)sm匯編語句嵌入到C語言源程序中:/*把5送到ax寄存器*/當(dāng)把一組匯編語句嵌入到C語言源程序中,則需要利用大括號(hào)把嵌入程序給括起來:在本次的實(shí)驗(yàn)之中,在進(jìn)行程序嵌入時(shí),有其固定的格式,需要在嵌入的各行代碼之前加“asm”關(guān)鍵字,也可以直接在asm代碼塊中放入?yún)R編語句。但是程序設(shè)計(jì)者在進(jìn)行嵌入時(shí),一定要注意滿足以下條件:匯編語言指令代碼中關(guān)鍵字asm必不可少,且要放在指令代碼之前;嵌入?yún)R編語言指令代碼能夠和正常C語言程序混合,但是C語言的分隔符“;”必不可少;嵌入?yún)R編語言時(shí)C語言的注釋分界符必不可少,分別是“/*”和“*/” 。
②首先編寫C語言程序以及匯編程序,然后獨(dú)立編譯目標(biāo)代碼模塊,最終進(jìn)行鏈接。
首先,在進(jìn)行混合編程時(shí),C語言程序能夠調(diào)用匯編語言的各種子程序以及其定義的變量,同時(shí),C語言編寫的函數(shù)以及定義的變量等也可以被匯編語言調(diào)用。而且混合編程的過程中,一個(gè)任務(wù)往往是由若干個(gè)功能模塊組成,且不同的功能模塊均是利用合適的語言進(jìn)行獨(dú)立編程,且以函數(shù)的形式存在。因此,程序設(shè)計(jì)者要根據(jù)每一模塊的特點(diǎn)選擇相應(yīng)的語言和語言編程系統(tǒng)進(jìn)行獨(dú)立編程,并形成目標(biāo)文件,繼而連接目標(biāo)文件,形成完整的可執(zhí)行文件。在混合編程的過程中,設(shè)計(jì)者需要注意五個(gè)問題:參數(shù)傳遞問題;寄存器的使用問題;存儲(chǔ)模式;變量以及函數(shù)的調(diào)用問題;子程序的返回值問題。其中,關(guān)于參數(shù)傳遞問題,在進(jìn)行C語言程序調(diào)用匯編程序時(shí),必須遵從參數(shù)傳遞原則,利用堆棧把參數(shù)傳遞給匯編程序。例如,在C語言程序中含有函數(shù):voidaa(char*p,inti),這個(gè)函數(shù)是利用匯編語言進(jìn)行編寫的,如果編譯是在小內(nèi)存模式下實(shí)施的,系統(tǒng)在進(jìn)行調(diào)用時(shí),則寫成aa(&q, n);運(yùn)行時(shí)程序首先把n壓入堆棧,然后再把&q壓入堆棧,當(dāng)參數(shù)傳遞過來并被匯編語言的子程序取得時(shí),BP寄存器便被用作基地址寄存器,實(shí)現(xiàn)對(duì)棧中所存數(shù)據(jù)進(jìn)行存取操作。
(2)混合的軟件編程實(shí)例分析
程序的主要功能是在五個(gè)數(shù)中尋找最小數(shù),有主程序“min.c” 以及匯編子程序“qiumin.asm”這兩個(gè)部分組成。其中主程序是利用C語言編寫,匯編子程序是利用匯編語言編寫,被主程序調(diào)用,主要于完成尋找最小數(shù)。程序代碼如下:
/*文件名為:min.c*/
/*聲明qiumin為外部函數(shù)*/
利用C語言和匯編語言混合的編程方法,能夠?qū)崿F(xiàn)應(yīng)用程序局部滿足高運(yùn)行速度的要求,但是在具體的運(yùn)用之中,程序設(shè)計(jì)者仍需要注意寄存器分配以及內(nèi)存模式等因素對(duì)于程序的影響;且在運(yùn)行時(shí),因?yàn)槌绦蛟O(shè)計(jì)語言之間存在相互調(diào)用的外部接口,故可以實(shí)現(xiàn)外部調(diào)用。
參考文獻(xiàn)
[1] 劉丹,劉德山.C語言程序設(shè)計(jì)課程綜合性和設(shè)計(jì)性實(shí)驗(yàn)研究[J].計(jì)算機(jī)教育.2012(09).