摘 要: C語言是高職院校計算機專業的必修課,是學生學習程序設計的入門課程。在《C語言程序設計》教學過程中,教師應抓住C語言重點內容和環節,精心規劃教學;引導學生養成良好的編程風格,利用多種先進的教學技術,培養學生的編程能力和解決實際問題的應用能力;在教學中培養學生的自學能力,鼓勵學生自學C語言前沿的應用技術。
關鍵詞: C語言 教學方法 應用編程能力 自學能力
1?郾引言
《C語言程序設計》是高職計算機類專業開設的首門高級程序設計語言課程。它使用廣泛,表達能力強,目標代碼運行效率高,可移植性好;既具有高級語言的優點,又具有低級語言的許多特點;既可以用來編寫系統軟件,又可以用來編寫應用軟件。目前,在《C語言程序設計》課程教學中,許多教師和學生都認為C語言概念多、規則繁雜、使用靈活、書寫方式多變、容易出錯。教師教學和學生學習都感到困難,增加了教學的難度;而學生抱怨課程內容枯燥乏味,沒有興趣;在解決實際問題編寫應用軟件時往往無從下手,缺乏編程和調試的能力。下面我就C語言的教學談談自己的一些看法和建議。
2.精心規劃教學
有些學生甚至在學完了該課程后仍然無法完整、正確地理解C語言的整體結構和特點。我針對這種情況,在教學課時上,《C語言程序設計》課安排一學期學完。把該課程劃分為兩個學習階段:第一階段《C語言程序設計I》,主要將基礎知識融入案例與任務中進行教學,即基礎階段;第二階段《C語言程序設計II》,主要進行30個學時為期一周的應用程序設計與實現,即應用階段。
基礎階段《C語言程序設計I》的考核,主要考慮對學生動手編程能力的培養,因此考核分成理論和上機兩部分。理論考試為開卷,占總評成績的20%;上機考試主要題型為編程和改錯,占總評成績的30%;平時成績占總評的20%。應用階段《C語言程序設計II》的考核,以面試考核為主,占總評成績的30%,考查學生對項目案例教學的理解,項目案例功能的擴展和改進等方面的情況,以及運用C語言解決實際問題的應用能力。
3.教學伊始引導學生養成良好的程序設計習慣和代碼編寫風格
首先,在C語言教學之初,讓學生閱讀簡單的規范的C語言程序,在學生心中起到“先入為主”的效果;其次是在上課過程中,充分利用現代的教學方式,課件演示和板書都力求以規范的格式書寫程序,告訴學生程序就該這樣寫;平時上機練習,要對學生中代碼書寫出現的不好習慣,及時提出并給出改正的方式方法。總之,要培養學生嚴謹、清晰的代碼編寫風格和良好的程序設計習慣。
4.采用多種教學方法,培養學生的編程能力
4.1循序漸進法。在C語言的教學過程中,教師起非常重要的作用,尤其是在教學中要激發出學生的興趣。大多數學生都是初次接觸C語言,這是一個全新的內容,同時也會有全新的收獲。由于該課程是培養學生程序設計的能力,之前學生幾乎沒有此經驗和能力,要通過教師循序漸進地引導,再加上學生上機的體驗和感受,使其逐步積累程序設計的能力。對于教師給定的題目,教師應該遵循由低到高、由簡入難,有趣并盡可能貼近實際的原則。開始時,教師給予學生的題目都是單項的練習,如簡單的輸入輸出、數據類型、數組編程等。到了C語言學習的后期,可以出一些較復雜并和實際結合的題目。如:在講解二重循環知識點的時候,教師可設計以下由淺入深、由易到難的實例。
(1)打印如下由易到難的圖形
通過上述三個由淺入深的實例,自然就可以總結出打印圖形的規律:把每行前輸出的空格數與行的關系、每行打印“*”的個數與行的關系填入內層循環的終止即可。另外,由于外層循環包含了多條語句,因此必須用把包含在外層循環中的語句用{}括起來。推廣到一般,打印符號的大致代碼形式如下:
for(i=l;i<=行數;i++)
{for(j=1;j<=每行的空格數與行的關系;j++)printf(" ") ;
for(k=1;k<=每行的符號數與行的關系;k++) printf ("符號") ;
printf ("\n") ;
}
(2)通過上述的總結,讓學生自己編寫程序,打印如下復合金字塔圖形
上述程序雖然相對比較簡單,但對于初次接觸雙重循環程序的學生來說還是不易掌握。在教學活動中,教師要通過實例將語法講解透徹,實例的難度要循序漸進,從易而難,使學生在每次的學習過程中都能產生成就感,從而進一步刺激學生的求知欲望,通過教師的主導性來發揮學生學習的積極性、創造性。
4.2案例教學法。在教學的過程中,首先教師拿出一個任務案例展示給學生看。這個案例里面涉及到的C語言知識點。對于已經學過的知識點,教師通過案例來展示,可以使學生鞏固知識點并加深印象;對于沒有學過的地方,就是在其后的課程中講解的重點,并告訴學生,只有認真聽講才能完全理解案例的精彩之處。由于任務案例的引入,使得分散的知識點立刻變成實踐應用,因此學生在課堂上也更容易被教師吸引,能更緊地跟上教師的思路。對于學生來說,他們在案例學習中,不一定能把所學的知識一一總結出來,但是他們見識了C語言是如何處理實際問題的,這對他們提高認識,增加興趣,提高解決實際問題的能力都是很有幫助的。
4.3分組教學法。分組教學體現了學生的主體地位,可以激發學習興趣。根據班級人數和機房布置情況5人—6人分為一組,組長位置坐在中間,水平較好的學生挨著水平較差的學生。分組教學可以實現提優補差。水平較差的學生在遇到問題時可以及時得到幫助,能跟上全班進度,也增強了繼續學習的信心。分組教學可以培養學生自主探究、合作學習的能力。《C語言程序設計》課程是用程序項目的方式把實驗內容布置下去,許多綜合性程序項目要求以小組為單位完成。
4.4任務驅動教學法。為了培養學生的創造思維、獨立分析問題和解決問題的能力,以及實際編程的能力,我們設計短期任務與長期任務結合的上機內容。以一個項目作為長期任務,再按不同功能模塊分解開來,形成一個短期任務。每一章學過之后要求完成一項或幾項編程作業,各章的編程作業不是孤立的,而是相互聯系的,實際上它們都是一個較大型較復雜程序的組成部分。這樣就可以使學生的任務形成一種連貫性,在整個學科的學習過程中始終都有一個總任務的驅動,而學生又在一個又一個短期任務的驅動下,體驗著一次又一次邁向成功的喜悅。例如,以“學生成績管理系統”為課程設計的長期任務,從常用輸入/輸出語句printf和scanf開始,讓學生編寫主函數調用若干個空函數形成一個文本型菜單的雛形:學習常用數據類型后,再編寫一個驗證密碼輸入的函數;學完選擇結構后,要求編寫一個菜單選取函數;學完循環控制和數組后,要求建立班級課程的成績輸入輸出函數;學完結構體類型后,要求使用結構體數組來存儲和處理學生的信息;學習鏈表后,要求利用單鏈表動態管理學生的成績;最后在“文件”這一章,要求利用文件操作完成學生成績管理。當學完整個課程,完成了平時要求的各項編程作業之后,學生就會發現,自己完成的遠不是一個一個零碎的程序段,而是一塊塊制作程序的各個部件,只要通過簡單的程序拼裝,就可以構成一個比較復雜的程序。這也在潛移默化中培養了學生采用各個擊破的方法解決實際問題的意識。最后,學生從整的角度來審視整個程序的設計,并通過上機進行綜合調試,達到提高編程能力的目的。
5.培養學生的自學能力
計算機技術知識更新太快,對于計算機專業的學生來說,在C語言教學中,培養學生的自學能力尤為重要。教師不僅要傳授現有的知識,而且要傳授獲取知識的方法。對于學習能力較強的學生,教師應該鼓勵他們自學,并給予方向性指導,讓他們超前學習,甚至自學C語言前沿應用技術。在實際教學過程中從問題入手,引導學生在尋求問題的解決方案的同時,學會了運用網絡、圖書館等獲取信息的方法,對獲得的信息進行篩選和修改,并進一步理解,最后把其應用到自己要解決的問題中。這一過程,為今后的終身學習打下了基礎。
6.結語
總之,在C語言程序設計的教學過程中,教師應遵循理實一體化教學原則,培養學生的編程能力和利用C語言解決實際問題的應用能力,培養學生的自學能力。在今后教學中我們仍將不斷實踐與探索,進一步改進教學方法,充分調動學生的主觀能動性,以取得更好的教學效果。
參考文獻:
[1]譚浩強.C語言程序設計[M].北京:清華大學出版社,2007.
[2]崔婭萍.高職C語言教學探討與研究[J].中國科教創新導刊,2010,(28).
[3]喬瑞琴.語言教學的實踐和探索[J].山西煤炭管理干部學院學報,2010,(03).
[4]王創偉,湯克明,蔡長安.《C語言程序設計》教學改革方案與實踐[J].現代計算機(專業版),2010,(11).
注:“本文中所涉及到的圖表、公式、注解等請以PDF格式閱讀”