【摘 要】 本文阐述了用VB实现的C++课程中“函数调用实现机制”课件的制作方法,纯代码实现的课件动态效果具有占用空间少,网络传输速度快的优点。应用在远程教学上具有一定的优势。
【关键词】 VB;代码;函数调用;内存空间;远程教学
一、引言
《C++面向对象程序设计》是计算机本科专业的核心课程,而此课程中“函数调用实现机制”是一重点亦是一难点。函数调用实现了函数之间的联系,是程序得以运行的纽带。函数调用是在内存的栈中完成的。栈是一种具有后进先出的特征的数据结构。函数调用是一个动态过程,随着调用时间和调用函数顺序的不同,栈空间随之变化。用语言描述相对难于理解。而对本节内容的掌握,直接影响学生对后续章节“函数与变量的作用域”等相关内容的掌握。笔者尝试用VB纯代码进行了函数调用过程中栈空间变化的动态过程的模拟实现,取得了比较好的效果。
二、制作方法
本课件的实现原理是:以列表框装载实例程序,以shape控件模拟表示栈的有限空间,每个函数所占用的栈空间用一个标签控件表示,设不同的颜色,当函数被调用完毕释放所占栈空间时,将对应的标签的Enable属性设置为fales值,即不可见。设置了三个命令按钮,分别控制课件的自动演示、手动分步实现和退出。
以下的实例为说明函数调用过程中栈的变化而设计。实例是主函数main调用了函数funcA和funcB,而funcA又调用了函数funcAA和funcAB。
1. 设计界面
在VB工程中选择标准的exe工程,在默认窗体form1上放置一列表框list_program,三个命令按钮cmd_auto,cmd_manu,cmd_exit,同时放置一个shape控件,六个标签:1b1_cA、1b1_cB、1b1_cAA、1b1_cAB、1albe1
2. 在窗体form1的load事件中添加代码,使得窗体显示时,表示各函数的标签不可见,并利用列表框的AddItem方法在列表框中加载示例序清单(代码从略)。
3. 自动演示代码处理因为用列表框装载程序清单,所以列表框list_program的listindex属性值确定了选定示例程序清单的某行,在循环体中,使得此值的变化控制演示程序的执行。循环体中有语句Doevents保证每执行一次循环,即判断操作系统是否有其它的命令需执行,保证随时可以终止程序的演示。命令按钮cmd_auto的click事件中加入代码实现实例的自动演示.。
4. 手动演示的click事件中,将过程设置成静态,使得其内部定义的局部变量m为静态局部变量,使得m的值保留着上次点击后m值,将m值作为列表框list_program的listindex属性值,实现了分步演示。在命令按钮cmd_manu的click事件中加入代码。
5. 在命令按钮cmd_exit的click事件中加入代码end实现点击按钮退出本系统
三、讨论
计算机辅助教学这个新兴的综合性学科的十几年发展中,国内外许多大型的软件公司及一些专门的多媒体创作系统制作公司,相继推出了一系列多媒体软件开发工具,借助这些工具软件,大大的简化了多媒体产品的开发过程。比较常用的有Powerpoint,Authorware,ToolBook,Action等,这些软件都有各自的特点,Powerpoint和Action简单易学,Authorware具有极强的交互性,ToolBook具有很大的灵活性。Flash被公认为是小巧的适用于网上传输的动画制作工具。
目前的多媒体课件所占空间大同Internet的带宽窄的矛盾导致网络传输速度慢一直是制约远程教育发展的瓶颈之一。几十兆或几百兆的多媒体教学软件在目前Internet的带宽环境下常常无法正常观看学习。虽然高速网络手段如有线电视网连接、ADSL技术等可以从根本上解决这个问题,但由于网络建设和消费成本提高等原因,目前短期内不可能大规模普及。所以在慢速的网络传输条件下实现多媒体技术技术研究的热点。流技术(shock-wave)的出现,分段传送,从理论上说完全解决了大容量的多媒体软件与窄带宽网络的矛盾,但事实上网络传输过程中常常有不确定因素所造成的网络传输故障,传输的不连贯妨碍软件的正常运行。
本文所及的方法避免采用图形文件的纯代码制作课件,大大缩小了课件的体积。笔者试着用flash完成了一个同样功能课件,体积为89k。VB有着丰富的控件及灵活简单的编程方式,可制作丰富的动态效果和实现很强的交互性功能,但相对于Powerpoint、Flash等软件来说,代码实现稍复杂些,制作时需要一定的编程基础。
[参考文献]
[1]钱能.C++程序设计教程[M].北京:清华大学出版社,2000
[2] 张强,刘黎明. Visual Basic6.0学习教程[M]. 北京:北京大学出版社,1999
作者简介:李波涛,讲师,江门市广播电视大学理工处(529000)。
特别声明:本站注明稿件来源为其他媒体的文/图等稿件均为转载稿,本站转载出于非商业性的教育和科研之目的,并不意味着赞同其观点或证实其内容的真实性。如转载稿涉及版权等问题,请作者在两周内速来电或来函联系。