江蘇省如皋第一中等專業(yè)學(xué)校 錢秋榮
C語言作為一種實(shí)用性超強(qiáng)的編程語言,彰顯其高效、靈活的對(duì)數(shù)據(jù)進(jìn)行處理的能力,C語言既可以編制系統(tǒng)的相關(guān)程序,又可以編制相關(guān)的軟件程序。中職C語言的排列問題的教學(xué)在C語言教學(xué)中占有重要的地位,C語言中的排列問題是多種多樣的編程語言系列中的一大重點(diǎn)內(nèi)容,同時(shí)又是一個(gè)難點(diǎn)內(nèi)容。如果中職學(xué)生對(duì)C語言中的排列問題掌握得不夠扎實(shí),將會(huì)對(duì)中職學(xué)生后續(xù)的學(xué)習(xí)造成一定的負(fù)面效應(yīng)。如何提升中職C語言排列問題的教學(xué)效率應(yīng)成為教師積極研究的一面重要課題。
中職教師應(yīng)緊跟時(shí)代的脈搏,以中職C語言教材的實(shí)際為本,從排列問題的教學(xué)實(shí)際出發(fā),積極探索中職C語言排列問題的最有效的教學(xué)方法。
1.排入排序法。必須先去建立一個(gè)“空列表”,其作用是用來進(jìn)行保存已經(jīng)排序的有序數(shù)列(可以將其稱之為“有序列表”)。接著從原數(shù)列之中去有意識(shí)的選取其中的一個(gè)數(shù),并將剛選取的這個(gè)數(shù)插入到“有序列表”之中去,并且將選取的這個(gè)數(shù)繼續(xù)保持有序的狀態(tài)。重復(fù)這個(gè)操作,一直到原數(shù)列空了才停止該操作,需強(qiáng)調(diào)的是如果插入排序的平均時(shí)間復(fù)雜度為平方級(jí)時(shí),則表明其效率有待提高,卻是很易達(dá)到的。插入排序法彰顯的是逐步擴(kuò)大成果的理念,從而使得有序列表的長(zhǎng)度漸次增大,一直到這樣的長(zhǎng)度與原列表的長(zhǎng)度相等為止。
2.冒泡排序法。必須先將需要進(jìn)行排序的數(shù)字加入工作列表之中。接著從列表的第一個(gè)數(shù)字開始直至倒數(shù)的第二個(gè)數(shù)字進(jìn)行有序的檢查,如果發(fā)現(xiàn)那一位上的數(shù)字大于這個(gè)數(shù)字的下一位,便把這個(gè)數(shù)字與其下一位的數(shù)字進(jìn)行交換,重復(fù)這樣的操作直到再也不可能交換為止。需要注意的是冒泡排序的平均時(shí)間的復(fù)雜程度與上文提到的“插入排序法”基本相當(dāng),也呈現(xiàn)平方級(jí),同樣是極易達(dá)到目的。
3.快速排序法??焖倥判蚍ㄊ荂語言排序問題中最高效的一種排序方法??焖倥判蚍ㄕ蔑@的是“分治”理念??焖倥判虮仨毚_保列表的前半部分一定要小于列表的后半部分,接著依次對(duì)列表的前半部分與列表的后半部分進(jìn)行排序,唯有如此,才能確保整個(gè)列表的有序??焖倥判蚍ㄕ蔑@的是一種最最先進(jìn)的理念,因而其高效性凸顯。不可否認(rèn)的事實(shí)是在排序問題的解決過程中方法的高效與否和列表中數(shù)字問題的比較次數(shù)有直接的關(guān)聯(lián),而快速排序法所強(qiáng)調(diào)的確保列表的前半部分一定要小于后半部分的要求便使得前半部分的任何一個(gè)數(shù)字后便不再與后半部分的數(shù)進(jìn)行比較了,這樣便減少了數(shù)字間的不必要的比較。
4.堆排序法。堆排序這種方法與上文提及的排序方法完全不相同。堆排序必須先新建一個(gè)空列表,其作用類似于“排入排序法”中的“有序列表”。接著找出數(shù)列中最大的數(shù)字,并把這個(gè)最大的數(shù)字置于“有序列表”的末尾處,且同時(shí)將其從原數(shù)列加以刪掉。重復(fù)這樣的操作,直至原數(shù)列為空。需強(qiáng)調(diào)的是堆排序的平均時(shí)間復(fù)雜度為nolgn,但效率都是很高的。
中職教師應(yīng)在有效運(yùn)用中職C語言排列問題重要的高效的教學(xué)方法的基礎(chǔ)上努力探究中職C語言排列問題教學(xué)效率提升的有關(guān)策略。
策略之一:激發(fā)中職學(xué)生對(duì)C語言排列問題的學(xué)習(xí)興趣?!爸卟蝗绾弥撸弥卟蝗鐦分?。”興趣毫無疑問是中職學(xué)生學(xué)好C語言排列問題的動(dòng)力源泉。中職教師唯有激發(fā)起中職學(xué)生學(xué)習(xí)C語言排列問題的興趣,才能引發(fā)中職學(xué)生對(duì)C語言排列問題的學(xué)習(xí)沖動(dòng),才能讓中職學(xué)生積極地、主動(dòng)地、富有創(chuàng)造性地投入到對(duì)C語言排列問題的學(xué)習(xí)活動(dòng)之中去。為了激發(fā)中職學(xué)生對(duì)C語言排列問題的學(xué)習(xí)興趣,中職教師應(yīng)讓中職學(xué)生深深地認(rèn)識(shí)到中職C語言的學(xué)習(xí),對(duì)中職學(xué)生的后續(xù)學(xué)習(xí)有重要的作用,因?yàn)镃語言專業(yè)的知識(shí)基礎(chǔ)牢固了,更有利于中職學(xué)生升入高一級(jí)學(xué)校后的專業(yè)發(fā)展,甚至進(jìn)入社會(huì)后都能得到受益的,從而讓中職學(xué)生增強(qiáng)對(duì)中職C語言學(xué)習(xí),尤其是對(duì)排列問題的學(xué)習(xí)的興趣與動(dòng)力。比如,中職教師在教學(xué)C語言這門功課之初就可以展示一些有利于激發(fā)中職學(xué)生學(xué)習(xí)C語言趣味性、實(shí)用性超強(qiáng)的程序把中職學(xué)生深深地吸引過來,再讓中職學(xué)生自主探索一下編寫代碼的興趣。如讓中職學(xué)生對(duì)照ASCII表自主對(duì)比去修改一下程序,中職學(xué)生會(huì)興致勃勃地自主或與他人合作探究思想中的圖案,讓中職學(xué)生在興趣盎然中體驗(yàn)到對(duì)C語言學(xué)習(xí)的歡樂。
策略之二:實(shí)施分層教學(xué)。分層教學(xué)運(yùn)用于中職C語言排列問題的教學(xué)中其出發(fā)點(diǎn)是中職教師需依據(jù)中職學(xué)生的認(rèn)知基礎(chǔ)與能力發(fā)展水平將中職學(xué)生有針對(duì)性地、科學(xué)地、合理地劃分為幾組各自水平相接近的學(xué)習(xí)小組,教師再依據(jù)不同學(xué)習(xí)小組的特征采用恰當(dāng)?shù)摹胺謱硬呗浴?,讓不同層次的中職學(xué)生在C語言排列問題的教學(xué)中得到不同層次的發(fā)展,實(shí)現(xiàn)分層教學(xué)彰顯的現(xiàn)代教育所倡導(dǎo)的“以人為本”的理念,因?yàn)橹新殞W(xué)生不可否認(rèn)地存在著差異性,有優(yōu)等生、中等生、學(xué)困生之分,在中職C語言排列問題的教學(xué)中教師應(yīng)認(rèn)真實(shí)施分層教學(xué),以使不同層次的中職學(xué)生都能獲得不同的發(fā)展。在C語言排列問題的學(xué)習(xí)中只強(qiáng)調(diào)讓學(xué)困生將一些基本性的排序問題加以解決,便應(yīng)給予鼓勵(lì)、贊賞,但對(duì)優(yōu)等生就需進(jìn)行一些拓展延伸性的排序問題的訓(xùn)練,讓優(yōu)等生在C語言排列問題的學(xué)習(xí)進(jìn)入“更上一層樓”的高度。同時(shí)中職教師對(duì)C語言排列問題學(xué)習(xí)中的中等生也應(yīng)提出一些建設(shè)性的意義,讓中等生“跳一跳摘到果子”。
中職C語言排列問題教學(xué)效率提升的策略多種多樣,除了本文所提及的幾種策略外還有很多的策略,如可以采用“任務(wù)驅(qū)動(dòng)”等策略,但受篇幅的限制,本文不再詳述。但無論采用什么方法,其出發(fā)點(diǎn)都是在于讓中職C語言排列問題的教學(xué)更實(shí)際,更接“地氣”,更高效,從而實(shí)現(xiàn)“教”與“學(xué)”的雙豐收。