[摘要]計算機程序設計類課程的教學需要新思路來提高學生編程實踐能力差的問題。以VC++課程教學為例,介紹在提高學生編程實踐水平方面應用試驗法的教學探索。
[關鍵詞]試驗法 VC++ 案例教學
中圖分類號:G43文獻標識碼:A文章編號:1671-7597(2009)0910178-01
一、試驗法教學的優越性
《Visual C++(簡稱VC++)程序設計》這門課程抽象復雜,學生難以掌握VC++的精髓,尤其是對高職學生來說,如果采用傳統的教學模式,即教師詳細講解語法知識、編程技巧、課后上機練習的教學套路,很難收到較好的教學效果。我們經過多年的教學研討,總結出對于高職學生來說,采用試驗法講授VC++課程,學生學習興趣可以獲得很大提高,學生編程能力不斷增強,即教師在講解過程中不斷設置疑問點引起學生興趣或者在學生遇到疑問而學生又有一個想象的思路時我們采用不直接給出方法或者答案,而是采用讓學生去上機試驗并將在試驗過程中出現的問題與發現的新情況向教師反饋,這樣因為問題的解決主要依賴學生,而教師又有對問題的追蹤,因此學生會非常認真的對待,并且學生在主動學習的過程中會學習到更多的新知識,從實踐中獲得的知識更容易移植到將來的實際工作中。這樣,理論緊密聯系實際,既激發了學生的學習興趣,又培養了學生自學及動手能力,收到了良好的教學效果。
二、試驗法的教學實踐與做法
(一)及時設置疑問或捕捉學生遇到的問題。由于VC++的復雜性,很多教師在講到具體操作時會采用告訴學生應該怎樣做,一般而言學生會接受就是這樣做的思維,不會提出疑問,而事實上程序設計大多數沒有固定的答案,我們可以采用多種方法完成相同的功能,只是會采用習慣上經常用的方法,這樣對于擴充學生的思路是極為不利的。因此,我們采用設置疑問,鼓勵嘗試(試驗)法解決問題。例如,在講到為應用程序添加菜單資源IDR_MAINFRAME時,為了驗證該菜單項是否可用,要為該菜單項添加消息處理函數。那么,現在的問題是:這個消息是由框架類、視圖類、文檔類和應用程序類中的哪一個類來捕獲呢[1]?另外,如果4個類都可以捕獲到這個消息,那么它們有沒有先后順序呢?學生在進行實際應用程序的開發時使用哪個類來捕獲菜單消息呢?學生對此問題充滿了好奇,是哪個類捕獲菜單消息呢?他們帶著疑問對此問題進行上機試驗,當教師對此問題進行反饋時學生回答問題非常踴躍,因為他們已經掌握了這個問題的比較成熟的解決辦法,學生首先在各個類中分別添加了菜單消息處理函數:
void CMainFrame::OnTest()
{
// TODO: 在此添加命令處理程序代碼
MessageBox("框架類對該菜單進行了命令響應");
}
//在CMenuApp類中添加“Test”菜單的命令響應函數
void CMenuApp::OnTest()
{
// TODO: 在此添加命令處理程序代碼
AfxMessageBox("應用程序類對菜單做出了響應");
}
//在CMenuDoc類中添加“Test”菜單的命令響應函數
void CMenuDoc::OnTest()
{
// TODO: 在此添加命令處理程序代碼
AfxMessageBox("文檔類對菜單做出了響應");
}
//在CMenuView類中添加“Test”菜單的命令響應函數
void CMenuView::OnTest()
{
// TODO: 在此添加命令處理程序代碼
MessageBox("視類對菜單做出了響應");
}
具體說來,通過上機試驗及教師及時反饋,學生對這個問題的理解可以概括如下:
1.框架類、視圖類、應用程序類和文檔類都可以捕獲到菜單消息;
2.4個類都對菜單命令進行了響應。它們對菜單命令的捕獲順序為,首先是視圖類最先響應這個菜單命令,如果視圖類對菜單項做出響應,則其他類就不再對該菜單項做出響應,否則,接下來是文檔類對該菜單項做出響應,如果文檔類未對菜單項做出響應,則由框架類對菜單項做出響應,最后是應用程序類對菜單命令進行響應;
3.由于CMenuApp類和CMenuDoc類不是從CWnd類派生來的,所以它們不能使用CWnd類的MessageBox函數,因此可以使用全局的MessageBox函數或者使用程序框架的函數AfxMessageBox;
4.習慣上對于菜單資源的捕獲放在框架類或視圖類中進行。
(二)結合案例,在上機試驗中對問題進行擴充。案例教學一直是程序設計類課程中比較好的一個方法,不過很多時候是教師講解完一個案例,讓學生上機再重做一便,目的是通過練習學生可以掌握該案例的設計思路,不過這樣做的缺點是學生被動接受練習,他們認為完成案例練習就可以了。實際上,大部分學生的上機試驗僅限于此。正是考慮到案例教學法的優點和缺點,我們在設計上機任務時對案例進行了擴充,擴充的部分和案例類似但又高于案例本身。例如,在講到對話框和控件的應用時,我們的案例是:設計一個單位換算方面的功能,包括3種類型單位:長度單位(米、分米、厘米和毫米)、時間單位(小時、分鐘和秒)(要求界面布局合理)[2]。我們布置學生上機練習的任務是:在此基礎上增加一些功能,即增加完成二進制、十進制和十六進制之間的轉換程序部分,值得肯定的是學生不但完成了此增加部分功能的實現還考慮到輸入數據的限制(如二進制數據只能輸入0和1)。
三、結束語
計算機程序設計教學只有把提高學生編程應用能力作為首要目標,學以致用,才能使學生真正具備基本的專業素質,成為合格的計算機人才。我們在教學實踐中通過在VC++程序設計課程中使用試驗法來激發學生學習興趣、增強他們對問題的探索,注重了對學生技能的培養;通過對編程案例的模擬和深化來加深學生對相應概念、知識點的理解,通過綜合案例將各種知識點貫穿起來,強化編程應用和技巧,提高學生分析、解決問題的能力。
參考文獻:
[1]孫飛等,Visual C++.NET入門與提高[M].北京:清華大學出版社,2002.07.
[2]孫鑫,VC++深入詳解[M].北京:電子工業出版社,2007.03.
作者簡介:
孫連云(1976-),女,山東人,碩士,講師,主要研究方向:計算機軟件方面開發研究與教學。