【摘要】C语言由于鲜明的语言特点和严谨的逻辑,成为大学本科计算机专业和计算机相关专业的首选重要课程,被广泛采用做为重要的计算机教学语言。笔者长期从事C语言的实践教学,深刻体会C语言实践教学的重要性,本文中笔者将从C语言实践教学情况分析入手,分析高校学生学习C语言遇到的难点,并针对这些现状,在C语言拓展教学方法和优化教学方法等方面提出具体的教学方法改革措施。
【关键词】C语言 实践教学 教学 改革
【中图分类号】G64 【文献标识码】A 【文章编号】2095-3089(2015)06-0255-02
C语言是一种理想的结构化语言,其语言逻辑结构清晰,编译、运行效率高,数据类型丰富,灵活性强,有助于初学者掌握模块设计思想,并对数据结构的运用有一定的认识,对培养学生的抽象思维能力有很大帮助,因此它已成为许多高校计算机专业甚至部分非计算机专业的一门必修课。而C语言是一门比较抽象且实践性很强的课程[1],要讓学生运用C语言编写程序解决实际问题,如果只重视理论教学而忽视实践教学,容易让学生感觉C语言难、不易学,失去对C语言的兴趣,所以C语言在强调理论教学的同时,也需要重视实践的重要性,通过教授基本知识之外加强编程实践,使学生在掌握C语言语法知识的同时,也掌握C语言程序设计的思想和方法,这样才能引导和促使学生充分掌握C语言,运用好C语言,编出简洁高效的程序,增强学生的动手能力。因此,如何在C语言教学中启发并训练学生的编程思维,是每个教师应深思的问题。以下是笔者在C语言上机实践教学中的一些想法,愿大家共同交流探讨。
一、C语言实践课的重要性
学习C语言应当充分注意实践环节。通过上机练习的实践,让学生将课堂上学习到的理论知识带入实践环节,通过程序编译运行,查看程序结果,完成与程序的一次次的“亲密接触”,从编译环境、调试方法学习入手,让学生在实践中验证理论知识并对于在理论知识学习过程产生的疑惑,并通过实践方式加以验证和解决[2]。同样在上机实践中如果验证通过某一个程序后,学生可以尝试的改变程序中某些语句,甚至设置一些跳转语句或者中断语句,观察和分析在不同情况下的编译和运行结果,上机实践能让学生很直观的感受到程序的存在、变化和结果。应当说,上机实践是巩固和发展理论知识的十分重要的环节。
二、C语言实践课存在的问题
目前在高校C语言实践教学活动中,存在以下一些现象和问题:
(1)学生学习C语言的积极性没有充分调动起来。C语言的许多基础知识都是概念性强、理论性强,内容丰富且抽象,具有严密逻辑性的[3],初次学习难度比较大,学生容易会产生畏难情绪,如果没有及时有效的引导,许多学生会失去学习兴趣,不容易坚持学习,影响了学习的效果。
(2)高校中C语言一般大班授课,同时理论课和实践课分开进行。首先大班听课,人数较多,听课的效果会出现参差不齐的情况。另外理论课老师负责理论教学,实践教学部分则由实践室老师负责辅导,任课老师和实践辅导老师如果沟通交流不够,容易存在对学生实践教学真实情况掌握不足的现象,让任课老师在传授理论知识时失去了一定的针对性。
(3)学生在完成理论作业时,由于老师布置程序的题目一般情况下都是统一的,这样作业涉及的代码编写也存在一定的相似度,学生的作业不容易存在差异化,不容易让老师了解学生知识点掌握的情况,所以对于C语言这样一门实践性很强的课程,仅靠布置书面作业和书面批改作业的方法来督促学生学习和了解学习情况存在不够全面和不够客观的问题。
三、C语言实践课教学改革的原则探讨
(1)实践教学是学习C语言最好的推动力。充分运用案例教学完成C语言的第一次授课。大部分的同学都是初次接触C语言,C语言或是任何一种计算机语言,对他们而言,都是陌生的,也是神秘的。实践教学很重要就是把握好第一次的教学,我们在实践中称为C语言导学模式。在C语言课程的第一次教学,我们建议教师抓住学生的心理特征,有针对性的收集一定数量和具有一定代表性的C语言程序案例,直接通过程序案例结果,为学生展示程序运行结果画面,例如从早期的骰子游戏到如今的电脑游戏,让学生产生一定的兴趣,并保持这种兴趣,能增强不断学习的信心,而不是通过简单的C语言程序做为第一次课程的内容。
(2)培养良好的程序编写和逻辑习惯。对程序设计控制结构,要求学生熟练掌握结构的表达,培养学生良好的“结构描述、语言表达”的编程习惯,例如循环控制的两种结构三种表达:while{……};do{……}while;for{……}语句,必须严格按照两种结构图进行理解三种表达语句中各个表达式的含义。对先判断后执行使用while{……}格式,而先执行后判断使用do{……}while 格式,以上两种格式通常在无法确定循环控制次数情况下使用,在已知循环控制次数或控制步长情况下通常使用for{……}语句[5]。类似这样的基础,均要严格要求学生掌握,保持良好的编程习惯和逻辑习惯。
四、C语言实践课教学改革的方法探讨
(1)由于有些学校存在师资力量或是教室资源的问题,不容易取消大班听课的模式,故建议在上机实践课中,分小组进行,由3-5个同学组成一个小组,小组成员可以共同完成某一个自选的题目,但是要求列出每个成员完成的内容和效果,由老师组织,让团队成员讲解设计的原理和过程,让学生在实践中掌握真知。另外为了方便掌握上机实践教学情况,建议任课老师最好兼任实践室辅导老师,或者要和实践室辅导老师保持密切联系、经常沟通,及时了解学生的上机作业情况,适时调整授课进度和难点解析。随时明确:“C语言不是看会的,也不是听会的,而是亲自动手实践练会的”。
(2)上机实践教学中,除了基础教学知识之外,不要给学生限定作业题目,允许学生根据自己的兴趣爱好,选择一个范围,并以小组团队为单位,设计并完成C语言程序设计实例,例如有些学生喜欢体育项目,可以根据体育项目,运用C语言设计一个编排比赛日程的小程序,通过类似的实践方式,培养了学生问题求解和编程能力,还有利于培养他们探索与创新的能力,同时能有效增加学生学习的信心和兴趣,激发学生的求知欲望,便于学生更加深入学习和研究其他程序语言。
(3)定期举行答疑会,邀请有经验的高年级学生和任课教师共同为学生答疑解惑,同时将问题和对应的解决方法收集起来,形成文档资料,再完成统一讲解后,提供给大家,让学生能分享到其他同学的疑惑和具体的解决方法,提高答疑的效率和学生解决问题的能力。
(4)将框架思想融合到实践教学中,使用“框架思想”可培养学生的全局思维和算法的整体设计能力,当学生有了一点编程基础后,要利用伪代码或流程图,从算法设计的角度讲解编程思路,而不应拘泥于语法细节,不分主次、逐条语句的讲解代码[4]。例如学生学习重点章函数时,由于新的算法已很少,实践教学主要是学习用函数调用的方法来重新编制以前所熟悉的程序,那么我们可以把重点放在函数的设计框架上,体现参数设计、返回值设计等关键问题,而无需细讲函数体的实现细节。
(5)运用比较的方法学习语法和算法,将实践任务问题作为理论课的内容在课堂上讲述、讨论。对于同样的题目,可以确定若干不同的算法,比较其优劣,分析其原因,在比较过程中体会并掌握算法、语法知识。例如C语言里Char?鄢和Char[]的区别,本质上来说,Char?鄢s定义了一个Char型的指针,它只知道所指向的内存单元,并不知道这个内存单元有多大,所以:当Char?鄢s = “hello”;后,不能使用s[0]=‘a;语句进行赋值。这是将提示内存不能为“written”。当用Char s[]=“hello”;后,完全可以使用s[0]=‘a;进行赋值,这是常规的数组操作。若定义: Char s[] = “hello”; Char ?鄢p = s; 也可以使用p[0] = ‘a;因为这是p ==s,都是指向数组的指针[5]。
下面看另外一种定义:
Char?鄢s = (Char?鄢)malloC(n);//其中n为要开辟空间的大小 这句话其实相当于:
Char s[n];
定义的也是一个指向数组的指针,便可进行数组的下标操作
例子
#inClude
int main(int argC, Char?鄢 argv[])
{
Char?鄢buf1 = “this is a test”;
Char buf2[] = “this is a test”;
printf(“size of buf1: %d\n”, sizeof(buf1));
printf(“size of buf2: %d\n”, sizeof(buf2));
return 0;
}
結果是:
size of buf1: 4
size of buf2: 15
类似的比较学习例子还有很多,建议可以按不同的学习章节,整理出不同的比较内容,提供给学生理解并应用。
五、结束语
C语言程序上机实践教学要讲究方法,重在培养学生的实践能力,多给予学生实践机会,设计合理的实践方案,让学生能真正体会到C语言学习的奥妙。本文介绍了C语言实践学习的重要性,探讨了实践教学的一些原则和方法,今后还需要继续探索教学方式和方法,促使实践教学充分发挥作用,能让学生在计算机语言学上打下扎实的基础,为后续的学习提供高效的学习方法。
参考文献:
[1]赵卫绩,刘井莲,樊守芳. 实例教学法在C语言循环结构教学中的应用[J].通化师范学院学报.2012(02).
[2]袁学倩.《C语言程序设计》课程教学改革的探讨[J].科技信息. 2012(21).
[3]刘弘岳.浅谈C语言教学实践[J].才智.2013(25).
[4]赖永秀,李凌,饶妮妮.任务驱动法在C语言实践教学中的应用[J]实验科学与技术2012(03).
[5]谭浩强.C语言程序设计(第三版)[M].北京:清华大学出版社,2005.7.
作者简介:
刘臻(1978-),女,台湾人,硕士学位,主要从事计算机教学研究。