公务员期刊网 论文中心 正文

高级语言程序设计的巩固教学

高级语言程序设计的巩固教学

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

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

1引言

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

2相关工作

“十三五”期间的《教育部关于加强高等学校在线开放课程建设应用与管理的意见》希望能够通过多种方式使用在线开放课程,以达到人才的培养目标。范江波等[1,2]提到教师的教学应以知识习得为目的,从“知识型教学”向“能力型教学”转变,主导教学过程,设计课上和课下相结合,翻转与讨论相结合,促进学生的深度学习。教师要启发学生的兴趣,让学生喜欢上编程,同时课上讲精、讲清知识的脉络。在高级语言程序设计教学中,往往会采用多媒体或计算机教学,课堂大多以理论灌输为主,学生只能被动地接受这种灌输,整个教学过程缺乏师生间的沟通,学生的自主学习性便无法充分调动。实践环节,由于课时不足、学生理解能力有限、实践内容及实践方法不合适等原因,教师并未有效培养学生的创新能力,导致学生在实践过程中只能根据指导书步骤来输入代码,甚至不清楚所输入代码的含义[3]。在实验过程中,学生理解能力或学习态度不一致,导致学习步调不一。针对某些学生的某些问题进行辅导,让其他学生等待,是一种浪费。制作精美的微课件和微视频,可以满足人们对可视化画面的使用爱好,增添趣味性和吸引力[4]。张荣等[5,6]提出在进行教学设计的过程中,创设学习情境是一个重要原则。他们使用大家熟悉的人物图像作为角色排队来讲述排序算法,利于激发学生的学习兴趣。陈静在文章[7]中针对课堂教学形式单一,理论与实践脱节;“学而不知所用”感强烈等问题,提出一种基于任务驱动的高级语言程序设计课程改革,其间让学生两到三人一组,合作设计完成任务,相互讨论学习,消除知识茫然感。但是它并未涉及任务内容或形式。陈彦君等[8]提到对于高级语言程序设计课程,注重编程能力的培养,笔试不能很好地测验出来,应通过实践测评学生程序设计能力,线下课堂交流考查学生学习结果,培养学生理论与实践并重的素养和能力。基于图形的教学在初等或中等教育中,已经使用得很多。王婷[9]提到从小人们学习知识都是由看图识字、看图说话来展开的,从图的方式去理解事物是一种最直观的方法。针对初中生的编程教学,有很长一段时间是采用VisualBasic来实践,虽然它是可视化的编程工具,但是功能程序部分仍然是要文本编辑,学生在学习过程中容易觉得编程学习枯燥乏味。现在已经有很多转换成使用图形化编程来代替。比如:Scratch、Hop⁃scotch、Alice等,还有Code.org在线平台。用户可以通过类似玩积木拼搭的方式,用一块块代表不同代码的图形模块进行编程,构建出可以运行的程序,可以是应用或游戏。让学生对程序设计学习产生兴趣,激发自主学习性和创新思维[10]。当前学习程序设计等课程,也可以采用图形的方式,解释复杂的原理过程。还使用该方法把一段文字转换成了一个知识图。通过一种图形化存储的动态分析方法,将抽象的内存分配、变量值的变化过程直观地展示给学生,帮助学生理解相关知识点[11,12]。该方法主要是涉及知识点的图形化,还未让学生使用这些知识去开发一些让自己可直观看到的东西。在实际教学过程中,由于每一门课都会涉及的很多其他内容,所以不可能面面俱到,只要有关系,就必须讲,而是有侧重点,课时有限等原因,甚至把不重要的内容透明化。比如:在C语言程序设计过程中,并不会去解释main函数如何被调用。在讲授图像处理过程中,使用Matlab作为开发工具,将隐藏文件读取、图像显示等功能代码。

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

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

3.1用图形展示知识结构

对于还未开展过大项目开发的学生来说,一个DirectX图形项目代码,涉及的内容太多。若让学生自己看懂整个项目代码,理清思路,是比较困难的。而实际上,当前的主要任务也不是搞懂整个项目,而只是需要能够了解框架,能够使用该框架,加入必要的代码来绘制特定图形。因此,在线下,课前,教师需要把整个项目的框架,通过框图的方式展示给学生,仅需要对后面可能会修改的区域做相对详细的介绍。该框架以wWinMain函数为主体,其间调用到InitWindow、InitDevice、Ren⁃der等函数。图中粗略介绍各个函数的调用关系和函数内的主要功能.通过这样一个框架图,学生可以了解到整个项目的运行,而又不用陷入各种细节中去,无法理清头绪。教师在讲解过程中,可以侧重于CreateWindow和ClearRenderTargetView两个函数,让学生知道基于该项目,可能会修改到的地方及其用途。

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

在传统的命令行式窗口中,输出只能是以可打印的字符形式出现,因此,传统的任务通常是要求用字符打印出不同图案,或者对序列排序后打印出来等等。跟传统的方法不一样,这里采用图形窗口程序为基础,教师可以根据基础项目的内容,要求学生在此基础上开展各种图形的绘制。比如:前面的Tutori⁃al01项目,可以要求修改窗口大小、变换背景颜色、让背景色随着时间不断渐变。这样让学生直观地看到自己修改的效果,提高学习兴趣。若对基础项目仅进行单个简单的修改,那么跟传统的方式差别不大,因此,需要构思一些相对复杂的任务,但把任务分解,各个子问题不用太大,避免需要花费太多时间才能理解,而失去信心。比如:随着课程的开展,逐渐深入,InitDevice函数将变得更加复杂。基于这个项目,就可以引申出,修改着色器、增加顶点、修改变换矩阵等等。可以要求学生绘制图形式的问题:画点、画线、擦除、正弦线,跟其他课程知识相结合。

3.3小组开发和考核

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

4教学开展效果

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

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.

作者:邓正杰 蒋文娟 莫壮坚 单位:海南师范大学信息科学技术学院