论文部分内容阅读
[摘要]计算机程序设计类课程的教学需要新思路来提高学生编程实践能力差的问题。以VC++课程教学为例,介绍在提高学生编程实践水平方面应用试验法的教学探索。
[关键词]试验法 VC++ 案例教学
中图分类号:G43文献标识码:A文章编号:1671-7597(2009)0910178-01
一、试验法教学的优越性
《Visual C++(简称VC++)程序设计》这门课程抽象复杂,学生难以掌握VC++的精髓,尤其是对高职学生来说,如果采用传统的教学模式,即教师详细讲解语法知识、编程技巧、课后上机练习的教学套路,很难收到较好的教学效果。我们经过多年的教学研讨,总结出对于高职学生来说,采用试验法讲授VC++课程,学生学习兴趣可以获得很大提高,学生编程能力不断增强,即教师在讲解过程中不断设置疑问点引起学生兴趣或者在学生遇到疑问而学生又有一个想象的思路时我们采用不直接给出方法或者答案,而是采用让学生去上机试验并将在试验过程中出现的问题与发现的新情况向教师反馈,这样因为问题的解决主要依赖学生,而教师又有对问题的追踪,因此学生会非常认真的对待,并且学生在主动学习的过程中会学习到更多的新知识,从实践中获得的知识更容易移植到将来的实际工作中。这样,理论紧密联系实际,既激发了学生的学习兴趣,又培养了学生自学及动手能力,收到了良好的教学效果。
二、试验法的教学实践与做法
(一)及时设置疑问或捕捉学生遇到的问题。由于VC++的复杂性,很多教师在讲到具体操作时会采用告诉学生应该怎样做,一般而言学生会接受就是这样做的思维,不会提出疑问,而事实上程序设计大多数没有固定的答案,我们可以采用多种方法完成相同的功能,只是会采用习惯上经常用的方法,这样对于扩充学生的思路是极为不利的。因此,我们采用设置疑问,鼓励尝试(试验)法解决问题。例如,在讲到为应用程序添加菜单资源IDR_MAINFRAME时,为了验证该菜单项是否可用,要为该菜单项添加消息处理函数。那么,现在的问题是:这个消息是由框架类、视图类、文档类和应用程序类中的哪一个类来捕获呢[1]?另外,如果4个类都可以捕获到这个消息,那么它们有没有先后顺序呢?学生在进行实际应用程序的开发时使用哪个类来捕获菜单消息呢?学生对此问题充满了好奇,是哪个类捕获菜单消息呢?他们带着疑问对此问题进行上机试验,当教师对此问题进行反馈时学生回答问题非常踊跃,因为他们已经掌握了这个问题的比较成熟的解决办法,学生首先在各个类中分别添加了菜单消息处理函数:
void CMainFrame::OnTest()
{
// TODO: 在此添加命令处理程序代码
MessageBox("框架类对该菜单进行了命令响应");
}
//在CMenuApp类中添加“Test”菜单的命令响应函数
void CMenuApp::OnTest()
{
// TODO: 在此添加命令处理程序代码
AfxMessageBox("应用程序类对菜单做出了响应");
}
//在CMenuDoc类中添加“Test”菜单的命令响应函数
void CMenuDoc::OnTest()
{
// TODO: 在此添加命令处理程序代码
AfxMessageBox("文档类对菜单做出了响应");
}
//在CMenuView类中添加“Test”菜单的命令响应函数
void CMenuView::OnTest()
{
// TODO: 在此添加命令处理程序代码
MessageBox("视类对菜单做出了响应");
}
具体说来,通过上机试验及教师及时反馈,学生对这个问题的理解可以概括如下:
1.框架类、视图类、应用程序类和文档类都可以捕获到菜单消息;
2.4个类都对菜单命令进行了响应。它们对菜单命令的捕获顺序为,首先是视图类最先响应这个菜单命令,如果视图类对菜单项做出响应,则其他类就不再对该菜单项做出响应,否则,接下来是文档类对该菜单项做出响应,如果文档类未对菜单项做出响应,则由框架类对菜单项做出响应,最后是应用程序类对菜单命令进行响应;
3.由于CMenuApp类和CMenuDoc类不是从CWnd类派生来的,所以它们不能使用CWnd类的MessageBox函数,因此可以使用全局的MessageBox函数或者使用程序框架的函数AfxMessageBox;
4.习惯上对于菜单资源的捕获放在框架类或视图类中进行。
(二)结合案例,在上机试验中对问题进行扩充。案例教学一直是程序设计类课程中比较好的一个方法,不过很多时候是教师讲解完一个案例,让学生上机再重做一便,目的是通过练习学生可以掌握该案例的设计思路,不过这样做的缺点是学生被动接受练习,他们认为完成案例练习就可以了。实际上,大部分学生的上机试验仅限于此。正是考虑到案例教学法的优点和缺点,我们在设计上机任务时对案例进行了扩充,扩充的部分和案例类似但又高于案例本身。例如,在讲到对话框和控件的应用时,我们的案例是:设计一个单位换算方面的功能,包括3种类型单位:长度单位(米、分米、厘米和毫米)、时间单位(小时、分钟和秒)(要求界面布局合理)[2]。我们布置学生上机练习的任务是:在此基础上增加一些功能,即增加完成二进制、十进制和十六进制之间的转换程序部分,值得肯定的是学生不但完成了此增加部分功能的实现还考虑到输入数据的限制(如二进制数据只能输入0和1)。
三、结束语
计算机程序设计教学只有把提高学生编程应用能力作为首要目标,学以致用,才能使学生真正具备基本的专业素质,成为合格的计算机人才。我们在教学实践中通过在VC++程序设计课程中使用试验法来激发学生学习兴趣、增强他们对问题的探索,注重了对学生技能的培养;通过对编程案例的模拟和深化来加深学生对相应概念、知识点的理解,通过综合案例将各种知识点贯穿起来,强化编程应用和技巧,提高学生分析、解决问题的能力。
参考文献:
[1]孙飞等,Visual C++.NET入门与提高[M].北京:清华大学出版社,2002.07.
[2]孙鑫,VC++深入详解[M].北京:电子工业出版社,2007.03.
作者简介:
孙连云(1976-),女,山东人,硕士,讲师,主要研究方向:计算机软件方面开发研究与教学。
[关键词]试验法 VC++ 案例教学
中图分类号:G43文献标识码:A文章编号:1671-7597(2009)0910178-01
一、试验法教学的优越性
《Visual C++(简称VC++)程序设计》这门课程抽象复杂,学生难以掌握VC++的精髓,尤其是对高职学生来说,如果采用传统的教学模式,即教师详细讲解语法知识、编程技巧、课后上机练习的教学套路,很难收到较好的教学效果。我们经过多年的教学研讨,总结出对于高职学生来说,采用试验法讲授VC++课程,学生学习兴趣可以获得很大提高,学生编程能力不断增强,即教师在讲解过程中不断设置疑问点引起学生兴趣或者在学生遇到疑问而学生又有一个想象的思路时我们采用不直接给出方法或者答案,而是采用让学生去上机试验并将在试验过程中出现的问题与发现的新情况向教师反馈,这样因为问题的解决主要依赖学生,而教师又有对问题的追踪,因此学生会非常认真的对待,并且学生在主动学习的过程中会学习到更多的新知识,从实践中获得的知识更容易移植到将来的实际工作中。这样,理论紧密联系实际,既激发了学生的学习兴趣,又培养了学生自学及动手能力,收到了良好的教学效果。
二、试验法的教学实践与做法
(一)及时设置疑问或捕捉学生遇到的问题。由于VC++的复杂性,很多教师在讲到具体操作时会采用告诉学生应该怎样做,一般而言学生会接受就是这样做的思维,不会提出疑问,而事实上程序设计大多数没有固定的答案,我们可以采用多种方法完成相同的功能,只是会采用习惯上经常用的方法,这样对于扩充学生的思路是极为不利的。因此,我们采用设置疑问,鼓励尝试(试验)法解决问题。例如,在讲到为应用程序添加菜单资源IDR_MAINFRAME时,为了验证该菜单项是否可用,要为该菜单项添加消息处理函数。那么,现在的问题是:这个消息是由框架类、视图类、文档类和应用程序类中的哪一个类来捕获呢[1]?另外,如果4个类都可以捕获到这个消息,那么它们有没有先后顺序呢?学生在进行实际应用程序的开发时使用哪个类来捕获菜单消息呢?学生对此问题充满了好奇,是哪个类捕获菜单消息呢?他们带着疑问对此问题进行上机试验,当教师对此问题进行反馈时学生回答问题非常踊跃,因为他们已经掌握了这个问题的比较成熟的解决办法,学生首先在各个类中分别添加了菜单消息处理函数:
void CMainFrame::OnTest()
{
// TODO: 在此添加命令处理程序代码
MessageBox("框架类对该菜单进行了命令响应");
}
//在CMenuApp类中添加“Test”菜单的命令响应函数
void CMenuApp::OnTest()
{
// TODO: 在此添加命令处理程序代码
AfxMessageBox("应用程序类对菜单做出了响应");
}
//在CMenuDoc类中添加“Test”菜单的命令响应函数
void CMenuDoc::OnTest()
{
// TODO: 在此添加命令处理程序代码
AfxMessageBox("文档类对菜单做出了响应");
}
//在CMenuView类中添加“Test”菜单的命令响应函数
void CMenuView::OnTest()
{
// TODO: 在此添加命令处理程序代码
MessageBox("视类对菜单做出了响应");
}
具体说来,通过上机试验及教师及时反馈,学生对这个问题的理解可以概括如下:
1.框架类、视图类、应用程序类和文档类都可以捕获到菜单消息;
2.4个类都对菜单命令进行了响应。它们对菜单命令的捕获顺序为,首先是视图类最先响应这个菜单命令,如果视图类对菜单项做出响应,则其他类就不再对该菜单项做出响应,否则,接下来是文档类对该菜单项做出响应,如果文档类未对菜单项做出响应,则由框架类对菜单项做出响应,最后是应用程序类对菜单命令进行响应;
3.由于CMenuApp类和CMenuDoc类不是从CWnd类派生来的,所以它们不能使用CWnd类的MessageBox函数,因此可以使用全局的MessageBox函数或者使用程序框架的函数AfxMessageBox;
4.习惯上对于菜单资源的捕获放在框架类或视图类中进行。
(二)结合案例,在上机试验中对问题进行扩充。案例教学一直是程序设计类课程中比较好的一个方法,不过很多时候是教师讲解完一个案例,让学生上机再重做一便,目的是通过练习学生可以掌握该案例的设计思路,不过这样做的缺点是学生被动接受练习,他们认为完成案例练习就可以了。实际上,大部分学生的上机试验仅限于此。正是考虑到案例教学法的优点和缺点,我们在设计上机任务时对案例进行了扩充,扩充的部分和案例类似但又高于案例本身。例如,在讲到对话框和控件的应用时,我们的案例是:设计一个单位换算方面的功能,包括3种类型单位:长度单位(米、分米、厘米和毫米)、时间单位(小时、分钟和秒)(要求界面布局合理)[2]。我们布置学生上机练习的任务是:在此基础上增加一些功能,即增加完成二进制、十进制和十六进制之间的转换程序部分,值得肯定的是学生不但完成了此增加部分功能的实现还考虑到输入数据的限制(如二进制数据只能输入0和1)。
三、结束语
计算机程序设计教学只有把提高学生编程应用能力作为首要目标,学以致用,才能使学生真正具备基本的专业素质,成为合格的计算机人才。我们在教学实践中通过在VC++程序设计课程中使用试验法来激发学生学习兴趣、增强他们对问题的探索,注重了对学生技能的培养;通过对编程案例的模拟和深化来加深学生对相应概念、知识点的理解,通过综合案例将各种知识点贯穿起来,强化编程应用和技巧,提高学生分析、解决问题的能力。
参考文献:
[1]孙飞等,Visual C++.NET入门与提高[M].北京:清华大学出版社,2002.07.
[2]孙鑫,VC++深入详解[M].北京:电子工业出版社,2007.03.
作者简介:
孙连云(1976-),女,山东人,硕士,讲师,主要研究方向:计算机软件方面开发研究与教学。