C语言程序设计教学改革策略

时间:2022-06-20 15:10:03

导语:C语言程序设计教学改革策略一文来源于网友上传,不代表本站观点,若需要原创文章可咨询客服老师,欢迎参考。

C语言程序设计教学改革策略

摘要:文章首先分析了“C语言程序设计”教学存在的问题及成因,然后探讨了产教融合背景下基于编程能力培养的“C语言程序设计”教学策略,包括通过案例教学,激发学生学习程序设计的兴趣;培养学生形成良好的编程习惯;注重师资培养。

关键词:编程能力;“C语言程序设计”教学;产教融合

近几年,国家连续出台《关于深化产教融合的若干意见》[1]等一系列的纲领性文件推进产教融合改革。基于这些文件的指导,深化产教融合、产学研结合成了应用型本科院校发展的必由之路[2]。产教融合背景下,普通本科院校逐渐向应用型转变,致力于促进学生实践能力、应用创新综合素质提升,为当地企事业单位培养合适的应用型人才,这既符合国家产业政策需求,也是高校自身发展的必然选择[3]。因此,探究产教融合背景下基于编程能力培养的“C语言程序设计”教学改革策略极为必要。

一、“C语言程序设计”教学存在的问题及成因

C语言自诞生之日起就一直活跃在信息技术的各个领域。如软件开发、Linux开发、硬件驱动、游戏开发、单片机和嵌入式系统[4]。目前,在不同层次的高校,“C语言程序设计”课程开设的主要目的是使学生学习、掌握和运用计算思维中的抽象、递归、复用等思维方法[5],进行问题分析和程序设计,进而利用计算机来解决实际工作或工程方面的问题。而这就涉及编程能力的问题。何谓编程能力?实际就是一种解决问题的能力,即将现实问题进行分解和抽象,最终转化为代码逻辑的能力。在此过程中,个体对编程语言的灵活运用程度决定了其解决问题的能力。结合笔者所在学校“C语言程序设计”课程教学实际可以发现:在C语言学习中,多数学生通过学习能够掌握编程语言本身的语法、语句结构,具备较为简单的算法思维,但是在面对一些较复杂或有难度的问题编程时,则表现得无从下手,这主要还是存在编程能力不足的问题。究其主要原因,大概有以下几个方面:第一,目前多数大一学生对于编程学习是零基础,其对于编程语言的学习和运用需要一个适应的过程,而大部分教师在授课中着眼于编程语言本身,按照一般教材的系统性知识结构进行教学,这就给学生造成“编程真复杂”的不良印象,从而降低了学习“C语言程序设计”课程的兴趣;第二,由于学院压缩学时,而“C语言程序设计”课程知识内容比较多,教师为了赶进度,不能在某一阶段的知识教学中分配过多时间,最后的结果就是许多学生无法及时掌握并消化“C语言程序设计”的相关知识,而且教师也难以在有限的课堂教学时间内对学生的编程能力进行充分的训练和强化,使得学生对解决复杂问题的编程比较茫然,教学效果不尽如人意;第三,学生对于编程的学习缺乏追求精益求精、创新创造的精神[6]。

二、产教融合背景下基于编程能力培养的“C语言程序设计”教学策略

(一)通过案例教学,激发学生学习程序设计的兴趣

学习程序设计,就是让学生运用学到的知识解决实际问题。这就需要教师在教学中列举一些贴近现实生活的案例,让学生了解到实际问题的解决方法,以激发学生的学习兴趣。具体而言,教师需要将来源于现实生活、具有一定复杂度的问题引入课堂教学,引导学生进行分析抽象,找到解决问题的方法和步骤,即设计算法,然后用C语言中提供的语法和结构进行编程,从而解决实际问题。现在单片机中的编程大多采用C语言编程,因此教师可以列举一些有趣的案例,将案例进行简化,从而引起学生的兴趣。例如,现实生活中着火了,会发出警报声;煤气泄露了,也会发出警报声,教师可以列举这些案例,引导学生用学到的编程知识来控制喇叭发出警报声。那么,如何通过编程实现报警呢?这里可以引入单片机中的案例,即用单片机制作一个用开关控制的简易警报器,具体可采用8051+Proteus进行仿真,通过仿真软件很快就能听到警报声。通过K1开关控制警报器工作,当开关闭合发出警报声。这里就要调用警报函数,通过调节报警函数参数就可发出不同频率的声音,进而模拟真实环境下的警报声。在这一案例中,教师首先可以让学生知道函数的定义及使用、位运算的操作;其次要引导学生进一步思考,使其明白只要是用到警报器的,这个程序基本上稍做改动就可以使用。通过这个案例,学生能真正感受到通过软件编程可以驱动硬件喇叭发声,从而激发学习编程的兴趣。通过类比,教师还可以引入日常工作、生活中可能遇到的类似事例,让课堂变得活跃起来。值得注意的是,对于初学者,教师在选择项目式案例时,尽量不要选择过于复杂、难度偏高的案例。

