李德川 方振国 梁霞
摘要:本文以三基色动态变换为例,从多个角度把算法、函数、头文件等语法规则融入編程环节,让学生从一个图形的动态变换实例中领会到C语言编程的精髓,以此来完成C语言编程的入门教育。该课程的教学改革把知识传授、能力培养和素质提升协同实施,通过调动学生的课堂参与度,激发学生学习的兴趣和潜能,培养学生的创新能力。
关键词:Easy X;图形库;C语言;教学改革
中图分类号:G434 文献标识码:A 论文编号:1674-2117(2021)013-0103-04
C语言是部分专业的大学生入学后必修的一门基本语言,C语言课程可以训练学生的编程思维,使学生拥有解决问题的方法和相应的项目执行能力,同时,该课程的学习也有助于数据结构、操作系统、单片机和嵌入式等软硬件的开发和应用。然而,C语言的教学并不是那么容易的。首先,C语言的编程需要了解语法规则;其次,通常情况下,C语言的编程环境Visual C++ 6.0只能进行字符的显示,无法显示图案和色彩,输出结果单调,学生的注意力和学习兴趣无法被精确掌控。因此,如何在有限的课堂时间内开展高效的教学活动就显得尤为重要,图形化教学方式的引入,可以使得单调的字符输出变得生动起来,增加了学习的趣味性。在VC++6.0中引入EasyX图形库可以使编译系统具备各种图形的画法、不同颜色的填充等处理条件[1-3],满足了学生的好奇心,激发了学生的求知欲,鼓励了学生的实践意识,促进了学生创新思维的发展。本文以C语言程序设计课本为基础[4],选用graphics.h头文件,以三基色的动态变换为例,阐述图形化设计在培养学生自由思考和自主创新能力方面的重要性,训练学生自主编程和设计的能力。
● 教学课题的设计
在实践教学环节,课题的设计很重要,开发的项目既要有原型,给学生一个直观的印象,也要有一定的可操作性,避免挫伤学生的积极性,同时还要具有代表性,使得学生在参与的过程中掌握编程技法,习得课程的自学能力。本项目以红绿灯为原型,设计了一种三基色变换进度条,要求一定宽度的进度条在三种颜色的图形上依次移动,这样设计的目的是鼓励学生全员参与,体验设计过程,了解项目设计的一般过程,增强编程的自信心。
首先,在教师的引导下对题目进行分解。红绿灯由红、黄、绿三种颜色组成,而本项目中是一种三基色,需要学生自己查找三基色究竟是什么颜色?其对应的RGB数值是多少?需要用哪些函数实现?这些函数属于哪个头文件?
其次,设计具体的图形格式。引导学生设计自己喜爱的图形形状,如矩形、圆形、椭圆等。三种颜色怎么排列?是水平状还是竖直状?
再次,设计进度条的运动状态。进度条如何运动?是连续移动还是闪烁?
最后,分组讨论,分块编程,全员参与程序的调试和运行,提升学生编程的成就感,激发学习热情。
● 项目设计过程的引导
通过对项目的分解与分析,可以得知该课题涉及函数、头文件、程序结构和调试等内容,几乎涵盖了程序设计的一般步骤,该项目的设计完全可以把学生带入程序设计的大门。而色彩的运用和点缀,可以让作品更加美观,便于交流和展出,进一步触发学生对自己的作品美化的激情,使学生在实践中应用学到的理论知识。以下以三基色的动态变换为例进行说明。
1.获取任务所需的基本函数
引导学生查阅和掌握有关三基色的定义和相应的RGB数值。通过查阅资料可以得知,三基色由红、绿、蓝组成,分别对应的RGB数值为(255,0,0)、(0,255,0)和(0,0,255),不同的数据组合可以获得不同的颜色,多彩的颜色作为课后作业由学生自行探索和发现。
提醒学生在进行色彩的管理、画图时要及时声明其所属graphics.h头文件,使用到的其他函数也必须声明属于哪一个头文件,如windows.h等。在确定颜色的显示形状时,若为矩形,可以用带色彩的线来画出矩形,所需函数为setcolor()和line();也可以先画出矩形框,再用色彩填充,所需函数为rectangle()、setfillcolor()和fillrectangle()。若为圆形,则可采用circle()函数等。具体采用哪种函数,依据相应算法进行选择,而函数的具体参数由学生自己查询,以此来提高学生的参与度。
2.全员参与的过程设计
首先,由学生讨论确定该三基色变换的具体形式为三个分离的矩形色块,排列方式为从上到下,进度条的运动方式为从上向下运动,进度条颜色为黑色,窗口背景色为黑色,其基本结构图形如图1所示。
其次,显示图像的初始化。在设计进度条之前,先要进行矩形色块的初始化,明确三个矩形的位置坐标、颜色顺序和图形窗口的大小等信息。该部分的矩形初始化可以用线条画满矩形,也可以先画出矩形框,用画笔直接填充。教师给出用线条画矩形的参考程序,用作参考。画笔填充矩形框的算法,难度不大,可作为兴趣拓展作业,课后训练使用。线条画矩形的参考程序如图2所示。
再次,设计进度条的运动形式,帮助学生了解做项目时需要考虑的项目细节:进度条应该从最上面矩形的顶端开始向下运动;进度条要有一定的宽度用于识别;进度条的颜色要与当前颜色有明显区别;进度条向下移动后,原始的色彩怎么再现;进度条的移动速度控制等。在这一环节可以引入分支语句和循环语句,通过对图像的精细化分割,进行知识的传授。在教学的演示活动中,可以采用顺序结构对语句体进行解释,把语句体的精简放在自定义函数中,供学生课下实践,提升学生的成就感,提高学生的学习兴趣。部分参考程序如图3所示。
最后,进行程序的调试,得到一个动态变化的三基色图像,如图4所示。
● 知识能力的拓展
在课程实施过程中,课堂教学能满足大多数学生的听课需求,但是如果能力考查仅停留在原始题目上,那对少数已经掌握该知识点的学生吸引力不大,因此,在教学内容设计时,要充分考虑该题目的拓展性和发散性,牢牢把控住全班学生的兴趣点。为此,该题目可以在以下几个方面进行延伸:
①调配出自己喜爱的颜色。这项任务全班学生都乐意去完成,通过改变函数RGB()中的参数值,即可显示心中满意的图案,项目的趣味性进一步得到提升。
②进度条的颜色和宽度调节。这一项任务相对简单,部分学生很乐意去更改,提升了显示效果。
③用自定义函数精简程序体。在这一项改装中,要求学生用到自定义函数的定义方式,把反复用到的部分用函数来实现,实现程序体的精简,这一项的实现能极大地提升学生学习程序的满足感,很有意义。可以在适当的时候给出参考程序,然后结合分支语句if…else来实现,自定义参考函数如下页图5所示。
④图形显示可以用圆形、横向排列或进度条横向运动。这一部分,要求学生有一定的调试能力,圆形显示区域容易实现,可以用circle()函数,但是进度条上点线坐标要经过计算,然后用line()函数,参考图像如下页图6所示。图6(a)为初始化的红绿蓝,进度条从蓝色开始运动[如图6(b)],经过绿色[如图6(c)],到达红色[如图6(d)],为一个周期,然后不断循环,直至结束。对轻松完成该环节的学生,可布置能力进阶题,进一步挖掘学生的实践能力。
● 知识点的总结与归纳
通过三基色图像的变换,从矩形到圆形,从竖直方向到水平方向,让学生了解到在工程实践中要具体考虑坐标的相对位置,认识了直线画图函数line()、矩形画图函数rectangle()、色彩设定函数setcolor()和自定义等函数的应用,进一步掌握了设计思想在实际工程中的应用,开阔了视野,为其他项目的开发提供了一定的参考范例。
● 结论
图形化的教学实践,使得C语言的教学从符号输出向图像输出转变,色彩的搭配极大地丰富了输出结果的多样性。同时,点、线、面等函数的应用有助于构筑更为复杂的结构,便于学生实现各种设计。本课的实施强化了学生的逻辑思维和实践能力,提高了学生的编程兴趣,为C语言课堂教学的改革提供了思路。
参考文献:
[1]宋雅娟,边晶.基于easy X动画案例开发导向的C语言程序设计课程教学方法研究[J].长春大学学报,2018(06):111-119.
[2]李柯景.Easy X在C语言课程教学中的应用[J].科教导刊:上旬刊,2018(03):91-92.
[3]赵敏,庞蕊.基于EasyX图形库的C语言课程改革研究与实践[J].电脑知识与技术,2015,11(32):124-125.
[4]譚浩强.C语言程序设计[M].北京:清华大学出版社,2013.
作者简介:李德川(1985—),男,安徽怀远人,博士,淮北师范大学副教授,研究方向为电子技术。
基金项目:安徽省“六卓越、一拔尖”卓越人才培养创新项目(2019zyrc056);淮北师范大学教学研究项目(JY19003,JY19037)。