论文部分内容阅读
摘要:C语言程序设计作为高校学生的第一门编程语言,其中的循环结构循环体的编写、函数参数传递、函数递归等几处的学习是同学们疑问较多的地方。针对这些问题,根据几年课堂教学的尝试,分别找到一些效果较好的讲解方式,与大家简单交流。
关键词:C语言;循环;参数传递;函数递归
中图分类号:G642文献标识码:A文章编号:1009-3044(2012)27-6543-03
Discusses Several Difficulties’Teaching Method in C Language Course
SHI Hong, ZHANG Jian-ming
(Shenzhen Polytechnic, Shenzhen 518055, China)
Abstract: C language is the first programming language in many Colleges and Universities, there are several difficulties such as loop structure, passing function parameters, recursive function. this article give some teaching method in the C language course, hope it’s useful.
Key words: C language; loop structure; passing function parameters; recursive function
C语言是很多高校程序设计起步课程,是很多同学的第一门编程课程。在学习的过程中,同学们经常会在循环结构循环体代码的编写、函数参数传递、函数递归等几处遇到门坎。
根据多年程序设计课程的教学实践,针对以上几处难点进行反复讲解、体会、总结,找到了一些有效的方法,使同学们能更容易理解这几个难点知识,之后选用一系列适当的的例题进行练习,便能使学生通过自己的思维推理,更熟练的掌握和运用这些知识点编写程序,同时体会到编程的奇妙之处,从而激发学习兴趣,提高学习效率。
1从已知方法寻找循环体思路
C语言程序的三大结构是顺序结构、选择结构、循环结构,前两者思路都比较容易建立,但循环结构就会在思路上遇到阻碍,往往是循环变量容易确定,但随着循环变量的改变,循环体应该怎样表达,这些语句跟循环变量是怎样的关系,就比较难于确定。
在多年的课堂教授中,发现引导学生从自己已经掌握的知识入手,寻找建立思路,对初学者来讲是一种有效而且可靠的方法。下面就以求1+2+3+…+100的值为例来进行求解方法的介绍。
第一步,要求学生利用已有的知识,提出解决该问题的方法。学生一般首先会提出数学中学到的求和公式,可以写出代码,但不是运用循环结构;接着可以提问学生:“有没有别的方法?不用公式就可以解决?”来引导学生扩展思路。抛开公式,能够得到的就是最原始的累加的办法:即从1到100进行1+2=3;3+3=6;6+4=10;10+5=15;15+6=21;…;
第二步,引导学生从上面的思路里寻找规律,会发现需要将所有从1到100的数字累加,所有式子都可以写成:“前面所有数字的和”+“下一个数字”=“新的和”,而“新的和”又是下一个“前面所有数字的和”;
第三步,整理第二步得到的式子:定义“前面所有数字的和”为sum,“下一个数字”为i,“新的和”为nextsum,于是可以得到代码为:sum+i=nextsum; sum=nextsum; i++;循环是从1到100,所以整个循环可以写成:for(i=1;i<=100;){sum+i=nextsum;sum=nextsum;i++;}
这样,循环就写成了。这种建立思路的过程非常自然,容易使学生找到入手点,不至于无所适从,从而平滑过渡该难点,继续保持C语言的学习热情。
之后,可以多做几个练习加强该方法的练习,如:求n!;Jack学习钢琴,每周上一次课,学费从50元开始每次递增5元,将第1周到第10周的学费分别打印出来。
2多媒体动画法讲解函数参数传递
函数参数的值传递和地址传递总是让初学者迷惑,使用动画法可以让大家了解它的本质。动画法是随着代码的执行过程,画
图4
以此类推,最终可了解其解决过程。
讲过这个过程之后,同学们往往需要再多看该动画几次,便能深刻领会其要领,效果很好。类似方法还可以很好的用于理解指针和变量相关概念和过程。
以上是在C语言讲解过程中遇到的几个难点问题的解决方案。通过上述讲授方式,可以使学生更容易建立编程思想、理解C语言代码,给后续独立思考和深度理解打下良好的基础,从而可以对已学内容的延伸和举一反三,更好地理解理论知识而达到灵活运用的目的。
[1]马宪敏,于延. C语言中循环结构的教学设计探讨[J].计算机教育,2011(5):87-90.
[2]赵帅锋,胡绍海.从婴幼儿的语言学习看C语言的教学方法[J].计算机教育,2011(8):85-87.
[3]谭浩强.C程序设计[M].3版.北京:清华大学出版社,2005:1-3.
关键词:C语言;循环;参数传递;函数递归
中图分类号:G642文献标识码:A文章编号:1009-3044(2012)27-6543-03
Discusses Several Difficulties’Teaching Method in C Language Course
SHI Hong, ZHANG Jian-ming
(Shenzhen Polytechnic, Shenzhen 518055, China)
Abstract: C language is the first programming language in many Colleges and Universities, there are several difficulties such as loop structure, passing function parameters, recursive function. this article give some teaching method in the C language course, hope it’s useful.
Key words: C language; loop structure; passing function parameters; recursive function
C语言是很多高校程序设计起步课程,是很多同学的第一门编程课程。在学习的过程中,同学们经常会在循环结构循环体代码的编写、函数参数传递、函数递归等几处遇到门坎。
根据多年程序设计课程的教学实践,针对以上几处难点进行反复讲解、体会、总结,找到了一些有效的方法,使同学们能更容易理解这几个难点知识,之后选用一系列适当的的例题进行练习,便能使学生通过自己的思维推理,更熟练的掌握和运用这些知识点编写程序,同时体会到编程的奇妙之处,从而激发学习兴趣,提高学习效率。
1从已知方法寻找循环体思路
C语言程序的三大结构是顺序结构、选择结构、循环结构,前两者思路都比较容易建立,但循环结构就会在思路上遇到阻碍,往往是循环变量容易确定,但随着循环变量的改变,循环体应该怎样表达,这些语句跟循环变量是怎样的关系,就比较难于确定。
在多年的课堂教授中,发现引导学生从自己已经掌握的知识入手,寻找建立思路,对初学者来讲是一种有效而且可靠的方法。下面就以求1+2+3+…+100的值为例来进行求解方法的介绍。
第一步,要求学生利用已有的知识,提出解决该问题的方法。学生一般首先会提出数学中学到的求和公式,可以写出代码,但不是运用循环结构;接着可以提问学生:“有没有别的方法?不用公式就可以解决?”来引导学生扩展思路。抛开公式,能够得到的就是最原始的累加的办法:即从1到100进行1+2=3;3+3=6;6+4=10;10+5=15;15+6=21;…;
第二步,引导学生从上面的思路里寻找规律,会发现需要将所有从1到100的数字累加,所有式子都可以写成:“前面所有数字的和”+“下一个数字”=“新的和”,而“新的和”又是下一个“前面所有数字的和”;
第三步,整理第二步得到的式子:定义“前面所有数字的和”为sum,“下一个数字”为i,“新的和”为nextsum,于是可以得到代码为:sum+i=nextsum; sum=nextsum; i++;循环是从1到100,所以整个循环可以写成:for(i=1;i<=100;){sum+i=nextsum;sum=nextsum;i++;}
这样,循环就写成了。这种建立思路的过程非常自然,容易使学生找到入手点,不至于无所适从,从而平滑过渡该难点,继续保持C语言的学习热情。
之后,可以多做几个练习加强该方法的练习,如:求n!;Jack学习钢琴,每周上一次课,学费从50元开始每次递增5元,将第1周到第10周的学费分别打印出来。
2多媒体动画法讲解函数参数传递
函数参数的值传递和地址传递总是让初学者迷惑,使用动画法可以让大家了解它的本质。动画法是随着代码的执行过程,画
图4
以此类推,最终可了解其解决过程。
讲过这个过程之后,同学们往往需要再多看该动画几次,便能深刻领会其要领,效果很好。类似方法还可以很好的用于理解指针和变量相关概念和过程。
以上是在C语言讲解过程中遇到的几个难点问题的解决方案。通过上述讲授方式,可以使学生更容易建立编程思想、理解C语言代码,给后续独立思考和深度理解打下良好的基础,从而可以对已学内容的延伸和举一反三,更好地理解理论知识而达到灵活运用的目的。
[1]马宪敏,于延. C语言中循环结构的教学设计探讨[J].计算机教育,2011(5):87-90.
[2]赵帅锋,胡绍海.从婴幼儿的语言学习看C语言的教学方法[J].计算机教育,2011(8):85-87.
[3]谭浩强.C程序设计[M].3版.北京:清华大学出版社,2005:1-3.