APP下载

基于图形的高级语言程序设计的巩固教学

2019-09-19邓正杰蒋文娟莫壮坚

电脑知识与技术 2019年20期
关键词:程序设计图形

邓正杰 蒋文娟 莫壮坚

摘要:高级语言程序设计在高校信息技术类专业中非常重要。为巩固学生在学习高级程序设计语言后解决问题的能力,该文提出一种基于图形的高级程序设计语言的巩固教学方法。该方法主要采取以图形的形式表述课程知识点,设计图形绘制相关课题给学生训练,帮助学生理解、提高学习兴趣,分组讨论、实践并考核。经过两届学生的检验,方法可行,效果良好。

关键词:图形;程序设计;巩固教学;高级语言;DirectX

中图分类号:G642        文献标识码:A

文章编号:1009-3044(2019)20-0111-03

开放科学(资源服务)标识码(OSID):

Abstract: The advanced computer language programming is very important for the information technology students in universities. In order to strengthen the ability of the students to solve problems after learning the advanced programming language, this paper presents a method for the teaching of strengthening the advanced computer language programming based on the graphics. The method mainly takes the form of graphics to express the knowledge subject of the course, and the design the relative drawing subjects to let the students train, help the students to understand, improve their study interest, and group the students to discuss, practice and examine. The experiments on the two grades, shows that the method is feasible and the effect is acceptable.

Key words: graphics; programing; strengthen teaching; high-level language; DirectX

1 引言

自從计算机发明出来,直到现在,它仍对人们的生产、生活产生着巨大的影响。计算机在各个领域中的普及和应用,使得高级语言程序设计成为信息技术类专业的核心课程。由于高级程序语言与自然语言的差异性,算法逻辑性强、概念抽象,以现有方式讲授,学生在学习高级程序设计语言时,非常吃力。在一些高等院校中,虽然学生上完高级程序设计语言和数据结构两门课程,已经掌握一定的编程基础,但是仅是在理论层面上和简单知识点上,还未能用于解决实际问题或复杂问题。因此,有必要在后续实践课程、必修课或选修课中,融入程序设计的要求,以使学生在毕业前,掌握足够的能力。

2 相关工作

“十三五”期间的《教育部关于加强高等学校在线开放课程建设应用与管理的意见》希望能够通过多种方式使用在线开放课程,以达到人才的培养目标。范江波等[1,2]提到教师的教学应以知识习得为目的,从“知识型教学”向“能力型教学”转变,主导教学过程,设计课上和课下相结合,翻转与讨论相结合,促进学生的深度学习。教师要启发学生的兴趣,让学生喜欢上编程,同时课上讲精、讲清知识的脉络。

在高级语言程序设计教学中,往往会采用多媒体或计算机教学,课堂大多以理论灌输为主,学生只能被动地接受这种灌输,整个教学过程缺乏师生间的沟通,学生的自主学习性便无法充分调动。实践环节,由于课时不足、学生理解能力有限、实践内容及实践方法不合适等原因,教师并未有效培养学生的创新能力,导致学生在实践过程中只能根据指导书步骤来输入代码,甚至不清楚所输入代码的含义[3]。

在实验过程中,学生理解能力或学习态度不一致,导致学习步调不一。针对某些学生的某些问题进行辅导,让其他学生等待,是一种浪费。制作精美的微课件和微视频,可以满足人们对可视化画面的使用爱好,增添趣味性和吸引力[4]。张荣等[5,6]提出在进行教学设计的过程中,创设学习情境是一个重要原则。他们使用大家熟悉的人物图像作为角色排队来讲述排序算法,利于激发学生的学习兴趣。陈静在文章[7]中针对课堂教学形式单一,理论与实践脱节;“学而不知所用”感强烈等问题,提出一种基于任务驱动的高级语言程序设计课程改革,其间让学生两到三人一组,合作设计完成任务,相互讨论学习,消除知识茫然感。但是它并未涉及任务内容或形式。陈彦君等[8]提到对于高级语言程序设计课程,注重编程能力的培养,笔试不能很好地测验出来,应通过实践测评学生程序设计能力,线下课堂交流考查学生学习结果,培养学生理论与实践并重的素养和能力。

