徐 輝孫 俠
(1.安徽理工大學(xué)計算科學(xué)與工程學(xué)院 安徽 淮南 232001;2.安徽理工大學(xué)理學(xué)院 安徽 淮南 232001)
計算機編程語言層出不窮,多如牛毛,每種編程語言都有其特點,有其適用的場合。隨著C++和C#的使用,C語言的應(yīng)用范圍被壓縮了。但是必須看到,在控制領(lǐng)域,C語言因其“半高級語言”的優(yōu)勢,仍然在普遍使用[1,2]。在單片機、嵌入式系統(tǒng)中廣泛使用,難以替代。著名的嵌入式實時操作系統(tǒng)μC/OS-II除了極少的和微處理器硬件交互的代碼以外,其余全部用標準C編寫[3]。因此,C語言的學(xué)習(xí)仍然是重要的。大部分高校都將C語言程序設(shè)計作為必修課,這里我們針對C語言的學(xué)習(xí)做一個探討。
程序設(shè)計課程最忌的是照本宣科,只將語法。目前,多媒體教學(xué)在各類高校已經(jīng)普及,上課時候可以直觀的將要教授的內(nèi)容展示給學(xué)生,并通過一系列聲音、圖形、圖像的方式讓原本枯燥的課堂教學(xué)變得活躍,調(diào)動學(xué)生積極性。但與此同時,有部分教師的課堂教學(xué)卻變的古板了,甚至有“照ppt宣科”的情況出現(xiàn)。沒有實例化的教學(xué)讓課堂從活躍變得沉寂。因此,在C語言教學(xué)中,要充分發(fā)揮現(xiàn)代教學(xué)工具的作用,提高教學(xué)效率??梢栽诶碚撜n教學(xué)中添加一些類比、對比的例子。比如,對于“循環(huán)”這一部分的教學(xué)。C語言有三種循環(huán)語句:for語句、while語句和do While語句。統(tǒng)一的是都需要循環(huán)控制變量,但每一種情況下,循環(huán)控制變量的變化確實不一樣的。for語句的循環(huán)控制變量可以指定步長后自動變化,但另外兩種語句卻需要顯式指定。無論如何,do while語句循環(huán)體都會執(zhí)行一次,但另外兩種情況則可能一次都不執(zhí)行。這些相同之處和不同之處,通過比較的方式給出后,學(xué)生就容易掌握一些。因此,教師需要提煉理論教學(xué)中的知識點傳授給學(xué)生。
對于任何一門工科課程,實驗都是必不可少的重要環(huán)節(jié),在某些時候重要性甚至不亞于理論教學(xué)。對于教師尤其是教學(xué)經(jīng)驗豐富的教師來說,可能在實驗中極少出現(xiàn)被難住的情況。這樣容易造成給學(xué)生丟幾個實驗,讓他們?nèi)プ龊昧耍袉栴}問我。但是,對于層次不齊的學(xué)生來說,這樣是難以達到理想效果的。精挑細選的實驗可以讓學(xué)生自覺自動的完成從而掌握理論教學(xué)的重點和難點。在實驗教學(xué)中,有教師有意識的將極易出錯的知識點放在同一個實驗或者同一堂課的不同實驗中,這樣,發(fā)現(xiàn)問題后學(xué)生會有意思的做比較,有利于問題的解決并避免再出現(xiàn)相同的錯誤。這種“陷阱式”的實驗教學(xué)取得了很好的效果,值得提倡[4]。
實驗教學(xué)的另外一個方面是,教師要有意識的將后續(xù)課程中可能出現(xiàn)的問題在本課程的實驗教學(xué)中體現(xiàn)出來,這樣,在后續(xù)課程涉及到該知識點后就容易理解多了。比如,在C語言教學(xué)中,指針是一個最靈活的地方,也是C語言的精華所在。但是,目前課程后面的例子的設(shè)計和后續(xù)課程關(guān)聯(lián)就不大,只是幫助理解而已。加上目前社會上有人可以的規(guī)避指針在程序設(shè)計中的應(yīng)用,一些學(xué)生認為這個內(nèi)容就是故意把課程加深,沒有實際意義。本人在教學(xué)中結(jié)合嵌入式操作系統(tǒng)內(nèi)核講解中的問題,比如μC/OS-II在內(nèi)存分配的時候用到的指針的知識[3],這樣學(xué)生就容易理解靈活的C語言的指針的巧妙之處。
在高?;@球修課時常出現(xiàn)的是有學(xué)生考試的分數(shù)很高,但是根本不能上場打球。原因是考試時候很多都是單項進行的,比如運球、投籃。但是比賽是連貫進行的,相信不把單項的技巧串接起來永遠不能成為科比。C語言教學(xué)有著異曲同工之妙。有學(xué)生在單獨的理論學(xué)習(xí)和實驗中取得了很好的成績,但卻不能使用C語言開發(fā)一個極小的項目解決實際問題。因此,需要結(jié)合實際設(shè)計綜合性的課程設(shè)計。由于綜合性的內(nèi)容往往牽涉到數(shù)據(jù)結(jié)構(gòu)的知識,而數(shù)據(jù)結(jié)構(gòu)這門課程又常常在C語言程序設(shè)計課后面才開始。因此,部分教師擔(dān)心學(xué)生不能勝任。其實,這是沒有必要擔(dān)心的??梢栽O(shè)計不需要復(fù)雜數(shù)據(jù)結(jié)構(gòu)的綜合性項目。比如,簡單的隊列和堆棧問題,完全沒有必要將數(shù)據(jù)結(jié)構(gòu)知識和C語言程序設(shè)計課程分的那么明顯,學(xué)生也完全可以在學(xué)習(xí)C語言后掌握這一部分內(nèi)容的。一個很好的綜合性課程設(shè)計是讓學(xué)生設(shè)計一個計數(shù)器。這是一個可難可易、可深可淺的項目??梢灾鸩酵七M,平滑的推進設(shè)計難度,很好鍛煉學(xué)生的動手能力。
不少人認為C語言這門課程理論考核沒有必要,只需要在實驗時候看學(xué)生解決問題的能力就好。但事實是,理論考試必不可少。實驗考核過程中學(xué)生有各種不同的方法解決同一個問題,但是有些知識點是很重要的,這樣可能就規(guī)避掉了。這對于以后的項目開發(fā)是很不利的。因此,我本人的思路是采用四六開的方式。即理論考核占40%的分量,實踐考核占60的分量。當(dāng)然,也可以將學(xué)生平時的出勤率、學(xué)習(xí)態(tài)度放進綜合分里,但是本人以為象征性的就行了。掌握知識才是王道,不同的學(xué)生有不同的學(xué)習(xí)方式,不必強求。
[1]彭雅琴.C語言實驗教學(xué)探析[J].三江學(xué)院學(xué)報,2010(4).
[2]常村紅,婁銀霞.C語言教學(xué)改革初探[J].太原城市職業(yè)技術(shù)學(xué)院學(xué)報,2012(3).
[3]J.Labrosse.MicroC/OS-II∶The real-time kernel[M].US∶CMP Books,1992.
[4]趙英紅.“陷阱式”教學(xué)法在C語言程序設(shè)計課程教學(xué)中的應(yīng)用[J].濱州職業(yè)學(xué)院學(xué)報,2008(4).