铁菊红,彭 辉
(成都信息工程大学 软件工程学院,四川 成都 610225)
C语言指针过程化教学方法研究
铁菊红,彭 辉
(成都信息工程大学 软件工程学院,四川 成都 610225)
指针是C 语言教学中的重点和难点,是设计良好C程序的关键。文章分析目前指针教学存在的弊端,详述指针过程化教学方法的思想、课堂教学实施过程和实践教学实施过程。
C语言;过程化;指针
对于计算机专业学生,编程思维的养成是非常关键的,国内大部分高校将C语言程序设计设为学生接触的第一门计算机类编程语言课。学好C语言对计算机类专业学生是非常关键的,而指针是C语言中的一个重要概念[12],是C语言的精华。正确、灵活运用指针,可以使程序简洁、紧凑、高效[3],学好指针有利于学生在后期更好地掌握C++语言中的指针使用和理解Java语言中对象的引用。
目前,国内大部分C语言程序设计教材中,将指针内容独立成章,而且安排位置偏后,教师如果按教材顺序讲授,那么学生学完了C语言大部分内容后才接触到指针,而且指针所有内容都被堆积到一起讲解。作为独立的知识点,在教学中不可能安排大量的学时讲解指针,所以在短暂的时间内教师不能很透彻地讲解指针内容,通常出现减少和简化指针内容。这时往往到了学期末,学生编程时间有限,很难理解和吃透指针内容。
指针过程化教学和贯穿模块化编码的C语言教学[4]应同步进行,在指针过程化教学中打破传统,将指针基本概念提前到与数据类型一起讲解,并在以后的教学中紧密结合各章节的知识点及其在编程中的应用,引人指针相关内容,逐步引导学生循序渐进地理解指针内容,这样在整个学习C语言的过程中,学生都在学习指针内容,并在实践教学中不断深化指针应用,解决实际问题。到课程后期,学生将会理解透彻指针概念,并能有效地利用指针设计简洁、紧凑和高效的程序。
指针也是一种数据类型,所以在讲解数据类型时引出指针基本概念,让学生理解指针的作用。教师在后期的教学中紧密结合各章知识点,引人指针知识点。为了清晰地展示在课堂教学中如何实施指针过程化教学,笔者将整个实施过程以表1的形式按序展现。
教师根据表1的顺序将指针内容贯穿到整个C语言教学中,用过程化的教学方式由浅人深地将指针内容展示给学生。
C语言是一门实践性极强的课程,不是听会的,也不是看会的,而是自己练会的[5]。所以,在指针过程化实践教学中学生的“练”是非常重要的。众所周知,程序调试能力是每个编码人员必须具备的基本能力,对于初学编码人员,掌握了程序调试,对于训练编码思维、发现问题和解决问题是很有帮助的。所以,在C语言实践教学的开始,就给学生示范如何调试程序单步跟踪程序执行过程,以及如何发现程序隐藏的问题,学生掌握了程序调试能力,有助于理解程序中的“指针”指向了“谁”。
表1 指针过程化课堂教学实施过程
为了让学生带着兴趣在实践课中探索指针,教师要精心设计指针练习题。练习题既要有趣味性,又能巩固课堂内容并具有解决实际问题价值,这样学生抱着解决实际问题的态度编码,而不是为了编码而编码。教学过程中再结合 “C语言数量化考评系统”强化训练学生指针编码能力。
4.1 设计渐进式练习题目
指针过程化教学的核心思想就是将难以理解的指针内容进行分块,然后由易到难,逐步贯穿到整个C语言教学中。设计练习题目亦遵循这个思想,所以练习题目的内容和难度是逐步增加的,而且后面的题可以直接利用前面题设计的子函数或借鉴前面函数算法思路。学生通过做练习题目,持续累积和加强指针内容。在C语言学完后,每个学生都要做一个“简易学生成绩管理软件”,这个软件的主要功能有:录人学生信息、显示学生信息、统计总分和平均成绩、根据总分或平均分排名和查看学生信息(根据学号或姓名)等功能。开发这个系统需经常将指针作为函数参数,在过程化教学中,系统相关功能已分解到不同的实践练习中,学生在做项目时对前面累积的子函数进行终极整合或稍加改进,就可以完成这个系统,项目功能分解见表2。
4.2 C语言数量化考评
C语言数量化考评系统是作者主持开发的,在该系统中教师可以在线布置实践练习题目,学生只要有浏览器就可以在线编写代码,系统可以评测学生编写代码是否正确,并按题目难度和准确度给学生积分,积分会纳人平时考核中,这样做可以增加学生编码积极性。在指针知识点上完后,教师在线发布指针练习题,要求学生在规定的时间内做完。教师可以随时查看学生对某道题
表2 项目功能分解练习表
的编码时间、是否正确和该题所得积分,以便了解学生掌握知识点的情况,及时对教学方法进行改进。
实践表明,指针过程化教学法对帮助学生理解指针内容非常有效,提高了学生的编码思维能力,该教学方法需要学生大量练习编写代码,目前教学中设计的练习题只分解了“简易学生成绩管理软件”的功能,题量偏少,类型单一。在下一步的工作中,笔者将分解其他软件功能,并将相应的题增加到C语言量化考评系统中。
[1] 李俊萩, 赵家刚, 张晴晖. C语言指针教学中的知识点分析与总结[J]. 计算机教育, 2011(8): 55-60.
[2] 赵忠孝, 杨亚蕾. 对C语言指针教学问题的探究[J]. 计算机教育, 2009(19): 72-74.
[3] 谭浩强. C语言程序设计[M]. 4版, 北京: 清华大学出版社, 2010: 220.
[4] 陈高云, 李蕊, 王嘉昀.贯穿模块化编码的C语言教学过程[J]. 计算机教育, 2012(12): 86-89.
[5] 苟燕, 刘东升, 张丽萍. 基于Moodle的自主学习环境的研究与实践[J]. 计算机教育, 2009(13): 122-124.
(编辑:彭远红)
1672-5913(2017)01-0102-03
G642
成都信息工程大学教育教学研究与改革项目( Y2016009 和 Y2015017)
铁菊红,女,讲师,研究方向为软件工程,tiejuhong@cuit.edu.cn。