非计算机专业《C语言程序设计》教学方法研究

2020-03-20 08:00:18陈善利
教育现代化 2020年105期
关键词:C语言程序设计C语言程序设计

陈善利

(南通大学 信息科学技术学院,江苏 南通)

一 引言

随着科技的发展和人工智能时代的来临,计算机程序设计具有越来越重要的地位。C语言程序设计是目前广泛使用的程序设计语言之一,它除了具有高级编程语言的功用,还具有汇编语言的优点,因此相对于其它编程语言,C语言具有广泛性、简洁性、结构完善等特点。C语言不仅是程序设计者的入门语言,它还能帮助我们学习其它计算机语言,如Java语言、VB语言等[1]。因此C语言是程序设计初学者必备的语言。

二 问题的提出

如今,《C语言程序设计》已越来越普遍地成为高等学校理工科类专业的公共基础课,全国以及各省市的计算机等级考试都将C语言列入考试范围。但从笔者这几年的教学实践来看,不少学生,尤其是非计算机专业的学生反映,课堂上刚开始学习基本的语法规则时还能听懂,到中间学习基本结构、数组时开始一知半解,再往后学习函数、指针时完全找不到头绪,上机编程更是无从下手。一个学期下来,只有少数学生能编写像样的程序,大多数学生只学会了皮毛。面对这样的问题,作为教师应该思考如何提高学生的学习能力,研究怎样进行C语言程序设计教学方法的改革[2,3]。

三 传统教学模式存在的问题

不管是中小学还是大学,传统的教学模式就是教师在课堂讲解概念,演算练习题,学生对照课本学习,课后做练习巩固。C语言程序设计是一门实践性很强的课程,学生除了课堂上学习理论概念,更重要的是需要上机做编程训练,把理论知识融入到实际问题中,通过实践训练来掌握C语言的编程方法。而传统的教学模式只注重C语言本身语法知识的讲解,忽略了编程实践能力的培养,而且C语言的各种数据类型、输入输出格式等语法知识极为琐碎,需要花费大量的时间讲解、记忆,许多学生在此阶段容易失去学习的耐心和兴趣,很难继续后面的学习,即使学生记住了一大堆语法知识,遇到实际问题时还是无从下手,长此以往,学生会越来越失去学习的信心和兴趣,最终彻底放弃。由此看来,传统的教学模式并不适合C语言的学习[4-6]。

四 教学方法的改进研究

(一) 理论教学的改进

笔者所在的学校理工科专业的大一学生在第二学期开设《C语言程序设计》这门课,课时为72学时,其中42学时为理论教学,30学时为上机操作,理论与实践相结合。对于理论部分的学习,笔者认为可以从以下几个方面改进教学方法:

(1)培养兴趣

对于非计算机专业的大学生来说,学习一门非自己本专业的,而且知识点比较繁复、枯燥的课程,培养兴趣是首要的。绝大多数的C语言程序设计教材,在介绍每章节内容的时候首先抛出概念和语法规则,然后给出几个相关的编程例题,教师上课就是讲语法规则和分析例题,学生被动地接收知识点和理解课本上的例题,一旦出现超出了课本范围的编程问题,很多学生不能做到举一反三。作为教师,是否可以对这样的教学方法反其道而行之呢[7,8]?

在学习语法规则之前,首先给学生演示一些案例程序用来解决实际中比较常见的问题,给学生有一个感性的认识,让学生产生一种“原来这样的问题可以编程实现,而且并不复杂”的想法,继而会问:“这是怎么实现的呢?”这时,教师可以就这样的程序讲解语法结构,然后举一反三,最后通过上机让学生自己编程实现。教学方法改进前后的流程对比如图1所示。

图1 教学方法改进前后的流程对比

要能实现这样的方法,对教师的要求是比较高的,教师要设计出比较好的案例,既要用到C语言的语法结构,又要简单实用,还要有扩展性[6]。比如,在讲授基本结构中的循环结构时,笔者让学生当堂抄100遍循环结构的特点并标序号,学生都面面相觑,这时笔者用循环结构中的for循环完成了这个操作,前后只用了不到2分钟。然后通过这个实例讲解for循环的语法规则和执行流程,学生很容易就理解了,然后再举一反三,循序渐进,逐渐增加循环的难度讲解。再比如,讲授函数的时候,笔者让学生编程计算1到10范围内每一个整数的阶乘,求一个数的阶乘在前面的课程中学习过,学生会编写求某一个数的阶乘,但是要编写1到10范围内每一个数的阶乘,而且代码非常相似,学生觉得重复写代码太浪费时间,而且重复的代码也会带来存储空间的浪费,不少学生产生了一种想法:是否有方法可以一次性计算每一个数的阶乘?答案是肯定的,通过函数求阶乘。这样引出函数的定义、调用等。

通过这样的方法,学生在学习每一个知识点的时候都能够保持一种积极的求知欲,学习语法的时候也不会觉得那么枯燥。

(2)变静为动

C语言知识点比较多,算法也多,有时同一个问题可以用多个算法实现,学生往往一个算法还没有理解,更不可能去比较多个算法了。教师在讲授这些算法的时候应该考虑如何让学生更加容易区分和理解这些算法。

比如程序设计中最经典的排序问题,常见的算法有选择排序、冒泡排序、堆排序、快速排序等,每种算法有各自的特点,其中最容易混淆的是选择排序和冒泡排序,同样是两两比较,过程相似,代码相似,学生很难区分。笔者尝试把这两种算法的过程做成动态的演示图,学生很容易就能区分了[9,10]。

图2所示为冒泡排序法一次比较的动态演示图。冒泡排序中,每次比较都是相邻的两个数两两比较,交换位置,比较结束后得到最大的数,剩余的数重复比较的过程,每次得到最大的数,直到所有的数排好序。

