C++教学方法探索

2009-06-01 07:27李永娜
职业·中旬 2009年12期
关键词:程序设计语句程序

李永娜

《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);

cout<

}

这个程序中,实参向形参传递数据的方式是值传递。当调用swap时,将实参a和b的值复制给形参x和y,并在swap函数的内部完成了x和y的交换。由于形参x、y和实参a、b各自拥有自己的内存单元,a和b并没有完成交换。

程序2:

swap(int&x,int&y)

{inttemp;

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);

cout<

}

这个程序中采用的参数传递方式是地址传递。此时,通过两个指针p1和p2分别指向变量a和b,在swap函数中通过指针实现了a和b的值交换。

程序4:

swap(int*p1,int*p2)

{int*p;

p=p1;p1=p2;p2=p;}

voidmain()

{inta=10,b=20;

swap(&a,&b);

cout<

}

这种参数传递方式虽然也是把地址传递给指针变量,但在swap函数中进行交换的却是两个指针,也就是交换的结果是p1指向b,p2指向a,而a和b的值并没有交换。因此运行结果也是错误的。

通过这一案例的讨论、分析和总结,学生很快就能从理论上掌握函数的调用及参数的传递方法。同时,结合上机实践就能使学生更好地理解和记忆所学的知识。

3.发散思维教学法

要在有限的课时内完成相应的教学任务,又让学生掌握必要的知识,关键是让学生学会如何活学活用,培养学生的发散性思维。同样的一个问题,要引导学生从不同的角度来进行思考,通过自己对问题的理解采取不同的方法来解决。这样不仅有助于学生对知识的巩固,同时还能让学生具备灵活的应变能力,将机器语言真正转化为“自己的语言”。例如,学习循环结构时,通过“10!”来讲解不同的循环语句。

方法一:while语句

voidmain()

{inti=1;longfac=1;

while(i<=10)

{fac*=i;i++;}

cout<<"10!="<

方法二:do…while语句

voidmain()

{inti=1;longfac=1;

do

{fac*=i;i++;}whle(i<=10);

cout<<"10!="<

方法三:for语句

voidmain()

{inti=1;longfac=1;

for(i=1;i<=10;i++)

{fac*=i;}

cout<<"10!="<

从上面的例子可以看出,同一问题具有多种不同的解决办法,可使学生轻松掌握循环语句的格式和使用方法,深刻体会C++的灵活,激发学生思考和学习积极性。

实践表明,上述教学方法的实施,不仅培养了学生参与意识、动手能力和思维过程,而且也让学生通过编写程序完成任务,从而感觉到人类是如何通过程序来驱使计算机为我们的工作、生活和学习提供支持服务的成就感,同时也使学生从枯燥的语法、规则、程序学习中激发了学习的兴趣,提高了教学质量,增强了教学效果。

三、实践与巩固

上机这一环节是C++的重要组成部分。针对不同的学习基础和不同的学习要求,部署不同层次和梯度的作业,既保证大部分同学能够完成,也能使基础好的学生的得到相应的提高。因此,可以将作业分为基本作业和思考作业,这也是引发学生学习兴趣的一个重要手段。如果有条件的话,还可结合专业做课程设计。程序设计技能的培养,只有通过大量的编程训练和上机实践才能获得。为此,必须提供尽可能多的机时让学生进行程序的编辑、编译、调试和运行实践。

综上所述,C++程序设计的教学是否成功,关键在于对教学内容和教学方法的合理组合。但现实中由于教学目的、教学内容及学生情况等因素千差万别,因此没有哪一种教学模式或教学方法是普遍适用的。这就要求教师在教学过程中要根据实际情况,采用合适的教学模式和教学方法,既要充分发挥教师的指导作用,又要充分调动学生的学习积极性和主观能动性。在具体的教学过程中,任课教师要注意从C++的特点出发,理论联系实际,树立程序设计的思想,传授程序设计的方法,从而获得最佳的教学效果。

(作者单位:广东省高级技工学校)

猜你喜欢
程序设计语句程序
重点:语句衔接
基于Visual Studio Code的C语言程序设计实践教学探索
从细节入手,谈PLC程序设计技巧
试论我国未决羁押程序的立法完善
“程序猿”的生活什么样
英国与欧盟正式启动“离婚”程序程序
高职高专院校C语言程序设计教学改革探索
创卫暗访程序有待改进
PLC梯形图程序设计技巧及应用
如何搞定语句衔接题