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