论文部分内容阅读
[摘 要] 对程序设计类课程“C语言程序设计”而言,如何让学生在学到设计思路和方法的同时提高自身的计算机素质是非常关键的。因此在教学过程中,多与学生交流,及时解决教学过程中的问题,培养学生对C语言的兴趣与正确的思维模式,加强课外辅导,采取多样的互动活动,提高学生的自学能力,是一种有效的措施。
[关键词] 程序设计 实例引导 互动交流
程序设计是计算机专业中编写最灵活、变化最多样和应用最广泛的一类课程,也是学生普遍反映难学、抽象、复杂的专业课程之一。但作为计算机专业必备的基础技能,程序设计课程有其存在的必要性,也是多门专业后续课程的基础,因此如何教好学好程序设计是一个需要师生长期、持续、共同探索的课题。
作为一所民办高等职业技术学院,跟其他本科或公办专科相比,生源有其特殊性。首先是基础薄弱,不过这还不是重点,最主要的原因是在学习主动性、自觉性上显得有些力不从心,而在程序设计这样的课程中,尤其强调自我独立思考的重要性。作为教师,不可能将所涉及的所有知识方法在有限的课时中全部教授给学生,因此培养学生独立思考和自主學习的能力,这才是课程教学的难点。
虽然,在程序设计的教学中对教师和学生来说都有诸多的困难,但我们始终坚持将C语言作为计算机专业学生程序设计的基础,其原因主要有:首先,C语言中一些程序设计方法的学习对后续课程(如VB.NET、C#、Java等)有很好的借鉴和铺垫作用;其次,在专转本中,C语言也是部分院校考察的一个重要方面;另外,C语言本身也有很多优点,诸如简洁紧凑、灵活方便,适合于多种操作系统,适用于多种机型,允许直接访问物理地址,也可以直接对硬件进行操作等等。
而对于从事该课程教学的教师来说,最主要的原因是我们的基础教育,特别是基础语言教育,如C、Visual Basic等,其教学的目的不仅仅在于培养学生编写程序的能力,更重要的是培养学生严谨思维的能力,或者说是计算机素质的培养,信息社会中,这也是个人素质很重要的一个方面。
通过对程序设计语言的课程教学,对该课程在高职院校的教学方法也探索思考了很多。经过这几年的教学研究,主要采取了一些策略与方法,概括起来,主要有以下几点:
1、培养学生学习程序设计的兴趣及正确的思维模式
与“计算机应用基础”等基础课程中比较直观的基本操作和基础概念相比,“C语言程序设计”则注重由设计算法到书写程序并进行调试的整个过程,显得抽象而复杂,这也是大多数学生抱怨程序设计太难、太深奥、不好学的主要原因。
在教学过程中,我们采用实例引导教学的方法,这种教学方法在很多课程中都比较实用。一开始给出些能实现简单功能的完整程序,让学生独立调试并运行,先让他们对程序设计产生兴趣,然后在此基础上稍微增加难度,让学生自己发现其中存在的不足,提出改进意见并利用自己所学付诸实施。
譬如,在学完选择结构程序设计之后,我们给出一个满足“对任意给定的a,b两个整数,请输出其中的大数”的简单程序代码。
#include
main()
{
int a,b;
scanf("%d,%d",&a,&b);/*输入任意两个整型数a,b*/
if(a>b) printf("%d",a);/*若a>b,输出a*/
else printf("%d",b);/*若a>b,输出a*/
}
学生通过运行以上的程序,可以得到想要的结果。此时可以提出新问题,若比较的数为3个或更多,该如何实现呢?通过思考,对原有程序进行如下的修改,可以实现3个数的比较并输出最大值。
#include
main()
{ int a,b,c;
scanf("%d,%d,%d",&a,&b,&c);/*输入a,b,c三个整型数*/
if(a>b)
if(a>c)printf("%d",a);/*若a>b且a>c,则输出a*/
else printf("%d",c);/*若a>b且a else
if(b>c) printf("%d",b);/*若ac,则输出b*/
else printf("%d",c);/*若a }
但要得到更多数的比较结果,若依旧采用这样的思路,显然会将程序做的复杂而且易错。然而不难看出,这样的比较过程其实是方法相同、不断重复的,进而可以引入新的程序结构(循环结构)来实现多个数的相互比较。将程序进行如下改写,可以得到任意10个数中的最大值。
#include
main()
{
int a,max,i;
scanf("%d",&a);/*输入第1个数*/
max=a;/*将第1个数作为最大数的初始值*/
for(i=2;i<=10;i++)
{
scanf("%d",&a);/*依次输入剩余9个数*/
if(a>max)max=a;/*逐个与最大值比较,若比现有最大值大,则替换原有值*/
}
printf("%d",max);/*输出10个数中的最大值*/
}
在此基础上,可以提出若要将比较后的结果由小到大依次输出的话,该如何操作?此时可能需要将输入的数据进行一定的保存和排序。对于学生来说已学的简单数据类型显然不能满足要求,因此可以进一步引入新的结构(数组)来存放数据,并通过循环结构来进行选择或冒泡排序。
#include
#define N 10
main()
{
int a[N],i,j,k,min,temp;
for(i=0;i scanf("%d",&a[i]);/*将10个数存入数组中*/
for(i=0;i {min=a[i];k=i;
for(j=i+1;j if(min>a[j])
{ min=a[j];k=j;}
if(i!=k)
{ temp=a[i];a[i]=a[k];a[k]=temp;}
}
for(i=0;i printf("%4d",a[i]);/*将10个数由小到大依次输出*/
}
这样由简到繁、由易到难逐层深入的过程,能够引起学生对新内容的不断学习和探究的兴趣,显然比传统的直接讲授基本程序结构的语法更加容易接受。在这个过程中要重点强调大家的独立思考、相互讨论与共同合作,这既能提高和检验学生的学习技能,而且也能锻炼学生的社会素养。整个教学过程中应该将解题思路、方法和步骤(即“算法)当作授课的重点,从而让学生明白如何分析并解决实际问题,逐渐培养学生进行程序设计的正确思维模式。
2、发掘学生学习的潜力,采用多种教学互动形式
对于程序设计课程,除教师的课堂讲授与答疑之外,为提高学生的学习兴趣与效果,可以尝试采用多种教学互动形式,诸如课堂的师生问答,这是一种最简单最直接的互动方式;挑选学习相对较好的学生担任小组长的角色参与答疑辅导,不仅可以减轻教师顾此失彼的辅导方式,也可以锻炼学生自身的能力;让全体学生参与部分有代表性章节作业的互换批改,通过批阅其他同学的作业取长补短,找出共同的问题;开展模拟课堂活动,学生利用课余时间根据自选或指定内容设计教学课件、板书及教学过程,并采用课堂教学的方式进行展示,让其他同学和教师对其进行评价,对参与者及成绩优异者给予不同级别的奖励,以肯定他们的努力,同时鼓励大家多多参与此类活动,给自己锻炼和展示的机会。
在课程结束后,鼓励学生参加全省或全国二级C语言的考试来考察自己的学习效果。无论考试结果如何,就学生自身而言,都是检验知识掌握情况和自学方法的一种有效方式,可以通过这样的方式,及时地来调整和充实自己,对后续类似课程的学习也有很好的借鉴作用。
3、多与学生交流,及时解决教学过程中的问题
在教学过程中,作为任课教师应尽可能地增加与学生交流和沟通的机会,让学生将学习中遇到的问题及时提出来,以了解学生对课程内容的掌握情况。
首先,可以通过平时的作业看出一些问题,利用上课的前十分钟有针对性地进行讲解,不让问题累积;其次,在课间或上机过程中,可以针对学生提出的问题进行个别辅导,当然,在个别辅导过程中,尽量让多一些的学生参与,多一些交流,从而带动一批人进步。另外,基于学生提问主动性不够的情况,可以随机抽查提问,以检验学生真实的掌握情况,促进其对问题的深入了解和解决。
上述只是个人的一些教学经验和体会,实际上在教学过程中需要注意的问题还有很多。作为一个程序设计课程的授课教师,教学的关键就在于如何对内容(教什么)和方法(如何教)进行合理的整合。但在实践过程中,由于教学目的、教学内容及学生情况等因素的差别,没有哪一种教学模式或方法是普遍适用的,需要根据实际情况灵活变通,选择合适的教学模式和教学方法。伟大的教育家陶行知先生说“教学做是一件事,不是三件事。我们要在做上教,在做上学”。因此对于教师来说,哪怕是教授同一门课程,其教学内容也要根据技术进步而不断更新,其教学方法也要根据具体情况而不断探索改变,没有一劳永逸的成果,这也是我们在“C语言程序设计”课程教学的思考和实践中所领悟的。
参 考 文 献
[1]谭浩强.C语言程序设计.清华大学出版社(第三版),2007
[2]涂玉芬.二级C语言程序设计及同步训练.中国水利水电出版社,2009
[3]黄锋华,张丽.C程序设计课程案例式教学的探索与实践.农业网络信息,2007
[4]胡建荣,罗杰红.高职C语言程序设计课程实践教学体系的设计.计算机教育,2010
[5]孙庚.项目教学法在“C++程序设计”课程教学中的实践.计算机教育,2008■
[关键词] 程序设计 实例引导 互动交流
程序设计是计算机专业中编写最灵活、变化最多样和应用最广泛的一类课程,也是学生普遍反映难学、抽象、复杂的专业课程之一。但作为计算机专业必备的基础技能,程序设计课程有其存在的必要性,也是多门专业后续课程的基础,因此如何教好学好程序设计是一个需要师生长期、持续、共同探索的课题。
作为一所民办高等职业技术学院,跟其他本科或公办专科相比,生源有其特殊性。首先是基础薄弱,不过这还不是重点,最主要的原因是在学习主动性、自觉性上显得有些力不从心,而在程序设计这样的课程中,尤其强调自我独立思考的重要性。作为教师,不可能将所涉及的所有知识方法在有限的课时中全部教授给学生,因此培养学生独立思考和自主學习的能力,这才是课程教学的难点。
虽然,在程序设计的教学中对教师和学生来说都有诸多的困难,但我们始终坚持将C语言作为计算机专业学生程序设计的基础,其原因主要有:首先,C语言中一些程序设计方法的学习对后续课程(如VB.NET、C#、Java等)有很好的借鉴和铺垫作用;其次,在专转本中,C语言也是部分院校考察的一个重要方面;另外,C语言本身也有很多优点,诸如简洁紧凑、灵活方便,适合于多种操作系统,适用于多种机型,允许直接访问物理地址,也可以直接对硬件进行操作等等。
而对于从事该课程教学的教师来说,最主要的原因是我们的基础教育,特别是基础语言教育,如C、Visual Basic等,其教学的目的不仅仅在于培养学生编写程序的能力,更重要的是培养学生严谨思维的能力,或者说是计算机素质的培养,信息社会中,这也是个人素质很重要的一个方面。
通过对程序设计语言的课程教学,对该课程在高职院校的教学方法也探索思考了很多。经过这几年的教学研究,主要采取了一些策略与方法,概括起来,主要有以下几点:
1、培养学生学习程序设计的兴趣及正确的思维模式
与“计算机应用基础”等基础课程中比较直观的基本操作和基础概念相比,“C语言程序设计”则注重由设计算法到书写程序并进行调试的整个过程,显得抽象而复杂,这也是大多数学生抱怨程序设计太难、太深奥、不好学的主要原因。
在教学过程中,我们采用实例引导教学的方法,这种教学方法在很多课程中都比较实用。一开始给出些能实现简单功能的完整程序,让学生独立调试并运行,先让他们对程序设计产生兴趣,然后在此基础上稍微增加难度,让学生自己发现其中存在的不足,提出改进意见并利用自己所学付诸实施。
譬如,在学完选择结构程序设计之后,我们给出一个满足“对任意给定的a,b两个整数,请输出其中的大数”的简单程序代码。
#include
main()
{
int a,b;
scanf("%d,%d",&a,&b);/*输入任意两个整型数a,b*/
if(a>b) printf("%d",a);/*若a>b,输出a*/
else printf("%d",b);/*若a>b,输出a*/
}
学生通过运行以上的程序,可以得到想要的结果。此时可以提出新问题,若比较的数为3个或更多,该如何实现呢?通过思考,对原有程序进行如下的修改,可以实现3个数的比较并输出最大值。
#include
main()
{ int a,b,c;
scanf("%d,%d,%d",&a,&b,&c);/*输入a,b,c三个整型数*/
if(a>b)
if(a>c)printf("%d",a);/*若a>b且a>c,则输出a*/
else printf("%d",c);/*若a>b且a
if(b>c) printf("%d",b);/*若ac,则输出b*/
else printf("%d",c);/*若a }
但要得到更多数的比较结果,若依旧采用这样的思路,显然会将程序做的复杂而且易错。然而不难看出,这样的比较过程其实是方法相同、不断重复的,进而可以引入新的程序结构(循环结构)来实现多个数的相互比较。将程序进行如下改写,可以得到任意10个数中的最大值。
#include
main()
{
int a,max,i;
scanf("%d",&a);/*输入第1个数*/
max=a;/*将第1个数作为最大数的初始值*/
for(i=2;i<=10;i++)
{
scanf("%d",&a);/*依次输入剩余9个数*/
if(a>max)max=a;/*逐个与最大值比较,若比现有最大值大,则替换原有值*/
}
printf("%d",max);/*输出10个数中的最大值*/
}
在此基础上,可以提出若要将比较后的结果由小到大依次输出的话,该如何操作?此时可能需要将输入的数据进行一定的保存和排序。对于学生来说已学的简单数据类型显然不能满足要求,因此可以进一步引入新的结构(数组)来存放数据,并通过循环结构来进行选择或冒泡排序。
#include
#define N 10
main()
{
int a[N],i,j,k,min,temp;
for(i=0;i
for(i=0;i
for(j=i+1;j
{ min=a[j];k=j;}
if(i!=k)
{ temp=a[i];a[i]=a[k];a[k]=temp;}
}
for(i=0;i
}
这样由简到繁、由易到难逐层深入的过程,能够引起学生对新内容的不断学习和探究的兴趣,显然比传统的直接讲授基本程序结构的语法更加容易接受。在这个过程中要重点强调大家的独立思考、相互讨论与共同合作,这既能提高和检验学生的学习技能,而且也能锻炼学生的社会素养。整个教学过程中应该将解题思路、方法和步骤(即“算法)当作授课的重点,从而让学生明白如何分析并解决实际问题,逐渐培养学生进行程序设计的正确思维模式。
2、发掘学生学习的潜力,采用多种教学互动形式
对于程序设计课程,除教师的课堂讲授与答疑之外,为提高学生的学习兴趣与效果,可以尝试采用多种教学互动形式,诸如课堂的师生问答,这是一种最简单最直接的互动方式;挑选学习相对较好的学生担任小组长的角色参与答疑辅导,不仅可以减轻教师顾此失彼的辅导方式,也可以锻炼学生自身的能力;让全体学生参与部分有代表性章节作业的互换批改,通过批阅其他同学的作业取长补短,找出共同的问题;开展模拟课堂活动,学生利用课余时间根据自选或指定内容设计教学课件、板书及教学过程,并采用课堂教学的方式进行展示,让其他同学和教师对其进行评价,对参与者及成绩优异者给予不同级别的奖励,以肯定他们的努力,同时鼓励大家多多参与此类活动,给自己锻炼和展示的机会。
在课程结束后,鼓励学生参加全省或全国二级C语言的考试来考察自己的学习效果。无论考试结果如何,就学生自身而言,都是检验知识掌握情况和自学方法的一种有效方式,可以通过这样的方式,及时地来调整和充实自己,对后续类似课程的学习也有很好的借鉴作用。
3、多与学生交流,及时解决教学过程中的问题
在教学过程中,作为任课教师应尽可能地增加与学生交流和沟通的机会,让学生将学习中遇到的问题及时提出来,以了解学生对课程内容的掌握情况。
首先,可以通过平时的作业看出一些问题,利用上课的前十分钟有针对性地进行讲解,不让问题累积;其次,在课间或上机过程中,可以针对学生提出的问题进行个别辅导,当然,在个别辅导过程中,尽量让多一些的学生参与,多一些交流,从而带动一批人进步。另外,基于学生提问主动性不够的情况,可以随机抽查提问,以检验学生真实的掌握情况,促进其对问题的深入了解和解决。
上述只是个人的一些教学经验和体会,实际上在教学过程中需要注意的问题还有很多。作为一个程序设计课程的授课教师,教学的关键就在于如何对内容(教什么)和方法(如何教)进行合理的整合。但在实践过程中,由于教学目的、教学内容及学生情况等因素的差别,没有哪一种教学模式或方法是普遍适用的,需要根据实际情况灵活变通,选择合适的教学模式和教学方法。伟大的教育家陶行知先生说“教学做是一件事,不是三件事。我们要在做上教,在做上学”。因此对于教师来说,哪怕是教授同一门课程,其教学内容也要根据技术进步而不断更新,其教学方法也要根据具体情况而不断探索改变,没有一劳永逸的成果,这也是我们在“C语言程序设计”课程教学的思考和实践中所领悟的。
参 考 文 献
[1]谭浩强.C语言程序设计.清华大学出版社(第三版),2007
[2]涂玉芬.二级C语言程序设计及同步训练.中国水利水电出版社,2009
[3]黄锋华,张丽.C程序设计课程案例式教学的探索与实践.农业网络信息,2007
[4]胡建荣,罗杰红.高职C语言程序设计课程实践教学体系的设计.计算机教育,2010
[5]孙庚.项目教学法在“C++程序设计”课程教学中的实践.计算机教育,2008■