(二)培养学生形成良好的编程习惯

在“C语言程序设计”教学中,教师要注意培养学生良好的编程习惯,具体可以从以下六个方面着手。1.要求学生严格按照规范编写程序。每种编程语言都有一套规范,C语言也不例外。在“C语言程序设计”教学中,教师应要求学生严格按照规范编写程序,这样既能让代码易于阅读,同时也能减少bug数量。具体实践时,首先,函数和变量等命名要做到“见名知意”。通常情况下,变量命名第一个单词首字母小写,余下的单词首字母大写;函数命名每个单词首字母都大写。往往一个好的项目结构,打开文件夹看到一列文件名,就能知道大概的层次是怎样的。对于文件中的代码,文件在开头给整体思路做大段注释,剩下的只给比较晦涩的部分做解释,且注释应做到尽量简洁。不仅如此,代码风格也应该统一,同时确保排版优美,括号的位置及每行长度等都要按照规范编写。其次,代码结构要层次逻辑清晰。为了方便阅读,要尽量把握好代码的层次结构,一段代码里有几层,有判断、有循环等,该缩进的要缩进,尽量避免大量使用循环嵌套和条件嵌套。最后,要把综合功能模块拆分成多个独立功能的模块,而不是所有代码都放到一个main函数,即良好的编程风格要把代码的规模控制得尽可能小。2.要求学生多动手编程。在学习的过程中,大部分学生说“一听就会,一写就废”,感觉编程无从下手。而要想解决这一问题,教师应要求学生多动手编程。具体实施时,教师首先要选择经典的教材,指导学生把教材中的例子输入代码编辑器,让代码跑起来,然后再尝试改变其中一部分代码,并试着用其他方法来实现这些代码。比如,C语言中,把用while语句实现的循环改为用dowhile语句或for语句实现,并用不同的排序算法实现某门课程成绩升序排序等。通常,学生刚开始学习编程时,将书上的例题原封不动输入电脑,别人运行没问题,但自己编译代码就报错,大多情况下是因为用了中文的双引号或分号,还有就是大括号少写了一部分。语法出错比较容易解决,难的是逻辑错误,往往问题比较多的就是循环结构、数组越界、函数调用和指针。遇到这些难点时,学生可通过请教教师或同伴,将“学中做”和“做中学”结合起来,学以致用。同时教师也要指导学生使用搜索引擎,寻找解决问题的方法和途径。如此,通过对代码问题的解决,学生的编程能力也能逐渐得到提高。3.鼓励学生多读优质代码。教师除了让学生多动手进行编程练习,还要鼓励他们多阅读专业人员编写的优质代码。优质代码不但功能强大,而且高内聚低耦合,模块化特点鲜明,使用者很容易上手,不易出错。学生在阅读代码时,要先查看该代码的文档,以了解代码的目的和实现的功能,然后从代码目录文件结构中查看有哪些模块,再从每个文件中查看模块信息,熟悉这些模块之间的参数如何传递及模块功能的具体实现细节[7]。由于模块间通过参数传值和传地址是有区别的。如一个函数,它的功能是实现两个变量值的交换。学生刚开始学编程,通常情况下会把实参的值传给形参,然后通过运行会发现调用交换函数并不能实现交换功能。而通过把实参的地址传给形参,调用交换函数就能实现两个变量值的交换。另外,学生在阅读好的代码时,还要学习借鉴别人模块化的编程思路和方法,兼容并包,博采众家之长,以逐步提高自身的编程能力。4.引导学生多做编程总结。对于编程初学者,教师要引导学生写编程总结。这里总结知识不是把自己学到的东西按照教师的说法一字不漏地整理下来,而是结合自己对编程的理解和应用进行整理。比如,学生可以借助思维导图,将编程中遇到的一些问题进行分类,记录该类问题如何解决;对一些好的算法和编程思想应如何实现及其应用场合也要进行分类总结。这样以后遇到类似的问题,就可以运用这些总结出的方法进行解决。此外,学生还可以将总结分享给同学进行探讨,一方面可加深自己对编程知识的理解,另一方面也可学习其他同学好的经验和做法。5.鼓励学生多参加比赛和考试。教师要引导和鼓励学生积极参加全国计算机等级考试及程序设计大赛等活动,使其通过等级考试检验自己是否真正掌握编程知识。对于学生而言,参加设计大赛可以发现自己的不足与差距,同时也能开阔眼界。程序设计大赛的题目大多都是聚焦各行各业当下最热点、最迫切需要解决的实际生产生活问题。比如,设计“美团骑手送餐最短路径”这一题目,既能解决实际产业中出现的问题,又能促进产业发展和教育的有机融合。同时,学生参加这类型的程序设计大赛,不仅能够提升编程能力,激发创新潜能,还能促进团结协作、沟通交流,形成团队合作精神,这些对学生以后的学习和未来发展都是难得的精神财富。6.引导学生追求精益求精、创新创造的精神。在“C语言程序设计”教学中,教师应该将追求“敬业、精益、专注、创新”的工匠精神融入日常教学。比如,瑞士手表之所以畅销世界、成为经典,是因为制表匠对事业的敬畏和热爱,对每一个零件、每一道工序、每一块手表都精心打磨、专心雕琢、追求卓越。同样,编程也需要编程人员对编写的代码精雕细琢,一遍一遍地打磨优化,让代码的质量更好,运行效率更高。还有在C语言编程中,对于复杂问题的编程从来都不是一步到位的,经常会遇到程序运行失败的情况,要反复修改错误并调试。比尔·盖茨缔造了世界著名的软件公司———微软。微软对每一个员工都会“灌输”正确对待失败、尊重失败的思想,在微软工作的人从不惧怕失败,他们将失败看作是任何事情走向成功的铺垫。同样,学习编程也要不怕失败,要内心笃定,且有着眼于细节的耐心、执着、坚持的专注精神。自改革开放以来,“汉字激光照排系统之父”王选、“中国第一、全球第二的充电电池制造商”王传福和从事特高压、智能电网研究运行的电力工人等都是工匠精神的优秀传承者[8],教师可鼓励学生向他们学习,培养学生精益求精、创新创造的精神,激发学生学习编程的热情,提高学生的综合素质。

