劉立勛 龍華金 蔡悅



摘要:本文介紹的可面向軟件或硬件的編程工具在圖形化編程中,以其明顯的簡潔性和“類似玩具”的特性,培養了青少年對編程的興趣,為進入人工智能、計算機編程時代做好準備。
關鍵詞:青少年;圖形化編程;編程工具
中圖分類號:TP319 文獻標識碼:A 文章編號:1007-9416(2019)05-0208-03
0 引言
少兒圖形化編程是一種新興的編程模式。它并不是要求青少年學習如何編寫高級開發語言例如C語言、Python語言的文本代碼,而是通過一些具有簡易文字的圖形模塊來編程,在軟件方面可以制作一些有趣的小游戲、動畫,以此進行游戲編程啟蒙;在硬件方面可以通過電子元件連接制作一些趣味小項目,動手開動想象發揮創造。圖形化編程的編程形式是圖元模塊。圖形化編程是指將傳統的文本程序代碼經過封裝成一個個圖元模塊,使用者只需將封裝好的圖元模塊進行拼接即可完成圖形程序的邏輯設計。圖元模塊拼接相當于傳統文本編程的流程圖,兩者的邏輯思想是一致的,區別只是其表達形式存在根本差異。既可基于軟件游戲,也可基于硬件電路,圖形編程門檻低、操作生動簡單、界面美觀、便于實踐,適用于各個層次使用者學習[1]。
本文首先現對圖形化編程軟件系統進行簡單介紹,其次到面向6歲以上兒童的少兒編程工具——Srcatch,最后簡述面向12歲以上的青少年、可供硬件編程工具——Mixly。
1 圖形化編程的軟件系統
圖形化編程的使用者主要是兒童、青少年而并非是專業的編程人員,他們沒有任何的編程基礎,故易于使用、簡潔明了是圖形化編程軟件的首要目標。而且編程軟件的界面需美觀,要有更好的交互性,界面的布局需要合理,顏色的使用要符合兒童、青少年的審美,達到真正的易學易用。圖形化編程的軟件系統主要包括軟件界面設計、圖元模塊的封裝、圖形程序編輯設計、圖形程序編譯和通信擴展[2]。
(1)軟件界面:主要包括圖元模塊庫欄、程序編輯窗口、菜單欄、工具欄、C語言生成窗口和輸出狀態窗口等。界面設計主要使用Java語言代碼設計,Eclipse的插件為界面運行提供支持。(2)圖元模塊的封裝:圖形化編程軟件中的一個圖元模塊對應著傳統文本編程的一句代碼、一個底層調用函數,通過對傳統文本編程的代碼、函數等進行封裝后變成可供使用的簡易文字圖形化模塊。其封裝過程使用C++語言,以模塊形式封裝的編程元素和表示不同數據結構、功能之間關系的代碼,通過對不同功能函數和代碼段的封裝來定義圖元模塊的功能。(3)圖形程序編輯設計:圖元模塊可以進行復制、移動、刪除、創建和參數修改。對于編輯圖元模塊,主要是鼠標的操作;鼠標的按下、松開和移動。圖形程序設計部分主要是在程序編輯窗口完成,進行程序設計時是對在圖元模塊庫中且具有各種功能的圖元模塊根據所需實現的功能效果進行拼接。拼接的方式即類似于積木的堆疊,把多個圖元模塊拼接在一起以創建一系列程序命令,圖元模塊像拼圖積木一樣拼湊在一起呈現著凹陷和凸起。(4)圖形程序編譯:該圖形化編程系統的平臺編譯是C語言的編譯環境,當完成圖形程序的編寫后,點擊“編譯”按鈕后,首先系統會自動檢測并將圖形程序中的簡易文字,轉換成C語言,并對該C語言代碼執行必要的語法檢測,根據其邏輯關系生成相應的sub.c文件進行保存、編譯。C語言程序的編譯過程主要分為四個步驟:A、將.C文件進行預處理;B、將.C文件編譯成.O文件,此過程調用相應的編譯器;C、將.O文件鏈接生成.elf文件,此過程調用相應的鏈接器;D、將.elf文件轉換成.hex二進制可執行文件,并將該文件下載運行。(5)通信擴展:該部分主要是面向圖形化編程硬件下載,支持并完成多端口數據通信。簡單來說就是將圖形化程序下載到硬件主控板上,運行其圖形化程序要實現的功能。圖形化編程軟件系統和需要連接的硬件主控板之間的信息交換即由圖形程序編譯翻譯而來的代碼和轉換的底層硬件系統識別的目標代碼識別通信。
2 面向軟件的圖形化編程——Srcatch
2.1 Srcatch
面向軟件制作軟件小游戲的圖形化編程軟件有很多,例如有Makeblock、linkboy、ArduBlock、blockly、WeMake等等,其中一款開源圖形化編程軟件——Srcatch,是由麻省理工學院設計和開發的。Srcatch軟件由2006年開發,現已被翻譯成40種以上的語言,超過150個國家在被使用。該軟件可以說是面向少兒和青少年圖形化編程軟件的鼻祖,是學習少兒編程起步的最佳選擇[3]。Srcatch主要針對6歲以上的兒童,通過游戲編程啟蒙,以玩的形式來學習編程,從而培養孩子的邏輯思維、提升孩子的專注力。
如今,少兒編程越發火熱,各種圖形化編程軟件層出不窮,選擇使用Srcatch,主要是因為Srcatch簡單易學而且其功能強大,可制作游戲、動畫、繪畫、音樂、數學、科學、動作,且編程界面美觀、顏色鮮艷明麗、封裝好的簡易文字模塊簡單易理解。
2.2 Srcatch編程實例分析
基于Srcatch,制作一個小游戲——迷宮如圖1所示。下面就以該游戲進行分析,游戲中一共有6個角色,分別是老鼠、漢堡、幽靈、甲蟲1、甲蟲2、甲蟲3。迷宮的形狀是根據對游戲設計的要求,自己在畫布上繪制。在進行游戲制作的時候,對每個角色都會有不同的編程要求,如圖2所示為角色老鼠的圖形程序。該游戲的游戲規則是老鼠在迷宮中吃漢堡,漢堡若是5秒內還沒有被老鼠吃到,便會自動切換位置。老鼠吃漢堡期間要躲避甲蟲1、甲蟲2、甲蟲3,還有隨時隨地會突然出現的幽靈;幽靈出現后,若是5秒內沒有觸到老鼠,便會自動消失10秒后再次出現;而且老鼠不能碰到迷宮的,只能在迷宮中間行走;若是老鼠被甲蟲、幽靈觸碰到,即游戲結束。
少兒編程利用圖形化這種特別生動形象的方式,將傳統文本編程知識用呈現出來。在圖形編程的過程中,傳統的文本代碼隱藏在一個個封裝好的模塊中,只需將模塊連接就可以完成一個小程序、做出一個小項目,編程變得具象化。而且,程序都是簡易文字模塊,并不涉及真正的復雜代碼,這樣的形式使得孩子有更多的空間進行創造。通過這種玩的方式學習,更能得孩子的歡心。畢竟喜歡玩是孩子的天性,傳統的教育方式將知識強行灌溉,這種少兒編程的方式更能吸引孩子的興趣。
3 面向硬件的圖形化編程——Mixly
可面向硬件的圖形化編程軟件也同樣有各型各色的軟件,就如前面的Srcatch也同樣可以面向硬件編程,但是經過綜合分析比較,最終選擇米思齊(Mixly)。Mixly同樣作為開源軟件,其開發性在同類的圖形化編程軟件中更好而且不斷的在優化升級,更新迭代[4]。
3.1 Mixly
(1)Mixly中文名為米思齊,是一款由北京師范大學創客教育實驗室開發的圖形化編程軟件。Mixly軟件并不同于Srcatch可以制作基于軟件的小游戲、小動畫,其主要是面向硬件連接硬件電路。Mixly主要針對12歲以上的青少年,如果說Srcatch是少兒編程的入門,那么Mixly則是進階,晉升為青少年編程。(2)Mixly與Srcatch等其它圖形化編程軟件的區別主要在于,Mixly在圖元模塊的封裝上很大程度保留了傳統文本代碼的結構,并不像其它軟件那般經過簡化以便于少兒更好的理解。由于Mixly模塊上的文字具有文本代碼的結構,所以在學習之前,最好是有了面向軟件Srcatch編程的基礎;在學習面向硬件Mixly后,也可為以后學習更復雜、更專業的高級編程語言做好準備。(3)Mixly面向的硬件主要是Arduino。
3.2 Arduino
Arduino是一款便捷易上手的開源電子原件平臺,其軟件硬件均為開源,兼容性和擴展性強,開放而優秀的品臺,一直是創客們的優選。Arduino自身的Arduino IDE軟件可編程,但是利用Mixly基本可以完全代替其IDE進行圖形化編程。如今,Arduino硬件已經有了十數種不同類型的主板,有Arduino Yun、Arduino nano、Arduino mini、Arduino uno等等,這次將使用Arduino UNO并對其進行分析,如圖3所示。Arduino UNO有14個數字輸入/輸出引腳、分別有一個USB、DC、ICSP接口和復位按鈕;具有多種通信接口,可以通過數據線直接和計算機通信。
3.3 Mixly編程實例分析
下面就以Mixly圖形化編程設計的一個交通燈。該交通燈是兩組交替交通燈,模擬真實的交通燈的亮滅。其亮滅情況如表1所示。
使用的硬件主要有一塊Arduino UNO板、杜邦線若干、led燈6個、面包板一塊。硬件電路連接,選取多個數字輸出端口,例如將第一組和第二組的LED紅燈、LED黃燈、LED綠燈的正極分別接至不同的數字輸出端口,而所有的負極都連接到Arduino的GND端口。硬件原理圖如圖4所示,程序框圖如圖5所示,交通燈的圖形程序圖如圖6所示。
針對青少年的、面向硬件的Mixly圖形化編程,在進行程序設計時,可通過該模塊中保留的代碼結構進一步了解真正的編程語言編寫流程;在進行硬件電路連接時,可學習簡單的電子電路連接,提高青少年的動手能力、思維的嚴密性。
Mixly的出現大大降低了傳統文本代碼編程的入門門檻,從跟文本代碼編程有著相似的語序結構的圖形化編程、簡單的硬件電路連接學習中,激發了青少年的創意。Mixly的使用人數不斷增多、使用人群不斷擴大,從中小學生、教師到大學生、編程愛好者等。
4 結語
隨著國家對于人工智能、智能教育的大力推進和人們對智能化、計算機的重視,基于培養計算機思維的圖形化編程發展前景良好。青少年可以通過圖形編程軟件培養計算機邏輯思維、編程思維,通過硬件可以學習電子電路基礎原理知識,來了解、適應人工智能的時代。Srcatch可以作為圖形化編程的入門,Mixly則可以當作Srcatch的進階,若是對編程有著濃厚的興趣,可繼續學習更深層次的高級編程語言,否則也可在圖形化編程Srcatch和Mixly的學習中培養了編程思維、提高專注力和動手能力。圖形編程教育在國內雖是涌現了大批的培訓機構,但是其效果并不顯著。希望少兒編程可以快速且穩步發展,并為STEM教育做出貢獻。
參考文獻
[1] 王榮良,萬璟.走近兒童編程教育[J].中國信息技術教育,2017(21):4.
[2] 李煜卉,彭勇剛.工業機器人通用圖形化編程軟件的研究[J].機電工程,2016(4):502-506.
[3] 潘一佩.面向教育機器人的圖形化編程模塊設計及優化[D].華南理工大學,2017.
[4] 施曉軍.每個人都應該學習編程[J].中小學信息技術教育,2014(Z1):158-160.