基于能力培养的C语言项目化训练教学模式初探
2009-06-20王晓勇肖四友张文祥
王晓勇 肖四友 张文祥
文章编号:1672-5913(2009)10-0060-03
摘要:本文针对C语言课程学习特点提出了知识模块化、训练项目化的教学模式,通过分析C语言当前教学现状,介绍了该教学模式下项目化教学方法的设计思路、并给出详细的训练项目设计方案以及项目化教学方法的实施流程和实施效果;通过项目化教学方法的实际运用说明这种教学模式的教学效果及推广价值。
关键词:C语言课程;知识模块化;训练项目化;教学模式;探索与实践
中图分类号:G642
文献标识码:B
1C语言的重要性及目前教学现状
“C语言程序设计”课程是高等院校计算机及其应用专业学生一门必修课,也是其它一些非计算机专业学生一门重要的基础课程,它对训练学生思维能力和实际解决问题能力的培养,起到重要作用。目前多数高校的C语言教学方法主要形式仍然是以讲授语法、分析算法为主,教学学时安排大多采用理论与实践2+2的学时计划;由于C语言功能强大,表达能力强,其丰富的功能所带来的繁多的数据类型、复杂语法结构以及面向过程的结构化程序设计,传统的教学方法理论学时学语法、讲算法,实践学时让学生通过做练习题,记住语法、算法,使初学者感觉C语言学习难度大,学习过程枯燥,因而很多学生在学习C语言时不是理解算法而是去“背”算法,更少有学生去欣赏精巧的算法。因此,在C语言的教学过程中,教师必须找到适合学生学习特点的教学手段和方法,合理地组织教学内容、精心地设计教学案例。由于“C语言程序设计”课程也是一门实践性很强的课程,除了合理的理论课堂教学,还必须重视上机实践环节,通过让学生动手实践,巩固和消化理论教学内容,因此如何设计实践教学环节的上机任务,使学生有兴趣动手编程,又能恰当与理论教学内容衔接好,使实践环节有充分满的上机任务,从而让C语言的学习过程由枯燥变为愉快的探索之旅。
本文介绍的C语言课程阶段性项目化训练教学方法,正是针对目前C语言教学现状中存在的不足而提出,并且阶段性项目化训练教学方法在“C语言程序设计”课程中实际教学运用也取得良好的教学效果。
2C语言的学习难点分析
C语言课程在很多高校一般是一年级第二学期开设,学生对C语言学习的第一印象虽然觉得它很神秘,也很想学会它。但翻开C语言第一章,C语言丰富的数据类型、运算符和表达式等基本语法往往会让学生觉得难、枯燥,因此有些学生在还没有能了解到C语言学习乐趣时就已经在主观上产生畏难情绪,还有一些学生在上机调试程序时,编译产生的一堆错误也会吓跑学生的学习兴趣;当教学过程进行到数组、函数部分时,学生在完成课后侧重语法和算法训练的练习题时,编程不断遇到的困难更是学生学习兴趣最大的“杀手”,如果得不到及时的帮助,更会使得学生失去对C语言这门课程的学习的信心和兴趣。因此,传统C语言教学方法按照章节不断推进的学习过程,虽然在知识传授上具有很好的系统性,但从学生对C语言的学习现状也可以看出,这个系统的学习过程会随着知识难度和深度地加深而逐渐失去一部分学习者,最后学习到C语言指针部分时,有较多学生已经因为积累太多的问题和困难不能再接受,跟不上教学进度,从而放弃对C语言课程的学习。针对C语言这种学习情况,如何在C语言的整个教学过程中始终保持学生的学习兴趣,使学生在学习过程中不断会有成就感,不会被困难吓跑,在学习上了一个台阶后还有具有再上一个新台阶的信心和兴趣,这些都需要教师合理组织C语言教学内容和运用恰当的教学方法才能实现。本文提出的C语言阶段性项目化训练教学方法,也是针对这些需要对C语言的教学做出的一些探索和总结。
3什么是阶段性项目化教學模式
3.1C语言课程教学内容分阶段模块化
根据C语言教学内容学习特点,将C语言课程教学内容分阶段模块化,即将知识单元化,针对不同单元知识特点,设计相应训练项目,使学生通过这一阶段的训练项目编程巩固单元知识。C语言课程分阶段模块化知识结构如图1所示。
3.2阶段性项目化教学模式中项目的设计
C语言课程实践教学中采用分阶段项目训练。训练项目设计原则是程序功能与学生感兴趣的实际问题相关,学生运用本单元学习的知识能够完成项目编程;如果学生想把项目完成的更完善还需要再进入下一单元的学习;阶段性项目的顺利实现使学生体验成就感,但程序功能上还存在的缺陷或漏洞能激励学生积极主动地学习新的知识以实现程序功能的完善。下面给出的几个训练项目示例是C语言实践教学中按教学进度与知识模块划分设计出五个小型程序设计项目:
(1) 算术运算测试软件及超市商品收银机程序
① 项目设计说明:运用选择结构编程实现有限四则运算的算术测试软件或能实现超市商品收银机功能的软件,要求算术测试软件能随机出题,用户可自由选择题量及练习的运算内容(如加、减、乘、除等);用户可随时结束练习,并给出本次测试的成绩;要求软件用户操作界面友好,具有一定的容错性。
② 训练目的:在结构化程序设计顺序结构、选择结构及实现选择结构的控制语句学习完之后,通过该小型程序设计项目的完成训练学生对选择结构程序的编程练习,巩固选择结构知识模块,了解选择结构在解决实际问题编程中的运用。
③ 训练知识点:选择结构及实现选择结构的控制语句:if-else语句和switch语句。
(2) 剪刀、石头、布游戏设计
① 项目设计说明:运用循环结构编程实现剪刀、石头、布游戏软件,要求软件设计符合游戏公平的原则,该游戏实现用户(玩家1)与计算机(玩家2)的剪刀、石头、布游戏,每次比赛给出比赛结果,用户选择具有一定的容错性、计算机选择具有随机性;用户可多次进行游戏并能随时退出游戏。
② 训练目的:在结构化程序设计循环结构及实现循环结构的控制语句学习完之后,通过该小型程序设计项目的完成训练学生对循环结构程序的编程练习,巩固循环结构知识模块,了解循环结构在解决实际问题编程中的运用。尤其在编程调试中对死循环的出现如何避免、程序的漏洞如何应对等,训练学生的程序调试能力及分析问题、解决问题能力、培养学生考虑问题细致、周密的习惯。
③ 训练知识点:循环结构及实现循环结构的控制语句:do-while语句、while语句和for语句。
(3) 加密短信阅读程序设计
① 项目设计说明:综合运用结构化程序设计的三种基本控制结构:顺序结构、选择结构和循环结构实现编程;本项目的设计难点有二点:一是如何密码能安全输入,同时也具有密码输入的容错性;二是短信的存放方式及阅读方式;要求软件设计界面美观、友好,当用户输入正确,可以顺利阅读短信内容。
② 训练目的:在一维数组、字符数组和二维数组学习完之后,通过该小型程序设计项目的完成训练学生对数组这种数据类型的编程练习,巩固数组知识模块,了解数组这种数据类型在解决实际问题编程中的运用。通过该项目设计,也使学生进一步感性认识到“程序设计=数据结构+算法”,数据结构在程序设计中的重要作用,使学生明确程序与数据之间的关系以及程序设计的设计思路可以从程序加工的对象—数据及其组织方式为切入点。
③ 训练知识点:数组及数组应用;掌握一维数组、字符数组或二维数组的基本语法和数组在编程中的运用。
(4) 用户自定义函数说明书的设计
① 项目设计说明:综合运用结构化程序设计的三种基本控制结构、数组和函数的知识实现编程;本项目的设计要求至少设计出四个不同功能的用户自定义函数,设计出用户自定义函数说明书封面和选择菜单,用户可自由选择要学习的函数,当用户选择学习某函数时,给出该函数的原型、功能、调用格式及函数应用示例等使用说明。要求软件操作界面美观、友好;用户可随时结束学习,并给出本次学习情况说明。
② 訓练目的:在用户自定义函数及函数应用学习完之后,通过该小型程序设计项目的完成训练学生对函数的编程练习,巩固函数知识模块,了解函数是C程序的基本模块,掌握用户自定义函数功能、定义格式、调用方式等基本语法知识。通过该项目设计,也使学生进一步感性认识到结构化程序的特点,认识到用户自定义函数与C标准库函数的关系及在编程中的作用。
③ 训练知识点:函数及函数应用;掌握函数定义、函数声明、函数调用等基本语法和在编程中函数模块的设计。
(5) 学生信息管理系统设计
① 项目设计说明:要求综合运用C语言课程知识编程,侧重于理解指针在编程中的运用,要求使用结构体类型处理数据,掌握对文件的读写操作。学生信息管理系统功能要求:
●建立信息源,即能将若干学生信息添加到数据文件中。(学生信息主要包括:学号、姓名、性别、年龄、通讯地址等,也可自定信息)
●查找信息,为用户提供几种查找方式,如按姓名查找或按学号查找等,要求最少提供一种查找方式。如输入要查找姓名,输出相应结果。
② 训练目的:在指针、结构体和文件操作学习完之后,通过该小型程序设计项目的完成训练学生对指针、结构体、文件类型的编程练习,巩固指针、结构体和文件知识模块,了解结构体数据类型与数组类型对数据组织方式上的不同;掌握指针变量定义、结构体类型定义、结构体变量定义和文件读写操作等基本语法知识。通过该项目设计,也使学生更进一步综合运用“C语言程序设计”课程所学的各模块知识,分析、解决实际问题,达到学以致用的效果。
③ 训练知识点:指针、结构体和文件;掌握指针与结构体数据类型在编程中的运用;掌握对文件的操作。
3.3分阶段模块化教学的优点
分解C语言课程的学习难点,针对每个阶段和知识模块设计的程序设计项目由浅入深,由易至难,使学生的学习过程有成就感,有效地激发学生的学习兴趣。
4项目化教学方法应用
4.1阶段性项目化教学方法实施流程
C语言课程理论教学知识模块化、实践教学阶段性训练项目编程在实际教学中的应用,教学效果良好,很大程度上激发了学生对C语言课程的学习热情。教学方法实施流程如图2所示:
4.2C语言知识模块化训练项目化教学学生评价方法
为了与C语言阶段性项目化训练的教学方法相适应,对学生C语言课程的成绩考核需要从注重结果转变为注重过程的课程成绩评价方法,课程考核成绩的组成部分也从过去平时成绩、期末考试成绩转变为由多项组成。如下面公式所示:
课程考核成绩 = 平时上机实验成绩+模块化单元测验+阶段项目设计成绩+期末综合知识考核成绩
5结束语
针对高校计算机语言课程C语言程序设计课程进行的教学模式的研究与改革,在实际教学应用中取得了较好的效果,这种教学方法也受到学生的普遍欢迎,并获得校级教学成果一等奖,按此教学方法进行教学改革的试点班在浙江省高校计算机应用水平二级考试通过率达到92%的好成绩。C语言知识模块化、训练项目的教学模式对计算机语言类的课程教学模式、教学方法方面做出有益的探索。
参考文献:
[1] 龚沛曾,杨志强. C/C++程序设计教程[M]. 北京:高等教育出版社,2004.
[2] 刘玮玮,汪晓平. C语言高级实例解析[M]. 北京:清华大学出版社,2004.
[3] 谭浩强. C语言程序设计[M]. 北京:清华大学出版社,2005.
Desk Study of Teaching Model about C-Language Project Training Based on Ability- Cultivation
WANG Xiao-yong, XIAO Si-you, ZHANG Wen-xiang
(Zhejiang Wanli University, Ningbo 315000, China)
Abstract: The paper mainly discusses the knowledge-blocking and project-training teaching model that designed based on the characteristic of C-language course studying, analyzes the current situation of C-language teaching, and introduces the design cycle of projected instruction under that teaching model, provides a detailed design proposal of the training project and actualizing procedures and effects of the Project training. It also explains the teaching results and promotion value of the teaching model by its practical application.
Key words: C-language course; phased projecting; teaching method; exploration and practicing