论文部分内容阅读
[摘 要] 本文分析了目前软件行业的发展以及教学现状,认为培养学生学习程序设计语言的兴趣,提高他们学习的积极性,对提高教学质量至关重要。
[关键词]计算机软件程序设计语言兴趣
自从计算机被发明以后,我们的世界无时无刻不在被它影响着,计算机已经无处不在。办公娱乐、网上冲浪、实时通讯等等,给我们的生活带来了便捷、高效和快乐。众所周知,计算机本身并做不了什么,真正让它无所不能的是“软件”。
随着我们越来越离不开计算机软件,使得软件行业带来了巨大效益。每年都有大批的软件从业者进入这个行业。由于想进入这个行业的学生很多,近些年来,众多高校,职业培训机构无不纷至沓来,涉足计算机软件开发的职业培训。但是,每年都也会有很多的学生放弃学习,因为软件编程学起来并不容易。我们看似很炫、很实用的计算机软件,是由无数的编程语言和大量的数据组成的。软件工程师要做的就是将它们组织运行起来。看似发展前景广阔,待遇不菲的软件工程师,在从业之前都要经过诸如数学、基础编程语言、数据结构各种专业知识的学习。基础打好了,才能在这一行业有更好的发展。但大部分学生因为数学基础差、英语没学好而没有兴趣,所以程序设计语言课也是教师教得最辛苦、学生学得最费劲的一门课。鉴于此,培养学生学习程序设计语言的兴趣,提高他们学习的积极性,对提高教学质量至关重要。
第一,帮助学生树立自信,引发学生学习兴趣。针对一部分学生基础较差、学习前有畏难情绪的情况,教师的首要任务,就是帮助学生克服畏难心理,树立学好这门课的信心。告诉学生学习程序设计语言并没他们想象的那么难,只要大家没有畏难心理,一定能学好的。其次,要努力发现学生的闪光点,积极鼓励他们学习上的进步,即使是点滴的成功都要予以肯定。在课堂教学中,可以先让学生回答一些简单的问题,编写一些简单的程序,使他们觉得自己学有所得,有一种自豪感,使他们增加了学好程序设计语言的自信心,进而也引发了学生的学习兴趣。
第二,构建良好师生关系,激发学生学习兴趣教与学双边活动的顺利进行,需要融洽的感情基础。教育学家于永正先生说过:“没有崇拜,就没有教育。”而这种崇拜除来自于教师渊博的知识、广博的文化修养,更来自于师生之间心灵的沟通、情感的交流。教师对学生的关心、爱护往往会激发学生学好这一门学科的兴趣,这种情感往往是课堂的催化剂,是信息传递的桥梁。“亲其师而信其道”,所以,要想让学生学好这门课,对这门课感兴趣,教师首先要做学生的良师益友。
第三,合理的调整教学内容,应用好授课中的技巧,对提高学生的学习积极性是很有好处的。下面,我们来分析一下程序设计语言课中的一些问题和现象,并使用教学技巧来解决这些问题。
现象1:学生上课时,对于一些理论性很强的内容常常是听了一会儿就开始瞌睡,主要是因为理论性太强,枯燥无味,甚至没有听懂。往往这种知识点都是很基础很重要的,如果没学会,对后面的学习有很大的影响。在讲解这类知识点的时候,最好不要生搬硬套,人云亦云,可以采用一些贴近学生的方法,效果会更好。例如在讲解数组时,如果一开始就讲解数组如何定义、如何使用,就会让学习变得单调,而且也无法理解为什么要使用数组。这时,我们可以使用一个书店中书架的例子,将同一类书籍用书架组织起来并编号。这样方便查找,管理。然后直接过渡到数组,说明程序中的变量也可以按照这个思路进行组织,就是要讲解的数组。通过这个例子,学生能够很容易理解为什么使用数组,如何使用数组。如果要讲解二维数组时,那么同样可以说,书店有很多层和区域,不同层和区域又有不同的类别划分,使得整个的学习过程都能够生活化,易于学生理解,同时也容易培养学生的兴趣。但是要注意,引入生活中的实际场景,一定要是学生熟悉的,并且易于理解,例如在讲解面向对象编程时,都会使用一些例子引入,像猫、狗、汽车、飞机之类。如果想要达到最好的效果,就应该了解自己的学生平时最喜欢什么,使用他们最感兴趣的事物,效果将事倍功半。如果使用一些远离他们生活的例子,会使他们更加疑惑,起到反效果。
现象2:学生在开始学习编程时,代码发生错误,往往是没有任何办法。这主要是由于学生不了解自己的程序的执行过程,无法准确地判断出代码出错的位置。一个好的编程人员,必须具备调试和排错的能力。很多学生忽略这一点,因为在他们看来能写出来程序就行了。所以,在上课的过程中,必须要注意培养学生排错、调试的能力和习惯。这种能力的培养是从平时的一点一滴做起的,遇到不容易理解的代码或者是讲解新的程序代码时,要使用添加断点的方式,演示并跟踪程序的执行情况。例如,学生在学习c#语言时,编写while循环时,有时候会出现不执行循环结构而且找不到原因的现象。如果在讲解while循环的时候,使用断点跟踪的方式让学生仔细观察代码的执行过程,如图1所示:
并强调循环条件、循环内容、以及循环变量i的变化过程。再遇到类似问题,学生就可以及时的判断并找到相应的位置并解决。这个技巧看似简单,但在使用的时候要注意设置断点的位置一定要准确,并结合执行语句的变化,提醒学生查看变量值的变化,已达到最佳效果。
现象3:教师在讲解一个知识点后,询问学生是否掌握,很多学生碍于面子,明明不会也表示自己会了。这种情况下,教学的效果不容易控制,时间长了就会使学生学不明白,教师也很被动。为了解决这个问题,我们可以采用现场编程的方式。在讲完某个知识点后,布置一个简单的、代表性强的编码题,要求学生使用纸笔当场完成。教师在整个过程中巡视,查看学生的掌握情况,当学生做完之后,教师对于整体的完成情况进行点评,完成不好或者是典型的错误要进行纠正,并提醒其他人不要犯类似的错误。这个技巧不但可以让教师了解学生的掌握情况,还能锻炼学生的手写代码能力,在他们找工作的时候,往往要答一些笔试题,这样做会有很大的帮助,可以说是一个双赢的教学技巧。但是,在使用时需要注意编写的题目不要超过5分钟,因为过于复杂的代码会耽误很多课堂时间,使学生失去耐心。
现象4:在程序设计语言课的授课过程中,我们经常会遇到这样的问题,一个比较容易出错的地方,学生总是反复的出错。可能是因为学生马虎,但归根到底是因为学生掌握不牢固造成的。对于这种容易出错的地方,学生听课的时候往往不加以注意,或者印象不深。遇到这样的场合,可以使用“课堂陷阱”的教学技巧。在出错的地方,设置错误陷阱,在讲解时故意调入陷阱,吸引学生的注意力。这时候有的学生会有幸灾乐祸的心态,有的学生会将注意观察教师如何跳出这个“陷阱”,解决问题。无论对于哪种心态的学生,跳出“陷阱”的过程对他们来说都是一个关注点。当教师解决这个问题后,他们会佩服教师的能力,同时也会记住这个错误时如何发生的。从而解决学生对于容易出错知识点的理解和记忆。同样,我们使用前面的while循环的例子。这个例子容易出错的地方是循环变量i的变化,如果忘记写i++语句,就会陷入死循环。教师在讲解这里的时候,可以故意不写这个语句,当程序陷入死循环时,可以装作很无奈的样子,同时可以问学生是怎么回事,既起到了“陷阱”的作用,还可以锻炼学生排错的能力。然后教师在将这个问题进行梳理,分析错误原因并给予更正。
当然,这个技巧需要教师有很好的课堂控制能力,调入“陷阱”后一定要有足够的能力从中调出来。所以备课时要反复进行测试,确保万无一失。编程课中,教师现场编写代码时,偶尔也会出现自己没有预见的错误,为了控制整个课堂,可以将这个错误转变为“课堂陷阱”,让学生找出问题所在,同时留给自己充分的思考时间,找到解决办法。可以说这个技巧不但强调了教学的重点,而且能帮助教师更好的的控制课堂。
现象5:在程序设计语言课的上机课中,遇到一个上机题,学生往往不知道从何入手,坐在那里东张西望,等待拷贝其他同学的代码,或者就是反正也做不出来,得过且过。主要原因是上机题有些复杂,学生没有思路。在这种情况下,教师有很多种方法,例如,直接给学生讲解解决问题的步骤,让学生按照步骤实现,有的干脆让会的学生给不会的学生讲解,其实这都不是最好的办法。引导学生的思路是对的,应该如何引导才能够有最好的效果呢?不妨想一下,我们小时候学会一个24+13 = 37是如何学会的呢?肯定要通过10以内的加法来计算,4+3和2+1。这其实就是将复杂的问题进行拆解,然后处理简单的问题,复杂的就迎刃而解了。
同样道理,编程的复杂问题也可以使用这种方法。只是需要对复杂的问题进行拆解,我们称这种方法为“任务分解技巧”。如何对复杂的问题进行拆解是一个很关键的环节,需要教师们多花一些心思。在这里,举一个例子。假如想在控制台打印一个等腰三角形,如下:
*
***
*****
*******
遇到这个问题时,通常不知道如何入手,可以将它拆解为如下几个简单的问题。让解决这个问题循序渐进,起到引导学生思路的作用。
第一步:打印矩形
*******
*******
*******
*******
这个问题相对简单,可以使用二重循环,外层循环打印行数,内层循环打印“*”。代码如下:
// 外层循环控制行数
for (i = 1; i <= 4; i++)
{
// 内层循环控制每行打印几个 *
for (j = 1; j <= 7; j++)
{
Console.Write("*");
}
Console.WriteLine();// 换行
}
第二步:打印正直角三角形
*
***
*****
*******
这时引导学生思路,外层循环不变,还是打印行数,而内层循环打印“*”的个数发生了变化,这种变化时行数乘以2再减1,具体代码如下:
for (i = 1; i <= 4; i++)
{
for(j = 1;j <= 2*i-1; j++)
{
Console.Write("*");
}
Console.WriteLine();
}
第三步:打印倒直角三角形
***
**
*
同样引导思路,代码如下
for (i = 1; i <= 3; i++)
{
for(j = 1;j <= 4-i; j++)
{
Console.Write("*");
}
Console.WriteLine();
}
第四步:这是最关键的一步,让学生观察这三个图形,如果将第一步的图形的左上角,右上角拿掉就会成为那个等腰三角形,如下图所示:
*******
*******
*******
*******
而拿掉的左上角我们上面曾经打印过,把“*”替换成一个空字符即可。也就是说,可以采用打印空字符和“*”的方式来打印等腰三角形,具体代码如下:
for (i = 1; i <= 4; i++)
{
// 第一个循环控制每行打印几个空格
for (j = 1; j <= 4 - i; j++)
{
Console.Write(" ");
}
// 第二个循环控制每行打印几个*
for (j = 1; j <= 2 * i - 1; j++)
{
Console.Write("*");
}
Console.WriteLine();// 换行
}
我们看到,采用这种拆解的方式,不但让学生循序渐进的理解了如何打印一个等腰三角形,同时还加大了二重循环的训练量,提高了代码的熟练度,培养学生将复杂的事情简单化的良好习惯,而且能够划分阶段控制学生的练习进度,避免“放羊”现象的发生。
这种“任务分解技巧”需要教师在课下认真备课,对疑难的上机题目进行合理的拆解,拆解的每个阶段时间要有预估,避免发生容量过大的情况发生,每个阶段如何控制也要在备课时有明确的说明。
综上所述,影响学生对程序设计的兴趣因素很多,既要考虑学校、教师和学生的实际情况,还应重视采用科学、合理、有效和先进的教学方法实施教学。总之,我们要做到与时俱进,开拓创新,不断提升自我知识水平,从而促进教学质量的提高。
[关键词]计算机软件程序设计语言兴趣
自从计算机被发明以后,我们的世界无时无刻不在被它影响着,计算机已经无处不在。办公娱乐、网上冲浪、实时通讯等等,给我们的生活带来了便捷、高效和快乐。众所周知,计算机本身并做不了什么,真正让它无所不能的是“软件”。
随着我们越来越离不开计算机软件,使得软件行业带来了巨大效益。每年都有大批的软件从业者进入这个行业。由于想进入这个行业的学生很多,近些年来,众多高校,职业培训机构无不纷至沓来,涉足计算机软件开发的职业培训。但是,每年都也会有很多的学生放弃学习,因为软件编程学起来并不容易。我们看似很炫、很实用的计算机软件,是由无数的编程语言和大量的数据组成的。软件工程师要做的就是将它们组织运行起来。看似发展前景广阔,待遇不菲的软件工程师,在从业之前都要经过诸如数学、基础编程语言、数据结构各种专业知识的学习。基础打好了,才能在这一行业有更好的发展。但大部分学生因为数学基础差、英语没学好而没有兴趣,所以程序设计语言课也是教师教得最辛苦、学生学得最费劲的一门课。鉴于此,培养学生学习程序设计语言的兴趣,提高他们学习的积极性,对提高教学质量至关重要。
第一,帮助学生树立自信,引发学生学习兴趣。针对一部分学生基础较差、学习前有畏难情绪的情况,教师的首要任务,就是帮助学生克服畏难心理,树立学好这门课的信心。告诉学生学习程序设计语言并没他们想象的那么难,只要大家没有畏难心理,一定能学好的。其次,要努力发现学生的闪光点,积极鼓励他们学习上的进步,即使是点滴的成功都要予以肯定。在课堂教学中,可以先让学生回答一些简单的问题,编写一些简单的程序,使他们觉得自己学有所得,有一种自豪感,使他们增加了学好程序设计语言的自信心,进而也引发了学生的学习兴趣。
第二,构建良好师生关系,激发学生学习兴趣教与学双边活动的顺利进行,需要融洽的感情基础。教育学家于永正先生说过:“没有崇拜,就没有教育。”而这种崇拜除来自于教师渊博的知识、广博的文化修养,更来自于师生之间心灵的沟通、情感的交流。教师对学生的关心、爱护往往会激发学生学好这一门学科的兴趣,这种情感往往是课堂的催化剂,是信息传递的桥梁。“亲其师而信其道”,所以,要想让学生学好这门课,对这门课感兴趣,教师首先要做学生的良师益友。
第三,合理的调整教学内容,应用好授课中的技巧,对提高学生的学习积极性是很有好处的。下面,我们来分析一下程序设计语言课中的一些问题和现象,并使用教学技巧来解决这些问题。
现象1:学生上课时,对于一些理论性很强的内容常常是听了一会儿就开始瞌睡,主要是因为理论性太强,枯燥无味,甚至没有听懂。往往这种知识点都是很基础很重要的,如果没学会,对后面的学习有很大的影响。在讲解这类知识点的时候,最好不要生搬硬套,人云亦云,可以采用一些贴近学生的方法,效果会更好。例如在讲解数组时,如果一开始就讲解数组如何定义、如何使用,就会让学习变得单调,而且也无法理解为什么要使用数组。这时,我们可以使用一个书店中书架的例子,将同一类书籍用书架组织起来并编号。这样方便查找,管理。然后直接过渡到数组,说明程序中的变量也可以按照这个思路进行组织,就是要讲解的数组。通过这个例子,学生能够很容易理解为什么使用数组,如何使用数组。如果要讲解二维数组时,那么同样可以说,书店有很多层和区域,不同层和区域又有不同的类别划分,使得整个的学习过程都能够生活化,易于学生理解,同时也容易培养学生的兴趣。但是要注意,引入生活中的实际场景,一定要是学生熟悉的,并且易于理解,例如在讲解面向对象编程时,都会使用一些例子引入,像猫、狗、汽车、飞机之类。如果想要达到最好的效果,就应该了解自己的学生平时最喜欢什么,使用他们最感兴趣的事物,效果将事倍功半。如果使用一些远离他们生活的例子,会使他们更加疑惑,起到反效果。
现象2:学生在开始学习编程时,代码发生错误,往往是没有任何办法。这主要是由于学生不了解自己的程序的执行过程,无法准确地判断出代码出错的位置。一个好的编程人员,必须具备调试和排错的能力。很多学生忽略这一点,因为在他们看来能写出来程序就行了。所以,在上课的过程中,必须要注意培养学生排错、调试的能力和习惯。这种能力的培养是从平时的一点一滴做起的,遇到不容易理解的代码或者是讲解新的程序代码时,要使用添加断点的方式,演示并跟踪程序的执行情况。例如,学生在学习c#语言时,编写while循环时,有时候会出现不执行循环结构而且找不到原因的现象。如果在讲解while循环的时候,使用断点跟踪的方式让学生仔细观察代码的执行过程,如图1所示:
并强调循环条件、循环内容、以及循环变量i的变化过程。再遇到类似问题,学生就可以及时的判断并找到相应的位置并解决。这个技巧看似简单,但在使用的时候要注意设置断点的位置一定要准确,并结合执行语句的变化,提醒学生查看变量值的变化,已达到最佳效果。
现象3:教师在讲解一个知识点后,询问学生是否掌握,很多学生碍于面子,明明不会也表示自己会了。这种情况下,教学的效果不容易控制,时间长了就会使学生学不明白,教师也很被动。为了解决这个问题,我们可以采用现场编程的方式。在讲完某个知识点后,布置一个简单的、代表性强的编码题,要求学生使用纸笔当场完成。教师在整个过程中巡视,查看学生的掌握情况,当学生做完之后,教师对于整体的完成情况进行点评,完成不好或者是典型的错误要进行纠正,并提醒其他人不要犯类似的错误。这个技巧不但可以让教师了解学生的掌握情况,还能锻炼学生的手写代码能力,在他们找工作的时候,往往要答一些笔试题,这样做会有很大的帮助,可以说是一个双赢的教学技巧。但是,在使用时需要注意编写的题目不要超过5分钟,因为过于复杂的代码会耽误很多课堂时间,使学生失去耐心。
现象4:在程序设计语言课的授课过程中,我们经常会遇到这样的问题,一个比较容易出错的地方,学生总是反复的出错。可能是因为学生马虎,但归根到底是因为学生掌握不牢固造成的。对于这种容易出错的地方,学生听课的时候往往不加以注意,或者印象不深。遇到这样的场合,可以使用“课堂陷阱”的教学技巧。在出错的地方,设置错误陷阱,在讲解时故意调入陷阱,吸引学生的注意力。这时候有的学生会有幸灾乐祸的心态,有的学生会将注意观察教师如何跳出这个“陷阱”,解决问题。无论对于哪种心态的学生,跳出“陷阱”的过程对他们来说都是一个关注点。当教师解决这个问题后,他们会佩服教师的能力,同时也会记住这个错误时如何发生的。从而解决学生对于容易出错知识点的理解和记忆。同样,我们使用前面的while循环的例子。这个例子容易出错的地方是循环变量i的变化,如果忘记写i++语句,就会陷入死循环。教师在讲解这里的时候,可以故意不写这个语句,当程序陷入死循环时,可以装作很无奈的样子,同时可以问学生是怎么回事,既起到了“陷阱”的作用,还可以锻炼学生排错的能力。然后教师在将这个问题进行梳理,分析错误原因并给予更正。
当然,这个技巧需要教师有很好的课堂控制能力,调入“陷阱”后一定要有足够的能力从中调出来。所以备课时要反复进行测试,确保万无一失。编程课中,教师现场编写代码时,偶尔也会出现自己没有预见的错误,为了控制整个课堂,可以将这个错误转变为“课堂陷阱”,让学生找出问题所在,同时留给自己充分的思考时间,找到解决办法。可以说这个技巧不但强调了教学的重点,而且能帮助教师更好的的控制课堂。
现象5:在程序设计语言课的上机课中,遇到一个上机题,学生往往不知道从何入手,坐在那里东张西望,等待拷贝其他同学的代码,或者就是反正也做不出来,得过且过。主要原因是上机题有些复杂,学生没有思路。在这种情况下,教师有很多种方法,例如,直接给学生讲解解决问题的步骤,让学生按照步骤实现,有的干脆让会的学生给不会的学生讲解,其实这都不是最好的办法。引导学生的思路是对的,应该如何引导才能够有最好的效果呢?不妨想一下,我们小时候学会一个24+13 = 37是如何学会的呢?肯定要通过10以内的加法来计算,4+3和2+1。这其实就是将复杂的问题进行拆解,然后处理简单的问题,复杂的就迎刃而解了。
同样道理,编程的复杂问题也可以使用这种方法。只是需要对复杂的问题进行拆解,我们称这种方法为“任务分解技巧”。如何对复杂的问题进行拆解是一个很关键的环节,需要教师们多花一些心思。在这里,举一个例子。假如想在控制台打印一个等腰三角形,如下:
*
***
*****
*******
遇到这个问题时,通常不知道如何入手,可以将它拆解为如下几个简单的问题。让解决这个问题循序渐进,起到引导学生思路的作用。
第一步:打印矩形
*******
*******
*******
*******
这个问题相对简单,可以使用二重循环,外层循环打印行数,内层循环打印“*”。代码如下:
// 外层循环控制行数
for (i = 1; i <= 4; i++)
{
// 内层循环控制每行打印几个 *
for (j = 1; j <= 7; j++)
{
Console.Write("*");
}
Console.WriteLine();// 换行
}
第二步:打印正直角三角形
*
***
*****
*******
这时引导学生思路,外层循环不变,还是打印行数,而内层循环打印“*”的个数发生了变化,这种变化时行数乘以2再减1,具体代码如下:
for (i = 1; i <= 4; i++)
{
for(j = 1;j <= 2*i-1; j++)
{
Console.Write("*");
}
Console.WriteLine();
}
第三步:打印倒直角三角形
***
**
*
同样引导思路,代码如下
for (i = 1; i <= 3; i++)
{
for(j = 1;j <= 4-i; j++)
{
Console.Write("*");
}
Console.WriteLine();
}
第四步:这是最关键的一步,让学生观察这三个图形,如果将第一步的图形的左上角,右上角拿掉就会成为那个等腰三角形,如下图所示:
*******
*******
*******
*******
而拿掉的左上角我们上面曾经打印过,把“*”替换成一个空字符即可。也就是说,可以采用打印空字符和“*”的方式来打印等腰三角形,具体代码如下:
for (i = 1; i <= 4; i++)
{
// 第一个循环控制每行打印几个空格
for (j = 1; j <= 4 - i; j++)
{
Console.Write(" ");
}
// 第二个循环控制每行打印几个*
for (j = 1; j <= 2 * i - 1; j++)
{
Console.Write("*");
}
Console.WriteLine();// 换行
}
我们看到,采用这种拆解的方式,不但让学生循序渐进的理解了如何打印一个等腰三角形,同时还加大了二重循环的训练量,提高了代码的熟练度,培养学生将复杂的事情简单化的良好习惯,而且能够划分阶段控制学生的练习进度,避免“放羊”现象的发生。
这种“任务分解技巧”需要教师在课下认真备课,对疑难的上机题目进行合理的拆解,拆解的每个阶段时间要有预估,避免发生容量过大的情况发生,每个阶段如何控制也要在备课时有明确的说明。
综上所述,影响学生对程序设计的兴趣因素很多,既要考虑学校、教师和学生的实际情况,还应重视采用科学、合理、有效和先进的教学方法实施教学。总之,我们要做到与时俱进,开拓创新,不断提升自我知识水平,从而促进教学质量的提高。