(三)注重师资培养

国家大力提倡产教融合的当下,对教师用编程解决实际问题的能力提出了更高的要求,但是大部分专业教师没有企业工作经历,缺乏实践经验和岗位技能,缺少在企业一线进行项目研发的实践经验。因此,学校要加大“双师型”教师队伍的建设力度,做到“双管齐下”。具体而言,一方面,学校要聘请企业资深技术人员来校进行技术讲座,开展实践技能指导,让学生能够了解实际项目的开发流程并逐步提升职业素质,为后续在企业顺利进行项目开发打基础;另一方面,学校要安排骨干教师进入企业一线,深度参与企业的生产研发过程,以丰富实践经验和提升工程实践能力,从而使教师回校后能将在企业一线掌握的知识、技能、方法进行归纳总结、提炼、提升,并融入教学活动[9]。例如,教师可引入校企实践课程,将产业实际与课程教学相结合,并以真实的工作任务为载体,让学生自主参与实践,将专业知识、技能和素质进行融合,更有效地指导学生进行编程实践,以激发学生学习的积极性和主动性,提升学生解决复杂问题的能力[10]。

三、结语

在产教融合的大环境下,“C语言程序设计”教学要培养学生通过分析行业问题,运用编程解决该领域相关问题的能力。编程能力的培养和提升非常重要,但是编程能力不是一蹴而就的,需要学生多动手练习,多读优质代码,多总结,从而在实践活动中提升编程能力。同时,教师也要通过参与企业项目研发,不断提升自身的教学技能和工程实践能力,这样才能培养学生精益求精、创新创造的精神,为社会培养出更多合格的应用型人才。

作者:张亚红 陈辉 王也 单位:桂林航天工业学院计算机科学与工程学院 桂林电子科技大学计算机与信息安全学院