C语言教学模式的探索与实践

2014-08-07 11:00魏书堤 赵辉煌 邓红卫 王樱
求知导刊 2014年3期
关键词:C语言程序设计实训

魏书堤 赵辉煌 邓红卫 王樱

摘 要:本文针对普通高校理工类C语言教学的现状,提出了理论教学、案例分析、项目实训三位一体教学模式新思路,加强培养学生发现问题、提出问题和解决问题的能力;把论文介绍的方法用于实践,可培养学生的思维能力,有效地提高学生的动手能力、激发学生的创新意识。很多高校把C语言作为计算机语言的入门教学课程,而C语言程序设计课程又具有较强的理论性和实践性,课程教学要求理论与实践能够很好结合,通过对该课程的学习,学生应具有较强的动手能力。而传统的C语言程序设计教学方法一直是以介绍语法为主,配上一些作为语法示例的应用程序,缺少培养学生编程思维,忽视了知识的应用,学生即使掌握了基本的语法知识,但是自己却写不出程序。而传统的填灌教学方法对刚刚进入大学课程学习的学生来说,接受起来更是比较困难,这会让学生觉得枯燥,在多变的语法面前失去信心和兴趣。如何激发学生创新意识,加强培养学生发掘问题和解决问题的能力、培养学生的思维能力和动手能力?我们就此进行了长时间的总结和探索,提出了理论教学、案例分析、项目实训三位一体C语言教学模式,并用于实践,取得了较好的效果。

一、理论教学

我们将C语言课程理论教学内容分成三大部分,在教学中将“数组”前的知识归为第一部分,将“函数、指针”知识归为第二部分,将“结构体、文件”知识归为第三部分。

第一部分主要讲解C语言的基本概念,基本的数据类型,基本运筹方法,基本语句和基本的程序结构,对于第一部分的内容中的变量要重点讲解变量的存储方式,变量的存储空间及存储范围,表达式部分应重点讲解运算符的优先级程序控制,结构重点放在同一结构的嵌套与不同结构的相互嵌套。第二部分主要讲解指针、函数,重点应放在函数的参数、函数的调用、函数的递归调用、指针函数、函数指针、指向数组的指针。使学生掌握编程的模块化思想及通过指针实现多种结构类型的引用、内存的动态分配。第三部分主要讲解结构体,基本的文件操作、程序设计方法和设计技巧。第三部分重点应放在结构体和文件指针上,要详细讲解通过文件指针对文件进行访问,使学生掌握复杂结构类型的数据组织与处理、数据与文件的关系及文件数据的处理[1]。

二、案例分析

由于课时减少,我们精简了教学内容,精心设计教学环节和教学过程,通过实例讲解、上机练习、课外作业,使学生掌握编程的最基本的结构语句,提高学生的程序阅读能力,通过程序改错,程序补充来训练学生的程序理解和分析能力。

1. 案例教学

案例教学法本身就是一种综合性的教学方法[2],教学内容采用是以算法分析、程序设计为主, 语言知识为辅的组织方式;教学方法是引入案例的主题式教学;教学内容以算法设计作为贯穿各主题的主线;案例分析是教学的核心。为了培养学生的综合程序设计能力,我们注重算法分析,突出算法设计,强化学生的计算思维,通过案例分析来培养学生的思维能力。另外,案例分析可以更好地适应不同层次的学生,在传统的C语言程序设计教学中,在讲过语法规则之后,给出一些只含有课本上已学过的简单语句的简单实例,仅仅是说明其语法及功能,程序本身没有多大的实用性及吸引性,而在案例教学中,为了程序实现更有趣,教师往往会联系一些实际问题,学习能力较强的并且对此感兴趣的同学可以学到更多的知识。

2. 案例设计

在进行案例教学中,我们结合教材,精心设计教学案例,重点培养学生的计算机思维和创新能力。在课堂教学过程中,要求老师要在激发学生创新意识的基础上,加强培养学生发掘问题和解决问题的能力。在教学中利用C语言知识点紧密联系的特点,设计一系列具有启发性的教学案例。

我们设计的案例满足了如下要求:一是难度适当;二是在教和学方面富有探索性;三是能培养学生的计算思维和创新能力。在案例分析过程中引导学生自己发现问题,自己解决问题,通过对实际问题的解决来启发学生的思维,通过问题——算法——程序这一系列的过渡来解决实际问题,从而达到对理论知识的掌握和运用,使学生逐步养成独立思维和创造性地运用知识的习惯。在C语言教学过程中,始终将算法分析和设计作为教学重点,在教学内容组织上以算法设计为主,语言知识为辅。从分析问题入手,引导学生找出解决问题的方法,再给出设计的算法,同时还应将算法用流程图表示出来,使学生能够清晰地了解程序的功能和结构,这样就容易将其换成程序代码。案例分析能够使学生主动参与学习活动,教师和学生之间以及学生和学生之间能够相互交流和沟通,形成良性互动。作为案例讨论的组织者和引导者,对同一个案例,老师允许不同学生提出不同分析结果和实现方法,让学生能够自主思维。

3. 教学案例实例

百元纸币兑换:一张一百元的纸币换成等值的10元、5元、2元和1元一张的小钞票。每次换成50张每种至少一张,共有多少种换法?

