基于多媒体的程序设计算法库的开发和应用

2022-09-10

1 开发背景

算法 (Algorithm) 是解题的步骤, 在计算机科学中, 算法代表用计算机解一类问题的精确、有效的方法。算法+数据结构=程序。算法和程序之间存在密切的关系。

《计算机程序设计》课程是我校面向理工科学生开设的基础课程之一。程序设计的关键之一, 就是解题的方法与步骤, 即算法。学习语言的重点, 就是掌握分析问题、解决问题的方法, 就是锻炼分析、分解, 最终归纳整理出算法的能力。与之相对应, 具体语言的语法是工具, 是算法的一个具体实现。所以在高级语言的学习中, 一方面应熟练掌握该语言的语法, 因为它是算法实现的基础, 另一方面必须认识到算法的重要性, 加强思维训练, 以写出高质量的程序。

算法是程序的灵魂, 也是学习的难点, 很多算法都比较抽象, 老师上课时用文字用语言描述的算法思路对刚刚接触程序学习不久的学生而言比较苍白, 学生无法想象算法是怎样实现的。现在高校的《计算机程序设计》课程教学中, 有很多学生往往开始入门时兴趣很高, 但随着课程的不断深入, 涉及到越来越多算法, 便感觉力不从心, 久而久之便对这门课程失去了兴趣。而应试有一定的技巧, 很多同学采取了“不能理解就背出来”的方法, 背了大量的程序段, 但却并没能理解这些程序段中蕴含的算法, 结果这样的教学培养了一批能通过等级考试但不会解决实际问题的学生。

针对这种情况, 我考虑设计一个基于多媒体的程序设计算法库, 从概念上讲, 基于多媒体的程序设计算法库是一个包含若干典型的、初级的算法的库, 以多媒体的形式来呈现, 它能为参与其中的师生提供服务并有效降低师生介入算法教学的难度。其指导思想是:利用统一的标准将各个算法封装起来, 形成统一格式、可共享、便于获得和使用的教学资源, 最终为程序设计教学过程提供坚实的支撑。

目前, 国内一些学校也在已经或正在开发适合程序设计课程使用的类似算法演示, 但功能不够完善, 有的是用动画模拟的, 不是用程序实现的, 不能改变初始条件;有的只涉及排序算法, 画面粗糙, 没有流程图等;有些把几个算法绑在一个演示器里, 无法分解, 不适合师生分个检索与学习。因此我们在开发算法库时, 精心设计开发每一个算法演示程序, 使其功能能够符合我们教学模式的要求, 作为教师教学学生学习的一个很好的辅助工具。

2 主要研究内容及研究成果

2.1 本课题研究的内容

计算机算法的动画实现, 把现有的计算机算法与多媒体动画技术完美地结合起来, 是校园优秀示范文化的发展和延伸。具体内容是:

(1) 计算机算法的选择和开发工具的选择研究

根据程序设计课程的教学内容, 立足于课程中涉及的算法, 并适当拓展相关领域的算法。精心组织15个算法。

在开发工具的选择时要考虑算法库的每个算法演示, 一要浏览方便, 二要易于嵌入用网页、用PowerPoint、AuthorWare等常见工具制作的课件里, 且文件要尽量小, 可以加密进行产权保护等因素, 最终我们选择了FLASH作为开发工具。

(2) 计算机算法库的设计与开发研究

计算机算法库是一套经过精心组织的, 与学校教学研究密切相关的、算法类别齐全、覆盖面广泛的、资源大小适中易于组合再使用的多媒体资源库。

在设计过程中, 以“精选”为原则, 以“多媒体性”为特征, 紧密围绕教学这个核心。我们分析算法的实际应用, 找到每个算法的切入点进行文字描述, 用流程图方式表述算法并演示程序流程和变量等的变化情况, 并在知识层面上有所拓展, 提供较为丰富的动画演示, 呈现算法表现形式的多样性。每个动画都编写详细的脚本, 绘制各种矢量图形, 配合A 脚本语言控制动画的进行。

