王艷會 鐘誠 秦斌
1中國人民解放軍鎮(zhèn)江船艇學院 江蘇 212003
2江蘇科技大學 江蘇 212003
多年來,很多工作在C++教學一線的教育工作者在教學實踐中就提高課程授課效果、注重專業(yè)素質教育等方面提出了很多好的教學改進方法,使我國高校的計算機教育水平得到了很大程度的提高。然而,當今國內C++課程的教學方法遠非完美。本文就目前國內C++教學的現(xiàn)狀,提出幾點當前C++教學中的不足,并給出若干改進的建議。
對于C++程序設計課程,C++語法和編程思維是教學內容,教學中所使用的具體的C++編譯器和集成開發(fā)環(huán)境(Integrated Development Environment,IDE)是教學工具。教學工具的陳舊必將導致教學內容的陳舊。目前國內高校C++程序設計課程多采用Visual C++ 6.0(VC6.0)。VC6.0是Microsoft公司于1998年推出的可視化集成開發(fā)環(huán)境,至今已有14年的歷史,是一種比較老舊的C++開發(fā)環(huán)境。由于目前C++標準、IDE技術和軟件科學的飛速發(fā)展,VC6.0作為教學和開發(fā)工具有著下列難以彌補的缺陷。
(1) 在易用性方面落后。VC6.0易用性差。與Visual C++.Net 2005相比,VC6.0很多功能的使用很不方便,如斷點的設置、控件的使用以及MFC類的完善程度,等等。筆者在教學中發(fā)現(xiàn),由于VC6.0在使用上的不便和界面的不友好,使學生容易產(chǎn)生實踐中的挫折感和對C++的畏懼心理,在該門課程結束后不愿繼續(xù)使用C++。
(2) 在IDE軟件兼容性方面,VC6.0面臨著越來越嚴重的兼容性問題。VC6.0在Windows XP中可以很好的安裝和運行,但是對于正逐步取代Windows XP的Windows 7以及更新版本,VC6.0有著很多兼容性的問題。隨著Windows XP在軟件市場的退出,VC6.0亦將退出,到時候曾在大學中學習VC6.0的學生將面臨熟悉的IDE無法找到合適的計算機來安裝的問題。因此,VC6.0已經(jīng)不再適合作為教學工具,否則將對學生以后的學習和工作產(chǎn)生不利影響。
有些不切實用和怪異的內容和思想在課程中被反復強調、重點考察。有些內容在當今的軟件開發(fā)中已經(jīng)不常使用,但在C++課堂上卻作為授課重點。如iostream流類以及其中的輸出控制符在可視化開發(fā)工具大行其道的今天已經(jīng)極少使用,卻被作為課堂講授和考試考察的重點內容。有些鉆牛角尖的題目常被用來作為課堂例題和練習題,如“int i=5;bool j=true;求i&&j”之類的題目帶有并非提倡的編程風格。又如自增/自減運算符的問題“int a=3,b=5,c;c=a*b+++b;cout< 多數(shù)學生在課程實驗中沒有得到足夠的鍛煉。實驗環(huán)節(jié)中,實驗題目難度水平單一,學生各自單打獨斗,都不利于學生對于語法知識的鞏固和編程能力的提高。對于計算機類專業(yè)學生而言,編程技能是最為重要的專業(yè)基礎,編程能力的強弱直接關系到后續(xù)專業(yè)課程的學習,編程能力強則后續(xù)課程的學習扎實,且能夠將所學內容付諸實踐,反之則在后續(xù)課程的學習中屢屢遇到實質性的困難,最終僅能學到理論,而無法實現(xiàn)。而實驗環(huán)節(jié)的教學效果直接影響到學生編程能力的強弱。在實驗過程中,實驗題目多為單打獨斗的“個人英雄主義”題目,即每個學生獨自完成的題目。適當比重的個人單獨完成的題目可以鞏固學生理論課所學的語法知識,鍛煉學生的基本程序設計能力,但不利于培養(yǎng)學生的模塊化設計觀念和團隊合作意識,也會使學生在編程風格方面過于隨意。 很多學生的C++程序設計生涯僅維持于C++程序設計課程開設時間內,在后續(xù)課程中,如數(shù)據(jù)庫、操作系統(tǒng)、計算方法等專業(yè)主干課和數(shù)字圖像處理、模式識別等專業(yè)方向課中不再使用。這當中有C#、Java和matlab等使用更加方便的編程語言的影響,也有學生對于自己C++程序設計能力不自信的因素。 上述是目前C++課程授課中普遍存在的問題。這些問題不可避免的影響了學生對C++語言的掌握和程序設計能力的提高。針對上述不足,筆者建議采取下列措施。 目前已有的C++標準有非官方的VC6.0標準、國際標準組織C++標準委員會制定的1998標準、2003標準和新近推出的2011標準。對于VC6.0標準,由于年代久遠,對應的IDE——Visual C++ 6.0已經(jīng)被淘汰,因此可以不向學生介紹;1998標準與2003標準基本沒有太大區(qū)別,且為目前流行的各種主流的C++集成開發(fā)環(huán)境所遵守,可以作為課堂講授的語法依據(jù);2011標準為新近推出,尚無編譯器支持,且與2003標準有較大區(qū)別,為了避免學生在語法學習過程中混淆不清,可不在具體章節(jié)中介紹,僅在最后單獨作為一節(jié)——C++語法展望,向學生簡要提及。 對于集成開發(fā)環(huán)境,推薦使用Microsoft公司的Visual C++.Net 2010或CodeGear公司(前Borland公司子公司)的C++ Builder 2009。這些IDE不僅對C++的較新標準支持較好,而且使用方便。 不糾結于無用的語法細節(jié)和題目。對于基本的語法,務必介紹全面,并采用具體的簡單應用作為例題幫助學生掌握,不使用偏、怪、不符合編程習慣的題目講解語法。對語法的掌握的要求,只需達到會用、能用即可。 從過程控制語句部分開始,著重鍛煉學生的編程思維,對函數(shù)、類等內容的講解不可僅停留在語法層面上,更要讓學生明白為何使用這些方法,讓學生掌握如何使用這些方法,并鍛煉學生使用這些方法創(chuàng)造性的解決問題的能力??梢詫⑸形撮_設的課程中涉及的一些算法,如計算方法中的線性方程組數(shù)值解法、模式識別中的K均值聚類,在不涉及課程理論的前提下作為鍛煉編程思維的題目向學生提供并指導設計思路,讓學生體會C++在實踐中該如何使用、編程思路該如何整理。從根本上說,一個學生的C++課程學的好不好,不在于該生掌握了多少語法,而在于該生能不能將一個實際的問題分解為多個易于使用編程解決的算法模塊,而這正是鍛煉學生編程思維和能力的目標。 C++程序設計課程的直接目的是學習基本的語法和鍛煉編程思維,而最終目的則是使學生能夠使用C++做各方面的軟件產(chǎn)品的研發(fā)。要從事軟件產(chǎn)品的研發(fā),就需要涉及基于對話框的應用程序的編寫。從C++基本語法到基于對話框的應用程序跨度極大。這類直接用于開發(fā)的程序框架和風格與C++課程的教學風格有很大差距,僅靠學生自己摸索有很大難度,但是一但向學生講明其中的聯(lián)系,并對使用方法做簡要介紹,就不僅能夠消除學生對基于對話框的應用程序的陌生感,更能對前面所講授的函數(shù)和類等內容產(chǎn)生難以替代的鞏固作用!這是由于學生在該課程學習過程中難以接觸到C++的實際應用,對指針、函數(shù)和類等關鍵內容的作用并沒有深刻認識,而只有在他們看到真正的C++開發(fā)模式時,才能對這些內容的使用方法和習慣心中有數(shù),在日后的學習中對C++課程所學內容的運用也更為成熟和自信。真實的C++產(chǎn)品開發(fā)環(huán)境對于本科生的重要性,就如同真實的戰(zhàn)場經(jīng)歷對于一個操練已久的新兵的重要性。當然,如果學校開設的后續(xù)課程中有.Net(C++),這部分內容可以不介紹。 對于基于對話框的應用程序框架的介紹,可以采用CodeGear公司的C++ Builder 2007/2009或Microsoft公司的Visual C++ 2005/2008/2010。相比之下,前者較簡單,后者較復雜。如果采用后者,則需要介紹Win32 API函數(shù)和Microsoft MFC。 單一的實驗題目很可能使部分學生因為無法完成而產(chǎn)生挫折感,而這會導致學生對編程喪失興趣和信心,終將導致學生學習不積極和更強的挫折感、失落感,最終形成惡性循環(huán)。對于每個實驗給出多個難度不同的題目供學生選做,不僅使處于不同水平的學生都能得到鍛,而且可以讓學生獲得成就感,增強他們使用編程解決問題的信心。對于編程類的課程,讓學生懷著“人有多大膽,地有多大產(chǎn)”的信心是至關重要的。 另外,對于函數(shù)、類等內容,給出分組合作題目也很重要。初學者往往為自己能夠單獨完成一小段程序而沾沾自喜,對程序的易用性和易讀性并沒有追求,甚至將程序的晦澀、復雜作為自己的成績。而實際上,晦澀、復雜的程序是不能被別人使用的,僅能稱為“垃圾”。通過團隊合作,讓每個學生認識到,自己為整個團隊提供的程序不僅要是可用的程序,更需要是易用、易讀、健康的高質量代碼。這樣更利于學生養(yǎng)成良好的編程習慣。 在后續(xù)開設的能夠使用C++的課程(如操作系統(tǒng)、計算方法、數(shù)字圖像處理等)實驗中,為學生提供完成實驗的基本程序框架,引導學生通過C++程序設計解決這些課程中的問題,進而在C++課程結束后進一步鍛煉學生的C++程序設計能力和思維。 課程考試題型是對學生學習方式的導向。對于C++課程考試,填空和選擇題型側重考察語法,程序設計題不僅考察語法,更考察學生的C++程序設計能力和思維。顯然后者的考察范圍更為廣泛,考察方面更為重要。如果考試卷中的填空題和選擇題過多,將很容易導致學生產(chǎn)生應試心理,重語法、輕能力,這是我們最不愿看到的。因此,考試題中要最大限度降低填空題和選擇題所占的比重,甚至不考這兩種題型。對于程序設計題,為了能夠確切反映學生的真實水平,對同一知識點的考察可以出多道難度不同(當然分值也不同)的題目供學生選做。這樣可以避免考試對學生C++學習方向的誤導。 本文闡述了計算機類專業(yè)C++程序設計課程教學中常見的不足之處,并給出了自己在教學實踐中得出的改進方法,這些方法對于非計算機類專業(yè)的C++教學也具有參考意義。針對目前計算機類本科生動手能力有待提高的現(xiàn)狀,C++程序設計課程的教學方法仍需改進。更新教學工具和內容、重視編程思維的培養(yǎng)、良好編程習慣的養(yǎng)成和貼近實戰(zhàn)的教學模式將是進一步提高該課程教學效果的方向。 [1] 李駿揚,陳漢武.工科專業(yè)C++語言教學目標與方法的探討[J].計算機教育.2007. [2] 何靈敏,許翔,陸慧娟,等.C++教學中編程習慣的養(yǎng)成[J].計算機教育.2011. [3] 陳國良,董榮勝.計算思維與大學計算機基礎教育[J].中國大學教學.2011. [4] 秦斌,王艷會.關于計算機專業(yè)“密碼學”課程教學內容和教學方法的探討[J].計算機教育.2009. [5] 馬洪霞.“C++程序設計”課程教學與創(chuàng)新型人才培養(yǎng)[J].電氣電子教學學報.2011.1.3 實驗的欠缺
1.4 后期鍛煉的缺乏
2 改進的建議
2.1 更新集成開發(fā)環(huán)境
2.2 鍛煉編程思維
2.3 拓展課程內容
2.4 選取不同難度級別的實驗題目
2.5 優(yōu)化考試題型
3 總結