摘要:C++編程是高職院校計(jì)算機(jī)專業(yè)的一門必修課,高職院校計(jì)算機(jī)專業(yè)培養(yǎng)的是高水平實(shí)用型計(jì)算機(jī)技術(shù)人才而區(qū)別于本科院校計(jì)算機(jī)專業(yè)培養(yǎng)計(jì)算機(jī)研究型人才,針對(duì)目前高職院校C++教學(xué)中存在的問(wèn)題,本文從教材、教師、編程習(xí)慣和考試的形式四個(gè)方面進(jìn)行探討,并提出了相應(yīng)的解決方案。
關(guān)鍵詞:C++;高職院校;編程能力
計(jì)算機(jī)科學(xué)與應(yīng)用的迅猛發(fā)展,使C++語(yǔ)言成為當(dāng)今的熱門語(yǔ)言。很多程序員用C++的編譯器作為開(kāi)發(fā)工具,這足以說(shuō)明C++在當(dāng)今計(jì)算機(jī)科學(xué)研究與軟件開(kāi)發(fā)中的地位。C++既是設(shè)計(jì)工具,又是實(shí)現(xiàn)工具;既可抽象概念,描述實(shí)際問(wèn)題,又兼顧效率,能很好地實(shí)現(xiàn)底層的系統(tǒng)軟件。目前,C++程序設(shè)計(jì)是高職院校計(jì)算機(jī)專業(yè)的一門必修課。根據(jù)筆者多年的教學(xué)經(jīng)驗(yàn)和體會(huì),對(duì)高職院校中C++教學(xué)中出現(xiàn)的問(wèn)題進(jìn)行探討,并提出相應(yīng)的解決方案,希望能有拋磚引玉的的作用。
1 教材不能滿足高職教學(xué)的要求
我國(guó)的高職教育的目標(biāo)是培養(yǎng)高水平實(shí)用技術(shù)人才,而不是培養(yǎng)本科院校的研究型人才。教材要與高職教學(xué)培養(yǎng)的目標(biāo)相配套。高職計(jì)算機(jī)專業(yè)C++程序設(shè)計(jì)的教學(xué)認(rèn)為只要有大綱用什么教材都可以,是不妥的。
我國(guó)的高職教育還處在發(fā)展的初期,屬姍姍學(xué)步的階段。目前高職院校計(jì)算機(jī)專業(yè)所用C++程序設(shè)計(jì)教材多種多樣,但滿足國(guó)家教育部關(guān)于高職院校人才培養(yǎng)目標(biāo),適應(yīng)于高職院校計(jì)算機(jī)專業(yè)學(xué)生所學(xué)的教材還沒(méi)有。有的高職院校計(jì)算機(jī)專業(yè)用錢能老師《C++程序設(shè)計(jì)教程》第2版作為C++程序設(shè)計(jì)課程的教材,該教材完全從語(yǔ)法角度出發(fā)展開(kāi)論述,除了動(dòng)態(tài)內(nèi)存分配之外,其他語(yǔ)法現(xiàn)象的探討深入到極致。但對(duì)高職院校計(jì)算機(jī)專業(yè)的學(xué)生,這門課是培養(yǎng)他們編程能力的主課,但該教材專講語(yǔ)法,不合適。并且該書(shū)不包括參數(shù)化程序設(shè)計(jì)高級(jí)階段內(nèi)容。該書(shū)已經(jīng)完全成為一本語(yǔ)法參考書(shū),不再是教材。還有的高職院校計(jì)算機(jī)專業(yè)用譚浩強(qiáng)老師《C++程序設(shè)計(jì)》作為C++程序設(shè)計(jì)課程的教材。這本書(shū)的對(duì)象是非計(jì)算機(jī)專業(yè)的,即他們未來(lái)不需要大量編程的。如在該書(shū)中,作者放棄了動(dòng)態(tài)內(nèi)存分配相關(guān)內(nèi)容,而將棧區(qū)的自動(dòng)變量講成動(dòng)態(tài)分配。
一本好的高職院校計(jì)算機(jī)C++程序設(shè)計(jì)課程的教材應(yīng)該是怎樣的呢?筆者認(rèn)為:其一它的教學(xué)內(nèi)容新,教學(xué)理念先進(jìn),教學(xué)資料豐富,其編寫思想是從培養(yǎng)學(xué)生編程能力出發(fā),最顯著的特點(diǎn)是從面向?qū)ο蠛蛥?shù)化程序設(shè)計(jì)兩方面展開(kāi)教學(xué);其二要以“項(xiàng)目設(shè)計(jì)”為核心組織,將C++語(yǔ)言的各個(gè)知識(shí)點(diǎn)巧妙地由淺入深地植入項(xiàng)目中,各個(gè)知識(shí)點(diǎn)講完了,一個(gè)項(xiàng)目也完成了,從而達(dá)到學(xué)以致用的目的。
2 教師的能力有限
大多高職院校計(jì)算機(jī)專業(yè)的教師沒(méi)有在企業(yè)單位實(shí)際項(xiàng)目開(kāi)發(fā)經(jīng)歷,對(duì)C++語(yǔ)言在現(xiàn)實(shí)生活的應(yīng)用沒(méi)有真實(shí)的體驗(yàn),也有的教師剛從C語(yǔ)言或PASCAL語(yǔ)言教學(xué)轉(zhuǎn)化到C++語(yǔ)言教學(xué)上來(lái)。因此在課堂上講授C++程序設(shè)計(jì)課程時(shí)著重從語(yǔ)法角度展開(kāi),忽視了C++中算法和面向?qū)ο髢?nèi)容,未將UML活動(dòng)圖和類圖融合到教學(xué)過(guò)程中,僅在課程設(shè)計(jì)中使用是失誤之處。
教師的能力有限還表現(xiàn)在不了解自己傳授知識(shí)的對(duì)象,對(duì)他們的要求過(guò)高或過(guò)低。不了解哪里該精講,哪里該閱讀,對(duì)于學(xué)生哪里是難點(diǎn),學(xué)時(shí)應(yīng)該怎樣分配等等,推廣過(guò)急。另外高職院校的學(xué)生一般都是高考中的應(yīng)試教育的失敗者,他們一般對(duì)教材上難度較大的知識(shí)點(diǎn)在理解上存在一定困難,但是他們的動(dòng)手能力并不差,因此在教學(xué)設(shè)計(jì)時(shí)要強(qiáng)調(diào)做,讓學(xué)生在做中學(xué)、學(xué)中做,以提高學(xué)生的動(dòng)手能力。
怎樣提高職院校計(jì)算機(jī)專業(yè)的教學(xué)能力呢?其一是要送計(jì)算機(jī)專業(yè)的教師到相關(guān)企業(yè)單位頂崗鍛煉一段時(shí)間,真正參與項(xiàng)目的開(kāi)發(fā)工作,使教師具有實(shí)際項(xiàng)目開(kāi)發(fā)經(jīng)歷?;氐綄W(xué)校后,要求他們將自己開(kāi)發(fā)的項(xiàng)目應(yīng)用于課堂的教學(xué)中。有了項(xiàng)目開(kāi)發(fā)經(jīng)驗(yàn),課講起來(lái)就活了,就更有吸引力和感召力。其二是教師要采用多種途徑多個(gè)平臺(tái)與學(xué)生交流,及時(shí)地掌握學(xué)生的學(xué)時(shí)情況,了解哪里該精講,哪里該閱讀,對(duì)于學(xué)生哪里是難點(diǎn),動(dòng)態(tài)地調(diào)整學(xué)時(shí)分配等。其三是教師在教學(xué)過(guò)程中強(qiáng)調(diào)學(xué)生的動(dòng)手能力,要求學(xué)生在模仿的基礎(chǔ)上能用C++編程完成任務(wù)就可以了,對(duì)于用到的C++的相關(guān)知識(shí)點(diǎn)可能不能完全理解,這是可以接受的。隨著實(shí)踐次數(shù)增加,學(xué)生會(huì)漸漸理解相關(guān)的知識(shí)點(diǎn)。
3 編程習(xí)慣不規(guī)范
程序設(shè)計(jì)是一種集體行為,大型軟件的開(kāi)發(fā)通常由很多的人協(xié)同完成,編程規(guī)范如果不統(tǒng)一,最終合到一起的程序可讀性將較差。這不僅給代碼的理解帶來(lái)障礙,增加維護(hù)階段的工作量,同時(shí)不規(guī)范的代碼隱含錯(cuò)誤的可能性也比較大。因此,在具體的教學(xué)過(guò)程中,無(wú)論上課例子的演示還是上機(jī)的輔導(dǎo),都特別強(qiáng)調(diào)代碼的可維護(hù)性使學(xué)生養(yǎng)成良好的編程習(xí)慣,為未來(lái)從事軟件開(kāi)發(fā)工作打下良好的基礎(chǔ)。編程習(xí)慣的不規(guī)范有下面的幾個(gè)表現(xiàn):
表現(xiàn)之一是標(biāo)識(shí)符命名不能“望名知義”與過(guò)于簡(jiǎn)單。最好是采用Windows中的API所使用的“匈牙利命名法”,也就是一個(gè)變量名由一個(gè)或多個(gè)小寫字母開(kāi)始,這些字母有助于記憶變量的類型和用處,緊跟著的就是程序員選擇的任何名稱。這個(gè)后半部分的首字母可以大寫以區(qū)別前面的類型指示字母。也可以采用“駝峰式命名法”,這種命名法中每個(gè)變量名由兩個(gè)以上單詞的構(gòu)成,變量的每個(gè)單詞第一個(gè)字母大寫,兩個(gè)單詞間用下劃線連接,與匈牙利命名法不同的是它并不將變量的類型寫入變量名中。
表現(xiàn)之二是所編寫的程序格式混亂,沒(méi)有縮進(jìn)或亂縮進(jìn)。正確的縮進(jìn)方法應(yīng)該是“Tab”鍵的形式,這樣做出來(lái)的縮進(jìn)位置是固定不變的,不能用空格代替。在Visual C++ 6.0環(huán)境下,還可借助智能縮進(jìn)工具,方法是選中需要縮進(jìn)部分,然后在主菜單“Edit”中選擇“Advanced”,點(diǎn)擊“Format Selection”或者快捷鍵“Alt+F8”。嚴(yán)格規(guī)范的程序代碼層次清晰,一目了然,可以降低代碼出錯(cuò)率,例如能夠有效避免括號(hào)不配對(duì)等低級(jí)問(wèn)題,也便于后期的程序維護(hù)與修改工作。
表現(xiàn)之三是程序沒(méi)有注釋或者注釋全是廢棄的代碼。雖然在編譯和執(zhí)行時(shí)注釋會(huì)被忽略,注釋本身不會(huì)增加可執(zhí)行文件的大小,但是注釋的目的是方便代碼的閱讀和代碼維護(hù)。因此,一定要按照統(tǒng)一的規(guī)范來(lái)書(shū)寫足夠的注釋,尤其在相對(duì)復(fù)雜的程序設(shè)計(jì)問(wèn)題和大型項(xiàng)目研發(fā)中注釋及說(shuō)明文檔更加必不可少?,F(xiàn)行的代碼規(guī)范要求注釋量應(yīng)占到程序代碼比例的20%左右,即100行程序中包含20 行注釋。注釋可以書(shū)寫在代碼中的任意位置,但是一般寫在代碼的開(kāi)始處或者結(jié)束處。Visual C++ 6.0中,正確的注釋方法是以“//”為起始的行注釋和“/*….*/”為起止符的多行注釋。最后,修改程序代碼時(shí),一定要更新注釋,同時(shí)建議記錄相應(yīng)的修改日期和程序修改人。
4 考試的形式單一
C++程序設(shè)計(jì)課程的考試是為檢查學(xué)生用已學(xué)的面向?qū)ο蟮闹R(shí)來(lái)解決實(shí)際問(wèn)題的能力,從而達(dá)到學(xué)以致用的目的。大部分高職院校在學(xué)完C++程序設(shè)計(jì)課程后,學(xué)生的C++成績(jī)就是用一份筆試試卷的成績(jī)來(lái)衡量;也有的高職院校采用“筆試+上機(jī)”的形式。這與高職院校計(jì)算機(jī)專業(yè)培養(yǎng)生編程能力出發(fā)的目標(biāo)不符。應(yīng)該取消單一的筆試或“筆試+上機(jī)”的考試方法。
考試形式要能全面促進(jìn)學(xué)生在平時(shí)注重動(dòng)手能力、程序調(diào)試能力和項(xiàng)目開(kāi)發(fā)能力的培養(yǎng)。筆者提倡高職院校計(jì)算機(jī)專業(yè)的C++程序設(shè)計(jì)課程采用課程設(shè)計(jì)的較為合適,在學(xué)完該課程后,將學(xué)生分成若干個(gè)小組,每個(gè)小組完成不同的項(xiàng)目,最后以答辯的方式考核。這樣既達(dá)到了培養(yǎng)了學(xué)生用己學(xué)的面向?qū)ο蟮闹R(shí)來(lái)解決實(shí)際問(wèn)題的能力的目的,同時(shí)學(xué)生的團(tuán)結(jié)協(xié)作能力和語(yǔ)言表達(dá)能力也得到了提高。
5 結(jié)束語(yǔ)
在高職院校計(jì)算機(jī)專業(yè)的C++語(yǔ)言教學(xué)中,如果從教材、教師、編程習(xí)慣和考試的形式四個(gè)方面進(jìn)行改革和逐步完善,將會(huì)為國(guó)家培養(yǎng)真正的市場(chǎng)需要的高水平的計(jì)算機(jī)技術(shù)應(yīng)用人才,還會(huì)使老師達(dá)到教書(shū)育人兩不誤的目的。
參考文獻(xiàn)
[1]錢能.C++語(yǔ)言程序設(shè)計(jì)教程[M].北京:清華大學(xué)出版社,2005.
[2]馬苗,田紅鵬.面向?qū)ο蟮某绦蛟O(shè)計(jì)與C++教學(xué)中的問(wèn)題與思考[J].教育與教學(xué)研究,2008(6).