文/張智
針對小學教學需求對機器人編程語言進行設計,是完善小學機器人編程教學的重要步驟。傳統的教學機器人編程語言與小學教學并不匹配,尤其是在難易性等方面都暴露出了一系列問題。為了改善這種情況,不少研究人員針對小學生的學習特點構建出了相應的機器人編程語言,借助前沿技術來幫助教師完善對學生的培養。利用專門的編程語言來幫助提高小學教學的教學效率的效率,對于鞏固和擴大教學成果有著不可忽視的重要作用,本文主要就編程語言中的解釋器設計進行了探究。
設計機器人語言系統的是主要目的是方便對機器人進行編程和控制,同時滿足機器人的接口和通信等功能。所以傳統的機器人語言系統的需求主要體現在以下幾點:
(1)能夠對外部世界進行建模,因為機器人在進行運動時的環境是三維空間,所以其語言系統需要對空間物體進行相應的描述;
(2)能夠對運動進行描述,這也是操作者控制機器人運動的基礎,只要將機器人的軌跡規劃程序和軌跡生成程序聯系起來,開發者才能將機器人應用到日常的生產生活之中;
(3)允許對機器人的運動過程進行操作,對執行流程進行規定或者更改,從而應對不同的生產生活需求;
(4)需要針對接口進行拓展,方便操作者和傳感器進行信息交換;
(5)需要對編程軟件提供支持,軟件能夠為編程語言的運行提供良好的環境,從而提高編程效率。
而基于小學教學的設計出了上述需求之外,還需要考慮以下兩個方面:一方面是機器人教育的新穎性,針對機器人進行教學能夠豐富小學信息技術課程的內容和形式,利用多樣化的表現方法調動學生的學習動力,提高教師的教學效率;另一方面是難易性,小學生的思維能力尚在發育階段,教師可以利用簡易的編程語言將課程的難點進行分解,讓學生更容易理解編程教學的過程,降低編程教學難度的同時,引導學生養成良好的分析能力和分析習慣。
在小學機器人編程教學中,機器人的語言系統共分為五個部分,分別是由文本編輯或者示教生成空間點所構成的編輯器、機器人的源程序、負責詞法(語法、語義)分析的解釋器、軌跡規劃和插補計算、執行結構。其中解釋器的過程最為復雜,因為解釋器負責將源程序輸入的文本形式轉化為目標指令,本文也主要對解釋器的設計與實現進行相應的研究。
解釋器的主要功能是詞法分析、語法分析和語義分析,詞法分析是識別源程序的文本單詞,同時對單詞進行檢查和轉換;語法分析是識別源程序的文本語法,同時對語法結構進行檢查;語義分析是識別源程序的文本語義,同時檢測出相應的錯誤信息。所以基于上述功能,編程語言解釋器系統軟件結構分為以下幾個步驟:首先是在初始化的處理的基礎上加載源程序,然后對詞法進行分析,詞法無誤后進行語法分析,語法分析無誤后進行語義分析,如果此三項有錯誤全部進行錯誤處理,上述步驟完成之后解釋器可以在符號表的基礎上生成目標代碼。
基于小學機器人教學需求的機器人語言包括以下五種單詞符號:關鍵字、識別符、常量(數字)、運算符、標點符號。詞法分析程序的輸入為機器人源程序文件,而輸出為提供給語法分析的單詞串。在進行詞法分析前,需要構造關鍵字表。關鍵字表用一個字符指針數組保存,其定義如下:char*keywords[keywordsnum]; 其 中keywordsnum為宏定義,表示關鍵字的數目。這種定義方式方便了隨時增加或刪減關鍵字。分析程序中應提供對關鍵字表的查找操作,定義函數如下:intlookup(char*);此函數輸入參數為待查找的單詞串,返回一個整型值代碼關鍵字的內碼,若沒有查找到返回數值—1。
基于小學機器人教學需求的機器人語言語法分析使用的是正則表達式,正則表達式主要有以下優點:首先是其自身能夠通過簡單的控制方式對字符串進行復雜的控制;其次是內在的邏輯性非常強,能夠適應多種環境。使用正則表達式進行機器人程序的語法分析,要經過指令正則表達式的定義、初始化和匹配三個過程。在處理正則表達式的過程中,可以借助機器人控制器下位機所用的Linux系統帶有的正則表達式處理庫函數regcomp()和regexec()來實現一些功能。
機器人程序經詞法分析和語法分析之后,若沒有錯誤則說明此程序在書寫上是正確的且符合語法規則。語法上的正確并不能保證其在語義上是正確的,要判定予以是否正確,必須依靠語法分析,而要產生目標代碼,還需要一種翻譯技術將源程序翻譯成目標代碼。出于小學教學效率和實現難度的考慮,本次研究的語法分析程序沒有輸出語法樹,只是進行語法檢查。在一般的語義分析程序中,要遍歷語法樹來實現語法制導的翻譯過程,但是遍歷語法樹的效率較低,而且語法樹的儲存要耗費大量的內存,這對機器人數控系統所需求的高實時性造成了一定的影響,因此本文設計的語法分析程序仍遍歷機器人源程序作為輸入,來進行語法的檢查和目標代碼的生成。
總而言之,基于小學機器人教學需求對解釋器進行開發和研究,不僅能夠降低小學編程教學的難度,從而提高小學生的邏輯思維能力、實踐操作能力和語言表達能力,還能夠提高學生對于其他學科的理解能力,幫助學生綜合全面的發展。除此之外,編程語言的開發還需要學校和教育部分的重視,定期舉辦相應的課題和研究,同時教師也需要提高自身的專業水平,對相關編程教學的發展動態進行實時的了解,并積極應用到相關的編程教學中,豐富學生知識儲備的同時開闊學生的視野。