初學程式設計(其實不論初學什麼,都應如此),了解基本觀念之後,讓我們直接進入程式設計的初學核心觀念: 迴圈(loop)。
即使只學了 msgbox 這麼個簡單的指令,也可以專注在迴圈。
這些年來,我教過的程式設計初學者,包含小朋友在內,如果能成功的持續自己學習程式設計,一定都是把迴圈練習到可以寫出有用的程式。迴圈對程式初學者而言,如同換氣對游泳一樣。如果沒有學會迴圈,即使用最寬鬆的標準來看,都不算學會程式設計,是的,基本的程式設計都不算學會。
可以這麼說,迴圈是程式存在的意義,如果你的程式沒有迴圈,在 Excel VBA 裡,很可能表示它是用錄製巨集錄出來的,這種程式對需求變動的抵抗力非常弱、而且幾乎不能處理大量資料。
你寫程式的目的是什麼? 除了心靈快樂之外,不就是想實實在在的提升效率嗎? 如果今天你寫了一個程式,僅能處理一兩筆資料,那直接手動在 Excel 裡做就好了,又何必花時間學寫程式?
2013年3月7日 星期四
函數的內在與長相
函數是一種功能,功能是去做一件事,多數狀況下(不是全部狀況),做一件事要有基本資訊才能做,例如,如果我說,我想吃大餐,基本資訊可能有到哪裡吃、吃些什麼、哪天去吃、跟誰共餐、預算上限...等。這些參與了我吃大餐這件事的基本資訊,在程式語言裡,稱為參數(parameter),一個函數,可以沒有任何參數,也可以不只一個。
請注意這個翻譯,參數,在表達上的有限性,參數不一定是數字,如上例,到哪裡吃是文字,吃些什麼是文字,哪天去吃是日期、跟誰共餐是文字、預算上限則是數字。
做一件事,沒有任何參數的狀況雖不多見,但也不是全然沒有。例如我說我很累,現在就想小睡一下,我可以不說在哪裡睡、要睡多久,我就是想立即小睡一下,因為我很累,所以立刻就睡著了,這件事就也做完了,不須任何參數也可以做完。
當我們自己寫 Sub 時,就是在自己定義函數(當然,函數較嚴謹的定義並非如此,但可以先忽略)、自己打造一些該語言沒有的功能。一個程式語言,會先提供它認為多數程式設計師都用得到的基礎建設、基本零件,但卻不可能假設自己知道,世界上所有程式設計師會想設計些什麼程式,因此,到目前為止,沒有一個語言,會先提供好一個叫做 "憤怒鳥" 的暢銷手機遊戲程式,你必須自己寫。
還記得左右括弧嗎? 與 Sub 相同,函數的長相就是這樣:
Function <自己取的函數名稱>(參數 1, 參數 2, 參數 3...)
(你要寫的程式碼在這裡)
<自己取的函數名稱> = <某個結果>
End Function
當然,也可以沒有參數(只是不多見),就如同我們之前寫的程式那樣。
與 Sub 的結構一模一樣,只是名稱變成了 Function。
請注意這個翻譯,參數,在表達上的有限性,參數不一定是數字,如上例,到哪裡吃是文字,吃些什麼是文字,哪天去吃是日期、跟誰共餐是文字、預算上限則是數字。
做一件事,沒有任何參數的狀況雖不多見,但也不是全然沒有。例如我說我很累,現在就想小睡一下,我可以不說在哪裡睡、要睡多久,我就是想立即小睡一下,因為我很累,所以立刻就睡著了,這件事就也做完了,不須任何參數也可以做完。
當我們自己寫 Sub 時,就是在自己定義函數(當然,函數較嚴謹的定義並非如此,但可以先忽略)、自己打造一些該語言沒有的功能。一個程式語言,會先提供它認為多數程式設計師都用得到的基礎建設、基本零件,但卻不可能假設自己知道,世界上所有程式設計師會想設計些什麼程式,因此,到目前為止,沒有一個語言,會先提供好一個叫做 "憤怒鳥" 的暢銷手機遊戲程式,你必須自己寫。
還記得左右括弧嗎? 與 Sub 相同,函數的長相就是這樣:
Function <自己取的函數名稱>(參數 1, 參數 2, 參數 3...)
(你要寫的程式碼在這裡)
<自己取的函數名稱> = <某個結果>
End Function
當然,也可以沒有參數(只是不多見),就如同我們之前寫的程式那樣。
與 Sub 的結構一模一樣,只是名稱變成了 Function。
當你使用 Excel VBA 的內建函數時,也是一樣的長相:
left("公分", 1) ==> left 就是函數名稱,"公分" 與 1 就是參數。函數與 Sub 最大的不同點,在於函數有個 "傳回值",例如上述這個 left("公分", 1),傳回值就是 "公"。
函數 = 功能 = 程式
訂閱:
意見 (Atom)