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