基于图形的教学在初等或中等教育中,已经使用得很多。王婷[9]提到从小人们学习知识都是由看图识字、看图说话来展开的,从图的方式去理解事物是一种最直观的方法。针对初中生的编程教学,有很长一段时间是采用Visual Basic来实践,虽然它是可视化的编程工具,但是功能程序部分仍然是要文本编辑,学生在学习过程中容易觉得编程学习枯燥乏味。现在已经有很多转换成使用图形化编程来代替。比如:Scratch、Hopscotch、Alice等,还有Code.org在线平台。用户可以通过类似玩积木拼搭的方式,用一块块代表不同代码的图形模块进行编程,构建出可以运行的程序,可以是应用或游戏。让学生对程序设计学习产生兴趣,激发自主学习性和创新思维[10]。

当前学习程序设计等课程,也可以采用图形的方式,解释复杂的原理过程。还使用该方法把一段文字转换成了一个知识图。通过一种图形化存储的动态分析方法,将抽象的内存分配、变量值的变化过程直观地展示给学生,帮助学生理解相关知识点[11,12]。该方法主要是涉及知识点的图形化,还未让学生使用这些知识去开发一些让自己可直观看到的东西。

在实际教学过程中,由于每一门课都会涉及的很多其他内容,所以不可能面面俱到,只要有关系,就必须讲,而是有侧重点,课时有限等原因,甚至把不重要的内容透明化。比如:在C语言程序设计过程中,并不会去解释main函数如何被调用。在讲授图像处理过程中,使用Matlab作为开发工具,将隐藏文件读取、图像显示等功能代码。

3 基于图形的巩固教学思路

针对上过高级语言程序设计课程的学生,在解决问题的能力上还有欠缺,需要借助后续的实践课程或其他专业课程来加强。基于图形的高级语言程序设计巩固教学思路,在知识点描述上,使用图形让学生更直观地理解所述内容;在程序设计上,借助DirectX图形程序设计开发类库,让学生进行图形开发,提高学生学习的兴趣。该教学思路主要从以下方面开展。

3.1 用图形展示知识结构

对于还未开展过大项目开发的学生来说,一个DirectX图形项目代码,涉及的内容太多。若让学生自己看懂整个项目代码,理清思路,是比较困难的。而实际上,当前的主要任务也不是搞懂整个项目,而只是需要能夠了解框架,能够使用该框架,加入必要的代码来绘制特定图形。因此,在线下,课前,教师需要把整个项目的框架,通过框图的方式展示给学生,仅需要对后面可能会修改的区域做相对详细的介绍。图1给出DirectX SDK中带的实例Tutorial01的项目的解析框架图。该框架以wWinMain函数为主体,其间调用到InitWindow、InitDevice、Render等函数。图中粗略介绍各个函数的调用关系和函数内的主要功能。

通过这样一个框架图,学生可以了解到整个项目的运行,而又不用陷入各种细节中去,无法理清头绪。教师在讲解过程中,可以侧重于CreateWindow和ClearRenderTargetView两个函数,让学生知道基于该项目,可能会修改到的地方及其用途。

3.2提出创新性图形绘制任务

在传统的命令行式窗口中,输出只能是以可打印的字符形式出现,因此,传统的任务通常是要求用字符打印出不同图案,或者对序列排序后打印出来等等。跟传统的方法不一样,这里采用图形窗口程序为基础,教师可以根据基础项目的内容,要求学生在此基础上开展各种图形的绘制。比如:前面的Tutorial01项目,可以要求修改窗口大小、变换背景颜色、让背景色随着时间不断渐变。这样让学生直观地看到自己修改的效果,提高学习兴趣。

若对基础项目仅进行单个简单的修改,那么跟传统的方式差别不大,因此,需要构思一些相对复杂的任务,但把任务分解,各个子问题不用太大,避免需要花费太多时间才能理解,而失去信心。比如:随着课程的开展,逐渐深入,InitDevice函数将变得更加复杂,如图2。基于这个项目,就可以引申出,修改着色器、增加顶点、修改变换矩阵等等。可以要求学生绘制图形式的问题:画点、画线、擦除、正弦线,跟其他课程知识相结合。

