

摘要:本文在計算參與理論的指導下,針對小學Scratch教學中的常見問題,立足整體,構建了基于腳本解構、建構的學習路徑,努力提升學生的系統思維能力和創新水平。在此基礎上,作者探討了該路徑在小學Scratch部分教學中的實踐應用,并提出了教學注意點。
關鍵詞:Scratch;解構;重構;逆向工程
中圖分類號:G434? 文獻標識碼:B? 論文編號:1674-2117(2019)17-0030-04
Scratch是美國麻省理工學院開發的一套開源程序,與傳統編程軟件相比,它不需要用鍵盤逐行輸入代碼,而是拖拽已定義好的程序模塊,像搭建房子一樣實現程序的編寫,讓學生充分體驗到創作的樂趣。采用Scratch開展程序設計教學有如下特點:
(1)界面直觀,趣味性強。Scratch提供了類似視頻編輯器的界面舞臺,在上面可以任意添加、編輯和拖拽角色以及背景,加上豐富多彩的角色庫以及背景庫,哪怕只是最簡單的選擇和擺布,也可以設計出生動有趣的動畫場景,能夠一下子就抓住學生的注意力。
(2)入門簡單,操作性強。Scratch采用了圖形化編程,學生只需動動鼠標就可以進行編輯,控件的上下組合可以清晰地表現程序的流程。Scratch的修改也很簡單,無論是舞臺上的角色,還是腳本區內的腳本,都可以輕松地增減和調整。
(3)功能強大,創造力強。Scratch不僅可以控制舞臺上的演員的活動,還可以建立復雜多媒體作品,包含圖像、聲音、動畫、視頻等。Scratch可以對多種事件進行響應,對顏色、視頻以及多種外設進行偵測,此外還可應用于機器人控制、物聯網設計等。
正因為Scratch有如此多的優點,所以它現在已較為廣泛地應用于小學編程學習。例如,在江蘇省中小學教學研究室編著的《小學信息技術》2018版教材中,Scratch已完全替代了Logo語言,成為“算法與程序設計”模塊最重要的教學工具。然而在教學實踐中筆者也發現,利用Scratch開展程序設計教學,易進入如下誤區:
(1)重舞臺規劃,輕腳本選擇。學生易關注絢麗的畫面和環境創設,將較多的時間用于背景的設計和角色的選擇,對動畫背后的腳本設計卻失去了應用的興趣。
(2)重控件應用,輕程序分析。學生易滿足于采用簡單的控件(如循環控制、隨機偵測等)實現舞臺上角色的頻繁動作和跑位,對背后滲透的算法關注不夠。
(3)重片段編寫,輕系統設計。學生易滿足于動畫設計的達成,教學環節設計過于簡單,未進行系統分析,缺少必要的橋梁和支架。
為解決以上問題,筆者嘗試改變通常“部分—整體”式教學方法,讓學生不再只是單純繪制角色、編寫腳本,而是讓“設計功能完整的應用程序”成為他們學習Scratch的重要任務。[1]在實踐中,適時采用基于腳本“解構—建構”的方法開展Scratch教學(以下簡稱解構式教學),取得了較為理想的效果。
解構,類似于軟件的逆向工程,其根本目的和方法即是“程序理解”。在解構式教學中,學生對整體的把握、對部分的理解都不是被告知的結果,而是學生自己探究或探索所獲,凸顯了學生作為主要的行為主體的現實存在。[2]在實踐中,筆者探索出基于腳本解構的學習路徑——整體感知—程序分解—腳本閱讀—功能增改—學習創作,讓學生在實踐創作中學習Scratch。該學習路徑具有以下特點。
1.有利于提高學生的學習興趣
在Scratch的入門環節,一般都是初步了解Scratch的主要界面和功能,編寫基礎的腳本。在這一階段,由于內容新穎、難度較小,所以學生的學習興趣較為深厚。但是隨著學習的深入,任務難度不斷加深,學生逐漸有了畏難和厭倦情緒。此時,適時引入一個成功的Scratch作品,讓學生的學習目標更明確,學習過程更生動、直觀,可以提高學生的學習興趣。
2.有利于學生對程序的整體把握
Scratch腳本設置并不難,難的是對動畫(或腳本)進行整體設計。在解構式教學中,學生學習活動的起點是整體,終點也是整體,避免了學習任務的分割化或碎片化,讓學生對程序的整體架構了然于胸。
3.有助于利用學生的已有經驗
在Scratch的教學中,學生并非一定是零起點,之前他們對Scratch的基礎控件、基本流程都有了一定的了解。通過腳本解構,讓學生又回到了熟悉的基礎知識和基本技能的應用和操作之中,并讓學生懂得了如何用和何時用,提升了學習效率。
4.有助于聚焦中心學習內容
Scratch的解構式教學,其核心在于腳本的閱讀和修改,而該部分的內容是針對本課的教學重點和難點進行設計的,有利于學生抓住重點內容進行實踐,提高了學習效率。
5.可靈活調整學習的難易度
在解構式教學中,可根據學生的能力、興趣等進行針對性的調整,設計不同的學習方案和創作要求,必要時還可以提供支架,讓所有的學生都能獲得整體感知,完成必要的學習任務。
《吃豆子游戲》(執教:建湖縣第二實驗小學教師商艷)是蘇教版小學信息技術五年級第8課,屬于模塊2“算法與程序設計”的內容。本課的重難點是運用按鍵控制結合偵測與隨機函數控件創作游戲。教材將教學內容分為三部分:第一部分是理解“面向……方向”控件含義,會判斷角色朝向與角度的關系,學會使用方向鍵控制角色;第二部分是運用偵測控件完成吃豆人腳本設計;第三部分是用隨機函數讓豆子出現在舞臺上的任意位置。在教學中還可以適當安排創新環節,讓學生根據自己的思考,繼續對程序進行開發。
1.整體感知
與傳統教學模式不同,解構式教學法立足于整體,關注學生是否能夠把握整個作品的意義,理解作品“為何而做”,從而滲透“自頂而下,逐步求精”的程序設計思想。
教學片段:
師:老師給同學們帶來一款游戲叫“吃豆子”,請同學們帶著問題玩一玩。邊玩邊思考:如何控制吃豆人移動?豆子出現的位置有什么規律?(用左移鍵控制吃豆人向左移動,用右移鍵控制吃豆人向右移動。豆子從舞臺上方隨機位置出現,直線下落,碰到吃豆人后消失)
設計意圖:通過初步體驗游戲,讓學生感受按鈕響應這種交互方式,了解角色的動作與游戲內容,為深入研究建立基礎,便于學生對腳本、控件進行形象化的解讀。
2.程序分解
程序分解就是將完整的腳本進行拆解,目的是理解部分,降低學習的難度。程序分解可從三個方面入手:一是按程序功能,將結構化程序按功能分成若干個小程序模塊,閱讀每個小模塊相對獨立的功能;二是按循環體,將循環結構解構為循環變量、終止條件和循環體幾個部分分別理解;三是按分支,先理解雙分支,再理解多分支,最后閱讀嵌套的分支,必要時畫出流程圖,便于學生理解。
教學片段:
活動1:研讀范例程序,認識實現角色指定運動方向的關鍵控件。
活動2:拆分舞臺上方任意位置落豆子的動畫,從局部優化游戲。
設計意圖:這兩個部分的教學活動,分別讓學生聚集于用方向鍵控制角色的運動以及角色的運動與響應。活動的分解,降低了學習的難度,使學習活動更具有針對性。
3.腳本閱讀
腳本閱讀,其目的是訓練學生讀懂程序,了解控件的功能和參數設置,掌握程序的設計思想、方法和技巧,為下一步應用階段的設計提供過渡橋梁和臺階。在閱讀中,要讓學生掌握每一個控件的執行過程,正確掌握變量的變化。學生還可通過參數的多次嘗試修改強化對關鍵控件的理解。
教學片段:
活動1:
(1)打開桌面上的“game.sb2”文件,自讀腳本,找出“吃豆人左右移動”對應的腳本模塊。游戲中還常用什么鍵控制左右移動呢?嘗試修改腳本看能否實現功能。
(2)在剛才的腳本中,“當按下……鍵”有什么作用?嘗試修改為其他方向。
活動2:
(1)找出三種動畫效果分別對應的腳本(出現、下落、消失)。
(2)控件“將y坐標增加-2”的作用是什么?
設計意圖:讓學生在刪除、修改控件的過程中,實現不同的動畫效果,從而深入了解控件使用方法。
4.功能增改
通過研討腳本,然后模仿修改或編寫腳本,可以讓學生了解Scratch的基本控制結構以及不同角色間信息傳遞的規律,更為深刻地理解程序各部分的功能和實現,為以后的熟練運用和創作提升打下基礎。
教學片段:
活動1:
模仿左右移動模塊腳本,實現吃豆人上下移動(如表1)。
過渡:我們已經掌握了這兩種控件的使用方法。怎樣修改這兩個控件的參數,才能實現吃豆人上下移動呢?
請學生演示為“吃豆人”添加上下移動腳本,展示后,師生交流:
(1)你模仿了哪些腳本模塊實現吃豆人上下移動的呢?
(2)“當按下……鍵”與“面向……方向”控件之間有什么關系?
活動2:
修改豆子下落模塊控件中的參數(如表2),改變游戲的難易程度。
小結:當遇到復雜腳本時,我們可以將腳本拆分。通過分析、修改局部腳本中的關鍵控件,實現局部動畫,進而組合出整體動畫。調整隨機函數的參數范圍,也使得游戲變得更有趣。


