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