C语言中函数参数传递教学模式探讨

2016-09-10 07:22方星星周丽媛
中国信息技术教育 2016年17期
关键词:教学模式

方星星 周丽媛

摘要:C语言函数参数传递内容是教学的重难点,学生在分析解决该类问题时的困惑较多。因此,为了提升教学效率,笔者提出了一套针对函数参数传递的教学模式。该模式要求学生深化对相关知识点的理解掌握,在讲解参数传递过程时将参数传递特点和内存变量分布示意图联系起来,最后结合指针的教学探讨数组名作为函数参数的本质。

关键词:函数参数传递;教学模式;参数传递特点

中图分类号:G642 文献标识码:A 论文编号:1674-2117(2016)17-0084-03

● 引言

函数参数传递内容是C语言教学中的重点和难点,所以很多教材都详细论述了实参和形参的概念及区别,并将参数传递方式分为值传递和地址传递两种,还详细阐述了数组名、指针作为函数参数等内容。这使得对参数传递这一知识点的介绍较多且分布不均,内容之间的规律性和衔接性不强,学生不易掌握。调查发现,不少学生对参数的传递方式感到困惑,欠缺分析解决问题的能力,这在一定程度上挫伤了他们的学习信心和积极性。为了更好地提升教学效率,笔者在多年教学经验的基础上,探讨了函数传递教学形式和方法,以供参考。

● 打牢前期课程内容基础,强化对相关知识点的介绍

众所周知,C语言的教学内容是循序渐进的,只有打下良好的前期基础,才能更深入地学习后续章节内容。为了使学生深刻理解参数传递的内容,教师应在课堂上强调相关知识点。

首先是变量的概念。它是对内存数据空间的抽象,有值和地址两种属性,要让学生注意区分,这是参数传递和指针学习的基础。

其次是对数组名的理解。调查发现,当编程题中涉及将数组名作为函数参数时,很多学生都会犯同样的错误,如将数组int a[10]作为实参数组,调用函数int average(int s[10],int n)时,学生经常将该函数调用写成avegage(a[10],10)。由于学生对数组名的含义没有深入了解,所以教师在讲解数组时,应和学生强调数组名是地址,代表数组首地址,这样便于开展后续教学内容。

再次是函数一章的知识点,具体包括函数定义、返回值、函数说明、函数调用、函数参数等概念。由于知识点之间贯穿的脉络不甚清晰,课堂讲解时较为枯燥,所以可结合案例式和互动式教学法,让学生在课堂上讲一遍、动手写一遍,以加深对这些知识点的理解,深刻领会其在实际中的应用。

最后是指针的概念。由于它是C语言的难点,所以在课堂讲解中应适当放慢教学节奏,向学生重点明确指针变量的概念、指针变量和普通变量的区别、*和&运算的含义、变量的间接访问、指向数组元素的指针变量的概念、指针运算的含义、指针变量对数组元素的引用(指针法)等内容,这是后面各种类型的指针变量作为函数参数学习内容的基础。在此基础上讲解数组作为函数参数传递的本质,往往能收到好的效果。

● 牢记参数传递的特点,画出内存变量分布示意图

很多教材将参数的传递归纳为值传递和地址传递两种,并论述两者区别,还指明了地址传递的方式和特点,即函数调用时,将数据的存储地址作为参数传递给形参,形参与实参占用同样的存储单元,进行的是双向传递。这样的总结固然很好,但学生不易掌握。在笔者看来,参数传递的两种划分是没有必要的,可以将所有的参数传递都看作是值传递,并将参数传递的特点概括为:①函数调用前,形参不占用内存单元;②函数调用时,才给形参分配内存单元,且将实参的值传递给形参;③函数调用结束后,形参占用的内存单元自动释放。

为了培养学生的画图习惯,在函数的教学中应不断强调画出变量在内存中的分布示意图,这样能清晰无误地分析结果,有利于学生对知识点的深刻理解和熟练运用。如图1、图2的例题,学生往往将结果错误地认为是9、5,并反复提问。

