摘 要:算法是程序设计的灵魂,也是语言课教学的难点,在教学法过程中,如果能加以计算机辅助教学,可以提高教学效果,同时编写这样的程序可大大增强学生的学习兴趣,提高学生的编程能力。由于算法比较抽象,因此要理解和掌握其中的原理就比较困难。通过对二分查找法的动态演示,让学生能更好地了解算法的来龙去脉,抓住算法的本质,从而激发了对程序设计这门课的学习兴趣。
关键词:对分查找法;动态演示;控件移动
对于抽象的、难以理解的算法单纯地靠老师在讲台上讲和在黑板上画图,很难讲清楚,学生也似懂非懂。如果制成动画,动态地,一步一步地演示,将深奥理论和逻辑推理的内容,直观、形象、清晰地展现在学生面前,使学生在头脑中产生一个深刻的印象,就会起到事半功倍的效果,使得本来索然无味的计算机编程课变得生动有趣、高效而又充满活力。
1.对分查找法的基本思想
对分查找法又称折半查找,它的基本思路是:首先取有序数列的中间数据,与查找值C进行比较。如果正好是要查找的数据,则查找成功,结束查找。如果中间数据大于要查找的值C,则将小于中间数据的(即左半部分)一半对分,找出其中间值再与比较;如果中间数据小于要查找的值C,则将大于中间数据的(即右半部分)一半对分,再次进行比较。根据比较结果,再对分相应的数据段。如此对分比较下去,直找到要查找的数或当左端点L>R(右端点)为止。
其具体方法是:设置三个位置指针,即左端点指针L,中间位置指针M,右端点指针R,
假设有序数列为A(1 TO 12)
左端点指针L=1,右端点指针R=12,中间位置指针M=INT((L+R)/2)
1.1判断待查数X是否等于A(M)(中间数),如果是,则已找到,查找停止,否则继续下去;
1.2判断待查数X是否小于A(M)(中间数),如果是,则必定落在左端点指针L和中间位置指针M-1的范围之内,下一步查找只需在这个范围内进行,左端点指针L指向不变,右端点指针R=M-1;
1.3如果X大于A(M)(中间数),X必定落在右端点指针R和中间位置指针M+1的范围之内,下一步查找只需在这个范围内进行,右端点指针R指向不变,左端点指针L=M+1。
在确定了新的查找范围之后,重复上述比较,直到找到该数或者没有找到该数,都应退出循环。对于这样的算法如何能生动、直观、形象地展现在学生面前,这就是动态演示程序的设计的目的。
2.动态演示程序的设计
2.1界面的设计:依据上述算法,首先随机产生一组数据,我们将这批数据放入一个数组中,数组的每个元素为TEXTBOX控件,这就要求动态产生控件数组。再用跳动的箭头来指示左端点、中间点、右端点,为此在界面上放入三个Frame1框架,框架的底部放一个标签框用以显示左中右哪个端点,中间放一个文本框用以存放指针值(即指示数组中的第几个数据),框架的顶部是一个图形框用以存放箭头,这样当左、中、右三个指针移动时,我们只移动框架。动态产生N个文本框控件的主要代码如下:
Dim TXT1(1 To 14)As TextBox ’声明控件数组
For intX = 1 To N ’ 动态产生N个文本框控件,用于存放数据
Set TXT1(intX)= Me.Controls.Add(“VB.TextBox”,“Cmd”& intX)
TXT1(intX).Move 1200 * i