張淼林

摘 要針對信息化教育的需要,設計了ZLRobIde圖形化編程軟件,該軟件以易字為先的原則設計,引入了流程圖、函數式編程等思想,軟件由圖形化引擎、代碼生成模塊、代碼下載模塊等構成,具有簡單易用、功能全面,非常適合在教學中使用和推廣。
【關鍵詞】圖形化編程 創客 信息化教育 機器人
1 什么是圖形化編程?
首先什么是圖形化編程,圖形化編程是通過圖形化進行編程的一種編程方式,圖形化編程和代碼編程的本質是一樣的。那又為什么會產生圖形化編程呢?是人類對圖形感知能力相對文字容易接受和理解而產生的,圖形化方式編程具有對專業知識要求低、適應群體廣等特點,讓編程變為人人所能的事情。
相對代碼編程,圖形化編程其實一直存在,工業領域有兩個代表分支,一個是NI(美國家儀器) 的labview編程軟件, 該軟件可以幫助設計者解決問題、提高生產力,還有一個分支是PLC 的圖形化編程軟件,其中以梯形圖為代表,當然后面又擴展到了功能模塊圖等編程方式,它們都被標準化組織規范在IEC1131-3中。在教學教育領域的代表是google 的blockly,還有以其思想進化而來的scratch等,scratch在blockly的基礎上 加強了對多媒體教學,互動教學等方面的開發,使其圖形化編程在創客教育 信息化教育中占了一個比較大的比例。
2 ZLRobIde圖形化編程軟件的設計思想
圖形化開發軟件在輔助教學,想法快速實現等方面都起著越來越重要的作用,我們吸收了現有的圖形化編程思想,再融入自有的一些新想法設計了ZLRobIde圖形化編程軟件。
ZLRobIde設計的核心理念是易字為先,融入了以下幾個基本思想:
2.1 流程圖編程思想
程序本身是一個流程思維的實現,以流程圖作為我們的圖形化編程框架,核心流程一目了然,無需任何背景知識,非常適合在教學使用。
2.2 函數式編程思想
函數代表一個通用方法的歸類,一般函數實現中有輸入和輸出,我們以此為基礎,將其成為我們編程軟件的模塊基礎。
2.3 一物一塊的原則
在第二點的基礎上我們將實際物件也做了一個歸類,讓實際物件對應一個圖形單元塊,實現一一對應原裝,結合硬件獨立編碼,在ZLRobIde端我們實現了自動識別模塊的能力,給使用者帶來更易用的編程環境。
3 ZLRobIde圖形化編程軟件技術實現過程
ZLRobIde圖形化編程環境,要達到圖形化程序編寫、修改和下載等功能,整個構架包括如下,樹狀功能模塊、圖形引擎模塊、圖形到中間代碼的轉換模塊、中間代碼編程環境、鏈接編譯模塊和下載模塊,其中圖形引擎部分為技術為難點,這里擇重介紹下該部分的實現過程。
整個軟件建立在java 的 swing 圖形庫基礎上,按照MVC方式 配置窗口,Model負責數據,View負責界面展示,Control負責M/V之間的協調。
基本拓撲元件和結構, Cell代表基本的圖形模塊,Line 表示模塊之間的連接,復雜ifelse/while/for循環模塊由Cell和Line組合構成,Cell中有成員,通過 List
鼠標監聽要點,通過重載對象class myGraphControl 的 paintComponent(Graphics g) 方法直接在控件上畫出根節點cell 實現類GraphHandler,在myGraphControl 上增加偵聽addMouseListener和addMouseMotionListener偵聽各種鼠標事件,鼠標操作的支持整個畫布的移動,通過記錄鼠標的移動差,來設置setViewPosition。
4 ZLRobIde圖形化編程軟件介紹
如圖1 為整個軟件的界面, 左側部分為模塊選擇區,與實際軟硬件配合,根據實際硬件選擇性的顯示需要的模塊,中間為圖形化顯示編輯區,右側為代碼顯示區顯示圖形化對應生成的中間代碼,最右側為工具條 包含基本的新建、保存 、另存、系統狀態刷新、回退、下載和切換等操作。
模塊的放置,可以將左側的模塊拖放到 程序去的流程圖上,也可以通過點放方式放置,在模塊部分具備添加子程序塊的功能,中間模塊我們可以通過右鍵添加注釋,另外也支持模塊的折疊和復制等操作。
圖1中代碼程序部分 描述的是 蜂鳴器鳴響3次 ,每次鳴響時間40毫秒,每次間隔時間1秒的一個例子程序,其中的定值部分都是可以拖入(或者點放)的方式放入,相當于函數的參數。
5 綜述
以上是對ZLRobIde圖形化編程軟件從設計思想、具體實現和到最終使用的基本描述,我們完成了該軟件的設計,圖形化編程軟件針對教學、快速實現是非常理想的選擇,就復雜功能實現方面不如直接代碼實現來的方便,我們將繼續思考如何將圖形化編程軟件做的更加易用。
參考文獻
[1]ZLTech.http://www.chgckj.com/,2017.
[2]FIRST.http://www.usfirst.org/,2017.
[3]https://en.wikipedia.org/wiki/Science,_technology,_engineering,_and_mathematics,2017.
[4]LEGO.http://www.legoeducation.com,2016.
[5]Maja J Matari?c.Robotics education for all ages.In AAAI Spring Symposium on Accessible,Hands-on AI and Robotics Education,Palo Alto,CA,March 22-24 2004.
作者單位
浙江省杭州縱聯科技有限公司 浙江省杭州市 311100