C语言多模式联动教学探析

2015-02-21 02:35
宿州学院学报 2015年4期
关键词:数组指针C语言

凌 军

宿州学院信息工程学院,安徽宿州,234000



C语言多模式联动教学探析

凌 军

宿州学院信息工程学院,安徽宿州,234000

C语言教学方式主要有两种:一是围绕知识体系进行的传统教学方式,二是项目化教学方式。前者理论与实践教学分离,课程相对枯燥,学生学习积极性不高,缺乏对知识的有效整合与运用;后者易造成知识的碎片化,学生难以形成知识体系,进行知识的迁移。为了克服两者的弱点,提出C语言多模式联动教学模式。将两种教学方式与任务驱动方式相结合,适度融入相关课程知识,构建出C语言多模式联动教学模式。这样,不仅可以克服两种教学模式的弊端,将知识的体系化与面向工程的实践相结合,使知识的掌握与能力的提高相互促进,达到学以致用的目的,而且通过融入相关课程知识,提高了学生对学科知识的认知深度,达到对知识融会贯通的目标。

C语言课改;多模式联动;任务引领

1 问题的提出

C语言由于功能强大,代码编译后运行效率高,具有存储器访问能力,已成为应用最广泛的计算机高级语言之一,许多高等院校都将其选为计算机等理工科专业的计算机教学和工程语言。同时,C语言也是许多后继课程的前导课程,如面向对象程序设计、数据库原理、数据结构等。由于该语言具有概念较多、规则复杂、运用灵活的特点,所以学习门槛相对较高,许多学生难以真正掌握。教学中易出现学生学习不够主动、难以记忆知识点、不易真正理解语言的使用方法、理论与实践联系不够紧密、运用语言解决实际问题能力弱等问题[1]。

多年来,C语言教学主要依据两种教学模式进行:一是采用传统教学模式[2],围绕语法知识点进行讲授。首先学习数据类型、运算符、变量、三种程序结构等基础知识,然后学习数组、函数、指针、结构与联合,教学过程中理论与实践教学分离。这种教学方式严格按照知识体系进行讲授,优势在于讲授时间短且易于掌控,学生习得的知识系统且严密;但从认知角度看,这种学习只是机械的学习,而不是积极意义的学习,属于接受学习而非发现学习。从人本理论看[3],由于课程相对枯燥,学生学习积极性不高,所以往往导致学生缺乏对知识的有效整合与运用。二是采用项目驱动[4-5]教学方式,在教学中围绕一个或几个项目的设计进行教学,在设计中涉及到什么知识就学习什么知识,学以致用。这样能提高学生学习兴趣,充分发挥学习主动性和积极性,有效地提高学生的参与度,让学生在动中学、学中动,但由于掌握的都是碎片化的知识,对知识缺乏系统的掌握,难以将新知识纳入已有知识网络中,因而不利于学生对知识的深入理解和应用,易成为机械式的发现学习。

虽然学生对知识有一定程度的理解,但缺乏系统性。这种教学方式会导致失去进一步深入学习的动机和热情,为知识的系统化和迁移埋下了隐患。

如果引入任务驱动教学方式[6-7],并与上述两种模式有机结合,取长补短,适度融入相关知识,不仅能有效地克服传统教学方式的不足,而且还能克服项目驱动教学不能完整构建知识体系的不足。

2 以小任务驱动引领,促进学生掌握基础知识

