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