摘要:探討了C語言程序設計課程的教學方法。從激發學生C語言學習興趣、C語言教學方式和手段、上機實踐及課程設計等方面闡述了提高C語言教學質量的途徑。認為應重點培養學生的編程能力,為其后續課程的學習和今后的工作打下良好的基礎。實踐表明,這些方法對提高教學質量有明顯的作用。
關鍵詞:C語言;教學質量;教學方法;編程能力培養
0 引言
“C語言程序設計”課程是目前很多高校計算機及相關專業重要的專業基礎課。C語言的教學目標不只是讓學生掌握C語言的語法規則,重點在于培養學生用C語言進行程序設計的能力。該課程不僅為后續課程(如:數據結構、操作系統等)的學習打基礎,也為工程軟件開發打基礎。如何在有限的學時里,使對計算機編程一無所知的大學一年級學生掌握C語言的精髓,并具有一定的編程能力,是大家非常關心的問題。作者從C語言的重要性、C語言的學習方法、課堂教學方式和手段、上機實驗等方面闡述提高C語言教學質量的方法,供大家參考。
1 上好第一堂課
如何上好第一堂C語言程序設計課是至關重要的。學生以前從來都沒有接觸過C語言,既有好奇,也有畏懼,所以第一堂課的成功與否可以說直接影響到學生學習對這門課的興趣和積極主動性。作者將第一堂課的教學設計如下:
(1)以游戲作展示,激發興趣
向學生展示用幻燈片做的許多游戲畫面,包括從80年代玩的搖桿游戲到如今的電腦游戲,然后問學生想不想自己做這樣的游戲,告訴他們玩自己制作的游戲會是一種什么樣的感覺,學生的注意力就一下子被吸引過來了。接著給他們演示用C語言編的小游戲——走迷宮,以及在黑色屏幕上顯示移動的笑臉的程序,然后向他們展示它的源代碼,學生們注意到有的源代碼竟是不長的幾行,這時有些學生已經有些“躍躍欲試”了,恨不得立刻學好C語言。學生的興趣被激發起來了,目的也就達到了。
(2)從就業地位展示C語言的重要性
向學生展示知名企業,如華為、惠普、IBM等大公司招聘C語言編程人員的就業信息及畢業生從事C編程工作的收入、工作崗位等學生十分關注的重要信息,使學生明確所學知識與社會的關系,使學生深深體會到學以致用的真諦。
(3)強調C語言對后續課程學習的重要性
告訴學生C語言是他們今后學好后繼課程,如數據結構,C++、JAVA等的基礎,使學生明確C語言與自己專業知識體系的關系。所謂“以不變應萬變”,計算機更新很快,程序設計語言更新更快,但如果真正掌握了程序設計的思想,具備了真正解決實際問題的能力,語言更新再快,可程序設計的本質不會變,從而讓學生認識到學習C語言的重要性。
(4)消除對C語言的偏見
針對一些學生認為“學C語言浪費時間,又不實用,還不如直接學C++”等想法,講清C與C++的關系,強調C++是C的“超集”,在C++里每一處都可以看到C的影子,沒有C的支持,C++只能是無本之木、無源之水。一般情況下,C++編程方式編寫的程序源代碼量小,但編譯后的代碼量較大,運行的速度略低,不過開發時的工作量和工作難度較小;而C編程方式編寫的源代碼量較大,但可執行的效率高。如一些對速度要求高,尤其是對硬件操作較多的程序,大多數還是用C編程方式開發的。
(5)C語言的學習方法
向學生講授C語言的學習方法。以自身經歷為例,告訴學生C語言如何學習,如何聽課,如何動手實踐,并明確告訴他們“C語言是一門實踐性很強的學科,不是看會的,也不是聽會的,而是親自動手實踐練會的”,高度強調實踐的重要性。
(6)C語言的編譯環境
向學生介紹C語言的編譯環境,熟悉C語言源程序到可執行文件的整個操作流程,舉幾個簡單的小程序演示給他們看,并逐一講解,從這些簡單的小程序開始,由淺入深,循序漸進,讓學生感覺到學生編程語言的作用,體會到程序設計并不是一件很難的事情,從而克服學習C語言的恐懼感。
(7)C語言課程的考核
最后,向學生說明C語言課程的課程要求和考核方法,強調上機實踐在考核中的地位,對學生的自主學習進行督促。
2 采用多種教育手段相結合的講授方法
傳統的教育采用板書式的教學方法,該方法互動性好,老師與學生在教與學的過程中,可以很好地溝通,保持教與學的步調一致。但該方法也存在不足:板書時間長、教學重點難點不易突出、不能充分利用網上資源、信息量小、重復性差、教案攜帶不便。多媒體教學方法可以很好地克服板書式教學的缺點,但交互性差,不利于因材施教。因此,我采用了多媒體教學與板書式教學相結合的方法。在講授基本知識如數據類型、運算符與表達式時,因信息量大,知識點比較零碎,采用多媒體的教學方法可以達到很好的效果;而在講順序、選擇、循環、函數的程序設計時,因學生剛開始接觸程序設計,需要很好溝通,所以在講解簡單的例子時,采用了板書式教學方法。
3 改變理論課教學方法
3.1以程序設計方法為主線,積極推行案例教學
隨著軟件的發展,今后計算機專業將更偏重培養學生掌握程序設計的高超能力。所以,有必要淡化語法教學主線的教學方法,大膽吸收國外計算機課程教學的優點,積極推行案例教學,將復雜枯燥的語法知識分解到每個生動、有趣、實用的程序實例中,在教學過程中以程序設計為主線進行教學,重點介紹程序設計方法和思路,在分析程序和程序設計中讓學生逐步熟悉語法和應用語句,并把軟件工程學的思想貫穿于算法分析和程序設計的過程中。
3.2因材施教,培養編程能力為主
由于有許多學生數學基礎較差,邏輯思維能力不強,而且入學時幾乎完全沒有程序設計基礎,對于程序設計這類要求學生具有很強獨立分析和解決問題能力的課程極不適應,這些無疑都給C語言教學帶來極大困難。為此,除了加強學生在計算機基礎能力的訓練和在數學等相關課程的學習要求外,對繁雜的教材內容大膽取舍,對那些在實際編程中很少用到的語法語句和其他過分深奧的程序示例,如格式化輸入輸出函數的繁雜格式、漢諾塔問題的求解、純數學性質問題的編程、多級指針的使用等,不講或只作介紹,而對那些常用的或很實用的內容,如累加、累乘、查找、排序等,進行集中講解,并通過平時編程作業等加以鞏固提高。這樣,學生雖然少學了一些太深太繁且極少用到的書本知識,卻可以收到降低學習難度、增加學習信心,提高學習興趣和提高編程能力的良好學習效果。
3.3把函數和指針的講授適當提前
函數是結構化程序設計的基石,指針是C語言的靈魂,它們也是后續課程數據結構的重要基礎。由于它們本身有一定難度,而傳統的C語言程序設計教學把它們放在數組后面講授,這樣學生接觸的時間短,不利于對其充分消化吸收。我們將指針的概念在講解順序結構的scanf時引出,并將它同普通變量進行比較;將函數的基本概念和傳值調用提到數組之前講授,函數的傳址調用則與數組結合講授,并要求學生的作業、實驗都必須用到函數調用。通過這種方式,強化了學生結構化程序設計的思維方式,加深了對函數、指針的理解。
4 重視實踐教學環節,提高學生實際編程能力
4.1提高學生自主調試程序的能力
C語言程序設計的編譯環境是VC++6,0,我們通過實驗向學生反復講解如何在VC中用調試工具進行程序的調試,包括變量跟蹤觀察,程序的單步、多步跟蹤,堆棧跟蹤觀察等,要求每一個學生認識到調試工具的意義和重要性,掌握調試工具的使用方法。當學生的程序出現問題時,更多的是學生通過調試工具自己找出錯誤,而不是教師指導調試過程,“授之以魚,不如授之以漁”,通過這種方式讓學生完成動手、動腦的能力訓練,加強了綜合素質的培養。
4.2精心編制實驗課內容,提高實驗質量
教師設計實驗課內容時,根據各個不同教學階段,不同的教學內容,精心設計相應的實驗內容,并向學生提出具有階段特點的作業和編程要求。例如:第一階段采用先給出程序,后解釋,最后要求模仿編程,增強學生學習的信心,消除畏難心理;第二階段,采取講授,作業編程,實踐驗證,要求學生獨立完成程序設計和調試;第三階段盡量采用“任務型”試驗教學途徑,使學生通過完成特定的任務來學習新知識鞏固舊知識,更讓學生從完成任務中找到快樂,樹立信心。
4.3認真安排課程設計,提高綜合應用能力
C程序課程設計的目的是讓學生綜合應用所學知識解決實際問題,提高學生的綜合應用能力和創新能力。課程設計程序規模較大,側重C程序開發全過程的初步訓練。在實施課程設計時,教師列出若干個項目,由學生按組參與,分工合作,以期進一步鍛煉學生的動手能力,培養學生分析問題、解決問題、研究和探索問題的能力和團隊協作精神。具體做法是:選題、分組、上機、寫報告、答辯。課程設計使學生經歷文獻查詢、程序模塊設計、程序流程制訂、源代碼編制、上機調試、實驗數據的整理與分析及論文撰寫等一系列的訓練,開闊了他們的視野,擴大了知識面,培養了動手創新能力,是提高教學質量的一條好途徑。
5 結束語
以上探討了提高C語言教學質量的方法,強調在教學中以增強學生興趣,提高學生的編程能力為中心,讓學生充分認識該課程的重要作用,掌握正確的學習方法,提高理論教學的效率和質量,提高學生的動手實踐能力。實踐表明,這些方法使學生編程能力、上機調試能力得以明顯提高,編程習慣明顯改善,有效地促進了教學質量的提高。