論壇上經(jīng)常出現(xiàn)一些“跪求什么計(jì)算的源代碼之類”,暫且不說這樣有失人之尊嚴(yán),另一個(gè)角度看這樣的網(wǎng)友對(duì)待提問極不認(rèn)真,等跪完了要了代碼就不認(rèn)娘了,再也見不到蹤影,我一般不會(huì)理會(huì)這樣的問題。 關(guān)于數(shù)值計(jì)算的編程,在沒有入門之前,確實(shí)是很痛苦的事,如何入手的呢?首先要明確自己要計(jì)算的什么問題。分析問題涉及的理論公式、離散公式、邊界條件、激勵(lì)條件、要觀察的量等幾個(gè)方面入手,每一個(gè)方面搞清楚了,也就對(duì)自己的問題明白了大半。這個(gè)階段暫不考慮編程代碼的問題,如果邊分析邊想計(jì)算代碼的編寫,對(duì)沒有豐富經(jīng)驗(yàn)的人來說,會(huì)把自己弄糊涂,反而不利于問題的分析。 其次分析問題各方面的聯(lián)系,一個(gè)計(jì)算問題會(huì)涉及方方面面的內(nèi)容,是有機(jī)的整體,即使少分析最簡(jiǎn)單的一個(gè)方面或相關(guān)聯(lián)參數(shù)也不行,整理每個(gè)問題間的邏輯關(guān)系,和它們處理的先后順序,最好寫一個(gè)計(jì)算問題的邏輯圖(流程圖),便于理順問題。 然后才是編寫代碼,計(jì)算代碼的編寫與上面問題分析相對(duì)應(yīng),每個(gè)方面的問題對(duì)應(yīng)一段代碼。可能代碼的書寫是初學(xué)者頭痛的,其實(shí)計(jì)算代碼書寫很簡(jiǎn)單,會(huì)懂基本的變量定義、判斷語(yǔ)句、循環(huán)語(yǔ)句等基本編程語(yǔ)言就可以了,再多一點(diǎn)就是函數(shù)定義,這些只要10分鐘就把以前學(xué)編程語(yǔ)言復(fù)習(xí)一遍即可。開始寫代碼,思路是:把分析問題的某個(gè)方面涉及的變量先都定義出來,然后根據(jù)算法,寫出計(jì)算代碼,在寫計(jì)算代碼時(shí),以前沒有考慮到的變量、算法、關(guān)聯(lián)的東西再進(jìn)行添加、修正。每一部分進(jìn)行編寫,最后連接起來。 最后是代碼調(diào)試,任何編程都需要調(diào)試,程序是調(diào)試出來的,不是寫出來的。很多人剛寫完代碼就認(rèn)為完成,出了問題就大叫不行了。要學(xué)會(huì)編程工具提供的調(diào)試手段,調(diào)試的目的是找到問題所在,一般是一步步運(yùn)行,查看當(dāng)前計(jì)算變量的變化情況,分析是否與自己的預(yù)期結(jié)果是否一致。調(diào)試代碼是苦差事,但這也是提高編程水平的必要過程。大家要有耐心做好計(jì)算代碼的調(diào)試工作。 還有,大部分人一說起編程,就抱起一大堆的書去啃,其實(shí)就像上面所說的,剛寫時(shí)并不需要太多的編程知識(shí),就可以寫了。編程有一個(gè)重要的特點(diǎn),程序功底是鍛煉出來的,不是照本宣科學(xué)出來的。邊寫代碼邊學(xué)習(xí)、積累編程知識(shí)和經(jīng)驗(yàn),都是靠自己去領(lǐng)悟的,有編程的機(jī)會(huì)就要去實(shí)踐,上機(jī)編寫調(diào)試,代碼編寫水平自然會(huì)提高,編程是沒有捷徑的。 |