论文部分内容阅读
【摘要】对于初学者来说,程序设计与人类日常的思维习惯不同,较难掌握,好的教学方法可以使初学者提高学习效率。本文用几个例子阐述了在《C语言程序设计》课程中几点教学方法,这些方法在日常授课中取得了较好的效果。
【关键词】C语言 程序设计 教学方法
【中图分类号】G434 【文献标识码】A 【文章编号】1009-9646(2008)11(a)-0230-02
《C语言程序设计》的教学目的是使学生掌握程序设计的基本方法并逐步形成正确的程序设计思想,能够熟练地使用C语言进行程序设计并具备调试程序的能力,为后继课程及其他程序设计课程的学习和应用打下基础。对于非计算机专业学生来说该课程有实际应用价值,为用计算机解决实际问题提供了方法,是后续理论和实践教学的基础和重要工具,同时也是计算机二级考试所统一要求的课程之一。
笔者多年来为从事高级语言程序设计教学与实习,结合国内外优秀编程语言的教学方法和模式,不断地总结和积累经验并运用于教学实践之中,取得了较好的教学效果,有助于学生在有限的教学时间内,以最快最简单易懂的方式扎实地掌握C语言的内容,并能运用自如。
下面是笔者在C语言教学中的几点方法,仅供大家参考
1 在语句讲解阶段,精选例题,采用流程图和单步调试、输出结果,清楚地讲解出语句的运行流程
例如:在讲解双重循环时,我们可以利用以下简单的程序
#include
main()
{int i,j;
for (i=1;i<=3;i++)
{for (j=6;j<=9;j++)
printf(" %d%d *",i,j);
printf("\n");
}
printf("i=%d j=%d",i,j);
getchar();
}
画出流程图,如图1所示,使学生们对整个程序的运行过程有大致的了解:
运行出结果,如图2所示:
图2 运行结果
在此例结果中,学生们可以非常明确地看变量 i,j 的变化规律。
接着进行单步调试:在turbo c 中按F7键跟踪运行 ,可以清楚地看到程序运行的踪迹,同时通过用 add watch 功能 ,看到变量变量 i,j 的变化再加深对程序的理解。
通过以上几步学生们可以清清楚楚地理解双重循环的运行过程。
2 在例题讲解阶段, 首先,一题多解,加深对不同概念的比较,理解。随着内容的增加,由浅到深地解同类题,将不同功能由易到难组合
在讲解程序设计举例时,不是简单地给出程序清单, 而是从分析问题入手, 继而找出解决问题的方法, 再给出算法, 最后编写出完整的程序,编译、链接、运行到测试与单步调试的整个过程,特别是调试中增加输出, 变难为易,环环紧扣。
而在这一过程中,较关键的是每一步都采用探讨的方式,让学生在启发下思考,在思考中解决问题,从而掌握独立分析问题、解决问题的方法。
2.1 一题多解,加深对不同概念的比较,理解。
例2-1.求:1+2+3+…+10
方法1:利用for循环。
main()
{int sum=0,i;
for (i=1;i<=10;i++)
sum=sum+i;
printf(“1+2+3+…+100=%d \n ”, sum);
}
方法2:利用while循环。
main()
{int sum=0,i=1;
while(i<=10) sum=sum+i;
printf(“1+2+3+…+100=%d \n ”, sum);
}
方法3:利用do-while循环。
main()
{int sum,i=1;
do{
sum=sum+i;
} while(i<=10)
printf(“1+2+3+…+100=%d \n ”, sum);
}
2.2 由浅到深地解同类题,将不同功能由易到难组合
例2-2.输入一个数,判断此数是否素数。(此题在学完单重循环时讲)
main()
{int a,i;
scanf(“%d”,&a);
for (i=2;i if(a%i==0) break;
if(i=a) printf(“%d is a prime\n ”, a);
else printf(“%d isn’t a prime\n ”, a);
}
例2-3.找出100-200之间的所有素数。(此题在学完双重循环时讲)
main()
{int a,i;
for (a=100;a<=200;a++)
{
for (i=2;i if(a%i==0) break;
if(i=a) printf(“%dis prime\n ”, a);
}
}
例2-4.编写函数,验证任意偶数为两个素数之和并输出这两个素数。(此题在学完函数时讲)
int isprime(int a)
{int i;
for (i=2;i if(a%i==0) return 0;
return i;
}
main()
{int x,i;
scanf(“%d”,&x);
if(x%2==0)
{
for (i-2;i<=a/2;i++)
if (isprime(i)&& isprime(i-1))
printf(“%d=%d+%d”,x,i,x-i);
}
else printf(“no”);
}
3 制作教学视频,满足学生的个性化学习要求
课堂教学的时间是有限的, 学生们的学习能力和学习深度要求也不一样,制作教学视频,可以让教师不断改进教学方法加深教学内容,同学们可以根据个人情况调整学习时间,学习节奏,满足学生的个性化学习要求。
4 制作电子版习题指导
理解是模仿性操作的基础,这也要反复的试探调整,理解了别人的算法,并逐步内化为自己的能力后才可以有创新,有了电子版的习题指导学生可以快速地上机,学习验证算法快速理解。
5 加强综合性实践
综合性练习可以巩固所学知识。 课程结束后布置一项软件开发课题, 该课题力求既结合实际,又能涵盖课程教学的要求,由学生自学和开发。学期结束前完成该项目, 其成绩记入综合设计分。通过课题的开发过程, 促使学生将所学的知识融会贯通。
6 结束语
以上这些都是本人在教学过程中的一些方法可能比较肤浅,但是从初学者的角度来看却是必要的。如何让一名初学者尽快摆脱日常的思维定式,更加透彻地理解和掌握程序设计中的基本思想,领会程序设计的精髓是高级语言程序设计这门课程在讲授过程中,应该时刻注意的问题。希望本文能在这方面起到一点作用,同时望广大同仁多多指教。
参考文献
[1] 谭浩强.C 语言程序设计(第二版)[M]. 北京:清华大学出版社,1999
[2] 张海玉.C 语言程序设计教学方法探析[J].太原:财政税务专科学校学报,2006(8):72-74.
[3] 程奎文.C 语言教学方法探析[J].科学时代,2006,(12):111-112.
[4] 谢娟英.大学计算机专业C与C++程序设计语言开设探讨[J]. 计算机教育,2007,(50):22-23.
注:“本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。”
【关键词】C语言 程序设计 教学方法
【中图分类号】G434 【文献标识码】A 【文章编号】1009-9646(2008)11(a)-0230-02
《C语言程序设计》的教学目的是使学生掌握程序设计的基本方法并逐步形成正确的程序设计思想,能够熟练地使用C语言进行程序设计并具备调试程序的能力,为后继课程及其他程序设计课程的学习和应用打下基础。对于非计算机专业学生来说该课程有实际应用价值,为用计算机解决实际问题提供了方法,是后续理论和实践教学的基础和重要工具,同时也是计算机二级考试所统一要求的课程之一。
笔者多年来为从事高级语言程序设计教学与实习,结合国内外优秀编程语言的教学方法和模式,不断地总结和积累经验并运用于教学实践之中,取得了较好的教学效果,有助于学生在有限的教学时间内,以最快最简单易懂的方式扎实地掌握C语言的内容,并能运用自如。
下面是笔者在C语言教学中的几点方法,仅供大家参考
1 在语句讲解阶段,精选例题,采用流程图和单步调试、输出结果,清楚地讲解出语句的运行流程
例如:在讲解双重循环时,我们可以利用以下简单的程序
#include
main()
{int i,j;
for (i=1;i<=3;i++)
{for (j=6;j<=9;j++)
printf(" %d%d *",i,j);
printf("\n");
}
printf("i=%d j=%d",i,j);
getchar();
}
画出流程图,如图1所示,使学生们对整个程序的运行过程有大致的了解:
运行出结果,如图2所示:
图2 运行结果
在此例结果中,学生们可以非常明确地看变量 i,j 的变化规律。
接着进行单步调试:在turbo c 中按F7键跟踪运行 ,可以清楚地看到程序运行的踪迹,同时通过用 add watch 功能 ,看到变量变量 i,j 的变化再加深对程序的理解。
通过以上几步学生们可以清清楚楚地理解双重循环的运行过程。
2 在例题讲解阶段, 首先,一题多解,加深对不同概念的比较,理解。随着内容的增加,由浅到深地解同类题,将不同功能由易到难组合
在讲解程序设计举例时,不是简单地给出程序清单, 而是从分析问题入手, 继而找出解决问题的方法, 再给出算法, 最后编写出完整的程序,编译、链接、运行到测试与单步调试的整个过程,特别是调试中增加输出, 变难为易,环环紧扣。
而在这一过程中,较关键的是每一步都采用探讨的方式,让学生在启发下思考,在思考中解决问题,从而掌握独立分析问题、解决问题的方法。
2.1 一题多解,加深对不同概念的比较,理解。
例2-1.求:1+2+3+…+10
方法1:利用for循环。
main()
{int sum=0,i;
for (i=1;i<=10;i++)
sum=sum+i;
printf(“1+2+3+…+100=%d \n ”, sum);
}
方法2:利用while循环。
main()
{int sum=0,i=1;
while(i<=10) sum=sum+i;
printf(“1+2+3+…+100=%d \n ”, sum);
}
方法3:利用do-while循环。
main()
{int sum,i=1;
do{
sum=sum+i;
} while(i<=10)
printf(“1+2+3+…+100=%d \n ”, sum);
}
2.2 由浅到深地解同类题,将不同功能由易到难组合
例2-2.输入一个数,判断此数是否素数。(此题在学完单重循环时讲)
main()
{int a,i;
scanf(“%d”,&a);
for (i=2;i if(a%i==0) break;
if(i=a) printf(“%d is a prime\n ”, a);
else printf(“%d isn’t a prime\n ”, a);
}
例2-3.找出100-200之间的所有素数。(此题在学完双重循环时讲)
main()
{int a,i;
for (a=100;a<=200;a++)
{
for (i=2;i if(a%i==0) break;
if(i=a) printf(“%dis prime\n ”, a);
}
}
例2-4.编写函数,验证任意偶数为两个素数之和并输出这两个素数。(此题在学完函数时讲)
int isprime(int a)
{int i;
for (i=2;i if(a%i==0) return 0;
return i;
}
main()
{int x,i;
scanf(“%d”,&x);
if(x%2==0)
{
for (i-2;i<=a/2;i++)
if (isprime(i)&& isprime(i-1))
printf(“%d=%d+%d”,x,i,x-i);
}
else printf(“no”);
}
3 制作教学视频,满足学生的个性化学习要求
课堂教学的时间是有限的, 学生们的学习能力和学习深度要求也不一样,制作教学视频,可以让教师不断改进教学方法加深教学内容,同学们可以根据个人情况调整学习时间,学习节奏,满足学生的个性化学习要求。
4 制作电子版习题指导
理解是模仿性操作的基础,这也要反复的试探调整,理解了别人的算法,并逐步内化为自己的能力后才可以有创新,有了电子版的习题指导学生可以快速地上机,学习验证算法快速理解。
5 加强综合性实践
综合性练习可以巩固所学知识。 课程结束后布置一项软件开发课题, 该课题力求既结合实际,又能涵盖课程教学的要求,由学生自学和开发。学期结束前完成该项目, 其成绩记入综合设计分。通过课题的开发过程, 促使学生将所学的知识融会贯通。
6 结束语
以上这些都是本人在教学过程中的一些方法可能比较肤浅,但是从初学者的角度来看却是必要的。如何让一名初学者尽快摆脱日常的思维定式,更加透彻地理解和掌握程序设计中的基本思想,领会程序设计的精髓是高级语言程序设计这门课程在讲授过程中,应该时刻注意的问题。希望本文能在这方面起到一点作用,同时望广大同仁多多指教。
参考文献
[1] 谭浩强.C 语言程序设计(第二版)[M]. 北京:清华大学出版社,1999
[2] 张海玉.C 语言程序设计教学方法探析[J].太原:财政税务专科学校学报,2006(8):72-74.
[3] 程奎文.C 语言教学方法探析[J].科学时代,2006,(12):111-112.
[4] 谢娟英.大学计算机专业C与C++程序设计语言开设探讨[J]. 计算机教育,2007,(50):22-23.
注:“本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。”