摘要針對高職院校C語言教學中存在的問題,從實際教學出發,從理論教學、實踐教學等幾個方面針對C語言教學中存在的問題進行了分析,就如何激發學生的學生興趣,提高動手能力,培養編程思想等提出了自己的看法,并在實際教學中收到了良好的效果。
關鍵詞 C語言 教學方法 學習興趣 實踐教學
中圖分類號:G642文獻標識碼:A
C Programming Teaching Experience
MENG Qingwei
(Dalian Ocean University Vocational College, Dalian, Liaoning 116300)
AbstractC for Vocational problems in language teaching, starting from the actual teaching, from the theoretical teaching, practical teaching aspects of language teaching for C problems were analyzed, the students on how to stimulate students interest and improve the hands-on ability to develop programming ideas and put forward their views, and in the actual teaching has received good results.
Key wordsC language; teaching methods; learning interest; practice teaching
0 引言
在高職院校C語言是計算機專業的一門專業基礎課,同時也是相關專業必修的一門課程,學好C語言對后續課程的學習起到了至關重要的作用。但由于C語言牽涉的概念比較復雜,規則較多,使用靈活等特點,很多學生在學習過程中會感到內容枯燥、難以消化、入門困難。尤其是對于沒有學過任何程序設計語言的初學者來說,一時難以掌握設計思想,只靠死記硬背,結果是學完之后,仍然看不懂、寫不出程序。如何改變這種狀況,筆者通過多年的C語言學習與教學,總結了一些方法和手段幫助學生學習和理解,使之對編寫程序產生興趣。從不理解到理解,到自己動手調試,再到能獨立的設計程序,達到教學目標的要求,取得了良好的教學效果。
1 啟發式教學、激發學生學習興趣
興趣是學習的基礎,如何讓學生由被動的接受變為主動的學習,教師要在教學方法與手段上多下功夫。加強對學生的引導,由易到難,由淺到深。可通過許多具體有趣的實例,如“兔子問題”、“水仙花數”等來培養學生的學習興趣。在上第一節課的時候,我們可以邊講解邊演示,學生能夠直觀的看到在TC下是如何編輯、如何運行以及運行之后的結果是什么樣的。以往的教學我們都是一半在多媒體講授理論知識,一半在機房學生自行練習,這樣一來講和練沒有很好的結合起來,在理論學習的時候學生不知道C語言是什么,運行環境是什么樣的,很茫然,在上機課的時候老師往往還需要重新講解和演示。此外,經常向學生提出問題,讓他們自己去實踐找出答案對學習興趣的培養是很有效果的。比如我們在講數據類型的時候,在定義數據類型的時候進行初始化,int a=b=c=3這是不對的,但是如果int a,b,c;a=b=c=3對不對?再或者譚浩強第三版的例子:
#include
Void main()
{char c;c=getchar();putchar(c);} 當輸入字符a,輸出結果也為a。
可以讓同學思考如果輸入為65,輸出結果?有一部分同學會說結果是A或65。老師可以不把答案告訴學生,讓他們自己去上機實踐得出答案。帶著問題去教學、去學習,進行啟發式教學,培養學生的獨立思考能力,不僅會激起學生的學習興趣,往往會收到意想不到的效果。
2 因地制宜制定教學目標
在高職院校,不但計算機專業的學生要學習C語言,機、電、數控等專業也要學習,那么對于不同專業的學生,學習的內容和深度是不同的,要因地制宜不能一刀切。我們應該根據學生情況的不同有針對性選擇教材并制定相應的教學目標。對于計算機專業的學生我們往往選擇譚浩強主編的清華大學出版社出版的這本教材,講解很系統、全面,而且設計了大量的課后習題。對于非計算機專業的學生,由于學時少,應該選擇一些例子簡單,邊講例子邊講語法的教材,即涵蓋了所有的知識點,而且學生也不會覺得枯燥難懂。
3 教學手段多樣化
傳統的黑板式教學故然有它的優點,但是單一的教學模式已經跟不上現代教育的步伐。隨著計算機技術的發展,多媒體教學已經悄悄的走進了課堂,成為現代教學模式中不可或缺的一部分,它的作用越來越突顯。老師可以根據所講的內容利用各類計算機軟件,如采用power point或authorware來制作多媒體課件來展示知識結構,如可能的話還可以配以flash動畫來動態的展示執行過程。程序設計是一門實踐性比較強的課程,如果在授課過程中利用多媒體插入一些程序的編譯演示,使感性認識和理性認識能有機的結合起來,將有助于學生更好地理解和掌握所學的內容。但是也不能過分的依賴課件,人的注意力集中在一件事物上的時間是有限的,老師始終的坐在講臺前,學生的眼睛始終對著屏幕,半節課下來就會產生疲勞感和厭煩感,這就需要老師適時的加以調節,把學生的注意力在轉移到黑板上。這樣學生始終跟著老師走,聽課狀態是最佳的,收到的效果也是最佳的。
4 重視實踐,注重細節
C語言理論性很強,概念比較復雜,規則也繁多,容易出錯。如不加強上機練習,一些細小的問題如關鍵字、變量、分隔符等常因重視不夠,印象不深,造成程序設計時一旦出現編譯錯誤而無法調試或調試困難的情況。
因此,對于計算機專業的學生我們通常安排一半的多媒體教學一半的上機實訓。上機輔導課老師布置上機內容,學生自由練習。每次下課之前都應該就本次課學生出現的問題做一總結,加深印象。如我們在講循環結構的時候,while(),Do…while()循環格式如下:
While(條件表達式)do
{{
…………
}While(條件表達式);
While()后面沒有分號,而do while();后面有分號,往往這些細微的地方學生在看書的時候不夠仔細,出現問題了而不知道問題出在哪。這就需要老師特別的加以強調,這樣學生在上機的時候就會特別的注意。計算機重在動手,紙上談兵是沒有實際意義的。調試程序的能力是學生在不斷的實踐中逐步提升的,而且是否具有這種能力是我們評價教學目標是否達到的一個重要的尺度。
5 善于歸納,總結方法
從事C語言的學習和教學有幾年,對于C語言中指針的學習自己總結了一些方法,可以更好的幫助學生學習和理解。再拿譚浩強主編的《C程序設計》第三版,245頁例10.10為例。
例10.10輸出二維數組有關的值
#include
#define FORMAT “%d,%d\”
Void main()
{int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23}
Printf(FORMAT,a,*a);
Printf(FORMAT,a[0],*(a+0));
Printf(FORMAT,a[0],a[0][0]);
Printf(FORMAT,a[1],a+1);
Printf(FORMAT,a[1][0],*(a+1)+0);
Printf(FORMAT,a[2],*(a+2));
Printf(FORMAT,a[2],a+2);
Printf(FORMAT,a[1][0],*(*(a+1)+0));}
對于這道題主要是考查學生對行指針和列指針的掌握情況。我們可以這樣理解,二維數組的組成單元是一維數組,一維數組的組成單元是元素,指向一個一維數組就是一個行指針,如果指向的是一個元素就是列指針。如果我們給它們劃分級別的話:二維,一維,元素,值等級依次降低。*降一個級別,升一個級別。上題第一個printf語句a為二維數組名,組成單元是一組數組所以是一個行指針,指向第0行,*a降一個級別就變為列指針指向0行0列元素。在比如a[2]是一個一維數組名,一維數組組成單元是元素,所以a[2]是指向2行0列元素,是個列指針。而a[2]加個升一個級別就變成了行指針,指向第2行。這樣講學生容易理解和接受,記憶也深刻,同時也啟發學生善于總結、對比、摸索、發現規律找竅門。
6 設置命題,綜合訓練
本學期期末,在結束課堂教學之后,對于計算機系的同學我們往往會有1~2周的課程設計時間,經過本環節的練習可以讓學習把學過的知識融會貫通,整體水平在實踐中得到進一步的提升。老師在設置命題的時候即要結合教材內容,又要有一定的理論深度,并且能夠聯系實際,讓學生切實的感受到程序設計的實用性。比如說讓學生做一個學生成績管理系統等等。知識不是孤立的,應該把知識貫穿起來形成知識鏈,構成一個知識體系,這樣才能越學越活,書越學越薄也就是這個道理。
7 結束語
教學效果的好與差涉及到諸多方面的因素,需要我們在教學中不斷的總結和改進。讓學生對枯燥的程序設計產生興趣,由被動的學習變成主動的學習,掌握程序設計的思想和方法,為后續課程的學習打下堅實的基礎。只有這樣才能達到我們教學的真正目的。
參考文獻
[1]譚浩強.C程序設計(第三版).北京:清華大學出版社,2005.
[2]譚浩強.C程序設計題解與上機指導(第三版).北京:清華大學出版社,2005.