APP下载

基于任务驱动式的VC++教学改革研究

2018-09-25骆岩红

教育教学论坛 2018年33期
关键词:任务驱动教学改革

摘要:任务驱动法是利用典型的、学生熟悉的实例任务展开教学内容,不仅提高了学生的学习兴趣,而且把理论的学习融入到实际的问题解决中,极大地调动了学生的主动性和积极性。实践得以证明,本文提出的改革方案在一定程度上增强了课堂教学效果,并为学生编程能力的提高提供了必要的条件。

关键词:Visual C++;任务驱动;教学改革

中图分类号:G642.0 文献标志码:A 文章编号:1674-9324(2018)33-0196-02

一、引言

開设Visual C++程序设计(简称VC++)课程的宗旨是培养学生运用计算机编程技术来解决实际问题。这就要求学生在掌握基本课程知识的基础上,如何运用所学的知识来解决实际问题,这才是关键。但是由于VC++的编程规模庞大,结构复杂,并且MFC提供的应用程序框架代码量大,专业性强,所以使很多初学者望而却步。为了克服学生的这种心理,同时为了提高课程教学的效果,我们有必要对教学进行改革。

二、任务驱动法基本理论与实施

1.任务驱动法的基本理论。任务驱动法就是根据课程教学目的的要求,选择贴近生活的实际工作项目,组织学生通过具体的实例分析、思考和交流,提出解决办法的同时,导入课堂教学内容。这种由任务为启发的方式,调动了课堂气氛,增加了学生对所学内容的兴趣,而且培养了学生自主学习和相对独立分析、解决问题的能力。任务驱动法,突出“教、学、做”一体化的教学理念,起到丰富教学内容、激发学生学习情绪、加强师生互动的效果。

2.任务驱动法的具体实施。任务的选择应该从教学内容为出发点,这就需要通过具体的实例来实现。利用典型的、学生熟悉的实例导入教学内容,不仅提高了学生的学习兴趣,而且把理论的学习融入到了实际的问题解决中。

VC++课程学习内容包括:(1)C++基础知识介绍;(2)Windows编程原理;(3)图形设备接口;(4)对话框介绍;(5)常用控件介绍;(6)窗口界面元素;(7)文档与视图;(8)数据库。对于第一部分的介绍,因为有C语言课程的基础,所以学习该部分没有太大的跨度,但是由于课时有限,如果真正让学生掌握,还是有很大难度。所以对于这部分的学习,除了课堂学习之外,我们在课前导入任务的同时,课下会让学生继续完成一些任务。

从第二部分开始,内容的学习有点跨度感,我们在介绍Windows应用程序的特点的基础上,进一步引入MFC编程的运行机制介绍,使学生从早期的控制台编程的习惯中,逐步地认识和接受一种可视化的编程界面。在这一系列内容的讲解中,我们策划了很多的实例,比如:实时走动的时钟盘面、滚动字体、周期变化的颜色的字体、空心字、窗口菜单/工具栏设置等。为了消除学生对这部分学习的心理恐惧感,在现有的MFC框架支持下,给学生由浅入深地引入一些实例任务,以此增加学生的学习兴趣,并帮助他们理解知识。

3.具体任务的设计。(1)屏幕保护任务的设计。

①任务结果的展示。将屏幕保护结果:滚动字体的可视化效果演示给学生。②任务分析。问题1:字体滚动时,发生改变的实质是什么?根据问题的提出,使学生认识到动态效果的实现其实就是位置的改变,这样在显示时,就不能固定其坐标,例如通过“pDC->TextOut(x,100,str);”来实现。问题2:文字滚动时,坐标是如何改变的?我们接着上面问题,横坐标的变化是否存在规律性或者是否存在周期性?以此启发学生想到定时器(WM_TIMER)消息的添加。问题3:定时器消息关联的函数中如何添加代码?按规律或者周期性变化的坐标如何改变?照这样分析下去,所要添加的代码问题就基本解决了。(2)“时钟”任务的具体实施。选择实时走动的“时钟”作为任务对象,让学生掌握VC++中比较常用的图形绘制设计方法。引导学生对VC++中的绘图工具进行探究,同时从设计界面、编写代码等各个方面的内容展开教学目标和教学计划,使学生在这样的讲解步骤中,逐步体会和学习VC++程序开发的流程。

①任务结果的展示。将“时钟”的简单程序演示给学生,让其观察执行结果的动态效果。②任务的分析。首先针对“时钟”的基本界面结构的绘制方法,如何选择绘图工具进行整体的制作。

问题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:本任务的时间如何动态实时显示?

根据任务要求的功能,学生很容易想到通过添加定时器(WM_TIMER)消息,完成时钟的实时显示。

在完成现有任务基本要求之后,可以让学生继续增加程序的功能。比如分钟走的不准,如何改善以提高时间的精确度。通过这样贴近生活的实例任务,不仅提高了学生的学习兴趣,而且培养了他们解决问题的能力。

三、总结

任务驱动教学方式通过把教、学、做有机的结合,不仅启发了学生的思路,调动了他们的学习兴趣,同时也激发他们为进一步深入学习VC++奠定充分的基础。VC++是一门实践性较强的课程,所以通过该课程的学习,可以培养学生的分析问题、解决问题的编程能力,提高他们运用所学知识来解决实际问题,为今后毕业设计和就业奠定一定的基础。

参考文献:

[1]李振清.案例法在Visual C++启蒙学习中的应用[J].教育现代化,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

猜你喜欢

任务驱动教学改革
任务驱动, 启发学生自学