关于算法的一些想法
算法是编程的灵魂。不可想象,没有算法的程序会是一个高水平的程序。窗体的形状、大小涉及到算法;控件自身以及与其它控件的诸多关系需要计算;字符串的查找、截取和替换更离不开它了……总之,从小到一个按钮的安放位置,大到……(哪里呀?我不知道),无不与算法息息相关。
算法或是很简单,或是很复杂。凡事从简单做起,这是捷径吧。本文将从最简单的算法说明一下学习算法从哪开始。
有时简单的事也会让我们做成很复杂。比如:计算a的b次方吧,有人这样处理:
dim a as single, total as single, b as integer
a = text1.text: b = text2.text: total = 1
do while b <> 0
total = total * a
b = b - 1
loop
text3.text = total
甚至这样:
private sub command1_click()
dim a as single, total as single
dim b as integer, n as integer
a = text1.text
total = text1.text
b = text2.text
select case b
case 0
total = 1
case is < 0
msgbox "非法数据", vbokonly, "出错"
text3.text = ""
exit sub
case else
for n = 1 to b - 1
total = total * a
next
end select
text3.text = total
end sub
其实,如若知道vb中有一个专门计算此类问题的运算符“^”,则会简单可靠得多。试看:
dim a as double, b as integer, c as double
a = text1.text: b = text2.text
c = a ^ b
text3.text = c
再比如,vb编程乐园最近有一篇关于翻转字符串的文章,讨论如何利用递归原理编制一个翻转字符的函数,算法很精密,非常有意思(推荐认真研究一下):
function reversestring(revstr as string) as string
dim doreverse as long
reversestring = ""
for doreverse = len(revstr) to 1 step -1
reversestring = reversestring & mid$(revstr, doreverse, 1)
next
end function
不过如果我们用vb的内部函数strreverse则更快更方便:
text2.text = strreverse(text1.text)
看了这上面几个例子,你得出什么结论?哈,要学算法,首先得学一学vb的运算符和内部函数!吃透这些东西总没错,免得日后辛辛苦苦弄了个算法,回头一看,哇噻,vb自身早就有了!当然了,自己搞些算法不会没有好处的,至少可以锻炼锻炼嘛。只是在当今什么都飞速发展的年代,如果不是为了练习的需要,最好不要走太多的弯路。我说错了什么的话,敬请斧正!