
摘 要:從C++程序設計課程的自身特點和實際需要出發,提出了在課堂教學中應用實例化教學的方法。實踐證明,在該課程的講授過程中,從各個方面合理地應用實例化教學,能夠激發學生的學習興趣,提高學生的編程能力,收到很好的教學效果。
關鍵詞:C++;實例教學法;面向對象;課堂教學
中圖分類號:G420 文獻標識碼:A
1 引言(Introduction)
C++程序設計課程是各高校計算機專業的重要基礎課程。在整個教學體系中占據非常重要的地位。在眾多的程序設計語言中,C++語言是近幾年廣泛使用的面向對象的程序設計語言,是程序設計的重要工具[1]。而且C++語言與Java語言和C#語言具有很多類似的特點。是學習后兩者的基礎。因此是否能學好該語言直接影響這學生今后的編程能力,因此其教學方法的優劣將會直接影響學生對知識的掌握程度及其該課程今后的發展方向。
筆者根據近幾年在C++程序設計課堂教學中的經驗,深刻體會到實例教學對于該課程的重要性,總結如下僅供大家參考交流。
2 實例教學法(Instance teaching)
實例教學法是一種以實例為基礎的教學法,他把枯燥的課堂知識通過生動的實例向學生講述,教師于教學中扮演著設計者和激勵者的角色,鼓勵學生積極參與討論,較之傳統的教學方法更能提高學生參與課堂教學的氛圍,提高學生的學習興趣[2]。
《C++程序設計》課程是以講解C++語言為基礎,同時向學生傳授面向對象程序設計的思想。它既有理論又有實踐,既講方法又強調動手能力。如果單從理論和概念入手,直接講解類、對象、抽象、封裝、多態等概念,學生在毫無感性知識的情況下,接觸這些概念,理解起來是比較困難的。如果在講解的同時配以合適的實例,讓學生在觀看、模仿和實際操作中理解這些概念,并適時地加以歸納總結,那么學生就能比較容易的接受所學知識,使學習在一種輕松愉快的氛圍中進行。
3 實例教學法在課堂教學中的應用(The application
of instance teaching in classroom teaching)
具體的實例教學法如何應用呢,筆者從七個方面做了思考和研究。
(1)通過實例導入所講知識點
本課程是一門程序設計課,其目的是為了提高編程能力。因此在整個課程的講解過程中,所涉及的程序的講解可以貫穿始終。比如從頭到尾可以設計相同的一個類,但所講解的知識點不同,這個類里面的內容可以不一樣。這樣,就可以利用前面所學的程序,作為新講解的知識點的導入。例如在講了類和對象的基礎知識后,要講構造函數的知識。為了引出構造函數,可以先用前面所講的類和
對象,設計一個可以包含一個初始化成員函數的類。
如圖1所示,成員函數init可以對對象進行初始化,但用戶要顯示的去調用它,而且還要記住它的名字。如果用戶忘記了或者不知道其名字,就無法將對象初始化。能否有一個好記的名字并且能自動調用的函數完成此功能呢,這就引出了構造函數。
(2)通過分析實例程序,講解所學知識和概念
在利用圖1中的程序引出構造函數以后,可以把程序改寫如圖2所示:通過改寫以后就可以通過該實例向學生講解構造函數的性質:沒有返回值類型、函數名與類名相同、當創建對象時自動調用等等。
而且還可以再對該程序做修改,定義多個構造函數,來講解構造函數可以重載等性質。這樣學生在感性的認知中能更好地理解和把握構造函數的特點和使用方法。
(3)實例要具有針對性、簡潔性
由于面向對象程序設計的特點較多:抽象、封裝、多態、繼承等。在講解相關知識時,所選的例子要和即將講解的知識點相關,不要面面俱到,讓學生把握不住重點。如果一個類設計得太全面,反而會適得其反。還是以上例來說明問題,由于本次課是講解構造函數,所以類中的成員就包含了構造函數和兩個數據成員,還有一個顯示用的成員函數display()。這樣能突出所講的知識點,學生容易把握。
(4)通過多種手段講解實例
隨著計算機科技的發展,現在各高校基本都實行多媒體教學。在該課程的講解中,講解實例時,筆者常采用PPT、板書和VC++集成開發環境三種方式并用的方法[4]。
有的實例偏重概念性的東西,適合用板書講解。如講解類和對象的基礎知識時,要聯系現實生活,如設計一個point類,point都有哪些屬性呢?可以邊啟發學生,邊用板書講解。
有的實例,學生需要在慢慢理解的同時,看到程序運行的效果,這種實例適合用VC++開發環境講解,如上例中在主函數main()中并沒用顯示的調用構造函數,它到底是什么適合自動運行的呢?可以通過在開發環境中單步運行的方法讓學生看到程序一步一步的執行過程,當看到運行到使用類創建對象時,程序的流程自動轉到了構造函數的函數體處去執行,同學們也就很容易明白了。
有的實例,利用板書和開發環境講解會比較浪費時間,而為了開拓學生的視野,可以直接用PPT向學生講解。可以把要講的重點知識點標上不同的顏色,以讓學生能夠抓住要講解的重點。
(5)配以課堂練習
在課堂上講解了相應的實例后,為了檢查自己的教學效果和學生的掌握程度。可以配以相應的課堂練習。課堂練習中的編程實例應該和課堂上講過的實例相輔相成,讓學生在做練習的過程中對剛學習的知識進行復習和消化。從而鞏固課堂教學效果。
或者把接下來要講解的知識點設置在課堂練習中,讓學生提前動腦筋思考。培養學生積極思考的習慣,加深所講知識的理解程度。
(6)實驗環節中的實例
C++程序設計是一門實踐性很強的課程。一般來說,實驗學時的設置應該不少于講課學時,這樣學生才能真正的有時間設計自己的程序。在實驗環節中,教師根據課堂上所講解的知識點,布置相應的問題,讓學生自己設計、自己編程、自己調試,從而充分的發揮學生的學習積極性,不斷提高編程能力。在這個環節中一般布置兩個層次的實例:普通實例和高級實例。普通實例是所有學生都要完成和掌握的。而高級實例時為學有余力的同學所布置的,從而激發學生挑戰自己編程能力的欲望,提高學生的學習積極性。
(7)綜合實例
C++程序設計語言把各個知識點分布在了各個章節中,但其實各知識點之間是有著緊密的聯系的,他們是處在一個完整的體系中的。在學習完本課程后,為了對所學知識進行鞏固加深,把本課程的主要脈絡整理出來相當重要,而這種反應課程體系的提綱挈領的總結也可以通過綜合實例來完成。
因此,在課程結束后,根據這門課程的重點和難點,會有5—10個綜合性的編程實例供學生選擇。學生可以按照自己的興趣分成小組,來完成其中的一至兩個綜合性的實例。在這些實例中考察的知識點比較全面,基本包括了該課程的所有知識點。從而對學生的編程能力有一個大的提高和考察。
4 其他教學方法(Other teaching methods)
筆者在講解C++程序設計這門課程時,以實例教學法為主。在課堂教學中也有其他相應的措施提高教學效果。如“溫故而知新”,在課前設置幾個問題,復習上次課講過的內容;問題驅動法,在講解實例的過程中,根據所講知識設置問題,從而激發學生學習的主動性[3];注意知識的系統性,雖然C++程序設計是按照知識點設置章節,逐漸講解的,但其實整個課程的系統性還是很強的,在每講一章時,及時講解本章在整個系統中的地位和作用有利于學生整體把握知識點。
5 結論(Conclusion)
在多年的教學經驗中筆者發現,實例教學能夠激發學生的學習積極性、使學生在輕松愉快的環境中積極主動的參與學習,并能提高學生利用編程分析問題解決問題的能力。實例設計的合理得當能夠很明顯的提高課堂教學效果。
參考文獻(References)
[1] 譚浩強.C++面向對象程序設計[M].北京:清華大學出版社,
2006.
[2] Deitel,等.趙繼東,等,譯.C++大學簡明教程[M].北京:電子工
業出版社,2005.
[3] 馬迪芳,陳旭東,趙宏.面向對象程序設計的研究性教學[J].計
算機教育,2010,21(10):130-134.
[4] 郭瓊,閻莉琦.淺談面向對象程序設計課堂教學方法[J].山西
農業大學學報,2006,26(5):79-81.
作者簡介:
黃晶晶(1980-),女,碩士,講師.研究領域:數據挖掘.
段 波(1979-),男,本科,一級教師.研究領域:信息技術.