摘要:針對(duì)傳統(tǒng)的PPT課件在可視化編程技術(shù)VC++教學(xué)中的局限性,充分發(fā)揮可視化編程的特點(diǎn),創(chuàng)新性地設(shè)計(jì)開(kāi)發(fā)了一套程序化課件,使學(xué)生在學(xué)習(xí)和理解Windows程序設(shè)計(jì)的內(nèi)容上更具直觀性,起到了比較好的教學(xué)效果。
關(guān)鍵詞:VC++ 可視化 程序化課件
一、引言
隨著Windows操作系統(tǒng)的崛起,由傳統(tǒng)的面向控制臺(tái)的字符軟件開(kāi)發(fā)向面向窗口程序的可視化編程轉(zhuǎn)化已成為必然趨勢(shì)。傳統(tǒng)的C語(yǔ)言是一種面向過(guò)程的編程語(yǔ)言,隨著軟件工程技術(shù)的發(fā)展,可視化與面向?qū)ο缶幊桃呀?jīng)成為當(dāng)今世界流行的編程技術(shù)。因此,對(duì)于信息電子相關(guān)專業(yè)的學(xué)生而言,掌握一門面向?qū)ο蟮目梢暬幊碳夹g(shù)已經(jīng)成為對(duì)大學(xué)生掌握信息技術(shù)和應(yīng)用開(kāi)發(fā)能力的要求之一。Visual C++是Windows環(huán)境下最強(qiáng)大、最流行的可視化面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言之一,它的執(zhí)行速度和對(duì)操作系統(tǒng)訪問(wèn)權(quán)限之高是其他許多語(yǔ)言難以比擬的。
然而,由于Windows編程的困難和MFC類庫(kù)功能的龐大,加上應(yīng)用程序向?qū)傻某绦蚩蚣芙Y(jié)構(gòu)的復(fù)雜性,很難理出一條循序漸進(jìn)的學(xué)習(xí)路線,以其為基礎(chǔ)的例題程序也難于為初學(xué)者理解和掌握。因此,使得VC++的學(xué)習(xí)比其他開(kāi)發(fā)工具都要困難。為了提高教學(xué)質(zhì)量,我們從學(xué)生認(rèn)知規(guī)律和知識(shí)體系的角度出發(fā),對(duì)教學(xué)內(nèi)容進(jìn)行了適當(dāng)?shù)膬?yōu)化,從基于面向過(guò)程的Windows API編程技術(shù)出發(fā),講解Windows應(yīng)用程序的內(nèi)部運(yùn)行原理,在此基礎(chǔ)上再深入講解MFC編程的基本方法。實(shí)踐證明這條學(xué)習(xí)路線是有利于學(xué)生最終掌握MFC編程的基本方法和原理的。但從近幾年的教學(xué)效果來(lái)看,情況仍不理想。
二、PPT課件的局限性
程序設(shè)計(jì)課程是一門強(qiáng)調(diào)實(shí)際動(dòng)手能力的課程,因此為了實(shí)現(xiàn)良好的教學(xué)效果,我們往往采用的是首先通過(guò)PPT課件講解基本原理,再通過(guò)現(xiàn)場(chǎng)編寫、調(diào)試和運(yùn)行程序講解實(shí)際應(yīng)用。而Windows程序因?yàn)槠涔δ艿膹?fù)雜性,代碼本身相對(duì)于學(xué)生已經(jīng)學(xué)過(guò)的C和C++程序要長(zhǎng)很多,已經(jīng)使學(xué)生產(chǎn)生了一些畏懼心理,再加上在講解的過(guò)程中為了解釋示例中某個(gè)功能的實(shí)現(xiàn)方法,不得不在很長(zhǎng)的代碼中找出關(guān)鍵性語(yǔ)句,而使學(xué)生產(chǎn)生因?yàn)閷ふ以诰庉嬈髦胁粩酀L動(dòng)的代碼而很難把握學(xué)習(xí)焦點(diǎn)的感覺(jué),從而失去學(xué)習(xí)興趣。雖然PPT課件可以很清晰得展示部分關(guān)鍵性代碼,但是因?yàn)槠淦南拗坪茈y完整地展示整個(gè)程序,再加上如果只在PPT課件上講解程序,也會(huì)產(chǎn)生與實(shí)際運(yùn)行環(huán)境脫離的感覺(jué),很難實(shí)現(xiàn)“所學(xué)即所得”,影響實(shí)例化教學(xué)的效果。
三、程序化課件
所謂程序化課件,即具備動(dòng)態(tài)顯示教學(xué)內(nèi)容的可運(yùn)行示例程序。以往課堂上所演示的示例程序往往只是具備驗(yàn)證部分教學(xué)內(nèi)容的功能,具體的關(guān)鍵性的實(shí)現(xiàn)代碼必須切換到相應(yīng)的IDE環(huán)境下才能看到,繁瑣且查找困難。為了使實(shí)例化教學(xué)能夠達(dá)到更好的教學(xué)效果,我們重新修改并編寫了示例程序,修改后的程序不僅具備了驗(yàn)證所有教學(xué)內(nèi)容的功能,而且還能根據(jù)使用者的操作動(dòng)態(tài)顯示實(shí)現(xiàn)該功能的關(guān)鍵性代碼,真正實(shí)現(xiàn)“所學(xué)即所得”。
我們用三個(gè)代表性的實(shí)例來(lái)說(shuō)明程序化課件在VC++程序設(shè)計(jì)課程中的應(yīng)用。
程序化課件一:Windows窗口的創(chuàng)建
教材[1]在介紹使用Windows API創(chuàng)建Windows應(yīng)用程序的內(nèi)容時(shí)給出了一個(gè)示例程序,程序運(yùn)行結(jié)果如圖1所示。
可以看到,程序的運(yùn)行結(jié)果就是生成一個(gè)簡(jiǎn)單的Windows窗口,而窗口是如何產(chǎn)生的則需要教師對(duì)照著PPT課件或源文件中的程序代碼進(jìn)行講解。事實(shí)上,文中除了介紹如何創(chuàng)建窗口外,還介紹了窗口的樣式以及Windows常用的窗口消息,而這些內(nèi)容在這個(gè)例題程序中并沒(méi)有被“可視化”。
為了較全面的展示教材中介紹的主要內(nèi)容,我們?cè)谠谐绦虻幕A(chǔ)上做了修改。該程序不僅對(duì)教材中所提及的窗口的創(chuàng)建、窗口的樣式和消息響應(yīng)進(jìn)行了驗(yàn)證,而且在窗口的適當(dāng)位置還動(dòng)態(tài)地顯示了實(shí)現(xiàn)該功能的關(guān)鍵性代碼,起到了課件的作用。
通過(guò)這個(gè)程序,學(xué)生可以更直觀地理解各個(gè)窗口消息發(fā)生的時(shí)刻和響應(yīng)的方法。當(dāng)選擇菜單中所列舉的各種樣式時(shí),可以立即看到該樣式所帶來(lái)的效果和編寫的代碼,改變了以往只是單純通過(guò)PPT課件講解該內(nèi)容的方式,達(dá)到了比較好的教學(xué)效果。
程序化課件二:Windows應(yīng)用程序?qū)κ髽?biāo)的響應(yīng)
教材[1]中給出的示例程序只是簡(jiǎn)單地驗(yàn)證了WM_MOUSEMOVE消息的響應(yīng)以及鼠標(biāo)位置讀取的內(nèi)容,而對(duì)于文中講解的其它內(nèi)容并沒(méi)有程序加以驗(yàn)證。為了讓學(xué)生更直觀準(zhǔn)確地理解各種鼠標(biāo)消息的發(fā)生、鼠標(biāo)的位置以及非用戶區(qū)鼠標(biāo)捕獲等問(wèn)題,我們重新編寫了一個(gè)示例程序。
通過(guò)該程序,學(xué)生不僅可以很直觀地看到各種鼠標(biāo)消息是如何產(chǎn)生的,而且包括這個(gè)鼠標(biāo)消息的字參數(shù)Wparam的取值和當(dāng)前坐標(biāo)都一目了然,尤其是對(duì)學(xué)生理解非用戶區(qū)鼠標(biāo)消息的捕獲和坐標(biāo)的變化問(wèn)題有很大的幫助。
程序化課件三:資源在可視化編程中的應(yīng)用
一個(gè)應(yīng)用系統(tǒng)往往是各種資源的綜合體,因此,我們將教材[1]中關(guān)于圖標(biāo)資源、光標(biāo)資源、菜單資源和位圖資源的所有示例的內(nèi)容融合到了一個(gè)示例程序中。同樣,為了使該程序起到課件的效果,在程序運(yùn)行窗口的適當(dāng)位置動(dòng)態(tài)顯示了各種資源的執(zhí)行代碼。
在這個(gè)示例中,不僅展示了各種資源的加載方法,而且對(duì)菜單項(xiàng)的響應(yīng)和位圖的操作問(wèn)題都有很直觀的驗(yàn)證。尤其對(duì)于學(xué)生理解教材中介紹的BitBlt和StretchBlt兩個(gè)位圖輸出函數(shù)的不同以及位圖模式的內(nèi)容有很大的幫助。
四、總結(jié)
Visual C++是一門可視化的編程技術(shù),為了在教學(xué)過(guò)程中也能夠體現(xiàn)這種“可視化”,我們?cè)O(shè)計(jì)了一系列的“程序化課件”,目的在于使學(xué)生所學(xué)內(nèi)容盡可能地直觀化,弱化因?yàn)榧夹g(shù)本身的復(fù)雜性給學(xué)生學(xué)習(xí)上所帶來(lái)的困難。再加上該課件本身就是由所學(xué)技術(shù)Visual C++實(shí)現(xiàn)的,因此,對(duì)于學(xué)生的學(xué)習(xí)也可以是一個(gè)很好的激勵(lì)。
從教學(xué)實(shí)踐結(jié)果來(lái)看,該課件的應(yīng)用起到了比較好的教學(xué)效果。但是,由于Visual C++技術(shù)本身的復(fù)雜性,導(dǎo)致了入門的異常困難。因此,如何更好地激發(fā)學(xué)生的學(xué)習(xí)熱情,仍是我們?cè)诮窈蟮慕虒W(xué)中需要思考的問(wèn)題。
參考文獻(xiàn):
[1]黃維通.Visual C++面向?qū)ο笈c可視化程序設(shè)計(jì)[M].北京:清華大學(xué)出版社,2006.
[2]呂智林,龔文英.VC++程序設(shè)計(jì)課程教學(xué)改革的探索[J].廣西大學(xué)學(xué)報(bào)(自然科學(xué)版),2004,29(9):29-31.
[3]郭小梅.VC++編程教學(xué)改革與實(shí)踐[J].南京曉莊學(xué)院學(xué)報(bào),2006,(6):116-118.
[4]張順利,田俊華,李衛(wèi)斌.VC++程序設(shè)計(jì)課程教學(xué)改革研究.2007.
基金項(xiàng)目:浙江理工大學(xué)重點(diǎn)課程建設(shè)項(xiàng)目(ZDKC0908);浙江理工大學(xué)一般教改項(xiàng)目(11120032311041)。