2012年,我終于獲得到中科院實習(xí)的機(jī)會。初到中科院,面對新的任務(wù)與挑戰(zhàn),我深深感到困難與壓力。
師哥說:“不要急,先搞清程序中需要用的函數(shù)庫,再按要求完成。”首先進(jìn)行知識梳理,這讓我收獲經(jīng)驗與知識,更收獲了工作中分享的快樂。
任務(wù)一:做出直線運動的測量。我邊看程序樣例邊思考,但這還不夠,假如樣例定式化,完成了也不是我的,于是我創(chuàng)建了新VB界面開始進(jìn)一步的思考。
開機(jī),將板卡初始化,輸入初始數(shù)據(jù),點運動按鈕,沒反應(yīng)!我發(fā)現(xiàn)運動指令子程序編寫前沒有調(diào)用變量定義程序,故無法根據(jù)用戶提供的數(shù)據(jù)工作。不調(diào)用,系統(tǒng)默認(rèn)值為0。經(jīng)修改,電機(jī)終于運轉(zhuǎn)正常。關(guān)鍵步驟的疏漏導(dǎo)致整體問題。于是我明白了編程不能急于求成,它需要耐心與毅力。
任務(wù)二:在原程序上編寫雙軸斜線運動。先實現(xiàn)到固定點的運動,再尋找一個通用公式來實現(xiàn)所有斜線運動。借助平面直角坐標(biāo)系知識,我初步構(gòu)建出平面直角坐標(biāo)系模型,從而實現(xiàn)斜線雙軸測量。我將單軸運動指令改成雙軸運動指令,最后添加三角函數(shù)的算法。
點擊按鈕,機(jī)器一動不動。程序明明無一遺漏,怎么會失敗?“編程多數(shù)不能一次成功,學(xué)會排查錯誤很重要。” 學(xué)姐說著,在界面添加兩個TextBox控件,然后在子程序Getparam中使兩個TextBox分別顯示兩個軸的運動距離。我們分別輸入數(shù)據(jù)檢驗。點擊運行,此時兩個軸的運動距離顯示為0。我用立即窗口和節(jié)點獲取了Trans2子程序中Length的數(shù)據(jù),發(fā)現(xiàn)Length=60 而其他值都是0……我看到一個子程序沒有運行就被跳過,原來在用戶數(shù)據(jù)子程序中只編寫了由距離轉(zhuǎn)化為機(jī)器運動脈沖的函數(shù),而沒有調(diào)用三角函數(shù)子程序,這就是問題所在。
再次調(diào)試,新問題出現(xiàn)了。我們的目的是實現(xiàn)雙軸斜線運動,調(diào)試中機(jī)器只一個軸運動。經(jīng)檢測發(fā)現(xiàn),點擊按鈕后1軸顯示距離為60 而2軸顯示為0,這種結(jié)果與實際反映一致。連續(xù)按下按鈕后數(shù)據(jù)發(fā)生變化,這次兩個控件顯示數(shù)據(jù)一樣,由于輸入的角度是45°,因此兩個數(shù)值一樣說明程序正常。為何第一次顯示不同而第二次卻顯示相同呢?再次排修,發(fā)現(xiàn)三角函數(shù)子程序需要先調(diào)用角度數(shù)值,因角度的賦值語寫在最后,導(dǎo)致初次點擊運動數(shù)值錯誤而二次則輸出正常數(shù)據(jù)。于是我將角度賦值語句移到三角函數(shù)子程序調(diào)用語句前,順利解決了問題。
每當(dāng)發(fā)現(xiàn)問題并解決,編程給予的快樂都是難以言表的,當(dāng)再次遇到難題時,我不會陷入忙亂,而是用理性的思路深入研究問題。
任務(wù)三:將之前兩個程序功能結(jié)合編為一個大程序。確定思路,完善程序,最后進(jìn)行調(diào)試排查錯誤。我終于順利完成最后的任務(wù)。
中科院之行讓我對編程有了系統(tǒng)的認(rèn)識。培養(yǎng)了我堅持與細(xì)心的品質(zhì),編程是枯燥的,只有腳踏實地,思維嚴(yán)謹(jǐn),富有耐心并敢于面對困難才能獲得成功。
(作者:天津市南開中學(xué)學(xué)生)