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