李永娜
《C++语言程序设计》是高职计算机专业的一门专业基础必修课。C++蕴含了程序设计的基本思想,囊括了程序设计的基本概念,所以是计算机专业的一门基础课程。高等院校开设C++语言程序设计的目的是让学生掌握程序设计的基本方法,逐步形成正确的程序设计思想,同时还能够熟练地使用C++进行程序设计和调试,为其他程序设计课程的学习和应用打下基础。
笔者通过长期的教学实践发现,学生普遍认为C++枯燥难学、概念复杂、容易出错,由此产生了畏学、厌学情绪,严重影响了课程的进一步学习。为了解决学生面临的这一系列问题,笔者针对该课程的自身特点,结合各种教学方法以及教学实例,对如何激发学生的学习兴趣、刺激学生的求知欲,从而提高课程的教学质量、增强教学效果等方面进行了深入地探讨。
一、让学生明确学习目的,激发学生的学习兴趣
学习兴趣就是学生在心理上对学习活动产生爱好、追求和向往的倾向,是推动学生积极主动学习的直接动力。学生只有对所学课程有浓厚的兴趣,才能积极主动和富有创造性地去完成学习任务。可见,学生的学习兴趣直接关系到教学效果的好坏。那么,教学中应如何激发学生的学习兴趣呢?
1.明确学习C++的重要性
学习的重要性也就是这门课程的有用性。在社会竞争日益激烈的今天,学生的学习更看重的是实用性,是课程学习对以后的工作和竞争所起到的作用。当学生深刻地领会到课程学习的重要性之后,对课程的学习兴趣也就油然而生了。
(1)目前,市场对软件工程师以及熟练掌握计算机程序设计的其他专业复合型人才的需求缺口很大。C++作为一种通用的程序设计语言,广泛地应用于软件设计和开发当中。熟练掌握C++程序设计语言,必然会成为计算机专业学生在未来就业竞争中的一个重要筹码。
(2)C++是许多其它商业软件的开发工具。例如,当今世界上最流行的工程制图软件包AUTOCAD就是用C++开发的。另外,大家所熟知的UNIX操作系统也完全是由C++编写的。
(3)C++是其它面向对象语言以及网络编程的基础。面向对象编程语言,如VB、VC++等,虽然摆脱了面向过程语言的许多细节,使设计程序轻松很多,但用户对其对象化的事件仍需编写代码来驱动实现。这些代码里面仍包含结构化程序设计的顺序、选择、循环三种基本结构。因此,C++的编程思想是面向对象语言程序设计的理论基础。另外,随着Web网页技术的不断普及和发展,人们制作漂亮的、个性化的Web网页并不是件难事。问题在于深层次的网络技术开发仍然必须掌握一定的编程工具,如CGI程序、ASP脚本语言、JAVASCRIPT等等。实际上,这些流行的网络编程语言很多都混合了C++的语法,这类语言在数据、运算符、函数的调用、程序语句的书写、循环的控制上都极为相似。
(4)C++编程有助于训练和培养计算机思维。C++的学习不仅是一门纯粹的技术或技能,而且是一种思维训练的工具,有助于锻炼人们的思维。这就像数学对人的思维所起作用一样,使人的思维更精确、更细致。当学生对该门课程的重要性有一个深刻认识的时候,自然会把C++的学习摆在一个较重要的位置加以重视。这是培养学生兴趣的一个重要方面。
2.展示C++语言程序设计的魅力,刺激学生的求知欲
将抽象的语言形象化,使枯燥的机械性的学习过程转化为一种趣味性的认知过程,将C++语言所拥有的魅力展现在学生面前,让学生感受到C++学习其实也是一项其乐无穷的事情。
(1)把趣味性问题作为教学实例。C++语言的学习过程是一个相当抽象的过程,各种各样的语句都以符号的形式展现在面前,学生难免会对此产生厌倦。此时,可以在课堂的案例中加入小游戏及图形设计内容,以趣味性的实例作为教学的例子。
在讲解一个新的知识体系前,运用即将学到的知识设计一个吸引学生的小游戏或动画。课前,教师首先展示动画,侧面引导学生,让他们有“只要我学会了这部分知识也能自己做出来”的信心,这样会大大提高学生的学习热情。
例如,在讲解“选择与循环结构”之前,笔者首先在课堂上向学生展示了一个“猜数游戏”,让学生对此产生了兴趣,提高了上机时的积极性。当他们学习了if语句后,就可以编出程序的判断部分,学习了循环语句后,就可完成一次猜数字的过程。而学习了循环嵌套后,则可实现连续猜数字,成为一个完整的游戏。从具体实例切入,由浅入深、循序渐进的教学模式,能够很好地调动学生学习的主动性,培养他们对课程学习的兴趣。
(2)选择经典的数学问题作为课堂案例。正如长篇大论的讲道理往往不如巧妙的使用一个典故或者一句名言更具说服力一样,经典的数学问题作为课堂案例会比一般的练习题更能引起学生兴趣。例如,“百钱百鸡”问题是用C++程序解决数学方程运算问题的一个典型实例,用到了程序中典型的算法——“穷举法”。
将这样的经典数学问题作实例,可以使学生既学习算法,又体会到运用C++编程解决实际问题的乐趣。又如演示数学中一元二次方程的求解程序,同样如此。用所学的知识解决现实问题,使学生能够感受到理论在实际中的应用,从而进一步激发他们向更高、更远的目标奋进。实践表明,这些学以致用的实例能大大激发学生对C++学习热情。因此,在学习过程中,要让学生体验到成功的欢乐,获得成就感,强化学生的求知欲望从而使学生学习C++的兴趣和热情能够持久保持。
二、多样化的教学方法
1.启发式教学法
程序设计方法是多种多样的,大多数问题都不只有一个解法。因此,在教学过程中,教师不应对学生进行刻意地限制,而要鼓励学生按照自己对问题的理解采用自己认为合适的方法进行处理。教师则对各种方法进行总结,并对各种方法的优缺点进行讲解。通过这种引导启发式的教学方法,可以调动学生的积极性。例如,1+2+3+…+100=?可以采用while语句,也可以采用do…while语句,还可以采用for语句。教师可以引导学生进行思考,让他们采用不同的语句来实现。这样不仅能够调动学生的主观能动性,还能让他们在不知不觉中巩固了所学的知识,加深了对本质的认识。
2.案例比较教学法
结合课堂要求,选择恰当案例,采用多个案例演示比较,经过学生的讨论后,及时做出讲评,并再次讲授案例分析中所需要用到的理论知识和技能。通过对各种案例的比较,能够让学生深刻领会到不同的语句之间的区别和联系,有助于他们更准确地进行运用。例如,在学习函数这一章时,为了说明函数调用时参数传递的方式,设计如下案例供学生讨论。
案例:交换主函数两个变量的值,要求:main函数中两个变量,采用函数调用实现变量交换后,然后输出交换后结果,用swap函数实现。
学生经过分析讨论,得到以下四种方法:
程序1:
swap(intx,inty)
{inttemp;
temp=x;x=y;y=temp;}
voidmain()
{inta=10,b=20;
swap(a,b);
temp=x;x=y;y=temp;}
voidmain()
{inta=10,b=20;
swap(a,b);
cout< } 这个程序中采用的是另外一种参数传递方式——使用引用。此时实参a初始化形参x,实参b初始化形参y,在swap函数中实现了a和b的值交换。 程序3: swap(int*p1,int*p2) {intp; p=*p1;*p1=*p2;*p2=p;} voidmain() {inta=10,b=20; swap(&a,&b);