蒋海华 李俐 郑爽 崔玲
摘要:文章针对高校非计算机专业C语言课程,分析课程教学中存在的问题,从3个角度探讨课程教学改进的方法,进而提高教学效果。
关键词:C语言;非计算机专业;教学方法;计算思维;实践
中图分类号:G642.41 文献标志码:A 文章编号:1674-9324(2019)49-0128-02
C语言程序设计是高校非计算机专业的一门重要的计算机基础教学课程。通过该课程的学习,有助于学生了解计算机能做什么,知道计算机擅长解决什么,培养学生的计算思维能力,从而更好地利用计算机来解决本专业的实际问题。C语言课程学习的内容和要求是相对的,对不同的人群有不同的要求[1]。非计算机专业的C语言课程学时有限,学生在前期和后期也基本没有学习计算机相关的其他课程,在课程讲授过程中,存在一些问题,影响学生程序设计能力的提高。
一、教学存在的问题
(一)理论与实践衔接不紧密
通常的授课方式是先在教室安排理论课,再在机房安排实验课或者布置课后作业。这种方式容易分离理论知识与实践操作,使两者衔接不紧密。C语言的语法理论枯燥、抽象,学生在接触到新的理论知识点后,如果不及时上机动手操作,不利于对抽象概念的理解,也容易将知识遗忘。
(二)学生缺乏计算思维,没有学习方法
对于数学、英语、物理这些课程,学生们基本都有一套自己的学习方法。不同于这类课程,大多数学生在上大学之前都没有接触过计算机程序编程类的课程,学生们基础薄弱,也没有学习方法。同时,非计算机专业的学生基本只是孤立地学习C语言课程,没有其他配套的课程加深理解计算思维。大部分学生能理解教师所讲授的案例,但在独立编写程序时却没有思路。缺乏计算思维,不会采用启发式推理来寻找答案,不会用计算机解决问题的方式去思考问题[2]。
(三)学生动手实践能力提高缓慢
课程的教学目标是让学生具备程序设计能力,学生上机动手能力的高低也决定了课程的教学效果。对于刚编写完成的程序,大部分都会编译报错或者运行结果不正确。作为初学者,学生往往找不见问题,也就无法将程序调试正确。学生得不到成就感,会对上机实践慢慢地失去兴趣,甚至产生抵触情绪,进而影响编程能力的提高。
二、教学方法改进
(一)紧密衔接理论与实践
将授课方式改为统一在机房上课。教师在每次通过案例讲完一个新的知识点后,学生紧接着就上机进行操作。学生可以模仿已有的案例程序,也可以进行改写完成新功能,发现自己的不足,进而巩固理论知识。当学生遇到问题时,教师可以第一时间进行解答,了解学生掌握的情况。这种授课方式需要教师控制好时间,不然很有可能在规定学时内完不成所有理论知识的讲授。
(二)启发渐近式讲解案例
为了让学生学习程序语法不那么枯燥,笔者通过启发渐讲式讲解案例的方式讲授知识点。首先提出实际问题,让学生思考并给出解决方案,接着对学生的方案进行点评,再按照计算机解题的方式给出更多的思路,通过这种方式来培养学生的计算思维能力。案例中需要融入包含理论知识的主要语句,在学生对整体程序有大致理解的基础上,再对其中涉及的相关语法进行解释分析。例如,在讲授循环语句时,教师先提问如何计算数值50到59的和,学生一般给出方案,有利用计算器、笔算、套用数学公式等。教师在肯定学生回答的同时,再进一步提问如何计算数值50到5000的和,或者50到5000的乘积,进而引出循环语句的解法。
对案例具体程序进行讲解时,除了程序的基本框架外,笔者将主体程序分为四部分:第一部分是定义变量,第二部分是给变量赋值,第三部分是数据计算处理,第四部分是输出结果。这样学生对程序的结构有更清楚的认识,然后再去理解算法部分。学生自己独立完成任务时,也可以先将基本框架搭建完成,再按这四部分内容进行编写程序。
对于第三部分数据计算处理,也就是算法部分,是整个程序的核心。这部分的理论知识通常比较抽象,学生不容易理解和掌握,是课程的重点和难点。讲授时,笔者将抽象的知识进行具象化,进而启发学生的思维。例如,在讲解循环执行过程的时候,将for和while语句具象化为4步图,如图1所示。第一次按1、2、3、4步顺序执行,以后每次按2、3、4三步重复执行,形成一个循环的闭合路径。通过图形化的方式,强化学生对这两条语句的理解和记忆。
再例如,在讲解break和continue语句时,引入操场跑圈的例子。某同学锻炼身体在操场跑步,打算跑2000米,也就是5圈循环。但是刚完成2圈准备跑第3圈时,天下雨了,这时该同学就结束跑步,要退出整个循环就用break。如果是在跑到第2圈一半时,后半圈偷懒不跑了,直接从第3圈接着跑,这是退出当次循环就用continue。通过将现实生活中简单的事件进行类比,使学生更容易理解这些理论知识。
(三)重视培养调试程序能力
笔者采用Dev C++作为开发工具,该工具相对常用的VC++ 6.0而言,具有体积小、安装方便、新建程序简易等特点,更适用于初学者。上机编程的初期,学生往往会遇到不少问题,甚至模仿教材中的案例也无法避免报错。这时需要教师去帮助找出错误,由于学生人数较多,每一个都指导下来会花费很多时间。还有小部分学生可能不好意思提问,就硬着头皮找错误,如果没找到,学生的学习信心会受到打击。为了提高编程的效率,减少学生找错误的时间,笔者将常见的错误提示和相应的解决方法罗列出来。这样,在学生遇到相似的问题时,可以自己解决,有利于增强学生学习的自信心,提高自身的学习能力,体会到编程的乐趣,由“要我学”变为“我要学”[3]。教师也可以从一直解答相同问题的困境中解脱出来,而去幫助学生解决其他错误。例如,课程初期,学生常遇到程序编译没有问题,但运行程序时被强制中止,提示程序已停止工作的现象,如图2所示。出现这种错误,通常是因为输入语句中少写“&”符号。
对于初学者,语法错误一般容易被找到并改正,然而逻辑错误解决起来却比较困难。对于逻辑错误,学生可以利用Dev C++提供的单步执行,跟踪程序运行过程,监视其中变量的值,这样有利于学生厘清思路,从而找到错误。单步跟踪调试首先需要设置好断点,而后执行的过程中需要认真仔细地观察变量值的变化。通过跟踪调试,有助于提高学生的细心和耐心度,减少下次出现编程错误的可能。同时也有助于学生理解一些难点知识,例如循环语句的执行过程、指针和变量地址之间的关系等。笔者也让学生两两相互进行调试对方的程序,这种方式既可以提高学生的程序阅读能力和调试能力,又可以让学生注意程序书写规范,进而提高程序可读性,同时还能让学生进行互动交流,提高沟通能力。
三、结语
C语言程序设计是一门很注重实践操作的课程。为了进一步引导学生重视实际动手能力的提高,在课程考核中笔者将上机考试成绩占总成绩的比例设置为50%,这个比例可能还会提高。目前课程教学还存在一些问题,我们需要努力让学生从解决实际问题中获得成就感,尽可能地调动学生的积极性、提高其学习兴趣,培养学生通过计算思维的方式利用C语言程序设计能力去解决各自专业中遇到的问题。
参考文献:
[1]谭浩强.研究计算思维,坚持面向应用[J].计算机教育,2012,(21):45-49,56.
[2]J.M.Wing.Computational Thinking[J].Communications of the ACM,2006,(3):33-35.
[3]段学庆.C语言教学方法之浅析[J].教育教学论坛,2017,(23):263-264.