摘 要:冒泡法是C語言中常用的分析方法,在C語言的教學(xué)中是掌握排序的重要方法,在匯編語言的排序中也常常使用,提出了在兩種語言設(shè)計中的教學(xué)不同點,便于提高教學(xué)質(zhì)量,并且使學(xué)生更好的掌握程序設(shè)計的方法。
關(guān)鍵詞:冒泡法;C語言;匯編;教學(xué)方法
中圖分類號:TP3.0
冒泡法是排序的一種方法,冒泡法和冒泡排序?qū)嵤且粋€定義。之所以叫冒泡法,即是像在水中的氣泡一樣,在一輪兩數(shù)比較之后將最?。ɑ蜃畲蟮臄?shù)字)排在一列數(shù)的左邊(當然右邊也行,總之是一邊)。然后排開這個數(shù),經(jīng)過N-2排開之后,整列數(shù)的大小就是按順序來的。排序是為了將一組雜亂的數(shù)據(jù)變成一組有序的數(shù)據(jù)。排序法的使用時非常頻繁的,在實踐中,人們設(shè)計出了許多好的算法,如交換排序、插入排序、以及選擇排序等等。各種算法有其自身的特點與適用范圍,其中冒泡法在很多語言程序設(shè)計中都使用的很廣泛,在這里主要分析冒泡法在匯編語言和C語言程序設(shè)計中的教學(xué)方法的不同,更好的啟發(fā)學(xué)生開拓思維,提高變成的動手能力。
1 C語言編程中冒泡法的教學(xué)分析
1.1 C語言設(shè)計的特點
(1)緊湊簡潔、方便靈活。C語言總共有9種控制語句和32個關(guān)鍵字,,用大小寫字母就可以編寫,書寫靈活,語句簡潔。C語言可以對字節(jié)、地址等進行賦值和使用,使用靈活方便。(2)運算符豐富,可以實現(xiàn)多種的復(fù)雜和簡單的運算,而且語句簡單,使用方便。(3)數(shù)據(jù)結(jié)構(gòu)豐富C的數(shù)據(jù)類型有:整型、字符型、實型、數(shù)組類型、共用體類型、指針類型、結(jié)構(gòu)體類型等。能引入了指針概念用來實現(xiàn)各種復(fù)雜的數(shù)據(jù)類型的運算,使程序效率更高。另外C語言具有強大的圖形功能,支持多種顯示器和驅(qū)動器。且邏輯判斷功能、計算功能強大。(4)C是結(jié)構(gòu)式語言。結(jié)構(gòu)式語言的顯著特點是代碼及數(shù)據(jù)的分隔化,即程序的各個部分可以獨立的使用。這種結(jié)構(gòu)化方式可使程序便于使用、維護以及調(diào)試,層次清晰。C語言函數(shù)可方便的調(diào)用,并具有條件語句控制程序流向,多種循環(huán)、從而使程序完全結(jié)構(gòu)化。是以函數(shù)形式提供給用戶的。(5)C語法限制不太嚴格、程序設(shè)計自由度大。(6)C語言允許直接訪問物理地址,可以直接對硬件進行操作 因此既具有低級語言的許多功能,高級語言的功能,又能夠像匯編語言一樣對字節(jié)、地址和位進行操作,而這三者是計算機最基本的工作單元,可以用來寫系統(tǒng)軟件。(7)C語言程序生成代碼質(zhì)量高,程序執(zhí)行效率高,一般只比匯編程序生成的目標代碼效率低10へ20%。(8)C語言適用范圍大,可移植性好。
1.2 C語言設(shè)計中冒泡法的使用
冒泡法是一種排序方法:
冒泡法54321。比如上面這5個數(shù)字我們把它按照由小到大的順序排列,從前往后相臨兩位比較大小,如果前一位比后一位大就把它倆換位,5比4大就把5和4換位,得到45321。
5又比3大 5和3換位得到43521依次類推最后得到43215這樣就把最大的一個數(shù)字移到最后面了,然后不看5,剩下4321再用上面的方法把4移動到最后得到32145 在不看45 剩下321把3移動到最后,依此類推,最終得到12345,所以形象的稱為冒泡法。
這就是冒泡法,是計算機編程排序中最簡單快捷的方法。除此意外我還能寫出許多排序方法,但是效率上都不如冒泡法。
————————————————————————————————
以下是C語言中十個數(shù)的冒泡法排序的代碼
#include
#include
int main(void)
{
long arrary[9],
box=0L;
int i1=0,
i2=0;
for(i1=0;i1<9;i1++)
arrary[i1]=0;
printf(\"輸入數(shù)組元素:\n\");
for(i1=0;i1<=9;i1++)
{
printf(\"%3d>\",i1+1);
scanf(\"%d\",arrary[i1]);
}
for(i1=0;i1<=9;i1++)
for(i2=0;i2<=9-i1;i2++)
{
if(arrary[i2] { box=arrary[i2+1]; arrary[i2+1]=arrary[i2]; arrary[i2]=box; } } printf(\"\n排序后為:\n\"); for(i1=0;i1<=9;i1++) printf(\"%3d>%d\n\",i1+1,arrary[i1]); getch(); return 0; } 2 單片機中匯編語言程序設(shè)計的冒泡法 2.1 單片機語言中匯編語言的設(shè)計方法 單片機基礎(chǔ)設(shè)計中常用的是匯編語言,匯編語言是面向底層的實際語言之一,常用的指令按照功能來劃分有數(shù)據(jù)傳送指令、算術(shù)運算指令、邏輯運算指令、位操作指令、控制轉(zhuǎn)移指令等,指令豐富,便于操作。 2.2 匯編語言中冒泡法的教學(xué)方法舉例 編寫并調(diào)試一個排序子程序,其功能為用冒泡法將內(nèi)存RAM中幾個單字節(jié)無符號的正整數(shù),按從小到大的次序重新排列。在這個設(shè)計中典型的冒泡法設(shè)計有匯編的特點,流程圖如圖1所示: 圖1 流程圖 在匯編語言的程序設(shè)計中,設(shè)置了標志位00H,當在一次循環(huán)比較中,凡是有大小數(shù)字進行交換的時候,就設(shè)置標志位為1,這樣在從50H進行再一次的循環(huán)交換直到數(shù)字由小到大排列為止,在KEIL的環(huán)境下可以運行并顯示結(jié)果,如圖2所示: ? 排序前的賦值情況: 排序后的結(jié)果: 3 結(jié)束語 在C語言的程序設(shè)計中,需要用的語句簡單,而且還可以設(shè)計循環(huán)函數(shù),實現(xiàn)自己的不斷比較進行排序,而在匯編語言程序設(shè)計中,這種方法的使用不是很恰當,要設(shè)置標志位和條件轉(zhuǎn)移指令進行排序,要設(shè)置每次排序的指針,相對語言要更加緊湊,條理些,作為教師要善于發(fā)現(xiàn)每種教學(xué)方法的異同點,更好的服務(wù)于教學(xué)中,提高教學(xué)質(zhì)量。 參考文獻: [1]譚浩強.C語言程序設(shè)計[M].北京:清華大學(xué)出版社,2010. [2]張婕等.最短路徑動態(tài)規(guī)劃問題及C語言實現(xiàn)[J].內(nèi)蒙古農(nóng)業(yè)大學(xué)學(xué)報(自然科學(xué)版),2012(02). [3]武曉燕.C語言在單片機技術(shù)中的應(yīng)用[J].價值工程,2010(36). [4]曹莎莎.C語言教學(xué)研究與思考[J].價值工程,2012(01). [5]王窕珊.C語言編程教學(xué)方法探討[J].計算機光盤軟件與應(yīng)用,2011(09). 作者簡介:田嵩(1981-),女,碩士,研究方向:計算機應(yīng)用技術(shù)。 作者單位:湖北理工學(xué)院計算機學(xué)院,湖北黃石 435003 基金項目:湖北理工學(xué)院青年項目(項目編號:13xjz060);2012湖北理工學(xué)院校級教研項目(項目編號:201229)。