以小任务驱动引领教学方式,首先是提出具体任务,然后分析出需要解决的问题,教师围绕问题组织相应的教学内容。依据建构主义理论,这一阶段主要处于学习的低级阶段,主要目标是让学生知道一些重要的概念和事实。实践中发现,如果不分轻重缓急地把所涉及到的知识点全部传授给学生,不仅没有解决传统教学中因知识点过多而导致学生丧失兴趣的问题,而且还会带来知识的不系统性问题。因此,在教学中,应选取一个或几个知识点进行较系统的讲授,对于其他的知识点暂时让学生了解基本用法,不过于深入的讲授。由于减少了知识点,可以在授课时边操作边进行知识点讲解。这样,不仅可以让学生对所学知识点理解得更为形象、直观,而且能让他们具体、生动地掌握知识点的运用方法,为下一步的学习奠定基础。还可以采用讲授加学生探究的方式进行教学,因为通过讲授,学生已同化了新知识、新概念,再给予学生恰当的任务,鼓励他们探究,便更能激发学生学习的主动性和积极性。这种方式不仅能让学生对知识理解得更为深刻,而且还能培养学生分析和解决问题的能力,促进学生自学能力的提升,完成有意义的发现学习过程。

2.1 围绕知识的系统化选择任务

由于过于零散的知识难以形成知识体系,所以教学中要引导学生构建知识体系。虽然传统教学方式在知识体系的形成方面有一定优势,但由于过于强调知识的系统化,导致学生学习兴趣淡化。选择、设计一些恰当的任务,并将任务驱动法融入到知识体系的构建进程中,可以克服传统教学模式的弊端。在进行任务选取时,开始阶段选择相对简单的任务,然后选择相对复杂的任务,逐步搭建起知识体系。

2.2 注重知识体系建立的迭代性

由于学生不熟悉程序设计的思维方式,再加上指针、内存的分配与回收相对复杂,所以学生通常感到门槛较高、难度较大。因此,在安排任务时,对难度较大的内容如指针,可以按指向基本数据类型的指针、数组指针、指针数组、结构指针、函数指针的顺序,循序渐进地提出任务。这样,既有利于学生对已有知识的深入掌握,也有利于将新知识纳入已有的知识体系,符合建构主义教学思想。

2.3 注重学生动手能力的提升

衡量学生对C语言掌握的程度,主要是看其能否在实践中正确地运用C语言。学生通常喜欢教师以传统的教学方式授课,即听课、记笔记、记忆。这种教学方式应对考试确实有一定的成效,但从面向职业能力培养的角度看,由于缺乏对编程思想的掌握,难以应对今后工作中提出的要求。通过代码的验证和编写,可以让学生在一定程度上克服这种死记硬背的学习方式带来的弊端。通过上机编写和调试程序,学生可以逐步掌握职业环境下的代码书写和调试能力,这是传统教学方式难以实现的。

2.4 关注学生学习习惯的培养

教育的最终目标在于人的自我完善与发展,自主学习能力的建立是其中重要的一方面。对所有问题都给予明确的答案,无法培养学生独立思考和解决问题的能力。因此,在教学中要给予学生适度的问题。首先,对某些简单的问题不进行讲解,要求学生自己完成,这样可以节省出教学时间去处理相对复杂的问题。其次,对某些较为复杂的问题,给予一定的思路进行引导,让学生完成。这样可以防止学生因问题过于复杂、难以驾驭,丧失信心[8],进而失去兴趣。再次,针对不同水平的学生布置不同难度的作业。学生的水平不同,对题目难度的要求也就不同,不给予难度相匹配的题目就无法促进学生的学习进步。给予学习基础好的学生以低难度的问题,无法调动其积极性;给予学习基础薄弱的学生以高难度的题目,学生无法解决,进而丧失信心。只有给予学生略高于现时认知水平的题目,才能有效地促进学生学习水平的提高。

3 以项目化教学为补充,适度融入相关课程知识,促进学生对知识的理解与运用

在学生具备了一定基础知识的基础上,引入适当的项目,将所学知识的运用融进项目之中,可以实现“项目作为学习载体、学生作为学习主体,教师作为学习主导,能力作为学习根本”的教学目标。例如,教学中选择学生易于理解的“学生成绩管理系统”,采用CLI实现:学生成绩信息的读写、查询、增、删、改、统计、排序,主要涉及数组、结构、指针、文件等知识点及应用。

(1)采用数组实现。在“学生成绩管理系统”的设计中,首先使用数组作为存储结构来完成。“学生”(学号、姓名、性别、年龄、语文、数学、英语、总分、平均分)采用7个数组来表示,目的是使学生熟悉数组的应用。

