摘 要:C語言是一切計算機語言的基礎,在計算機軟件編程中應用十分廣泛。本文首先簡單概述了C語言的相關內(nèi)容,然后分別從C語言的編程技巧以及兩個不同類型的基于C語言的計算機軟件編程案例進行分析研究,希望能夠對同行研究者有所幫助。
關 鍵 詞:C語言;計算機;軟件編程;實驗研究
一、C語言的概述
在1967年BCPL語言被英國MartinRichards 推出,到1970 年B 語言以BCPL 語言為基礎被美國Ken Thompson推出[1]。但是B 語言過于簡單,而且功能有限,經(jīng)過研究者的多次試驗研究,在1972—1973 年,C 語言在B 語言的基礎上經(jīng)過完善,被美國貝爾實驗室D.M推出[2]。在各種計算機編程語言中,C語言屬于一門高級語言,它是一切計算機語言的基礎,擁有高級語言和低級語言的特點,靈活方便,簡潔緊湊;而且它的語法限制不嚴格,程序員在設計時程序書寫自由。不僅能夠編寫系統(tǒng)軟件,同時還可以編寫應用軟件,能夠適應于多種操作系統(tǒng),應用廣泛,可移植性強??傊珻語言對于信息技術的發(fā)展具有十分重要的作用和價值。
二、基于C語言的計算機軟件編程實驗研究
(一) C語言的編程技巧
1.靈活運用指針
在C語言編程的時候,指針是一種特殊類型的變量,它能夠幫助程序員有效的表達和解決程序設計過程中遇到的復雜問題,熟練掌握指針是必要的。指針具有三要素:指針名以及指針類型和值[3]。在編程時,指針和一般變量名相同,但是在類型以及值上具有區(qū)別,另外,指針不僅能夠被用于表示數(shù)組,還可以被作為函數(shù)的參數(shù)返回值。
2.C 語言的特有函數(shù)
在C語言編程的時候,有時需要用到一些特有函數(shù)。函數(shù)都具有一定的功能,同時函數(shù)名也反映了該函數(shù)的功能。在進行函數(shù)定義時,程序員需要把函數(shù)的名字、返回值類型以及參數(shù)名等各項都進行定義。另外,因為庫函數(shù)是由C 編譯系統(tǒng)提供的,這些函數(shù)均是系統(tǒng)首先定義好的,在程序調(diào)用的時候,程序員只需利用“#include 指令”把與之相關的頭文件包含到所用文件中即可[4]。例如,在程序運行的過程中,如果用到了sqrt函數(shù),則為了保證程序運行下去,頭文件必須含有#include“string .h”。
3.算法技巧
在程序設計的過程中,算法是程序的靈魂,因此,掌握一定的算法技巧是必不可少的。通常情況下,算法不僅可以用自然語言表示,有的時候也利用流程圖表示。需要注意的是,利用流程圖表示算法時,程序設計員必須熟練掌握常用的流程圖符號[5]。且“數(shù)學乃是計算機之母”,牢固的數(shù)學知識同樣能夠提升編程效率。
4.位運算以及文件知識
相比其他計算機高級語言的運算方法,位運算作為C 語言的重要特色,具有獨特性和唯一性。位運算是以二進制位為對象,然后結合相關程序要求進行各種運算。文件包含有數(shù)據(jù)文件以及程序文件,是計算機不可缺少的,程序設計員在進行編程時,需要把所寫的程序存儲的文件之中,這樣可以便于程序員查找數(shù)據(jù),提升查找效率。
(二) C語言和匯編語言混合的程序設計案例分析
在本次的實驗之中,在進行程序嵌入時,有其固定的格式,需要在嵌入的各行代碼之前加“asm”關鍵字,也可以直接在asm代碼塊中放入?yún)R編語句。但是程序設計者在進行嵌入時,一定要注意滿足以下條件:匯編語言指令代碼中關鍵字asm必不可少,且要放在指令代碼之前;嵌入?yún)R編語言指令代碼能夠和正常C語言程序混合,但是C語言的分隔符“;”必不可少;嵌入?yún)R編語言時C語言的注釋分界符必不可少,分別是“/*”和“*/” [6]。
(2)首先編寫C語言程序以及匯編程序,然后獨立編譯目標代碼模塊,最終進行鏈接。
首先,在進行混合編程時,C語言程序能夠調(diào)用匯編語言的各種子程序以及其定義的變量,同時,C語言編寫的函數(shù)以及定義的變量等也可以被匯編語言調(diào)用。而且混合編程的過程中,一個任務往往是由若干個功能模塊組成,且不同的功能模塊均是利用合適的語言進行獨立編程,且以函數(shù)的形式存在。因此,程序設計者要根據(jù)每一模塊的特點選擇相應的語言和語言編程系統(tǒng)進行獨立編程,并形成目標文件,繼而連接目標文件,形成完整的可執(zhí)行文件。
在混合編程的過程中,設計者需要注意五個問題:參數(shù)傳遞問題;寄存器的使用問題;存儲模式;變量以及函數(shù)的調(diào)用問題;子程序的返回值問題。
其中,關于參數(shù)傳遞問題,在進行C語言程序調(diào)用匯編程序時,必須遵從參數(shù)傳遞原則,利用堆棧把參數(shù)傳遞給匯編程序。例如,在C語言程序中含有函數(shù):voidaa(char*p,int i),這個函數(shù)是利用匯編語言進行編寫的,如果編譯是在小內(nèi)存模式下實施的,系統(tǒng)在進行調(diào)用時,則寫成aa(&q , n);運行時程序首先把n壓入堆棧,然后再把&q壓入堆棧,當參數(shù)傳遞過來并被匯編語言的子程序取得時,BP寄存器便被用作基地址寄存器,實現(xiàn)對棧中所存數(shù)據(jù)進行存取操作。通常情況下,由于調(diào)用的子程序和C語言程序往往使用同一個堆棧,所以在程序執(zhí)行時,匯編語言子程序需要執(zhí)行兩條指令:push bp pop bp、sp[7]。
2.混合的軟件編程實例分析
三、小結
綜上所述,隨著信息技術的不斷發(fā)展,人們對于計算機軟件編程的功能要求也將越來越高,而利用C語言能夠實現(xiàn)計算機軟件的多種功能,因此研究者應當強化對于C語言的計算機軟件編程實驗研究,開發(fā)功能更加強大的軟件。
參考文獻
[1] 侯宏霞.提高“匯編語言”課程實驗教學質量的幾點思考[J].內(nèi)蒙古農(nóng)業(yè)大學學報(社會科學版),2011(01):25-26.
[2] 劉海峰.以培養(yǎng)實踐能力為導向的“C語言”教學方法探討[J].科技經(jīng)濟市場,2008(12):33-34.
[3] 阿娜古麗·阿布拉.C語言與匯編語言相互調(diào)用實現(xiàn)混合編程[J].電腦編程技巧與維護,2009(10):71-74.
[4] 劉丹,劉德山.C語言程序設計課程綜合性和設計性實驗研究[J].計算機教育,2012(09):31-32.
[5] 王應軍,曲培新,趙晨萍.ARM匯編語言與C語言混合編程的實現(xiàn)方法[J].科技信息,2010(03):69-71.
[6] 方艷紅,趙海龍.計算機高級語言程序設計類課程實踐教學改革研究[J].中國科技信息,2008(19):12-14.
[7] 卜登立,等.“匯編語言程序設計”課程教學改革研究與探討[J].井岡山大學學報,2009(5):45-46.