1、XU Wen-fang (Xiamen University Tan Kah Kee College Computer Department, Zhangzhou 363105,China ) Abstract: A suitable method can help us get twice the result with half the effort. This paper is concerned with the application analogy in C programming teaching. By the example of function, Tell us how
2、to apply analogy to programming teaching. It gets good teaching results. Key words: Analogy;Function;Teaching result C语言作为一个经典的编程语言,被很多的高校选做编程入门的必修课程。对于计算机专业学生而言,这门课通常在大学第一年开设,课程的主要目地在于使学生掌握程序设计的基本方法和本思想,培养使用计算机解决实际问题的能力,为它对后续专业课程的学习奠定基础。但对于大一的新生而言,往往对计算机工作原理了解不多,对一些抽象的编程思想,理解时存在一定的困难,致使写程序时无从下手。所以在
3、教学过程中,采用适当的教学方法将抽象的思想具体化是非常必要的。笔者在教学过程中使用了类比法,收到了良好的教学效果。类比在汉语字典中的解释是一种推理方法,根据两种事物在某些特征上的相似,做出它们在其他特征上也可能相似的结论,这种方法在我们认识新事物时很有帮助。教学中应用类比法,可将抽象概念同生活中熟悉的事物类比,将难理解的编程思想同已学知识类比,下面结合函数相关知识点介绍一下教学过程的展开。1 针对抽象的参数概念应用类比法 在讲解函数参数这个知识点时,一个让学生很困惑的问题是:什么时候要用实参传递数值,什么时候用实参传递地址?二者的差别是什么?通过以下示例说明类比法在教学中的展开。编写一个子程序
4、实现加密电文的翻译,其功能是:对于字符字母,字母表中第i个字母变成第(26-i+1)个字母。即:AZaz;BYby;CXcx;对于非字母字符保持不变。例如输入Blf ziv irtsg!输出:You are right!#include main() void transform(char c);int i=0;char ch80;printf(请输入密文: );gets(ch);while(chi!=0) transform(chi);i+; n翻译后的电文为: %sn,ch); /* 程序1主函数结束*/ void transform(char c) if( (c A) & (c a)&(
5、c (stri stri = 219 - stri;stri = stri; /* 程序2 子函数结束*/ 上述程序中实参传递了一个地址给形参,好比A通过qq的远程协助与B共享了自己电脑,这样B与A看到的是同一个文件,当B修改照片后,A所看到的就是被修改后的照片,通过传递地址给子函数,同一段的存储空间在主函数和子函数transform()之间实现共享,所以这段程序可以输出翻译后的电文。通过以上的类比,使学生清楚看到二者的本质差别,从而在编程时可以结合具体问题灵活的做出选择。2 针对易混淆的参数形式应用类比法 对于普通变量做函数参数时,相应的子函数定义以及函数原型的形式多数学生是很容易掌握的,但
6、谈到数组元素做函数参数时,很多同学在定义子函数,写函数原型时就容易同数组名做函数参数混淆,通过下面的表1,容易让学生看到其实(1)(2)本质上是一样,所以对于(1)中普通变量做函数参数时的特点,(2)也一样,这样就不容易将(2)和(3)混淆了。3 对于难理解的递归思想应用类比法 对于第一次接触递归思想的学生来说,将自己的递归思想用代码实现时往往不知从何处下手,此时可将学生熟悉循环思想与递归类比,例如:求斐波那契(Fibonacci)数列的问题,用循环实现求数列第20项值的代码如程序3所示,用递归实现如程序4所示: int i;int f20= 1,1;for(i = 2;i 20;i +) f
7、i = f i-2 + fi-1;printf(%12d,f19); /* 程序3 结束 */ #include int fib(int n) int z;if(n = 1 | n = 2) z = 1;z = fib(n-1) + fib(n-2);return(z);/*求数列各项的递归函数*/ int fib(int );int n=20,result;result = fib(n);printf(“%d”,result); /*程序4结束*/ 通过程序3与程序4的对比,可以看到循环思想中的必要元素有:循环初始值,循环结束条件以及循环体。同样实现递归思想的必要元素有:递归求解的问题规模,递归返回点以及递归表达式,找到这些元素后再编写递归程序就容易了。以上是笔者在c语言程序设计课程教学方法方面的一点尝试。但这远不是一个终点,如何将我们熟悉的方法与具体的教学相结合是值得我们不断探讨的问题,总之,希望借着对这些问题的探讨,使教学水平得到不断的提高。参考文献:1 谭浩强.C程序设计M.3版.清华大学出版社,2005 :155-184. 2 程艳.C语言程序设计教学中类比法的运用J. 教职论坛,2003(18):34.
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2