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