图2 冒泡排序法演示图

图3所示为选择排序法一次比较的动态演示图。选择排序中,每次比较是第一个数和其余所有的数两两比较,交换位置,比较结束后得到最小的数,剩余的数重复比较的过程,每次得到最小的数,直到所有的数排好序。

土墙日光温室主要是指以板打墙和机械碾压土墙为温室墙体的日光温室,我省目前数量为13万栋以上,其中,机械碾压土墙是现存量最大的日光温室类型,占土墙温室90%以上,占全省日光温室数量总量的55%以上,主要分布在湟水谷地的大通、湟中、湟源、互助、乐都、平安、民和等县,其次是黄河谷地贵德、共和、尖扎、同仁县。土墙日光温室(本文主要指机械碾压土墙温室)的好坏直接关系到冬季蔬菜生产状况,维护保养和升级改造土墙日光温室对高效利用该蔬菜生产设施具有重要作用。

图3 选择排序法演示图

用语言描述两种算法非常相似,但是用动态图演示可以很清楚的比较出来。通过这样的动态演示使学生能够更加直观地理解算法的过程和特点,也加深了记忆,理解了算法了以后再用程序实现学生就容易接受了。

(3)与学生保持一致的思路

现在高校教学绝大多数都是采用多媒体教学,教师通过投影仪讲解概念、语法,演示程序,这样的教学手段极大提高了教学效率,但也会带来问题[11]。在使用多媒体教学之前,教师多是板书程序,一边写程序一边讲解,虽然效率低,但是学生有充分的时间思考和理解。现在教师都是用PPT播放代码或者用编程工具打开编辑好的程序讲解,学生往往首先被程序的复杂度吓住,对程序产生了抗拒的心理,而且教师在讲解的时候不可能一句一句代码讲,总是挑重要的部分讲,学生容易跟不上节奏,稍微一走神后面就听不懂了。两种教学手段各有利弊,是否可以把这两种教学手段结合起来呢?笔者尝试了用多媒体的方式“板书”程序,取得了比较理想的效果。

C语言的编程工具有多种,目前常用于教学与计算机等级考试的有Visual C++、Visual Studio。笔者使用了一种比较快捷方便的编辑器:CodeBlocks。在CodeBlocks里编程,关键字只要输入首字母会自动弹出,大括号也会自动配对,省去了输入语法结构的时间,还有调试器方便调试程序。笔者在讲解程序的时候首先给出问题让学生思考,然后在编辑器里从定义变量开始输入,边输入边讲解语句的作用,与学生保持一致的思路。有时输入过程中不小心出错,学生也能指出错误。对于一些复杂的语句结构,还可以用调试器做单步调试,让学生对程序的运行过程有更加透彻的理解。

C语言程序设计是一门实践性很强的课,教学过程中除了教师的讲解以外,上机实践也是非常重要的。前面讲到的几种教学方法的改进可以帮助学生从理论上更好地学习C语言,学生自身也需要通过大量的上机训练来培养操作能力和灵活运用的能力[12]。

(二) 实践教学的改进

C语言程序设计的实践性非常强,因此在掌握理论知识的基础上进行实践训练尤为重要。因为实践学习的课时相对较少,怎样充分利用较少的课时达到实践训练的效果是教师需要研究改进的。结合理论教学,笔者认为可以从以下几个方面尝试改进[13]:

学生上机操作编什么程序很关键,编写的程序既要与学习的理论相结合,又要难度适中,有代表性,容易举一反三。实验教材的题目往往难度偏低,而且有实验步骤和完整的程序代码参考,对于不自觉的学生来说,每次上实验课只是把教材上的代码录入运行,起不到练习的作用。笔者尝试每次实验课设计一些相关的编程题给学生练习,有难度的题目适当给出一些提示,实验课结束前给出完整的程序并讲解思路算法,学生对照自己编写的程序修改运行。

(2)实践方式

编程需要花费的时间比较多,实验课程安排的时间比较少,如果课上给学生题目让学生编程调试,往往一次课学生连一个程序都完成不了。笔者的做法是提前把实验题布置给学生,学生可以利用课后时间编写代码,实验课时用来调试验证,遇到问题可以相互讨论,相互学习[14]。

经过一学期的学习,大部分学生基本掌握C语言程序设计的编程思想,能够较好地完成实践教学所要求的教学目标,达到课程学习的要求。

五 总结

《C语言程序设计》这门课对于非计算机专业的学生来说确实是一门比较难学的课程,对学生的逻辑思维能力有很大的考验,让每个学生通过有限的学时掌握好编程语言对教师也是一个考验。教师如何在教学过程中提高教学质量,提升学生的编程能力,培养逻辑思维能力,并不是一朝一夕的事情,必须要在实际教学中进行反复的实验、总结和改进,才能获取宝贵的教学经验。

猜你喜欢
C语言程序设计C语言程序设计
基于Visual Studio Code的C语言程序设计实践教学探索
计算机教育(2020年5期)2020-07-24 08:52:56
从细节入手,谈PLC程序设计技巧
电子制作(2019年9期)2019-05-30 09:42:04
基于C语言的计算机软件编程
电子制作(2018年16期)2018-09-26 03:27:08
高职高专院校C语言程序设计教学改革探索
以“学生为中心”的《C语言程序设计》教学设计探究
基于翻转课堂的《C语言程序设计》课程教学系统的实现与研究
软件工程(2016年8期)2016-10-25 16:02:07
浅谈《C语言程序设计》课程的教学改革
《C语言程序设计》课程的教学改革与实践
科技视界(2016年22期)2016-10-18 16:12:24
PLC梯形图程序设计技巧及应用
论子函数在C语言数据格式输出中的应用