论文部分内容阅读
摘要:针对学生在C语言程序设计学习中,在逻辑思维建立与题目分析求解方面存在的问题进行了深入探讨,提出了设问引导构思法、一题多解算法比较、框架教学法、实验题目设计的层次化与多样化等思想。通过多年的实践教学表明,这些方法对提高学生学习兴趣、引发学生积极思考与提高编程实践能力有较好的效果。
关键词:C语言;教学引导;课堂教学
作者简介:刘亚辉(1974-),女,河北任丘人,北京信息科技大学计算中心,副教授;李桂芝(1971-),女,辽宁开原人,北京信息科技大学计算中心,高级实验师。(北京 100192)
基金项目:本文系北京信息科技大学2012年度高教研究课题资助(项目编号:2012GJYB15)、黑龙江省高等教育学会高等教育科学研究“十二五”规划课题(项目编号:HGJXHC110662)、黑龙江省教育科学规划课题(项目编号:GBD1211026)的研究成果。
中图分类号:G642.0 文献标识码:A 文章编号:1007-0079(2013)23-0080-02
C语言是大学生学习程序设计的一门入门课程,也是后续计算机专业课如数据结构、编译原理等课程的基础。其教学目的是让学生建立基本的编程思想、掌握程序编写与调试的基本技能,运用所学知识解决基本实际应用问题,而教学目标的实现应是以激发学生学习兴趣,调动学生主动性参与学习实践为基础。在C语言教学改革的研究中,通过比较众多版本的优秀教材,[1-3]不难发现:教师在授课过程中灵活运用教学技巧将教学内容合理编排、授课过程中有意识进行思维引导以及合理选择与设计实验题目,是提高学生学习主动性与实践能力不可或缺的关键要素。而传统枯燥的语法讲解、快速翻阅幻灯片、挤压式的编程训练会让大一的新生们心理上畏惧与反感,教师无意识的“填鸭”教学影响了教学质量。本文结合教学实践,将教学过程中的一些实用教学方法以及实验题目层次化与多样化设计方法进行阐述,这些方法在激发学生学习的积极性,提高课堂教学效果上有一定的借鉴意义。
一、教学引导
1.从已知到未知
从已知入手,学生在高中阶段已经储备了足够的数学知识,并熟悉多种函数的应用与计算。所以在第一节课,教师不但可以演示简单的Hello入门程序、输入与输出语句,而且可以配合讲解并演示sin(x)、cos(x)以及ln(x)等函数的复合运算。学生自然感悟到:原来编程可以算数学题。此外,还可以结合专业知识演示C语言的应用,例如:结合Matlab、Opencv演示C语言在数学计算、数字图像处理等领域的应用,让学生初步对编程的用途有所了解,这样学生会有目的地学习,而不是不知学为何用。
2.设问引导构思,同步编程演示
教师在讲解算法或题目时,采取同步编程演示的方法要好于对幻灯片不厌其烦多次讲解。可以从数学思维角度引导学生勾勒自己的编程思路,并配合编程,使学生比较容易理解教师的思考过程。首先,在提出问题时,要先听学生的想法,而不是填鸭式灌输教师的思想,学生的奇思异想有时也可以开拓教师的思路,可谓教学相长。其次,在讲解时,可以采用设问方式引导学生一步步主动而深入思考问题的求解方法。思路确定后,对于怎样将想法演变为代码,循序渐进引导学生顺理成章把想法实现,这会让学生增加学习的信心。例如:求10个数中的最大值问题。求解这个问题的方法不唯一,教师可以在与学生进行算法沟通后,编程时比较不同算法(方法一、方法二,见图1)。同时,进一步让学生思考只用循环与用数组求解的不同之处,最小值、求和以及平均值的求法,举一反三,程序该如何修改?
3.算法比较,一题多解
学生在上机时,会对同一题目写出多样的程序,注重不同算法的比较,一题多解,有助于学生学习好的算法,同时也尊重了学生的独立思维。例如:输入500个0-20的整数,统计每个数出现的次数。可以引导学生思考:循环多少次?怎样统计个数?根据已学知识只用if语句可行吗?与循环语句结合该怎样写?比较图2所示(a)、(b)、(c)三个算法,可以看出(c)算法较好。
4.框架结构法
在读程序时,初学者容易混淆语句间的关系,在if语句与循环语句同时出现时,除了借助流程图外还可以辅助框架结构,将循环语句、if、switch以及其所属语句关系用框架分割,以帮助学生理解复杂程序。
5.循序渐进,任务驱动,“滚雪球”式学习
对授课者来说,在有限的学时内完成授课,若再进行一定的综合题目训练是有一定难度的。但是,可将综合问题化解到各章。在讲解输入、输出语句的使用后就可以让学生完成简单的菜单显示;在讲选择时,可以进一步进行菜单的选择设计;在讲循环时,再添入某一位学生的各门课成绩累加求和、求平均值;在讲解数组后就可对多位学生的成绩求和、求平均、求最值;讲函数后可以进一步将程序模块化,包括数据录入、查询、修改、删除,统计计算等;讲授结构体、文件与链表后,可以建立存储学生的信息、动态结点访问。随着对学生成绩管理系统功能的逐步完善,学生对运用程序开发设计不但有了基本的认识,同时通过教师有意识的串联讲解,也可让学生在有限的课时内完成综合题目的练习。[4]
二、实践设计
C语言实验教学平台能够完成学生题目的自动判题,有效促进了程序语言的教学改革。但是,题目的选择与题型设计对教学平台的设计提出了更高的要求。
1.实验题目层次化选择
在学习编程时,学生理解接受知识的能力是有差别的。在设计题目与设置要求时,对少数有编程基础的学生,可提出与解决实际问题难度适中的题目;对初次接触程序但理解能力较强的学生,可将布置的题目逐步引申,促使学生循序渐进对所学知识点加深理解;对编程入门较困难的学生,鼓励其用课堂所学语句模仿编程,以帮助学生消化理解所学内容,并掌握基本的程序调试方法。
2.实验题型多样化设计
C语言实验教学平台主要以选择题与编程题为主。在题目设计中还可以适当根据知识点添加程序改错或填空题型,以提高程序调试能力并降低部分题目的编程难度。除了基础的编程题型外,还可设计有趣的题目,解决如:歌手大奖赛、青蛙过河、对联文字逆序输出、密码破解以及手机通讯录等实际问题。
3.小组协作互助学习
有的学生比较内向,遇到困难时一般不会主动求助于教师。在上机时,如果让快速完成题目的学生协助完成,不但增强了他们的自信心,也有助于这些学生的问题能够得到及时解决与反馈。此外,还可以适当布置有一定综合性的题目,让每组对题目进行模块划分,讨论、协作完成并在课堂讲解,教师进行即时点评,这样可以激发学生学习的兴趣与主动性,并使教师及时了解学生对知识点的掌握情况。
4.改革考核方式
在期末考核中,应逐步加大上机考试,尤其是平时实验成绩在期末成绩中的比例,这也是督促学生重视编程实践的方法之一。
三、结论
本文对C语言教学中引导学生问题求解构思、算法比较、框架辅助教学、实验题目层次化设计、题型多样化设计等方面进行了阐述,这些方法对激发学生学习兴趣,提高编程实践的主动性与培养编程能力有一定的效果。
参考文献:
[1]谭浩强.C程序设计[M].第三版.北京:清华大学出版社,2007.
[2]何钦铭,颜晖.C语言程序设计[M].北京:高等教育出版社,2008.
[3]苏小红,孙志岗.C语言大学实用教程[M].北京:电子工业出版社,2012.
[4]陈婷.C语言程序设计实验教学改革与探究[J].实验技术与管理,2010,27(10):182-184.
(责任编辑:刘辉)
关键词:C语言;教学引导;课堂教学
作者简介:刘亚辉(1974-),女,河北任丘人,北京信息科技大学计算中心,副教授;李桂芝(1971-),女,辽宁开原人,北京信息科技大学计算中心,高级实验师。(北京 100192)
基金项目:本文系北京信息科技大学2012年度高教研究课题资助(项目编号:2012GJYB15)、黑龙江省高等教育学会高等教育科学研究“十二五”规划课题(项目编号:HGJXHC110662)、黑龙江省教育科学规划课题(项目编号:GBD1211026)的研究成果。
中图分类号:G642.0 文献标识码:A 文章编号:1007-0079(2013)23-0080-02
C语言是大学生学习程序设计的一门入门课程,也是后续计算机专业课如数据结构、编译原理等课程的基础。其教学目的是让学生建立基本的编程思想、掌握程序编写与调试的基本技能,运用所学知识解决基本实际应用问题,而教学目标的实现应是以激发学生学习兴趣,调动学生主动性参与学习实践为基础。在C语言教学改革的研究中,通过比较众多版本的优秀教材,[1-3]不难发现:教师在授课过程中灵活运用教学技巧将教学内容合理编排、授课过程中有意识进行思维引导以及合理选择与设计实验题目,是提高学生学习主动性与实践能力不可或缺的关键要素。而传统枯燥的语法讲解、快速翻阅幻灯片、挤压式的编程训练会让大一的新生们心理上畏惧与反感,教师无意识的“填鸭”教学影响了教学质量。本文结合教学实践,将教学过程中的一些实用教学方法以及实验题目层次化与多样化设计方法进行阐述,这些方法在激发学生学习的积极性,提高课堂教学效果上有一定的借鉴意义。
一、教学引导
1.从已知到未知
从已知入手,学生在高中阶段已经储备了足够的数学知识,并熟悉多种函数的应用与计算。所以在第一节课,教师不但可以演示简单的Hello入门程序、输入与输出语句,而且可以配合讲解并演示sin(x)、cos(x)以及ln(x)等函数的复合运算。学生自然感悟到:原来编程可以算数学题。此外,还可以结合专业知识演示C语言的应用,例如:结合Matlab、Opencv演示C语言在数学计算、数字图像处理等领域的应用,让学生初步对编程的用途有所了解,这样学生会有目的地学习,而不是不知学为何用。
2.设问引导构思,同步编程演示
教师在讲解算法或题目时,采取同步编程演示的方法要好于对幻灯片不厌其烦多次讲解。可以从数学思维角度引导学生勾勒自己的编程思路,并配合编程,使学生比较容易理解教师的思考过程。首先,在提出问题时,要先听学生的想法,而不是填鸭式灌输教师的思想,学生的奇思异想有时也可以开拓教师的思路,可谓教学相长。其次,在讲解时,可以采用设问方式引导学生一步步主动而深入思考问题的求解方法。思路确定后,对于怎样将想法演变为代码,循序渐进引导学生顺理成章把想法实现,这会让学生增加学习的信心。例如:求10个数中的最大值问题。求解这个问题的方法不唯一,教师可以在与学生进行算法沟通后,编程时比较不同算法(方法一、方法二,见图1)。同时,进一步让学生思考只用循环与用数组求解的不同之处,最小值、求和以及平均值的求法,举一反三,程序该如何修改?
3.算法比较,一题多解
学生在上机时,会对同一题目写出多样的程序,注重不同算法的比较,一题多解,有助于学生学习好的算法,同时也尊重了学生的独立思维。例如:输入500个0-20的整数,统计每个数出现的次数。可以引导学生思考:循环多少次?怎样统计个数?根据已学知识只用if语句可行吗?与循环语句结合该怎样写?比较图2所示(a)、(b)、(c)三个算法,可以看出(c)算法较好。
4.框架结构法
在读程序时,初学者容易混淆语句间的关系,在if语句与循环语句同时出现时,除了借助流程图外还可以辅助框架结构,将循环语句、if、switch以及其所属语句关系用框架分割,以帮助学生理解复杂程序。
5.循序渐进,任务驱动,“滚雪球”式学习
对授课者来说,在有限的学时内完成授课,若再进行一定的综合题目训练是有一定难度的。但是,可将综合问题化解到各章。在讲解输入、输出语句的使用后就可以让学生完成简单的菜单显示;在讲选择时,可以进一步进行菜单的选择设计;在讲循环时,再添入某一位学生的各门课成绩累加求和、求平均值;在讲解数组后就可对多位学生的成绩求和、求平均、求最值;讲函数后可以进一步将程序模块化,包括数据录入、查询、修改、删除,统计计算等;讲授结构体、文件与链表后,可以建立存储学生的信息、动态结点访问。随着对学生成绩管理系统功能的逐步完善,学生对运用程序开发设计不但有了基本的认识,同时通过教师有意识的串联讲解,也可让学生在有限的课时内完成综合题目的练习。[4]
二、实践设计
C语言实验教学平台能够完成学生题目的自动判题,有效促进了程序语言的教学改革。但是,题目的选择与题型设计对教学平台的设计提出了更高的要求。
1.实验题目层次化选择
在学习编程时,学生理解接受知识的能力是有差别的。在设计题目与设置要求时,对少数有编程基础的学生,可提出与解决实际问题难度适中的题目;对初次接触程序但理解能力较强的学生,可将布置的题目逐步引申,促使学生循序渐进对所学知识点加深理解;对编程入门较困难的学生,鼓励其用课堂所学语句模仿编程,以帮助学生消化理解所学内容,并掌握基本的程序调试方法。
2.实验题型多样化设计
C语言实验教学平台主要以选择题与编程题为主。在题目设计中还可以适当根据知识点添加程序改错或填空题型,以提高程序调试能力并降低部分题目的编程难度。除了基础的编程题型外,还可设计有趣的题目,解决如:歌手大奖赛、青蛙过河、对联文字逆序输出、密码破解以及手机通讯录等实际问题。
3.小组协作互助学习
有的学生比较内向,遇到困难时一般不会主动求助于教师。在上机时,如果让快速完成题目的学生协助完成,不但增强了他们的自信心,也有助于这些学生的问题能够得到及时解决与反馈。此外,还可以适当布置有一定综合性的题目,让每组对题目进行模块划分,讨论、协作完成并在课堂讲解,教师进行即时点评,这样可以激发学生学习的兴趣与主动性,并使教师及时了解学生对知识点的掌握情况。
4.改革考核方式
在期末考核中,应逐步加大上机考试,尤其是平时实验成绩在期末成绩中的比例,这也是督促学生重视编程实践的方法之一。
三、结论
本文对C语言教学中引导学生问题求解构思、算法比较、框架辅助教学、实验题目层次化设计、题型多样化设计等方面进行了阐述,这些方法对激发学生学习兴趣,提高编程实践的主动性与培养编程能力有一定的效果。
参考文献:
[1]谭浩强.C程序设计[M].第三版.北京:清华大学出版社,2007.
[2]何钦铭,颜晖.C语言程序设计[M].北京:高等教育出版社,2008.
[3]苏小红,孙志岗.C语言大学实用教程[M].北京:电子工业出版社,2012.
[4]陈婷.C语言程序设计实验教学改革与探究[J].实验技术与管理,2010,27(10):182-184.
(责任编辑:刘辉)