(2)采用结构数组实现。使学生熟悉结构和结构数组的使用方法。

(3)采用分解后的关系模式来表示。Student(学号、姓名、性别、年龄)、Grade(学号、课程号、成绩)、Course(课程号、课程名、学分),借助于上述结构数组组织出“学生”(学号、姓名、性别、年龄、语文、数学、英语、总分、平均分),使学生深入理解结构数组并引导学生比较上述三种方式,让学生了解第三种方式的优势,为后续课程——数据库原理奠定基础。

必要时,还可以引入数据结构中的一些相关知识,让他们采用链式结构实现。

(4)采用链式结构表示“学生”(学号、姓名、性别、年龄、语文、数学、英语、总分、平均分)使用7个链表实现,学生可熟悉指针、结构指针的使用方法。

(5)采用节点数据域为结构的链式结构实现“学生”(学号、姓名、性别、年龄、语文、数学、英语、总分、平均分),学生可熟悉结构指针的使用方法。

(6)采用3个链式结构实现。采用链式结构实现Student(学号、姓名、性别、年龄)、Grade(学号、课程号、成绩)、Course(课程号、课程名、学分),并用链式结构表示“学生”(学号、姓名、性别、年龄、语文、数学、英语、总分、平均分),可以深化学生对结构指针的认识,为后续课程——数据结构打下坚实的基础。

在项目化教学中,可以依照学生的具体情况让学生实现后面三种方式中的部分功能。

依据项目实施的不同阶段,针对性地讲授相应的知识点,有利于学生将新知识纳入已有的知识框架,同时通过项目真正地理解并运用知识点,达到既实现知识的系统化又面向应用的目的,实现知识构建的教学目标。

4 结束语

以上提出的C语言多模式联动教学模式,克服了目前两种主要教学方式的不足,使学生既能建立起较系统的知识体系,又能提高学习兴趣,促进习得知识迅速转化为能力,提升学生掌握和运用C语言解决实际问题的能力,达到学以致用的目的。但该教学方式的实施在一定程度上受时空条件的限制,若再引入MOOC教学方式,可以打破这种时空限制,进一步完善C语言多模式联动教学,提升教学质量。

[1]方忠进.C语言教学面临的问题及应对措施[J].江苏科技信息,2012(12):17-18

[2]侯宏霞.提高“C语言程序设计”课程教学质量的探索与实践[J].内蒙古师范大学学报:自然科学版,2012,25(1):125-127

[3]姚本先.高等教育心理学[M].合肥:合肥工业大学出版社,2005:83-84

[4]钱丽丹.项目化教学在C语言程序设计课程中的应用[J].软件导刊,2013,12(1):188-189

[5]张蕾.基于项目化教学的“C语言程序设计”课程改革[J].计算机教育,2013(2):17-20

[6]邵雪梅.案例教学法在“C语言程序设计”课程中的应用[J].新乡学院学报:自然科学版,2012,29(3):283-284

[7]赖永秀,李凌,饶妮妮.任务驱动法在C语言实践教学中的应用[J].实验科学与技术,2012,10(3):125-126,151

(责任编辑:刘小阳)

10.3969/j.issn.1673-2006.2015.04.034

2014-12-25

凌军(1973-),安徽六安人,硕士,讲师,主要研究方向:算法设计、图像处理、计算机视觉。

G640

A

1673-2006(2015)04-0118-03

猜你喜欢
数组指针C语言
JAVA稀疏矩阵算法
基于Visual Studio Code的C语言程序设计实践教学探索
JAVA玩转数学之二维数组排序
基于C语言的计算机软件编程
为什么表的指针都按照顺时针方向转动
Excel数组公式在林业多条件求和中的应用
高职高专院校C语言程序设计教学改革探索
寻找勾股数组的历程
基于改进Hough变换和BP网络的指针仪表识别
论子函数在C语言数据格式输出中的应用