蒋小莺
摘要:针对C语言教学中存在的问题与现状,介绍如何通过改进教学方式方法,激发学生学习兴趣,取得较好的教学效果的教学实践。
关键词:C语言; 程序设计;教学方法; 教学效果;教学實践
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2014)07-1467-02
1 概述
C语言功能丰富、表达能力强、使用灵活方便、应用面广、目标程序效率高、可移植性好,兼有高级语言和低级语言的特点,是高校程序设计语言课程中的典型代表,C语言课程的教学目的是通过理论教学和上机实践,使学生了解程序设计语言的基本概念,初步掌握解决简单问题的编程思路和C语言的程序设计方法,并通过上机实践锻炼学生的程序调试能力,为后续课程的学习和应用奠定程序设计基础。因为C语言是计算机专业大一学生最先接触的程序设计语言课程,所以一个好的开始对激发学生学习专业的兴趣是必须的。
2 C语言教学中存在的问题与现状
在多年教学实践中发现学生普遍认为课程难度较大,特别是到第二学期学到函数、指针、文件,有些学生感觉越来越困难,从预习作业不能完成到实验课三道题只能完成一题,越来越失去学习的信心。还有些学生对学习C语言很茫然,不知学了有什么用。现在的学生对上网、淘宝、微信、手游、网游等感兴趣,对学习C语言觉得和现实脱节,课本的例子和完成的作业实验基本是一些简单的数值计算,所以认为C语言学了没用,也缺乏了学习动力。再加上采取的教学方法比较陈旧、单一,往往采用传统的教师讲授的填鸭式教学,学生学习缺乏主动性。教学过程以章节为纲,先讲理论知识点,在课堂上花了很多时间讲述语法、格式和注意的问题。这些书上已经很详细地讲述了。所举的例题也都是小的数值计算题,结果学生到课程设计时总感觉无从下手,设计出来的程序有一些必须的需求都没考虑到。比如做的管理系统出现数据不保存,每次运行输入数据,或者没从文件中读出原来的数据。
3 改进C语言教学的方式方法
3.1 以小游戏激发学生的学习兴趣
以前课堂举例都以数值计算为主,如求5!,输出100~200之间所有的素数,学生觉得较为枯燥,没什么意义和乐趣,所以可以投其所好,举一些小游戏的例子让学生编写并尝试。如可以用猜数、简易贪吃蛇等让学生觉得C语言学习和实践很有乐趣和挑战,这样就激发了学生学习的兴趣。
3.2 以项目驱动法培养学生的软件开发的能力
项目驱动教学法鼓励学生通过项目中涉及到的课程内容主动地提出问题,然后再去探索、寻找答案,改变仅由教师上课的填鸭式教学模式。在实施项目的过程中,将学生分成项目小组,有项目组长组织小组活动,这样既培养了学生发现问题、解决问题的能力,同时锻炼了团队合作精神。用项目驱动法来进行教学,以一个具体的项目,贯通需要的知识点,并且按照软件工程的思想,经历从需求分析到设计再到编程和测试运行的几个阶段,逐步培养学生软件开发的思想和能力。
首先要设计一个合适的项目。比如在学习函数、结构体和文件内容的时候,可以设计一个管理系统软件项目,在项目中让学生体会到函数、结构体和文件的作用比教师单纯的强调效果要好。可以选取学生能切身体会的成绩管理系统。
然后在实施的时候,先将学生进行分组,选取项目组长负责项目的执行。第一步进行需求分析,确认新系统的功能需求。学生分析后得出结论,新系统需要具有学生信息输入、增加学生、删除学生、修改学生信息、统计成绩、查询成绩、显示信息、读取文件和保存的功能。第二步进行系统设计。为系统分解成以下几个模块:
l输入初始的学生信息:其中包括学生的姓名、学号和性别以及学生的各门课程成绩等相关信息。
l查询模块:根据学生的姓名或学号查找输出此学生全部信息包括学生的各门课程的成绩。
l插入模块:插入学生,其中通过学号的大小来比较的,并且以此来排序。
l统计学生成绩模块:统计各门课程的平均分数、最高和最低分数。
l初始化模块:若有文件则从文件中读入学生信息到内存中。
l退出系统模块:首先将信息保存到文件中,释放动态创建的内存空间,再退出此程序。
系统分解的功能模块将由相应的函数来实现。项目组长可以将任务进行分配给组员来详细设计和实现相应的模块。通过这个过程,让学生切身体会函数的作用,通过一定的自学和教师的精讲,掌握函数的使用的重点和难点。
这时在设计学生的信息数据结构的时候,学生会发现和思考以往学习和使用的简单的数据类型能否较好地组织和保存学生的信息,便于教师适时引入结构体类型来解决这个问题。
在保存学生数据的时候,学生自然会思考保存在哪里,如何保存。这时引入文件的读写操作帮助学生解决这个问题。
第三步是实现。在学习了相关知识点后,学生在项目组长的组织下编程实现系统。
第四步是测试。指导学生应用相应的测试方法,设计测试用例,分析测试结果、进行相应的调试和维护。
3.3 以动画演示帮助学生理解课程难点
一些算法、概念和步骤仅由教师口头讲授,太抽象,缺乏想象力的学生很难理解,所以用FLASH制作动画将步骤演示给学生看,提高课堂生动性及学生的学习兴趣。如通过动画演示冒泡排序、选择排序、插入、二分法、递归过程、汉诺塔问题、指针、数组、结构体和链表的创建、遍历、插入、删除等操作。
3.4 以网络教学增加师生互动
可以把教学内容做成课程网站。课前发布上课资料,方便学生预习。学生课后可以随时查看每次讲课的内容,遇到问题可以进入网站查看资料,也可以在公告栏或讨论板发布问题,寻求教师和同学的帮助。还可以在网站上布置作业和收取作业,发布参考资料和前沿动态。
3.5 以分层教学适应学生差异
学生刚入校时的编程水平有差异,有的是没接触过编程,有的却学过VB编程,或者有的参加过中小学信息技术培训和比赛,那么如果按照统一标准教学,则有的困难很大,有的却觉得太简单没意思。针对这种情况采取班内分层教学,根据是否有编程基础和能力将学生分成A、B、C三等,在教学、实验题和作业上有一定区别,为A等学生增加难度题,为C等学生减少题目数量要求质量。可以安排优秀学生担任实验辅导员,在熟练迅速完成自己的实验后,也不必无所事事,而是帮助教师辅导学生,帮助学生调程序,在期末成绩上给予一定的加分奖励。这样既增强了先进同学的自豪感和积极性,同时减轻了辅导教师的工作量。
3.6 改革课程考核办法,开发相应的考试系统
传统的考试只有期末考试,并且只有笔试。这种弊端是学生到課程快结束时,才会感到考试的紧迫而匆匆学习,俗称“零时抱佛脚”,这对课程内容的掌握的扎实度和对后续课程的深入都是欠缺的。所以有必要改变“一考定终身”式的和单一的笔试考核方式,发挥以考促学的效果,改革考核形式和方法。将考核分为平时+实践+考试三部分,考试有期中和期末两次成绩,并且包括理论和上机两部分的考试,开发相应的考试系统,能够自动组卷和阅卷,让学生考不同的卷子,减少作弊的可能性,减少教师阅卷的工作量。平时除了考勤、作业,在单个知识点或相联系的几个知识点结束后,安排相应的小测验。通过测验和考试,不断拉紧学生学习的弦,检查自己有哪些薄弱的地方,以促进提高。
4 结论
C语言是计算机专业和相关专业的一门重要基础课程,但是具有相当的难度和枯燥性,大多数学生难以掌握,所以在教学中要不断探索总结经验,充分利用现代教学手段,激发学生的学习兴趣,灵活应用各种教学方法,这才能达到较好的教学效果。
参考文献:
[1] 孟朝霞,王琴竹,李妮. C语言程序设计课程项目教学目标建设与实践[J]. 中国科技信息,2010(4).
[2] 陈湘骥,徐东风,杨秋妹. 在线评判在C语言课程设计教学中的应用[J]. 计算机教育, 2010(3).
[3] 蒋霞. 基于CDIO理论的C语言程序设计课程改革[J]. 电脑知识与技术, 2012(27).
[4] 张婧姝,魏玲. 项目驱动教学法在数据库管理系统课程中的应用[J]. 经济研究导刊, 2011(29).
[4] 胡尊美. “C语言”程序设计实验教学改革探讨[J]. 福建电脑, 2010(1).