类似问题的讲解如果将形参的特点以内存的动态分布图画出,学生能很容易理解,也能收到事半功倍的教学效果,上述例题的内存动态分布图可画为如图3所示的形式。

很多教材还将“数组作为函数参数”列为函数一章的一节,并指明了相关注意事项,如形参数组可以不指定大小,共同占用存储单元等,其实这部分内容可以安排到“指针”一章中专门介绍,也可以在讲解数组作为函数参数传递时,简要说明下实参用的是数组名,是数组首地址,形参在形式上虽是数组,却是指针变量,即形参数组int x[10]等价于int*x,所以形参数组可以不指定大小。并强调这也是特殊的值传递,传递给形参的“值”是地址,完全符合值传递的三大特点。由于之前没有学习过指针内容,所以学生可以在记忆的基础上去学习,并牢记这一特点,即参数用数组、实现数组和形参数组是同一数组。再结合例题(如图4、图5)进行学习时,学生就很容易理解了,这在无形中也激发了学生的探索欲望。

● 掌握指针变量的运用,理解数组名作为形参的本质

在进入到指针内容的学习时,当该指针变量指向的是一般变量,并作为函数参数时,需指明实参和形参类型要保持一致,是将实参变量的地址作为“值”传递给形参变量,再将值传递的三大特点和内存中变量的动态分布图相结合。

由于前期只是让学生记住了实参数组和形参数组是同一数组,学生并没有掌握其原理。当介绍指向数组元素的指针变量作为函数参数时,应和函数一节中的数组名作为参数的内容相衔接合并介绍。很多教材将参数的传递方式总结为如下页表所示的对应情况。

虽然形式上只有四种,但看起来仍较复杂。此时,如果通过四个不同的案例,明确被调用函数是对数组元素的不同引用,则能让学生深刻明白四种形式的实质都是一样的,都强调形参数组的本质是指向数组元素的指针变量,所以数组的大小可以不指定,都是通过这一变量来引用数组元素。实参到形参的传递是值的传递,符合值传递的特点,形参指针变量在函数调用结束后会释放。

● 结语

为了提升教学效率,笔者根据多年的教学经验以及学生的反馈情况,对函数传递这一教学内容进行了优化整合,设定了层次化的教学模式。该模式从重视学生的基础概念入手,概括出参数传递的特点,要求学生画出内存变量的动态分布图去详细分析函数传递的过程,引导学生理解数组名作为函数参数的本质,从而达到学生在课堂上能听懂,课后会熟练应用的目的,提升了学生的学习信心和学习兴趣。由于指针变量类型丰富,包括指向函数的指针、指向数组的指针、指向指针的指针等,它们都可以用来作为函数参数,其传递过程都符合值传递的特点,都是通过形参指针变量来对指向的目标进行处理,所以本文不再细述。

参考文献:

[1]谭浩强.C程序设计[M].北京:清华大学出版社(第四版),2010.

[2]宋人杰,张洪业.程序设计类课程教学体系的改革与实践[J].科技信息,2012(3):269-270.

作者简介:方星星(1982—),男,安徽枞阳人,解放军陆军军官学院,讲师,研究方向为计算机网络、计算机软件技术;周丽媛(1985—),女,安徽合肥人,解放军陆军军官学院,讲师,研究方向为计算机基础教学理论。

猜你喜欢
教学模式
群文阅读教学模式探讨
“思”以贯之“学、练、赛、评”教学模式的实践探索
基于深度教学的高中数学新授课教学模式的探索与实践
新工科背景下项目推动式教学模式的探索
创新线上英语教学模式的思考
高中英语美文阅读USE教学模式的应用探究
借力大数据分析 创新“三位一体”思政课教学模式
高中英语“读写学思”教学模式探索与实践
“认知-迁移”教学模式在高年级阅读教学中的应用
“先学后教”教学模式在复习课中的应用