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