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