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