日期:2023-01-23 阅读量:0次 所属栏目:学前教育
1引言
C语言是目前国内外广泛使用的一种计算机语言[1],作为当今最为流行的高级程序设计语言之一,它不但成为高等院校以及一些职业技术学校计算机专业的必修课,而且也越来越多地成为非计算机专业的一门重要的学习课程。C程序设计课程的任务是使学生掌握C语言的基本知识,使用C语言进行程序设计的基本方法,为学生进行以后的学习打下坚实的基础。通过本课程的学习要求学生具备基本的程序设计思想和简单程序的编写能力,进而能够解决与本专业相关的一些实际问题。所以,如何教好、怎样学好C语言一直都是众多师生关注的内容。
2教学现状及问题
现有的课程教学总体上是过分注重语言知识讲解,机械式的训练,缺乏对学生语言运用能力的培养,课程内容与学生的生活联系不够紧密。教学中忽视对学生提取信息和处理信息能力的培养,忽视对学生分析问题、解决问题能力的培养,单一的、满堂灌的教学方法和被动的学习方式难以使学生形成综合的语言运用能力,难以开发学生的思维能力和分析问题、解决问题的能力。形成这种情况的原因主要有以下几个方面:
2.1课程本身
C程序设计课程是在一年级下学期开设,而学生之前所接受的课程只有高等数学、计算机基础等课程,学习C 语言这样一门理论与实践并重的计算机专业基础课程本身就有很大的困难。加上C语言自身有语法灵活、概念规则繁多等特点,使得课程的讲授更趋向于细节化,学生学习的重点就放在了识记知识点上,从而造成学生课上听得懂,课下进行程序设计时就感觉效率低下,程序结构不清晰,甚至错误百出,碰到算法稍微复杂的程序更是无从下手。对计算机专业的学生来说,C语言又是作为很多后续课程如数据结构中算法的实现工具,C语言的掌握程度直接影响到这些课程的学习。
2.2学生方面
受“单向灌输”教育模式的影响,学生普遍自主学习能力较差,大多数学生只学老师上课所讲内容,对于简单的内容尚可吸收,但是到了难点及重点部分就不知所措,学习的积极性受挫,学习兴趣也就无从谈起了;还有很多学生学习目的仅是为了考试,这样也同样扼杀了学习的主动性,使学习效果大打折扣。
2.3实践方面
学习程序设计必须理论与实践并重。缺乏理论的实践是盲目的,缺乏实践的理论是空洞的。某种意义上说,学习C语言的过程,也就是进行程序设计训练的过程,只有多读程序,多编写程序,多上机实践才能真正掌握C语言。但是学生在实验之前,通常不知道C语言有什么用,学习之后到底能做什么?所以很多学生上机是去让计算机执行已知程序的结果,而不是验证自己所编写的程序是否可用。
3改进措施及方法
针对以上C程序设计教学中存在的这些问题 ,从以下几个方面进行改进。
3.1教材内容条理化、知识点分类对比及联系。
课程教学从教学目标出发,对于C程序设计课程的介绍首先要让学生理解什么是程序,什么是程序设计,简单地概括程序设计为“程序=数据结构+算法”[1],整个教学就以这一公式作为主线展开,在C语言中数据结构是指数据类型,这一脉络也是很清晰的:基本数据类型―数组类型―指针类型―结构体类型―共用体类型―枚举类型―文件类型。公式中的“算法”则是对实际问题处理过程的一个描述。在对教学内容进行了这样的梳理之后,无论是对于教师的讲还是学生的学都变得更有目的性。
当然,在教学过程中还要注意各知识点的分类对比、前后联系、及时总结。C程序设计课程中很多内容是具有类比性的,在具体教学过程中就要把握这方面的特点,充分挖掘出内容相关的知识点进行分类对比。比如对于基本数据类型的学习,要介绍的类型有三种,分别为实型、整型和字符型,对于每一种类型都要讲清楚其在内存中的存储形式、占用存储空间的长度、可用于存储的数值的范围以及在该类型上允许进行的操作。经过这样的归类与对比后列表,然后再给出具体的数据,定义为不同的类型,采用多媒体方式演示输出结果,学生便可以一目了然,不仅识记方便,而且也不易混淆。另外本课程中还有很多内容是前后联系的,而学生对学过的知识又是分散的、片面的,无法将知识相互衔接起来,做到举一反三。这就要求老师在教学过程中要承前启后、不断总结、及时复习、注重理解。以数组类型学习为例,在数组章节主要学习一维数组和二维数组的定义及应用,数组实际上是在基本数据类型的基础上按照一定规律构造而成,在数组的应用方面要注意和基本数据类型的比较,同时对数组的操作还要用到结构化程序设计中的三种基本结构(顺序、选择、循环)来实现。在授课的时候就要注意把前面的内容加以复习,把有联系的内容相互串联起来形成一个完整的知识体系。
3.2改变教学观念、改进教学方法。
传统的课堂教学中那种过于强调知识的传授,只专注于知识的挖掘与诠释的方式只会限制学生的思维,使得学生忘记了思考,只是被动地听课,最终只能产生了学生对问题的理解不够深刻、记忆不够牢固的教学效果。因此,作为教师首先要改变教育理念,要树立新的学生观,在教学过程中要以人为本,以学生为主体,尊重学生的个性、情感与发展需要。要鼓励学生通过体验、实践、合作、探究等方式,发展其自身的综合技能,要创造条件让学生能够探究他们自己感兴趣的知识并自主解决问题,特别强调让学生在实际生活中有效地使用所学知识。
其次,作为教师还要改革课堂教学模式,实现教与学的互动,激发学生创新思维势。当然还要避免这样的误区:时下比较认可的信息技术与课程整合是对新时期教学的新要求[2],但有些教师却单纯认为所谓的整合就是在教学中尽量多使用多媒体教学,他们只追求多媒体的使用数量,而不关心教学的效果能否调动学生的主动性、积极性。整合是以学科教学为中心的,其落脚点仍是最大限度地完成学科教学的目标,并非每一节课都适合整合,或者说,并非每一节课都有必要整合,有时候整合反而会起相反的作用。在C程序设计课程教学过程中,诸如数据类型、变量类型、运算符、程序结构等内容,它们的定义、概念较多,既没有深奥的理论,也没有多少逻辑推理,所以就可采用多媒体教学,在增大教学信息量的同时,也能够优化教学过程。对于程序的编写过程,则要发挥传统教学的优势,进行课堂讨论、板书讲解、结合提问,将问题层层剖析、层层深入,达到师生互动的效果,在这样的过程中学生的想象力得到了充分的发挥,对问题的理解也会更容易。
作为教师还要能勇于探讨新的教学方法,不断变换教学方式,寻求多途径、多方式的教学,研究式、启发式是比较有效的两种方法[3]。在C程序设计课程的教学过程中每章都通过以下步骤来完成:先通过提出问题、分析问题,吸引学生的兴趣,引起学生的思考;然后介绍解决问题的方法、相关知识点的跟进,使学生能逐步提升程序设计的能力,同时也逐步掌握C语言的知识;接下来用一定数量的语法练习题使学生能对所学的知识举一反三,用一定数量的编程练习题,培养学生的逻辑思维能力和编程能力,挖掘学生的创新能力;最后小结每部分的知识,以便学生进一步巩固应掌握的知识。比如在讲述一维数组的定义和使用时,先给出求某班学生某科成绩高于平均分的人数这样一个具体问题,让学生分析并用已经学过的知识来解决这一问题,学生会发现平均分很好计算,但是问题中涉及到比较操作,所以成绩必须以变量形式存储,而且会用到很多变量。此时再引入数组就会使学生明白当要将一组同类型的数据存入计算机内存时应该使用数组,进而介绍数组的概念、一维数组的定义及使用,使学生能编程对同类型的一组数据进行输入输出处理。然后再通过两种算法(选择法,冒泡法)的排序程序的设计,巩固对一维数组的认识,掌握一维数组程序设计的基本方法。课后的语法练习和编程练习,用来巩固所学的新知识,逐步提高学生的编程能力和逻辑思维能力。
另外还要充分利用网络资源,通过Email、QQ,或者利用课余时间对学生的提问进行答疑、讨论,以弥补课堂教学的不足。除此之外,还利用周末时间设置答疑课,集中解决学生在该周内在学习中所遇到的问题。
3.3通过实践教学发挥学生的主观能动性。
俗话说,兴趣是最好的老师,如果要学生学得好,首先就要让学生对该门课程产生兴趣。可以在讲授课程的同时引入一些生活中的实例,让学生感受到这门课程与现实生活中具体事例的关系,以此提高学生的学习兴趣,但理论的内容相对还是枯燥的。因此,就必须要通过实践教学激发学生学习的热情,充分发挥学生的主观能动性。
当然,实践教学环节方面对教师和学生都应该严格要求。作为教师,在切实抓好实验课的教学、规范实验的步骤与过程,确保能达到预期的教学效果与教学目的的同时还一定要注重培养学生的自学能力、思考能力、实践能力以及创新精神。在实验开始前要让学生对实验作充分的准备,明白实验原理和试验目的,每次实验课都要有具体的实验任务。实验的过程中教师可以适当提供或讲解相应的“示范程序”,即教师自己所编写的完整的算法程序,以便让学生尽快掌握要点,例如对于结构体最主要的应用--链表,其最基本的操作有链表创建、结点的插入与删除等。教师先分别提供链表创建、插入操作的“示范程序”并对其进行详细的分析讲解。然后让学生加以模仿并编写出单独的删除操作程序;要鼓励学生对一种问题采用多种解决策略,对问题稍作改动后分析其解决策略是否要有所改动?为什么?怎么改?多提出几个问题,来加深对问题的分析、理解。实验完毕后,要求每个学生都要对实验涉及到的内容进行总结,谈谈自己对问题解决过程中创新方面的思考,并把此项内容作为学生实践考核的一个重要方面。另外,教师还要注意学生综合实验技能的培养,提高学生团队合作能力。具体可以根据理论教学的内容将学生分组,以组为单位综合运用书本所学知识解决一些具体的实际问题。比如,可以让学生根据模块化程序设计所涉及的知识内容,以函数设计为单位编写一个成绩管理系统,这样不仅可以强化了学生姨局部知识的理解,还培养了他们分析问题、组织数据、解决实际问题的能力,有效的提高了程序设计能力。
4 结束语
经过上述改进后,C 程序设计课程教学取得了较好的效果。当然有的学校也提出了一些别的学习C程序设计的方法[4],例如,将C语言和数据结构课程进行整合,在学习C这个语言工具的同时利用数据结构的知识进行实际问题的解决,培养了学生分析实际问题的能力,并能够用语言工具来尝试解决实际问题,这样既训练了学生使用C语言的能力,也解决学习数据结构枯燥没有实际目标的困惑。因此,笔者会继续努力地探索在《C程序设计》这门课程的教学中的一些新的方法。
本文链接:http://www.qk112.com/lwfw/jiaoyulunwen/xueqianjiaoyu/215395.html