SCI论文(www.lunwensci.com):
摘 要:C 语言程序设计是广泛使用的程序设计语言之一,越来越普遍地成为高校的公共基础课。非计算机专业的学生在学习 C 语言的过程中存在很多问题。为了让学生更好地学习 C 语言程序设计,本文分别对理论教学和实践教学提出了几种教学方法的改进,理论教学的改进包括培养兴趣、变静为动、与学生保持一致的思路,实践教学的改进从实践内容和实践方式两个方面入手,并通过实例分析教学方法的改进。
关键词:C 语言;公共基础课;非计算机专业;教学方法
本文引用格式:陈善利 . 非计算机专业《C 语言程序设计》教学方法研究 [J]. 教育现代化 ,2020,7(105):70-72,102.
research on teaching method of c Language Programming for non computer majors
CHEN Shanli
(School of Information Science and Technology, Nantong University,Nantong Jiangsu)
Abstract: C language programming is one of the widely used programming languages, and has become a common basic course in Colleges and universities. Students of non computer majors have many problems in the process of studying C language. In order to let students learn C language programming better, this paper puts forward several improvement of teaching methods for theoretical teaching and practical teaching respectively. The improvement of theoretical teaching includes cultivating interest, changing static into dynamic and keeping consistent with students. The improvement of practical teaching starts from two aspects of practice content and practice mode, and analyzes the improvement of teaching method through examples.
Key words: C language; public basic course; non computer major; teaching method
一 引言
随着科技的发展和人工智能时代的来临,计算机程序设计具有越来越重要的地位。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 所示。
要能实现这样的方法,对教师的要求是比较高的,教师要设计出比较好的案例,既要用到 C 语言的语法结构,又要简单实用,还要有扩展性 [6]。比如, 在讲授基本结构中的循环结构时,笔者让学生当堂抄 100 遍循环结构的特点并标序号,学生都面面相觑,这时笔者用循环结构中的 for 循环完成了这个操作,前后只用了不到 2 分钟。然后通过这个实例讲解 for 循环的语法规则和执行流程,学生很容易就理解了,然后再举一反三,循序渐进,逐渐增加循环的难度讲解。再比如,讲授函数的时候,笔者让学生编程计算 1 到 10 范围内每一个整数的阶乘,求一个数的阶乘在前面的课程中学习过,学生会编写求某一个数的阶乘,但是要编写 1 到 10 范围内每一个数的阶乘,而且代码非常相似,学生觉得重复写代码太浪费时间,而且重复的代码也会带来存储空间的浪费,不少学生产生了一种想法:是否有方法可以一次性计算每一个数的阶乘?答案是肯定的,通过函数求阶乘。这样引出函数的定义、调用等。
通过这样的方法,学生在学习每一个知识点的时候都能够保持一种积极的求知欲,学习语法的时候也不会觉得那么枯燥。
(2)变静为动
C 语言知识点比较多,算法也多,有时同一个问题可以用多个算法实现,学生往往一个算法还没有理解,更不可能去比较多个算法了。教师在讲授这些算法的时候应该考虑如何让学生更加容易区分和理解这些算法。
比如程序设计中最经典的排序问题,常见的算法有选择排序、冒泡排序、堆排序、快速排序等, 每种算法有各自的特点,其中最容易混淆的是选择排序和冒泡排序,同样是两两比较,过程相似,代码相似,学生很难区分。笔者尝试把这两种算法的过程做成动态的演示图,学生很容易就能区分了 [9,10]。
图 2 所示为冒泡排序法一次比较的动态演示图。冒泡排序中,每次比较都是相邻的两个数两两比较, 交换位置,比较结束后得到最大的数,剩余的数重复比较的过程,每次得到最大的数,直到所有的数排好序。
图 3 所示为选择排序法一次比较的动态演示图。选择排序中,每次比较是第一个数和其余所有的数两两比较,交换位置,比较结束后得到最小的数, 剩余的数重复比较的过程,每次得到最小的数,直到所有的数排好序。
用语言描述两种算法非常相似,但是用动态图演示可以很清楚的比较出来。通过这样的动态演示使学生能够更加直观地理解算法的过程和特点,也加深了记忆,理解了算法了以后再用程序实现学生就容易接受了。
(3)与学生保持一致的思路
现在高校教学绝大多数都是采用多媒体教学, 教师通过投影仪讲解概念、语法,演示程序,这样的教学手段极大提高了教学效率,但也会带来问题 [11]。在使用多媒体教学之前,教师多是板书程序,一边写程序一边讲解,虽然效率低,但是学生有充分的时间思考和理解。现在教师都是用 PPT 播放代码或者用编程工具打开编辑好的程序讲解,学生往往首先被程序的复杂度吓住,对程序产生了抗拒的心理,而且教师在讲解的时候不可能一句一句代码讲,总是挑重要的部分讲,学生容易跟不上节奏,稍微一走神后面就听不懂了。两种教学手段各有利弊,是否可以把这两种教学手段结合起来呢?笔者尝试了用多媒体的方式“板书”程序,取得了比较理想的效果。
C 语言的编程工具有多种,目前常用于教学与计算机等级考试的有 Visual C++、Visual Studio。笔者使用了一种比较快捷方便的编辑器:CodeBlocks。在 CodeBlocks 里编程,关键字只要输入首字母会自动弹出,大括号也会自动配对,省去了输入语法结构的时间,还有调试器方便调试程序。笔者在讲解程序的时候首先给出问题让学生思考,然后在编辑器里从定义变量开始输入,边输入边讲解语句的作用,与学生保持一致的思路。有时输入过程中不小心出错,学生也能指出错误。对于一些复杂的语句结构,还可以用调试器做单步调试,让学生对程序的运行过程有更加透彻的理解。
C 语言程序设计是一门实践性很强的课,教学过程中除了教师的讲解以外,上机实践也是非常重要的。前面讲到的几种教学方法的改进可以帮助学生从理论上更好地学习 C 语言,学生自身也需要通过大量的上机训练来培养操作能力和灵活运用的能力 [12]。
(二) 实践教学的改进
C 语言程序设计的实践性非常强,因此在掌握理论知识的基础上进行实践训练尤为重要。因为实践学习的课时相对较少,怎样充分利用较少的课时达到实践训练的效果是教师需要研究改进的。结合理论教学,笔者认为可以从以下几个方面尝试改进 [13]:
(1)实践内容
学生上机操作编什么程序很关键,编写的程序既要与学习的理论相结合,又要难度适中,有代表性, 容易举一反三。实验教材的题目往往难度偏低,而且有实验步骤和完整的程序代码参考,对于不自觉的学生来说,每次上实验课只是把教材上的代码录入运行,起不到练习的作用。笔者尝试每次实验课设计一些相关的编程题给学生练习,有难度的题目适当给出一些提示,实验课结束前给出完整的程序并讲解思路算法,学生对照自己编写的程序修改运行。
(2)实践方式
编程需要花费的时间比较多,实验课程安排的时间比较少,如果课上给学生题目让学生编程调试, 往往一次课学生连一个程序都完成不了。笔者的做法是提前把实验题布置给学生,学生可以利用课后时间编写代码,实验课时用来调试验证,遇到问题可以相互讨论,相互学习 [14]。
经过一学期的学习,大部分学生基本掌握 C 语言程序设计的编程思想,能够较好地完成实践教学所要求的教学目标,达到课程学习的要求。
五 总 结
《C 语言程序设计》这门课对于非计算机专业的学生来说确实是一门比较难学的课程,对学生的逻辑思维能力有很大的考验,让每个学生通过有限的学时掌握好编程语言对教师也是一个考验。教师如何在教学过程中提高教学质量,提升学生的编程能力,培养逻辑思维能力,并不是一朝一夕的事情, 必须要在实际教学中进行反复的实验、总结和改进, 才能获取宝贵的教学经验。
参考文献
[1] 吉根林 , 陈波 .C 语言程序设计实践教程 [M]. 北京 : 科学出版社 ,2016.
[2]朴燕姬 , 金日泽 . 非计算机专业 C 语言综合性实验的教学探索和实践 [J]. 黑龙江科学 ,2018,9(04):38-39.
[3]周长英 , 董翠英 , 陈颖 . 非计算机专业“C 语言程序设计”教学方法探析 [J]. 教育与职业 ,2010(23):148-149.
[4]刘山清 . 深化高校教学改革 [J]. 科教导刊(电子版),2014(5):5.
[5]王伟廉 . 人才培养模式 : 教育质量的首要问题 [J]. 中国高等教育 ,2009(08):24-26.
[6]胡科 .“C 程序设计”课程建设的研究与思考 [J]. 实验技术与管理 ,2014,31(07):203-205.
[7]刘芳 , 秦兴国 , 王宇英 .《C 语言程序设计》教学存在的问题及改进 [J]. 教育理论与实践 ,2012,32(36):51-52.
[8]陈 一 飞 . 关 于 C 语 言 教 学 改 革 的 探 讨 [J]. 中 国 电 力 教育 ,2012(35):63-64.
[9]陈亮 .C 语言教学如何提高实效性 [J]. 科教导刊 ( 中旬刊 ),2015(03):101-102.
[10]李杰 , 刘延岭 , 苏建华 .《c 程序设计》课程教学方法的实践与探索 [J]. 科技信息 ( 学术研究 ),2006(10):127.
[11]朱 豪 文 . 多 媒 体 教 学 深 化 高 校 教 学 改 革 [J]. 知 识 经济 ,2010(20):128.
[12]卢照 , 南丽丽 , 杨秀荣 .《C 语言程序设计》教学中问题和改进方法的探讨 [J]. 现代计算机 ( 专业版 ),2012(01):34-36.
[13]于延 , 周国辉 , 李红宇 , 等 .CDIO 模式下 C 语言程序设计实践教学改革 [J]. 计算机教育 ,2016(02):122-126.
[14]张吴波 , 史旅华 . 建立开放的实验体系 , 提高 C 语言教学质量 [J]. 大学教育 ,2014(07):134-135+150.
关注SCI论文创作发表,寻求SCI论文修改润色、SCI论文代发表等服务支撑,请锁定SCI论文网! 文章出自SCI论文网转载请注明出处:https://www.lunwensci.com/jiaoyulunwen/32120.html