3.3小组开发和考核

在相同班级中,学生的水平也是参差不齐的,而且有些学生想对于跟教师,更习惯跟学生交流,因此,该巩固教学采用分小组的形式来开展讨论和开发。小组共同分析所给任务,讨论思路,接下来每个人都进行编写代码。分组的时候,主要以自愿为主,根据具体情况做微调。这样他们相互沟通顺畅些,同时避免强强联手,弱者聚群,起不到相互指导的作用。通常分小组的一个弊端,就是有些学生会仅挂名,不动手。这就需要在考核的时候规避这个问题。采取逐个答辩的方式来考核。答辩的时候,需要教师对整个任务有深入的了解,针对学生的代码,抽取具体功能代码段进行问答,以此来得出学生的评价。当学生对所问问题都能回答到位,基本上也就掌握所作任务了。

4 教学开展效果

依据前面叙述的教学方法,切实使用到了两届学生的课程中。第一届为选修课“计算机图形与动画技术”,共31人选修;第二届为必修课“图形图像处理”,共53人上。根据上课开展的成绩统计如图3。从成绩分布来看,基本上成正态分布,能够区分学生的水平层次。学生反应良好,从课程学习过程中,不仅学到计算机图形相关的内容,还提高了程序设计能力。

5 结论

该文针对上完高级程序设计语言课程后,能力还未能解决实际问题,需要巩固的情况,提出一种基于图形的高级程序设计语言巩固教学方法。在其他课程开展过程中,以图形的方式展示主要的知识脉络和架构,再以图形设计内容为学生设计题目,并进行分组实现和考核。经过两届学生的使用检验,方法可行,效果良好。当然,知识架构的图形化和题目设计,对不同的课程需要,仍需要相应的分析和设计。

参考文献:

[1] 范江波,张建兵.高级语言程序设计混合式教学的系统构建与实践[J].教育教学论坛,2018(44):130-131.

[2] 李华新,李望秀.地方高校计算机专业混合式实践教学模式探究[J].现代教育科学,2016(04):51-56.

[3] 杨博宁.高级语言程序设计混合式教学体系构建[J].计算机产品与流通,2019(01):243.

[4] 彭琼,彭浩,刘雯萱.基于微课的“高级语言程序设计”教学模式改革研究[J].微型电脑应用,2018,34(12):8-10.

[5] 张荣,江宝钏,郭立君,叶苗群,程劼.《高级语言程序设计》探究式教学设计研究[J].教育教学论坛,2018(16):190-191.

[6] 雷斌,陈丽.计算机教学改革初探[J].现代教育科学,2014(06):174.

[7] 陈静.高级语言程序设计课程思考与改革[J].课程教育研究,2018(08):225.

[8] 陈彦君,王朋娇.“互联网+教育”背景下基于O2O模式的《高级语言程序设计》教学改革研究[J].软件导刊,2017,16(11):233-234+237.

[9] 王婷.图形化教学方法[J].课程教育研究,2013(20):52-53.

[10] 张静洁,裘国永.图形化编程在初中程序设计教学中的应用[J].科教导刊(下旬),2018(03):111-113.

[11] 袁太文.一种C语言指针作为函数参数的图形化分析方法[J].福建电脑,2016,32(01):129-131+20.

[12] 毕婉文.利用思维导图改进“计算机应用基础”课堂教学[J].现代教育科学,2012(06):178-180.

【通联编辑:王力】

猜你喜欢

程序设计图形
基于Visual Studio Code的C语言程序设计实践教学探索
从细节入手,谈PLC程序设计技巧
高职高专院校C语言程序设计教学改革探索
数图形
分图形
找图形
OBE理念下基于Greenfoot的Java程序设计课程教学改革
PLC梯形图程序设计技巧及应用
三级甲等公立医院绩效考核程序设计
图形配对