關於演算法的一些想法
演算法是程式設計的靈魂。不可想象,沒有演算法的程式會是乙個高水平的程式。窗體的形狀、大小涉及到演算法;控制項自身以及與其它控制項的諸多關係需要計算;字串的查詢、擷取和替換更離不開它了……總之,從小到乙個按鈕的安放位置,大到……(**呀?我不知道),無不與演算法息息相關。
演算法或是很簡單,或是很複雜。凡事從簡單做起,這是捷徑吧。本文將從最簡單的演算法說明一下學習演算法從哪開始。
有時簡單的事也會讓我們做成很複雜。比如:計算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自身早就有了!當然了,自己搞些演算法不會沒有好處的,至少可以鍛鍊鍛鍊嘛。只是在當今什麼都飛速發展的年代,如果不是為了練習的需要,最好不要走太多的彎路。我說錯了什麼的話,敬請斧正!
關於演算法的一些想法
關於演算法的一些想法 演算法是程式設計的靈魂。不可想象,沒有演算法的程式會是乙個高水平的程式。窗體的形狀 大小涉及到演算法 控制項自身以及與其它控制項的諸多關係需要計算 字串的查詢 擷取和替換更離不開它了 總之,從小到乙個按鈕的安放位置,大到 呀?我不知道 無不與演算法息息相關。演算法或是很簡單,或...
關於OCR,一些想法
ocr一般分為兩種 1,根據給定的字元特徵集合,提取未知字元的特徵進行匹配識別 典型例子 gocr 2,不知道字元特徵,但給出提取特徵的規則,通過機器學習training來獲取某個字符集的特徵集,對未知字元進行匹配識別。典型例子 tesseract 第一種方法簡單,在某些場合很高效,但比較侷限,字符...
關於tv app的一些想法
以前是做iptv機頂盒的,現在是做網際網路電視機頂盒的,在技術上的區別是不大的。通過這些年與電信,廣電打交道,現在對產品有了一些小想法。那麼在顯示上都是以web為主,用web來顯示epg內容,用osd來顯示狀態。但是隨著android的出現,現在大部分機頂盒或電視劇集廠家,都開始了智慧型之旅。乙個是...