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