APP下载

C语言教学方法的探索——基于学习兴趣的教学改革*

2013-07-31赵君喆钟良骥卢社阶戴文华

湖北科技学院学报 2013年3期
关键词:僵尸C语言程序

赵君喆,钟良骥,卢社阶,闻 彬,戴文华

(湖北科技学院 计算机科学与技术学院,湖北 咸宁 437100)

C语言作为一门公共基础课以及部分专业的专业基础课,其重要性不言而喻。站在行业角度,C语言所包含的知识点分别属于科学、技能和艺术这三个范畴。

从科学层面上看,C语言作为形式语言的典范,其语法、语义、编译等相关知识为《编译原理》、《人工智能》等专业课提供了基础的理论引导。而C语言课程中对“程序”的诠释和理解,是《数据结构》、《算法设计与分析》等课程的理论基础。

从技能层面上看,在学习C语言的过程中,会掌握多项编程技能,其中包括:基本的逻辑设计能力、自上而下的思维方法、代码调试测试能力、库的使用能力、帮助文档的阅读能力等等。这些编程技能对学生将来在汇编、Java、C#等各种低级或高级语言的学习过程中能起到重要帮助。

从艺术层面上看,C语言学习到一定境界后,会让学习者沉迷于精巧的实现方式、陶醉于高效的算法、追求高扩展性的架构、无止境地重构高重用性的模块、不断使用严苛的规范提高C代码的可维护性。当学习者开始用艺术的眼光来看待C语言程序设计时,他就具备一些基本的软件开发工程师的素质了。

一、传统的教学方式

传统的C语言教学方法遵循“培养目标”→“知识能力”→“教学大纲”→“教案”的脉络体系,以知识点为中心进行课堂讲授和实践教学[1]。高校中,绝大多数C语言的课程都是从语法开始,由浅及深地讲授语言特性,一般按照图1所示的顺序安排教学内容[2]。

图1 传统C语言教学内容讲授顺序

作为学习计算机语言的启蒙教程,C语言课程往往被安排在第一学期或第二学期。所以即便是计算机类专业的本科生在学习C语言时,对计算机的理解也仅仅停留在普通大众的层面。作者对普通人在计算机上的兴趣来源,归纳为三个方面:功能体验、感官体验和信息体验。从C语言的特性来看,用C语言进行程序设计可以给人非常良好的功能体验。因此从功能的层面着手,C语言可能让普通人产生浓厚的兴趣。

图1所示的教学流程从抽象的理论开始,对绝大多数学生而言是枯燥无味的。传统的C语言教学中,在学习I/O操作之前,学生们几乎无法通过实践行为获得任何积极的功能体验和感官体验。这样的教学流程,使得很多学生对C语言的学习兴趣大幅降低,甚至开始反感该门课程。

传统C语言教学中,实践项目与时代追求的不符也是导致学生对C语言学习兴趣打折的一个重要因素。在苹果公司利用极致的感官体验吸引庞大的年轻人群的今天,一些C语言教学文献还将“鸡兔同笼”、“韩信点兵”、“猴子分桃”等实践项目作为激发学习兴趣的典范[3],这说明当前的C语言教学理念与时代严重脱节是一种普遍现象。分析和了解当代学生的兴趣追求也是对一名教育工作者的基本要求。

兴趣是最好的老师,如何在C语言教学的初期就以兴趣对学生进行引导,并能在整个教学过程中保持学生浓厚的学习兴趣,这是该课程教学成功与否的关键。作者在实际教学中,通过调整学习内容并设置一些趣味性较强的实践案例,在提高学生对C语言的学习兴趣上取得了较好的教学效果。

二、从生活中挖掘兴趣点

自Windows 95广泛流行以来,带有GUI(图形用户接口)的操作系统在PC机上开始占据绝对的统治地位。而GUI的发展日新月异,逐渐成为桌面操作系统的核心竞争力。随着GUI的发展,命令行操作方式在桌面操作系统上逐步走向消亡。

当代的学生已基本习惯了界面友好的GUI,鲜有命令行操作系统(如MS-DOS)的使用经历。而C语言的入门难以在GUI的环境中开展,这为C语言的教学带来了巨大挑战。如何在简陋的命令行操作环境下为学生带来兴趣刺激,一直以来都是C语言教学中难以解决的重要课题。

因此,我们要分析研究现代计算机应用给人们带来兴趣的关键点是什么,而这些关键点正是引导学生学习兴趣的重要因素。作者通过问卷调查的方式,针对在校学生统计他们对一款应用软件最关注的特性,其调查结果如图2所示。

图2 对应用软件最关注的特性的调查结果

三、针对兴趣的教学改进

作者认为,对一款应用软件的主要关注点可以从侧面反映出学生对程序设计的兴趣点。因此可以先从实用性入手,改进C语言的教学案例,保持学生较高的学习积极性。一个具有实用性的程序必然有输入数据和输出结果,而实现这样的程序就要求学生掌握基本的I/O操作。将I/O操作提前到C语言教学的第一章可以保证学生在C语言学习的一开始就能接触到具体的程序,避免传统教学进程中一开始学习抽象概念而影响学习兴趣。将I/O操作提到起始章节特别要注意培养学生对程序的理解,尤其是在讲解输入语句的同时,要将变量、常量的知识穿插其中,要求学生在理解的基础上掌握I/O库函数的应用。

