论文部分内容阅读
【摘要】本文结合心理学及软件工程提出新的C语言程序设计课程架构,以便在C语言程序设计教学中采取多种有效的教学手段,使学生在掌握基本概念的同时提高解决实际问题的能力,培养学生的学习兴趣,提高全国计算机等级考试的合格率,增强就业竞争力。
【关键词】C语言 程序设计 课程架构
【中图分类号】G642 【文献标识码】A 【文章编号】1009-9646(2009)01(a)-0125-02
我国高校理工科专业一般在大一第一学期开设C语言程序设计,采用传统课程架构进行教学,学生普遍感到学习有难度,特别在全国计算机等级二级C语言程序设计的考试笔试成绩一般都不理想,例如我国某全国重点大学考点在2008年4月考试中二级C语言的笔试合格率只为54.3%,而一般三本考生的合格率只为15%左右,现在理工科学生等级考试合格证书事实上已成为找到稍微理想的工作的必要条件,为此必需研究改革C语言程序设计课程架构,提高学生等级考试的合格率以及毕业就业率。
1 立体化课程架构
课本中的例题可分为说明性例题和应用性题例,说明性例题用于说明语法现象,应简明扼要,可读性强,应用性题例则主要为应用所学知识解决实现问题,应多选择趣味性强的程序,培养学生的学习兴趣。
在二级等级考试中,还包括公共基础知识,具体为数据结构与算法、程序设计基础、软件工程基础和数据库设计基础,在笔试成绩中占30分,对于大部分非计算机专业,一般都没有开设这些课程,因此考分容易失分。对于公共基础知识的考试知识点,可精心安排“相关知识”,逐步讲解公共基础知识,再配以由真实等级考题改编的说明性例题,这样学生不但在不知不觉中扩大了知识面,也熟悉了考题内容与考试范围。
为对不同基础的学生都有所帮助,每章都安排实例研究,选择有一定深度与有趣的项目,例如井字游戏,基因排序,在每章末尾还应安排程序陷阱,用于讲解程序中容易出错的语法现象。最后还应通过教学支持网站补充教学内容,例如课本中的所有程序、常用C编译器的使用方法以及课件等内容。
2 按照学生认知能力与接受能力精心安排教学内容
学生认知能力与接受能力是一个逐步提高的过程,学习知识也是一种螺旋式上升的过程,特别对于C语言,有的语法现象,学生开始学习时,这些内容已超过了他们的认知范围与接受能力,为此可先安排适合学生接受的基础知识,然后再在后继章节中逐步深化,使学生有不断提高与升化的过程,例如对于指针,可先讲解指针的概念、指针与数组、指针与函数参数、字符指针与字符串等基本内容,然后再在后继章节中逐步深入讲解动态内存的分配与释放、线性链表、指向函数的指针与返回指针的函数等内容。
教学难点往往不是教学重点,更不是考试重点(事实上难点往往考得少甚至不考),可集中安排C语言高级主题,例如变长参数和命令行参数等内容,这部分内容,教师可根据教学课时的多少选讲或让学有余力的学生自学。
根据心理学可知人一次的接受能力是有限的,内容越多记忆效果越差,因此对某个语法现象的说明不宜太多,最好不要超过5点,最好理解难度较大的要点可放在程序陷阱中加以讨论,只有理解的知识点才容易识记,因此对每个知识点都要通过说明性题例加以说明。
3 程序可读性是教学成败的关键
现在大部分C语言程序设计的教材的程序注释较少,很多程序根本没有注释,而注释是提高算法可读性的简便方法,因此在讲解程序时,应为程序加上详细的注释,最好对大部分语句以及程序的每个关键点都加以注释进行详细阐明含义及要点。
以前的教材在介绍C语言时,认为C语言是一种介于低级语言与高级语言之间的一种高效语言,用C语言编写的程序的效率更高,强调编程的技巧性,习惯将用C语言编写的源程序编写得短小精精干,比如对于整形变量x,习惯于编写如下形式的代码:
if (x) {……}
else {……}
而这样的可读性较差,如改为:
if (x != 0) {……}
else {……}
则更容易理解。
现在由于硬件技术的快速发展,也随着软件危险的出现及软件工程的发展,相对地,对于程序的运行速度相于地处于次要地位,更强调程序的可读性与开发程序的规范生,因此C语言的教学也应转变思想,应更多考虑程序的可读性与学生的接受能力,而不应过份地强调所谓的编程“技巧”。
对于算法的描述可采用自然语言表示、流程图表示以及N-S图表示。应多考虑学生的接受能力,尽力避免过于强调算法细节而甚使程序不但长也难于理解,比如对于判断年份是否为闰年的算法,根据历法,闰年的条件为:
年份能被4整除但不能被100整除或年份能被400整除
由闰年条件很容易用自然语言描述如下:
如果年份能被4整除但不能被100整除或年份能被400整除,则为闰年,否则平年
C语言函数实现如下:
int LeapYear(int year)
/* 判断年份year是否为闰年,如果是闰年返回1,否则返回0 */
{
if (year % 4 == 0 && year % 100 != 0 /* 如果年份能被4整除但不能被100整除 */
|| year % 400 == 0) return 1; /* 或年份能被400整除,则为闰年 */
else return 0; /* 否则为平年 */
}
如果采用N-S图进行描述容易陷入算法细节,比如如为闰年,就令leap=1,若为平年就令leap=0,最后返回leap。一般教材的N-S图如下:
C语言函数实现如下:
int LeapYear(int year)
{
int leap;
if (year % 4 == 0)
{
if (year % 100 == 0)
{
if (year % 400 == 0)
leap = 1;
else
leap = 0;
}
else
leap = 1;
}
else
leap = 0;
return leap;
}
首先N-S图过于陷入细节的描述,还有上面的C函数无注释,可读性较差,这样不但会增加学生的学习负担,还可能使学生产生畏惧心理。
4 兴趣是最好的老师
只有学生对所学课程有兴趣,才会将学习过程变成一种享受,老师应尽力培养学生的兴趣,在课堂上结合例题尽量多讲一些有趣故事,用,例如在讲Fibonacci数列时,应讲解Fibonacci数据的故事,在讲1+2+3+…+n的程序时,应同时讲解高斯的故事,最后还应找一些有趣的应用性例题,例如石头、剪刀、布游戏与碰运气游戏,如例题太长,可留作课外阅读。
5 精心设计习题与示例性例题,使学生尽快熟悉各种考试题型
现在一般教材的例题都只是一些编程题,题型太单一,一般期末考试都有单项选择题,填空题,阅读程序题,程序填空题,程序改错题与编程题。全国计算机等级考试笔试只有单项选择题与填空题,但其中由于包含了大量的程序,实际上也包含了程序阅读题与程序填空题,在全国计算机等级上机试题中包含有程序填空题,程序修改题和程序设计题,因此在例题方面不但主要讲解程序设计,而且还应包含填空题,阅读程序题,程序填空题,程序改错题方面的题目,对于习题也应包含单项选择题,填空题,阅读程序题,程序填空题,程序改错题与编程题。
在编写例题或习题时,应注意学习的理解能力与接受能力,难题不宜太多,应包含大量基本训练方面的题目,可从全国计算机等级考试试题中选择适当的题目加以改编。
为满足不同层次学生的教学需求,可使用分层的思想,没加有星号“*”及“**”的部分为基本内容,适合所有学生学习;加有星号“*”的部分适合计算机专业的学生深入学习的选学部分;加有星号“**”的部分适合于感兴趣的同学研究,尤其适合于那些有志于ACM竞赛的读者加以深入研究。
参考文献
[1] 谭浩强.C程序设计[M].北京:清华大学出版社,2006.
[2] 谭浩强.C程序设计教程[M].北京:清华大学出版社,2008.
[3] 王紫薇,杨捧,刘金莲.高级语言程序设计教学模式的探索[J].前沿探索,2008,(4).
【关键词】C语言 程序设计 课程架构
【中图分类号】G642 【文献标识码】A 【文章编号】1009-9646(2009)01(a)-0125-02
我国高校理工科专业一般在大一第一学期开设C语言程序设计,采用传统课程架构进行教学,学生普遍感到学习有难度,特别在全国计算机等级二级C语言程序设计的考试笔试成绩一般都不理想,例如我国某全国重点大学考点在2008年4月考试中二级C语言的笔试合格率只为54.3%,而一般三本考生的合格率只为15%左右,现在理工科学生等级考试合格证书事实上已成为找到稍微理想的工作的必要条件,为此必需研究改革C语言程序设计课程架构,提高学生等级考试的合格率以及毕业就业率。
1 立体化课程架构
课本中的例题可分为说明性例题和应用性题例,说明性例题用于说明语法现象,应简明扼要,可读性强,应用性题例则主要为应用所学知识解决实现问题,应多选择趣味性强的程序,培养学生的学习兴趣。
在二级等级考试中,还包括公共基础知识,具体为数据结构与算法、程序设计基础、软件工程基础和数据库设计基础,在笔试成绩中占30分,对于大部分非计算机专业,一般都没有开设这些课程,因此考分容易失分。对于公共基础知识的考试知识点,可精心安排“相关知识”,逐步讲解公共基础知识,再配以由真实等级考题改编的说明性例题,这样学生不但在不知不觉中扩大了知识面,也熟悉了考题内容与考试范围。
为对不同基础的学生都有所帮助,每章都安排实例研究,选择有一定深度与有趣的项目,例如井字游戏,基因排序,在每章末尾还应安排程序陷阱,用于讲解程序中容易出错的语法现象。最后还应通过教学支持网站补充教学内容,例如课本中的所有程序、常用C编译器的使用方法以及课件等内容。
2 按照学生认知能力与接受能力精心安排教学内容
学生认知能力与接受能力是一个逐步提高的过程,学习知识也是一种螺旋式上升的过程,特别对于C语言,有的语法现象,学生开始学习时,这些内容已超过了他们的认知范围与接受能力,为此可先安排适合学生接受的基础知识,然后再在后继章节中逐步深化,使学生有不断提高与升化的过程,例如对于指针,可先讲解指针的概念、指针与数组、指针与函数参数、字符指针与字符串等基本内容,然后再在后继章节中逐步深入讲解动态内存的分配与释放、线性链表、指向函数的指针与返回指针的函数等内容。
教学难点往往不是教学重点,更不是考试重点(事实上难点往往考得少甚至不考),可集中安排C语言高级主题,例如变长参数和命令行参数等内容,这部分内容,教师可根据教学课时的多少选讲或让学有余力的学生自学。
根据心理学可知人一次的接受能力是有限的,内容越多记忆效果越差,因此对某个语法现象的说明不宜太多,最好不要超过5点,最好理解难度较大的要点可放在程序陷阱中加以讨论,只有理解的知识点才容易识记,因此对每个知识点都要通过说明性题例加以说明。
3 程序可读性是教学成败的关键
现在大部分C语言程序设计的教材的程序注释较少,很多程序根本没有注释,而注释是提高算法可读性的简便方法,因此在讲解程序时,应为程序加上详细的注释,最好对大部分语句以及程序的每个关键点都加以注释进行详细阐明含义及要点。
以前的教材在介绍C语言时,认为C语言是一种介于低级语言与高级语言之间的一种高效语言,用C语言编写的程序的效率更高,强调编程的技巧性,习惯将用C语言编写的源程序编写得短小精精干,比如对于整形变量x,习惯于编写如下形式的代码:
if (x) {……}
else {……}
而这样的可读性较差,如改为:
if (x != 0) {……}
else {……}
则更容易理解。
现在由于硬件技术的快速发展,也随着软件危险的出现及软件工程的发展,相对地,对于程序的运行速度相于地处于次要地位,更强调程序的可读性与开发程序的规范生,因此C语言的教学也应转变思想,应更多考虑程序的可读性与学生的接受能力,而不应过份地强调所谓的编程“技巧”。
对于算法的描述可采用自然语言表示、流程图表示以及N-S图表示。应多考虑学生的接受能力,尽力避免过于强调算法细节而甚使程序不但长也难于理解,比如对于判断年份是否为闰年的算法,根据历法,闰年的条件为:
年份能被4整除但不能被100整除或年份能被400整除
由闰年条件很容易用自然语言描述如下:
如果年份能被4整除但不能被100整除或年份能被400整除,则为闰年,否则平年
C语言函数实现如下:
int LeapYear(int year)
/* 判断年份year是否为闰年,如果是闰年返回1,否则返回0 */
{
if (year % 4 == 0 && year % 100 != 0 /* 如果年份能被4整除但不能被100整除 */
|| year % 400 == 0) return 1; /* 或年份能被400整除,则为闰年 */
else return 0; /* 否则为平年 */
}
如果采用N-S图进行描述容易陷入算法细节,比如如为闰年,就令leap=1,若为平年就令leap=0,最后返回leap。一般教材的N-S图如下:
C语言函数实现如下:
int LeapYear(int year)
{
int leap;
if (year % 4 == 0)
{
if (year % 100 == 0)
{
if (year % 400 == 0)
leap = 1;
else
leap = 0;
}
else
leap = 1;
}
else
leap = 0;
return leap;
}
首先N-S图过于陷入细节的描述,还有上面的C函数无注释,可读性较差,这样不但会增加学生的学习负担,还可能使学生产生畏惧心理。
4 兴趣是最好的老师
只有学生对所学课程有兴趣,才会将学习过程变成一种享受,老师应尽力培养学生的兴趣,在课堂上结合例题尽量多讲一些有趣故事,用,例如在讲Fibonacci数列时,应讲解Fibonacci数据的故事,在讲1+2+3+…+n的程序时,应同时讲解高斯的故事,最后还应找一些有趣的应用性例题,例如石头、剪刀、布游戏与碰运气游戏,如例题太长,可留作课外阅读。
5 精心设计习题与示例性例题,使学生尽快熟悉各种考试题型
现在一般教材的例题都只是一些编程题,题型太单一,一般期末考试都有单项选择题,填空题,阅读程序题,程序填空题,程序改错题与编程题。全国计算机等级考试笔试只有单项选择题与填空题,但其中由于包含了大量的程序,实际上也包含了程序阅读题与程序填空题,在全国计算机等级上机试题中包含有程序填空题,程序修改题和程序设计题,因此在例题方面不但主要讲解程序设计,而且还应包含填空题,阅读程序题,程序填空题,程序改错题方面的题目,对于习题也应包含单项选择题,填空题,阅读程序题,程序填空题,程序改错题与编程题。
在编写例题或习题时,应注意学习的理解能力与接受能力,难题不宜太多,应包含大量基本训练方面的题目,可从全国计算机等级考试试题中选择适当的题目加以改编。
为满足不同层次学生的教学需求,可使用分层的思想,没加有星号“*”及“**”的部分为基本内容,适合所有学生学习;加有星号“*”的部分适合计算机专业的学生深入学习的选学部分;加有星号“**”的部分适合于感兴趣的同学研究,尤其适合于那些有志于ACM竞赛的读者加以深入研究。
参考文献
[1] 谭浩强.C程序设计[M].北京:清华大学出版社,2006.
[2] 谭浩强.C程序设计教程[M].北京:清华大学出版社,2008.
[3] 王紫薇,杨捧,刘金莲.高级语言程序设计教学模式的探索[J].前沿探索,2008,(4).