設計意圖:本環節將組合模塊拆分,引導學生嘗試反復修改,實現不同的動畫效果,從而深入了解控件使用方法。
5.學習創作
解構式教學起于整體,又終于整體,目的是在學生深刻理解各功能模塊的基礎上進行重構和創新,從而對所學習的內容有更為深刻的認識。該環節應鼓勵學生大膽想象,創作出更加精美的作品,讓學生在實踐中獲取靈感,體驗成功,獲得創新的樂趣。
教學片段:
師:同學們,我們已經了解了“吃豆子”游戲是如何設計的。結合今天所學控件,你還有哪些好主意讓游戲變得更有趣?請跟同組成員邊討論邊完成導學單。
活動1:利用所學,合理創編。
(1)打開桌面的“素材包”,結合“吃豆子”游戲合理想象。運用所學控件,通過改變角色造型、動畫效果、舞臺背景、交互響應方式,在本課剩余的時間內,創造一個自己的“吃豆子”游戲(如上頁圖)。
(2)自由創作。
(3)同桌互玩。
設計意圖:學生通過創造性的想象,創作個性化作品,既體現團隊合作的意識,又充分地調動了每個學生的學習積極性,讓不同水平的學生都能在游戲創作中體驗快樂,獲得成功,實現最大價值的發展。
解構式教學在Scratch部分的教學并不是一種萬能教學模式,在教學選擇上應注意如下幾點:
(1)解構的目的是理解和創新,不能為解構而解構。解構式教學強調在拆解剖析之后進行重構,重構不等于或不限于簡單的原貌呈現,應是在借鑒參考基礎上的創新。[3]
(2)用于學習并解構的程序應具有一定的典型性,其一定是與本課教學目標和教學重難點緊密契合的,應該是能夠直接訓練學生學習程序設計能力的典型腳本,應該包含一定的設計思想、方法和技巧。
(3)解構式教學應與Scratch學習內容相吻合,應建立在學生已經初步掌握Scratch的基本操作和常用控件,有設計和編寫完整應用程序的需求的基礎之上。該教學方法也不可濫用,尤其是單元學習的最后階段,以免限制學生的創新思維,應鼓勵學生采用不同的設計方法和算法來實現需要完成的作品。
參考文獻:
[1]王旭卿.從計算思維到計算參與:美國中小學程序設計教學的社會化轉向與啟示[J].中國電化教育,2014(03):97-100.
[2]朱彩蘭.基于解構的教學設計[J].中國信息技術教育,2018(20):24-26.
[3]周旺純.字字皆文章——淺談小學信息技術《輸入文字》部分的有效教學[J].中小學電教,2013(09):39-41.
作者簡介:周旺純(1972.11—),高級教師,工學學士學位,主要研究方向為信息技術教育、教育信息化。
基金項目:江蘇省教育科學“十三五”規劃2016年度課題“小學信息技術學科學生計算思維培養的實踐研究”(2016-GH01010-00119)。