摘要:C++程序設計是計算機專業必修課程,結合自身教學實踐對該課程的教學內容、教學方法、教學手段等進行了探討,以提高課程教學質量和教學效果。
關鍵詞:C++程序設計;面向對象;教學方法
中圖分類號:G642文獻標識碼:A文章編號:1009-3044(2009)33-9278-02
Research on C++ Programming Teaching
LU Wei
(School of Computer Science and Technology, Huaiyin Normal University, Huaian 223300, China)
Abstract: C++ Programming is a required course for computer speciality. With the author's teaching practice, teaching content, teaching method and teaching means of this course are discussed in this paper in order to improve teaching quality and effect.
Key words: C++ programming; object oriented; teaching method
C++程序設計是計算機專業的重要基礎課程,對這門課的理解、掌握和拓展,能夠為提高學生的編程及軟件設計能力打下良好的基礎。這門課程實踐性強,涉及的部分概念非常抽象,對于初學程序設計的學生而言, 具有較大的難度。以下幾點是對C++程序設計教學的探討:
1 合理安排教學內容
C++是多重范型編程語言,同時支持過程形式、面向對象形式、泛型形式、元編程形式的語言。可以將其看作由C、面向對象C++、模板C++、標準模板庫(STL)四種次語言構成。結合課程教學要求,圍繞上述內容如何安排教學至關重要。
以介紹如何使用C++進行面向對象程序設計為主線,突出封裝性、繼承性和多態性等面向對象程序設計的特點,通過概念講解、源代碼分析和編程實踐等方式讓學生逐步掌握面向對象程序設計的方法。學生具備一定的運用C++進行面向對象程序設計的能力后,再引入模板的概念并適當介紹諸如泛型編程、STL等內容,拓寬學生的視野。采用上述組織方式,既兼顧了面向過程程序設計的基本知識,同時突出了面向對象程序設計的核心地位,并且使學生對使用C++進行軟件開發的方式有了較為全面的了解,為其今后深入學習C++相關內容指明方向。
2 強調算法、淡化語法
注重介紹有關算法概念,即突出程序設計而不是語法。在掌握了基本而常用的語法之后,可以根據學習進度和程序設計的需要學習相關語法。學習新的程序設計語言的最佳途徑是編寫程序,不是知道的語法越多,程序編得越好,而是自己動手編程越多,編程水平才越有可能得到提高。突出算法,進而帶動基本語法的學習,可以更加合理地安排學習時間。需要注意的是,這里強調的算法主要是指常用算法,在熟練掌握面向對象程序設計基本概念和方法之前,不宜過多地采用以數據結構課程中復雜算法的C++實現作為例子的方式來介紹面向對象程序設計的有關知識點,那樣會增加學生的學習難度,適得其反。
3 明確教學重點
將面向對象C++的關鍵技術作為重點實施教學,可以達到事半功倍的效果。
封裝、繼承和派生。提倡完善的類對象封裝,不僅封裝數據和對數據的操作,而且封裝資源(尤其是內存)的動態分配與釋放,形成一個完備的子系統。介紹繼承和派生的概念,派生類的定義方式,派生類的構成,類的繼承方式與派生類成員的訪問權限,單繼承下的構造函數與析構函數,什么是多重繼承,多重繼承下的二義性問題,虛基類等內容。
多態性。多態性包括編譯時的多態和運行時的多態。編譯時的多態是由函數的重載和運算符的重載實現的,運行時的多態則是通過繼承關系和虛函數實現的。兩類多態性的目的都是要建立通用的程序。
模板。模板的作用在于定制函數和類。只要將數據類型傳遞給函數模板和類模板,就可生成特定數據類型下的函數和類,實現了數據類型不同、程序邏輯完全相同的代碼的重用,減輕了編程的工作量,并可使大量常用的功能代碼完整而簡潔地納入到標準庫中,極大的提高了C++編程效率。
避免寬泛介紹C++的語法和框架,而是突出實用技術,包括完善的封裝、派生、多態和模板,在構造函數中動態分配資源、在析構函數中釋放資源和異常處理,這些是面向對象的C++程序設計的精髓。
4 靈活運用教學手段
在教學過程中,對不同的教學內容運用不同的教學手段,力爭取得最佳的教學效果。對知識性強的內容采用多媒體,例如以PowerPoint幻燈片展現知識點,以Flash動畫演示程序的動態執行過程,使學生對所學知識的理性認識和感性認識有機的結合起來,有助于學生更好地理解和掌握所學內容。對某些簡單的章節可以在課上提出要點,然后安排學生課外自學。對需要掌握的重點和難點,如指針、繼承、多態等概念以及一些涉及復雜邏輯推理的算法和例題等,可以用板書的形式進行詳細的講解。通過對教學手段的靈活運用達到合理分配學時,難易兼顧的效果。
5 注意知識點的分類比較、歸納總結
C++程序設計課程中很多內容是具有可比性的,在教學過程中要把握這方面的特點,充分挖掘出內容相關的知識點進行分類對比。例如關于重載的學習,重載包括了函數重載和運算符重載。學生對于運算符重載的學習往往存在畏難情緒,在教學過程中如果能夠對這兩種重載的異同點進行詳細的比較,讓學生首先認識到運算符重載僅僅是一種特殊的函數重載形式,進而研究其特殊性,編寫出合理地函數代碼,學習效果必然會有所改善。
C++程序設計課程中涵蓋了許多面向對象的要素,這些要素具有較強的抽象性,在向學生介紹這些知識點的同時,要注意及時歸納總結,指出每種要素適用的場合,避免濫用、錯用。例如學習了類的繼承后,學生在進行程序設計時,往往會頻繁地使用這一機制,甚至于在某些原本應該使用分層機制的場合也使用繼承,為了避免這類情況發生,需要在教學過程中對這些容易誤用的知識點及時進行強調和總結。
6 強化上機實驗環節
C++程序設計是一門實踐性很強的課程,上機也是整個教學的重要組成部分,人們學習程序設計語言的最終目的也正是為了編寫程序和開發軟件,因此必須抓好實驗教學環節。
在實驗教學大綱的指導下,根據所學知識點選擇有代表性的、綜合的問題讓學生進行編程、調試。以往上機實驗過程中,學生常常僅限于將理論教材和實驗教材中的例題原樣輸入計算機,運行并驗證結果。這一過程可以在一定程度上加深對所學知識點的理解,但沒有絲毫編程創新可言。可以布置與所學知識點相關的上機題,如編寫一個C++的類,在其中添加一些成員函數,然后提供給學生完整的類和需添加的成員函數的聲明,以及檢測它的主函數代碼,同時給出需添加的成員函數的思路或提示,僅讓學生編寫需添加的成員函數,在每次實驗結束時,進行驗收。這樣既降低了難度又突出了重點,便于學生調通程序,同時提高了學生的信心和學習的效率。
注重培養學生調試程序的能力。對于簡單問題,直接編寫出正確的代碼是完全可能的,但是大多數問題的解決方案往往都是比較復雜的,其實現代碼需要不斷修改完善,此時調試程序的能力是至關重要的。上機輔導過程中,主要指導學生怎樣跟蹤程序的運行,怎樣設置被監視的變量,怎樣設置斷點,怎樣單步執行,怎樣使用Debug工具。授人以魚不如授人以漁,幫學生調通一個程序,不如教會學生怎樣去調試。應注重引導學生自己去調試具體代碼,通過大量實踐逐步提高其調試程序的能力。
7 結束語
C++程序設計課程的教學涉及到諸多方面的因素,這就要求我們在教學中針對具體情況及時加以調整,激發學生的學習興趣,以達到較好的教學效果。
參考文獻:
[1] 吳乃陵, 況迎輝. C++程序設計[M].2版.北京:高等教育出版社,2006.
[2] 賈振華, 李瑛. 《C++程序設計》課程教學方法探析[J].華北航天工業學院學報,2006,16(4):47-49.