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