摘 要: 針對《C語言程序設計》難學、難教的現象,本文作者根據多年的教學研究經驗,介紹了教學過程中易出現的問題與解決方法,給出了自己的教學方法和手段。
關鍵詞: 《C語言程序設計》 教學方法 教學手段 實驗教學
《C語言程序設計》是程序設計類課程的基礎,是計算機專業和相關專業的核心課程,也是全校工科各專業的本、專科教學計劃中占有重要地位和起著關鍵作用的一門課程。在計算機教育方面,C語言是為數不多的與國外保持內容同步的課程之一。因此,它在高校教學中的地位之重要不言而喻。我們的教學目標是讓學生掌握程序基本編程思想和實用編程技能,訓練學生嚴密的邏輯思維、嚴謹踏實的作風、精益求精的精神,通過全面、深入、系統地介紹程序設計方法和程序設計語言,使學生掌握C語言的基本語法、語句、控制結構,以及結構化程序設計的基本思想和方法,使學生認識到算法、良好的程序設計風格與實踐在本課程學習中的重要性,培養學生熟練使用C語言編程分析和解決實際問題的能力。但在實際的教學過程中,經常有學生學不好、不愿學的情況。我根據自己多年的C語言教學經驗,談談在C語言教學過程中的一些問題,希望對讀者學習和使用C語言有所幫助。
1.存在的問題
很多學生在開始學習時熱情高漲,但隨著課程的深入,該課程里面需要記的規則和規則本身的靈活性特別是思維的轉變使學生慢慢失去了學習的興趣。主要原因有以下幾點:第一,對知識理解不夠透徹,沒有深究里面的知識點。課本里面一般只介紹C語言的格式和規則,因為語言學習的一個漸進性,所以結合實例比較少,學生就比較難于掌握。例如if語句的用法:if(表達式)語句;當表達式為真時執行語句,否則執行if語句的后續語句,如果在“(表達式)”后面加一個分號雖然沒有語法錯誤,但程序的邏輯結構發生了改變,很多初學者會犯此類錯誤。第二,學生的思維方式開始很難轉變過來,經常會用數學里面的表達式來理解和表達C語言里面的表達式。如若要描述三個變量a、b、c的大小關系,很多學生就直接這么寫了:a>b>c,雖然沒有語法錯誤,但同樣出現邏輯錯誤,實際上在C語言里應該這樣描述:a>bb>c。第三,學生對程序的理解不夠。弄不明白程序的運行過程,實際上時對C語言的控制語句理解不夠。第四,不會動手寫程序。這是很多初學者出現的問題,很多程序能看懂,能理解,但是一叫他獨立寫一個程序,他就無從下手。這主要是平時動手不夠,另外對算法的理解還沒有深入。
2.解決方法
2.1教學方法。教學方法多種多樣,不可采用單一的方式進行講授,在教學過程中教師應該靈活地采用多種方法相結合,充分調動學生的積極性,使其從被動學習轉變為主動學習具體方法如下。
2.1.1互動教學法。互動教學法的方式有多樣,如課堂提問、課堂練習等。例如,在講完一個知識點后,教師可拿出幾分鐘時間讓學生自由提問,或者可以出一個相關習題讓學生隨堂練習,這樣既不會讓學生感到枯燥無味,又能加深學生對該知識點的理解。在課堂上還可讓學生直接到黑板上編寫程序,編寫完畢后讓其他同學上來進行點評、講解,這樣可及時發現學生的掌握情況和學生容易犯錯的地方,從而對癥下藥,對學生還沒有掌握的知識點再重新溫習一遍,這樣學生的印象深刻,比直接講解效果更好。
2.1.2啟發教學法。C語言教材中的例題和課后習題比較豐富,給出了一般問題的一般解法,應對其進行歸納、整理和分類,在講解同一類問題時沒有必要逐題講解,而應該在講解一、兩個典型題目的基礎上,拓展學生思路,啟發學生歸納出求解這一類問題的基本算法,這樣既節省了重復講題的時間,又留出時間來給學生討論和思考;或者在講授新的內容時通過復習前面的知識引入新的內容,例如講循環結構程序設計時,應首先讓學生回憶順序結構和分支結構的執行原理和過程,進而引出循環結構的思路和過程。
2.1.3類比教學法。如在講解交換變量a和b的值時,很多學生會直接用a=b;b=a;來處理。這時教師可用交換兩個杯子甲和乙里的飲料這樣的例子來說明,要交換兩個杯子甲和乙里的飲料,則應該要拿第三個杯子丙作為過渡,先將甲杯子里的飲料倒入丙,再將乙杯子的飲料倒入甲,最后將丙杯子里的飲料(亦即最開始甲杯子里的飲料)倒入乙杯子,這樣就實現了甲乙兩杯子的飲料的互換。同樣要交換兩變量的值,也應該要一個中間變量,假設為t,則程序段應這樣寫:t=a;a=b;b=t;如此,學生就很容易理解了。
2.1.4演示教學法。利用黑板或動畫的形式生動地描述程序的運行過程,這樣對一些比較復雜的結構塊或程序段有很好的助理解作用。
2.2教學手段。教學手段也是多樣,針對不同的教學內容和不同的學生個體采取不同的教學手段,這樣才會有針對性。
2.2.1寓教于樂。興趣是激發一個人學習的最大動力,所以教師在教學過程中盡可能地采取一切方法來激發學生學習的熱情。在C語言課程中,也有很多趣味性的數學問題,如“水仙花數”,“完數”,“斐波那契數列”,“猴子吃桃問題”,“百錢買百雞”,等等,這些有趣的問題可激發學生編程的興趣。
2.2.2傳統的板書和多媒體課件相結合。在教學過程中,教師一定不能單純地使用多媒體教學或板書的方式。基于C語言這門課程的特殊性——特別注重動手和程序設計能力,所以在教學過程中,對概念或演示方面可以用多媒體,概念一定要講詳細,寧可少講一個習題,也不能讓學生對概念模糊;涉及程序(特別是學生剛接觸到程序或比較復雜的程序)的時候,雖然多媒體課件上有,但講解的時候最好將其板書出來邊寫邊講,哪個語句段實現什么功能,能否用其他程序段實現相同功能,等等,這樣學生更容易接受這個程序、算法和思想,學習效果更佳。
3.加強實驗教學的管理
《C語言程序設計》是一門實踐性很強的課程,上機實驗是學生消化、理解理論知識,熟悉算法,發現、驗證錯誤,調試程序和提高編程能力的一個重要途徑。學習C語言不能紙上談兵,一定要通過上機來驗證程序,而且學生獨立上機編輯運行一個程序比單獨看書效果強很多。所以教師一定要加強上機實驗的管理,讓學生重視實驗。實驗環節主要有以下幾點。
3.1理論課結束后即要為學生布置實驗課的內容,要有難有易以供不同層次的學生選擇,讓學生在課后先自己編寫好程序或者寫出問題的算法以提高實驗課的上課效率。
3.2上機過程中督促和指導學生進行實驗。上機調試程序的過程中,會出現各種問題,教師應耐心細致地為學生講解并讓其思考原因。另外基于C語言有不同的編譯平臺,常用的有TC2.0和VC++6.0,有個別程序(主要是數據類型里面的問題)在不同的編譯平臺上有不同的結果,一定要讓學生弄清楚為什么。
3.3仔細批改實驗報告。實驗課結束后,要求學生寫實驗報告,上交之后,詳細了解每個學生的實驗情況,出現的問題,這樣就相當于一個反饋了,以后就有針對性了。
C語言是高校計算機教育的一門非常重要的課程,因此C語言教學是一個非常值得探討的問題。教師應盡一切努力讓學生學好這門課程。
參考文獻:
[1]譚浩強.C程序設計(第二版)[M].北京:清華大學出版社,1999.
[2]謝樂軍.C語言程序設計及應用[M].北京:冶金工業出版社,2008.
[3]夏濤.C語言程序設計[M].北京:北京郵電大學出版社,2007.