摘要:任務(wù)驅(qū)動法是利用典型的、學(xué)生熟悉的實(shí)例任務(wù)展開教學(xué)內(nèi)容,不僅提高了學(xué)生的學(xué)習(xí)興趣,而且把理論的學(xué)習(xí)融入到實(shí)際的問題解決中,極大地調(diào)動了學(xué)生的主動性和積極性。實(shí)踐得以證明,本文提出的改革方案在一定程度上增強(qiáng)了課堂教學(xué)效果,并為學(xué)生編程能力的提高提供了必要的條件。
關(guān)鍵詞:Visual C++;任務(wù)驅(qū)動;教學(xué)改革
中圖分類號:G642.0 文獻(xiàn)標(biāo)志碼:A 文章編號:1674-9324(2018)33-0196-02
一、引言
開設(shè)Visual C++程序設(shè)計(jì)(簡稱VC++)課程的宗旨是培養(yǎng)學(xué)生運(yùn)用計(jì)算機(jī)編程技術(shù)來解決實(shí)際問題。這就要求學(xué)生在掌握基本課程知識的基礎(chǔ)上,如何運(yùn)用所學(xué)的知識來解決實(shí)際問題,這才是關(guān)鍵。但是由于VC++的編程規(guī)模龐大,結(jié)構(gòu)復(fù)雜,并且MFC提供的應(yīng)用程序框架代碼量大,專業(yè)性強(qiáng),所以使很多初學(xué)者望而卻步。為了克服學(xué)生的這種心理,同時(shí)為了提高課程教學(xué)的效果,我們有必要對教學(xué)進(jìn)行改革。
二、任務(wù)驅(qū)動法基本理論與實(shí)施
1.任務(wù)驅(qū)動法的基本理論。任務(wù)驅(qū)動法就是根據(jù)課程教學(xué)目的的要求,選擇貼近生活的實(shí)際工作項(xiàng)目,組織學(xué)生通過具體的實(shí)例分析、思考和交流,提出解決辦法的同時(shí),導(dǎo)入課堂教學(xué)內(nèi)容。這種由任務(wù)為啟發(fā)的方式,調(diào)動了課堂氣氛,增加了學(xué)生對所學(xué)內(nèi)容的興趣,而且培養(yǎng)了學(xué)生自主學(xué)習(xí)和相對獨(dú)立分析、解決問題的能力。任務(wù)驅(qū)動法,突出“教、學(xué)、做”一體化的教學(xué)理念,起到豐富教學(xué)內(nèi)容、激發(fā)學(xué)生學(xué)習(xí)情緒、加強(qiáng)師生互動的效果。
2.任務(wù)驅(qū)動法的具體實(shí)施。任務(wù)的選擇應(yīng)該從教學(xué)內(nèi)容為出發(fā)點(diǎn),這就需要通過具體的實(shí)例來實(shí)現(xiàn)。利用典型的、學(xué)生熟悉的實(shí)例導(dǎo)入教學(xué)內(nèi)容,不僅提高了學(xué)生的學(xué)習(xí)興趣,而且把理論的學(xué)習(xí)融入到了實(shí)際的問題解決中。
VC++課程學(xué)習(xí)內(nèi)容包括:(1)C++基礎(chǔ)知識介紹;(2)Windows編程原理;(3)圖形設(shè)備接口;(4)對話框介紹;(5)常用控件介紹;(6)窗口界面元素;(7)文檔與視圖;(8)數(shù)據(jù)庫。對于第一部分的介紹,因?yàn)橛蠧語言課程的基礎(chǔ),所以學(xué)習(xí)該部分沒有太大的跨度,但是由于課時(shí)有限,如果真正讓學(xué)生掌握,還是有很大難度。所以對于這部分的學(xué)習(xí),除了課堂學(xué)習(xí)之外,我們在課前導(dǎo)入任務(wù)的同時(shí),課下會讓學(xué)生繼續(xù)完成一些任務(wù)。
從第二部分開始,內(nèi)容的學(xué)習(xí)有點(diǎn)跨度感,我們在介紹Windows應(yīng)用程序的特點(diǎn)的基礎(chǔ)上,進(jìn)一步引入MFC編程的運(yùn)行機(jī)制介紹,使學(xué)生從早期的控制臺編程的習(xí)慣中,逐步地認(rèn)識和接受一種可視化的編程界面。在這一系列內(nèi)容的講解中,我們策劃了很多的實(shí)例,比如:實(shí)時(shí)走動的時(shí)鐘盤面、滾動字體、周期變化的顏色的字體、空心字、窗口菜單/工具欄設(shè)置等。為了消除學(xué)生對這部分學(xué)習(xí)的心理恐懼感,在現(xiàn)有的MFC框架支持下,給學(xué)生由淺入深地引入一些實(shí)例任務(wù),以此增加學(xué)生的學(xué)習(xí)興趣,并幫助他們理解知識。
3.具體任務(wù)的設(shè)計(jì)。(1)屏幕保護(hù)任務(wù)的設(shè)計(jì)。
①任務(wù)結(jié)果的展示。將屏幕保護(hù)結(jié)果:滾動字體的可視化效果演示給學(xué)生。②任務(wù)分析。問題1:字體滾動時(shí),發(fā)生改變的實(shí)質(zhì)是什么?根據(jù)問題的提出,使學(xué)生認(rèn)識到動態(tài)效果的實(shí)現(xiàn)其實(shí)就是位置的改變,這樣在顯示時(shí),就不能固定其坐標(biāo),例如通過“pDC->TextOut(x,100,str);”來實(shí)現(xiàn)。問題2:文字滾動時(shí),坐標(biāo)是如何改變的?我們接著上面問題,橫坐標(biāo)的變化是否存在規(guī)律性或者是否存在周期性?以此啟發(fā)學(xué)生想到定時(shí)器(WM_TIMER)消息的添加。問題3:定時(shí)器消息關(guān)聯(lián)的函數(shù)中如何添加代碼?按規(guī)律或者周期性變化的坐標(biāo)如何改變?照這樣分析下去,所要添加的代碼問題就基本解決了。(2)“時(shí)鐘”任務(wù)的具體實(shí)施。選擇實(shí)時(shí)走動的“時(shí)鐘”作為任務(wù)對象,讓學(xué)生掌握VC++中比較常用的圖形繪制設(shè)計(jì)方法。引導(dǎo)學(xué)生對VC++中的繪圖工具進(jìn)行探究,同時(shí)從設(shè)計(jì)界面、編寫代碼等各個(gè)方面的內(nèi)容展開教學(xué)目標(biāo)和教學(xué)計(jì)劃,使學(xué)生在這樣的講解步驟中,逐步體會和學(xué)習(xí)VC++程序開發(fā)的流程。
①任務(wù)結(jié)果的展示。將“時(shí)鐘”的簡單程序演示給學(xué)生,讓其觀察執(zhí)行結(jié)果的動態(tài)效果。②任務(wù)的分析。首先針對“時(shí)鐘”的基本界面結(jié)構(gòu)的繪制方法,如何選擇繪圖工具進(jìn)行整體的制作。
問題1:本任務(wù)的時(shí)鐘盤面的時(shí)間的刻度如何設(shè)置?
for(i=1;i<=12;i++)
{//格式化鐘點(diǎn)值
s.Format("%d",j); scale=pDC->GetTextExtent(s,s.GetLength());
R=(double)j*6.28/12;
x=CenterX-(scale.cx/2)+(int)((double)(CenterX-20)*sin(R));
y=CenterY-(scale.cy/2)-(int)((double)(CenterY-20)*cos(R));
pDC->TextOut(x,y,s);
}
問題2:本任務(wù)的時(shí)鐘指針的夾角如何計(jì)算?
Radians=(double)Time.GetHour()+(double)Time.GetMinute()/60.0+(double)Time.GetSecond()/360.0;
Radians*=6.28/12.0;
問題3:本任務(wù)的時(shí)鐘指針如何繪制?
pDC->MoveTo(CenterX,CenterY);
pDC->LineTo(CenterX+(int)((double)(Cen
terX/3)*sin(Radians)),CenterY-(int)((double)(Cen
terY/3)*cos(Radians)));
Radians=(double)Time.GetMinute()+(double)
Time.GetSecond()/60.0;
Radians*=6.28/60;
問題4:本任務(wù)的分針、秒針如何繪制?
在時(shí)鐘指針繪制的基礎(chǔ)上,這兩個(gè)問題很容易解決。
問題5:本任務(wù)的時(shí)間如何動態(tài)實(shí)時(shí)顯示?
根據(jù)任務(wù)要求的功能,學(xué)生很容易想到通過添加定時(shí)器(WM_TIMER)消息,完成時(shí)鐘的實(shí)時(shí)顯示。
在完成現(xiàn)有任務(wù)基本要求之后,可以讓學(xué)生繼續(xù)增加程序的功能。比如分鐘走的不準(zhǔn),如何改善以提高時(shí)間的精確度。通過這樣貼近生活的實(shí)例任務(wù),不僅提高了學(xué)生的學(xué)習(xí)興趣,而且培養(yǎng)了他們解決問題的能力。
三、總結(jié)
任務(wù)驅(qū)動教學(xué)方式通過把教、學(xué)、做有機(jī)的結(jié)合,不僅啟發(fā)了學(xué)生的思路,調(diào)動了他們的學(xué)習(xí)興趣,同時(shí)也激發(fā)他們?yōu)檫M(jìn)一步深入學(xué)習(xí)VC++奠定充分的基礎(chǔ)。VC++是一門實(shí)踐性較強(qiáng)的課程,所以通過該課程的學(xué)習(xí),可以培養(yǎng)學(xué)生的分析問題、解決問題的編程能力,提高他們運(yùn)用所學(xué)知識來解決實(shí)際問題,為今后畢業(yè)設(shè)計(jì)和就業(yè)奠定一定的基礎(chǔ)。
參考文獻(xiàn):
[1]李振清.案例法在Visual C++啟蒙學(xué)習(xí)中的應(yīng)用[J].教育現(xiàn)代化,2016,(1):117-118.
[2]曹西征,孫志勇.VC++教學(xué)中實(shí)例驅(qū)動法和模糊評價(jià)研究[J].計(jì)算機(jī)教育,2015,(21):82-84.
[3]朱明華,揭安全.基于任務(wù)驅(qū)動的高級語言程序設(shè)計(jì)課程改革[J].計(jì)算機(jī)教育,2011,(13):19-21.
[4]駱巖紅,劉勇,李高云.Visual C++課程教學(xué)改革與實(shí)踐研究[J].教育教學(xué)論壇,2017,(45):127-128