案例分析:首先每种一张,余下100-18=82元。已经换了4张,还要46张,就是46张10元或者5元或者2元或者1元组成82元。依次设10元、5元、2元、1元的张数为x、y、z、m则:

10x+5y+2z+m=82;

x+y+z+m=46;

以上x,y,z,m的取值要求是不小于0。

因为有四种纸币,要对每一种纸币数进行遍历,就要用四重循环嵌套,算法如下:

intx,y,z,m,k=0;//k为兑换方法数量

for(x=0;x<9;x++)

for(y=0;y<17;y++)

for(z=0;x<42;z++)

for(m=0;m<83;m++)

if(10x+5y+2z+m==82&&x+y+z+

m==46)then

k=k+1

三、 项目实训

在C语言理论课结束后,我们安排三周时间让学生集中进行课程设计,课程设计采用项目实训的方式,项目的工作量要适度,要有一定的难度,以该项目设计和改进中的问题为动力,尽可能涉及更多的C语言知识点,全面贯穿整个课程内容,以达到训练学生综合运用所学知识解决问题的能力,提高学生的动手能力。

1. 项目标准

教师要明确项目拓展所涉及的C语言知识点和项目的基本目标。项目应能贯穿整个课程的各个环节:格式化的输入输出;各种程序控制结构;各种变量、表达式的使用;函数的调用,尤其是递归调用;指针使用;指针函数与函数指针;文件的建立、打开、读、写、保存等操作,要求实现项目要求的功能。项目难度适中,使学生不必进行复杂的项目背景分析就可以进行不同程度的功能扩展。同时项目的实施能够突出以算法为中心来进行程序设计。

2.项目分组与评分

项目实训要按照软件工程的方法进行,让学生具备初步的软件设计思想。我们要求教师首先制定项目任务书,明确实训的目的及内容,让学生懂得为什么要进行项目制作,目的是什么?目标是什么?教师可拟定多个项目,并将学生分成对应的项目小组。分组采用由老师指定与自由组合等形式,指定主要是由指导教师来分配项目小组,主要是结合学生在学习语言过程中,对学习内容掌握的情况以及上机实践的情况来确定,这些项目组的组长一般要有较强的组织能力及综合设计能力;自由组合一般由学生自行结合,指导老师把关。一个组一般3人为宜,项目选题由指导教师根据教学内容和教学案例,拟定学生比较熟悉的一些项目,一般指导教师拟定的选题比学生的组数多,可按照1比1.2比例进行,让学生自由选择,学生也可以自己拟定题目,但必须由指导教师审核,为了保证每个组的项目实训效果,要求每个组的选题不能相同。考核方式可以采用指导教师打分与学生互评相结合,指导教师根据每个项目小组的项目结果,给各个小组进行评分,然后每个小组答辩,答辩要求学生先制作好PPT进行汇报,汇报的内容要简明表述项目实施所用的知识点,项目实施中所遇到的困难和解决方法,最后演示所完成的程序。报告完成以后,其他小组提问并进行评议,指导老师完成对项目点评。

3.项目实例

项目名称:用C语言制作班级通讯录。

要求实现如下功能:记录插入、记录查询、记录删除、记录按学号进行排序、记录打印。

项目涵盖的内容:文件操作、函数或过程调用、搜索算法设计、排序算法设计、数组操作、结构类型使用、自定义数据类型、打印机操作等内容。

时间要求:三个星期内完成。

上交资料:项目设计书(含设计心得)、源代码、汇报PPT。

四、结束语

虽然目前C语言教学计划上减少了课时量,但是我们通过对教材进行分阶段划分,使学生在阶段性的目标下学习,同时在备课环节中组织教师精心地设计教学案例;教师在理论课上,通过教学案例,对相关理论进行仔细讲解与分析。在理论结束后,安排三周时间集中进行项目实训,通过“理论教学、案例分析、项目实训三位一体C语言教学模式”的周密实施,学生的思维能力,动手能力得到很大的提高,学生的程序设计能力在程序设计大赛中得到了很好的体现。

参考文献:

[1]谭浩强.C程序设计[M].北京:清华大学出版社,2001.

[2]胡 枫.C语言程序设计教学方法探析[J].计算机光盘软件与应用,2012(12):278—279.

[3]黄锦祝.高职语言项目实训的设计与实施[J].电脑学习,2010 (5):

80—84.

[4]邱建林,王 波,等.计算机程序设计语言教学的探索[J].牡丹江大学学报,2001(4).

[5]耿国华.程序设计能力培养模式的探索与实践[J].中国大学教学,2009 (3):30—32.

(作者单位:衡阳师范学院)

endprint

猜你喜欢
C语言程序设计实训
基于Visual Studio Code的C语言程序设计实践教学探索
基于CDIO理念的数控实训教学改革与实践
从细节入手,谈PLC程序设计技巧
基于C语言的计算机软件编程
电工电子实训教学改革与创新
高职高专院校C语言程序设计教学改革探索
微课在数控实训课中的应用探析
PLC梯形图程序设计技巧及应用
论子函数在C语言数据格式输出中的应用
虚实结合实训平台的开发与应用探索