在构建的过程中, 在应用的同时能有针对性地拓展算法的内涵与外延, 达到拓宽学生的知识面, 提高学生的阅读能力的功用, 同时积极引导学生进行创造性的研究。

(3) 算法库应用、拓展与创新研究

算法库内的算法相互独立, 能够达到检索迅速、方便快捷, 安全顺畅的运行;算法库为开放式的, 后期视教学需求还可以进一步拓展扩充。借助于网站的建设、资源的扩展、信息的整合以及教学管理等方面的网上教育技术经验使算法库得到最大化的应用;算法库的整合应力求达到人性化, 个性化, 有自己的风格、特色和体系, 它不仅可作为教师上课单独演示的例子, 也可以穿插在精品课程的网站里做支撑材料, 同时它也是学生自主研究、自由学习的好向导, 使其发挥最佳的整体效益。

2.2 主要研究成果

本程序设计算法库以算法为中心, 利用FLASH软件的特点, 采用动画与编程相结合的手段进行开发。每一个算法都具备几个独立的功能模块:算法描述、思路分析、流程图、动画演示、C语言实现、VB语言实现等。

(1) 充分利用多媒体技术创设好教学情境

在开发研究过程中, 考虑到“兴趣是最好的老师”, 我们在每个算法中设计丰富的动画, 从而使学习者能更好更快地接受新知识。传统的课堂教学模式下教师只有利用文字、程序为主要的信息源, 众多的学生对算法无法理解或理解吃力;利用算法的动画演示, 教师可以引导学习者从更加丰富、更加多样化的学习资源中获得知识。我们把算法库上传到教学业网站中, 这些资源本身就对学习者有相当的吸引力, 加之获取学习资源的手段是一种极其热门的社会化行为——上网, 很适合大学生的心理特点, 因此往往能够调动学习者的主观能动性, 起到全员参与学习的效果, 真正让学生们动起来。

(2) 利用程序控制动画, 使算法演示更严谨

用FLASH中的Action Script脚本语言控制流程的走向和动画的进行, 突破了人们印象FLASH作品都是“假”的, 只能是模拟的概念, 真正实现用编程来控制流程图和动画演示。有些算法比较复杂, 比如排序算法, 需要多轮多次排序才能得出最后结果, 像这些算法, 我们安排了动画的分步进行, 在每轮排序后, 动画暂停, 给出提示, 用户确认后算法动画继续, 以确保用户真正理解算法的每一个步骤, 不会出现看完一个长长的动画, 却看得云里雾里, 不知所云的情况。在算法库里, 流程图环节和动画演示环节中我们还安排了人机交互, 学习者可以修改算法的初始条件, 可以观察算法在初始条件值不同的情况下流程如何进行, 动画怎样变化, 学习者在对几次尝试不同数据后算法的不同表现进行归纳总结, 从而能对算法有更深一步的理解。

左图是累加算法1+2+……+N流程图, 由用户置N的初值, 观察流程如何进行;右图是判断N是否为素数的算法, 由用户输入不同的N值, 观察循环变量、余数和答案的变化, 理解最终如何判断素数。

(3) 提供C语言和VB语言两种实现方法

现在我校开设的程序设计课程有C、VB和WEB程序设计, 其中WEB程序设计用的是VB Script, 语法规则比较类似VB。因此在设计算法库中, 选择了C语言和VB语言两种实现方法。使算法库有一定的通用性, 可以供全体师生共用。

现正在局部试点使用, 在师生中反应良好, 对广大师生的教与学有辅助作用。今后我们将努力针对师生的不同要求对算法库进行完善和扩展, 相信能更好地为广大师生服务。

摘要:算法+数据结构=程序, 学习语言的重点, 就是掌握分析问题、解决问题的方法, 就是锻炼分析、分解, 最终归纳整理出算法的能力。但算法比较抽象, 如何帮助学生更好更深刻的掌握算法, 我想到了用多媒体这种学生喜闻乐见的方式。

关键词:多媒体,算法库

上一篇:浅谈政治课教学的语言艺术下一篇:高校学生劳动素质培养的必要性及途径探讨