掌握基本的I/O操作还不足以保持学生的学习兴趣,一定要将学习内容和学生的日常接触关联起来。当代绝大多数大学生都有一定的计算机及操作系统使用基础,因此对操作系统的文件处理比较熟悉。如果C语言教学程序能与学生日常接触的文件相关联,则可有效地激发学习兴趣。事实上,和学生关系最紧密的文件操作也属于I/O操作的一部分,但文件操作章节在传统的教学安排上一般放在课程的最后,不被师生们重视。作者尝试将基本的文件操作提前到I/O操作章节一同学习,这样就可以构造很多操作文件的案例,给学生熟悉的感观,从而取得良好的教学效果。

在前移的I/O操作和文件操作的实际教学中,特别要注意屏蔽字符串等后续知识,构造的教学案例也不应涉及字符串。原因是在这个阶段,学生基本上无法理解字符串的本质,若是教学中不慎提及此方面的内容,会让学生产生迷惑,影响教学质量。因此I/O操作和文件操作中与字符串相关的知识应放在字符串章节讲解。

仅通过前移I/O操作和文件操作来改善教学程序的实用性还不够,还应针对学生其他的兴趣点优化教学方案。尽管命令行操作环境很难在图形和色彩方面给学习者带来感官上的刺激,但还是可以采用一些方法提升这种环境的动态感、可操作性和实用性。

学生在通过I/O和文件操作的学习过程中,掌握了C语言库函数的使用。在此基础上,让学生掌握一些强大而有趣的库函数,可以让某些教学程序产生动态感。库函数system和Sleep是实现命令行程序动态感的关键,函数system要求包含头文件stdlib.h,而函数Sleep要求包含头文件Windows.h。单线程环境下,用system函数调用Windows的清屏命令,结合标准输出函数以及Sleep睡眠函数可以实现控制台窗口内容的实时刷新效果。学生通过打印字符在控制台窗口上构造图案,然后不断刷新窗口内容以实现动画效果。

掌握了C语言动态刷屏的方法之后,就可以将一些生活中有趣的小游戏或小软件改造为C语言的教学案例,极大地激发学生的学习兴趣。例如《植物大战僵尸》是近年来一款风靡全球的益智策略类单机游戏,玩家通过武装多种植物切换不同的功能,快速有效地把僵尸阻挡在入侵的道路上。在学习了二维数组之后,学生完全可以在控制台环境中简单模拟《植物大战僵尸》的游戏场景,下面给出该程序案例的实现思路。

用一个循环和固定休眠时间来衡量一个基本时间周期,屏幕刷新间隔、僵尸行进速度、子弹移动速度通过设定不同的时间周期来实现。逻辑代码如下:

用不同的数值代表不同的植物、僵尸和子弹,如用正的生命值表示僵尸,不同的僵尸有不同的生命值,用负值表示子弹,代表中弹后僵尸减少的生命值,植物则用一系列超大值表示。这样就可以在一个二维数组上模拟出游戏场景的逻辑状态,随着时间周期的流逝,表示僵尸、子弹的数值在二维数组上不断移动,最后用不同的字符将这样角色打印出来即可。以下是部分定义语句。

定义待出场僵尸列表

正常情况下游戏自动进行,僵尸不断出现并行进,每隔一定的时钟周期允许用户进入一次操作界面来购买、种植或升级攻击僵尸的植物,如图3所示。

图3 进入操作界面

用户输入操作之后恢复游戏自动运行周期,如图4所示。如果消灭所有的僵尸则游戏胜利,如果有任何僵尸最后走出场景则游戏失败。

以上案例覆盖了I/O操作、选择结构、循环结构、数组、库函数应用等各种知识。程序还可以根据功能逐步扩展,融入后续的函数、指针、结构体等知识。类似的案例覆盖知识面广、贴近学生生活同时具有很强的趣味性,因此在教学中引入类似的案例作为学生的综合实践性项目,可以长期保持学生的学习兴趣。

图4 游戏运行过程

四、结 语

兴趣是最好的老师,C语言教学中一定要牢牢把握学生的学习兴趣。保持学生学习兴趣的关键在于教学内容,通过提前学习I/O操作、文件操作以及部分库函数,可以让学生在课程初期就能接触到实用、有趣的程序案例。从生活中寻找一些让学生感兴趣的案例,将这些案例设计成C语言的实践项目,这样才能使C语言教学与当代学生的思想不脱节,才能让学生保持学习的动力。

[1]冯运仿.《C语言程序设计》课程教学模式的研究与实践[J].福建电脑,2012,28(4):203~205.

[2]谭浩强.C程序设计[M].(第4版).北京:清华大学出版社,2010.17~22.

[3]侯宏霞.提高“C语言程序设计”课程教学质量的探索与实践[J].内蒙古师范大学学报(教育科学版),2012,25(1):125 ~127.

猜你喜欢

僵尸C语言程序
笔记本电脑“僵尸”
基于Visual Studio Code的C语言程序设计实践教学探索
试论我国未决羁押程序的立法完善
基于C语言的计算机软件编程
你愿意当吸血鬼还是僵尸?
“程序猿”的生活什么样
英国与欧盟正式启动“离婚”程序程序
高职高专院校C语言程序设计教学改革探索
创卫暗访程序有待改进
在舌尖上筑牢抵御“僵尸肉”的防火墙