C程序设计学习过程中的知识迁移
2016-05-14赵中堂马倩刘宁
赵中堂 马倩 刘宁
摘要:在C语言程序设计学习过程中,学生普遍存在入门难的问题。究其原因在于C语言知识点众多,且依赖于以往所学知识;而学生经过高考到大学之间的间歇期,难免会对知识有所遗忘。为解决该问题,以学习迁移理论为指导,对C语言知识点进行了梳理,并总结了C程序设计学习迁移的内容及效果,以期为一线授课教师和C程序设计学习者提供帮助。
关键词关键词:学习迁移;知识迁移;C程序设计
DOIDOI:10.11907/rjdk.1511262
中图分类号:G433文献标识码:A文章编号文章编号:16727800(2016)007019602
0引言
C语言程序设计能力是计算机专业学生必备技能,程序设计水平的高低在很大程度上影响了他们毕业后的人生走向。然而,在教学过程中,教师们发现学生在学习C语言程序设计时往往存在入门难的问题。据调查,计算机专业学生学习C语言时,如果不能迅速入门,就容易产生畏惧心理,如此恶性循环,从而影响后续课程学习。从考试结果来看,则表现为该课程的不及格率较高。如何促使学生快速入门,并提高C语言程序设计能力,值得广大教育工作者去探究。通过总结多年教学经验及广泛调研发现,学习迁移的理论和方法能够有效指导该课题研究。1学习迁移概念
学习迁移思想经过近百年的发展,已较为成熟,可作为实践的指导理论。桑代克(Thorndike)和伍德沃思(Woodworth)在1901年提出了“学习迁移”的概念;帕金斯和所罗门于1992年详细介绍了学习迁移的不同类型,描述了相关概念,以及正向迁移与负向迁移之间、近迁移与远迁移之间的区别。近年来,学习迁移又引起了广泛关注和研究,许多研究人员和一线教师将其应用于日常教学过程中\[14\],取得了良好效果。
学习迁移广泛存在于人类活动中,两个不同的领域共享因素越多,学习迁移就越容易发生,否则就越困难,甚至出现“负迁移”,产生副作用。比如:一个人若学会了骑自行车,则他就能很容易学会驾驶摩托车;一个人若熟悉五子棋的下法,则他也可以轻松地将知识迁移到围棋学习中。但有时看起来极为相似的事情,却有可能产生“负迁移”。比如,学会骑自行车的人学习骑三轮车反而不适应,因为它们的重心位置不同。
因此在学习C语言的过程中,如果能够采用学习迁移的方法,理清学生以往学过的哪些知识对C语言学习有所帮助(即迁移什么),就能使学生感到已学知识不再是一个个孤岛,而是互相联系的一个整体。
2学习迁移内容
不同课程之间,迁移的知识不同,必须因课程而异,逐个进行探索、总结。在C语言程序设计课程教学组织过程中,对该课程可供迁移的知识进行总结如下:2.1教材框架结构知识迁移
教师在讲解C程序构成时,可采用类比方法,将一部教材的框架结构和C程序的要素对应起来。可以按如下方法解释它们之间的对应关系:一本教材,可由多章内容构成;一个C程序可由多个源程序文件构成。每一章内容可由多个小节构成;一个C程序源文件可由多个函数构成(编译预处理命令、全局变量声明就好比每章开始的引言部分)。每个小节可由多个段落构成,这些段落整体上构成一个完整的情节或者形成一个完成的知识点描述;每个函数可由多种语法结构构成(顺序结构、选择结构、循环结构),这些语法结构整体上表达一个完备的功能(所以函数对应的英文称为Function)。每一个段落由多个基本句子构成,每一个句子表达一定的意思;每一个语法结构也是由更小的语句构成(如定义语句、赋值语句、函数调用语句、分支语句、循环语句等等),每一个语句都有自己的含义。每个句子由字、词、标点符号构成;每一条C语言语句由标识符(相当于字)、表达式(相当于词)、语句分隔符(相当于标点符号)构成。
上述讲解方法是按照从上到下、从整体到部分的方式进行,从而让学生形成一个宏观的印象。在教与学的过程中,却是按照从下到上的顺序完成,没有底层知识,上层知识就无法传授和理解。
授课教师通过这种类比方法,利用教材框架结构知识,可以较直观地向学生描述C语言程序的结构。2.2数学知识迁移
纵观各大高校采用的C语言程序设计教材,为了减少程序设计的枯燥性,增加其趣味性,很大篇幅都是在讲解数值计算,其中用到许多数学方面的知识。比如素数、合数、阶乘、最大公约数、最小公倍数、三角函数、解方程、微积分、奇数、偶数、闰年、平年等。然而在多年的授课过程中,教师们普遍发现,学生对于素数判定、解方程、微积分、级数一直很难理解。也存在一部分学生,即使厘清了概念,能够用正确的方法去解决具体的数学问题,但不会通过编程实现。通过观察其编写的程序,发现其“计算思维”逻辑比较混乱,编程方法仍然遵从自然语言逻辑,而不是去适应计算机思维。因此,从数学算法到程序代码翻译过程中,需要有一个担当中间过渡作用的算法语言存在,而这一过程往往被大多数授课教师所忽略。其实,C语言算法并不是大多教师所认为的只是一些简单算法,它需要学生去学习一种新的表示形式。
中间表达形式有流程图表示法、盒图表示法、伪代码表示法、自然语言表示法等。授课教师普遍提倡流程图表示法和伪代码表示法。在讲述这些方法时,必须突出每一步的可计算性,只有做到在中间表示形式上每一步都是可计算的,在向C语言翻译过程中才不会出现大的问题。
2.3计算机基础知识迁移
调查发现,学生普遍对指针相关知识难以理解。要想将指针讲清楚,首先必须让学生有地址的概念,然后将内存的编址方式及寻址方式(直接寻址、间接寻址)讲清楚。这些概念也不是孤立存在的,它需要学生具备计算机软硬件基本知识,也即了解计算机的工作原理。学生掌握这些知识,对深入理解计算机程序大有帮助。
非计算机专业的C语言课程有一门计算机应用基础先导课程,内容包括计算机发展历史、计算机特点、计算机硬件组成及工作原理、计算机操作系统、Office操作、计算机网络等,虽然不太深入,但学生掌握这些知识能够为他们学习C语言程序设计课程打下坚实基础。计算机专业的C语言程序设计课程有一门先导课程,即计算机科学基础,内容包括计算机发展历史、计算机特点、计算机典型应用领域、计算机语言、计算机算法、计算机操作系统、计算机组成原理、数字逻辑、计算机网络等。由于先导课程知识太零散,在学生初步接触这些知识时,容易形成知识孤岛,也容易被遗忘,因而在学习C语言课程时,对这些知识点印象并不深刻。因此,如何让学生很好地理解并在脑海里牢固记忆先导课程中的计算机基础知识,并有效地迁移到C语言程序设计课程中,需进一步研究。3迁移效果
学习迁移效果有两种:正迁移和负迁移。正迁移是指知识迁移之后对新知识的学习起到积极的促进作用。比如当授课教师帮助学生从理论上证明了辗转相除法的正确性后,大多数学生能很快地写出对应的C程序。负迁移是指知识迁移后对新知识的学习起干扰或抑制作用。比如:在先导课程中有教师讲2^3表示23(因为在Visual Basic等语言中确实如此),有些学生就将它迁移到C语言学习中,结果是错误的。
究竟是发生了正迁移还是负迁移,最直接的衡量方式就是考试。每次考试后,任课教师需要认真总结学生在每个知识点上的得分情况,再分析哪些知识的迁移导致了正迁移,哪些导致了负迁移。
4结语
本文探讨了如何将学习迁移的指导思想应用于C语言程序设计课程中,并总结了C语言程序设计课程学习中可供迁移的知识,让学生明确哪些知识是先导课程中应该重点强调的,以期通过这种学习迁移方法将相关课程形成一个完整体系,更好地促进学生的学习并提高学生能力。参考文献:
杨阳.浅谈古诗词中的迁移学习[J].课外语文:教研版,2014(1):3637.
王燕.浅谈农村初中语文教学文言文迁移学习的困惑[J].小作家选刊:教学交流,2013(8):109