可编程实验课件的设计

时间:2022-10-25 05:12:05

可编程实验课件的设计

文章编号:1672-5913(2008)08-0040-02

摘要:本文总结了计算机专业类实验教学的特点和难点,提出可编程实验课件的思路,给出了设计原则、设计框架,给出了精确测量运算时间、控制单步运行、实现编程接口隐蔽等重要技术的实现方案,总结了应用效果及适用条件。

关键词:实验教学;可编程课件;设计;单步运行

中图分类号:G43

文献标识码:B

1引言

学生们在学习如数据结构、算法设计与分析、操作系统、编译原理等专业课程时,都需要上机编程验证其中的重要和基本算法,以加深对理论的理解。

但实验程序往往界面简陋,输入和控制不方便,输出不直观。或者是老师为了增强教学效果制作了精美的课件,但往往也是按既定输入和既定流程进行演示的,没有可编程性。

结合以上两方面的特点,下面介绍一种针对计算机专业的可编程实验课件的设计方法。

2设计原则

2.1弱化开发工具的特性

一般的验证性实验,重点是验证某个算法在各种情况下是否正确、效率如何。并不关心使用的编程工具是Java、C#还是C++。尽量让学生不用再考虑如何针对每次不同的实验内容去设计一个输入、控制和输出的界面,从而节约了有限的实验时间。

2.2强化输入和输出

一个好用的实验课件应该能够方便地输入各种测试数据,比如对于大的数据,提供从文件载入的功能,学生只可以改变输入,反复调试和验证,而不需要反复手工输入相同或相似的一组数据。

尽量使用可视化界面,包括文本框、单选框、复选框、数字框、下拉列表框、按钮等待,都可以作为快速输入参数的控件,还可以提供保存输入状态的功能。

尽量采用图形化、动画输出,比如算法设计中的n皇后问题,可以画出n个皇后放置在棋盘中的情况,在每次尝试一个放置位置时,将其动起来。

不适合采用图形动画输出的,需要监视状态的数据,也可以根据其数据类型选择控件,参考表1。

2.3内部实现要隐蔽,接口要简单通用

简单的编程接口能减少学生了解接口的时间,最理想的情况是隐蔽的接口,利用.NET/Java的属性读写访问器可实现这一点。

学生只需设计和填入要验证的关键代码,课件运行时即可自动触发属性访问器,驱动课件底层的代码,得到课件所提供的图形动画等效果。

3整体结构设计

根据以上原则,我们设计的可编程实验课件结构如图1所示,其中控制接口部分的设计是难点和关键。

图1 可编程课件的设计结构

4单步跟踪功能的设计

我们设计实验验证一个算法,往往需要关心其运行的每一步。对于可编程的实验课件,如何提供这样的功能,又不使程序回到开发环境的调试断点状态,是一个难点。我们借助多线程互斥技术和巧妙设计控制接口实现了这一点。图2是我们做的n皇后问题的效果图。

图2 可编程实验课件的单步跟踪效果

下面讲解如何实现这样的控制:

第一步:需要开启一个工作多线程,实验者的实验代码编写在线程函数里面。

第二步:设置一个创建一个全局的自动复位模式的互斥对象,用于阻塞工作线程;设置一个全局的工作状态变量,用于表示当前处于连续工作模式还是单步执行模式。

第三步:分析该实验的特点,提取出和输出状态对应的关键步骤,封装成接口,在接口的实现中嵌入等待互斥对象复位的代码。这样,实验者的算法必然调反复用这个接口,当互斥对象处于置位状态时或者工作在连续模式时,工作线程可以继续,否则工作线程被阻塞,处于等待状态。

第四步:编写单步运行按钮的事件处理代码,设置工作状态为单步执行模式,启动线程。

第五步:编写全速运行按钮的事件处理代码,设置工作状态为连续工作模式,启动线程。

5其他经验

5.1使用线程分控制和实验两个运行体

将工作线程和界面线程分离,不会因为学生的代码死循环或耗时长导致课件无法操作。

5.2使用系统API获取准确的运行时间

操作系统的线程管理函数都提供获取每个线程处于系统态或用户态的较准确的时间。通过这些API,能够准确分析实验者所设计的算法的运行时间。

5.3通过访问器来实现最隐蔽的接口封装

Java和.NET都在语法上提供属性的访问器,利用这个特点,我们可以做到让实验者感觉不到在什么地方调用了接口,而自动获得输出演示能力。如在n后问题中,教科书上定义x[k]表示第k行Queen的位置,我们就可以添加x[]的读写访问器,这样每当学生的代码更改x[k]时,如x[k]++,自然就调用到了我们的写访问器,课件设计者在里面好的更新第k行Queen显示的代码就会执行,对于学生来说非常自然。

5.4使用面向对象的设计模式来分离设计者和实验者的代码

在上面的设计方案中,实验设计者的代码和学生的代码是混杂的,学生在浏览时难免分心,如果有知识产权要求,也不容易保护。如果使用的是面向对象的语言,可以将实验设计者的代码封装在基类中,学生通过重载工作线程函数,只编写和看到自己的实验代码。

6结束语

作者在计算机专业的实验课程实践中,尝试了使用该方法的效果,大大加快了学生实验速度,特别提高了学生实验和分析算法的能力。比如在算法设计与分析的回溯这章的实验课时,可以在一次课内,要求学生完成迭代回溯和递归回溯两个版本,比较分析性能,让学生得到充分锻炼和理解。

参考文献

[1] 赵秀英,王平军. 高校实验教学的开放模式探讨[J]. 实验室科学,2006,(6):44-46.

[2] 汤艳丽. 论多媒体在教学中的应用[J]. 实验教学与仪器,2006,(3):37.

[3] 严隽薇. 电子信息类本科实验教学机构改革初探[J]. 电子高等教育学会2004年学术年会[C]. 北京:机械工业出版社,2004:142-145.

上一篇:“计算机科学与技术导论”课程在计算机教育中... 下一篇:国家精品课程“计算机网络”教材建设研究与实...