謝 晉
(湖北理工學(xué)院 計(jì)算機(jī)學(xué)院,湖北 黃石435003)
面向?qū)ο蟪绦蛟O(shè)計(jì)是現(xiàn)階段程序設(shè)計(jì)的主流技術(shù)。C++面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言也是近年來(lái)眾多領(lǐng)域廣泛應(yīng)用的一種計(jì)算機(jī)語(yǔ)言。它在C語(yǔ)言的基礎(chǔ)上擴(kuò)充了面向?qū)ο髾C(jī)制而形成的一種面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言。與其他程序設(shè)計(jì)語(yǔ)言相比,C++語(yǔ)言簡(jiǎn)潔、緊湊,功能豐富,表達(dá)能力強(qiáng),使用靈活方便,目標(biāo)程序效率高,可移植性好,適合編寫(xiě)各種軟件,尤其是系統(tǒng)軟件。
《C++面向?qū)ο蟪绦蛟O(shè)計(jì)》是計(jì)算機(jī)專(zhuān)業(yè)教學(xué)體系中的一門(mén)重要主干課程。它不僅是一門(mén)程序設(shè)計(jì)課程,而且是許多專(zhuān)業(yè)課程的重要基礎(chǔ),更是這些專(zhuān)業(yè)開(kāi)展計(jì)算機(jī)研究、應(yīng)用和綜合運(yùn)用本專(zhuān)業(yè)知識(shí)的重要表達(dá)工具和開(kāi)發(fā)工具。
我院給大一學(xué)生上學(xué)期開(kāi)設(shè)C語(yǔ)言程序設(shè)計(jì),下學(xué)期開(kāi)設(shè)C++面向?qū)ο蟪绦蛟O(shè)計(jì),這兩門(mén)課程有前后銜接關(guān)系。由于有些學(xué)生一開(kāi)始沒(méi)打下堅(jiān)實(shí)的C語(yǔ)言基礎(chǔ),特別是對(duì)自定義數(shù)據(jù)類(lèi)型、指針、鏈表等較難的內(nèi)容了解不夠深入。學(xué)生在學(xué)習(xí)C++時(shí),容易受C語(yǔ)言面向過(guò)程編程模式的影響,思維還沒(méi)完全轉(zhuǎn)變到面向?qū)ο缶幊棠J健T诖嘶A(chǔ)上學(xué)習(xí)C++知識(shí),會(huì)造成理解上的困難。
C++面向?qū)ο蟪绦蛟O(shè)計(jì)課程中的兩個(gè)主要概念是“類(lèi)”和“對(duì)象”,需要學(xué)生掌握的基本技能之一就是按照對(duì)象的特征進(jìn)行數(shù)據(jù)抽象和功能抽象,而學(xué)生的思維停留在面向過(guò)程的程序設(shè)計(jì),對(duì)編程中對(duì)象和類(lèi)的抽象,對(duì)象和類(lèi)的關(guān)系,理解不透徹。
實(shí)驗(yàn)課上人數(shù)很多,平均每個(gè)班40多個(gè)學(xué)生。教師在短短的90分鐘內(nèi),不可能對(duì)一些同學(xué)的問(wèn)題及時(shí)給予答復(fù)并且對(duì)每位學(xué)生進(jìn)行實(shí)驗(yàn)考核。主動(dòng)學(xué)習(xí)能力強(qiáng)的學(xué)生有獨(dú)立解決問(wèn)題的能力,這些學(xué)生相互交流或者問(wèn)教師能解決實(shí)驗(yàn)中的疑惑。自主學(xué)習(xí)能力差的學(xué)生不能及時(shí)解決問(wèn)題,又不是每個(gè)時(shí)候都能得到教師幫助,實(shí)驗(yàn)做的拖拖拉拉,最后就會(huì)導(dǎo)致實(shí)驗(yàn)報(bào)告以拷貝的方式完成。
課程學(xué)習(xí)完,絕大部分學(xué)生只會(huì)做書(shū)本和試卷中的練習(xí)題,解決實(shí)際問(wèn)題的能力欠佳。實(shí)踐鍛煉的學(xué)時(shí)比較少,還不能動(dòng)手編制較復(fù)雜的程序,難以掌握編程語(yǔ)言的實(shí)際應(yīng)用。
明確學(xué)習(xí)C++面向?qū)ο蟪绦蛟O(shè)計(jì)的目的和編程模式。注重算法和面向?qū)ο蟪绦蛟O(shè)計(jì)方法和技術(shù)。在設(shè)計(jì)算法中培養(yǎng)學(xué)生的獨(dú)立思考和創(chuàng)新能力,在面向?qū)ο蟮某绦蛟O(shè)計(jì)過(guò)程中體會(huì)面向?qū)ο蟮木幊趟枷?。為了掌握這個(gè)教學(xué)方向,第一次課特別關(guān)鍵。在第一次課中,需要把面向?qū)ο缶幊棠J剑闯绦?對(duì)象+消息)以及類(lèi)和對(duì)象的概念,類(lèi)和對(duì)象的關(guān)系講清楚。第一次課傳授好面向?qū)ο缶幊趟季S模式和學(xué)習(xí)目的,有了這個(gè)鋪墊,后面的課程內(nèi)容就好開(kāi)展。
給學(xué)生選一本結(jié)構(gòu)清晰、可讀性強(qiáng)的教材是不可或缺的。在此前提下,還可以挑選一些技術(shù)書(shū)籍,給學(xué)生補(bǔ)充課本教材之外的實(shí)際技能知識(shí)。在網(wǎng)絡(luò)技術(shù)飛快發(fā)展的時(shí)代,互聯(lián)網(wǎng)提供了很好的學(xué)習(xí)平臺(tái),學(xué)生可以在網(wǎng)上查閱C++編程方面的學(xué)習(xí)資料,還可以觀看下載教學(xué)視頻,在相關(guān)網(wǎng)站論壇博客上相互交流等。
課程教學(xué)強(qiáng)調(diào)算法,突出程序設(shè)計(jì)的方法和技術(shù),注重學(xué)生的邏輯思維訓(xùn)練和程序設(shè)計(jì)能力的提高,放棄以語(yǔ)法講授為主的傳統(tǒng)方法。整個(gè)教學(xué)過(guò)程中直接講授面向?qū)ο蟪绦蛟O(shè)計(jì)方法。教師把握好這個(gè)主調(diào),將教材里的主要知識(shí)點(diǎn)進(jìn)行抽取總結(jié),對(duì)每個(gè)章節(jié)里的知識(shí)點(diǎn)合理運(yùn)用,解決實(shí)際問(wèn)題。在用C++程序解決問(wèn)題時(shí),突出面向?qū)ο蟮木幊棠J?,設(shè)計(jì)一些關(guān)鍵問(wèn)題,讓學(xué)生參與討論。通過(guò)問(wèn)題的討論,加強(qiáng)學(xué)生抽象邏輯思維能力訓(xùn)練。
與傳統(tǒng)的板書(shū)教學(xué)相比,多媒體教學(xué)形象生動(dòng)、圖文并茂、信息量大、交互性好,對(duì)課程中難以理解的抽象內(nèi)容,可以直觀展示,起到事半功倍的效果。并不是一味強(qiáng)調(diào)用多媒體教學(xué)。傳統(tǒng)的板書(shū)教學(xué)可以為多媒體教學(xué)作輔助手段。例如,課堂里講的重難點(diǎn)知識(shí)點(diǎn)以及要注意歸納性的語(yǔ)句都可以在黑板板書(shū)。學(xué)生在瀏覽ppt文件的同時(shí),不會(huì)鉆究于課堂細(xì)微末節(jié)的知識(shí),而忘了整個(gè)課堂知識(shí)點(diǎn)框架結(jié)構(gòu)和學(xué)習(xí)目的。
在C++面向?qū)ο蟪绦蛟O(shè)計(jì)課程中,一些抽象的概念用生活中的現(xiàn)象做比喻,方便學(xué)生理解。類(lèi)和對(duì)象的概念與它們之間的關(guān)系,可以用生活中磨具與產(chǎn)品比喻類(lèi)與對(duì)象。子類(lèi)繼承父類(lèi)時(shí),不同的繼承方式也可以用現(xiàn)實(shí)中類(lèi)似的事例比喻。
運(yùn)算符函數(shù)的重載可以提出問(wèn)題進(jìn)行啟發(fā)教學(xué)。例如,編寫(xiě)程序,兩個(gè)整數(shù)相加系統(tǒng)自動(dòng)完成運(yùn)算,如果程序里添加復(fù)數(shù)類(lèi)的兩個(gè)具體對(duì)象相加系統(tǒng)不能自動(dòng)完成。通過(guò)這個(gè)問(wèn)題啟發(fā)學(xué)生,C++程序中對(duì)基本類(lèi)型數(shù)據(jù)的處理和用戶定義抽象類(lèi)的對(duì)象的處理是不同的。強(qiáng)調(diào)面向?qū)ο笈c面向過(guò)程的區(qū)別。
繼承與派生的知識(shí),函數(shù)模板與類(lèi)模板可以用任務(wù)驅(qū)動(dòng)法教學(xué)。給出問(wèn)題,師生共同解決,加深面向?qū)ο筌浖目蓴U(kuò)充性和可重用性印象。
在C++程序設(shè)計(jì)教學(xué)中,針對(duì)不同的知識(shí)點(diǎn)采用合理的教學(xué)方法,能很好的提高課堂教學(xué)效果。
為保證實(shí)驗(yàn)效果,教師應(yīng)精心設(shè)計(jì)每一次實(shí)驗(yàn)內(nèi)容。學(xué)生每一次實(shí)驗(yàn)都有明確的實(shí)驗(yàn)?zāi)康模看螌?shí)驗(yàn)內(nèi)容提前給學(xué)生,要求提前預(yù)習(xí),認(rèn)真思考,將想好的思路用C++代碼寫(xiě)入電子文檔。實(shí)驗(yàn)課時(shí),學(xué)生帶著預(yù)習(xí)后寫(xiě)的代碼上機(jī)編譯運(yùn)行。學(xué)生在編譯鏈接程序過(guò)程中出現(xiàn)錯(cuò)誤,教師要教學(xué)生調(diào)試程序。實(shí)驗(yàn)課結(jié)束,學(xué)生必須及時(shí)上交規(guī)范的實(shí)驗(yàn)報(bào)告電子檔,其中包括程序的源代碼、程序輸出結(jié)果截圖以及實(shí)驗(yàn)總結(jié)。教師可以帶著學(xué)習(xí)能力強(qiáng),實(shí)驗(yàn)報(bào)告做完的學(xué)生協(xié)助教師做實(shí)驗(yàn)指導(dǎo)工作。不同學(xué)生編程思路和不同的編譯問(wèn)題,反過(guò)來(lái)更能鍛煉助教學(xué)生的實(shí)踐能力,一舉兩得。
為加強(qiáng)實(shí)驗(yàn)效果,實(shí)驗(yàn)課上教師不能只講不練。教師應(yīng)盡量講解決問(wèn)題的思路或者解題需要注意的問(wèn)題提出,僅供學(xué)生參考。每個(gè)實(shí)驗(yàn)有幾個(gè)題目,每個(gè)學(xué)生解題方法和代碼都有不同。在實(shí)驗(yàn)課最后,教師可以針對(duì)每個(gè)題目,選幾個(gè)有代表性的代碼給全班同學(xué)學(xué)習(xí)分享交流,拓寬編程思維。
針對(duì)我院《C++面向?qū)ο蟪绦蛟O(shè)計(jì)》教學(xué)中存在的問(wèn)題,本文進(jìn)行深入分析和思考,對(duì)提出的教學(xué)方式改革方案在我校近兩年的本科學(xué)生進(jìn)行了實(shí)施,效果良好,較好的激發(fā)了學(xué)生的學(xué)習(xí)興趣,調(diào)動(dòng)了學(xué)生的學(xué)習(xí)積極性,增強(qiáng)了學(xué)生的學(xué)習(xí)自信心。隨著語(yǔ)言的發(fā)展,C++面向?qū)ο蟪绦蛟O(shè)計(jì)教學(xué)還會(huì)出現(xiàn)許多新的問(wèn)題和矛盾。在今后的C++教學(xué)實(shí)踐中,教師還應(yīng)根據(jù)實(shí)際情況不斷調(diào)整教學(xué)思路,改進(jìn)教學(xué)方式,提高教學(xué)效果。
[1]王磊,蔡紹峰.C++課程在應(yīng)用型本科院校中的新型教學(xué)模式[J].赤峰學(xué)院學(xué)報(bào),2013(2).
[2]陳元惠.“C++程序設(shè)計(jì)”教學(xué)方法的研究與實(shí)踐[J].牡丹江大學(xué)學(xué)報(bào),2008(5).
[3]劉波,沈岳,曾瑩.高校計(jì)算機(jī)項(xiàng)目驅(qū)動(dòng)式教學(xué)模式探索[J].計(jì)算機(jī)教育,2011(2).
[4]譚浩強(qiáng).C++面向?qū)ο蟪绦蛟O(shè)計(jì)[M].北京:清華大學(xué)出版社,2006.
[5]劉建華.計(jì)算機(jī)語(yǔ)言類(lèi)課程教學(xué)模式初探[J].高教論壇,2005(1).