摘 要:算法是程序設計的靈魂,也是語言課教學的難點,在教學法過程中,如果能加以計算機輔助教學,可以提高教學效果,同時編寫這樣的程序可大大增強學生的學習興趣,提高學生的編程能力。由于算法比較抽象,因此要理解和掌握其中的原理就比較困難。通過對二分查找法的動態演示,讓學生能更好地了解算法的來龍去脈,抓住算法的本質,從而激發了對程序設計這門課的學習興趣。
關鍵詞:對分查找法;動態演示;控件移動
對于抽象的、難以理解的算法單純地靠老師在講臺上講和在黑板上畫圖,很難講清楚,學生也似懂非懂。如果制成動畫,動態地,一步一步地演示,將深奧理論和邏輯推理的內容,直觀、形象、清晰地展現在學生面前,使學生在頭腦中產生一個深刻的印象,就會起到事半功倍的效果,使得本來索然無味的計算機編程課變得生動有趣、高效而又充滿活力。
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