论文部分内容阅读
作者简介:张吴波(1977.6-),男,湖南邵阳人,湖北汽车工业学院计算机系,讲师,主要研究方向:软件开发。
【摘要】本文针对C语言程序设计课程中文件教学中的现状,分析了其中存在的问题,结合C语言教学改革的经验,提出了一系列关于文件教学改革措施。
【关键词】文件;数据格式;C语言;批量导入
1 文件在C语言程序设计中的意义
文件是计算机系统中的一个重要的概念,也是程序设计中所采用的一个重要手段。当程序中的数据需要频繁的从键盘输入时,对于程序的运行和调试都是一件非常繁重的工作。因此,通常在设计C语言程序时,都是使用“文件”的方式来处理程序所需要的数据。将程序的处理结果保存在文件中,或者将需要的数据以一定的格式录入进文件,再通过读取文件的方式将数据“批量”导入到系统中,以便程序处理。例如,程序设计类的竞赛是以文件的方式来实现数据的读取和结果的存储;在一般的综合性程序中也通常需要使用文件来实现对数据的存储。
并且文件的概念和读取操作的过程,始终贯穿在所有其他程序设计类课程的教学过程中,例如在数据结构课程中,数据的准备采用文件的方式,通过读取文件的方式录入数据,以提高程序运行效率;在C++、Java等课程中也包含有对文件进行操作等内容。因此文件在C语言教学中占有着非常重要的地位,对学生编写程序具有重要意义。学生对文件操作的熟练程度,影响着他们程序设计技能的提高和对后续课程的学习。
2 C语言文件内容实际教学现状
在C语言教学中,对“文件”部分的教学现状主要体现如下几个方面。
2.1 文件内容的课时分布与授课位置,由于对“文件”的重要性和特点认识不够,在C语言教学中,对“文件”内容的教学处理存在着“失重”的现象。一方面,对文件内容的课时安排比较少,一般都是一堂课(2课时)解决问题;另一方面,一般都将文件内容的教学安排在C语言课程的最后面。在文件内容讲授完后,大部分的时间可能就是学生为应付考试的复习。因此学生对文件的练习时间和强调程度不如课程的其他内容。
2.2 针对文件操作函数的讲解,在讲授“文件”部分时,大部分都是对文件操作函数的讲解。例如,使用fopen打开文件,使用fgetc函数从文件中读取,以及这些函数的参数的意义等。至于为什么需要这个函数从文件中读取数据,使用这个函数时对文件有什么样的要求,应该怎样使用读写函数进行读写等问题,在教师授课时却被忽视了。
2.3 学生对文件的掌握状况,学生在C语言实训、C语言课程设计、数据结构等课程中,以及学生在参加一些程序设计类竞赛时,体现出来他们对文件的读写操作不熟。例如在写入数据时,不知道在文件中保存什么样的数据;在读取数据时,不知道应该选用什么样的函数进行读写;在读写文件碰到问题不知道如何解决等等。但是在辅导学生时,却发现学生对文件的读写函数是比较熟悉的,文件的操作步骤也是比较清楚的。
为什么会出现这样的情况,应该是与教师在授课时的教学方法和课程组织上存在相当的关系的。
3 C语言文件内容教学方法改革
针对学生在学习文件部分时所体现的出来的问题,我校C语言课程组重新审视了“文件”部分的授课特点,加强了对文件的重要性认识。在文件部分的教学过程中进行了改革,采取了如下的一些措施。
3.1 将文件穿插在整个C语言教学中,针对文件内容课时比较少,文件授课位置靠后的问题。我们重新认识了文件读写过程的特点。认识到在使用fscanf函数、fprintf函数读写文件时,其使用方法非常类似于scanf函数和printf函数。而这两个函数对学生来说也是使用频次最高的,并且对于文件的简单读写不存在概念上的障碍。
因此课程组在组织课程的教学内容时,在不影响基本语法授课的前提下,将文件的操作贯穿于整个C语言教学过程,使学生提早体验文件的操作。例如,在循环程序设计的举例中,将其中的一些例子修改成从文件输入,并将其与从键盘输入方式进行对比,从而使学生可以及早认识到“文件”,了解文件的读写操作。在这些例子中,不给学生讲解概念,不增加学生的额外负担,不影响主要语法的学习和应用。只是通过具体实例,使学生了解到按照这样的步骤和方式,就可以从文件中得到数据。
3.2 强调文件的概念,在对文件内容授课时,因该强调文件的概念,使学生真正掌握“编写的程序”和“编写的文件”的概念。在笔者授课过程,经常发现学生提这样一个问题:我的数据已经保存到文件中了,为什么还需要从文件中读取呢?读取的数据又存放在程序中哪个地方呢?有些同学甚至干脆就在记事本文件中书写“x=12”;则认为在程序中变量x的值为12了。
这是初学者在编写程序、读写文件时,对数据文件和程序概念混淆不清造成。笔者在授课时使用图1,来帮助学生区分数据文件和程序。
授课时需要强调:数据文件是操作系统管理的存在磁盘介质中的数据集合;程序是运行在内存中的代码,程序所处理的对象都是内存单元中的值。如果程序需要文件中的数据,必须使用图1的过程,将文件数据读入到程序所对应的内存空间;同时将程序中的数据保存进文件,也是通过图1的过程,将内存单元中的值,写入到磁盘介质中。
3.3 理解文件指针,文件指针对在文件的操作中起着非常重要的作用,在读写文件时,很多同学因为不了解为什么调用读写函数时是逐个、顺序的从文件中读取的。因而也导致了学生对使用文件读写函数产生了许多的不正确的认识。
因此在C语言授课时,通过文件指针的概念,指出C语言程序是如何从缓冲区中读数据的,文件指针描述的是磁盘文件在内存中所对应的缓冲区的信息。并且同时还引出文件内部位置指针的概念,使学生了解文件读写函数读取数据的过程。
通过对文件指针概念的了解,可以消除学生对读写文件的“神秘感”,从而帮助学生正确的了解和操作文件。 3.4 突出根据数据格式选择读写文件,学生在使用文件时一个最大的问题就是,不知道按照什么样的格式把数据保存在文件中;不知道如何根据数据在文件中的存储格式选择相应的文件读写函数等。其中一些最典型的现象就是在文件的最后一行的输入有回车;在文件中保存数据时加入一些额外的“信息头”等。例如,学生在课程设计时,编写一个学生成绩管理系统,需要将学生的成绩信息保存在一个文件中,并从文件中批量导入。许多同学在准备存放学生的数据文件时,按照如图2的格式准备数据。
很显然,程序从如图2的文件中读取数据时,如果不经过处理,而是直接按照一般的方式去读取数据,是不能正确的读取到学生信息的。
因此,在讲授文件内容时,不能拘泥于文件读写函数的讲解,而是应该列举不同的数据格式的文件,根据数据格式,选择相应的读写函数对其读写。应该引导学生根据出历数据的特点,设计相应的存储格式在文件中存放数据。
3.5 使用文件解决问题,由于文件内容一般安排最后面讲解,在讲授该部分内容,应该综合前面所学习的内容,使用文件解决前面章节中所讲授例子。使学生可以认识到使用文件解决问题的方式和优势。这样,一方面可以巩固前面的知识,另一方面也使学生比较容易理解文件的意义。
例如在学习数组时,讲授了数组排序的实例,其中的数组中的数据来源于键盘的输入。在讲授文件时,可以把数据事先录入到一个记事本文件中。编写程序时,从该文件中读取需要排序的数据,将其保存在数组中,然后再对数组排序。这样一方面复习了数组以及排序算法,另一方面也凸现了文件的应用。
4 结束语
经过以上的教学改革,在讲授文件时,不再是对文件函数的讲解。而是突出了文件读写的过程的本质,强调了“数据文件”和“程序”的区别。引导学生从应用的角度去准备数据,设计数据的存放格式,并根据数据格式选择相应的文件读写方法。
通过采取上述的一系列措施,学生在使用C语言程序设计时,可以熟练的进行文件的读写,达到了比较好的效果。
参考文献
[1] 马占欣.“C 语言程序设计”类教材中文件操作部分的一个普遍错误.计算机教育.2012.3
[2] 刘冲. C 语言中文件操作的基本操作. 黑龙江科技信息.2013.13
[3] 李国忠. C语言程序设计中数据文件处理技巧. 中国科技信息.2013.9
[4] 关忠仁. C 语言教学质量的思考与实践. 计算机教育.2007.6
[5] 裴宗燕. 从问题到程序-程序设计与C语言引论(第2版). 机械工业出版社,2011.5
【摘要】本文针对C语言程序设计课程中文件教学中的现状,分析了其中存在的问题,结合C语言教学改革的经验,提出了一系列关于文件教学改革措施。
【关键词】文件;数据格式;C语言;批量导入
1 文件在C语言程序设计中的意义
文件是计算机系统中的一个重要的概念,也是程序设计中所采用的一个重要手段。当程序中的数据需要频繁的从键盘输入时,对于程序的运行和调试都是一件非常繁重的工作。因此,通常在设计C语言程序时,都是使用“文件”的方式来处理程序所需要的数据。将程序的处理结果保存在文件中,或者将需要的数据以一定的格式录入进文件,再通过读取文件的方式将数据“批量”导入到系统中,以便程序处理。例如,程序设计类的竞赛是以文件的方式来实现数据的读取和结果的存储;在一般的综合性程序中也通常需要使用文件来实现对数据的存储。
并且文件的概念和读取操作的过程,始终贯穿在所有其他程序设计类课程的教学过程中,例如在数据结构课程中,数据的准备采用文件的方式,通过读取文件的方式录入数据,以提高程序运行效率;在C++、Java等课程中也包含有对文件进行操作等内容。因此文件在C语言教学中占有着非常重要的地位,对学生编写程序具有重要意义。学生对文件操作的熟练程度,影响着他们程序设计技能的提高和对后续课程的学习。
2 C语言文件内容实际教学现状
在C语言教学中,对“文件”部分的教学现状主要体现如下几个方面。
2.1 文件内容的课时分布与授课位置,由于对“文件”的重要性和特点认识不够,在C语言教学中,对“文件”内容的教学处理存在着“失重”的现象。一方面,对文件内容的课时安排比较少,一般都是一堂课(2课时)解决问题;另一方面,一般都将文件内容的教学安排在C语言课程的最后面。在文件内容讲授完后,大部分的时间可能就是学生为应付考试的复习。因此学生对文件的练习时间和强调程度不如课程的其他内容。
2.2 针对文件操作函数的讲解,在讲授“文件”部分时,大部分都是对文件操作函数的讲解。例如,使用fopen打开文件,使用fgetc函数从文件中读取,以及这些函数的参数的意义等。至于为什么需要这个函数从文件中读取数据,使用这个函数时对文件有什么样的要求,应该怎样使用读写函数进行读写等问题,在教师授课时却被忽视了。
2.3 学生对文件的掌握状况,学生在C语言实训、C语言课程设计、数据结构等课程中,以及学生在参加一些程序设计类竞赛时,体现出来他们对文件的读写操作不熟。例如在写入数据时,不知道在文件中保存什么样的数据;在读取数据时,不知道应该选用什么样的函数进行读写;在读写文件碰到问题不知道如何解决等等。但是在辅导学生时,却发现学生对文件的读写函数是比较熟悉的,文件的操作步骤也是比较清楚的。
为什么会出现这样的情况,应该是与教师在授课时的教学方法和课程组织上存在相当的关系的。
3 C语言文件内容教学方法改革
针对学生在学习文件部分时所体现的出来的问题,我校C语言课程组重新审视了“文件”部分的授课特点,加强了对文件的重要性认识。在文件部分的教学过程中进行了改革,采取了如下的一些措施。
3.1 将文件穿插在整个C语言教学中,针对文件内容课时比较少,文件授课位置靠后的问题。我们重新认识了文件读写过程的特点。认识到在使用fscanf函数、fprintf函数读写文件时,其使用方法非常类似于scanf函数和printf函数。而这两个函数对学生来说也是使用频次最高的,并且对于文件的简单读写不存在概念上的障碍。
因此课程组在组织课程的教学内容时,在不影响基本语法授课的前提下,将文件的操作贯穿于整个C语言教学过程,使学生提早体验文件的操作。例如,在循环程序设计的举例中,将其中的一些例子修改成从文件输入,并将其与从键盘输入方式进行对比,从而使学生可以及早认识到“文件”,了解文件的读写操作。在这些例子中,不给学生讲解概念,不增加学生的额外负担,不影响主要语法的学习和应用。只是通过具体实例,使学生了解到按照这样的步骤和方式,就可以从文件中得到数据。
3.2 强调文件的概念,在对文件内容授课时,因该强调文件的概念,使学生真正掌握“编写的程序”和“编写的文件”的概念。在笔者授课过程,经常发现学生提这样一个问题:我的数据已经保存到文件中了,为什么还需要从文件中读取呢?读取的数据又存放在程序中哪个地方呢?有些同学甚至干脆就在记事本文件中书写“x=12”;则认为在程序中变量x的值为12了。
这是初学者在编写程序、读写文件时,对数据文件和程序概念混淆不清造成。笔者在授课时使用图1,来帮助学生区分数据文件和程序。
授课时需要强调:数据文件是操作系统管理的存在磁盘介质中的数据集合;程序是运行在内存中的代码,程序所处理的对象都是内存单元中的值。如果程序需要文件中的数据,必须使用图1的过程,将文件数据读入到程序所对应的内存空间;同时将程序中的数据保存进文件,也是通过图1的过程,将内存单元中的值,写入到磁盘介质中。
3.3 理解文件指针,文件指针对在文件的操作中起着非常重要的作用,在读写文件时,很多同学因为不了解为什么调用读写函数时是逐个、顺序的从文件中读取的。因而也导致了学生对使用文件读写函数产生了许多的不正确的认识。
因此在C语言授课时,通过文件指针的概念,指出C语言程序是如何从缓冲区中读数据的,文件指针描述的是磁盘文件在内存中所对应的缓冲区的信息。并且同时还引出文件内部位置指针的概念,使学生了解文件读写函数读取数据的过程。
通过对文件指针概念的了解,可以消除学生对读写文件的“神秘感”,从而帮助学生正确的了解和操作文件。 3.4 突出根据数据格式选择读写文件,学生在使用文件时一个最大的问题就是,不知道按照什么样的格式把数据保存在文件中;不知道如何根据数据在文件中的存储格式选择相应的文件读写函数等。其中一些最典型的现象就是在文件的最后一行的输入有回车;在文件中保存数据时加入一些额外的“信息头”等。例如,学生在课程设计时,编写一个学生成绩管理系统,需要将学生的成绩信息保存在一个文件中,并从文件中批量导入。许多同学在准备存放学生的数据文件时,按照如图2的格式准备数据。
很显然,程序从如图2的文件中读取数据时,如果不经过处理,而是直接按照一般的方式去读取数据,是不能正确的读取到学生信息的。
因此,在讲授文件内容时,不能拘泥于文件读写函数的讲解,而是应该列举不同的数据格式的文件,根据数据格式,选择相应的读写函数对其读写。应该引导学生根据出历数据的特点,设计相应的存储格式在文件中存放数据。
3.5 使用文件解决问题,由于文件内容一般安排最后面讲解,在讲授该部分内容,应该综合前面所学习的内容,使用文件解决前面章节中所讲授例子。使学生可以认识到使用文件解决问题的方式和优势。这样,一方面可以巩固前面的知识,另一方面也使学生比较容易理解文件的意义。
例如在学习数组时,讲授了数组排序的实例,其中的数组中的数据来源于键盘的输入。在讲授文件时,可以把数据事先录入到一个记事本文件中。编写程序时,从该文件中读取需要排序的数据,将其保存在数组中,然后再对数组排序。这样一方面复习了数组以及排序算法,另一方面也凸现了文件的应用。
4 结束语
经过以上的教学改革,在讲授文件时,不再是对文件函数的讲解。而是突出了文件读写的过程的本质,强调了“数据文件”和“程序”的区别。引导学生从应用的角度去准备数据,设计数据的存放格式,并根据数据格式选择相应的文件读写方法。
通过采取上述的一系列措施,学生在使用C语言程序设计时,可以熟练的进行文件的读写,达到了比较好的效果。
参考文献
[1] 马占欣.“C 语言程序设计”类教材中文件操作部分的一个普遍错误.计算机教育.2012.3
[2] 刘冲. C 语言中文件操作的基本操作. 黑龙江科技信息.2013.13
[3] 李国忠. C语言程序设计中数据文件处理技巧. 中国科技信息.2013.9
[4] 关忠仁. C 语言教学质量的思考与实践. 计算机教育.2007.6
[5] 裴宗燕. 从问题到程序-程序设计与C语言引论(第2版). 机械工业出版社,2011.5