郭亚庆
(十堰职业技术学院 电子工程系,湖北 十堰 442000)
对于抽象的,难以理解的算法单纯地靠老师在讲台上讲和在黑板上画图,很难讲清楚,学生也似懂非懂。如果制成动画,动态的,一步一步的演示,将深奥理论和逻辑推理的内容,直观、形象、清析地展现在学生面前,使学生在头脑中产生一个深刻的印象,就会起到事半功倍的效果。使得本来索然无味的计算机编程课变得生动有趣,高效而又充满活力。
对分查找法又称折半查找,它的基本思路是:首先取有序数列的中间数据,与查找值C进行比较。如果正好是要查找的数据,则查找成功,结束查找。如果中间数据大于要查找的值C,则将小于中间数据的(即左半部分)一半对分,找出其中间值再与比较;如果中间数据小于要查找的值C,则将大于中间数据的(即右半部分)一半对分,再次进行比较。根据比较结果,再对分相应的数据段。如此对分比较下去,直到找到要查找的数或当左端点L>R(右端点)为止。
其具体方法是:设置三个位置指针,即左端点指针L,中间位置指针M,右端点指针R。
假设有序数列为A(1TO 12)
左端点指针L=1:右端点指针R=12:中间位置指针 M=INT((L+R)/2)
(1)判断待查数X是否等于A(M)(中间数)。如果是,则已找到,查找停止,否则继续下去。
(2)判断待查数X是否小于A(M)(中间数)。如果是,则必定落在左端点指针L和中间位置指针M-1的范围之内,下一步查找只需在这个范围内进行。左端点指针L指向不变,右端点指针R=M-1。
(3)如果X大于A(M)(中间数),X必定落在右端点指针R和中间位置指针M+1的范围之内,下一步查找只需在这个范围内进行,右端点指针R指向不变,左端点指针L=M+1[1]。
在确定了新的查找范围之后,重复上述比较;直到找到该数或者没有找到该数,都应退出循环。对于这样的算法如何能生动、直观、形象地展现在学生面前,就是动态演示程序设计的目的。
依据上述算法,首先随机产生一组数据,我们将这批数据放入一个数组中,数组的每个元素为TEXTBOX控件,这就要求动态产生控件数组。再用跳动的箭头来指示左端点,中间点,右端点。为此在界面上放入三个Frame1框架,框架的底部放一个标签框用以显示左中右哪个端点,中间放一个文本框用以存放指针值(即指示数组中的第几个数据),框架的顶部是一个图形框用以存放箭头。这样当左中右三个指针移动时,我们只移动框架。动态产生N个文本框控件的主要代码如下:
窗体是一个容器,所有的控件都分布窗体内。每个容器都有一个坐标系。构成一个坐标系,需要三个元素:坐标原点、坐标度量单位、坐标轴的长度与方向。在VB中,当新建一个窗体时,新窗体采用默认坐标系,坐标原点在窗体的左上角,横向向右为X轴的正方向,纵向向下为Y轴的正向,单位为twip。指针移动时一般是改变控件的左上角的坐标位置即控件的LEFT和TOP属性或者是用控件的MOVE方法将控件移到指定的位置,这就要求我们熟悉对坐标的计算。下面是指针移动及改变指针值的代码:
为了使演示更清晰,程序的执行及控件移动必须有合适的速度,速度的控制通常采用如下两种方式:
(1)在适当的位置插入调用API延时的函数SLEEP,格式如下:
API Private Declare Sub Sleep Lib“kernel32.dll”(ByVal yssj As Long)’先在程序的开头声明API函数
Sleep N’然后在适当位置插入调用API延时的函数,延时时间的长短靠参数N控制,单位为毫秒[2]。
(2)在适当的位置插入对话框,采用人机交互方式,程序执行到此会停下来,并提示是否继续,若继续单击“确定”。通常采用如下两种方式对话框。
STR1 = InputBox(“请继续”,,“6”,500,7000)
MsgBox“继续,单击确定”
方便、快捷、高效多媒体教学通过演示课件,使授课方式变得方便、快捷,节省了教师授课时的板书时间,提高了教学效率,使课堂教学活动变得活泼、生动有趣,富有启发性、真实性,可以从根本上改变传统上单调的教学模式,从而活跃学生的思维,激发学生的学习兴趣。
附主要代码如下:
[1]龚沛曾.VISUAL BASIC程序设计简明教程[M].北京:高等教育出版社,2006:115.
[2]刘炳文.精通 VISUAL BASIC6.0中文版[M].北京:电子工业出版社,2010:442.