陳雪萍
探索《C++程序設(shè)計(jì)》教學(xué)方法
陳雪萍
福建師范大學(xué)信息技術(shù)學(xué)院
針對(duì)《C++程序設(shè)計(jì)》教學(xué)過(guò)程中存在的問(wèn)題,探討如何結(jié)合高職院校學(xué)生的特點(diǎn),改進(jìn)《C++程序設(shè)計(jì)》課程的教學(xué)方法,使不同層次的學(xué)生都能學(xué)好該課程,為后續(xù)課程打下良好的編程基礎(chǔ)。
C++程序設(shè)計(jì) 高職教育 教學(xué)方法 獨(dú)立思考
根據(jù)高職院校培養(yǎng)應(yīng)用型人才的特點(diǎn),我院為計(jì)算機(jī)游戲開(kāi)發(fā)專(zhuān)業(yè)引進(jìn)了《C程序設(shè)計(jì)》—《C++程序設(shè)計(jì)》—《游戲工具開(kāi)發(fā)》—《游戲腳本開(kāi)發(fā)》—《在線游戲網(wǎng)絡(luò)架構(gòu)》—《Direct X編程》—《高級(jí)游戲特性》為主線的課程體系設(shè)置。不難看出,《C++程序設(shè)計(jì)》在游戲開(kāi)發(fā)專(zhuān)業(yè)課程學(xué)習(xí)過(guò)程中具有極其重要的作用,它的定位是面向?qū)ο蟪绦蛟O(shè)計(jì)原理,要讓學(xué)生有扎實(shí)的理論基礎(chǔ),同時(shí)也應(yīng)該具備扎實(shí)的實(shí)踐技能,是學(xué)生必須掌握的專(zhuān)業(yè)基礎(chǔ)課。但在實(shí)際授課過(guò)程中,學(xué)生普遍反映本門(mén)課程難學(xué),對(duì)編程失去興趣和信心,后繼專(zhuān)業(yè)課程基本無(wú)法聽(tīng)懂。本文試圖找出《C++程序設(shè)計(jì)》難學(xué)的癥結(jié)所在,并提出相應(yīng)的解決方案。
在計(jì)算機(jī)游戲開(kāi)發(fā)專(zhuān)業(yè)課程體系中,《C程序設(shè)計(jì)》被設(shè)計(jì)為《C++程序設(shè)計(jì)》的前續(xù)課程,基本語(yǔ)法的學(xué)習(xí)放在《C程序設(shè)計(jì)》,《C++程序設(shè)計(jì)》的授課重點(diǎn)則放在了面向?qū)ο蟮幕舅枷牒突痉椒ㄉ稀_@樣,學(xué)生有可能受到兩方面的影響:編程過(guò)程過(guò)于關(guān)注基本語(yǔ)法;在編程過(guò)程中受結(jié)構(gòu)化編程思想影響,難以理解面向?qū)ο缶幊趟枷搿?/p>
針對(duì)計(jì)算機(jī)游戲?qū)I(yè)與其它專(zhuān)業(yè)的特殊性,建議直接引入《C++程序設(shè)計(jì)》,而不是先學(xué)《C程序設(shè)計(jì)》再學(xué)《C++程序設(shè)計(jì)》,盡早引入面向?qū)ο缶幊趟枷搿!禖++程序設(shè)計(jì)》課程涉及到較多的抽象概念,如繼承、多態(tài)等,應(yīng)提高學(xué)生從客觀事物抽象出類(lèi)的方法去考慮和解決問(wèn)題的抽象思維能力。
同時(shí),在授課過(guò)程中淡化語(yǔ)法,重點(diǎn)強(qiáng)調(diào)算法,以算法帶動(dòng)基本語(yǔ)法的學(xué)習(xí)。督促學(xué)生多記錄常見(jiàn)錯(cuò)誤提示,錯(cuò)誤再次發(fā)生時(shí)能自行解決。錯(cuò)誤提示通常為英語(yǔ),可與《專(zhuān)業(yè)英語(yǔ)》課程相結(jié)合,學(xué)習(xí)相關(guān)專(zhuān)業(yè)術(shù)語(yǔ)。
以往《C++程序設(shè)計(jì)》的課程教材都是采用清華大學(xué)版的教程,由于該書(shū)的信息量太大,知識(shí)點(diǎn)太多,對(duì)語(yǔ)法強(qiáng)調(diào)得過(guò)多,學(xué)生難以把握學(xué)習(xí)重點(diǎn),往往拿起書(shū)本就覺(jué)得沒(méi)有信心,妨礙了學(xué)生自學(xué),容易產(chǎn)生畏難情緒,不適合用于培養(yǎng)高職院校計(jì)算機(jī)專(zhuān)業(yè)學(xué)生的編程能力。書(shū)本內(nèi)容多也導(dǎo)致了教學(xué)難度大,知識(shí)點(diǎn)過(guò)多容易使課程教學(xué)出現(xiàn)拖拉現(xiàn)象。因此,對(duì)教材的要求應(yīng)該從培訓(xùn)學(xué)生的實(shí)際編程能力為前提進(jìn)行選擇,教材內(nèi)容應(yīng)該以項(xiàng)目設(shè)計(jì)為主線,將C++語(yǔ)言的各個(gè)知識(shí)點(diǎn)融入其中。知識(shí)點(diǎn)講完了,一個(gè)項(xiàng)目也就完成了。
案例教學(xué)是一種具有啟發(fā)性和實(shí)踐性,能開(kāi)發(fā)學(xué)生智力,提高學(xué)生決策能力和綜合素質(zhì)的教學(xué)方法。初學(xué)時(shí),學(xué)生很容易就產(chǎn)生學(xué)習(xí)C++程序設(shè)計(jì)非??菰餆o(wú)味的情緒,一部分學(xué)生甚至出現(xiàn)“只聽(tīng)不練”的情況。使用這種方法能將枯燥的抽象概念變得生動(dòng)、具體,重點(diǎn)突出,簡(jiǎn)單明了。例如,我們小時(shí)候都玩過(guò)“掌上寵物”這個(gè)游戲,現(xiàn)在把這個(gè)游戲搬進(jìn)我們的課堂,既活躍了課堂氣氛,又調(diào)動(dòng)了學(xué)生的積極性。案例教學(xué)的有效實(shí)施,有助于學(xué)生在開(kāi)始階段順利入門(mén),保持學(xué)習(xí)的興趣和積極性,提高他們的實(shí)際應(yīng)用能力。
案例教學(xué)效果的好壞關(guān)鍵在于案例設(shè)計(jì)的質(zhì)量如何。一般情況下,教學(xué)案例的設(shè)計(jì)應(yīng)該盡量做到:①覆蓋課程的相關(guān)知識(shí)點(diǎn);②有實(shí)踐性,設(shè)計(jì)的案例應(yīng)切合實(shí)際,容易被學(xué)生理解;③有針對(duì)性,應(yīng)該針對(duì)學(xué)生的接受能力來(lái)設(shè)計(jì)案例;④有系統(tǒng)性,在整個(gè)課程教學(xué)過(guò)程中用到的案例應(yīng)該由易到難進(jìn)行設(shè)計(jì)。
在課堂案例教學(xué)過(guò)程中,經(jīng)??吹竭@樣一個(gè)場(chǎng)景:老師教一步,然后等學(xué)生操作一步,然后老師再繼續(xù)教下一步操作,就是老師教學(xué)生一步一步模仿開(kāi)發(fā)??墒?,換一個(gè)案例,碰到新知識(shí)和新問(wèn)題的時(shí)候,學(xué)生就不知道如何處理了。
因此,在教學(xué)過(guò)程中,我們應(yīng)該給學(xué)生一些時(shí)間讓他去思考,除了課程電子教案、案例重難點(diǎn)分析,我們還應(yīng)該提供一些案例擴(kuò)展的自檢自測(cè)題。課堂和課外兩個(gè)案例同時(shí)進(jìn)行,除了課堂案例,應(yīng)該再設(shè)計(jì)一些案例,供學(xué)生課外練習(xí),鼓勵(lì)學(xué)生借助搜索引擎(如百度、雅虎)來(lái)獲取其感興趣的資源,完成課外案例。
由于學(xué)生素質(zhì)參差不齊,一部分學(xué)生接受能力快,課堂布置的實(shí)驗(yàn)很快完成,出現(xiàn)課堂剩余時(shí)間無(wú)所事事的情況;而另一部分學(xué)生接受能力差,實(shí)驗(yàn)進(jìn)度緩慢。游戲?qū)I(yè)兩極分化比較嚴(yán)重,上課節(jié)奏難以把握。
對(duì)接受能力快的學(xué)生,采用“任務(wù)式”教學(xué),提出任務(wù),引導(dǎo)學(xué)生進(jìn)行思考,使其自己翻閱資料并給出解決方案。這樣既可以引導(dǎo)學(xué)生在學(xué)習(xí)過(guò)程中少走彎路,又能激發(fā)這些學(xué)生的學(xué)習(xí)動(dòng)力,變被動(dòng)學(xué)習(xí)為主動(dòng)學(xué)習(xí),提高其自覺(jué)能力;對(duì)接受能力差的同學(xué),采用扎實(shí)、緩慢的授課方式,對(duì)所有的難點(diǎn)、細(xì)節(jié)都舉大量的例子,不斷地反復(fù)練習(xí),加深印象,避免因?yàn)榍懊鎯?nèi)容沒(méi)有聽(tīng)懂而放棄后面內(nèi)容的學(xué)習(xí)。同時(shí)采用分組形式,盡量讓學(xué)習(xí)能力強(qiáng)的學(xué)生帶學(xué)習(xí)能力差的學(xué)生,課堂上的問(wèn)題盡量在小組內(nèi)解決,如有不能解決的,再向老師提問(wèn)。這樣,既能使學(xué)習(xí)能力強(qiáng)的學(xué)生知識(shí)得到鞏固,又使學(xué)習(xí)能力差的學(xué)生能解決學(xué)習(xí)問(wèn)題,同時(shí)學(xué)習(xí)到好的學(xué)習(xí)方法。
學(xué)生在編程過(guò)程中,往往按照自己的習(xí)慣進(jìn)行編程,很少注意到編程規(guī)范問(wèn)題,使程序的可讀性差,這使得學(xué)生即使是自己寫(xiě)的程序,依然看得很吃力,在代碼糾錯(cuò)方面也浪費(fèi)了大量的時(shí)間。編程不規(guī)范主要表現(xiàn)在以下幾個(gè)方面:
(1)標(biāo)識(shí)符命名不規(guī)范,學(xué)生通常喜歡用i,j等標(biāo)識(shí)符來(lái)命名,不能“望名知義”。標(biāo)識(shí)符命名最好采用“匈牙利命名法”或“駝峰式命名法”。
(2)程序格式混亂,沒(méi)有縮進(jìn)或亂縮進(jìn),程序?qū)哟尾环置鳎?jīng)常出現(xiàn)括號(hào)不配對(duì)等問(wèn)題。應(yīng)該引導(dǎo)學(xué)生使用”TAB”鍵進(jìn)行縮進(jìn),而不是使用空格,同時(shí)借助編輯工具來(lái)規(guī)范程序代碼層次。
(3)程序沒(méi)有注釋?zhuān)勾a的閱讀和代碼的維護(hù)產(chǎn)生困難。應(yīng)該要求代碼的注釋量達(dá)到程序代碼比例的20%左右,修改代碼時(shí),應(yīng)該要更新注釋。
大型軟件開(kāi)發(fā)通常由多人協(xié)同完成,可以提供給學(xué)生一些IT公司的編程培訓(xùn)視頻或編程規(guī)范文檔,例如給學(xué)生閱讀《華為編程規(guī)范和范例》,使學(xué)生理解IT公司的編程要求,盡早培養(yǎng)好的編程習(xí)慣,養(yǎng)成命名規(guī)范化和編程規(guī)范化,提高編寫(xiě)的程序可讀性,使學(xué)習(xí)效率事半功倍。
由于《C++程序設(shè)計(jì)》涉及知識(shí)面廣,內(nèi)容豐富,語(yǔ)法復(fù)雜,學(xué)生在編程過(guò)程中往往被語(yǔ)法問(wèn)題難住,對(duì)程序調(diào)試過(guò)程中出現(xiàn)層出不窮的語(yǔ)法問(wèn)題和邏輯問(wèn)題難以自行解決,只能被動(dòng)等待授課老師過(guò)來(lái)解決。因此,在上機(jī)過(guò)程中,應(yīng)該著重指導(dǎo)學(xué)生怎么跟蹤程序的運(yùn)行,怎樣設(shè)置被監(jiān)視的變量,怎么設(shè)置斷點(diǎn),怎樣單步運(yùn)行,怎樣使用Debug工具。這樣,在實(shí)驗(yàn)過(guò)程中,學(xué)生才能學(xué)會(huì)如何自行解決問(wèn)題。
在案例教學(xué)中要培養(yǎng)學(xué)生的邏輯思維能力、程序設(shè)計(jì)能力和綜合解決問(wèn)題的能力,因?yàn)?,?duì)教師自身的程序設(shè)計(jì)能力也有了更高的要求。教師應(yīng)該經(jīng)常參與項(xiàng)目開(kāi)發(fā),參與系統(tǒng)設(shè)計(jì)、系統(tǒng)實(shí)施,積累開(kāi)發(fā)經(jīng)驗(yàn)和編程技巧,把理論上先進(jìn)的思想付諸實(shí)施,同時(shí)把實(shí)踐中的體會(huì)用于教學(xué)。
總之,在教學(xué)過(guò)程中一定要結(jié)合高職院校學(xué)生的特點(diǎn),使課程內(nèi)容盡量貼近學(xué)生的興趣,這樣才能調(diào)動(dòng)學(xué)生學(xué)習(xí)的積極性,提高教學(xué)效果。
[1] 潭浩強(qiáng). C++程序設(shè)計(jì)[M].北京:清華大學(xué)出版社,2011
[2] 錢(qián)能.C++程序設(shè)計(jì)教程——設(shè)計(jì)思想與實(shí)現(xiàn)[M].北京:清華大學(xué)出版社, 2009.
[3] 黃國(guó)軍,黃賢文.高職院校中C++教學(xué)問(wèn)題的探討[J].軟件工程師, 2010(4): 59-60.